在 scikit 聚类算法中忽略 NaN 值
Posted
技术标签:
【中文标题】在 scikit 聚类算法中忽略 NaN 值【英文标题】:Ignoring NaN values in a scikit clustering algorithm 【发布时间】:2021-09-17 00:42:02 【问题描述】:我使用了一种凝聚算法来聚类一个分解的数据帧(它正在工作)。 NaN 值在此数据框中显示为 -1,但我不想将它们作为算法的输入数据包含在内。我想我必须设置某种边界,我指定只有值 => 0 应该被考虑在内,但我不确定如何完成这项工作。下面我展示了我的算法代码和数据帧 z 的部分输出。
z=df.apply(lambda x: pd.factorize(x)[0])
cluster = AgglomerativeClustering(n_clusters=None,distance_threshold=(10), affinity='euclidean', linkage='ward')
cluster.fit_predict(z)
数据框 z 的一部分:
0 0 0 0 0 ... 0 -1 -1 -1
1 0 0 0 0 ... -1 -1 -1 -1
2 0 0 0 0 ... 1 -1 -1 -1
3 0 0 0 0 ... -1 -1 -1 -1
4 0 0 0 0 ... 0 -1 -1 -1
5 0 0 0 0 ... 0 -1 -1 -1
6 0 0 0 0 ... 0 -1 -1 -1
7 0 0 0 0 ... 0 -1 -1 -1
8 0 0 0 0 ... 0 -1 -1 -1
9 0 0 0 0 ... -1 -1 -1 -1
10 0 1 1 1 ... 0 -1 -1 -1
11 0 1 1 1 ... -1 -1 -1 -1
12 0 2 1 2 ... 0 -1 -1 -1
13 0 2 1 2 ... -1 -1 -1 -1
14 0 3 1 3 ... 0 -1 -1 -1
15 0 3 1 3 ... -1 -1 -1 -1
16 1 4 1 4 ... 0 -1 -1 -1
17 1 4 1 4 ... 1 -1 -1 -1
【问题讨论】:
【参考方案1】:在创建z
之前,调用DataFrame.dropna()
。您可以在pandas docs 上阅读更多内容。
df.dropna(inplace=True)
【讨论】:
以上是关于在 scikit 聚类算法中忽略 NaN 值的主要内容,如果未能解决你的问题,请参考以下文章