基本算法——聚类

目录

创建工程

加载数据

聚类算法

评估

完整代码

结论


相比于有监督的分类器,聚类的目标是从一组未打标签的数据中识别相似对象组。它可 以用于识别同类群体的代表性样本,找到有用与合适的分组;或者找到不寻常的样本,比如 异常值。

下面通过分析银行数据集演示如何实现聚类。数据集包含600个实例,每个实例用11个属性 进行描述,这些属性包括年龄、性别、地区、收入、婚姻状况、是否有子女、汽车拥有情况、存 款活动、当前活动、房地产抵押、PEP。分析中,我们将尝试使用EMExpectation Maximization, 期望最大化)聚类算法识别常见的客户组。

EM工作过程如下:给定一组簇(clusters),EM首先为每个实例指派一个属于某个特定簇的 概率分布。比如,起初有3个簇ABC,一个实例分别属于簇ABC的概率分布依次为0.7、 0.10、0.20。第二步中,EM重新评估每个类的概率分布的参数向量。算法不断对这两步做迭代, 直到参数收敛或者达到迭代的最大值。

对于EM中使用的簇数,可以手动设置,也可以通过交叉验证进行自动设置。另外一个确 定数据集中簇数的方法是肘部法则(elbow-method),这个方法会查看特定簇数所解释的偏差 百分比。使用该方法会不断增加簇数,直到新加的簇不会带来很多信息,即只能解释很少的额外 差异。

创建工程

依然使用上一篇文章的工程

加载数据

        // 从文件中读取数据集Instances data = new Instances(new BufferedReader(new FileReader(PATH)));

聚类算法

创建聚类模型的过程与创建分类模型的过程很类似,即加载数据与创建模型。Weka中,使 用weka.clusterers包实现聚类算法

        // 创建一个新的聚类器实例EM model = new EM();// 构建聚类模型model.buildClusterer(data);// 打印聚类模型的详细信息System.out.println(model);
该模型识别出如下 6 个簇:
EM
==Number of clusters selected by cross validation: 6
Number of iterations performed: 100Cluster
Attribute              0        1        2        3        4        5(0.1)   (0.13)   (0.26)   (0.25)   (0.12)   (0.14)
======================================================================
age0_34            10.0535  51.8472 122.2815  12.6207   3.1023   1.094835_51           38.6282  24.4056  29.6252  89.4447  34.5208   3.375552_max          13.4293    6.693   6.3459  50.8984   37.861  81.7724[total]         62.1111  82.9457 158.2526 152.9638  75.4841  86.2428
sexFEMALE          27.1812  32.2338  77.9304  83.5129  40.3199  44.8218MALE            33.9299  49.7119  79.3222  68.4509  34.1642   40.421[total]         61.1111  81.9457 157.2526 151.9638  74.4841  85.2428
regionINNER_CITY      26.1651  46.7431   73.874  60.1973  33.3759  34.6445TOWN            24.6991  13.0716  48.4446  53.1731   21.617  17.9946RURAL            8.4113  12.7871  21.7634  25.7529  11.1622  22.1231SUBURBAN         3.8356   11.344  15.1706  14.8404  10.3289  12.4805[total]         63.1111  83.9457 159.2526 153.9638  76.4841  87.2428
income0_24386         22.5301  77.3981 150.8728  35.3652   3.0947   1.739124387_43758     38.0636   4.5119   6.2909 113.3875  70.4654   8.280843759_max        1.5174   1.0357   1.0889   4.2111    1.924  76.2228[total]         62.1111  82.9457 158.2526 152.9638  75.4841  86.2428
marriedNO              15.0163  34.8213  48.6021  32.7954  49.5126  29.2523YES             46.0948  47.1244 108.6506 119.1684  24.9715  55.9904[total]         61.1111  81.9457 157.2526 151.9638  74.4841  85.2428
children0                2.1776  53.2782  55.6363  92.5938   32.663  32.65111               51.5497  26.7841  22.0968   1.9302  18.9418  19.69732                6.4264   2.3777  56.5523  25.7573  23.3335  25.55293                2.9574   1.5057  24.9671  33.6825   1.5458   9.3415[total]         63.1111  83.9457 159.2526 153.9638  76.4841  87.2428
carNO              29.7462  47.4075  89.7372  69.5918  34.7847  38.7326YES             31.3649  34.5382  67.5154   82.372  39.6993  46.5101[total]         61.1111  81.9457 157.2526 151.9638  74.4841  85.2428
save_actNO               6.7118  58.9844  49.6095  39.7853  35.7784   1.1306YES             54.3993  22.9613 107.6431 112.1785  38.7056  84.1121[total]         61.1111  81.9457 157.2526 151.9638  74.4841  85.2428
current_actNO              12.8656  21.8946  35.3337  46.1845  15.9243  18.7973YES             48.2455  60.0511 121.9189 105.7792  58.5598  66.4455[total]         61.1111  81.9457 157.2526 151.9638  74.4841  85.2428
mortgageNO              34.2814  47.6791 108.1248  95.3628  54.1015  57.4504YES             26.8297  34.2666  49.1278   56.601  20.3826  27.7924[total]         61.1111  81.9457 157.2526 151.9638  74.4841  85.2428
pepYES             59.0226  72.2592  18.5799   3.8416  68.4764  57.8202NO               2.0885   9.6865 138.6727 148.1222   6.0076  27.4226[total]         61.1111  81.9457 157.2526 151.9638  74.4841  85.2428-8.773422954298614

