国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何用Python對(duì)股票數(shù)據(jù)進(jìn)行LSTM神經(jīng)網(wǎng)絡(luò)和XGboost機(jī)器學(xué)習(xí)預(yù)測分析(附源碼和詳細(xì)步驟),學(xué)會(huì)的小伙伴們說不定就成為炒股專家一夜暴富了

這篇具有很好參考價(jià)值的文章主要介紹了如何用Python對(duì)股票數(shù)據(jù)進(jìn)行LSTM神經(jīng)網(wǎng)絡(luò)和XGboost機(jī)器學(xué)習(xí)預(yù)測分析(附源碼和詳細(xì)步驟),學(xué)會(huì)的小伙伴們說不定就成為炒股專家一夜暴富了。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

最近調(diào)研了一下我做的項(xiàng)目受歡迎程度,大數(shù)據(jù)分析方向竟然排第一,尤其是這兩年受疫情影響,大家都非常擔(dān)心自家公司裁員或倒閉,都想著有沒有其他副業(yè)搞搞或者炒炒股、投資點(diǎn)理財(cái)產(chǎn)品,未雨綢繆,所以不少小伙伴要求我這邊分享下關(guān)于股票預(yù)測分析的技巧。

基于股票數(shù)據(jù)是一個(gè)和時(shí)間序列相關(guān)的大數(shù)據(jù),所以我打算給大家分享時(shí)下最受歡迎的時(shí)序模型:LSTM、XGBoost兩大經(jīng)典模型


一、模型簡介

1.1 LSTM神經(jīng)網(wǎng)絡(luò)模型

根據(jù)百度百科定義:長短期記憶網(wǎng)絡(luò)(LSTM,Long Short-Term Memory)是一種時(shí)間循環(huán)神經(jīng)網(wǎng)絡(luò),是為了解決一般的RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))存在的長期依賴問題而專門設(shè)計(jì)出來的,所有的RNN都具有一種重復(fù)神經(jīng)網(wǎng)絡(luò)模塊的鏈?zhǔn)叫问健T跇?biāo)準(zhǔn)RNN中,這個(gè)重復(fù)的結(jié)構(gòu)模塊只有一個(gè)非常簡單的結(jié)構(gòu),例如一個(gè)tanh層。

LSTM 能夠進(jìn)行一次多步預(yù)測,對(duì)于時(shí)間序列預(yù)測有一定的參考價(jià)值。LSTM的難點(diǎn)在于配置不方便。
python強(qiáng)化學(xué)習(xí)多步預(yù)測股價(jià),大數(shù)據(jù)分析,python,神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí),深度學(xué)習(xí),人工智能
python強(qiáng)化學(xué)習(xí)多步預(yù)測股價(jià),大數(shù)據(jù)分析,python,神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí),深度學(xué)習(xí),人工智能

1.2 XGBoost機(jī)器學(xué)習(xí)模型

XGBoost全稱是eXtreme Gradient Boosting,根據(jù)百度百科定義:XGBoost是一個(gè)優(yōu)化的分布式梯度增強(qiáng)庫,旨在實(shí)現(xiàn)高效,靈活和便攜。它在 Gradient Boosting 框架下實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法。XGBoost提供并行樹提升(也稱為GBDT,GBM),可以快速準(zhǔn)確地解決許多數(shù)據(jù)科學(xué)問題。相同的代碼在主要的分布式環(huán)境(Hadoop,SGE,MPI)上運(yùn)行,并且可以解決數(shù)十億個(gè)示例之外的問題。

可能大家光看定義,不能太理解XGBoost的牛逼之處,了解過Kaggle競賽的小伙伴應(yīng)該知道,由于XGBoost 庫專注于計(jì)算速度和模型性能,因此幾乎沒有多余的裝飾,算法的實(shí)現(xiàn)也旨在提高計(jì)算時(shí)間和內(nèi)存資源的效率,所以它目前已經(jīng)在 Kaggle 競賽數(shù)據(jù)科學(xué)平臺(tái)上成為競賽獲勝者的首選算法。

