欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Python隨機(jī)森林模型是什么

這篇“Python隨機(jī)森林模型是什么”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“Python隨機(jī)森林模型是什么”文章吧。

成都創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來(lái),是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元昂昂溪做網(wǎng)站,已為上家服務(wù),為昂昂溪各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

Python隨機(jī)森林模型是什么

1 集成模型簡(jiǎn)介

集成學(xué)習(xí)模型使用一系列弱學(xué)習(xí)器(也稱為基礎(chǔ)模型或基模型)進(jìn)行學(xué)習(xí),并將各個(gè)弱學(xué)習(xí)器的結(jié)果進(jìn)行整合,從而獲得比單個(gè)學(xué)習(xí)器更好的學(xué)習(xí)效果。

集成學(xué)習(xí)模型的常見(jiàn)算法有Bagging算法和Boosting算法兩種。

Bagging算法的典型機(jī)器學(xué)習(xí)模型為隨機(jī)森林模型,而B(niǎo)oosting算法的典型機(jī)器學(xué)習(xí)模型則為AdaBoost、GBDT、XGBoost和LightGBM模型。

1.1 Bagging算法簡(jiǎn)介

Bagging算法的原理類似投票,每個(gè)弱學(xué)習(xí)器都有一票,最終根據(jù)所有弱學(xué)習(xí)器的投票,按照“少數(shù)服從多數(shù)”的原則產(chǎn)生最終的預(yù)測(cè)結(jié)果,如下圖所示。

Python隨機(jī)森林模型是什么

假設(shè)原始數(shù)據(jù)共有10000條,從中隨機(jī)有放回地抽取10000次數(shù)據(jù)構(gòu)成一個(gè)新的訓(xùn)練集(因?yàn)槭请S機(jī)有放回抽樣,所以可能出現(xiàn)某一條數(shù)據(jù)多次被抽中,也有可能某一條數(shù)據(jù)一次也沒(méi)有被抽中),每次使用一個(gè)訓(xùn)練集訓(xùn)練一個(gè)弱學(xué)習(xí)器。這樣有放回地隨機(jī)抽取n次后,訓(xùn)練結(jié)束時(shí)就能獲得由不同的訓(xùn)練集訓(xùn)練出的n個(gè)弱學(xué)習(xí)器,根據(jù)這n個(gè)弱學(xué)習(xí)器的預(yù)測(cè)結(jié)果,按照“少數(shù)服從多數(shù)”的原則,獲得一個(gè)更加準(zhǔn)確、合理的最終預(yù)測(cè)結(jié)果。

具體來(lái)說(shuō),在分類問(wèn)題中是用n個(gè)弱學(xué)習(xí)器投票的方式獲取最終結(jié)果,在回歸問(wèn)題中則是取n個(gè)弱學(xué)習(xí)器的平均值作為最終結(jié)果。

1.2 Boosting算法簡(jiǎn)介

Boosting算法的本質(zhì)是將弱學(xué)習(xí)器提升為強(qiáng)學(xué)習(xí)器,它和Bagging算法的區(qū)別在于:Bagging算法對(duì)待所有的弱學(xué)習(xí)器一視同仁;而B(niǎo)oosting算法則會(huì)對(duì)弱學(xué)習(xí)器“區(qū)別對(duì)待”,通俗來(lái)講就是注重“培養(yǎng)精英”和“重視錯(cuò)誤”。

“培養(yǎng)精英”就是每一輪訓(xùn)練后對(duì)預(yù)測(cè)結(jié)果較準(zhǔn)確的弱學(xué)習(xí)器給予較大的權(quán)重,對(duì)表現(xiàn)不好的弱學(xué)習(xí)器則降低其權(quán)重。這樣在最終預(yù)測(cè)時(shí),“優(yōu)秀模型”的權(quán)重是大的,相當(dāng)于它可以投出多票,而“一般模型”只能投出一票或不能投票。

“重視錯(cuò)誤”就是在每一輪訓(xùn)練后改變訓(xùn)練集的權(quán)值或概率分布,通過(guò)提高在前一輪被弱學(xué)習(xí)器預(yù)測(cè)錯(cuò)誤的樣例的權(quán)值,降低前一輪被弱學(xué)習(xí)器預(yù)測(cè)正確的樣例的權(quán)值,來(lái)提高弱學(xué)習(xí)器對(duì)預(yù)測(cè)錯(cuò)誤的數(shù)據(jù)的重視程度,從而提升模型的整體預(yù)測(cè)效果。

