📄 evaluatedlg.cpp
字号:
/*==========================================================
*
* 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 + -