鱼C论坛

 找回密码
 立即注册
查看: 1907|回复: 1

[已解决]不知道这题该怎么做

[复制链接]
发表于 2022-10-19 10:39:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小钱还没睡醒 于 2022-10-19 13:00 编辑

题目:利用闭包实现数据的归一化与反归一化。提示: Xmax 和 Xmin 为自由变量(含义见参考资料2)。

所有数据写在代码之中,需 print 出待归一化数据的归一化结果,以及待反归一化数据的反归一化结果。

参考资料2: 数据归一化与反归一化
在统计分析或机器学习中,往往需要对输入数据进行归一化,使得所有数据的取值都在0到1之间,以便于排除由于数据标度不同造成的负面影响。

归一化的公式为:

Xnorm = ( x - Xmin) / ( Xmax - Xmin )

其中,x∈X为一个数据, 为多个数据组成的向量,Xmax 、 Xmin 分别为 的最大值和最小;值,Xnorm 为 x 归一化之后的结果。
归一化的关键信息是 Xmax 和 Xmin ,它们可被用于后续数据反归一化。反归一化的公式为:

x = Xmin + Xnorm( Xmax - Xmin)

实现步骤:
根据样本数据确定最大值和最小值;
根据最大值和最小值归一化新的数据;
根据最大值和最小值反归一化新的数据。

实验要求2数据
样本数据 [399, 641, 412, 419, 40, 691, 874, 961, 310, 624, 490, 291, 266, 946, 205, 627, 622, 965, 65, 889, 410,
559, 234, 220, 130, 247, 978, 275, 968, 164, 958, 316, 81, 328, 508, 254, 916, 236, 718, 452, 869, 825, 93, 915, 819,
175, 763, 257, 266, 689, 712, 255, 940, 38, 642, 355, 592, 275, 175, 638, 363, 678, 521, 733, 223, 356, 799]
待归一化数据 [717, 233, 140, 852, 257, 948, 346, 208, 851, 510, 408, 758, 344, 655, 523, 186]
待反归一化数据 [0.3202127659574468, 0.7585106382978724, 0.1148936170212766, 0.9382978723404255,
0.5414893617021277, 0.8095744680851064, 0.5851063829787234, 0.8776595744680851,
0.33404255319148934, 0.009574468085106383, 0.9995744680851064, 0.6797872340425531,
0.7595744680851064, 0.20638297872340425, 0.14893617021276595, 0.5563829787234043]


这题我毫无头绪,有点看不懂题
最佳答案
2022-10-19 16:48:04
应该是这样理解:
简单点理解,其实 归一化 就是 某个待归一化的数(测量值)dx  (满足 SMin <= dx <= SMax ,即以样本数据为基准参考,不能太大也不能太小) 这样就可以套用归一化的公式,计算得出 0-1 的 归一化normalized后的 值。
反归一化,也是类似,只是待反归一化的值 是 0-1的某个小数值, 套用反归一化denormalized公式,即可 算出对应的 反归一化值(某个基于样本数据的极值 可能的测量值)。
代码如下:
  1. sdata =  [399, 641, 412, 419, 40, 691, 874, 961, 310, 624, 490, 291, 266, 946, 205, 627, 622, 965, 65, 889, 410,559, 234, 220, 130, 247, 978, 275, 968, 164, 958, 316, 81, 328, 508, 254, 916, 236, 718, 452, 869, 825, 93, 915, 819,175, 763, 257, 266, 689, 712, 255, 940, 38, 642, 355, 592, 275, 175, 638, 363, 678, 521, 733, 223, 356, 799]

  2. Xmax, Xmin = max(sdata), min(sdata)
  3. Xmax, Xmin
  4. (978, 38)

  5. d = [717, 233, 140, 852, 257, 948, 346, 208, 851, 510, 408, 758, 344, 655, 523, 186]
  6. normalized = list(map(lambda x: (x-Xmin)/(Xmax-Xmin), d))
  7. normalized
  8. [0.7223404255319149, 0.2074468085106383, 0.10851063829787234, 0.8659574468085106, 0.23297872340425532, 0.9680851063829787, 0.3276595744680851, 0.18085106382978725, 0.8648936170212767, 0.502127659574468, 0.39361702127659576, 0.7659574468085106, 0.32553191489361705, 0.6563829787234042, 0.5159574468085106, 0.1574468085106383]

  9. nd =  [0.3202127659574468, 0.7585106382978724, 0.1148936170212766, 0.9382978723404255,0.5414893617021277, 0.8095744680851064, 0.5851063829787234, 0.8776595744680851,0.33404255319148934, 0.009574468085106383, 0.9995744680851064, 0.6797872340425531,0.7595744680851064, 0.20638297872340425, 0.14893617021276595, 0.5563829787234043]
  10. denormalized = list(map(lambda n: Xmin + n * (Xmax-Xmin), nd ))
  11. denormalized
  12. [339.0, 751.0, 146.0, 920.0, 547.0, 799.0, 588.0, 863.0, 352.0, 47.0, 977.6, 677.0, 752.0, 232.0, 178.0, 561.0]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-19 16:48:04 | 显示全部楼层    本楼为最佳答案   
