对于我的回归问题,我使用scikit-learn的GridSearchCV获取最佳alpha值并在我的估算器中使用此alpha值(Lasso,Ridge,ElasticNet)。 我在训练数据集中的目标值不包含任何负值。但是一些预测值是负值(约5-10%)。 我使用以下代码。 我的训练数据包含一些Null值,我将通过该功能替换它们。
return Lasso(alpha=best_parameters['alpha']).fit(X,y).predict(X_test)
我知道为什么我会得到一些负值? X,y和X_test的形状为(20L,400L)(20L,)(10L,400L)
答案 0 :(得分:2)
Lasso只是正则化的线性回归,所以事实上对于每个训练过的模型,都有一些预测变量为负的值。
考虑一个线性函数
f(x) = w'x + b
其中w和x是向量,'是转置算子
无论w
和b
的值是多少,只要w
不是零向量 - x
的值始终为f(x)<0
{{1}} 1}}。用于计算w和b的训练集不包含任何负值并不重要,因为线性模型总是(可能在一些非常大的值中)越过0值。