KNNアルゴリズム紹介|沙湖王


KNNアルゴリズム紹介|沙湖王
KNNアルゴリズム紹介|沙湖王
KNNアルゴリズムの紹介
作者:rickey日付:2012年8月14日
コメントを発表(0)
コメントの表示
KNNアルゴリズムは机械の学习の中で比较的に简単な1つの分类アルゴリズムで、全体の思想は比较的に简単です:1つの点Aとその他のすべての点の间の距离を计算して、この点に最も近いkつの点を取り出して、それからこのkつの点の中で属する分类の割合が最も大きいことを统计して、点Aはこの分类に属します.これでは少しぼんやりしているかもしれませんが、次の例で説明します.
 
 
 
良い本の推薦
 
 
公衆ブーム:インターネット津波
(美)チャレン・リー(平装-...
¥ 35.70
ビッグデータ技術叢書:新しい機械の魂
キデル(Tracy Kidd...
¥ 33.80
リーン創業:新創企業の成長思考
エリック・ライス(Eric Ri...
¥ 35.28
未来は濡れている:無組織な組織力(インターネット界の誰もが必読)
クレイ・シャーキー(平装-M...
¥ 28.26
1 2 3 4 5 >
プライバシー
 
 
Widgetの取得
 
Amazon.cn Widgets
 
映画のタイトル
戦闘回数
キス回数
映画の種類
California Man 
 
3
104
Romance
He’s Not Really into Dudes 
 
2
100
Romance
Beautiful Woman 
 
1
81
Romance
Kevin Longblade 
 
101
10
Action
Robo Slayer 3000 
 
99
5
Action
Amped II 
 
98
2
Action
不明
18
90
Unknown
このデータの意味を簡単に言えば、ここでは戦闘回数とキス回数で映画のタイプを定義し、上述のようにキスが多いのはRomanceタイプで、戦闘が多いのはアクション映画です.名前が分からない(名前が分からないのは名前から映画のタイプが推測されないようにするため)、戦闘回数が18回、キス回数が90回の映画もありますが、いったいどんなタイプの映画なのでしょうか.
KNNアルゴリズムでは,まず戦闘回数とキス回数を映画の座標とし,他の6本の映画と未知の映画との間の距離を計算し,前K個の距離が最も近い映画を取得し,その後,このk個の距離が最も近い映画のうち,どのタイプの映画が最も多く,例えばActionが最も多く,未知のこの映画がアクション映画タイプに属するかを統計する.
実際の使用では、K値の選択は、どれくらいが適切なのか、いくつかの問題に注意してください.両者の距離を計算するには、どの距離がいいですか(ユークリッド距離などいくつありますか)?計算量が大きすぎたらどうしますか?仮にサンプルの中でタイプ分布が非常に不均一で、例えばActionの映画は200本あるが、Romanceの映画は20本しかないと計算すると、Actionの映画でなくても、Actionのサンプルが多すぎるため、k人の最近の隣人にActionの映画が少なくないとしたら、どうすればいいのだろうか.
万能なアルゴリズムはなく、一定の使用環境で最適なアルゴリズムしかないので、アルゴリズムを適切に利用することを理解しなければならない.
アルゴリズムを紹介するだけでは、実現していなくても意味がありません.私はここでscikit-learnというPythonの機械学習パッケージを使っています.ドキュメントがとても上手だと思います.ドキュメントが上手なオープンソースソフトウェアには愛がありますね.簡単なコードは次のとおりです.
 
 
1
2
3
4
5
6
7 import numpy as np from sklearn import neighbors knn = neighbors.KNeighborsClassifier() # knn data = np.array([[ 3 , 104 ],[ 2 , 100 ],[ 1 , 81 ],[ 101 , 10 ],[ 99 , 5 ],[ 98 , 2 ]]) labels = np.array([ 1 , 1 , 1 , 2 , 2 , 2 ]) knn.fit(data,labels) # ,data , labels Romance Action, knn.predict([ 18 , 90 ])
上のコードはここで簡単に説明します.
まず、私はlabels配列の1と2でRomanceとAcitonを表します.sklearnは文字配列をフラグとして受け入れないので、1,2のようなint型データでしか表現できません.後の処理では1と2をRomanceとActionにマッピングすることができます.
fitはdataとlabelsで訓練され,dataは戦闘回数とキス回数からなるベクトルに対応し,特徴ベクトルと呼ぶ.Labelsは、このデータが表す映画が属するタイプです.
predictは予測を行い,未知映画の特徴ベクトルを代入すると,その未知映画が属するタイプを解析できる.ここでの結果は1であり,この未知の映画はRomanceに属する.
 
posted on
2012-12-13 12:58 lexus読書(
...) コメント(
...) コレクションの編集
転載先:https://www.cnblogs.com/lexus/archive/2012/12/13/2816115.html