山鸢尾花和维吉尼亚鸢尾花的 3D 分类可视化:使用超平面进行区分
为了对山鸢尾花和维吉尼亚鸢尾花进行分类,并可视化超平面,我们需要选择三个特征。在鸢尾花数据集中,共有四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。
为了简化问题,我们可以选择其中的三个特征进行分类和可视化。例如,我们可以选择萼片长度、萼片宽度和花瓣长度这三个特征进行分类。
下面是一个示例代码,用于将山鸢尾花和维吉尼亚鸢尾花根据这三个特征进行分类,并可视化散点和超平面:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn import datasets
from sklearn.svm import SVC
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data[:, [0, 1, 2]] # 选择特征(萼片长度、萼片宽度、花瓣长度)
y = iris.target
# 创建SVM模型并拟合数据
model = SVC(kernel='linear')
model.fit(X, y)
# 可视化散点和超平面
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 绘制散点图
ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=y)
# 生成超平面的网格点
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
z_min, z_max = X[:, 2].min() - 1, X[:, 2].max() + 1
xx, yy, zz = np.meshgrid(np.arange(x_min, x_max, 0.2),
np.arange(y_min, y_max, 0.2),
np.arange(z_min, z_max, 0.2))
# 预测网格点的标签
Z = model.predict(np.c_[xx.ravel(), yy.ravel(), zz.ravel()])
Z = Z.reshape(xx.shape)
# 绘制超平面
ax.contour3D(xx, yy, zz, Z, cmap='cool')
# 设置坐标轴标签
ax.set_xlabel('Sepal Length')
ax.set_ylabel('Sepal Width')
ax.set_zlabel('Petal Length')
plt.show()
这段代码首先加载鸢尾花数据集,并选择萼片长度、萼片宽度和花瓣长度这三个特征进行分类。然后,使用SVM模型拟合数据,并可视化散点和超平面。
通过绘制散点图,我们可以看到不同类别的数据点在三维空间中的分布。超平面通过使用contour3D函数绘制,它将数据空间划分为两个分类的区域。
最后,我们设置了坐标轴的标签,以便更好地理解可视化结果。
请注意,这只是一个示例代码,可以根据实际情况调整特征选择和其他参数,以获得更好的分类和可视化结果。
原文地址: https://www.cveoy.top/t/topic/cmBC 著作权归作者所有。请勿转载和采集!