利用sklearn实现KNN模型,并找到最优的k值
时间: 2024-05-05 20:15:26 浏览: 79
以下是一个利用sklearn实现KNN模型,并找到最优k值的示例代码:
```python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# 加载数据集
iris = load_iris()
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=42)
# 定义k值列表
k_list = list(range(1, 31))
# 定义最优的k值和最高的准确率
best_k = 0
best_score = 0
# 循环测试不同的k值
for k in k_list:
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
score = accuracy_score(y_test, y_pred)
if score > best_score:
best_k = k
best_score = score
# 输出最优的k值和最高的准确率
print("Best k:", best_k)
print("Best score:", best_score)
```
在这个示例中,我们使用了sklearn的iris数据集,并将其划分为训练集和测试集。然后,我们定义了一个k值列表,从1到30。在循环中,我们使用不同的k值来训练KNN模型,并在测试集上计算准确率。如果该准确率高于之前的最高准确率,则更新最优k值和最高准确率。最后,我们输出最优k值和最高准确率。
注意,这个示例代码只是为了演示如何使用sklearn实现KNN模型,并找到最优k值。在实际应用中,我们可能需要使用交叉验证等更加严谨的方法来选择最优的k值。
阅读全文