例如,有一個(gè)不完整的一、二、三等獎(jiǎng)獲獎(jiǎng)名單,標(biāo)題為: XGBoost: Machine Learning Challenge Winning Solutions。

為了使這一點(diǎn)更加具體,以下是 Kaggle 競賽獲勝者的一些有見地的引述:

作為越來越多的 Kaggle 比賽的獲勝者,XGBoost 再次向我們展示了它是一種出色的全能算法。

——拿督優(yōu)勝者訪談:第一名,瘋狂教授

如有疑問,請(qǐng)使用 xgboost。

— Avito 優(yōu)勝者訪談:第一名,Owen Zhang

我喜歡表現(xiàn)良好的單個(gè)模型,我最好的單個(gè)模型是 XGBoost,它可以單獨(dú)獲得第 10 名。

—卡特彼勒獲獎(jiǎng)?wù)咴L談:第一名

我只用過 XGBoost。

— Liberty Mutual Property Inspection,優(yōu)勝者訪談:第一名,王清臣

我使用的唯一監(jiān)督學(xué)習(xí)方法是梯度提升,在優(yōu)秀的 xgboost 中實(shí)現(xiàn)。

— Recruit Coupon Purchase 優(yōu)勝者訪談:第二名,Halla Yang

同時(shí)XGBoost 是免費(fèi)的開源軟件,可在 Apache-2 許可下使用,尤其是支持多種接口,如命令行界面 (CLI)、C++(編寫庫的語言)、Python 接口以及 scikit-learn 中的模型、R 接口以及 caret 包中的模型、Julia、Java 和 JVM 語言(如 Scala)和平臺(tái)(如 Hadoop)。所以它應(yīng)用得也越來越廣泛,它也是我學(xué)習(xí)監(jiān)督機(jī)器學(xué)習(xí)的最重要算法。

關(guān)于它的原理實(shí)現(xiàn),我這就不詳細(xì)介紹了,這篇主要是講其應(yīng)用,感興趣的小伙伴們可以自己搜索學(xué)習(xí)下,當(dāng)然你也可以登錄它的github地址來詳細(xì)學(xué)習(xí)。
python強(qiáng)化學(xué)習(xí)多步預(yù)測股價(jià),大數(shù)據(jù)分析,python,神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí),深度學(xué)習(xí),人工智能

二、項(xiàng)目詳細(xì)介紹

任何一個(gè)大數(shù)據(jù)分析項(xiàng)目,我覺得都應(yīng)該先了解清楚項(xiàng)目目的,在做分析,所以我們先來簡單明確下本次項(xiàng)目的主要目的:

項(xiàng)目目的

本次項(xiàng)目是使用LSTM神經(jīng)網(wǎng)絡(luò)模型、XGBoost模型,來對(duì)股票數(shù)據(jù)中的某個(gè)關(guān)鍵價(jià)格,進(jìn)行預(yù)測分析。數(shù)據(jù)來源,搜狐財(cái)經(jīng)中的某個(gè)可轉(zhuǎn)債Zclose相關(guān)數(shù)據(jù)。

下面我就按照大數(shù)據(jù)分析的一般步驟給大家演示下具體項(xiàng)目實(shí)現(xiàn)過程,該分析步驟基本適用于大部分?jǐn)?shù)據(jù)分析流程,覺得有用的小伙伴們可以收藏關(guān)注哈。

2.1 導(dǎo)入數(shù)據(jù)

主要使用Pandas庫進(jìn)行數(shù)據(jù)導(dǎo)入

import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)

all_data_set_path = r'csv_export\csv_data_1m_begin_40d_博22轉(zhuǎn)債_SHSE.113650_SHSE.603916.csv'
all_data_set = pd.read_csv(all_data_set_path)
print(all_data_set.head()) 
print(all_data_set.info()) #查看有多少數(shù)據(jù)及特征
print(all_data_set.isnull().sum()) #檢查是否有空數(shù)據(jù)

