我正在清理jupyter上的csv文件以进行机器学习。 但是,有些列具有字符串值,例如“ description”列:
我知道我需要使用NLP进行清洁,但是找不到在jupyter上的处理方法。 您能建议我如何将这些值转换为数值吗?
谢谢
答案 0 :(得分:0)
您要描述的问题是将类别数据(通常以字符串或数字ID的形式)转换为纯数字数据的问题。我确定您知道使用数字ID会遇到问题:这会导致错误解释,即数据具有某种顺序。像apple < orange < lime
一样,情况并非如此。
通常使用one-hot encoding来产生数字指示符变量。编码一列后,您将拥有N列,其中N是唯一标签的数量。当相应的分类变量具有该值时,这些列的值为1,否则为0。如果在一列中只有很少的唯一标签,这将特别方便。 Pandas
和sklearn
都具有这些可用的功能,尽管它们不像人们希望的那样完整。
您所拥有的“描述”列似乎有点棘手,因为它实际上包含语言,而不仅仅是分类数据。因此,该列需要以其他方式解析或处理。虽然,单热编码方案很可能会用于描述中的所有单词,从而产生具有更多1的向量。
例如:
>>> import pandas as pd
>>> df = pd.DataFrame(['a', 'b', 'c', 'a', 'a', pd.np.nan])
>>> pd.get_dummies(df)
0_a 0_b 0_c
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
4 1 0 0
5 0 0 0
需要附加处理才能逐字获取编码。这种方法只将完整值视为变量。
答案 1 :(得分:0)
数字值比单词或图像更适合创建学习模型。(为什么要降维)
通用机器学习算法需要数字输入。
将单词转换为相应数值的技术称为单词嵌入。
在word embedding中,字符串被转换为feature vectors(数字)。
通常建议忽略那些对模型不重要的字段,因此仅在绝对必要时才包含描述。