2019-08-02【机器学习】有监督学习之分类 SVC算法 实例(上证指数跌涨预测)

样本:

2019-08-02【机器学习】有监督学习之分类  SVC算法 实例(上证指数跌涨预测)

 

代码:有几处与教程不同,自行修改

import pandas as pd
import numpy as np
from sklearn import svm
from sklearn import model_selection #此处与教程不同,模块更改

#1.读取数据,此处不添加 index_col=0 因为会没有最左边的0,1,2,3那一列,导致后续ix换col索引出现问题
data = pd.read_csv('D:\python_source\Machine_study\mooc_data\classification\stock/000777.csv', encoding='gbk', parse_dates=[0])
data.sort_index(0, ascending=True, inplace=True) #按索引列(第一列,日期)升排序

#2.数据预处理
#选取5列数据作为特征:收盘价,最高价,最低价,开盘价,成交量
dayfeature = 150 #选取150天的数据量
featurenum = 5 * dayfeature
'''
data.shape[0] - day.feature意思为要用150天数据做训练,对于条目为200条的数据,只有50条数据
是有前150天的数据来训练的,使用训练集的大小就是200-150,对于每一条数据,它阿特征是前150天的所有特征数据,即150*5,
+1是将当天的开盘价引入作为一条特征数据
'''
x = np.zeros((data.shape[0] - dayfeature, featurenum + 1)) #记录150天的5个特征值
y = np.zeros((data.shape[0]-dayfeature)) #记录涨或者跌

for i in range(0, data.shape[0]-dayfeature):
    #将数据中的收盘价,最高价1,开盘价,成交量存入 x数组中
    x[i, 0:featurenum] = np.array(data[i:i+dayfeature]\
                                  [[u'收盘价', u'最高价', u'最低价',u'开盘价', u'成交'
                                     u'量']]).reshape((1, featurenum))
    x[i, featurenum] = data.loc[i+dayfeature]['开盘价'] #最后一列记录当日开盘价 此处ix已被弃用
#1代表涨,0代表跌
for i in range(0, data.shape[0]-dayfeature):
    if data.loc[i+dayfeature]['收盘价']>=data.loc[i+dayfeature]['开盘价']:
        y[i] = 1
    else:
        y[i] = 0

#3.创建SVM并进行交叉验证
clf = svm.SVC(kernel='rbf', gamma='scale') #调用函数,参数默认为rbf,其他:linear,poly,sigmoid
result = []
for i in range(5):
    x_train, x_test, y_train, y_test = model_selection.train_test_split(x, y, test_size=0.2)
    #x和y的验证集和测试集,切分80-20%的测试集
    clf.fit(x_train, y_train)
    #训练数据进行训练
    result.append(np.mean(y_test == clf.predict((x_test))))
    #预测数据和测试集的验证数据进行比对
print("svm classifier accuacy:")
print(result)

 

结果:

2019-08-02【机器学习】有监督学习之分类  SVC算法 实例(上证指数跌涨预测)

 

2019-08-02【机器学习】有监督学习之分类  SVC算法 实例(上证指数跌涨预测)

 

上一篇:Kubernetes SatefulSet(有状态应用部署)


下一篇:06-kubernetes service