Scikit-Learn评估器API常用步骤
(1)通过从 Scikit-Learn 中导入适当的评估器类,选择模型类。
(2)用合适的数值对模型类进行实例化,配置模型超参数(hyperparameter)。
(3)整理数据,获取特征矩阵和目标数组。
(4)调用模型实例的 fit() 方法对数据进行拟合
(5)对新数据应用模型:
• 在有监督学习模型中,通常使用 predict() 方法预测新数据的标签;
• 在无监督学习模型中,通常使用 transform() 或 predict() 方法转换或推断数据的性质。
模型类与模型实例不同。有一些重要参数必须在选择模型类时确定好,这些参数通常被称为超参数,即在模型拟合数据之前必须被确定的参数。
对模型进行实例化其实仅仅是存储了超参数的值。我们还没有将模型应用到数据上:Scikit-Learn 的 API 对选择模型和将模型应用到数据区别得很清晰。
Scikit-Learn常用导入
1 from sklearn.datasets import load_digits # 导入手写数字数据集 2 from sklearn.datasets import load_iris # 导入鸢尾花数据集 3 from sklearn.model_selection import train_test_split # 分割数据集 4 from sklearn.model_selection import cross_val_score # 实现交叉验证 5 from sklearn.model_selection import LeaveOneOut # 每次只有一个样本做测试,其他都用于训练 6 from sklearn.linear_model import LinearRegression # 导入简单线性回归模型 7 from sklearn.decomposition import PCA # 导入PCA降维模型 8 from sklearn.model_selection import validation_curve # 可视化验证曲线 9 from sklearn.model_selection import learning_curve # 导入学习曲线 10 from sklearn.metrics import accuracy_score # 验证模型预测结果准确性 11 from sklearn.model_selection import GridSearchCV # 导入网格搜索
选择最优模型
改善模型能力的高低,是区分机器学习实践者成功与否的标志。
最优模型问题 基本可以看成是找出偏差与方差的平衡点的问题
模型对数据欠拟合,也就是说,模型没有足够的灵活性来适应数据的所有特征。另一种说法就是模型具有高偏差。
模型对数据过拟合,也就是模型过于灵活,在适应数据所有特征的同时,也适应了随机误差。另一种说法就是模型
具有高方差。
判定系数R2 用来衡量模型与目标值均值的对比结果。
R2=1表示模型与数据完全吻合
R2=0表示模型不比简单取均值好
R2为负表示模型性能很差
• 对于高偏差模型,模型在验证集的表现与在训练集的表现类似。
• 对于高方差模型,模型在验证集的表现远远不如在训练集的表现。
学习曲线
反映训练集规模的训练得分 / 验证得分曲线被称为学习曲线(learning curve)。学习曲线的特征包括以下三点。
• 特定复杂度的模型对较小的数据集容易过拟合:此时训练得分较高,验证得分较低。
• 特定复杂度的模型对较大的数据集容易欠拟合:随着数据的增大,训练得分会不断降低,而验证得分会不断升高。
• 模型的验证集得分永远不会高于训练集得分:两条曲线一直在靠近,但永远不会交叉。
学习曲线最重要的特征是,随着训练样本数量的增加,分数会收敛到定值。因此,一旦你的数据多到使模型得分已经收敛,那么增加更多的训练样本也无济于事。
网格搜索
存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数。但是这个方法适合于小数据集,一旦数据的量级上去了,很难得出结果。