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

📄 mydiag.cpp

📁 实现决策树分类训练试验。 源自c4.5
💻 CPP
字号:
// MyDiag.cpp : implementation file
//

#include "stdafx.h"
#include "Cart.h"
#include "MyDiag.h"

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

/////////////////////////////////////////////////////////////////////////////
// C45Option dialog


C45Option::C45Option(CWnd* pParent /*=NULL*/)
	: CDialog(C45Option::IDD, pParent)
{
	//{{AFX_DATA_INIT(C45Option)
	mD_Batch = true;
	mD_GainCrit = true;
	mD_ProbThresh = FALSE;
	mD_Subset = FALSE;
	mD_Unseen = FALSE;
	mD_Fname = _T("");
	mD_CF = 1.0f;
	mD_Increment = 1;
	mD_MinObjs = 2;
	mD_Trials = 10;
	mD_VerbLevel = 1;
	mD_Window = 1;
	mD_C = FALSE;
	mD_I = FALSE;
	mD_M = FALSE;
	mD_T = FALSE;
	mD_V = FALSE;
	mD_W = FALSE;
	//}}AFX_DATA_INIT
}


void C45Option::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(C45Option)
	DDX_Control(pDX, IDOK, mC_OK);
	DDX_Control(pDX, IDC_EDIT_V, m_EditV);
	DDX_Control(pDX, IDC_EDIT_M, m_EditM);
	DDX_Control(pDX, IDC_EDIT_C, m_EditC);
	DDX_Control(pDX, IDC_EDIT_I, m_EditI);
	DDX_Control(pDX, IDC_EDIT_W, m_EditW);
	DDX_Control(pDX, IDC_EDIT_T, m_EditT);
	DDX_Check(pDX, IDC_CHECK_BATCH, mD_Batch);
	DDX_Check(pDX, IDC_CHECK_GAINCRIT, mD_GainCrit);
	DDX_Check(pDX, IDC_CHECK_PTHRSH, mD_ProbThresh);
	DDX_Check(pDX, IDC_CHECK_SUBSET, mD_Subset);
	DDX_Check(pDX, IDC_CHECK_UNSEEN, mD_Unseen);
	DDX_Text(pDX, IDC_EDIT_FN, mD_Fname);
	DDX_Text(pDX, IDC_EDIT_C, mD_CF);
	DDV_MinMaxFloat(pDX, mD_CF, 1.e-003f, 100.f);
	DDX_Text(pDX, IDC_EDIT_I, mD_Increment);
	DDV_MinMaxInt(pDX, mD_Increment, 1, 1000000);
	DDX_Text(pDX, IDC_EDIT_M, mD_MinObjs);
	DDV_MinMaxInt(pDX, mD_MinObjs, 1, 1000000);
	DDX_Text(pDX, IDC_EDIT_T, mD_Trials);
	DDV_MinMaxInt(pDX, mD_Trials, 1, 10000);
	DDX_Text(pDX, IDC_EDIT_V, mD_VerbLevel);
	DDX_Text(pDX, IDC_EDIT_W, mD_Window);
	DDV_MinMaxInt(pDX, mD_Window, 1, 1000000);
	DDX_Check(pDX, IDC_CHECK_C, mD_C);
	DDX_Check(pDX, IDC_CHECK_I, mD_I);
	DDX_Check(pDX, IDC_CHECK_M, mD_M);
	DDX_Check(pDX, IDC_CHECK_T, mD_T);
	DDX_Check(pDX, IDC_CHECK_V, mD_V);
	DDX_Check(pDX, IDC_CHECK_W, mD_W);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(C45Option, CDialog)
	//{{AFX_MSG_MAP(C45Option)
	ON_BN_CLICKED(IDC_BUTTON_BRWS, OnFileBrws)
	ON_BN_CLICKED(IDC_CHECK_BATCH, OnCheckBatch)
	ON_BN_CLICKED(IDC_CHECK_C, OnCheckC)
	ON_BN_CLICKED(IDC_CHECK_I, OnCheckI)
	ON_BN_CLICKED(IDC_CHECK_M, OnCheckM)
	ON_BN_CLICKED(IDC_CHECK_T, OnCheckT)
	ON_BN_CLICKED(IDC_CHECK_V, OnCheckV)
	ON_BN_CLICKED(IDC_CHECK_W, OnCheckW)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// C45Option message handlers

