python數據分析數據標准化及離散化詳解


python數據分析數據標准化及離散化詳解

本文為大家分享了python數據分析數據標准化及離散化的具體內容,供大家參考,具體內容如下
標准化
1、離差標准化
是對原始數據的線性變換,使結果映射到[0,1]區間。方便數據的處理。消除單位影響及變異大小因素影響。
基本公式為:    
x'=(x-min)/(max-min)

代碼:    
#!/user/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')#鏈接本地數據庫
sql = 'select price,comment from taob'#sql語句
data = pd.read_sql(sql,conn)#獲取數據
#離差標准化
data1 = (data-data.min())/(data.max()-data.min())
print(data1)

運行結果


2、標准差標准化

消除單位影響以及變量自身變異影響。(零-均值標准化) 
基本公式為:


x'=(x-平均數)/標准差
python代碼:    
#!/user/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')#鏈接本地數據庫
sql = 'select price,comment from taob'#sql語句
data = pd.read_sql(sql,conn)#獲取數據
#標准差標准化
data1 = (data-data.mean())/data.std()
print(data1)


運行結果:

3、小數定標標准化

消除單位影響 
基本公式為: 
其中j=lg(max(|x|)),即以10為底的x的絕對值最大的對數

x' = x/10^j
實現代碼為:    
#!/user/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')#鏈接本地數據庫
sql = 'select price,comment from taob'#sql語句
data = pd.read_sql(sql,conn)#獲取數據
#標准差標准化
j = np.ceil(np.log10(data.abs().max()))#進一取整,abs()為取絕對值
data1 = data/10**j
print(data1)



結果:

離散化

離散化是程序設計中一個常用的技巧,它可以有效的降低時間復雜度。其基本思想就是在眾多可能的情況中,只考慮需要用的值。離散化可以改進一個低效的算法,甚至實現根本不可能實現的算法

1、等寬離散化

將連續數據按照等寬區間標准離散化數據,好處之一是處理的數據是有限個數據而不是無限多。 
使用pandas的cut方法。非等寬只需要更改cut的第二個參數,例如:第二個參數為[1,100,3000,10000,200000],即划分為了四個區間。

#!/user/bin/env python
#-*- coding:utf-8 -*-
#author:M10
importnumpy as np
importpandas as pd
importmatplotlib.pylab as plt
importmysql.connector
conn=mysql.connector.connect(host='localhost',
                        user='root',
                        passwd='123456',
                        db='python')#鏈接本地數據庫
sql='select price,comment from taob'#sql語句
data=pd.read_sql(sql,conn)#獲取數據
#離散化
data1=data['price'].T.values#獲取價格的一維數組
lable=['很低','低','中','高','很高']
data2=pd.cut(data1,5,labels=lable)
print(data2)

執行結果:

2、等頻率離散化

將相同數量的數據放進一個區間。

3、一維聚類離散化

按屬性對數據進行聚類離散。

以上就是本文的全部內容,希望對大家的學習有所幫助



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM