OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
cv::ml::DTrees 類參考abstract

該類表示單個決策樹或決策樹集合。 更多...

#include <opencv2/ml.hpp>

cv::ml::DTrees 的協作圖

類  Node
 該類表示決策樹節點。 更多...
 
類  Split (分割)
 該類表示決策樹中的分裂。 更多...
 

公共型別

列舉  標誌 {
  PREDICT_AUTO =0 ,
  PREDICT_SUM =(1<<8) ,
  PREDICT_MAX_VOTE =(2<<8) ,
  PREDICT_MASK =(3<<8)
}
 
- 從 cv::ml::StatModel 繼承的公共型別
列舉  標誌 {
  UPDATE_MODEL = 1 ,
  RAW_OUTPUT =1 ,
  COMPRESSED_INPUT =2 ,
  PREPROCESSED_INPUT =4
}
 

公共成員函式

virtual int getCVFolds () const =0
 
virtual int getMaxCategories () const =0
 
virtual int getMaxDepth () const =0
 
virtual int getMinSampleCount () const =0
 
virtual const std::vector< Node > & getNodes () const =0
 返回所有節點。
 
virtual cv::Mat getPriors () const =0
 先驗類別機率陣列,按類別標籤值排序。
 
virtual float getRegressionAccuracy () const =0
 
virtual const std::vector< int > & getRoots () const =0
 返回根節點的索引。
 
virtual const std::vector< Split > & getSplits () const =0
 返回所有分割。
 
virtual const std::vector< int > & getSubsets () const =0
 返回所有分類分割的位集。
 
virtual bool getTruncatePrunedTree () const =0
 
virtual bool getUse1SERule () const =0
 
virtual bool getUseSurrogates () const =0
 
virtual void setCVFolds (int val)=0
 
virtual void setMaxCategories (int val)=0
 
virtual void setMaxDepth (int val)=0
 
virtual void setMinSampleCount (int val)=0
 
virtual void setPriors (const cv::Mat &val)=0
 先驗類別機率陣列,按類別標籤值排序。
 
virtual void setRegressionAccuracy (float val)=0
 
virtual void setTruncatePrunedTree (bool val)=0
 
virtual void setUse1SERule (bool val)=0
 
virtual void setUseSurrogates (bool val)=0
 
- 從 cv::ml::StatModel 繼承的公共成員函式
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 float predict (InputArray samples, OutputArray results=noArray(), int flags=0) const =0
 預測提供的樣本的響應
 
virtual bool train (const Ptr< TrainData > &trainData, int flags=0)
 訓練統計模型。
 
virtual bool train (InputArray samples, int layout, InputArray responses)
 訓練統計模型。
 
- 從 cv::Algorithm 繼承的公共成員函式
 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
 

靜態公共成員函式

static Ptr< DTreescreate ()
 建立空模型。
 
static Ptr< DTreesload (const String &filepath, const String &nodeName=String())
 從檔案中載入並建立一個序列化的 DTrees
 
- 從 cv::ml::StatModel 繼承的靜態公共成員函式
template<typename _Tp >
static Ptr< _Tptrain (const Ptr< TrainData > &data, int flags=0)
 使用預設引數建立並訓練模型。
 
- 從 cv::Algorithm 繼承的靜態公共成員函式
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 從檔案中載入演算法。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 從字串載入演算法。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 從檔案節點讀取演算法。
 

附加繼承成員

- 從 cv::Algorithm 繼承的保護成員函式
void writeFormat (FileStorage &fs) const
 

詳細描述

該類表示單個決策樹或決策樹集合。

該類當前的公共介面僅允許使用者訓練單個決策樹,但該類能夠儲存多個決策樹並將其用於預測(透過求和響應或使用投票方案),以及從 DTrees 派生的類(例如 RTreesBoost)利用此功能實現決策樹整合。

另請參見
決策樹

成員列舉文件

◆ Flags

預測選項

列舉器
PREDICT_AUTO 
PREDICT_SUM 
PREDICT_MAX_VOTE 
PREDICT_MASK 

成員函式文件

◆ create()

static Ptr< DTrees > cv::ml::DTrees::create ( )
static
Python
cv.ml.DTrees.create() -> retval
cv.ml.DTrees_create() -> retval

建立空模型。

