L2正则化-岭回归-示例(sklearn实现)

39 篇文章 2 订阅
13 篇文章 0 订阅

岭回归-示例(sklearn实现)

1. 导包

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model

2. 原始数据生成与展示

# 第一列为标签值,其他列为特征
data = [[83.0, 234.289, 235.6, 159.0, 107.608, 1947., 60.323],
        [88.5, 259.426, 232.5, 145.6, 108.632, 1948., 61.122],
        [88.2, 258.054, 368.2, 161.6, 109.773, 1949., 60.171],
        [89.5, 284.599, 335.1, 165.0, 110.929, 1950., 61.187],
        [96.2, 328.975, 209.9, 309.9, 112.075, 1951., 63.221],
        [98.1, 346.999, 193.2, 359.4, 113.27, 1952., 63.639],
        [99.0, 365.385, 187., 354.7, 115.094, 1953., 64.989],
        [100.0, 363.112, 357.8, 335.0, 116.219, 1954., 63.761],
        [101.2, 397.469, 290.4, 304.8, 117.388, 1955., 66.019],
        [104.6, 419.18, 282.2, 285.7, 118.734, 1956., 67.857],
        [108.4, 442.769, 293.6, 279.8, 120.445, 1957., 68.169],
        [110.8, 444.546, 468.1, 263.7, 121.95, 1958., 66.513],
        [112.6, 482.704, 381.3, 255.2, 123.366, 1959., 68.655],
        [114.2, 502.601, 393.1, 251.4, 125.368, 1960., 69.564],
        [115.7, 518.173, 480.6, 257.2, 127.852, 1961., 69.331],
        [116.9, 554.894, 400.7, 282.7, 130.081, 1962., 70.551]]
data = np.array(data)
x_data = data[:, 1:]
y_data = data[:, 0]
print(x_data)
print(y_data)

3. 岭回归模型

# 创建模型,开始训练

# 先随便给一个alpha系数
alpha = 0.5

# 岭回归模型
model = linear_model.Ridge(alpha)
model.fit(x_data, y_data)

# 返回模型的估计系数
print(model.coef_)
# 评分
model.score(x_data,y_data)

4. 岭回归+交叉验证的模型

4.1 创建模型,开始训练

# 创建模型,开始训练

# 生成50个alpha系数
alphas = np.linspace(0.001, 1, 50)

# 岭回归+交叉验证的模型
cv_model = linear_model.RidgeCV(alphas, store_cv_values=True)
cv_model.fit(x_data, y_data)

# 最佳的alpha
best_alpha = cv_model.alpha_
print(best_alpha)
# 交叉验证的结果
print(cv_model.cv_values_)
print(cv_model.cv_values_.shape)
# 结果中(16, 50) 指数据被拆分为16份,做了16次训练和验证,每次训练集15份、验证集1份,每次分别使用了50个alpha值做训练

4.2 结果展示

# 画针对所有的alphas值计算出的损失值
plt.plot(alphas, cv_model.cv_values_.mean(axis=0))
# 画最佳点
min_cost = min(cv_model.cv_values_.mean(axis=0))
plt.plot(best_alpha, min_cost, "rx")

plt.xlabel('alpha')
plt.ylabel('cost')
plt.show()

岭回归+交叉验证结果展示图

4.3. 预测

# 进行预测
test_data = x_data[1, np.newaxis]
model.predict(test_data)
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值