模型的一些通用方法:
lg = LinearRegression()
lg.fit(X,y)
lg.coef_ lg.intercept_
lg.predict(X_new)
-
get_params([deep]):返回模型的参数。
- deep: 如果为True,则可以返回模型参数的子对象。
-
set_params(**params):设置模型的参数。
- params:待设置的关键字参数。
-
fit(X,y[,sample_weight]):训练模型。
- X :训练集样本集合。通常是一个numpy array,每行代表一个样本,每列代表一个特征。
- y :训练样本的标签集合。它与X 的每一行相对应。
- sample_weight: 每个样本的权重。它与X 的每一行相对应。
-
predict(x): 利用模型执行预测。返回一个预测结果序列。
- X:测试集样本集合。通常是一个numpy array,每行代表一个样本,每列代表一个特征。
-
score(X,y[,sample_weight]):对模型进行评估,返回模型的性能评估结果。
- X:验证集样本集合。通常是一个numpy array,每行代表一个样本,每列代表一个特征。
- y:验证集样本的标签集合。它与X 的每一行相对应。
- sample_weight: 每个样本的权重。它与X 的每一行相对应。
- 对于分类模型,其评估的是accuracy ;对于回归模型,其评估的是R2 。
- 如果希望有其它的评估指标,则可以执行predict() 方法,然后把预测结果、真实标记作为参数来调用一些打分函数即可。
模型的一些通用参数:
-
n_jobs:一个正数,指定任务并形时指定的 CPU数量。如果为 -1 则使用所有可用的 CPU。
-
verbose:一个正数。用于开启/关闭迭代中间输出日志功能。
- 数值越大,则日志越详细。
- 数值为0或者None,表示关闭日志输出。
-
warm_start:一个布尔值。如果为True,那么使用前一次训练结果继续训练。否则从头开始训练。
-
max_iter :一个整数,指定最大迭代次数。
- 如果为None则为默认值(不同solver的默认值不同)。
-
random_state:一个整数或者一个RandomState实例,或者None。
- 如果为整数,则它指定了随机数生成器的种子。
- 如果为RandomState实例,则指定了随机数生成器。
- 如果为None,则使用默认的随机数生成器。
1.1 LinearRegression
-
LinearRegression是线性回归模型,它的原型为:
-
class sklearn.linear_model.LinearRegression(fit_intercept=True,normalize=False,copy_X=True, n_jobs=1)
- fit_intercept:一个布尔值,指定是否需要计算截距项。
- normalize:一个布尔值。如果为True,那么训练样本会在训练之前会被归一化。
- copy_X:一个布尔值。如果为True,则会拷贝X 。
- n_jobs:一个整数,指定计算并行度。
-
模型属性:
- coef_:权重向量。
- intercept_: 值。
-
模型方法:
- fit(X,y[,sample_weight]):训练模型。
- predict(X):用模型进行预测,返回预测值。
- score(X,y[,sample_weight]):返回模型的预测性能得分。
1.2 Ridge
Ridge类实现了岭回归模型。其原型为:
-
class sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True, normalize=False,copy_X=True, max_iter=None, tol=0.001, solver=‘auto’, random_state=None)
-
alpha: 用于缓解过拟合。
-
max_iter: 指定最大迭代次数。
-
tol:一个浮点数,指定判断迭代收敛与否的阈值。
-
solver:一个字符串,指定求解最优化问题的算法。可以为:
-
‘auto’:根据数据集自动选择算法。
-
‘svd’:使用奇异值分解来计算回归系数。
-
‘cholesky’:使用scipy.linalg.solve函数来求解。
-
‘sparse_cg’:使用scipy.sparse.linalg.cg函数来求解。
-
‘lsqr’:使用scipy.sparse.linalg.lsqr函数求解。它运算速度最快,但是可能老版本的scipy不支持。
-
‘sag’:使用Stochastic Average Gradient descent算法求解最优化问题。
-
-
-
random_state:用于设定随机数生成器,它在solver=sag时使用。
其它参数参考LinearRegression 。
模型属性:
- coef_:权重向量。
- intercept_: 值。
- n_iter_:实际迭代次数。
当 超过 1 之后,随着 的增长,预测性能急剧下降。
这是因为 较大时,正则化项影响较大,模型趋向于简单。
极端情况下当 无穷大 时, 从而使得正则化项等于0,此时的模型最简单。
但是预测预测性能非常差,因为对所有的未知样本,模型都预测为同一个常数 。
RidgeCV
-
RidgeCV类的损失函数和损失函数的优化方法完全与Ridge类相同,区别在于验证方法。
-
验证方法:
- RidgeCV类对超参数α使用了交叉验证,来帮忙我们选择一个合适的α。在初始化RidgeCV类时候,我们可以传一组备选的α值,10个,100个都可以。RidgeCV类会帮我们选择一个合适的α。免去了我们自己去一轮轮筛选α的苦恼。
-
使用场景:
- 一般来说,只要我们觉得数据有线性关系,用LinearRegression类拟合的不是特别好,需要正则化,可以考虑用RidgeCV类。不是为了学习的话就不用Ridge类。为什么这里只是考虑用RidgeCV类呢?因为线性回归正则化有很多的变种,Ridge只是其中的一种。所以可能需要比选。如果输入特征的维度很高,而且是稀疏线性关系的话,RidgeCV类就不合适了
Lasso
Lasso回归的损失函数优化方法常用的有两种,坐标轴下降法和最小角回归法。Lasso类采用的是坐标轴下降法
Lasso类实现了Lasso回归模型。其原型为:
-
lass sklearn.linear_model.Lasso(alpha=1.0, fit_intercept=True, normalize=False,precompute=False, copy_X=True, max_iter=1000, tol=0.0001, warm_start=False, positive=False, random_state=None, selection=‘cyclic’)
alpha: 用于缓解过拟合。 -
precompute:一个布尔值或者一个序列。是否提前计算Gram矩阵来加速计算。
-
warm_start:是否从头开始训练。
-
positive:一个布尔值。如果为True,那么强制要求权重向量的分量都为正数。
-
selection:一个字符串,可以为’cyclic’或者’random’。它指定了当每轮迭代的时候,选择权重向量的哪个分量来更新。
- ‘random’:更新的时候,随机选择权重向量的一个分量来更新
- ‘cyclic’:更新的时候,从前向后依次选择权重向量的一个分量来更新
其它参数参考Ridge
模型属性:参考Ridge
模型方法: 参考LinearRegression
LassoCV
-
LassoCV类的损失函数和损失函数的优化方法完全与Lasso类相同,区别在于验证方法。
-
验证方法:
- LassoCV类对超参数α使用了交叉验证,来帮忙我们选择一个合适的α。在初始化LassoCV类时候,我们可以传一组备选的α值,10个,100个都可以。LassoCV类会帮我们选择一个合适的α。免去了我们自己去一轮轮筛选α的苦恼。
-
使用场景:
- LassoCV类是进行Lasso回归的首选。当我们面临在一堆高位特征中找出主要特征时,LassoCV类更是必选。当面对稀疏线性关系时,LassoCV也很好用。