对值列表中的分类变量进行编码

2024-09-27 22:34:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据:

Rank    Platforms        Technology

high    Windows||Linux   Unity
high    Linux             
low     Windows          Unreal 
low     Linux||MacOs     GameMakerStudio||Unity||Unreal
low                      GameMakerStudio

PlatformsTechnology都是分类变量。这里的问题是它们可以有一个,或者空,或者,特别是像GameMakerStudio||Unity||Unreal这样的多个值。我正在建立一个逻辑回归模型来预测Rank数据。你知道吗

我正在尝试为我的模型编码这些变量。但是,对于列表类型的分类值,我还没有找到任何解决方案。我阅读了这一页Encoding Categorical Variables,发现一个热编码是最密切相关的,但仍然没有解决我的问题。你知道吗

当然,我可以手动编码。例如,Platforms列大约有7个不同的平台值,如果Platforms = Windows||Linux,我可以设置2列is_windows = trueis_linux = true。但是对于Technology列,有21个不同的值。你知道吗

有办法自动编码吗?你知道吗


Tags: 数据模型编码islinuxwindows分类unity
1条回答
网友
1楼 · 发布于 2024-09-27 22:34:40

你从来没提过熊猫,但我猜你用的就是熊猫。如果是这样的话,你提到的链接会有这样的回应:get_dummies

[nav] In [17]: c = pandas.read_csv ("/tmp/asdf.txt", header=0)                                                                                                                                                                                                                                                                

[nav] In [18]: c                                                                                                                                                                                                                                                                                                              
Out[18]: 
   Rank       Platforms                      Technology
0  high  Windows||Linux                           Unity
1  high           Linux                             NaN
2   low         Windows                          Unreal
3   low    Linux||MacOs  GameMakerStudio||Unity||Unreal
4   low             NaN                 GameMakerStudio

[nav] In [19]: c.Platforms.str.get_dummies ()                                                                                                                                                                                                                                                                                 
Out[19]: 
   Linux  MacOs  Windows
0      1      0        1
1      1      0        0
2      0      0        1
3      1      1        0
4      0      0        0

[nav] In [20]: pd.concat ( [c, c.Platforms.str.get_dummies (), c.Technology.str.get_dummies ()], axis=1 )                                                                                                                                                                                                                     
Out[20]: 
   Rank       Platforms                      Technology  Linux  MacOs  Windows  GameMakerStudio  Unity  Unreal
0  high  Windows||Linux                           Unity      1      0        1                0      1       0
1  high           Linux                             NaN      1      0        0                0      0       0
2   low         Windows                          Unreal      0      0        1                0      0       1
3   low    Linux||MacOs  GameMakerStudio||Unity||Unreal      1      1        0                1      1       1
4   low             NaN                 GameMakerStudio      0      0        0                1      0       0

相关问题 更多 >

    热门问题