使用sklearn中鸢尾花数据集实现KNN算法,得出数据结论,选两维数据实现数据可视化,实验做到交叉验证
时间: 2024-04-12 22:32:30 浏览: 151
可以使用sklearn库中的KNeighborsClassifier来实现KNN算法,并使用鸢尾花数据集进行训练和预测。以下是实现步骤:
```python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
# 加载鸢尾花数据集
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模型
knn = KNeighborsClassifier(n_neighbors=3)
# 训练模型
knn.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = knn.predict(X_test)
# 输出准确率
accuracy = knn.score(X_test, y_test)
print("Accuracy:", accuracy)
# 可视化部分数据
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('Iris Dataset')
plt.show()
```
上述代码中,首先导入需要的库和模块。然后使用`load_iris`函数加载鸢尾花数据集,并将特征数据和标签分别赋值给`X`和`y`。接着,使用`train_test_split`函数将数据集划分为训练集和测试集。然后创建KNN模型,并使用训练集进行训练。然后在测试集上进行预测,并计算准确率。最后,使用`matplotlib`库进行数据可视化,选择了花萼长度和花萼宽度这两个维度进行展示。
另外,如果你想实现交叉验证,可以使用`cross_val_score`函数来评估模型的性能,例如:
```python
from sklearn.model_selection import cross_val_score
# 进行k折交叉验证
scores = cross_val_score(knn, X, y, cv=5)
print("Cross-Validation Accuracy:", scores.mean())
```
这里使用5折交叉验证,输出交叉验证的准确率平均值。
希望以上代码能够帮助到你!如果有任何疑问,请随时提出。
阅读全文