【机器学习7】特征缩放

特征缩放

  • 🍀特征缩放的重要性
  • 🌱归一化
  • 🌱标准化
  • 🌱更高级的缩放方法
  • 🌸导入数据集&将数据集划分为训练集和测试集
  • 🌸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.mzph.cn/news/55987.shtml

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

相关文章

Android——基本控件(下)(十八)

1. 时钟组件:AnalogClock与DigitalClock 1.1 知识点 (1)掌握AnalogClock与DigitalClock的使用; 1.2 具体内容 package com.example.clockproject;import android.os.Bundle; import android.app.Activity; import android.view…

LeetCode 1267. 统计参与通信的服务器

【LetMeFly】1267.统计参与通信的服务器 力扣题目链接:https://leetcode.cn/problems/count-servers-that-communicate/ 这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表…

【C++设计模式】开放-封闭原则

2023年8月27日,周日下午 我觉得我的这篇博客还是写得很不错的,哈哈哈。 目录 概述举例说明用开放-封闭原则重构 概述 开放-封闭原则(Open-Closed Principle,OCP)是面向对象设计中的一个重要原则,也是许多…

npm install sentry-cli失败的问题

1. 目前报错 2. 终端运行 npm set ENTRYCLI_CDNURLhttps://cdn.npm.taobao.org/dist/sentry-cli npm set sentrycli_cdnurlhttps://cdn.npm.taobao.org/dist/sentry-cli3. 再安装 npx sentry/wizardlatest -i nextjs即可成功

将Series序列中的缺失值用后一个值填充Series.bfill()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 对于Series序列中的缺失值n1 用n1后面的值n2来填充替代 Series.bfill() [太阳]选择题 关于以下代码的说法中错误的是? import numpy as np import pandas as pd a pd.Series([1,np.nan,2,np.…

react 获取表单中输入框的值

通过使用useState钩子来创建一个状态变量,你可以同时获取多个Input框的值。 1获取input框的值: import React, { useState } from react;function MyComponent() {const [forms, setForms] useState({name: ,nation: ,});const handleInputChange (e…

BlazorServer中C#与JavaScript的相互调用

BlazorServer中C#与JavaScript的相互调用 前言: ​ 虽然BlazorServer中推荐使用C#在razor页面中的替代JavaScript来完成逻辑的编写,但当需要使用第三方的javascript文件/组件里的内容时,则难免要在C#中调用其方法或对象。反之当你的(用到第…

【Go 基础篇】切片:Go语言中的灵活数据结构

在Go语言中,切片(Slice)是一种强大且灵活的数据结构,用于管理和操作一系列元素。与数组相比,切片的大小可以动态调整,这使得它成为处理动态数据集合的理想选择。本文将围绕Go语言中切片的引入,介…

WPF网格拖动自动布局效果

WPF网格拖动自动布局效果 使用Canvas和鼠标相关事件实现如下的效果: XAML代码: <Window x:Class="CanvasTest.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:

Linux部署RocketMQ并使用SpringBoot创建生产、消费者

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;RocketMQ、消息队列☀️每日 一言&#xff1a;在你心灰意冷、心烦意乱时也不要停下你的脚步&#xff01; 一、前言 RocketMQ&#xff08;Apache RocketMQ&#xff09;是一种开源的分布式消息中间…

聊一聊微前端框架的选型和实现 | 业务平台

一、项目背景 目前&#xff0c;我们开发维护的项目主要有 6 个&#xff0c;但是分别对应 PC 和 H5 两个端&#xff1a; 如上图所示&#xff0c;我们 6个项目最开始是一个一个进行开发维护的&#xff0c;但是到后期&#xff0c;这几个项目之间有的部分会有业务逻辑不同&#xff…

AUTOSAR从入门到精通-【应用篇】基于 AUTOSAR 的辅助驾驶系统域控制器软件开发(续)

目录 3.4 软件平台 CameraService 模块开发 3.4.1 中继模块 3.4.2 数据管理与调度模块

BUUCTF [SWPU2019]Web1

​ 这是一道sql二次注入题目&#xff0c;但是注入点并不在登录处 注册一个用户然后登录 广告申请处进行sql注入 你会发现过滤了很多关键字 空格#information等等 这里用到了一些绕过技巧 使用 /**/ 代替空格 union/**/select/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,1…

c++11 标准模板(STL)(std::basic_ostringstream)(一)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_ostringstream;(C11 前)template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allo…

LLaMA中ROPE位置编码实现源码解析

1、Attention中q&#xff0c;经下式&#xff0c;生成新的q。m为句长length&#xff0c;d为embedding_dim/head θ i 1 1000 0 2 i d \theta_i\frac{1}{10000^\frac{2i}{d}} θi​10000d2i​1​ 2、LLaMA中RoPE源码 import torchdef precompute_freqs_cis(dim: int, end: i…

uniapp 开发微信小程序使用echart的dataZoom属性缩放功能不生效!bug记录!

在本项目中使用的是这个echart库 在项目中添加了dataZoom配置项但是不生效&#xff0c;突然想到微信小程序代码大小的限制&#xff0c;之前的echarts.js是定制的&#xff0c;有可能没有加dataZoom组件。故重新定制echarts.js。之前用的echarts版本是5.0.0&#xff0c;这次也是…

Web Components

Web Components标准非常重要的一个特性是&#xff0c;它使开发者能够将HTML页面的功能封装为custom elements&#xff08;自定义标签&#xff09;&#xff0c;可以使用CustomElementRegistry来管理自定义标签 <script>//1、创建自定义标签class NewElement extends HTML…

Java基础十八(正则表达式 + 日期时间)

1. 正则表达式 1.1 普通字符 字符描述示例[abc]匹配 […] 中所有字符[hlo] 匹配字符串 "hello world" 中所有的 h l o 字母[^ABC]匹配除了 […] 中所有字符[hlo] 匹配字符串 "hello world" 中除了 h l o 的所有字母[^a-z]匹配除了 […] 中所有字符[hlo] 匹…

Sinkhorn算法

Sinkhorn算法 介绍示例代码 介绍 Sinkhorn算法是一种用于解决最优传输问题的迭代算法。最优传输问题是指在给定两个概率分布 μ \mu μ和 ν \nu ν的情况下&#xff0c;找到一个最优的转移方案&#xff0c;使得从 μ \mu μ到 ν \nu ν的转移成本最小。Sinkhorn算法通过迭代…

C语言static关键字

目录 概述1. 局部变量1.1 普通局部变量1.2 静态局部变量 2.全局变量2.1 普通全局变量2.2 静态全局变量 3.函数4.静态块总结 概述 本文简单介绍一下static关键字在c语言中的应用。 1. 局部变量 1.1 普通局部变量 普通局部变量是在函数内部或代码块内部定义的变量。这些变量只…