作业3-k均值算法
4. 作业:
1). 扑克牌手动演练k均值聚类过程:>30张牌,3类
2). *自主编写K-means算法 ,以鸢尾花花瓣长度数据做聚类,并用散点图显示。(加分题)
3). 用sklearn.cluster.KMeans,鸢尾花花瓣长度数据做聚类,并用散点图显示.
4). 鸢尾花完整数据做聚类并用散点图显示.
5).想想k均值算法中以用来做什么
答:
(1)
第一轮:13、10、5

第二轮:13、9、4

(2)
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
import numpy as np
#导入数据
iris = load_iris()
data = iris.data # 数据值
data.shape # 可知数据的总数和属性个数
n = len(data) # 数据集样本个数
m = data.shape[1] # 数据的属性个数
# 类中心个数(1-5)
k = 3
dist = np.zeros([n, k+1]) # k+1是最后一列要归类
# 选中心
center = data[:k, :] # k为3所以是前三行所有属性
centerNew = np.zeros([k, m]) # 初始化新的类中心
while True:
# 求距离
for i in range(n):
for j in range(k):
dist[i, j] = np.sqrt(sum((data[i, :]-center[j, :])**2)) # 求欧式距离
# 归类
dist[i, k] = np.argmin(dist[i, :k])
for i in range(k):
index = dist[:, k] == i
centerNew[i, :] = data[index, :].mean(axis=0)
# 判定结果
if np.all((center == centerNew)):
break
else:
center = centerNew
print("聚类结果:\n", dist[:, k])
# print(data[:,k])
plt.scatter(data[:,2], data[:,2], c=dist[:,2], s=50, cmap='rainbow')
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体
plt.title("K-mean-鸢尾花花瓣长度做聚类的散点图")
plt.show()


(3)
# 用sklearn.cluster.KMeans,鸢尾花花瓣长度数据做聚类,并用散点图显示.
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans iris = load_iris() # 导入鸢尾花数据
# print(iris)
X = iris.data[:, 2] # 第三列为花瓣长度
X = X.reshape(-1, 1) # 令新数组列为1
# print(X)
y = KMeans(n_clusters=3) # 模型构建(类中心数为3)
y.fit(X) # 模型训练
kc = y.cluster_centers_ # 聚类中心
y_kmeans = y.predict(X) # 预测每个样本的聚类索引
print("聚类结果:\n", y_kmeans)
print("聚类中心:\n", kc)
plt.scatter(X[:, 0], X[:, 0], c=y_kmeans, s=50, cmap='rainbow') # 画散点图
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体
plt.title("sklearn.cluster.KMeans-鸢尾花花瓣长度做聚类的散点图")
plt.show()


(4)
# 鸢尾花完整数据做聚类并用散点图显示.
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans iris = load_iris() # 导入鸢尾花数据
X = iris.data # 鸢尾花完整数据
# print(X)
y = KMeans(n_clusters=3) # 模型构建(类中心数为3)
y.fit(X) # 模型训练
kc = y.cluster_centers_ # 聚类中心
y_kmeans = y.predict(X) # 预测每个样本的聚类索引
print("聚类结果:\n", y_kmeans)
print("聚类中心:\n", kc)
plt.scatter(X[:, 2], X[:, 3], c=y_kmeans, s=50, cmap='rainbow') # 画散点图
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体
plt.title("鸢尾花做聚类的散点图")
plt.show()


