日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【机器学习】数据挖掘实战:金融贷款分类模型和时间序列分析

發(fā)布時(shí)間:2025/3/12 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器学习】数据挖掘实战:金融贷款分类模型和时间序列分析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天給大家?guī)?lái)一個(gè)企業(yè)級(jí)數(shù)據(jù)挖掘?qū)崙?zhàn)項(xiàng)目,金融貸款分類模型和時(shí)間序列分析,文章較長(zhǎng),建議收藏!

如果本文對(duì)你有所幫助,記得文末點(diǎn)贊和在看,也可分享給你需要的朋友~

項(xiàng)目背景

銀行和其他金融貸款機(jī)構(gòu)經(jīng)常需要查看貸款申請(qǐng)人的信用歷史、經(jīng)濟(jì)狀況和其他因素,以確定貸款資格,但這些因素之間的關(guān)系通常不是明確定義的,但在本質(zhì)上可以得到啟發(fā)的。通常情況下,公司近況,如其近期的興衰,也被作為決定其財(cái)務(wù)穩(wěn)定性的考慮因素。因?yàn)檫@些因素考慮不當(dāng),或者被忽略了。這很可能會(huì)導(dǎo)致對(duì)公司拖欠貸款可能性的判斷錯(cuò)誤。

因此,我們可以使用有效的分類和時(shí)間序列分析,生成一個(gè)好的模型,不僅會(huì)更精確,而且會(huì)大大降低在解決這個(gè)問(wèn)題上的成本效益。有了這個(gè)目標(biāo),我們將分析數(shù)據(jù),并用來(lái)自其他集合的數(shù)據(jù)來(lái)補(bǔ)充它,并通過(guò)創(chuàng)建分類策略和分析模型所采取的步驟,試圖理解與公司財(cái)務(wù)狀況相關(guān)度最高的靜態(tài)因素。

目標(biāo)變量和預(yù)測(cè)變量

我們總共使用了42個(gè)特征來(lái)確定最終分類器中的目標(biāo),目標(biāo)本身是由SVM分類器輸出和ARIMA時(shí)間序列分析得到的復(fù)合變量。

使用的最重要的預(yù)測(cè)變量是:Accounts Payable, Capital Expenditures, Additional Income Expense Items, Accounts Receivable and After Tax Return on Equity(應(yīng)付帳款、資本支出、額外收入費(fèi)用項(xiàng)目、應(yīng)收帳款和稅后權(quán)益回報(bào))。

目標(biāo)變量是公司股票價(jià)格在兩年內(nèi)的變化百分比和公司在未來(lái)4年內(nèi)破產(chǎn)的可能性的總和。

問(wèn)題陳述

識(shí)別各種靜態(tài)特征,這些特征負(fù)責(zé)確定公司的增長(zhǎng)趨勢(shì),從而確定其獲得貸款的資格。

模型的類型

這些數(shù)據(jù)集包括申請(qǐng)破產(chǎn)的公司的數(shù)據(jù)、紐約證券交易所組織的6年股票趨勢(shì)和這些公司的財(cái)務(wù)數(shù)據(jù)。我們?cè)谄飘a(chǎn)公司數(shù)據(jù)集上嘗試了多種模型,包括決策樹、線性模型和Logistic回歸,并得出基于AUC值的支持向量機(jī)最適合于該數(shù)據(jù)集的結(jié)論。

采用ARIMA時(shí)間序列方法對(duì)股票走勢(shì)進(jìn)行了分析。使用這些值將一個(gè)復(fù)合標(biāo)簽添加到金融數(shù)據(jù)集中,最后在這個(gè)數(shù)據(jù)集上使用隨機(jī)森林分類器來(lái)解決上述問(wèn)題。因?yàn)椴煌镜臄?shù)據(jù)存在大量的特征和大的方差,隨機(jī)森林模型對(duì)數(shù)據(jù)的擬合最好,提供了最好的整體精度。

評(píng)價(jià)方法

評(píng)估數(shù)據(jù)的任務(wù)分4個(gè)步驟完成

數(shù)據(jù)清理

由于我們操作的數(shù)據(jù)來(lái)自不同來(lái)源的多個(gè)數(shù)據(jù)集,因此數(shù)據(jù)清理是確保這些數(shù)據(jù)集的數(shù)據(jù)表示一致所必需的一項(xiàng)主要操作。

破產(chǎn)預(yù)測(cè)

申請(qǐng)破產(chǎn)的公司的數(shù)據(jù)集不包含非破產(chǎn)公司的財(cái)務(wù)特征數(shù)據(jù),因此我們沒(méi)有一個(gè)可以用來(lái)直接訓(xùn)練模型的數(shù)據(jù)集。為了解決這個(gè)問(wèn)題,我們使用了來(lái)自紐約證券交易所上市公司的更大金融數(shù)據(jù)集的前幾年的數(shù)據(jù),并將其添加到這個(gè)數(shù)據(jù)集中,以確保該數(shù)據(jù)集符合通用規(guī)則。然后我們?cè)谶@個(gè)數(shù)據(jù)集上訓(xùn)練了一個(gè)SVM,并驗(yàn)證其AUC得分約為0.75。

時(shí)間序列分析

公司股票價(jià)格數(shù)據(jù)包含紐交所上市的約500家公司的每日收盤價(jià)。該數(shù)據(jù)被按比例縮小,以包含每周平均股價(jià)。由于時(shí)間序列對(duì)不同的公司會(huì)有不同的表現(xiàn),因此有必要分別為每個(gè)公司建模。

不出所料,在某些情況下數(shù)據(jù)顯示了強(qiáng)烈的趨勢(shì)和季節(jié)性,必須通過(guò)數(shù)據(jù)集的差分來(lái)刪除趨勢(shì)和季節(jié)性,然后執(zhí)行ARIMA模型。根據(jù)ACF和PACF繪圖分析和手工試驗(yàn),選擇的p值和q值分別為2和1。在建模時(shí),平均絕對(duì)誤差為~0.05,這表明時(shí)間序列分析是相當(dāng)準(zhǔn)確的。

用預(yù)測(cè)數(shù)據(jù)增強(qiáng)初始數(shù)據(jù)集

包含紐約證券交易所上市公司財(cái)務(wù)信息的數(shù)據(jù)集用預(yù)測(cè)破產(chǎn)價(jià)值和兩年內(nèi)各自股票價(jià)格變化百分比的復(fù)合標(biāo)簽進(jìn)行了增強(qiáng)。這個(gè)標(biāo)簽是連續(xù)的,我們將它四舍五入到小數(shù)點(diǎn)后一位,然后乘以10得到一個(gè)整數(shù)。這個(gè)標(biāo)簽用于訓(xùn)練隨機(jī)森林分類器,以確定模型認(rèn)為對(duì)預(yù)測(cè)公司的增長(zhǎng)趨勢(shì)最重要的特征。對(duì)特征進(jìn)行分析并找出特征與標(biāo)簽之間的相關(guān)關(guān)系。

隨機(jī)森林分類器本身的分析是通過(guò)觀察產(chǎn)生的混淆矩陣來(lái)評(píng)估的。由于標(biāo)簽是多類的,而不是二分類的,因此不能繪制ROC曲線來(lái)評(píng)價(jià)模型結(jié)果。然而馬修斯相關(guān)系數(shù)卻可以很好地衡量置信度。

假設(shè) / 限制

1、破產(chǎn)預(yù)測(cè)是機(jī)器學(xué)習(xí)研究的一個(gè)重要課題。關(guān)于這個(gè)話題有幾篇研究論文,其中幾篇使用了神經(jīng)網(wǎng)絡(luò)和先進(jìn)的機(jī)器學(xué)習(xí)技術(shù)來(lái)更加精確可靠地預(yù)測(cè)破產(chǎn)的可能性。我們發(fā)現(xiàn)一些屬性在這些模型中被普遍使用,因此并假設(shè)這些屬性與公司破產(chǎn)的概率高度相關(guān)。

當(dāng)然,如此決策另一個(gè)重要原因是,因?yàn)楸敬雾?xiàng)目無(wú)法獲得包含更多破產(chǎn)公司財(cái)務(wù)數(shù)據(jù)的公共數(shù)據(jù)集。因此,我們只使用這些相關(guān)度最高的特征來(lái)訓(xùn)練預(yù)測(cè)器,這是一個(gè)極其簡(jiǎn)單的破產(chǎn)預(yù)測(cè)模型。

2、發(fā)現(xiàn) ACF 和 PACF 圖非常模糊,并且不足以幫助確定 AR 和 MA 參數(shù)值。因此,我們嘗試了一些值,并假設(shè) (2,1) 組合最能預(yù)測(cè)數(shù)據(jù)。

3、增強(qiáng)步驟包括合并二進(jìn)制預(yù)測(cè)破產(chǎn)值和連續(xù)平均時(shí)間序列預(yù)測(cè)。我們假設(shè)這是一個(gè)很好的指標(biāo),可以判斷公司是上升還是下降,因此,向公司提供貸款是否安全。

類范圍問(wèn)題

使用多種分類策略并對(duì)時(shí)間序列進(jìn)行建模后,可以通過(guò)增加特征和數(shù)據(jù)點(diǎn)的數(shù)量來(lái)進(jìn)一步進(jìn)行這種分析,以實(shí)現(xiàn)更好的破產(chǎn)預(yù)測(cè),以及調(diào)整時(shí)間序列模型的 AR 和 MA 參數(shù)。

鑒于當(dāng)前的分析,我們發(fā)現(xiàn)了與目標(biāo)變量相關(guān)的多個(gè)特征,這種分析有助于補(bǔ)充組織的傳統(tǒng)啟發(fā)式知識(shí)。銀行和其他金融貸款機(jī)構(gòu)的信息存儲(chǔ)可以使用這種分析來(lái)更多地關(guān)注這些特征,這是通過(guò)代表性或推論分析可能無(wú)法實(shí)現(xiàn)的。

