±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 4288  |  »Ø¸´: 9
¡¾½±Àø¡¿ ±¾Ìû±»ÆÀ¼Û5´Î£¬×÷Õßstephenliu89Ôö¼Ó½ð±Ò 4 ¸ö
µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû

stephenliu89

Òø³æ (СÓÐÃûÆø)


[×ÊÔ´] ¡¾Ô­´´¡¿Ò»¸ö¼òµ¥µÄkNN·ÖÀàËã·¨ (k-Nearest Neighbor algorithm) µÄC++ʵÏÖ£¨¸½Ô´Â룩

ÁÚ½üËã·¨
   


KNNËã·¨µÄ¾ö²ß¹ý³Ì



¡¡¡¡k-Nearest Neighbor algorithm

ÊÇK×îÁÚ½ü½áµãËã·¨£¨k-Nearest Neighbor algorithm£©µÄËõдÐÎʽ£¬Êǵç×ÓÐÅÏ¢·ÖÀàÆ÷Ëã·¨µÄÒ»ÖÖ



¸ÃËã·¨[5]µÄ»ù±¾Ë¼Â·ÊÇ[6]£ºÔÚ¸ø¶¨ÐÂÎı¾ºó£¬¿¼ÂÇÔÚѵÁ·Îı¾¼¯ÖÐÓë¸ÃÐÂÎı¾¾àÀë×î½ü£¨×îÏàËÆ£©µÄ K ƪÎı¾£¬¸ù¾ÝÕâ K ƪÎı¾ËùÊôµÄÀà±ðÅж¨ÐÂÎı¾ËùÊôµÄÀà±ð

¡¡¡¡×óͼÖУ¬ÂÌɫԲҪ±»¾ö¶¨¸³ÓèÄĸöÀ࣬ÊǺìÉ«Èý½ÇÐλ¹ÊÇÀ¶É«ËÄ·½ÐΣ¿Èç¹ûK=3£¬ÓÉÓÚºìÉ«Èý½ÇÐÎËùÕ¼±ÈÀýΪ2/3£¬ÂÌɫԲ½«±»¸³ÓèºìÉ«Èý½ÇÐÎÄǸöÀ࣬Èç¹ûK=5£¬ÓÉÓÚÀ¶É«ËÄ·½ÐαÈÀýΪ3/5£¬Òò´ËÂÌɫԲ±»¸³ÓèÀ¶É«ËÄ·½ÐÎÀà¡£

¡¡¡¡K×î½üÁÚ(k-Nearest Neighbor£¬KNN)·ÖÀàËã·¨£¬ÊÇÒ»¸öÀíÂÛÉϱȽϳÉÊìµÄ·½·¨£¬Ò²ÊÇ×î¼òµ¥µÄ»úÆ÷ѧϰËã·¨Ö®Ò»¡£¸Ã·½·¨µÄ˼·ÊÇ£ºÈç¹ûÒ»¸öÑù±¾ÔÚÌØÕ÷¿Õ¼äÖеÄk¸ö×îÏàËÆ(¼´ÌØÕ÷¿Õ¼äÖÐ×îÁÚ½ü)µÄÑù±¾ÖеĴó¶àÊýÊôÓÚijһ¸öÀà±ð£¬Ôò¸ÃÑù±¾Ò²ÊôÓÚÕâ¸öÀà±ð¡£KNNËã·¨ÖУ¬ËùÑ¡ÔñµÄÁÚ¾Ó¶¼ÊÇÒѾ­ÕýÈ··ÖÀàµÄ¶ÔÏ󡣸÷½·¨ÔÚ¶¨Àà¾ö²ßÉÏÖ»ÒÀ¾Ý×îÁÚ½üµÄÒ»¸ö»òÕß¼¸¸öÑù±¾µÄÀà±ðÀ´¾ö¶¨´ý·ÖÑù±¾ËùÊôµÄÀà±ð¡£ KNN·½·¨ËäÈ»´ÓÔ­ÀíÉÏÒ²ÒÀÀµÓÚ¼«ÏÞ¶¨Àí£¬µ«ÔÚÀà±ð¾ö²ßʱ£¬Ö»Ó뼫ÉÙÁ¿µÄÏàÁÚÑù±¾Óйء£ÓÉÓÚKNN·½·¨Ö÷Òª¿¿ÖÜΧÓÐÏÞµÄÁÚ½üµÄÑù±¾£¬¶ø²»ÊÇ¿¿ÅбðÀàÓòµÄ·½·¨À´È·¶¨ËùÊôÀà±ðµÄ£¬Òò´Ë¶ÔÓÚÀàÓòµÄ½»²æ»òÖØµþ½Ï¶àµÄ´ý·ÖÑù±¾¼¯À´Ëµ£¬KNN·½·¨½ÏÆäËû·½·¨¸üΪÊʺϡ£

