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

📄 liedoc.cpp

📁 某个实验事编写粗糙集智能信息处理的程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// LieDoc.cpp : implementation file
//
#include "stdafx.h"
#include "mainfrm.h"

#include "LinkDB.h"
#include "afxdb.h"
#include "RSet.h"
#include "LieDoc.h"
#include "WaitDlg.h"
#include "lietestdlg.h"
//---------completion
#include "liecompletedel.h"
#include "baocomplete.h"
#include "zssinc/zssMeancomplete.h"
#include "zssinc/zsscombinalcomplete.h"
#include "zssinc/zssconditionmeancomplete.h"

//----discrete -------
#include "discrete/SemiMini.h"
#include "discrete/SemiMiniOne.h"
#include "discrete/seminaive.h"
#include "discrete/naivedis.h"
#include "discrete/mydis.h"
#include "discrete/disone.h"
#include "discrete/distwo.h"
#include "discrete/DisThree.h"
#include "discrete/DisFour.h"
#include "zssinc/zssmanualscaler.h"
#include "zssinc/zssentropyscaler.h"
#include "zssinc/zssbreakpointscaler.h"
#include "zssinc/zsswidthscaler.h"
#include "zssinc/zssfrequencyscaler.h"
//----attribute reduction----
#include "reduct1.h"
#include "reduct2.h"
#include "reduct3.h"
#include "wtpinc\indatt.h"
#include "lie/liedynamicreduct.h"
#include "lie/liegeneticreduct1.h"
#include "lie/liegeneticreduct2.h"
#include "lie/liegeneticreduct3.h"

#include "liemanualreduct.h"
#include  "AttEntropyReduce.h"
#include"AttEntropyReduceTwo.h"
#include"MIBARK.h"

//-------value reduction-------
#include "wtpinc/indval.h"
#include "phinc/valreductionone.h"
#include "phinc/valreductionthree.h"
#include "phinc/valreductiontwo.h"
#include "wangyinc/skowron.h"

//-----------special algorithm with incomplete IS------
#include "yyzinc/YyzIncompleteIS1.h"
#include "yyzinc/YyzIncompleteIS2.h"
#include "yyzinc/YyzIncompleteIS3.h"

#include "Rtr.h"
//--------------miss value
#include "yyzinc/miss_value.h"
#include "liesamplerecognise.h"

#include "yyzinc/yyzsamplerecognise1.h"
#include "yyzinc/yyzsamplerecognise2.h"
#include "yyzinc/yyzsamplerecognise3.h"
//----------other
#include "getfilenamedlg.h"
#include "MyPropertySheet.h"
//---------tools
#include "lierandomfilter.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//--------------macro , report error!--------
/////////////////////////////////////////////////////////////////////////////
// CLieDoc
//
//--------general process data---------
//CString GetGlobeFileName();
//UINT PerformFunc( LPVOID pParam );
CString g_strFileToRead="";		//
CString g_strFileToSave="";		
int g_iFlag;					//algorithm NO.

//--------- batch process data---------
BOOL bDoBatch=false;


HWND hWndDlg;
////////--------------------------
BOOL g_bOpenNotShow=false;
////////--------------------------
//   prepair for test and recognise
CString g_strTestInputFile="";	//test input file
bool	g_bTestFew=true;

HWND g_hWaitWnd=NULL;

IMPLEMENT_DYNCREATE(CLieDoc, CDocument)

CLieDoc::CLieDoc()
{
	m_pstrAttrName=NULL;
	m_pstrAttrType=NULL;
	m_bHasBlock=FALSE;
	m_bHasRule=FALSE;
	m_bHasFloat=FALSE;
	m_bIsComplete=true;
	iString=iInt=iFloat=0;
	m_ipReductedAttr=0;
	m_iBlockNum=0;
 //   NotStringComplete=true;
	m_pWaitDlg=0;

	m_pParam=0;
}



CLieDoc::~CLieDoc()
{
	delete []m_sRecNum;
	if(m_pParam)
		delete m_pParam;
	if(m_pWaitDlg)	// delete wait dlg;
		delete m_pWaitDlg;

	if(m_ipReductedAttr)
		delete []m_ipReductedAttr;
	if(m_pstrAttrName)
	{
		for(int i=0;i<m_iAttrNum+1;i++)
		{
			if(m_pstrAttrName[i]) delete[] m_pstrAttrName[i];
		}
		delete m_pstrAttrName;
	}
	if(m_pstrAttrType)
	{
		for(int i=0;i<m_iAttrNum+1;i++)
		{
			if(m_pstrAttrType[i]) delete[] m_pstrAttrType[i];
		}
		delete m_pstrAttrType;
	}
}


