python中K-means算法基础知识点


Posted in Python onJanuary 25, 2021

能够学习和掌握编程,最好的学习方式,就是去掌握基本的使用技巧,再多的概念意义,总归都是为了使用服务的,K-means算法又叫K-均值算法,是非监督学习中的聚类算法。主要有三个元素,其中N是元素个数,x表示元素,c(j)表示第j簇的质心,下面就使用方式给大家简单介绍实例使用。

K-Means算法进行聚类分析

km = KMeans(n_clusters = 3)
km.fit(X)
centers = km.cluster_centers_
print(centers)

三个簇的中心点坐标为:

[[5.006 3.428 ]

[6.81276596 3.07446809]

[5.77358491 2.69245283]]

比较一下K-Means聚类结果和实际样本之间的差别:

predicted_labels = km.labels_
fig, axes = plt.subplots(1, 2, figsize=(16,8))
axes[0].scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Set1, 
        edgecolor='k', s=150)
axes[1].scatter(X[:, 0], X[:, 1], c=predicted_labels, cmap=plt.cm.Set1,
        edgecolor='k', s=150)
axes[0].set_xlabel('Sepal length', fontsize=16)
axes[0].set_ylabel('Sepal width', fontsize=16)
axes[1].set_xlabel('Sepal length', fontsize=16)
axes[1].set_ylabel('Sepal width', fontsize=16)
axes[0].tick_params(direction='in', length=10, width=5, colors='k', labelsize=20)
axes[1].tick_params(direction='in', length=10, width=5, colors='k', labelsize=20)
axes[0].set_title('Actual', fontsize=18)
axes[1].set_title('Predicted', fontsize=18)

k-means算法实例扩展内容:

# -*- coding: utf-8 -*- 
"""Excercise 9.4"""
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sys
import random

data = pd.read_csv(filepath_or_buffer = '../dataset/watermelon4.0.csv', sep = ',')[["密度","含糖率"]].values

########################################## K-means ####################################### 
k = int(sys.argv[1])
#Randomly choose k samples from data as mean vectors
mean_vectors = random.sample(data,k)

def dist(p1,p2):
 return np.sqrt(sum((p1-p2)*(p1-p2)))
while True:
 print mean_vectors
 clusters = map ((lambda x:[x]), mean_vectors) 
 for sample in data:
  distances = map((lambda m: dist(sample,m)), mean_vectors) 
  min_index = distances.index(min(distances))
  clusters[min_index].append(sample)
 new_mean_vectors = []
 for c,v in zip(clusters,mean_vectors):
  new_mean_vector = sum(c)/len(c)
  #If the difference betweenthe new mean vector and the old mean vector is less than 0.0001
  #then do not updata the mean vector
  if all(np.divide((new_mean_vector-v),v) < np.array([0.0001,0.0001]) ):
   new_mean_vectors.append(v) 
  else:
   new_mean_vectors.append(new_mean_vector) 
 if np.array_equal(mean_vectors,new_mean_vectors):
  break
 else:
  mean_vectors = new_mean_vectors 

#Show the clustering result
total_colors = ['r','y','g','b','c','m','k']
colors = random.sample(total_colors,k)
for cluster,color in zip(clusters,colors):
 density = map(lambda arr:arr[0],cluster)
 sugar_content = map(lambda arr:arr[1],cluster)
 plt.scatter(density,sugar_content,c = color)
plt.show()

到此这篇关于python中K-means算法基础知识点的文章就介绍到这了,更多相关python中K-means算法是什么内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
解决pycharm无法调用pip安装的包问题
May 18 Python
Django跨域请求CSRF的方法示例
Nov 11 Python
python添加模块搜索路径和包的导入方法
Jan 19 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
Dec 23 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
使用keras实现孪生网络中的权值共享教程
Jun 11 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
Python LMDB库的使用示例
Feb 14 Python
pandas 按日期范围筛选数据的实现
Feb 20 Python
浅谈Python从全局与局部变量到装饰器的相关知识
Jun 21 Python
python中HTMLParser模块知识点总结
Jan 25 #Python
pycharm配置QtDesigner的超详细方法
Jan 25 #Python
Python扫描端口的实现
Jan 25 #Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 #Python
Python实现京东抢秒杀功能
Jan 25 #Python
Python Process创建进程的2种方法详解
Jan 25 #Python
使用python对excel表格处理的一些小功能
Jan 25 #Python
You might like
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
javascript图片相似度算法实现 js实现直方图和向量算法
2014/01/14 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
HTML5实现留言和回复页面样式
2015/07/22 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
微信小程序 图片上传实例详解
2017/05/05 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
微信小程序左右滚动公告栏效果代码实例
2019/09/16 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
css3进阶之less实现星空动画的示例代码
2019/09/10 HTML / CSS
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
一个精品风格的世界:Atterley
2019/05/01 全球购物
娱乐地球:Entertainment Earth
2020/01/08 全球购物
abstract class和interface有什么区别
2013/08/04 面试题
殡葬服务心得体会
2014/09/11 职场文书
公司离职证明样本
2014/09/13 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
优秀班集体申报材料
2014/12/25 职场文书
技术员个人工作总结
2015/03/03 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python
详解Python描述符的工作原理
2021/06/11 Python
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS