我实际上正在尝试使用sklearn库中的MinMaxScaler函数进行逆变换。我基本上希望存储在测试集中的数据按比例缩放。
我不知道我哪里出错了,我已经再次检查了回归步骤,一切都正确,除了最后一个需要缩放和执行最终预测值的结束步骤。任何帮助,感激不尽!
predicted = predicted.reshape(-1, 1)
xtest = xtest.reshape(-1, 1)
ytest = ytest.reshape(-1, 1)
xtest_scaled = x_scalar.inverse_transform(xtest)
ytest_scaled = y_scalar.inverse_transform(ytest)
predicted_scaled = y_scalar.inverse_transform(predicted)
xtest_scaled = xtest_scaled[:, -1]
ytest_scaled = ytest_scaled[:, -1]
predicted_scaled = predicted_scaled[:, -1]
p = pd.DataFrame(list(zip(xtest_scaled, ytest_scaled, predicted_scaled)), columns = ['x', 'target_y', 'predicted_y'])
p = p.round(decimals = 2)
p.head()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-31-6fee9e05d7b3> in <module>
4 ytest = ytest.reshape(-1, 1)
5
----> 6 xtest_scaled = x_scalar.inverse_transform(xtest)
7 ytest_scaled = y_scalar.inverse_transform(ytest)
8 predicted_scaled = y_scalar.inverse_transform(predicted)
NameError: name 'x_scalar' is not defined
简单点:)
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from sklearn.datasets import load_boston
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
# load dataset
boston = load_boston()
# discription
# print(boston.DESCR)
features = pd.DataFrame(boston.data, columns=boston.feature_names)
target = pd.DataFrame(boston.target, columns=['target'])
df = pd.concat([features, target], axis=1)
# df.describe().round(decimals=2)
X = df['LSTAT'].values
# difine x_scaler
x_scaler = MinMaxScaler()
M = x_scaler.fit_transform(X.reshape(-1, 1))
N = x_scaler.fit(X.reshape(-1, 1))
result = N.inverse_transform(M)