一、课题简介
可以直接当机器学习课设。
股票涨跌预测,选用了一个具有3556行数据,25个特征的真实csv数据集,我将会为此数据集在jupyter 上使用机器学习相关Python库进行数据集的读取分析,根据具体的情况进行数据预处理,步骤包含缺失值重复值检测,选取与目标涨跌%%相关的特征重新定义新数据集,标准化,pca主成分降维,拆分训练集数据和测试集数据。
我根据此数据集的复杂度选取了随机森林机器学习模型和支持向量机模型进行建模,首先进行交叉验证与网格搜索结合和网格搜索不断的训练评估,选取它们的最优参数,然后得出它们在训练集和测试集评分,用模型预测测试集,得出模型均方误差,最后绘制出预测值和实际值的对比图,加上标题和图例。
二、数据准备
首先导入pandas和numpy,再从sklearn里面导出数据拆分模块和标准化模块。还有均方误差评估模块和matplotlib画图模块,添加上能够正常显示中文的两行代码
#导入模块 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score from sklearn.metrics import mean_squared_error from matplotlib import pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False
数据收集:
用pandas里面的read_csv来导入数据集。指定格式为gb k能够正常显示中文。data.dropna(inplace=True),将数据集中包含缺失值的行进行删除,并替代原数据集,然后显示数据集的前五行。
# 数据读取 data = pd.read_csv( "C:\\Users\\nhean\\Desktop\\股票数据.csv", encoding='gbk') data.dropna(inplace=True) data.head()
代码 | 名称 | 涨幅%% | 现价 | 涨跌 | 买价 | 卖价 | 总量 | 现量 | 涨速%% | ... | 总金额 | 量比 | 振幅%% | 均价 | 内盘 | 外盘 | 内外比 | 买量 | 卖量 | 开盘金额 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 平安银行 | 2.89 | 11.05 | 0.31 | 11.05 | 11.06 | 2110243 | 17125 | 0.00 | ... | 2331358208 | 1.89 | 4.56 | 11.05 | 973030 | 1137212 | 0.86 | 3547 | 9651 | 4028900 |
1 | 2 | 万 科A | -0.61 | 24.30 | -0.15 | 24.30 | 24.31 | 683236 | 8615 | 0.04 | ... | 1671576704 | 0.90 | 3.89 | 24.47 | 339287 | 343949 | 0.99 | 563 | 594 | 2508800 |
2 | 4 | 国农科技 | 0.38 | 15.90 | 0.06 | 15.90 | 15.91 | 2243 | 50 | 0.19 | ... | 3569043 | 0.33 | 2.46 | 15.91 | 1042 | 1201 | 0.87 | 271 | 37 | 1600 |
3 | 5 | 世纪星源 | -0.34 | 2.94 | -0.01 | 2 |