问题描述
我想使用 sklearn 的 MinMaxScaler 函数重新缩放我的 Pandas 数据框,就像在 this 教程中一样。
我拥有的数据在 mydata
中,
x1 x2 x3 x4 x5
Date
2015-03-01 90 180 113 12 2125
2015-03-02 64 180 107 5 2121
2015-03-03 79 170 110 12 2009
2015-03-04 82 160 107 6 2020
2015-03-05 69 152 108 13 1979
2015-03-06 51 229 95 10 2120
而我的代码仅重新调整列 x1
,x2
,x3
是
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler,StandardScaler
### load mydata
scaler = MinMaxScaler()
mydata_scaled = scaler.fit_transform(mydata.values)
mydata_scaled = pd.DataFrame(mydata_scaled,columns=['x1','x2','x3'])
mydata_scaled.head(5)
但我收到错误 ValueError: Shape of passed values is (5,6),indices imply (3,6)
。还有另一个 solution 使用 Column_Transformer
,但我想知道为什么 MinMaxScaler
方法不起作用。
解决方法
我找到了解决方案:
mydata[['x1','x2','x3']] = MinMaxScaler().fit_transform(mydata[['x1','x3']])
类似于Standardize some columns in Python Pandas dataframe?中的解决方案