Python Sklearn.metrics 简介及应用示例

利用Python进行各种机器学习算法的实现时,经常会用到sklearn(scikit-learn)这个模块/库。

无论利用机器学习算法进行回归、分类或者聚类时,评价指标,即检验机器学习模型效果的定量指标,都是一个不可避免且十分重要的问题。因此,结合scikit-learn主页上的介绍,以及网上大神整理的一些资料,对常用的评价指标及其实现、应用进行简单介绍。

一、 scikit-learn安装

网上教程很多,此处不再赘述,具体可以参照:
https://www.cnblogs.com/zhangqunshi/p/6646987.html
此外,如果安装了Anoconda,可以直接从Anoconda Navigator——Environment里面搜索添加。
pip install -U scikit-learn

二、 scikit-learn.metrics导入与调用

有两种方式导入:

方式一:

from sklearn.metrics import 评价指标函数名称

例如:

from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score

调用方式为:直接使用函数名调用
计算均方误差mean squared error

mse = mean_squared_error(y_test, y_pre)

计算回归的决定系数R2

R2 = r2_score(y_test,y_pre)
方式二:

from sklearn import metrics

调用方式为:metrics.评价指标函数名称(parameter)

例如:
计算均方误差mean squared error

mse = metrics.mean_squared_error(y_test, y_pre)

计算回归的决定系数R2

R2 = metrics.r2_score(y_test,y_pre)

三、 scikit-learn.metrics里各种指标简介

简单介绍参见:
https://www.cnblogs.com/mdevelopment/p/9456486.html
详细介绍参见:
https://www.cnblogs.com/harvey888/p/6964741.html
官网介绍:
https://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics

转自第一个链接的内容,简单介绍内容如下:

回归指标

  1. explained_variance_score(y_true, y_pred, sample_weight=None, multioutput=‘uniform_average’):回归方差(反应自变量与因变量之间的相关程度)

  2. mean_absolute_error(y_true,y_pred,sample_weight=None,
    multioutput=‘uniform_average’):
    平均绝对误差

  3. mean_squared_error(y_true, y_pred, sample_weight=None, multioutput=‘uniform_average’):均方差

  4. median_absolute_error(y_true, y_pred) 中值绝对误差

  5. r2_score(y_true, y_pred,sample_weight=None,multioutput=‘uniform_average’) :R平方值

分类指标

  1. accuracy_score(y_true,y_pre) : 精度

  2. auc(x, y, reorder=False) : ROC曲线下的面积;较大的AUC代表了较好的performance。

  3. average_precision_score(y_true, y_score, average=‘macro’, sample_weight=None):根据预测得分计算平均精度(AP)

  4. brier_score_loss(y_true, y_prob, sample_weight=None, pos_label=None):The smaller the Brier score, the better.

  5. confusion_matrix(y_true, y_pred, labels=None, sample_weight=None):通过计算混淆矩阵来评估分类的准确性 返回混淆矩阵

  6. f1_score(y_true, y_pred, labels=None, pos_label=1, average=‘binary’, sample_weight=None): F1值
      F1 = 2 * (precision * recall) / (precision + recall) precision(查准率)=TP/(TP+FP) recall(查全率)=TP/(TP+FN)

  7. log_loss(y_true, y_pred, eps=1e-15, normalize=True, sample_weight=None, labels=None):对数损耗,又称逻辑损耗或交叉熵损耗

  8. precision_score(y_true, y_pred, labels=None, pos_label=1, average=‘binary’,) :查准率或者精度; precision(查准率)=TP/(TP+FP)

  9. recall_score(y_true, y_pred, labels=None, pos_label=1, average=‘binary’, sample_weight=None):查全率 ;recall(查全率)=TP/(TP+FN)

  10. roc_auc_score(y_true, y_score, average=‘macro’, sample_weight=None):计算ROC曲线下的面积就是AUC的值,the larger the better

  11. roc_curve(y_true, y_score, pos_label=None, sample_weight=None, drop_intermediate=True);计算ROC曲线的横纵坐标值,TPR,FPR
      TPR = TP/(TP+FN) = recall(真正例率,敏感度) FPR = FP/(FP+TN)(假正例率,1-特异性)

四、 一个应用实例

结合官网的案例,利用自己的数据,实现的一个应用实例:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import ensemble
from sklearn import  metrics##############################################################################
# Load data
data = pd.read_csv('Data for train_0.003D.csv')
y = data.iloc[:,0]
X = data.iloc[:,1:]
offset = int(X.shape[0] * 0.9)
X_train, y_train = X[:offset], y[:offset]
X_test, y_test = X[offset:], y[offset:]##############################################################################
# Fit regression model
params = {'n_estimators': 500, 'max_depth': 4, 'min_samples_split': 2,'learning_rate': 0.01, 'loss': 'ls'}
clf = ensemble.GradientBoostingRegressor(**params)clf.fit(X_train, y_train)
y_pre = clf.predict(X_test)# Calculate metrics
mse = metrics.mean_squared_error(y_test, y_pre)
print("MSE: %.4f" % mse)mae = metrics.mean_absolute_error(y_test, y_pre)
print("MAE: %.4f" % mae)R2 = metrics.r2_score(y_test,y_pre)
print("R2: %.4f" % R2)##############################################################################
# Plot training deviance# compute test set deviance
test_score = np.zeros((params['n_estimators'],), dtype=np.float64)for i, y_pred in enumerate(clf.staged_predict(X_test)):test_score[i] = clf.loss_(y_test, y_pred)plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.title('Deviance')
plt.plot(np.arange(params['n_estimators']) + 1, clf.train_score_, 'b-',label='Training Set Deviance')
plt.plot(np.arange(params['n_estimators']) + 1, test_score, 'r-',label='Test Set Deviance')
plt.legend(loc='upper right')
plt.xlabel('Boosting Iterations')
plt.ylabel('Deviance')##############################################################################
# Plot feature importance
feature_importance = clf.feature_importances_
# make importances relative to max importance
feature_importance = 100.0 * (feature_importance / feature_importance.max())
sorted_idx = np.argsort(feature_importance)
pos = np.arange(sorted_idx.shape[0]) + .5
plt.subplot(1, 2, 2)
plt.barh(pos, feature_importance[sorted_idx], align='center')
plt.yticks(pos, X.columns[sorted_idx])plt.xlabel('Relative Importance')
plt.title('Variable Importance')
plt.show()

