【机器学习7】特征缩放

news2024/11/15 17:59:54

特征缩放

  • 🍀特征缩放的重要性
  • 🌱归一化
  • 🌱标准化
  • 🌱更高级的缩放方法
  • 🌸导入数据集&将数据集划分为训练集和测试集
  • 🌸Sklearn-Learn算法实现归一化
  • 🌸Sklearn-Learn算法实现标准化

🍀特征缩放的重要性

特征缩放是数据预处理中一个容易被遗忘的步骤。
决策树和随机森林是两种维数不多的不需要特征缩放的机器学习算法,这些算法不受特征缩放的影响。梯度下降优化算法的实现,如果将特征缩放到同一尺度,大多数机器学习和优化算法将会表现得更好。
可以通过一个简单的例子,来说明特征缩放的重要性
假设有两个特征,一个特征的值为在1到10之间,另一个特征的值在1到100000之间。
例如使用Adaline的平方差损失函数,可以说算法主要根据第二个特征优化权重,因为第二个特征主导平方差损失函数值。
另一个例子是k近邻算法,k近邻算法使用欧式距离度量样本间的距离,这样样本间的距离将由第二个特征轴控制。

标准化归一化是两种常见的可以将特征值调整到同一尺度的方法。

🌱归一化

通常,归一化指的是将特征缩放到**[0,1]范围内,是最小最大缩放(min-max scaling)的一种特殊情况。
为了是数据归一化,可以简单地对每一个特征进行
最大最小缩放**。

在下面式子中,使用最大最小缩放方法归一化一个样本的第i个特征:

x n o r m ( i ) = x i − x m i n x m a x − x m i n x_{norm}^{(i)}=\frac{x^i-x_{min}}{x_{max}-x_{min}} xnorm(i)=xmaxxminxixmin
其中, x i x^{i} xi是一个特定样本的第i个特征, x m i n x_min xmin是所有数据第i个特征中的最小值, x m a x x_max xmax是所有数据第i个特征中的最大值, x n o r m i x_{norm}^{i} xnormi是特定样本缩放后的第i个特征。
使用最大最小缩放进行数据归一化是一种常用的方法,在需要特征值位于有界区间时非常有用。

要注意的是,只能训练数据拟合MinMaxScaler类,再用拟合后的参数转换测试数据集或任何新的数据样本,这一点非常重要。

🌱标准化

但对许多机器学习算法,尤其是梯度下降类型的算法,标准化更加实用,因为许多线性模型,如逻辑回归和支持向量机,将权重初始化为0或者接近0的随机数。
标准化将特征列的中心值设置为0,标准差设置为1,这样,特征列的参数与标准正态分布(零均值和单位方差)的参数相同,从而使模型更容易学习权重。
然而,应该强调,标准化不会改变特征列的分布形状,也不会将非正态分布的特征列转换为正态分布。
除了将数据进行平移缩放使其具有零均值和单位方差之外,标准差保留了特征列的其他信息,包括异常值等。
这样,学习算法对异常值的敏感度会降低,而最小最大缩放则将数据放到有限的范围从而丢失了异常值的信息

标准化可以用以下表达式表示:

x s t d ( i ) = x i − μ x σ x x_{std}^{(i)}=\frac{x^{i}- \mu_x}{\sigma_x} xstd(i)=σxxiμx
这里 μ x \mu_x μx是第i个特征列的样本均值, σ x \sigma_x σx是第i个特征列的标准差。
对于由数字0到5组成的简单样本数据集,下面展示标准化和归一化两种特征缩放方法之间的差异:

输入标准化最大最小归一化
0.0-1.463850.0
1.0-0.878310.2
2.0-0.292770.4
3.00.292770.6
4.00.878310.8
5.01.463851.0

同样,要注意的是,只能训练数据拟合StandardScaler类,再用拟合后的参数转换测试数据集或任何新的数据样本,这一点非常重要。

🌱更高级的缩放方法

Scikit-Learn还提供了其他更高级的特征缩放方化,例如RobustScaler。如果数据集是包含许多异常值的小数据集,那么RobustScaler尤其有用,并推荐使用。
类似地,如果机器学习算法很容易过拟合该数据集,那么RobustScaler也是一个不错的选择。RobustScaler独立处理数据的每个特征列。具体来讲,RobustScaler调整中位数为0,并根据数据集的第1和第3四分位数对数据进行缩放,以减小极值和异常值的影响。

