头哥机器学习之knn算法实验报告
时间: 2025-04-30 10:36:24 浏览: 35
### 关于KNN算法的机器学习实验报告
#### kNN算法概述
kNN(k-Nearest Neighbor)是一种基于实例的学习方法,广泛应用于分类和回归问题。该算法通过计算待测样本与已知样本之间的距离,选取离得最近的k个邻居,并根据这些邻居的信息来进行决策[^2]。
#### 实验目的
本实验旨在深入探讨kNN算法的工作机制及其在实际场景下的表现情况。通过对具体案例的研究,验证其有效性并总结经验教训。
#### 数据准备
为了更好地展示kNN的应用效果,在此选择了经典的鸢尾花数据集作为研究对象。该数据集中包含了三种不同类型的鸢尾花卉共150条记录,每种类型各有50条记录。特征变量包括萼片长度、宽度以及花瓣长度、宽度四个维度的数据[^5]。
```python
from sklearn import datasets
import pandas as pd
iris = datasets.load_iris()
df = pd.DataFrame(data= np.c_[iris['data'], iris['target']],
columns= iris['feature_names'] + ['target'])
print(df.head())
```
#### 数据预处理
考虑到原始数据可能存在量纲差异等问题影响最终结果准确性,因此先对其进行标准化转换,使得各个属性之间具有可比性;接着按照一定比例随机分割成训练集合测试集两部分以便后续操作使用。
```python
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
X = df.iloc[:, :-1].values
y = df.iloc[:, -1].values
scaler = StandardScaler().fit(X)
X_scaled = scaler.transform(X)
X_train, X_test, y_train, y_test = train_test_split(
X_scaled, y, test_size=0.3, random_state=42)
```
#### 构建模型
采用sklearn库提供的`KNeighborsClassifier`类快速搭建起一个简单的kNN分类器,默认参数设置下即可完成基本功能构建工作。
```python
from sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier(n_neighbors=3)
classifier.fit(X_train, y_train)
```
#### 结果评估
利用之前预留出来的测试样本来检验所建立起来的模型的好坏程度,通常会借助混淆矩阵等工具直观呈现出来各类别的预测精度指标信息。
```python
from sklearn.metrics import classification_report, confusion_matrix
y_pred = classifier.predict(X_test)
cm = confusion_matrix(y_test, y_pred)
cr = classification_report(y_test, y_pred)
print(cm)
print(cr)
```
#### 参数调优
为进一步提升模型的表现力,可以通过调整超参的方式寻找更佳配置方案。这里引入了网格搜索法(Grid Search),它能自动遍历指定范围内所有可能组合从而找到最优解之一。
```python
from sklearn.model_selection import GridSearchCV
param_grid = {'n_neighbors': range(1, 11)}
grid_search = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5)
grid_search.fit(X_train, y_train)
best_knn = grid_search.best_estimator_
print(f'Best parameters found: {grid_search.best_params_}')
```
阅读全文
相关推荐


