2 隨機(jī)森林模型基本原理

隨機(jī)森林(Random Forest)是一種經(jīng)典的Bagging模型,其弱學(xué)習(xí)器為決策樹(shù)模型。如下圖所示,隨機(jī)森林模型會(huì)在原始數(shù)據(jù)集中隨機(jī)抽樣,構(gòu)成n個(gè)不同的樣本數(shù)據(jù)集,然后根據(jù)這些數(shù)據(jù)集搭建n個(gè)不同的決策樹(shù)模型,最后根據(jù)這些決策樹(shù)模型的平均值(針對(duì)回歸模型)或者投票情況(針對(duì)分類模型)來(lái)獲取最終結(jié)果。

Python隨機(jī)森林模型是什么

為了保證模型的泛化能力(或者說(shuō)通用能力),隨機(jī)森林模型在建立每棵樹(shù)時(shí),往往會(huì)遵循“數(shù)據(jù)隨機(jī)”和“特征隨機(jī)”這兩個(gè)基本原則。

數(shù)據(jù)隨機(jī):從所有數(shù)據(jù)當(dāng)中有放回地隨機(jī)抽取數(shù)據(jù)作為其中一個(gè)決策樹(shù)模型的訓(xùn)練數(shù)據(jù)。例如,有1000個(gè)原始數(shù)據(jù),有放回地抽取1000次,構(gòu)成一組新的數(shù)據(jù),用于訓(xùn)練某一個(gè)決策樹(shù)模型。

特征隨機(jī):如果每個(gè)樣本的特征維度為M,指定一個(gè)常數(shù)k<M,隨機(jī)地從M個(gè)特征中選取k個(gè)特征。

與單獨(dú)的決策樹(shù)模型相比,隨機(jī)森林模型由于集成了多個(gè)決策樹(shù),其預(yù)測(cè)結(jié)果會(huì)更準(zhǔn)確,且不容易造成過(guò)擬合現(xiàn)象,泛化能力更強(qiáng)。

3 使用sklearn實(shí)現(xiàn)隨機(jī)森林模型

隨機(jī)森林模型既能進(jìn)行分類分析,又能進(jìn)行回歸分析,對(duì)應(yīng)的模型分別為:

       ·隨機(jī)森林分類模型(RandomForestClassifier)

       ·隨機(jī)森林回歸模型(RandomForestRegressor)

隨機(jī)森林分類模型的弱學(xué)習(xí)器是分類決策樹(shù)模型,隨機(jī)森林回歸模型的弱學(xué)習(xí)器則是回歸決策樹(shù)模型。

代碼如下。

from sklearn.ensemble import RandomForestClassifier
X = [[1,2],[3,4],[5,6],[7,8],[9,10]]
y = [0,0,0,1,1]

# 設(shè)置弱學(xué)習(xí)器數(shù)量為10
model = RandomForestClassifier(n_estimators=10,random_state=123)
model.fit(X,y)

model.predict([[5,5]])

# 輸出為:array([0])

4 案例:股票漲跌預(yù)測(cè)模型

4.1 股票衍生變量生成

本節(jié)講解如何利用股票的基本數(shù)據(jù)獲取一些衍生變量數(shù)據(jù),如股票技術(shù)分析常用的均線指標(biāo)5日均線價(jià)格MA5與10日均線價(jià)格MA10、相對(duì)強(qiáng)弱指標(biāo)RSI、動(dòng)量指標(biāo)MOM、指數(shù)移動(dòng)平均值EMA、異同移動(dòng)平均線MACD等。

4.1.1 獲取股票基本數(shù)據(jù)

首先用get_k_data()函數(shù)獲取2015-01-01到2019-12-31的股票基本數(shù)據(jù),代碼如下。

前5行數(shù)據(jù)如下圖所示,其中缺失的數(shù)據(jù)為節(jié)假日(非交易日)數(shù)據(jù)。

Python隨機(jī)森林模型是什么

用set_index()函數(shù)將date列設(shè)置為行索引,代碼如下。

Python隨機(jī)森林模型是什么

4.1.2 生成簡(jiǎn)單衍生變量

通過(guò)如下代碼可以生成一些簡(jiǎn)單的衍生變量數(shù)據(jù)。

Python隨機(jī)森林模型是什么

close-open表示(收盤(pán)價(jià)-開(kāi)盤(pán)價(jià))/開(kāi)盤(pán)價(jià);

