亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

使用Python - PCA分析進(jìn)行金融數(shù)據(jù)分析

1.pandas的一個(gè)技巧

apply() 和applymap()是DataFrame數(shù)據(jù)類型的函數(shù),map()是Series數(shù)據(jù)類型的函數(shù)。apply()的操作目標(biāo)DataFrame的一列或許一行數(shù)據(jù), applymap()是element-wise的,作用于每個(gè)DataFrame的每個(gè)數(shù)據(jù)。 map()也是element-wise的,對Series中的每個(gè)數(shù)據(jù)調(diào)用一次函數(shù)。

2.PCA分解德國DAX30指數(shù)

DAX30指數(shù)有三十個(gè)股票,聽起來不多的樣子,其實(shí)還是挺多的,我們很有必要對其進(jìn)行主成分分析,然后找出最重要的幾個(gè)股票。想必PCA的原理大家應(yīng)該都是知道,說白了就是在一個(gè)回歸中找到影響最大的那幾個(gè),當(dāng)然,數(shù)學(xué)原理就涉及矩陣分解,什么SVD呀。

先上點(diǎn)代碼

  1. import?pandas?as?pd
  2. import?pandas.io.data?as?web
  3. import?numpy?as?np
  4. np.random.seed(1000)
  5. import?scipy.stats?as?scs
  6. import?statsmodels.api?as?sm
  7. import?matplotlib?as?mpl
  8. import?matplotlib.pyplot?as?plt
  9. from?sklearn.decomposition?import?KernelPCA#導(dǎo)入機(jī)器學(xué)習(xí)的PCA包
  10. symbols?=?['ADS.DE','ALV.DE','BAS.DE','BAYN.DE','BEI.DE','BMW.DE','CBK.DE','CON.DE','DAI.DE',
  11. ????????????'DB1.DE','DBK.DE','DPW.DE','DTE.DE','EOAN.DE','FME.DE','FRE.DE','HEI.DE','HEN3.DE',
  12. ????????????'IFX.DE','LHA.DE','LIN.DE','LXS.DE','MRK.DE','MUV2.DE','RWE.DE','SAP.DE','SDF.DE',
  13. ????????????'SIE.DE','TKA.DE','VOW3.DE','^GDAXI']#DAX30指數(shù)各個(gè)股票的代碼以及德國30指數(shù)代碼,共31個(gè)數(shù)據(jù)列
  14. data?=?pd.DataFrame()
  15. for?sym?in?symbols:#獲取數(shù)據(jù)
  16. ????data[sym]?=?web.DataReader(sym,data_source?=?'yahoo')['Close']
  17. data?=?data.dropna()#丟棄缺失數(shù)據(jù)
  18. dax?=?pd.DataFrame(data.pop('^GDAXI'))#將指數(shù)數(shù)據(jù)單獨(dú)拿出來,采用pop在獲取的時(shí)候已經(jīng)從原來的地方刪除了這一列數(shù)據(jù)了
  19. scale_function?=?lambda?x:(x-x.mean())/x.std()
  20. pca?=?KernelPCA().fit(data.apply(scale_function))#這里用到了apply函數(shù)。做PCA前,我們要對數(shù)據(jù)做標(biāo)準(zhǔn)化
  21. get_we?=?lambda?x:x/x.sum()
  22. print?get_we(pca.lambdas_)[:10]

這樣,你就可以看到前十個(gè)股票對DAX30指數(shù)的貢獻(xiàn)量了。

  1. pca?=?KernelPCA(n_components?=?1).fit(data.apply(scale_function))
  2. dax['PCA_1']?=pca.transform(data)
  3. dax.apply(scale_function).plot(figsize?=?(8,4))
  4. pca?=?KernelPCA(n_components?=?5).fit(data.apply(scale_function))
  5. weights?=?get_we(pca.lambdas_)
  6. dax['PCA_5']?=np.dot(pca.transform(data),weights)

使用Python - PCA分析進(jìn)行金融數(shù)據(jù)分析

這里,我們采用只用第一個(gè)成分去擬合以及前五個(gè)成分去擬合,發(fā)現(xiàn)效果好的出奇。這樣我們就做到了降維的工作了。我們再來展開看一下PCA的效果。

  1. plt.figure(figsize?=?(8,4))
  2. plt.scatter(dax['PCA_5'],dax['^GDAXI'],color?=?'r')

這里,我們把PCA后的值與原始值進(jìn)行散點(diǎn)圖的繪制,

使用Python - PCA分析進(jìn)行金融數(shù)據(jù)分析

咱們看到,全體效果還是不錯(cuò)的,但是很顯然,兩頭和中心老是有點(diǎn)疑問,所以,假如咱們要進(jìn)步,咱們能夠在中心分段進(jìn)行PCA,這樣的話,效果應(yīng)該會更加好。

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!