#导入数据

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)

注:一是时间序列预测不能使用十折交叉验证,因为不能用未来的信息预测过去的信息,二是要按不同比例多划分几次训练集和测试集测试模型的准确率。

课程作业——基于数据挖掘算法和技术指标预测股票涨跌相关推荐

  1. python数据挖掘课程设计——基于数据挖掘的森林火灾预测分析(数据代码+数据分析+数据可视化展示)

    基于数据挖掘的森林火灾预测分析 [摘要]随着全球范围性的温室效应,全球气温正逐步升高,为对抗温室效应,森林已经成为我们急需保护的资源,但是火灾时刻威胁着森林资源.为了帮助对抗温室效应.保护森林,本研究 ...

  2. 机器学习与数据挖掘 课程作业 基于数据驱动的空调结霜程度检测方法研究

    机器学习与数据挖掘 课程作业 基于数据驱动的空调结霜程度检测方法研究 摘要: 在我国的夏热冬冷地区,由于没有集中供暖,在冬季使用空调制热进行供暖是一种很常见的方式,但该地区冬季空气相对湿度较高并且环境 ...

  3. rls算法matlab实现,第5章基于RLS算法的数据预测与MATLAB实现MATLAB实现.PDF

    第5章基于RLS算法的数据预测与MATLAB实现MATLAB实现 第 5章 基于 RLS算法的数据预测与 第5章 基于RLS算法的数据预测与MATLAB实现 MATLAB实现 RLS 1795 递归最 ...

  4. python支持向量机 股票_小蛇学python(4)利用SVM预测股票涨跌

    最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...

  5. python应用(3)svm模型预测股票涨跌

    最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...

  6. svm预测股价 python_小蛇学python(4)利用SVM预测股票涨跌

    最近接了一个私活,指导学妹完成毕业设计.核心思想就是利用SVM模型来预测股票涨跌,并完成策略构建,自动化选择最优秀的股票进行资产配置. 在做这个项目的过程中,我体会到想成为一个合格的数据分析或者数据挖 ...

  7. CNN模型预测股票涨跌的始末过程——(一)股票数据的获取

    CNN模型预测股票涨跌的始末过程--(一)股票数据的获取[附源码和数据] 股票数据的获取 Choice数据 - 东方财富 Tushare BigQuant 最后列一下我下载成功的数据 股票数据的获取 ...

  8. 量化交易是不是用机器预测股票涨跌?这靠谱吗?

    量化交易是不是用机器预测股票涨跌?是又不全是,量化交易是策略制定的基础上进行自动化交易,也不能全说是机器预测涨跌的,而且机器学习预测股票涨跌也不太靠谱,结果和丢硬币差不了太多. 虽然用机器学习来预测涨 ...

  9. 逻辑回归模型预测股票涨跌

    http://www.cnblogs.com/lafengdatascientist/p/5567038.html 逻辑回归模型预测股票涨跌 逻辑回归是一个分类器,其基本思想可以概括为:对于一个二分类 ...

最新文章

  1. 慎用Outline ,UGUI Outline实现原理分析
  2. 用django将数据从数据库提出并分页展示
  3. 学习jQuery之旅--使用炫酷的jQuery插件
  4. 如果有一天,我老无所依,请把我丢在迪拜捡垃圾……
  5. java ajax json 解析json数组对象数组对象数组对象数组_ajax传递包含对象数组的json数据...
  6. double处理arithmeticexception为什么不报错_板式换热器为什么冷热不均匀?应怎样检查并简单处理?...
  7. OpenCV3学习(6.2)——霍夫(Hough)变换:霍夫线变换HoughLine,霍夫圆变换HoughCircles
  8. Linux中如何删除一个大文件
  9. mysql -a_a|MySQL基础命令
  10. MyBatis 别名标签 sql的复用
  11. OKHttp 的使用
  12. Android不透明度16进制值
  13. “大狼狗加密专家”使用简介
  14. kindle读书笔记——2017.05.22-06.21
  15. 自制AI图像搜索引擎[笔记]
  16. “艺工交叉”--达芬奇的人生密码
  17. 群、环、域的概念总结
  18. 常用加密与解密算法示例代码
  19. java ygc逐步增加,【jvm学习笔记五】G1-YGC分析
  20. C语言期末考试测试题及答案

热门文章

  1. 【SpringBoot框架篇】11.Spring Data Jpa实战
  2. 三星S5PV210的启动
  3. 如何用手机进行进销存管理
  4. Visio 流程图-论文
  5. FCC催化剂类有哪些最新发表的毕业论文呢?
  6. 价值几百元的仿小刀娱乐网经典Emlog模板
  7. B/S、C/S、 A/S
  8. 为jqweui增加selectcallback方法
  9. -XX:+PrintGCDetails 打印GC详细信息
  10. 跨域和options请求