コード例 #1
0
ファイル: ClassificationTree.cpp プロジェクト: mrthat/cvpr
double	ClassificationTree::calc_entropy_gain(const TrainingSet &train_set, const TrainingSet &left_set, const TrainingSet &right_set, const RandomizedTreeParameter &param) const
{
	double		entropy_gain	=	0;

	entropy_gain	=	train_set.compute_label_entropy()
		- left_set.size() / (float)train_set.size() * left_set.compute_label_entropy()
		- right_set.size() / (float)train_set.size() * right_set.compute_label_entropy();

	return entropy_gain;
}
コード例 #2
0
ファイル: ClassificationTree.cpp プロジェクト: mrthat/cvpr
void	ClassificationTree::print_train_log(const TreeNode::PtrLeafNodeBase leaf, const TrainingSet &train_set) const
{
	cv::Mat_<double>	label_dist;

	train_set.compute_target_mean(label_dist);

	printf("leaf dist\n");

	for (unsigned ii = 0; ii < label_dist.total(); ++ii) {
		printf("\tlabel%d:%f\n", ii, label_dist.at<double>(ii) / std::max<double>((double)train_set.size(), 1.0));
	}
}
コード例 #3
0
ファイル: ClassificationTree.cpp プロジェクト: mrthat/cvpr
bool	ClassificationTree::is_end_growth(const TrainingSet &train_set, const cvpr::RandomizedTreeParameter &param, unsigned tree_height) const
{
	if (param.max_height <= tree_height) {
		return true;
	}

	if (train_set.size() <= param.min_samples) {
		return true;
	}

	return false;
}