Python学习笔记——cmeans模糊聚类例程

news2024/10/7 6:38:06

文章目录

    • 模糊聚类应用简介
      • 安装环境
      • demo:
      • 运行结果

模糊聚类应用简介

模糊聚类即通过模糊数学(处理模糊或不确定性信息的数学方法)的相关算法进行聚类分析任务。
常用的模糊聚类算法包括模糊C均值聚类(FCM,Fuzzy-c means)、模糊谱聚类(FSC)、模糊层次聚类(FHC)等。这些算法都是基于模糊理论的,可以处理数据集中存在的噪声和不确定性。
其中,cmeans是最常用的一种算法,它可以将数据集划分为多个模糊的类别,并且可以自适应地调整聚类中心(center)的位置。
对于聚类而言,cmeans和kmeans都是聚类算法,都是通过将数据点分组来实现的。但是它们的实现方式略有不同,cmeans是基于模糊聚类的算法,而kmeans是基于硬聚类的算法;它们的适用场景也不同,cmeans适用于模糊聚类,即将数据点分配到多个簇中,每个数据点都有一定的隶属度,而kmeans适用于硬聚类,即将数据点分配到唯一的簇中。因此,哪种方法聚类效果更好取决于数据的特点和聚类的目的。

模糊聚类所用到的模糊数学基本原理包括模糊集、隶属函数、模糊集的运算等知识…

安装环境

需要用到Python的skfuzzy库,安装scikit-fuzzy包:pip install scikit-fuzzy
在这里插入图片描述

demo:

from sklearn.datasets._samples_generator import make_blobs
from skfuzzy.cluster import cmeans
import matplotlib.pylab as plt
import numpy as np

centers = [(-21, 49), (0, 30), (15, -12), (-15, 20)]
data, cluster_location = make_blobs(n_samples=600, centers=centers, n_features=4,\
                                    shuffle=True, cluster_std=[0.9, 0.7, 0.5, 0.1], random_state=14)
#定义颜色变量
color = ['c', 'b', 'g', 'r', 'm', 'y', 'k', 'w']
plt.scatter(data[:, 0], data[:, 1], c=color[3], edgecolors='y')
plt.show()

# 参数设置为4,聚类分为4类
center, u, u0, d, jm, p, fpc = cmeans(data.T, m=2, c=4, error=0.0001, maxiter=1000)
for i in u:
    label = np.argmax(u, axis=0)
print('聚类为4类的center值:')
print(center)
print('聚类为4类的fpc值', fpc)

plt.scatter(data[:, 0], data[:, 1], c=color[3], edgecolors='y')
plt.scatter(center[:, 0], center[:, 1], marker='x', c=color[1], s=200)
plt.show()

# 参数设置为 c=6,聚类为6类
center, u, u0, d, jm, p, fpc = cmeans(data.T, m=2, c=6, error=0.0001, maxiter=1000)
for i in u:
    label = np.argmax(u, axis=0)
print('--'*25)
print('聚类为6类的center值:')
print(center)
print('聚类为6类的fpc值', fpc)
plt.scatter(data[:, 0], data[:, 1], c=color[3], edgecolors='y')
plt.scatter(center[:, 0], center[:, 1], marker='x', c=color[1], s=200)
plt.show()

运行结果

定义四类数据,其分布情况的散点图如下图所示:
在这里插入图片描述
通过模糊聚类cmeans算法找到4类数据的中心点:
在这里插入图片描述
再通过模糊聚类cmeans算法从4类数据中细分出6类数据的中心点:
在这里插入图片描述
分类中心点结果:

聚类为4类的center值:
[[ 1.49241067e+01 -1.19688065e+01]
 [ 4.64417094e-03  2.99248955e+01]
 [-1.49986595e+01  2.00066981e+01]
 [-2.11604602e+01  4.88395374e+01]]
