赞
踩
一、导入模块
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
二、加载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的比例切分数据
三、调用分类器
# 2、调用随机森林分类器
gbc = RandomForestClassifier(n_estimators=10, max_depth=5)
四、模型拟合
# 3、进行模型拟合
gbc.fit(x_train, y_train) # 拟合
五、输出测试集训练集准确率
# 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)))
六、计算训练集的预测标签
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]]))
七、输出预测集每个类别对应的概率
# 6、输出预测集的每个类别对应的概率
y_predprob = gbc.predict_proba(x_test)
print("y_predprob: ", y_predprob)
八、分析不同类别的准确率召回率
# 7、classification_report用来分析不同类别的准确率,召回率,F1值等,从而便于按照类别查看准确率、召回率。
print("precision_recall_f1-score_accuracy:\n", metrics.classification_report(y_test, y_pred))
九、混淆矩阵
# 8、混淆矩阵:a[i][j]将类别i的样本误判为类别j的个数
print("confusion_matrix:\n",metrics.confusion_matrix(y_test, y_pred))
十、模型准确率
# 9、准确率
print("Accuracy : %.4g" % metrics.accuracy_score(y_test, y_pred))
十一、roc曲线
# 10、roc_auc_score函数返回曲线下面积,输入和roc_curve函数一样
print("AUC Score (Train): %.3f" % metrics.roc_auc_score(y_test, y_pred, multi_class='ovo'))
十二、召回率 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'))
十三、计算均方误差
# 12、计算均方误差
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, y_pred)
print("mean_squared_error : %.3f" % mse)
十四、计算回归的决定系数
# 13、计算回归的决定系数
from sklearn.metrics import r2_score
r2 = r2_score(y_test, y_pred)
print("R2: %.3f" % r2)
十五、图表展示
# 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()
十六、所有输出
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]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。