1import
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...