資源簡介
本例程是一個完整的學習KNN算法的工程,使用VS2010+C#編程,含訓練數(shù)據(jù)及測試數(shù)據(jù)

代碼片段和文件信息
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();//數(shù)據(jù)集
????????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?????????????{
????????????????//清空list
????????????????labledist.Clear();
????????????????//選取測試集中的一個樣本
????????????????sample?=?testset[m];
????????????????//計算該樣本與訓練集中的每個樣本的歐式距離
????????????????for?(int?i?=?0;?i?????????????????{
????????????????????labledist.Add(new?LblDist()
????????????????????{
????????????????????????label?=?sample.label
????????????????????????distance?=?clcSampleDisT(trainingset[i]?sample)
????????????????????});
????????????????}
????????????????//將所有的距離從小到大排序
????????????????sampleSetSort(ref?labledist);
????????????????//找出樣本與訓練集中k個最鄰近的樣本統(tǒng)計k和最鄰近樣本中出現(xiàn)的標簽最多
????????????????int?k?=?10;
????????????????for?(int?i?=?0;?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“)+“%“;
????????????
????????}
????????///?
????????///?讀取數(shù)據(jù)集
????????///?
????????///?
????????///?
????????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#調(diào)用matlab 源代碼 csdn
- 下一篇:C#單鏈表圖形界面
評論
共有 條評論