您好,登錄后才能下訂單哦!
這篇文章主要介紹了python中數(shù)據(jù)標(biāo)準(zhǔn)化及離散化的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
標(biāo)準(zhǔn)化
1、離差標(biāo)準(zhǔn)化
是對原始數(shù)據(jù)的線性變換,使結(jié)果映射到[0,1]區(qū)間。方便數(shù)據(jù)的處理。消除單位影響及變異大小因素影響。
基本公式為:
x'=(x-min)/(max-min)
代碼:
#?。痷ser/bin/env python #-*- coding:utf-8 -*- #author:M10 import numpy as np import pandas as pd import matplotlib.pylab as plt import mysql.connector conn = mysql.connector.connect(host='localhost', user='root', passwd='123456', db='python')#鏈接本地數(shù)據(jù)庫 sql = 'select price,comment from taob'#sql語句 data = pd.read_sql(sql,conn)#獲取數(shù)據(jù) #離差標(biāo)準(zhǔn)化 data1 = (data-data.min())/(data.max()-data.min()) print(data1)
運行結(jié)果
2、標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化
消除單位影響以及變量自身變異影響。(零-均值標(biāo)準(zhǔn)化)
基本公式為:
x'=(x-平均數(shù))/標(biāo)準(zhǔn)差
python代碼:
#?。痷ser/bin/env python #-*- coding:utf-8 -*- #author:M10 import numpy as np import pandas as pd import matplotlib.pylab as plt import mysql.connector conn = mysql.connector.connect(host='localhost', user='root', passwd='123456', db='python')#鏈接本地數(shù)據(jù)庫 sql = 'select price,comment from taob'#sql語句 data = pd.read_sql(sql,conn)#獲取數(shù)據(jù) #標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化 data1 = (data-data.mean())/data.std() print(data1)
運行結(jié)果:
3、小數(shù)定標(biāo)標(biāo)準(zhǔn)化
消除單位影響
基本公式為:
其中j=lg(max(|x|)),即以10為底的x的絕對值最大的對數(shù)
x' = x/10^j
實現(xiàn)代碼為:
#?。痷ser/bin/env python #-*- coding:utf-8 -*- #author:M10 import numpy as np import pandas as pd import matplotlib.pylab as plt import mysql.connector conn = mysql.connector.connect(host='localhost', user='root', passwd='123456', db='python')#鏈接本地數(shù)據(jù)庫 sql = 'select price,comment from taob'#sql語句 data = pd.read_sql(sql,conn)#獲取數(shù)據(jù) #標(biāo)準(zhǔn)差標(biāo)準(zhǔn)化 j = np.ceil(np.log10(data.abs().max()))#進(jìn)一取整,abs()為取絕對值 data1 = data/10**j print(data1)
結(jié)果:
離散化
離散化是程序設(shè)計中一個常用的技巧,它可以有效的降低時間復(fù)雜度。其基本思想就是在眾多可能的情況中,只考慮需要用的值。離散化可以改進(jìn)一個低效的算法,甚至實現(xiàn)根本不可能實現(xiàn)的算法
1、等寬離散化
將連續(xù)數(shù)據(jù)按照等寬區(qū)間標(biāo)準(zhǔn)離散化數(shù)據(jù),好處之一是處理的數(shù)據(jù)是有限個數(shù)據(jù)而不是無限多。
使用pandas的cut方法。非等寬只需要更改cut的第二個參數(shù),例如:第二個參數(shù)為[1,100,3000,10000,200000],即劃分為了四個區(qū)間。
#?。痷ser/bin/env python #-*- coding:utf-8 -*- #author:M10 import numpy as np import pandas as pd import matplotlib.pylab as plt import mysql.connector conn = mysql.connector.connect(host='localhost', user='root', passwd='123456', db='python')#鏈接本地數(shù)據(jù)庫 sql = 'select price,comment from taob'#sql語句 data = pd.read_sql(sql,conn)#獲取數(shù)據(jù) #離散化 data1 = data['price'].T.values#獲取價格的一維數(shù)組 lable=['很低','低','中','高','很高'] data2 = pd.cut(data1,5,labels=lable) print(data2)
執(zhí)行結(jié)果:
2、等頻率離散化
將相同數(shù)量的數(shù)據(jù)放進(jìn)一個區(qū)間。
3、一維聚類離散化
按屬性對數(shù)據(jù)進(jìn)行聚類離散。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“python中數(shù)據(jù)標(biāo)準(zhǔn)化及離散化的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。