我有一个既包含数字特征又包含分类特征(非数字)的数据集,而分类特征可以具有许多值(无限制)。 我需要将这些数据转换为KMeans聚类模型。
目前,我已经在训练过程中使用python函数将所有非数字数据编码为数字格式,并且在测试过程中使用相同的函数对非数字数据进行编码。下面的代码是我用来编码非数字特征的函数。
def handle_non_nemeric(df):
columns = df.columns.values
for column in columns:
text_digit_dict = {}
def convert_to_int(val):
return text_digit_dict[val]
if(df[column].dtype != np.float64 or df[column].dtype != np.int64):
column_content = df[column].values.tolist()
unique_elements = set(column_content)
x = 1
for unique in unique_elements:
if unique not in text_digit_dict:
if unique == 0 or unique == '-':
text_digit_dict[unique] = 0
else:
text_digit_dict[unique] = x
x += 1
df[column] = list(map(convert_to_int, df[column]))
当我在测试过程中应用此函数对非数字特征进行编码时,可以将数字值分配给非数字数据,而在训练阶段它可以具有另一个数字值。对我的测试过程有问题吗?
答案 0 :(得分:0)
这是一篇很棒的文章,关于对训练和测试集中的分类特征进行编码:
它也说明了如何在训练和测试中使用相同的分类代码。如果您希望模型以较高的精度进行预测,则它们应该相等。