Python 开发(26):机器学习基础 - 使用 scikit-learn
Python 开发(26):机器学习基础 - 使用 scikit-learn

机器学习是当今技术世界中最炙手可热的话题之一,无论是在自动化、数据分析,还是在人工智能领域,机器学习都扮演着越来越重要的角色。作为 Python 生态中最受欢迎的机器学习库之一,scikit-learn 为开发者提供了简洁且高效的工具,来构建、评估并优化机器学习模型。在本文中,我们将深入探讨如何使用 scikit-learn 构建机器学习模型,并通过实际案例来帮助你更好地理解机器学习的基本概念。
文章目录
- 机器学习简介
- 安装 scikit-learn
- 机器学习的基本流程
- scikit-learn 中的主要模块与模型
- 示例代码:使用 scikit-learn 构建模型
- 模型评估与优化
- 实践中的应用:手写数字识别
- 总结与未来发展
1. 机器学习简介
机器学习是人工智能(AI)的一部分,旨在让计算机从数据中自动学习和改进,无需显式编程。它包含了监督学习、无监督学习、强化学习等不同的学习模式。最常见的机器学习任务包括:
- 分类:将数据分为不同的类别(例如,垃圾邮件分类)。
- 回归:预测一个连续值(例如,房价预测)。
- 聚类:将数据划分为多个组别(例如,客户细分)。
- 降维:将高维数据映射到低维空间,常用于数据可视化。
2. 安装 scikit-learn
在开始之前,我们需要安装 scikit-learn。你可以使用 pip 来安装这个库:
pip install scikit-learn
安装成功后,我们可以通过以下方式验证:
import sklearn
print(sklearn.__version__) # 打印 scikit-learn 的版本
3. 机器学习的基本流程
使用 scikit-learn 构建机器学习模型的基本流程可以分为以下几个步骤:
- 数据收集:收集并准备数据集。数据集可以是公开的,也可以是自定义的。
- 数据预处理:对数据进行清洗,处理缺失值、异常值,并进行标准化或归一化。
- 选择模型:根据任务的不同选择合适的算法模型。例如,分类任务可以选择逻辑回归、支持向量机(SVM),回归任务可以选择线性回归等。
- 训练模型:使用训练数据来训练机器学习模型。
- 评估模型:通过测试集评估模型的性能,使用指标如准确率、精度、召回率等。
- 优化与调参:根据评估结果进行模型优化与超参数调优。
4. scikit-learn 中的主要模块与模型
scikit-learn 提供了多种模型和工具,帮助我们轻松构建机器学习应用。常见的模型包括:
-
监督学习模型:用于已标注数据的分类和回归任务。常见模型包括:
- 线性回归(
LinearRegression) - 逻辑回归(
LogisticRegression) - 支持向量机(
SVC) - 决策树(
DecisionTreeClassifier)
- 线性回归(
-
无监督学习模型:用于无标注数据的聚类和降维任务。常见模型包括:
- K-means 聚类(
KMeans) - 主成分分析(PCA)
- K-means 聚类(
-
数据预处理模块:例如,
StandardScaler用于数据标准化,train_test_split用于划分训练集和测试集。
5. 示例代码:使用 scikit-learn 构建模型
让我们通过一个实际示例来理解如何使用 scikit-learn 构建机器学习模型。假设我们使用 Iris 数据集,该数据集包含了不同种类的鸢尾花的特征数据,目标是分类鸢尾花的种类。
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 加载数据集
iris = datasets.load_iris()
X = iris.data # 特征数据
y = iris.target # 标签数据
# 数据集划分:80% 训练,20% 测试
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 数据标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 使用逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估模型
print(f"Accuracy: {accuracy_score(y_test, y_pred)}")
解析:这段代码首先加载了鸢尾花数据集,然后将数据集分为训练集和测试集。接下来,我们对数据进行了标准化处理,并使用逻辑回归模型进行训练。最后,计算并打印出模型在测试集上的准确率。
6. 模型评估与优化
评估模型是机器学习中至关重要的步骤。除了准确率(Accuracy),我们还可以使用以下评估指标:
- 精度(Precision):正类预测中,实际为正类的比例。
- 召回率(Recall):所有实际为正类的样本中,正确预测为正类的比例。
- F1-score:精度和召回率的调和平均数,综合考虑了精度和召回率。
可以通过 classification_report 函数生成详细的分类评估报告:
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))
对于模型优化,可以通过交叉验证(cross-validation)和网格搜索(GridSearchCV)来调节超参数,提升模型的性能。
7. 实践中的应用:手写数字识别
作为机器学习的经典应用之一,手写数字识别任务在 scikit-learn 中也有完整的支持。我们可以使用 Digits 数据集进行训练和测试:
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
# 加载手写数字数据集
digits = load_digits()
X = digits.data
y = digits.target
# 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 使用支持向量机模型
model = SVC(gamma=0.001)
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估模型
print(f"Accuracy: {accuracy_score(y_test, y_pred)}")
通过训练支持向量机模型,我们可以在 Digits 数据集上实现高效的手写数字识别。
8. 总结与未来发展
本文介绍了使用 scikit-learn 进行机器学习的基础知识,从安装库到实现模型,再到评估与优化模型。通过实际的案例,我们展示了如何运用 scikit-learn 进行数据预处理、训练模型、评估模型效果,并进行优化。
机器学习的应用领域广泛,包括
自然语言处理、图像识别、推荐系统等。随着深度学习的快速发展,scikit-learn 作为一个轻量级的机器学习库,依然在许多传统机器学习任务中占有重要地位。
如果你对机器学习模型或实现代码有任何疑问,欢迎在评论区讨论! 😊
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)