OpenCV随机森林
模型参数设置
static Ptr<RTrees> cv::ml::RTrees::create()
- 设置特征(属性)子集的大小
设置每棵树节点上随机选择的特征子集的大小,这些子集可用于寻找最佳切分。如果将其设置为0,则大小将设置为特征总数的平方根,其默认值为0;这一参数是随机森林的唯一关键参数。
virtual void cv::ml::RTrees::setActiveVarCount(int val)
- 指定训练算法何时停止的终止条件
当训练了指定数量的树并将其添加到集合中,或者达到了足够的精度(以OOB误差测量)。通常情况下,你拥有的树越多,准确率就越高。然而,精度的提高通常会减少,渐近线经过一定数量的树。还要记住的是,树的数量会线性地增加预测时间。默认值是TermCriteria(TermCriteria::MAX_ITERS + TermCriteria::EPS, 50, 0.1)。
virtual void cv::ml::RTrees::setTermCriteria(const TermCriteria& val)
cv::TermCriteria::TermCriteria(int type, int maxCount, double epsilon)
type
maxCount
epsilon
class CV_EXPORTS TermCriteria
{
public:
enum Type
{
COUNT=1,
MAX_ITER=COUNT,
EPS=2
};
}
virtual bool train( const Ptr<TrainData>& trainData, int flags=0 )
virtual bool train( InputArray samples, int layout, InputArray responses )
virtual float predict( InputArray samples, OutputArray results=noArray(), int flags=0 )
static Ptr<RTrees> cv::ml::RTrees::load(const String& filepath, const String& nodeName = String())
模型参数可视化
virtual int cv::ml::RTrees::getActiveVarCount() const
- 获得计算变量的重要性
然后它可以通过RTrees::getVarImportance检索。默认值为false。
virtual bool cv::ml::RTrees::getCalculateVarImportance() const
- 返回在训练阶段calcOOBError设置为true时计算的OOB误差值。
如果该标志被设置为false,则返回0。OOB误差也通过样本加权进行缩放。
virtual double cv::ml::RTrees::getOOBError() const
virtual TermCriteria cv::ml::RTrees::getTermCriteria() const
- 返回变量重要性数组。
该方法返回变量重要性向量,该向量是在CalculateVarImportance设置为true时在训练阶段计算的。如果该标志被设置为false,则返回空矩阵。
virtual Mat cv::ml::RTrees::getVarImportance() const
- 返回森林中每棵树的结果。
如果模型是一个回归问题,该方法将返回每个样本案例的每个树的结果。如果模型是一个分类器,它将返回一个带有samples + 1行的Mat,其中第一行给出类号,接下来的行返回每个类对每个样本的投票。
virtual void cv::ml::RTrees::getVotes(InputArray samples, OutputArray results, int flags) const