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

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

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python 预测算法_Python 与金融数据使用机器学习算法预测交易策略

發(fā)布時(shí)間:2025/3/8 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 预测算法_Python 与金融数据使用机器学习算法预测交易策略 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
記得?關(guān)注、分享、點(diǎn)在看?呀~ 這樣您就能持續(xù)收到優(yōu)質(zhì)的推送啦
這一期,我們將使用上一期處理好的數(shù)據(jù)特征和標(biāo)簽訓(xùn)練機(jī)器,然后預(yù)測(cè)交易策略。我們將分別使用 K近鄰算法和集成學(xué)習(xí)兩種方法分別完成模型的訓(xùn)練和預(yù)測(cè)。
FinTech History

Python 與金融數(shù)據(jù)|股票數(shù)據(jù)的獲取與可視化

Python 與金融數(shù)據(jù)|數(shù)據(jù)的滑動(dòng)平均值及多圖可視化

Python 與金融數(shù)據(jù)|數(shù)據(jù)的重采樣與蠟燭圖(K線圖)的繪制

Python 與金融數(shù)據(jù)|網(wǎng)頁(yè)爬取上證50股票代碼

Python 與金融數(shù)據(jù)|批量抓取并保存上證50的交易數(shù)據(jù)

Python 與金融數(shù)據(jù)|上證50的收盤價(jià)匯總

Python 與金融數(shù)據(jù)|繪制股票間的相關(guān)性圖表

Python 與金融數(shù)據(jù)|為機(jī)器學(xué)習(xí)預(yù)處理數(shù)據(jù)

Python 與金融數(shù)據(jù)|生成機(jī)器學(xué)習(xí)的標(biāo)簽和特征

K近鄰算法

在 Python 中有很多種免費(fèi)的機(jī)器學(xué)習(xí)庫(kù),其中之一是 sklearn,是針對(duì) Python 的免費(fèi)軟件機(jī)器學(xué)習(xí)庫(kù)。

sklearn 具有各種分類,回歸和聚類算法,包括支持向量機(jī),隨機(jī)森林,梯度提升,k均值和DBSCAN等內(nèi)置方法。

K近鄰算法是機(jī)器學(xué)習(xí)中比較簡(jiǎn)單的算法之一,在 ?sklearn 工具包中提供可以直接調(diào)用的方法。

K近鄰算法是一個(gè)分類算法,可以把待分類的數(shù)據(jù)看作空間或者平面的一些點(diǎn),如果一個(gè)樣本點(diǎn)附近的K個(gè)最近的樣本點(diǎn)大多數(shù)都是屬于同一個(gè)類別,那么,這個(gè)樣本點(diǎn)就也是屬于這個(gè)類別。

與之前一樣,使用一個(gè)特定的函數(shù) doML()?來(lái)實(shí)現(xiàn)本期的內(nèi)容,因?yàn)橐褂蒙弦黄谔幚砗玫奶卣鲾?shù)據(jù)和標(biāo)簽來(lái)完成機(jī)器學(xué)習(xí)方法的訓(xùn)練,所以執(zhí)行上一期的函數(shù)獲取處理完成后的數(shù)據(jù):

def doML(ticker): X, y, dataFrame = extractFeaturesets(ticker)

接下來(lái)我們從所有的數(shù)據(jù)中劃分出一部分來(lái)訓(xùn)練模型,另一部分的數(shù)據(jù)用來(lái)測(cè)試我們模型的準(zhǔn)確性。

可以使用 train_test_split?這個(gè)方法來(lái)劃分?jǐn)?shù)據(jù),這個(gè)方法來(lái)自于 sklearn?庫(kù),所以使用之前需要先導(dǎo)入這個(gè)方法:

from sklearn.model_selection import train_test_split