原始提案的變化及其原因:我們最初的提議包含一個(gè)策略,即只使用破產(chǎn)預(yù)測(cè)器來(lái)為金融數(shù)據(jù)集提供標(biāo)簽。然而,經(jīng)過(guò)仔細(xì)分析,我們發(fā)現(xiàn)它不能作為公司整體地位的一個(gè)足夠全面的指標(biāo)。因此,我們決定通過(guò)對(duì)公司股票趨勢(shì)的時(shí)間序列分析來(lái)增強(qiáng)它,這將是組織增長(zhǎng)/下降的更好指標(biāo)。

代碼

導(dǎo)入相關(guān)模塊

import?numpy?as?np import?pandas?as?pd import?re import?warnings from?matplotlib?import?pyplot?as?plt from?sklearn.model_selection?import?train_test_split from?sklearn?import?preprocessing?as?pp from?sklearn?import?svm from?sklearn.ensemble?import?RandomForestClassifier from?sklearn?import?metrics from?statsmodels.stats.stattools?import?durbin_watson from?statsmodels.graphics.tsaplots?import?plot_acf,?plot_pacf from?statsmodels.tsa?import?arima_model from?statsmodels.graphics.api?import?qqplot warnings.filterwarnings('ignore')

數(shù)據(jù)預(yù)處理

定義了幾個(gè)函數(shù),這里包括數(shù)據(jù)清洗、時(shí)間解析、穩(wěn)定性檢測(cè)。

def?cleanColumnName(column):#刪除列名中的符號(hào)column?=?re.sub('\W+','?',?column.strip())#刪除列名末尾的所有空格column?=?column.strip()?#?用'_'替換單詞之間的空格return?column.lower().replace("?","_")?????????????????????????def?dateParse(dates):return?pd.datetime.strptime(dates,?'%Y-%m-%d')def?test_stationarity(ticker,?timeseries):#?確定滑動(dòng)窗口統(tǒng)計(jì)rolmean?=?timeseries.rolling(window=7,?center=False).mean()rolstd?=?timeseries.rolling(window=7,?center=False).std()#繪制滑動(dòng)窗口統(tǒng)計(jì)圖:orig?=?plt.plot(timeseries,?color='blue',label='Original')mean?=?plt.plot(rolmean,?color='red',?label='Rolling?Mean')std?=?plt.plot(rolstd,?color='black',?label?=?'Rolling?Std')plt.legend(loc='best')plt.title(ticker)plt.show(block=False)#?自相關(guān)的durbin_watson統(tǒng)計(jì)dftest?=?durbin_watson(timeseries)print(ticker)print("Durbin-Watson?statistic?for?"+ticker+":?",dftest)

數(shù)據(jù)清洗

從數(shù)據(jù)集中刪除不必要的列。這完全是啟發(fā)式的,因?yàn)槲覀兺耆鶕?jù)自己對(duì)這些列的意義的理解來(lái)刪除它們。

#?讀取數(shù)據(jù) bankrupt_companies?=?pd.read_csv("public_company_bankruptcy_cases.csv") companies_stock_prices?=?pd.read_csv("prices-split-adjusted.csv",?parse_dates=True,?usecols=["date","symbol","close"],?date_parser=dateParse) nyse_data?=?pd.read_csv("fundamentals.csv",?index_col='Unnamed:?0')bankrupt_companies.drop(["DISTRICT",?"STATE",?"COMPANY?NAME"],?axis=1,?inplace=True) nyse_data.drop(["Deferred?Asset?Charges","Deferred?Liability?Charges","Depreciation","Earnings?Before?Tax","Effect?of?Exchange?Rate","Equity?Earnings/Loss?Unconsolidated?Subsidiary","Goodwill","Income?Tax","Intangible?Assets","Interest?Expense","Liabilities","Minority?Interest","Misc.?Stocks","Net?Cash?Flow-Operating","Net?Cash?Flows-Financing","Net?Cash?Flows-Investing","Net?Income?Adjustments","Net?Income?Applicable?to?Common?Shareholders","Net?Income-Cont.?Operations","Operating?Income","Operating?Margin","Other?Assets","Other?Current?Assets","Other?Current?Liabilities","Other?Financing?Activities","Other?Investing?Activities","Other?Liabilities","Other?Operating?Activities","Other?Operating?Items","Pre-Tax?Margin","Pre-Tax?ROE","Research?and?Development","Total?Current?Assets","Total?Current?Liabilities","Total?Liabilities?&?Equity","Treasury?Stock",?"For?Year"],?axis=1,?inplace=True)#?數(shù)據(jù)清理,使列名格式一致 bankrupt_companies.columns?=?map(cleanColumnName,?bankrupt_companies.columns) bankrupt_companies.columns?=?["total_assets",?"total_liabilities"] companies_stock_prices.columns?=?map(cleanColumnName,?companies_stock_prices.columns) nyse_data.columns?=?map(cleanColumnName,?nyse_data.columns)nyse_data.head()

