【问题标题】:How to convert strings to numeric values?如何将字符串转换为数值?
【发布时间】:2019-01-21 07:32:38
【问题描述】:

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

我知道我需要使用 NLP 进行清理,但在 jupyter 上找不到如何执行此操作。 您能建议我如何将这些值转换为数值吗?

谢谢

【问题讨论】:

    标签: python machine-learning deep-learning nlp


    【解决方案1】:

    数值比文字或图像更适合创建学习模型。(为什么?降维)

    常见的机器学习算法需要数字输入。

    用于将单词转换为相应数值的技术称为词嵌入。

    word embedding 中,字符串转换为feature vectors(数字)。

    词袋,word2vecGloVe 可用于实现这一点。

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

    【讨论】:

    • 非常感谢。我决定暂时删除描述栏。稍后我会研究您发送到这里的这些链接。
    【解决方案2】:

    您描述的问题是将分类数据(通常以字符串或数字 ID 的形式)转换为纯数字数据。我相信您知道使用数字 ID 有一个问题:它会导致错误地解释为数据具有某种顺序。就像apple < orange < lime,当不是这种情况时。

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

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

    需要额外的处理才能逐字获取编码。此方法仅将完整值视为变量。

    【讨论】:

    • 谢谢!我会尝试 one-hot 编码
    • 所以首先我需要获取“描述”列的所有值(单词),然后我需要进行一次热编码?
    • @Trey 我会非常仔细地尝试找出您希望编码处于的正确分辨率级别。但这可能涉及获取单个单词。数据最终决定。如果你一个字一个字地做,那么是的,每个字都会有编码,通过组合所有字的编码,你会得到最终的向量。
    猜你喜欢
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 2020-06-14
    • 2017-11-13
    • 1970-01-01
    • 2016-02-20
    相关资源
    最近更新 更多