train_test_split?方法一般有三個(gè)參數(shù),第一個(gè)參數(shù)為待劃分的特征數(shù)據(jù),第二個(gè)參數(shù)為待劃分的標(biāo)簽數(shù)據(jù),第三個(gè)參數(shù)為測(cè)試數(shù)據(jù)所占的比例,第三個(gè)參數(shù)的值是介于 0 和 1 之間:

XTrain, XTest, yTrain, yTest = train_test_split(X, y, test_size=0.25)

這里使用 X 作為特征數(shù)據(jù),y 作為標(biāo)簽數(shù)據(jù),隨機(jī)取數(shù)據(jù)總量的 25% 作為測(cè)試數(shù)據(jù)。

接下來(lái)我們?cè)O(shè)置分類模型,這里選擇 K近鄰分類算法,前面說(shuō)過(guò),這是 sklearn 內(nèi)置的一個(gè)方法,使用之前需要先導(dǎo)入一下:

from sklearn import neighbors

然后使用內(nèi)置的 K近鄰算法生成一個(gè)分類器?clf

clf = neighbors.KNeighborsClassifier()

下一步要做的就是訓(xùn)練模型,借助于 sklearn 這個(gè)機(jī)器學(xué)習(xí)庫(kù),訓(xùn)練模型也變得很簡(jiǎn)單:

clf.fit(XTrain, yTrain)

使用 fit?這個(gè)方法來(lái)訓(xùn)練模型,一般會(huì)有兩個(gè)參數(shù),第一個(gè)參數(shù)為訓(xùn)練用的特征數(shù)據(jù),第二個(gè)參數(shù)為訓(xùn)練用的標(biāo)簽數(shù)據(jù)。

執(zhí)行這行代碼后,我們生成的分類器會(huì)自動(dòng)用給定的數(shù)據(jù)按照既定的模型完成訓(xùn)練。

還記得前面我們除了生成訓(xùn)練數(shù)據(jù),還生成了測(cè)試數(shù)據(jù)嗎?這時(shí)就可以使用測(cè)試數(shù)據(jù)來(lái)測(cè)試訓(xùn)練好的模型的準(zhǔn)確度,使用 score?這個(gè)方法可以返回測(cè)試測(cè)準(zhǔn)確率。

這個(gè)方法一般有兩個(gè)參數(shù),分別為測(cè)試用的特征數(shù)據(jù)和測(cè)試用的標(biāo)簽數(shù)據(jù):

confidence = clf.score(XTest, yTest)

這個(gè)方法會(huì)首先將特征數(shù)據(jù)作為輸入,使用訓(xùn)練好的模型去給這些特征數(shù)據(jù)分類,也就是獲取每組數(shù)據(jù)對(duì)應(yīng)的標(biāo)簽。然后會(huì)將預(yù)測(cè)出來(lái)的結(jié)果與測(cè)試數(shù)據(jù)中的標(biāo)簽數(shù)據(jù)比對(duì),得到并返回一個(gè)準(zhǔn)確率。

獲取了測(cè)試的準(zhǔn)確率后,為了讓結(jié)果更直觀,我們把準(zhǔn)確率輸出:

print('Accuracy:', confidence)

完成了模型的訓(xùn)練,就可以對(duì)數(shù)據(jù)進(jìn)行分類預(yù)測(cè)了。例如我們給定測(cè)試用的特征數(shù)據(jù) XTest,使用 predict?方法就可以完成對(duì)特征數(shù)據(jù)的分類:

predictions = clf.predict(XTest)

根據(jù)我們的訓(xùn)練數(shù)據(jù),這里得到的結(jié)果實(shí)際上是由 0、1 和 -1 這三個(gè)數(shù)構(gòu)成的列表,根據(jù)前面的分析,0表示繼續(xù)持有,1 表示買入,-1表示賣出。

為了更直觀的展示結(jié)果,我們使用 ?統(tǒng)計(jì)每個(gè)數(shù)出現(xiàn)的次數(shù)并將其輸出:

print('Predicted Spread:', Counter(predictions))

