Python資料分析與挖掘學習筆記(5)資料規範化與資料離散化實戰
阿新 • • 發佈:2018-12-17
一、相關理論:
1、資料規範化的常見方法:
(1)離差標準化(最小-最大標準化)--消除量綱(單位)影響以及變異大小因素的影響。(最小-最大標準化)
x1=(x-min)/(max-min)
(2)標準差標準化--消除單位影響以及變數自身變異影響。(零-均值標準化)
x1=(x-平均數)/標準差
(3)小數定標規範化--消除單位影響。
x1= x/10**(k)、k=log10(x的絕對值的最大值)
2、資料離散化的常見方法:
(1)等寬離散化。
(2)等頻率離散化。
(3)一維聚類離散化。
二、編寫程式碼:
1、準備階段:
(1)示例資料:本例使用的是某時間的淘寶商品資料,儲存在MySQL資料庫中(資料分享連結:https://pan.baidu.com/s/1SsSy-mxvCStxk4e2PYxB3A 提取碼:tquy,將該檔案從MySQL開啟執行即可)。
(2)匯入相關模組並讀取資料庫資料:
import pymysql import pandas as pda import numpy as npy conn=pymysql.connect(host="127.0.0.1",user="root",passwd="1996haha",db="sys") sql="select price,comment from taob" data=pda.read_sql(sql,conn)
2、資料標準化:
(1)離差標準化:
#離差標準化(最小-最大標準化 ) data.max()/min每一列的最大最小值
data2=(data-data.min())/(data.max()-data.min())
(2)標準差標準化:
#標準差標準化(零-均值標準化)
data3=(data-data.mean())/data.std()
(3)小數定標標準化:
#小數定標規範化
#npy.ceil()方法:進一取整,如3.1取整為4,3.0取整為3,3.6取整為4
k=npy.ceil(npy.log10(data.abs().max()))
data4=data/10**k
3、資料離散化:
主要使用pandas.cut方法,引數為:資料、區間資訊(可以是個數也可以是具體的區間陣列)、區間標籤(注意數量與前對應)。
(1)等寬離散化:
#等寬離散化
data5=data[u"price"].copy()
data6=data5.T
data7=data6.values
k=3 #區間個數
c1=pda.cut(data7,k,labels=["便宜","適中","貴"]) #labels:標籤
結果c1:可以注意到資料以標籤來表示
(2)非等寬離散化:
k=[0,50,100,300,500,2000,data7.max()] #陣列中的陣列成了區間,0到50、50到100.....2000到最大值。
c2=pda.cut(data7,k,labels=["非常便宜","便宜","適中","有點貴","很貴","非常貴"])
結果c2: