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
0
投稿
猜你喜欢
- 方法1:import sys f=open('test.txt','a+') a='123'
- 在web开发中常常要使用js,为了提高效率一般都会制作js的类文件。这样在使用中更新复用都很方便。下面按照我工作中的一个案例,介绍如何定义j
- 一、切换到Oracle用户su – oracle二、登录到sys用户sqlplus / as sysdba三、创建临时表空间//查询临时表空
- SQL查询输出,根据表内某字段为准,输出不重复记录,或删除掉重复的记录,保留所需要的记录。今儿见一朋友在蓝色里问起(查询不重复记录~),想想
- 1. test.txt文件,数据以逗号分割,第一个数据为x坐标,第二个为y坐标,数据如下:1.1,22.1,23.1,34.1,540,38
- 本文实例讲述了Python XlsxWriter模块Chart类用法。分享给大家供大家参考,具体如下:一 点睛Chart类是XlsxWrit
- 本文介绍基于Python语言arcpy模块,实现栅格影像图层建立与多幅遥感影像数据批量拼接(Mosaic)的操作。首先,相关操作所需具体代码
- seek()方法在偏移设定该文件的当前位置。参数是可选的,默认为0,这意味着绝对的文件定位,它的值如果是1,这意味着寻求相对于当
- 最近写一个小爬虫,需要拿到邮箱信息,发现拿不到,也不是ajax接口。最后查资料发现是被Cloudflare加密起来了,有加密肯定有解密。通过
- 本文实例讲述了Python实现pdf文档转txt的方法。分享给大家供大家参考,具体如下:首先,这是一个比较粗糙的版本,因为已经够用了,而且对
- ASP如何分两段读取数据库?中间插入广告。代码如下:<!--#include file="conn.asp"--&
- 使用[[v]*n]*n遇到的坑今天通过[[v]*n]*n快速创建列表, 当我使用索引修改值时, 本来是打算修改a[0][0]这一个元素的第一
- 这篇文章主要介绍了Python读取YAML文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 现在大家都在讨论Web2.0 ,大家都在搞用户行为前端设计,现在注册一个ID一般只需要几秒钟,站长期望其产生高价值的UGC,形成一个只需要审
- 最近一直在用TF做CNN的图像分类,当softmax层得到预测结果后,我希望能够看到预测结果,以便和标签之间进行比较。特此补上,以便自己记忆
- 环境配置新建python虚拟环境并激活conda create -n pyqt python=3.8conda activate py36安
- python环境 3.6.5 win7 linux环境同理先尝试了PyInstaller ,打包时一直提示 no module named
- 加载垃圾邮件数据集spambase.csv(数据集基本信息:样本数: 4601,特征数量: 57, 类别:1 为垃圾邮件,0 为
- 今天的问题是请问以下 alert 弹出值分别是什么?var f = function f2()&nb
- 保留COOKIES一个小时Response.Cookies("MyCookie").Expires= (now