【问题标题】:SKLearn Ordinal Encoder with Pandas Dataframe - Accessing Columns with a variableSKLearn Ordinal Encoder with Pandas Dataframe - 使用变量访问列
【发布时间】:2020-09-08 12:22:06
【问题描述】:

我正在尝试为数据框中的某些数据实现分类朴素贝叶斯分类器。我的数据框有 173 行和 38 列。这些列代表分类特征,例如学位(例如机械工程)和类型(例如理学硕士)。还有许多其他列,列的数量/种类可以根据数据框而变化(例如,一个人可能在各种学科中拥有多种类型的学位或根本没有。这表示为 degree1,degree2 ...)。由于列的可变性,我想在使用序数编码器时向我的数据帧发送一个变量。有问题的代码如下:

def catEnconder(dataframe, *args):
    enc = OrdinalEncoder()
    enc_results = OrdinalEncoder()
    enc.fit([dataframe.columns.astype(str)])
    foo = "\'degree1\', \'type1\'"
    #dfOE = enc.transform(dataframe[['degree1', 'type1']].astype(str)) #This line works perfectly  
     dfOE = enc.transform(dataframe[[foo]].astype(str)) #This line fails. The error appears to be
     #"None of [Index([''degree1', 'type1''], dtype='object')] are in the [columns]" (although they definitely are)   
     dfOE = enc.transform(dataframe[dataframe.columns.astype(str)]) #This line fails. Error: 
     #Found unknown categories ['6D7', '6X1', ....] (these values represent departments that are within the dataframe)
     #Below works perfectly
     if args[0] == True:
         results = enc_results.fit_transform(dataframe[['DecisionDesc_en']].astype(str))
         return dfOE, results
     else:
         return dfOE

代码的下半部分完美运行。我的结果数组的形状是 173 x 1。问题是我需要我的 dfOE 数据帧为 173 x 38,但似乎无法让 OrdinalEncoder 接受我的数据帧输入。任何有关如何将我的列作为我的数据框(或 OrdinalEncoder,如果问题所在)的变量的帮助将不胜感激。

谢谢, 加里

【问题讨论】:

    标签: python pandas scikit-learn naivebayes


    【解决方案1】:

    呃,请原谅我的愚蠢。我想我有一部分喜欢把事情复杂化。简单的解决方案很简单:

        dfOE = enc.fit_transform(dataframe.astype(str))
    

    -加里

    【讨论】:

      猜你喜欢
      • 2016-07-27
      • 1970-01-01
      • 2015-09-27
      • 2019-04-17
      • 2016-10-31
      • 1970-01-01
      • 2012-10-02
      • 2012-10-17
      • 2023-03-21
      相关资源
      最近更新 更多