浙江省城乡和住房建设厅网站,广东省住房和城乡建设厅证件查询,黑龙江住房和城乡建设厅网站,大都会app官网下载机器学习的分类问题常用评论指标有#xff1a;准确率、精确度、召回率和F1值#xff0c;还有kappa指标 。
每次调包去找他们的计算代码很麻烦#xff0c;所以这里一次性定义一个函数#xff0c;直接计算所有的评价指标。
每次输入预测值和真实值就可以得到上面的指标值准确率、精确度、召回率和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_scoredef evaluation(y_test, y_predict):accuracyclassification_report(y_test, y_predict,output_dictTrue)[accuracy]sclassification_report(y_test, y_predict,output_dictTrue)[weighted avg]precisions[precision]recalls[recall]f1_scores[f1-score]#kappacohen_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_testtrain_test_split(X,y,stratifyy,test_size0.2,random_state0)
标准化一下
#数据标准化
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(C1e10,max_iter10000)#线性判别分析
model2 LinearDiscriminantAnalysis()#K近邻
model3 KNeighborsClassifier(n_neighbors10)#决策树
model4 DecisionTreeClassifier(random_state77)#随机森林
model5 RandomForestClassifier(n_estimators1000, max_featuressqrt,random_state10)#梯度提升
model6 GradientBoostingClassifier(random_state123)#极端梯度提升
model7 XGBClassifier(use_label_encoderFalse,eval_metric[logloss,auc,error],objectivemulti:softmax,random_state0)
#轻量梯度提升
model8 LGBMClassifier(objectivemulticlass,num_class3,random_state1)#支持向量机
model9 SVC(kernelrbf, random_state77)#神经网络
model10 MLPClassifier(hidden_layer_sizes(16,8), random_state77, max_iter10000)model_list[model1,model2,model3,model4,model5,model6,model7,model8,model9,model10]
model_name[逻辑回归,线性判别,K近邻,决策树,随机森林,梯度提升,极端梯度提升,轻量梯度提升,支持向量机,神经网络] 计算评价指标用df_eval数据框装起来计算的评价指标数值
df_evalpd.DataFrame(columns[Accuracy,Precision,Recall,F1_score])
for i in range(10):model_Cmodel_list[i]namemodel_name[i]model_C.fit(X_train_s, y_train)predmodel_C.predict(X_test_s)#sclassification_report(y_test, pred)sevaluation(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),dpi128)
for i,col in enumerate(df_eval.columns):nint(str(22)str(i1))plt.subplot(n)df_coldf_eval[col]m np.arange(len(df_col))plt.bar(xm,heightdf_col.to_numpy(),widthbar_width,colorcolors)#plt.xlabel(Methods,fontsize12)namesdf_col.indexplt.xticks(range(len(df_col)),names,fontsize10)plt.xticks(rotation40)plt.ylabel(col,fontsize14)plt.tight_layout()
#plt.savefig(柱状图.jpg,dpi512)
plt.show() 四个评价指标对应的十种模型进行对比。
这个自定义计算分类评价指标函数还是很方便的还可以用于交叉验证里面全面评价模型的预测好坏程度。