MinMaxScaler 仅生成正值

MinMaxScaler only Generating Positive Values

from sklearn import preprocessing

我有一个包含正值和负值的数据,如下所示:

(这里是数据的csv文件https://drive.google.com/file/d/1-Kc3vGDazAPQ_4I7wVvG6VI9Bd9b4uCW/view?usp=sharing)

分机是: |索引 |价值观 | | ------ | -------------- | | 1 | -5.473753 | | 2 | 54.730399 | | 3 | 0.389353 | | 4 | -4.156109 | | 5 | 65.108997 | | ... | ......... | | 733 | 14.082214 | | 734 | 107.248120 | | 735 | 54.730399 |

我正在尝试使用 MinMaxScaler,如下所示:

min_max_scaler = preprocessing.MinMaxScaler()
test_scaled = min_max_scaler.fit_transform(ext)
predictions_rescaled=min_max_scaler.inverse_transform(test_scaled)

predictions_rescaled 应该与 ext 相同,因为我正在缩放它然后重新缩放它,但令人惊讶的是两者不同。谁能指导我在缩放过程中哪里出错了。

检查您使用的是哪个scikit版本,以及MinMaxScaler是否存在错误。如果这不是问题,请检查您将数据传递给 MinMaxScaler 的方式。

根据 scikit-learn 文档 here,它应该按预期运行。

无法重现你的问题。它工作正常。我原来回来了:


import pandas as pd
from sklearn.preprocessing import MinMaxScaler

df = pd.read_csv('ext.csv', index_col=0)
scaler = MinMaxScaler()

df['minmax'] = scaler.fit_transform(df)
df['inv'] = scaler.inverse_transform(df[['minmax']])

MinMaxScaler 默认缩放 0 到 1 范围内的值。如果缩放后​​想要负数,可以使用 StandardScaler.

另外你的代码也没有错。 Inverse_transform() 正在返回旧数据帧。

s_scaler = MinMaxScaler()
test_scaled = s_scaler.fit_transform(ext)
print(test_scaled)
predictions_rescaled=s_scaler.inverse_transform(test_scaled)
print()
predictions_rescaled = pd.DataFrame(predictions_rescaled)
predictions_rescaled