python三種數(shù)據(jù)標準化方式
python三種數(shù)據(jù)標準化
數(shù)據(jù)變換是數(shù)據(jù)準備的重要環(huán)節(jié),它通過數(shù)據(jù)平滑、數(shù)據(jù)聚集、數(shù)據(jù)概化和規(guī)范化 等方式將數(shù)據(jù)轉換成適用于數(shù)據(jù)挖掘的形式。
常見的變換方法:
- 1.數(shù)據(jù)平滑:去除數(shù)據(jù)中的噪聲,將連續(xù)數(shù)據(jù)離散化。這里可以采用分箱、聚類和回歸的方式進行數(shù)據(jù)平滑
- 2.數(shù)據(jù)聚集:對數(shù)據(jù)進行匯總,在SQL中有一些聚集函數(shù)可以供我們操作(比如Max)反饋某個字段的數(shù)值最大值,Sum返回某個字段的數(shù)值總和;
- 3.數(shù)據(jù)概化:將數(shù)據(jù)由較低的概念抽象成為較高的概念,減少數(shù)據(jù)復雜度,即用更高的概念替代更低的概念。比如說上海、杭州、深圳、北京可以概化為中國。
- 4.數(shù)據(jù)規(guī)范化:使屬性數(shù)據(jù)按比例縮放,這樣就將原來的數(shù)值映射到一個新的特定區(qū)域中。常用的方法有最小一最大規(guī)范化、Z-score規(guī)范化、按小數(shù)定標規(guī)范化等;
- 5.屬性構造:構造出新的屬性并添加到屬性集中。這里會用到特征工程的知識,因為通過屬性與屬性的連接構造新的屬性,其實就是特征工程。比如說,數(shù)據(jù)表中統(tǒng)計每個人的英語、語文和數(shù)學成績,你可以構造一個“總和“這個屬性,來作為新屬性。這樣“總和這個屬性就可以用到后續(xù)的數(shù)據(jù)挖掘計算中。
在這些變換方法中,最簡單易用的就是對數(shù)據(jù)進行規(guī)范化處理。下面我來給你講下如何對數(shù)據(jù)進行規(guī)范化處理。
1、Min-max 歸一化
Min-max規(guī)范化方法是將原始數(shù)據(jù)變換到[0,1]的空間中。
用公式表示就是:
新數(shù)值=(原數(shù)值-極小值)/(極大值-極小值)。
2、Z-Score標準化
我們定義:
新數(shù)值=(原數(shù)值一均值)/標準差。
3、小數(shù)定標規(guī)范化
小數(shù)定標規(guī)范化就是通過移動小數(shù)點的位置來進行規(guī)范化。
小數(shù)點移動多少位取決于屬性A的取值中的最大絕對值。
舉個例子:
- 比如屬性A的取值范圍是-999到88,那么最大絕對值為999,小數(shù)點就會移動3位,即新數(shù)值=原數(shù)值/1000。
- 那么A的取值范圍就被規(guī)范化為-0.999到0.088。
Python的SciKit-Learn庫使用
- Min-max 規(guī)范化
from sklearn import preprocessing import numpy as np #初始化數(shù)據(jù),每一行表示一個樣本,每一列表示一個特征 x=np.array([[0.,-3.,1.], [3.,1.,2.], [0.,1.,-1.]]) #將數(shù)據(jù)進行[0,1]規(guī)范化 min_max_scaler=preprocessing.MinMaxScaler() minmax_x=min_max_scaler.fit_transform(x) print (minmax_x)
- Z-Score規(guī)范化
from sklearn import preprocessing import numpy as np #初始化數(shù)據(jù) x=np.array([[0.,-3.,1.], [3.,1.,2.], [0.,1.,-1.]]) #將數(shù)據(jù)進行Z-Score規(guī)范化 scaled_x=preprocessing.scale(x) print (scaled_x)
- 小數(shù)定標規(guī)范化
from sklearn import preprocessing import numpy as np #初始化數(shù)據(jù) x=np.array([[0.,-3.,1.], [3.,1.,2.], [0.,1.,-1.]]) #小數(shù)定標規(guī)范化 j=np.ceil(np.log10(np.max(abs(x))) scaled_x=X/(10**j) print (scaled_x)
4、歸一化和標準化的區(qū)別和聯(lián)系
區(qū)別:
- 歸一化是將樣本的特征值轉換到同一量綱下把數(shù)據(jù)映射到[0,1]或者[a,b]區(qū)間內,僅由變量的極值決定,因此區(qū)間放縮法是歸一化的一種。
- 標準化是依照特征矩陣的列處理數(shù)據(jù),其通過求z-score的方法,轉換為標準正態(tài)分布,和整體樣本分布相關,每個樣本點都能對標準化產生影響。
- 歸一化會改變數(shù)據(jù)的原始距離,分布,信息;
- 標準化一般不會。
聯(lián)系:
- 它們的相同點在于都能取消由于量綱不同引起的誤差;
- 都是一種線性變換,都是對向量X按照比例壓縮再進行平移。
5、使用情形:
什么時候用歸一化?什么時候用標準化?
(1)如果對輸出結果范圍有要求,用歸一化。
(2)如果數(shù)據(jù)較為穩(wěn)定,不存在極端的最大最小值,用歸一化。
(3)如果數(shù)據(jù)存在異常值和較多噪音,用標準化,可以間接通過中心化避免異常值和極端值的影響。
6、哪些模型必須歸一化/標準化?
- ①SVM
- ②KNN
- ③神經網(wǎng)絡
- ④PCA等
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解python的sorted函數(shù)對字典按key排序和按value排序
這篇文章主要介紹了詳解python的sorted函數(shù)對字典按key排序和按value排序,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08Python圖像的增強處理操作示例【基于ImageEnhance類】
這篇文章主要介紹了Python圖像的增強處理操作,結合實例形式分析了使用ImageEnhance類處理圖片的亮度、對比度、色度以及銳度等相關操作技巧,需要的朋友可以參考下2019-01-0110 行 Python 代碼教你自動發(fā)送短信(不想回復工作郵件妙招)
這篇文章主要介紹了10 行 Python 代碼教你自動發(fā)送短信(不想回復工作郵件妙招),目前在國內通過手機短信保障信息安全是比較常見的,具體實例代碼大家跟隨小編一起通過本文學習吧2018-10-10Windows8下安裝Python的BeautifulSoup
這篇文章主要介紹了Windows8下安裝Python的BeautifulSoup,本文著重講解安裝中出現(xiàn)的錯誤和解決方法,需要的朋友可以參考下2015-01-01Python使用Bokeh實現(xiàn)交互式圖表的創(chuàng)建
Bokeh?是一個流行的?Python?數(shù)據(jù)可視化庫,可以生成高質量的交互式圖表,這篇文章主要就介紹了Python如何使用Bokeh實現(xiàn)交互式圖表的創(chuàng)建,需要的可以參考一下2023-06-06