python強(qiáng)化學(xué)習(xí)多步預(yù)測股價(jià),大數(shù)據(jù)分析,python,神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí),深度學(xué)習(xí),人工智能python強(qiáng)化學(xué)習(xí)多步預(yù)測股價(jià),大數(shù)據(jù)分析,python,神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí),深度學(xué)習(xí),人工智能

2.2 研究數(shù)據(jù)

主要使用matplotlib庫對(duì)數(shù)據(jù)進(jìn)行初步特征研究分析

import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')

# 特征熱力圖 相關(guān)性分析
list_columns = all_data_set.columns
plt.figure(figsize=(15,10))
sns.heatmap(all_data_set[list_columns].corr(), annot=True, fmt=".2f")
plt.show()

python強(qiáng)化學(xué)習(xí)多步預(yù)測股價(jià),大數(shù)據(jù)分析,python,神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí),深度學(xué)習(xí),人工智能從熱力圖可以大概看出,與zclose相關(guān)性比較高的幾個(gè)特征,接下來就是對(duì)特征重要性進(jìn)行排序,選擇出相關(guān)性較高的特征。可以看出zlow、zhigh、zopen與zclose特征的相關(guān)性最高,都達(dá)到了98%左右,所以我們可以優(yōu)先選取這3個(gè)特征,進(jìn)行分析。

# 對(duì)特征重要性進(jìn)行排序
corr_1 = all_data_set.corr()
corr_1["zclose"].sort_values(ascending=False)

python強(qiáng)化學(xué)習(xí)多步預(yù)測股價(jià),大數(shù)據(jù)分析,python,神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí),深度學(xué)習(xí),人工智能

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

數(shù)據(jù)預(yù)處理是整個(gè)數(shù)據(jù)分析過程中最重要的一個(gè)步驟,都說"數(shù)據(jù)和特征決定了機(jī)器學(xué)習(xí)的上限,而模型和算法只是逼近這個(gè)上限而已"。如果數(shù)據(jù)和關(guān)鍵特征處理的好,使用不同的模型和算法,都可以取得比較好的效果。

而且數(shù)據(jù)預(yù)處理往往要占整個(gè)數(shù)據(jù)分析的大部分時(shí)間,有些甚至占到80%-90%的時(shí)間。所以想深入學(xué)習(xí)大數(shù)據(jù)分析的小伙伴們,要熟練掌握各種數(shù)據(jù)預(yù)處理的方法哈,比如常用的空值、缺失值、異常值處理、數(shù)據(jù)不平衡處理、特征組合等等。

由于未來股票受近期股票價(jià)格波動(dòng)的影響較大,所以為了能充分利用近期的股票數(shù)據(jù),博主編寫了一個(gè)預(yù)處理函數(shù),組合歷史前幾次的數(shù)據(jù)生成更多的特征來進(jìn)行預(yù)測。這也是時(shí)序特征數(shù)據(jù)的常用方法,大概可以理解為滑動(dòng)窗口取值吧,具體如下:

len_ = len(['zopen','zhigh','zlow','zclose'])*3
col_numbers_drop = []
for i in range(3):
    col_numbers_drop.append(len_+i)
print(col_numbers_drop)

