鸢尾花数据集用knn分类怎么可视化
-
鸢尾花数据集是一个经典的机器学习数据集,其中包含了三个不同品种的鸢尾花的特征数据,主要用于分类问题。K近邻(K-nearest neighbors,简称KNN)是一种常用的分类算法,它基于找到离待分类样本最近的K个训练样本来进行预测。下面我将介绍如何使用KNN算法对鸢尾花数据集进行分类,并通过可视化展示分类结果。
首先,我们需要导入必要的库和数据集,并对数据进行预处理。然后,我们将数据集分为训练集和测试集,并使用KNN算法进行模型训练和预测。最后,我们将利用可视化工具展示分类结果。
# 导入必要的库 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score from matplotlib.colors import ListedColormap # 导入鸢尾花数据集 iris = load_iris() X = iris.data y = iris.target # 数据标准化 scaler = StandardScaler() X = scaler.fit_transform(X) # 分割数据集为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 使用KNN算法进行模型训练和预测 knn = KNeighborsClassifier(n_neighbors=3) knn.fit(X_train, y_train) y_pred = knn.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print('KNN模型在测试集上的准确率为:', accuracy) # 可视化分类结果 h = .02 # 网格中的步长 x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1 y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1 xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) # 可视化训练集数据点 plt.figure() cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF']) cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF']) Z = knn.predict(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) plt.pcolormesh(xx, yy, Z, cmap=cmap_light) # 绘制训练集数据点 plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cmap_bold, edgecolor='k', s=20) plt.xlim(xx.min(), xx.max()) plt.ylim(yy.min(), yy.max()) plt.title("3-Class classification (k = 3)") plt.show()通过上述代码,我们使用KNN算法对鸢尾花数据集进行分类,并将结果可视化展示出来。在可视化中,我们绘制了数据点的分布以及分类的边界,帮助我们直观地了解分类结果。希望这对你有所帮助。
1年前 -
鸢尾花数据集是机器学习领域中常用的分类数据集之一,包含了150个样本,分为3类,每类50个样本。每个样本包含四个特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度。在这个数据集上使用K近邻(K-Nearest Neighbors,KNN)算法进行分类,可以通过可视化来观察数据集的分布和KNN分类的结果。
以下是如何可视化鸢尾花数据集在KNN分类中的步骤:
-
数据集加载与探索:
首先,加载鸢尾花数据集,并查看数据集的基本信息、统计特征和类别分布,确保数据集的完整性和正确性。可以使用Python中的Scikit-learn库来加载鸢尾花数据集。 -
数据预处理:
对数据集进行预处理,包括数据标准化、分割训练集和测试集等操作。在KNN算法中,通常使用数据标准化来确保各个特征的取值范围一致。 -
模型训练:
使用KNN算法对数据集进行训练,选择合适的K值,并进行模型评估。可以通过交叉验证等方法来选择最优的K值。 -
可视化数据集分布:
使用散点图或者分布图来可视化鸢尾花数据集的样本分布情况。将花萼长度和花萼宽度作为坐标轴,不同类别的样本用不同颜色或符号表示,可以更直观地观察数据点的分布情况。 -
可视化分类结果:
在训练好的KNN模型基础上,利用网格方法生成预测的决策边界,并用不同颜色或阴影表示不同类别的分类区域。这样可以清晰地展示KNN在鸢尾花数据集上的分类效果。
通过以上步骤,我们可以将鸢尾花数据集在KNN分类中的过程可视化出来,直观地理解数据集的特征分布以及KNN分类的效果。这样的可视化有助于对算法结果的理解和分析。
1年前 -
-
如何用KNN对鸢尾花数据集进行分类并进行可视化
1. 导入必要的库
为了完成本文的任务,首先需要导入一些必要的Python库,包括
numpy、pandas、sklearn和matplotlib。import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.datasets import load_iris import matplotlib.pyplot as plt2. 加载数据集并拆分数据
在本例中,我们将使用scikit-learn中内置的鸢尾花数据集
load_iris()。我们首先加载数据集并将其转换为DataFrame格式,然后将数据集划分为训练集和测试集。# 加载鸢尾花数据集 iris = load_iris() X = iris.data y = iris.target # 将数据集转为DataFrame格式 iris_df = pd.DataFrame(X, columns=iris.feature_names) iris_df['target'] = y # 拆分数据集为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)3. 训练KNN模型并进行预测
接下来,我们将使用KNN算法训练模型,并用训练好的模型对测试集进行预测。
# 创建KNN分类器 knn = KNeighborsClassifier(n_neighbors=3) knn.fit(X_train, y_train) # 预测测试集 y_pred = knn.predict(X_test)4. 可视化KNN分类结果
为了更好地展示KNN分类结果,我们将对数据集中的两个特征进行两两组合,然后绘制出对应的散点图,并用不同颜色表示不同类别。
# 选择两个特征进行可视化 feature1 = 0 # 修改此处即可选择不同的特征 feature2 = 1 # 修改此处即可选择不同的特征 plt.figure(figsize=(8, 6)) # 绘制训练集的散点图 for label in np.unique(y_train): plt.scatter(X_train[y_train == label, feature1], X_train[y_train == label, feature2], label=f'Class {label}', marker='o') # 绘制测试集的散点图 for label in np.unique(y_test): plt.scatter(X_test[y_test == label, feature1], X_test[y_test == label, feature2], label=f'Test {label}', marker='x') # 创建网格以便更清楚地看到决策边界 x_min, x_max = X[:, feature1].min() - 0.1, X[:, feature1].max() + 0.1 y_min, y_max = X[:, feature2].min() - 0.1, X[:, feature2].max() + 0.1 xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01), np.arange(y_min, y_max, 0.01)) Z = knn.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape) plt.contourf(xx, yy, Z, alpha=0.2) plt.xlabel(iris.feature_names[feature1]) plt.ylabel(iris.feature_names[feature2]) plt.legend() plt.title('KNN Classification of Iris Dataset') plt.show()在以上代码中,我们选择了两个特征进行可视化,并在散点图中显示了训练集和测试集。通过不同标记和颜色的散点,我们可以清晰看到数据分布以及KNN算法对其进行的分类。
通过以上步骤,您可以利用KNN算法对鸢尾花数据集进行分类,并通过可视化来更直观地了解分类结果。
1年前