1.通过自己的股票数据训练,其效果之差可想而知。

2.只有将change这个要素先进行分类

df.loc[df['change']>2,'sign']=5
df.loc[df['change']<0,'sign']=-5
df.loc[(df['change']>=0)&(df['change']<=2),'sign']=0

其训练效果和精准度accuracy 才会上升,尤其是测试集而言,往往不做训练集的分类处理,预测效果往往在0.10以下,这个结果也说明想要通过单一行的数据预测是不可能的(当然我也不知道里面的的运行法则),
3.画图过程中的效果往往不尽人意,因为还是之前的数据集的特征分布并没有因为个股的涨跌幅情况有明显的变化,是呈现出一种交叉的情况。
加上对于归一化的处理以及长度的控制:
for i in df.columns[:-1]:
df[i]=df[i]/df[i][0]
df=df['2015':]
rate=0.75
cd=int(len(df)*rate)

也会使得训练集和测试集有明显的变化
3.1长度越长,精确度越低,这个是毋庸置疑的,因为本书的关系大多都是“数据长度小,但是特征值多”,而我这里的“数据长度长,特征值少”
3.2数据归一化处理之后的精准度要高于原始数据,但是这种处理之后会使得画图的效果统统集中于1附近或者线性附近,无法区分,这里除了支持向量机的效果可能性会好一些,其他的监督机器学习,尤其是3D数据
显示上无法有效区分开来。
简而言之,就是当有明显分类的时候,监督机器学习可能会有明显的效果,但是指出的是这里的x_train的数据之间要有明显的差异才可以,也就是说x_train自己的数据特点才会造就分类的情况,数据分布在数学上
要有明显的距离才可以将分类区分开来。如果做不到这一点,那么简单的机器学习分类是无法做到的。也就只有一个支持向量机可能会做到。
3.3这也就意味着我们必须要对原有的x_train的数据进行分析和处理才可能将结果进行进一步的预测
不然对于连续性的数据而言进行预测的效果往往会不尽人意。
或者我们说对于离散型随机变量的预测往往效果会更高一些,因为满足的条件首先已经是进行筛选和调整过的,所以在分类的过程中效果可能会比连续型随机变量会好一些,探究数据内部之间的关系效果会更好一些。
但是由于是金融时序的关系,以及位置的关系,离散型数据的分布往往还要考虑到时效以及所在位置上。
4.数据特征值的权重比例函数:
 def plot_feature_importances_stock(model):
    n_features=df.columns
    plt.barh(np.arange(len(df.columns)-1),model.feature_importances_,align='center')
    plt.yticks(range(len(n_features)),df.columns)
    plt.xlabel('feature importance')
    plt.ylabel('featrure')
    plt.show() 

5.再次总结:
5.1监督机器学习的步骤:
1.数据处理,并且选定y值(可以是change也可以是close等),并且就对y值进行分类处理,这里的分类处理是多条件的,然后进行数据归一化处理以及长度控制
条件筛选
df.loc[df['change']>2,'sign']=5
df.loc[df['change']<0,'sign']=-5
df.loc[(df['change']>=0)&(df['change']<=2),'sign']=0
归一化处理(不含y值,并且剔除y值的对象,这里的y值是change,所以必须删除)
del df['change']
for i in df.columns[:-1]:
df[i]=df[i]/df[i][0]
控制长度
df=df['2015':]
rate=0.75
cd=int(len(df)*rate)
2.注意数据的格式
一般而言都是通过values,或者重采样的方式,但是经过尝试,貌似values就可以了,并且检查数据维度

x_train=df.iloc[:cd,:-1].values
y_train=df.iloc[:cd,-1].values
x_test=df.iloc[cd:,:-1].values
y_test=df.iloc[cd:,-1].values
print(x_train.shape,y_train.shape,x_test.shape,y_test.shape)
3.导入相应的库以及函数
4.监督机器库以及函数的初始化以及参数的默认值,参数的调整的影响等
5.拟合
6.评分
7.属性(系数和截距)的位置和调用
8.属性评分,权重影响图形化展示
 def plot_feature_importances_stock(model):
    n_features=df.columns
    plt.barh(np.arange(len(df.columns)-1),model.feature_importances_,align='center')
    plt.yticks(range(len(n_features)),df.columns)
    plt.xlabel('feature importance')
    plt.ylabel('featrure')
    plt.show() 
9.图形化展示(主要是通过图形查看分类效果)

这样子说来,我这里分类效果还是很一般的。
posted on 2019-08-14 16:18  卧水漱石  阅读(148)  评论(0)    收藏  举报