当横坐标不对齐时,怎么进行kmeans聚类?

我想要对数据进行聚类,但是数据的横坐标不对齐。总共8000多行,47列。第一列是人名,数据量最少的人只有5列数据,其他列为nan,最多的人有47列数据。怎么样才能进行聚类?也不能对空值进行填充,会不准确。

参考:https://blog.csdn.net/weixin_41030360/article/details/80891753

如果特征维有47列,建议是先对数据集做主成分分析(PCA)以实现降维。如果顺利的话,聚类就是水到渠成事儿了。下面是我以前写的一个降维的例子,请参考。

# -*- encoding: utf-8 -*-

"""
8.7.1 主成分分析
"""

from sklearn import datasets as dss
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

ds = dss.load_iris()
print(ds.data.shape) # 150个样本,4个特征维

m = PCA() # 使用默认参数实例化PCA类,n_components=None
m.fit(ds.data)

print(m.explained_variance_) # 正交变换后各成分的方差值
print(m.explained_variance_ratio_) # 正交变换后各主分的方差值占总方差值的比例

m = PCA(n_components=0.97)
m.fit(ds.data)

print(m.explained_variance_)
print(m.explained_variance_ratio_)

d = m.transform(ds.data)
print(d.data.shape) # 150个样本,2个特征维(从4个降至2个)

plt.scatter(d[:,0], d[:,1], c=ds.target)
plt.show()

 

降维后的特征维只有两个,可以在平面图上直观地观察是否适用于K均值聚类。

 

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

 

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y