【问题标题】:Getting Error on StandardScalar Fit_Transform在 StandardScalar Fit_Transform 上出现错误
【发布时间】:2018-05-20 09:46:00
【问题描述】:
 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 使其成为二维数组。 但我希望它保持为一维数组,因为它是因变量,并希望它保持这种状态。我还解决了之前必须重新调整相似数据的不同示例,但它没有给我这种错误。不知道为什么它现在给我。此外,我在编码时正在观看视频,视频中的一切都是一样的,但他没有收到任何错误。

【问题讨论】:

    标签: python arrays machine-learning scikit-learn sklearn-pandas


    【解决方案1】:

    您可以使用flatten从二维数组中获取一维数组:

    y.flatten()
    

    【讨论】:

      【解决方案2】:

      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)
      

      【讨论】:

        【解决方案3】:
        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()
        

        【讨论】:

          【解决方案4】:

          StandardScaler 曾经使用 1d 数组,但带有 DeprecationWarning:将 1d 数组作为数据传递在 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()
          

          【讨论】:

          • 不需要指定问题的作者或作者,你的答案已经给他了。
          猜你喜欢
          • 2014-12-14
          • 1970-01-01
          • 1970-01-01
          • 2020-11-14
          • 1970-01-01
          • 1970-01-01
          • 2017-03-15
          • 2018-08-20
          • 1970-01-01
          相关资源
          最近更新 更多