用分類演算法進行上證指數漲跌預測,
根據今天以前的150個交易日的資料,預測今日股市漲跌,
交叉驗證的思想:將資料集D劃分為k個大小相似的互斥子集,每個子集都盡可能保持資料分布的一致性,即從D中通過分層抽樣來得到,然后,每次用k-1個子集的并集作為訓練集,余下的那個子集作為測驗集,這樣可以獲得k組訓練/測驗集,從而可進行k次訓練/測驗,最侄訓傳的是這k個測驗結果的均值,通常稱為"k者交叉驗證",常用取值是10,
# coding:utf-8
# 用分類演算法預測股市漲跌
import pandas as pd
import numpy as np
from sklearn import svm
from sklearn.model_selection import train_test_split
import tushare as ts
if __name__ == "__main__":
# 讀取股票資料
data = https://www.cnblogs.com/zwdnet/p/pd.read_csv("HS300_his.csv")
print(data.head())
data.sort_index(0,ascending=True,inplace=True)
print(data.head())
dayfeature = 150
featurenum = 4*dayfeature
x = np.zeros((data.shape[0] - dayfeature, featurenum + 1))
y = np.zeros((data.shape[0] - dayfeature))
for i in range(0, data.shape[0] - dayfeature):
x[i, 0:featurenum] = np.array(data[i:i+dayfeature][["close", "open", "low", "high"]]).reshape((1, featurenum))
x[i, featurenum] = data.ix[i + dayfeature]["open"]
for i in range(0, data.shape[0] - dayfeature):
if data.ix[i + dayfeature]["close"] >= data.ix[i + dayfeature]["open"]:
y[i] = 1
else:
y[i] = 0
# 建模
clf = svm.SVC(kernel = "rbf")
result = []
for i in range(5):
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2)
clf.fit(x_train, y_train)
result.append(np.mean(y_test == clf.predict(x_test)))
print("用rbf核函式的預測準確率:")
print(result)
clf = svm.SVC(kernel = "sigmoid")
result = []
for i in range(5):
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2)
clf.fit(x_train, y_train)
result.append(np.mean(y_test == clf.predict(x_test)))
print("用sigmoid核函式的預測準確率:")
print(result)
預測結果
用rbf核函式的預測準確率: [0.6842105263157895, 0.5263157894736842, 0.47368421052631576, 0.47368421052631576, 0.5263157894736842]
用sigmoid核函式的預測準確率: [0.47368421052631576, 0.6842105263157895,
0.5263157894736842, 0.42105263157894735, 0.5789473684210527]
可以看到預測成功率50%左右,跟瞎猜差不多,
本文代碼:
https://github.com/zwdnet/MyQuant/blob/master/30
我發文章的四個地方,歡迎大家在朋友圈等地方分享,歡迎點“在看”,
我的個人博客地址:https://zwdnet.github.io
我的知乎文章地址: https://www.zhihu.com/people/zhao-you-min/posts
我的博客園博客地址: https://www.cnblogs.com/zwdnet/
我的微信個人訂閱號:趙瑜敏的口腔醫學學習園地
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/186844.html
標籤:Python
上一篇:python多繼承,一看就明白!
下一篇:selenium相關操作
