機器學習 KNN

2022-07-20 17:24:15 字數 2406 閱讀 9309

1

import

numpy as np

2from sklearn.neighbors import

kneighborsclassifier

3from sklearn.model_selection import

train_test_split

4from sklearn.preprocessing import

standardscaler

5from sklearn.linear_model import

linearregression

6from sklearn.metrics import

r2_score

7from sklearn.datasets import

load_iris

8import

matplotlib.pyplot as plt

9import

pandas as pd

10import seaborn as sns

# 熵增益

# 熵越大,資訊量越大,蘊含的不確定性越大

knn

1.計算待**值到所有點的距離

2.對所有距離排序

3.找出前k個樣本裡面類別最多的類,作為待**值的類別

1 a = np.array([[1, 1], [1, 1.5], [0.5, 1.5]])

2 b = np.array([[3.0, 3.0], [3.0, 3.5], [2.8, 3.1]])34

5def

knn_pre_norm(point):

6 a_len = np.linalg.norm(point - a, axis=1)

7 b_len = np.linalg.norm(point - b, axis=1)

8print

(a_len.min())

9print

(b_len.min())

1011

12def

knn_predict_rev(point):

13 x = np.array([[1, 1], [1, 1.5], [0.5, 1.5], [3.0, 3.0], [3.0, 3.5], [2.8, 3.1]])

14 y = np.array([0, 0, 0, 1, 1, 1])

1516 knn = kneighborsclassifier(n_neighbors=2)

17knn.fit(x, y)

1819

print(knn.predict(np.array([[1.0, 3.0]])))

2021

22def

iris_linear():23#

載入iris資料

24 li =load_iris()25#

散點圖26

#plt.scatter(li.data[:, 0], li.data[:, 1], c=li.target)27#

plt.scatter(li.data[:, 2], li.data[:, 3], c=li.target)28#

plt.show()29#

分割測試集和訓練集,測試集佔整個資料集的比例是0.25

30 x_train, x_test, y_train, y_test = train_test_split(li.data, li.target, test_size=0.25)31#

建立knn分類,使用最少5個鄰居作為類別判斷標準

32 knn = kneighborsclassifier(n_neighbors=5)33#

訓練資料

34knn.fit(x_train, y_train)35#

**測試集36#

print(knn.predict(x_test))37#

**np.array([[6.3, 3, 5.2, 2.3]])

38print(knn.predict(np.array([[6.3, 3, 5.2, 2.3]])))39#

**np.array([[6.3, 3, 5.2, 2.3]])所屬各個類別的概率

40print(knn.predict_proba(np.array([[6.3, 3, 5.2, 2.3]])))

4142

43if

__name__ == '

__main__':

44#knn_predict_rev(none)45#

knn_pre_norm(np.array([2.3,2.3]))

46 iris_linear()

機器學習 KNN

posted on 2015 05 21 20 34 in ml 0 comment views 3195 原始碼 決策樹和基於規則的分類器都是積極學習方法 eager learner 的例子,因為一旦訓練資料可用,他們就開始學習從輸入屬性到類標號的對映模型。乙個相反的策略是推遲對訓練資料的建模,直...

機器學習 KNN

定義事件ejl j 0,1.k e j epsilon 0,1.k ejl j 0,1.k 為對於標籤 l,k個鄰居中包換j個這個標籤,則 e為乙個 k n 的矩陣,每一行為距離該例項的樣本中每個標籤的數量,則 c l 向量是e矩陣的最後一行,表示距離為k時的各個標籤數量。則我們需要的是在已知e矩陣...

機器學習 kNN

0.載入相關模組 import numpy as np import matplotlib.pyplot as plt import pandas as pd import seaborn as sns from sklearn.model selection import train test s...