🌸导入数据集&将数据集划分为训练集和测试集

import pandas as pd
df=pd.read_excel("D:\A_data\Data_wine数据\wine.xlsx")
from sklearn.model_selection import train_test_split
X,y=df.iloc[:,1:].values,df.iloc[:,0].values
X_train,X_test,y_train,y_test=train_test_split(X,y,train_size=0.3,random_state=0,stratify=y)

🌸Sklearn-Learn算法实现归一化

from sklearn.preprocessing import MinMaxScaler
mms=MinMaxScaler()
X_train_norm=mms.fit_transform(X_train)
X_test_norm=mms.transform(X_test)

在这里插入图片描述

🌸Sklearn-Learn算法实现标准化

from sklearn.preprocessing import StandardScaler
stdsc=StandardScaler()
X_train_std=stdsc.fit_transform(X_train)
X_test_std=stdsc.transform(X_test)

在这里插入图片描述

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

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

相关文章

Activity 的启动流程(Android 13)

Activity 的启动过程分为两种:一种是普通 Activity 的启动过程,另一种是根 Activity 的启动过程。普通 Activity 指的是除应用程序启动的第一个 Activity 之外的其他 Activity。根 Activity 指的是应用程序启动的第一个 Activity,因此&#x…

春秋云镜 :CVE-2020-21650(MyuCMS后台rce)

一、题目 靶标介绍: MyuCMS开源内容管理系统,采用ThinkPHP开发而成的社区商城聚合,插件,模板,轻便快捷容易扩展 其2.2版本中admin.php/config/add方法存在任意命令执行漏洞. 进入题目: exp: url/index.p…

计算机网络 QA

DNS 的解析过程 浏览器缓存。当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的 IP 地址(曾经访问过该域名并且没有清空缓存)系统缓存。当浏览器缓存中无域名对应的 IP 地址时,会自动检测用户计算机…

opencv 进阶20-随机森林示例

OpenCV中的随机森林是一种强大的机器学习算法,旨在解决分类和回归问题。随机森林使用多个决策树来进行预测,每个决策树都是由随机选择的样本和特征组成的。在分类问题中,随机森林通过投票来确定最终的类别;在回归问题中&#xff0…

Blazor组件化开发心得:Blazor开发套路

文章目录 前言Blazor开发套路文件分类示意图 如何分工 前言 接触Blazor也快有一个多月了,了解Blazor之后发现确实是个好东西,开发速度太快了,前端直接拿数据,通过SSR保证安全。但是有一个问题,服务器能承受多大的压力…

Spark项目Java和Scala混合打包编译

文章目录 项目结构Pom完整文件编译查看 实际开发用有时候引用自己写的一些java工具类,但是整个项目是scala开发的spark程序,在项目打包时需要考虑到java和scala混合在一起编译。 今天看到之前很久之前写的一些打包编译文章,发现很多地方不太对…

【资料分享】基于NXP i.MX 8M Plus的异构多核核心板规格书

1 核心板简介 创龙科技SOM-TLIMX8MP是一款基于NXP i.MX 8M Plus的四核ARM Cortex-A53 单核ARM Cortex-M7异构多核处理器设计的高端工业核心板,ARM Cortex-A53(64-bit)主处理单元主频高达1.6GHz,ARM Cortex-M7实时处理单元主频高达800MHz。处理器采用14…

【Java】代理实现重试功能

在有些调用http请求功能中,会因为网络的抖动,使得网络不稳定。这时需要一个功能来实现重试。 下面介绍使用JDK的代理功能和Cglib来实现简单的代理重试。 JDK的代理需要被代理的类实现接口,下面的newProxyInstance代码中需要interfaces参数&am…

element-table的动态操作,自动以表格,动态新增行、列,删除行列

灵活的自定义表格行列以及增删改查的操作,右键选中列则是列的删除&#xff0c;效果如下 <template><div class"st-table"><div style"width: 100%"><el-button click"addRow()" type"primary" icon"CircleP…

深入理解android线程池实现原理

