sklearn之岭回归

岭回归(Ridge Regression)
如果数据的特征比样本点还多,数据特征n,样本个数m,如果n>m,则计算(XTX)的逆矩阵时会出错,因为(XTX)不是满秩矩阵,所以不可逆。(注:XT表示X的转置矩阵)

岭回归是有偏估计
岭回归代价函数这里就不贴了

选取λ值使得:
1.各回归系数的岭估计基本稳定;
2.残差平方和增大不多。

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

# 导入数据
data = np.genfromtxt("C:\\ML\\chapter-1\\longley.csv",delimiter=",") # 这种方法只能读取数字,不能读取字符,字符会变成nan
print(data)

# 切分数据
x_data = data[1:,2:]
y_data = data[1:,1]
print(x_data)
print(y_data)

# 创建模型
# 生成50个值
alphas_to_test = np.linspace(0.001,1) # 默认是50,均匀变大
# 创建模型,保存误差值
model = linear_model.RidgeCV(alphas=alphas_to_test,store_cv_values=True)
model.fit(x_data,y_data)

# 岭系数
print(model.alpha_)
# loss值
print(model.cv_values_.shape)

# 画图
# 岭系数跟loss值的关系
plt.plot(alphas_to_test,model.cv_values_.mean(axis=0)) # axis=0代表方向
# 获取的岭系数值的位置
plt.plot(model.alpha_,min(model.cv_values_.mean(axis=0)),'ro')
plt.show()

print(model.predict(x_data[2,np.newaxis])) # x_data的带三行数据,是一维的,np.newaxis将其变为二维的,得到预测结果

scikit-learn中的岭回归(Ridge Regression)通过对系数进行惩罚来解决线性回归中的过拟合问题。岭回归的核心思想是在目标函数中增加一个由系数的平方和与一个正则化参数α(一般需要手动设置)的乘积,使得在拟合训练数据的同时能够限制模型的复杂度。 下面是使用scikit-learn中的岭回归的基本步骤: 1.导入需要的库 ```python from sklearn.linear_model import Ridge from sklearn.model_selection import train_test_split ``` 2.准备数据 首先需要准备训练数据,包括特征矩阵X和目标变量y。这里假设数据已经被处理成这样的形式,并且已经被分成了训练集和测试集: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0) ``` 3.创建模型 创建岭回归模型并设置正则化参数α: ```python ridge = Ridge(alpha=1.0) ``` 4.训练模型 使用训练数据来拟合模型: ```python ridge.fit(X_train, y_train) ``` 5.评估模型 使用测试数据来评估模型的性能: ```python score = ridge.score(X_test, y_test) ``` 完整的代码如下所示: ```python from sklearn.linear_model import Ridge from sklearn.model_selection import train_test_split # 准备数据 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0) # 创建模型 ridge = Ridge(alpha=1.0) # 训练模型 ridge.fit(X_train, y_train) # 评估模型 score = ridge.score(X_test, y_test) ``` 需要注意的是,α的取值可以通过交叉验证等方法进行调整,以得到最好的模型性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiao黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值