📄 form1.cs
字号:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace NaiveBayes
{
public partial class Form1 : Form
{
private Dataset dataset;
public Form1()
{
InitializeComponent();
}
public void openSample()
{
comboBox1.Items.Clear();
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
StreamReader reader = new StreamReader(openFileDialog1.FileName);
string[] columns = reader.ReadLine().Split(',');
//initializing datatable
DataTable dataTable = new DataTable();
DataRow row = dataTable.NewRow();
for (int i = 0; i < columns.Length; i++)
{
dataTable.Columns.Add();
row[i] = columns[i];
dataTable.Columns[i].ColumnName = ("Attribute" + (i + 1).ToString());
}
dataTable.Rows.Add(row);
string line;
while ((line = reader.ReadLine()) != null)
{
row = dataTable.NewRow();
string[] sample = line.Split(',');
for (int i = 0; i < sample.Length; i++)
{
row[i] = sample[i];
}
dataTable.Rows.Add(row);
}
//initializing combobox items (target attribute)
for (int i = 0; i < columns.Length; i++)
{
comboBox1.Items.Add("Attribute" + (i + 1).ToString());
}
//default target attribute
comboBox1.SelectedIndex = comboBox1.Items.Count - 1;
//default teaching&test sample proportion
comboBox2.SelectedIndex = 0;
//default discretization step
comboBox3.SelectedIndex = comboBox3.Items.Count - 1;
this.dataset = new Dataset(dataTable, comboBox1.SelectedIndex, Convert.ToDouble(comboBox3.SelectedItem));
dataGridView1.DataSource = this.dataset.getDataTable();
}
}
private void classify()
{
for (int i = 0; i < this.dataset.getDigitizedTestSamples().Count; i++)
{
Classifier classifier = new Classifier((this.dataset.getDigitizedTestSamples()[i] as TestSample), this.dataset.getTargetAttribute(), this.dataset.getTrainingAttributes());
(this.dataset.getDigitizedTestSamples()[i] as TestSample).setClassAssumed(classifier.getClassAssumed());
}
}
private double countAccuracy()
{
double accuracy = 0;
foreach (TestSample testSample in this.dataset.getDigitizedTestSamples())
{
int temp1 = testSample.getClassAssumed();
int temp2 = Convert.ToInt32(testSample.getTargetValue());
if (testSample.getClassAssumed() == Convert.ToInt32(testSample.getTargetValue()))
accuracy++;
}
return (accuracy/this.dataset.getDigitizedTestSamples().Count*100);
}
private void DevideSample(int index)
{
double n = 0;
switch (index)
{
case 0:
n = 0.9;
break;
case 1:
n = 0.8;
break;
case 2:
n = 0.7;
break;
case 3:
n = 0.6;
break;
case 4:
n = 0.5;
break;
case 5:
n = 0.4;
break;
case 6:
n = 0.3;
break;
case 7:
n = 0.2;
break;
case 8:
n = 0.1;
break;
default:
n = 0.9;
break;
}
this.dataset.Devide(n);
}
private void button1_Click(object sender, EventArgs e)
{
openSample();
groupBox1.Enabled = true;
groupBox2.Enabled = true;
}
private void button3_Click(object sender, EventArgs e)
{
this.dataset.digitize();
dataGridView2.DataSource = this.dataset.getDigitizedTrainingTable();
dataGridView3.DataSource = this.dataset.getDigitizedTestTable_();
}
private void button2_Click(object sender, EventArgs e)
{
this.dataset.update();
DevideSample(comboBox2.SelectedIndex);
groupBox3.Enabled = true;
dataGridView2.DataSource = this.dataset.getTrainingTable();
dataGridView3.DataSource = this.dataset.getTestTable();
}
private void button4_Click(object sender, EventArgs e)
{
classify();
label2.Visible = true;
label1.Visible = true;
label2.Text = countAccuracy().ToString()+"%";
}
private void button5_Click(object sender, EventArgs e)
{
this.dataset.randomize();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -