机器学习之scikit-learn(简称 sklearn)

news/2024/12/28 22:49:30/

scikit-learn(简称 sklearn)是 Python 生态中一个非常流行且强大的机器学习库,支持各种机器学习算法和工具。


核心模块和功能

  1. 监督学习 (Supervised Learning)

    • 分类 (Classification):

      • 支持的算法:KNN、SVM、决策树、随机森林、Logistic回归、朴素贝叶斯等。
      • 示例:
        from sklearn.ensemble import RandomForestClassifierclf = RandomForestClassifier(n_estimators=100, random_state=42)
        clf.fit(X_train, y_train)  # 训练模型
        predictions = clf.predict(X_test)  # 预测
        
    • 回归 (Regression):

      • 支持的算法:线性回归、Ridge回归、Lasso回归、SVR等。
      • 示例:
        from sklearn.linear_model import LinearRegressionreg = LinearRegression()
        reg.fit(X_train, y_train)  # 拟合数据
        predictions = reg.predict(X_test)  # 预测
        
  2. 无监督学习 (Unsupervised Learning)

    • 聚类 (Clustering):

      • 支持的算法:K-Means、DBSCAN、层次聚类等。
      • 示例:
        from sklearn.cluster import KMeanskmeans = KMeans(n_clusters=3, random_state=42)
        kmeans.fit(X)  # 拟合数据
        labels = kmeans.labels_  # 获取聚类标签
        
    • 降维 (Dimensionality Reduction):

      • 支持的算法:PCA、TSNE、ICA等。
      • 示例:
        from sklearn.decomposition import PCApca = PCA(n_components=2)
        X_reduced = pca.fit_transform(X)  # 降维
        
  3. 模型选择与优化 (Model Selection and Optimization)

    • 交叉验证 (Cross Validation):

      • 使用 cross_val_score 实现简单交叉验证。
      • 示例:
        from sklearn.model_selection import cross_val_scorescores = cross_val_score(clf, X, y, cv=5)  # 5折交叉验证
        print(scores.mean())  # 平均准确率
        
    • 超参数调优 (Hyperparameter Tuning):

      • 使用 GridSearchCVRandomizedSearchCV
      • 示例:
        from sklearn.model_selection import GridSearchCVparam_grid = {'n_estimators': [50, 100, 150], 'max_depth': [10, 20, None]}
        grid_search = GridSearchCV(RandomForestClassifier(), param_grid, cv=3)
        grid_search.fit(X_train, y_train)
        print(grid_search.best_params_)  # 最优参数
        
  4. 预处理 (Preprocessing)

    • 标准化与归一化:

      • 使用 StandardScalerMinMaxScaler
      • 示例:
        from sklearn.preprocessing import StandardScalerscaler = StandardScaler()
        X_scaled = scaler.fit_transform(X)
        
    • 特征选择 (Feature Selection):

      • 支持的方法:SelectKBest、递归特征消除 (RFE) 等。
      • 示例:
        from sklearn.feature_selection import SelectKBest, f_classifselector = SelectKBest(f_classif, k=10)
        X_new = selector.fit_transform(X, y)
        

常用工具

  1. 评估指标 (Metrics)

    • 分类指标:准确率、F1分数、ROC曲线等。
      from sklearn.metrics import accuracy_score, classification_reportprint(accuracy_score(y_test, y_pred))
      print(classification_report(y_test, y_pred))
      
    • 回归指标:均方误差 (MSE)、R²等。
      from sklearn.metrics import mean_squared_error, r2_scoreprint(mean_squared_error(y_test, y_pred))
      print(r2_score(y_test, y_pred))
      
  2. 数据集工具

    • 自带数据集加载:如 irisdigits 等。
      from sklearn.datasets import load_irisdata = load_iris()
      X, y = data.data, data.target
      
    • 数据集拆分:
      from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
      

完整工作流程示例

以一个分类任务为例,使用随机森林进行训练并评估:

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, classification_report# 1. 加载数据
data = load_iris()
X, y = data.data, data.target# 2. 数据集划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 3. 模型训练
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)# 4. 模型预测
y_pred = clf.predict(X_test)# 5. 模型评估
print("Accuracy:", accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))

适用场景

  1. 快速实现基于传统方法的机器学习任务。
  2. 教学或研究中算法的对比实验。
  3. 中小型数据集的机器学习应用。


http://www.ppmy.cn/news/1558907.html

相关文章

Scala_【2】变量和数据类型

第二章 注释标识符的命名规范命名规则关键字 变量字符串输出数据类型关系变量和数据类型整数类型(Byte、Short、Int、Long)浮点类型(Float、Double)字符类型(Char)布尔类型(Boolean)…

leetcode hot 100 二叉搜索

35. 搜索插入位置 已解答 简单 相关标签 相关企业 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solut…

Hadoop中MapReduce过程中Shuffle过程实现自定义排序

文章目录 Hadoop中MapReduce过程中Shuffle过程实现自定义排序一、引言二、实现WritableComparable接口1、自定义Key类 三、使用Job.setSortComparatorClass方法2、设置自定义排序器3、自定义排序器类 四、使用示例五、总结 Hadoop中MapReduce过程中Shuffle过程实现自定义排序 一…

CASA模型相关遥感数据及MODIS NDVI、FPAR遥感产品数据时序重建

植被作为陆地生态系统的重要组成部分对于生态环境功能的维持具有关键作用。植被净初级生产力(Net Primary Productivity, NPP)是指单位面积上绿色植被在单位时间内由光合作用生产的有机质总量扣除自养呼吸的剩余部分。植被NPP是表征陆地生态系统功能及可…

uniapp实现APP、小程序与webview页面间通讯

需求: 1、需要在Uniapp开发的APP或小程序页面嵌入一个H5网页,需要拿到H5给APP传递的数据。 2、并且这个H5是使用vuevant开发的。(其实跟使用uniapp开发H5一样) 实现步骤: 1、首先需要兼容多端和App端,因…

MATLAB语言的网络编程

标题:MATLAB中的网络编程:深入探索与实践 一、引言 在现代科学和工程领域中,网络编程已经成为了数据处理、信号分析、模型构建等众多任务中不可或缺的一环。MATLAB作为一款强大的数学计算软件,不仅提供了丰富的数值计算功能&…

Elasticsearch介绍及安装部署

Elasticsearch介绍 Elasticsearch 是一个分布式搜索引擎,底层基于 Lucene 实现。Elasticsearch 屏蔽了 Lucene 的底层细节,提供了分布式特性,同时对外提供了 Restful API。Elasticsearch 以其易用性迅速赢得了许多用户,被用在网站…

springcloud篇2-feign、gateway

一、Feign(http客户端) 1.1 简介 之前不同的服务之间进行远程调用使用的是RestTemplate。 存在下面的问题: (1)代码可读性差,编程体验不统一; (2)参数复杂,URL难以维护。 Feign(…