¡¡¡¡KNNËã·¨²»½ö¿ÉÒÔÓÃÓÚ·ÖÀ࣬»¹¿ÉÒÔÓÃÓڻع顣ͨ¹ýÕÒ³öÒ»¸öÑù±¾µÄk¸ö×î½üÁÚ¾Ó£¬½«ÕâЩÁÚ¾ÓµÄÊôÐÔµÄÆ½¾ùÖµ¸³¸ø¸ÃÑù±¾£¬¾Í¿ÉÒԵõ½¸ÃÑù±¾µÄÊôÐÔ¡£¸üÓÐÓõķ½·¨Êǽ«²»Í¬¾àÀëµÄÁÚ¾Ó¶Ô¸ÃÑù±¾²úÉúµÄÓ°Ïì¸øÓ費ͬµÄȨֵ(weight)£¬ÈçȨֵÓë¾àÀë³ÉÕý±È¡£

¡¡¡¡¸ÃËã·¨ÔÚ·ÖÀàʱÓиöÖ÷ÒªµÄ²»×ãÊÇ£¬µ±Ñù±¾²»Æ½ºâʱ£¬ÈçÒ»¸öÀàµÄÑù±¾ÈÝÁ¿ºÜ´ó£¬¶øÆäËûÀàÑù±¾ÈÝÁ¿ºÜСʱ£¬ÓпÉÄܵ¼Öµ±ÊäÈëÒ»¸öÐÂÑù±¾Ê±£¬¸ÃÑù±¾µÄK¸öÁÚ¾ÓÖдóÈÝÁ¿ÀàµÄÑù±¾Õ¼¶àÊý¡£Òò´Ë¿ÉÒÔ²ÉÓÃȨֵµÄ·½·¨£¨ºÍ¸ÃÑù±¾¾àÀëСµÄÁÚ¾ÓȨֵ´ó£©À´¸Ä½ø¡£¸Ã·½·¨µÄÁíÒ»¸ö²»×ãÖ®´¦ÊǼÆËãÁ¿½Ï´ó£¬ÒòΪ¶Ôÿһ¸ö´ý·ÖÀàµÄÎı¾¶¼Òª¼ÆËãËüµ½È«ÌåÒÑÖªÑù±¾µÄ¾àÀ룬²ÅÄÜÇóµÃËüµÄK¸ö×î½üÁڵ㡣Ŀǰ³£ÓõĽâ¾ö·½·¨ÊÇÊÂÏȶÔÒÑÖªÑù±¾µã½øÐмô¼­£¬ÊÂÏÈÈ¥³ý¶Ô·ÖÀà×÷Óò»´óµÄÑù±¾¡£¸ÃËã·¨±È½ÏÊÊÓÃÓÚÑù±¾ÈÝÁ¿±È½Ï´óµÄÀàÓòµÄ×Ô¶¯·ÖÀ࣬¶øÄÇЩÑù±¾ÈÝÁ¿½ÏСµÄÀàÓò²ÉÓÃÕâÖÖËã·¨±È½ÏÈÝÒײúÉúÎó·Ö¡£


KNN-Ö÷ÒªÓ¦ÓÃÁìÓò
¡¤Îı¾·ÖÀࡤ¾ÛÀà·ÖÎö¡¤Êý¾ÝÍÚ¾ò¡¤»úÆ÷ѧϰ¡¤Ô¤²â·ÖÎö¡¤¼õÉÙά¶È¡¤Ä£Ê½Ê¶±ð¡¤Í¼Ïñ´¦Àí

ÎÒµÄkNN·ÖÀàËã·¨³ÌÐò£º




------------------- Code written by Stephen Liu -----------------------

#include
#include
#define MAX 1000
using namespace std;
int m, i, j;
int types[100];
class str
{
public:
  float x;
  float y;
  float distance;
  int type;
};
str data[ MAX ];//ÊäÈëµÄÒÑÖªÀà±ðµÄÊý¾Ý
str point;//ÐèÒª¸ù¾ÝkNNÅжÏÀà±ðµÄδ֪Êý¾Ý
str temp;

void input_data()
{
cout << "ÇëÊäÈëÒÑÖªµãµÄ¸öÊý£º";
cin >> m;
for ( i = 1; i <= m; i++)
{
  cout <<"ÇëÊäÈëµã " << i  <<"  µÄ×ø±êx , y ºÍËùÊôÀà±ð£º" ;
  cin >> data.x >> data.y >> data.type;
}
}


void Distance()//¼ÆËãδ֪Àà±ðµãÓëËùÓÐÒÑÖªÀà±ðµãµÄ¾àÀë
{
for ( i = 1; i <= m; i++ )
  data.distance = sqrt  (  (data.x - point.x) * (data.x - point.x) + (data.y - point.y) * (data.y - point.y) );
}

void sort()//¶Ô¾àÀë½øÐдÓСµ½´óÅÅÐò
{
for( i = 1; i <= m; i++)
  for(j = m; j > i; j--)
  {
   if(data[ j ].distance  < data[ j - 1 ].distance)
   {
    temp=data[ j ];
    data[ j ]=data[ j - 1 ];
    data[ j - 1]=temp;
   }
  }
}

int kNN( )
{
int the_type,num = 0, k;
cout <<"ÇëÊäÈëkNNµÄkÖµ£º";
cin >> k;
for ( i = 1; i <= 99; i++)
  types[ i ] = 0;
for ( i = 1; i <= k; i++)//¶ÔÒÑÅÅÐòµÄǰkλ¾àÀëÀà±ð½øÐÐͳ¼Æ
  types[ data.type ] ++;
for ( i = 1; i <= 99; i++)//ÕÒ³öδ֪Àà±ðµãÊôÓÚµÄÀà±ð
{
  if (types > num )
  {
   num = types;
   the_type = i;
  }
}
return ( the_type);
}

