如何在列中编码字符串数据,以便我可以将机器学习技术应用于分类,例如k均值?

问题描述 投票:0回答:1

我在具有各自ID(Range [kksId])的列中具有字符串变量(Range [VarName])。我需要创建一种算法,将新变量分类为现有ID,或者如果无法将它们分别放在N / A类中。

enter image description here

如何在列中编码字符串数据,以便我可以将机器学习技术应用于分类,例如k均值?

python string algorithm machine-learning hash
1个回答
0
投票

通常,由于变量“ Range [kksId]”是您的目标类,因此将每个泰斯语串映射到唯一的整数,这是在python中如何实现的示例:

import pandas as pd


def _categoricalToNumeric(dataset):
    categoric_id_mapping = {}
    curr_id_to_assign = 0
    for row in dataset.index:
        categorical_value = dataset.loc[row]
        if categorical_value in categoric_id_mapping:
            dataset.loc[row] = categoric_id_mapping[categorical_value]
        else:
            categoric_id_mapping[categorical_value] = curr_id_to_assign
            dataset.loc[row] = curr_id_to_assign
            curr_id_to_assign += 1
    return dataset


df = pd.read_excel('DataModel.xlsx', index_col=0)
df['Range[kksId]'] = _categoricalToNumeric(df['Range[kksId]'])

然后,对于字符串功能,在简单的分类器中,通常将它们映射到每个字符到一个变量中。示例:

R_r_DegPit1_In_St
R_r_DegPit1_In

成为:

x0  x1  x2  x3  x4  x5  x6  x7  x8  x9 x10 x11 x12 x13 x14 x15 x16
 R   _   r   _   D   e   g   P   i   t   1   _   I   n   _   S   t
 R   _   r   _   D   e   g   P   i   t   1   _   I   n  \0  \0  \0

由于您将拥有与数据集中最长的字符串一样多的变量,对于不会占据所有变量的字符串,应在剩余的变量中填充一个指示空字符的值。您还应该将字符值更改为数字,但是,重要的是不要重置基于每一列的数字计数。结果可能是这样的:

x0  x1  x2  x3  x4  x5  x6  x7  x8  x9 x10 x11 x12  x13 x14 x15 x16
 3   1   4   1   5  10  11   6  12  13   2   1   7   14   1   8   9
 3   1   4   1   5  10  11   6  12  13   2   1   7   14   0   0   0

请记住,更高级的ML / DL技术以不同的方式处理其字符串。

© www.soinside.com 2019 - 2024. All rights reserved.