python利用K-Means算法实现对数据的聚类案例详解
作者:谁偷了我的酒窝 发布时间:2021-02-28 10:01:29
标签:python,K-Means,算法,聚类
目的是为了检测出采集数据中的异常值。所以很明确,这种情况下的簇为2:正常数据和异常数据两大类
1、安装相应的库
import matplotlib.pyplot as plt # 用于可视化
from sklearn.cluster import KMeans # 用于聚类
import pandas as pd # 用于读取文件
2、实现聚类
2.1 读取数据并可视化
# 读取本地数据文件
df = pd.read_excel("../data/output3.xls", header=0)
本次实验选择温度和CO2作为二维数据,其中温度含有异常数据。
plt.scatter(df["光照"], df["CO2"], linewidths=1, alpha=0.8)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签v
plt.xlabel("光照")
plt.ylabel("CO2")
plt.grid(color="#95a5a6", linestyle="--", linewidth=1, alpha=0.4)
plt.show()
2.2 K-means聚类
设置规定要聚的类别个数为2
data = df[["光照","CO2"]] # 从原始数据中选择该两项
estimator = KMeans(n_clusters=2) # 构造聚类器
estimator.fit(data) # 将数据带入聚类模型
获取聚类中心的值和聚类标签
label_pred = estimator.labels_ # 获取聚类标签
centers_ = estimator.cluster_centers_ # 获取聚类中心
将聚类后的 label0 和 label1 的数据进行输出
x0 = data[label_pred == 0]
x1 = data[label_pred == 1]
plt.scatter(x0["光照"], x0["CO2"],c="red", linewidths=1, alpha=0.8,marker='o', label='label0')
plt.scatter(x1["光照"], x1["CO2"],c="green", linewidths=1, alpha=0.8,marker='+', label='label1')
plt.grid(c="#95a5a6", linestyle="--", linewidth=1, alpha=0.4)
plt.legend()
plt.show()
附上全部代码
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
import pandas as pd
df = pd.read_excel("../data/output3.xls", header=0)
plt.scatter(df["光照"], df["CO2"], linewidths=1, alpha=0.8)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签v
plt.xlabel("光照")
plt.ylabel("CO2")
plt.grid(color="#95a5a6", linestyle="--", linewidth=1, alpha=0.4)
plt.show()
data = df[["光照","CO2"]]
estimator = KMeans(n_clusters=2) # 构造聚类器
estimator.fit(data) # 聚类
label_pred = estimator.labels_ # 获取聚类标签
centers_ = estimator.cluster_centers_ # 获取聚类结果
# print("聚类标签",label_pred)
# print("聚类结果",centers_)
# predict = estimator.predict([[787.75862069, 1505]]) # 测试新数据聚类结果
# print(predict)
x0 = data[label_pred == 0]
x1 = data[label_pred == 1]
plt.scatter(x0["光照"], x0["CO2"],c="red", linewidths=1, alpha=0.8,marker='o', label='label0')
plt.scatter(x1["光照"], x1["CO2"],c="green", linewidths=1, alpha=0.8,marker='+', label='label1')
plt.grid(c="#95a5a6", linestyle="--", linewidth=1, alpha=0.4)
plt.legend()
plt.show()
来源:https://blog.csdn.net/qq_35896136/article/details/116146292


猜你喜欢
- 一、前端请求的封装1.将请求地址封装起来,以便日后修改,在src/assets/js目录下创建getPath.js文件export defa
- 前言最近补 Golang channel 方面八股的时候发现用 channel 实现一个优雅退出功能好像不是很难,之前写的 HTTP 框架刚
- 1.展开服务器对象-->链接服务器-->右击"新建链接服务器"注意:必须以数据库管理员身份登录(通常也就是s
- 本文主要介绍Python中,class(类)的装饰器@staticmethod和@classmethod的使用示例代码和它们的区别。1、@s
- 很简单的教程,献给喜欢SEO的朋友们。把article.asp?logID=26 替换成article.asp?/a
- InnoDB存储引擎的关键特性包括插入缓冲、两次写(double write)、自适应哈希索引(adaptive hash index)。这
- 一、Socketserver实现FTP,文件上传、下载目录结构1、socketserver实现ftp文件上传下载,可以同时多用户登录、上传、
- 最近在学习Python,看到网上用Python将图片转换成字符画便来学习一下题目意思是,程序读入一个图片,以txt格式输出图片对应的字符画,
- 最近收到一个朋友委托的需求,要将MP3的音频格式转换成wav的音频格式。于是,使用python写了这个小工具便于批量进行转换操作。首先,下载
- 1. 新建项目在命令行窗口下输入scrapy startproject scrapytest, 如下然后就自动创建了相应的文件,如下2. 修
- 引包引入对应的包,和原来一样写一个打印文字的方法import sys, random, pygamefrom pygame.lo
- 这篇文章主要介绍了Python接口自动化判断元素原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 目录1. 柱状图概述1.1什么是柱状图1.2柱状图使用场景1.3柱状图绘制步骤1.3案例展示2. 柱状图属性2.1柱状体颜色填充2.2状描边
- 本文实例讲述了Python pymongo模块用法。分享给大家供大家参考,具体如下:MongoDB优点 MongoDB是一个为当代web应用
- 案例:该数据集的是一个关于每个学生成绩的数据集,接下来我们对该数据集进行分析,判断学生是否适合继续深造数据集特征展示1 GRE
- 安装 Tesseract OCRTesseract OCR 是一款由 Google 团队开发的开源 OCR(Optical Characte
- 其实网上已经有许多python语言书写的串口,但大部分都是python2写的,没有找到一个合适的python编写的串口助手,只能自己来写一个
- 喜欢Gucci的优雅吗?或者痴迷美国普普艺术?谷歌中国最近改版的谷歌个性化首页iGoogle集中了近1500个主题,包括近120多位全球顶级
- 下面这段代码能够显示,当前用户所能够看到的所有的用户和表有兴趣的, 可以把每个表的内容加上<% Dim objOraSess
- 本文实例讲述了Python设计模式之MVC模式。分享给大家供大家参考,具体如下:一.简单介绍mvc模式 the mo