Scikit-Learn 基础教程

Scikit-Learn 是一个广泛使用的 Python 机器学习库,旨在为数据科学和机器学习任务提供简洁、高效的工具。本文将介绍 Scikit-Learn 的安装、基本使用以及一些常见的机器学习任务的实现方法。

安装 Scikit-Learn

安装 Scikit-Learn 非常简单,只需使用 pip 包管理器即可:

复制代码
pip install scikit-learn

安装完成后,可以通过以下命令验证安装是否成功:

复制代码
import sklearn
print(sklearn.__version__)

Scikit-Learn 的基本使用

下面我们将通过一个简单的线性回归示例来介绍 Scikit-Learn 的基本使用方法。

导入必要的库

复制代码
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

准备数据

我们生成一些随机数据作为示例:

复制代码
# 生成随机数据
X = np.random.rand(100, 1) * 10  # 特征
y = 2.5 * X + np.random.randn(100, 1) * 2  # 标签

拆分数据集

将数据集拆分为训练集和测试集:

复制代码
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

训练模型

使用线性回归模型进行训练:

复制代码
model = LinearRegression()
model.fit(X_train, y_train)

预测与评估

使用训练好的模型进行预测,并计算均方误差:

复制代码
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f'Mean Squared Error: {mse}')

Scikit-Learn 的主要功能

监督学习

Scikit-Learn 提供了多种常见的监督学习算法,包括回归和分类任务。

回归
  • 线性回归(Linear Regression)

  • 决策树回归(Decision Tree Regression)

  • 支持向量回归(Support Vector Regression)

  • 岭回归(Ridge Regression)

    from sklearn.linear_model import Ridge

    ridge_model = Ridge()
    ridge_model.fit(X_train, y_train)

分类
  • 逻辑回归(Logistic Regression)

  • K 近邻(K-Nearest Neighbors, KNN)

  • 支持向量机(Support Vector Machine, SVM)

  • 随机森林(Random Forest)

    from sklearn.ensemble import RandomForestClassifier

    clf = RandomForestClassifier()
    clf.fit(X_train, y_train)

无监督学习

Scikit-Learn 还包括多种无监督学习算法,用于聚类和降维。

聚类
  • K 均值聚类(K-Means Clustering)

  • 层次聚类(Hierarchical Clustering)

  • DBSCAN(Density-Based Spatial Clustering of Applications with Noise)

    from sklearn.cluster import KMeans

    kmeans = KMeans(n_clusters=3)
    kmeans.fit(X)

降维
  • 主成分分析(Principal Component Analysis, PCA)

  • t-SNE(t-Distributed Stochastic Neighbor Embedding)

    from sklearn.decomposition import PCA

    pca = PCA(n_components=2)
    X_reduced = pca.fit_transform(X)

模型选择与评估

Scikit-Learn 提供了多种工具用于模型选择、交叉验证和参数调优。

交叉验证
  • K 折交叉验证(K-Fold Cross Validation)

  • 留一法交叉验证(Leave-One-Out Cross Validation)

    from sklearn.model_selection import cross_val_score

    scores = cross_val_score(model, X, y, cv=5)

超参数调优
  • 网格搜索(Grid Search)

  • 随机搜索(Random Search)

    from sklearn.model_selection import GridSearchCV

    param_grid = {'alpha': [0.1, 1, 10]}
    grid_search = GridSearchCV(Ridge(), param_grid, cv=5)
    grid_search.fit(X_train, y_train)

数据预处理

数据预处理是机器学习管道中的重要一环,Scikit-Learn 提供了丰富的数据预处理工具。

标准化与归一化
  • 标准化(Standardization)

  • 归一化(Normalization)

    from sklearn.preprocessing import StandardScaler

    scaler = StandardScaler()
    X_scaled = scaler.fit_transform(X)

缺失值填补
  • 使用均值、中位数或众数填补缺失值

    from sklearn.impute import SimpleImputer

    imputer = SimpleImputer(strategy='mean')
    X_imputed = imputer.fit_transform(X)

编码分类变量
  • 独热编码(One-Hot Encoding)

    from sklearn.preprocessing import OneHotEncoder

    encoder = OneHotEncoder()
    X_encoded = encoder.fit_transform(X_categorical)

管道(Pipeline)

Scikit-Learn 的管道工具允许将多个步骤链接在一起,形成一个完整的工作流。这样可以简化代码,并确保数据处理的正确性。

复制代码
from sklearn.pipeline import Pipeline

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('regressor', LinearRegression())
])

pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)

结论

通过本教程的介绍,你应该对 Scikit-Learn 的安装和基本使用有了初步的了解。Scikit-Learn 是一个功能强大且易于使用的机器学习库,适合从入门到高级的各种机器学习任务。更多详细信息和高级用法,可以参考

相关推荐
悟乙己3 天前
保序回归Isotonic Regression的sklearn实现案例
数据挖掘·回归·sklearn·保序回归
非门由也7 天前
《sklearn机器学习——数据预处理》类别特征编码
人工智能·机器学习·sklearn
非门由也7 天前
《sklearn机器学习——回归指标2》
机器学习·回归·sklearn
非门由也8 天前
《sklearn机器学习——特征提取》
人工智能·机器学习·sklearn
非门由也8 天前
《sklearn机器学习——管道和复合估计器》回归中转换目标
机器学习·回归·sklearn
非门由也9 天前
《sklearn机器学习——回归指标1》
机器学习·回归·sklearn
非门由也9 天前
《sklearn机器学习——管道和复合估计器》联合特征(FeatureUnion)
人工智能·机器学习·sklearn
非门由也9 天前
《sklearn机器学习——管道和复合估算器》异构数据的列转换器
人工智能·机器学习·sklearn
非门由也10 天前
《sklearn机器学习——管道和复合估算器》可视化复合估计器
人工智能·机器学习·sklearn
非门由也10 天前
《sklearn机器学习——聚类性能指标》Fowlkes-Mallows 得分
机器学习·聚类·sklearn