scaler = MinMaxScaler() dataset[col] = scaler.fit_transform(dataset[col].values.reshape(-1, 1))经过上述代码归一化操作后如何反归一化
时间: 2024-03-05 09:54:53 浏览: 179
你可以使用 `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()` 方法反归一化数据时,输入的数据形状应与进行归一化操作时输入的数据形状相同。
相关问题
future = ['sin(h)', 'cos(h)', 'month', 'tmwindspeed', 'pressure', 'temperature'] scaler = MinMaxScaler() # 数据归一化,由于sin和cos本来就是-1到1,不用归一化 for col in future: if col not in ['sin(h)', 'cos(h)']: dataset[col] = scaler.fit_transform(dataset[col].values.reshape(-1, 1))使用此代码进行归一化,数据还原时需要reshape还是直接inverse_transform
这段代码中使用了reshape将数据转化为二维数组进行归一化,因此在进行反归一化处理时,也需要使用相应的reshape进行还原。具体步骤如下:
1. 对预测结果进行反归一化处理,得到归一化前的预测结果。
```python
pred = model.predict(X_test)
pred = scaler.inverse_transform(pred.reshape(-1, 1))
```
2. 对原始数据集的目标列进行反归一化处理,得到归一化前的目标值。
```python
y_test = scaler.inverse_transform(y_test.reshape(-1, 1))
```
3. 对比预测结果和目标值,评估模型的预测效果。
```python
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, pred)
print("MSE: ", mse)
```
需要注意的是,在进行反归一化处理时,需要使用与归一化处理时相同的Scaler对象才能得到正确的结果。
经过dataset[col] = scaler.fit_transform(dataset[col].values.reshape(-1, 1))归一化后的数据如何还原
要将经过归一化处理后的数据还原成原始数据,可以使用`scaler.inverse_transform()`方法。具体实现方法如下:
假设`scaler`是使用`sklearn.preprocessing`中的`MinMaxScaler()`进行归一化处理得到的,`dataset`是归一化后的数据,`col`是需要还原的列名。则可以使用以下代码将归一化后的数据还原成原始数据:
```python
original_data = scaler.inverse_transform(dataset[col].values.reshape(-1, 1))
```
这样就可以得到`col`列的原始数据。如果需要将整个数据集还原成原始数据,可以依次对每一列进行还原操作。
阅读全文