Scikit-learn 介绍
Scikit-learn 是 Python 中最流行的机器学习库之一,提供了简单而高效的工具用于数据挖掘和数据分析。本教程将带你从零开始掌握 scikit-learn 的核心功能。
官方文档参考
本文档内容基于 scikit-learn 官方文档。
什么是 Scikit-learn?
Scikit-learn 是一个开源的 Python 机器学习库,具有以下特点:
- 简单易用:统一的 API 设计,学习曲线平缓
- 功能丰富:提供数十种机器学习算法和工具
- 文档完善:详尽的官方文档和大量示例
- 社区活跃:广泛使用,丰富的学习资源
能做什么?
Scikit-learn 支持多种机器学习任务:
| 类型 | 任务 | 典型算法 |
|---|---|---|
| 监督学习 | 分类、回归 | 线性回归、决策树、SVM、随机森林 |
| 无监督学习 | 聚类、降维 | K-Means、DBSCAN、PCA |
| 模型选择 | 超参数调优 | GridSearchCV、RandomizedSearchCV |
| 数据预处理 | 特征缩放、编码 | StandardScaler、LabelEncoder |
机器学习基本流程
使用 scikit-learn 进行机器学习通常遵循以下步骤:
1. 准备数据
↓
2. 选择模型
↓
3. 训练模型
↓
4. 评估模型
↓
5. 使用模型预测
安装 scikit-learn
# 使用 pip 安装
pip install scikit-learn
# 或使用 conda
conda install scikit-learn
验证安装:
import sklearn
print(sklearn.__version__)
快速开始
一个完整的机器学习示例:
# 1. 导入必要的库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 2. 加载数据
iris = load_iris()
X = iris.data # 特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度
y = iris.target # 目标:花の種類 (0, 1, 2)
# 3. 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 4. 创建并训练模型
clf = RandomForestClassifier(random_state=0)
clf.fit(X_train, y_train)
# 5. 预测和评估
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy:.2f}")
核心概念
估计器(Estimator)
所有机器学习算法的基类,包括:
fit(X, y):训练模型predict(X):预测结果score(X, y):评估模型
转换器(Transformer)
数据预处理工具,具有:
fit(X):学习转换参数transform(X):应用转换fit_transform(X):一步完成学习和转换
管道(Pipeline)
将多个步骤串联成一条流水线:
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
pipeline = Pipeline([
('scaler', StandardScaler()), # 数据标准化
('svm', SVC()) # 支持向量机
])
# 一次性完成所有步骤
pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)
为什么选择 Scikit-learn?
- 统一 API:所有算法使用相同的接口
- 丰富算法:覆盖主流机器学习算法
- 良好文档:详细的官方文档和示例
- 高效性能:基于 NumPy 和 SciPy 构建
- 广泛应用:Kaggle 竞赛中使用最频繁的库