1.ミキサーk-近隣アルゴリズム
7027 ワード
Google corapを利用して、「web」ブラウザでPythonプログラムを無料でテストして保存することができます.
https://colab.research.google.com/
実習k−最近隣接アルゴリズムを用いて2つの分類を実現する機械学習モデル
(マシンラーニングの作成、魚名の自動提示)
生鮮データソース:https://www.kaggle.com/aungpyaeap/fish-market単純な魚の長さが30 cmを超えると鯛!
そのため、機械学習は自分でドミノの骨牌の基準を制定して分類する.
scatter()関数を使用するには、マットアウトスリットパッケージをインポート(インポート)する
入力ドミノ骨牌値 m以上の値と氷魚の値 を入力します.
2つのリストを1つに追加
weight: [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0, 500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0, 685.0, 620.0, 680.0, 700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0, 955.0, 925.0, 975.0, 950.0, 6.7, 7.5, 7.0, 9.7, 9.8, 8.7, 10.0, 9.9, 9.8, 12.2, 13.4, 12.2, 19.7, 19.9]
「sikit-lean」(sckit-lean)を使用して、各プロパティのリストを下(2 Dリスト)に垂直にします.
HOW?
zip()関数とリストネスト構文を使用します.
zip:リストされた各リストから要素を取り出して返します.
for:zip関数を使用してlengthとweightリストから要素を1つずつ取り出し、lとwに割り当てる
これにより、[l,w]が要素からなるリストが作成されます.
正しいデータを作成します(マルチメートル=1、ビン魚=0)
WHY?
少なくともどの魚が鯛と魚なのかを教えるために、通常2営業日は1、0にしか区別されません.
K近隣アルゴリズムの使用
KNeighborsClassFiferインポート
fit()メソッドを使用して学習する
1:すべてのデータが当たった
0.5:半分しか合っていません
0:どうでもいい
じつよそく
predicate()メソッドは、新しいデータの正解を予測する
K近傍アルゴリズムは,新しいデータを予測する際に,最近の直線距離にどのようなデータがあるかを調べるだけである.
短所:データ量が多くてメモリが必要で、時間が長くて、大量のデータに適している fit X,y属性にはすべてのデータが含まれている
実はKNNは訓練していません
fit()メソッドは、伝達されたすべてのデータを保存します.新しいデータが表示されたら、最近のデータを参照して、多米か氷魚かを区別してください.
では、最近のいくつかのデータを参考にしてみましょうか.
既定値は5
49個(全部)を参考にしたら?不正確
ふごうかく
kn = KNeighborsClassifier()
kn.fit(fish_data, fish_target)
https://colab.research.google.com/
実習k−最近隣接アルゴリズムを用いて2つの分類を実現する機械学習モデル
(マシンラーニングの作成、魚名の自動提示)
生鮮データソース:https://www.kaggle.com/aungpyaeap/fish-market
if fish_length >=30;
print("도미")
しかし、30センチ以上の魚は鯛ばかりではない.クジラとかサメとかそのため、機械学習は自分でドミノの骨牌の基準を制定して分類する.
scatter()関数を使用するには、マットアウトスリットパッケージをインポート(インポート)する
入力
bream_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0,
31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0,
35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0]
bream_weight = [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0,
500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0, 685.0, 620.0, 680.0,
700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0, 955.0, 925.0, 975.0, 950.0]
import matplotlib.pyplot as plt #matplotlib의 pyplot함수를 줄여서 plt로 사용
plt.scatter(bream_length, bream_weight)
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
smelt_length = [9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12.0, 12.2, 12.4, 13.0, 14.3, 15.0]
smelt_weight = [6.7, 7.5, 7.0, 9.7, 9.8, 8.7, 10.0, 9.9, 9.8, 12.2, 13.4, 12.2, 19.7, 19.9]
plt.scatter(bream_length, bream_weight)
plt.scatter(smelt_length, smelt_weight)
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
2つのリストを1つに追加
length = bream_length + smelt_length
weight = bream_weight + smelt_weight
print("length:", length)
print("weight:", weight)
length: [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0, 31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0, 35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0, 9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12.0, 12.2, 12.4, 13.0, 14.3, 15.0]weight: [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0, 500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0, 685.0, 620.0, 680.0, 700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0, 955.0, 925.0, 975.0, 950.0, 6.7, 7.5, 7.0, 9.7, 9.8, 8.7, 10.0, 9.9, 9.8, 12.2, 13.4, 12.2, 19.7, 19.9]
「sikit-lean」(sckit-lean)を使用して、各プロパティのリストを下(2 Dリスト)に垂直にします.
HOW?
zip()関数とリストネスト構文を使用します.
zip:リストされた各リストから要素を取り出して返します.
for:zip関数を使用してlengthとweightリストから要素を1つずつ取り出し、lとwに割り当てる
これにより、[l,w]が要素からなるリストが作成されます.
fish_data = [[l, w] for l, w in zip(length, weight)]
print(fish_data)
[[25.4, 242.0], [26.3, 290.0], [26.5, 340.0], [29.0, 363.0], [29.0, 430.0], [29.7, 450.0], [29.7, 500.0], [30.0, 390.0], [30.0, 450.0], [30.7, 500.0], [31.0, 475.0], [31.0, 500.0], [31.5, 500.0], [32.0, 340.0], [32.0, 600.0], [32.0, 600.0], [33.0, 700.0], [33.0, 700.0], [33.5, 610.0], [33.5, 650.0], [34.0, 575.0], [34.0, 685.0], [34.5, 620.0], [35.0, 680.0], [35.0, 700.0], [35.0, 725.0], [35.0, 720.0], [36.0, 714.0], [36.0, 850.0], [37.0, 1000.0], [38.5, 920.0], [38.5, 955.0], [39.5, 925.0], [41.0, 975.0], [41.0, 950.0], [9.8, 6.7], [10.5, 7.5], [10.6, 7.0], [11.0, 9.7], [11.2, 9.8], [11.3, 8.7], [11.8, 10.0], [11.8, 9.9], [12.0, 9.8], [12.2, 12.2], [12.4, 13.4], [13.0, 12.2], [14.3, 19.7], [15.0, 19.9]]正しいデータを作成します(マルチメートル=1、ビン魚=0)
WHY?
少なくともどの魚が鯛と魚なのかを教えるために、通常2営業日は1、0にしか区別されません.
fish_target = [1]*35 + [0]*14
print(fish_target)
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]K近隣アルゴリズムの使用
KNeighborsClassFiferインポート
from sklearn.neighbors import KNeighborsClassifier
インポートしたKNeighborsClassifierクラスをオブジェクトとして作成kn = KNeighborsClassifier()
標準データと正しいデータの理解fit()メソッドを使用して学習する
kn.fit(fish_data, fish_target)
score()メソッドを使用して、学習が順調かどうかを検証します.1:すべてのデータが当たった
0.5:半分しか合っていません
0:どうでもいい
kn.score(fish_data, fish_target)
1.0
1.0、精度100%じつよそく
predicate()メソッドは、新しいデータの正解を予測する
kn.predict([[30,600]]
결과값 : array([1])
1は多メートルと定義され、緑の三角形は多メートルです!鳥肌K近傍アルゴリズムは,新しいデータを予測する際に,最近の直線距離にどのようなデータがあるかを調べるだけである.
短所:データ量が多くてメモリが必要で、時間が長くて、大量のデータに適している
print(kn._fit_X)
print(kn._y)
결과값 :
[[ 25.4 242. ]
[ 26.3 290. ]
[ 26.5 340. ]
[ 29. 363. ]
[ 29. 430. ]
[ 29.7 450. ]
[ 29.7 500. ]
[ 30. 390. ]
[ 30. 450. ]
[ 30.7 500. ]
[ 31. 475. ]
[ 31. 500. ]
[ 31.5 500. ]
[ 32. 340. ]
[ 32. 600. ]
[ 32. 600. ]
[ 33. 700. ]
[ 33. 700. ]
[ 33.5 610. ]
[ 33.5 650. ]
[ 34. 575. ]
[ 34. 685. ]
[ 34.5 620. ]
[ 35. 680. ]
[ 35. 700. ]
[ 35. 725. ]
[ 35. 720. ]
[ 36. 714. ]
[ 36. 850. ]
[ 37. 1000. ]
[ 38.5 920. ]
[ 38.5 955. ]
[ 39.5 925. ]
[ 41. 975. ]
[ 41. 950. ]
[ 9.8 6.7]
[ 10.5 7.5]
[ 10.6 7. ]
[ 11. 9.7]
[ 11.2 9.8]
[ 11.3 8.7]
[ 11.8 10. ]
[ 11.8 9.9]
[ 12. 9.8]
[ 12.2 12.2]
[ 12.4 13.4]
[ 13. 12.2]
[ 14.3 19.7]
[ 15. 19.9]]
[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0]
つまり.実はKNNは訓練していません
fit()メソッドは、伝達されたすべてのデータを保存します.新しいデータが表示されたら、最近のデータを参照して、多米か氷魚かを区別してください.
では、最近のいくつかのデータを参考にしてみましょうか.
既定値は5
49個(全部)を参考にしたら?不正確
kn49 = KNeighborsClassifier(n_neighbors=49)
kn49.fit(fish_data, fish_target)
kn49.score(fish_data, fish_target)
결과값 : 0.7142857142857143 << 35/49확률임
では、デフォルト値がどれくらいの場合、1以下に下がるのでしょうか.ふごうかく
kn = KNeighborsClassifier()
kn.fit(fish_data, fish_target)
for n in range(5,50):
kn.n_neighbors = n
score = kn.score(fish_data, fish_target)
if score < 1:
print(n,score)
break
결과 : 18 0.9795918367346939
つまり、18から1以下に下がり、17の精度は1!Reference
この問題について(1.ミキサーk-近隣アルゴリズム), 我々は、より多くの情報をここで見つけました https://velog.io/@kmgt100/1.-혼공머신-k-최근접-이웃-알고리즘テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol