全栈工程师开发手册 (作者:栾鹏)
python数据挖掘系列教程

各类模型评估详细意思参考:https://blog.csdn.net/luanpeng825485697/article/details/79419353

常见场景: 预定义值

Scoring(得分) Function(函数) Comment(注解)
Classification(分类)
‘accuracy’ metrics.accuracy_score
‘average_precision’ metrics.average_precision_score
‘f1’ metrics.f1_score for binary targets(用于二进制目标)
‘f1_micro’ metrics.f1_score micro-averaged(微平均)
‘f1_macro’ metrics.f1_score macro-averaged(微平均)
‘f1_weighted’ metrics.f1_score weighted average(加权平均)
‘f1_samples’ metrics.f1_score by multilabel sample(通过 multilabel 样本)
‘neg_log_loss’ metrics.log_loss requires predict_proba support(需要 predict_proba 支持)
‘precision’ etc. metrics.precision_score suffixes apply as with ‘f1’(后缀适用于 ‘f1’)
‘recall’ etc. metrics.recall_score suffixes apply as with ‘f1’(后缀适用于 ‘f1’)
‘roc_auc’ metrics.roc_auc_score
Clustering(聚类)
‘adjusted_mutual_info_score’ metrics.adjusted_mutual_info_score
‘adjusted_rand_score’ metrics.adjusted_rand_score
‘completeness_score’ metrics.completeness_score
‘fowlkes_mallows_score’ metrics.fowlkes_mallows_score
‘homogeneity_score’ metrics.homogeneity_score
‘mutual_info_score’ metrics.mutual_info_score
‘normalized_mutual_info_score’ metrics.normalized_mutual_info_score
‘v_measure_score’ metrics.v_measure_score
Regression(回归)
‘explained_variance’ metrics.explained_variance_score
‘neg_mean_absolute_error’ metrics.mean_absolute_error
‘neg_mean_squared_error’ metrics.mean_squared_error
‘neg_mean_squared_log_error’ metrics.mean_squared_log_error
‘neg_median_absolute_error’ metrics.median_absolute_error
‘r2’ metrics.r2_score
from sklearn import svm, datasets
from sklearn.model_selection import cross_val_score,cross_validate  # 交叉验证中的模型度量
import numpy as np # 快速操作结构数组的工具
import matplotlib.pyplot as plt  # 可视化绘制
from sklearn.linear_model import LinearRegression  # 线性回归
from sklearn.metrics import make_scorer
from sklearn import metrics#  =============================分类度量===============================
print('=============================分类度量===============================')
iris = datasets.load_iris()  # 加载iris 数据集;用于分类问题
X, y = iris.data, iris.target  # 150个样本,4个属性,3种分类clf = svm.SVC(probability=True, random_state=0)# ===========================交叉验证获取度量=======================
score = cross_val_score(clf, X, y, scoring='accuracy',cv=3)  # 默认进行三次交叉验证
print('交叉验证度量:',score)# ===========================自定义度量=======================# 自定义度量函数,输入为真实值和预测值
def my_custom_loss_func(ground_truth, predictions):diff = np.abs(ground_truth - predictions).max()return np.log(1 + diff)loss  = make_scorer(my_custom_loss_func, greater_is_better=False) # 自定义度量对象。结果越小越好。greater_is_better设置为false,系统认为是损失函数,则会将计分函数取反
score = make_scorer(my_custom_loss_func, greater_is_better=True) # 自定义度量对象。结果越大越好
clf = svm.SVC()
clf.fit(X, y)print(loss(clf,X,y)) # 对模型进行度量,系统会自动调用模型对输入进行预测,并和真实输出值进行比较,计算损失函数
print(score(clf,X,y)) # 对模型进行度量,系统会自动调用模型对输入进行预测,并和真实输出值进行比较,计算得分# ============================多种度量值=========================
scoring = ['precision_macro', 'recall_macro'] # precision_macro为精度,recall_macro为召回率
scores = cross_validate(clf, X, y,scoring=scoring,cv=5, return_train_score=True)
sorted(scores.keys())
print('多种度量的测试结果:',scores)  # scores类型为字典。包含训练得分,拟合次数, score-times (得分次数)# ============================分类指标=========================
clf = svm.SVC()  # 构建模型
clf.fit(X, y) # 训练模型
predict_y = clf.predict(X) # 预测数据print('准确率指标:',metrics.accuracy_score(y, predict_y))  # 计算准确率
print('Kappa指标:',metrics.cohen_kappa_score(y, predict_y)) # Kappa 检验
print('混淆矩阵:\n',metrics.confusion_matrix(y, predict_y)) # 混淆矩阵target_names = ['class 0', 'class 1', 'class 2']
print('分类报告:\n',metrics.classification_report(y, predict_y, target_names=target_names))  # 分类报告
print('汉明损失:',metrics.hamming_loss(y, predict_y))  #汉明损失 。在多分类中, 汉明损失对应于 y 和 predict_y 之间的汉明距离
print('Jaccard 相似系数:',metrics.jaccard_similarity_score(y, predict_y))   # Jaccard 相似系数# 下面的系数在在二分类中不需要使用average参数,在多分类中需要使用average参数进行多个二分类的平均
# average可取值:macro(宏)、weighted(加权)、micro(微)、samples(样本)、None(返回每个类的分数)print('精度计算:',metrics.precision_score(y, predict_y, average='macro'))
print('召回率:',metrics.recall_score(y, predict_y,average='micro'))
print('F1值:',metrics.f1_score(y, predict_y,average='weighted'))print('FB值:',metrics.fbeta_score(y, predict_y,average='macro', beta=0.5))
print('FB值:',metrics.fbeta_score(y, predict_y,average='macro', beta=1))
print('FB值:',metrics.fbeta_score(y, predict_y,average='macro', beta=2))
print('精确召回曲线:',metrics.precision_recall_fscore_support(y, predict_y,beta=0.5,average=None))
print('零一损失:',metrics.zero_one_loss(y, predict_y))# ROC曲线(二分类)
y1 = np.array([0, 0, 1, 1])  # 样本类标号
y_scores = np.array([0.1, 0.4, 0.35, 0.8]) # 样本的得分(属于正样本的概率估计、或置信度值)
fpr, tpr, thresholds = metrics.roc_curve(y1, y_scores, pos_label=1)
print('假正率:',fpr)
print('真正率:',tpr)
print('门限:',thresholds)
print('AUC值:',metrics.roc_auc_score(y1, y_scores))labels = np.array([0, 1, 2])  # 三种分类的类标号
pred_decision = clf.decision_function(X)  # 计算样本属于每种分类的得分,所以pred_decision是一个3列的矩阵
print('hinge_loss:',metrics.hinge_loss(y, pred_decision, labels = labels))# 逻辑回归损失,对真实分类和预测分类概率进行对比的损失
y_true = [0, 0, 1, 1]
y_pred = [[.9, .1], [.8, .2], [.3, .7], [.01, .99]]
print('log_loss:',metrics.log_loss(y_true, y_pred))# ===============================回归度量==============================
print(' ===============================回归度量==============================')
diabetes = datasets.load_diabetes()  # 加载糖尿病数据集;用于回归问题
X, y = diabetes.data, diabetes.target  # 442个样本,10个属性,数值输出model = LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
model.fit(X, y)   # 线性回归建模
predicted_y = model.predict(X)  # 使用模型预测print('解释方差得分:',metrics.explained_variance_score(y, predicted_y))  # 解释方差得分
print('平均绝对误差:',metrics.mean_absolute_error(y, predicted_y))  # 平均绝对误差
print('均方误差:',metrics.mean_squared_error(y, predicted_y))  # 均方误差
print('均方误差对数:',metrics.mean_squared_log_error(y, predicted_y))  # 均方误差对数
print('中位绝对误差:',metrics.median_absolute_error(y, predicted_y))  # 中位绝对误差
print('可决系数:',metrics.r2_score(y, predicted_y, multioutput='variance_weighted')) #可决系数
print('可决系数:',metrics.r2_score(y, predicted_y, multioutput='raw_values')) #可决系数
print('可决系数:',metrics.r2_score(y, predicted_y, multioutput='uniform_average')) #可决系数

