亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? adaboostlearner.cpp

?? WeakLearner,弱分類器
?? CPP
字號:
//LAB_LicenseBegin==============================================================
//  Copyright (c) 2005-2006, Hicham GHORAYEB < ghorayeb@gmail.com >
//  All rights reserved.
//
//	This software is a Library for Adaptive Boosting. It provides a generic 
//	framework for the study of the Boosting algorithms. The framework provides 
//	the different tasks for boosting: Learning, Validation, Test, Profiling and 
//	Performance Analysis Tasks.
//
//	This Library was developped during my PhD studies at:
//	Ecole des Mines de Paris - Centre de Robotique( CAOR )
//	http://caor.ensmp.fr
//	under the supervision of Pr. Claude Laurgeau and Bruno Steux
//
//  Redistribution and use in source and binary forms, with or without
//  modification, are permitted provided that the following conditions are met:
//
//      * Redistributions of source code must retain the above copyright
//        notice, this list of conditions and the following disclaimer.
//      * Redistributions in binary form must reproduce the above copyright
//        notice, this list of conditions and the following disclaimer
//        in the documentation and/or other materials provided with the distribution.
//      * Neither the name of the Ecole des Mines de Paris nor the names of
//        its contributors may be used to endorse or promote products
//        derived from this software without specific prior written permission.
//
//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
//  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
//  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
//  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
//  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
//  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
//  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
//  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
//  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
//  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
//  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//================================================================LAB_LicenseEnd
#include "AdaBoostLearner.h"
#include "IWeakLearner.h"
#include "ILearner.h"

#include "samples/Sample.h"
#include "samples/learningsets/ILearningSet.h"
#include "classifiers/features/WeakClassifier.h"
#include "classifiers/WeightedSumClassifier.h"

#include "LibAdaBoost/modules/options/AdaBoostLearnerOptions.h"
using namespace modules::options;

#include <iostream>
#include <sstream>
#include <fstream>
#include <cmath>
#include <cstdlib>
using namespace std;

using namespace samples;
using namespace classifiers;
using namespace classifiers::features;
using namespace learners;

AdaBoostLearner::AdaBoostLearner()
:m_WeakLearner( NULL )
,m_wsClassifier( NULL )
,m_LearningSet( NULL )
,m_err( 0.0 )
,m_NbrCycles( 0 )
{
	m_wsClassifier = new WeightedSumClassifier();
}

AdaBoostLearner::AdaBoostLearner(ILearningSet *learningSet)
:m_WeakLearner( NULL )
,m_wsClassifier( NULL )
,m_LearningSet( learningSet )
,m_err( 0.0 )
,m_NbrCycles( 0 )
{
	m_wsClassifier = new WeightedSumClassifier();
}

AdaBoostLearner::AdaBoostLearner(ILearningSet *learningSet, IWeakLearner *weakLearner)
:m_WeakLearner( weakLearner )
,m_wsClassifier( NULL )
,m_LearningSet( learningSet )
,m_err( 0.0 )
,m_NbrCycles( 0 )
{
	m_wsClassifier = new WeightedSumClassifier();
}

AdaBoostLearner::~AdaBoostLearner()
{
	if(m_wsClassifier != NULL) delete m_wsClassifier;
	m_WeakLearner = NULL;
	m_wsClassifier = NULL;
	m_LearningSet = NULL;
}

void
AdaBoostLearner::Learn(void)
{
	// Create Output log files for the learner and the Weak Learner
	std::ofstream oLogLearner;
	std::string learner_log_filename  = "learner_log.txt";
	oLogLearner.open( learner_log_filename.c_str() );

	// Iterates M times: M is equal to m_NbrBoostingCycles
	for(int iCycle = 0; iCycle < m_NbrCycles; iCycle++)
	{
		std::ofstream oLogWeakLearner;
		ostringstream oStr;
		oStr << "wlearner_log_step_"<< iCycle<< ".txt" <<std::ends;
		std::string wlearner_log_filename = oStr.str();
		oLogWeakLearner.open( wlearner_log_filename.c_str() );

		std::cerr << "AdaBoost Step[ "<< iCycle <<" ]" << std::endl;

		WeakClassifier *wc = NULL;
		double error = 0.0;
		double     w = 0.0;
		double     z = 0.0;
		double prevd = 0.0;
		double  newd = 0.0;

		oStr.clear();

		wc = m_WeakLearner->GetNewWeakClassifier(error);
		m_err = error;

		oLogLearner     << error << std::endl;

		if(error > 0.5){
			std::cerr << "Error: WeakLearner Must return a classifier error with less than 0.5" << std::endl;
			return;
		}

		// what happens if error == 0 ??

		w = 0.5 * std::log((1.0 - error)/error);
		
		m_wsClassifier->PushBack( wc, w );

		z = 2.0 * std::sqrt( error * (1.0 - error));

		for(unsigned i = 0; i < m_LearningSet->NbrOfPositiveSamples(); i++)
		{
			Sample * sample = m_LearningSet->GetPositiveSampleAt( i );
			int vote = wc->Classify( sample );

			prevd = sample->GetWeight();
			if( vote == POSITIVE_CLASS_ID ){
				newd = prevd * std::exp( -w ) / z;
			}else{
				newd = prevd * std::exp(  w ) / z;
			}
			sample->SetWeight( newd );
		}

		for(unsigned i = 0; i < m_LearningSet->NbrOfNegativeSamples(); i++)
		{
			Sample * sample = m_LearningSet->GetNegativeSampleAt( i );
			int vote = wc->Classify( sample );

			prevd = sample->GetWeight();
			if( vote == NEGATIVE_CLASS_ID ){
				newd = prevd * std::exp( -w ) / z;
			}else{
				newd = prevd * std::exp(  w ) / z;
			}
			sample->SetWeight( newd );
		}

		oLogWeakLearner << m_WeakLearner->GetWeakLearnerLog();

		oLogWeakLearner.close();

		setStateChanged();
        notifySubscribers();
	}
	
	oLogLearner.close();
}

