偷拍图片
热点资讯
- 幼女白丝 迥殊命局好依然不好,八字极旺的迥殊命局若何起名
- AV色妹妹网 王念念聪日腹地陪, 让东谈主瞻仰: 王念念聪的生存, 确凿伟人般的清静啊!
- 姪子物語 孕珠到29周别冷漠这3件事,为了宝宝健康,多长点心眼准是没错的
- 猎U者 海康威视高等副总毕会娟2023年薪酬401.9万 仅次于徐习明416.4万
- 【CXAZ-048】ladies レズビアン 全16作品 PartIV 4時間 11:05!11:15!A股发生了什么?
- 小色尼姑庵 小红唇
- 【CXAZ-048】ladies レズビアン 全16作品 PartIV 4時間 宾利豪车图片:虚耗与优雅的交响,尊享品性
- 【OPRD-075】蒸れ臭い艶パンスト脚線美 ぶっかけゴックン大乱交 澤村レイコ ASUKA 竹内紗里奈 男东说念主爱不
- 村上里沙兽皇及图片 104期陆白秋大乐透预测奖号:前区奇偶比大小比
- 村上里沙兽皇及图片 长春光华学院2023-2024学年第二学期招聘公告
- 发布日期:2024-08-27 10:37 点击次数:83 1.数据集登第与描绘
由于股票数据的无极性、无序性,不合乎登第太多的数据行动模子试验的数据集。故本文选出的数据是“温氏股份”200个交游日的股票数据,数据集的原始变量有交游日历、开盘价、收盘价、最廉价、最高价、成交量、价钱变动、涨跌幅等。本文的数据起原是Python的一个第三方库TuShare-财经数据包。其中,date代表日历,open为今日开盘价,high为今日最高价,close为今日收盘价,low为今日的最廉价,volume为今日的成交量, price_change为价钱变动,p_change为涨跌幅,diff为收盘价与开盘价之差即close-open取得,up为1代表涨ai换脸,up为-1代表为跌。
from cProfile import label from cmath import sqrt from csv import field_size_limit from os import closerange import tushare as ts import numpy as np import pandas as pd from pandas import DataFrame as DF from sklearn import svm import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.model_selection import train_test_split from sklearn import preprocessing as pre from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay import seaborn as sns from sklearn.metrics import accuracy_score from sklearn.metrics import roc_curve, auc #导入plot_roc_curve,roc_curve和roc_auc_score模块 from sklearn.metrics import plot_roc_curve,roc_curve,auc,roc_auc_score from sklearn.metrics import mean_squared_error # 均方罅隙 from sklearn.metrics import mean_absolute_error # 平方富饶罅隙 from sklearn.metrics import r2_score #中语标签、负号平淡透露 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False #1数据网罗 #温氏股份的股票代码为300498,数据网罗并存到土产货csv文献 data = ts.get_hist_data(code='300498',start = '2019-12-01',end='2022-05-04') #取近90天的温氏股份股票的交游日历、开盘价、收盘价、最廉价、最高价、成交量、价钱变动以及涨跌幅数据 data = DF(data).iloc[0:200,0:7] #diff列代表今日收盘价和开盘价之差 data['diff'] = data['close']-data['open'] data.fillna(0,inplace=True) #up列为1代表今日飞腾,-1代表当全国落 data['up'] = data['diff'] data['up'][data['diff']>=0] = 1 data['up'][data['diff']<0] = -1 #将数据写入csv文献 data.to_csv('C:/Users/86188/Desktop/Python数据挖掘与数据分析/基于SVM算法的股票展望/data/data.csv')
图片
图1 温氏股份200个交游日的数据 2.数据集预贬责对数据集进行检测缺失值,并莫得发现缺失值。
由于股票的波动至极会有金融机构发声,数据产生的200个交游日内该股票莫得报说念琢磨至极主见,即默许莫得至极值。
对数据中成交量进行最大-最小尺度化。
#2数据的预贬责 data = pd.read_csv('C:/Users/86188/Desktop/Python数据挖掘与数据分析/基于SVM算法的股票展望/data/data.csv') #稽察数据情况 data.describe() #检测有完满失值 noneIndex = data.loc[data.isnull().any(axis=1)].index #输出空列表,讲明莫得缺失值 print('缺失值场所行号:',noneIndex) #对volume成交量进行最大最小归一化贬责 data['volume'] = (data['volume'] - min(data['volume'])) / (max(data['volume']) - min(data['volume'])) print(data)
图片
图2 数据的初步贬责范围由于日历不是股票的琢磨变量,故排斥在外。借助PCA主身分分析,对开盘价、收盘价、最廉价、最高价、成交量、价钱变动、涨跌幅和当日股价之差分析,咱们不错从图3得出前五个变量所占的累计孝顺率达到0.99973944,仍是能代表数据的权臣特征,即开盘价、收盘价、最廉价、最高价、成交量。
#3模子的搭建 #x为变量,撤除日历 x = data.iloc[:,1:9] #y为涨跌值 y = data.iloc[:,9] #3.1应用pca主身分分析,从开盘价、收盘价、最廉价、最高价、成交量、价钱变动、涨跌幅和当日股价之差登第特征5个变量 pca = PCA(n_components=None) pca.fit(x) pca.components_ # 身分矩阵 print('各变量的方差:',pca.explained_variance_) print('各变量的孝顺度:',pca.explained_variance_ratio_) #证明蓄积孝顺率,讲明前五个变量的累计孝顺率仍是达到0.999,则取前五个行动特征变量 print('蓄积孝顺率:',np.cumsum(pca.explained_variance_ratio_)) #索求特征变量 pca = PCA(n_components=5) pca.fit(x) nx = pca.fit_transform(x) print('特征变量数据:',nx)
图片
图3 各变量PCA主身分分析范围将特征变量的数据赋值给变量nx,并对特征变量的数据进行法式化贬责,并将代表涨跌情况的up数据赋予变量y,终末永诀试验集和测试集,试验集占90%,测试集仅为20个数据,占10%。
3.SVM算法模子建立 调用Python第三方库中的sklearn库的SVM模子,并调用线性核函数、多项式函数、sigmoid函数以及rbf函数分别构建SVM模子,主见在于分析核函数不同关于SVM模子股票展望的影响。
图片
图4 Python代码搭建不同核函数的SVM模子 4.SVM算法模子的评估从图5的ROC弧线对比来看,不同核函数SVM模子ROC弧线的拐点昭彰不同,linear线性核函数的SVM模子拐点最高,其他三个拐点高度相同。从这个ROC弧线来看,彰着linear线性核函数的SVM模子贬责的范围更好。
fig,ax = plt.subplots(figsize=(12,10)) lsvm_roc = plot_roc_curve(estimator=lsvm, X=x_test, y=y_test, ax=ax, linewidth=1,label='linear') ssvm_roc = plot_roc_curve(estimator=ssvm, X=x_test, y=y_test, ax=ax, linewidth=1,label='sigmoid') psvm_roc = plot_roc_curve(estimator=psvm, X=x_test, y=y_test, ax=ax, linewidth=1,label='poly') rsvm_roc = plot_roc_curve(estimator=rsvm, X=x_test, y=y_test, ax=ax, linewidth=1,label='rbf') ax.legend(fontsize=12) plt.savefig(fname='C:/Users/86188/Desktop/Python数据挖掘与数据分析/基于SVM算法的股票展望/tmp/ROC.jpg') plt.show()
图片
图5 不同核函数SVM模子的ROC弧线图从模子的评价得分来看,linear线性核函数的SVM模子最优,得分为0.95,其次到sigmoid核函数的SVM模子,最差是多项式核函数的SVM模子。
#mse、mae、rmse、r2计较 lsvm_mse = mean_squared_error(y_test,lyp) lsvm_mae = mean_absolute_error(y_test,lyp) lsvm_rmse = sqrt(lsvm_mse) lsvm_r2 = r2_score(y_test,lyp) print('核函数为linear的SVM模子:') print('mse:',lsvm_mse) print('mae:',lsvm_mae) print('rmse:',lsvm_rmse) print('r2:',lsvm_r2) ssvm_mse = mean_squared_error(y_test,syp) ssvm_mae = mean_absolute_error(y_test,syp) ssvm_rmse = sqrt(ssvm_mse) ssvm_r2 = r2_score(y_test,syp) print('核函数为sigmoid的SVM模子:') print('mse:',ssvm_mse) print('mae:',ssvm_mae) print('rmse:',ssvm_rmse) print('r2:',ssvm_r2) psvm_mse = mean_squared_error(y_test,pyp) psvm_mae = mean_absolute_error(y_test,pyp) psvm_rmse = sqrt(psvm_mse) psvm_r2 = r2_score(y_test,pyp) print('核函数为poly的SVM模子:') print('mse:',psvm_mse) print('mae:',psvm_mae) print('rmse:',psvm_rmse) print('r2:',psvm_r2) rsvm_mse = mean_squared_error(y_test,ryp) rsvm_mae = mean_absolute_error(y_test,ryp) rsvm_rmse = sqrt(rsvm_mse) rsvm_r2 = r2_score(y_test,ryp) print('核函数为rbf的SVM模子:') print('mse:',rsvm_mse) print('mae:',rsvm_mae) print('rmse:',rsvm_rmse) print('r2:',rsvm_r2)
图片
图6 各模子的得分 从各个模子的MSE、MAE、RMSE、R2来看,昭彰linear线性核函数的SVM模子的MSE最小,R2最大,模子最优,最差的是多项式函数的SVM模子
图片
图7 各模子的MSE、MAE、RMSE、R2情况从欺侮矩阵对比图来看,咱们发现落在(0,0)和(1,1)区域最多的欺侮矩阵是linear线性核函数的SVM模子,其次到sigmoid核函数的SVM模子,然后再到以rbf为核函数的SVM模子,最差是多项式核函数的SVM模子。
#画出欺侮矩阵 figure = plt.subplots(figsize=(12,10)) plt.subplot(2,2,1) plt.title('核函数为linear') heatmap = sns.heatmap(lcm, annot=True, fmt='d') heatmap.yaxis.set_ticklabels(heatmap.yaxis.get_ticklabels(), rotation=0, ha='right') heatmap.xaxis.set_ticklabels(heatmap.xaxis.get_ticklabels(), rotation=45, ha='right') plt.ylabel('true label') plt.xlabel('predict label') plt.subplot(2,2,2) plt.title('核函数为sigmoid') heatmap = sns.heatmap(scm, annot=True, fmt='d') heatmap.yaxis.set_ticklabels(heatmap.yaxis.get_ticklabels(), rotation=0, ha='right') heatmap.xaxis.set_ticklabels(heatmap.xaxis.get_ticklabels(), rotation=45, ha='right') plt.ylabel('true label') plt.xlabel('predict label') plt.subplot(2,2,3) plt.title('核函数为polynomial') heatmap = sns.heatmap(pcm, annot=True, fmt='d') heatmap.yaxis.set_ticklabels(heatmap.yaxis.get_ticklabels(), rotation=0, ha='right') heatmap.xaxis.set_ticklabels(heatmap.xaxis.get_ticklabels(), rotation=45, ha='right') plt.ylabel('true label') plt.xlabel('predict label') plt.subplot(2,2,4) plt.title('核函数为rbf') heatmap = sns.heatmap(rcm, annot=True, fmt='d') heatmap.yaxis.set_ticklabels(heatmap.yaxis.get_ticklabels(), rotation=0, ha='right') heatmap.xaxis.set_ticklabels(heatmap.xaxis.get_ticklabels(), rotation=45, ha='right') plt.ylabel('true label') plt.xlabel('predict label') plt.savefig(fname='C:/Users/86188/Desktop/Python数据挖掘与数据分析/基于SVM算法的股票展望/tmp/confusion_matrix.jpg') plt.show()
图片
图8 各模子欺侮矩阵从各个模子的展望值与真确值重合弧线情况图来看,展望值和真确值齐是一致进度最高的为以linear为核函数的SVM模子、其次到sigmoid核函数的SVM模子,然后再到以rbf为核函数的SVM模子,最差是多项式核函数的SVM模子。
#画出收盘价走势图以及真确值和展望值图 plt.subplot(3,1,1) #收盘价走势图 plt.title('收盘价走势图') plt.plot(data['date'].iloc[-20:],data['close'].iloc[-20:]) plt.xticks(rotation=30) plt.subplot(3,1,3) plt.title('展望-真确图') plt.plot(data['date'].iloc[-20:],lyp,color='red',label='展望值') plt.plot(data['date'].iloc[-20:],data['up'].iloc[-20:],color='blue',label='真确值') plt.xticks(rotation=30) plt.legend() plt.savefig(fname='C:/Users/86188/Desktop/Python数据挖掘与数据分析/基于SVM算法的股票展望/tmp/lyp.jpg') plt.show()
图片
图9 核函数为linear的SVM模子#画出收盘价走势图以及真确值和展望值图 plt.subplot(3,1,1) #收盘价走势图 plt.title('收盘价走势图') plt.plot(data['date'].iloc[-20:],data['close'].iloc[-20:]) plt.xticks(rotation=30) plt.subplot(3,1,3) plt.title('展望-真确图') plt.plot(data['date'].iloc[-20:],syp,color='red',label='展望值') plt.plot(data['date'].iloc[-20:],data['up'].iloc[-20:],color='blue',label='真确值') plt.xticks(rotation=30) plt.legend() plt.savefig(fname='C:/Users/86188/Desktop/Python数据挖掘与数据分析/基于SVM算法的股票展望/tmp/syp.jpg') plt.show()
图片
图10 核函数切多项式的SVM模子#画出sigmoid收盘价走势图以及真确值和展望值图 plt.subplot(3,1,1) #收盘价走势图 plt.title('收盘价走势图') plt.plot(data['date'].iloc[-20:],data['close'].iloc[-20:]) plt.xticks(rotation=30) plt.subplot(3,1,3) plt.title('展望-真确图') plt.plot(data['date'].iloc[-20:],pyp,color='red',label='展望值') plt.plot(data['date'].iloc[-20:],data['up'].iloc[-20:],color='blue',label='真确值') plt.xticks(rotation=30) plt.legend() plt.savefig(fname='C:/Users/86188/Desktop/Python数据挖掘与数据分析/基于SVM算法的股票展望/tmp/pyp.jpg') plt.show()
图片
图11 核函数为sigmoid的SVM模子#画出rbf收盘价走势图以及真确值和展望值图 plt.subplot(3,1,1) #收盘价走势图 plt.title('收盘价走势图') plt.plot(data['date'].iloc[-20:],data['close'].iloc[-20:]) plt.xticks(rotation=30) plt.subplot(3,1,3) plt.title('展望-真确图') plt.plot(data['date'].iloc[-20:],ryp,color='red',label='展望值') plt.plot(data['date'].iloc[-20:],data['up'].iloc[-20:],color='blue',label='真确值') plt.xticks(rotation=30) plt.legend() plt.savefig(fname='C:/Users/86188/Desktop/Python数据挖掘与数据分析/基于SVM算法的股票展望/tmp/ryp.jpg') plt.show()
图片
ipad怎么在线看av 图12 核函数为rbf的SVM模子 5.模子矫正 从模子评价来看,SVM算法的核函数对模子评分、精度来说很迫切,不同的数据集得当不同的核函数。关于股票涨跌的情况展望,咱们不难发现,一些评价尺度是不行代表模子的厉害了,如诚然linear核函数的SVM模子是最佳的,关联词其真确值和展望值重合度照旧有一定的差距,全体走势是相同的,但似乎存在展望时差,即涨跌拐点日历有进出。是以矫处死子应该使用自编的核函数,基于径向基核函数的SVM算法用于股票价钱展望,对股票将来十五天的走向进行展望,不错发现SVM算法展望的范围可靠性强、罅隙小,但也会挥霍一定的时辰,裁减运算速率。
6.论断贬责股票函数需要先用PCA主身分分析尽可能裁减维度,贬责冗余函数,不同核函数的SVM算法对股票展望的情况不同。从上头的例子来看,昭彰linear核函数更得当“温氏股份”的股票展望分析,但从知网著作的角度来看ai换脸,最佳使用径向基核函数的SVM算法。
,一些评价尺度是不行代表模子的厉害了,如诚然linear核函数的SVM模子是最佳的,关联词其真确值和展望值重合度照旧有一定的差距,全体走势是相同的,但似乎存在展望时差,即涨跌拐点日历有进出。是以矫处死子应该使用自编的核函数,基于径向基核函数的SVM算法用于股票价钱展望,对股票将来十五天的走向进行展望,不错发现SVM算法展望的范围可靠性强、罅隙小,但也会挥霍一定的时辰,裁减运算速率。
6.论断贬责股票函数需要先用PCA主身分分析尽可能裁减维度,贬责冗余函数,不同核函数的SVM算法对股票展望的情况不同。从上头的例子来看,昭彰linear核函数更得当“温氏股份”的股票展望分析,但从知网著作的角度来看,最佳使用径向基核函数的SVM算法。
本站仅提供存储职业,统统施行均由用户发布,如发现存害或侵权施行,请点击举报。- ai换脸 刘涛 柬埔寨青少小林寺再续“功夫情缘”2024-11-13
- porn ai换脸 大好时光第6集剧情先容2024-10-23
- ai换脸 唐尚珺已录入壮盛信息,9月1日报到,笑称“没面办升学宴”2024-08-26
- ai换脸 porn 西十高铁行将通车,东谈主口小城十堰将成高铁发展大城?2024-08-26
- ai换脸 porn 汉邦高科(300449)8月21日主力资金净卖出524.07万元2024-08-24
- ai换脸 [太阳的含笑]里面著述技能教程片断共享2024-08-24