应该是这样理解:
简单点理解,其实 归一化 就是 某个待归一化的数(测量值)dx  (满足 SMin <= dx <= SMax ,即以样本数据为基准参考,不能太大也不能太小) 这样就可以套用归一化的公式,计算得出 0-1 的 归一化normalized后的 值。
反归一化,也是类似,只是待反归一化的值 是 0-1的某个小数值, 套用反归一化denormalized公式,即可 算出对应的 反归一化值(某个基于样本数据的极值 可能的测量值)。
代码如下:
  1. sdata =  [399, 641, 412, 419, 40, 691, 874, 961, 310, 624, 490, 291, 266, 946, 205, 627, 622, 965, 65, 889, 410,559, 234, 220, 130, 247, 978, 275, 968, 164, 958, 316, 81, 328, 508, 254, 916, 236, 718, 452, 869, 825, 93, 915, 819,175, 763, 257, 266, 689, 712, 255, 940, 38, 642, 355, 592, 275, 175, 638, 363, 678, 521, 733, 223, 356, 799]

  2. Xmax, Xmin = max(sdata), min(sdata)
  3. Xmax, Xmin
  4. (978, 38)

  5. d = [717, 233, 140, 852, 257, 948, 346, 208, 851, 510, 408, 758, 344, 655, 523, 186]
  6. normalized = list(map(lambda x: (x-Xmin)/(Xmax-Xmin), d))
  7. normalized
  8. [0.7223404255319149, 0.2074468085106383, 0.10851063829787234, 0.8659574468085106, 0.23297872340425532, 0.9680851063829787, 0.3276595744680851, 0.18085106382978725, 0.8648936170212767, 0.502127659574468, 0.39361702127659576, 0.7659574468085106, 0.32553191489361705, 0.6563829787234042, 0.5159574468085106, 0.1574468085106383]

  9. nd =  [0.3202127659574468, 0.7585106382978724, 0.1148936170212766, 0.9382978723404255,0.5414893617021277, 0.8095744680851064, 0.5851063829787234, 0.8776595744680851,0.33404255319148934, 0.009574468085106383, 0.9995744680851064, 0.6797872340425531,0.7595744680851064, 0.20638297872340425, 0.14893617021276595, 0.5563829787234043]
  10. denormalized = list(map(lambda n: Xmin + n * (Xmax-Xmin), nd ))
  11. denormalized
  12. [339.0, 751.0, 146.0, 920.0, 547.0, 799.0, 588.0, 863.0, 352.0, 47.0, 977.6, 677.0, 752.0, 232.0, 178.0, 561.0]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 13:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表