线性回归预测销量-lasso/ridge模型

1148-张同学

发表文章数:63

首页 » 算法 » 正文

ElasticNet:L1正则化与L2正则化的组合。
https://blog.csdn.net/weixin_42567027/article/details/107450610

模型介绍

lasso 为L1正则化,惩罚系数的绝对值,惩罚后每个系数都收缩,有变量选择功能。
ridge 为L2正则化 ,惩罚系数的平方,惩罚后,部分系数直接变成0, 其他系数收缩。

数据集

线性回归预测销量-lasso/ridge模型
代码

// An highlighted block
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
#数据分割为训练数据和测试数据
from sklearn.model_selection import train_test_split
#使用lasso,ridge模型
from sklearn.linear_model import Lasso, Ridge
#交叉验证
from sklearn.model_selection import GridSearchCV


if __name__ == "__main__":

    '''加载数据'''
    # 数据读入
    data = pd.read_csv('F:/pythonlianxi/Advertising.csv')    # TV、Radio、Newspaper、Sales
    #print(data)
    #训练数据
    x = data[['TV', 'Radio', 'Newspaper']]
    # x = data[['TV', 'Radio']]
    #标签集
    y = data['Sales']
    # print(x)
    # print (y)

    '''训练模型'''
    #将数据分割为实验数据,测试数据
    #train_size(0.75)  或者  train_size(100)
    x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=1)
    #建立lasso模型
    model = Lasso()
    #model = Ridge()
    # 模型参数alpha:创建等比数列
    alpha_can = np.logspace(-3, 2, 10)
    #默认小数会以科学计数法的形式输出
    np.set_printoptions(suppress=True)
    #print ('alpha_can = ', alpha_can)  cv=5 :五折交叉验证
    #训练模型
    lasso_model = GridSearchCV(model, param_grid={'alpha': alpha_can}, cv=5)

    print(u'开始建模...')
    #拟合模型,调参
    lasso_model.fit(x_train, y_train)
    print( '超参数:/n', lasso_model.best_params_)
    #测试数据做递增排序
    order = y_test.argsort(axis=0)
    y_test = y_test.values[order]
    x_test = x_test.values[order, :]
    #使用测试数据测试模型
    y_hat = lasso_model.predict(x_test)

    '''计算R2,MSE'''
    #r2
    r2=(lasso_model.score(x_test, y_test))
    mse = np.average((y_hat - np.array(y_test)) ** 2)  # Mean Squared Error
    rmse = np.sqrt(mse)  # Root Mean Squared Error
    print('R2:', r2)
    print(mse,rmse)
    # t:样本标号
    t = np.arange(len(x_test))

    '''绘图'''
    mpl.rcParams['font.sans-serif'] = [u'simHei']
    mpl.rcParams['axes.unicode_minus'] = False
    plt.figure(facecolor='w')
    plt.plot(t, y_test, 'r-', linewidth=2, label=u'真实数据')
    plt.plot(t, y_hat, 'g-', linewidth=2, label=u'预测数据')
    plt.title(u'线性回归预测销量', fontsize=18)
    plt.legend(loc='upper right')
    plt.grid()
    plt.show()

实验结果

线性回归预测销量-lasso/ridge模型
线性回归预测销量-lasso/ridge模型

未经允许不得转载:作者:1148-张同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《线性回归预测销量-lasso/ridge模型》 发布于2020-07-21

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录