我有以下代码,尝试对基于非价格的功能进行库存评估。
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的内容是无效的预测?我希望这会使我的模型更准确。
[如果需要进一步说明,请发表评论。
考虑使用非高斯响应变量的方法。用直方图绘制y值。如果数据偏斜,请考虑使用glm,gamma分布和log链接进行建模。
或者,您可以将y_predicted设置为model.score值和0的最大值。