生活随笔
收集整理的這篇文章主要介紹了
【数据挖掘】数据挖掘和数据分析基础
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
參考文獻:《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》張良均等
數(shù)據(jù)挖掘建模過程
定義挖掘目標:理解任務,確定指標數(shù)據(jù)采樣:注意數(shù)據(jù)的完整性和有效性數(shù)據(jù)探索:異常值分析、缺失值分析、相關(guān)性分析、周期性分析數(shù)據(jù)預處理:數(shù)據(jù)篩選、數(shù)據(jù)變量轉(zhuǎn)換、缺失值處理、壞數(shù)據(jù)處理、數(shù)據(jù)標準化、主成分分析、屬性選擇、數(shù)據(jù)規(guī)約挖掘建模:所屬問題分析(分類、聚類、關(guān)聯(lián)規(guī)則、時序模式、智能推薦),選用算法模型評價:應用模型對應的評價方法,根據(jù)業(yè)務對模型進行解釋和應用
數(shù)據(jù)挖掘建模工具
SAS Enterprise MinerIBM SPSS ModelerSQL ServerPythonWEKAKNIMERapidMiner/YALETipDM
數(shù)據(jù)探索
一、數(shù)據(jù)質(zhì)量分析
數(shù)據(jù)預處理的前提,檢查數(shù)據(jù)中是否存在臟數(shù)據(jù)(缺失值、異常值、不一致的值、重復數(shù)據(jù)、含特殊符號的數(shù)據(jù)),箱線圖可以檢測異常值。
file_name
= r
'../data/catering_sale.xls'
catering_sale
= file_name
data
= pd
.read_excel
(catering_sale
, index_col
=u
'日期')
plt
.figure
()
plt
.rcParams
['font.sans-serif'] = ['SimHei']
plt
.rcParams
['axes.unicode_minus'] = False
p
= data
.boxplot
(return_type
='dict')
x
= p
['fliers'][0].get_xdata
()
y
= p
['fliers'][0].get_ydata
()
y
.sort
()
for i
in range(len(x
)):temp
= y
[i
] - y
[i
- 1] if i
!= 0 else -78 / 3plt
.annotate
(y
[i
], xy
=(x
[i
], y
[i
]), xytext
=(x
[i
] + 0.05 - 0.8 / temp
, y
[i
]))plt
.show
()
二、數(shù)據(jù)特征分析
分布分析:解釋數(shù)據(jù)的分布特征和分布類型:頻率分布直方圖、莖葉圖、餅圖、條形圖定量數(shù)據(jù)分布分析:求極差、決定組距和組數(shù)(極差/組距)、決定分點(分布區(qū)間)、列出頻率分布表、繪制頻率分布直方圖。定性數(shù)據(jù)分布分析:百分比/頻數(shù)對比分析:折線圖統(tǒng)計量分析:均值、中位數(shù)、標準差、四分位間距、變異系數(shù)CV=sbxˉ×100CV=\frac{s}{b}\bar{x}×100%CV=bs?xˉ×100 Pandas中提供的describe方法可以得到基本統(tǒng)計量
file_name
= r
'../data/catering_sale.xls'
catering_sale
= file_name
data
= pd
.read_excel
(catering_sale
, index_col
=u
'日期')
data
= data
[(data
[u
'銷量'] > 400) & data
[u
'銷量'] < 5000]
statistics
= data
.describe
()[u
'銷量']
statistics
['range'] = statistics
['max'] - statistics
['min']
statistics
['var'] = statistics
['std'] / statistics
['mean']
statistics
['dis'] = statistics
['75%'] - statistics
['25%']
print(statistics
)
周期性分析:時序折線圖貢獻度分析:帕累托法則8/2定律,80%的利潤來自20%的投入,應該重點關(guān)注80%利潤的部分,繪制帕累托圖
file_name
= '../data/catering_dish_profit.xls'
dish_profit
= file_name
plt
.rcParams
['font.sans-serif'] = ['SimHei']
plt
.rcParams
['axes.unicode_minus'] = False
data
= pd
.read_excel
(dish_profit
, index_col
=u
'菜品名')
data
= data
[u
'盈利'].copy
()
data
.sort_values
(ascending
=False)
plt
.figure
()
data
.plot
(kind
='bar')
plt
.ylabel
(u
'盈利(元)')
p
= 1.0 * data
.cumsum
() / data
.sum()
p
.plot
(color
='r', secondary_y
=True, style
='-o', linewidth
=2)
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
'盈利(比例)')
plt
.show
()
8. 相關(guān)性分析:散點圖、散點矩陣圖、計算相關(guān)系數(shù)(Pearson、Spearman)
Pearson線性相關(guān)系數(shù)要求連續(xù)變量的取值服從正態(tài)分布
Pearson=∑i=1n(xi?xˉ)(yi?yˉ)∑i=1n(xi?xˉ)2∑i=1n(yi?yˉ)2Pearson=\frac{\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_{i=1}^{n}(x_i-\bar{x})^2\sum_{i=1}^{n}(y_i-\bar{y})^2}}Pearson=∑i=1n?(xi??xˉ)2∑i=1n?(yi??yˉ?)2?∑i=1n?(xi??xˉ)(yi??yˉ?)?
不符合正態(tài)分布的變量,分類或等級變量之間的關(guān)聯(lián)性采用Spearman秩相關(guān)系數(shù),也稱為等級相關(guān)系數(shù),對兩個變量成對的取值按照升序或降序編秩,RiR_iRi?表示xix_ixi?的秩次,QiQ_iQi?表示yiy_iyi?的秩次,Ri?QiR_i-Q_iRi??Qi?表示秩次之差。(秩次:排序時的位置)
Spearman=1?6∑i=1n(Ri?Qi)2n(n2?1)Spearman=1-\frac{6\sum_{i=1}^{n}(R_i-Q_i)^2}{n(n^2-1)}Spearman=1?n(n2?1)6∑i=1n?(Ri??Qi?)2?
判定系數(shù)是相關(guān)系數(shù)的平方,用r2∈[0,1]r^2∈[0,1]r2∈[0,1]表示,其值越接近于1則相關(guān)性越強,越接近于0則幾乎無直線相關(guān)關(guān)系。
file_name
= r
'../data/catering_sale_all.xls'
catering_sale
= file_name
data
= pd
.read_excel
(catering_sale
, index_col
=u
'日期')
print(data
.corr
())
print(data
.corr
()[u
'百合醬蒸鳳爪'])
print(data
[u
'百合醬蒸鳳爪'].corr
(data
[u
'翡翠蒸香茜餃']))
主要數(shù)據(jù)探索函數(shù):
方法函數(shù)功能
| sum() | 求和 |
| mean() | 求均值 |
| var() | 求方差 |
| std() | 求均值 |
| corr() | 計算相關(guān)系數(shù)矩陣 |
| cov() | 計算協(xié)方差矩陣 |
| skew() | 計算樣本值的偏度(三階矩) |
| kurt() | 計算樣本值的峰度(四階矩) |
| describe() | 樣本基本描述 |
擴展統(tǒng)計函數(shù)
方法函數(shù)功能
| cumsum() | 依次給出前1,2,…,n個數(shù)的和 |
| cumprod() | 依次給出前1,2,…,n個數(shù)的積 |
| cummax() | 依次給出前1,2,…,n個數(shù)的最大值 |
| cummin() | 依次給出前1,2,…,n個數(shù)的最小值 |
| rolling_sum() | 按列計算數(shù)據(jù)樣本的總和 |
| rolling_mean() | 數(shù)據(jù)樣本的算數(shù)平均數(shù) |
| rolling_var() | 計算數(shù)據(jù)樣本的方差 |
| rolling_std() | 計算數(shù)據(jù)樣本的標準差 |
| rolling_corr() | 計算數(shù)據(jù)樣本的相關(guān)系數(shù)矩陣 |
| rolling_cov() | 計算數(shù)據(jù)樣本的協(xié)方差矩陣 |
| rolling_skew() | 樣本值的偏度 |
| rolling_kurt() | 樣本值的峰度 |
cum系列是DataFrame對象和Series對象的方法
rolling_是pandas的函數(shù),每k列計算一次,滾動計算
Python統(tǒng)計作圖
方法函數(shù)功能
| plot() | 折線圖 |
| pie() | 餅狀圖 |
| hist() | 折線圖 |
| boxplot() | 箱型圖 |
| plot(logy=True) | 繪制y軸的對數(shù)圖形 |
| plot(yerr=error) | 繪制誤差條形圖 |
總結(jié)
以上是生活随笔為你收集整理的【数据挖掘】数据挖掘和数据分析基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。