鸢尾花数据集是机器学习领域中一个非常著名的数据集,它包含了150个样本,每个样本有四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。这些样本分为三个类别,分别是山鸢尾、变色鸢尾和维吉尼亚鸢尾。在本分析中,仅使用萼片长度和宽度这两个维度的数据,并通过逻辑回归模型来分析数据点的分类情况。
逻辑回归是一种广泛使用的线性分类算法,它通过学习输入特征与输出标签之间的关系,来预测新样本的类别。在本例中,使用逻辑回归模型来预测鸢尾花的类别,并使用matplotlib库来可视化模型的决策边界。决策边界是模型预测类别变化的区域,它可以帮助直观地理解模型是如何区分不同类别的样本的。
首先,需要导入必要的库和数据集。然后,创建逻辑回归模型的实例,并使用训练数据来训练模型。接着,使用训练好的模型来预测数据点的类别,并绘制决策边界。最后,在同一张图上绘制训练数据点,以便于比较模型的预测结果与实际标签。
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.inspection import DecisionBoundaryDisplay
from sklearn.linear_model import LogisticRegression
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data[:, :2] # 仅使用前两个特征
Y = iris.target
# 创建逻辑回归分类器实例并拟合数据
logreg = LogisticRegression(C=1e5)
logreg.fit(X, Y)
# 绘制决策边界
_, ax = plt.subplots(figsize=(4, 3))
DecisionBoundaryDisplay.from_estimator(
logreg,
X,
cmap=plt.cm.Paired,
ax=ax,
response_method="predict",
plot_method="pcolormesh",
shading="auto",
xlabel="萼片长度",
ylabel="萼片宽度",
eps=0.5,
)
# 绘制训练数据点
plt.scatter(X[:, 0], X[:, 1], c=Y, edgecolors="k", cmap=plt.cm.Paired)
plt.xticks(())
plt.yticks(())
plt.show()
通过上述代码,可以看到鸢尾花数据集的决策边界。图中的每个点代表一个鸢尾花样本,颜色表示其实际类别。决策边界将不同类别的样本分隔开来,可以看到模型在这两个维度上的表现。这种可视化方法对于理解模型的决策过程非常有帮助,尤其是在处理高维数据时。
需要注意的是,虽然仅使用了两个特征来训练模型,但逻辑回归模型仍然能够较好地区分不同类别的样本。这表明在某些情况下,即使数据的维度较低,逻辑回归模型也能够捕捉到数据中的关键信息。然而,在实际应用中,通常需要考虑更多的特征,以提高模型的准确性和泛化能力。
此外,还可以通过调整逻辑回归模型的参数,如正则化强度C,来优化模型的性能。在本例中,设置了C=1e5,这是一个较大的值,意味着对模型的正则化强度要求较低。在实际应用中,可以通过交叉验证等方法来选择最佳的参数值,以获得最佳的模型性能。