缺失值處理

從各自的數(shù)據(jù)集中刪除NaN值。

bankrupt_companies.dropna(axis=0,?subset=['total_assets',?'total_liabilities'],inplace=True)nyse_data.dropna(axis=1,?how='any',?inplace=True) nyse_data.dropna(axis=0,?how='any',?inplace=True)companies_stock_prices.dropna(axis=0,?how='any',?inplace=True)

訓(xùn)練SVM作為破產(chǎn)預(yù)測(cè)器

創(chuàng)建包含2013年未破產(chǎn)公司數(shù)據(jù)的新dataframe。

nyse_2013?=?nyse_data.loc[nyse_data['period_ending'].str.contains("2013"),["total_assets",?"total_liabilities"]]nyse_2013?=?nyse_2013.sample(n=bankrupt_companies.shape[0],replace=False)

隨機(jī)抽樣該數(shù)據(jù)集,以獲得一個(gè)數(shù)據(jù)幀,其中包含與其他數(shù)據(jù)集中破產(chǎn)公司數(shù)量相同的非破產(chǎn)公司的數(shù)據(jù)。

nyse_2013.set_index([[x?for?x?in?range(bankrupt_companies.index[-1]+1,?bankrupt_companies.index[-1]+nyse_2013.shape[0]+1)]],inplace=True)

手動(dòng)將列“bankrupt”添加到要用作標(biāo)簽的數(shù)據(jù)集。

bankrupt_companies["stability"]?=?0 nyse_2013["stability"]?=?1

合并破產(chǎn)數(shù)據(jù)和非破產(chǎn)數(shù)據(jù),生成一個(gè)可用于訓(xùn)練分類器的數(shù)據(jù)。

merged_bankruptcy_dataset?=?pd.concat([bankrupt_companies,?nyse_2013])#?縮放數(shù)據(jù)以確保資產(chǎn)和負(fù)債在相同的范圍內(nèi)scaler?=?pp.MinMaxScaler() scaler.fit(merged_bankruptcy_dataset[["total_assets",?"total_liabilities"]]) merged_bankruptcy_dataset[["total_assets",?"total_liabilities"]]?=?scaler.transform(merged_bankruptcy_dataset[["total_assets",?"total_liabilities"]])

將合并的數(shù)據(jù)集隨機(jī)分割為訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集,用于訓(xùn)練決策樹。

train_bankruptcy_data,?test_bankruptcy_data,? train_bankruptcy_target,?test_bankruptcy_target?=?train_test_split(merged_bankruptcy_dataset.iloc[:,0:-1],?merged_bankruptcy_dataset.iloc[:,-1],test_size=0.25?)

在訓(xùn)練數(shù)據(jù)上訓(xùn)練支持向量機(jī)。

Svm_model?=?svm.LinearSVC() Svm_model.fit(train_bankruptcy_data,?train_bankruptcy_target)print(train_bankruptcy_data.shape,?Svm_model.score(train_bankruptcy_data,?train_bankruptcy_target)) print(test_bankruptcy_data.shape,?Svm_model.score(test_bankruptcy_data,?test_bankruptcy_target))((190, 2), 0.83157894736842108) ((64, 2), 0.8125)

計(jì)算和繪制ROC和面積下曲線,以了解分類器的準(zhǔn)確性

FPR,?TPR,?_?=?metrics.roc_curve(test_bankruptcy_target,?Svm_model.predict(test_bankruptcy_data)) auc?=?metrics.auc(FPR,?TPR)plt.plot(FPR,?TPR,?'b',?label?=?'AUC?for?SVM?=?%0.2f'?%auc) plt.title("AUC?For?SVM?Model") plt.legend(loc='best') plt.plot([0,1],?[0,1],?'r--') plt.xlabel('FPR') plt.ylabel('TPR') plt.show()

只保留所有公司去年的數(shù)據(jù)。我們將只考慮最新的數(shù)據(jù),并在原始數(shù)據(jù)集中添加破產(chǎn)的預(yù)測(cè)值。

nyse_data.drop_duplicates(subset='ticker_symbol',?keep='last',?inplace=True)nyse_data["stability"]?=?Svm_model.predict(scaler.transform(nyse_data[["total_assets","total_liabilities"]])) print("Companies?predicted?to?go?bankrupt?over?a?4?year?period:?",len(nyse_data.loc[nyse_data["stability"]?!=?1,?"ticker_symbol"]))Companies predicted to go bankrupt over a 4 year period: 114

時(shí)間序列分析

companies_stock_prices["date"]?=?pd.to_datetime(companies_stock_prices["date"],format="%Y-%m-%d") companies_stock_prices.dropna(axis=0,?how='any',?inplace=True)#?按股票代碼排序 companies_stock_prices.sort_values(by=["symbol",?"date"],?inplace=True)

