数据集data中部分样本的类别label已知,基于此用python实现kmeans聚类算法
时间: 2023-12-14 10:36:41 浏览: 88
首先,我们需要导入所需的库:numpy和sklearn中的KMeans。
```
import numpy as np
from sklearn.cluster import KMeans
```
然后,我们需要加载数据集。假设我们的数据集在一个名为data.csv的文件中,其中第一列是样本的标签,后面的列是特征值。我们可以使用numpy的函数来加载数据:
```
data = np.genfromtxt('data.csv', delimiter=',')
labels = data[:,0] # 取出标签列
features = data[:,1:] # 取出特征值列
```
接下来,我们可以使用sklearn中的KMeans算法来进行聚类。KMeans算法需要我们指定聚类的个数k。在这里,我们可以选择已知的标签个数作为聚类的个数。然后,我们可以使用fit_predict函数来训练模型并预测每个样本所属的聚类。
```
k = len(np.unique(labels)) # 聚类个数等于标签个数
kmeans = KMeans(n_clusters=k)
clusters = kmeans.fit_predict(features)
```
最后,我们可以将聚类结果与标签进行比较,计算聚类的准确率。
```
accuracy = np.sum(clusters == labels) / len(labels)
print('Accuracy:', accuracy)
```
完整代码如下:
```
import numpy as np
from sklearn.cluster import KMeans
# 加载数据集
data = np.genfromtxt('data.csv', delimiter=',')
labels = data[:,0] # 取出标签列
features = data[:,1:] # 取出特征值列
# 聚类个数等于标签个数
k = len(np.unique(labels))
# KMeans聚类
kmeans = KMeans(n_clusters=k)
clusters = kmeans.fit_predict(features)
# 计算准确率
accuracy = np.sum(clusters == labels) / len(labels)
print('Accuracy:', accuracy)
```
阅读全文