⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 evaluatedlg.cpp

📁 网页分类器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*==========================================================   
    *   
    *         Copyright   (c)   2008   
    *         All   rights   reserved.   
    *   
    *         文件名称:   EvaluateDlg.cpp
    *         摘    要:   评测分类器性能对话框cpp文件   
    *   
    *         当前版本:   1.0   
    *         作    者:   祝美莲   
    *         创建日期:   2008-5-10   
    *   
    *==========================================================   
*/  


// EvaluateDlg.cpp : implementation file
//

#include "stdafx.h"
#include "detreesvm.h"
#include "EvaluateDlg.h"
#include "DeTreeSVMDlg.h"
#include "resource.h" 

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define KINDNUMBER 4

extern CDeTreeSVMDlg   *p;
/////////////////////////////////////////////////////////////////////////////
// CEvaluateDlg dialog


CEvaluateDlg::CEvaluateDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CEvaluateDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CEvaluateDlg)
	m_strRightCom = _T("");
	m_strRightEdu = _T("");
	m_strRightEnv = _T("");
	m_strRightFas = _T("");
	m_strRecallCom = _T("");
	m_strRecallEdu = _T("");
	m_strRecallEnv = _T("");
	m_strRecallFas = _T("");
	m_strComF1 = _T("");
	m_strEduF1 = _T("");
	m_strEnvF1 = _T("");
	m_strFasF1 = _T("");
	m_time = _T("");
	m_strMacroF1 = _T("");
	//}}AFX_DATA_INIT
}



/********************************************************************
       // 创建日期   :  2008-5-19 16:46:34
	   // 作    者	  : 祝美莲<zml123818@163.com> 
       // 函数名称	  : CEvaluateDlg::DoDataExchange
       // 函数功能	  : 数据转换
       // 返回类型	  : void 
       // 函数参数	  : CDataExchange* pDX
********************************************************************/
void CEvaluateDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEvaluateDlg)
	DDX_Control(pDX, IDC_CURVE, m_Curve);
	DDX_Control(pDX, IDC_RECT, m_Rect);
	DDX_Control(pDX, IDC_PICTURE, m_Pic);
	DDX_Control(pDX, IDOK, m_OK);
	DDX_Control(pDX, IDC_PROGRESS_FAS1, m_proRecallFas);
	DDX_Control(pDX, IDC_PROGRESS_ENV1, m_proRecallEnv);
	DDX_Control(pDX, IDC_PROGRESS_EDU1, m_proRecallEdu);
	DDX_Control(pDX, IDC_PROGRESS_COM1, m_proRecallCom);
	DDX_Control(pDX, IDC_PROGRESS_FAS, m_proRightFas);
	DDX_Control(pDX, IDC_PROGRESS_ENV, m_proRightEnv);
	DDX_Control(pDX, IDC_PROGRESS_EDU, m_proRightEdu);
	DDX_Control(pDX, IDC_PROGRESS_COM, m_proRightCom);
	DDX_Text(pDX, IDC_STATIC_COM, m_strRightCom);
	DDX_Text(pDX, IDC_STATIC_EDU, m_strRightEdu);
	DDX_Text(pDX, IDC_STATIC_ENV, m_strRightEnv);
	DDX_Text(pDX, IDC_STATIC_FAS, m_strRightFas);
	DDX_Text(pDX, IDC_STATIC_COM1, m_strRecallCom);
	DDX_Text(pDX, IDC_STATIC_EDU1, m_strRecallEdu);
	DDX_Text(pDX, IDC_STATIC_ENV1, m_strRecallEnv);
	DDX_Text(pDX, IDC_STATIC_FAS1, m_strRecallFas);
	DDX_Text(pDX, IDC_EDIT_ComF1, m_strComF1);
	DDX_Text(pDX, IDC_EDIT_EduF1, m_strEduF1);
	DDX_Text(pDX, IDC_EDIT_EnvF1, m_strEnvF1);
	DDX_Text(pDX, IDC_EDIT_FasF1, m_strFasF1);
	DDX_Text(pDX, IDC_STATIC_TIME1, m_time);
	DDX_Text(pDX, IDC_STATIC_MACROF1, m_strMacroF1);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CEvaluateDlg, CDialog)
	//{{AFX_MSG_MAP(CEvaluateDlg)
	ON_WM_PAINT()
	ON_BN_CLICKED(IDC_RECT, OnRect)
	ON_BN_CLICKED(IDC_CURVE, OnCurve)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEvaluateDlg message handlers


