【python聚类】200万左右的数据该用什么聚类算法

有200万左右的样本集,二维的,用什么聚类算法比较合适,希望有具体的包和代码,十分感谢。之前用MiniBatchKMeans,由于不太会调参而报错。

光知道数据集的大小是没有办法告诉你用什么聚类算法的。只能说你应该把各种方式都试下,如果你真的完全一无所知,我觉得深度学习是通用性更强一些的算法。

你可以构造一个多层前馈自编码器+解码器去做无监督学习,而自编码器就是聚类。具体算法你可以google上搜索tensorflow auto encoder

你可以从最简单和常用的聚类算法搞起:
1. 可以试scikit-learn的Kmeans, https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html , 这上面有例子, 照 着抄一遍, 就能跑出来了.
输入是Ndarray, 所以用numpy的函数读个文件, 搜一下也就有了. 这里需要你定的参数, 主要就是需要聚个几类.

举个例子:

import codecs
import numpy as np
# 这是生成模拟数据集
with codecs.open('test.txt','w', 'utf-8') as writer:
    for i in range(50000):
        writer.write(str(np.random.normal(10, 2)) + ',' + str(np.random.normal(-5, 1)) + '\n')

    for i in range(50000):
        writer.write(str(np.random.normal(20, 2)) + ',' + str(np.random.normal(-10, 1)) + '\n')

# 做聚类, n_clusters=2就是两个中心点, 从我的数据集上能看出来, 只有两个.
from sklearn.cluster import KMeans
X = np.loadtxt('test.txt', dtype=float, delimiter=',')
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
print(kmeans.labels_)

print(kmeans.predict([[0, 0], [12, 3]]))
# 你看这个聚类中心点的值, 是不是跟我生成时用的正态分布的mean很接近.
print(kmeans.cluster_centers_)

thanks

我也是100万数据聚类,用kmeans,报内存不足,200G的内存,40000条都跑不了,二维矩阵40000*38928