最终的运行结果为:

Python sklearn机器学习各种评价指标——Sklearn.metrics简介及应用示例相关推荐

  1. python的metrics_Python Sklearn.metrics 简介及应用示例

    Python Sklearn.metrics 简介及应用示例 利用Python进行各种机器学习算法的实现时,经常会用到sklearn(scikit-learn)这个模块/库. 无论利用机器学习算法进行 ...

  2. Python小白机器学习教程:Sklearn精讲

    点击"简说Python",选择"置顶/星标公众号" 福利干货,第一时间送达! 本文授权转载自王的机器 禁二次转载 作者:王圣元 阅读文本大概需要 60 分钟 老 ...

  3. Python机器学习笔记:sklearn库的学习

    自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了,scikit-learn简称sklearn,支持包括分类,回归,降维和聚类四大机器学习算法.还包括了特征提取,数据 ...

  4. Python中机器学习神器——sklearn模块

    参考文章 Python机器学习笔记:sklearn库的学习 ML神器:sklearn的快速使用 机器学习与Sklearn的初识 传统的机器学习任务从开始到建模的一般流程是:获取数据 → 数据预处理 → ...

  5. Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略

    Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略 目录 sklearn中的RobustScaler 函数的简介及使用方法 sklearn中的R ...

  6. 用python+sklearn(机器学习)实现天气预报数据 模型和使用

    用python+sklearn机器学习实现天气预报 模型和使用 项目地址 系列教程 0.前言 1.建立模型 a.准备 引入所需要的头文件 选择模型 选择评估方法 获取数据集 b.建立模型 c.获取模型 ...

  7. Python编程语言学习:sklearn.manifold的TSNE函数的简介、使用方法、代码实现之详细攻略

    Python编程语言学习:sklearn.manifold的TSNE函数的简介.使用方法.代码实现之详细攻略 目录 Manifold简介 TSNE简介-数据降维且可视化 TSNE使用方法 TSNE代码 ...

  8. Python之 sklearn:sklearn中的train_test_split函数的简介及使用方法之详细攻略

    Python之 sklearn:sklearn中的train_test_split函数的简介及使用方法之详细攻略 目录 sklearn中的train_test_split函数的简介 train_tes ...

  9. Python 3 利用 Dlib 和 sklearn 人脸笑脸检测机器学习建模

    0. 引言 利用机器学习的方法训练微笑检测模型,输入一张人脸照片,判断是否微笑: 精度在 95% 左右( 使用的数据集中 69 张没笑脸,65 张有笑脸 ): 图1 测试图像与检测结果 项目实现的笑脸 ...

最新文章

  1. 使用nmap-converter将nmap扫描结果XML转化为XLS实战
  2. spark rdd saveAsTextFile保存为文件
  3. python基础教程:对象之间的交互
  4. ORA-00257: archiver error. Connect internal only, until freed.
  5. [翻译]Feedback on the Go Challenge solutions
  6. TOMCAT常用优化
  7. python渲染光线_python模板渲染配置文件
  8. HTML5绘制一个3D立方体,HTML5/Canvas交互式3D立方体
  9. Matlab - Matlab 2016a 安装破解教程
  10. powerapps简介
  11. Unity小游戏教程系列 | 创建小型太空射击游戏(二)
  12. iphone与计算机连接,苹果usb怎么与电脑连接_苹果怎么设置与电脑连接的图文步骤...
  13. 08-搭建Rest服务 - 04权限管理
  14. RemoteTestkit远程真机调试平台使用教程
  15. Win10 插入前置耳机没有声音问题
  16. 天通手机卫星电话、天通卫星系统终端、SRRC、型号核准、CTA、进网许可
  17. 229. Majority Element II 【M】【52】
  18. 用懊悔法学习吴恩达机器学习【1】
  19. 《Tableau数据可视化从入门到精通》之Tableau系列软件概况
  20. 2018年7月27日每日安全快讯

热门文章

  1. c语言中f1等于f2详细意思,请c语言高手给我讲解一下这个题
  2. 微博营销2——赢利模式之资讯中心
  3. [zz]澄清P问题、NP问题、NPC问题的概念
  4. php 文字弹幕效果代码,50行代码搞定弹幕效果
  5. 计算机OSI七层参考模型
  6. 改变不了环境,学会改变自己!
  7. 线阵相机参数设置和原理解释 (转载)很棒。
  8. MySQL命令行导出导入数据库和数据表
  9. 【论文阅读】ERNIE系列
  10. .NET 中关于ImageList 图片锯齿问题