k近鄰算法是一種非常常見的機器學習算法,用于分類和回歸問題 。它的基本思想是利用已知的數據集,在新的數據點附近找到k個最近的鄰居,并將新的數據點分配給這些鄰居中最常見的類別或平均回歸值 。在本文中,我們將介紹如何用Python實現k近鄰算法,并在實際數據集上進行測試 。
1. 數據集的準備

在本文中,我們將使用Iris數據集,這是一個常用的分類數據集 。該數據集包含3個不同品種的鳶尾花,每個品種有50個樣本,共150個樣本 。每個樣本包含4個特征:花萼長度,花萼寬度,花瓣長度和花瓣寬度 。
我們將使用Python的Pandas庫來加載和處理數據 。以下是代碼:
```python
import pandas as pd
# 加載數據
data = https://www.ycpai.cn/python/pd.read_csv('iris.csv')
# 分離特征和標簽
X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values
```
2. 數據預處理
在使用k近鄰算法之前,我們需要對數據進行一些預處理,以確保它們的值在相似的范圍內 。這通常包括將數據標準化或歸一化 。
在本文中,我們將使用sklearn庫中的StandardScaler進行標準化 。以下是代碼:
```python
from sklearn.preprocessing import StandardScaler
# 標準化數據
scaler = StandardScaler()
X = scaler.fit_transform(X)
```
3. 訓練模型
現在,我們已經準備好使用k近鄰算法來訓練我們的模型了 。在Python的sklearn庫中,我們可以使用KNeighborsClassifier來實現 。
以下是代碼:
```python
from sklearn.neighbors import KNeighborsClassifier
# 創建k近鄰分類器對象
knn = KNeighborsClassifier(n_neighbors=5)
# 訓練模型
knn.fit(X, y)
```
在這里,我們創建了一個k近鄰分類器對象,并將k值設置為5 。然后,我們使用fit方法來訓練模型 。
4. 測試模型
現在,我們已經訓練好了我們的模型,可以用它來進行預測 。
以下是代碼:
```python
# 預測新數據點的標簽
new_data = https://www.ycpai.cn/python/[[5.1, 3.5, 1.4, 0.2], [6.2, 3.4, 5.4, 2.3]]
new_data = https://www.ycpai.cn/python/scaler.transform(new_data)
print(knn.predict(new_data))
```
在這里,我們創建了兩個新的數據點,并使用transform方法對它們進行了標準化 。然后,我們使用predict方法來預測它們的標簽 。
5. 模型評估
為了評估我們的模型的性能,我們可以使用sklearn庫中的一些度量標準 。這些度量標準包括準確率,召回率和F1分數等 。
以下是代碼:
```python
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# 預測測試數據集的標簽
y_pred = knn.predict(X_test)
# 計算準確率,召回率和F1分數
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='macro')
recall = recall_score(y_test, y_pred, average='macro')
【用python實現k近鄰算法的示例代碼】f1 = f1_score(y_test, y_pred, average='macro')
print('Accuracy:', accuracy)
print('Precision:', precision)
print('Recall:', recall)
print('F1 Score:', f1)
```
在這里,我們使用predict方法來預測測試數據集的標簽 。然后,我們使用accuracy_score,precision_score,recall_score和f1_score函數計算準確率,召回率和F1分數 。
猜你喜歡
- 教你利用Python玩轉histogram直方圖的五種方法
- 解決python線程卡死的問題
- Python基礎之進制和數據類型
- 我要當學霸如何使用
- 跳健康瘦身健美操真的有作用嗎?
- 避免重復用藥 請取藥時注意五點
- 我上學時候的檔案有什么用
- 在家用啞鈴練胸肌的動作有哪些呢?
- 炎炎夏季 4實用方防火
- 用腦也需講衛生
