跳到主要内容

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?

  1. 统一 API:所有算法使用相同的接口
  2. 丰富算法:覆盖主流机器学习算法
  3. 良好文档:详细的官方文档和示例
  4. 高效性能:基于 NumPy 和 SciPy 构建
  5. 广泛应用:Kaggle 竞赛中使用最频繁的库

进一步学习