Python scikit学习岭回归UnboundLocalError
我只是一个初学者,我正在尝试在scikit learn中实现多项式回归。通常没有正则化的回归效果很好Python scikit学习岭回归UnboundLocalError,python,scikit-learn,linear-regression,Python,Scikit Learn,Linear Regression,我只是一个初学者,我正在尝试在scikit learn中实现多项式回归。通常没有正则化的回归效果很好 regr = linear_model.LinearRegression(copy_X=True) X = np.array(time_list[0:24]).reshape(24,1) for i in range(2,10): X=np.append(X, X**i, 1) Y = np.array(tempm_list[0:24]).reshape(24,1) regr.fit(X
regr = linear_model.LinearRegression(copy_X=True)
X = np.array(time_list[0:24]).reshape(24,1)
for i in range(2,10):
X=np.append(X, X**i, 1)
Y = np.array(tempm_list[0:24]).reshape(24,1)
regr.fit(X, Y)
但是,当我尝试以完全相同的方式实现岭回归时,我得到以下错误:
regularized_regr=linear_model.Ridge(alpha =1, copy_X=True)
regularized_regr.fit(X,Y)
File "/usr/local/lib/python2.7/site-packages/sklearn/linear_model/ridge.py", line 449, in fit
return super(Ridge, self).fit(X, y, sample_weight=sample_weight)
File "/usr/local/lib/python2.7/site-packages/sklearn/linear_model/ridge.py", line 338, in fit
solver=self.solver)
File "/usr/local/lib/python2.7/site-packages/sklearn/linear_model/ridge.py", line 294, in ridge_regression
coef = safe_sparse_dot(X.T, dual_coef, dense_output=True).T
UnboundLocalError: local variable 'dual_coef' referenced before assignment
谢谢第一个建议:减少多项式次数,例如,表明这是scikit中的一个错误。不确定修复程序是否在发布版本中。您可以尝试更新您的scikit安装。正如@BrenBarn所说,这可能是scikit learn最新版本中修复的一个bug。同时,您能试试更高的
alpha
?我将在下面为您计算一个建议。谢谢大家-我确实在早些时候尝试升级到最新的尖端github版本,但在安装过程中出现了一些错误:clang:error:unknown参数:'-mno fused madd'[-Wunused-command line argument hard error in future],但无论如何,尽管我故意进行了可笑的过度拟合,但将多项式次数减少到5次可以修复错误。谢谢顺便说一句,最前沿的版本也有用于多项式回归的sklearn.preprocessing.PolynomialFeatures
。
import numpy as np
_, S, _ = np.linalg.svd(X, full_matrices=False)
s = S[0]
alpha = 1.2 * s # you may vary this fraction between 0.1 and larger
regularized_regr=linear_model.Ridge(alpha=alpha)
regularized_regr.fit(X,Y)