python - 编码要在 KMeans 聚类中使用的分类特征
问题描述
我有一个包含数字和分类特征(非数字)的数据集,而分类特征可以有很多值(无限)。我需要将这些数据转换为 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]))
当我在测试过程中应用此函数对非数值特征进行编码时,可以为非数值数据分配一个数值,而在训练阶段它具有另一个数值。这会对我的测试过程造成问题吗?
解决方案
这是一篇关于在训练和测试集中编码分类特征的精彩文章:
它还解释了如何在训练和测试中制作相同的分类代码。如果您希望模型以良好的精度进行预测,它们应该是相等的。
推荐阅读
- python - 将大 xml 拆分为多个小 xml 文件
- yaml - 在多阶段管道中使用 DevOps 部署 Azure 静态 Web 应用
- arrays - Excel 中的迭代公式可在不使用 VBA 的情况下将数据重新格式化到新工作表上
- quota - Gmail 帐户的 Google Apps 脚本配额?
- sql - 在创建相关实体时是否应该更新实体的版本以避免并发问题?
- javascript - 套接字 API 调用但未在控制台 SOCKET.IO 上获得结果
- python - Python Json 获取键值
- java - 有没有可以生成代码注释或结构的eclipse插件?
- java - 如何在 SQS 上将重试延迟 4 小时?
- python - 我可以在 vscode jupyter notebook 中更改熊猫数据框的外观吗?