算法直接调用Accord.net Framework封装好的方法,所以要下载Accord机器学习的DLL,下载地址见Accord官网。C4.5算法要引用的包括:
using Accord.IO;
using Accord.MachineLearning.DecisionTrees;
using Accord.MachineLearning.DecisionTrees.Learning;
using Accord.MachineLearning.DecisionTrees.Rules;
using Accord.Math;
using Accord.Statistics.Analysis;
using Accord.Statistics.Filters;
using AForge;
using System.Numerics;
我是写成winform窗体程序形式的,实现了五个按钮的Click()事件,分别用于:
1. MenuFileOpen_Click ():导入测试数据集;
2. upAttributeType_Click():导入测试数据的属性类别,属性类别分为Continuous(数值型)和Symbolic(符号型);
3. upTestingData_Click():导入训练数据集;
4. btnCreate_Click():建立分类模型;
5. btnTestingRun_Click():测试模型。
算法代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using Accord.IO;
using Accord.MachineLearning.DecisionTrees;
using Accord.MachineLearning.DecisionTrees.Learning;
using Accord.MachineLearning.DecisionTrees.Rules;
using Accord.Math;
using Accord.Statistics.Analysis;
using Accord.Statistics.Filters;
using AForge;
using System.Numerics;
namespace 粗糙集属性选择_V1._0.DecisionTrees
{
public partial class DecisionTreesMainForm : DockContent
{
// 初始化树
DecisionTree tree;
//训练数据表
DataTable myDT = new DataTable();
//属性类别表
DataTable myDTAttType = new DataTable();
//测试数据表
DataTable myTestDT = new DataTable();
//属性数值化的矩阵
Codification codebook;
public DecisionTreesMainForm()
{
InitializeComponent();
dgvLearningSource.AutoGenerateColumns = true;
dgvPerformance.AutoGenerateColumns = false;
openFileDialog.InitialDirectory = Path.Combine(Application.StartupPath, "Resources");
}
/// <summary>
/// 进行学习并创建决策树
/// </summary>
///
private void btnCreate_Click(object sender, EventArgs e)
{
if (dgvLearningSource.DataSource == null)
{
MessageBox.Show("请先导入训练数据!");
return;
}
if (attributeTypeGridView.DataSource == null) {
MessageBox.Show("请先导入数据的属性类型!");
return;
}
// 完成和给定的数据保存修改
dgvLearningSource.EndEdit();
// MessageBox.Show(myDT.Columns.Count + "");
//初始化columnNames