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