Python sklearn实现K-means鸢尾花聚类

news/2024/5/20 7:54:23 标签: python, 聚类, sklearn, 人工智能

Python sklearn实现K-means鸢尾花聚类

  • 准备
  • 1.导入相关包
  • 2.直接从sklearn.datasets中加载数据集
  • 3.绘制二维数据分布图
  • 4.实例化K-means类,并且定义训练函数
  • 5.训练
  • 6.可视化展示
  • 7.预览图

准备

使用到的库:

安装:

pip install numpy
pip install matplotlib
pip install sklearn

数据集:
使用开源数据集“鸢尾花数据集”。包含3种类型数据集,共150条数据;数据包含4项特征,花萼长度、花萼宽度、花瓣长度、花瓣宽度;将80%的数据划分为训练集,20%划分为测试集。

下载地址:
https://download.csdn.net/download/qq_63585949/86827472

对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇,让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。
K-means鸢尾花<a class=聚类" />


1.导入相关包

python">import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import KMeans 
from sklearn import datasets 

sklearndatasets_30">2.直接从sklearn.datasets中加载数据集

python"># 直接从sklearn中获取数据集
iris = datasets.load_iris()
X = iris.data[:, :4]    # 表示我们取特征空间中的4个维度
print(X.shape)

3.绘制二维数据分布图

每个样本使用两个特征,绘制其二维数据分布图

python"># 取前两个维度(萼片长度、萼片宽度),绘制数据分布图
plt.scatter(X[:, 0], X[:, 1], c="red", marker='o', label='see')
plt.xlabel('sepal length')
plt.ylabel('sepal width')
plt.legend(loc=2)
plt.show() 

二维数据分布图


4.实例化K-means类,并且定义训练函数

python">def Model(n_clusters):
    estimator = KMeans(n_clusters=n_clusters)# 构造聚类
    return estimator

def train(estimator):
    estimator.fit(X)  # 聚类

5.训练

python"># 初始化实例,并开启训练拟合
estimator=Model(3)     
train(estimator)    

6.可视化展示

python">label_pred = estimator.labels_  # 获取聚类标签
# 绘制k-means结果
x0 = X[label_pred == 0]
x1 = X[label_pred == 1]
x2 = X[label_pred == 2]
plt.scatter(x0[:, 0], x0[:, 1], c="red", marker='o', label='label0')
plt.scatter(x1[:, 0], x1[:, 1], c="green", marker='*', label='label1')
plt.scatter(x2[:, 0], x2[:, 1], c="blue", marker='+', label='label2')
plt.xlabel('sepal length')
plt.ylabel('sepal width')
plt.legend(loc=2)
plt.show() 

7.预览图

K-means鸢尾花<a class=聚类" />


http://www.niftyadmin.cn/n/1409.html

相关文章

循环结构综合实训(新)

第1关:学习-用while循环求1+2+3+…+n之和 任务描述 本关任务:输入 n,使用 while 循环语句求1+2+3+…+n之和。 相关知识 当我们想要对同样的操作执行多次,就需要使用到循环结构,循环结构主要分为三种: while 循环; do…while 循环; for 循环。 今天我们来学习第一种循…

0-1背包

给定n(n<100)种物品和一个背包。物品i的重量是wi(wi<100)&#xff0c;价值为vi(vi<100)&#xff0c;背包的容量为C(C<1000)。 应如何选择装入背包中的物品&#xff0c;使得装入背包中物品的总价值最大? 在选择装入背包的物品时&#xff0c;对每种物品i只有两个选择…

js第一章

1、什么是javascript? javascript是一门编程语言&#xff0c;也是客户端脚本语言。 js语言的特点是一门松散型语言和弱类型语言。 js语言脚本语言客户端语言。 2、js组成部分&#xff1f; ECMAscript&#xff0c;DOM(文档对象模型),BOM(l浏览器对象类型)组成了js。 3、js的引…

常用算法———P I D控制算法(P I D三个参数的作用和两种P I D算法的代码实现)

如果有错误请及时指出&#xff0c;大家一起学习交流。 一、PID的概述 将采集的实际值与给定的目标值进行比较&#xff0c;对产生的偏差用比例、积分和微分进行控制的控制系统&#xff0c;简称PID&#xff08;Proportional Integral Derivative&#xff09;控制系统&#xff0c…

30 个 Python 技巧,加速你的数据分析处理速度

又到了学习干货的季节~ 今天我们就来学习一下python干货~ pandas的下载 使用命令下载&#xff1a; pip install pandas 或者自行下载whl文件安装 https://www.lfd.uci.edu/~gohlke/pythonlibs/创建DataFrame数据 pd_data pd.DataFrame({"name":["小明&quo…

如何运用R语言在生物群落生态学中的数据统计分析

R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂&#xff0c;涉及众多统计分析方法。本次以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线&#xff0c;通过多个来自…

LeetCode300:最长递增子序列

要求 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。 题目分析 需要对「子序列」和「子串」这两个概念进行区分&#xff1b…

【Python】封装、继承、多态(21)

封装 封装用于对数据进行访问控制&#xff0c;通过访问权限来避免数据发非法访问。Python追求简洁的语法&#xff0c;没有严格的语法级别的“访问控制符”&#xff0c;可以通过“私有属性、私有方法”的方式&#xff0c;实现“封装”。 1、通常约定&#xff0c;两个下划线开头…