gpt4 book ai didi

python - 如何在Python中按条件应用聚类

转载 作者:太空宇宙 更新时间:2023-11-03 20:53:25 26 4
gpt4 key购买 nike

我有一个大约 50 000 个样本的数据集,它包含 2 个特征,其中第一个是二进制的,第二个是连续的。

我想使用 python 来使用聚类方法来创建 2 个类别。

PS:我无法指定何时将第一个类别精确限制为制定规则。我需要一个大多数数字 = 0 的类别,即我的目标是在我的数据中有一部分我必须消除它。它的大部分 col_A 值都是 0 我需要删除它们,但我不知道它们限制在哪里

我的数据如下:

id        Col_A       Col_B
1 0 2
2 0 3
3 1 25
4 0 17
5 0 9
6 1 30
7 1 1
8 1 12
9 1 3
10 0 6

我想要 2 个集群

  • 第一类涉及包含小数字的行,并且大多数 Col_A 值为 0。

  • 无论 Col_A 值如何,第二个类别都应包含更大的数字。

类别 1 必须具有:

id        Col_A       Col_B     
1 0 2
2 0 3
5 0 9
7 1 1
9 1 3
10 0 6

类别 2 必须具有:

id        Col_A       Col_B    
3 1 25
4 0 17
6 1 30
8 1 12

如何向聚类算法强制要求第一个类别必须以 0 为多数作为 Col_A 的值

我使用了以下代码,但它不能完美工作。

from sklearn.cluster import KMeans
import numpy as np

data = np.array([[0, 2], [0, 3], [1, 25],[0, 17], [0, 9], [1, 30], [1, 1],[1, 12], [1, 3], [0, 6]])
kmeans = KMeans(n_clusters=2, random_state=0).fit(data)
kmeans.labels_

df = pd.DataFrame(data)
df['categories'] = kmeans.labels_

我遇到了一些问题,例如“18”的情况,必须归入类别 2。

Col_A      Col_B        Category
0 2 Cat_1
0 3 Cat_1
1 12 Cat_2
0 17 Cat_2
0 9 Cat_1
1 30 Cat_2
1 1 Cat_1
1 18 Cat_1
0 3 Cat_1
0 6 Cat_1

当我处理真实数据时,即使用大量样本时,我得到了错误的分类。我该如何解决这种情况

最佳答案

首先,如果您的聚类依赖于 B 列并且您知道边界是什么,那么听起来似乎不需要无监督算法,并且如果 column_ B < 边界则可以分配标签 0,如果 column_B > 边界则可以分配标签 1。

如果您仍想使用无监督聚类算法,请尝试重新缩放列。不要对列进行标准化(通常的方法),这会在算法中赋予所有列相同的“重要性”,而是将 B 列中的所有数字乘以某个因子(假设乘以 10),然后再次聚类。这将使 B 列更加“重要”。

关于python - 如何在Python中按条件应用聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56167227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com