靜態方法建立具有指定引數的空決策樹。然後應使用訓練方法進行訓練(參見 StatModel::train)。或者,您可以使用 Algorithm::load<DTrees>(filename) 從檔案中載入模型。

◆ getCVFolds()

virtual int cv::ml::DTrees::getCVFolds ( ) const
純虛擬函式
Python
cv.ml.DTrees.getCVFolds() -> retval

如果 CVFolds > 1,則演算法使用 K 折交叉驗證過程修剪構建的決策樹,其中 K 等於 CVFolds。預設值為 10。

另請參見
setCVFolds

◆ getMaxCategories()

virtual int cv::ml::DTrees::getMaxCategories ( ) const
純虛擬函式
Python
cv.ml.DTrees.getMaxCategories() -> retval

將分類變數的可能值聚類到 K<=maxCategories 個簇中以找到次優分裂。如果訓練過程試圖進行分裂的離散變數取值超過 maxCategories 個,則精確的最佳子集估計可能需要很長時間,因為演算法是指數級的。相反,許多決策樹引擎(包括我們的實現)在這種情況下嘗試透過將所有樣本聚類到 maxCategories 個簇中來找到次優分裂,即某些類別被合併在一起。聚類僅應用於具有 N > max_categories 可能值的分類變數的 n > 2 類分類問題。在迴歸和 2 類分類的情況下,可以有效地找到最優分裂而無需採用聚類,因此該引數在這些情況下不使用。預設值為 10。

另請參見
setMaxCategories

◆ getMaxDepth()

virtual int cv::ml::DTrees::getMaxDepth ( ) const
純虛擬函式
Python
cv.ml.DTrees.getMaxDepth() -> retval

樹的最大可能深度。即,訓練演算法嘗試在節點深度小於 maxDepth 時分裂該節點。根節點的深度為零。如果滿足其他終止條件(參見此處的訓練過程概述),並且/或者樹被修剪,則實際深度可能會更小。預設值為 INT_MAX。

另請參見
setMaxDepth

◆ getMinSampleCount()

virtual int cv::ml::DTrees::getMinSampleCount ( ) const
純虛擬函式
Python
cv.ml.DTrees.getMinSampleCount() -> retval

如果節點中的樣本數量小於此引數,則該節點將不會被分裂。

預設值為 10。

另請參見
setMinSampleCount

◆ getNodes()

virtual const std::vector< Node > & cv::ml::DTrees::getNodes ( ) const
純虛擬函式

返回所有節點。

所有節點索引都是返回向量中的索引

◆ getPriors()

virtual cv::Mat cv::ml::DTrees::getPriors ( ) const
純虛擬函式
Python
cv.ml.DTrees.getPriors() -> retval

先驗類別機率陣列,按類別標籤值排序。

該引數可用於調整決策樹對特定類別的偏好。例如,如果您想檢測一些罕見的異常事件,訓練庫中很可能包含比異常更多的正常案例,因此僅將每個案例視為正常就能實現非常好的分類效能。為了避免這種情況,可以指定先驗,其中異常機率被人為增加(最高可達 0.5 或更高),因此誤分類異常的權重變得更大,並且樹得到適當調整。

您也可以將此引數視為預測類別的權重,它們決定了您對誤分類賦予的相對權重。也就是說,如果第一個類別的權重為 1,第二個類別的權重為 10,則預測第二個類別中的每個錯誤相當於在預測第一個類別中犯 10 個錯誤。預設值為空 Mat

另請參見
setPriors

◆ getRegressionAccuracy()

virtual float cv::ml::DTrees::getRegressionAccuracy ( ) const
純虛擬函式
Python
cv.ml.DTrees.getRegressionAccuracy() -> retval

迴歸樹的終止標準。如果節點中估計值與該節點中訓練樣本值之間的所有絕對差都小於此引數,則該節點將不再進一步分裂。預設值為 0.01f

另請參見
setRegressionAccuracy

◆ getRoots()

virtual const std::vector< int > & cv::ml::DTrees::getRoots ( ) const
純虛擬函式

返回根節點的索引。

◆ getSplits()

virtual const std::vector< Split > & cv::ml::DTrees::getSplits ( ) const
純虛擬函式

返回所有分割。

所有分裂索引都是返回向量中的索引

