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
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['price'].T.values#獲取價格的一維數組
lable=['很低','低','中','高','很高']
data2 = pd.cut(data1,5,labels=lable)
print(data2)

執行結果:
這裏寫圖片描述

2。等頻率離散化

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

3。一維聚類離散化

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

發佈了71 篇原創文章 · 獲贊 47 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章