python聚类分析散点图_使用sklearn对iris数据集进行聚类分析
导入库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler
%matplotlib inline
sns.set(style="white")
pd.set_option("display.max_rows", 1000)
sklearn自带iris数据集(nrow=150)
4个预测变量
3分类结局
iris = load_iris()
X = iris["data"]
Y = iris["target"]
display(X[:5])
display(pd.Series(Y).value_counts())
Y = Y.reshape(-1, 1) # Y的形状转换为[150, 1]
array([[5.1, 3.5, 1.4, 0.2],
[4.9, 3. , 1.4, 0.2],
[4.7, 3.2, 1.3, 0.2],
[4.6, 3.1, 1.5, 0.2],
[5. , 3.6, 1.4, 0.2]])
2 50
1 50
0 50
dtype: int64
data = pd.DataFrame(np.concatenate((X, Y), axis=1),
columns=["x1", "x2", "x3", "x4", "y"])
data["y"] = data["y"].astype("int64")
data.head()
x1
x2
x3
x4
y
0
5.1
3.5
1.4
0.2
0
1
4.9
3.0
1.4
0.2
0
2
4.7
3.2
1.3
0.2
0
3
4.6
3.1
1.5
0.2
0
4
5.0
3.6
1.4
0.2
0
观察数据分布
4个预测变量两两散点图
sns.pairplot(data, hue="y")
数据标准化
Kmeans聚类前应对数据进行标准化
scaler = MinMaxScaler()
data.iloc[:, :4] = scaler.fit_transform(data.iloc[:, :4])
data.head()
x1
x2
x3
x4
y
0
0.222222
0.625000
0.067797
0.041667
0
1
0.166667
0.416667
0.067797
0.041667
0
2
0.111111
0.500000
0.050847
0.041667
0
3
0.083333
0.458333
0.084746
0.041667
0
4
0.194444
0.666667
0.067797
0.041667
0
设置类别数为3,进行Kmeans聚类
clus = KMeans(n_clusters=3)
clus = clus.fit(data.iloc[:, 1:4])
聚类完成后150个样本的聚类标签
clus.labels_
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], dtype=int32)
聚类完成后三个聚类中心
clus.cluster_centers_
array([[0.595 , 0.07830508, 0.06083333],
[0.2975 , 0.55661017, 0.50583333],
[0.42916667, 0.76745763, 0.8075 ]])
聚类的评估指标
clus.inertia_
4.481991774793322
确定最佳聚类数目
尝试不同的类别数,查看criterion值(越小越好),画出“肘线图”
L = []
for i in range(1, 9):
clus = KMeans(n_clusters=i)
clus.fit(data.iloc[:, 1:3])
L.append([i, clus.inertia_])
L = pd.DataFrame(L, columns=["k", "criterion"])
L
k
criterion
0
1
18.253249
1
2
5.106290
2
3
3.312646
3
4
2.585065
4
5
1.946648
5
6
1.637264
6
7
1.387541
7
8
1.175937
sns.pointplot(x="k", y="criterion", data=L)
sns.despine()
根据选定的聚类模型,对样本进行预测
从“肘线图”可看出最佳类别数等于3或4较好,此处使用3
clus = KMeans(n_clusters=3)
clus = clus.fit(data.iloc[:, 1:4])
data["pred"] = clus.predict(data.iloc[:, 1:4])
data.loc[data["pred"] == 0, "Pred"] = 11
data.loc[data["pred"] == 1, "Pred"] = 0
data.loc[data["pred"] == 2, "Pred"] = 2
data.loc[data["Pred"] == 11, "Pred"] = 1
data["Pred"] = data["Pred"].astype("int64")
data.head()
x1
x2
x3
x4
y
pred
Pred
0
0.222222
0.625000
0.067797
0.041667
0
1
0
1
0.166667
0.416667
0.067797
0.041667
0
1
0
2
0.111111
0.500000
0.050847
0.041667
0
1
0
3
0.083333
0.458333
0.084746
0.041667
0
1
0
4
0.194444
0.666667
0.067797
0.041667
0
1
0
画出预测混淆矩阵,计算准确率
df = pd.crosstab(data["y"], data["Pred"])
df
Pred
0
1
2
y
0
50
0
0
1
0
46
4
2
0
4
46
L = []
for i in range(df.shape[0]):
for j in range(df.shape[1]):
if i != j:
L.append(df.iloc[i, j])
print("预测准确率为:", round((150 - sum(L)) / 150 * 100, 1), "%")
预测准确率为: 94.7 %
本文地址:https://blog.csdn.net/weixin_40575651/article/details/107334269
希望与广大网友互动??
点此进行留言吧!
python聚类分析散点图_使用sklearn对iris数据集进行聚类分析相关推荐
- 机器学习笔记2 – sklearn之iris数据集
前言 本篇我会使用scikit-learn这个开源机器学习库来对iris数据集进行分类练习. 我将分别使用两种不同的scikit-learn内置算法--Decision Tree(决策树)和kNN(邻 ...
- (转载)基于sklearn的iris数据集及简介
(一)iris数据集简介 Iris数据集是机器学习任务中常用的分类实验数据集,由Fisher在1936收集整理.Iris中文名是安德森鸢尾花卉数据集,英文全称是Anderson's Iris data ...
- 【机器学习算法】手动Python实现KNN分类算法,并用iris数据集检验模型效果
目录 一.KNN算法Python实现 1.导入包 2. 画图,展示不同电影在图上的分布 3.训练样本和待测样本准备 4.计算待测样本点到每个训练样本点的距离 5.查找离待测样本点最近的K个训练样本点的 ...
- [机器学习-sklearn]鸢尾花Iris数据集
鸢尾花数据集 1. 鸢尾花Iris数据集介绍 2. Sklearn代码获取Iris 2. 描述性统计 3. 箱线图 4. 数据分布情况 1. 鸢尾花Iris数据集介绍 Iris flower数据集是1 ...
- Sklearn学习-iris数据集学习
Sklearn学习-逻辑回归(iris数据集) 使用load_iris加载数据集,查看包含的keys 查看数据的列名,分类目标的名称 获取data和target,并打印各自的shape 拆分训练集和测 ...
- python鸢尾花散点图_鸢尾花数据散点图
鸢尾花分为三类:山鸢尾.变色鸢尾和维吉尼亚鸢尾 iris为鸢尾花数据集 import warnings # 引用warnings模块 warnings.filterwarnings('ignore') ...
- python实现数据恢复_使用sklearn进行对数据标准化、归一化以及将数据还原的方法...
在对模型训练时,为了让模型尽快收敛,一件常做的事情就是对数据进行预处理. 这里通过使用sklearn.preprocess模块进行处理. 一.标准化和归一化的区别 归一化其实就是标准化的一种方式,只不 ...
- python 召回率_使用sklearn获取精确性和召回率
这有点不同,因为对于非二进制分类,交叉值分数不能计算精度/召回率,所以需要使用recision-score.recall-score和手工进行交叉验证.参数average='micro'计算全局精度/ ...
- python svr回归_使用sklearn库中的SVR做回归分析
sklearn中的回归有多种方法,广义线性回归集中在linear_model库下,例如普通线性回归.Lasso.岭回归等:另外还有其他非线性回归方法,例如核svm.集成方法.贝叶斯回归.K近邻回归.决 ...
最新文章
- AIDL 和binder 原理
- 目前可用的微博秀的嵌入方法大全(亲测2019年2月仍有效)
- CUDA从入门到精通(四):加深对设备的认识
- 等差数列划分Python解法
- 添加谷歌翻译到你的网站
- CodeBlocks17.12+汉化包下载及用法
- [转载] 民兵葛二蛋——第10集
- 在Linux中创建静态库和动态库范例 (hello.c)
- SQLite:在Julia中判断一个表是否存在数据库中?
- java项目运维手册
- keil5的基本使用
- 关于html5毕业论文设计任务书,毕业论文设计任务书(精选多篇)
- 极速办公ppt里面如何插入表格
- 读研攻略(11)—十分钟学会简历撰写,两千字无废话
- 定积分之旋转曲面的面积
- MCU 配置 Cyclone FPGA
- NOI 1.11 二分查找 04: 网线主管
- syntax error, unexpected ‘array‘ (T_ARRAY)
- Empire信息收集
- 注意力机制 | CNN-LSTM-Attention基于卷积-长短期记忆网络结合注意力机制多输入单输出回归预测(Matlab程序)
热门文章
- 华为鸿蒙os正在国外小规模测试,华为鸿蒙OS正小规模测试
- angular 引入编辑器遇到的各种问题。。。
- springboot配置文件(.yml)中自定义属性值并在controller里面获取
- 2011 ACM 0和1思想
- react.js 给标识ref,获取内容
- vue-router vue路由
- Linux系统查看各种信息
- Java经典实例:进阶版堆栈实现,支持任何对象类型
- SQL SERVER 2008 R2最大并发连接数修改为2后,SQL连接无法超过2个。
- 转:Discuz!NT负载均衡解决方案(HA)之---LVS(Linux Virtual Server)