经过dataset[col] = scaler.fit_transform(dataset[col].values.reshape(-1, 1))归一化后的数据如何还原
时间: 2024-02-17 08:01:40 浏览: 32
要将经过归一化处理后的数据还原成原始数据,可以使用`scaler.inverse_transform()`方法。具体实现方法如下:
假设`scaler`是使用`sklearn.preprocessing`中的`MinMaxScaler()`进行归一化处理得到的,`dataset`是归一化后的数据,`col`是需要还原的列名。则可以使用以下代码将归一化后的数据还原成原始数据:
```python
original_data = scaler.inverse_transform(dataset[col].values.reshape(-1, 1))
```
这样就可以得到`col`列的原始数据。如果需要将整个数据集还原成原始数据,可以依次对每一列进行还原操作。
相关问题
scaler = MinMaxScaler() dataset[col] = scaler.fit_transform(dataset[col].values.reshape(-1, 1))经过上述代码归一化操作后如何反归一化
你可以使用 `scaler.inverse_transform()` 方法进行反归一化操作。具体来说,可以先将需要反归一化的数据通过 `scaler.transform()` 方法进行归一化,然后再使用 `scaler.inverse_transform()` 方法将归一化后的数据反归一化为原始数据。例如,如果要反归一化名为 `col` 的数据,可以使用以下代码:
```
# 假设归一化后的数据保存在 normalized_data 中
original_data = scaler.inverse_transform(normalized_data)
# 将反归一化后的数据赋值回 dataset 的 col 列
dataset[col] = original_data
```
其中,`normalized_data` 是归一化后的数据,`original_data` 是反归一化后的数据。注意,在使用 `inverse_transform()` 方法反归一化数据时,输入的数据形状应与进行归一化操作时输入的数据形状相同。
dataset = np.loadtxt(r'D:\python-learn\testdata.csv', delimiter=",",skiprows=1) X = dataset[:,0:17] scaler = MinMaxScaler(feature_range=(0, 1)) X = scaler.fit_transform(X) pred_Y = model.predict(X) pred_Y = scaler.inverse_transform(pred_Y) print("Predicted value:", pred_Y)这段代码的反归一化有些错误,请你更改一下
在这段代码中,`scaler.inverse_transform()` 方法的参数应该是 `pred_Y` 而不是 `Y_pred`。此外,由于 `pred_Y` 的形状是 `(样本数量, 1)`,我们需要使用 `reshape()` 方法将其转换为 `(样本数量,)` 的形状,以便与原始数据格式一致。
下面是更改后的代码:
```python
dataset = np.loadtxt(r'D:\python-learn\testdata.csv', delimiter=",",skiprows=1)
X = dataset[:,0:17]
scaler = MinMaxScaler(feature_range=(0, 1))
X = scaler.fit_transform(X)
pred_Y = model.predict(X)
pred_Y = scaler.inverse_transform(pred_Y.reshape(-1,)) # 修改这一行
print("Predicted value:", pred_Y)
```
这样就可以正确地反归一化了。