3.k均值算法
时间:2020-04-16
本文章向大家介绍3.k均值算法,主要包括3.k均值算法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
自主编写K-means算法 ,以鸢尾花花瓣长度数据做聚类,并用散点图显示。
from numpy import *
import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import load_iris
data= load_iris()
iris_l = data.data[:,1:2]
y= len(iris_l)#150
m = iris_l.shape[1]#1
k = 3
dist = np.zeros([y,k+1])
#center
def initcent(x, k):
center = x[:k, :]
return center
#oushijuli
def nearest(x, center):
a=[]
for j in range(k):
a.append(abs(x-center[j,:]))
# print(a)
return a
#julei
def xclassify(x,dist, center):
for i in range(x.shape[0]):
dist[i,:k]=nearest(x[i,:],center)
dist[i, k] = np.argmin(dist[i,:k])
return dist
def kcmean(x, dist, center, k):
centerNew = np.zeros([k,m])
for c in range(k):
q = np.where(dist[:,k] == c)
n = np.mean(x[q])
if centerNew[c] != n:
centerNew[c] = n
return np.array(centerNew)
center = initcent(iris_l,k)
while True:
xclas = xclassify(iris_l, dist, center)
centerNew=kcmean(iris_l, xclas, center, k)
if all(center == centerNew):
break
else:
center = centerNew
a = iris_l.flatten()
plt.scatter(a, a, c=array(xclas[:,k]), s=50, cmap='rainbow', marker='p', alpha=0.5)
plt.show()
用sklearn.cluster.KMeans,鸢尾花花瓣长度数据做聚类,并用散点图显示
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
iris = load_iris()
data = iris['data']
long = data[:,1]
long = long.reshape(-1,1)
model = KMeans(n_clusters=3).fit(long)
pre = model.predict(long)
center = model.cluster_centers_
# print(long[:,0])
plt.scatter(long[:,0], long[:,0], c=pre, s=50, cmap='rainbow', marker='p', alpha=0.5)
plt.show()
鸢尾花完整数据做聚类并用散点图显示.
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
iris = load_iris()
data = iris['data']
model = KMeans(n_clusters=3).fit(data)
pre = model.predict(data)
center = model.cluster_centers_
plt.scatter(data[:,0], data[:,1], c=pre, s=50, cmap='rainbow', marker='p', alpha=0.5)
plt.show()
原文地址:https://www.cnblogs.com/lwwwjl123/p/12715822.html
- 【kaggle实战】从KNN,LR,SVM,RF到深度学习
- 开发 | 训练一个AI给颜值打分,公平公正!
- 【android开发】Android HAL模块实现
- 让剁手党洞察物体细节,“放大镜”当之无愧
- CSS3过渡,不再为JS动画而犯愁
- 【编程基础】c语言中获取整数和浮点数的符号位
- 前端特效开发 | JS实现聚光灯看图效果
- 【专业知识】Android主线程的消息系统(Handler\Looper)
- CSS3渐变,就是这么玩
- 前端特效开发 | 图片翻转的制作
- 【Windows编程】系列第四篇:使用Unicode编程
- CSS3蒙版 — 元旦快乐!
- 轮播图效果,不再局限于JS制作!
- 【解疑答惑】css中经常被忽略的代码陷阱
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 解决Centos6.0下出现protocol not available错误
- MYSQL删除大数据表经验总结
- 推荐4款堪比Google的搜索网站
- 那些年你走过下划线的坑
- 2018你该认真学Python了
- 服务端口占用案例分析
- 查看Linux系统版本信息记录
- JVM加载TimeZone读取文件优先级实战分析
- MYSQL临时表导致根分区爆满问题分析
- Shell遍历数字递增方法小记
- Elasticsearch UNASSIGNED索引分片问题分析
- 解决Elasticsearch分片未分配的问题「译」
- Linux下netstat命令常用方法推介
- Nginx Unit 1.0发布,可运行Go、Python、PHP等多种语言
- MYSQL命令pager推介