聚类算法(k-means聚类算法)(代码片段)

FutureDrame FutureDrame     2022-11-12     629

关键词:

在数据分析挖掘过程中常用的聚类算法有1.K-Means聚类,2.K-中心点,3.系统聚类.

1.K-均值聚类在最小误差基础上将数据划分为预定的类数K(采用距离作为相似性的评价指标).每次都要遍历数据,所以大数据速度慢

2.k-中心点,不采用K-means中的平均值作为簇中心点,而是选中距离平均值最近的点最为簇中心点.

3.系统聚类又叫多层次聚类,分类是由高到低(可以想象下二叉树这种结构),越靠后,包含的数据点越少,但共同特征越多,缺点是不适合大数据量,速度慢.

K-mans聚类实战代码:

#-*- coding: utf-8 -*-
‘‘‘
聚类离散化,最后的result的格式为:
      1           2           3           4
A     0    0.178698    0.257724    0.351843
An  240  356.000000  281.000000   53.000000
即(0, 0.178698]有240个,(0.178698, 0.257724]有356个,依此类推。
‘‘‘
from __future__ import print_function
import pandas as pd
from sklearn.cluster import KMeans #导入K均值聚类算法

datafile = ../data/data.xls #待聚类的数据文件
processedfile = ../tmp/data_processed.xls #数据处理后文件
typelabel =u肝气郁结证型系数:A, u热毒蕴结证型系数:B, u冲任失调证型系数:C, u气血两虚证型系数:D, u脾胃虚弱证型系数:E, u肝肾阴虚证型系数:F
k = 4 #需要进行的聚类类别数

#读取数据并进行聚类分析
data = pd.read_excel(datafile) #读取数据,data是个dataframe
keys = list(typelabel.keys())

result = pd.DataFrame() #声明一个空DataFrame结构

if __name__ == __main__: #判断是否主窗口运行,如果是将代码保存为.py后运行,则需要这句,如果直接复制到命令窗口运行,则不需要这句。
  for i in range(len(keys)):
    #调用k-means算法,进行聚类离散化
    print(u正在进行“%s”的聚类... % keys[i])
    kmodel = KMeans(n_clusters = k, n_jobs = 4) #n_jobs是并行数,一般等于CPU数较好
    # print(data[[keys[i]]].as_matrix());exit();
    kmodel.fit(data[[keys[i]]].as_matrix()) #训练模型,as_matrix()转化为Numpy数组,返回指定数列
    # print(data[[keys[i]]]);exit();
    r1 = pd.DataFrame(kmodel.cluster_centers_, columns = [typelabel[keys[i]]]) #聚类中心,kmodel.cluster_centers_返回四个聚类中心点
    #选取K个初始类簇中心(通常是从数据集随机选取K个数据)的情况下,遍历数据集中所有点,计算到K个聚类中心点的距离,那个距离最近,
    # 就分配到该类簇中心所代表的类簇,分配完毕后,重新选取K个类簇的中心点(K个类簇各自的平均值),重新遍历数据集到K个类簇中心的距离,
    # 直到类簇中心点的变化很小,或者达到指定的迭代(计算)次数.
    # 缺点:可能收敛到局部最小值(受到初始簇中心的影响),
    # 在大规模数据集上收敛较慢(每次迭代均需要历遍数据集中的每一个数据样本,且迭代次数默认值为300)
    # print([typelabel[keys[i]]]);

    r2 = pd.Series(kmodel.labels_).value_counts() #分类统计,K个聚类各有多少个数据点
    #DataFrame和Series是pandas的两种数据结构,series理解为索引数组,DataFrame是Series组成的二维数据,具有航索引和列索引,形状理解为矩阵

    r2 = pd.DataFrame(r2, columns = [typelabel[keys[i]]+n]) #转为DataFrame,记录各个类别的数目
    # print(r2);exit();
    r = pd.concat([r1, r2], axis = 1).sort_values(typelabel[keys[i]]) #匹配聚类中心和类别数目,sort_values按某列排序
    # print(r);exit();
    r.index = [1, 2, 3, 4]
    
    r[typelabel[keys[i]]] = pd.Series.rolling(r[typelabel[keys[i]]], 2).mean() #rolling_mean()用来计算相邻2列的均值
    # (废弃rolling_mean,用Series.rolling().mean()代替),以此作为边界点。
    r[typelabel[keys[i]]][1] = 0.0 #这两句代码将原来的聚类中心改为边界点。
    result = result.append(r.T)

  result = result.sort_index() #以Index排序,即以A,B,C,D,E,F顺序排
  result.to_excel(processedfile)

 

k-means聚类算法(代码片段)

 K-means聚类算法算法优缺点: 优点:容易实现缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢使用数据类型:数值型数据算法思想k-means算法实际上就是通过计算不同样本间的距离来判断他们的相近关系的,相... 查看详情

聚类算法k-means原理及实现(代码片段)

学习目标掌握聚类算法实现过程知道K-means算法原理知道聚类算法中的评估模型说明K-means的优缺点了解聚类中的算法优化方式知道特征降维的实现过程应用Kmeans实现聚类任务一、 聚类算法简介1.1认识聚类算法使用不同的聚类准... 查看详情

机器学习-聚类kmeans(代码片段)

