《Hands-On Machine Learning with Scikit-Learn & TensorFlow》第三章 分类

《Hands-On Machine Learning with Scikit-Learn & TensorFlow》第三章 分类

(1)为什么一定要打乱数据集?

让我们打乱训练集。这可以保证交叉验证的时所有的折叠都差不多(你不会希望某一个折叠数据集类缺少某类数字)。而且,一些学习算法对训练样例的顺序敏感当它们在一行当中得到许多相似的样例,这些算法将会表现得非常差。打乱数据集将保证这种情况不会发生。

评估一个分类器,通常比评估一个回归器要困难的多。所以我们将会花大量的篇幅在这个话题上。有许多量度性能的方法,所以拿来一杯咖啡和准备学习许多新概念和首字母缩略词吧。

使用交叉验证测量准确性

(2)为什么准确率很高?——因为数据是biased,正类只有10%,负类有90%,所以即使全判错,也有90%的准确率!!!!处理偏斜类数据时,准确率无法成为分类器的首要性能指标!!!

将数据集分成了三个折叠,进行交叉验证。二分类的交叉验证,看似准确率还不错!且使用的StratifiedKFold类实现的交叉验证,这个类是进行的分层采样,生成的折包含了各类的相应比例的样例!

《Hands-On Machine Learning with Scikit-Learn & TensorFlow》第三章 分类

《Hands-On Machine Learning with Scikit-Learn & TensorFlow》第三章 分类

评估classifiers性能一个比较好的方法是查看混淆矩阵。 一般的想法是计算A类实例被分类为B类的次数。例如,要知道分类器将5与3混淆的次数,您将查看混淆矩阵的第5行和第3列

要计算混淆矩阵,首先需要有一组预测,以便他们可以与实际目标进行比较。 您可以对测试集进行预测,但现在让它保持不变(请记住,只有在项目的最后才能使用测试集,一旦有了准备启动的分类器)。 相反,您可以使用cross_val_predict()函数:

《Hands-On Machine Learning with Scikit-Learn & TensorFlow》第三章 分类

样本不均衡时单分类的评价指标

正样本的Recall还可以用,但是precision一定不好用了https://blog.****.net/zhongjunlang/article/details/79568601 

《Hands-On Machine Learning with Scikit-Learn & TensorFlow》第三章 分类  《Hands-On Machine Learning with Scikit-Learn & TensorFlow》第三章 分类

 《Hands-On Machine Learning with Scikit-Learn & TensorFlow》第三章 分类        《Hands-On Machine Learning with Scikit-Learn & TensorFlow》第三章 分类    详见:http://blog.****.net/login_sonata/article/details/54288653