/********************************************************************
       // 创建日期   :  2008-5-19 16:48:52
	   // 作    者	  : 祝美莲<zml123818@163.com> 
       // 函数名称	  : CEvaluateDlg::OnInitDialog
       // 函数功能	  : 初始化对话框
       // 返回类型	  : BOOL 
********************************************************************/
BOOL CEvaluateDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here

	bType=TRUE;//初始化

	CStdioFile mFile;//文件操作
	int nTotal[KINDNUMBER];//分类之后各个类别的文件数目
	int nRight[KINDNUMBER];//判断正确的各个类别的文件数目
	int nTotalTest[KINDNUMBER];//测试集中各个类别的网页总数
	double sum=0;//
	double dMacroF1;
	//赋初值
	for( int i = 0; i < KINDNUMBER; i++ )
	{
		nTotal[i] = 0;
		nRight[i] = 0;
		nTotalTest[i] = 0;	
		dPrecision[i] = 0;
		dRecall[i] = 0;
		dF1[i] = 0;

	}

	CString strFileName;
	strFileName = pPath;
	strFileName+="\\result.txt";
	//判断是否有“result.txt”文件
	if(mFile.Open(strFileName,CFile::modeRead) == 0) 
	{
		AfxMessageBox("找不到相应文件!",MB_ICONSTOP);
		return FALSE; 
	}
	else
	{
		CArchive ar(&mFile,CArchive::load);
		for( i = 0; i <	KINDNUMBER; i++ )
		{
			ar >> nTotal[i];
			ar >> nRight[i];
			ar >> nTotalTest[i];
			//读得的数据是教育类的
			if( i == 0 )
			{
				//查准率
				m_proRightEdu.SetRange(0,nTotal[0]);//设置进度条的范围
				m_proRightEdu.SetPos(nRight[0]);//设置进度条的位置
				m_proRightEdu.SendMessage( PBM_SETBARCOLOR, 0, RGB(230,75,15));
				
				//判断测试集中是否有教育类,有则输出结果
				if( nTotal[0] != 0)
				{
					dPrecision[0]=(double)nRight[0] / nTotal[0];//计算查准率
					m_strRightEdu.Format("%.3lf", dPrecision[0]* 100);
					m_strRightEdu += '%';
				}
				else
				{
					m_strRightEdu = "没有此类";
				}

				//查全率
				m_proRecallEdu.SetRange(0,nTotalTest[0]);//设置进度条的范围
				m_proRecallEdu.SetPos(nRight[0]);//设置进度条的位置
				m_proRecallEdu.SendMessage( PBM_SETBARCOLOR, 0, RGB(230,75,15));//前景色
           
				if( nTotalTest[0] != 0)
				{
					dRecall[0]=(double)nRight[0] / nTotalTest[0];//计算查全率
					m_strRecallEdu.Format("%.3lf",dRecall[0] * 100);
					m_strRecallEdu += '%';
					UpdateData(FALSE);
				}
				else
				{
					m_strRecallEdu = "没有此类";
				}
				
				//F1测试值
				dF1[0]=(dPrecision[0]*dRecall[0]*2) / (dPrecision[0]+dRecall[0]);
				sum+=dF1[0];
				m_strEduF1.Format("%.3lf",dF1[0]);
				
			}

			//读得的数据是娱乐类的
			if( i == 1 )
			{
				m_proRightEnv.SetRange(0,nTotal[1]);
				m_proRightEnv.SetPos(nRight[1]);
				m_proRightEnv.SendMessage( PBM_SETBARCOLOR, 0, RGB(230,75,15));
				//判断测试集中是否有娱乐类,有则输出结果
				if( nTotal[1] != 0 )
				{
					dPrecision[1]=(double)nRight[1] / nTotal[1];//查准率
					m_strRightEnv.Format("%.3lf", dPrecision[1]*100);
					m_strRightEnv += '%';
				}
				else
				{
					m_strRightEnv = "没有此类";
				}

				//查全率
				m_proRecallEnv.SetRange(0,nTotalTest[1]);//设置进度条的范围
				m_proRecallEnv.SetPos(nRight[1]);//设置进度条的位置
				m_proRecallEnv.SendMessage( PBM_SETBARCOLOR, 0, RGB(230,75,15));

				//判断测试集中是否有娱乐类,有则输出结果
				if( nTotalTest[1] != 0 )
				{
					dRecall[1]=(double)nRight[1] / nTotalTest[1];//查全率
					m_strRecallEnv.Format("%.3lf",dRecall[1] * 100);
					m_strRecallEnv += '%';
				}
				else
				{
					m_strRecallEnv = "没有此类";
				}

				//F1测试值
				dF1[1]=(dPrecision[1]*dRecall[1]*2) / (dPrecision[1]+dRecall[1]);
				sum+=dF1[1];
				m_strEnvF1.Format("%.3lf",dF1[1]);
			}
		
			//读到的数据是时尚类的
			if( i == 2 )
			{
				//查准率
				m_proRightFas.SetRange(0,nTotal[2]);//设置进度条的范围
				m_proRightFas.SetPos(nRight[2]);//设置进度条的位置
				m_proRightFas.SendMessage( PBM_SETBARCOLOR, 0, RGB(230,75,15));

				if( nTotal[2] != 0 )
				{
					dPrecision[2]=(double)nRight[2] / nTotal[2];//查准率
					m_strRightFas.Format("%.3lf", dPrecision[2]* 100);
					m_strRightFas += '%';
				}
				else
				{
					m_strRightFas = "没有此类";
				}

				//查全率
				m_proRecallFas.SetRange(0,nTotalTest[2]);//设置进度条的范围
				m_proRecallFas.SetPos(nRight[2]);//设置进度条的位置
				m_proRecallFas.SendMessage( PBM_SETBARCOLOR, 0, RGB(230,75,15));

				if( nTotalTest[2] != 0 )
				{
					dRecall[2]=(double)nRight[2] / nTotalTest[2];//查全率
					m_strRecallFas.Format("%.3lf", dRecall[2]* 100);
					m_strRecallFas += '%';
				}
				else
				{
					m_strRecallFas = "没有此类";
				}

				//F1测试值
				dF1[2]=(dPrecision[2]*dRecall[2]*2) / (dPrecision[2]+dRecall[2]);
				sum+=dF1[2];
				m_strFasF1.Format("%.3lf",dF1[2]);
			}

			//读得的数据是计算机类的
			if( i == 3 )
			{
				m_proRightCom.SetRange(0,nTotal[3]);
				m_proRightCom.SetPos(nRight[3]);
				m_proRightCom.SendMessage( PBM_SETBARCOLOR, 0, RGB(230,75,15));

				if( nTotal[3] != 0 )
				{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -