使用tensorflow和Keras的初级教程( 二 )


分类问题通常使用二分类交叉熵、多分类交叉熵或稀疏分类交叉熵 。 二分类交叉熵用于二分类 , 而多分类或稀疏分类交叉熵用于多类分类问题 。 你可以在下面的链接中找到有关损失函数的更多详细信息 。
注:分类交叉熵用于因变量的one-hot表示 , 当标签作为整数提供时 , 使用稀疏分类交叉熵 。
用Python开发ANN我们将使用Kaggle的信用数据开发一个使用Jupyter Notebook的欺诈检测模型 。 同样的方法也可以在google colab中实现 。
数据集包含2013年9月欧洲持卡人通过信用卡进行的交易 。 此数据集显示两天内发生的交易 , 其中284807笔交易中有492宗欺诈 。 数据集高度不平衡 , 正类(欺诈)占所有交易的0.172% 。
import tensorflow as tfprint(tf.__version__)import pandas as pdimport numpy as npfrom sklearn.model_selection import train_test_splitimport tensorflow as tffrom sklearn import preprocessingfrom tensorflow.keras.models import Sequentialfrom tensorflow.keras.layers import Dense, Dropout, BatchNormalizationfrom sklearn.metrics import accuracy_score, confusion_matrix, precision_score, recall_score, f1_score, precision_recall_curve, aucimport matplotlib.pyplot as pltfrom tensorflow.keras import optimizersimport seaborn as snsfrom tensorflow import kerasimport random as rnimport osos.environ["CUDA_VISIBLE_DEVICES"] = "3"PYTHONHASHSEED=0tf.random.set_seed(1234)np.random.seed(1234)rn.seed(1254)数据集由以下属性组成 。 时间、主要成分、金额和类别 。 更多信息请访问Kaggle网站 。
file = tf.keras.utilsraw_df = pd.read_csv(‘')raw_df.head()由于大多数属性都是主成分 , 所以相关性总是0 。 唯一可能出现异常值的列是amount 。 下面简要介绍一下这方面的统计数据 。
count284807.00mean88.35std250.12min0.0025%5.6050%22.0075%77.16max25691.16Name: Amount, dtype: float64
使用tensorflow和Keras的初级教程文章插图
异常值对于检测欺诈行为至关重要 , 因为基本假设是 , 较高的交易量可能是欺诈活动的迹象 。 然而 , 箱线图并没有揭示任何具体的趋势来验证上述假设 。
使用tensorflow和Keras的初级教程文章插图
准备输入输出和训练测试数据X_data = http://kandian.youth.cn/index/credit_data.iloc[:, :-1]y_data = credit_data.iloc[:, -1]X_train, X_test, y_train, y_test = train_test_split(X_data, y_data, test_size = 0.2, random_state = 7)X_train = preprocessing.normalize(X_train)数量和主成分分析变量使用不同的尺度 , 因此数据集是标准化的 。 标准化在梯度下降中起着重要作用 。 标准化数据的收敛速度要快得多 。
print(X_train.shape)print(X_test.shape)print(y_train.shape)print(y_test.shape)输出:
(227845, 29) #记录数x列数(56962, 29)(227845,)(56962,)开发神经网络层上面的输出表明我们有29个自变量要处理 , 因此输入层的形状是29 。 任何人工神经网络架构的一般结构概述如下 。
+----------------------------+----------------------------+ |Hyper Parameter|Binary Classification| +----------------------------+----------------------------+ | # input neurons| One per input feature| | # hidden layers| Typically 1 to 5| | # neurons per hidden layer | Typically 10 to 100| | # output neurons| 1 per prediction dimension | | Hidden activation| ReLU, Tanh, sigmoid| | Output layer activation| Sigmoid| | Loss function| Binary Cross Entropy| +----------------------------+----------------------------++-----------------------------------+----------------------------+ |Hyper Parameter| Multiclass Classification| +-----------------------------------+----------------------------+ | # input neurons| One per input feature| | # hidden layers| Typically 1 to 5| | # neurons per hidden layer| Typically 10 to 100| | # output neurons| 1 per prediction dimension | | Hidden activation| ReLU, Tanh, sigmoid| | Output layer activation| Softmax| | Loss function| "Categorical Cross Entropy | | Sparse Categorical Cross Entropy" || +-----------------------------------+----------------------------+


推荐阅读