【发布时间】:2021-11-15 00:48:02
【问题描述】:
我在以下上下文中使用 StandardScalar() 和 lin_reg.coef_ 函数:
for i in range(100):
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=i)
scaler = StandardScaler().fit(x_train)
x_train = scaler.transform(x_train)
x_test = scaler.transform(x_test)
lin_reg = LinearRegression().fit(x_train, y_train)
if i == 0:
print(lin_reg.coef_)
if i == 1:
print(lin_reg.coef_)
这导致以下输出:
代码输出
因此,正如预期的那样,coef_ 函数返回我传递给线性回归的 22 个不同特征的系数。但是,对于第二个输出,一些系数太大(例如 1.61e+14)。我很确定使用 StandardScaler() 进行缩放可以正常工作。但是,如果我在应用 coef_ 函数之前不缩放训练数据,我不会得到这些高系数。我应该提到的一件重要的事情是最后 13 个特征是二元特征,而前 9 个特征是连续的(例如年龄)。我可以想象这个问题在某种程度上与这个事实有关,尽管对于第一个二进制特征,系数是正确计算的(只是最后 12 个二进制特征的系数太大)。
【问题讨论】:
标签: python scikit-learn linear-regression