# 依據(jù)特征重要性,選擇zlow zhigh zopen來進(jìn)行預(yù)測zclose
# 數(shù)據(jù)選擇t-n, ...., t-2 t-1 與 t 來預(yù)測未來 t+1
# 轉(zhuǎn)換原始數(shù)據(jù)為新的特征列來進(jìn)行預(yù)測,time_window可以用來調(diào)試用前幾次的數(shù)據(jù)來預(yù)測
def series_to_supervised(data,time_window=3):
    data_columns = ['zopen','zhigh','zlow','zclose']
    data = data[data_columns]  # Note this is important to the important feature choice
    cols, names = list(), list()
    for i in range(time_window, -1, -1):
        # get the data
        cols.append(data.shift(i)) #數(shù)據(jù)偏移量
        
        # get the column name
        if ((i-1)<=0):
            suffix = '(t+%d)'%abs(i-1)
        else:
            suffix = '(t-%d)'%(i-1)
        names += [(colname + suffix) for colname in data_columns]
        
    # concat the cols into one dataframe
    agg = pd.concat(cols,axis=1)
    agg.columns = names
    agg.index = data.index.copy()
    # remove the nan value which is caused by pandas.shift
    agg = agg.dropna(inplace=False)

    # remove unused col (only keep the "close" fied for the t+1 period)
    # Note col "close" place in the columns

    len_ = len(data_columns)*time_window
    col_numbers_drop = []
    for i in range(len(data_columns)-1):
        col_numbers_drop.append(len_+i)

    agg.drop(agg.columns[col_numbers_drop],axis=1,inplace = True)
       
    return agg
    
all_data_set2 = all_data_set.copy()
all_data_set2["index"] = pd.to_datetime(all_data_set2["index"])       # 日期object: to datetime
all_data_set2.set_index("index", inplace=True, drop=True) # 把index設(shè)為索引

all_data_set2 = all_data_set2[116:] # 這里把7月28日的數(shù)據(jù)全部刪掉了,主要是數(shù)據(jù)缺失較多

data_set_process = series_to_supervised(all_data_set2,10) #取近10分鐘的數(shù)據(jù)
print(data_set_process.columns.values)

print(data_set_process.info())

到此,我們數(shù)據(jù)集就生成了,接下來就可以搭建模型,訓(xùn)練模型和預(yù)測數(shù)據(jù)了。

2.4 搭建模型

2.4.1 LSTM神經(jīng)網(wǎng)絡(luò)模型

我們可以直接使用Tensorflow 和 Keras中封裝好的LSTM模型來進(jìn)行模型搭建,這里要告訴大家的是,之所以很多小伙伴都用python來做數(shù)據(jù)分析,是因?yàn)楹芏嚅_發(fā)者已經(jīng)用python搭建了各種各樣的wheel/package方便大家直接使用。

所以我們就可以直接站在巨人的肩膀上,快速搭建我們需要的各種模型,同時(shí)也可以自己對(duì)模型進(jìn)行調(diào)參,獲取最優(yōu)參數(shù)組合,從而生成一個(gè)高精度的數(shù)據(jù)模型。

這里要注意:LSTM要求數(shù)據(jù)格式為numpy格式的數(shù)組,所以要將pandas的Dataframe數(shù)據(jù)轉(zhuǎn)換一下,同時(shí)LSTM模型對(duì)于不同數(shù)據(jù)范圍的特征較為敏感,一般都要進(jìn)行相同的范圍內(nèi)數(shù)據(jù)縮放避免預(yù)測錯(cuò)誤,所以使用了MinMaxScaler進(jìn)行縮放數(shù)據(jù)。(也可以使用StandardScaler)。后面數(shù)據(jù)預(yù)測后,再進(jìn)行數(shù)據(jù)逆縮放就可以獲得最后結(jié)果了。

具體模型搭建如下:

# 注意這里要安裝Tensorflow 和 Keras才能使用
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data_set_process)

# split the train and test data
train_size = int(len(data_set_process) * 0.8)
test_size = len(data_set_process) - train_size
train_LSTM, test_LSTM = scaled_data[0:train_size, :], scaled_data[train_size:len(data_set_process), :]

train_LSTM_X, train_LSTM_Y = train_LSTM[:, :(len(data_set_process.columns) - 1)], train_LSTM[:,
                                                                                  (len(data_set_process.columns) - 1)]
