聚类分析 - K-means - Python代码实现

算法简介

K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。

算法过程如下:

1)从N个文档随机选取K个文档作为中心点;

2)对剩余的每个文档测量其到每个中心点的距离,并把它归到最近的质心的类;

3)重新计算已经得到的各个类的中心点;

4)迭代2~3步直至新的质心与原质心相等或小于指定阈值,算法结束。

 

算法优缺点:

优点:

  1. 对处理大数据集,该算法保持可伸缩性和高效性
  2. 算法快速、简单,易于理解;

缺点:

  1. 在 K-means 算法中 K 是事先给定的,这个 K 值的选定是非常难以估计的,具体应用中只能靠经验选取;
  2. 对噪声和孤立点数据敏感,导致均值偏离严重;
  3. 当数据量非常大时,算法的时间开销是非常大的;
  4. 初始聚类中心的选择对聚类结果有较大的影响,一旦初始值选择的不好,可能无法得到有效的聚类结果。

代码实现

第一步:读取文件,简单查看数据

import pandas as pd
import numpy as np
from pandas import DataFrame,Series
from sklearn.cluster import KMeans
from sklearn.cluster import Birch#读取文件
datafile = u'E:\\pythondata\\julei.xlsx'#文件所在位置,u为防止路径中有中文名称,此处没有,可以省略
outfile = u'E:\\pythondata\\julei_out.xlsx'#设置输出文件的位置
data = pd.read_excel(datafile)#datafile是excel文件,所以用read_excel,如果是csv文件则用read_csv
d = DataFrame(data)
d.head()
 assistsheighttimeagepoints
00.088820136.02280.5885
10.139919839.32300.8291
20.074719838.80260.4974
30.098319140.71300.5772
40.127619638.40280.5703

 列名:助攻,身高,比赛时间,年龄,得分,根据这几项进行聚类。

 

第二步:聚类

#聚类
mod = KMeans(n_clusters=3, n_jobs = 4, max_iter = 500)#聚成3类数据,并发数为4,最大循环次数为500
mod.fit_predict(d)#y_pred表示聚类的结果#聚成3类数据,统计每个聚类下的数据量,并且求出他们的中心
r1 = pd.Series(mod.labels_).value_counts()
r2 = pd.DataFrame(mod.cluster_centers_)
r = pd.concat([r2, r1], axis = 1)
r.columns = list(d.columns) + [u'类别数目']
print(r)#给每一条数据标注上被分为哪一类
r = pd.concat([d, pd.Series(mod.labels_, index = d.index)], axis = 1)
r.columns = list(d.columns) + [u'聚类类别']
print(r.head())
r.to_excel(outfile)#如果需要保存到本地,就写上这一列

 

第三步:可视化,简单的标注上分为哪一类怎么能满足?当然要看看可视化效果,毕竟注意一目了然的判断聚类的效果

#可视化过程
from sklearn.manifold import TSNEts = TSNE()
ts.fit_transform(r)
ts = pd.DataFrame(ts.embedding_, index = r.index)import matplotlib.pyplot as plta = ts[r[u'聚类类别'] == 0]
plt.plot(a[0], a[1], 'r.')
a = ts[r[u'聚类类别'] == 1]
plt.plot(a[0], a[1], 'go')
a = ts[r[u'聚类类别'] == 2]
plt.plot(a[0], a[1], 'b*')
plt.show()

因为K-means 算法过于大众化,而且代码其实比较简单的,所以备注比较少,如果需要备注或者有任何疑问,欢迎留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据归一化 - MinMaxScaler()/MaxAbsScaler() - Python代码

目录 归一化 数据归一化的背景介绍 MinMaxScaler:归一到 [ 0,1 ] MaxAbsScaler:归一到 [ -1,1 ] 标准化 去均值,方差规模化 归一化 数据归一化的背景介绍 在之前做聚类分析的时候我们发现,聚类的…

loadrunner 配置远程监控windows服务器系统资源

今天决定监控远程windows xp上的系统资源,本来以为应该很好连接,在同一个局域网内,结果出了一堆问题,可能是第一次就让我遇到了一个棘手的操作系统,郁闷! (1)保证装有loadrunner的测…

Python数据清洗 - 洗什么?怎么洗?看完就明白了

目录 缺失值处理 删除缺失值 插补缺失值 不处理缺失值 重复值处理 异常值处理 遍历查找异常值,并根据规则调整大小 删除异常值 视为缺失值后进行插补 数据挖掘过程中,采集的原始数据里存在着各种不利于分析与建模工作的因素,比如数…

LeetCode 743. 网络延迟时间(最短路径)

文章目录1. 题目2. 解题2.1 弗洛伊德1. 题目 有 N 个网络节点,标记为 1 到 N。 给定一个列表 times,表示信号经过有向边的传递时间。 times[i] (u, v, w),其中 u 是源节点,v 是目标节点, w 是一个信号从源节点传递到…

逻辑回归 - sklearn (LR、LRCV、MLP、RLR)- Python代码实现

目录 LR(LogisticRegression) - 线性回归 LRCV(LogisticRegressionCV )- 逻辑回归 MLP(MLPRegressor) - 人工神经网络 RLR(RandomizedLogisticRegression)-随机逻辑回归 logisti…

轻松看懂机器学习十大常用算法 - 基础知识

通过本篇文章可以对机器学习ML的常用算法有个常识性的认识,没有代码,没有复杂的理论推导,就是图解一下,知道这些算法是什么,它们是怎么应用的,例子主要是分类问题。 算法如下: 决策树随机森林算…

