Sklearn机器学习—超参数与模型验证

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 # 导入网格搜索

选择最优模型

改善模型能力的高低,是区分机器学习实践者成功与否的标志。

最优模型问题 基本可以看成是找出偏差与方差的平衡点的问题

模型对数据欠拟合,也就是说,模型没有足够的灵活性来适应数据的所有特征。另一种说法就是模型具有高偏差。

模型对数据过拟合,也就是模型过于灵活,在适应数据所有特征的同时,也适应了随机误差。另一种说法就是模型

具有高方差。

判定系数R用来衡量模型与目标值均值的对比结果。

R2=1表示模型与数据完全吻合

R2=0表示模型不比简单取均值好

R2为负表示模型性能很差

• 对于高偏差模型,模型在验证集的表现与在训练集的表现类似。

• 对于高方差模型,模型在验证集的表现远远不如在训练集的表现。

            image.png

学习曲线


反映训练集规模的训练得分 / 验证得分曲线被称为学习曲线(learning curve)。学习曲线的特征包括以下三点。

• 特定复杂度的模型对较小的数据集容易过拟合:此时训练得分较高,验证得分较低。

• 特定复杂度的模型对较大的数据集容易欠拟合:随着数据的增大,训练得分会不断降低,而验证得分会不断升高。

• 模型的验证集得分永远不会高于训练集得分:两条曲线一直在靠近,但永远不会交叉。

image.png

学习曲线最重要的特征是,随着训练样本数量的增加,分数会收敛到定值。因此,一旦你的数据多到使模型得分已经收敛,那么增加更多的训练样本也无济于事。

网格搜索

存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数。但是这个方法适合于小数据集,一旦数据的量级上去了,很难得出结果。

猜你喜欢

转载自www.cnblogs.com/zhonghouyue/p/12402717.html
今日推荐