假設(shè)每個(gè)公司的股票趨勢(shì)是不同的,我們需要為每個(gè)公司建模不同的時(shí)間序列,方法是將每個(gè)公司的數(shù)據(jù)以單獨(dú)的鍵存儲(chǔ)在字典中。字典存儲(chǔ)每個(gè)公司的每周股票價(jià)格,將每個(gè)公司的數(shù)據(jù)添加到字典中的單獨(dú)鍵中,這樣就可以對(duì)每個(gè)公司分別進(jìn)行時(shí)間序列分析。

weekly_stock_prices?=?{}????????????for?i?in?np.unique(companies_stock_prices["symbol"].values):weekly_stock_prices[i]?=?companies_stock_prices.loc[companies_stock_prices["symbol"]?==?i,?:].copy()weekly_stock_prices[i]?=?weekly_stock_prices[i].reset_index(drop=True)

通過(guò)每周只保留一天的數(shù)據(jù),將每日庫(kù)存數(shù)據(jù)轉(zhuǎn)換為每周。因?yàn)榇蠹s有450家公司,所以只顯示前10個(gè)地塊,而且繪制所有地塊需要大量時(shí)間。趨勢(shì)和季節(jié)性可以假定存在于所有這些。

count?=?0 for?i?in?weekly_stock_prices:weekly_mean?=?weekly_stock_prices[i]["close"].rolling(window=5,?center=False).mean()[4:]#?通過(guò)每周只保留一天的數(shù)據(jù),將每日庫(kù)存數(shù)據(jù)轉(zhuǎn)換為每周weekly_stock_prices[i]?=?weekly_stock_prices[i].loc[weekly_stock_prices[i].index?%?5?==?0,?:]weekly_stock_prices[i]["close"]?=?weekly_meanweekly_stock_prices[i].index?=?weekly_stock_prices[i]["date"]weekly_stock_prices[i].drop(["symbol",?"date"],?axis=1,?inplace=True)weekly_stock_prices[i].dropna(axis=0,?how='any',?inplace=True)count?+=?1????if?count?<=?10:test_stationarity(i,?weekly_stock_prices[i])AGN ('Durbin-Watson statistic for AGN: ', array([ 0.00106633]))EOG ('Durbin-Watson statistic for EOG: ', array([ 0.00104565]))CPB ('Durbin-Watson statistic for CPB: ', array([ 0.00042048]))EVHC ('Durbin-Watson statistic for EVHC: ', array([ 0.00806171]))IDXX ('Durbin-Watson statistic for IDXX: ', array([ 0.00094586]))QRVO ('Durbin-Watson statistic for QRVO: ', array([ 0.00290384]))JWN ('Durbin-Watson statistic for JWN: ', array([ 0.00088175]))JBHT ('Durbin-Watson statistic for JBHT: ', array([ 0.00059562]))TAP ('Durbin-Watson statistic for TAP: ', array([ 0.00062282]))VRTX ('Durbin-Watson statistic for VRTX: ', array([ 0.00270465]))

正如可以預(yù)期的那樣,股票價(jià)格數(shù)據(jù)顯示了一個(gè)很容易看到的趨勢(shì),而且在許多情況下,更仔細(xì)的檢查也會(huì)顯示出季節(jié)性的存在。低的Durbin-Watson統(tǒng)計(jì)值是高正自相關(guān)的證據(jù),這也是可以理解的,因?yàn)楣善眱r(jià)格依賴于以前的值。因此,要對(duì)該數(shù)據(jù)進(jìn)行ARIMA分析,首先需要對(duì)其進(jìn)行操作,以得到一個(gè)平穩(wěn)的數(shù)據(jù)。

#?對(duì)數(shù)據(jù)進(jìn)行平穩(wěn)處理 count?=?0 weekly_stock_prices_log?=?{} for?i?in?weekly_stock_prices:#?對(duì)數(shù)據(jù)進(jìn)行差分來(lái)去除數(shù)據(jù)中的趨勢(shì)和季節(jié)性weekly_stock_prices_log[i]?=?weekly_stock_prices[i].copy()weekly_stock_prices_log[i]["first_difference"]?=?weekly_stock_prices_log[i]["close"]?-?weekly_stock_prices_log[i]["close"].shift(1)weekly_stock_prices_log[i]["seasonal_first_difference"]?=?weekly_stock_prices_log[i]["first_difference"]?-?weekly_stock_prices_log[i]["first_difference"].shift(12)count?+=?1if?count?<=10:test_stationarity(i,?weekly_stock_prices_log[i]["seasonal_first_difference"].dropna(inplace=False))AGN ('Durbin-Watson statistic for AGN: ', 1.8408166958817405)EOG ('Durbin-Watson statistic for EOG: ', 1.6299518594407623)CPB ('Durbin-Watson statistic for CPB: ', 1.5454599084578173)EVHC ('Durbin-Watson statistic for EVHC: ', 1.4213426917002945)IDXX ('Durbin-Watson statistic for IDXX: ', 1.7448077126902013)QRVO ('Durbin-Watson statistic for QRVO: ', 1.3805906045088099)JWN ('Durbin-Watson statistic for JWN: ', 1.6385737145457053)JBHT ('Durbin-Watson statistic for JBHT: ', 1.6966894515415203)TAP ('Durbin-Watson statistic for TAP: ', 1.8412354264794373)VRTX ('Durbin-Watson statistic for VRTX: ', 1.6067817382582221)

