1. 程式人生 > >Python資料分析與挖掘學習筆記(5)資料規範化與資料離散化實戰

Python資料分析與挖掘學習筆記(5)資料規範化與資料離散化實戰

一、相關理論:

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:

感謝韋瑋老師的指導