高斯-赛得尔迭代式 c++_高斯混合模型(聚类、密度估计)
![](/assets/blank.gif)
高斯混合模型通常被归类为聚类算法,但本质上 他是一个密度估计算法
本文目录:
1 观察K-means算法的缺陷
2 引出高斯混合模型
3 将GMM用作密度估计
4 由分布函数得到生成模型
5 确定需要多少成分?
本例中所有代码的实现已上传至 git仓库
1 观察K-means算法的缺陷
k-means算法的非概率性和仅根据到族中心的距离指派族的特征导致该算法性能低下
且k-means算法只对简单的,分离性能好的,并且是圆形分布的数据有比较好的效果
通过实例来观察K-means算法的缺陷
%
![](/assets/blank.gif)
k-means算法相当于在每个族的中心放置了一个圆圈,(针对此处的二维数据来说)
半径是根据最远的点与族中心点的距离算出
下面用一个函数将这个聚类圆圈可视化
from
如果数据点不是圆形分布的
k-means算法的聚类效果就会变差
rng
![](/assets/blank.gif)
2 引出高斯混合模型
高斯混合模型能够计算出每个数据点,属于每个族中心的概率大小
在默认参数设置的、数据简单可分的情况下,
GMM的分类效果与k-means基本相同
from
![](/assets/blank.gif)
得到数据的概率分布结果
probs
编写绘制gmm绘制边界的函数
from
- 在圆形数据上的聚类结果
gmm
![](/assets/blank.gif)
- 在偏斜拉伸数据上的聚类结果
gmm
![](/assets/blank.gif)
3 将GMM用作密度估计
GMM本质上是一个密度估计算法;也就是说,从技术的角度考虑,
一个 GMM 拟合的结果并不是一个聚类模型,而是描述数据分布的生成概率模型。
- 非线性边界的情况
# 构建非线性可分数据
![](/assets/blank.gif)
如果使用2个成分聚类(即废了结果设置为2),基本没什么效果
gmm2
![](/assets/blank.gif)
如果设置为多个聚类成分
gmm16
![](/assets/blank.gif)
这里采用 16 个高斯曲线的混合形式不是为了找到数据的分隔的簇,而是为了对输入数据的总体分布建模。
4 由分布函数得到生成模型
分布函数的生成模型可以生成新的,与输入数据类似的随机分布函数(生成新的数据点)
用 GMM 拟合原始数据获得的 16 个成分生成的 400 个新数据点
Xnew
![](/assets/blank.gif)
5 需要多少成分?
作为一种生成模型,GMM 提供了一种确定数据集最优成分数量的方法。
- 赤池信息量准则(Akaike information criterion) AIC
- 贝叶斯信息准则(Bayesian information criterion) BIC
n_components
![](/assets/blank.gif)
观察可得,在 8~12 个主成分的时候,AIC 较小
高斯-赛得尔迭代式 c++_高斯混合模型(聚类、密度估计)相关推荐
- 高斯-赛得尔迭代式 c++_高斯混合模型(Gaussian Mixture Model)与EM算法原理(一)
高斯混合模型(Gaussian Mixture Model)是机器学习中一种常用的聚类算法,本文介绍了其原理,并推导了其参数估计的过程.主要参考Christopher M. Bishop的<Pa ...
- 数值计算方法 线性方程组的数值解法(4)---向量和矩阵范数(norm) 高斯-赛德尔(Gauss-Seidel)迭代、共轭梯度(Conjugate Gradient)迭代
(范数部分matlab有现成函数,若有需要直接参照matlab_norm) 向量范数 设x∈Rn\boldsymbol x\in \boldsymbol R^nx∈Rn则范数||x||满足:∣∣x∣∣ ...
- 高斯—赛德尔求解线性方程+C代码
高斯-赛德尔迭代求矩阵特征值公式如下: 举例: 实现代码: #include "stdio.h" #include "stdlib.h" #include &q ...
- 高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现
高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现 代码 运行 手算例题 迭代法解线性方程组的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则,有不同的 ...
- MATLAB实现雅可比与高斯塞德尔迭代
概述 用MATLAB编程实现,形成m函数文件.输入A,b矩阵,无返回值,解得x向量直接显示在命令行窗口,同时绘制出x向量的收敛曲线. A = [ 2 − 1 1 1 1 1 1 1 − 2 ] b = ...
- [计算机数值分析]高斯-塞德尔迭代公式解线性方程组
在雅可比迭代公式的基础上,对于收敛的迭代过程,所求出的"新值"常比"老值"更准确些,因此可以用它替代老值作进一步的计算,这样的思想就是著名的高斯-塞德尔迭代公式 ...
- 三种迭代法解方程组(雅可比Jacobi、高斯-赛德尔Gaisi_saideer、逐次超松弛SOR)
分析用下列迭代法解线性方程组 4 -1 0 -1 0 0 0 -1 4 -1 0 -1 0 5 0 -1 4 -1 0 -1 -2 -1 0 -1 4 -1 0 ...
- Matlab实现——严格对角占优三对角方程组求解(高斯赛尔德Gauss-Seidel迭代、超松弛)
欢迎前往个人博客 驽马点滴 和视频空间 哔哩哔哩-<挨踢日志> 严格对角占优三对角方程组求解 对中等规模的n阶的(n<100)线性方程组,直接法的准确性和可靠性,所以常采用直接法 对 ...
- 【深入浅出强化学习原理入门】高斯-赛德尔(Gauss-Seidel)迭代法
基于模型的动态规划方法中,使用高斯-赛德尔迭代算法求解值函数. 这种迭代算法到底是怎么求解线性方程组的,文章迭代法求解线性方程组给出了非常详细的解释. 但理解该文还需要了解相关的基础知识: 1.范数 ...
- 高斯—赛德尔(Gauss - Seidel)迭代法解线性方程组(Matlab程序)
%---高斯-赛德尔迭代法----- %---Gauss - Seidel iteration method clear;clc; % A=[10,-1,-2;-1,10,-2;-1,-1,5]; % ...
最新文章
- HDFS组件性能调优:数据平衡
- Memcached + MSM 实现Tomcat Session保持
- pycharm更换源(换源)(镜像源)
- 模型怎么样_次世代PBR游戏模型流程到底是怎么样?
- 【python数据挖掘课程】二十二.Basemap地图包安装入门及基础知识讲解
- 51nod 1414 冰雕 思路:暴力模拟题
- 【Java】多线程SynchronizedVolatile、锁升级过程 - 预习+第一天笔记
- python短信接口_短信接口DEMO-PYTHON
- 我尽力了,为啥还是Bug不断?
- JBoss5 启动报错java.lang.IllegalArgumentException: ...
- Apache PDFBox命令行工具:无需Java编码
- OSGi将Maven与Equinox结合使用
- 转载:::::简单分享一个轻量级自动化测试框架目录结构设计
- C语言新手入门成长帖(1)
- java极光短信的集成
- [ NeurIPS 2020 ] 一叶知秋 —— 基于“单目标域样本”的领域自适应方法
- STM32中断优先级彻底讲解
- 计算机网络安全的对策有哪些,计算机网络安全措施有哪些
- python实训总结泰坦尼克号_Python-数据清洗与分析案例之泰坦尼克号(一)
- 索尼的hlg是什么_索尼HLG的拍摄使用方法