high-low表示(最高價(jià)-最低價(jià))/最低價(jià);

pre_close表示昨日收盤(pán)價(jià),用shift(1)將close列的所有數(shù)據(jù)向下移動(dòng)1行并形成新的1列,如果是shift(-1)則表示向上移動(dòng)1行;

price_change表示今日收盤(pán)價(jià)-昨日收盤(pán)價(jià),即當(dāng)天的股價(jià)變化;

p_change表示當(dāng)天股價(jià)變化的百分比,也稱為當(dāng)天股價(jià)的漲跌幅。

4.1.3 生成移動(dòng)平均線指標(biāo)MA值

通過(guò)如下代碼可以生成股價(jià)的5日移動(dòng)平均值和10日移動(dòng)平均值。

注意:rolling函數(shù)的使用

Python隨機(jī)森林模型是什么

其中,MA是移動(dòng)平均線的意思,“平均”是指最近n天收盤(pán)的算術(shù)平均值,“移動(dòng)”是指在計(jì)算中始終采用最近n天的價(jià)格數(shù)據(jù)。

例如:MA5的計(jì)算

Python隨機(jī)森林模型是什么

根據(jù)上述數(shù)據(jù),5號(hào)的MA5值為(1.2+1.4+1.6+1.8+2.0)/5=1.6,而6號(hào)的MA5值則為(1.4+1.6+1.8+2.0+2.2)/5=1.8,依此類推。將一段時(shí)期內(nèi)股價(jià)的移動(dòng)平均值連成曲線,即為移動(dòng)平均線。同理,MA10為從計(jì)算當(dāng)天起前10天的股價(jià)平均值。

在計(jì)算像MA5這樣的數(shù)據(jù)時(shí),因?yàn)樽铋_(kāi)始的4天數(shù)據(jù)量不夠,這4天對(duì)應(yīng)的移動(dòng)平均值是無(wú)法計(jì)算出來(lái)的,所以會(huì)產(chǎn)生空值NaN。通常會(huì)用dropna()函數(shù)刪除空值,以免在后續(xù)計(jì)算中出現(xiàn)因空值造成的問(wèn)題,代碼如下。

Python隨機(jī)森林模型是什么

可以看到16號(hào)以前的行被刪除。

4.1.4 用TA-Lib庫(kù)生成相對(duì)強(qiáng)弱指標(biāo)RSI值

通過(guò)如下代碼可以生成相對(duì)強(qiáng)弱指標(biāo)RSI值。

Python隨機(jī)森林模型是什么

RSI值能反映短期內(nèi)股價(jià)漲勢(shì)相對(duì)于跌勢(shì)的強(qiáng)弱,幫助我們更好地判斷股價(jià)的漲跌趨勢(shì)。

RSI值越大,漲勢(shì)相對(duì)于跌勢(shì)越強(qiáng),反之則漲勢(shì)相對(duì)于跌勢(shì)越弱。

RSI值的計(jì)算公式如下。

Python隨機(jī)森林模型是什么

舉例:

Python隨機(jī)森林模型是什么

根據(jù)上表數(shù)據(jù),取N=6,可求得6日平均上漲價(jià)格為(2+2+2)/6=1,6日平均下跌價(jià)格為(1+1+1)/6=0.5,所以RSI值為(1/(1+0.5))×100=66.7。

通常情況下,RSI值位于20~80之間,超過(guò)80則為超買(mǎi)狀態(tài),低于20則為超賣(mài)狀態(tài),等于50則認(rèn)為買(mǎi)賣(mài)雙方力量均等。例如,如果連續(xù)6天股價(jià)都是上漲,則6日平均下跌價(jià)格為0,6日RSI值為100,表明此時(shí)股票買(mǎi)方處于非常強(qiáng)勢(shì)的地位,但也提醒投資者要警惕此時(shí)可能也是超買(mǎi)狀態(tài),需要預(yù)防股價(jià)下跌的風(fēng)險(xiǎn)。

4.1.5 用TA-Lib庫(kù)生成動(dòng)量指標(biāo)MOM值

通過(guò)如下代碼可以生成動(dòng)量指標(biāo)MOM值。

Python隨機(jī)森林模型是什么

MOM是momentum(動(dòng)量)的縮寫(xiě),它反映了一段時(shí)期內(nèi)股價(jià)的漲跌速度,計(jì)算公式如下。

Python隨機(jī)森林模型是什么

舉例:

Python隨機(jī)森林模型是什么