(5)可以通过k均值算法进行库存分类,例如按销售活动分组库存或者按制造指标对库存进行分组,也可以用来识别不同类型的癌症特征。
作业3-k均值算法的更多相关文章
- 聚类算法:K-means 算法(k均值算法)
k-means算法: 第一步:选$K$个初始聚类中心,$z_1(1),z_2(1),\cdots,z_k(1)$,其中括号内的序号为寻找聚类中心的迭代运算的次序号. 聚类中心的向量值可任意设 ...
- 一句话总结K均值算法
一句话总结K均值算法 核心:把样本分配到离它最近的类中心所属的类,类中心由属于这个类的所有样本确定. k均值算法是一种无监督的聚类算法.算法将每个样本分配到离它最近的那个类中心所代表的类,而类中心的确 ...
- 聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用
1.用python实现K均值算法 import numpy as np x = np.random.randint(1,100,20)#产生的20个一到一百的随机整数 y = np.zeros(20) ...
- 【机器学习】K均值算法(I)
K均值算法是一类非监督学习类,其可以通过观察样本的离散性来对样本进行分类. 例如,在对如下图所示的样本中进行聚类,则执行如下步骤 1:随机选取3个点作为聚类中心. 2:簇分配:遍历所有样本然后依据每个 ...
- Bisecting KMeans (二分K均值)算法讲解及实现
算法原理 由于传统的KMeans算法的聚类结果易受到初始聚类中心点选择的影响,因此在传统的KMeans算法的基础上进行算法改进,对初始中心点选取比较严格,各中心点的距离较远,这就避免了初始聚类中心会选 ...
- KMeans (K均值)算法讲解及实现
算法原理 KMeans算法是典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大.该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标 ...
- 聚类分析K均值算法讲解
聚类分析及K均值算法讲解 吴裕雄 当今信息大爆炸时代,公司企业.教育科学.医疗卫生.社会民生等领域每天都在产生大量的结构多样的数据.产生数据的方式更是多种多样,如各类的:摄像头.传感器.报表.海量网络 ...
- K均值算法
为了便于可视化,样本数据为随机生成的二维样本点. from matplotlib import pyplot as plt import numpy as np import random def k ...
- K均值算法-python实现
测试数据展示: #coding:utf-8__author__ = 'similarface''''实现K均值算法 算法摘要:-----------------------------输入:所有数据点 ...
- spark Bisecting k-means(二分K均值算法)
Bisecting k-means(二分K均值算法) 二分k均值(bisecting k-means)是一种层次聚类方法,算法的主要思想是:首先将所有点作为一个簇,然后将该簇一分为二.之后选择能最大程 ...
随机推荐
- CentOS6.10下安装mysql-5.7.24
卸载原有mysql 因为mysql数据库在Linux上实在是太流行了 所以目前下载的主流Linux系统版本基本上都集成了mysql数据库在里面 我们可以通过如下命令来查看我们的操作系统上是否已经安装了 ...
- JS事件之onmouseover 、onmouseout 与onmouseenter 、onmouseleave区别
疫情过后回武汉的第一天打卡,今天偶然遇到一个问题onmouseover .onmouseout 与onmouseenter .onmouseleave这些事件的区别,也看了一些博客,感觉不是很清楚,所 ...
- D 楼房重建
时间限制 : - MS 空间限制 : - KB 评测说明 : 1s,256m 问题描述 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊 ...
- Oracle数据库表和表列讲解
如果将数据库比作一个存储东西的储物柜,表就像是储物柜上的各个抽屉,每个抽屉分门别类地存放了各种数据,在设计和规划数据库时,表的定义和规划往往相当重要,良好的表设计决定了程序人员编写程序的便利性与数据库 ...
- JAVA设计模式——(2)策略模式
定义 定义一种算法,将每个算法都封装起来,并且使它们之间可以互换.是一种行为类模式. 举例 为了通俗易懂,我们拿各国的税率计算来举例子: 假设当前我们的程序只能支持计算中国和美国的税率: public ...
- 1062 Talent and Virtue (25分)(水)
About 900 years ago, a Chinese philosopher Sima Guang wrote a history book in which he talked about ...
- 完整微信小程序授权登录页面教程
完整微信小程序授权登录页面教程 1.前言 微信官方对getUserInfo接口做了修改,授权窗口无法直接弹出,而取而代之是需要创建一个button,将其open-type属性绑定getUseInfo方 ...
- python基本知识点if、while、等等
给予Python的相关知识点: 主要是对于基本语句的相关使用if else while for等先关的应用,以及步骤如下: 尝试编程如下:还有就是对于 import math import rando ...
- Flask 入门 (十一)
上篇文章讲的是一对多,这篇文章应该说多对多了 但是多对多无法用两张表来实现,因为外键......,你懂,哈哈哈!,所以中间需要加一张表来实现 承接上文,修改main.py中的代码如下: #encodi ...
- CVE-2019-0193 远程命令执行-漏洞复现
0x01 漏洞简介 Apache Solr 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.此次漏洞出现在Apache Solr的 ...