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网络编程学习笔记(10):webpy框架
Jun 09 Python
pygame播放音乐的方法
May 19 Python
MySQL中表的复制以及大型数据表的备份教程
Nov 25 Python
Python线性回归实战分析
Feb 01 Python
python生成以及打开json、csv和txt文件的实例
Nov 16 Python
python pygame模块编写飞机大战
Nov 20 Python
python re库的正则表达式入门学习教程
Mar 08 Python
python制作填词游戏步骤详解
May 05 Python
python常用数据重复项处理方法
Nov 22 Python
Pytorch .pth权重文件的使用解析
Feb 14 Python
python实现图像高斯金字塔的示例代码
Dec 11 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 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
资料注册后发信小技巧
2006/10/09 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
JQuery live函数
2010/12/24 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
Vue组件开发初探
2017/02/14 Javascript
vue 中filter的多种用法
2018/04/26 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
简单实现python爬虫功能
2015/12/31 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
python实现飞机大战小游戏
2019/11/08 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
基于python实现生成指定大小txt文档
2020/07/20 Python
医药营销专业个人自荐信
2013/09/29 职场文书
车工岗位职责
2013/11/26 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
班级出游活动计划书
2014/08/15 职场文书
质量月活动总结
2014/08/26 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
学校四风对照检查材料
2014/08/28 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
市场营销计划书范文
2015/01/16 职场文书
音乐教师求职信范文
2015/03/20 职场文书
交通安全温馨提示语
2015/07/14 职场文书
应收账款管理制度
2015/08/06 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python
idea下配置tomcat避坑详解
2022/04/12 Servers