-
大小: 11KB文件类型: .zip金币: 1下载: 0 次发布日期: 2021-05-28
- 语言: Python
- 标签: k-means k-medoids cluster datamining
资源简介
数据挖掘k-means k-medoids python代码实现 含测试数据
代码片段和文件信息
from numpy import *
import matplotlib.pyplot as plt
# calculate Euclidean distance 欧几里得度量
def euclDistance(vector1 vector2):
return sqrt(sum(power(vector2 - vector1 2))) # 求这两个矩阵的距离,vector1、2均为矩阵
# init centroids with random samples
# 在样本集中随机选取k个样本点作为初始质心
def initCentroids(dataSet k):
numSamples dim = dataSet.shape # 矩阵的行数、列数
centroids = zeros((k dim)) # 感觉要不要你都可以
for i in range(k):
index = int(random.uniform(0 numSamples)) # 随机产生一个浮点数,然后将其转化为int型
centroids[i :] = dataSet[index :]
return centroids
# k-means cluster
# dataSet为一个矩阵
# k为将dataSet矩阵中的样本分成k个类
def kmeans(dataSet k):
numSamples = dataSet.shape[0] # 读取矩阵dataSet的第一维度的长度即获得有多少个样本数据
# first column stores which cluster this sample belongs to
# second column stores the error between this sample and its centroid
clusterAssment = mat(zeros((numSamples 2))) # 得到一个N*2的零矩阵
clusterChanged = True
## step 1: init centroids
centroids = initCentroids(dataSet k) # 在样本集中随机选取k个样本点作为初始质心
while clusterChanged:
clusterChanged = False
## for each sample
for i in range(numSamples): # range
minDist = 100000.0
minIndex = 0
## for each centroid
## step 2: find the centroid who is closest
# 计算每个样本点与质点之间的距离,将其归内到距离最小的那一簇
for j in range(k):
x1=centroids[j :]
x2=dataSet[i :]
distance = euclDistance(centroids[j :] dataSet[i :])
if distance < minDist:
minDist = distance
minIndex = j
## step 3: update its cluster
# k个簇里面与第i个样本距离最小的的标号和距离保存在clusterAssment中
# 若所有的样本不在变化,则退出while循环
if clusterAssment[i 0] != minIndex:
clusterChanged = True
clusterAssment[i :] = minIndex minDist ** 2 # 两个**表示的是minDist的平方
## step 4: update centroids 更新质心
for j in range(k):
# clusterAssment[:0].A==j是找出矩阵clusterAssment中第一列元素中等于j的行的下标,返回的是一个以array的列表,第一个array为等于j的下标
pointsInCluster = dataSet[nonzero(clusterAssment[: 0].A == j)[0]] # 将dataSet矩阵中相对应的样本提取出来
# xx=clusterAssment[: 0].A == j
# yy=nonzero(clusterAssment[: 0].A == j);
# zz=nonzero(clusterAssment[: 0].A == j)[0];
#print(findMedioio(pointsInCluster))
centroids[j :] = mean(pointsInCluster axis=0) # 计算标注为j的所有样本的平均值
#centroids[j :] = findMedioio(pointsInCluster) # 计算标注为j的所有样本的平均值
print(‘Congratulations cluster complete!‘)
return centroids clusterAssment
#k-medoids中用于寻找质心
def findMedioio(pointsInCluster):
minDist = 10000000.0
minIndex=0
for i in range(pointsInCluster.shape[0]):#循环作为质心
currDist=0
for j in range(pointsInCluster.shape[0]):
currDist+=euclDistance(p
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-06 15:43 k-means_k-medoids\
文件 4859 2019-01-06 15:21 k-means_k-medoids\KMeans.py
文件 4107 2019-01-02 19:04 k-means_k-medoids\KMeans2.py
文件 1112 2019-01-06 15:42 k-means_k-medoids\MainPro.py
文件 15288 2019-01-06 11:32 k-means_k-medoids\test.csv
文件 1755 2019-01-01 16:17 k-means_k-medoids\testSet.txt
文件 1126 2019-01-06 10:15 k-means_k-medoids\__init__.py
文件 1139 2019-01-06 15:38 k-means_k-medoids\__init__2.py
相关资源
- k-means python实现及数据.zip
- python内置K-means聚类算法对鸢尾花数据
- FaceClustering.zip
- k均值K-means算法案例,包括K=2和肘部法
- 密度聚类(Density peaks Clustering)Pyth
- python界面GUI实现k-means聚类算法
- python实现的k-means算法
- 基于python中的sklearn.cluster库做k-means聚
- 基于Python的机器学习K-means聚类分析
- HCluster.py
- DLA-cluster.py
- K-Means文本聚类python实现
- kmeans上手代码
- 昆明房价聚类分析链家网爬虫+聚类分
- k-means 基于anaconda的python3实现
- python_spectral_clustering.zip
评论
共有 条评论