机器学习(1)sklearn的介绍和六个主要模块、估计器、模型持久化

文章目录

  • 1.sklearn介绍
  • 2.sklearn的模块
  • 3.监督学习和无监督学习
      • 1. 监督学习 (Supervised Learning)
        • 例子
      • 2. 无监督学习 (Unsupervised Learning)
        • 例子
  • 4.估计器
      • 估计器的主要特性和方法包括:
      • 估计器的类型:
      • 示例:使用 scikit-learn 中的估计器
  • 5.模型持久化(sklearn使用joblib,pytorch使用pt/pth)
      • 示例代码
  • 6.监督学习和无监督学习的算法
      • 监督学习算法:
      • 无监督学习算法:

1.sklearn介绍

sklearn中文网址
sklearn英文网址

2.sklearn的模块

在sklearn主页放置了主要的六个模块分别是Classification(分类)、Regression(回归)、Clustering(聚类)、Dimensionality Reduction(降维)、Model selection(模型评估)、Preprocessing(数据预处理)
在这里插入图片描述
在这里插入图片描述
除此之外,还有一些模块如

  • 1.树模型模块 (sklearn.tree):
    决策树分类器(DecisionTreeClassifier
    决策树回归器(DecisionTreeRegressor
    随机森林分类器(RandomForestClassifier
    随机森林回归器(RandomForestRegressor
    梯度提升树分类器(GradientBoostingClassifier
    梯度提升树回归器(GradientBoostingRegressor

  • 2.集成学习模块 (sklearn.ensemble):
    AdaBoost 分类器(AdaBoostClassifier
    AdaBoost 回归器(AdaBoostRegressor
    堆叠分类器(StackingClassifier
    堆叠回归器(StackingRegressor

  • 3.支持向量机模块 (sklearn.svm):
    支持向量分类器(SVC
    支持向量回归器(SVR
    单类分类器(OneClassSVM

  • 4.神经网络模块 (sklearn.neural_network):
    多层感知器分类器(MLPClassifier
    多层感知器回归器(MLPRegressor

  • 5.模型持久化模块 (sklearn.base):
    模型保存和加载(joblibdumpload

具体可以参考官网的examples网页,左侧的就是支持的模块,可以点进去查看使用方法。
https://scikit-learn.org/stable/auto_examples/index.html
在这里插入图片描述

3.监督学习和无监督学习

机器学习中的问题类型通常根据数据的特性、学习任务的目标以及用于训练模型的数据标签的可用性来分类。以下是您提到的四类问题的详细解释:

1. 监督学习 (Supervised Learning)

监督学习是一种机器学习方法,其中模型从标记的训练数据学习,每个训练样本都包括输入和相应的输出标签。监督学习的目标是学习一个映射规则,使得模型能够根据新的输入预测输出。它进一步分为两类主要任务:

  • 分类 (Classification):预测离散标签。
  • 回归 (Regression):预测连续值。
例子
  • 分类:邮件分类(垃圾邮件检测)、疾病诊断、图像识别。
  • 回归:房价预测、股票价格预测、天气预测。

2. 无监督学习 (Unsupervised Learning)

无监督学习涉及无标签数据,模型必须自行发现输入数据中的结构。无监督学习通常用于聚类、关联规则学习和降维。这种类型的学习对于探索数据和发现数据中的隐藏模式非常有用。

例子
  • 聚类:市场细分、社交网络分析、图像压缩。
  • 关联规则学习:购物篮分析、推荐系统。
  • 降维:PCA(主成分分析)、t-SNE(t-分布随机邻域嵌入)。

4.估计器

在机器学习中,估计器(Estimator)是一个通用术语,指的是任何可以从数据中学习并做出预测的算法或模型。在 scikit-learn 这样的机器学习库中,估计器通常是一个实现了特定接口的类,这个接口包括至少两个方法:fit()predict()。估计器的目标是捕捉数据中的模式,并能够对新数据做出预测或决策。

估计器的主要特性和方法包括:

  1. fit(X, y)

    • 这是训练模型的主要方法。它接受输入数据 X 和目标变量 y,并根据这些数据来训练估计器。在训练过程中,估计器会调整其内部参数以最好地拟合数据。
  2. predict(X)

    • 一旦估计器被训练,predict() 方法用于对新数据 X 进行预测。它使用 fit() 方法训练得到的模型参数来预测数据的输出。
  3. score(X, y) (可选):

    • 许多估计器还实现了 score() 方法,它返回一个分数,表示模型在给定数据 Xy 上的性能。对于分类任务,这通常是准确率;对于回归任务,可能是均方误差或其他指标。
  4. get_params() 和 set_params()

    • 这些方法允许用户获取或设置估计器的参数。这在超参数调整和模型配置中非常有用。

估计器的类型:

  1. 分类器(Classifiers)

    • 用于分类任务的估计器,如逻辑回归、支持向量机、决策树等。
  2. 回归器(Regressors)

    • 用于预测连续值的估计器,如线性回归、岭回归等。
  3. 聚类器(Clusterers)

    • 用于将数据分组的估计器,如 K-Means、层次聚类等。
  4. 降维器(Dimensionality Reducers)

    • 用于减少数据维度的估计器,如主成分分析(PCA)、t-SNE等。

示例:使用 scikit-learn 中的估计器

from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression# 创建数据
X, y = make_regression(n_samples=100, n_features=1, noise=20)# 创建估计器实例
model = LinearRegression()# 训练模型
model.fit(X, y)# 进行预测
predictions = model.predict(X)# 评估模型
score = model.score(X, y)
print("模型得分:", score)

在这个例子中,LinearRegression 是一个估计器,用于解决回归问题。它通过 fit() 方法学习数据,并通过 predict() 方法进行预测。

估计器是机器学习中的核心概念,为算法的实现和使用提供了一个统一和灵活的框架。

5.模型持久化(sklearn使用joblib,pytorch使用pt/pth)

模型持久化是指将训练好的机器学习模型保存到磁盘上,以便将来可以重新加载和使用,而无需重新训练。在Python中,有几个常用的库可以用来进行模型持久化:

  1. pickle

    • pickle 是Python的标准库,可以序列化和反序列化Python对象结构。
    • 产生 .pkl 文件。
  2. joblib

    • joblib 是一个专为Python中大型数组和模型持久化设计的库,常用于机器学习任务。
    • 特别适合用于包含大量数值数据的对象,如NumPy数组和scikit-learn模型。
    • 产生 .joblib 文件。
  3. PyTorch torch.save

    • PyTorch提供了 torch.save 函数来保存模型或模型的状态字典。
    • 产生 .pt.pth 文件。
  4. TensorFlow tf.keras.models.save

    • TensorFlow和Keras提供了 save 方法来保存模型。
    • 可以保存为HDF5文件(.h5)或SavedModel格式(包含 .pb 和变量的目录)。
  5. h5py

    • h5py 是用于与HDF5文件交互的Python库,Keras等深度学习框架使用它来保存模型。
    • 产生 .h5 文件。
  6. joblib 和 pickle 比较

    • joblib 在处理大数组时通常比 pickle 更高效,因为它采用了更高效的压缩和存储机制。
    • joblib 也更适合持久化包含大量数值数据的模型,如机器学习模型。

示例代码

使用 joblib 保存和加载模型:

from sklearn.linear_model import LinearRegression
from joblib import dump, load# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)# 保存模型
dump(model, 'model.joblib')# 加载模型
model = load('model.joblib')

使用 pickle 保存和加载模型:

import pickle# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)# 保存模型
with open('model.pkl', 'wb') as file:pickle.dump(model, file)# 加载模型
with open('model.pkl', 'rb') as file:model = pickle.load(file)

模型持久化是机器学习工作流中的一个重要步骤,它使得模型可以在不同的环境中重用,也便于模型的版本控制和部署。

6.监督学习和无监督学习的算法

监督学习算法:

  1. 线性模型

    • 包括线性回归、逻辑回归等,它们假定数据可以通过线性方程进行建模。
  2. 线性判别分析(LDA)

    • 一种经典的分类技术,旨在找到将不同类别最好地区分开的线性组合。
  3. 二次判别分析(QDA)

    • 类似于 LDA,但它不假设各类具有相同的协方差矩阵。
  4. 内核岭回归

    • 岭回归的扩展,使用内核方法允许在高维空间中拟合数据。
  5. 支持向量机(SVM)

    • 强大的分类器,通过寻找最大间隔分割不同类别的数据。
  6. 随机梯度下降(SGD)

    • 用于优化大规模数据集的算法,通过随机梯度下降来快速逼近最优解。
  7. 最近邻方法(KNN)

    • 一种基于实例的学习,通过查找最近的邻居来进行预测。
  8. 高斯过程

    • 一种基于概率的监督学习算法,用于回归和分类。
  9. 交叉分解

    • 一种模型评估方法,如交叉验证,用于提高模型泛化能力的估计。
  10. 朴素贝叶斯

    • 基于贝叶斯定理的简单但有效的概率分类器。
  11. 决策树

    • 通过树状图模型进行决策的简单直观的算法。
  12. 集成学习方法

    • 包括随机森林、梯度提升树等,通过组合多个模型来提高预测性能。
  13. 多类和多标签算法

    • 用于处理多于两个类别的分类问题,以及每个实例可以同时属于多个类别的情况。
  14. 特征选择

    • 选择最有信息量的特征以提高模型性能。
  15. 半监督学习

    • 结合少量标记数据和大量未标记数据进行学习。
  16. 等式回归

    • 一种回归方法,旨在找到最佳拟合数据的模型。
  17. 概率校准

    • 调整分类器的概率输出,使其更接近真实概率。
  18. 神经网络模型(有监督)

    • 包括多层感知器等,通过学习数据的复杂模式来进行预测。

无监督学习算法:

  1. 高斯混合模型(GMM)

    • 用于聚类的概率模型,假设数据由多个高斯分布混合而成。
  2. 流形学习

    • 旨在在低维流形上学习数据的高维结构。
  3. 聚类

    • 将数据分组的无监督学习方法,如 K-Means、层次聚类等。
  4. 双聚类

    • 同时对数据的行和列进行聚类。
  5. 信号分量分解(矩阵因子分解问题)

    • 包括奇异值分解(SVD)等,用于发现数据的潜在结构。
  6. 协方差估计

    • 估计变量之间关系的统计方法。
  7. 新奇点与离群点检测

    • 识别数据集中的异常值或新奇点。
  8. 密度估计

    • 估计输入数据的概率密度函数。
  9. 神经网络模型(无监督)

    • 自动编码器等,通过学习数据的有效表示来进行特征学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/146942.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

恶意windows程序

Lab07-01.exe分析(DOS攻击) 1.当计算机重启后,这个程序如何确保它继续运行(达到持久化驻留)? 创建Malservice服务实现持久化 先分析sub_401040桉函数 尝试获取名为HGL345互斥量句柄,如果不存在则直接结束流程;如果存…

Zotero(7.0.5)+123云盘同步空间+Z-library=无限存储文献pdf/epub电子书等资料

选择123云盘作为存储介质的原因 原因1: zotero个人免费空间大小:300M,如果zotero云端也保存文献pdf资料则远远不够 原因2: 百度网盘同步文件空间大小:1G123云盘同步文件空间大小:10G 第一台电脑实施步骤…

23章 排序

1.编写程序&#xff0c;分别使用Comparable和Comparator接口对元素冒泡排序。 import java.util.Comparator;public class MySort {public static <E extends Comparable<E>> void bubbleSort(E[] list) {boolean needNextPass true;for (int i 1; needNextPass…

困扰霍金和蔡磊等人的渐冻症,能否在医学AI领域寻找到下一个解决方案?|个人观点·24-09-22

小罗碎碎念 前沿探索&#xff1a;医学AI在渐冻症&#xff08;Amyotrophic Lateral Sclerosis&#xff0c;ALS&#xff09;领域的研究进展 老粉都知道&#xff0c;小罗是研究肿瘤的&#xff0c;之前的推文也几乎都是探索医学AI在肿瘤领域的研究进展。 在查阅资料的时候&#xf…

跟着问题学12——GRU详解

1 GRU 1. 什么是GRU GRU&#xff08;Gate Recurrent Unit&#xff09;是循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;的一种。和LSTM&#xff08;Long-Short Term Memory&#xff09;一样&#xff0c;也是为了解决长期记忆 和反向传播中的梯度等问题…

设计模式之结构型模式例题

答案&#xff1a;A 知识点 创建型 结构型 行为型模式 工厂方法模式 抽象工厂模式 原型模式 单例模式 构建器模式 适配器模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 模板方法模式 职责链模式 命令模式 迭代器模式 中介者模式 解释器模式 备忘录模式 观…

如何在jupyter notebook中使用虚拟环境

一&#xff1a;在cmd中打开已经创建好的虚拟环境 二&#xff1a;安装ipykernel conda install ipykernel 三&#xff1a;安装牛逼conda conda install -c conda-forge nb_conda 四&#xff1a;运行jupyter notebook,选择虚拟环境

带你0到1之QT编程:十七、Http协议实战,实现一个简单服务器和一个客户端进行http协议通信

此为QT编程的第十七谈&#xff01;关注我&#xff0c;带你快速学习QT编程的学习路线&#xff01; 每一篇的技术点都是很很重要&#xff01;很重要&#xff01;很重要&#xff01;但不冗余&#xff01; 我们通常采取总-分-总和生活化的讲解方式来阐述一个知识点&#xff01; …

SSM+vue音乐播放器管理系统

音乐播放器管理系统 随着社会的发展&#xff0c;计算机的优势和普及使得音乐播放器管理系统的开发成为必需。音乐播放器管理系统主要是借助计算机&#xff0c;通过对首页、音乐推荐、付费音乐、论坛信息、个人中心、后台管理等信息进行管理。减少管理员的工作&#xff0c;同时…

基于微信小程序的家教信息管理系统的设计与实现(论文+源码)_kaic

摘 要 随着互联网时代的来临&#xff0c;使得传统的家教模式已不复存在&#xff0c;亟需一种方便、快捷的在线教学平台。因此&#xff0c;利用Java语言作为支撑和MySQL数据库存储数据&#xff0c;结合微信小程序的便利性&#xff0c;为用户开发出了一个更加人性化、方便的家庭…

uniapp 整合 OpenLayer3

安装openLayer插件 命令行&#xff1a;npm install ol 安装sass插件 命令行&#xff1a;npm install -D sass 使用方法&#xff1a; *** *** <style scoped lang"scss"> </style> 安装ElementPlus 命令行&#xff1a;npm install element-plus -…

【宝藏案例篇!】不在同一局域网怎么远程桌面?实现远程桌面访问的3种方法推荐

不在同一局域网怎么远程桌面&#xff1f;当两台电脑不在同一局域网时&#xff0c;实现远程桌面访问可以通过多种方法。 以下是三种推荐的方法&#xff0c;以及每种方法的详细步骤和注意事项&#xff1a; 方法一&#xff1a;使用第三方远程控制软件 选择一款可靠的第三方远程控…

18938 汉诺塔问题

### 思路 1. **递归解决问题**&#xff1a;使用递归方法解决汉诺塔问题。 2. **递归基准**&#xff1a;当只有一个盘子时&#xff0c;直接从源杆移动到目标杆。 3. **递归步骤**&#xff1a; - 将n-1个盘子从源杆移动到辅助杆。 - 将第n个盘子从源杆移动到目标杆。 - …

JavaScript二进制浮点数和四舍五入错误

二进制浮点数和四舍五入错误 实数有无数个&#xff0c;但JS通过浮点数的形式&#xff0c;只能表示有限个数&#xff0c;JS表现的常常是真实值的近似表示。 二进制无法表示类似于0.1这样的十进制数字&#xff0c;只能机器近似于0.1&#xff0c;看如下代码&#xff1a; <!D…

Python 中的方法解析顺序(MRO)

在 Python 中&#xff0c;MRO&#xff08;Method Resolution Order&#xff0c;方法解析顺序&#xff09;是指类继承体系中&#xff0c;Python 如何确定在调用方法时的解析顺序。MRO 决定了在多继承环境下&#xff0c;Python 如何寻找方法或属性&#xff0c;即它会根据一定规则…

二,MyBatis -Plus 关于映射 Java Bean 对象的注意事项和细节(详细说明)

二&#xff0c;MyBatis -Plus 关于映射 Java Bean 对象的注意事项和细节(详细说明) 文章目录 二&#xff0c;MyBatis -Plus 关于映射 Java Bean 对象的注意事项和细节(详细说明)1. 映射2. 表的映射3. 字段映射4. 字段失效5. 视图属性6. 总结&#xff1a;7. 最后&#xff1a; 1.…

【数据优化】基于GEE填补遥感缺失数据

GEE填补遥感数据缺失 1.写在前面2.填充代码2.1 年内中值数据填充MODIS NPP空值2.2 年内中值数据填充Landsat8 NDVI空值 1.写在前面 在遥感影像分析中&#xff0c;我们经常会遇到由于云层遮挡、传感器故障等多重因素导致的图像数据缺失问题。为了解决这一挑战&#xff0c;常用的…

Selenium with Python学习笔记整理(网课+网站持续更新)

本篇是根据学习网站和网课结合自己做的学习笔记&#xff0c;后续会一边学习一边补齐和整理笔记 官方学习网站在这获取&#xff1a; https://selenium-python.readthedocs.io/getting-started.html#simple-usage WEB UI自动化环境配置 (推荐靠谱的博客文章来进行环境配置,具…

MySQL高阶之存储过程

什么是存储过程? 存储过程可称为过程化SQL语言&#xff0c;是在普通SQL语句的基础上增加了编程语言的特点&#xff0c;把数据操作语句(DML)和查询语句(DQL)组织在过程化代码中&#xff0c;通过逻辑判断、循环等操作实现复杂计算的程序语言。 换句话说&#xff0c;存储过程其实…

Acwing BFS

一般通过队列实现&#xff0c;当边的权值相同时具有最短性&#xff0c;可以求最少操作步数。相比DFS无需回溯&#xff0c;而是逐层搜索。 Acwing 844 走迷宫 输入样例&#xff1a; 5 5 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 输出样例&#xff1a; 8 思路分析&am…