假設(shè)要計(jì)算6號(hào)的MOM值,而前面的代碼中設(shè)置參數(shù)timeperiod為5,那么就需要用6號(hào)的收盤(pán)價(jià)減去1號(hào)的收盤(pán)價(jià),即6號(hào)的MOM值為2.2-1.2=1,同理,7號(hào)的MOM值為2.4-1.4=1。將連續(xù)幾天的MOM值連起來(lái)就構(gòu)成一條反映股價(jià)漲跌變動(dòng)的曲線。

4.1.6 用TA-Lib庫(kù)生成指數(shù)移動(dòng)平均值EMA

通過(guò)如下代碼可以生成指數(shù)移動(dòng)平均值EMA。

Python隨機(jī)森林模型是什么

EMA是以指數(shù)式遞減加權(quán)的移動(dòng)平均,并根據(jù)計(jì)算結(jié)果進(jìn)行分析,用于判斷股價(jià)未來(lái)走勢(shì)的變動(dòng)趨勢(shì)。

EMA的計(jì)算公式如下。

Python隨機(jī)森林模型是什么

其中,EMAtoday為當(dāng)天的EMA值;Pricetoday為當(dāng)天的收盤(pán)價(jià);EMAyesterday為昨天的EMA值;α為平滑指數(shù),一般取值為2/(N+1),N表示天數(shù),當(dāng)N為6時(shí),α為2/7,對(duì)應(yīng)的EMA稱為EMA6,即6日指數(shù)移動(dòng)平均值。公式不斷遞歸,直至第1個(gè)EMA值出現(xiàn)(第1個(gè)EMA值通常為開(kāi)頭5個(gè)數(shù)的均值)。

舉例:EMA6

Python隨機(jī)森林模型是什么

取第1個(gè)EMA值為開(kāi)頭5個(gè)數(shù)的均值,故前5天都沒(méi)有EMA值;6號(hào)的EMA值就是第1個(gè)EMA值,為前5天的均值,即1;7號(hào)的EMA值為第2個(gè)EMA值,計(jì)算過(guò)程如下。

Python隨機(jī)森林模型是什么

4.1.7 用TA-Lib庫(kù)生成異同移動(dòng)平均線MACD值

通過(guò)如下代碼可以生成異同移動(dòng)平均線MACD值。

Python隨機(jī)森林模型是什么

MACD是股票市場(chǎng)上的常用指標(biāo),它是基于EMA值的衍生變量,計(jì)算方法比較復(fù)雜,感興趣的讀者可以自行了解。這里只需要知道MACD是一種趨勢(shì)類指標(biāo),其變化代表著市場(chǎng)趨勢(shì)的變化,不同K線級(jí)別的MACD代表當(dāng)前級(jí)別周期中的買(mǎi)賣(mài)趨勢(shì)。

4.2 模型搭建

4.2.1 引入需要搭建的庫(kù)

# 導(dǎo)入相關(guān)庫(kù)
import tushare as ts
import numpy as np
import pandas as pd
import talib
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

4.2.2 獲取數(shù)據(jù)

# 1.股票基本數(shù)據(jù)獲取
import tushare as ts
df = ts.get_k_data('000002',start='2015-01-01',end='2019-12-31')
df = df.set_index('date')

# 2.簡(jiǎn)單衍生變量數(shù)據(jù)構(gòu)造
df['close-open'] = (df['close'] - df['open']) / df['open']
df['high-low'] = (df['high'] - df['low']) / df['low']
df['pre_close'] = df['close'].shift(1)
df['price_change'] = df['close'] - df['pre_close']
df['p_change'] = (df['close'] - df['pre_close']) / df['pre_close'] * 100

# 3.移動(dòng)平均線相關(guān)數(shù)據(jù)構(gòu)造
df['MA5'] = df['close'].rolling(5).mean()
df['MA10'] = df['close'].rolling(10).mean()
df.dropna(inplace=True)

# 4.通過(guò)TA-Lib庫(kù)構(gòu)造衍生變量數(shù)據(jù)
df['RSI'] = talib.RSI(df['close'],timeperiod=12)
df['MOM'] = talib.MOM(df['close'],timeperiod=5)
df['EMA12'] = talib.EMA(df['close'],timeperiod=12) #12日指移動(dòng)平均值數(shù)
df['EMA26'] = talib.EMA(df['close'],timeperiod=26) #26日指移動(dòng)平均值數(shù)
df['MACD'],df['MACDsignal'],df['MACDhist'] = talib.MACD(df['close'],fastperiod=6,slowperiod=12,signalperiod=9)
df.dropna(inplace=True)