python机器学习库sklearn——模型评估相关推荐

  1. Python机器学习库sklearn的安装

    Python机器学习库sklearn的安装 scikit-learn是Python的一个开源机器学习模块,它建立在NumPy,SciPy和matplotlib模块之上能够为用户提供各种机器学习算法接口 ...

  2. python机器学习库sklearn——决策树

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 决策树的相关的知识内容可以参考 http://blog.csdn.net/luanpeng825485697/article/deta ...

  3. python机器学习库sklearn——DBSCAN密度聚类

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 DBSCAN密度聚类的相关 ...

  4. python机器学习库sklearn与graphlab与opencv的安装

    1.安装python 首先安装python3.5 Link 然后安装python2.7 Link 注意选择合适的版本(记得之后安装的GraphLab只能用64位,也只能使用python2) 2.安装使 ...

  5. Python机器学习库sklearn里利用LR模型进行三分类(多分类)的原理

    有关LR模型的完整理论知识参考http://blog.csdn.net/cymy001/article/details/78153036 首先,LR将线性模型利用sigmoid函数进一步做了非线性映射 ...

  6. python机器学习库sklearn——特征提取

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 注意:特征特征提取与 特征选择 有很大的不同:前者包括将任意数据(如文本或图像)转换为可用于机器学习的数值特征.后者是将这些特征应用到 ...

  7. python机器学习库sklearn——集成方法(Bagging、Boosting、随机森林RF、AdaBoost、GBDT)

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 docker/kubernetes入门视频教程 全栈工程师开发手册 (作者:栾鹏) pyth ...

  8. python机器学习库sklearn——交叉验证(K折、留一、留p、随机)

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 学习预测函数的参数,并在相 ...

  9. python机器学习库sklearn——参数优化(网格搜索GridSearchCV、随机搜索RandomizedSearchCV、hyperopt)

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 优化的相关的知识内容可以参 ...

