分类模型的评估
Estimator.score()
一般最常见使用的是准确率,即预测结果正确的百分比
混淆矩阵
在分类任务下,预测结果(predicted condition)与正确标记(true condition)之间存在四种不同的组合,构成混淆矩阵(适用于多分类)
因此,评估标准,不仅有准确率,还有精确率和召回率
- 精确率:预测结果为正例样本中真实为正例的比例(查的准)
- 召回率:真实为正例的样本中预测结果为正例的比例(查的全,对正样本的区分能力)
- 其他分类标准,F1-score,反映了模型的稳健型
分类模型评估API
sklearn.metrics.classification_report(y_true, y_pred, target_names=None)
- y_true: 真实目标值
- y_pred: 估计器预测目标值
- target_names: 目标类别名称
- return: 每个类别精确率与召回率
模型选择与调优
- 交叉验证(cross validation):为了让被评估的模型更加准确可信
- 网格搜索:又称超参数搜索。通常情况下,有很多参数是需要手动指定的(如K-近邻算法中的K值),这种叫超参数。但是手动过程繁杂,所以需要对模型预设几种超参数组合。每组超参数都采用交叉验证来进行评估。最后选出最优参数组合建立模型。
超参数搜索-网格搜索API
sklearn.model_selection.GridSearchCV
GridSearchCV
sklearn.model_selection.GridSearchCV(estimator, param_grid=None, cv=None)
对估计器的指定参数值进行详尽搜索
- estimator: 估计器对象
- param_grid: 估计器参数(dict){‘n_neighors’: [1, 3, 5]}
- cv: 指定几折交叉验证
- fit: 输入训练数据
- score: 准确率
结果分析:
- best_score_: 在交叉验证中验证的最好结果
- best_estimator_: 最好的参数模型
- cv_results_: 每次交叉验证后的测试集准确率结果和训练集准确率结果