PythonStock(17):使用scikit-learn进行股票分析

前言


使用Python开发一个股票项目。
项目地址:
https://github.com/pythonstock/stock
相关资料:
http://blog.csdn.net/freewebsys/article/details/78294566
主要使用开发语言是python。
使用的lib库是pandas,tushare,TensorFlow,tornado等。

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/78973483
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

1,关于scikit-learn机器学习


地址:http://scikit-learn.org
scikit-learn是一个也很成熟的机器学习框架。
datasets 是非常丰富的,也可以直接用来训练TensorFlow。

2,第一个demo


iris 数据的机器学习:

import numpy as np
import sklearn as skl
from sklearn import datasets
# https://github.com/udacity/machine-learning/issues/202 
# sklearn.cross_validation 这个包不推荐使用了。
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

iris = datasets.load_iris()
iris_X = iris.data #数据,训练测试使用。
iris_y = iris.target #标签,监督学习验证结果。
print(iris.data.shape)
print(iris_X[0])

# 拆分,训练数据和测试数据。按照 0.7 0.3 比例。
X_train,X_test,y_train,y_test = train_test_split(iris_X,iris_y,test_size=0.3)
# print(y_train) #打乱测试数据。

knn = KNeighborsClassifier()
knn.fit(X_train,y_train)
print(knn.predict(X_test)-y_test) #计算预测和目标的差
print("score:", knn.score(X_train,y_train)) #评分

score: 0.990476190476

3,使用scikit-learn预测股票价格


import pandas as pd
import tushare as ts
import sklearn as skl
import numpy as np
from sklearn import datasets,linear_model
# https://github.com/udacity/machine-learning/issues/202 
# sklearn.cross_validation 这个包不推荐使用了。
from sklearn.model_selection import train_test_split,cross_val_score

#################准备股票数据。#################
date_end_str = '2018-01-03'
code = "000001"

date_end = datetime.datetime.strptime(date_end_str, "%Y-%m-%d")
date_start = (date_end + datetime.timedelta(days=-300)).strftime("%Y-%m-%d")
date_end = date_end.strftime("%Y-%m-%d")

# open high close low volume price_change p_change ma5 ma10 ma20 v_ma5 v_ma10 v_ma20 turnover
stock_X = ts.get_hist_data(code, start=date_start, end=date_end)
stock_X = stock_X.sort_index(0)  # 将数据按照日期排序下。
stock_y = pd.Series(stock_X["close"].values) #标签

stock_X_test = stock_X.iloc[len(stock_X)-1]
# 使用今天的交易价格,13 个指标预测明天的价格。偏移股票数据,今天的数据,目标是明天的价格。
stock_X = stock_X.drop(stock_X.index[len(stock_X)-1]) # 删除最后一条数据
stock_y = stock_y.drop(stock_y.index[0]) # 删除第一条数据
#删除掉close 也就是收盘价格。
del stock_X["close"]
del stock_X_test["close"]

#使用最后一个数据做测试。
stock_y_test = stock_y.iloc[len(stock_y)-1]

print(stock_X.tail(5))
print("###########################")
print(stock_y.tail(5)) #
#print(stock_X.values[0])

print("###########################")
print(len(stock_X),",",len(stock_y))

print("###########################")
print(stock_X_test.values,stock_y_test)

model = linear_model.LinearRegression()
model.fit(stock_X.values,stock_y)
print("############## test & target #############")
print(model.predict([stock_X_test.values]))
print(stock_y_test)

print("############## coef_ & intercept_ #############")
print(model.coef_) #系数
print(model.intercept_) #截断
print("score:", model.score(stock_X.values,stock_y)) #评分

结果是:
[ 13.58226213]
13.33 #实际价格

[ 5.41578164e-01 2.45592463e-01 2.47299709e-01 1.59304499e-06
-5.04200304e-01 1.23988294e-01 -2.36575197e-02 -2.45095840e-01
2.38313426e-01 -1.52451431e-07 3.91434820e-07 -2.68368025e-07
-2.58363180e+00]
这个数组就是13 个指标的函数关系,也就是参数。
-0.0358310757403
还有一个偏置数据。

总体思路就是把股票的一些指标那过来作为参数。
使用一个最简单的线性函数来预测股票数据。然后预测股票价格。
把股票数据从当前的日期向前取得了 300 天的数据

4,总结


scikit-learn 使用起来真的是超级的方便。
预测数据只要两行。fit 和 predict 就可以了。模型好多可以随便选。
机器学习特别好的地方是。这个数据你可以是股票数据,可以是房价数据。
可以是天气数据,啥都行,都能找到一个相关性,然后给出一个结果。
当然这个应该只是个最简单的预测数据。股票应该没有那么容易的预测。
有好多的因素需要考虑。而且每一个股票都是一个规律。

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/78973483
未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

你可能感兴趣的:(Python,TensorFlow,stock,pythonstock)