sklearn机器学习包中的对原始数据的预处理及训练集、测试集的分割

2023-11-14

sklearn机器学习包中的对原始数据的预处理及训练集、测试集的分割

一 、数据预处理

sklearn.preprocessing 包提供了几个常见的实用功能和变换器类型,用来将原始特征向量更改为更适合机器学习模型的形式。

1. 标准化

按照数据集各特征的均值与方差对其进行标准化转换

sklearn.preprocessing.scale(X, axis=0, with_mean=True, with_std=True, copy=True)
axis 可以分别取0 或者 1

from sklearn import preprocessing
import numpy as np
X_train = np.array([[ 1., -1.,  2.],
                    [ 2.,  0.,  0.],
                    [ 0.,  1., -1.]])      
X_scaled = preprocessing.scale(X_train)
X_scaled
array([[ 0.        , -1.22474487,  1.33630621],
       [ 1.22474487,  0.        , -0.26726124],
       [-1.22474487,  1.22474487, -1.06904497]])
 X_scaled.mean(axis=0)
	array([0., 0., 0.])
X_scaled.std(axis=0)
 	array([1., 1., 1.])

2. 归一化

对各样本的不同特征进行数值处理(即axis=1),消除量纲的影响。

sklearn.preprocessing.normalize(X, norm=‘l2’, axis=1, copy=True, return_norm=False)
norm 可以取’l1’ 、‘l2’、‘max’,axis 可以取0、1

X = [[ 1., -1.,  2.],
     [ 2.,  0.,  0.],
     [ 0.,  1., -1.]]
X_normalized = preprocessing.normalize(X, norm='l2')
X_normalized
array([[ 0.40824829, -0.40824829,  0.81649658],
       [ 1.        ,  0.        ,  0.        ],
       [ 0.        ,  0.70710678, -0.70710678]])

3. 最小最大标准化

  1. 将特征缩放到给定的最小值和最大值之间,通常在 0~1 之间,即:
    ( x − x m i n x m a x − x m i n ) (\frac{x-x_{min}}{x_{max}-x_{min}}) (xmaxxminxxmin)
  2. 将每个特征的最大绝对值转换至单位大小,即:
    ( x ∣ x m a x ∣ ) (\frac{x}{\mid{x_{max}}\mid}) (xmaxx)
    可以分别使用 preprocessing 中的类 MinMaxScalerMaxAbsScaler 实现。

class sklearn.preprocessing.MinMaxScaler(feature_range=(0, 1), copy=True)

X_train = np.array([[ 1., -1.,  2.],
                    [ 2.,  0.,  0.],
                    [ 0.,  1., -1.]])
min_max_scaler = preprocessing.MinMaxScaler()
X_train_minmax = min_max_scaler.fit_transform(X_train)
X_train_minmax
array([[0.5       , 0.        , 1.        ],
       [1.        , 0.5       , 0.33333333],
       [0.        , 1.        , 0.        ]])
       
# 按训练集的最大最小值对测试集进行缩放
X_test = np.array([[ -3., -1.,  4.]])
X_test_minmax = min_max_scaler.transform(X_test)
X_test_minmax
array([[-1.5       ,  0.        ,  1.66666667]])
#训练集中最大最小值查的倒数
min_max_scaler.scale_
array([0.5       , 0.5       , 0.33333333])
#训练集中的最小值
min_max_scaler.min_
array([0.        , 0.5       , 0.33333333])

MaxAbsScaler 与 MinMaxScaler 类似,这里就不做详细的介绍了。

当你不想创建对象时,可以使用 scale 模块中提供的方法 minmax_scale 以及 maxabs_scale

preprocessing.minmax_scale(X_train)
array([[0.5       , 0.        , 1.        ],
       [1.        , 0.5       , 0.33333333],
       [0.        , 1.        , 0.        ]])
preprocessing.maxabs_scale(X_train)
array([[ 0.5, -1. ,  1. ],
       [ 1. ,  0. ,  0. ],
       [ 0. ,  1. , -0.5]])

4. 缺失值插补

Imputer 类提供了估算缺失值的基本策略,使用缺失值所在的行/列中的平均值、中位数或者众数来填充。

class sklearn.preprocessing.Imputer(missing_values=‘NaN’, strategy=‘mean’, axis=0, verbose=0, copy=True)

from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit([[1, 2], [np.nan, 3], [7, 6]]) #训练类

X = [[np.nan, 2], [6, np.nan], [7, 6]] #使用训练的均值插补缺失值
imp.transform(X)

二 、训练集测试集的划分

利用 scikit-learn 包中的 train_test_split 辅助函数可以很快地将实验数据集按照不同的比例划分为训练集(training sets)和测试集(test sets)。

sklearn.model_selection.train_test_split(*arrays, **options)

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

iris = load_iris()
iris.data.shape,iris.target.shape
((150, 4), (150,))
#测试集的占比为0.4
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.4, random_state=0)
X_train.shape, y_train.shape
((90, 4), (90,))
X_test.shape, y_test.shape
((60, 4), (60,))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sklearn机器学习包中的对原始数据的预处理及训练集、测试集的分割 的相关文章

随机推荐

  • MLIR入门系列系列学习笔记

    目录 1 名字解释 这一定义包含3个关键元素 2 代码演示 2 1 环境准备 2 2 编译llvm project 2 3 测试解析 2 3 1 源程序 2 3 2 将源程序生成抽象语法树 AST 3 MLIR三要素 3 1 MLIRGen
  • 为什么在组件内部data是一个函数而不是一个对象?

    为什么在组件内部data是一个函数而不是一个对象 因为在组件复用的时候会重新生成一个对象 而data是一个对象的话 因为对象是引用数据类型 data数据会被复用 而当data是一个函数的时候每次调用的时候就会返回一个新的data对象 vue
  • 安装--centos7上使用kubeadm安装三节点的k8s集群

    安装文档 https kubernetes io zh cn docs setup production environment tools kubeadm install kubeadm 参考 https blog csdn net qq
  • 瑞吉外卖业务开发

    一 软件开发整体介绍 软件开发流程 需求分析 产品原型 需求规格说明书 设计 产品文档 UI界面设计 概要设计 详细设计 数据库设计 编码 项目代码 单元测试 测试 测试用例 测试报告 上线运维 软件环境安装 配置 角色分工 项目经理 对整
  • 2023华为OD机试真题【垃圾短信识别】

    题目描述 大众对垃圾短信深恶痛绝 希望能对垃圾短信发送者进行识别 为此 很多软件增加了垃圾短信的识别机制 经分析 发现正常用户的短信通常具备交互性 而垃圾短信往往都是大量单向的短信 按照如下规则进行垃圾短信识别 本题中 发送者A符合以下条件
  • unity3d FPS 枪的后座力

    实现枪开枪后 向上偏移一段距离 再缓慢下移复位 模仿cs 调小后座力 using UnityEngine using System Collections public class Camera2Follower MonoBehaviour
  • Linux驱动开发--平台总线id和设备树匹配

    目录 一 ID匹配之框架代码 二 ID匹配之led驱动 三 设备树匹配 四 设备树匹配之led驱动 五 一个编写驱动用的宏 一 ID匹配之框架代码 id匹配 可想象成八字匹配 一个驱动可以对应多个设备 优先级次低 注意事项 device模块
  • 学会QT从这里开始——教你快速学会QT

    为了提高提高推文质量 最近又再翻看QT书籍 不知道大家有没有发现 QT书籍大多都是从环境 安装 控件开始讲解 好 现在开始学习吧 1 环境安装 2 新建项目 3 学习控件 QButton QLable QLineEdit QTextEdit
  • nacos2.2.1集成达梦数据库

    nacos2 2 1集成达梦数据库 1 下载源码 https github com alibaba nacos 2 新增达梦驱动依赖 父pom xml
  • openwrt篇修改WiFi热点默认名称和主机名

    在如下图文件中 修改ssid 在如下图文件中修改hostname
  • Linux的用户空间与内核空间

    一 简介 Linux 操作系统和驱动程序运行在内核空间 应用程序运行在用户空间 两者不能简单地使用指针传递数据 因为Linux使用的虚拟内存机制 用户空间的数据可能被换出 当内核空间使用用户空间指针时 对应的数据可能不在内存中 用户空间的内
  • vue3项目引入高德地图详细方法教程

    项目需求需要引入地图 对于目前最新的Vue3 0 无论是百度 高德 腾讯地图目前还没有适配 只有Vue 2 x版本的 目前只有谷歌地图的Vue3 0适配 但是没有适配并不代表不能使用 下面就来教大家如何使用 1 在高德开发平台申请你的key
  • react定义函数,默认函数参数的方式

    参数是 对象 有传入参数用传入参数作为入参数 无传入参数用默认值 getTableData async pageData gt const params Object assign currPage 1 pageSize this stat
  • 网传字节跳动实习生删除GB以下所有机器学习模型,差点没上头条

    作者 陈大鑫 陈彩娴 来源 AI科技评论 昨晚脉脉上有网友爆料 字节跳动一位实习生删除了公司所有轻量级别的机器学习模型 什么是lite模型 该楼主表示 lite模型就是公司内几乎所有GB大小以下的机器学习模型 且全部被删除了 实习生直接删除
  • 公司固定资产怎么明细管理

    固定资产的管理是一个至关重要的环节 它不仅影响到企业的运营效率和经济效益 也直接影响到公司的长期发展 因此 对固定资产进行精细化管理 是每一个负责任的企业都应该做到的 本文将探讨如何通过创新的方式 实现公司固定资产的明细管理 我们需要明确什
  • 设置vscode终端的最大输出行

    使用vscode终端输出的时候 如果输出的行数很多 之前打印的东西就看不到了 因此需要设置一下终端输出的最大行数来保留之前的信息 terminal integrated bell scrollback
  • MMDet——EMA更新hook详解

    Hook 首先需要明白mmdet中hook机制 EMA就是建立在Hook机制上的 推荐一个Hook详解 深度理解目标检测 MMdetection HOOK机制 EMA 指数平均 exponential mean average 一般来说 在
  • 使用Google Guava Cache Util工具类实现本地缓存设置过期时间的Java应用

    使用Google Guava Cache Util工具类实现本地缓存设置过期时间的Java应用 随着互联网应用的发展 缓存成为提高系统性能和响应速度的关键技术之一 而在Java开发中 Google Guava提供了一个强大的缓存工具类 Ca
  • 关于数据库表字段的数据权限设计

    吐槽 刚在同事的帮忙下 把maven工程成功导入到eclipse 期间遇到的最大问题就是安装eclipse插件 花费了其中大部分的时间 现在做的研发产品 遇到的一个新的需求是 控制外部系统对于表中字段的访问权限 其实说白了 就是 对于CRU
  • sklearn机器学习包中的对原始数据的预处理及训练集、测试集的分割

    sklearn机器学习包中的对原始数据的预处理及训练集 测试集的分割 一 数据预处理 1 标准化 2 归一化 3 最小最大标准化 4 缺失值插补 二 训练集测试集的划分 一 数据预处理 sklearn preprocessing 包提供了几