当前位置:   article > 正文

sklearn.metrics的各种参数_metrics 求某个阈值下的precision

metrics 求某个阈值下的precision

一、导入模块

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn import metrics
import numpy as np
  • 1
  • 2
  • 3
  • 4
  • 5

二、加载x,y测试集训练集

x = np.array([[-1, -1],[-2, -1],
        [1, 1],[2, 1],
        [-1, 1],[-1, 2],
        [1, -1],[1, -2],
        [1, 1],[2, 2]])
y = np.array([1, 1, 0, 1, 0, 0, 1, 1, 0, 1])

# 1、得到测试集,测试集标签,训练集,训练集标签
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)  # 按照80:20的比例切分数据

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

三、调用分类器

# 2、调用随机森林分类器
gbc = RandomForestClassifier(n_estimators=10, max_depth=5)
  • 1
  • 2

四、模型拟合

# 3、进行模型拟合
gbc.fit(x_train, y_train)  # 拟合
  • 1
  • 2

五、输出测试集训练集准确率

# 4、输出训练集,测试集准确率
print("RF - Accuracy (Train):  %.4g" % metrics.accuracy_score(y_train, gbc.predict(x_train)))
print("RF - Accuracy (Test):  %.4g" % metrics.accuracy_score(y_test, gbc.predict(x_test)))

  • 1
  • 2
  • 3
  • 4

六、计算训练集的预测标签

y_pred1 = gbc.predict(x_test)
y_pred = y_pred1.round()  # 如果只是出现概率值要用round()函数
print("label标签的类别分别如下: ", gbc.classes_)  # 展示出各种类别
print("模型输入样本输入每种类别的概率,且取概率最大的类别作为样本预测结果: ", gbc.predict_proba([[5.7, 4.4]]))
print("模型预测输入样本所属的类别: ", gbc.predict([[5.7, 4.4]]))
  • 1
  • 2
  • 3
  • 4
  • 5

七、输出预测集每个类别对应的概率

# 6、输出预测集的每个类别对应的概率
y_predprob = gbc.predict_proba(x_test)
print("y_predprob: ", y_predprob)
  • 1
  • 2
  • 3

八、分析不同类别的准确率召回率

# 7、classification_report用来分析不同类别的准确率,召回率,F1值等,从而便于按照类别查看准确率、召回率。
print("precision_recall_f1-score_accuracy:\n", metrics.classification_report(y_test, y_pred))

  • 1
  • 2
  • 3

九、混淆矩阵

# 8、混淆矩阵:a[i][j]将类别i的样本误判为类别j的个数
print("confusion_matrix:\n",metrics.confusion_matrix(y_test, y_pred))
  • 1
  • 2

十、模型准确率

# 9、准确率
print("Accuracy : %.4g" % metrics.accuracy_score(y_test, y_pred))
  • 1
  • 2

十一、roc曲线

# 10、roc_auc_score函数返回曲线下面积,输入和roc_curve函数一样
print("AUC Score (Train): %.3f" % metrics.roc_auc_score(y_test, y_pred, multi_class='ovo'))

  • 1
  • 2
  • 3

十二、召回率 F1精确率

# average参数定义了该指标的计算方法,二分类时average参数默认是binary;多分类时,可选参数有micro、macro、weighted和samples。
# average参考取值: https://blog.csdn.net/weixin_44436677/article/details/105985358
# 11、其他指标
print("F1_score: %.3f" % metrics.f1_score(y_test, y_pred, average='binary'))
print("Precision: %.3f " % metrics.precision_score(y_test, y_pred, average='binary'))
print("Recall score : %.3f" % metrics.recall_score(y_test, y_pred, average='binary'))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

十三、计算均方误差

# 12、计算均方误差
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred)
print("mean_squared_error : %.3f" % mse)
  • 1
  • 2
  • 3
  • 4

十四、计算回归的决定系数

# 13、计算回归的决定系数
from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)
print("R2: %.3f" % r2)
  • 1
  • 2
  • 3
  • 4

十五、图表展示

# 14、图表表示
# sklearn.metric.roc_curve()函数用于绘制ROC曲线 也只能用于二分类模型
# 主要参数 y_true真实样本标签 y_score:每个样本的预测结果 pos_label:正样本的标签
# 返回三个值 fpr:false pos rate  tpr: true pos rate threholds 阈值
# 召回率tpr = tp/tp+fn  fpr=fp/fp+tn
import matplotlib.pyplot as plt
label = np.array([1, 1, -1, -1])
scores = np.array([0.7, 0.2, 0.4, 0.5])
fpr, tpr, thresholds=metrics.roc_curve(label, scores)
print('FPR:', fpr)
print('TPR:', tpr)
print('thresholds:', thresholds)
plt.plot(fpr, tpr)
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

十六、所有输出

10
RF - Accuracy (Train):  1
RF - Accuracy (Test):  1
label标签的类别分别如下:  [0 1]
模型输入样本输入每种类别的概率,且取概率最大的类别作为样本预测结果:  [[0.1 0.9]]
模型预测输入样本所属的类别:  [1]
y_predprob:  [[0.6 0.4]
 [0.2 0.8]]
precision_recall_f1-score_accuracy:
               precision    recall  f1-score   support

           0       1.00      1.00      1.00         1
           1       1.00      1.00      1.00         1

    accuracy                           1.00         2
   macro avg       1.00      1.00      1.00         2
weighted avg       1.00      1.00      1.00         2

confusion_matrix:
 [[1 0]
 [0 1]]
Accuracy : 1
AUC Score (Train): 1.000
F1_score: 1.000
Precision: 1.000 
Recall score : 1.000
mean_squared_error : 0.000
R2: 1.000
FPR: [0. 0. 1. 1.]
TPR: [0.  0.5 0.5 1. ]
thresholds: [1.7 0.7 0.4 0.2]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/142825
推荐阅读
相关标签
  

闽ICP备14008679号