最新文章

  1. 向上取整的方法_瓷砖测量的方法有哪些?瓷砖尺寸一般是多少?
  2. spring中bean的两种注入方式
  3. python中lambda函数对时间排序_python – 使用lambda函数排序()
  4. 用python画渐变的圆_使用numpy绘制圆形渐变
  5. 一步步教你搭建SSM整合+前提配置超详细版(IDEA版本)
  6. DEDECMS系统后台添加菜单列表
  7. 易云维医院后勤管理系统浅谈医院空调设备管理的问题及优化建议
  8. android 后台运行管理,Android 后台运行白名单实现保活
  9. 机器学习时代三大神器GBDT(MART)、XGBoost、LightGBM
  10. 2021年北京邮电大学计算机12组(原网研二组)夏令营面试经历
  11. WordPress主题的最佳市场:TemplateMonster还是ThemeForest?
  12. 【前端】纯CSS实现探照灯效果
  13. ipad文件APP连接服务器,是时候认识一下 iPad 的文件管理了
  14. kali2021安装GVM(openVAS)
  15. 创建visio的形状
  16. C语言电子时钟程序设计,单片机C语言电子时钟加日历显示编程
  17. 邢台学院计算机老师待遇2020,老师待遇不好?2020年的三个教师改革,将会让老师迎来事业第二春...
  18. 施罗德: 以大数据技术洞悉投资先机,同时管理风险
  19. 微光增强的深Retinex分解——思路整理
  20. 政策评价效应---断点回归(RDD)

热门文章

  1. 智能手机的超性能语音识别技术简介
  2. 准备成立公司开发 app 外卖应用,怎么起步?
  3. 第H题 输入N求N的阶乘的10进制表示的长度
  4. 第F题 真约束之和(通解)古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为:  1+2+4+5+10+11+20+22+44+55+110=284
  5. 中职计算机英语课件ppt,语文版中职英语(基础模块 上册)Unit 7《Computers》ppt课件1.ppt...
  6. idea整合EasyCode基于lombok和swagger自定义模板
  7. 【深度优先搜索】计蒜客:方程的解数
  8. 【python 笔记】集合类型详解
  9. FFMPEG结构体分析:AVFormatContext
  10. H.264参考软件JM12.2RC代码详细流程