首页 > 解决方案 > 如何在聚类分析中处理空值?

问题描述

我从事金融科技业务,并且拥有如下客户级别的数据:

客户ID 第1天 第2天 第3天 第4天
1 50 0 5
2 10
3 -100 -100 5 0
4 10 -60 0 100
5 20 -20

在上述数据中,行代表客户唯一 ID,列代表一年中的特定日期,值代表该特定日期的贷记和借记净额。

例如,对于 customer ID = 1on day1credit = 100因此debit = 50净值为 50。零表示credit = debit当天。

NaN在我的数据中,仅显示在那一天,客户没有从应用程序进行任何贷记或借记交易,而这些知识对我来说很重要。让NaN成为NO INTERACTION的实例。

现在我的问题是如何告诉 scikit-learn python 中的 K-Means 将 NaN 值视为无交互?我不想消除NaN价值观。我也不想NaN用平均值或中值替换值。NaN值对我来说是附加信息,我如何保留这些信息?

标签: pythonscikit-learncluster-analysisnank-means

解决方案


k-means和其他聚类方法使用距离(欧几里得距离)来计算。

要计算距离,您需要数字,所有事物都必须是定量的。

确切地说,您必须删除那些或用最佳代表(中位数或平均值或 0)替换那些 NaN 值。

我该如何决定?

您认为哪个客户更接近 1 号客户?

客户 2、3 还是 4?

客户ID 第1天 第2天 第3天 第4天
1 50 0 5
2 50 0 0 5
3 50 0 中位数 5
4 50 0 意思是 5

推荐阅读