knn算法回归python实现例子
时间: 2024-09-19 12:18:06 浏览: 68
KNN (K-Nearest Neighbors) 算法是一种基于实例的学习方法,用于回归分析时,它通过寻找训练集中最接近新数据点的邻居来预测结果。在Python中,我们可以使用sklearn库中的KNeighborsRegressor来实现。
以下是一个简单的KNN回归的例子:
```python
# 导入所需的库
from sklearn.neighbors import KNeighborsRegressor
import numpy as np
# 假设我们有一个二维的训练数据集(x,y)
# x是特征,y是目标变量
X_train = [[1, 1], [1, 2], [2, 2], [2, 3]]
y_train = [1, 2, 3, 4]
# 创建并训练模型
knn_model = KNeighborsRegressor(n_neighbors=3)
knn_model.fit(X_train, y_train)
# 使用模型进行预测
new_data = [[3, 3]] # 新的数据点
prediction = knn_model.predict(new_data)
print("预测值:", prediction)
#
相关问题
knn算法python实现例子 混淆矩阵
K-Nearest Neighbors (KNN) 算法是一种基于实例的学习方法,用于分类和回归。在Python中,我们可以使用sklearn库中的KNeighborsClassifier来实现KNN分类器。以下是一个简单的KNN算法的Python实现例子:
```python
# 导入必要的库
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import confusion_matrix, accuracy_score
# 加载数据集(这里以iris数据集为例)
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 数据预处理(标准化数据)
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, 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)
# 计算混淆矩阵
conf_mat = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:\n", conf_mat)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy*100}%")
```
在这个例子中,我们首先加载了Iris数据集,然后划分了数据为训练集和测试集。接着,我们创建了一个KNN分类器,并使用训练数据对其进行训练。然后对测试集进行预测,并用混淆矩阵来评估模型性能,最后计算出模型的准确率。
python实现knn算法
KNN算法是一种基本的分类与回归算法,是一种基于实例的学习方法。下面是用Python实现KNN算法的示例代码:
```python
import numpy as np
from collections import Counter
class KNN:
def __init__(self, k):
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 = [np.sqrt(np.sum((x - x_train) ** 2)) for x_train in self.X_train]
# 获得k个最近邻的标签
k_idx = np.argsort(distances)[:self.k]
k_labels = [self.y_train[i] for i in k_idx]
# 投票
most_common = Counter(k_labels).most_common(1)
return most_common[0][0]
```
上面的代码实现了一个KNN类,包括fit方法和predict方法。其中,fit方法用于训练模型,传入训练集的特征X和标签y;predict方法用于预测测试集的标签。在_predict方法中,首先计算测试样本和每个训练样本之间的距离,然后选取距离最近的k个训练样本,统计它们的标签,最后返回出现次数最多的标签作为预测结果。
使用示例:
```python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
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.2, random_state=42)
# 创建KNN对象
knn = KNN(k=3)
# 训练模型
knn.fit(X_train, y_train)
# 预测测试集
y_pred = knn.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
```
上面的代码使用sklearn库中的iris数据集作为例子,将数据集分为训练集和测试集,创建KNN对象,训练模型,预测测试集,并计算准确率。
阅读全文