• 大小: 73KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: C#
  • 标签: KNN  C#  

资源简介

本例程是一个完整的学习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个文件信息

评论

共有 条评论