現(xiàn)在從結(jié)果可以看出,這已經(jīng)失去了先前所具有的趨勢(shì)和季節(jié)性。Durbin-Watson統(tǒng)計(jì)量也顯示了一個(gè)值~2,因此我們可以得出殘差是平穩(wěn)的,可以繼續(xù)對(duì)其進(jìn)行分析操作。

#?通過(guò)繪制ACF和PACF圖來(lái)確定自回歸和移動(dòng)平均參數(shù)。 count?=?0 for?i?in?weekly_stock_prices_log:fig?=?plt.figure(figsize=(12,5))ax1?=?fig.add_subplot(121)plot_acf(weekly_stock_prices_log[i]["seasonal_first_difference"].iloc[13:],?lags=50,?title="Autocorrelation?for?"+i,?ax=ax1)ax2?=?fig.add_subplot(122)plot_pacf(weekly_stock_prices_log[i]["seasonal_first_difference"].iloc[13:],?lags=50,?title="Partial?Autocorrelation?for?"+i,?ax=ax2)count?+=?1if?count?==?5:break plt.show()

ACF和PACF圖顯示在滯后1時(shí)出現(xiàn)峰值。然而,這些圖本身并不是決定性的,因?yàn)闆](méi)有一個(gè)可以說(shuō)是指數(shù)下降的,當(dāng)然,也顯示了一些異常值。使用不同p和q值的試驗(yàn)在(2,1)處顯示出顯著更好的結(jié)果。

對(duì)所有公司進(jìn)行ACF-PACF分析是不可能的,因此對(duì)于SVD不收斂于(2,1)的實(shí)例,使用了(1,0)的回退值。

count?=?0 stock_predictions?=?{} for?i?in?weekly_stock_prices_log:#?將可用數(shù)據(jù)分割為訓(xùn)練,使用剩余的數(shù)據(jù)點(diǎn)進(jìn)行準(zhǔn)確性檢查split_point?=?len(weekly_stock_prices_log[i])?-?20#?從數(shù)據(jù)集的最后日期到2018-12-31的周數(shù)加117num_of_predictions?=?len(weekly_stock_prices_log[i])?+?117training?=?weekly_stock_prices_log[i][0:split_point]model?=?{}#?首先嘗試使用p=2,?q=1建模,如果失敗,使用p=1,?q=0try:model?=?arima_model.ARMA(training["close"],?order=(2,1)).fit()except:model?=?arima_model.ARMA(training["close"],?order=(1,0)).fit()#?在dataframe中添加預(yù)測(cè)值,以便于進(jìn)一步的操作。daterange?=?pd.date_range(training.index[0],?periods=num_of_predictions,?freq?=?'W-MON').tolist()stock_predictions[i]?=?pd.DataFrame(columns=["date",?"prediction"])stock_predictions[i]["date"]?=?daterangestock_predictions[i]["prediction"]?=?model.predict(start=0,?end=num_of_predictions)stock_predictions[i].set_index("date",?inplace=True)#?繪制QQPlot來(lái)檢查殘差是否均勻分布if?count?<?5:resid?=?model.residprint("For?"+i+":?",stats.normaltest(resid))qqplot(resid,?line='q',?fit=True)plt.show()count?+=?1('For AGN: ', NormaltestResult(statistic=472.93123930305205, pvalue=2.0150518495630914e-103))('For EOG: ', NormaltestResult(statistic=120.49648362661878, pvalue=6.8315780758386102e-27))('For CPB: ', NormaltestResult(statistic=339.86796767404019, pvalue=1.579823361925116e-74))('For EVHC: ', NormaltestResult(statistic=69.17501926644907, pvalue=9.5243516902465695e-16))('For IDXX: ', NormaltestResult(statistic=360.2101109972532, pvalue=6.0446092870173276e-79))

上面這些圖顯示了合理的平等分布,因此我們可以得出結(jié)論,殘差分析是適當(dāng)?shù)摹?/p>

時(shí)間序列模型分析。

