knn算法python代码实例
时间: 2023-10-11 08:11:59 浏览: 90
以下是一个KNN算法的Python代码实例:
```
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# 构建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)
# 训练模型
knn.fit(X_train, y_train)
# 预测
y_pred = knn.predict(X_test)
# 输出准确率
print("Accuracy:", knn.score(X_test, y_test))
```
以上代码使用了scikit-learn库中的KNeighborsClassifier类来构建KNN分类器,并使用load_iris函数加载了鸢尾花数据集。代码将数据集分为训练集和测试集,并使用fit方法训练模型。最后,使用predict方法进行预测,并输出分类器的准确率。
相关问题
knn算法python代码
以下是一个简单的 KNN 算法的 Python 实现,假设你已经有了包含训练数据和测试数据的 numpy 数组 X_train, y_train, X_test:
```python
import numpy as np
def euclidean_distance(x1, x2):
return np.sqrt(np.sum((x1 - x2)**2))
class KNN:
def __init__(self, k=3):
self.k = k
def fit(self, X, y):
self.X_train = X
self.y_train = y
def predict(self, X):
y_pred = [self._predict(x) for x in X]
return np.array(y_pred)
def _predict(self, x):
distances = [euclidean_distance(x, x_train) for x_train in self.X_train]
k_idx = np.argsort(distances)[:self.k]
k_nearest_labels = [self.y_train[i] for i in k_idx]
most_common = Counter(k_nearest_labels).most_common(1)
return most_common[0][0]
```
该算法首先定义了一个计算欧几里得距离的函数 `euclidean_distance`。接着定义了一个 KNN 类,包括初始化方法 `__init__` 和三个方法:`fit`、`predict` 和 `_predict`。
`__init__` 方法用于初始化 KNN 实例,需要传入一个参数 k,表示使用多少个最近邻来进行分类。
`fit` 方法用于训练模型,需要传入训练数据 X 和标签 y。
`predict` 方法用于预测测试数据 X 的标签,返回一个 numpy 数组。
`_predict` 方法是一个私有方法,用于计算单个测试样本 x 的预测标签。它计算测试样本 x 与每个训练样本之间的距离,找到距离最近的 k 个训练样本,并统计它们的标签出现次数,取出现次数最多的标签作为预测标签。
在实际使用时,你需要先实例化 KNN 类,并调用 fit 方法进行训练,然后调用 predict 方法进行预测,如下所示:
```python
from collections import Counter
knn = KNN(k=3)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
```
其中,X_train 和 y_train 是训练数据和标签,X_test 是测试数据,y_pred 是预测的标签。
使用鸢尾花数据集来做knn的python代码实例
当然可以。使用Python的scikit-learn库进行KNN(K-Nearest Neighbors,最近邻算法)分类,以Iris(鸢尾花)数据集为例,首先需要导入所需的库并加载数据,然后训练模型、进行预测和评估性能。这是一个基本的步骤:
```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 = 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)
# 进行预测
y_pred = knn.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
#
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)