int main()
{
input_data();
cout <<"ÇëÊäÈëδ֪Àà±ðµãµÄ×ø±êx,y£¨ÊäÈë0 0Í˳ö)£º";
cin >> point.x >> point.y;
do
{
  Distance();
  sort();
  cout <<"µã( " << point.x << " , " << point.y <<" )ÊôÓÚÀà"<<  kNN() << endl;
  cout <<"ÇëÊäÈëδ֪Àà±ðµãµÄ×ø±êx,y£¨ÊäÈë0 0Í˳ö)£º";
  cin >> point.x >> point.y;
}
while ( point.x != 0 && point.y != 0);
cout <<"======= kNN·ÖÀàËã·¨ Stephen Liu  E-mail:stephenliu1989@163.com   2010.8 ======= ";
system("pause";
return 0;
}


------------------------- Code end ---------------------------------

Î񵀮À¼Û£º

ÕâÊÇkNN·ÖÀàËã·¨µÄ×î¼òµ¥µÄÒ»ÖÖÇé¿ö£¬µ±kÈ¡²»Í¬ÖµÊ±·ÖÀà¿ÉÄÜ»á³öÏÖ²»Í¬¡£Ñù±¾¹ý´óʱ£¬ÓÉÓÚÒª±È½ÏµÄ´ÎÊýÔö¶à£¬Ð§ÂʽµµÍ¡£
»Ø¸´´ËÂ¥

» ÊÕ¼±¾ÌûµÄÌÔÌûר¼­ÍƼö

¡¾¼ÆËã»ú¹¤¾ßÈí¼þÓë¼¼ÇÉ¡¿×¨¼­ MLÏà¹Ø source

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

twmhillary

гæ (³õÈëÎÄ̳)


¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶,ÓÅÐãÍÆ¼ö

лл·ÖÏí£¡
ÇëÎÊ£¬knn·ÖÀàǰÐèÒª×öÕý̬»¯´¦ÀíÂð£¿Ð»Ð»£¡
7Â¥2012-04-13 16:22:29
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
²é¿´È«²¿ 10 ¸ö»Ø´ð

¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶,ÓÅÐãÍÆ¼ö

¡ï ¡ï ¡ï
ÓàÔó³É(½ð±Ò+3):Ò»Ìõ½¨ÒéÒ»·Ö£¡ 2010-09-05 17:07:32
£¨1£©floatËÆºõ²»¹»£¬¸Ädouble°É£¬±È½Ï·ÅÐÄ
£¨2£©Å·Ê½¾àÀ룬̫Âý¡£»»ÆäËûËã·¨°É£¬»òÕßÅ䱸¶àÖÖԤѡ
£¨3£©ÊäÈëÌ«Âé·³£¬¸ÄÎļþ¶ÁÈë°É¡£

°³10ÄêÇ°ÍækNNµÄʱºò£¬ÊǶÔÃÀ¹ú°©Ö¢Ñо¿ÔºNCIµÄÊý¾Ý¿âÖÐ2°ÙÍò¸ö·Ö×ӽṹ½øÐзÖÀࡣЧÂʰ¡......¸Õ·ÖºÃ£¬¾Í911ÁË¡£
2Â¥2010-09-05 11:27:26
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

stephenliu89

Òø³æ (СÓÐÃûÆø)


ÒýÓûØÌû:
Originally posted by yalefield at 2010-09-05 11:27:26:
£¨1£©floatËÆºõ²»¹»£¬¸Ädouble°É£¬±È½Ï·ÅÐÄ
£¨2£©Å·Ê½¾àÀ룬̫Âý¡£»»ÆäËûËã·¨°É£¬»òÕßÅ䱸¶àÖÖԤѡ
£¨3£©ÊäÈëÌ«Âé·³£¬¸ÄÎļþ¶ÁÈë°É¡£

°³10ÄêÇ°ÍækNNµÄʱºò£¬ÊǶÔÃÀ¹ú°©Ö¢Ñо¿ÔºNCIµÄÊý¾Ý¿âÖÐ2°ÙÍò¸ö·Ö×ӽṹ ...

ллǰ±²Ö¸µã£¬Õâ¸öÖ»ÊÇÎÒдµÄ´ÖÂÔËã·¨£¬ÕýÔڸĽøÖÐ
ÎÒÒ²²éÁ˲»ÉÙ¹ØÓÚkNN¸Ä½øËã·¨µÄÂÛÎÄ£¬µÈ¿¼ÍêÑÐÁËÔÙÈÏÕæ¿´¿´£¬×ܾõµÃ¾«Á¦Ì«ÓÐÏÞ~~~~(>_<~~~~ ¡£Ä£Ê½Ê¶±ðͦÓÐÒâ˼µÄ¹þ

[ Last edited by stephenliu89 on 2010-9-5 at 12:02 ]
3Â¥2010-09-05 12:00:14
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

stephenliu89

Òø³æ (СÓÐÃûÆø)


ÒýÓûØÌû:
Originally posted by stephenliu89 at 2010-09-05 11:15:37:
ÁÚ½üËã·¨
   


KNNËã·¨µÄ¾ö²ß¹ý³Ì



¡¡¡¡k-Nearest Neighbor algorithm

ÊÇK×îÁÚ½ü½áµãËã·¨£¨k-Nearest Neighbor ...

ÎÒÒ²²éÁ˲»ÉÙ¹ØÓÚkNN¸Ä½øËã·¨µÄÂÛÎÄ£¬µÈ¿¼ÍêÑÐÁËÔÙÈÏÕæ¿´¿´£¬×ܾõµÃ¾«Á¦Ì«ÓÐÏÞ~~~~(>_<~~~~ ¡£Ä£Ê½Ê¶±ðͦÓÐÒâ˼µÄ¹þ
4Â¥2010-09-05 12:01:46
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
¡î ÎÞÐǼ¶ ¡ï Ò»ÐǼ¶ ¡ï¡ï¡ï ÈýÐǼ¶ ¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 070300»¯Ñ§279Çóµ÷¼Á +6 ¹þ¹þ¹þ^_^ 2026-03-31 8/400 2026-03-31 09:06 by LZL-hynu
[¿¼ÑÐ] 085600²ÄÁÏÓ뻯¹¤329·ÖÇóµ÷¼Á +3 ÕâÊÇÓÐÌ«ÑôÍÛ 2026-03-25 3/150 2026-03-31 08:54 by fmesaito
[¿¼ÑÐ] ²ÄÁÏÓ뻯¹¤£¨0856£©304ÇóBÇøµ÷¼Á +6 Çñgl 2026-03-30 10/500 2026-03-31 07:43 by yishunmin
[¿¼ÑÐ] Ó¢Ò»ÊýÒ»408£¬×Ü·Ö284£¬¶þÕ½Õæ³ÏÇóµ÷¼Á +3 12.27 2026-03-30 5/250 2026-03-31 00:47 by ²»³Ôâ¹û17
[¿¼ÑÐ] Çóµ÷¼Á£¬Ò»Ö¾Ô¸ ÄϾ©º½¿Õº½Ìì´óѧ £¬080500²ÄÁÏ¿ÆÑ§Ó빤³Ìѧ˶£¬×Ü·Ö289·Ö +9 @taotao 2026-03-29 9/450 2026-03-30 22:29 by ÎÒÊÇС¿µ
[¿¼ÑÐ] 11408×Ü·Ö309£¬Ò»Ö¾Ô¸¶«ÄÏ´óѧÇóµ÷¼Á£¬²»Ìôרҵ +5 Ì츳´øµ½THU 2026-03-29 6/300 2026-03-30 20:49 by dick_runner
[¿¼ÑÐ] Ò»Ö¾Ô¸¹þ¶û±õ¹¤Òµ´óѧ²ÄÁÏÓ뻯¹¤·½Ïò336·Ö +12 ³½ãå5211314 2026-03-26 12/600 2026-03-30 19:28 by Wang200018
[¿¼ÑÐ] 26¿¼ÑÐ-291·Ö-ÏÃÃÅ´óѧ£¨085601£©-ÈáÐÔµç×ÓѧԺ²ÄÁϹ¤³ÌרҵÇóµ÷¼Á +5 min3 2026-03-24 6/300 2026-03-30 18:42 by 544594351
[¿¼ÑÐ] »¯Ñ§0703 µ÷¼Á 306·Ö Ò»Ö¾Ô¸211 +8 26ÒªÉϰ¶ 2026-03-28 8/400 2026-03-30 16:39 by herarysara
[¿¼ÑÐ] 298Çóµ÷¼Á +3 ʲôÊÇÅÖÍ·Óã 2026-03-30 5/250 2026-03-30 14:41 by ÇຣСÎ÷Å£
[¿¼ÑÐ] 324Çóµ÷¼Á +9 hanamiko 2026-03-26 11/550 2026-03-30 14:27 by JourneyLucky
[¿¼ÑÐ] 356Çóµ÷¼Á +4 gysy?s?a 2026-03-28 4/200 2026-03-29 10:32 by ÌÆãå¶ù
[¿¼ÑÐ] ѹ¹ú¼ÒÒ»ÇøÏߣ¬Çóµ¼Ê¦ÊÕÁô£¬Óж÷±ØÐ»£¡ +7 ÃÔÈ˵Ĺþ¹þ 2026-03-28 7/350 2026-03-28 16:47 by ´ß»¯´ó°×
[¿¼ÑÐ] 283Çóµ÷¼Á +3 A child 2026-03-28 3/150 2026-03-28 15:41 by ms629
[¿¼ÑÐ] 265Çóµ÷¼Á11408 +3 ÁõС¹lu 2026-03-27 3/150 2026-03-27 20:53 by nihaoar
[¿¼ÑÐ] 266Çóµ÷¼Á +11 ÑôÑôÍÛÈû 2026-03-27 12/600 2026-03-27 17:56 by yu221
[¿¼ÑÐ] 0856µ÷¼Á +5 ÇóÇóÈÃÎÒÓÐÊé¶Á° 2026-03-26 6/300 2026-03-27 15:12 by caszguilin
[¿¼ÑÐ] µ÷¼ÁÇóÊÕÁô +7 ¹ûÈ»ÓÐÎÒ 2026-03-26 7/350 2026-03-27 00:26 by wxiongid
[¿¼ÑÐ] 321Çóµ÷¼Á +6 Ymlll 2026-03-24 6/300 2026-03-26 20:50 by ²»³Ôô~µÄ؈
[¿¼ÑÐ] µ÷¼Á +4 èÖèÖyoyo 2026-03-26 4/200 2026-03-26 20:43 by fmesaito
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û