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实现多线程暴力破解登陆路由器功能代码分享
Jan 04 Python
简单的Python2.7编程初学经验总结
Apr 01 Python
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
pandas系列之DataFrame 行列数据筛选实例
Apr 12 Python
利用Django提供的ModelForm增删改数据的方法
Jan 06 Python
python计算n的阶乘的方法代码
Oct 25 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
Dec 04 Python
使用 Supervisor 监控 Python3 进程方式
Dec 05 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
Jan 10 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
Mar 09 Python
Python的信号库Blinker用法详解
Dec 31 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
探讨方法的重写(覆载)详解
2013/06/08 PHP
yii实现model添加默认值的方法(2种方法)
2016/01/06 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
原生js实现无缝轮播图效果
2017/01/11 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
AngularJs 常用的过滤器
2017/05/15 Javascript
微信小程序使用Promise简化回调
2018/02/06 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
初步认识Python中的列表与位运算符
2015/10/12 Python
python re模块的高级用法详解
2018/06/06 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
python图形用户接口实例详解
2019/12/16 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
基于python3生成标签云代码解析
2020/02/18 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
init进程的作用
2015/08/20 面试题
银行职员思想汇报
2013/12/31 职场文书
机电职业生涯规划书范文
2014/03/08 职场文书
自荐信格式范文
2015/03/04 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书