scikit-learn(简称 sklearn)是 Python 中最常用的机器学习库之一,提供了大量的机器学习算法和工具,涵盖了从数据预处理到模型评估的各个方面。它的设计简单且高效,适用于各种机器学习任务,包括分类、回归、聚类、降维等。

接下来,我将带你从 sklearn 的基础开始,一步一步熟悉它的核心功能。

核心模块:

  1. 数据集(Datasets):提供一些常用的标准数据集,例如 irisdigits 等。
  2. 数据预处理(Preprocessing):包括标准化、归一化、缺失值处理等。
  3. 分类(Classification):包括支持向量机(SVM)、决策树、KNN 等。
  4. 回归(Regression):包括线性回归、岭回归等。
  5. 聚类(Clustering):包括 KMeans、DBSCAN 等。
  6. 降维(Dimensionality Reduction):包括 PCA(主成分分析)、LDA(线性判别分析)等。
  7. 模型评估(Model Evaluation):包括交叉验证、混淆矩阵、评分等。

🔧 Sklearn 入门示例:分类任务

我们先通过一个经典的分类任务——**鸢尾花分类(Iris Dataset)**来了解如何使用 sklearn

🧪 步骤1:加载数据集

from sklearn.datasets import load_iris

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data  # 特征数据
y = iris.target  # 标签数据

🧪 步骤2:划分训练集和测试集

from sklearn.model_selection import train_test_split

# 划分数据集,70% 用于训练,30% 用于测试
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

🧪 步骤3:选择模型并训练

from sklearn.neighbors import KNeighborsClassifier

# 创建 KNN 模型
knn = KNeighborsClassifier(n_neighbors=3)

# 训练模型
knn.fit(X_train, y_train)

🧪 步骤4:做预测并评估

from sklearn.metrics import accuracy_score

# 使用测试集做预测
y_pred = knn.predict(X_test)

# 评估模型准确性
accuracy = accuracy_score(y_test, y_pred)
print("模型准确率:", accuracy)


📊 常用功能总结

1. 数据预处理

  • 标准化(Standardization):将特征数据转化为均值为 0,方差为 1 的分布。from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_scaled = scaler.fit_transform(X)
  • 归一化(Normalization):将特征数据按比例缩放到 [0, 1] 范围内。from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() X_scaled = scaler.fit_transform(X)
  • 缺失值填补from sklearn.impute import SimpleImputer imputer = SimpleImputer(strategy='mean') # 用均值填充缺失值 X_imputed = imputer.fit_transform(X)

2. 模型训练与评估

  • 分类模型:例如 KNN、SVM、决策树等。from sklearn.svm import SVC model = SVC(kernel='linear') model.fit(X_train, y_train)
  • 回归模型:例如线性回归、岭回归等。from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train)
  • 模型评估
    • 交叉验证from sklearn.model_selection import cross_val_score scores = cross_val_score(model, X, y, cv=5) # 5 折交叉验证 print("交叉验证结果:", scores)
    • 混淆矩阵from sklearn.metrics import confusion_matrix cm = confusion_matrix(y_test, y_pred) print("混淆矩阵:\n", cm)
    • 准确率、精度、召回率from sklearn.metrics import accuracy_score, precision_score, recall_score print("准确率:", accuracy_score(y_test, y_pred)) print("精度:", precision_score(y_test, y_pred, average='weighted')) print("召回率:", recall_score(y_test, y_pred, average='weighted'))

3. 模型优化

  • 网格搜索(Grid Search):通过指定一组参数范围,自动调优模型的超参数。from sklearn.model_selection import GridSearchCV param_grid = {'n_neighbors': [1, 3, 5, 7, 9]} grid_search = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5) grid_search.fit(X_train, y_train) print("最佳参数:", grid_search.best_params_)
  • 随机搜索(Random Search):通过随机采样超参数,找到最优组合。from sklearn.model_selection import RandomizedSearchCV from scipy.stats import randint param_dist = {'n_neighbors': randint(1, 20)} random_search = RandomizedSearchCV(KNeighborsClassifier(), param_dist, n_iter=10, cv=5) random_search.fit(X_train, y_train) print("最佳参数:", random_search.best_params_)

🛠 高级功能

  • PCA(主成分分析):用于数据降维。from sklearn.decomposition import PCA pca = PCA(n_components=2) X_pca = pca.fit_transform(X)
  • 聚类算法(如 KMeans)from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=3) kmeans.fit(X)
  • 模型管道(Pipeline):将数据预处理和模型训练整合到一起。from sklearn.pipeline import Pipeline pipeline = Pipeline([ ('scaler', StandardScaler()), ('classifier', KNeighborsClassifier(n_neighbors=3)) ]) pipeline.fit(X_train, y_train)

🤝 总结

  • sklearn 提供了很多常用的机器学习算法,能够快速搭建数据处理和模型训练流程。
  • 其简洁的 API 使得机器学习的应用变得更加高效,适合快速开发原型。
  • 重要步骤:数据加载 → 数据预处理 → 模型训练 → 模型评估 → 调参与优化。

如果你想继续深入,欢迎随时告诉我,我可以带你深入探索具体的算法实现和项目应用!😊