void C45Option::OnFileBrws() 
{
	CFileDialog fDlg(true,NULL,"*.*;*.data", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
		"数据文件 (*.data;*.*)|*.data; *.*|所有文件 (*.*)|*.*|", NULL);

	UpdateData(true);	
	if(fDlg.DoModal()==IDOK)
		mD_Fname=fDlg.GetPathName();

	if(strcmp(mD_Fname,""))
		mC_OK.EnableWindow(true);

	UpdateData(false);
	return;
}

void C45Option::OnOK() 
{
	UpdateData(true);
	if(!strcmp(mD_Fname,""))
	{
		MessageBox("请选择数据文件!");
		mC_OK.EnableWindow(false);
		return ;
	}
	else
		CDialog::OnOK();
}


void C45Option::OnCheckBatch() 
{
	mD_Batch=!mD_Batch;
	UpdateData(true);
	if(mD_Batch)
	{
		mD_I=false;
		m_EditI.EnableWindow(mD_I);
		mD_T=false;
		m_EditT.EnableWindow(mD_T);
		mD_W=false;
		m_EditW.EnableWindow(mD_W);
	}
	UpdateData(false);
}

void C45Option::OnCheckC() 
{
	mD_C=!mD_C;
	UpdateData(true);
	m_EditC.EnableWindow(mD_C);
	UpdateData(false);	
}

void C45Option::OnCheckI() 
{
	mD_I=!mD_I;
	UpdateData(true);
	m_EditI.EnableWindow(mD_I);
	if(mD_I)
		mD_Batch=false;
	UpdateData(false);	
}

void C45Option::OnCheckM() 
{
	mD_M=!mD_M;
	UpdateData(true);
	m_EditM.EnableWindow(mD_M);
	UpdateData(false);	
}

void C45Option::OnCheckT() 
{
	mD_T=!mD_T;
	UpdateData(true);
	if(mD_T)
		mD_Batch=false;

	m_EditT.EnableWindow(mD_T);
	UpdateData(false);	

}

void C45Option::OnCheckV() 
{
	mD_V=!mD_V;
	UpdateData(true);
	m_EditV.EnableWindow(mD_V);
	UpdateData(false);	
}

void C45Option::OnCheckW() 
{
	mD_W=!mD_W;
	UpdateData(true);
	if(mD_W)
		mD_Batch=false;

	m_EditW.EnableWindow(mD_W);
	UpdateData(false);	
	
}


/////////////////////////////////////////////////////////////////////////////
// C45RULEOPTION dialog


C45RULEOPTION::C45RULEOPTION(CWnd* pParent /*=NULL*/)
	: CDialog(C45RULEOPTION::IDD, pParent)
{
	//{{AFX_DATA_INIT(C45RULEOPTION)
	mD_CF = 0;
	mD_Fn = _T("");
	mD_R = 0;
	mD_S = 0;
	mD_A = FALSE;
	mD_U = FALSE;
	mD_V = 0;
	mC_V = FALSE;
	mC_S = FALSE;
	mC_R = FALSE;
	mC_C = FALSE;
	//}}AFX_DATA_INIT
}


void C45RULEOPTION::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(C45RULEOPTION)
	DDX_Control(pDX, IDC_EDIT_V, m_EditV);
	DDX_Control(pDX, IDC_EDIT_R, m_EditR);
	DDX_Control(pDX, IDC_EDIT_C, m_EditC);
	DDX_Control(pDX, IDOK, mC_OK);
	DDX_Control(pDX, IDC_EDIT_S, mD_EditS);
	DDX_Text(pDX, IDC_EDIT_C, mD_CF);
	DDV_MinMaxInt(pDX, mD_CF, 0, 100);
	DDX_Text(pDX, IDC_EDIT_FN, mD_Fn);
	DDV_MaxChars(pDX, mD_Fn, 100);
	DDX_Text(pDX, IDC_EDIT_R, mD_R);
	DDV_MinMaxInt(pDX, mD_R, 0, 10000);
	DDX_Text(pDX, IDC_EDIT_S, mD_S);
	DDV_MinMaxInt(pDX, mD_S, 0, 100);
	DDX_Check(pDX, IDC_CHECK_SIMANNEAL, mD_A);
	DDX_Check(pDX, IDC_CHECK_UNSEEN, mD_U);
	DDX_Text(pDX, IDC_EDIT_V, mD_V);
	DDV_MinMaxInt(pDX, mD_V, 0, 100);
	DDX_Check(pDX, IDC_CHECK_V, mC_V);
	DDX_Check(pDX, IDC_CHECK_S, mC_S);
	DDX_Check(pDX, IDC_CHECK_R, mC_R);
	DDX_Check(pDX, IDC_CHECK_C, mC_C);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(C45RULEOPTION, CDialog)
	//{{AFX_MSG_MAP(C45RULEOPTION)
	ON_BN_CLICKED(IDC_BUTTON_BRWS, OnButtonBrwsFile)
	ON_BN_CLICKED(IDC_CHECK_C, OnCheckC)
	ON_BN_CLICKED(IDC_CHECK_R, OnCheckR)
	ON_BN_CLICKED(IDC_CHECK_S, OnCheckS)
	ON_BN_CLICKED(IDC_CHECK_V, OnCheckV)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// C45RULEOPTION message handlers

