我有一个csv文件,其中的列填充了文本数据。如何用常量数据替换它们,以便我可以在该数据集上应用机器学习算法。 数据集示例:日期,名称,颜色名称,用户名和产品名称。
答案 0 :(得分:1)
您正在尝试对数据进行分类。请尝试以下方法:
示例1:对于颜色名称和产品名称,假设只有几种类型,您可以按如下方式进行映射:
# Color_name mapping
color_mapping = {"red": 1, "yellow": 2, "blue": 3, "green": 4, "pink": 5}
dataset['color_name'] = dataset['color_name'].map(color_mapping)
# Product_name mapping
product_mapping = {"product1": 1, "product2": 2, "product3": 3, "product4": 4, "product5": 5}
dataset['product_name'] = dataset['product_name'].map(product_mapping)
示例2:对于user_name,如果无法按上述方式进行分类,则可以执行以下操作:
尝试从名称中提取标题。
Ex:以头衔开头的名字可以提取先生,女士,夫人等,并可以相应地进行分组
title_mapping = {"Mr": 1, "Miss": 2, "Mrs": 3}
dataset['user_name'] = dataset['user_name'].map(title_mapping)
示例3:对于日期,您可以将它们分组为属于不同年份或月份或某个特定时期的日期等。
答案 1 :(得分:0)
实际上,上面的答案和评论只是解释了一半的工作。 1,2,3,......意味着编码的单词内的空间依赖性,例如, "红色"更接近"黄色"而不是"蓝",因为1接近2而不是3。 将变换应用于整数值后,您应该使用类似one-hot-encoding的内容。
如果您使用pandas,请查看get_dummies
如果您使用sklearn请转到LabelBinarizer
(Here you can find a very good tutorial on how to deal with categorical data)
由于单热编码会将您输入网络的实际数据放大,您可能会考虑提前使用维度降低技术,或者最好的方法是使用所谓的word embeddings。今天,在真实文本数据中使用单词嵌入是非常明智的,因为它们是现代NLP应用程序的游戏规则改变者。如果您只处理单个单词,则无需进行单词嵌入。
干杯