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
使其成为二维数组。
但我希望它保持为一维数组,因为它是因变量,并希望它保持这种状态。我还解决了之前的不同示例,在这些示例中我不得不重新缩放相似的数据,但它并没有给我这种错误。不知道为什么现在给我。此外,我在编码时正在观看视频,视频中的一切都是一样的,但他没有收到任何错误。
您可以使用flatten
从二维数组中获取一维数组:
y.flatten()
StandardScaler 旨在处理特征,而不是标签或目标数据。
因此仅适用于二维数据。请在此处查看文档:
你可以做的是,使用scale function。 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()
StandardScaler 用于处理一维数组,但有一个弃用警告:将一维数组作为数据在 0.17 中弃用,并将在 0.19 中引发 ValueError。如果您的数据具有单个特征,则使用 X.reshape(-1,1) 或如果它包含单个样本,则使用 X.reshape(1,-1) 重塑您的数据。
所以,按照您正在寻找的解决方案:
sc_y = StandardScaler()
y = np.array(y).reshape(-1,1)
y = sc_y.fit_transform(y)
y = y.flatten()
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
使其成为二维数组。
但我希望它保持为一维数组,因为它是因变量,并希望它保持这种状态。我还解决了之前的不同示例,在这些示例中我不得不重新缩放相似的数据,但它并没有给我这种错误。不知道为什么现在给我。此外,我在编码时正在观看视频,视频中的一切都是一样的,但他没有收到任何错误。
您可以使用flatten
从二维数组中获取一维数组:
y.flatten()
StandardScaler 旨在处理特征,而不是标签或目标数据。 因此仅适用于二维数据。请在此处查看文档:
你可以做的是,使用scale function。 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()
StandardScaler 用于处理一维数组,但有一个弃用警告:将一维数组作为数据在 0.17 中弃用,并将在 0.19 中引发 ValueError。如果您的数据具有单个特征,则使用 X.reshape(-1,1) 或如果它包含单个样本,则使用 X.reshape(1,-1) 重塑您的数据。
所以,按照您正在寻找的解决方案:
sc_y = StandardScaler()
y = np.array(y).reshape(-1,1)
y = sc_y.fit_transform(y)
y = y.flatten()