协调尺度:特征缩放在机器学习中的重要作用

news2024/11/28 5:37:55

目录

一、介绍

二、背景知识

三、了解功能缩放

四、特征缩放方法

五、特征缩放的重要性

六、实际意义

七、代码

八、结论


一、介绍

        特征缩放是机器学习和数据分析预处理阶段的关键步骤,在优化各种算法的性能和效率方面起着至关重要的作用。本文深入探讨了特征缩放的本质,探讨了其不同的方法,强调了其重要性,并考虑了其在机器学习模型中的应用的实际意义。

在机器学习的世界里,算法学会寻找模式并做出决策,特征缩放是很好的均衡器,确保每个特征,无论其原始规模如何,都有一个在数据合唱中同样响亮的声音。

二、背景知识

        特征缩放是一种用于机器学习和数据挖掘的数据预处理方法,用于对数据的自变量或特征的范围进行归一化。在机器学习的背景下,特征缩放可能至关重要,因为它直接影响使用距离计算的算法的性能,例如 k 最近邻 (KNN) 和 k 均值聚类,并且会显着影响神经网络和支持向量机中使用的梯度下降优化方法的性能。

        有几种常见的特征缩放方法:

1 最小-最大缩放(归一化):

  • 该方法单独缩放和转换每个特征,使其在训练集的给定范围内,例如,介于 0 和 1 之间。要素归一化值的计算公式为:

  • 其中 X 是原始值,minXmin 是要素的最小值,maxXmax 是要素的最大值。

2 标准化(Z 分数归一化):

  • 此方法对要素进行缩放,使其具有 0μ=0 和 1 σ=1 的标准正态分布属性,其中 μ 是平均值(平均值),σ 是与平均值的标准差。样本的标准分数(也称为 z 分数)的计算方法如下:

  • 标准化不会将值绑定到特定范围,这对于某些算法来说可能是一个问题(例如,神经网络通常期望输入值范围为 0 到 1)。

3 最大Abs缩放:

  • 单独缩放和转换每个特征,使训练集中每个特征的最大绝对值为 1.0。它不会移动/居中数据,因此不会破坏任何稀疏性。

4 Robust 缩放的:

  • 此方法删除中位数并根据分位数范围(通常是四分位距,IQR)缩放数据。它对异常值具有鲁棒性,当数据包含许多异常值或我们不想假设特征的正态分布时,会使用它。

        特征缩放应用于数据的自变量或特征,以标准化数据的范围。这在计算数据点之间距离的算法中非常重要,或者当特征具有不同的单位和比例时,因为它可以使训练过程更快,并减少卡在局部最优状态的机会。但是,缩放技术的选择可能取决于算法和数据的具体特征。

三、了解功能缩放

        特征缩放是对数据中自变量或特征范围进行归一化或标准化的过程。该技术的主要目标是确保没有一个特征因其规模而主导模型,从而使算法在训练过程中更快、更有效地收敛。对于依赖于距离计算的模型(例如 k 最近邻 (KNN) 和 k 均值聚类)或使用梯度下降优化方法(包括神经网络和支持向量机 (SVM))的模型,这一点尤为重要。

四、特征缩放方法

        有几种常见的功能缩放方法,每种方法都有其独特的应用和优点:

  1. 最小-最大缩放(归一化):此方法调整数据的缩放比例,使其适合特定范围,通常为 0 到 1。它适用于假定数据处于有限间隔但对异常值敏感的算法。
  2. 标准化(Z 分数归一化):与归一化不同,标准化不会将值绑定到特定范围,这使得它适用于不假设特定数据分布的算法。它将特征转换为均值为零,标准差为一,从而促进对数据规模敏感的算法更快地收敛。
  3. 最大 Abs 缩放:此技术按每个要素的最大绝对值缩放。这对于已经居中的数据或稀疏数据非常有用,其中零是一个有意义的值。
  4. 强大的扩展性:通过删除中位数并根据分位数范围缩放数据,鲁棒缩放可减轻异常值的影响。当数据集包含许多异常值或数据不服从正态分布时,它特别有利。

五、特征缩放的重要性

        特征缩放通过确保特征对结果的贡献相等来增强机器学习算法的性能,从而防止由于数据的固有规模而产生的偏差。例如,在梯度下降算法中,特征缩放可以显著加快收敛速度,因为它确保向最小值迈出的步长在所有维度上都是成比例的。同样,在计算数据点之间距离的聚类算法和模型中,要素缩放可确保距离度量不会因要素比例而偏斜。

六、实际意义

        在实践中,特征缩放方法的选择取决于所使用的算法和数据的具体特征。对于决策树或随机森林等算法,可能不需要特征缩放,因为这些模型对数据规模不敏感。然而,对于支持向量机、神经网络和基于距离的算法,特征缩放对于模型性能和准确性至关重要。

        此外,异常值的存在会显着影响使用哪种缩放方法。例如,最小-最大缩放可能对异常值高度敏感,可能会将大部分数据压缩到一个小范围内。在这种情况下,可靠的扩展或标准化可能更合适。

