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 相关文章推荐
Python struct模块解析
Jun 12 Python
Python生成随机密码
Mar 10 Python
python实现颜色rgb和hex相互转换的函数
Mar 19 Python
Python中分数的相关使用教程
Mar 30 Python
优化Python代码使其加快作用域内的查找
Mar 30 Python
浅谈Python中copy()方法的使用
May 21 Python
Python连接mysql数据库的正确姿势
Feb 03 Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
pandas中去除指定字符的实例
May 18 Python
Python类反射机制使用实例解析
Dec 30 Python
Python+Kepler.gl实现时间轮播地图过程解析
Jul 20 Python
Python函数对象与闭包函数
Apr 13 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
php文件缓存类汇总
2014/11/21 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
Redis构建分布式锁
2017/03/28 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
详解Javascript ES6中的箭头函数(Arrow Functions)
2016/08/24 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
如何选择适合你的JavaScript框架
2017/11/20 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
JavaScript模块详解
2017/12/18 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
js通过canvas生成图片缩略图
2020/10/02 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
[01:23]2014DOTA2国际邀请赛 球迷无处不在Ti现场世界杯受关注
2014/07/10 DOTA
python实现按长宽比缩放图片
2018/06/07 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
中学生学雷锋演讲稿
2014/04/26 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
观后感开头
2015/06/19 职场文书
小学语文教师研修日志
2015/11/13 职场文书
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android