IWeakLearner *
AdaBoostLearner::GetWeakLearner(void)
{
	return m_WeakLearner;
}

void
AdaBoostLearner::SetWeakLearner(IWeakLearner *weakLearner)
{
	m_WeakLearner = weakLearner;
}

void
AdaBoostLearner::Reset(void)
{
	assert( m_LearningSet != NULL );
	assert( m_wsClassifier != NULL );
	assert( m_WeakLearner != NULL);

	m_LearningSet->UniformWeight();
	m_err = 0.0;
	m_wsClassifier->Clear();
}

IClassifier *
AdaBoostLearner::GetResult(void)
{
	return (IClassifier *)m_wsClassifier;
}

ILearningSet *
AdaBoostLearner::GetLearningSet(void)
{
	return m_LearningSet;
}

void
AdaBoostLearner::SetLearningSet(ILearningSet *learningSet)
{
	m_LearningSet = learningSet;
}

void 
AdaBoostLearner::SetOptions(const modules::options::ModuleOptions &options)
{
	const modules::options::AdaBoostLearnerOptions &opts = static_cast<const AdaBoostLearnerOptions &>(options);
	int nbrCycles;

	nbrCycles = opts.GetNbrBoostingCycles(); 

	// set the filename
	m_NbrCycles = nbrCycles;	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久久久久影片| 色综合久久综合中文综合网| 亚洲一二三专区| 中文字幕视频一区二区三区久| 26uuu精品一区二区三区四区在线| 欧美顶级少妇做爰| 欧美日韩aaa| 日韩亚洲欧美中文三级| 欧美一级搡bbbb搡bbbb| 日韩美女视频在线| 久久久99精品免费观看| 久久久久久一级片| 欧美激情一区在线| 一区二区三区资源| 亚洲国产一区视频| 激情五月婷婷综合| 成人不卡免费av| 日本伦理一区二区| 日韩一级二级三级| 欧美韩国一区二区| 一区二区三区四区在线免费观看 | 国产在线麻豆精品观看| 亚洲三级在线看| 亚洲一区二区三区四区在线 | 欧美系列亚洲系列| 日本丶国产丶欧美色综合| 青青草成人在线观看| 色综合中文字幕国产| 国产精品国产自产拍在线| 国产精一区二区三区| 久久久久久久综合色一本| 国产一区视频导航| 久久综合精品国产一区二区三区| 日韩电影在线观看一区| 欧美日韩免费观看一区三区| 亚洲一区二区在线免费看| 欧美午夜寂寞影院| 天堂成人国产精品一区| 欧美一三区三区四区免费在线看| 日韩中文字幕一区二区三区| 欧美激情艳妇裸体舞| 成人av综合一区| 最近日韩中文字幕| 91精品福利视频| 视频一区在线播放| 精品国产乱码久久久久久夜甘婷婷 | 亚洲精品日产精品乱码不卡| 91丨国产丨九色丨pron| 一区二区在线观看免费 | 国产精品影视网| 国产欧美精品一区二区色综合朱莉| 国产九色精品成人porny| 国产夜色精品一区二区av| 国产精品99久久久久久似苏梦涵| 日本一区二区三区高清不卡| 色婷婷综合激情| 日日夜夜一区二区| 久久免费精品国产久精品久久久久| 激情综合网激情| 国产精品美女久久久久高潮| 欧美中文字幕不卡| 蜜桃91丨九色丨蝌蚪91桃色| 国产日韩三级在线| 欧美日韩成人在线一区| 国产专区欧美精品| 亚洲资源中文字幕| 2020日本不卡一区二区视频| 99re这里只有精品视频首页| 天堂午夜影视日韩欧美一区二区| 久久精品亚洲麻豆av一区二区| 97se狠狠狠综合亚洲狠狠| 日韩一区精品字幕| 国产精品久久久久久久久动漫| 精品视频在线免费| 国产一区啦啦啦在线观看| 亚洲精品国产精华液| 26uuu久久综合| 欧美性生活一区| 成人黄色综合网站| 天堂资源在线中文精品| 中文字幕第一区二区| 欧美日韩精品欧美日韩精品一综合| 国产一区视频网站| 午夜久久久影院| 日韩一区欧美一区| 久久蜜臀精品av| 欧美一区二区三区日韩视频| 色综合视频在线观看| 国产成人啪免费观看软件| 三级成人在线视频| 夜夜嗨av一区二区三区网页| 欧美高清在线一区二区| 精品欧美黑人一区二区三区| 欧美日韩一区二区在线观看视频| 成人美女在线视频| 国产在线精品一区二区夜色| 日韩av一区二区在线影视| 亚洲摸摸操操av| 亚洲欧洲成人自拍| 亚洲国产精品传媒在线观看| 日韩精品一区二区三区视频播放 | 国产精品原创巨作av| 蜜桃视频一区二区| 青草av.久久免费一区| 国产福利一区二区三区视频| 麻豆精品一区二区| 轻轻草成人在线| 午夜精品久久一牛影视| 亚洲一级不卡视频| 亚洲高清久久久| 亚洲综合久久av| 亚洲一区二区三区美女| 有码一区二区三区| 曰韩精品一区二区| 一区二区三区四区乱视频| 亚洲精品乱码久久久久| 亚洲免费观看高清完整版在线观看| 国产精品沙发午睡系列990531| 国产精品午夜在线| 亚洲婷婷综合久久一本伊一区| 亚洲欧洲日韩一区二区三区| 亚洲老妇xxxxxx| 一区二区免费在线| 一卡二卡欧美日韩| 日本欧美一区二区| 久草精品在线观看| 国产精品一区二区久激情瑜伽 | 五月天视频一区| 日韩电影免费在线| 精品无人码麻豆乱码1区2区| 国产精品99久久久久久宅男| 成人一区二区视频| 日本高清不卡aⅴ免费网站| 欧美中文字幕亚洲一区二区va在线| 欧美日韩精品专区| 亚洲精品一区二区在线观看| 国产情人综合久久777777| 国产精品国产三级国产普通话三级 | 91首页免费视频| 欧美三日本三级三级在线播放| 91精品黄色片免费大全| 日韩欧美自拍偷拍| 国产精品乱人伦| 亚洲一二三四在线| 激情综合亚洲精品| 99久久er热在这里只有精品15| 欧美日韩小视频| 久久色中文字幕| 亚洲免费看黄网站| 国内精品自线一区二区三区视频| 成人午夜碰碰视频| 欧美裸体一区二区三区| 久久综合久久综合久久综合| 亚洲三级久久久| 麻豆精品视频在线观看| 91视频在线观看| 精品久久久网站| 亚洲一区二区欧美| 国产裸体歌舞团一区二区| 欧美伊人久久久久久久久影院 | 亚洲人xxxx| 美女高潮久久久| 色综合一区二区| 久久精品亚洲乱码伦伦中文| 午夜国产精品一区| 97精品国产露脸对白| 日韩精品中文字幕在线一区| 亚洲激情图片一区| 国产精品一级在线| 日韩欧美综合在线| 亚洲国产精品精华液网站| 国产91精品精华液一区二区三区 | 日韩女同互慰一区二区| 一区二区三区免费看视频| 国产一区二区三区av电影 | 在线中文字幕不卡| 久久久www成人免费无遮挡大片| 亚洲大尺度视频在线观看| 国产999精品久久| 欧美成人精品3d动漫h| 一区二区三区**美女毛片| 波多野结衣中文字幕一区二区三区| 7777精品久久久大香线蕉| 一区二区三区不卡在线观看| 99天天综合性| 日本一区二区综合亚洲| 国产一区二区三区美女| 精品久久久久久亚洲综合网| 秋霞午夜av一区二区三区| 欧美日韩国产片| 亚洲成人综合在线| 在线观看欧美精品| 夜夜爽夜夜爽精品视频| 一本大道av伊人久久综合| 亚洲欧洲日韩综合一区二区| 高清国产午夜精品久久久久久| 欧美tickling挠脚心丨vk| 三级久久三级久久久| 欧美一级午夜免费电影| 免费精品视频最新在线|