BEGIN_MESSAGE_MAP(CLieDoc, CDocument)
	//{{AFX_MSG_MAP(CLieDoc)
	ON_COMMAND(ID_RS_ATTR_REDU_NORMAL, OnRsAttrReduNormal)
	ON_COMMAND(ID_RS_ATTR_REDU_MATRIX, OnRsAttrReduMatrix)
	ON_COMMAND(ID_RS_ATTR_REDU_SELECT, OnRsAttrReduSelect)
	ON_COMMAND(ID_RS_ATTR_REDU_INC, OnRsAttrReduInc)
	ON_COMMAND(ID_RS_VALUE_REDU_NORMAL, OnRsValueReduNormal)
	ON_COMMAND(ID_RS_VALUE_REDU_QIF, OnRsValueReduQif)
	ON_COMMAND(ID_RS_VALUE_REDU_MATRIX, OnRsValueReduMatrix)
	ON_COMMAND(ID_RS_VALUE_REDU_INC, OnRsValueReduInc)
	ON_COMMAND(ID_RS_VALUE_REDU_SKOWRON, OnRsValueReduSkowron)
	ON_COMMAND(ID_RS_SPEC_INCMPL, OnRsSpecIncmpl)
	ON_COMMAND(ID_RS_SPEC_INCMPL2, OnRsSpecIncmpl2)
	ON_COMMAND(ID_FILE_SHOWDATA, OnFileShowdata)
	ON_UPDATE_COMMAND_UI(ID_RS_ATTR_REDU_INC, OnUpdateRsAttrReduInc)
	ON_UPDATE_COMMAND_UI(ID_RS_ATTR_REDU_MATRIX, OnUpdateRsAttrReduMatrix)
	ON_UPDATE_COMMAND_UI(ID_RS_ATTR_REDU_NORMAL, OnUpdateRsAttrReduNormal)
	ON_UPDATE_COMMAND_UI(ID_RS_ATTR_REDU_SELECT, OnUpdateRsAttrReduSelect)
	ON_UPDATE_COMMAND_UI(ID_RS_VALUE_REDU_INC, OnUpdateRsValueReduInc)
	ON_UPDATE_COMMAND_UI(ID_RS_VALUE_REDU_MATRIX, OnUpdateRsValueReduMatrix)
	ON_UPDATE_COMMAND_UI(ID_RS_VALUE_REDU_NORMAL, OnUpdateRsValueReduNormal)
	ON_UPDATE_COMMAND_UI(ID_RS_VALUE_REDU_QIF, OnUpdateRsValueReduQif)
	ON_UPDATE_COMMAND_UI(ID_RS_VALUE_REDU_SKOWRON, OnUpdateRsValueReduSkowron)
	ON_UPDATE_COMMAND_UI(ID_RS_SPEC_INCMPL, OnUpdateRsSpecIncmpl)
	ON_UPDATE_COMMAND_UI(ID_RS_SPEC_INCMPL2, OnUpdateRsSpecIncmpl2)
	ON_UPDATE_COMMAND_UI(ID_RS_SPEC_INCMPL3, OnUpdateRsSpecIncmpl3)
	ON_COMMAND(ID_RS_SPEC_INCMPL3, OnRsSpecIncmpl3)
	ON_COMMAND(ID_RS_DISCRETE_MINI, OnRsDiscreteMini)
	ON_COMMAND(ID_RS_DISCRETE_MYDIS, OnRsDiscreteMydis)
	ON_COMMAND(ID_RS_DISCRETE_NAIVE, OnRsDiscreteNaive)
	ON_COMMAND(ID_RS_DISCRETE_ONE, OnRsDiscreteOne)
	ON_COMMAND(ID_RS_DISCRETE_FOUR, OnRsDiscreteFour)
	ON_COMMAND(ID_RS_DISCRETE_FIVE, OnRsDiscreteFive)
	ON_COMMAND(ID_RS_DISCRETE_SEMINAIVE, OnRsDiscreteSeminaive)
	ON_COMMAND(ID_RS_DISCRETE_TWO, OnRsDiscreteTwo)
	ON_COMMAND(ID_RS_DISCRETE, OnRsDiscreteThree)
	ON_UPDATE_COMMAND_UI(ID_RS_DISCRETE_TWO, OnUpdateRsDiscreteTwo)
	ON_UPDATE_COMMAND_UI(ID_RS_DISCRETE_SEMINAIVE, OnUpdateRsDiscreteSeminaive)
	ON_UPDATE_COMMAND_UI(ID_RS_DISCRETE_ONE, OnUpdateRsDiscreteOne)
	ON_UPDATE_COMMAND_UI(ID_RS_DISCRETE_FOUR, OnUpdateRsDiscreteFour)
	ON_UPDATE_COMMAND_UI(ID_RS_DISCRETE_FIVE, OnUpdateRsDiscreteFive)
	ON_UPDATE_COMMAND_UI(ID_RS_DISCRETE_NAIVE, OnUpdateRsDiscreteNaive)
	ON_UPDATE_COMMAND_UI(ID_RS_DISCRETE_MYDIS, OnUpdateRsDiscreteMydis)
	ON_UPDATE_COMMAND_UI(ID_RS_DISCRETE_MINI, OnUpdateRsDiscreteMini)
	ON_COMMAND(ID_RS_COMPLETE_DEL, OnRsCompleteDel)
	ON_COMMAND(ID_RS_COMPLETE_MET, OnRsCompleteMet)
	ON_UPDATE_COMMAND_UI(ID_RS_COMPLETE_DEL, OnUpdateRsCompleteDel)
	ON_UPDATE_COMMAND_UI(ID_RS_COMPLETE_MET, OnUpdateRsCompleteMet)
	ON_COMMAND(ID_FILE_SAVE_AS, OnFileSaveAs)
    ON_COMMAND(ID_NOTPAD, OnNotpad)
	ON_COMMAND(ID_RS_BATCH, OnRsBatch)
	ON_UPDATE_COMMAND_UI(ID_RS_BATCH, OnUpdateRsBatch)
	ON_COMMAND(ID_RS_RECOGNISE, OnRsRecognise)
	ON_COMMAND(ID_RS_TEST, OnRsTest)
	ON_UPDATE_COMMAND_UI(ID_RS_TEST, OnUpdateRsTest)
	ON_UPDATE_COMMAND_UI(ID_RS_RECOGNISE, OnUpdateRsRecognise)
	ON_COMMAND(ID_RS_ATTR_REDU_ENTROPY1, OnRsAttrReduEntropy1)
	ON_UPDATE_COMMAND_UI(ID_RS_ATTR_REDU_ENTROPY1, OnUpdateRsAttrReduEntropy1)
	ON_COMMAND(ID_RS_ATTR_REDU_ENTROPY2, OnRsAttrReduEntropy2)
	ON_UPDATE_COMMAND_UI(ID_RS_ATTR_REDU_ENTROPY2, OnUpdateRsAttrReduEntropy2)
	ON_COMMAND(ID_RS_ATTR_REDU_MIBARK, OnRsAttrReduMibark)
	ON_UPDATE_COMMAND_UI(ID_RS_ATTR_REDU_MIBARK, OnUpdateRsAttrReduMibark)
	ON_COMMAND(ID_TOOL_MISSVALUE, OnToolMissvalue)
	ON_UPDATE_COMMAND_UI(ID_TOOL_MISSVALUE, OnUpdateToolMissvalue)
	ON_COMMAND(ID_RS_SPEC_INCMPL2_TEST, OnRsSpecIncmpl2Test)
	ON_COMMAND(ID_RS_SPEC_INCMPL3_TEST, OnRsSpecIncmpl3Test)
	ON_COMMAND(ID_RS_SPEC_INCMPL3_RECOGNISE, OnRsSpecIncmpl3Recognise)
	ON_COMMAND(ID_RS_SPEC_INCMPL2_RECOGNISE, OnRsSpecIncmpl2Recognise)
	ON_COMMAND(ID_RS_SPEC_INCMPL_RECOGNISE, OnRsSpecIncmplRecognise)
	ON_COMMAND(ID_RS_SPEC_INCMPL_TEST, OnRsSpecIncmplTest)
	ON_UPDATE_COMMAND_UI(ID_RS_SPEC_INCMPL_RECOGNISE, OnUpdateRsSpecIncmplRecognise)
	ON_UPDATE_COMMAND_UI(ID_RS_SPEC_INCMPL_TEST, OnUpdateRsSpecIncmplTest)
	ON_UPDATE_COMMAND_UI(ID_RS_SPEC_INCMPL2_RECOGNISE, OnUpdateRsSpecIncmpl2Recognise)
	ON_UPDATE_COMMAND_UI(ID_RS_SPEC_INCMPL2_TEST, OnUpdateRsSpecIncmpl2Test)
	ON_UPDATE_COMMAND_UI(ID_RS_SPEC_INCMPL3_RECOGNISE, OnUpdateRsSpecIncmpl3Recognise)
	ON_UPDATE_COMMAND_UI(ID_RS_SPEC_INCMPL3_TEST, OnUpdateRsSpecIncmpl3Test)
	ON_COMMAND(ID_RS_COMPLETE_COMBINATION, OnRsCompleteCombination)
	ON_COMMAND(ID_RS_COMPLETE_MEAN, OnRsCompleteMean)
	ON_COMMAND(ID_RS_COMPLETE_CONDITION_MEAN, OnRsCompleteConditionMean)
	ON_COMMAND(ID_RS_COMPLETE_CONDITION_COMBINATION, OnRsCompleteConditionCombination)
	ON_COMMAND(ID_RS_DISCRETE_EQUAL_WIDTH, OnRsDiscreteEqualWidth)
	ON_COMMAND(ID_RS_DISCRETE_BREAK_POINT, OnRsDiscreteBreakPoint)
	ON_COMMAND(ID_RS_DISCRETE_ENTROPY, OnRsDiscreteEntropy)
	ON_COMMAND(ID_RS_DISCRETE_EQUAL_FREQUENCY, OnRsDiscreteEqualFrequency)
	ON_COMMAND(ID_RS_DISCRETE_MANUAL, OnRsDiscreteManual)
	ON_COMMAND(ID_RS_ATTR_REDU_DYNAMIC, OnRsAttrReduDynamic)
	ON_COMMAND(ID_FILE_SHOWSTAT, OnFileShowstat)
	ON_COMMAND(ID_RS_ATTR_REDU_MANUAL, OnRsAttrReduManual)
	ON_COMMAND(ID_TOOL_FILTER, OnToolFilter)
	ON_COMMAND(ID_RS_ATTR_REDU_GENETIC1, OnRsAttrReduGenetic1)
	ON_COMMAND(ID_RS_ATTR_REDU_GENETIC2, OnRsAttrReduGenetic2)
	ON_COMMAND(ID_RS_ATTR_REDU_GENETIC3, OnRsAttrReduGenetic3)
	ON_COMMAND(ID_FILE_CLOSE_ALL, OnFileCloseAll)
	ON_UPDATE_COMMAND_UI(ID_RS_DISCRETE_EQUAL_WIDTH, OnUpdateRsDiscreteEqualWidth)
	ON_UPDATE_COMMAND_UI(ID_RS_DISCRETE_EQUAL_FREQUENCY, OnUpdateRsDiscreteEqualFrequency)
	ON_UPDATE_COMMAND_UI(ID_RS_DISCRETE_MANUAL, OnUpdateRsDiscreteManual)
	ON_UPDATE_COMMAND_UI(ID_RS_DISCRETE_ENTROPY, OnUpdateRsDiscreteEntropy)
	ON_UPDATE_COMMAND_UI(ID_RS_DISCRETE_BREAK_POINT, OnUpdateRsDiscreteBreakPoint)
	ON_UPDATE_COMMAND_UI(ID_TOOL_FILTER, OnUpdateToolFilter)
	ON_COMMAND(ID_AT_HEXIAO, OnAtHexiao)
	ON_UPDATE_COMMAND_UI(ID_AT_HEXIAO, OnUpdateAtHexiao)
	ON_COMMAND(ID_OPEN_DATABASE, OnOpenDatabase)
	ON_UPDATE_COMMAND_UI(ID_OPEN_DATABASE, OnUpdateOpenDatabase)
	ON_UPDATE_COMMAND_UI(ID_RS_DISCRETE, OnUpdateRsDiscreteOne)
	//}}AFX_MSG_MAP
	ON_MESSAGE(KYLIN_DATAHANDLE_FINISHED,OnKylinDataHanleFinished)
	ON_MESSAGE(KYLIN_DATAHANDLE_ERROR,OnKylinDataHanleError)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CLieDoc diagnostics

