《Python 数据科学手册》笔记
一、Scikit-Learn的数据表示
1.Scikit-Learn基本的数据表示二维网格数据,每一行表示数据集中的每个样本,每一列表示相关特征 (量化观测值)。例如鸢尾花数据集:
2.通常将上述除开最后一列的表格称为特征矩阵,记为变量X,它是维度为[n_samples,n_features](即 [样本数,特征数])的二维矩阵。而最后一列将其称之为标签数组,记为y,它是维度为长度为n_samples的一维数组。
二、Scikit-Learn的评估器API
1.Scikit-Learn API设计原则:
①统一性:所有对象使用共同接口连接一组方法和统一的文档
②内省:所有参数值都是公共属性
③限制对象层级:只有算法可以用Python类表示。数据集都是用标准数据类型表示,参数名称用标准的Python字符串
④函数组合:许多机器学习任务都可以用一串基本算法实现
⑤明智的默认值:Scikit-Learn预先定义适当的默认值
2.Scikit-Learn 评估器API的常用步骤:
①通过Scikit-Learn中导入适当的评估器类,选择模型类
②用合适的数值对模型进行实例化,配置模型超参数
③整理数据,获取特征矩阵和目标矩阵
④调用模型实例的fit()方法对数据进行拟合
⑤对新数据应用模型
用鸢尾花数据及高斯朴素贝叶斯模型为例:
简单来说,就是:分割数据集、导入模型、训练数据、预测数据、求准确率这5个步骤。
仿照以上步骤,便可以用各种数据集组合各种模型进行模型训练与预测了。例如,
· 用简单线性模型为散点数据集拟合一条直线;
· 用主成分分析(PCA)法对鸢尾花数据进行降维;
· 用高斯混合模型(GMM)对鸢尾花数据进行聚类;
· 用流行算法中的Isomap算法对手写数字数据进行降维;
· 用高斯朴素贝叶斯对手写数字进行分类;
...
3.混淆矩阵
在上述鸢尾花的例子中,我们用准确率(accuracy_score)来衡量了模型的优劣,但是仅依靠这个指标无法知道模型哪里做得不好,因此要引入一个混淆矩阵将预测的正误可视化。
接着上述鸢尾花的例子,添加如下代码,得到一个混淆矩阵:
鸢尾花一共3类,对角线上的数字为预测正确的数据,非对角线上的数据为预测错误的数据,可以看出,该模型的将某个类别为‘1’的鸢尾花错判成了类别为‘2’的鸢尾花。