test_LSTM_X, test_LSTM_Y = test_LSTM[:, :(len(data_set_process.columns) - 1)], test_LSTM[:,
                                                                               (len(data_set_process.columns) - 1)]

# reshape input to be [samples, time steps, features]
train_LSTM_X2 = np.reshape(train_LSTM_X, (train_LSTM_X.shape[0], 1, train_LSTM_X.shape[1]))
test_LSTM_X2 = np.reshape(test_LSTM_X, (test_LSTM_X.shape[0], 1, test_LSTM_X.shape[1]))

print(train_LSTM_X.shape, train_LSTM_Y.shape, test_LSTM_X.shape, test_LSTM_Y.shape)
print(train_LSTM_X2.shape, test_LSTM_X2.shape)

# creat and fit the LSTM network
model = Sequential()
model.add(LSTM(50, input_shape=(train_LSTM_X2.shape[1], train_LSTM_X2.shape[2])))
# model.add(LSTM(50))
model.add(Dense(1))
model.compile(loss="mae", optimizer="Adam")
print(model.summary()) #這里是打印模型基本信息

print("start to fit the model")
history = model.fit(train_LSTM_X2, train_LSTM_Y, epochs=50, batch_size=50, validation_data=(test_LSTM_X2, test_LSTM_Y),
                    verbose=2, shuffle=False)

plt.plot(history.history['loss'], label='train')  #可視化模型訓(xùn)練的損失函數(shù)
plt.plot(history.history['val_loss'], label='test')
plt.legend()
plt.show()

model.save('LSTM_model.h5')  # 這里保存模型,以便以后可以不用再訓(xùn)練,直接使用

# model的使用
# from tensorflow.keras.models import load_model
# del model  # 刪除已存在的model
# model = load_model('LSTM_model.h5')

# make prediction
yPredict = model.predict(test_LSTM_X2) #進(jìn)行模型預(yù)測,注意這里要進(jìn)行數(shù)據(jù)逆縮放,獲取最后結(jié)果,同時(shí)注意逆縮放數(shù)據(jù)時(shí)必須與scaler的數(shù)據(jù)維度保持一致
print(yPredict.shape)
testPredict = scaler.inverse_transform(np.concatenate((test_LSTM_X, yPredict), axis=1))[:, -1:]

python強(qiáng)化學(xué)習(xí)多步預(yù)測股價(jià),大數(shù)據(jù)分析,python,神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí),深度學(xué)習(xí),人工智能
python強(qiáng)化學(xué)習(xí)多步預(yù)測股價(jià),大數(shù)據(jù)分析,python,神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí),深度學(xué)習(xí),人工智能

2.4.2 XGBoost模型搭建

XGBoost的模型可以說是非常成熟了,我們可以直接安裝xgboost庫來搭建模型,博主選了一組初始參數(shù)進(jìn)行模型訓(xùn)練,小伙伴們也可以使用網(wǎng)格搜索GridSearchCV()或者隨機(jī)搜索RandomizedSearchCV()來進(jìn)行參數(shù)調(diào)優(yōu)操作,具體如下:

import xgboost as xgb
from xgboost import plot_importance, plot_tree

train_size = int(len(data_set_process)*0.8)
test_size = len(data_set_process) - train_size
train_XGB, test_XGB = scaled_data[0:train_size,:],scaled_data[train_size:len(data_set_process),:]

train_XGB_X, train_XGB_Y = train_XGB[:,:(len(data_set_process.columns)-1)],train_XGB[:,(len(data_set_process.columns)-1)]
test_XGB_X, test_XGB_Y = test_XGB[:,:(len(data_set_process.columns)-1)],test_XGB[:,(len(data_set_process.columns)-1)]

# 算法參數(shù)
params = {
    'booster':'gbtree',
    'objective':'binary:logistic',  # 此處為回歸預(yù)測,這里如果改成multi:softmax 則可以進(jìn)行多分類
    'gamma':0.1,
    'max_depth':5,
    'lambda':3,
    'subsample':0.7,
    'colsample_bytree':0.7,
    'min_child_weight':3,
    'slient':1,
    'eta':0.1,
    'seed':1000,
    'nthread':4,
}

