编码作为值列表的分类变量
Encoding categorical variable that is a list of values
我有以下数据:
Rank Platforms Technology
high Windows||Linux Unity
high Linux
low Windows Unreal
low Linux||MacOs GameMakerStudio||Unity||Unreal
low GameMakerStudio
Platforms
和Technology
都是分类变量。这里的问题是它们可以有一个,或者为空,或者,尤其是多个值,比如 GameMakerStudio||Unity||Unreal
。我正在构建逻辑回归模型来预测 Rank
数据。
我正在尝试为我的模型编码这些变量。但是,我还没有找到列表类型分类值的任何解决方案。我已阅读此页面 Encoding Categorical Variables 并发现 One-hot encoding 是最密切相关的,但仍然没有解决我的问题。
当然,我可以手动对其进行编码。例如,Platforms
列大约有 7 个不同的平台值,如果 Platforms = Windows||Linux
,我可以设置 2 列 is_windows = true
和 is_linux = true
。但是对于 Technology
列,有 21 个不同的值。
有没有自动编码的方法?
您从未在问题中提及 Pandas,但我猜这就是您使用的内容。如果是这样,您提到的 link 有响应: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
我有以下数据:
Rank Platforms Technology
high Windows||Linux Unity
high Linux
low Windows Unreal
low Linux||MacOs GameMakerStudio||Unity||Unreal
low GameMakerStudio
Platforms
和Technology
都是分类变量。这里的问题是它们可以有一个,或者为空,或者,尤其是多个值,比如 GameMakerStudio||Unity||Unreal
。我正在构建逻辑回归模型来预测 Rank
数据。
我正在尝试为我的模型编码这些变量。但是,我还没有找到列表类型分类值的任何解决方案。我已阅读此页面 Encoding Categorical Variables 并发现 One-hot encoding 是最密切相关的,但仍然没有解决我的问题。
当然,我可以手动对其进行编码。例如,Platforms
列大约有 7 个不同的平台值,如果 Platforms = Windows||Linux
,我可以设置 2 列 is_windows = true
和 is_linux = true
。但是对于 Technology
列,有 21 个不同的值。
有没有自动编码的方法?
您从未在问题中提及 Pandas,但我猜这就是您使用的内容。如果是这样,您提到的 link 有响应: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