## Kmeans聚类(Python实现)
目录说明:
- data:存放数据集
- result:对数据集进行聚类的结果,分别是k为3,4,5的结果
- kmeans.py:K均值聚类的实现,包含两个,一个是Kmeans,一个是二分K-means
- run.py:一个测试文件,用于测试./data/test.txt文件
参考博文:[机器学习算法-K-means聚类](http://www.csuldw.com/2015/06/03/2015-06-03-ml-algorithm-K-means/)
使用工具:python + numpy + matplotlib + pandas
scikit-learn链接:[#k-means](http://scikit-learn.org/stable/modules/clustering.html#k-means)
## K-means原理
1. 创建k个点作为k个簇的起始质心(经常随机选择)。
- 分别计算剩下的元素到k个簇中心的相异度(距离),将这些元素分别划归到相异度最低的簇。
- 根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均值。
- 将D中全部元素按照新的中心重新聚类。
- 重复第4步,直到聚类结果不再变化。
- 最后,输出聚类结果。
## 二分K-means原理
1. 从输入的数据点集合中随机选择一个点作为一个聚类中心
- 对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x)
- 选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大
- 重复2和3直到k个聚类中心被选出来
- 利用这k个初始的聚类中心来运行标准的k-means算法
## 测试用例
```
import pandas as pd
import numpy as np
from kmeans import KMeansClassifier
import matplotlib.pyplot as plt
#加载数据集,DataFrame格式,最后将返回为一个matrix格式
def loadDataset(infile):
df = pd.read_csv(infile, sep='\t', header=0, dtype=str, na_filter=False)
return np.array(df).astype(np.float)
if __name__=="__main__":
data_X = loadDataset(r"data/testSet.txt")
k = 3
clf = KMeansClassifier(k)
clf.fit(data_X)
cents = clf._centroids
labels = clf._labels
sse = clf._sse
colors = ['b','g','r','k','c','m','y','#e24fff','#524C90','#845868']
for i in range(k):
index = np.nonzero(labels==i)[0]
x0 = data_X[index, 0]
x1 = data_X[index, 1]
y_i = i
for j in range(len(x0)):
plt.text(x0[j], x1[j], str(y_i), color=colors[i], \
fontdict={'weight': 'bold', 'size': 6})
plt.scatter(cents[i,0],cents[i,1],marker='x',color=colors[i],\
linewidths=7)
plt.title("SSE={:.2f}".format(sse))
plt.axis([-7,7,-7,7])
outname = "./result/k_clusters" + str(k) + ".png"
plt.savefig(outname)
plt.show()
```
## 结果展示
K-means算法结果如下图所示:
- 当k=3时的结果
<center>
![](./result/k_clusters3.png)
</center>
- 当k=4时的结果
<center>
![](./result/k_clusters4.png)
</center>
- 当k=5时的结果
<center>
![](./result/k_clusters5.png)
</center>
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
机器学习例程.7z机器学习例程.7z机器学习例程.7z (3036个子文件)
base.conf 53B
train.csv 469KB
sample_submission.csv 208KB
submission.csv 208KB
user_keywords.csv 612B
label.data 93KB
trainset.data 11KB
res.data 456B
input.data 211B
train-images-idx3-ubyte.gz 9.45MB
t10k-images-idx3-ubyte.gz 1.57MB
train-labels-idx1-ubyte.gz 28KB
t10k-labels-idx1-ubyte.gz 4KB
train-labels.idx1-ubyte 59KB
t10k-labels.idx1-ubyte 10KB
train-images.idx3-ubyte 44.86MB
t10k-images.idx3-ubyte 7.48MB
fm_demo.ipynb 15KB
lda.ipynb 12KB
invertedindex_2.10-1.0.0.jar 8KB
README.md 3KB
readme.md 3KB
README.md 3KB
README.md 3KB
README.md 2KB
README.md 2KB
README.md 2KB
readme.md 1KB
readme.md 610B
README.md 566B
readme.md 418B
README.md 198B
README.md 163B
README.md 63B
result.out 10KB
统计学习方法.pdf 17.56MB
PRML_Zh.pdf 11.71MB
The Elements of Statistical Learning .pdf 8.22MB
Supervised_Sequence_Labelling_with_RNNs-Alex_Graves.pdf 7.68MB
Convex Optimization.pdf 5.73MB
PRML_En.pdf 4.73MB
特征选择及半监督分类方法研究.pdf 3.96MB
cse546wi12LinearRegression-PPT.pdf 2.76MB
LDA_zh.pdf 2.06MB
The strength of weak learnability.pdf 1.76MB
cvpr2012-Multi-column Deep Neural Networks for Image Classification.pdf 1.62MB
clustering_ppt.pdf 1.36MB
Pent et al_mRMR.pdf 1.24MB
2005_TPAMI_FeaSelection_mRMR.pdf 1.22MB
Least Squares Quantization in PCM.pdf 1.2MB
boosting.pdf 1.14MB
time_ser.pdf 970KB
GREEDY FUNCTION APPROXIMATION- A GRADING BOOSTING MACHINE.pdf 915KB
BOOSTING ALGORITHMS REGULARIZATION PREDICTION AND MODEL FITTING.pdf 871KB
Subset Selection by Pareto Optimization(子集选择).pdf 869KB
em_tutorial-What is the expectation maximization algorithm.pdf 856KB
用于神经网络权值稀疏化的L_1_2_正则化方法.pdf 779KB
10Algorithms-08.pdf 750KB
Boosted Regression (Boosting) An introductory tutorial and a Stata plugin.pdf 644KB
基于互信息的特征选择.pdf 588KB
greedy function approximation- a grading.pdf 568KB
Recurrent Convolutional Neural Network for Object Recognition.pdf 551KB
The Evolution of Boosting Algorithms From Machine Learning to Statistical Modelling.pdf 551KB
Do we Need Hundreds of Classifiers to Solve Real World classification problems.pdf 536KB
Greedy Function Approximation A Gradient Boosting Machine.pdf 451KB
An Introduction to Restricted Boltzmann Machines.pdf 438KB
Stochastic Gradient Descent tricks-2012.pdf 419KB
C4.5-Programs for machine learning.pdf 408KB
常用距离计算汇总.pdf 395KB
Boosting multi-step autoregressive forecasts.pdf 377KB
Machine Learning Algorithms for Classification.pdf 341KB
Cryptographic Limitations on Learning Boolean Formulae and Finite Automata.pdf 312KB
2003_CSB_Minimum Redundancy Feature Selection from Microarray Gene Expression Data.pdf 282KB
凸约束二次规划问题求解的一般方法.pdf 247KB
随机森林特征选择.pdf 240KB
1996 Experiments with a New Boosting Algorithm.pdf 215KB
The Boosting Approach to Machine Learning An Overview.pdf 188KB
A Short Introduction to Boosting.pdf 167KB
A Few Useful Things to Know about Machine Learning.pdf 156KB
Full-CheatSheet-on-Machine-Learning-Algorithms(Python and R Codes).pdf 151KB
A Brief Introduction to Boosting.pdf 142KB
Sequential Minimal Optimization A Fast Algorithm for Training Support Vector Machines.pdf 88KB
figure_ROC.pdf 82KB
EM_examples.pdf 78KB
The wake-sleep algorithm for unsupervised neural networks.pdf 68KB
tree.pdf 67KB
output.png 11KB
k_clusters5.png 8KB
k_clusters4.png 8KB
test.png 8KB
k_clusters3.png 8KB
stacking.py 9KB
kmeans.py 8KB
DT.py 7KB
stacking.py 7KB
recommend.py 6KB
UserItemEmbeddingModel.py 6KB
doc2vector.py 6KB
dbscan.py 5KB
bayes.py 5KB
共 3036 条
- 1
- 2
- 3
- 4
- 5
- 6
- 31
资源评论
应用市场
- 粉丝: 456
- 资源: 3808
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功