使用knn算法对下面数据进行二分类(2,3)(5,7)(9,6)(4,5)(6,4)(7,2)
时间: 2023-12-02 12:04:10 浏览: 20
好的,现在我们有了数据集,下面就可以使用knn算法对其进行二分类了。首先,我们需要将数据集中的每个样本点表示为特征向量,这里每个样本点有两个特征,因此可以表示为二维向量。接下来,我们需要将数据集划分为训练集和测试集,通常将70%~80%的数据作为训练集,剩余的作为测试集。在这里,我们将数据集划分为训练集和测试集,代码如下:
```python
import numpy as np
# 定义数据集
X = np.array([[2, 3], [5, 7], [9, 6], [4, 5], [6, 4], [7, 2]])
y = np.array([0, 1, 1, 0, 1, 0]) # 0表示负样本,1表示正样本
# 划分训练集和测试集
train_X = X[:4]
train_y = y[:4]
test_X = X[4:]
test_y = y[4:]
```
接下来,我们需要对训练集中的样本点进行knn分类,对于测试集中的每个样本点,我们需要计算其与训练集中每个样本点之间的距离,并选择距离最近的k个样本点进行分类。这里我们使用欧氏距离来计算样本点之间的距离,代码如下:
```python
# 定义knn分类函数
def knn(X_train, y_train, x_test, k):
# 计算测试样本点与每个训练样本点之间的距离
distances = np.sqrt(np.sum((X_train - x_test) ** 2, axis=1))
# 选择距离最近的k个样本点
nearest = np.argsort(distances)[:k]
# 统计k个样本点中出现次数最多的类别
count = np.bincount(y_train[nearest])
return np.argmax(count)
# 对测试集中的样本点进行knn分类
k = 3
for i in range(len(test_X)):
pred = knn(train_X, train_y, test_X[i], k)
print("测试样本点 {} 的预测类别为:{}".format(test_X[i], pred))
```
输出结果为:
```
测试样本点 [6 4] 的预测类别为:1
测试样本点 [7 2] 的预测类别为:0
```
因此,我们使用knn算法对数据集进行了二分类,其中第一个测试样本点被预测为正样本,第二个测试样本点被预测为负样本。