我实际上是数据科学的新手,我正在尝试使用 Python 和所有数据在杂色数据集上仅使用一个特征 X(我在添加多项式特征之前添加了特征 log(X))进行简单的线性回归附带的科学堆栈(numpy、pandas、sci-kit learn,...)
在这里,您可以使用 scikitlearn 找到我的回归代码:
def add_log(x):
return np.concatenate((x, np.log(x)), axis=1)
# Fetch the training set
_X = np.array(X).reshape(-1, 1) # X = [1, 26, 45, ..., 100, ..., 8000 ]
_Y = np.array(Y).reshape(-1, 1) # Y = [1206.78, 412.4, 20.8, ..., 1.34, ..., 0.034]
Y_train = _Y
X_train = add_log(_X) if use_log else _X
# Create the pipeline
steps = [
('scalar', StandardScaler()),
('poly', PolynomialFeatures(6)),
('model', Lasso(alpha=alpha, fit_intercept=True))
]
pipeline = Pipeline(steps)
pipeline.fit(X_train, Y_train)
我的特征 X 可以在1到~80 000之间,而 Y 可以在0到~2M之间
关于我应该获得的曲线,我知道一件事是它应该总是减小,所以导数应该总是负的
我做了一个小模式来解释我的期望与我所拥有的:
因此,即使我的数据表明相反,
我想奖励导数始终为负的预测。
有没有办法用 sci-kit learn 做到这一点?或者,也许我对我的问题提出了一个不好的解决方案,并且还有另一种方法可以获得我想要的东西?
谢谢
