<OpenCV> 随机森林参数配置

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		//!< 终止条件的类型,TermCriteria:: type之一
maxCount	//!< 要计算的迭代或元素的最大数目。
epsilon		//!< 迭代算法停止时所需的参数的精度或变化。

class CV_EXPORTS TermCriteria
{
public:
    enum Type
    {
        COUNT=1, 		//!< 要计算的迭代或元素的最大数目
        MAX_ITER=COUNT, //!< 同上
        EPS=2 			//!< 迭代算法停止时所需的精度或参数变化
    };
}
  • 训练统计模型-1
virtual bool train( const Ptr<TrainData>& trainData, int flags=0 )

//!< 参数
//!< trainData	 可以使用TrainData::loadFromCSV从文件加载或使用TrainData::create创建的训练数据。	
//!< flags		 可选标志,取决于模型。一些模型可以用新的训练样本更新,而不是完全覆盖。
  • 训练统计模型-2
virtual bool train( InputArray samples, int layout, InputArray responses )

//!< 参数
//!< samples		训练样本
//!< layout		 	ROW_SAMPLE or COL_SAMPLE 
//!< responses	 	与训练样本相关的响应向量
  • 预测
virtual float predict( InputArray samples, OutputArray results=noArray(), int flags=0 )
  • 从文件中加载并创建一个序列化的RTree。
static Ptr<RTrees> cv::ml::RTrees::load(const String& filepath, const String& nodeName = String())

//!< 参数
//!< filepath 		序列化RTree的文件路径
//!< nodename		包含分类器的节点名称

模型参数可视化

  • 在每个树节点上随机选择的特征子集的大小。
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

//!< 参数
//!< samples		数组,包含选票将被计算的样本。
//!< results		数组,计算结果将写入其中。
//!< flags			定义rtree类型的标志。

你可能感兴趣的:(机器学习,OpenCV,opencv,随机森林,人工智能)