4.2.3 提取特征變量和目標(biāo)變量

X = df[['close','volume','close-open','MA5','MA10','high-low','RSI','MOM','EMA12','MACD','MACDsignal','MACDhist']]
y = np.where(df['price_change'].shift(-1) > 0,1,-1)

首先強(qiáng)調(diào)最核心的一點(diǎn):應(yīng)該是用當(dāng)天的股價(jià)數(shù)據(jù)預(yù)測(cè)下一天的股價(jià)漲跌情況,所以目標(biāo)變量y應(yīng)該是下一天的股價(jià)漲跌情況。為什么是用當(dāng)天的股價(jià)數(shù)據(jù)預(yù)測(cè)下一天的股價(jià)漲跌情況呢?這是因?yàn)樘卣髯兞恐械暮芏鄶?shù)據(jù)只有在當(dāng)天交易結(jié)束后才能確定(例如,收盤(pán)價(jià)close只有收盤(pán)了才有),所以當(dāng)天正在交易時(shí)的股價(jià)漲跌情況是無(wú)法預(yù)測(cè)的,而等到收盤(pán)時(shí)盡管所需數(shù)據(jù)齊備,但是當(dāng)天的股價(jià)漲跌情況已成定局,也就沒(méi)有必要預(yù)測(cè)了,所以是用當(dāng)天的股價(jià)數(shù)據(jù)預(yù)測(cè)下一天的股價(jià)漲跌情況。

第2行代碼中使用了NumPy庫(kù)中的where()函數(shù),傳入的3個(gè)參數(shù)的含義分別為判斷條件、滿足條件的賦值、不滿足條件的賦值。其中df['price_change'].shift(-1)是利用shift()函數(shù)將price_change(股價(jià)變化)這一列的所有數(shù)據(jù)向上移動(dòng)1行,這樣就獲得了每一行對(duì)應(yīng)的下一天的股價(jià)變化。因此,這里的判斷條件就是下一天的股價(jià)變化是否大于0,如果大于0,說(shuō)明下一天股價(jià)漲了,則y賦值為1;如果不大于0,說(shuō)明下一天股價(jià)不變或跌了,則y賦值為-1。預(yù)測(cè)結(jié)果就只有1或-1兩種分類。

4.2.4 劃分訓(xùn)練集和測(cè)試集

這里需要注意的是,劃分要按照時(shí)間序列進(jìn)行,而不能用train_test_split()函數(shù)進(jìn)行隨機(jī)劃分。這是因?yàn)楣蓛r(jià)的變化趨勢(shì)具有時(shí)間性特征,而隨機(jī)劃分會(huì)破壞這種特征,所以需要根據(jù)當(dāng)天的股價(jià)數(shù)據(jù)預(yù)測(cè)下一天的股價(jià)漲跌情況,而不能根據(jù)任意一天的股價(jià)數(shù)據(jù)預(yù)測(cè)下一天的股價(jià)漲跌情況。

將前90%的數(shù)據(jù)作為訓(xùn)練集,后10%的數(shù)據(jù)作為測(cè)試集,代碼如下。

X_length = X.shape[0]
split = int(X_length * 0.9)
X_train,X_test = X[:split],X[split:]
y_train,y_test = y[:split],y[split:]

4.2.5 模型搭建

model = RandomForestClassifier(max_depth=3,n_estimators=10,min_samples_leaf=10,random_state=123)
model.fit(X_train,y_train)

設(shè)置模型參數(shù):決策樹(shù)的最大深度max_depth設(shè)置為3,即每個(gè)決策樹(shù)最多只有3層;弱學(xué)習(xí)器(即決策樹(shù)模型)的個(gè)數(shù)n_estimators設(shè)置為10,即該隨機(jī)森林中共有10個(gè)決策樹(shù);葉子節(jié)點(diǎn)的最小樣本數(shù)min_samples_leaf設(shè)置為10,即如果葉子節(jié)點(diǎn)的樣本數(shù)小于10則停止分裂;隨機(jī)狀態(tài)參數(shù)random_state的作用是使每次運(yùn)行結(jié)果保持一致,這里設(shè)置的數(shù)字123沒(méi)有特殊含義,可以換成其他數(shù)字。

4.3 模型評(píng)估與使用