#ifdef _DEBUG
void CLieDoc::AssertValid() const
{
	CDocument::AssertValid();
}

void CLieDoc::Dump(CDumpContext& dc) const
{
	CDocument::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CLieDoc serialization

void CLieDoc::Serialize(CArchive& ar)
{
	if (ar.IsStoring())
	{
		// TODO: add storing code here
	}
	else
	{
		// TODO: add loading code here
	}
}

/////////////////////////////////////////////////////////////////////////////
// CLieDoc commands

//-----------------------------
// 该消息处理函数的本意是用TEXT显示数据.
// 但是CMainFrame从工作线程中接收自定义消息会出错(release版本下)
// 故借用该消息(WM_COMMAND, ID_FILE_SHOWSTAT)来运算结果文件的打开
// 如果 CRSetApp::g_bOpenFile 为 true,表示要进行文件打开操作
//                        若  为 false,表示是用TEXT显示数据.
//                         默认为false
// 故每次使用之后,将其还原为false.以不影响下一次操作.
void CLieDoc::OnFileShowstat() 
{	
	if( !( ((CRSetApp*)AfxGetApp())->g_bOpenFile ) )
	{
		((CRSetApp*)AfxGetApp())->OpenFile(GetPathName());
	}
	else
	{	//open file
		((CRSetApp*)AfxGetApp())->OpenFile(((CRSetApp*)AfxGetApp())->g_strFileToOpen );
		((CRSetApp*)AfxGetApp())->g_bOpenFile = false;
	}
	
}
void CLieDoc::OnFileShowdata() 
{
	((CMainFrame*)AfxGetMainWnd())->GetToolBar()->UpdateWindow();
		((CRSetApp*)AfxGetApp())->ShowDataOfFile(GetPathName());
}

void CLieDoc::RunAlgorithm(int flag)
{
	//准备线程的参数
	if(m_pParam==0)
		m_pParam=new KYLIN_PARAM;		//创建 参数结构
//	if(flag==500)
 //       m_pParam->inFile1=" ";
//	else  
	m_pParam->inFile1=GetPathName();	//算法输入文件
	m_pParam->inFlag=flag;				//算法代码
	m_pParam->ppWaitDlg=&m_pWaitDlg;	//等待对话框指针的指针
	m_pParam->pDoc=this;				//本文档指针

	//创建运算线程,挂起
	CWinThread* thread;
	thread=AfxBeginThread(PerformFunc,m_pParam,
		THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED);

	//填充线程参数,供等待线程使用(参数不交叉)
	m_pParam->hThreadToWait=thread->m_hThread;

	//创建等待对话框,初始化其所需数据(主要是运算线程的CWinThread指针)
	m_pWaitDlg=new CWaitDlg(this);
	m_pWaitDlg->Create();
	m_pWaitDlg->SetThreadUnderControl(thread);
	//显示等待对话框
	m_pWaitDlg->UpdateWindow();
	//创建并启动等待线程
	AfxBeginThread(PerformAndWait,m_pParam);
	//启动运算线程
	::ResumeThread(thread->m_hThread);	//begin to run

	m_pWaitDlg->ShowWindow(SW_NORMAL);
	m_pWaitDlg->CenterWindow();
	// 告述app,正在进行算法处理
	CRSetApp* theApp=(CRSetApp*)AfxGetApp();
	// disable the toolbar
	::InterlockedIncrement(&( theApp->g_lAlgRunning ));
	
/*	
	g_strFileToRead=GetPathName();
	g_iFlag=flag;
//	CWinThread* thread;
	thread=AfxBeginThread(PerformFunc,
	AfxGetMainWnd()->GetSafeHwnd(),
	((CRSetApp*)AfxGetApp())->g_handle,thread->m_hThread);
	CWaitDlg dlg;
	switch(flag/10)
	{
	case 1:
		dlg.m_strStrToShow="正在进行数据补齐处理,请稍候...";
		break;
	case 2:
		dlg.m_strStrToShow="正在进行数据离散化处理,请稍候...";
		break;
	case 3:
		dlg.m_strStrToShow="正在进行属性约简处理,请稍候...";
		break;
	case 4:
		dlg.m_strStrToShow="正在进行值约简处理,请稍候...";
		break;
	default:
		dlg.m_strStrToShow="正在处理,请稍候...";
		break;
	}
	hWndDlg=dlg.GetSafeHwnd();
	dlg.DoModal();
*/
}

//--------------
// 这个线程函数等待performfunc的运行.
UINT CLieDoc::PerformAndWait( LPVOID pParam)
{
	P_KYLIN_PARAM param=(P_KYLIN_PARAM)pParam;
	CRSetApp* theApp=(CRSetApp*)AfxGetApp();
	//等待运算线程的结束
	WaitForSingleObject(param->hThreadToWait,INFINITE);
	//获取运算线程退出代码.
	DWORD ExitCode;
	::GetExitCodeThread(param->hThreadToWait,&ExitCode);
	//如果退出代码为-1,则表明为用户取消的线程的执行
	// 参加 CWaitDlg::OnKill()函数
	if( ExitCode==-1 )
	{
		AfxMessageBox("操作被取消!");
		theApp->WriteLog("用户取消操作");
		::InterlockedDecrement(&( theApp->g_lAlgRunning ));
		return 1;
	}
	//关闭等待对话框
	(* param->ppWaitDlg)->SendMessage(WM_CLOSE); 
	//检查param->outFlag,该值由运算线程填充,表明运算结果
	// 1表示正常结束
	// 0表示运算中出错(可能是取消操作(非上述的用户取消),可能是其它错误)
	if(param->outFlag)
	{		//运算正常结束
		if(AfxMessageBox("处理完毕,要保存结果文件吗?",MB_YESNO|MB_ICONINFORMATION)==IDYES)
		{
			CFileDialog dlg(false,".txt",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
				"RS files(*.txt)|*.txt|all files(*.*)|*.*||",NULL);
			if(dlg.DoModal()==IDCANCEL)
			{
				theApp->g_strFileToOpen=param->outFile1;
				theApp->WriteLogAlgOK(param->outFile1,false);
			}
			else
			{
				CopyFile(param->outFile1 , dlg.GetPathName(),FALSE);
				DeleteFile(param->outFile1);
				theApp->g_strFileToOpen=dlg.GetPathName();
				theApp->WriteLogAlgOK(dlg.GetPathName(),true);
			}
		}
		else
		{
			theApp->g_strFileToOpen=param->outFile1;
			theApp->WriteLogAlgOK(param->outFile1,false);

		}
	

		::InterlockedDecrement(&( theApp->g_lAlgRunning ));
		//发消息给MainFrame,显示中间结果数据.
		((CRSetApp*)AfxGetApp())->g_bOpenFile=true;
		//此处不使用自定义消息,是因为在release版本下会出错.(莫名其妙?)
		AfxGetMainWnd()->SendMessage(WM_COMMAND,ID_FILE_SHOWSTAT);
	}
	else	//运算中出错.(因机制不全,无法得知出错类型及原因.)
	{
		::InterlockedDecrement(&( theApp->g_lAlgRunning ));
		AfxMessageBox("运算中出错!");
		theApp->WriteLog("运算中出错!");

	}

	return 1;
}
//-----------------------------------------------------
/*
   算法执行部分:(用一个数字(unsigned long) 代表一个算法)
	
 //  打开数据库文件
 //       500       打开数据库

   数据补齐			100-
		1001		取消补齐
		1002		基于可辨识矩阵补齐
		1003		组合补齐	combination compleate
		1004		条件组合补齐
		1005		平均补齐	meancomplete
		1006		条件平均补齐	condition mean complete
		

   离散化			200-	
		2001		等价的Ngugen贪心算法
		2002		属性重要性算法
		2003		Naive算法
		2004		改进的贪心算法1
		2005		改进的贪心算法2
		2013        改进的贪心算法3(my)
		2014        改进的贪心算法3等价算法
		2012        贪心算法(重写)
		2006		seminaive算法
		2007		等距离离散化 widthscaler
		2008		等频率		 frequency scaler
		2009		 信息熵		 entropy sclaer
		2010		断点重要性	 breakpointscalar
		2011		Manual scalar
		

   属性约简			300-

⌨️ 快捷键说明

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