【问题标题】:Factorize in pythonpython中的因式分解
【发布时间】:2019-10-23 11:21:38
【问题描述】:

我记得在 R 中我使用了.factor(我相信它们是带有级别的因子)但在 python 中我不知道该怎么做。

它使用了 get_dummies,但是当训练数据集包含测试没有的值时会出现问题,因此生成的列比 ML 算法不接受的多。

我需要转换以下列:

train.head(5)

    Id  MSSubClass  MSZoning
     1      60         RL
     2      53         RR
     3      49         RL
     4      60         RL
     5      95         RR
     6      16         RR
     6      16         R1

我需要离开 train.MSZoning 如下:

MSZoning
    1
    2
    1
    1
    2
    2
    3      

谢谢。

【问题讨论】:

    标签: python r machine-learning


    【解决方案1】:

    您可以使用pd.Categorical。以下是一个最小的可重现示例

    import pandas as pd 
    data = [[1, 60, 'RL'], [2, 53, 'RR'], [3, 49, 'RL'], [4, 60, 'RL'], [5, 95, 'RR']] 
    df = pd.DataFrame(data, columns = ['Id', 'MSSubClass', 'MSZoning']) 
    
    df['MSZoning_factor'] = pd.Categorical(df.MSZoning).codes + 1
    df
    #   Id  MSSubClass MSZoning  MSZoning_factor
    #0   1          60       RL                1
    #1   2          53       RR                2
    #2   3          49       RL                1
    #3   4          60       RL                1
    #4   5          95       RR                2
    

    pd.factorize

    df['MSZoning_factor'] = pd.factorize(df.MSZoning)[0] + 1
    

    给出相同的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 2011-02-08
      相关资源
      最近更新 更多