count?=?0 for?i?in?weekly_stock_prices_log:#?將實(shí)際值與預(yù)測(cè)值進(jìn)行對(duì)比weekly_stock_prices_log[i]["close"].plot()stock_predictions[i]["prediction"].plot()plt.show()#?計(jì)算驗(yàn)證數(shù)據(jù)點(diǎn)的平均絕對(duì)誤差和平均預(yù)測(cè)誤差split_point?=?len(weekly_stock_prices_log[i])?-?20forecastedValues?=?stock_predictions[i]["prediction"].iloc[split_point?:?len(weekly_stock_prices_log[i])]actualValues?=?weekly_stock_prices_log[i]["close"].iloc[split_point:]mfe?=?actualValues.subtract(forecastedValues).mean()mae?=?(abs(mfe)/forecastedValues).mean()display("Mean?Absolute?Error?for?"+i+":?"+str(mae))display("Mean?Forecast?Error?for?"+i+":?"+str(mfe))print?"-----"*50count?+=?1if?count?>?10:break'Mean Absolute Error for AGN: 0.00193187347291' 'Mean Forecast Error for AGN: 0.481341889454'-------------------------------------------------'Mean Absolute Error for EOG: 0.0798100720231' 'Mean Forecast Error for EOG: 6.73902186871'-------------------------------------------------'Mean Absolute Error for CPB: 0.00893546704868' 'Mean Forecast Error for CPB: 0.54092487694'-------------------------------------------------'Mean Absolute Error for EVHC: 0.143090575838' 'Mean Forecast Error for EVHC: -3.51053172619'-------------------------------------------------'Mean Absolute Error for IDXX: 0.0264690184111' 'Mean Forecast Error for IDXX: 2.85600695121'-------------------------------------------------'Mean Absolute Error for QRVO: 0.100785079934' 'Mean Forecast Error for QRVO: -5.95620693487'-------------------------------------------------'Mean Absolute Error for JWN: 0.158397127455' 'Mean Forecast Error for JWN: 6.89272442754'-------------------------------------------------'Mean Absolute Error for JBHT: 0.0206382415512''Mean Forecast Error for JBHT: 1.66385893237'-------------------------------------------------'Mean Absolute Error for TAP: 0.0115749676383' 'Mean Forecast Error for TAP: 1.14684278635'-------------------------------------------------'Mean Absolute Error for VRTX: 0.0246045992625' 'Mean Forecast Error for VRTX: 2.4170609498'-------------------------------------------------'Mean Absolute Error for BWA: 0.0334229670671' 'Mean Forecast Error for BWA: 1.09813003018'-------------------------------------------------

平均絕對(duì)誤差值約等于0表明時(shí)間序列模型具有良好的預(yù)測(cè)精度。

使用預(yù)測(cè)數(shù)據(jù)增強(qiáng)初始數(shù)據(jù)集

創(chuàng)建新的列來(lái)存儲(chǔ)預(yù)測(cè)的股票價(jià)格,計(jì)算一個(gè)百分比度量來(lái)估計(jì)公司股票的上漲或下跌,進(jìn)而估計(jì)組織的增長(zhǎng),以便在所有組織中保持一個(gè)公平的范圍。

nyse_data["stock_pred"]?=?np.nan for?i?in?stock_predictions:perc=(stock_predictions[i]["prediction"].tail(105).mean()?-?stock_predictions[i]["prediction"].tail(105)[0])/stock_predictions[i]["prediction"].tail(105)[0]nyse_data.loc[nyse_data["ticker_symbol"]?==?i,?"stock_pred"]?=?perc

將預(yù)計(jì)的破產(chǎn)價(jià)值加到預(yù)計(jì)的股價(jià)中,生成一個(gè)能有效代表公司成長(zhǎng)或衰退的復(fù)合標(biāo)簽。從數(shù)據(jù)集中刪除不必要的和非數(shù)字列,以方便建模。

nyse_data["stock_pred"]?+=?nyse_data["stability"]nyse_data.drop(["period_ending",?"stability",?"ticker_symbol"],?axis=1,?inplace=True) nyse_data.dropna(axis=0,?subset=["stock_pred"],?inplace=True)

縮放數(shù)據(jù)集的特性。

nyse_data_scaled?=?nyse_data.iloc[:,0:-1] scaler?=?pp.StandardScaler() nyse_data_scaled[nyse_data_scaled.columns]?=?scaler.fit_transform(nyse_data_scaled[nyse_data_scaled.columns])

將目標(biāo)變量縮放到值-1和1之間,四舍五入到最近的第十位,并乘以10,以生成一個(gè)非連續(xù)的多值標(biāo)簽。

scaler?=?pp.MinMaxScaler(feature_range=(-1,1)) nyse_data_target_scaled?=?scaler.fit_transform(nyse_data.iloc[:,-1].reshape(-1,1)).round(decimals=1)?*?10

將增強(qiáng)數(shù)據(jù)集分割為訓(xùn)練集和測(cè)試集,用于訓(xùn)練分類器。

train_data,?test_data,?train_target,?test_target?=?train_test_split(nyse_data_scaled,?nyse_data_target_scaled,?test_size=0.25)

訓(xùn)練隨機(jī)森林分類器。

RF?=?RandomForestClassifier() RF.fit(train_data,?train_target)model_predictions?=?RF.predict(test_data)print("Training:-->",train_data.shape,?RF.score(train_data,?train_target)) print("Testing:-->",test_data.shape,?RF.score(test_data,?test_target))('Training:-->', (334, 34), 0.98502994011976053) ('Testing:-->', (112, 34), 0.7410714285714286)

