使用kmeans聚类时,计算量往往都比较大,当有新的数据要添加到现有类别时,怎么做呢
使用sklearn简单做法就是训练时把模型保存,增量时加载模型,用predict预测就好了。
前提条件是新数据和训练时的属性数量要一致,比如在训练时使用的分词idf,把所有分词idf的词典保存下来,对于新的增量数据,调用该词典。
#聚类类别数
k_num = 50
mydatas = [] #加载数据,每一条数据的分词用空格隔开,类似:[['aa bb'],['cc dd'],['ee ff']]
idf_ret_file = "idf_ret.pkl"
if os.path.exists(idf_ret_file):
input = open(idf_ret_file, 'rb')
idf_ret = pickle.load(input)
input.close()
else:
idf_ret = cal_idf(mydatas) #计算tf-idf
output = open(idf_ret_file, 'wb')
#训练时把所有分词及idf值写入文件保存,以便在增量时调用
pickle.dump(idf_ret, output)
output.close()
#计算数据的tf-idf值
tfidf_ret = cal_tfidf(mydatas,idf_ret)
doc_rows = len(mydatas) #数据条数
word_rows = len(idf_ret) #分词个数
#把每条数据每个分词的词频 转换成 矩阵[数据条数,分词数]
X = np.zeros([doc_rows,word_rows])
for i in range(doc_rows):
j = 0
for k,v in idf_ret.items():
X[i][j] = tfidf_ret[i][k]
j=j+1
X = np.array(X)
#模型文件
cl_file = "kmeans.pkl"
if os.path.exists(cl_file):
input = open(cl_file, 'rb')
cl = pickle.load(input)
input.close()
else:
cl = KMeans(n_clusters=k_num, init='k-means++', random_state=30, n_init=1,verbose=False)
cl.fit(X)
#把模型文件保存,增量时使用
output = open(cl_file, 'wb')
pickle.dump(cl, output)
output.close()
#聚类结果
result = cl.predict(X)
#print(cl.cluster_centers_)
print(result)
exit()
分享到:
相关推荐
K-means是最流行的聚类算法之一,其目标是将数据点分配到K个簇中,使得每个数据点到其所属簇中心的距离最小。在`kmeans.py`文件中,可能包含了初始化簇中心、迭代更新数据点分配和簇中心的过程。K-means的主要挑战是...
本项目聚焦于四种常见的聚类算法:BIRCH(层次增量聚类)、K-Means、K-Means++以及K-Nearest Neighbors(KNN),对同一二维坐标数据集进行聚类分析。 首先,BIRCH(Balanced Iterative Reducing and Clustering ...
6. **增量聚类**:对于动态更新的数据流,可以逐步添加新数据而不必从头开始聚类,提高效率。 在实际应用中,FastKMeans不仅适用于静态数据集,还能够处理流式数据、大规模数据集以及高维数据。它在保持聚类质量的...
Python源码文件可能包含了以上提到的聚类算法的实现和应用示例,例如如何导入数据,调用聚类函数,以及如何显示结果。通过阅读和运行这些代码,你可以更好地理解聚类过程,并学会在实际项目中应用。 6. **注意事项...
- **优化策略**:为了提高效率,我们可以采用批量更新(一次处理所有数据)或增量更新(只处理移动的数据点)。 - **迭代次数**:需要预先设定最大迭代次数,或者设置一个停止条件,如连续几次迭代聚类中心没有显著...
为了克服K-means的局限性,出现了许多变种和替代算法,如DBSCAN(基于密度的聚类)、谱聚类和Birch(层次增量聚类)等。 综上,MATLAB实现的K值聚类算法为数据挖掘提供了强大的工具,通过理解和应用这些概念,可以...
K-Means是最为经典的聚类算法之一,它的核心思想非常直观: 1. **初始化**:随机选取K个中心点作为初始簇中心。 2. **分配样本**:计算每个样本点到各个簇中心的距离,并将其分配到最近的簇。 3. **更新中心点**:...
5. **增量式K-means算法**:对于大数据集,可以采用增量式K-means算法逐批次地处理数据,从而减少内存占用和计算时间。 #### 五、应用场景 K-means聚类算法在多个领域都有广泛的应用案例: 1. **图像分割**:在...
在这个脚本中,可能涉及的MATLAB函数包括“svmtrain”和“svmclassify”用于SVM的学习和预测,以及“kmeans”用于基本的聚类操作。此外,可能还会有数据导入、预处理、可视化以及结果评估的相关函数。 总结来说,...
点质心最大增量输出 flink run FlinkKMeans.jar \ input/kmeans.state \ input/points.txt \ input/clusters.txt \ 2 \ output/ \ 0.0 \ 5 points - 输入点数据的路径。 centroids - 输入集群数据的路径。 ...
未来的研究方向可能涉及更复杂的聚类算法在SQL中的集成,以及针对特定类型数据集的优化策略。 #### 实践建议 当考虑在SQL中实现K-means或其他复杂算法时,应优先考虑数据组织和索引策略,以提高查询效率。此外,...
基于 (1) 用于将样本与聚类中心进行比较的距离/散度度量,以及 (2) 相应的平均计算技术,即增量与非增量,算法是不同的。 这里使用的相异度量是:(1) P(n) 上的自然测地距离,(2) Stein 距离,(3) LogEuclidean ...
面向信息理论的K均值聚类是一种在...信息理论的K均值聚类算法以及提出的SAIL和V-SAIL算法能够有效地处理高维稀疏数据,并在图像索引中实现快速准确的聚类和识别,这对于大规模图像数据库的管理和检索具有实际应用价值。
我们解析此XML输出,其中可以包含单个IP或多个IP的信息,为每个结果创建增量字符串,并将这些字符串标记为要素(每个要素一个字符串)。 当前的集群策略: 手动:此方法允许用户输入自己的KMeans或DBSCAN超级参数...
5. **优化**:考虑优化策略,如使用更高效的质心更新方法(例如,使用增量法而非每次全量计算),或者使用早停策略来减少不必要的迭代。 6. **内存管理**:注意内存分配和释放,避免内存泄漏。 7. **输入输出**:...