将预测缩放回原始形式
Unscale predictions back to original form
这是一个回归问题。
我训练的形状是:(417, 5),测试数据的形状是:(105, 5)。我使用以下代码对两者进行缩放:
from sklearn import preprocessing
import sklearn
from sklearn.preprocessing import MinMaxScaler
#Scale train
scaler = preprocessing.MinMaxScaler()
train_df = scaler.fit_transform(train_df)
train_df = pd.DataFrame(train_df)
#Scale test
test_df = scaler.fit_transform(test_df)
test_df = pd.DataFrame(test_df)
缩放后的前四行训练数据如下所示:
而'4'是因变量,其余是自变量。
使用深度神经网络训练后,我得到了按比例缩放的预测。我尝试使用以下代码取消缩放预测:
scaler.inverse_transform(y_pred_dnn)
而预测存储在 y_pred_dnn
但是我得到以下错误:
ValueError:形状为 (105,1) 的不可广播输出操作数与广播形状 (105,5) 不匹配
如何调试问题?
谢谢
你可以通过在缩放之前分离出 y 来解决这个问题。您不需要缩放 y 来进行预测。所以尝试:
y_train, y_test = train_df.iloc[:, 4], test_df.iloc[:, 4]
X_train, X_test = train_df.iloc[:, 1:4], test_df.iloc[:, 1:4]
在此之后,您只对 X 部分进行缩放,您将不需要任何反向缩放
这是一个回归问题。
我训练的形状是:(417, 5),测试数据的形状是:(105, 5)。我使用以下代码对两者进行缩放:
from sklearn import preprocessing
import sklearn
from sklearn.preprocessing import MinMaxScaler
#Scale train
scaler = preprocessing.MinMaxScaler()
train_df = scaler.fit_transform(train_df)
train_df = pd.DataFrame(train_df)
#Scale test
test_df = scaler.fit_transform(test_df)
test_df = pd.DataFrame(test_df)
缩放后的前四行训练数据如下所示:
而'4'是因变量,其余是自变量。
使用深度神经网络训练后,我得到了按比例缩放的预测。我尝试使用以下代码取消缩放预测:
scaler.inverse_transform(y_pred_dnn)
而预测存储在 y_pred_dnn
但是我得到以下错误:
ValueError:形状为 (105,1) 的不可广播输出操作数与广播形状 (105,5) 不匹配
如何调试问题?
谢谢
你可以通过在缩放之前分离出 y 来解决这个问题。您不需要缩放 y 来进行预测。所以尝试:
y_train, y_test = train_df.iloc[:, 4], test_df.iloc[:, 4]
X_train, X_test = train_df.iloc[:, 1:4], test_df.iloc[:, 1:4]
在此之后,您只对 X 部分进行缩放,您将不需要任何反向缩放