python - 为什么当 alpha 值中的分母幂提高到 13 或更高时,Ridge 模型拟合会显示警告?
问题描述
我试图创建一个循环来找出装有 Ridge 回归模型的波士顿住房数据集的训练集和测试集的准确度分数的变化。
这是 for 循环:
for i in range(1,20):
Ridge(alpha = 1/(10**i)).fit(X_train,y_train)
它显示从 i=13 开始的警告。
警告是:
LinAlgWarning: Ill-conditioned matrix (rcond=6.45912e-17): result may not be accurate.
overwrite_a=True).T
这个警告的含义是什么?有可能摆脱它吗?
我检查了没有循环单独执行它,仍然没有帮助。
#importing libraries and packages
import mglearn
from sklearn.model_selection import train_test_split
from sklearn.linear_model import Ridge
#importing boston housing dataset from mglearn
X,y = mglearn.datasets.load_extended_boston()
#Splitting the dataset
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=0)
#Fitting the training data using Ridge model with alpha = 1/(10**13)
rd = Ridge(alpha = 1/(10**13)).fit(X_train,y_train)
对于 i 的任何值,不应显示上述警告。
解决方案
尝试使用标准化拟合您的 Ridge 模型Ridge(normalize=True)
:我遇到了和你一样的错误,这是因为我的特征包括非常大和非常小的值,这导致用于拟合模型的底层线性代数求解器出现问题。
推荐阅读
- webpack - DefinePlugin 在 html-loader 之后没有立即运行
- kubernetes - 多个 Kubernetes 集群中的同一节点
- spring - Jhispter 存储库自定义 @Query
- facebook - 连接 facebook 以获取用户个人资料链接 (2020)
- python - 如何通过 Python 获取 DV360 (DoubleClick Bid Manager API) 报表数据?
- akka - 通过 http 端点关闭 akka 集群中无法访问的节点
- oracle - cast (sysdate as date) 没有给出精确的整数值
- android - POJO 中的双向关系(父 <=> 子)
- java - 为没有具体值的事件提供 Flux 信号?
- mysql - 每次我创建不同的增量