机器学习python Kmeans聚类

2023-05-16

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.cluster import KMeans
from sklearn import metrics
from sklearn.metrics import silhouette_score
import matplotlib.pyplot as plt
'''容易收敛到局部最优解,需要预先设定类别数量'''
# 使用pandas分别读取训练数据与测试数据集
# digits_train = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/optdigits.tra', header=None)
# digits_test = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/optdigits.tes', header=None)
#
# # 从训练与测试数据集上都分离出64维度的像素特征与1维度的数字目标
# X_train = digits_train[np.arange(64)]
# y_train = digits_train[64]
#
# X_test = digits_test[np.arange(64)]
# y_test = digits_test[64]
#
# kmeans = KMeans(n_clusters=10)
# kmeans.fit(X_train)
# y_pred = kmeans.predict(X_test)
# #ARI指标通分类指标相似,用来评估数据本身带有正确的类别信息
# print(metrics.adjusted_rand_score(y_test,y_pred))

# #用轮廓系数来进行评价
# '''sc = bi-ai/max(bi,ai),bi是类别之间的分离度,ai是凝聚度'''
# plt.subplot(3,2,1)
# x1 = np.array([1, 2, 3, 1, 5, 6, 5, 5, 6, 7, 8, 9, 7, 9])
# x2 = np.array([1, 3, 2, 2, 8, 6, 7, 6, 7, 1, 2, 1, 1, 3])
# X = np.array([(1, 1), (2, 3), (3, 2), (1, 2), (5, 8), (6, 6), (5, 7), (5, 6), (6, 7), (7, 1), (8, 2), (9, 1), (7, 1), (9, 3)])
#
# plt.xlim([0, 10])
# plt.ylim([0, 10])
# plt.title('Instances')
# plt.scatter(x1, x2)
#
# colors = ['b', 'g', 'r', 'c', 'm', 'y', 'k', 'b']
# markers = ['o', 's', 'D', 'v', '^', 'p', '*', '+']
#
# clusters = [2, 3, 4, 5, 8]
# subplot_counter = 1
# sc_scores = []
# for t in clusters:
#     subplot_counter += 1
#     plt.subplot(3,2,subplot_counter)
#     kmeans_model = KMeans(n_clusters=t).fit(X)
#     for i,l in enumerate(kmeans_model.labels_):
#         plt.plot(x1[i], x2[i], color=colors[l], marker=markers[l], ls='None')
#     plt.xlim([0, 10])
#     plt.ylim([0, 10])
#     sc_score = silhouette_score(X, kmeans_model.labels_, metric='euclidean')
#     sc_scores.append(sc_score)
#     plt.title('K = %s, silhouette coefficient= %0.03f' % (t, sc_score))
#
# # 绘制轮廓系数与不同类簇数量的关系曲线。
# plt.figure()
# plt.plot(clusters, sc_scores, '*-')
# plt.xlabel('Number of Clusters')
# plt.ylabel('Silhouette Coefficient Score')
# plt.show()

import numpy as np
from sklearn.cluster import KMeans
from scipy.spatial.distance import cdist
import matplotlib.pyplot as plt
# 使用均匀分布函数随机三个簇,每个簇周围10个数据样本。
cluster1 = np.random.uniform(0.5, 1.5, (2, 10))
cluster2 = np.random.uniform(5.5, 6.5, (2, 10))
cluster3 = np.random.uniform(3.0, 4.0, (2, 10))

# 绘制30个数据样本的分布图像
X = np.hstack((cluster1, cluster2, cluster3)).T
plt.scatter(X[:,0], X[:, 1])
plt.xlabel('x1')
plt.ylabel('x2')
plt.show()
# 测试9种不同聚类中心数量下,每种情况的聚类质量,并作图
K = range(1, 10)
meandistortions = []

for k in K:
    kmeans = KMeans(n_clusters=k)
    kmeans.fit(X)
    meandistortions.append(sum(np.min(cdist(X, kmeans.cluster_centers_, 'euclidean'), axis=1)) / X.shape[0])

plt.plot(K, meandistortions, 'bx-')
plt.xlabel('k')
plt.ylabel('Average Dispersion')
plt.title('Selecting k with the Elbow Method')
plt.show()


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习python Kmeans聚类 的相关文章