为什么要引入线程池 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗提高响应速度。当任务到达时&#xff0c;任务可以不需要等到线程创建就能立即执行提高线程的可管理性。线程是稀缺资源&#xff0c;如果无限制的创建&#xff0c;不仅会消耗系统的资源…

大学资产管理,这个细节真的很绝!

无论是个人还是企业&#xff0c;资产都是其成功的基石。通过资产管理系统&#xff0c;个人可以更好地管理他们的投资组合&#xff0c;实现财务目标。 对于企业而言&#xff0c;资产管理系统有助于提高资源利用效率&#xff0c;减少损失和浪费&#xff0c;优化生产和运营流程。 …

深度学习处理文本(NLP)

文章目录 引言1. 反向传播1.1 实例流程实现1.2 前向传播1.3 计算损失1.4 反向传播误差1.5 更新权重1.6 迭代1.7 BackPropagation & Adam 代码实例 2. 优化器 -- Adam2.1 Adam解析2.2 代码实例 3. NLP任务4. 神经网络处理文本4.1 step1 字符数值化4.2 step 2 矩阵转化为向量…

javaWeb差缺补漏(一)【针对于自身知识点掌握情况】

前端三大件部分 1、a标签的target属性iframe标签的name属性 2、textarea标签&#xff1a;表示多行文本输入。起始标签和结束标签中的内容是默认值。 rows&#xff1a;属性设置可以显示多少行。 cols&#xff1a;属性设置每行显示多少列。 3、form表单的action提交的时候&a…

LC-1267. 统计参与通信的服务器(枚举 + 计数)

1267. 统计参与通信的服务器 中等 这里有一幅服务器分布图&#xff0c;服务器的位置标识在 m * n 的整数矩阵网格 grid 中&#xff0c;1 表示单元格上有服务器&#xff0c;0 表示没有。 如果两台服务器位于同一行或者同一列&#xff0c;我们就认为它们之间可以进行通信。 请…

服务器数据恢复-ESXi虚拟化误删除的数据恢复案例

服务器数据恢复环境&#xff1a; 一台服务器安装的ESXi虚拟化系统&#xff0c;该虚拟化系统连接了多个LUN&#xff0c;其中一个LUN上运行了数台虚拟机&#xff0c;虚拟机安装Windows Server操作系统。 服务器故障&分析&#xff1a; 管理员因误操作删除了一台虚拟机&#x…

苹果iPhone 15 Ultra和iPhone 15 Pro Max:新名字是否值得期待?

我们即将发现一个名字里有什么,至少如果一个关于iPhone 15 Pro Max的新谣言被证明是准确的。一份新的报告表明,当这款手机可能在苹果9月的发布会上首次亮相时,苹果可能会放弃Pro Max的名字,而将其称为iPhone 15 Ultra。 改名的原因是什么?好吧,这肯定会将苹果最高端的手…

【MD5加密】

MD5加密 什么是MD5密码MD5用途MD5特点MD5加密MD5解密总结那我们上面也已经提到啦&#xff0c;说MD5是可以进行解密或者说他是可以泄露密码等&#xff0c;所以我们还可以使用以下方法进行再次加密 第一种&#xff1a;MD5固定盐值第二种&#xff1a;MD5随机盐值 什么是MD5密码 官…

基于Jenkins构建生产CICD环境(第二篇)

基于Jenkins自动打包并部署Tomcat环境 传统网站部署的流程 在运维过程中&#xff0c;网站部署是运维的工作之一。传统的网站部署的流程大致分为:需求分 析-->原型设计-->开发代码-->提交代码-->内网部署-->内网测试-->确认上线-->备份数据-->外网更新…

echarts 甘特图一组显示多组数据

<template><el-button type"primary" click"addlin">添加线</el-button><el-button type"success" click"addArea">添加区域</el-button><div ref"echart" id"echart" class&qu…

用友T3 T6 服务无法启动 windows10 11等操作系统 T3服务没有开启

windows 10 11 等高版本操作系统故障。 于2023-08-23日大量爆发。。 导致原因&#xff0c;windows操作系统根证书颁发机构吊销或已到期。 正版软件请打11.2最新补丁即可解决。 如果是老版本需要修复证书才可以。