使用Scikit学习如何限制线性回归预测值的范围

5
我正在使用一个带有实值标签的数据集训练线性回归模型,其标签在区间[0,10]内。我的测试集上的预测值有一些超过了10。有没有办法将这些预测值限制在10以内?
我考虑进行条件检查,如果一个预测值超过10,我会将其明确设置为10。
有更好的方法吗?

这个问题非常模糊。除非你更具体一些,否则我不认为任何人能给你一个“更好的方法”。 - Joel Cornett
我所说的“更好”,仅指比编写明确的if (value > 10) value = 10这样的语句更好,因为这些语句对于回归模型发出的每个值都会被执行。这似乎是一个相当普遍的情况,所以我希望有一种标准的方法来解决这个问题。这样是否更清楚了?如果还有不清楚的地方,我很乐意编辑。 - atlantis
如果我理解正确的话,检查线性函数的范围并停止计算相应域外的值不是更好吗? - Joel Cornett
我认为这个问题已经足够精确了。 - Vladtn
1个回答

8
如果y是回归对象的predict方法的输出,那么你可以使用Numpy的minimum将其限制在10以下:
y = np.minimum(y, 10.)

为了将其下限设为零,请执行以下操作:
y = np.maximum(np.minimum(y, 10.), 0.)

或者,更短一点:
y = np.clip(y, 0., 10.)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接