该类实现了期望最大化算法。 更多信息...
#include <opencv2/ml.hpp>
|
virtual int | getClustersNumber () const =0 |
|
virtual int | getCovarianceMatrixType () const =0 |
|
virtual void | getCovs (std::vector< Mat > &covs) const =0 |
| 返回协方差矩阵。
|
|
virtual Mat | getMeans () const =0 |
| 返回簇中心(高斯混合的均值)
|
|
virtual TermCriteria | getTermCriteria () const =0 |
|
virtual Mat | getWeights () const =0 |
| 返回混合权重。
|
|
virtual float | predict (InputArray samples, OutputArray results=noArray(), int flags=0) const CV_OVERRIDE=0 |
| 返回给定样本的后验概率。
|
|
virtual Vec2d | predict2 (InputArray sample, OutputArray probs) const =0 |
| 返回给定样本的似然对数值和最可能混合组件的索引。
|
|
virtual void | setClustersNumber (int val)=0 |
|
virtual void | setCovarianceMatrixType (int val)=0 |
|
virtual void | setTermCriteria (const TermCriteria &val)=0 |
|
virtual bool | trainE(trainE (InputArray samples, InputArray means0, InputArray covs0=noArray(), InputArray weights0=noArray(), OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray()))=0 |
| 从一个样本集中估计高斯混合参数。
|
|
virtual bool | trainEM (InputArray samples, OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray()))=0 |
| 从一个样本集中估计高斯混合参数。
|
|
virtual bool | trainM (InputArray samples, InputArray probs0, OutputArray logLikelihoods=noArray(), OutputArray labels=noArray(), OutputArray probs=noArray()))=0 |
| 从一个样本集中估计高斯混合参数。
|
|
virtual float | calcError (const Ptr< TrainData > &data, bool test, OutputArray resp) const |
| 计算机器在训练或测试数据集上的误差。
|
|
virtual bool | empty () const CV_OVERRIDE |
| 如果算法为空则返回 true(例如在开始时或读取失败之后)。
|
|
virtual int | getVarCount () const =0 |
| 返回训练样本中的变量数量。
|
|
virtual bool | isClassifier () const =0 |
| 如果模型是分类器则返回 true。
|
|
virtual bool | isTrained () const =0 |
| 如果模型已训练则返回 true。
|
|
virtual bool | train (const Ptr< TrainData > &trainData, int flags=0) |
| 训练统计模型。
|
|
virtual bool | 训练 (InputArray samples, int layout, InputArray responses) |
| 训练统计模型。
|
|
| 算法 () |
|
virtual | ~算法 () |
|
virtual void | clear () |
| 清除算法状态。
|
|
virtual String | getDefaultName () const |
|
virtual void | read (const FileNode &fn) |
| 从文件存储中读取算法参数。
|
|
virtual void | save (const String &filename) const |
|
void | write (const Ptr< FileStorage > &fs, const String &name=String()) const |
|
virtual void | write (FileStorage &fs) const |
| 将算法参数存储在文件存储中。
|
|
void | write (FileStorage > &fs, const String &name) const |
|
◆ 匿名枚举
默认参数。
枚举器 |
---|
DEFAULT_NCLUSTERS | |
DEFAULT_MAX_ITERS | |
◆ 匿名枚举
初始步骤。
枚举器 |
---|
START_E_STEP | |
START_M_STEP | |
START_AUTO_STEP | |
◆ 类型
协方差矩阵的类型。
枚举器 |
---|
COV_MAT_SPHERICAL | 缩放的单位矩阵 \(\mu_k * I\)。每个矩阵只有一个参数 \(\mu_k\) 需要估计。此选项可适用于特殊情况,当约束相关时,或作为优化的第一步(例如,当数据使用 PCA 预处理时)。这种初步估计的结果可以再次传递给优化过程,这次是 with covMatType=EM::COV_MAT_DIAGONAL。
|
COV_MAT_DIAGONAL | 对角线矩阵,对角线元素为正。每个矩阵的自由参数数量为 d。这是最常见的选项,能产生良好的估计结果。
|
COV_MAT_GENERIC | 一个对角线矩阵,具有正对角线元素。每个矩阵中的自由参数数量约为 \(d^2/2\)。除非有相当准确的参数初始估计和/或大量的训练样本,否则不推荐使用此选项。
|
COV_MAT_DEFAULT | |
◆ create()
static Ptr< EM > cv::ml::EM::create |
( |
| ) |
|
|
static |
Python |
---|
| cv.ml.EM.create( | | ) -> | retval |
| cv.ml.EM_create( | | ) -> | retval |
◆ getClustersNumber()
virtual int cv::ml::EM::getClustersNumber |
( |
| ) |
const |
|
纯虚拟 |
Python |
---|
| cv.ml.EM.getClustersNumber( | | ) -> | retval |
◆ getCovarianceMatrixType()
virtual int cv::ml::EM::getCovarianceMatrixType |
( |
| ) |
const |
|
纯虚拟 |
Python |
---|
| cv.ml.EM.getCovarianceMatrixType( | | ) -> | retval |
◆ getCovs()
virtual void cv::ml::EM::getCovs |
( |
std::vector< Mat > & |
covs | ) |
const |
|
纯虚拟 |
Python |
---|
| cv.ml.EM.getCovs( | [, covs] | ) -> | covs |
返回协方差矩阵。
返回协方差矩阵的向量。矩阵的数量等于高斯混合的数量,每个矩阵是NxN的平方浮点矩阵,其中N是空间维数。
◆ getMeans()
virtual Mat cv::ml::EM::getMeans |
( |
| ) |
const |
|
纯虚拟 |
Python |
---|
| cv.ml.EM.getMeans( | | ) -> | retval |
返回簇中心(高斯混合的均值)
返回具有矩阵行数等于混合数和列数等于空间维数的矩阵。
◆ getTermCriteria()
Python |
---|
| cv.ml.EM.getTermCriteria( | | ) -> | retval |
◆ getWeights()
virtual Mat cv::ml::EM::getWeights |
( |
| ) |
const |
|
纯虚拟 |
Python |
---|
| cv.ml.EM.getWeights( | | ) -> | retval |
返回混合权重。
返回具有与混合数相等元素数的向量。
◆ load()
Python |
---|
| cv.ml.EM.load( | filepath[, nodeName] | ) -> | retval |
| cv.ml.EM_load( | filepath[, nodeName] | ) -> | retval |
从文件加载并创建序列化的 EM。
使用 EM::save 序列化和存储一个EM到磁盘。再次从这个文件中加载EM,通过调用此函数并指定文件路径。可选地指定包含分类器的节点
- 参数
-
filepath | 序列化的EM的路径 |
nodeName | 包含分类器的节点的名称 |
◆ predict()
Python |
---|
| cv.ml.EM.predict( | samples[, results[, flags]] | ) -> | retval, results |
返回给定样本的后验概率。
- 参数
-
samples | 输入样本,浮点矩阵 |
结果 | 可选输出结果矩阵 \( nSamples \times nClusters \)。它包含从输入样本的每个样本的后验概率。 |
标志 | 该参数将被忽略 |
实现了 cv::ml::StatModel。
◆ predict2()
Python |
---|
| cv.ml.EM.predict2( | sample[, probs] | ) -> | retval, probs |
返回给定样本的似然对数值和最可能混合组件的索引。
- 参数
-
样本 | 用于分类的样本。它应为一维矩阵,大小为 \(1 \times dims\) 或 \(dims \times 1\)。 |
probs | 可选输出矩阵,包含给定样本的每个组件的后验概率。它的大小为 \(1 \times nclusters\),类型为 CV_64FC1。 |
该方法返回一个双元素双精度向量。零元素是样本的似然对数值。第一个元素是给定样本最可能的混合成分的索引。
◆ setClustersNumber()
virtual void cv::ml::EM::setClustersNumber |
( |
int |
val | ) |
|
|
纯虚拟 |
Python |
---|
| cv.ml.EM.setClustersNumber( | val | ) -> | None |
◆ setCovarianceMatrixType()
virtual void cv::ml::EM::setCovarianceMatrixType |
( |
int |
val | ) |
|
|
纯虚拟 |
Python |
---|
| cv.ml.EM.setCovarianceMatrixType( | val | ) -> | None |
◆ setTermCriteria()
virtual void cv::ml::EM::setTermCriteria |
( |
const TermCriteria & |
val | ) |
|
|
纯虚拟 |
Python |
---|
| cv.ml.EM.setTermCriteria( | val | ) -> | None |
◆ trainE()
Python |
---|
| cv.ml.EM.trainE( | samples, means0[, covs0[, weights0[, logLikelihoods[, labels[, probs]]]]] | ) -> | retval, logLikelihoods, labels, probs |
从一个样本集中估计高斯混合参数。
这种变体从期望步骤开始。您需要提供混合成分的初始均值 \(a_k\)。可选地,您可以传递混合成分的初始权重 \(\pi_k\) 和协方差矩阵 \(S_k\)。
- 参数
-
samples | Samples from which the Gaussian mixture model will be estimated. It should be a one-channel matrix, each row of which is a sample. If the matrix does not have CV_64F type it will be converted to the inner matrix of such type for the further computing. |
means0 | 混合成分的初始均值 \(a_k\)。它是一个大小为 \(nclusters \times dims\) 的一维矩阵。如果矩阵类型不是 CV_64F,它将被转换为后续计算的内矩阵类型。 |
covs0 | 混合成分的初始协方差矩阵 \(S_k\) 的向量。每个协方差矩阵是一个大小为 \(dims \times dims\) 的一维矩阵。如果矩阵类型不是 CV_64F,它将被转换为后续计算的内矩阵类型。 |
weights0 | 混合成分的初始权重 \(\pi_k\)。它应该是一个大小为 \(1 \times nclusters\) 或 \(nclusters \times 1\) 的一维浮点矩阵。 |
logLikelihoods | 包含每个样本似然对数值的可选输出矩阵。它的大小为 \(nsamples \times 1\),类型为 CV_64FC1。 |
labels | 每个样本的可选输出“类别标签”:\(\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\)(每个样本最可能混合成分的索引)。它的大小为 \(nsamples \times 1\),类型为 CV_32SC1。 |
probs | 包含每个高斯混合成分在给定每个样本时的后验概率的可选输出矩阵。它的大小为 \(nsamples \times nclusters\),类型为 CV_64FC1。 |
◆ trainEM()
Python |
---|
| cv.ml.EM.trainEM( | samples[, logLikelihoods[, labels[, probs]]] | ) -> | retval, logLikelihoods, labels, probs |
从一个样本集中估计高斯混合参数。
这个变体从期望步骤开始。将与 k-means 算法估计模型参数的初始值。
与许多机器学习模型不同,EM 是一种无监督学习算法,它不将响应(类别标签或函数值)作为输入。相反,它从输入样本集中计算高斯混合参数的 最大似然估计,将所有参数存储在结构中:\(p_{i,k}\) 在 probs 中,\(a_k\) 在 means 中,\(S_k\) 在 covs[k] 中,\(\pi_k\) 在 weights 中,并且可选地计算每个样本的输出“类别标签”:\(\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\)(每个样本最可能混合成分的索引)。
训练好的模型可以像任何其他分类器一样用于预测。训练好的模型类似于 NormalBayesClassifier。
- 参数
-
samples | Samples from which the Gaussian mixture model will be estimated. It should be a one-channel matrix, each row of which is a sample. If the matrix does not have CV_64F type it will be converted to the inner matrix of such type for the further computing. |
logLikelihoods | 包含每个样本似然对数值的可选输出矩阵。它的大小为 \(nsamples \times 1\),类型为 CV_64FC1。 |
labels | 每个样本的可选输出“类别标签”:\(\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\)(每个样本最可能混合成分的索引)。它的大小为 \(nsamples \times 1\),类型为 CV_32SC1。 |
probs | 包含每个高斯混合成分在给定每个样本时的后验概率的可选输出矩阵。它的大小为 \(nsamples \times nclusters\),类型为 CV_64FC1。 |
◆ trainM()
Python |
---|
| cv.ml.EM.trainM( | samples, probs0[, logLikelihoods[, labels[, probs]]] | ) -> | retval, logLikelihoods, labels, probs |
从一个样本集中估计高斯混合参数。
这个变体从最大化步骤开始。您需要提供初始概率 \(p_{i,k}\) 以使用此选项。
- 参数
-
samples | Samples from which the Gaussian mixture model will be estimated. It should be a one-channel matrix, each row of which is a sample. If the matrix does not have CV_64F type it will be converted to the inner matrix of such type for the further computing. |
probs0 | 概率 |
logLikelihoods | 包含每个样本似然对数值的可选输出矩阵。它的大小为 \(nsamples \times 1\),类型为 CV_64FC1。 |
labels | 每个样本的可选输出“类别标签”:\(\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\)(每个样本最可能混合成分的索引)。它的大小为 \(nsamples \times 1\),类型为 CV_32SC1。 |
probs | 包含每个高斯混合成分在给定每个样本时的后验概率的可选输出矩阵。它的大小为 \(nsamples \times nclusters\),类型为 CV_64FC1。 |
此类的文档是从以下文件生成的