分类模型的评估以及超参数优化

对于分类模型的评估,除了使用estimator.score()来获取正确分类的百分比,还可以从其他的角度来进行分析,比如:混淆矩阵、精准率、召回率、F1-score等。除此之外,我们调节超参数可以使用网格搜索

参考:
黑马传智播客机器学习入门视频

本文代码片段基于上篇文章–knn实现鸢尾花分类


目录
1、分类模型的评估
2、交叉验证以及网格搜索


1、分类模型的评估

01 混淆矩阵

在这里插入图片描述

from sklearn.metrics import confusion_matrix
c = confusion_matrix(y_test, y_pred, labels=[0, 1, 2])
print(c)

运行结果:
[[11  0  0]
 [ 0 12  1]
 [ 0  0  6]]
02 精准率(Precision)与召回率(Recall)

在这里插入图片描述

03 F1-Score

在这里插入图片描述

from sklearn.metrics import classification_report
print("每个类别的精准率与召回率")
print(classification_report(y_test, y_pred, target_names=iris.target_names))

运行结果:
             precision    recall  f1-score   support

     setosa       1.00      1.00      1.00        11
 versicolor       1.00      0.92      0.96        13
  virginica       0.86      1.00      0.92         6

avg / total       0.97      0.97      0.97        30

注:可以把混淆矩阵的结果和精准率、召回率结合着分析。


2、交叉验证以及网格搜索

01 交叉验证

在这里插入图片描述

02 网格搜索(超参数搜索)

在这里插入图片描述

from sklearn.model_selection import GridSearchCV

# 交叉验证以及网格搜索
param = {'n_neighbors': [3, 7, 10]}
cv = GridSearchCV(knn, param_grid=param, cv=2)

cv.fit(x_train, y_train)

print("在测试集上的准确率")
print(cv.score(x_test, y_test))

print("最好的模型")
print(cv.best_estimator_)

print("最好的参数")
print(cv.best_params_)

print("最好的准确率")
print(cv.best_score_)

print("每次交叉验证的结果")
print(cv.cv_results_)

猜你喜欢

转载自blog.csdn.net/weixin_43606419/article/details/86597554