引言
数据可视化是机器学习领域中一个非常重要的工具,它能够帮助我们更好地理解数据,发现数据中的模式,以及验证机器学习模型的性能。Scikit-learn是一个强大的Python库,提供了丰富的机器学习算法和数据预处理工具。本文将通过一个实战案例,展示如何使用Scikit-learn进行数据可视化。
案例背景
我们以鸢尾花(Iris)数据集为例,这个数据集是机器学习中非常经典的案例。它包含150个样本,每个样本有4个特征:花瓣长度、花瓣宽度、花萼长度和花萼宽度。我们的目标是使用这些特征来识别鸢尾花的不同品种。
数据准备
首先,我们需要导入必要的库和数据集。
from sklearn import datasets
from sklearn.model_selection import train_test_split
# 加载数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
特征选择
为了可视化,我们首先选择前两个特征进行展示。
import matplotlib.pyplot as plt
# 选择前两个特征
X_train_2d = X_train[:, :2]
# 绘制散点图
plt.scatter(X_train_2d[:, 0], X_train_2d[:, 1], c=y_train)
plt.xlabel('花瓣长度')
plt.ylabel('花瓣宽度')
plt.title('鸢尾花数据集散点图')
plt.show()
模型训练
接下来,我们使用决策树分类器对数据进行训练。
from sklearn.tree import DecisionTreeClassifier
# 创建决策树分类器
clf = DecisionTreeClassifier()
# 训练模型
clf.fit(X_train_2d, y_train)
模型评估
使用测试集来评估模型的性能。
from sklearn.metrics import accuracy_score
# 预测测试集
y_pred = clf.predict(X_test[:, :2])
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.2f}")
可视化决策边界
我们将决策树的决策边界可视化。
# 创建一个网格,用于生成决策边界
h = .02 # 网格步长
x_min, x_max = X_test[:, 0].min() - 1, X_test[:, 0].max() + 1
y_min, y_max = X_test[:, 1].min() - 1, X_test[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
# 预测网格上的每个点
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# 绘制决策边界和散点图
plt.figure()
plt.contourf(xx, yy, Z, alpha=0.8)
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, edgecolors='k', marker='o')
plt.xlabel('花瓣长度')
plt.ylabel('花瓣宽度')
plt.title('鸢尾花数据集决策边界')
plt.show()
结论
通过这个案例,我们展示了如何使用Scikit-learn进行数据可视化,包括数据准备、特征选择、模型训练、模型评估和决策边界可视化。这些技能在机器学习项目中非常重要,可以帮助我们更好地理解数据和模型。