聚类为4类的fpc值 0.9950676425117277
--------------------------------------------------
聚类为6类的center值:
[[  0.51441871  30.07891282]
 [-20.6185994   49.2201012 ]
 [-14.99878117  20.00636212]
 [-21.72200718  48.42167217]
 [ -0.56549085  29.75447536]
 [ 14.92414469 -11.96887098]]
聚类为6类的fpc值 0.8431144121149842

fpc值越高,分类效果越好。

参考文献:
[1] 周洋 张小霞《机器学习数学基础》

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

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

相关文章

TryHackMe-Red Team Capstone Challenge (红队挑战)【真实红队模拟】

Red Team Capstone Challenge 注意:我不会在这里提及相关的flag,只专心打;flag可以自己用各个hostname尝试一遍 挑战作者的一句话 这个房间被评为坚硬,但因为它是你前面的一座山,它可能被评为疯狂。但是,…

【Vue3】滑动验证组件 | 滑动验证

前言 滑块验证不只判断是否滑动到尾部,真正的目的是检测用户行为,检测行为是人为、脚本、还是其它。 防止使用脚本大量注册、请求等 。比如发送请求时,判断用户在某个页面停留了多长时间。登录、注册时是否点击了登录、注册按钮,…

Lesson1——数据结构前言

前言: 今天我们正式开始一个新的专栏——初阶数据结构(C语言实现),本专栏后续持续更新时间复杂度空间复杂度、顺序表、链表、栈和队列、二叉树、排序等算法的相关知识,欢迎大家互相学习,可以私信互相讨论哦…

一次oracle环境 enq: TX - allocate ITL entry锁问题分析

enq: TX - allocate ITL entry锁问题分析 通过分析问题时间段两个节点的AWR报告,TOP1等待为锁竞争enq: TX - allocate ITL entry,该等待事件是由于缺省情况下创建的表的INITRANS参数为1,索引的INITRANS参数值为2.当有太多的并发DML操作的数据行处于相同的…

日志模块封封装:单例模式+策略模式+构建者模式+bugly

日志模块封封装:单例模式策略模式构建者模式bugly 一.单例模式策略模式构建者模式二.日志模块封装1.日志等级:LoggerLevel枚举类2.日志输出类型:LoggerType枚举类3.ILogger接口4.LogCatLogger/FileLogger/NetWorkLogger/EmailLogger5.使用构建者模式创建…

相同格式相同分辨率图片不同大小分析

1、问题 有三张图片,如下: 这三张图片均为jpg格式,分辨率均为1851*580,肉眼看不出区别。但是大小不同。 2号为217KB,4号为1.15MB,5号为1.06MB。 我们看下常规信息,先看2号: 可以…

初识Linux:第五篇

初识Linux:第五篇 初识Linux:第五篇1.Linux下的用户2.Linux权限管理2.1文件权限管理2.2文件权限的更改2.21改变文件访问权限属性2.22改变文件的身份 3.三个问题 总结 初识Linux:第五篇 😁本篇主要介绍Linux权限的相关知识&#x1…

vue+elementui+nodejs高校校园在线打印预约系统

在线提交文档进行打印 首页简单介绍系统 语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 顶部或主页按钮转到打印 用户可以登录 查看历史打印记录 用户分学生和非学生 学生可以享有优惠…

基于.NetCore开源的Windows的GIF录屏工具

推荐一个Github上Start超过20K的超火、好用的屏幕截图转换为 GIF 动图开源项目。 项目简介 这是基于.Net Core WPF 开发的、开源项目,可将屏幕截图转为 GIF 动画。它的核心功能是能够简单、快速地截取整个屏幕或者选定区域,并将其转为 GIF动画&#x…

编写 ROS 消息发布订阅器(五)

执行命令,指定目录添加cpp文件 cd ~/catkin_ws/src/beginner_tutorials如果没有src目录, 就自己创建一个目录叫src cd src/ vim talker.cpp 复制代码粘贴: #include "ros/ros.h" #include "std_msgs/String.h" int m…

