引言
Scikit-learn 是一个强大的机器学习库,它提供了大量的算法和工具,使得机器学习变得更加容易和高效。本文将通过一个实战案例,展示如何使用 Scikit-learn 进行可视化分析,帮助读者轻松掌握机器学习技巧。
实战案例:鸢尾花分类
在这个案例中,我们将使用 Scikit-learn 的鸢尾花数据集进行分类任务。鸢尾花数据集是一个经典的机器学习数据集,包含了三种鸢尾花(setosa, versicolor, virginica)的萼片和花瓣的长度和宽度。
1. 数据准备
首先,我们需要导入必要的库和数据集。
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# 加载数据集
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)
# 数据标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
2. 模型选择
接下来,我们选择一个分类模型。在这里,我们使用逻辑回归模型。
from sklearn.linear_model import LogisticRegression
# 创建逻辑回归模型
model = LogisticRegression()
3. 模型训练
使用训练集对模型进行训练。
# 训练模型
model.fit(X_train, y_train)
4. 模型评估
使用测试集评估模型的性能。
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
# 预测测试集
y_pred = model.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
# 打印混淆矩阵
print("Confusion Matrix:")
print(confusion_matrix(y_test, y_pred))
# 打印分类报告
print("Classification Report:")
print(classification_report(y_test, y_pred))
5. 可视化分析
为了更好地理解模型的性能,我们可以使用散点图和决策边界来可视化分析。
import matplotlib.pyplot as plt
import numpy as np
# 设置散点图参数
colors = ['red', 'green', 'blue']
markers = ['o', 's', '^']
# 创建散点图
for i, color, marker in zip(range(3), colors, markers):
plt.scatter(X_train[y_train == i, 0], X_train[y_train == i, 1], color=color, marker=marker, label=iris.target_names[i])
# 绘制决策边界
x_min, x_max = X_train[:, 0].min() - 1, X_train[:, 0].max() + 1
y_min, y_max = X_train[:, 1].min() - 1, X_train[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1), np.arange(y_min, y_max, 0.1))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.4)
plt.xlabel('Sepal length (cm)')
plt.ylabel('Sepal width (cm)')
plt.title('Iris classification')
plt.legend()
plt.show()
总结
通过这个实战案例,我们学习了如何使用 Scikit-learn 进行数据预处理、模型选择、训练和评估。我们还通过可视化分析来更好地理解模型的性能。这些技巧可以帮助我们更好地掌握机器学习,并在实际项目中应用。