#生成數(shù)據(jù)集格式
xgb_train = xgb.DMatrix(train_XGB_X,label = train_XGB_Y)
xgb_test = xgb.DMatrix(test_XGB_X,label = test_XGB_Y)
num_rounds = 300
watchlist = [(xgb_test,'eval'),(xgb_train,'train')]

#xgboost模型訓(xùn)練
model_xgb = xgb.train(params,xgb_train,num_rounds,watchlist)

#對(duì)測試集進(jìn)行預(yù)測
y_pred_xgb = model_xgb.predict(xgb_test)

2.5 數(shù)據(jù)可視化及評(píng)估

數(shù)據(jù)可視化就相對(duì)簡單了,類似于我們用excel來生成各種圖表,直觀地來看數(shù)據(jù)分布情況。

除了對(duì)數(shù)據(jù)直觀展示外,我們也常使用MAPE、MAE、RMSE、R2對(duì)數(shù)據(jù)預(yù)測結(jié)果準(zhǔn)確性進(jìn)行評(píng)估,這里我就簡單使用了MAPE(平均絕對(duì)誤差率)給大家演示,其中LSTM模型下的測試集、訓(xùn)練集的MAPE都在0.07%之內(nèi),也就是說準(zhǔn)確率在99.9%以上,可以說效果很好了。XGBoost模型的測試集MAPE在1.2%之內(nèi),也就是說準(zhǔn)確率在98.8%左右,也可以說效果不錯(cuò)。

具體LSTM模型結(jié)果可視化及評(píng)估如下:

# make prediction
yPredict = model.predict(test_LSTM_X2)
print(yPredict.shape)

testPredict = scaler.inverse_transform(np.concatenate((test_LSTM_X, yPredict), axis=1))[:, -1:]
test_LSTM_Y2 = scaler.inverse_transform(np.concatenate((test_LSTM_X, test_LSTM_Y.reshape(len(test_LSTM_Y),1)), axis=1))[:, -1:]
print(testPredict.shape)
# print(testPredict)

print("start calculate the mape") 

mape = np.mean(np.abs(test_LSTM_Y2.flatten()-testPredict.flatten())/test_LSTM_Y2.flatten())*100  # 這里計(jì)算測試集預(yù)測結(jié)果與真實(shí)結(jié)果的誤差率
print('Test LSTM for test set Score:%.6f MAPE' %(mape)) #0.027897%的誤差

yPredict_train = model.predict(train_LSTM_X2)
print(yPredict_train.shape)
print(train_LSTM_X2.shape)
trainPredict = scaler.inverse_transform(np.concatenate((train_LSTM_X, yPredict_train), axis=1))[:, -1:]
train_LSTM_Y2 = scaler.inverse_transform(np.concatenate((train_LSTM_X, train_LSTM_Y.reshape(len(train_LSTM_Y),1)), axis=1))[:, -1:]

print("start calculate the mape2")

mape2 = np.mean(np.abs(train_LSTM_Y2.flatten()-trainPredict.flatten())/train_LSTM_Y2.flatten())*100  # 這里計(jì)算訓(xùn)練集預(yù)測結(jié)果與真實(shí)結(jié)果的誤差率
print('Test LSTM for train set Score:%.6f MAPE' %(mape2))  #0.068852%的誤差

plt.plot(train_LSTM_Y2, color = 'red', label = 'Real Price for Train set')
plt.plot(trainPredict, color = 'blue', label = 'Predicted Price for Train set')
plt.title('Zclose Price Prediction for Train set')
plt.xlabel('Time')
plt.ylabel('Sohu Zclose Price')
plt.legend()
plt.show()