4.3.1 預(yù)測(cè)下一天的股價(jià)漲跌情況

Python隨機(jī)森林模型是什么

用predict_proba()函數(shù)可以預(yù)測(cè)屬于各個(gè)分類的概率,代碼如下。

Python隨機(jī)森林模型是什么

4.3.2 模型準(zhǔn)確度評(píng)估

通過(guò)如下代碼可以查看整體的預(yù)測(cè)準(zhǔn)確度。

Python隨機(jī)森林模型是什么

打印輸出score為0.40,說(shuō)明模型對(duì)整個(gè)測(cè)試集中約40%的數(shù)據(jù)預(yù)測(cè)正確。這一預(yù)測(cè)準(zhǔn)確度并不算高,也的確符合股票市場(chǎng)千變?nèi)f化的特點(diǎn)。

4.3.3 分析特征變量的特征重要性

通過(guò)如下代碼可以分析各個(gè)特征變量的特征重要性。

Python隨機(jī)森林模型是什么

由圖可知,當(dāng)日收盤(pán)價(jià)close、MA5、MACDhist相關(guān)指標(biāo)等特征變量對(duì)下一天股價(jià)漲跌結(jié)果的預(yù)測(cè)準(zhǔn)確度影響較大。

4.4 參數(shù)調(diào)優(yōu)

from sklearn.model_selection import GridSearchCV
parameters={'n_estimators':[5,10,20],'max_depth':[2,3,4,5,6],'min_samples_leaf':[5,10,20,30]}
new_model = RandomForestClassifier(random_state=123)
grid_search = GridSearchCV(new_model,parameters,cv=6,scoring='accuracy')
grid_search.fit(X_train,y_train)
grid_search.best_params_

# 輸出
# {'max_depth': 5, 'min_samples_leaf': 20, 'n_estimators': 5}

4.5 收益回測(cè)曲線繪制

前面已經(jīng)評(píng)估了模型的預(yù)測(cè)準(zhǔn)確度,不過(guò)在商業(yè)實(shí)戰(zhàn)中,更關(guān)心它的收益回測(cè)曲線(又稱為凈值曲線),也就是看根據(jù)搭建的模型獲得的結(jié)果是否比不利用模型獲得的結(jié)果更好。

# 在測(cè)試數(shù)據(jù)上添加一列,預(yù)測(cè)收益
X_test['prediction'] = model.predict(X_test)

# 計(jì)算每天的股價(jià)變化率
X_test['p_change'] = (X_test['close'] - X_test['close'].shift(1)) / X_test['close'].shift(1)

# 計(jì)算累積收益率
# 例如,初始股價(jià)是1,2天內(nèi)的價(jià)格變化率為10%
# 那么用cumprod()函數(shù)可以求得2天后的股價(jià)為1×(1+10%)×(1+10%)=1.21
# 此結(jié)果也表明2天的收益率為21%。
X_test['origin'] = (X_test['p_change'] + 1).cumprod()

# 計(jì)算利用模型預(yù)測(cè)后的收益率
X_test['strategy'] = (X_test['prediction'].shift(1) * X_test['p_change'] + 1).cumprod()

X_test[['strategy','origin']].dropna().plot()
# 設(shè)置自動(dòng)傾斜
plt.gcf().autofmt_xdate()
plt.show()

可視化結(jié)果如下圖所示。圖中上方的曲線為根據(jù)模型得到的收益率曲線,下方的曲線為股票本身的收益率曲線,可以看到,利用模型得到的收益還是不錯(cuò)的。

Python隨機(jī)森林模型是什么

要說(shuō)明的是,這里講解的量化金融內(nèi)容比較淺顯,搭建的模型過(guò)于理想化,真正的股市是錯(cuò)綜復(fù)雜的,股票交易也有很多限制,如不能做空、不能T+0交易,還要考慮手續(xù)費(fèi)等因素。

隨機(jī)森林模型是一種非常重要的集成模型,它集成了決策樹(shù)模型的眾多優(yōu)點(diǎn),又規(guī)避了決策樹(shù)模型容易過(guò)度擬合等缺點(diǎn),在實(shí)戰(zhàn)中應(yīng)用較為廣泛。

以上就是關(guān)于“Python隨機(jī)森林模型是什么”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前文章:Python隨機(jī)森林模型是什么
分享URL:http://chinadenli.net/article6/pijeog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、軟件開(kāi)發(fā)網(wǎng)站排名、用戶體驗(yàn)網(wǎng)站收錄、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司