机器学习三-xmeans

2023-10-27

能力有限,只是表面上理解了公式和图所表达的内容

论文参见:点击打开链接

已有文章分析参见:点击打开链接

具体java代码实现:点击打开链接

核心应该是

 分割前BIC分数 >分割后BIC分数     结论是 原簇可分割为两个新簇

图示如下


公式如下


公式含义参见代码具体内容 

代码分析如下:

 * 计算给定中心的BIC。
 *      * @参数k是簇的数量。
 *      * @参数n样本总数。
 *      * @参数d数据的维度。
 *      * @distortion集群的失真。
 *      * @clusterSize每个集群中采样的数量。
 *      * @返回BIC得分。
 */
private double bic(int k, int n, int d, double distortion, int[] clusterSize) {
    double variance = distortion / (n - k);//平均损失度,可以理解为点与中心点距离的平均方差

    double L = 0.0;
    for (int i = 0; i < k; i++) {
        L += logLikelihood(k, n, clusterSize[i], d, variance);
    }

    int numParameters = k + k * d;
    return L - 0.5 * numParameters * Math.log(n);
}

对数似然函数

 *      *
 *       * @参数k是簇的数量。
 *       * @参数n样本总数。
 *       * @参数ni属于此群集的样本数。
 *       * @参数d数据的维度。
 *       * @variance 群集的估计方差。
 *       * @返回可能性估计
 */
