题目如下

(1)读入aviation数据集,设置MEMBER_NO为索引列;(4分)
(2)剔除重复值、缺失值。(4分)
(3)随机抽取500样本,切片特征X和标签Y;(4分) 因为调参很慢,所以这里的操作是想在小数据集上调参
(4)使用交叉验证方法(10折)
比较逻辑回归、决策树算法性能差异,评估指标用F1分数(5分)
(5)使用网格搜索对上题中F1分数较高的算法进行超参数调优。(4分)
(6)使用4、5中确定的最优算法和最优参数建立模型。(4分)
(7)按照6:4划分整个数据集(样本总体)。(4分)
(8)使用训练集数据进行模型训练,对测试集数据进行预测,打印混淆矩阵。(4分)
(9)打印精确率、召回率、F1分数和AUC值、画出ROC曲线。(5分)

题目分析

  • 我们拿到一个非常大的数据集以后,在训练模型时,要想到拿其中的一部分样本来训练,这样的速度比较快
  • 在读取数据的时候,可以直接对缺失值进行填充
  • 读取数据以后可以删除缺失的数据
  • 在训练时,不知道使用哪个模型更佳的情况下,多使用几个模型,进行交叉验证评估,选择得分最高的算法
  • 选好算法以后,使用表格选择器,进行模型参数调优,选出最优的参数
  • 使用最优参数建立最优模型
  • 模型训练
  • 对训练好的模型进行评估

代码如下

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 设置中文字体和负号正确显示
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False
# 数据切分器
from sklearn.model_selection import train_test_split
# 决策树分类器
from sklearn.tree import DecisionTreeClassifier
# 逻辑回归分类器
from sklearn.linear_model import LogisticRegression
# 交叉验证评估器
from sklearn.model_selection import cross_val_score
# 表格查找最优模型器
from sklearn.model_selection import GridSearchCV
# 模型评估指标
from sklearn.metrics import f1_score,classification_report,confusion_matrix
# 模型评估指标
from sklearn.metrics import precision_score,recall_score,roc_auc_score,roc_curve
# 忽略多余的警告
import warnings
warnings.filterwarnings('ignore')# (1)读入aviation数据集,设置MEMBER_NO为索引列;(4分)
data=pd.read_excel("../datas/aviation.xls",index_col="MEMBER_NO")# (2)剔除重复值、缺失值。(4分)
data.drop_duplicates(inplace=True)
data.dropna(inplace=True)# (3)随机抽取500样本,切片特征X和标签Y;(4分)  因为调参很慢,所以这里的操作是想在小数据集上调参
data=data.sample(500)
X=data.iloc[:,:-1]
Y=data.iloc[:,-1]# (4)使用交叉验证方法(10折)
# 比较逻辑回归、决策树算法性能差异,评估指标用F1分数(5分)
Log=LogisticRegression()
DT=DecisionTreeClassifier()
model1=cross_val_score(Log,X,Y,scoring="f1",cv=10)
model2=cross_val_score(DT,X,Y,scoring="f1",cv=10)
print('model1:\n',np.mean(model1))
print('model2:\n',np.mean(model2))# (5)使用网格搜索对上题中F1分数较高的算法进行超参数调优。(4分)
param1={"C":[0.1,1,10,100,200],"max_iter":[1,10,50,100,200]
}
# 表格选择器对逻辑回归模型选择最优参数
searchmodel1=GridSearchCV(Log,param_grid=param1,cv=2).fit(X,Y)
print(searchmodel1.best_params_)
print(searchmodel1.best_score_*100,"%")param2={"max_depth":[0.1,1,10,50,100],"min_samples_leaf":[1,10,50,100,200]
}
# 表格选择器对决策树模型选择最优参数
searchmodel2=GridSearchCV(DT,param_grid=param2).fit(X,Y)
print(searchmodel2.best_params_)
print(searchmodel2.best_score_*100,"%")# (6)使用4、5中确定的最优算法和最优参数建立模型。(4分)
model=LogisticRegression(C=searchmodel1.best_params_.get("C"),max_iter=100)# (7)按照6:4划分整个数据集(样本总体)。(4分)
X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.4,random_state=3)# (8)使用训练集数据进行模型训练,对测试集数据进行预测,打印混淆矩阵。(4分)
model.fit(X_train,Y_train)
pred=model.predict(X_test)
preds=model.predict_proba(X_test)print("混淆矩阵:\n",confusion_matrix(Y_test,pred))# (9)打印精确率、召回率、F1分数和AUC值、画出ROC曲线。(5分)
print("精确率:%.2f"%(precision_score(Y_test,pred)*100),"%")
print("召回率:%.2f"%(recall_score(Y_test,pred)*100),"%")
print("F1-Score:%.2f"%(f1_score(Y_test,pred)*100),"%")
print("AUC:%.2f"%(roc_auc_score(Y_test,preds[:,-1])*100),"%")TPR,FPR,TH=roc_curve(Y_test,preds[:,-1],)# 画图
plt.title("ROC曲线")
plt.plot(TPR,FPR)
plt.xlabel("FPR")
plt.ylabel("TPR")
plt.show()

结果如下

画图如下

