2020-11-27

iris聚类算法应用实例
算法前提iris数据集已经具备
导包

import pygal
from sklearn.cluster import KMeans
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

获取iris数据集
前四个变量分别为花萼的长度,宽度,及花瓣的长度,宽度。最后一个变量为鸢尾花所属的种类,可将其聚为三类

iris = pd.read_csv('irisS.csv', names=["Sepal_Length", "Sepal_Width", "Petal_Length", "Petal_Width", "Species"])
print(iris)

提取出用于建模的数据集x

x = iris.drop(labels='Species', axis=1)

构建KMeans模型,设置KMeans类的n_clusters为3

kmeans = KMeans(n_clusters=3)
kmeans.fit(x)

聚类结果标签

x['cluster'] = kmeans.labels_

各类频数统计

print(x['cluster'].value_counts())

三个簇的簇中心

centers = kmeans.cluster_centers_

绘制聚类算法的散点图

sns.lmplot(x='Sepal_Length', y='Sepal_Width', hue='cluster', markers=['^', 's', 'o'], data=x, fit_reg=False, scatter_kws={'alpha': 0.8}, legend_out=False)
plt.scatter(centers[:, 2], centers[:, 3], marker='*', color='black', s=130)
plt.xlabel('花瓣的长度')
plt.ylabel('花瓣宽度')

中文乱码和坐标轴负号得处理

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False

图形显示

plt.show()

图片展示
在这里插入图片描述

增加一个辅助列, 将不同的花种映射到10,1,2三种值,目的是方便后面图形的对比

iris['Species_map'] = iris.Species.map({'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2})

绘制原始数据三个类别的散点图

sns.lmplot(x='Sepal_Length', y='Sepal_Width', hue='Species_map', markers=['^', 's', 'o'], data=iris, fit_reg=False, scatter_kws={'alpha': 0.8}, legend_out=False)
plt.xlabel('花瓣的长度')
plt.ylabel('花瓣宽度')

图形显示

plt.show()

图片展示

在这里插入图片描述

调用Radar这个类, 并设置雷达图的填充及数据范围

radar_chart = pygal.Radar(fill=True)

添加雷达图各项顶点的名称

radar_chart.x_labels = ['花萼长度', '花萼宽度', '花瓣长度', '花瓣宽度']

绘制三个雷达图区域,代表三个簇中心的指标值

radar_chart.add('c1', centers[0])
radar_chart.add('c2', centers[1])
radar_chart.add('c3', centers[2])

保存图形
不能用plt.show展示

radar_chart.render_to_file('radar_chart.svg')

图片

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无心 码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值