繁体   English   中英

在StandardScalar Fit_Transform上获取错误

[英]Getting Error on StandardScalar Fit_Transform

 import numpy as np
 import matplotlib.pyplot as plt
 import pandas as pd

 dataset = pd.read_csv('Position_Salaries.csv')
 X = dataset.iloc[:, 1:2].values
 y = dataset.iloc[:, 2].values

from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
sc_y = StandardScaler()
X = sc_X.fit_transform(X)
y = sc_y.fit_transform(y)

好的,这就是问题所在。 X和y都是单一要素,并且只有一列。 如您所见,X是一个矩阵 y是向量 X = dataset.iloc [:, 1:2] .values y = dataset.iloc [:, 2] .values

现在,当我运行y = sc_y.fit_transform(y)我得到一个错误,它是一维数组。 如果我更改y = dataset.iloc[:, 2:3].values ,使其成为2D数组。 但是我希望它由于其因变量而保持为一维数组,并希望保持这种状态。 我也解决了较早的不同示例,在这些示例中,我不得不重新缩放相似的数据,但是它没有给我这种错误。 不知道为什么现在给我。 此外,我在编码时正在观看视频,并且视频中的所有内容都相同,但他没有出现任何错误。

StandardScaler用于处理功能,而不是标签或目标数据。 因此仅适用于二维数据。 请参阅此处获取文档:

您可以做的是使用比例功能 StandardScaler只是该函数的包装。

from sklearn.preprocessing import scale
y = scale(y)

或者,如果您想使用StandarScaler,则需要将y重塑为二维数组,如下所示:

import numpy as np
y = np.array(y).reshape(-1,1)
y = sc_y.fit_transform(y)
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X = sc_X.fit_transform(X)

sc_y = StandardScaler()
y = np.array(y).reshape(-1,1)
y = sc_y.fit_transform(y)
y = y.flatten()

您可以使用flatten从2D数组获取1D数组:

y.flatten()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM