最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

畢業(yè)設(shè)計(jì) 大數(shù)據(jù)股票量化分析與預(yù)測(cè)系統(tǒng)

2023-03-25 10:09 作者:丹成學(xué)長(zhǎng)  | 我要投稿

0 前言

?? 這兩年開(kāi)始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長(zhǎng)自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。

為了大家能夠順利以及最少的精力通過(guò)畢設(shè),學(xué)長(zhǎng)分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目,今天要分享的是

?? ?基于大數(shù)據(jù)的股票量化分析與股價(jià)預(yù)測(cè)系統(tǒng)

??學(xué)長(zhǎng)這里給一個(gè)題目綜合評(píng)分(每項(xiàng)滿分5分)

  • 難度系數(shù):3分

  • 工作量:3分

  • 創(chuàng)新點(diǎn):4分

畢設(shè)幫助,選題指導(dǎo),技術(shù)解答,歡迎打擾,見(jiàn)B站個(gè)人主頁(yè)

https://space.bilibili.com/33886978


1 課題背景

基于大數(shù)據(jù)的股票可視化分析平臺(tái)設(shè)計(jì),對(duì)股票數(shù)據(jù)進(jìn)行預(yù)處理,清洗以及可視化分析,同時(shí)設(shè)計(jì)了軟件界面。

2 實(shí)現(xiàn)效果

價(jià)格可視化

在這里插入圖片描述

魔梯訪問(wèn)與指標(biāo)計(jì)算

在這里插入圖片描述

聚類(lèi)分析

在這里插入圖片描述

3 設(shè)計(jì)原理

QTCharts

簡(jiǎn)介

QtCharts是Qt自帶的組件庫(kù),其中包含折線、曲線、餅圖、棒圖、散點(diǎn)圖、雷達(dá)圖等各種常用的圖表。而在地面站開(kāi)發(fā)過(guò)程中,使用折線圖可以對(duì)無(wú)人機(jī)的一些狀態(tài)數(shù)據(jù)進(jìn)行監(jiān)測(cè),更是可以使用散點(diǎn)圖來(lái)模擬飛機(jī)所在位置,實(shí)現(xiàn)平面地圖的感覺(jué)。

使用Qt Charts繪制,大概可以分為四個(gè)部分:數(shù)據(jù)(QXYSeries)、圖表(QChart)、坐標(biāo)軸(QAbstractAXis)和視圖(QChartView)。這里就不一一給大家介紹了,下面給大家說(shuō)一下QtCharts的配置安裝。

QtCharts模塊的C++類(lèi)

在這里插入圖片描述

arma模型預(yù)測(cè)


簡(jiǎn)介

ARMA模型,又稱(chēng)為ARMA (p,q)模型。其核心思想就是當(dāng)前正如名字所顯示的,整個(gè)模型的核心就是要確定p和q這兩個(gè)參數(shù)。其中,p決定了我們要用幾個(gè)滯后時(shí)期的價(jià)格數(shù)據(jù),而q決定了我們要用幾個(gè)滯后時(shí)期的預(yù)測(cè)誤差。

在這里插入圖片描述

簡(jiǎn)單來(lái)說(shuō),ARMA模型做了兩件事。一是基于趨勢(shì)理論,用歷史數(shù)據(jù)來(lái)回歸出一個(gè)當(dāng)前的價(jià)格預(yù)測(cè),這個(gè)預(yù)測(cè)反映了自回歸的思想。但是這個(gè)預(yù)測(cè)必然是有差異的,所以ARMA模型根據(jù)歷史的預(yù)測(cè)誤差也回歸出一個(gè)當(dāng)前的誤差預(yù)測(cè),這個(gè)預(yù)測(cè)反映了加權(quán)平均的思想。用價(jià)格預(yù)測(cè)加上誤差預(yù)測(cè)修正,才最終得到一個(gè)理論上更加精確的最終價(jià)格預(yù)測(cè)。

比起簡(jiǎn)單的自回歸模型或者以時(shí)間為基礎(chǔ)的簡(jiǎn)單趨勢(shì)預(yù)測(cè)模型,ARMA模型最大的優(yōu)勢(shì),在于綜合了趨勢(shì)理論和均值回歸理論,理論上的精確度會(huì)比較高。

'''
? ?自回歸滑動(dòng)平均模型
'''
from statsmodels.tsa.arima_model import ARMA
from itertools import product


def myARMA(data):
? ?p = range(0, 9)
? ?q = range(0, 9)
? ?parameters = list(product(p, q)) ?# 生成(p,q)從(0,0)到(9,9)的枚舉
? ?best_aic = float('inf')
? ?result = None
? ?for param in parameters:
? ? ? ?try:
? ? ? ? ? ?model = ARMA(endog=data, order=(param[0], param[1])).fit()
? ? ? ?except ValueError:
? ? ? ? ? ?print("參數(shù)錯(cuò)誤:", param)
? ? ? ? ? ?continue
? ? ? ?aic = model.aic
? ? ? ?if aic < best_aic: ?# 選取最優(yōu)的aic
? ? ? ? ? ?best_aic = model.aic
? ? ? ? ? ?result = (model, param)
? ?return result

K-means聚類(lèi)算法

基本原理

k-Means算法是一種使用最普遍的聚類(lèi)算法,它是一種無(wú)監(jiān)督學(xué)習(xí)算法,目的是將相似的對(duì)象歸到同一個(gè)簇中。簇內(nèi)的對(duì)象越相似,聚類(lèi)的效果就越好。該算法不適合處理離散型屬性,但對(duì)于連續(xù)型屬性具有較好的聚類(lèi)效果。

聚類(lèi)效果判定標(biāo)準(zhǔn)

使各個(gè)樣本點(diǎn)與所在簇的質(zhì)心的誤差平方和達(dá)到最小,這是評(píng)價(jià)k-means算法最后聚類(lèi)效果的評(píng)價(jià)標(biāo)準(zhǔn)。

在這里插入圖片描述

算法實(shí)現(xiàn)步驟

1)選定k值

2)創(chuàng)建k個(gè)點(diǎn)作為k個(gè)簇的起始質(zhì)心。

3)分別計(jì)算剩下的元素到k個(gè)簇的質(zhì)心的距離,將這些元素分別劃歸到距離最小的簇。

4)根據(jù)聚類(lèi)結(jié)果,重新計(jì)算k個(gè)簇各自的新的質(zhì)心,即取簇中全部元素各自維度下的算術(shù)平均值。

5)將全部元素按照新的質(zhì)心重新聚類(lèi)。

6)重復(fù)第5步,直到聚類(lèi)結(jié)果不再變化。

7)最后,輸出聚類(lèi)結(jié)果。

算法缺點(diǎn)

雖然K-Means算法原理簡(jiǎn)單,但是有自身的缺陷:

1)聚類(lèi)的簇?cái)?shù)k值需在聚類(lèi)前給出,但在很多時(shí)候中k值的選定是十分難以估計(jì)的,很多情況我們聚類(lèi)前并不清楚給出的數(shù)據(jù)集應(yīng)當(dāng)分成多少類(lèi)才最恰當(dāng)。

2)k-means需要人為地確定初始質(zhì)心,不一樣的初始質(zhì)心可能會(huì)得出差別很大的聚類(lèi)結(jié)果,無(wú)法保證k-means算法收斂于全局最優(yōu)解。

3)對(duì)離群點(diǎn)敏感。

4)結(jié)果不穩(wěn)定(受輸入順序影響)。

5)時(shí)間復(fù)雜度高O(nkt),其中n是對(duì)象總數(shù),k是簇?cái)?shù),t是迭代次數(shù)。

算法實(shí)現(xiàn)關(guān)鍵問(wèn)題說(shuō)明

K值的選定說(shuō)明

根據(jù)聚類(lèi)原則:組內(nèi)差距要小,組間差距要大。我們先算出不同k值下各個(gè)SSE(Sum of squared errors)值,然后繪制出折線圖來(lái)比較,從中選定最優(yōu)解。從圖中,我們可以看出k值到達(dá)5以后,SSE變化趨于平緩,所以我們選定5作為k值。

在這里插入圖片描述


初始的K個(gè)質(zhì)心選定說(shuō)明

初始的k個(gè)質(zhì)心選定是采用的隨機(jī)法。從各列數(shù)值最大值和最小值中間按正太分布隨機(jī)選取k個(gè)質(zhì)心。

關(guān)于離群點(diǎn)

離群點(diǎn)就是遠(yuǎn)離整體的,非常異常、非常特殊的數(shù)據(jù)點(diǎn)。因?yàn)閗-means算法對(duì)離群點(diǎn)十分敏感,所以在聚類(lèi)之前應(yīng)該將這些“極大”、“極小”之類(lèi)的離群數(shù)據(jù)都去掉,否則會(huì)對(duì)于聚類(lèi)的結(jié)果有影響。離群點(diǎn)的判定標(biāo)準(zhǔn)是根據(jù)前面數(shù)據(jù)可視化分析過(guò)程的散點(diǎn)圖和箱線圖進(jìn)行判定。

4 部分核心代碼

#include "kmeans.h"
#include "ui_kmeans.h"

kmeans::kmeans(QWidget *parent) :
? ?QDialog(parent),
? ?ui(new Ui::kmeans)
{
? ?this->setWindowFlags(Qt::Dialog | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint);
? ?ui->setupUi(this);
}

kmeans::~kmeans()
{
? ?delete ui;
}

void kmeans::closeEvent(QCloseEvent *)
{
? ?end_flag=true;
}

