該類實現了期望最大化演算法。 更多...
#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。 |
此類的文件是從以下檔案生成的