如何将字符串转换为数值?

时间:2019-01-21 07:32:38

标签: python machine-learning deep-learning nlp

我正在清理jupyter上的csv文件以进行机器学习。 但是,有些列具有字符串值,例如“ description”列:

enter image description here

我知道我需要使用NLP进行清洁,但是找不到在jupyter上的处理方法。 您能建议我如何将这些值转换为数值吗?

谢谢

2 个答案:

答案 0 :(得分:0)

您要描述的问题是将类别数据(通常以字符串或数字ID的形式)转换为纯数字数据的问题。我确定您知道使用数字ID会遇到问题:这会导致错误解释,即数据具有某种顺序。像apple < orange < lime一样,情况并非如此。

通常使用one-hot encoding来产生数字指示符变量。编码一列后,您将拥有N列,其中N是唯一标签的数量。当相应的分类变量具有该值时,这些列的值为1,否则为0。如果在一列中只有很少的唯一标签,这将特别方便。 Pandassklearn都具有这些可用的功能,尽管它们不像人们希望的那样完整。

您所拥有的“描述”列似乎有点棘手,因为它实际上包含语言,而不仅仅是分类数据。因此,该列需要以其他方式解析或处理。虽然,单热编码方案很可能会用于描述中的所有单词,从而产生具有更多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(数字)。

word2vecGloVe一词袋可用于实现此目的。

通常建议忽略那些对模型不重要的字段,因此仅在绝对必要时才包含描述。