代码之家  ›  专栏  ›  技术社区  ›  Javier Guzmán

使用标签将列传递给输入者的正确方法?

  •  0
  • Javier Guzmán  · 技术社区  · 6 年前

    我有以下工作代码:

    imputer = Imputer(missing_values = 'NaN', strategy='mean', axis = 0)
    imputer = imputer.fit(X_train[['Age']])
    X_train['Age'] = imputer.transform(X_train[['Age']])
    

    试图在数据帧的切片副本上设置值。尝试 改为使用.loc[row\u indexer,col\u indexer]=value

    X_train['Age'] = imputer.transform(X_train[['Age']])
    

    imputer = Imputer(missing_values = 'NaN', strategy='mean', axis = 0)
    imputer = imputer.fit(X_train.loc[:,'Age'])
    X_train.loc[:,'Age'] = imputer.transform(X_train.loc[:, 'Age'])
    

    我收到以下信息 imputer

    使用数组.重塑(-1,1)如果您的数据具有 单一功能或数组.重塑如果是单个样本,则为-1。

    我不清楚使用 [['Age']] .loc[:,'Age']

    0 回复  |  直到 6 年前
        1
  •  1
  •   Ali    6 年前

    根据您收到的上一个错误,当您选择像 imputer = imputer.fit(X_train.loc[:, 'Age']) 你真的通过了 塞列 杂质 是一维的。

    type(X_train['Age'])
    pandas.core.series.Series
    

    然而,方法 fit() 期望您向它传递一个二维数组。相反,您可以以返回Dataframe(即二维)的方式使用column Age index:

    type(X_train.iloc[:,2:3])
    pandas.core.frame.DataFrame
    

    这样做,您将不会收到尺寸错误。我为了你的目的测试了这个,它成功了。

        2
  •  1
  •   Venkatachalam    6 年前

    X.loc[:,'Age'] = imputer.fit_transform(X[['Age']])
    

    import pandas as  pd
    import numpy as np
    from sklearn.impute import SimpleImputer
    
    X = pd.DataFrame({'Age': [12,13,'NaN', 23,31,12,43,32,42,]})
    imputer = SimpleImputer(strategy='mean')
    X.loc[:,'Age'] = imputer.fit_transform(X[['Age']])
    
    #
        Age
    0   12.0
    1   13.0
    2   26.0
    3   23.0
    4   31.0
    5   12.0
    6   43.0
    7   32.0
    8   42.0
    
    

    imputer 应该是2D{array-like,sparse matrix},shape(n个样本,n个特征)或一个数据帧。当你使用 X['Age'] ,它将返回一个pd系列对象。相反,当你使用 X[['Age']] ,将返回数据帧。

        3
  •  0
  •   LOrD_ARaGOrN    6 年前

    使用拟合变换方法

    imputer = Imputer(missing_values=0, strategy="mean", axis=0)
    X_train[['Age']] = imputer.fit_transform(X_train[['Age']])