plt.plot(test_LSTM_Y2, color = 'red', label = 'Real Price for Test set')
plt.plot(testPredict, color = 'blue', label = 'Predicted Price for Test set')
plt.title('Zclose Price Prediction for Test set')
plt.xlabel('Time')
plt.ylabel('Sohu Zclose Price')
plt.legend()
plt.show()

python強(qiáng)化學(xué)習(xí)多步預(yù)測股價(jià),大數(shù)據(jù)分析,python,神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí),深度學(xué)習(xí),人工智能python強(qiáng)化學(xué)習(xí)多步預(yù)測股價(jià),大數(shù)據(jù)分析,python,神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí),深度學(xué)習(xí),人工智能python強(qiáng)化學(xué)習(xí)多步預(yù)測股價(jià),大數(shù)據(jù)分析,python,神經(jīng)網(wǎng)絡(luò),機(jī)器學(xué)習(xí),深度學(xué)習(xí),人工智能

具體XGBoost模型結(jié)果可視化及評(píng)估如下:

plt.plot(test_XGB_Y, color = 'red', label = 'Real Price for Test set')
plt.plot(y_pred_xgb, color = 'blue', label = 'Predicted Price for Test set')
plt.title('Zclose Price Prediction for Test set')
plt.xlabel('Time')
plt.ylabel('Sohu Zclose Price')
plt.legend()
plt.show()

mape_xgb = np.mean(np.abs(y_pred_xgb-test_XGB_Y)/test_XGB_Y)*100
print('XGBoost平均誤差率為:{}%'.format(mape_xgb))  #平均誤差率為1.1974%

代碼

所有數(shù)據(jù)集、代碼都已經(jīng)上傳到我的github,歡迎大家前往fork、下載。

建議

博主有位朋友在大的金融公司專門做量化投資的,他嘗試過加入各種相關(guān)因子、特征,使用不同的模型,調(diào)參來獲取最高的準(zhǔn)確度,但由于股票、債券、基金這些金融產(chǎn)品都受各種政治、經(jīng)濟(jì)、社會(huì)等綜合因素的影響,經(jīng)常會(huì)有突發(fā)情況導(dǎo)致預(yù)測出現(xiàn)較大波動(dòng)。最后他發(fā)現(xiàn),最好的方法是在每天晚上利用當(dāng)天的數(shù)據(jù)重新來訓(xùn)練下,往往能獲取到最好的模型。

所以說想嘗試往量化投資、機(jī)器學(xué)習(xí)大數(shù)據(jù)分析這塊發(fā)展的話,一定要根據(jù)實(shí)際情況,不斷地根據(jù)最新的數(shù)據(jù),去實(shí)時(shí)更新自己的模型,才能獲取到最好的效果。當(dāng)然也奉勸大家常年不變的真理:金融有風(fēng)險(xiǎn),投資需謹(jǐn)慎

如果大家想繼續(xù)了解人工智能相關(guān)學(xué)習(xí)路線和知識(shí)體系,歡迎大家翻閱我的另外一篇博客《重磅 | 完備的人工智能AI 學(xué)習(xí)——基礎(chǔ)知識(shí)學(xué)習(xí)路線,所有資料免關(guān)注免套路直接網(wǎng)盤下載》
這篇博客參考了Github知名開源平臺(tái),AI技術(shù)平臺(tái)以及相關(guān)領(lǐng)域?qū)<遥篋atawhale,ApacheCN,AI有道和黃海廣博士等約有近100G相關(guān)資料,希望能幫助到所有小伙伴們。文章來源地址http://www.zghlxwxcb.cn/news/detail-782846.html

到了這里,關(guān)于如何用Python對(duì)股票數(shù)據(jù)進(jìn)行LSTM神經(jīng)網(wǎng)絡(luò)和XGboost機(jī)器學(xué)習(xí)預(yù)測分析(附源碼和詳細(xì)步驟),學(xué)會(huì)的小伙伴們說不定就成為炒股專家一夜暴富了的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包