第一行表明有6个簇,第一列指出属性及相应范围。比如,属性age划分为3 个区段:0~3435~5152~max。左侧列表示有多少个实例归入每个簇的特定范围,比如0~34 年龄组的客户大部分位于簇#2122个实例)。

评估

可以使用对数似然度量(log likelihood measure)评估聚类算法的质量,即测量被识别的簇的 一致程度。数据集划分为多个折(folds),针对每个折运行聚类。这么做的动机是,如果聚类算 法为相似数据(该数据不用于拟合参数)给出高概率,那么它在捕获数据结构方面可能做得很好。

        // 使用 10 折交叉验证评估模型的对数似然值double logLikelihood = ClusterEvaluation.crossValidateModel(model, data, 10, new Random(1));// 打印对数似然值System.out.println(logLikelihood);

评估结果:-8.773422954298614

完整代码

    private static String PATH = ClassUtils.getDefaultClassLoader().getResource("bank-data.arff").getPath();public static void main(String[] args) throws Exception {// 从文件中读取数据集Instances data = new Instances(new BufferedReader(new FileReader(PATH)));// 创建一个新的聚类器实例EM model = new EM();// 构建聚类模型model.buildClusterer(data);// 打印聚类模型的详细信息System.out.println(model);// 使用 10 折交叉验证评估模型的对数似然值double logLikelihood = ClusterEvaluation.crossValidateModel(model, data, 10, new Random(1));// 打印对数似然值System.out.println(logLikelihood);}

结论

1. 聚类数量: 交叉验证选择的最佳聚类数量为 6 个。
2. 迭代次数: 模型进行了 100 次迭代。
3. 聚类特征分布:
   - **年龄(age)**:
     - 年龄在 52 岁以上的个体在聚类 5 中有较高的比例。
     - 年龄在 35-51 岁的个体在聚类 3 中有较高的比例。
   - **性别(sex)**:
     - 女性的比例在聚类 2、3 和 6 中较高。
     - 男性的比例在聚类 1 和 4 中较高。
   - **地区(region)**:
     - 内城(INNER_CITY)和郊区(SUBURBAN)的个体在聚类 0 和 5 中较高。
     - 农村和城镇的个体在聚类 2 和 3 中较高。
   - **收入(income)**:
     - 高收入个体(43759_max)在聚类 5 中比例较高。
     - 中等收入个体(24387_43758)在聚类 3 中比例较高。
   - **婚姻状况(married)**:
     - 未婚个体在聚类 4 中比例较高。
     - 已婚个体在聚类 3 和 6 中比例较高。
   - **子女数量(children)**:
     - 无子女的个体在聚类 3 中比例较高。
     - 有多个子女的个体在聚类 0 和 5 中比例较高。
   - **是否有车(car)**:
     - 无车的个体在聚类 2 中比例较高。
     - 有车的个体在聚类 3 和 4 中比例较高。
   - **是否有储蓄账户(save_act)**:
     - 有储蓄账户的个体在聚类 6 中比例较高。
     - 无储蓄账户的个体在聚类 5 中比例较低。
   - **是否有当前账户(current_act)**:
     - 无当前账户的个体在聚类 0 和 5 中比例较低。
     - 有当前账户的个体在聚类 3 和 4 中比例较高。
   - **是否有抵押贷款(mortgage)**:
     - 无抵押贷款的个体在聚类 3 和 4 中比例较高。
     - 有抵押贷款的个体在聚类 6 中比例较低。
   - **是否有个人养老计划(pep)**:
     - 有个人养老计划的个体在聚类 1 和 4 中比例较高。
     - 无个人养老计划的个体在聚类 2 和 3 中比例较高。

4. 目标变量:结果显示目标变量的得分(-8.773422954298614),这可能是一个对数似然值或某种损失函数的值,表示模型在训练数据上的拟合程度。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装教程:慧集通集成平台(DataLinkX)智能体客户端安装操作(Linux/windows/mac)

1.下载客户端 使用提供的账号登录集成平台后台(https://www.datalinkx.cn/),点击左侧菜单栏【智能体】→【智能体】进入到智能体列表界面,在该界面我们找到功能栏中的下载按钮点击则会弹出下载界面,在该界面我们可以选择不同的系统操作系统来下载对应版…

【Rust自学】8.4. String类型 Pt.2:字节、标量值、字形簇以及字符串的各类操作

8.4.0. 本章内容 第八章主要讲的是Rust中常见的集合。Rust中提供了很多集合类型的数据结构,这些集合可以包含很多值。但是第八章所讲的集合与数组和元组有所不同。 第八章中的集合是存储在堆内存上而非栈内存上的,这也意味着这些集合的数据大小无需在编…

1、pycharm、python下载与安装

1、去官网下载pycharm 官网:https://www.jetbrains.com/pycharm/download/?sectionwindows 2、在等待期间,去下载python 进入官网地址:https://www.python.org/downloads/windows/ 3、安装pycharm 桌面会出现快捷方式 4、安装python…

静默模式下安装Weblogic 14.1.1.0.0

目录 一、下载weblogic安装包二、安装JDK三、安装weblogic1、创建weblogic用户2、创建weblogic的安装目录3、上传并解压weblogic安装包4、创建 oraInst.loc 文件5、创建 wls.rsp 响应文件6、静默安装weblogic7、创建域8、启动Weblogic9、设置防火墙规则,以便其他服务器访问10、…

Windows安装Confluence详解

Confluence官网下载地址:https://www.atlassian.com/software/confluence/download-archives 建议安装confluence版本下载5.0-7.0之间,比较稳定一点,我安装的是6.8.2版本 centos7系统和阿里云服务安装后太卡了,果断放弃 Conflu…

Unity is running as administrator解决办法

每次打开Unity项目都会有这个弹窗 解决办法: 打开本地安全策略 - 安全选项 ,把 用户账户控制:以管理员批准模式运行所有管理员 用户账户控制:用于内置管理员账户的管理员批准模式 改成已启用就行

springboot+vue实现SSE服务器发送事件

思路 一个基于订阅发布机制的SSE事件。客户端可以请求订阅api(携带客户端id),与服务器建立SSE链接;后续服务器需要推送消息到客户端时,再根据客户端id从已建立链接的会话中找到目标客户端,将消息推送出去。…

【阻塞队列】- ArrayBlockingQueue 的原理-迭代器

文章目录 1. 前言2. 迭代器3. Itrs3.1 参数3.2 迭代器 Itr3.2.1 参数3.2.2 构造器3.2.3 hasNext3.2.4 next3.2.5 remove3.2.6 shutdown3.2.7 removedAt3.2.8 takeIndexWrapped 3.3 doSomeSweeping(tryHandler)3.4 register3.5 takeIndexWrapped3.6 remov…

人工智能与传统编程的主要区别是什么?

传统编程:开发者预先编写软件行为规则,代码基于程序员定义逻辑处理输入并产生确定输出,具有确定性、手动编写规则和结构化逻辑特点,如垃圾邮件分类程序基于预设关键词等规则。AI 编程:从数据中学习而非手动编写规则&am…

SpringBoot使用TraceId日志链路追踪

项目场景: ??有时候一个业务调用链场景,很长,调了各种各样的方法,看日志的时候,各个接口的日志穿插,确实让人头大。为了解决这个痛点,就使用了TraceId,根据TraceId关键字进入服务…

ts总结一下

ts基础应用 /*** 泛型工具类型*/ interface IProps {id: string;title: string;children: number[]; } type omita Omit<IProps, id | title>; const omitaA: omita {children: [1] }; type picka Pick<IProps, id | title>; const pickaA: picka {id: ,title…

八大排序——直接插入排序

直接插入排序&#xff08;Straight Insertion Sort&#xff09;&#xff0c;通常简称为插入排序&#xff0c;是一种简单直观的排序算法。它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。本文…

【QGIS入门实战精品教程】7.3:QGIS制作千层饼(DEM+等高线+影像+TIN)

文章目录 一、效果展示二、数据准备三、制作过程1. 打开软件2. 添加图层3. 制作千层饼一、效果展示 二、数据准备 订阅专栏后,从专栏配套案例数据包中的7.3.rar中获取。 1. dem 2. 影像 3. 等高线 4. tin 三、制作过程 1. 打开软件 打开QGIS软件。 QGIS软件主界面。

NetSuite Formula(HTML)超链打开Transaction

当Saved Search作为Sublist应用在Form时&#xff0c;如果Document Number是Group过的&#xff0c;则会出现如下超链失效的情况。 解决办法&#xff1a; 可以利用Saved Search中的Formula&#xff08;HTML&#xff09;功能来构建超链&#xff0c;用于打开Transaction。 以下图…

Springboot3.x整合swagger3

在网上看了许多教程&#xff0c;发现很多都是针对Spring Boot 2 框架的&#xff0c;即使有针对Spring Boot 3 的&#xff0c;用法也不太一样,配置项经常找不到类&#xff0c;经过对比测试&#xff0c;最后我使用的是 SpringDoc OpenAPI Starter WebMvc UI. pom为 <!--swag…

android.enableJetifier=true的作用:V4包的类自动编程成了androidx包的类,实现androidx的向下兼容

结论&#xff1a;引入androidx包后&#xff0c;可以兼容旧版本v4包的插件&#xff0c;把之前的 implementation com.yinglan.alphatabs:library:1.0.8 引入的组件中使用v4包的类&#xff0c;里面V4包自动反编译成 androidx包的类 结论; ‌V4包的类自动编程成了androidx包的…

详解MySQL在Windows上的安装

目录 查看电脑上是否安装了MySQL 下载安装MySQL 打开MySQL官网&#xff0c;找到DOWNLOADS 然后往下翻&#xff0c;找到MySQL Community(GPL) Downloads>> 然后找到MySQL Community Server 然后下载&#xff0c;选择No thanks,just start my download. 然后双击进行…

excel操作

来源&#xff1a;B站默默亚 一、版本识别 特点&#xff1a;向后兼容&#xff1b;高版本可以打开低版本&#xff0c;低版本不可以打开高版本 工作中&#xff0c;给老板最低版本&#xff0c;即2003版本 二、文件的扩展名 三、excel页面

最大化堡垒补给数量的策略与实现

最大化堡垒补给数量的策略与实现 问题描述输入格式输出格式问题分析解决方案代码实现代码解释问题描述 可怕的战争发生了,小度作为后勤保障工作人员,为了保卫国家而努力。现在有 N 个堡垒需要补给,然而总的预算 B 是有限的。每个堡垒需要价值 P(i) 的补给,并且需要 S(i) 的…

手机实时提取SIM卡打电话的信令声音-双卡手机来电如何获取哪一个卡的来电

手机实时提取SIM卡打电话的信令声音 --双卡手机来电如何获取哪一个卡的来电 一、前言 前面的篇章《手机实时提取SIM卡打电话的信令声音-智能拨号器的双SIM卡切换方案》中&#xff0c;我们论述了局域网SIP坐席通过手机外呼出去时&#xff0c;手机中主副卡的呼叫调度策略。 但…