◆ getSubsets()

virtual const std::vector< int > & cv::ml::DTrees::getSubsets ( ) const
純虛擬函式

返回所有分類分割的位集。

Split::subsetOfs 是返回向量中的偏移量

◆ getTruncatePrunedTree()

virtual bool cv::ml::DTrees::getTruncatePrunedTree ( ) const
純虛擬函式
Python
cv.ml.DTrees.getTruncatePrunedTree() -> retval

如果為 true,則修剪後的分支將從樹中物理刪除。否則,它們將保留,並且可以從原始未修剪(或修剪不那麼激進)的樹中獲取結果。預設值為 true。

另請參見
setTruncatePrunedTree

◆ getUse1SERule()

virtual bool cv::ml::DTrees::getUse1SERule ( ) const
純虛擬函式
Python
cv.ml.DTrees.getUse1SERule() -> retval

如果為 true,則修剪會更嚴格。這將使樹更緊湊,更能抵抗訓練資料噪聲,但準確性會略低。預設值為 true。

另請參見
setUse1SERule

◆ getUseSurrogates()

virtual bool cv::ml::DTrees::getUseSurrogates ( ) const
純虛擬函式
Python
cv.ml.DTrees.getUseSurrogates() -> retval

如果為 true,則將構建代理分裂。這些分裂允許處理缺失資料並正確計算變數重要性。預設值為 false。

注意
目前尚未實現。
另請參見
setUseSurrogates

◆ load()

static Ptr< DTrees > cv::ml::DTrees::load ( const String & filepath,
const String & nodeName = String() )
static
Python
cv.ml.DTrees.load(filepath[, nodeName]) -> retval
cv.ml.DTrees_load(filepath[, nodeName]) -> retval

從檔案中載入並建立一個序列化的 DTrees

使用 DTree::save 將 DTree 序列化並存儲到磁碟。透過呼叫此函式並提供檔案路徑,可以再次從該檔案載入 DTree。可選地,可以指定包含分類器的檔案節點

引數
filepath序列化 DTree 的路徑
nodeName包含分類器的節點的名稱

◆ setCVFolds()

virtual void cv::ml::DTrees::setCVFolds ( int val)
純虛擬函式
Python
cv.ml.DTrees.setCVFolds(val) ->

另請參見
getCVFolds

◆ setMaxCategories()

virtual void cv::ml::DTrees::setMaxCategories ( int val)
純虛擬函式
Python
cv.ml.DTrees.setMaxCategories(val) ->

另請參見
getMaxCategories

◆ setMaxDepth()

virtual void cv::ml::DTrees::setMaxDepth ( int val)
純虛擬函式
Python
cv.ml.DTrees.setMaxDepth(val) ->

另請參見
getMaxDepth

◆ setMinSampleCount()

virtual void cv::ml::DTrees::setMinSampleCount ( int val)
純虛擬函式
Python
cv.ml.DTrees.setMinSampleCount(val) ->

另請參見
getMinSampleCount

◆ setPriors()

virtual void cv::ml::DTrees::setPriors ( const cv::Mat & val)
純虛擬函式
Python
cv.ml.DTrees.setPriors(val) ->

先驗類別機率陣列,按類別標籤值排序。

另請參見
getPriors

◆ setRegressionAccuracy()

virtual void cv::ml::DTrees::setRegressionAccuracy ( float val)
純虛擬函式
Python
cv.ml.DTrees.setRegressionAccuracy(val) ->

另請參見
getRegressionAccuracy

◆ setTruncatePrunedTree()

virtual void cv::ml::DTrees::setTruncatePrunedTree ( bool val)
純虛擬函式
Python
cv.ml.DTrees.setTruncatePrunedTree(val) ->

另請參見
getTruncatePrunedTree

◆ setUse1SERule()

virtual void cv::ml::DTrees::setUse1SERule ( bool val)
純虛擬函式
Python
cv.ml.DTrees.setUse1SERule(val) ->

另請參見
getUse1SERule

◆ setUseSurrogates()

virtual void cv::ml::DTrees::setUseSurrogates ( bool val)
純虛擬函式
Python
cv.ml.DTrees.setUseSurrogates(val) ->

另請參見
getUseSurrogates

此類的文件是從以下檔案生成的: