python代码实现kmeans对鸢尾花聚类

news2024/10/6 18:32:01

导入第三方库和模型

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

2、创建画图函数

def draw_result(train_x, labels, cents, title):
    n_clusters = np.unique(labels).shape[0]#获取类别个数
    color = ["red", "orange", "yellow"]
    plt.figure()#创建一个新的图形窗口并开始绘图
    plt.title(title)
    for i in range(n_clusters):#range(3)=range(0,3):0,1,2
        current_data = train_x[labels == i]#把标签一致得所有样本点全拿出来
        plt.scatter(current_data[:, 0], current_data[:,1], c=color[i])#只显示鸢尾花第一个指标和第二个指标的值
        plt.scatter(cents[i, 0], cents[i, 1], c="blue", marker="*", s=100)#显示中心的的样本
    return plt
""" 画出聚类后的图像
labels: 聚类后的label, 从0开始的数字
cents: 质心坐标
n_cluster: 聚类后簇的数量
color: 每一簇的颜色
"""

3、主函数调用kmeans

if __name__ == '__main__':
    iris = datasets.load_iris()#加载鸢尾花数据集
    iris_x = iris.data#数据部分,不带标签
    clf = KMeans(n_clusters=3, max_iter=10,n_init=10, init="k-means++",
    algorithm="full", tol=1e-4,n_jobs= -1,random_state=1)#创建聚类模型
    clf.fit(iris_x)#把样本150数据全部应用于聚类函数
    print("SSE = {0}".format(clf.inertia_))
    #inertia_ 属性表示聚类效果的评估指标,也称为簇内离差平方和(within-cluster sum of squares, WCSS)。它表示每个样本点到其所属簇的质心的距离的总和,该值越小表示样本点越接近于自己的簇中心,聚类效果越好。
    draw_result(iris_x, clf.labels_, clf.cluster_centers_, "kmeans").show()#plt.show() 显示图形
    '''
    iris_x:样本数据
    clf.labels_聚类聚出来的标签
    clf.cluster_centers_聚类出来的中心点
    "kmeans" 画图的标题
    ''' 

在这里插入图片描述

4、算法优缺点

优点

简洁明了,计算复杂度低。 K-means 的原理非常容易理解,整个计算过程与数学推理也不是很困 难。
收敛速度较快。通常经过几个轮次的迭代之后就可以获得还不错的效果。

缺点

结果不稳定。 由于初始值随机设定,以及数据的分布情况,每次学习的结果往往会有一些差异。 无法解决样本不均衡的问题。
对于类别数据量差距较大的情况无法进行判断。 容易收敛到局部最优解。 在局部最优解的时候,迭代无法引起中心点的变化,迭代将结束。
受噪声影响较大。 如果存在一些噪声数据,会影响均值的计算,进而引起聚类的效果偏差。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1632556.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

esp32s3使用psram后音频播报不了的问题解决记录

idf.py menuconfig开启psram后会报错 提示需要打补丁: 根据提示切换到IDF_PATH目录,然后执行git apply %ADF_PATH%/ida_patches/idf5.0_freertos.patch打补丁。 再次编译提示如下错误: assert failed: spi_flash_disable_interrupts_cach…

嵌入式学习,方法、交流很重要

关注、星标公众号,直达精彩内容 ID:技术让梦想更伟大 整理:李肖遥 Who Am I 大家好,我是「逍遥的小蜜圈」星球的星主,如果大家关注我早一点,一定看了我的简单的自我介绍,关于我 — 聊聊自己的经…

【Python网络爬虫】python爬虫用正则表达式进行数据清洗与处理

🔗 运行环境:PYTHON 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&#x1f91…

QT学习篇—qt软件安装

qt下载网址http://download.qt.io/new_archive/qt/ QT官网Qt | Tools for Each Stage of Software Development LifecycleAll the essential Qt tools for all stages of Software Development Lifecycle: planning, design, development, testing, and deployment.https:…

CSS样式特异性5层次详解

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合…

FANUC机器人SOCKET断开KAREL程序编写

一、添加一个.KL文件创建编辑断开指令 添加一个KL文件用来创建karel程序中socket断开指令 二、断开连接程序karel代码 PROGRAM SOC_DIS %COMMENT SOCKET断开 %INCLUDE klevccdf VAR str_input,str_val : STRING[20] status,data_type,int_val : INTEGER rel_val : REALBEGING…

全球首发!龙蜥社区助力 Intel SPR 加速器上云

编者按:云原生平台下芯片的竞争力日渐增强,加速器如何在赛道上体现竞争力。龙蜥社区开发者、阿里云高级研发工程师易兴睿介绍运用龙蜥操作系统提供的解决方案,依靠 Intel SPR 平台专用硬件加速器,实现云原生场景下 Envoy 网关加速…

微信小程序 request 配置了服务器域名后 发布体验版无法访问

问题描述 在微信小程序公众平台配置了测试服务器域名后,发布了体验版进行测试,发现网络请求不通,打开调试也依然无法访问。 解决步骤: 1.首先根据小程序文档网络模块的使用说明,一步步排查域名证书是否符合规范&…

Llama3 mac本地部署教程

1.下载的软件清单: ollama下载: Download Ollama on macOS nodejs下载: Node.js — Download Node.js 2.安装 安装Ollama 下载之后打开,直接点击Next以及Install安装ollama到命令行。安装完成后界面上会提示ollama run llam…

在Docker中部署Java应用:Java版本隔离的实践案例

在Docker中部署Java应用:Java版本隔离的实践案例 人生就是一场又一场的相遇,一个明媚,一个忧伤,一个华丽,一个冒险,一个倔强,一个柔软,最后那个正在成长。 背景需求 在软件开发和部…

18 python定制篇-开发平台Ubuntu

第 18 章Linux 之 Python 定制篇-Python 开发平台 Ubuntu 18.1 Ubuntu 介绍 Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的开源 GNU/Linux 操作系统,Ubuntu 是基于 GNU/Linux, 支持 x86、amd64(即 x64&…

PG修改端口号与error: could not connect to server: could not connect to server 问题解决

刚开始学习PG修改端口号之后数据库端口号没变。 修改端口号:/usr/local/pgsql/data中的postgresql.conf中 修改后并不能直接生效需要重启PG: /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/logfile restart重启后新…

如何免费生成文本二维码?文字生成二维码的方法

随着信息技术的不断发展,文本二维码作为一种简便、高效的信息分享方式,受到了越来越多人的关注和应用。文本二维码是将文本信息编码成二维码的形式,通过扫描二维码即可快速获取文本内容,为信息分享和传播提供了全新的可能性。 便…

美富特 | 邀您参加2024全国水科技大会暨技术装备成果展览会

王涛 四川美源环能科技有限公司 技术总监 报告题目:绿色智慧水岛如何助力工业园区污水及再生水资源化利用降碳增效 拥有十余年的环保行业从业经验,对各类前沿物化、生化及膜技术均有丰富的研发、设计及应用经验,先后参与多项重点核心技术…

跨境电商亚马逊、虾皮等平台做测评要用什么IP?

IP即IP地址,IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写,IP地址是IP协议提供的一种统一的地址格式 功能:它为互联网上的每一…

密码学python库PBC安装使用

初始化 使用环境云服务器(移动云可以免费使用一个月) 选择ubuntu18.04-64位 第一次进入linux命令行之后是没有界面显示的,需要在命令行下载。 这里按照其他云平台操作即可:Ubuntu18.04 首次使用配置教程(图形界面安装) 记录好登录…

软件工程物联网方向嵌入式系统复习笔记--嵌入式系统基础

1 嵌入式系统基础 1.1 嵌入式系统基础 1.1.1 嵌入式系统概念 嵌入式系统一般定义 是指以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 就像一般的计算机系统包括软件和硬件一样,…

Python: Regular expressions

# encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看: # 描述: 正则表达式用法 # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 311 # Datetime : 2024/4/28 10:37 # User : geovindu # Prod…

德思特手持式频谱分析仪加速公共无线事业的运行

一、公共无线事业中无线电的重要性 提起无线电,许多人或许觉得这是非常老旧的观念。实际上,无线电在我们的生活中占据着非常重要的地位。当前,无线电早已成为受众最广泛的大众媒介。据工业和信息化部资料显示,全球95%的人口都可以…

视频高效批量剪辑,批量调整视频尺寸至1280*720,让视频管理更轻松

视频内容已成为我们日常生活中不可或缺的一部分。无论是社交媒体上的短视频,还是企业宣传的长篇大论,视频都以其直观、生动的形式吸引着我们的注意力。然而,随着视频数量的不断增加,如何高效地管理和剪辑这些视频成为了一个亟待解…