如何解决用套索回归求阴r python
我进行套索回归,但得到负R平方。这是我的编码:
X = df.drop('var',axis=1)
y = df['var']
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=10)
reg = Lasso(alpha=0.5)
reg.fit(X_train,y_train)
lambdas = (0.001,0.01,0.1,0.5,1,2,10)
l_num = 7
pred_num = X.shape[1]
# prepare data for enumerate
coeff_a = np.zeros((l_num,pred_num))
train_r_squared = np.zeros(l_num)
test_r_squared = np.zeros(l_num)
# enumerate through lambdas with index and i
for ind,i in enumerate(lambdas):
reg = Lasso(alpha = i)
reg.fit(X_train,y_train)
coeff_a[ind,:] = reg.coef_
train_r_squared[ind] = reg.score(X_train,y_train)
test_r_squared[ind] = reg.score(X_test,y_test)
打印 test_r_squared[ind]
时得到-0.8086。
为什么?任何帮助,将不胜感激。谢谢。
解决方法
获得小于0的R ^ 2值并非不可能。
R ^ 2是用于度量回归器性能的度量。 R ^ 2度量的最佳分数为1
。如果有任何回归变量预测常数,则该回归变量的R ^ 2得分应为0
。但是出乎意料的是,您可以获得比这更差的性能。那是因为:
R ^ 2由下式给出:
R^2 = 1-FVU
其中,FVU(无法解释的方差)是残差平方和与数据方差的比率。因此,当您的残差平方和大于数据的方差时,您应该期望FVU> 1,因此R ^ 2值小于0 。选择错误的模型或不合理的参数时,可能会发生这种情况。
简而言之,您获得的R ^ 2得分小于0 。这意味着您选择了错误的模型或参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。