- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试弄清楚如何在使用 RobustScalar 和 Lasso 后取消缩放数据(大概使用 inverse_transform)以进行预测。下面的数据只是一个例子。我的实际数据更大、更复杂,但我希望使用 RobustScaler(因为我的数据有异常值)和 Lasso(因为我的数据有许多无用的特征)。
基本上,如果我尝试使用此模型来预测任何内容,我希望以未缩放的方式进行预测。当我尝试使用示例数据点执行此操作时,我收到一个错误,似乎希望我取消缩放与训练子集大小相同的数据(也称为两个观察值)。我收到以下错误:ValueError:形状为 (1,1) 的不可广播输出操作数与广播形状 (1,2) 不匹配
如何仅取消缩放一个预测?这可能吗?
import pandas as pd
from sklearn.linear_model import Lasso
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import RobustScaler
data = [[100, 1, 50],[500 , 3, 25],[1000 , 10, 100]]
df = pd.DataFrame(data,columns=['Cost','People', 'Supplies'])
X = df[['People', 'Supplies']]
y = df[['Cost']]
#Split
X_train,X_test,y_train,y_test = train_test_split(X,y)
#Scale data
transformer = RobustScaler().fit(X_train)
transformer.transform(X_train)
X_rtrain = RobustScaler().fit_transform(X_train)
y_rtrain = RobustScaler().fit_transform(y_train)
X_rtest = RobustScaler().fit_transform(X_test)
y_rtest = RobustScaler().fit_transform(y_test)
#Fit Train Model
lasso = Lasso()
lasso_alg = lasso.fit(X_rtrain,y_rtrain)
train_score =lasso_alg.score(X_rtrain,y_rtrain)
test_score = lasso_alg.score(X_rtest,y_rtest)
print ("training score:", train_score)
print ("test score:", test_score)
#Predict example
example = [[10,100]]
transformer.inverse_transform(lasso_alg.predict(example).reshape(-1, 1))
最佳答案
您不能对 X 和 y 使用相同的 tranformer
对象。在您的代码片段中,您的 transformer
用于 X,它是 2D,因此在转换预测结果(1D)时会出现错误。 (实际上你很幸运能得到一个错误;如果你的 X 是 1D,你就会得到废话)。
这样的事情应该有效:
transformer_x = RobustScaler().fit(X_train)
transformer_y = RobustScaler().fit(y_train)
X_rtrain = transformer_x.transform(X_train)
y_rtrain = transformer_y.transform(y_train)
X_rtest = transformer_x.transform(X_test)
y_rtest = transformer_y.transform(y_test)
#Fit Train Model
lasso = Lasso()
lasso_alg = lasso.fit(X_rtrain,y_rtrain)
train_score =lasso_alg.score(X_rtrain,y_rtrain)
test_score = lasso_alg.score(X_rtest,y_rtest)
print ("training score:", train_score)
print ("test score:", test_score)
example = [[10,100]]
transformer_y.inverse_transform(lasso.predict(example).reshape(-1, 1))
关于python - Lasso 和 RobustScaler 之后如何对回归预测进行逆变换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56169286/
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
通常 PCA 变换很容易反转: import numpy as np from sklearn import decomposition x = np.zeros((500, 10)) x[:, :5
我是一名优秀的程序员,十分优秀!