资源简介
本例程是一个完整的学习KNN算法的工程,使用VS2010+C#编程,含训练数据及测试数据
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace KNN
{
public partial class FrmMain : Form
{
List dataset = new List();//数据集
List trainingset = new List();//训练样本集
List testset = new List();//测试样本集
List labledist = new List();//标签
int[] lblCnt =new int[3];
int sampleCnt = 0;
int testCnt = 0;
int correctCnt = 0;
public FrmMain()
{
InitializeComponent();
this.dgvDataSet.AutoGenerateColumns = false;
this.dgvTrainingSet.AutoGenerateColumns = false;
this.dgvTestResult.AutoGenerateColumns = false;
}
///
/// KNN分类
///
///
///
private void btnKNN_Click(object sender EventArgs e)
{
Sample sample = new Sample();
for (int m = 0; m < testset.Count; m++)
{
//清空list
labledist.Clear();
//选取测试集中的一个样本
sample = testset[m];
//计算该样本与训练集中的每个样本的欧式距离
for (int i = 0; i < trainingset.Count; i++)
{
labledist.Add(new LblDist()
{
label = sample.label
distance = clcSampleDisT(trainingset[i] sample)
});
}
//将所有的距离从小到大排序
sampleSetSort(ref labledist);
//找出样本与训练集中k个最邻近的样本统计k和最邻近样本中出现的标签最多
int k = 10;
for (int i = 0; i < k; i++)
{
lblCnt[labledist[i].label - 1]++;
}
//求标签最多的样本
int lbl = lblCntMax(lblCnt);
//判断该样本所属的类
sample.Klabel = lbl;
testset[m] = sample;
}
this.dgvTestResult.DataSource = null;
this.dgvTestResult.DataSource = testset;
statisticCorrect(testset);
this.lblSampleCnt.Text = sampleCnt.ToString();
this.lblTrainingCnt.Text = (sampleCnt - testCnt).ToString();
this.lblTestCnt.Text = testCnt.ToString();
this.lblCorrectCnt.Text = correctCnt.ToString();
double r = correctCnt*100.0 / testCnt;
this.lblCorrectRatio.Text = r.ToString(“0.00“)+“%“;
}
///
/// 读取数据集
///
///
///
private void btnReadDataSet_Click(object sender EventArgs e)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 27067 2016-04-15 11:06 KNN\KNN\bin\Debug\DataTestSet.txt
文件 21504 2016-04-15 16:38 KNN\KNN\bin\Debug\KNN.exe
文件 36352 2016-04-15 16:38 KNN\KNN\bin\Debug\KNN.pdb
文件 11600 2016-04-15 16:38 KNN\KNN\bin\Debug\KNN.vshost.exe
文件 490 2010-03-17 22:39 KNN\KNN\bin\Debug\KNN.vshost.exe.manifest
文件 105 2016-04-14 20:46 KNN\KNN\bin\Debug\test.txt
文件 108 2016-04-14 20:16 KNN\KNN\bin\Debug\train.txt
文件 9953 2016-04-15 16:38 KNN\KNN\FrmMain.cs
文件 26633 2016-04-15 16:38 KNN\KNN\FrmMain.Designer.cs
文件 10905 2016-04-15 16:38 KNN\KNN\FrmMain.resx
文件 3924 2016-04-15 14:42 KNN\KNN\KNN.csproj
文件 228 2016-04-14 20:11 KNN\KNN\ML_KNN.cs
文件 5420 2016-04-15 10:52 KNN\KNN\obj\x86\Debug\DesignTimeResolveAssemblyReferences.cache
文件 6543 2016-04-15 16:38 KNN\KNN\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache
文件 564 2016-04-15 16:38 KNN\KNN\obj\x86\Debug\KNN.csproj.FileListAbsolute.txt
文件 977 2016-04-15 16:38 KNN\KNN\obj\x86\Debug\KNN.csproj.GenerateResource.Cache
文件 9174 2016-04-15 11:15 KNN\KNN\obj\x86\Debug\KNN.csprojResolveAssemblyReference.cache
文件 21504 2016-04-15 16:38 KNN\KNN\obj\x86\Debug\KNN.exe
文件 180 2016-04-15 16:38 KNN\KNN\obj\x86\Debug\KNN.FrmMain.resources
文件 36352 2016-04-15 16:38 KNN\KNN\obj\x86\Debug\KNN.pdb
文件 180 2016-04-15 14:42 KNN\KNN\obj\x86\Debug\KNN.Properties.Resources.resources
文件 497 2016-04-14 20:07 KNN\KNN\Program.cs
文件 1418 2016-04-14 20:07 KNN\KNN\Properties\AssemblyInfo.cs
文件 2836 2016-04-14 20:07 KNN\KNN\Properties\Resources.Designer.cs
文件 5612 2016-04-14 20:07 KNN\KNN\Properties\Resources.resx
文件 1090 2016-04-14 20:07 KNN\KNN\Properties\Settings.Designer.cs
文件 249 2016-04-14 20:07 KNN\KNN\Properties\Settings.settings
文件 851 2016-04-14 20:07 KNN\KNN.sln
..A..H. 29184 2016-04-15 16:38 KNN\KNN.suo
目录 0 2016-04-14 20:07 KNN\KNN\obj\x86\Debug\TempPE
............此处省略12个文件信息
- 上一篇:C#调用matlab 源代码 csdn
- 下一篇:C#单链表图形界面
相关资源
- C#单链表图形界面
- C#调用matlab 源代码 csdn
- C#WPF 右键菜单 显示 事件触发 测试
- SevenZipSharp.dll和7z.dll
- C# Json转换DataTable源文件
- C# 动态链接机制 插件平台AppDomain对
- 利用C#打开EXCEL并将数据更新保
- C# 异步Socket 多人聊天室完整源码
- C#中读取Excel表格数据
- Winform 画多边形
- 中兴华为C#编码规范
- C# winform Socket 即时通讯
- C#textbox下拉提示 textbox智能提示 te
- C#连接oracle数据库增删改查
- 基于GPRS的远程通讯C#程序SOCKET部分带
- C# winform 单击与双击事件同时存在
- c#+vs2005的局域网抢答器
- 留言板C# 窗口版和网页版
- C#:ARGB与16进制颜色显示与转换
- c#调用winapi实现WinForm中嵌入EXE程序
- otsu阈值分割c#语言
- C#和PLC利用modbus通信
- 百度翻译API,C#接口。
- 我写的TreeGrid源代码 TreeGrid 网格树录
- C#软键盘支持中英文输入
- BarScan条形码扫描源码c#
- 使用C#.NET实现FTP文件
- C# winform 朗读输入文本
- 电子邮件email收取客户端程序,C#源代
- HIKVISION工业相机通过Halcon二次开发的
评论
共有 条评论