要求

把数据集分为训练集和测试集使用逻辑回归训练、预测,得出相应的分类指标准确率accuracy,精确率precision,召回率recall,F1-score,并画出最终的ROC曲线,得出AUC值。

数据格式

664条样本   每条103个属性,最后一列为标签

结果

代码

import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import classification_report, roc_curve, auc
import matplotlib.pyplot as plt#根据标签和预测概率结果画出ROC图,并计算AUC值
def acu_curve(y, prob):fpr, tpr, threshold = roc_curve(y, prob)  ###计算真正率和假正率roc_auc = auc(fpr, tpr)  ###计算auc的值plt.figure()lw = 2plt.figure(figsize=(6, 6))plt.plot(fpr, tpr, color='darkorange',lw=lw, label='ROC curve (area = %0.3f)' % roc_auc)  ###假正率为横坐标,真正率为纵坐标做曲线plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')plt.xlim([0.0, 1.0])plt.ylim([0.0, 1.05])plt.xlabel('False Positive Rate')plt.ylabel('True Positive Rate')plt.title('Receiver operating characteristic')plt.legend(loc="lower right")plt.show()# 二分类,逻辑回归 瘀血阻络证预测# 读取数据  (如果不指定标签名,会默认把第一行数据当成标签名)
data = pd.read_excel("症状_瘀血阻络证_data.xlsx"
)
# print(data)# 缺失值进行处理  (原始数据中的?表示缺失值)  本样本无缺失值
# data = data.replace(to_replace='?', value=np.nan)
# data = data.dropna()  # 删除有缺少值的行# 分割数据集 划分为训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(data.iloc[:, 0:103], data.iloc[:, 103:104],test_size=0.125)  # 前103为属性;最后一列是目标值
# 7:1划分;83条测试、581条训练
# 进行标准化处理   因为目标结果经过sigmoid函数转换成了[0,1]之间的概率,所以目标值不需要进行标准化。
std = StandardScaler()
x_train = std.fit_transform(x_train)
x_test = std.transform(x_test)# 逻辑回归预测
lg = LogisticRegression(C=1.0)  # 默认使用L2正则化避免过拟合,C=1.0表示正则力度(超参数,可以调参调优)
lg.fit(x_train, y_train.values.ravel())# 回归系数
# print(lg.coef_)# 进行预测
y_predict_p = lg.predict_proba(x_test)#结果用类别概率表示 方便画ROC图
#print(y_predict_p)
y_predict = lg.predict(x_test)#结果用标签值表示 方便利用classification_report()函数 输出模型评估报告
#print(y_predict)# 用classification_report()函数 输出模型评估报告
# 原始数据中的目标值:0表示非瘀血阻络证,1表示瘀血阻络证
print(classification_report(y_test,y_predict))#调用函数画出ROC图,并计算AUC值
acu_curve(y_test,y_predict_p[:,1:2])

使用五折交叉验证

结果展示

更新一下

import pandas as pd
import warnings
from sklearn.metrics import roc_curve
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import cross_val_predict
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
import matplotlib.pyplot as plt# 二分类  五折验证  逻辑回归 瘀血阻络证预测# 读取数据
data = pd.read_excel("症状_瘀血阻络证_data.xlsx"
)
# print(data)x_train = data.iloc[:, :-1]  # 特征
y_train = data.iloc[:, -1]  # 标签
# 进行标准化处理   因为目标结果经过sigmoid函数转换成了[0,1]之间的概率,所以目标值不需要进行标准化。
std = StandardScaler()
x_train = std.fit_transform(x_train)lr = LogisticRegression(random_state=填入你的随机数, tol=1e-6, C=0.01)
lr_result = lr.fit(x_train, y_train.ravel())
'''estimator:估计方法对象(分类器)
X:数据特征(Features)
y:数据标签(Labels)
cv:几折交叉验证
scoring='accuracy':准确率为结果的度量指标'''def muti_score(model):warnings.filterwarnings('ignore')accuracy = cross_val_score(model, x_train, y_train, scoring='accuracy', cv=5)precision = cross_val_score(model, x_train, y_train, scoring='precision', cv=5)recall = cross_val_score(model, x_train, y_train, scoring='recall', cv=5)f1_score = cross_val_score(model, x_train, y_train, scoring='f1', cv=5)auc = cross_val_score(model, x_train, y_train, scoring='roc_auc', cv=5)print("准确率:", accuracy.mean())print("精确率:", precision.mean())print("召回率:", recall.mean())print("F1_score:", f1_score.mean())print("AUC:", auc.mean())#画ROCy_scores = cross_val_predict(lr, x_train, y_train, cv=5, method='decision_function')fpr, tpr, thresholds = roc_curve(y_train, y_scores)plt.plot(fpr, tpr, linewidth=2, label='ROC(AUC=%0.3f)' % cross_val_score(lr, x_train, y_train, cv=5, scoring='roc_auc').mean(),color='darkorange')plt.xlabel('FPR')  # False Positive Rate,假阳性率plt.ylabel('TPR')  # True Positive Rate,真阳性率plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')plt.ylim(0, 1.05)plt.xlim(0, 1.05)plt.legend(loc=4)plt.show()model = eval("lr")
muti_score(model)

注意点

1、iloc函数使用方法(1条消息) iloc函数使用方法_阿狸狸_Nicole的博客-CSDN博客_.ilochttps://blog.csdn.net/qq_39368111/article/details/110435536

