• 机器学习——逻辑斯蒂回归数学原理及信用卡诈骗项目实例


    一、分类模型评价指标

     

    某一类的精准率precision—其实预测为该类并且预测正确的比例。

    某一类的精准率recall—其实就是该类有多少被预测出来。

    二、逻辑斯蒂回归

    (一)、逻辑斯蒂回归叫回归,但实际上它是二分类算法;也可以实现多分类算法,也就是多次利用二分类算法实现多分类。

    1. 训练数据可以是离散型也可以是连续性特征。
    2. 逻辑斯蒂回归本质上也是线性分类器,就是线性函数曲线将超平面分成两部分;也可以实现非线性。
    3. 过拟合和线性回归同样办法。
    4. 出现欠拟合问题,处理增加新的特征变量,也可以增加多项式特征。

    (二) 逻辑斯蒂回归函数

    函数图像如图:

     

     所以在最后的判别方法为:

    三、信用卡诈骗分类

    首先介绍一下sklearn包中的分类器:

    • from sklearn.linear_model import LogisticRegression 这个分类器可以设置正则化功能,但只能做L2正则化。
    • from sklearn.linear_model import LogisticRegressionCV 带有参数遍历功能选择超参数alpha
    • from sklearn.linear_model import SGDClassifier 可以设置正则化功能,并且是随机梯度分类器,数据量大的时候用这个

    (1)导包

    1. %matplotlib inline
    2. import matplotlib.pyplot as plt
    3. import numpy as np
    4. import pandas as pd
    5. from sklearn.preprocessing import StandardScaler
    6. import imblearn
    7. from sklearn.metrics import classification_report
    8. from sklearn.model_selection import train_test_split

    (2)读入数据AND数据预处理

    1. data=pd.read_csv('./data_picture/chapter4/creditcard.csv')
    2. X = data.drop('Class',axis=1)
    3. y = data['Class']
    4. X=X.drop('Time',axis=1)
    5. X['Amount'] = (X['Amount'] - X['Amount'].min()) /(X['Amount'].max() - X['Amount'].min())
    6. data.head()

    结果如图:

     (3)分数据集

    X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=1)

     (4)模型训练

    1. from sklearn.linear_model import LogisticRegression,LogisticRegressionCV,SGDClassifier
    2. model = LogisticRegression(penalty='l2',random_state=33)
    3. model.fit(X_train, y_train)

    (5)模型评价

    1. ypred1=model.predict(X_test) #预测测试集各样本的类别
    2. ypred2=model.predict_proba(X_test) #预测测试集每个样本属于各类的概率
    3. train_score = model.score(X_train, y_train)
    4. test_score = model.score(X_test, y_test)
    5. print('train_score=',train_score)
    6. print('test_score=',test_score)
    7. print('------------------------------------------------------')
    8. y_predict=model.predict(X_test)
    9. model_report=classification_report(y_test,y_predict)
    10. print(model_report)

    结果如图:

     

  • 相关阅读:
    【软考】模块之间的耦合性及其代码示例
    进程间的信号
    [免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)
    八、Thymeleaf链接表达式
    Bug是如何产生的?
    基于变分自动编码器VAE的电池剩余使用寿命RUL估计
    大模型如何商业变现?小i机器人发布华藏大模型生态
    EastWave应用:负折射现象实时演示
    中国人造板行业现状调查分析与“十四五”战略规划研究报告2022-2028年版
    基于miniprogram-ci的微信小程序的CI以及接入钉钉通知
  • 原文地址:https://blog.csdn.net/m0_72662900/article/details/126962406