📄 class1.cs
字号:
public static void PrintNum()
{
Console.WriteLine("the rule number is "+RuleNum.ToString());
}
static bool verifyNode(TreeNode root)
{
string str = root.attribute.ToString();
if(root.attribute.values == null)
{
if((str == "True")&&(dv[16,1] == "democrat"))
return true;
else
if((str == "False")&&(dv[16,1] == "republican"))
return true;
else
return false;
}
else
{
int i=0;
for(i= 0; i< 16; ++i)//找到相应的属性索引
{
if(dv[i,0]== str)
break;
}
int j=0;
for (j = 0; j < root.attribute.values.Length; ++j)
{
if(dv[i,1] == root.attribute.values[j])
break;
}
TreeNode childNode = root.getChildByBranchName(root.attribute.values[j]);
return verifyNode(childNode);
}
}
static void VerifyTestData(TreeNode root)
{
dv[0,0]= "handicapped";
dv[1,0]= "water";
dv[2,0]= "adoption";
dv[3,0]= "physician";
dv[4,0]="el";
dv[5,0]="religious";
dv[6,0]="anti";
dv[7,0]="aid";
dv[8,0]="mx";
dv[9,0]="immigration";
dv[10,0]="synfuels";
dv[11,0]="education";
dv[12,0]="superfund";
dv[13,0]="crime";
dv[14,0]="duty";
dv[15,0]="export";
dv[16,0]="rusult";
int RightNum=0;
int WorryNum=0;
StreamReader strmReader=new StreamReader("vote test.txt");
string str=null;
str=strmReader.ReadLine();
int Ln=1;
while(str!=null)
{
str=str.Trim();
int i=str.IndexOf(",");
dv[0,1]=str.Substring(0,i);
//Console.WriteLine(outlook);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[1,1]=str.Substring(0,i);
//Console.WriteLine(temperture);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[2,1]=str.Substring(0,i);
//Console.WriteLine(humidity);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[3,1]=str.Substring(0,i);
//Console.WriteLine(windy);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[4,1]=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[5,1]=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[6,1]=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[7,1]=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[8,1]=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[9,1]=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[10,1]=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[11,1]=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[12,1]=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[13,1]=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[14,1]=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
dv[15,1]=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//i=str.IndexOf(" ");
dv[16,1] = str;
if(verifyNode(root))
{
Ln++;
RightNum++;
}
else
{
WorryNum++;
Console.WriteLine("wrong line is "+ Ln.ToString());
Ln++;
}
str=strmReader.ReadLine();
}
strmReader.Close();
Console.WriteLine("RightNum is " + RightNum.ToString());
Console.WriteLine("WorryNum is " + WorryNum.ToString());
}
static DataTable getDataTable()
{
DataTable result = new DataTable("mysamples");
DataColumn column=result.Columns.Add("handicapped");
column.DataType=typeof(string);
column = result.Columns.Add("water");
column.DataType = typeof(string);
column = result.Columns.Add("adoption");
column.DataType = typeof(string);
column = result.Columns.Add("physician");
column.DataType = typeof(string);
column = result.Columns.Add("el");
column.DataType = typeof(string);
column = result.Columns.Add("religious");
column.DataType = typeof(string);
column = result.Columns.Add("anti");
column.DataType = typeof(string);
column = result.Columns.Add("aid");
column.DataType = typeof(string);
column = result.Columns.Add("mx");
column.DataType = typeof(string);
column = result.Columns.Add("immigration");
column.DataType = typeof(string);
column = result.Columns.Add("synfuels");
column.DataType = typeof(string);
column = result.Columns.Add("education");
column.DataType = typeof(string);
column = result.Columns.Add("superfund");
column.DataType = typeof(string);
column = result.Columns.Add("crime");
column.DataType = typeof(string);
column = result.Columns.Add("duty");
column.DataType = typeof(string);
column = result.Columns.Add("export");
column.DataType = typeof(string);
column = result.Columns.Add("result");
column.DataType = typeof(bool);
StreamReader strmReader=new StreamReader("b.txt");
string handicapped;
string water;
string adoption;
string physician;
string el;
string religious;
string anti;
string aid;
string mx;
string immigration;
string synfuels;
string education;
string superfund;
string crime;
string duty;
string export;
string classresult;
bool t_or_f;
string str=null;
str=strmReader.ReadLine();
while(str!=null)
{
//Console.WriteLine(str);
str=str.Trim();
int i=str.IndexOf(",");
handicapped=str.Substring(0,i);
//Console.WriteLine(outlook);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
water=str.Substring(0,i);
//Console.WriteLine(temperture);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
adoption=str.Substring(0,i);
//Console.WriteLine(humidity);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
physician=str.Substring(0,i);
//Console.WriteLine(windy);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
el=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
religious=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
anti=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
aid=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
mx=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
immigration=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
synfuels=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
education=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
superfund=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
crime=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
duty=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//Console.WriteLine(str);
i=str.IndexOf(",");
export=str.Substring(0,i);
str=str.Remove(0,i+1);//把空格也一起删去
//i=str.IndexOf(" ");
classresult=str;
//Console.WriteLine(str);
if(classresult=="democrat")
t_or_f=true;
else
t_or_f=false;
result.Rows.Add(new object[] {handicapped,water,adoption,physician,el,religious,anti,aid,mx,immigration,synfuels,education,superfund,crime,duty,export,t_or_f});
str=strmReader.ReadLine();
}
strmReader.Close();
// result.Rows.Add(new object[] {"long", "square","waffle",false});
// result.Rows.Add(new object[] {"long", "rectangle", "waffle", false});
// result.Rows.Add(new object[] {"short", "square", "two-way", true});
// result.Rows.Add(new object[] {"short", "rectangle", "one-way", false});
return result;
}
/// <summary>
/// The main entry point for the application.
/// </summary>
///
[STAThread]
static void Main(string[] args)
{
/*
Attribute ceu = new Attribute("Span", new string[] {"long", "short"});
Attribute temperatura = new Attribute("Shape", new string[] {"square", "rectangle" });
Attribute humidade = new Attribute("Slab", new string[] {"waffle", "two-way","one-way"});
Attribute[] attributes = new Attribute[] {ceu, temperatura, humidade};
*/
long startTime,stopTime;
long freq;
startTime = 0;
stopTime = 0;
if(QueryPerformanceFrequency(out freq) == false)
throw new Win32Exception();
Attribute handicapped=new Attribute("handicapped",new string[]{"n","y","u"});
Attribute water=new Attribute("water",new string[]{"n","y","u"});
Attribute adoption=new Attribute("adoption",new string[]{"n","y","u"});
Attribute physician=new Attribute("physician",new string[]{"n","y","u"});
Attribute el=new Attribute("el",new string[]{"n","y","u"});
Attribute religious=new Attribute("religious",new string[]{"n","y","u"});
Attribute anti=new Attribute("anti",new string[]{"n","y","u"});
Attribute aid=new Attribute("aid",new string[]{"n","y","u"});
Attribute mx=new Attribute("mx",new string[]{"n","y","u"});
Attribute immigration=new Attribute("immigration",new string[]{"n","y","u"});
Attribute synfuels=new Attribute("synfuels",new string[]{"n","y","u"});
Attribute education=new Attribute("education",new string[]{"n","y","u"});
Attribute superfund=new Attribute("superfund",new string[]{"n","y","u"});
Attribute crime=new Attribute("crime",new string[]{"n","y","u"});
Attribute duty=new Attribute("duty",new string[]{"n","y","u"});
Attribute export=new Attribute("export",new string[]{"n","y","u"});
Attribute[] attributes = new Attribute[] {handicapped,water,adoption,physician,el,religious,anti,aid,mx,immigration,synfuels,education,superfund,crime,duty,export};
/*
Attribute outlook=new Attribute("outlook",new string[]{"overcast","sunny","rain"});
Attribute temperture = new Attribute("temperture", new string[] {"hot", "mild","cold" });
Attribute humidity = new Attribute("humidity", new string[] {"high", "normal" });
Attribute windy = new Attribute("windy", new string[] {"not", "very","medium" });
Attribute[] attributes = new Attribute[] {outlook,temperture,humidity,windy};
*/
DataTable samples = getDataTable();
DecisionTreeID3 id3 = new DecisionTreeID3();
//long timeInitial,timeElapsed;
//timeInitial = DateTime.Now.Ticks;
Thread.Sleep(0);
QueryPerformanceCounter(out startTime);
TreeNode root = id3.mountTree(samples, "result", attributes);
//timeElapsed=DateTime.Now.Ticks ;
//Console.WriteLine( "using time:{0}s",new TimeSpan(timeElapsed - timeInitial ) );
QueryPerformanceCounter(out stopTime);
double DurationSecs;
//if(startTime == 0 || stopTime == 0)
//throw new InvalidOperationException(Resource.GetResource("Unit_TimeVariableIsNull"));
//else
DurationSecs=(double)(stopTime - startTime)/(double)freq;
float DurationMsel;
DurationMsel=float.Parse((DurationSecs * 1000).ToString("##0.###"));
Console.WriteLine(DurationMsel);
printNode(root, "");
PrintNum();
VerifyTestData(root);
Console.Read();
/*
DataColumn column = result.Columns.Add("ceu");
column.DataType = typeof(string);
column = result.Columns.Add("temperatura");
column.DataType = typeof(string);
column = result.Columns.Add("humidade");
column.DataType = typeof(string);
column = result.Columns.Add("vento");
column.DataType = typeof(string);
column = result.Columns.Add("result");
column.DataType = typeof(bool);
result.Rows.Add(new object[] {"sol", "alta", "alta", "nao", false}); //D1 sol alta alta n鉶 N
result.Rows.Add(new object[] {"sol", "alta", "alta", "sim", false}); //D2 sol alta alta sim N
result.Rows.Add(new object[] {"nublado", "alta", "alta", "nao", true}); //D3 nebulado alta alta n鉶 P
result.Rows.Add(new object[] {"chuva", "alta", "alta", "nao", true}); //D4 chuva alta alta n鉶 P
result.Rows.Add(new object[] {"chuva", "baixa", "normal", "nao", true}); //D5 chuva baixa normal n鉶 P
result.Rows.Add(new object[] {"chuva", "baixa", "normal", "sim", false}); //D6 chuva baixa normal sim N
result.Rows.Add(new object[] {"nublado", "baixa", "normal", "sim", true}); //D7 nebulado baixa normal sim P
result.Rows.Add(new object[] {"sol", "suave", "alta", "nao", false}); //D8 sol suave alta n鉶 N
result.Rows.Add(new object[] {"sol", "baixa", "normal", "nao", true}); //D9 sol baixa normal n鉶 P
result.Rows.Add(new object[] {"chuva", "suave", "normal", "nao", true}); //D10 chuva suave normal n鉶 P
result.Rows.Add(new object[] {"sol", "suave", "normal", "nao", true}); //D11 sol suave normal sim P
result.Rows.Add(new object[] {"nublado", "suave", "alta", "sim", true}); //D12 nebulado suave alta sim P
result.Rows.Add(new object[] {"nublado", "alta", "normal", "nao", true}); //D13 nebulado alta normal n鉶 P
result.Rows.Add(new object[] {"chuva", "suave", "alta", "sim", false}); //D14 chuva suave alta sim N
*/
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -