python 資料探勘(3) 資料特徵分析

2021-08-22 11:59:35 字數 3717 閱讀 5894

定量資料的分布分析

這就不用多說了,直方圖。求極差--> 設定組距-->決定分點 --> 統計頻率

定性資料的分布分析

這也不用多說了,扇形圖,條形圖統計法

對比分析

折線圖統計量分析

均值,中位數,極差,標準之類的就不說了,介紹一下變異係數,它是 標準差除以平均值 。反映了標準差相對於均值的離中趨勢。資料:catering_sale.xls

#-*- coding:utf-8 -*-

import pandas as pd

# 餐飲資料

catering_sale = "wajue/catering_sale.xls"

# 讀取資料,指定 "日期" 列為索引列

data = pd.read_excel(catering_sale,index_col = u"日期")

# 過濾資料

data = data[(data[u"銷量"] > 400) & (data[u"銷量"] < 5000)]

statistics = data.describe() # 利用裡面的基本統計量計算

# 極差

statistics.loc["range"] = statistics.loc["max"] - statistics.loc["min"]

# 變異係數

statistics.loc["var"] = statistics.loc["std"] / statistics.loc["mean"]

# 四分數間距 iqr

週期性分析主要分析時間週期對資料的影響

貢獻度分析

貢獻度分析又稱為 帕累託分析,它的原理是帕累託法則,又稱 2/8 定律。例如,對乙個公司來說,80% 的利潤來自20% 最暢銷的產品,而其他的 80% 的產品只產生了 20% 的利潤。例如對餐飲菜品盈利資料  catering_dish_profit.xls 進行帕累託分析如下

#-*- coding:utf-8 -*-

import pandas as pd

# 餐飲菜品盈利資料

dish_profit = 'wajue/catering_dish_profit.xls'

data = pd.read_excel(dish_profit,index_col = u"菜品名")

# 獲取盈利資料

data = data[u"盈利"].copy()

# 降序排序

data = data.sort_values(ascending = false)

import matplotlib.pyplot as plt

plt.rcparams['font.sans-serif'] = ['simhei']

plt.rcparams['axes.unicode_minus'] = false

plt.figure()

data.plot(kind = 'bar')

plt.ylabel(u"盈利(元)")

# cumsum 依次給出前 n 個數的和

p = 1.0*data.cumsum()/data.sum()

# 畫出前 n 個和佔總和比的曲線圖

p.plot(color = "red",secondary_y = true,style = '-o',linewidth = 2)

# 新增標註,記錄前 7 個菜品和的比例,保留4個小數

plt.annotate(format(p[6],'.4%'),xy = (6,p[6]),xytext = (6*0.9,p[6]*0.9), \

arrowprops = dict(arrowstyle = "->",connectionstyle = "arc3,rad = .2"))

plt.ylabel(u"盈利比例")

可以看到,前 7 種菜品的利潤達到了總利潤的 85.0033%

相關性分析

1.皮爾森(pearson)相關係數。一般用於分析兩個連續性變數之間的關係,計算公式如下

其中 r = [-1,1] ,r > 0正相關, r<0 負相關,越接近 0 越線性無關

2.斯皮爾曼(spearman)相關係數

皮爾森相關係數要求連續變數的取值滿足正態分佈。不服從正態分佈的變數之間的關聯性可用斯皮爾曼相關係數表示。

其中 ri 和 qi 分別代表兩個變數的 秩次,所謂秩次,就是排序後所在位置的平均值。打個比方 x 從小到大排序(也可以從大到小)依次為 0.1 0.2 0.3 0.3 0.4 0.4 0.5 那麼秩次就依次為 1 2 3.5 3.5 3.5 5.5 5.5 7,如圖

只要兩個變數具有嚴格單調的函式關係,那麼他們就是完全斯皮爾曼相關。這與皮爾森係數不同,皮爾森係數只有在變數具有線性關係時才是完全相關的。也就是皮爾森係數是真正的線性關係。斯皮爾曼係數只是體現了單調相關性,即只能說明變數相關。

3.判定係數

判定係數就是相關係數的平方,用 r^2 表示,r^2 = [0,1] ,越接近1,表明 x 和 y 之間的相關性越強。

使用不同的菜品日銷售資料 catering_sale_all.xls 判斷相關性如下

#-*- coding:utf-8 -*-

import pandas as pd

# 不同菜品日銷售量資料

catering_sale = 'wajue/catering_sale_all.xls'

data = pd.read_excel(catering_sale,index_col = u"日期")

''' 計算不同菜品的日銷售量之間的相關性 '''

# 相關係數矩陣,即給出了任意兩款菜品之間的相關係數

data.corr()

# 只顯示 "百合醬蒸鳳爪" 與其他菜品之間的相關係數

data.corr()[u"百合醬蒸鳳爪"]

# 計算 "百合醬蒸鳳爪" 和 "翡翠蒸香茜餃" 的相關係數

data[u"百合醬蒸鳳爪"].corr(data[u"翡翠蒸香茜餃"])

資料探勘建模 3 特徵工程

3.1數值型特徵 數值變換 非線性變換 編碼 3.2 無監督降維pca 3.3計算型變換 3.4特徵篩選 3.4 索引恢復 1.log變換 x min x max x min x 最大最小值受異常點影響,魯棒性差,比較適合傳統精確資料場景 from sklearn.preprocessing imp...

資料特徵分析 Python資料探勘與分析

1.分布分析 1 定量資料的分布分析 求極差 組距 組數 分點 列出頻率分布表 繪製頻率分布直方圖 2 定性資料的分布分析 定性的資料常常使用變數來分組,然後使用餅圖 柱狀圖等來展示 2.對比分析 兩個相互聯絡的指標進行比較,從數量上展示和說明研究物件規模的大小,水平的高低,速度的快慢等 1 絕對數...

資料探勘 ctr特徵

訓練集分成k fold,用其他k 1 fold計算ctr,然後merge給第k個fold,遍歷k次。然後訓練集整體計算ctr,再merge給測試集。def ctr fea train,test,feature for fea in feature print fea temp train label...