对于K 均值聚类的尝试
K均值聚类可以应用于探索性的研究,K均值算法也可以用Python里的Scikit-learn库实现,在Scikit-learn中的cluster程序包可以调用到Kmeans()函数,十分方便,以下是依照课件资料照葫芦画瓢,对于K均值聚类的尝试
例:采集生产的一种果汁饮料含量数据,用K均值算法实现对该饮料类别的判定,包括果汁含量偏 ,糖分含量
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv(‘xxxxxxxxx’)#输入数据集文件所在位置
常规的导入数据,只需要改文件位置
x = df.iloc[:,0:2] #取df的2列为X变量
x = np.array(X.values) # 把X化为数组形式
plt.scatter(X[:, 0], X[:, 1], s=20, marker='o', c='b')
plt.xlabel('juice')
plt.ylabel('sweet')
这段代码可以将pandasframe格式的数据转化为数组形式,并绘制其散点图。可以用于初步判断之后分为几类,由下图得,可以大致分为4类
PS:对于散点图的设置
from sklearn.cluster import KMeans #导入kmeans算法库
n_clusters_four=4 #设置聚类结果的类簇为4
kmean = KMeans(n_clusters_four) #设定算法为KMeans算法
kmean.fit(X) #进行聚类算法训练
这一段直接照抄,根据之前的判断决定分为几类
PS:对于Kmeans()的参数表格
例如
KMeans(algorithm='auto', copy _x=True, init=k-means ++ max_i-ter=300,
n_clusters =4, n_init =10, n_jobs =1, precompute_distances=’auto’,random
state= None, tol=00001, verbose =0)#algorithm='auto' 算法选取为auto
#init=k-means ++ 初始值选取
#max_i-ter=300 最大迭代300次
#n_clusters =4 分为4类
#n_init =10 运行次数10次
输出聚类结果并评估聚类效果
from sklearn import metrics #导入metrics评估模块
y_pred = kmean.predict(X) #根据聚类结果预测每个X所对应的类簇
print(metrics.calinski_harabasz_score(X, y_pred)) #采用CH指标评估聚类结果
labels = kmean.labels_ #输出每一样本的聚类的类簇标签
centers = kmean.cluster_centers_ #输出聚类的类簇中心点
print('各类簇标签值:', labels)
print('各类簇中心:', centers)
对于CH指标:CH指标是样本的类内离差矩阵(紧密度)与类间离差矩阵(分离度)的测度,其最大
值对应的类数作为最佳聚类数。计算公式为:
说实话我看不懂,但是只要记住CH指标值越大,代表着类自身越紧密,类与类之间越分散,就是更优的聚类结果
运行结果
数据分析:
CH值188
1.第1个中心点的特征值相对较大,表明该类簇的果汁饮料,其果汁含量与糖分含量都相对大一些。
2.第2个中心点则表明该类簇的果汁饮料,其果汁含量接近标准含量,但糖分含量相对较小一些;
3.第3个中心点的特征值相对较小,表明该类簇的果汁饮料,其果汁含量与糖分含量都相对小一些。
4.第4个中心点则表明该类簇的果汁饮料,其果汁含量相对较小一些,而糖分含量又相对较大一些
聚类结果及其各类簇中心点的可视化
markers = ['o', '^', '*', 's'] #设置散点图标记列表
colors = ['r', 'b', 'g', 'peru'] #设置散点图颜色列表
plt.figure(figsize=(7, 5)) #设置图形大小
# 画每个类簇的样本点
for c in range(n_clusters_four):cluster = X[labels == c] #根据不同分类值c筛选X#按照c的不同取值选取相应样本点、标记、颜色,画散点图plt.scatter(cluster[:, 0], cluster[:, 1], marker=markers[c], s=20, c=colors[c])
# 画出每个类簇中心点
plt.scatter(centers[:, 0], centers[:, 1],marker='o', c="black", alpha=0.9, s=50)
# 设置坐标轴的label
plt.xlabel('juice')
plt.ylabel('sweet')
plt.show()
结果
对于K 均值聚类的尝试相关推荐
- spss聚类分析_SPSS聚类分析 I K均值聚类法案例实操
- 点击上方"中国统计网"订阅我吧!- 文末领取医疗行业报告 今天想写一下聚类分析方法之一:K-Mean聚类法 01聚类分析模型简介 (1)聚类分析没有过多的统计理论支持,也没有统 ...
- EM算法应用:k均值聚类(k-means)和高斯混合模型(GMM)
文章目录 k-means聚类 EM角度的理解 算法流程 特点 k值选择 局限性 高斯混合模型 GMM的问题描述 1,明确隐变量 2.EM算法的E步:确定Q函数 3. EM算法的E步 4. 停止条件 上 ...
- K均值聚类关于初始聚类中心选取的一种改进(python程序)
本程序是K均值聚类关于初始聚类中心选取的一种改进,原理来自于周志华的机器学习,这里只是尝试用python实现下.刚开始学习python,可能有问题大家觉得有用就借鉴下,如果哪里有问题还望指正.关于K均 ...
- python机器学习案例系列教程——k均值聚类、k中心点聚类
全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 上一篇我们学习了层次聚类.层次聚类只是迭代的把最相近的两个聚类匹配起来.并没有给出能给出多少的分组.今天我们来研究一个K均值聚类.就是 ...
- python机器学习库sklearn——k均值聚类
全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 k均值聚类的相关的知识内容可以参考 http://blog.csdn.net/luanpeng825485697/article/de ...
- 机器学习工程师 — Udacity 电影评分的 k 均值聚类
电影评分的 k 均值聚类 假设你是 Netflix 的一名数据分析师,你想要根据用户对不同电影的评分研究用户在电影品位上的相似和不同之处.了解这些评分对用户电影推荐系统有帮助吗?我们来研究下这方面的数 ...
- 使用遗传算法和模拟退火改进的K均值聚类
1.摘要 聚类问题可以转化为对准则函数的最优化求值问题.常见的K均值聚类算法对初值敏感,容易陷入局部最优,特别是对于分界面模糊的样本聚类能力较差. 遗传算法可以在全局上随机搜索最优解,因此将聚类问题转 ...
- K均值聚类的理解和实现
目录 1. 距离的测度 1.1 欧式距离 1.2 马氏距离 1.2.1 利用马氏距离对数据进行归一化 1.2.2 利用马氏距离进行分类 2. K均值的基本理论 2.1 K均值的原理和实现 2.2 K均 ...
- opencv入门:支持向量机,K均值聚类
支持向量机 支持向量机是一种二分类模型,目标是寻找一个标准(称为超平面)对样本数据进行分割,分割的原则是确保分类最优化(类别之间的间隔最大),当数据集较小时,使用支持向量机进行分类非常有效.支持向量机 ...
最新文章
- 论文作者串通抱团、威胁审稿人,ACM Fellow炮轰「同行评审」作弊
- 【PP】长交期计划(LTP)简介
- 管理费用负数报不了怎么办_我的心脏血管堵了很久,大夫说打不开了,我可怎么办?...
- android广告平台的介绍
- 【推荐】Flex与Flash组合开发最佳实践__Combain FlexFlash
- Arduino编译bootloader
- 正则表达式大全(汇总)
- [Java 泥水匠] Java Components 之一:Java String (肯定有你不懂的)
- bzoj 3437 小p的农场
- 比较两个字符数组是否相等_Java比较两个数组是否相等(equals())
- 微信H5页面ios分享失效
- 安装MongoDB出现Verify that you have sufficient privileges to start system services 十秒解决方案
- localStorage的使用方法
- IOS视频编辑,视频裁剪,视频拼接,音频处理,视频处理
- 关于网站504问题排查
- R语言实战读书笔记(八)回归
- CVS命令深入研究 zz
- Linux 超级终端 不显示,超级终端怎么设置,超级终端密码不显示
- 联想启天m420刷bios_联想启天M420台式机怎么装win7系统(完美解决usb)
- DOM基于inpho软件二次加工的出图方法
热门文章
- OKHTTP系列(九)---http请求头(header)作用
- Excel中如果对合并单元格求和
- 独立同分布的大样本OLS回归
- 移动app手机物理键返回、后退、上一页面并重新加载页面数据
- Windows电脑蓝牙打电话-预研总结
- Java_Save could not be completed. Try File> Save As. if the problem persists.
- java 约分_约分的方法
- 前后端项目的糅合模式mashup
- oracle中活着的写法,oraclekk
- android t9搜索算法,T9拨号盘搜索和排序算法