数据离散化 - 等宽等频聚类离散 - Python代码

目录 等宽离散 等频离散 聚类离散 附录: rolling_mean函数解释 cut函数解释 其他数据预处理方法 一些数据挖掘算法中,特别是某些分类算法(eg:ID3算法、Aprioroi算法等),要求数据是分类属性形式。因此常常需要将…

LeetCode 1444. 切披萨的方案数(DP)

1. 题目 给你一个 rows x cols 大小的矩形披萨和一个整数 k ,矩形包含两种字符: ‘A’ (表示苹果)和 ‘.’ (表示空白格子)。 你需要切披萨 k-1 次,得到 k 块披萨并送给别人。 切披萨的每一刀…

获取数据 - 将Excel文件读入矩阵matrix中 - Python代码

机器学习中,很多算法的计算逻辑是基于数学的,免不了求特征值和特征向量这种事情,因此,在数据预处理的时候,将数据源中的数据转储成矩阵格式是很有必要的。 原数据: 代码: import numpy as np…

Visual Studio 2010 调试 C 语言程序

转:http://woyouxian.net/c/using_visual_studio_write_pure_ansi_c_program.html 本篇文章讲述如何用微软的 Visual Studio 编写纯C语言程序,这里的纯C语言,指的是 ANSI C 语言。 要在 Visual Studio 里创建一个 ANSI C语言程序,…

Silverlight 4之旅(三)数据绑定(中)

在上篇文章中我们已经看过了绑定的基础知识,以及绑定数据源的选择问题。在本篇文章中我们看下绑定时Target的现实的问题。 自定义显示 很多时候我们的DataSource存储的数据并不可以直接用来显示,比如说我们对于Bool类型,需要显示为“是”或则…

LeetCode 第 28 场双周赛(505/2144,前23.6%)

文章目录1. 比赛结果2. 题目1. LeetCode 5420. 商品折扣后的最终价格 easy2. LeetCode 5422. 子矩形查询 medium3. LeetCode 5423. 找两个和为目标值且不重叠的子数组 medium4. LeetCode 5421. 安排邮筒 hard1. 比赛结果 两题选手😂,前两题很水&#xf…

决策树模型 - (ID3算法、C4.5算法) - Python代码实现

目录 算法简介 信息熵(Entropy) 信息增益(Information gain) - ID3算法 信息增益率(gain ratio) - C4.5算法 源数据 代码实现 - ID3算法 代码实现 - C4.5算法 画决策树代码-treePlotter 算法简介 决策数(Decision Tree)在机器学习中也是比较常见的一种算法&#xff0c…

重复值处理 - 清洗 DataFrame 中的各种重复类型 - Python代码

目录 所有列是否完全重复 指定某一列是否重复 根据多列判断是否重复,防止误删数据 其他数据预处理方法 通过八爪鱼或者火车头等采集器从全网抓取的数据中,总会存在各种各样的重复数据,为保证数据在使用过程中的准确性,总要先进…

Silverlight带关闭动画的内容控件,可移动的内容控件(一)

本例给大家介绍两个自定义控件&#xff0c;一个有显示和关闭两种状态&#xff0c;在状态切换时有动画效果。另外一个是可以拖动的内容控件&#xff0c;可以制作能拖动的面板。 A&#xff0e;带关闭动画的内容控件。 .xaml View Code <ResourceDictionary xmlns"htt…

Autodesk云计算系列视频 --- 云计算与Civil 3D

前面的视频介绍了云计算与AutoCAD/Revit/Inventor的结合&#xff0c;这一节是云计算与Civil 3D的结合例子&#xff1a; 演示中使用的云计算程序源代码可以从下面链接下载&#xff1a; The sample code used in the demonstration is available here. 转载于:https://www.cnblo…

模型评价 - 机器学习与建模中怎么克服过拟合问题?

上一篇博客链接&#xff1a; 机器学习与建模中 - 判断数据模型拟合效果的三种方法 在上一篇博客中&#xff0c;我们谈到了使用损失函数来判断模型的拟合效果。但是拟合效果比较好的模型不一定是最好的模型&#xff0c;建模的最终目的是为了预测&#xff0c;因此预测最精准的模…

因子分析模型

主成分分析和因子分析 #包载入 library(corrplot) library(psych) library(GPArotation) library(nFactors) library(gplots) library(RColorBrewer)1234567 主成分分析 主成分分析&#xff08;PCA&#xff09;是对针对大量相关变量提取获得很少的一组不相关的变量&#xff…

因子分析模型 - 案例按步骤详解 - (SPSS建模)

一、SPSS中的因子分析。 步骤: &#xff08;1&#xff09;定义变量&#xff1a;x1-财政用于农业的支出的比重,x2-第二、三产业从业人数占全社会从业人数的比重&#xff0c;x3-非农村人口比重&#xff0c;x4-乡村从业人员占农村人口的比重&#xff0c;x5-农业总产值占农林牧总…

神经网络 - 用单层感知器实现多个神经元的分类 - (Matlab建模)

训练样本矩阵&#xff1a; P [0.1 0.7 0.8 0.8 1.0 0.3 0.0 –0.3 –0.5 –1.5; 1.2 1.8 1.6 0.6 0.8 0.5 0.2 0.8 –1.5 –1.3]; 训练样本对应的分类&#xff1a; T [1 1 1 0 0 1 1 1 0 0 ;0 0 0 0 0 1 1 1 1 1]; 用MATLAB实现分类&…