本文為大家分享了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',
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',
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',
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],即划分為了四個區間。
執行結果:
2、等頻率離散化
將相同數量的數據放進一個區間。
3、一維聚類離散化
按屬性對數據進行聚類離散。
以上就是本文的全部內容,希望對大家的學習有所幫助