...法:K-Means算法。K-Means算法在无监督学习,尤其是聚类算法中是最为基础和重要的一个算法。它实现起来非常简单。聚类效果也很不错的,因此应用非常广泛。本文将会从以下8个方面进行详细的讲解:算法思想无... 查看详情

k-means聚类与em算法(代码片段)

...合模型的关系   二:K-means的原理 K-means(K均值聚类)是一种基于中心的聚类算法,通过迭代,将样本分到K个类中,使每个样本与其所属类中心的距离之和最小。 1 定义损 查看详情

k-means聚类算法及python代码实现(代码片段)

K-means聚类算法(事先数据并没有类别之分!所有的数据都是一样的)1、概述K-means算法是集简单和经典于一身的基于距离的聚类算法采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为类... 查看详情

机器学习笔记之谱聚类k-means聚类算法介绍(代码片段)

机器学习笔记之谱聚类——K-Means聚类算法介绍引言回顾:高斯混合模型聚类任务基本介绍距离计算k-Means\\textk-Meansk-Means算法介绍k-Means\\textk-Meansk-Means算法示例k-Means\\textk-Meansk-Means算法与高斯混合模型的关系k-Means\\textk-Meansk-Me... 查看详情

机器学习笔记之谱聚类k-means聚类算法介绍(代码片段)

机器学习笔记之谱聚类——K-Means聚类算法介绍引言回顾:高斯混合模型聚类任务基本介绍距离计算k-Means\\textk-Meansk-Means算法介绍k-Means\\textk-Meansk-Means算法示例k-Means\\textk-Meansk-Means算法与高斯混合模型的关系k-Means\\textk-Meansk-Me... 查看详情

k-means聚类算法一文详解+python代码实例(代码片段)

目录前言一、聚类分析二、K-means原理1.距离度量算法欧几里得距离(欧氏距离)曼哈顿距离切比雪夫距离2.K-means算法思想三.K-means算法实现step1:选取K值1.手肘法python代码:2.轮廓系数法python代码: step2:计算初始化K... 查看详情

k-means算法实现网页聚类(代码片段)

...学期的信息内容安全课程设计报告,我的选题是使用聚类算法实现网页聚类希望对你的课设或者项目有帮助文章目录一、选题内容二、方案设计内容2.1、解析网站2.2、过滤停用词2.3、分词处理2.4、权重值及向量化表示2.5、聚... 查看详情

基于matlab的kmeans聚类算法的仿真与分析(代码片段)

...基础二、核心程序三、测试结果一、理论基础    K-means聚类算法是硬聚类算法,是典型的基于原型的目标函数聚类分析算法点到原型——簇中心的某种距离和作为优化的目标函数,采用函数求极值的方法得到迭代运算... 查看详情

k-means算法原理(代码片段)

1.聚类K-means算法是一种常用的聚类算法,所谓的聚类就是指给定NNN个样本的数据集,需要构造kkk个簇(类),使得这kkk个簇之间的关系最小。2.K-means算法基本步骤随机初始化kkk个点,作为聚类中心在第iii次... 查看详情

基于k-means聚类算法进行客户人群分析(代码片段)

摘要:在本案例中,我们使用人工智能技术的聚类算法去分析超市购物中心客户的一些基本数据,把客户分成不同的群体,供营销团队参考并相应地制定营销策略。本文分享自华为云社区《基于K-means聚类算法进行... 查看详情

学习日记(2.22-2.21k-means)(代码片段)

K-means算法K-means算法简介k均值聚类算法(k-meansclusteringalgorithm)是一种迭代求解的聚类分析算法,其步骤是,预将数据分为K组,则随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每... 查看详情

聚类算法(k-means&agnes&dbscan)(代码片段)

一、聚类算法基本概念1.定义:聚类就是按照某个特定标准(如距离准则)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大。即聚类后同一类的数据尽可能聚集到一起,不同数据尽量分... 查看详情

基于聚类算法k-means的图像分割(代码片段)

importnumpyasnpfromPILimportImagefromsklearn.clusterimportKMeansdeflodaData(filePath):f=open(filePath,'rb')data=[]img=Image.open(f)m,n=img.sizeforiinrange(m):forjinrange(n):#注意 查看详情

机器学习聚类算法(代码片段)

目录1认识聚类算法1.1聚类算法在现实中的应用1.2聚类算法的概念1.3聚类与分类最大的区别1.4小结2聚类算法api初步使用2.1api介绍2.2案例2.2.1流程分析2.2.2代码实现2.3小结3聚类算法实现流程3.1k-means聚类步骤3.2案例练习3.3小结1认识聚... 查看详情

机器学习聚类算法(代码片段)

目录1认识聚类算法1.1聚类算法在现实中的应用1.2聚类算法的概念1.3聚类与分类最大的区别1.4小结2聚类算法api初步使用2.1api介绍2.2案例2.2.1流程分析2.2.2代码实现2.3小结3聚类算法实现流程3.1k-means聚类步骤3.2案例练习3.3小结1认识聚... 查看详情

[机器学习]二分k-means算法详解(代码片段)

二分k-means算法  二分k-means算法是分层聚类(Hierarchicalclustering)的一种,分层聚类是聚类分析中常用的方法。分层聚类的策略一般有两种:聚合。这是一种自底向上的方法,每一个观察者初始化本身为一类,然后两两结合分裂... 查看详情