Python计算分类问题的评价指标(准确率、精确度、召回率和F1值,Kappa指标) 您所在的位置:网站首页 频率准确度计算例题 Python计算分类问题的评价指标(准确率、精确度、召回率和F1值,Kappa指标)

Python计算分类问题的评价指标(准确率、精确度、召回率和F1值,Kappa指标)

2024-03-12 12:25| 来源: 网络整理| 查看: 265

机器学习的分类问题常用评论指标有:准确率、精确度、召回率和F1值,还有kappa指标 。

每次调包去找他们的计算代码很麻烦,所以这里一次性定义一个函数,直接计算所有的评价指标。

每次输入预测值和真实值就可以得到上面的指标值,很方便。

下面是这些指标的计算公式:

kappa指标:

  

Python计算代码

下面是定义函数:(主要也是借助sklearn库)

#导入数据分析常用包 import numpy as np import pandas as pd from sklearn.metrics import confusion_matrix from sklearn.metrics import classification_report from sklearn.metrics import cohen_kappa_score def evaluation(y_test, y_predict): accuracy=classification_report(y_test, y_predict,output_dict=True)['accuracy'] s=classification_report(y_test, y_predict,output_dict=True)['weighted avg'] precision=s['precision'] recall=s['recall'] f1_score=s['f1-score'] #kappa=cohen_kappa_score(y_test, y_predict) return accuracy,precision,recall,f1_score #, kappa

这个函数就两个参数,真实值和预测值,放入就可以计算上面的所有指标了,函数的返回值就是accuracy,precision,recall,f1_score #, kappa。

kappa我注释掉了,要用的话拿出来就行。

画图展示:

比如我们已经准备好了特征变量X和响应变量y。

下面划分测试集和训练集:

#划分训练集和测试集 from sklearn.model_selection import train_test_split X_train,X_test,y_train,y_test=train_test_split(X,y,stratify=y,test_size=0.2,random_state=0)

标准化一下: 

#数据标准化 from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaler.fit(X_train) X_train_s = scaler.transform(X_train) X_test_s = scaler.transform(X_test) print('训练数据形状:') print(X_train_s.shape,y_train.shape) print('验证集数据形状:') print(X_test_s.shape,y_test.shape)

弄十个机器学习模型对比:

from sklearn.linear_model import LogisticRegression from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.neighbors import KNeighborsClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.ensemble import GradientBoostingClassifier from xgboost.sklearn import XGBClassifier from lightgbm import LGBMClassifier from sklearn.svm import SVC from sklearn.neural_network import MLPClassifier

 实例化分类器:

#逻辑回归 model1 = LogisticRegression(C=1e10,max_iter=10000) #线性判别分析 model2 = LinearDiscriminantAnalysis() #K近邻 model3 = KNeighborsClassifier(n_neighbors=10) #决策树 model4 = DecisionTreeClassifier(random_state=77) #随机森林 model5= RandomForestClassifier(n_estimators=1000, max_features='sqrt',random_state=10) #梯度提升 model6 = GradientBoostingClassifier(random_state=123) #极端梯度提升 model7 = XGBClassifier(use_label_encoder=False,eval_metric=['logloss','auc','error'], objective='multi:softmax',random_state=0) #轻量梯度提升 model8 = LGBMClassifier(objective='multiclass',num_class=3,random_state=1) #支持向量机 model9 = SVC(kernel="rbf", random_state=77) #神经网络 model10 = MLPClassifier(hidden_layer_sizes=(16,8), random_state=77, max_iter=10000) model_list=[model1,model2,model3,model4,model5,model6,model7,model8,model9,model10] model_name=['逻辑回归','线性判别','K近邻','决策树','随机森林','梯度提升','极端梯度提升','轻量梯度提升','支持向量机','神经网络']

 计算评价指标:用df_eval数据框装起来计算的评价指标数值

df_eval=pd.DataFrame(columns=['Accuracy','Precision','Recall','F1_score']) for i in range(10): model_C=model_list[i] name=model_name[i] model_C.fit(X_train_s, y_train) pred=model_C.predict(X_test_s) #s=classification_report(y_test, pred) s=evaluation(y_test,pred) df_eval.loc[name,:]=list(s)

 查看

df_eval

 

 

 画对应的柱状图:

import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['KaiTi'] #中文 plt.rcParams['axes.unicode_minus'] = False #负号 bar_width = 0.4 colors=['c', 'b', 'g', 'tomato', 'm', 'y', 'lime', 'k','orange','pink','grey','tan'] fig, ax = plt.subplots(2,2,figsize=(10,8),dpi=128) for i,col in enumerate(df_eval.columns): n=int(str('22')+str(i+1)) plt.subplot(n) df_col=df_eval[col] m =np.arange(len(df_col)) plt.bar(x=m,height=df_col.to_numpy(),width=bar_width,color=colors) #plt.xlabel('Methods',fontsize=12) names=df_col.index plt.xticks(range(len(df_col)),names,fontsize=10) plt.xticks(rotation=40) plt.ylabel(col,fontsize=14) plt.tight_layout() #plt.savefig('柱状图.jpg',dpi=512) plt.show()

 四个评价指标,对应的十种模型进行对比。

这个自定义计算分类评价指标函数还是很方便的,还可以用于交叉验证里面,全面评价模型的预测好坏程度。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有