這樣就完成了是用 K近鄰算法預(yù)測(cè)交易策略。接下來(lái)調(diào)用 doML?這個(gè)函數(shù),使用 '600036.SS'?這支股票來(lái)驗(yàn)證一下:

doML('600036.SS')

觀察到的參考輸出為:

dataSpread: Counter({1: 1104, -1: 1082, 0: 463})Accuracy: 0.41389728096676737Predicted Spread: Counter({-1: 340, 1: 200, 0: 122})

因?yàn)槊看问褂玫挠?xùn)練數(shù)據(jù)都是隨機(jī)選取的,所以每次得到的準(zhǔn)確率可能都不太一樣。

這里我們得到的準(zhǔn)確率是 41% 左右。對(duì)于隨機(jī)生成的測(cè)試數(shù)據(jù),預(yù)測(cè)則結(jié)果是由 340 天是建議賣出,200天建議買入,122天建議繼續(xù)持有。

如果實(shí)際中,我們想要去預(yù)測(cè)當(dāng)日的策略,只需要用之前的交易數(shù)據(jù)去訓(xùn)練模型,然后得到當(dāng)日的特征數(shù)據(jù),將特征數(shù)據(jù)輸入訓(xùn)練好的模型,就可以看到使用 K近鄰分類算法輸出的建議交易策略了。

如果在某次的訓(xùn)練過(guò)程中,獲取到的準(zhǔn)確率比較高,還可以將這一次訓(xùn)練的模型保存為 pickle 格式,以后需要使用的時(shí)候只需要直接獲取這個(gè)模型即可。

集成學(xué)習(xí)

集成學(xué)習(xí)實(shí)際上就是分類器的集成,就是構(gòu)建多個(gè)機(jī)器學(xué)習(xí)模型來(lái)完成學(xué)習(xí)任務(wù)。機(jī)器學(xué)習(xí)有很多種模型,對(duì)于同一個(gè)問(wèn)題,每一種模型都會(huì)產(chǎn)生不同的預(yù)測(cè)結(jié)果。對(duì)于多種模型預(yù)測(cè)結(jié)果如何選擇最合適的一個(gè)結(jié)果呢?這就是集成學(xué)習(xí)要解決的問(wèn)題之一:

把多種算法集中起來(lái),每種算法都會(huì)有一個(gè)自己的預(yù)測(cè)結(jié)果,然后對(duì)每種算法的結(jié)果進(jìn)行評(píng)估投票,綜合選擇出最好的結(jié)果。

在 sklearn 中提供一個(gè)封裝好的集成學(xué)習(xí)方法 VotingClassifier,按照慣例,使用之前先導(dǎo)入相關(guān)的庫(kù)文件:

from sklearn.ensemble import VotingClassifier

在構(gòu)建集成學(xué)習(xí)的分類器之前,首先按照第一部分的方法導(dǎo)入處理好的數(shù)據(jù)并獲取訓(xùn)練集和測(cè)試集:

def doML(ticker): X, y, dataFrame = extractFeaturesets(ticker) XTrain, XTest, yTrain, yTest = train_test_split(X, y, test_size=0.25)

然后開(kāi)始構(gòu)建集成學(xué)習(xí)分類器,這里我們集成使用三種分類方法:

線性支持向量機(jī)、K近鄰算法和隨機(jī)森林分類算法。

支持向量機(jī)是一種二類分類模型。它的基本思想是在特征空間中尋找間隔最大的分離超平面使數(shù)據(jù)得到高效的二分類。

隨機(jī)森林分類算法指的是利用多個(gè)決策樹(shù)對(duì)樣本進(jìn)行訓(xùn)練并預(yù)測(cè)的一種分類器。

這是三種比較常見(jiàn)的分類算法,在 sklearn 中都提供了可以直接調(diào)用的方法。如果使用線性支持向量機(jī)需要導(dǎo)入以下工具包:

from sklearn import svm

使用 K近鄰算法 需要導(dǎo)入以下工具包:

from?sklearn?import?neighbors

使用 隨機(jī)森林算法 需要導(dǎo)入以下工具包:

from?sklearn.ensemble?import?RandomForestClassifier

想要使用集成學(xué)習(xí),只需要添加以下代碼:

clf = VotingClassifier([('lsvc', svm.LinearSVC()), ('knn', neighbors.KNeighborsClassifier()), ('rfor', RandomForestClassifier())] )

這樣就完成了集成學(xué)習(xí)分類器的構(gòu)建,接下里只需要按照與上一部分相同的方法用處理好的數(shù)據(jù)訓(xùn)練并驗(yàn)證模型:

clf.fit(XTrain, yTrain)confidence = clf.score(XTest, yTest)print('Accuracy:',?confidence)

最后完成模型的預(yù)測(cè)并輸出結(jié)果:

predictions = clf.predict(XTest)print('Predicted Spread:', Counter(predictions))

最后我們同樣用?'600036.SS'?這支股票來(lái)驗(yàn)證集成學(xué)習(xí)的預(yù)測(cè)結(jié)果,輸出內(nèi)容如下:

dataSpread: Counter({1: 1104, -1: 1082, 0: 463})Accuracy: 0.4501510574018127Predicted Spread: Counter({-1: 390, 1: 270, 0: 2})

這里預(yù)測(cè)的準(zhǔn)確性可以達(dá)到 45%。對(duì)于這支股票,在測(cè)試集合中,集成學(xué)習(xí)方法預(yù)測(cè)的結(jié)果是有 390天 建議賣出,有 270天 建議買入,有 2 天建議繼續(xù)持有。

一般來(lái)說(shuō),使用集成學(xué)習(xí)預(yù)測(cè)的結(jié)果會(huì)比使用單一模型的預(yù)測(cè)結(jié)果好一些。

同樣的,如果希望預(yù)測(cè)其他時(shí)間點(diǎn)的交易策略,只需要更新測(cè)試數(shù)據(jù)樣本就可以了。

參考代碼

#!/usr/bin/env python3# -*- coding: utf-8 -*-"""@author: IT信息教室(微信公眾號(hào))訂閱/關(guān)注,在看、分享三連吧~"""from collections import Counterfrom?sklearn?import?svm,?neighborsfrom sklearn.model_selection import train_test_splitfrom sklearn.ensemble import VotingClassifier, RandomForestClassifierdef doML(ticker): X, y, dataFrame = extractFeaturesets(ticker) XTrain, XTest, yTrain, yTest = train_test_split(X, y, test_size=0.25) # print(len(XTrain[0]), len(XTest[0])) # print(yTrain, yTest) # 構(gòu)建集成學(xué)習(xí)分類器,使用的分類算法有 線性支持向量機(jī)、K近鄰算法和隨機(jī)森林算法。 clf = VotingClassifier([('lsvc', svm.LinearSVC()), ('knn', neighbors.KNeighborsClassifier()), ('rfor', RandomForestClassifier())] ) # 構(gòu)建 K近鄰算法的分類器 # clf = neighbors.KNeighborsClassifier() clf.fit(XTrain, yTrain) confidence = clf.score(XTest, yTest) print('Accuracy:', confidence) predictions = clf.predict(XTest) print('Predicted Spread:', Counter(predictions)) print() print() doML('600036.SS')doML('601328.SS')doML('600340.SS')
Codes: M先森看世界Edit: M先森看世界

ONE MORE THING

如果您對(duì)內(nèi)容有什么需求建議,或者遇到了什么軟件、應(yīng)用使用方面的問(wèn)題,請(qǐng)直接在公眾號(hào)主界面下發(fā)私信給我,我看都會(huì)及時(shí)回復(fù)。感謝大家的支持!


合作:?classroom.it@hotmail.com

Hi

你好呀

