该类实现了期望最大化算法。 更多...
#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 (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 |
| | 如果 Algorithm 为空(例如在最开始或读取失败后),则返回 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 | train (InputArray samples, int layout, InputArray responses) |
| | 训练统计模型。
|
| |
| | Algorithm () |
| |
| virtual | ~Algorithm () |
| |
| 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 预处理时)。此类初步估计的结果可以再次传递给优化过程,此时 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\) 结果矩阵。它包含输入中每个样本的后验概率。 |
| flags | 此参数将被忽略 |
实现了 cv::ml::StatModel。
◆ predict2()
| Python |
|---|
| cv.ml.EM.predict2( | sample[, probs] | ) -> | retval, probs |
返回给定样本的似然对数值和最可能混合分量的索引。
- 参数
-
| sample | 用于分类的样本。它应该是一个 \(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 | ) -> | 无 |
◆ setCovarianceMatrixType()
| virtual void cv::ml::EM::setCovarianceMatrixType |
( |
int | val | ) |
|
|
纯虚函数 |
| Python |
|---|
| cv.ml.EM.setCovarianceMatrixType( | val | ) -> | 无 |
◆ setTermCriteria()
| virtual void cv::ml::EM::setTermCriteria |
( |
const TermCriteria & | val | ) |
|
|
纯虚函数 |
| Python |
|---|
| cv.ml.EM.setTermCriteria( | val | ) -> | 无 |
◆ trainE()
| Python |
|---|
| cv.ml.EM.trainE( | samples, means0[, covs0[, weights0[, logLikelihoods[, labels[, probs]]]]] | ) -> | retval, logLikelihoods, labels, probs |
从样本集估计高斯混合参数。
此变体从期望步开始。您需要提供混合分量的初始均值 \(a_k\)。可选地,您可以传递混合分量的初始权重 \(\pi_k\) 和协方差矩阵 \(S_k\)。
- 参数
-
| samples | 将估计高斯混合模型的样本。它应该是一个单通道矩阵,每行是一个样本。如果矩阵不是 CV_64F 类型,它将被转换为该类型的内部矩阵以供进一步计算。 |
| 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 算法估计。
与许多 ML 模型不同,EM 是一种无监督学习算法,它不将响应(类别标签或函数值)作为输入。相反,它从输入样本集计算高斯混合参数的*最大似然估计*,并将所有参数存储在结构中:probs 中的 \(p_{i,k}\),means 中的 \(a_k\),covs[k] 中的 \(S_k\),weights 中的 \(\pi_k\),并可选地计算每个样本的输出“类别标签”:\(\texttt{labels}_i=\texttt{arg max}_k(p_{i,k}), i=1..N\)(每个样本最可能混合分量的索引)。
训练好的模型可以像其他任何分类器一样用于预测。训练好的模型类似于 NormalBayesClassifier。
- 参数
-
| samples | 将估计高斯混合模型的样本。它应该是一个单通道矩阵,每行是一个样本。如果矩阵不是 CV_64F 类型,它将被转换为该类型的内部矩阵以供进一步计算。 |
| 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 | 将估计高斯混合模型的样本。它应该是一个单通道矩阵,每行是一个样本。如果矩阵不是 CV_64F 类型,它将被转换为该类型的内部矩阵以供进一步计算。 |
| 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。 |
此类的文档是从以下文件生成的