NO.1 机器学习干货与代码参数详解

模型的一些通用方法:

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_:实际迭代次数。

a l p h a alpha 超过 1 之后,随着 a l p h a alpha 的增长,预测性能急剧下降。

这是因为 a l p h a alpha 较大时,正则化项影响较大,模型趋向于简单。

极端情况下当 a l p h a alpha 无穷大 时, 从而使得正则化项等于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也很好用。
发布了93 篇原创文章 · 获赞 17 · 访问量 8172

猜你喜欢

转载自blog.csdn.net/Captain_DUDU/article/details/104788448