Python 为机器学习将字符串列表转换为int列表

Python 为机器学习将字符串列表转换为int列表,python,machine-learning,Python,Machine Learning,我有一个表,其中有一列对应于教育程度:“博士”、“本科生”,等等 我想将这些功能更改为0、1、2….。为了使用数据作为机器学习算法的输入 Python中有没有一种方法可以自动将这些字符串特征映射到整数?它被称为dict(字典)。大概是这样的: edu_level = { "phd": 0; "master": 1; "undergrad":2, ... } 查看如何使用字典,也许可以使用“Python字典教程”键。它被称为dict(字典)。大概是这样的: ed

我有一个表,其中有一列对应于教育程度:
“博士”、“本科生”
,等等

我想将这些功能更改为
0、1、2….
。为了使用数据作为机器学习算法的输入

Python中有没有一种方法可以自动将这些字符串特征映射到整数?

它被称为dict(字典)。大概是这样的:

edu_level = {
    "phd": 0;
    "master": 1;
    "undergrad":2, 
    ...
}
查看如何使用字典,也许可以使用“Python字典教程”键。它被称为dict(字典)。大概是这样的:

edu_level = {
    "phd": 0;
    "master": 1;
    "undergrad":2, 
    ...
}
查看如何使用字典,也许可以使用“Python字典教程”键。

如果希望使用相同的序列顺序,可以使用

lista = [ "phd", "undergrad", "etc"]
>>> [i for i in enumerate(lista)]
[(0, 'phd'), (1, 'undergrad'), (2, 'etc')]
如果希望具有相同的序列顺序,则可以使用

lista = [ "phd", "undergrad", "etc"]
>>> [i for i in enumerate(lista)]
[(0, 'phd'), (1, 'undergrad'), (2, 'etc')]

你可能不想把数据输入机器学习算法——例如,如果博士学位是2,硕士学位是1,这是否意味着博士学位是1的两倍?您可以改为使用“一个热编码”并创建一个可以馈送的二进制矩阵(即1和0)

有多个库可以执行此操作,例如:

祝你好运


你可能不想把数据输入机器学习算法——例如,如果博士学位是2,硕士学位是1,这是否意味着博士学位是1的两倍?您可以改为使用“一个热编码”并创建一个可以馈送的二进制矩阵(即1和0)

有多个库可以执行此操作,例如:

祝你好运


谢谢你的回答。问题是,有太多的价值观无法像你那样硬编码一个词汇表。谢谢你的回答。问题是,有太多的值无法像你那样硬编码一个词汇表。你也可以尝试更高级的东西,如word2vec,但一个热门的编码可能会让你达到你需要的程度。请记住,您不能将所有变量都放在自己的列中-一个热编码的数据集应该始终是len(categories)-1您也可以尝试更高级的东西,如word2vec,但一个热编码可能会让您达到需要的程度。请记住,您不能将所有变量都放在自己的列中—一个热编码的数据集应始终为len(categories)—1这是一个很好的观点。但是,即使这样做,由于有许多特性和每个特性的许多值,它也需要数小时的手动预处理。pd.get_dummies()可以非常快速地完成这项工作-即,您可以循环使用数据集,对于每个分类,get dummies?这正是我想要的。谢谢!只要确保在运行时将它们存储回数据帧:)您能接受@thb吗?如果您还有其他问题,请告诉我!这是一个很好的观点。但是,即使这样做,由于有许多特性和每个特性的许多值,它也需要数小时的手动预处理。pd.get_dummies()可以非常快速地完成这项工作-即,您可以循环使用数据集,对于每个分类,get dummies?这正是我想要的。谢谢!只要确保在运行时将它们存储回数据帧:)您能接受@thb吗?如果您还有其他问题,请告诉我!我认为只需稍加修改即可将其转换为一个字典,将度映射到如下索引:
dict([(度,索引)for(index,degree)in enumerate(lista)])
@suripoori,是的,这就是它背后的想法。除非你们有同样的订单<代码>{k:v代表k,v在enumerate(lista)}我认为可以稍加修改,将其转换为一个字典,将度映射到如下索引:
dict([(degree,index)for(index,degree)in enumerate(lista)])
@suripoori,是的,这就是它背后的想法。除非你们有同样的订单<代码>{k:v代表k,v在枚举(lista)}