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

server/2024/12/28 12:55:17/

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/server/153247.html

相关文章

生成式AI:药学科普的新引擎

在信息爆炸的时代,药学知识的普及显得尤为重要。而今,生成式人工智能(Generative AI)正以其强大的内容生成和数据分析能力,悄然改变着传统的药学科普模式。它不仅能加速信息的传递,更能为患者提供个性化、易…

深入探讨C++标准输入输出流:iostream

C标准库中的输入输出流(iostream)是处理数据输入和输出的核心部分,提供了灵活且高效的方式来读写各种数据类型。通过理解和运用iostream,开发者可以实现丰富的输入输出功能,从而增强程序的交互性和用户体验。本文将深入探讨C的标准输入输出流…

轮播图带详情插件、uniApp插件

超级好用的轮播图 介绍访问地址参数介绍使用方法(简单使用,参数结构点击链接查看详情)图片展示 介绍 带有底部物品介绍以及价格的轮播图组件,持续维护,uniApp插件,直接下载填充数据就可以在项目里面使用 …

OpenAI 展示全新桌面版 ChatGPT

有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。 生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少。 今天凌晨,Open…

12寸半导体厂等保安全的设计思路

等级保护(等保)二级和三级的主要区别在于安全要求的严格程度、所需部署的安全措施和设备、以及对安全事件响应和处理的能力。以下是等保二级和三级之间的一些关键区别: 一、 安全要求严格程度: - 等保二级:适用于需要较高安全保护的信息系统,要求能够防范轻微的恶意攻击…

Partition Strategies kafka分区策略

原文链接 Kafka Partition Strategy 分区策略简介 分区增加了并行化并允许Kafka扩展。存在许多将消息分发到主题分区的策略。在我们深入研究每种策略的背景之前,下面的表格给出了每种策略的简要概述。 Kafka消息由生产者发送,由消费者接收。这两种策略…

基于C#实现的(WinForm)模拟操作系统文件管理系统

基于C# Framework实现的模拟操作系统文件管理系统(文件管理大作业) 1. 使用说明 1.1 项目简介 文件(File)是操作系统中的一个重要概念。在系统运行时,计算机以进程为基本单位进行资源的调度和分配;而在用户进行的输入、输出中&…

搭建vue3+vant项目架构

git代码仓库,直接下载压缩包使用 1、首先要安装node.js(18.3 或更高版本) 2、创建vue3项目 npm create vuelatest然后按照自己的需要进行选择就行 到此vue3项目创建完成,接下来是搭建项目架构 3、配置Vant (移动端ui) vue3项目引入vant&#xff0c…