美文网首页
算法笔记(6)-线性模型及Python代码实现

算法笔记(6)-线性模型及Python代码实现

作者: 编程研究坊 | 来源:发表于2022-05-13 16:30 被阅读0次

    线性模型不是特指某一个模型,而是一类模型,常用的线性模型包括线性回归、岭回归、套索回归、逻辑回归和线性SVC等。
    线性回归和岭回归对比图如下:


    线性回归和岭回归对比图

    套索回归和岭回归对比图如下:


    套索回归和岭回归对比图

    最小二乘法

    最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差(真实目标对象与拟合目标对象的差)的平方和寻找数据的最佳函数匹配。

    最基本的模型----线性回归

    线性回归也称为普通最小二乘法(OLS),线性回归的原理是找到训练数据集中y的预测值和其真实值的平方差最小的时候,所对应的w值和b值。线性回归没有可供用户调节的参数。
    python代码实现

    from sklearn.model_selection import train_test_split
    from sklearn.linear_model import LinearRegression
    X, y = make_regression(n_samples=100,n_features=2,n_informative=2,random_state=38)
    X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
    lr = LinearRegression().fit(X_train, y_train)
    print("lr.coef_: {}".format(lr.coef_[:]))
    print("lr.intercept_: {}".format(lr.intercept_))
    

    输出结果:
    lr.coef_: [70.38592453 7.43213621]
    lr.intercept_: -1.4210854715202004e-14
    线性回归模型方程可以表示为:y=70.38592453X1+ 7.43213621X2-1.4210854715202004e-14

    使用L2正则化的线性模型-岭回归

    是一种改良的最小二乘法,模型会保留所有的特征变量,但是会减少特征变量的系数值,让特征变量对预测结果的影响变小。如果我们更在意模型在泛化方面的表现,那么我们就应该选择岭回归模型,而不是线性回归模型。
    python代码实现

    #%%
    
    from sklearn.datasets import load_diabetes
    #X, y = make_regression(n_samples=500,n_features=50,n_informative=25,noise=500,
                          #random_state=8)
    X, y = load_diabetes().data, load_diabetes().target
    X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 8)
    ridge01 = Ridge(alpha=0.1).fit(X_train, y_train)
    print("训练数据得分:{:.2f}".format(ridge01.score(X_train, y_train)))
    print("测试数据的分:{:.2f}".format(ridge01.score(X_test, y_test)))
    
    #%%
    

    输出结果:
    训练数据得分:0.52
    测试数据得分:0.47

    使用L1正则化的线性模型-套索回归

    套索回归有一部分特征的系数会正好等于0
    python代码实现

    #%%
    lasso00001 = Lasso(alpha=0.0001, max_iter=100000).fit(X_train, y_train)
    print("alpha=0.0001时套索回归在训练数据集的得分:{:.2f}".format(lasso00001.score(X_train, y_train)))
    print("alpha=0.0001时套索回归在测试数据集的得分:{:.2f}".format(lasso00001.score(X_test, y_test)))
    print("alpha=0.0001时套索回归使用的特征数:{}".format(np.sum(lasso00001.coef_ != 0)))
    #%%
    

    输出结果:
    alpha=0.0001时套索回归在训练数据集的得分:0.53
    alpha=0.0001时套索回归在测试数据集的得分:0.46
    alpha=0.0001时套索回归使用的特征数:10

    由于不让放链接,想要完整代码的朋友,请关注私信我回复“算法笔记6”免费获取

    相关文章

      网友评论

          本文标题:算法笔记(6)-线性模型及Python代码实现

          本文链接:https://www.haomeiwen.com/subject/lciyurtx.html