随机推荐

  • 《自己动手写操作系统》初学笔记------软盘第一扇区写入问题解决方案

    这个学期刚刚学习了操作系统这门课 xff0c 我始终相信计算机学科是一门注重实践的学科 xff0c 从实践中感受学习计算机知识的快乐才是真谛 xff0c 恰巧让我碰到了 自己动手写操作系统 这本书 xff0c 刚一遇见很是兴奋 xff0c
  • CAS单点登录学习笔记二之部署CAS Server

    CAS Server 服务器部署 b 简介 b CAS Server 是一套基于 Java 实现的服务 xff0c 该服务以一个 Java Web Application 单独部署在与 servlet2 3 兼容的 Web 服务器上 xff
  • STM32标准库的引入视频课程-第3季第6部分-朱有鹏-专题视频课程

    STM32标准库的引入视频课程 第3季第6部分 1017人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第3季第6个课程 xff0c 本课程详细讲解了STM32官方新标准库3 5版本 xff0c 从理论到实践 xff0c 从
  • VMware虚拟机开机黑屏一系列问题解决方法

    VMware虚拟机开机黑屏一系列问题解决方法 虚拟机一开机就是黑屏 xff0c 网上看了很多方法 xff0c 都是以管理员身份运行VMware 或者是以管理员身份打开cmd 输入netsh winsock reset xff0c 再重启计算
  • vmware workstation vmx进程结束不了!!!

    打开任务管理器会看到有一个这个进程 xff0c 使用vmware的时候出现死机情况 xff0c 然后使用任务管理器结束vmware进程 xff0c 之后却发现资源监视器中有一个vmware vmx exe进程始终关不掉 xff0c 获得管理
  • 形式化方法课程学习笔记(一)|Cop的安装以及简单使用

    一 Cop的介绍以及安装 1 Cop介绍 Coq是一个著名的 xff0c 也被广泛使用的正式证明管理系统 它提供了一种正式的语言来编写数学定义 可执行的算法和定理 xff0c 以及用于机器检查证明的半交互式开发的环境 有关Coq的更多信息
  • 虚拟机共享文件夹制作|Ubuntu与本机文件共享

    一 引言 使用虚拟机 xff0c 经常出现想要把主机文件复制到虚拟机中 xff0c 或者是相反的情况 xff0c 一般来说是不能直接复制的 xff0c 另外个人感觉安装VMware tool的方式并不是很好 xff0c 似乎也容易出问题 x
  • VScode使用Remote - SSH插件实现远程服务器开发

    一 引言 最近做实验需要用到远程服务器开发 xff0c 在windows系统上可以下载Xshell PuTTY 来进行实验 xff0c 因为助教推荐使用VScode 43 Remote ssh来进行实验 xff0c 所以百度了怎么样来操作
  • YUV/RGB颜色空间转换公式

    经过调研 xff0c 最终选择以下转换公式 xff1a Jack Keith Video Demystified a Handbook for the Digital Engineer LLH Technology Publishing 3
  • c语言编程软件有哪些 Win7下用哪种C语言编译器

    C语言是一门历史很长的编程语言 xff0c 其编译器和开发工具也多种多样 xff0c 其开发工具包括编译器 xff0c 现举几个开发工具供大家选择 xff0c 当然也要根据自己的操作系统来选择适合自己的开发工具 好多刚开始接触c语言的朋友都
  • 大数据时代的图表可视化利器——highcharts,D3和百度的echarts

    还记得阿里巴巴那个令人澎湃激情的双十一吗 xff1f 还记得淘宝生动形象地把你的的消费历程一一地展示给你看吗 xff1f 还记得那些酷炫拽的it报告图表吗 xff1f 在这个大数据越来越盛行的年代 xff0c 怎样去表达一些用户的关系 xf
  • 在tinycorelinux上安装lxc,lxd (1)

    本文关键字 xff0c 在tinycorelinux上安装lxc xff0c lxd gcc4 4 self reference struct typedef 在前面的文章中我们讲到过内置虚拟化的os设计 xff0c 它可以使包括裸金属 x
  • STM32上第一个程序-GPIO控制LED-第3季第5部分-朱有鹏-专题视频课程

    STM32上第一个程序 GPIO控制LED 第3季第5部分 759人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第3季第5个课程 xff0c 从零开始带大家写代码控制板载LED xff0c 并且用三个版本的开发板都实现了功
  • Cas 5.3x cas-overlay-template用iframe实现登录跳转

    Cas 5 3x cas overlay template用iframe实现登录跳转 在上一篇Cas 5 3x 简单配置 xff0c 解决https访问的问题的基础上 xff0c 我尝试了一下如何用iframe实现登录和跳转 xff0c 因
  • Linux自带防火墙基本使用

    文章目录 四 Linux自带防火墙1 查看linux的防火墙状态2 查看已经对外开放的端口3 开放端口 重载防火墙配置4 filewalld常用命令 四 Linux自带防火墙 前言 xff1a CentOS7 端口的开放关闭查看都是用防火墙
  • BGP边界网关协议基础知识点

    BGP xff1a 边界网关协议 AS 自治系统 由单一机构或组织管理的一系列IP网络机器设备的集合 网络范围太大 xff0c 协议跑不过来 xff0c 需要进行划分自治管理 为了方便区分和标定不同AS xff0c 我们给每个自治系统设计了
  • 温湿度传感器SHTC3驱动开发(一)小白也能轻松理解

    一 首先了解设备硬件原理图 首先在公司干活 xff0c 要你开发一个设备驱动 xff0c 那你的老大必须得给你的东西如下 xff1a 开发板主板硬件原理图驱动设备的硬件原理图驱动的设备的数据手册 xff08 datasheet xff09
  • nodejs的版本管理工具(nvm)

    1 nvm是什么 nvm全名node js version management xff0c 顾名思义是一个nodejs的版本管理工具 为了解决node各种版本存在不兼容现象 nvm是让你在同一台机器上安装和切换不同版本的node的工具 x
  • A变为a和a的ASCII值

    span class hljs comment include lt stdio h gt span main char ch span class hljs keyword printf span span class hljs stri
  • 机器学习python Kmeans聚类

    import numpy as np import matplotlib pyplot as plt import pandas as pd from sklearn cluster import KMeans from sklearn i