private static double logLikelihood(int k, int n, int ni, int d, double variance) {
    double p1 = -ni * LOG2PI;
    double p2 = -ni * d * Math.log(variance);
    double p3 = -(ni - k);
    double p4 = ni * Math.log(ni);
    double p5 = -ni * Math.log(n);
    double loglike = (p1 + p2 + p3) / 2 + p4 + p5;
    return loglike;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习三-xmeans 的相关文章

随机推荐

  • OpenGL ES EGL介绍

    前面已经在android平台上使用OpenGL ES的API了解了如何创建3D图形已经使用FBO渲染到纹理进行一些其他的操作 起初我学习OpenGL ES的目的就是为了研究Android平台上录制屏幕的方案 到目前为止 基础知识已经具备了
  • 稀疏矩阵 存储格式 COO CSR DIA ELL HYB

    稀疏矩阵是指矩阵中的元素大部分是0的矩阵 事实上 实际问题中大规模矩阵基本上都是稀疏矩阵 很多稀疏度在90 甚至99 以上 因此我们需要有高效的稀疏矩阵存储格式 本文总结几种典型的格式 COO CSR DIA ELL HYB 1 Coord
  • 低代码,或将颠覆开发行业?

    前言 传统的软件开发过程往往需要耗费大量的时间和精力 因为开发人员需编写复杂的代码以完成各种功能 低代码行业的发展 正好解决了这个问题 让复杂的代码编写一去不复返了 文章目录 前言 引入 强大的平台 总结 引入 低代码平台 是一种通过可视化
  • opencv滤波及C++代码实现(高斯,中值,均值,双边)

    图像平滑 图像平滑的目的之一是消除噪声 二是模糊图像 从信号频谱的角度来看 信号缓慢变化的部分在频率域表现为低频 迅速变化的部分表现为高频 图像在获取 储存 处理 传输过程中 会受到电气系统和外界干扰而存在一定程度的噪声 图像噪声使图像模糊
  • 如何给Makefile指定自己想用的gcc/g++版本(编译开源项目acl-dev/acl库时的经历)

    最近在Github上找到了一个很不错的C 服务器框架库 所以Clone了一份想试试 下图是该项目首页 项目主持人也给出了相应平台的库编译方式 此处只涉及其常用的三个库 以上是三库合一的编译方式 当然也可独自编译 如果这样 需要注意一点 因为
  • 全虚拟化和半虚拟化的特点和区别

    全虚拟化 全虚拟化是通过客户机和宿主机之间一个虚拟化逻辑层Hypervisor来完全模拟底层硬件细节 半虚拟化 半虚拟化是通过实现修改的客户机操作系统内核共享宿主机底层硬件来实现 全虚拟化的优缺点 优点 操作系统内核不需要做特殊配置 部署便
  • 华为OD机试真题- 战场索敌-2023年OD统一考试(B卷)

    题目描述 有一个大小是NxM的战场地图 被墙壁 分隔成大小不同的区域 上下左右四个方向相邻的空地 属于同一个区域 只有空地上可能存在敌人 E 请求出地图上总共有多少区域里的敌人数小于K 输入描述 第一行输入为N M K N表示地图的行数 M
  • 区块链学习笔记二之区块链的加密技术

    概述 区块链最常见的用途是消除交易双方的中间环节 举个例子来说 学位认证的过程 当你投递简历到企业时 企业一般需要验证你的学位在类似于学信网等第三方验证平台可查 这相当于依托第三方验证平台验证你的过往的学习证明 MIT首推出基于区块链技术的
  • vue-cli3.0+antd+steps

    前言 这里对antd的步骤条进行二次封装 实现效果 实现步骤 第一 antd steps vue
  • shell等差、等比数列和数组拼接

    arithmetic progression 搜参数时 参数空间可能由一些散装的值和一个等差 比数列组成 如 tune alpha from 0 01 0 99 and 0 1 to 0 9 at an increment of 0 1 p
  • Git cherry-pick和format-patch(给分支打补丁)区别和使用场景

    How to take commits from a different repository Git cherry pick format patch Void Canvas http voidcanvas com cherry pick
  • STM32入门:Systick(嘀嗒定时器)学习

    Systick 系统嘀嗒定时器 学习 一 Systick 介绍 Systick 是 STM32 的一个系统定时器 又名系统嘀嗒定时器 是一个 24 位的倒计数定时器 当计数到 0 时 将从 RELOAD 寄存器中自动重装载定时初值 开始新一
  • Flutter 状态管理之provide

    什么是状态管理 通俗点来讲就是 对一个数据源的统一管理 比如 列表和详情都有收藏按钮 在详情收藏之后 列表也要同步收藏状态 类似的还有签到 领红包 已读等多种业务场景 在项目小 业务简单的时候可能还不需要或者比较好管理 当项目逐渐庞大 业务
  • PGSQL获取过去30天,7天,昨天,今天的数据

    select count as allBookCount count filter where createtime between SELECT current date interval 30 day and current date
  • com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver的区别

    一 驱动报错 driverClassName com mysql jdbc Driver url jdbc mysql db1 useUnicode true characterEncoding utf8 useSSL false user
  • ChatGPT fine tune微调+prompt介绍

    目录 1 如何使用ChatGPT 1 1 图片生成 image generation 1 2 对话 chat 1 3 中文纠错 Chinese Spelling Correct 1 4 关键词提取 keyword extract 1 5 抽
  • Blender的一些使用小结,在辣椒酱基础上加了点,会持续更新

    Blender的一些使用小结 在辣椒酱基础上加了点 会持续更新 操作 快捷键 边线折痕 编辑模式 SHIFT E 点倒角 编辑模式 Ctrl Shift B 按P选择内外 加选 编辑模式 Ctrl 减选 编辑模式 Ctrl 分块选择 编辑模
  • 机器学习如何提高训练模型结果的准确度

    提高输出结果的准确度可以从以下几个方面入手 1 调整超参数 可以尝试调整模型的超参数 比如学习率 迭代次数 隐层维度 卷积核大小等 找到最优的超参数组合来提高准确度 2 增加训练数据 增加训练数据可以让模型更好地学习到数据的特征 从而提高准
  • sql分别从两个表取出_SQL--多表查询

    前几篇文章中 我们查询的数据都是在一张表中进行操作的 而在实际工作中 我们经常需要在不同的表中查询数据 今天我们来学习从多张表中获取数据的方法 多表查询 表的加法 表的联结 用SQL联结解决业务问题 case 表达式 1 表的加法 unio
  • 机器学习三-xmeans

    能力有限 只是表面上理解了公式和图所表达的内容 论文参见 点击打开链接 已有文章分析参见 点击打开链接 具体java代码实现 点击打开链接 核心应该是 分割前BIC分数 gt 分割后BIC分数 结论是 原簇可分割为两个新簇 图示如下 公式如