导入库

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数据集进行聚类分析相关推荐

  1. 机器学习笔记2 – sklearn之iris数据集

    前言 本篇我会使用scikit-learn这个开源机器学习库来对iris数据集进行分类练习. 我将分别使用两种不同的scikit-learn内置算法--Decision Tree(决策树)和kNN(邻 ...

  2. (转载)基于sklearn的iris数据集及简介

    (一)iris数据集简介 Iris数据集是机器学习任务中常用的分类实验数据集,由Fisher在1936收集整理.Iris中文名是安德森鸢尾花卉数据集,英文全称是Anderson's Iris data ...

  3. 【机器学习算法】手动Python实现KNN分类算法,并用iris数据集检验模型效果

    目录 一.KNN算法Python实现 1.导入包 2. 画图,展示不同电影在图上的分布 3.训练样本和待测样本准备 4.计算待测样本点到每个训练样本点的距离 5.查找离待测样本点最近的K个训练样本点的 ...

  4. [机器学习-sklearn]鸢尾花Iris数据集

    鸢尾花数据集 1. 鸢尾花Iris数据集介绍 2. Sklearn代码获取Iris 2. 描述性统计 3. 箱线图 4. 数据分布情况 1. 鸢尾花Iris数据集介绍 Iris flower数据集是1 ...

  5. Sklearn学习-iris数据集学习

    Sklearn学习-逻辑回归(iris数据集) 使用load_iris加载数据集,查看包含的keys 查看数据的列名,分类目标的名称 获取data和target,并打印各自的shape 拆分训练集和测 ...

  6. python鸢尾花散点图_鸢尾花数据散点图

    鸢尾花分为三类:山鸢尾.变色鸢尾和维吉尼亚鸢尾 iris为鸢尾花数据集 import warnings # 引用warnings模块 warnings.filterwarnings('ignore') ...

  7. python实现数据恢复_使用sklearn进行对数据标准化、归一化以及将数据还原的方法...

    在对模型训练时,为了让模型尽快收敛,一件常做的事情就是对数据进行预处理. 这里通过使用sklearn.preprocess模块进行处理. 一.标准化和归一化的区别 归一化其实就是标准化的一种方式,只不 ...

  8. python 召回率_使用sklearn获取精确性和召回率

    这有点不同,因为对于非二进制分类,交叉值分数不能计算精度/召回率,所以需要使用recision-score.recall-score和手工进行交叉验证.参数average='micro'计算全局精度/ ...

  9. python svr回归_使用sklearn库中的SVR做回归分析

    sklearn中的回归有多种方法,广义线性回归集中在linear_model库下,例如普通线性回归.Lasso.岭回归等:另外还有其他非线性回归方法,例如核svm.集成方法.贝叶斯回归.K近邻回归.决 ...

最新文章

  1. AIDL 和binder 原理
  2. 目前可用的微博秀的嵌入方法大全(亲测2019年2月仍有效)
  3. CUDA从入门到精通(四):加深对设备的认识
  4. 等差数列划分Python解法
  5. 添加谷歌翻译到你的网站
  6. CodeBlocks17.12+汉化包下载及用法
  7. [转载] 民兵葛二蛋——第10集
  8. 在Linux中创建静态库和动态库范例 (hello.c)
  9. SQLite:在Julia中判断一个表是否存在数据库中?
  10. java项目运维手册
  11. keil5的基本使用
  12. 关于html5毕业论文设计任务书,毕业论文设计任务书(精选多篇)
  13. 极速办公ppt里面如何插入表格
  14. 读研攻略(11)—十分钟学会简历撰写,两千字无废话
  15. 定积分之旋转曲面的面积
  16. MCU 配置 Cyclone FPGA
  17. NOI 1.11 二分查找 04: 网线主管
  18. syntax error, unexpected ‘array‘ (T_ARRAY)
  19. Empire信息收集
  20. 注意力机制 | CNN-LSTM-Attention基于卷积-长短期记忆网络结合注意力机制多输入单输出回归预测(Matlab程序)

热门文章

  1. 华为鸿蒙os正在国外小规模测试,华为鸿蒙OS正小规模测试
  2. angular 引入编辑器遇到的各种问题。。。
  3. springboot配置文件(.yml)中自定义属性值并在controller里面获取
  4. 2011 ACM 0和1思想
  5. react.js 给标识ref,获取内容
  6. vue-router vue路由
  7. Linux系统查看各种信息
  8. Java经典实例:进阶版堆栈实现,支持任何对象类型
  9. SQL SERVER 2008 R2最大并发连接数修改为2后,SQL连接无法超过2个。
  10. 转:Discuz!NT负载均衡解决方案(HA)之---LVS(Linux Virtual Server)