拟合方法的输入数组

时间:2018-12-29 09:40:52

标签: python pandas scikit-learn

此代码返回预期结果。但是涉及两种熊猫方法。我可以只使用一种方法还是可以从fit_transform中删除熊猫?

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
data = [-1, 2,1, 18]
scaler.fit_transform(pd.DataFrame(pd.Series(data)))

array([[0.        ],
       [0.15789474],
       [0.10526316],
       [1.        ]])

更新:我尝试输入列表,但出现错误:

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
data = [-1, 2,1, 18]
scaler.fit_transform(data)

# ValueError: Expected 2D array, got 1D array instead 

这可行,但结果错误:

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
data = [-1, 2,1, 18]
scaler.fit_transform([data])

# array([[0., 0., 0., 0.]])

2 个答案:

答案 0 :(得分:2)

您可以直接应用fit_transform,而无需pandas

data = np.array(data).reshape(-1,1).astype(np.float32)
scaler.fit_transform(data)

答案 1 :(得分:1)

选项1:

您可以直接从列表中创建一个数据框,并将其提供给缩放器,这将需要进行任何重塑。

scaler.fit_transform(pd.DataFrame(data))

选项2:

如果要使用numpy,

scaler.fit_transform(np.array(data)[:,np.newaxis])

或者您可以接受@Oswald的建议