2、 y_train.values.ravel()(1条消息) DataConversionWarning: A column-vector y was passed when a 1d array was expected. 问题解决_weixin_39223665的博客-CSDN博客https://blog.csdn.net/weixin_39223665/article/details/812687413、classification_report()(1条消息) python机器学习classification_report()函数 输出模型评估报告_侯小啾的博客-CSDN博客_classification_report函数https://blog.csdn.net/weixin_48964486/article/details/122881350

4、 ROC图(1条消息) 关于ROC曲线画出来只有一个点_魔术师_的博客-CSDN博客_roc曲线只有一个拐点https://blog.csdn.net/maymay_/article/details/80042497

逻辑回归预测瘀血阻络证||LogRegression 二分类 python3|五折交叉验证相关推荐

  1. 五折交叉验证/K折交叉验证, python代码到底怎么写

    五折交叉验证: 把数据平均分成5等份,每次实验拿一份做测试,其余用做训练.实验5次求平均值.如上图,第一次实验拿第一份做测试集,其余作为训练集.第二次实验拿第二份做测试集,其余做训练集.依此类推~ 但 ...

  2. 数据挖掘竞赛预测模型——五折交叉验证

    使用catboost进行五折交叉验证 import numpy as np import pandas as pd import catboost as cbt from sklearn.metric ...

  3. 回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证

    回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证 目录 回归预测 | MATLAB实现SVR(支持向量机回归)K折交叉验证 基本介绍 划分原理 留一划分 交叉验证 K折交叉 程序设计 ...

  4. k折交叉验证法python实现_Jason Brownlee专栏| 如何解决不平衡分类的k折交叉验证-不平衡分类系列教程(十)...

    作者:Jason Brownlee 编译:Florence Wong – AICUG 本文系AICUG翻译原创,如需转载请联系(微信号:834436689)以获得授权 在对不可见示例进行预测时,模型评 ...

  5. pytorch 入门学习使用逻辑斯蒂做二分类-6

    pytorch 入门学习使用逻辑斯蒂做二分类 使用pytorch实现逻辑斯蒂做二分类 import torch import torchvision import numpy as np import ...

  6. R语言惩罚逻辑回归、线性判别分析LDA、广义加性模型GAM、多元自适应回归样条MARS、KNN、二次判别分析QDA、决策树、随机森林、支持向量机SVM分类优质劣质葡萄酒十折交叉验证和ROC可视化

    最近我们被客户要求撰写关于葡萄酒的研究报告,包括一些图形和统计输出. 介绍 数据包含有关葡萄牙"Vinho Verde"葡萄酒的信息.该数据集有1599个观测值和12个变量,分别是 ...

  7. Pytorch最简单的图像分类——K折交叉验证处理小型鸟类数据集分类2.0版本ing

    https://blog.csdn.net/hb_learing/article/details/110411532 https://blog.csdn.net/Pl_Sun/article/deta ...

  8. 交叉熵损失函数分类_逻辑回归(Logistic Regression)二分类原理,交叉熵损失函数及python numpy实现...

    本文目录: 1. sigmoid function (logistic function) 2. 逻辑回归二分类模型 3. 神经网络做二分类问题 4. python实现神经网络做二分类问题 ----- ...

  9. 逻辑回归能摆平二分类因变量,那……不止二分类呢?

    相信大家已经了解,逻辑回归能帮助我们解决的,是因变量有且只有两种类别的问题,比如我们之前例子里,一场选举中选民投票给两位候选人中的哪一位.通过逻辑回归,我们可以研究各种自变量与我们关心的二分类因变量之 ...

最新文章

  1. SCCM2016 集成WSUS提供补丁服务(一)
  2. 3.1 目标定位-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  3. CSS3属性之text-indent文本缩进使用详解
  4. response.setContentType()的作用及MIME参数详解
  5. 30行Python代码来绘制一个微信图标
  6. 查看linux是否lvm分区,linux LVM分区查看dm设备
  7. fanuc机器人提示暂停_FANUC机器人学习——后台逻辑功能
  8. ThinkpadT470接通电源开机显示电量0%充不进电且电源指示灯不亮的解决办法
  9. 安装webpack-cli时遇到的问题
  10. Java小白进阶笔记(5)-进阶面向对象
  11. java 关闭进程_java在进程启动和关闭.exe程序
  12. 谭浩强 c语言源码下载,谭浩强C语言教材源代码第二章
  13. python 百度文库_百度文库文档下载地址解析python版【摸索不易,还请支持】
  14. 差分进化算法用c语言实现,python 实现差分进化算法
  15. a foreign key constraint fails ,外键表中添加数据时无法实现
  16. 【苹果家庭群发推】Metal performance shader软件安装框架
  17. 用户体验要素的五个层次
  18. 乔布斯去世十年,粉丝哀叹苹果正失去昔日创新光环,但库克是更好领导者
  19. 跟小静读CLR via C#(06)- 构造器
  20. Android零基础入门

热门文章

  1. 深度学习入门论文(必看)
  2. 17@MySQL数据库读现象详解(脏读、幻读、不可重复读)
  3. 支付宝2023集齐五福攻略技巧 五福卡全获取途径方法
  4. 淘宝、一淘、淘宝商城 - 马云内部邮件谈分拆
  5. Envato不停机迁移边缘网络提供商
  6. 【每天一个 Linux 命令】网络相关命令(ifconfig、route、ping、traceroute、netstat、ss、telnet、rcp、scp)
  7. 气和血1:生命在于气血
  8. EBGP使用环回口建邻居用到ebgp-multihop和update source loopback
  9. 【java8 stream操作List集合】
  10. 【AUTOSAR CanDrive 2.了解通信Hoh、CanId与PduID的Mapping关系】