课程作业——基于数据挖掘算法和技术指标预测股票涨跌
#导入数据
import pandas as pd
data = pd.read_csv('D:/QQ文件夹/金发科技数据十年.csv')
data.head()
#绘制自相关系数图
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
plt.figure(figsize=(20, 20)) # 指定绘图对象宽度和高度
colnm = data.columns.tolist() # 列表头
mcorr = data[colnm].corr(method="spearman") # 相关系数矩阵,即给出了任意两个变量之间的相关系数
mask = np.zeros_like(mcorr, dtype=np.bool) # 构造与mcorr同维数矩阵 为bool型
mask[np.triu_indices_from(mask)] = True # 角分线右侧为True
#cmap = sns.diverging_palette(220, 10, as_cmap=True) # 返回matplotlib colormap对象
g = sns.heatmap(mcorr, mask=mask, square=True, annot=True, fmt='0.5f') # 热力图(看两两相似度)
plt.show()
#剔除相关系数过高的几个属性,没有用主成分分析剔除属性是因为后续准确率不高
data = data.drop(['BIAS2','MA8','KDJ_K','BIAS3'],axis=1)
data
#检测缺失值
data.isnull().sum()
#建立属性变量X和类别y
from sklearn.tree import DecisionTreeClassifier
X=data.iloc[:,1:13]
print(X)
y=data['Y']
y.value_counts()#上涨天数1031天,下跌或不变天数1076天
#数据标准化处理,消除量纲,每个数据减去均值再除以标准差
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(X)
X=scaler.transform(X)
X.shape
#分配训练集与测试集
from sklearn import tree
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
train_x,test_x,train_y,test_y= train_test_split(X,y,test_size=0.1,train_size=0.9)
#用信息增益法划分决策树
tree_modela=DecisionTreeClassifier(criterion='entropy',max_depth=3)
tree_modela.fit(train_x,train_y)
tree.plot_tree(tree_modela,feature_names=name,class_names='01')
plt.show()
#深度改为4,检测分类效果
tree_modeld=DecisionTreeClassifier(max_depth=4)
tree_modeld.fit(train_x,train_y)
tree.plot_tree(tree_modeld,feature_names=name,class_names='01')
plt.show()
tree_modele=DecisionTreeClassifier(criterion='entropy',max_depth=4)
tree_modele.fit(train_x,train_y)
tree.plot_tree(tree_modele,feature_names=name,class_names='01')
plt.show()
#深度为4时分类效果逊于深度为3,可能出现了过拟合现象,通过设置最小叶节点数量为13减少过拟合
tree_modelb=DecisionTreeClassifier(criterion='entropy',max_leaf_nodes=13)
tree_modelb.fit(train_x,train_y)
tree.plot_tree(tree_modelb,feature_names=name,class_names='01')
plt.show()
采用准确率得到的准确率为0.7096,采用F1度量得到的准确率为0.7105
#SVC支持向量机法分类
from sklearn import svm
clf=svm.SVC()
clf.fit(train_x,train_y)
result=clf.predict(test_x)
print(result)
#逻辑回归模型
from sklearn.linear_model import LogisticRegression as LR
lr=LR()
lr.fit(train_x,train_y)
result=clf.predict(test_x)
sc=clf.score(train_x, train_y)
#神经网络模型
from sklearn.neural_network import MLPClassifier
wl=MLPClassifier(solver='lbfgs',alpha=1e-5,hidden_layer_sizes=8,random_state=1)
wl.fit(train_x,train_y)
result=wl.predict(test_x)
sc=wl.score(train_x,train_y)
#K近邻算法 p=1代表用曼哈顿距离度量
from sklearn import neighbors
knn = neighbors.KNeighborsClassifier(n_neighbors=30,weights='uniform', algorithm='auto', leaf_size=30,p=1, metric='minkowski', metric_params=None, n_jobs=1)
knn.fit(train_x, train_y)
#p=2用欧氏距离度量
knn1 = neighbors.KNeighborsClassifier(n_neighbors=30,weights='uniform', algorithm='auto', leaf_size=30,p=2, metric='minkowski', metric_params=None, n_jobs=1)
knn1.fit(train_x, train_y)
#多划分几次训练集和测试集
train_x,test_x,train_y,test_y= train_test_split(X,y,test_size=0.2,train_size=0.8)
train_x,test_x,train_y,test_y= train_test_split(X,y,test_size=0.3,train_size=0.7)
#评价模型
import sklearn.metrics as metrics
result_modela=metrics.classification_report(test_y,tree_modela.predict(test_x))
print(result_modela)
注:一是时间序列预测不能使用十折交叉验证,因为不能用未来的信息预测过去的信息,二是要按不同比例多划分几次训练集和测试集测试模型的准确率。
课程作业——基于数据挖掘算法和技术指标预测股票涨跌相关推荐
- python数据挖掘课程设计——基于数据挖掘的森林火灾预测分析(数据代码+数据分析+数据可视化展示)
基于数据挖掘的森林火灾预测分析 [摘要]随着全球范围性的温室效应,全球气温正逐步升高,为对抗温室效应,森林已经成为我们急需保护的资源,但是火灾时刻威胁着森林资源.为了帮助对抗温室效应.保护森林,本研究 ...
- 机器学习与数据挖掘 课程作业 基于数据驱动的空调结霜程度检测方法研究
机器学习与数据挖掘 课程作业 基于数据驱动的空调结霜程度检测方法研究 摘要: 在我国的夏热冬冷地区,由于没有集中供暖,在冬季使用空调制热进行供暖是一种很常见的方式,但该地区冬季空气相对湿度较高并且环境 ...
- rls算法matlab实现,第5章基于RLS算法的数据预测与MATLAB实现MATLAB实现.PDF
第5章基于RLS算法的数据预测与MATLAB实现MATLAB实现 第 5章 基于 RLS算法的数据预测与 第5章 基于RLS算法的数据预测与MATLAB实现 MATLAB实现 RLS 1795 递归最 ...
- python支持向量机 股票_小蛇学python(4)利用SVM预测股票涨跌
最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...
- python应用(3)svm模型预测股票涨跌
最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...
- svm预测股价 python_小蛇学python(4)利用SVM预测股票涨跌
最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...
- CNN模型预测股票涨跌的始末过程——(一)股票数据的获取
CNN模型预测股票涨跌的始末过程--(一)股票数据的获取[附源码和数据] 股票数据的获取 Choice数据 - 东方财富 Tushare BigQuant 最后列一下我下载成功的数据 股票数据的获取 ...
- 量化交易是不是用机器预测股票涨跌?这靠谱吗?
量化交易是不是用机器预测股票涨跌?是又不全是,量化交易是策略制定的基础上进行自动化交易,也不能全说是机器预测涨跌的,而且机器学习预测股票涨跌也不太靠谱,结果和丢硬币差不了太多. 虽然用机器学习来预测涨 ...
- 逻辑回归模型预测股票涨跌
http://www.cnblogs.com/lafengdatascientist/p/5567038.html 逻辑回归模型预测股票涨跌 逻辑回归是一个分类器,其基本思想可以概括为:对于一个二分类 ...
最新文章
- 慎用Outline ,UGUI Outline实现原理分析
- 用django将数据从数据库提出并分页展示
- 学习jQuery之旅--使用炫酷的jQuery插件
- 如果有一天,我老无所依,请把我丢在迪拜捡垃圾……
- java ajax json 解析json数组对象数组对象数组对象数组_ajax传递包含对象数组的json数据...
- double处理arithmeticexception为什么不报错_板式换热器为什么冷热不均匀?应怎样检查并简单处理?...
- OpenCV3学习(6.2)——霍夫(Hough)变换:霍夫线变换HoughLine,霍夫圆变换HoughCircles
- Linux中如何删除一个大文件
- mysql -a_a|MySQL基础命令
- MyBatis 别名标签 sql的复用
- OKHttp 的使用
- Android不透明度16进制值
- “大狼狗加密专家”使用简介
- kindle读书笔记——2017.05.22-06.21
- 自制AI图像搜索引擎[笔记]
- “艺工交叉”--达芬奇的人生密码
- 群、环、域的概念总结
- 常用加密与解密算法示例代码
- java ygc逐步增加,【jvm学习笔记五】G1-YGC分析
- C语言期末考试测试题及答案