K-Means & Sequential Leader Clustering

本文介绍了K-Means聚类算法的基本原理、评估方法和优缺点,包括簇评估的聚合度和Silhouette指标。此外,还探讨了Sequential Leader Clustering算法,一种适用于流数据且无需迭代和预设k值的分类方法。
摘要由CSDN通过智能技术生成

2017-12-31 19:08:37

k-平均算法源于信号处理中的一种向量量化方法,现在则更多地作为一种聚类分析方法流行于数据挖掘领域。k-means的目的是:把样本划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类,以之作为聚类的标准。

这个问题在计算上是困难的(NP困难),不过存在高效的启发式算法。一般情况下,都使用效率比较高的启发式算法,它们能够快速收敛于一个局部最优解。这些算法通常类似于通过迭代优化方法处理高斯混合分布的最大期望算法(EM算法)。

K-means比较适合数据类型是球状的数据,也就是不同的簇的形状是一球一球的。

一、簇评估

聚类问题由于是无监督的问题,可以说是没有什么标准答案的,也就是说怎么分类都是可能的。

另外坐标的变换也是会影响最终的结果的:

实现端到端的K-means算法集成的文本分类,可以分为以下几个步骤: 1. 数据准备:准备文本数据集,并将文本转换为向量表示。可以使用词袋模型或者TF-IDF模型将文本转换为向量表示。 2. K-means聚类:使用TensorFlow实现K-means聚类算法,并将文本向量作为输入进行聚类。聚类的结果可以作为文本分类的特征向量。 3. 分类模型:使用TensorFlow实现分类模型,可以使用神经网络模型或者其他机器学习模型。将聚类得到的特征向量作为输入,训练分类模型。 4. 集成:将K-means聚类和分类模型集成起来,形成端到端的文本分类系统。 下面是一个简单的代码示例: ```python import tensorflow as tf from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.datasets import fetch_20newsgroups from sklearn.cluster import KMeans from sklearn.metrics import accuracy_score # 数据准备 newsgroups_train = fetch_20newsgroups(subset='train') tfidf = TfidfVectorizer(stop_words='english') X = tfidf.fit_transform(newsgroups_train.data) # K-means聚类 kmeans = KMeans(n_clusters=20, init='k-means++', max_iter=100, n_init=1) kmeans.fit(X) X_clusters = kmeans.predict(X) # 分类模型 model = tf.keras.Sequential([ tf.keras.layers.Input(shape=(20,)), tf.keras.layers.Dense(64, activation='relu'), tf.keras.layers.Dense(20, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # 集成 model.fit(X_clusters, newsgroups_train.target, epochs=10) ``` 在上面的代码中,我们使用20个类别的新闻数据集作为示例数据集,首先使用TF-IDF模型将文本转换为向量表示,然后使用K-means聚类算法将文本向量聚类成20个簇,得到聚类结果作为分类的特征向量。然后使用一个简单的神经网络作为分类模型,将聚类结果作为输入进行训练,最后得到一个端到端的文本分类系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值