Vik*_*war 3 python arrays machine-learning scikit-learn sklearn-pandas
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)
Run Code Online (Sandbox Code Playgroud)
好的,这就是问题所在。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)
Run Code Online (Sandbox Code Playgroud)
或者,如果您想使用StandarScaler,则需要将其重塑为二维y数组,如下所示:
import numpy as np
y = np.array(y).reshape(-1,1)
y = sc_y.fit_transform(y)
Run Code Online (Sandbox Code Playgroud)