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
时间: 2023-12-01 07:03:39 浏览: 43
这段代码中使用了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对象才能得到正确的结果。
相关问题
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))对数据进行归一化,后续预测结果如何还原
在进行预测时,需要用到的是原始数据的值,而不是经过归一化处理后的值。因此,在预测结束后,需要将预测结果还原成原始的值,可以使用inverse_transform()函数来实现。具体步骤如下:
1. 对预测结果进行反归一化处理,得到归一化前的预测结果。
```python
pred = model.predict(X_test)
pred = scaler.inverse_transform(pred)
```
2. 对原始数据集的目标列进行反归一化处理,得到归一化前的目标值。
```python
y_test = scaler.inverse_transform(y_test)
```
3. 对比预测结果和目标值,评估模型的预测效果。
```python
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, pred)
print("MSE: ", mse)
```
需要注意的是,在进行反归一化处理时,需要使用与归一化处理时相同的Scaler对象才能得到正确的结果。
scaler = MinMaxScaler
`scaler = MinMaxScaler`是使用`sklearn.preprocessing`库中的`MinMaxScaler`类创建一个`scaler`对象的语句。`MinMaxScaler`是一种常用的数据归一化方法,它将数据缩放到指定的范围内,默认是将数据缩放到0和1之间。
以下是一个示例代码,演示了如何使用`scaler = MinMaxScaler`进行数据归一化:
```python
from sklearn.preprocessing import MinMaxScaler
# 创建一个MinMaxScaler对象
scaler = MinMaxScaler(feature_range=(-1, 1))
# 假设有一个数据集a
a = [[1], [2], [3], [4], [5]]
# 使用fit_transform方法对数据进行归一化
b = scaler.fit_transform(a)
# 输出归一化后的数据
print(b)
```
输出:
```
[[-1. ]
[-0.5]
[ 0. ]
[ 0.5]
[ 1. ]]
```
`scaler.inverse_transform`是`MinMaxScaler`类中的一个方法,用于将归一化后的数据逆缩放回原始数据的范围。在你的引用中,`cc = scaler.inverse_transform(c)`将归一化后的数据`c`逆缩放回原始数据。
以下是一个示例代码,演示了如何使用`scaler.inverse_transform`进行逆缩放:
```python
from sklearn.preprocessing import MinMaxScaler
# 创建一个MinMaxScaler对象
scaler = MinMaxScaler(feature_range=(-1, 1))
# 假设有一个归一化后的数据集c
c = [[-1.], [-0.5], [0.], [0.5], [1.]]
# 使用inverse_transform方法将数据逆缩放回原始范围
cc = scaler.inverse_transform(c)
# 输出逆缩放后的数据
print(cc)
```
输出:
```
[[1.]
[2.]
[3.]
[4.]
[5.]]
```