分析隨機(jī)森林模型發(fā)現(xiàn)的特征,使其與增強(qiáng)標(biāo)簽高度相關(guān)。觀察數(shù)值相關(guān)性。

top_features?=?np.argsort(RF.feature_importances_[-5:]) top_features?=?np.append(top_features,?-1) display(nyse_data.iloc[:,?top_features].corr())

生成一個(gè)混淆矩陣并計(jì)算Matthews相關(guān)系數(shù)作為訓(xùn)練的隨機(jī)森林分類器的評(píng)估指標(biāo)。

display("CONFUSION?MATRIX:?",metrics.confusion_matrix(test_target,?model_predictions)) display("MATTHEWS?CORRELATION?CO-EFFICIENT",?metrics.matthews_corrcoef(test_target,?model_predictions))'CONFUSION MATRIX: 'array([[ 1, 4, 0, 0, 0, 0, 0, 0, 0],[ 2, 17, 0, 0, 0, 0, 0, 0, 0],[ 1, 1, 0, 0, 0, 0, 0, 0, 0],[ 0, 1, 0, 0, 0, 0, 0, 0, 0],[ 0, 0, 0, 0, 0, 4, 0, 0, 0],[ 0, 0, 0, 0, 0, 64, 3, 0, 0],[ 0, 1, 0, 0, 0, 7, 1, 0, 0],[ 0, 0, 0, 0, 0, 3, 1, 0, 0],[ 0, 0, 0, 0, 0, 0, 1, 0, 0]])'MATTHEWS CORRELATION CO-EFFICIENT' 0.53348354519442676往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載黃海廣老師《機(jī)器學(xué)習(xí)課程》視頻課黃海廣老師《機(jī)器學(xué)習(xí)課程》711頁(yè)完整版課件

本站qq群955171419,加入微信群請(qǐng)掃碼:

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的【机器学习】数据挖掘实战:金融贷款分类模型和时间序列分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91天堂在线观看 | 欧美猛男gaygay | 国精产品一区一区三区在线 | 九九看片 | 中文字幕在线观看免费视频 | 久久天天东北熟女毛茸茸 | 国产影视av| 妖精视频一区二区三区 | 超碰青娱乐 | 亚洲国产精品自拍视频 | 一直草| 老司机成人免费视频 | 欧美一区二区视频在线 | 麻豆成人精品 | 午夜精品久久久久久久第一页按摩 | 四虎免费在线观看 | 校园春色亚洲色图 | 色吧五月天 | av成人| 成年人在线播放 | 日韩超碰在线 | 午夜成人鲁丝片午夜精品 | 国产精品13p| 天天爽av| 夜夜骚av一区二区三区 | 性欧美丰满熟妇xxxx性久久久 | 青青草综合网 | 熟妇人妻中文字幕无码老熟妇 | 天天艹天天射 | 欧美综合专区 | 国产精品视频无码 | 午夜视频成人 | 曰本黄色大片 | exo妈妈mv在线播放高清免费 | 国产小毛片 | 日韩欧美精品一区二区三区 | 日本精品视频一区二区三区 | 在线一二三区 | 18岁禁黄网站 | 色欲无码人妻久久精品 | 日韩国产欧美一区二区 | 成人av久久| 日韩精品观看 | 亚洲最新中文字幕 | 久久精品7 | 佐佐木明希电影 | 96精品 | 久色福利 | 91性色| 一级久久 | 国产精品扒开腿做爽爽爽a片唱戏 | 日本三级视频 | 日批的视频 | 亚洲一区二区三区四 | 国产视频网站在线观看 | 在线看片中文字幕 | aaaa视频| 伊人久久艹 | 好吊一区二区三区视频 | 在线免费中文字幕 | 欧美性videos高清精品 | 野花社区视频在线观看 | 欧美精品国产一区二区 | 久操精品 | 成人不卡在线 | 中文字幕亚洲乱码熟女一区二区 | 黄色同人网站 | 久久亚洲精品石原莉奈 | 西西午夜 | av成人免费在线 | 美国av一区二区 | 波多野结衣电影免费观看 | 男女偷爱性视频刺激 | 六月激情综合 | 99免费 | 偷偷久久 | 视频在线一区 | 成人夜夜 | 好吊色视频一区二区三区 | 国产aaa视频| 久久五月天综合 | 日日日干 | 亚洲制服另类 | 亚洲三级在线观看 | 97视频总站| 韩国午夜av | yy4138理论片动漫理论片 | 国产精品爽爽 | 日美毛片 | 欧美一级片免费看 | 欧美午夜精品理论片 | 成人免费一级 | 好看的av网址 | 久久91av | 少妇高潮一区二区三区99小说 | 91无毒不卡| 四虎国产 | 六月婷婷中文字幕 | 日本成人免费观看 |