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 相关文章推荐
Python3基础之条件与循环控制实例解析
Aug 13 Python
wxpython实现图书管理系统
Mar 12 Python
解决python3 网络请求路径包含中文的问题
May 10 Python
Django使用详解:ORM 的反向查找(related_name)
May 30 Python
ubuntu 16.04下python版本切换的方法
Jun 14 Python
Python如何调用JS文件中的函数
Aug 16 Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
django 框架实现的用户注册、登录、退出功能示例
Nov 28 Python
Python实现大数据收集至excel的思路详解
Jan 03 Python
python3.7添加dlib模块的方法
Jul 01 Python
Python 发送邮件方法总结
Aug 10 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
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
色色整理的PHP面试题集锦
2012/03/08 PHP
php简单统计中文个数的方法
2016/09/30 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
vue.js利用Object.defineProperty实现双向绑定
2017/03/09 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
详解python3中tkinter知识点
2018/06/21 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
2020/07/03 Python
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
比利时买床:Beter Bed
2017/12/06 全球购物
EJB的激活机制
2013/10/25 面试题
亲子运动会的活动方案
2014/08/17 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
老公保证书怎么写
2015/02/26 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书