void C45RULEOPTION::OnButtonBrwsFile() 
{
	CFileDialog fDlg(true,NULL,"*.*;*.data", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
		"数据文件 (*.data;*.*)|*.data; *.*|所有文件 (*.*)|*.*|", NULL);

	UpdateData(true);
	if(fDlg.DoModal()==IDOK)
		mD_Fn=fDlg.GetPathName();

	if(strcmp(mD_Fn,""))
		mC_OK.EnableWindow(true);

	UpdateData(false);

	return;	
}

void C45RULEOPTION::OnOK() 
{
	UpdateData(true);
	if(!strcmp(mD_Fn,""))
	{
		MessageBox("请选择数据文件!");
		mC_OK.EnableWindow(false);
		return ;
	}
	else
		CDialog::OnOK();
}

void C45RULEOPTION::OnCheckC() 
{
	mC_C=!mC_C;
	UpdateData(true);
	m_EditC.EnableWindow(mC_C);
	UpdateData(false);	

}

void C45RULEOPTION::OnCheckR() 
{
	mC_R=!mC_R;
	UpdateData(true);
	m_EditR.EnableWindow(mC_R);
	UpdateData(false);	
}

void C45RULEOPTION::OnCheckS() 
{
	mC_S=!mC_S;
	UpdateData(true);
	mD_EditS.EnableWindow(mC_S);
	UpdateData(false);	
}

void C45RULEOPTION::OnCheckV() 
{
	mC_V=!mC_V;
	UpdateData(true);
	m_EditV.EnableWindow(mC_V);
	UpdateData(false);	

}
/////////////////////////////////////////////////////////////////////////////
// ConsultOption dialog


ConsultOption::ConsultOption(CWnd* pParent /*=NULL*/)
	: CDialog(ConsultOption::IDD, pParent)
{
	//{{AFX_DATA_INIT(ConsultOption)
	mD_V = FALSE;
	mD_Fname = _T("");
	mD_T = FALSE;
	//}}AFX_DATA_INIT
}


void ConsultOption::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(ConsultOption)
	DDX_Control(pDX, IDOK, mC_OK);
	DDX_Check(pDX, IDC_CHECK_V, mD_V);
	DDX_Text(pDX, IDC_EDIT_FN, mD_Fname);
	DDV_MaxChars(pDX, mD_Fname, 100);
	DDX_Check(pDX, IDC_CHECK_TRACE, mD_T);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(ConsultOption, CDialog)
	//{{AFX_MSG_MAP(ConsultOption)
	ON_BN_CLICKED(IDC_BUTTON_BRWS, OnFileBrws)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// ConsultOption message handlers

void ConsultOption::OnFileBrws() 
{
	CFileDialog fDlg(true,NULL,"*.*;*.data", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
		"数据文件 (*.data;*.*)|*.data; *.*|所有文件 (*.*)|*.*|", NULL);

	UpdateData(true);
	if(fDlg.DoModal()==IDOK)
		mD_Fname=fDlg.GetPathName();

	if(strcmp(mD_Fname,""))
		mC_OK.EnableWindow(true);
	UpdateData(false);

	return;
}

void ConsultOption::OnOK() 
{
	UpdateData(true);
	if(!strcmp(mD_Fname,""))
	{
		MessageBox("请选择数据文件!");
		mC_OK.EnableWindow(false);
		return ;
	}
	else
		CDialog::OnOK();
}

⌨️ 快捷键说明

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