七、代码

        为了使用完整的 Python 代码示例来说明特征缩放,我们将创建一个合成数据集,应用不同的特征缩放技术,并可视化这些技术对数据集的影响。我们还将包含指标来评估缩放对简单机器学习模型的影响。

步骤 1:创建合成数据集

首先,我们将使用 创建一个具有不同比例特征的合成数据集。sklearn.datasets.make_classification

步骤 2:应用特征缩放技术

我们将应用以下功能缩放技术:

  • 最小-最大缩放
  • 标准化(Z 分数归一化)
  • 最大腹肌缩放
  • 强大的扩展能力

步骤 3:可视化要素缩放的效果

在应用每种缩放技术之前和之后,我们将使用绘图来可视化数据集。

步骤 4:评估对机器学习模型的影响

作为一个简单的评估,我们将使用逻辑回归模型来查看特征缩放如何影响其性能。我们将数据集拆分为训练集和测试集,应用缩放,训练模型,然后使用准确性作为指标对其进行评估。

让我们开始对这个过程进行编码:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, MinMaxScaler, MaxAbsScaler, RobustScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# Step 1: Create a synthetic dataset
X, y = make_classification(n_samples=1000, n_features=2, n_redundant=0, n_clusters_per_class=1, weights=[0.5], random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Function to apply scaling and train a logistic regression model
def apply_scaling_and_evaluate(scaler):
    X_train_scaled = scaler.fit_transform(X_train)
    X_test_scaled = scaler.transform(X_test)
    
    # Train logistic regression model
    model = LogisticRegression(random_state=42)
    model.fit(X_train_scaled, y_train)
    
    # Predict and evaluate
    predictions = model.predict(X_test_scaled)
    accuracy = accuracy_score(y_test, predictions)
    
    # Plotting
    plt.scatter(X_train_scaled[:, 0], X_train_scaled[:, 1], c=y_train, cmap='viridis', alpha=0.5)
    plt.title(f"{scaler.__class__.__name__} - Accuracy: {accuracy:.2f}")
    plt.xlabel('Feature 1')
    plt.ylabel('Feature 2')
    plt.show()

# Original Data Plot
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap='viridis', alpha=0.5)
plt.title("Original Data")
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

# Apply and visualize different scaling techniques
scalers = [MinMaxScaler(), StandardScaler(), MaxAbsScaler(), RobustScaler()]
for scaler in scalers:
    apply_scaling_and_evaluate(scaler)

解释:

  • 创建合成数据集:我们使用 生成一个具有两个特征的数据集。然后,将数据集拆分为训练集和测试集。make_classification
  • 应用缩放技术:对于每种缩放技术,我们创建一个缩放器对象,将其拟合到训练数据上,并转换训练集和测试集。
  • 训练和评估模型:我们在缩放数据上训练逻辑回归模型,并通过计算测试集的准确性来评估其性能。
  • 可视化:对于每种缩放技术,我们绘制缩放的特征以可视化数据分布的变化。

        此代码全面概述了如何在 Python 中应用特征缩放、可视化其效果以及评估对简单机器学习模型的影响。

八、结论

        特征缩放是机器学习算法预处理数据的基本步骤,可确保特征的缩放不会使模型产生偏差。通过了解并适当应用不同的特征缩放方法,数据科学家可以提高机器学习模型的性能、效率和准确性。因此,特征缩放不仅有助于算法的最佳功能,而且还强调了在机器学习和数据分析的更广泛背景下进行深思熟虑的数据预处理的重要性。

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

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

相关文章

蓝桥杯每日一题----单调栈和单调队列

单调栈和单调队列 单调栈 单调栈即栈内的元素是单调递减或者单调递增的,我们通过一个题目来理解。 单调栈模板题 题目描述 给出项数为 n 的整数数列 a 1 … a n a_1…a_n a1​…an​。 定义函数 f ( i ) f(i) f(i)代表数列中第 i 个元素之后第一个大于 a i …

安卓游戏开发框架应用场景以及优劣分析

一、引言 在移动游戏开发领域,选择合适的开发框架是项目成功的关键因素之一。特别是对于安卓平台,由于其开放性和庞大的用户基础,不同的游戏开发框架应运而生,旨在帮助开发者高效地构建游戏应用。以下是一些流行的安卓游戏开发框架…

OpenAI全新发布文生视频模型Sora - 现实,不存在了

OpenAI,发他们的文生视频大模型,Sora了。。。。。 而且,是强到,能震惊我一万年的程度。。。 https://openai.com/sora 如果非要用三个词来总结Sora,那就是“60s超长长度”、“单视频多角度镜头”和“世界模型” &am…

五、DataX源码分析、性能参数优化

DataX源码分析 一、总体流程二、程序入口1.datax.py2.com.alibaba.datax.core.Engine.java3.切分的逻辑并发数的确认 3.调度3.1 确定组数和分组算法3.2 数据传输 三、DataX性能优化1.关键参数2.优化:提升每个 channel 的速度3.优化:提升 DataX Job 内 Ch…

SpringBoot3 + Vue3 由浅入深的交互 基础交互教学

说明:这篇文章是适用于已经学过SpringBoot3和Vue3理论知识,但不会具体如何实操的过程的朋友,那么我将手把手从教大家从后端与前端交互的过程教学。 目录 一、创建一个SpringBoot3项目的和Vue3项目并进行配置 1.1后端配置: 1.1.1applicatio…

php基础学习之作用域和静态变量

作用域 变量(常量)能够被访问的区域,变量可以在常规代码中定义,也可以在函数内部定义 变量的作用域 在 PHP 中作用域严格来说分为两种,但是 PHP内部还定义一些在严格意义之外的一种,所以总共算三种—— 局部…

紫微斗数双星组合:廉贞天相在子午

文章目录 前言内容总结 前言 紫微斗数双星组合:廉贞天相在子午 内容 紫微斗数双星组合:廉贞天相在子午 性格分析 廉贞星最喜天相星同度来制其恶,因天相星之水可剋制廉贞星之火。廉贞星最喜天相星同度来制其恶,使廉贞星变为较温…

MySQL 基础知识(六)之数据查询(二)

目录 6 数值型函数 7 字符串函数 8 流程控制函数 9 聚合函数 10 分组查询 (group by) 11 分组过滤 (having) 12 限定查询 (limit) 13 多表查询 13.1 连接条件关键词 (on、using) 13.2 连接算法 13.3 交叉连接 (cross join) 13.4 内连接 (inner join) 13.5 外连接 …

【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱6(附带项目源码)

效果演示 文章目录 效果演示系列目录前言存储加载物品信息源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第25篇中,我们将探索如何用unity制作一个3D背包、库存、制作、快…

【leetcode994】腐烂的橘子(BFS)

文章目录 一、题目二、思路三、代码 一、题目 二、思路 首先将所有烂橘子入队,然后常规BFS遍历,注意while的截止条件除了队列为空,新鲜橘子数量大于0(没新鲜橘子也没必要继续遍历,保证时间计算的正确性)&a…

Compose自定义动画API指南

很多动画API都可以自定义其参数达到不同的效果,Compose也提供了相应的API供开发者进行自定义动画规范。 AnimationSpec 主要用存储动画规格,可以自定义动画的行为,在animate*AsState和updateTransition函数中,此函数默认参数为s…

机器学习——聚类问题

📕参考:西瓜书ysu老师课件博客(3)聚类算法之DBSCAN算法 - 知乎 (zhihu.com) 目录 1.聚类任务 2.聚类算法的实现 2.1 划分式聚类方法 2.1.1 k均值算法 k均值算法基本原理: k均值算法算法流程: 2.2 基于…

语言与真实世界的关系(超级语言生成能力将促进世界深刻变化)

语言与真实世界之间存在着紧密且复杂的关系。在人类社会中,语言是认知、表达和交流现实世界的主要工具,它帮助我们构建并理解周围环境,并将我们的思维和经验概念化。 1. 符号与指代: 语言是一种符号系统,通过词汇、句…

SG3225EEN晶体振荡器规格书

SG3225EEN 晶振是EPSON/爱普生的一款额定频率25 MHz至500 MHz的石英晶体振荡器,6脚贴片,LV-PECL输出,3225封装常规有源晶振,具有小尺寸,轻薄型,高稳定性,低相位抖动,低电源电压&…

17.3.1.2 曝光

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 基本算法:先定义一个阈值,通常取得是128 原图像:颜色值color(R,G&#…

OpenTitan- 开源安全芯片横空出世

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

【前端web入门第六天】02 flex布局

文章目录 Flex布局1.Flex组成2.主轴与侧轴对齐方式2.1 主轴对齐方式(横轴)2.2 侧轴对齐方式 (纵轴)2.3 修改主轴方向 3.弹性伸缩比4.弹性换行与行对齐方式4.1 弹性换行4.2 行对齐方式 Flex布局 1.Flex组成 设置方式:给父元素设置display: flex,子元素可以自动挤压…

找负环(图论基础)

文章目录 负环spfa找负环方法一方法二实际效果 负环 环内路径上的权值和为负。 spfa找负环 两种基本的方法 统计每一个点的入队次数,如果一个点入队了n次,则说明存在负环统计当前每个点中的最短路中所包含的边数,如果当前某个点的最短路所…

【C++】---类和对象(上)入门

一、类的定义 1.那么众所周知,C语言是面向过程的,关注的是过程,分析出求解的步骤,通过函数的调用来逐步解决问题 2.而C是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间交…

【自然语言处理】:实验1布置,Word2VecTranE的实现

清华大学驭风计划 因为篇幅原因实验答案分开上传,答案链接http://t.csdnimg.cn/5cyMG 如果需要详细的实验报告或者代码可以私聊博主 有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~ 实验1: Word2Vec&TranE的…