C++/R 期末冲刺3h

C 1. 基础程序 #include "iostream" // C头文件 #include "stdio.h" // C 头文件 //using namespace std; // 命名空间// main() 是程序开始执行的地方int main() {std::cout << "Hello, World!" << "\n";return 0; …

【数据结构】线性结构 之 顺序表

&#x1f331;博客主页&#xff1a;大寄一场. &#x1f331;系列专栏&#xff1a;数据结构与算法 &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 前言 顺序表概念及结构 静态代码实现&#xff1a; 动态代码实现&#xff1a; SeqList.h文件 SeqLi…

使用VitePress和Github搭建个人博客网站,可以自动构建和发布

之前我们写过一篇关于如何自动构建和发布个人博客的文章&#xff0c;当时是使用VuePress和GitLab。GitLab持续集成部署CI/CD初探&#xff1a;如何自动构建和发布个人前端博客 现在换了Vue3和Vite&#xff0c;使用VitePress在Github上又搭建了一个博客。博客地址&#xff1a; …

博弈Ai官网ChatGPT能力真实测评

链接&#xff1a;https://chat.bo-e.com/&#xff08;基于ChatGPT4和3.5研发的智能聊天机器人国产镜像&#xff09; 一&#xff0c;博弈Ai的UI设计样式 1、博弈Ai&#xff08;ChatGPT&#xff09;白天模式 2、博弈Ai&#xff08;ChatGPT&#xff09;黑天模式 3、博弈Ai&#x…

五、c++学习(加餐1:汇编基础学习)

经过前面几节课的学习&#xff0c;我们在一些地方都会使用汇编来分析&#xff0c;我们学习汇编&#xff0c;只是学习一些基础&#xff0c;主要是在我们需要深入分析语法的时候&#xff0c;使用汇编分析&#xff0c;这样会让我们更熟悉c编译器和语法。 从这节课开始&#xff0c…

【003hive基础】hive的数据类型

文章目录 一.数据类型1. 基础数据类型2. 复杂数据类型 二. 显式转换与隐式转换三. hive的读时模式 一.数据类型 1. 基础数据类型 2. 复杂数据类型 array: 有序相同数据类型的集合。 arrays(1, 2)map : key必须是基本数据类型&#xff0c;value不限。 map(‘a’, 1, ‘b’, 2)s…

线性回归、正规方程和梯度下降法

一、线性回归简介 1.定义与公式 线性回归是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。 特点&#xff1a;只有一个自变量的情况称为单变量回归&#xff0c;多余一个自变量情况的叫做多元回归 通用公式&#xff1a; y …

javascript基础三:谈谈 JavaScript 中的类型转换机制

一、概述 JS中有六种简单数据类型&#xff1a;undefined、null、boolean、string、number、symbol&#xff0c;以及引用类型&#xff1a;object 但是我们在声明的时候只有一种数据类型&#xff0c;只有到运行期间才会确定当前类型 let name y?allen:1上面代码中&#xff0c…

2023年NOC大赛创客智慧编程赛项Python 复赛模拟题(二)

题目来自:NOC 大赛创客智慧编程赛项Python 复赛模拟题(二) NOC大赛创客智慧编程赛项Python 复赛模拟题(二) 第一题: 编写一个成绩评价系统,当输入语文、数学和英语三门课程成绩时,输出三门课程总成绩及其等级。 (1)程序提示用户输入三个数字,数字分别表示语文、数学、…

ChatGPT-4 镜像网站推荐

文章目录 1. TomChat2. Ai Doge3. 二狗问答4. 小莓用AI5. Ora6. 未知名字7. VIVI-AI8. ATALK9. ChatGPT Web10 AIchatOS 什么是ChatGPT? ChatGPT&#xff0c;全称&#xff1a;聊天生成预训练转换器&#xff08;英语&#xff1a;Chat Generative Pre-trained Transformer&#…