如何告诉SciKit LinearRegression模型预测值不能小于零?

问题描述 投票:0回答:1

我有以下代码,尝试对基于非价格的功能进行库存评估。

price = df.loc[:,'regularMarketPrice']
features = df.loc[:,feature_list]

# 
X_train, X_test, y_train, y_test = train_test_split(features, price, test_size = 0.15, random_state = 1)

if len(X_train.shape) < 2:
    X_train = np.array(X_train).reshape(-1,1)
    X_test = np.array(X_test).reshape(-1,1)

# 
model = LinearRegression()
model.fit(X_train,y_train)

# 
print('Train Score:', model.score(X_train,y_train))
print('Test Score:', model.score(X_test,y_test))


# 
y_predicted = model.predict(X_test)

在我的df中(非常大),从来没有'regularMarketPrice'小于0的情况。但是,对于y_predicted中的某些点,我偶尔会收到小于0的值。

Scikit中是否有一种方法可以说小于0的内容是无效的预测?我希望这会使我的模型更准确。

[如果需要进一步说明,请发表评论。

python pandas machine-learning scikit-learn linear-regression
1个回答
0
投票

考虑使用非高斯响应变量的方法。用直方图绘制y值。如果数据偏斜,请考虑使用glm,gamma分布和log链接进行建模。

或者,您可以将y_predicted设置为model.score值和0的最大值。

© www.soinside.com 2019 - 2024. All rights reserved.