void kmeans::on_pushButton_clicked()
{
? ?end_flag=false;
? ?//讀取數(shù)據(jù)
? ?QFile sharpe("sharpe.txt");
? ?sharpe.open(QIODevice::ReadOnly|QIODevice::Text);
? ?std::vector<std::array<double,2>> data;
? ?while(!sharpe.atEnd())
? ?{
? ? ? ?QStringList linels=QString(sharpe.readLine()).split(',');
? ? ? ?qreal mean=linels[3].toDouble();
? ? ? ?qreal sd=linels[4].toDouble();
? ? ? ?if(mean>-0.06&&mean<0.06&&sd<0.12)data.push_back({mean,sd});
? ?}
? ?std::random_shuffle(data.begin(),data.end());
? ?sharpe.close();
? ?//聚類(lèi)
? ?ui->pushButton->setText("聚類(lèi)中...");
? ?QApplication::processEvents();
? ?auto labels=std::get<1>(dkm::kmeans_lloyd(data,9));
? ?ui->pushButton->setText("開(kāi)始");
? ?QApplication::processEvents();
? ?//作圖
? ?QChart *chart = new QChart();
? ?//chart->setAnimationOptions(QChart::SeriesAnimations);
? ?//chart->legend()->setVisible(false);

? ?QList<QScatterSeries*> serieses;
? ?QList<QColor> colors{
? ? ? ?QColor(Qt::black),
? ? ? ? ? ? ? ?QColor(Qt::cyan),
? ? ? ? ? ? ? ?QColor(Qt::red),
? ? ? ? ? ? ? ?QColor(Qt::green),
? ? ? ? ? ? ? ?QColor(Qt::magenta),
? ? ? ? ? ? ? ?QColor(Qt::yellow),
? ? ? ? ? ? ? ?QColor(Qt::gray),
? ? ? ? ? ? ? ?QColor(Qt::blue),
? ? ? ? ? ? ? ?QColor("#A27E36")
? ?};
? ?for(int i=0;i<9;i++){
? ? ? ?QScatterSeries *temp = new QScatterSeries();
? ? ? ?temp->setName(QString::number(i));
? ? ? ?temp->setColor(colors[i]);
? ? ? ?temp->setMarkerSize(10.0);
? ? ? ?serieses.append(temp);
? ? ? ?chart->addSeries(temp);
? ?}
? ?chart->createDefaultAxes();

? ?/*
? ? ? ? ? ? ? ? ? ? ? ? ? ? v4
-------------------------------------------------------------
? ? ?Percentiles ? ? ?Smallest
1% ? ? -.023384 ? ? ? ?-.35985
5% ? ?-.0115851 ? ? ? -.349373
10% ? ?-.0078976 ? ? ? -.325249 ? ? ? Obs ? ? ? ? ? ? 613,849
25% ? ?-.0037067 ? ? ? -.324942 ? ? ? Sum of Wgt. ? ? 613,849

50% ? ? .0000567 ? ? ? ? ? ? ? ? ? ? ?Mean ? ? ? ? ? .0004866
? ? ? ? ? ? ? ? ? ? ? ?Largest ? ? ? Std. Dev. ? ? ?.0130231
75% ? ? .0041332 ? ? ? ?1.28376
90% ? ? .0091571 ? ? ? ?1.52169 ? ? ? Variance ? ? ? .0001696
95% ? ? .0132541 ? ? ? ?2.73128 ? ? ? Skewness ? ? ? 95.21884
99% ? ? .0273964 ? ? ? ?4.56203 ? ? ? Kurtosis ? ? ? 28540.15

? ? ? ? ? ? ? ? ? ? ? ? ? ? v5
-------------------------------------------------------------
? ? ?Percentiles ? ? ?Smallest
1% ? ? .0073016 ? ? ? 4.68e-07
5% ? ? .0112397 ? ? ? 7.22e-07
10% ? ? .0135353 ? ? ? 7.84e-07 ? ? ? Obs ? ? ? ? ? ? 613,849
25% ? ? .0180452 ? ? ? 8.21e-07 ? ? ? Sum of Wgt. ? ? 613,849

50% ? ? .0248626 ? ? ? ? ? ? ? ? ? ? ?Mean ? ? ? ? ? .0282546
? ? ? ? ? ? ? ? ? ? ? ?Largest ? ? ? Std. Dev. ? ? ?.0213631
75% ? ? .0343356 ? ? ? ? 3.2273
90% ? ? .0458472 ? ? ? ?3.32199 ? ? ? Variance ? ? ? .0004564
95% ? ? .0549695 ? ? ? ?4.61189 ? ? ? Skewness ? ? ? 68.11651
99% ? ? .0837288 ? ? ? ?4.75981 ? ? ? Kurtosis ? ? ? 11569.69

? ? */

? ?QValueAxis *axisX = qobject_cast<QValueAxis *>(chart->axes(Qt::Horizontal).at(0));
? ?axisX->setRange(-0.06,0.06);
? ?axisX->setTitleText("平均值");
? ?axisX->setLabelFormat("%.2f");

? ?QValueAxis *axisY = qobject_cast<QValueAxis *>(chart->axes(Qt::Vertical).at(0));
? ?axisY->setRange(0,0.12);
? ?axisY->setTitleText("標(biāo)準(zhǔn)差");
? ?axisY->setLabelFormat("%.2f");

? ?ui->widget->setRenderHint(QPainter::Antialiasing);
? ?ui->widget->setChart(chart);

? ?int i=0;
? ?auto labelsiter=labels.begin();
? ?for(auto &&point : data){
? ? ? ?if(end_flag)return;
? ? ? ?serieses[*labelsiter]->append(QPointF(point[0],point[1]));
? ? ? ?i++;
? ? ? ?labelsiter++;
? ? ? ?if(i%1000==0){
? ? ? ? ? ?QApplication::processEvents();
? ? ? ?}
? ?}
}

void kmeans::on_pushButton_2_clicked()
{
? ?end_flag=true;
}

5 最后

畢設(shè)幫助,選題指導(dǎo),技術(shù)解答,歡迎打擾,見(jiàn)B站個(gè)人主頁(yè)

https://space.bilibili.com/33886978

畢業(yè)設(shè)計(jì) 大數(shù)據(jù)股票量化分析與預(yù)測(cè)系統(tǒng)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
昂仁县| 松原市| 陇南市| 石景山区| 天长市| 尉氏县| 清河县| 云安县| 宿州市| 望城县| 永城市| 临沂市| 郓城县| 东至县| 淳化县| 凌云县| 南阳市| 博罗县| 胶州市| 光山县| 宝山区| 临泉县| 正安县| 绍兴县| 沭阳县| 湖州市| 哈尔滨市| 望江县| 柘荣县| 赣州市| 磐安县| 克山县| 河津市| 湟中县| 逊克县| 清苑县| 芮城县| 防城港市| 鞍山市| 韶关市| 镇沅|