写一个python代码实现利⽤KNN算法构建模型,根据鸢尾花的花萼和花瓣⼤⼩,区分鸢尾花的品种。实现⼀个基础的三分类问题。Iris 鸢尾花数据集内包含 3 种类别,分别为⼭鸢尾(Iris-setosa)、变⾊鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica)。数据集共 150 条记录,每类各 50 个数据,每条记录有花萼长度、花萼宽度、花瓣长度、花瓣宽度4项特征,通过这4个特征预测鸢尾花卉属于哪⼀品种。iris数据集包含在sklearn库当中,具体在sklearn\datasets\data⽂件夹下,⽂件名为iris.csv。打开iris.csv,数据格式如下:第⼀⾏数据意义为: 150:数据集中数据的总条数 4:特征值的类别数,即花萼长度、花萼宽度、花瓣长度、花瓣宽度。 setosa、versicolor、virginica:三种鸢尾花名 从第⼆⾏及以下数据的意义为: 第⼀列为花萼长度值 第⼆列为花萼宽度值 第三列为花瓣长度值 第四列为花瓣宽度值 第五列对应是种类(三类鸢尾花分别⽤0,1,2表⽰)
时间: 2024-02-09 14:10:22 浏览: 150
好的,以下是实现代码:
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
# 读取数据集
iris = pd.read_csv('sklearn/datasets/data/iris.csv')
# 分离出特征和标签
X = iris.iloc[:, :-1]
y = iris.iloc[:, -1]
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 建立KNN模型
knn = KNeighborsClassifier(n_neighbors=3)
# 训练模型
knn.fit(X_train, y_train)
# 预测测试集
y_pred = knn.predict(X_test)
# 计算准确率
acc = accuracy_score(y_test, y_pred)
print('Accuracy:', acc)
# 计算混淆矩阵
cm = confusion_matrix(y_test, y_pred)
print('Confusion Matrix:\n', cm)
```
其中,首先使用pandas库读取iris.csv文件,分离出特征和标签。然后,使用train_test_split函数将数据集分为训练集和测试集。接着,建立KNN模型并训练模型。最后,预测测试集并计算准确率和混淆矩阵,从而评估模型的分类效果。
阅读全文