C15.1
kMeans聚类算法(kMeans++)
教材页 第15章,15.2节,第406页,kMeans聚类算法
数据 数据集1:使用iris鸢尾花数据集进行聚类。(聚成3类);
数据集2:JLinearTwoClass.txt,(附JLinearTwoClass.rar压缩包格式)下载后存储到D:\下,如果是其它路径,则需要修改程序中文件的路径。
数据各属性含义:类别, x1属性, x2属性
在本示例中,只使用了2个输入属性,进行聚类(聚为2类)。可以绘制散点图,观察两类样例在空间中的分布。
说明:本数据来自《数据分析与数据挖掘建模与工具》,版权所有。这里仅用于教学工作。
任务 建立kMeans聚类模型。

Python

实验1
鸢尾花
聚3类

import numpy as np;
from sklearn import datasets;
from sklearn import cluster;

ds = datasets.load_iris();
X = ds.data;
y = ds.target;
print(y);
m = cluster.KMeans(n_clusters = 3, init="k-means++", n_init = 20, max_iter = 1000);
m.fit(X);
mycenters = m.cluster_centers_;
print('聚类中心:');
print(mycenters); #输出聚类中心。
print('类别标记:');
print(m.labels_);

Python
实验2
聚2类

import numpy as np;
from sklearn import datasets;
from sklearn import cluster;
ds = np.loadtxt("D:\\JLinearTwoClass.txt", delimiter = "\t");
X = ds[:,1:3]; #只保留后两列
y = ds[:,0]; #对应着分类的标签。
#print (X);
print(y);
m = cluster.KMeans(n_clusters = 2, init="k-means++", n_init = 10, max_iter = 1000);
m.fit(X);
mycenters = m.cluster_centers_;
print('聚类中心:');
print(mycenters); #输出聚类中心。
print('类别标记:');
print(m.labels_);

输出

实验1的输出:

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2]
聚类中心:
[[5.9016129 2.7483871 4.39354839 1.43387097]
[5.006 3.428 1.462 0.246 ]
[6.85 3.07368421 5.74210526 2.07105263]]
类别标记:
[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 2 2 2 2 0 2 2 2 2
2 2 0 0 2 2 2 2 0 2 0 2 0 2 2 0 0 2 2 2 2 2 0 2 2 2 2 0 2 2 2 0 2 2 2 0 2
2 0]

实验2的输出:

[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1.]
聚类中心:
[[0.233125 0.286875 ]
[0.76357143 0.64857143]]
类别标记:
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1]

书籍 姜维.《数据分析与数据挖掘》、《数据分析与数据挖掘建模与工具》,电子工业出版社, 2023,2024。
软件 Python,C++(附加orsci包)。