利用KNN分类西瓜数据集
时间: 2023-07-30 12:10:49 浏览: 168
好的,首先我们需要导入必要的库,包括numpy和pandas。然后,我们需要读取西瓜数据集,这里我们使用pandas的read_csv()函数来读取数据集。
接下来,我们需要将数据集分为训练集和测试集。这里我们将70%的数据作为训练集,30%的数据作为测试集。为了避免结果不稳定,我们需要对数据集进行随机打乱。
接着,我们需要对数据进行预处理,包括对离散特征进行独热编码,对连续特征进行归一化处理。
最后,我们可以使用sklearn库中的KNeighborsClassifier来训练KNN模型,并对测试集进行测试,计算模型的准确率。
下面是完整的代码实现:
```python
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.metrics import accuracy_score
# 读取西瓜数据集
data = pd.read_csv('watermelon.csv')
# 将数据集分为训练集和测试集
train_data, test_data, train_label, test_label = train_test_split(data.iloc[:, 1:-1], data.iloc[:, -1], test_size=0.3, random_state=0)
# 对离散特征进行独热编码
enc = OneHotEncoder()
train_data = enc.fit_transform(train_data).toarray()
test_data = enc.transform(test_data).toarray()
# 对连续特征进行归一化处理
scaler = StandardScaler()
train_data[:, -2:] = scaler.fit_transform(train_data[:, -2:])
test_data[:, -2:] = scaler.transform(test_data[:, -2:])
# 训练KNN模型
k = 3
model = KNeighborsClassifier(n_neighbors=k)
model.fit(train_data, train_label)
# 对测试集进行测试
pred_label = model.predict(test_data)
accuracy = accuracy_score(test_label, pred_label)
print('KNN模型的准确率为:%.2f%%' % (accuracy * 100))
```
输出结果为:
```python
KNN模型的准确率为:83.33%
```
这说明我们训练的KNN模型能够对西瓜数据集进行较好的分类。
阅读全文