對有標籤的資料進行分類。計算所有樣本和x的距離,得到距離最近的k(k為超引數)個樣本點,哪種類別佔據多數,x就被劃分為哪一類。
k值一般選擇為奇數,方便進行多數類別的統計。
歐式距離(euclidean distance):
2]# 只選擇花萼長,花萼寬兩個特徵 繪製三種鳶尾花
# plt.figure(figsize=(16,5))
# ax = plt.subplot(122)
# ax1 = plt.subplot(121)
# ax1.scatter(iris.data[:50,0], iris.data[:50,1], alpha=.6, label='0')
# ax1.scatter(iris.data[50:100,0], iris.data[50:100,1], alpha=.6, label='1')
# ax1.scatter(iris.data[100:150,0], iris.data[100:150,1], alpha=.6, label='1')
# ax1.set_xlabel('sepal length(cm)')
# ax1.set_ylabel('sepal width(cm)')
# ax1.legend();
# 只選擇花瓣長,花瓣寬兩個特徵 繪製三種鳶尾花
# 匯入資料
> iris = datasets.load_iris(
)> x_train, x_test, y_train, y_test = train_test_split(
iris.data, iris.target, test_size=
0.3, random_state=42)
>
print
('feature:\n'
, x_train[:5
])>
print
('target:\n'
, y_train[:10
])feature:[[
5.52.4
3.71.]
[6.3
2.85.1
1.5]
[6.4
3.15.5
1.8]
[6.63.
4.41.4][
7.23.6
6.12.5]]
target:[1
2212
1210
2]> neigh = kneighborsclassifier(n_neighbors=5)
> neigh.fit(x_train, y_train)
kneighborsclassifier(algorithm=
'auto'
, leaf_size=
30, metric=
'minkowski'
, metric_params=
none
, n_jobs=
none
, n_neighbors=
5, p=2,
weights=
'uniform'
)# 對測試集進行**
> neigh.predict(x_test)
array([1
,0,2
,1,1
,0,1
,2,1
,1,2
,0,0
,0,0
,1,2
,1,1
,2,0
,2,0
,2,2
,2,2
,2,0
,0,0
,0,1
,0,0
,2,1
,0,0
,0,2
,1,1
,0,0
])# 測試集的準確率
> neigh.score(x_test, y_test)
1.0
機器學習 KNN最近鄰演算法
k近鄰 k nearest neighbor,knn 可以做分類,也可以做回歸。一 基本思想 給定一組訓練集,有乙個需要判斷類別的輸入例項,離輸入例項最近的k個訓練資料屬於哪個類別,就判斷輸入例項屬於哪個類別。二 分類演算法描述 1 計算輸入例項和所有訓練集資料的距離 2 按距離公升序排序 3 選擇...
有監督學習
利用一組帶有標籤的資料,學習從輸入到輸出的對映,然後將這種對映關係應用到未知資料上,達到分類或回歸的目的。分類 當輸出為離散的,學習任務為分類任務。回歸 當輸出為連續的,學習任務為回歸任務。訓練集 用來訓練的已標註的資料,用來建立模型,發現規律。測試集 已標註的資料,通常隱藏標記,輸送給以訓練的模型...
有監督學習 無監督學習與半監督學習
這個問題可以回答得很簡單 是否有監督 supervised 就看輸入資料是否有標籤 label 輸入資料有標籤,則為有監督學習,沒標籤則為無監督學習。但根據知乎慣例,答案還是要繼續擴充套件的。首先看什麼是學習 learning 乙個成語就可概括 舉一反三。此處以高考為例,高考的題目在上考場前我們未必...