#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pandas as pd
discfile='e:\\pycharm\\python資料分析與挖掘實戰資料及原始碼\\chapter5\\demo\\data\\arima_data.xls'
forecastum=5
data=pd.read_excel(discfile,index_col='日期')
import matplotlib.pyplot as plt
plt.rcparams['font.sans-serif'] = ['simhei']
plt.rcparams['axes.unicode_minus'] = false
data.plot()
plt.title('原始序列的時序圖')
plt.show()
#自相關圖
from statsmodels.graphics.tsaplots import plot_acf
plot_acf(data).show()
#平穩性檢測
from statsmodels.tsa.stattools import adfuller as adf
print(u'原始序列的adf檢驗結果為:',adf(data[u'銷量']))
#返回結果依次為:adf,pvalue,usedlag,nobs,critcal,values,icbest,trgresults,resstore
#差分後的結果
d_data=data.diff().dropna()#一階差分
d_data.columns=[u'銷量差分']
d_data.plot()
plt.show()#一階差分之後的序列的時序圖
plot_acf(d_data).show()#自相關圖
from statsmodels.graphics.tsaplots import plot_pacf
plot_pacf(d_data).show() #偏自相關圖
print(u'差分序列的adf檢驗結果為:',adf(d_data[u'銷量差分']))
#白雜訊檢驗,即純隨機性檢驗
from statsmodels.stats.diagnostic import acorr_ljungbox
print('差分序列的白雜訊檢驗的結果為:',acorr_ljungbox(d_data,lags=1))#返回統計量和p值
from statsmodels.tsa.arima_model import arima
#定階pmax=int(len(d_data)/10)
qmax=int(len(d_data)/10)
bic_matrix=#bic矩陣
for p in range(pmax+1):
tmp=#存在部分報錯,所以用try來跳過報錯
for q in range(qmax+1):
try:
except:
bic_matrix=pd.dataframe(bic_matrix)#從中可以找出最小值
p,q=bic_matrix.stack().idxmin()#先用stack展平,然後用idmin招到最小值位置
print(u'bic最小p值和q值為:%s %s',(p,q))
#引數初始化
inputfile='e:\\pycharm\\python資料分析與挖掘實戰資料及原始碼\\chapter5\\demo\\data\\consumption_data.xls'
k=3#聚類的類別
threshold=2#離群點閾值
iteration=500 #聚類最大迴圈次數
data=pd.read_excel(inputfile,index_col='id')
data_zs=1.0*(data-data.mean())/data.std()#資料標準化
from sklearn.cluster import kmeans
model=kmeans(n_clusters=k,n_jobs=4,max_iter=iteration)#分為k類,併發數為4
model.fit(data_zs)
#標準化資料及其類別
r=pd.concat([data_zs,pd.series(model.labels_,index=data.index)],axis=1)
r.columns=list(data.columns)+[u'聚類類別']
norm=
for i in range(k):
norm_tmp=r[['r','f','m']][r[u'聚類類別']==i]-model.cluster_centers_[i]
norm=pd.concat(norm)
import matplotlib.pyplot as plt
plt.rcparams['font.sans-serif'] = ['simhei']
plt.rcparams['axes.unicode_minus'] = false
norm[norm<=threshold].plot(style='go')#正常點
discrete_points=norm[norm>threshold]
discrete_points.plot(style='ro')
for i in range(len(discrete_points)):
id=discrete_points.index[i]
n=discrete_points.iloc[i]
plt.annotate('(%s,%0.2f)'%(id,n),xy=(id,n),xytext=(id,n))
plt.xlabel(u'編號')
plt.ylabel(u'相對距離')
plt.show()
Python資料分析與挖掘實戰 挖掘建模
常用的分類與 演算法 1回歸模型分類 1線性回歸 自變數因變數線性關係,最小二乘法求解 2非線性回歸 自變數因變數非線性關係,函式變換為線性關係,或非線性最小二乘方法求解 3logistic回歸 因變數一般有1和0兩種取值,將因變數的取值範圍控制再0 1範圍內 4嶺回歸 自變數之間具有多重共線性 5...
python資料分析與挖掘實戰 資料探勘基礎
從大量資料 包括文字 中挖掘出隱含的 未知的 對決策有潛在價值的關係 模式和趨勢,並用這些知識和規則建立用於決策支援的模型,提高 性決策支援的方法 工具和過程,就是資料探勘 它是利用各種分析工具在大量資料中尋找其規律和發現模型與資料之間關係的過程,是統計學 資料庫技術和人工智慧技術的綜合。1.定義挖...
Python資料分析與挖掘實戰學習07
一 python基礎 1.python簡介 python是一種物件導向的解釋型語言,由荷蘭人guido van rossum與1989年發明,第乙個公開發行版本於1991年發布。python語法簡潔清晰,強制用空白符作為語句縮排。python語言最大的特點是簡單和強大。2.python庫 1 bas...