網站首頁 編程語言 正文
1.前言 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
歸一化算法Normalization
將數據處理成量綱一直的數據,一般限定在[0,1]、[-1,1]
一般在進行建模的時候需要進行數據歸一化處理,
原因如下:
- 降低計算難度
- 有可能提高模型的預測精度
- 消除量綱影響
下面介紹三種常見的標準化方法,分別是最大最小值、正態中心化、小數點定標
2.Min-Max方法
2.1 公式
2.2 算法實現邏輯
- 1.找一組數據的最大最小值
- 2.利用公式歸一化
- 3.輸入結果(為了方便可視化展示,我們設計了代碼)
2.3 代碼
import numpy as np import pandas as pd import matplotlib.pyplot as plt # 1.最小最大標準化 Data = np.array([[0.2,0.9,29], ? ? ? ? ? ? ? ? [0.9,0.1,100], ? ? ? ? ? ? ? ? [0.5,0.5,30]]) #最?。畲髿w一化算法 # 1.1數據轉化 def MinMax(data): ? ? min = 0 ? ? max = 1 ? ? C = data[:,2] ? ? min = np.min(C) ? ? max = np.max(C) ? ? for one in data: ? ? ? ? one[2] = (one[2]-min) / (max-min) ? ? print('轉化后的矩陣:\n',data) ? ? return data # 1.2可視化 def ShowData(Data,ShowD1): ? ? length = len(Data) ? ? X = np.ones(Data.shape[0]) ? ? plt.figure(1) ? ? plt.subplot(121) ? ? for i in range(length): ? ? ? ? plt.scatter(X*(i+1),Data[:,i]) ? ? plt.subplot(122) ? ? for i in range(length): ? ? ? ? plt.scatter(X*(i+1),ShowD1[:,i]) ? ? plt.show() ShowData(Data,MinMax(Data.copy()))
轉化后的矩陣:
?[[0.2 ? ? ? ?0.9 ? ? ? ?0. ? ? ? ?]
?[0.9 ? ? ? ?0.1 ? ? ? ?1. ? ? ? ?]
?[0.5 ? ? ? ?0.5 ? ? ? ?0.01408451]]
2.4局限
- 數據規模過大不適應
- 數據歸一化后范圍在[0,1],對于一些有負有正數的原始數據慎用
3 Z-score標準化
3.1 公式
3.2 算法實現邏輯
- 輸入數據
- 求取數據的均值、方法,在利用中心化公式計算
- 輸出結果
3.3 代碼
def Zscore(data): ? ? x_mean = np.mean(data[:2]) ? ? length = len(data[:,2]) ? ? vari = np.sqrt((np.sum((data[:2]-x_mean)**2))/length) ? ? print('方差:',vari) ? ? data[:,2] = (data[:,2]-x_mean)/vari ? ? print('Z-score標準化后的矩陣是',data) ? ? return data ShowData(Data,Zscore(Data.copy()))
方差: 51.569160680908254
Z-score標準化后的矩陣是 [[0.2 ? ? ? ?0.9 ? ? ? ?0.13864876]
?[0.9 ? ? ? ?0.1 ? ? ? ?1.5154406 ]
?[0.5 ? ? ? ?0.5 ? ? ? ?0.15804019]]
3.4 局限
- 對樣本量少的數據,表現不好
- 標準化后范圍在有負有正,范圍在[-1,1]
4 小數定標法
4.1 公式
4.2 算法實現邏輯
- 輸入數據
- 絕對值化,最大值
- 將每個數除以最大值的數量級
- 輸入數據
4.3 代碼實現
# 小數定標歸一化算法 def Decimals(data): ? ? C = np.abs(data[:,2]) ? ? max = int(np.sort(C)[-1]) # 按從小到大排序,取最后一位,及最大值 ? ? k = len(str(max)) ? ? print('絕對值最大的位數:\n',k) ? ? data[:2] = data[:,2] /(10**k) ? ? print('小數點定標準化后的矩陣:\n',data) ? ? return data ShowData(Data,Decimals(Data.copy()))
絕對值最大的位數:
?3
小數點定標準化后的矩陣:
?[[2.9e-02 1.0e-01 3.0e-02]
?[2.9e-02 1.0e-01 3.0e-02]
?[5.0e-01 5.0e-01 3.0e+01]]
4.4 局限
- 受到最大值影響較大
原文鏈接:https://blog.csdn.net/weixin_43213884/article/details/123546610
相關推薦
- 2022-11-22 Python實例方法與類方法和靜態方法介紹與區別分析_python
- 2022-07-08 ???????C語言實現單鏈表基本操作方法_C 語言
- 2023-03-22 React?Native全面屏狀態欄和底部導航欄適配教程詳細講解_React
- 2022-10-16 Pytorch?linear?多維輸入的參數問題_python
- 2022-07-16 Linux查看日志的幾種方式
- 2024-01-10 右鍵添加 idea 打開功能
- 2023-02-10 python自定義函數中的return和print使用及說明_python
- 2023-07-24 uniapp開發小程序,包過大解決方案
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支