信用卡欺诈检测逻辑回归算法是基于python 3.7.0、numpy 1.16.2、pandas 0.24.1、scikit-learn 0.20.3版本实现的。
**总结:**基于逻辑回归算法的信用卡欺诈检测的主要步骤为:①从数据集中导入数据,并对样本数据进行分析和预处理(过、下采样,增、删特征等),使得各类标签所对应的样本数量相等,避免因数量相差过大导致训练模型泛化能弱的问题;②将预处理得到的数据分为训练集和测试集;③将训练集中的数据分为K折,每次利用K-1折数据进行训练,另1个用来评估模型,并计算出召回率,总共进行K次,将K次的召回率求平均值,即为该参数下模型的召回率,根据召回率选取最优参数;④根据确定的参数值,对下采样中的整体训练集进行训练,产生最终的模型;⑤利用该模型对下采样中的测试集数据进行预测,得到预测值;⑥利用混淆矩阵,将预测值与测试集对应的标签进行统计,并进行可视化输出。
step 1.导入第三方库:
文章图片
step 2.读取样本.csv中的数据,了解数据的整体分步
文章图片
行5:按照"Class"列统计每种标记的数量,返回一个Series
行6:输出Class列的条形图
step 3.对数据进行预处理
#不均衡样本处理办法:下采样,过采样
#下采样:使得两个样本同样少
#过采样:使得两个样本同样多
文章图片
行15:导入标准化模块
行16:对数据中与其他特征数据相差较大的数据(“Amout"标准化后生成“normAmount”特征)进行标准化处理
#StandardScaler().fit_transform()对样本的"Amount"列进行标准化,防止在机器学习的过程中因数值相差过大对结果产生误导
行17:删除数据中的无关特征(“Time”,“Amount”)
行28:随机抽取与"Class”==1的样本数相等的"Class"==0的样本索引
行31:将"Class"==1与"Class"==0的样本进行拼接
文章图片
行45:导入数据集分割模块
行48:对原始数据进行分割
行54:对处理后的下采样数据进行分割
step 4.模型评估方法&&导入相应的库
文章图片
文章图片
行72:对数据集K折分割函数进行初始化
行82:对训练集数据进行分割,返回K折交叉验证的训练集和测试集索引
行84:建立模型,penalty表示正则化,默认为l2正则化
行85:函数fit(X,y,sample_weight=None) 根据给定的训练数据拟合模型,【X:shape为(n_samples,n_features)的训练矢量;
y:相对于X的shape为(n_samples,)的目标向量;
sample_weight:分配给每个样本的权重,shape为(n_samples,)】,模型的权重向量和常数项可通过 .coef_ , .intercept_ 来输出
行86:predict(X) 预测X中样本的类标签,对K折交叉验证中的数据集进行评估
行88:模型评估方法(召回率):recall_score(y_true, y_pred, labels=None, pos_label=1, average=‘binary’, sample_weight=None)
行92:iloc,即index locate 用index索引进行定位,所以参数是整型; loc,则可以使用column名和index名进行定位
行92:numpy.mean(a, axis, dtype, out,keepdims ):axis默认值,对mn个数求均值,返回一个实数;
axis=0:对各列求均值,返回1n矩阵;
axis=1:对各行求均值,返回m*1矩阵
行99:注意:使用idmax()函数时,应用astype()方法将数据类型进行转换
step 5.产生最优的最优的正则化惩罚项&&定义混淆矩阵函数
文章图片
行103:利用数据预处理中下采样数据中的训练数据得到的最优正则惩罚项
step 6.利用下采样数据中的训练集数据重新训练数据,并用下采样数据中的测试集数据对模型进行评估
文章图片
行128:下采样数据训练集训练模型
行129:模型对下采样数据测试集进行预测
行131:计算混淆矩阵以评估分类的准确性,函数confusion_matrix(y_true, y_pred, labels=None, sample_weight=None)相当于统计【sample_weight:样本权重】
other 1.使用逻辑回归返回的概率进行预测
文章图片
other 2.对原数据集直接建模
文章图片
【信用卡欺诈检测】other 3.数据预处理(过采样)
文章图片
推荐阅读
- paddle|动手从头实现LSTM
- 人工智能|干货!人体姿态估计与运动预测
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- 读书笔记|《白话大数据和机器学习》学习笔记1
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- Python机器学习基础与进阶|Python机器学习--集成学习算法--XGBoost算法
- 深度学习|深度学习笔记总结
- 机器学习|机器学习Sklearn学习总结
- 机器学习|线性回归原理与python实现