分类模型的评估
精确率(Precision)召回率(Recall)
estimator.score()
- 一般最常见使用的时精确率,即预测结果正确的百分比
混淆矩阵
在分类任务下,预测结果与正确标记之间存在四种不同的组合,构成混淆矩阵(适用于多分类)
猫:混淆矩阵
狗:混淆矩阵
评估标准:准确率:精确率和召回率。
精确率:
预测结果为正例样本中真实为正例的比例(查的准)
召回率:
真实为正例的样本中预测结果为正例的比例(查的对,对正样本的区分能力)
其他的分类标准,F1-score,反映了模型的稳健性
分类模型评估API
sklearn.metrics.classfication_report
sklearn.metrics.classfication_report(t_true,y_target,target_names=None)
- y_true: 真实目标值
- y_pred: 估计器预测目标值
- target_names: 目标类别名称
- return: 买个类别精确率与召回率
交叉验证和网格搜索对k-近邻算法调优
交叉验证:为了让被评估的模型更加准确可信。
交叉验证:所有数据分成n等分,将拿到的训练数据,分成训练和验证集。
(4折交叉验证)
把这四个准确率求平均值模型结果。
网格搜索(超参数搜索):调参数 K-近邻
通常情况下,有很多参数是需要手动指定的(如K-近邻算法中的K值),这种叫超参数。但是手动过程繁杂,所以需要对模型预设几种超参数组合。每组超参数都采用交叉验证来进行评估。最后选出最优参数组合建立模型。
要是有两组数据,就两两组合。
超参数搜索-网格搜索API
sklearn.model_selection.GridSearchCV
源代码:
from sklearn.model_selection import GridSearchCV
def knncls():
#进行算法流程 超参数
knn= KNeightborsClassifier(n_neighbors=)
#构造一些参数的值进行搜索
param={"n_neighbors":[3,5,10]}
#进行网格搜索
gc=GridSearchCV(knn,param_grid=param,cy=2)
gc.fit(x_train,y_train)
#预测准确率
print("在测试及上准确率:",gc.score(x_test,y_test))
print("在交叉验证当中最好的结果:",gc.best_score_)
print("选择最好的模型是:",gc.best_estimator_)
print("每个超参数每次交叉验证的结果:",gc.cv_results_)
return None
if __name__=="__main":
knncls()
结果: