用knn算法找最优值手写代码
时间: 2024-09-28 19:15:18 浏览: 33
Python代码实现KNN算法
KNN (K-Nearest Neighbors) 算法是一种基于实例的学习方法,在找最优值时,通常用于分类任务。它不需要训练过程,而是通过计算新样本与已知数据集中每个样本的距离,并找出与其最近的K个邻居来进行预测。
下面是一个简单的Python手写代码示例,使用sklearn库实现KNN分类:
```python
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import numpy as np
# 加载 iris 数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建 KNN 分类器,比如选择 k=3
knn = KNeighborsClassifier(n_neighbors=3)
# 使用训练数据拟合模型
knn.fit(X_train, y_train)
# 预测测试集的类别
predictions = knn.predict(X_test)
# 找到最优的k值通常需要交叉验证
best_k = 1 # 假设初始化为1,实际可以尝试不同的k值
best_score = 0
for k in range(1, 21): # 这里假设我们测试了1到20的k值
knn_temp = KNeighborsClassifier(n_neighbors=k)
knn_temp.fit(X_train, y_train)
score = knn_temp.score(X_test, y_test)
if score > best_score:
best_score = score
best_k = k
print(f"最优的k值是 {best_k},对应的准确率是 {best_score}")
阅读全文