我在具有各自ID(Range [kksId])的列中具有字符串变量(Range [VarName])。我需要创建一种算法,将新变量分类为现有ID,或者如果无法将它们分别放在N / A类中。
如何在列中编码字符串数据,以便我可以将机器学习技术应用于分类,例如k均值?
通常,由于变量“ 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技术以不同的方式处理其字符串。