机器学习之选择小样本交叉验证训练模型并使用精确率、召回率、F1分数和AUC值、画出ROC曲线评估相关推荐

  1. R语言使用yardstick包的roc_curve函数评估多分类(Multiclass)模型、并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的ROC曲线

    R语言使用yardstick包的roc_curve函数评估多分类(Multiclass)模型的性能.并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的ROC ...

  2. 【机器学习】模型选择(交叉验证)原理及实战

    1. 交叉验证理论 交叉验证 对于模型的准确度,一般可以将预测结果和实际结果比对,从而轻松地得出.而模型地泛化误差(是不是过拟合)则相对较难度量.交叉验证是一种评估模型泛化误差地常见手段. 具体步骤 ...

  3. 机器学习基础|K折交叉验证与超参数搜索

    文章目录 交叉验证 交叉验证的概念 K的取值 为什么要用K折交叉验证 Sklearn交叉验证API 超参数搜索 超参数的概念 超参数搜索的概念 超参数搜索的原理 Sklearn超参数搜索API 实例 ...

  4. 机器学习之路——KNN+交叉验证

    KNN分类模型 概念: 简单地说,K-近邻算法采用测量不同特征值之间的距离方法进行分类(k-Nearest Neighbor,KNN) k值的作用 欧几里得距离(Euclidean Distance) ...

  5. 机器学习(五)之评价指标:二分类指标、多分类指标、混淆矩阵、不确定性、ROC曲线、AUC、回归指标

    文章目录 0 本文简介 1 二分类指标 1.1 二分类时的错误类型 1.2 不平衡的数据 1.3 混淆矩阵 1.4 考虑不确定性 1.5 准确率-召回率曲线 1.6 ROC与AUC 2 多分类指标 3 ...

  6. 【机器学习入门】(13) 实战:心脏病预测,补充: ROC曲线、精确率--召回率曲线,附python完整代码和数据集

    各位同学好,经过前几章python机器学习的探索,想必大家对各种预测方法也有了一定的认识.今天我们来进行一次实战,心脏病病例预测,本文对一些基础方法就不进行详细解释,有疑问的同学可以看我前几篇机器学习 ...

  7. 机器学习模型评价指标:准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线

    转自机器学习:准确率(Precision).召回率(Recall).F值(F-Measure).ROC曲线.PR曲线 摘要: 数据挖掘.机器学习和推荐系统中的评测指标-准确率(Precision).召 ...

  8. 机器学习中精准率/召回率/PR曲线/AUC-ROC曲线等概念

    目录 TP/TN/FP/FN accuracy(准确率) precision(精确率/查准率) recall(召回率/查全率) F1分数与Fβ分数 PR曲线(precision recall curv ...

  9. 机器学习算法评价指标 recall(召回率)、precision(精度)、F-measure(F值)、ROC曲线、RP曲线

    机器学习中算法评价指标总结 recall(召回率).precision(精度).F-measure.ROC曲线.RP曲线 在机器学习.数据挖掘.推荐系统完成建模之后,需要对模型的效果做评价. 业内目前 ...

最新文章

  1. 高性能 Windows C++ 通用组件 VC-Logger v2.0.3 正式发布
  2. python推荐书籍-有哪些 Python 经典书籍?
  3. 二次优化问题dfp_优化设计-fmincon函数介绍-序列二次的规划(SQP)-subspacetrustregion-activesett.pdf...
  4. [Swift]LeetCode206. 反转链表 | Reverse Linked List
  5. IOS操作数据库总结
  6. CNN收购Beme视频分享APP 11个员工也将加入
  7. Error while compiling statement: FAILED: LockException [Error 10280]
  8. SAP 电商云 Spartacus SSR Optimization Engine 几处 timeout 的执行顺序
  9. 编写程序判断一个 vector<int> 容器所包含的元素是否9.20: 与一个 list<int> 容器的完全相同。
  10. 牛客题霸 [ 实现二叉树先序,中序和后序遍历]C++题解/答案
  11. vue 项目构建失败 Unhandled rejection Error 的原因 sass解析异常
  12. 【转载】MySQL学习总结一
  13. 华为云举办AI经典论文复现活动,打造领先AI开发者学习社区
  14. R语言聚类算法之k中心聚类(K-medoids)
  15. 【蓝桥杯】蓝桥杯日期类问题总结
  16. 2017-2018-1 点集拓扑
  17. 学习python的第六天---1(理论)
  18. C语言之标识符与关键字
  19. 货币金融学学习笔记(第4篇中央银行与货币操作政策)
  20. 【Linux】3.0Linux进程概念

热门文章

  1. m2e-wtp的作用
  2. Python 手把手实现M3U8视频抓取
  3. [web]开复老师在线谈中国青年的成长 - by http://bbs.kaifulee.com/
  4. 引力产生的原因是什么
  5. DirectShow编程(3.5) - 关于DirectShow - DirectShow中的事件通告
  6. README.generic-sessions.md
  7. 【matlab】拟合直线的方法
  8. vue双向绑定原理及实现
  9. 聊一聊HTTPS双向认证的简单应用
  10. java手机振动软件_Android实现手机震动效果