我是?M先森?

這是一個(gè)共同學(xué)習(xí)的平臺(tái)

我會(huì)把我會(huì)的?你們想學(xué)的

做成教程或者寫成文章
我們?cè)谶@一起學(xué)英語(yǔ)?

學(xué)編程?學(xué)算法

學(xué)各種各樣

好玩的好用的軟件

記得要?;貋?lái)看看呀

(^_^)a(^_^)a


點(diǎn)擊?閱讀原文?查看Python入門教程~

喜歡就點(diǎn)個(gè) 分享?點(diǎn)贊?在看?三連吧!

總結(jié)

以上是生活随笔為你收集整理的python 预测算法_Python 与金融数据使用机器学习算法预测交易策略的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

主站蜘蛛池模板: 国产精品久久久网站 | 日韩一区不卡 | 免费在线视频你懂的 | 亚洲字幕av一区二区三区四区 | 大地资源二中文在线影视免费观看 | 91久久综合亚洲鲁鲁五月天 | 国产欧美一区二区三区四区 | 97香蕉| 色综合五月 | 国产suv精品一区二区69 | 羞羞的视频在线观看 | 黄频在线 | 亚洲欧美一区二区精品久久久 | 国语对白一区二区 | 性――交――性――乱 | 天堂视频免费 | 亚洲黄色精品视频 | 成人免费毛片aaaaaa片 | 国产二区视频在线观看 | 福利网址在线 | 欧美一区二区三区免费视频 | 性欧美激情 | 日本一二三视频 | 伊人自拍 | 美味的客房沙龙服务 | 海角官网 | 在线中文字幕亚洲 | 日本十八禁视频无遮挡 | 人妻无码一区二区三区久久 | 日本成人在线免费观看 | 午夜999 | 久久一级黄色片 | www.xxx日韩| 麻豆传媒网站入口 | 国产情侣自拍小视频 | 国产美女www| 日本wwwxxx| 嫩草视频在线观看视频 | 亚洲在线观看一区 | 丁香婷婷深情五月亚洲 | 国产无遮挡又黄又爽在线观看 | 中文字幕免费在线观看 | 日韩v | 欧美日韩理论 | 亚洲精品一区二区三区中文字幕 | 国产日韩欧美精品一区二区 | 午夜影院啊啊啊 | 亚洲国产精品天堂 | 久青草视频 | 韩国黄色网 | 成人av动漫在线 | 欧美激情视频一区二区 | 色婷婷成人| 午夜精品久久久久久久久 | 亚洲一区视频网站 | 国产精品一二三四五区 | 久久午夜夜伦鲁鲁片无码免费 | 中文字幕成人动漫 | 悟空影视大全免费高清观看在线 | 久久东京 | 顶级黄色片 | 鲍鱼av在线| 天天做天天干 | 国产中出 | 女同av在线 | 国产一线天粉嫩馒头极品av | 极品淫少妇 | 亚州av在线 | 日本大尺度吃奶做爰久久久绯色 | 欧美成人视 | 中文字幕人妻丝袜二区 | 亚洲偷偷 | 久久最新 | 亚洲二三区| 国产精品18久久久久久久久 | 国产精品午夜电影 | 爱av导航 | 免费精品在线视频 | 成人av动漫在线 | 爆乳熟妇一区二区三区霸乳 | 欧美网| 亚洲精品一区二区二区 | 嫩草在线播放 | 男人的天堂久久久 | 美国色综合 | 在线观看国产精品视频 | 美女福利在线视频 | 免费成人在线视频观看 | 美女黄污网站 | 青青草国产在线视频 | 亚洲妇熟xx妇色黄蜜桃 | 97视频在线免费 | 丝袜老师办公室里做好紧好爽 | 欧美日韩高清在线播放 | 中文字幕国产在线观看 | 久久久久久久网站 | 久久久久久夜 | 一级片a级片 | 亚洲色图制服丝袜 |