【问题标题】:How to make Pandas Series with np.arrays into numerical value?如何将带有 np.arrays 的 Pandas 系列变成数值?
【发布时间】:2022-01-07 00:58:12
【问题描述】:

我正在使用经典的泰坦尼克号数据集。我使用OneHotEncoder 对人的姓氏进行编码。

transformer = make_column_transformer((OneHotEncoder(sparse=False), ['Surname']), remainder = "drop")
encoded_surname = transformer.fit_transform(titanic)
titanic['Encoded_Surname'] = list(encoded_surname.astype(np.float64))

这是我的数据框的样子:

这是我在寻找.info() 时得到的:

Data columns (total 7 columns):
 #   Column           Non-Null Count  Dtype  
---  ------           --------------  -----  
 0   Survived         891 non-null    int64  
 1   Pclass           891 non-null    int64  
 2   Sex              891 non-null    int64  
 3   SibSp            891 non-null    int64  
 4   Parch            891 non-null    int64  
 5   Fare             891 non-null    float64
 6   Encoded_Surname  891 non-null    object 
dtypes: float64(1), int64(5), object(1)

由于Encoded_Surname 标签是一个对象,而不是其他数字,因此我无法将数据放入分类器模型中。

如何将我从OneHotEncoder 得到的np.array 转换为数字数据?

【问题讨论】:

    标签: pandas numpy scikit-learn one-hot-encoding


    【解决方案1】:

    我建议您使用pd.get_dummies 而不是OneHotEncoder。如果你真的想使用OneHotEncoder

    ohe_df = pd.DataFrame(encoded_surname, columns=transformer.get_feature_names())
    #concat with original data
    titanic = pd.concat([titanic, ohe_df], axis=1).drop(['Surname'], axis=1)
    

    如果你可以使用pd.get_dummies:

    titanic = pd.get_dummies(titanic, prefix=['Surname'], columns=['Surname'], drop_first=True)
    

    【讨论】:

      【解决方案2】:

      IIUC,为encoded_surname 数据创建一个新数据框并将其加入您的原始数据集:

      transformer = make_column_transformer((OneHotEncoder(sparse=False), ['Surname']), remainder = "drop")
      encoded_surname = transformer.fit_transform(titanic)
      
      titanic = titanic.join(pd.DataFrame(encoded_surname, dtype=int).add_prefix('Encoded_Surname'))
      

      【讨论】:

        猜你喜欢
        • 2012-08-02
        • 2012-08-24
        • 1970-01-01
        • 2020-09-08
        • 2016-12-07
        • 1970-01-01
        • 2014-02-06
        相关资源
        最近更新 更多