此類實現了期望最大化演算法。更多...
#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, OutputArray 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 |
| |
◆ 匿名列舉
預設引數。
| 列舉值 (Enumerator) |
|---|
| DEFAULT_NCLUSTERS | |
| DEFAULT_MAX_ITERS | |
◆ 匿名列舉
初始步驟。
| 列舉值 (Enumerator) |
|---|
| START_E_STEP | |
| START_M_STEP | |
| START_AUTO_STEP | |
◆ 型別
協方差矩陣的型別。
| 列舉值 (Enumerator) |
|---|
| 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 |
建立一個空的 EM 模型。然後應使用 StatModel::train(traindata, flags) 方法訓練該模型。或者,您可以使用其中一個 EM::train* 方法,或者使用 Algorithm::load<EM>(filename) 從檔案中載入它。
◆ 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]] | ) -> | 返回值, results |
返回提供的樣本的後驗機率。
- 引數
-
| samples (樣本) | 輸入樣本,浮點矩陣 |
| results | 可選的輸出結果矩陣 \( nSamples \times nClusters\)。它包含輸入樣本的後驗機率。 |
| flags (標誌) | 此引數將被忽略 |
實現 cv::ml::StatModel。
◆ predict2()
| Python |
|---|
| cv.ml.EM.predict2( | sample[, probs] | ) -> | 返回值, 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 | ) -> | 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]]]]] | ) -> | 返回值, 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]]] | ) -> | 返回值, 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]]] | ) -> | 返回值, 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。 |
該類的文件由以下檔案生成: