资源简介
k-means代码
代码片段和文件信息
# -*- coding: utf-8 -*-
“““
Created on Thu Nov 17 16:13:56 2016
@author: phl
“““
print(“k-means算法程序“)
from numpy import *
import time
import matplotlib.pyplot as plt
# 欧几里得聚类计算
def euclDistance(vector1 vector2):
return sqrt(sum(power(vector2 - vector1 2)))
# 随机初始化聚类的中心
def initCentriods(dataSetk):
print(dataSet)
numSamplesdim = dataSet.shape #dim列数
centroids = zeros((k dim))
print(“行数:“numSamples)
print(“列数:“dim)
for i in range(k):
index = int(random.uniform(0 numSamples))
centroids[i :] = dataSet[index :]
return centroids
# k-means cluster
def kmeans(dataSet k):
numSamples = dataSet.shape[0] #dataSet.shape是几行几列的意思,这里是7行2列
print(“行数:“numSamples)
clusterAssment = mat(zeros((numSamples 2)))#初始化一个行两列的0矩阵
clusterChanged = True
## step 1: 初始化聚类中心
centroids = initCentriods(dataSet k)
print(“随机初始化的两个点:“centroids)
## 循环遍历数据
while clusterChanged:
clusterChanged = False
for i in range(numSamples):
minDist = 100000.0
minIndex = 0
## 循环遍历中心点
## step 2:计算离中心点的距离
for j in range(k):
distance = euclDistance(centroids[j :] dataSet[i :])
if distance < minDist:
minDist = distance
minIndex = j #minIndex代表类别
##更新聚类分配
if clusterAssment[i0] != minIndex:
clusterChanged = True
clusterAssment[i :] = minIndex minDist**2
## step 4: 更新聚类中心
for j in range(k):
pointsInCluster = dataSet[nonzero(clusterAssment[: 0].A == j)[0]]
centroids[j :] = mean(pointsInCluster axis = 0)
print(‘恭喜你,聚类完成‘)
return centroids clusterAssment
# show your cluster only available with 2-D data
def showCluster(dataSet k centroids clusterAssment):
numSamples dim = dataSet.shape
if dim != 2:
print(“Sorry! I can not draw because the dimension of your data is not 2!“)
return 1
mark = [‘or‘ ‘ob‘ ‘og‘ ‘ok‘ ‘^r‘ ‘+r‘ ‘sr‘ ‘dr‘ ‘ if k > len(mark):
print(“Sorry! Your k is too large! please contact Zouxy“)
return 1
# draw all samples
for i in range(numSamples):
markIndex = int(clusterAssment[i 0])
plt.plot(dataSet[i 0] dataSet[i 1] mark[markIndex])
mark = [‘Dr‘ ‘Db‘ ‘Dg‘ ‘Dk‘ ‘^b‘ ‘+b‘ ‘sb‘ ‘db‘ ‘ # draw the centroids
for i in range(k):
plt.plot(centroids[i 0] centroids[i 1] mark[i] markersize = 12)
plt.show()
def showData(dataSet):
x = []
y = []
plt.figure(figsize=(96))
for i in dataSet:
x.append([float(i[0])])
y.append([float(i[1])])
plt.scatter(xyc=“b“s=25alpha=0.4marker=‘o‘)
#T:散点的颜色
#s:散点的大小
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-03-22 11:01 k_means\__pycache__\
文件 2552 2018-03-22 19:13 k_means\__pycache__\k_means.cpython-36.pyc
文件 3306 2018-03-22 19:13 k_means\k_means.py
文件 753 2018-04-24 09:34 k_means\test_kmeans.py
文件 59 2018-02-21 18:02 k_means\testSet.txt
相关资源
- Head First Data Analysis(英+中+代码)
- SARIMA.rar
- Hands-on-Machine-Learning-with-Scikit-高清带书
- 卡尔曼 ,扩展卡尔曼,无迹卡尔曼,
- 有限元开源代码GetFEM
- 18款表白网页源代码(表白)
- 菜谱安卓开发项目
- ssh框架网上购物商城练习包含完整代
-
AutoCAD ob
jectARX(VC)开发基础与教程 - SX1276无线模块代码+原理图
- wifi密码字典及破解程序(最全版
- VTK图形图像开发进阶_PDF电子书完整版
- 服装识别项目数据集与代码.zip
- 外卖人安卓端APP源代码用户端,商家
- 基于STM32的完整变频器软硬件资料
- 《abaqus在岩土工程中的应用》源代码
- 手写数字识别程序,模型和测试图片
- 普中科技51单片机基础实践例程合集
- accp8.0.0 SSM框架第二章参考答案
- mit猎豹机器人腿足驱动器设计包含代
- 2018精仿包图网素材图片整站完整源码
- 原子哥STM32精英版原理图以及库函数版
- The Art of Readable Code 编写可读代码的艺
- 美萍超市销售2018收银端源代码
- 免费好用OACRM的开源源代码
- tensorflow-1.2.1-cp35-cp35m-linux_x86_64.whl
- jdk7源代码内含jsse源代码
- 基于单片机的增量升级软件和移植代
- PFC5.0相关代码初学者必备
- 计算机图形学/分形/ 有2维的山、树,
评论
共有 条评论