[文献精汇]使用PyCaret预测 Apple 股价

2024年专题

  • 量化专题 共计 102 篇
    涵盖量化框架、数据篇、风险与收益、策略篇、多因子模型、编程篇、图形篇、机器学习、Backtrader等主题,全方面了解量化领域知识。
  • 机器学习共计29篇
    涵盖机器学习基本介绍、监督学习、集成算法、无监督学习以及机器学习实战。
  • 研报复现 对光大、广发等券商研报进行复现,主要包括RSRS、技术指标等复现和学习。
    • 券商研报 共计 9 篇
    • 技术指标 共计29篇
  • 文献精汇共计9篇
    收录国内外机器学习、量化交易、人工智能方面的文献及研究。
  • 聊一聊系列共计20篇
    该专题围绕金融行业政策及法律法规解读以及券商信息系统介绍。券商信息系统方面介绍券商业务系统,包括新一代集中交易(经纪业务系统)、公募基金券商结算系统、券商场外柜台交易系统、转融通等。
  • 金融周报 共计104篇
    基于基金公司研报实现对ETF、可转债每周行情分析。

介绍

开发一个机器学习模型来尝试通过线性回归分析来预测 Apple 股票的价格会很有趣。PyCaret 的库,这是一个开源的 Python 低代码机器学习库,可以自动化机器学习工作流程,非常适合像我这样的机器学习初学者。

线性回归分析

线性回归分析用于根据另一个变量的值预测变量的值,例如股票的收盘价。

在这个项目中使用了机器学习,通过 PyCaret 的回归库为数据集创建、测试和确定最佳回归模型。为了获得有关机器学习及其如何影响我们日常生活的更多信息,请单击此处访问麻省理工学院斯隆学院网站上发布的文章,该文章深入探讨了该主题。

获取数据

# Obtaining data 
aapl = pd.read_csv('./data/aapl.csv') # Last 10 years
aapl = aapl.set_index('Date')
# See dataframe
aapl.head(10)

Open

High

Low

Close

Volume

Dividends

Stock Splits

Date

2015-01-07 00:00:00-05:00

23.872833

24.095527

23.761486

23.995316

160423600

0.0

0.0

2015-01-08 00:00:00-05:00

24.324901

24.975168

24.206871

24.917267

237458000

0.0

0.0

2015-01-09 00:00:00-05:00

25.090962

25.220125

24.543135

24.943985

214798000

0.0

0.0

2015-01-12 00:00:00-05:00

25.075387

25.082067

24.229149

24.329361

198603200

0.0

0.0

2015-01-13 00:00:00-05:00

24.814830

25.119922

24.253641

24.545370

268367600

0.0

0.0

2015-01-14 00:00:00-05:00

24.282595

24.605501

24.162340

24.451843

195826400

0.0

0.0

2015-01-15 00:00:00-05:00

24.496380

24.509741

23.752582

23.788212

240056000

0.0

0.0

2015-01-16 00:00:00-05:00

23.834977

23.957459

23.427446

23.603374

314053200

0.0

0.0

2015-01-20 00:00:00-05:00

24.015355

24.267000

23.716945

24.211327

199599600

0.0

0.0

2015-01-21 00:00:00-05:00

24.262544

24.732429

24.111112

24.396162

194303600

0.0

0.0

探索性分析

# Using Pandas Profiling to generate a report on our dataframe
Profile_1 = pp.ProfileReport(aapl)
Profile_1.to_file("Report1.html")

删除列

# Removing 'Dividends' and 'Stock Splits' columns
aapl = aapl.drop(['Dividends','Stock Splits'], axis = 1)
# See results
aapl.head(10)

Open

High

Low

Close

Volume

Date

2015-01-07 00:00:00-05:00

23.872833

24.095527

23.761486

23.995316

160423600

2015-01-08 00:00:00-05:00

24.324901

24.975168

24.206871

24.917267

237458000

2015-01-09 00:00:00-05:00

25.090962

25.220125

24.543135

24.943985

214798000

2015-01-12 00:00:00-05:00

25.075387

25.082067

24.229149

24.329361

198603200

2015-01-13 00:00:00-05:00

24.814830

25.119922

24.253641

24.545370

268367600

2015-01-14 00:00:00-05:00

24.282595

24.605501

24.162340

24.451843

195826400

2015-01-15 00:00:00-05:00

24.496380

24.509741

23.752582

23.788212

240056000

2015-01-16 00:00:00-05:00

23.834977

23.957459

23.427446

23.603374

314053200

2015-01-20 00:00:00-05:00

24.015355

24.267000

23.716945

24.211327

199599600

2015-01-21 00:00:00-05:00

24.262544

24.732429

24.111112

24.396162

194303600

添加简单移动平均线

为了增加 PyCaret 回归模型要分析的特征数量,我将为目标变量(即收盘价)添加两个简单的移动平均线,期望它能提高我们模型的准确性值。

# Adding two simple moving averages in order to increase the number of features to be analyzed by PyCaret Regression models
aapl['SMA7'] = aapl.Close.rolling(window=7).mean().round(2)
aapl['SMA30'] = aapl.Close.rolling(window=30).mean().round(2)
# See results
aapl.head(10)

Open

High

Low

Close

Volume

SMA7

SMA30

Date

2015-01-07 00:00:00-05:00

23.872833

24.095527

23.761486

23.995316

160423600

NaN

NaN

2015-01-08 00:00:00-05:00

24.324901

24.975168

24.206871

24.917267

237458000

NaN

NaN

2015-01-09 00:00:00-05:00

25.090962

25.220125

24.543135

24.943985

214798000

NaN

NaN

2015-01-12 00:00:00-05:00

25.075387

25.082067

24.229149

24.329361

198603200

NaN

NaN

2015-01-13 00:00:00-05:00

24.814830

25.119922

24.253641

24.545370

268367600

NaN

NaN

2015-01-14 00:00:00-05:00

24.282595

24.605501

24.162340

24.451843

195826400

NaN

NaN

2015-01-15 00:00:00-05:00

24.496380

24.509741

23.752582

23.788212

240056000

24.42

NaN

2015-01-16 00:00:00-05:00

23.834977

23.957459

23.427446

23.603374

314053200

24.37

NaN

2015-01-20 00:00:00-05:00

24.015355

24.267000

23.716945

24.211327

199599600

24.27

NaN

2015-01-21 00:00:00-05:00

24.262544

24.732429

24.111112

24.396162

194303600

24.19

NaN

# Generating new report with pandas_profiling
Profile_2 = pp.ProfileReport(aapl)
Profile_2.to_file("Report2.html")

可以观察到 SMA7 列有 6 个缺失值,SMA30 列有 29 个缺失值,考虑到这些列的数据只够分别在第 7 天和第 30 天显示其移动平均值,这是正常的。

通过相关矩阵,可以观察到添加的两个移动平均线都与开盘价、最低价、最高价和收盘价具有高水平的相关性。

图片

image.png

绘制过去 10 年的 K 线图

# Using plotly to plot a candlestick chart of the last 20 years
fig = go.Figure(data=[go.Candlestick(x = aapl.index,open = aapl.Open,high = aapl.High,low = aapl.Low,close = aapl.Close),go.Scatter(x=aapl.index, y = aapl.SMA7, line=dict(color='orange',width=1),name='SMA7'),go.Scatter(x=aapl.index, y = aapl.SMA30, line=dict(color='green',width=1.5),name='SMA30')])
fig.update_layout(title = 'Apple stocks from June 11th, 2015 to June 10th, 2025')
fig.update_layout(autosize=False,width=1200,height=800,)
fig.show()

图片

svg

创建新 DataFrame

将创建一个包含过去 2 年数据的新 DataFrame,并使用这些数据来测试我们的预测模型预测过去 2 个交易年的收盘价的能力。

# Creating a new dataframe containing the last 2 years data to later test how well our predicting model will compare to the closing prices
aapl_predict = aapl.tail(506)
# See results
aapl_predict

Open

High

Low

Close

Volume

SMA7

SMA30

Date

2022-12-30 00:00:00-05:00

127.073710

128.597677

126.103905

128.577881

77034200

129.38

139.47

2023-01-03 00:00:00-05:00

128.924229

129.537772

122.877812

123.768448

112117500

127.91

138.63

2023-01-04 00:00:00-05:00

125.569520

127.321104

123.778358

125.045036

89113600

127.08

137.81

2023-01-05 00:00:00-05:00

125.807014

126.440353

123.461682

123.718971

80962700

126.11

137.05

2023-01-06 00:00:00-05:00

124.698677

128.934129

123.590330

128.271103

87754700

126.05

136.37

...

...

...

...

...

...

...

...

2024-12-30 00:00:00-05:00

252.229996

253.500000

250.750000

252.199997

35557500

254.94

243.14

2024-12-31 00:00:00-05:00

252.440002

253.279999

249.429993

250.419998

39480700

255.03

243.99

2025-01-02 00:00:00-05:00

248.929993

249.100006

241.820007

243.850006

55740700

253.51

244.52

2025-01-03 00:00:00-05:00

243.360001

244.179993

241.889999

243.360001

40244100

251.81

245.02

2025-01-06 00:00:00-05:00

244.309998

247.330002

243.199997

245.000000

45007100

249.92

245.55

506 rows × 7 columns

aapl_predict 包含 2022 年 12 月 30 日至 2025 年 1 月 06 日的数据

# Removing last 2 years from the original dataframe
aapl.drop(aapl_predict.index,inplace = True)
# See results
aapl.head(10)

Open

High

Low

Close

Volume

SMA7

SMA30

Date

2015-01-07 00:00:00-05:00

23.872833

24.095527

23.761486

23.995316

160423600

NaN

NaN

2015-01-08 00:00:00-05:00

24.324901

24.975168

24.206871

24.917267

237458000

NaN

NaN

2015-01-09 00:00:00-05:00

25.090962

25.220125

24.543135

24.943985

214798000

NaN

NaN

2015-01-12 00:00:00-05:00

25.075387

25.082067

24.229149

24.329361

198603200

NaN

NaN

2015-01-13 00:00:00-05:00

24.814830

25.119922

24.253641

24.545370

268367600

NaN

NaN

2015-01-14 00:00:00-05:00

24.282595

24.605501

24.162340

24.451843

195826400

NaN

NaN

2015-01-15 00:00:00-05:00

24.496380

24.509741

23.752582

23.788212

240056000

24.42

NaN

2015-01-16 00:00:00-05:00

23.834977

23.957459

23.427446

23.603374

314053200

24.37

NaN

2015-01-20 00:00:00-05:00

24.015355

24.267000

23.716945

24.211327

199599600

24.27

NaN

2015-01-21 00:00:00-05:00

24.262544

24.732429

24.111112

24.396162

194303600

24.19

NaN

我们将用于创建预测模型的原始数据帧现在包含从 2022-12-29 到 2015-01-07的数据

# Removing NaN
aapl.dropna(inplace=True)
# See Results
aapl.head(10)

Open

High

Low

Close

Volume

SMA7

SMA30

Date

2015-02-19 00:00:00-05:00

28.724684

28.847650

28.691150

28.717978

149449600

28.28

25.96

2015-02-20 00:00:00-05:00

28.755990

28.952736

28.628555

28.952736

195793600

28.52

26.12

2015-02-23 00:00:00-05:00

29.068984

29.735231

28.988498

29.735231

283896400

28.78

26.28

2015-02-24 00:00:00-05:00

29.721825

29.869385

29.326100

29.549673

276912400

28.96

26.44

2015-02-25 00:00:00-05:00

29.413290

29.422235

28.650904

28.793991

298846800

29.02

26.59

2015-02-26 00:00:00-05:00

28.793997

29.259030

28.306609

29.158422

365150000

29.10

26.74

2015-02-27 00:00:00-05:00

29.064518

29.191956

28.671030

28.720217

248059200

29.09

26.88

2015-03-02 00:00:00-05:00

28.896841

29.127121

28.684447

28.861069

192386800

29.11

27.05

2015-03-03 00:00:00-05:00

28.832006

28.957207

28.637495

28.921434

151265200

29.11

27.23

2015-03-04 00:00:00-05:00

28.863306

28.966148

28.688919

28.738102

126665200

28.96

27.38

使用 PyCaret 创建预测模型

# Importing regression lib from PyCaret
from pycaret.regression import *setup(data=aapl,target='Close',session_id=123, remove_multicollinearity=True,multicollinearity_threshold=0.9)

Description

Value

0

Session id

123

1

Target

Close

2

Target type

Regression

3

Original data shape

(1981, 7)

4

Transformed data shape

(1981, 3)

5

Transformed train set shape

(1386, 3)

6

Transformed test set shape

(595, 3)

7

Numeric features

6

8

Preprocess

True

9

Imputation type

simple

10

Numeric imputation

mean

11

Categorical imputation

mode

12

Remove multicollinearity

True

13

Multicollinearity threshold

0.900000

14

Fold Generator

KFold

15

Fold Number

10

16

CPU Jobs

-1

17

Use GPU

False

18

Log Experiment

False

19

Experiment Name

reg-default-name

20

USI

bff1

<pycaret.regression.oop.RegressionExperiment at 0x14fc6f430>
# Obtaining top 3 best models
top3 = compare_models(n_select = 3)

Model

MAE

MSE

RMSE

R2

RMSLE

MAPE

TT (Sec)

lr

Linear Regression

0.5492

0.9135

0.9472

0.9996

0.0100

0.0072

0.8300

en

Elastic Net

0.5479

0.9128

0.9469

0.9996

0.0100

0.0071

0.0090

lar

Least Angle Regression

0.5492

0.9135

0.9472

0.9996

0.0100

0.0072

0.2030

llar

Lasso Least Angle Regression

0.5479

0.9128

0.9469

0.9996

0.0100

0.0071

0.2100

br

Bayesian Ridge

0.5491

0.9135

0.9472

0.9996

0.0100

0.0072

0.0090

lasso

Lasso Regression

0.5479

0.9128

0.9469

0.9996

0.0100

0.0071

0.2210

ridge

Ridge Regression

0.5491

0.9135

0.9472

0.9996

0.0100

0.0072

0.0090

rf

Random Forest Regressor

0.6098

1.1406

1.0606

0.9995

0.0104

0.0075

0.0530

et

Extra Trees Regressor

0.6197

1.2088

1.0921

0.9995

0.0104

0.0075

0.0420

gbr

Gradient Boosting Regressor

0.6332

1.1324

1.0585

0.9995

0.0110

0.0083

0.0290

lightgbm

Light Gradient Boosting Machine

0.6249

1.1827

1.0797

0.9995

0.0109

0.0080

0.7900

xgboost

Extreme Gradient Boosting

0.7092

1.5144

1.2141

0.9994

0.0126

0.0091

0.0200

catboost

CatBoost Regressor

0.7079

1.5438

1.2157

0.9994

0.0130

0.0095

0.2650

dt

Decision Tree Regressor

0.7477

1.7109

1.3031

0.9993

0.0131

0.0094

0.0080

ada

AdaBoost Regressor

1.9198

5.8222

2.4085

0.9976

0.0616

0.0440

0.0240

omp

Orthogonal Matching Pursuit

40.9516

2098.7460

45.7906

0.1216

0.6953

0.8042

0.0100

dummy

Dummy Regressor

43.5007

2398.9002

48.9572

-0.0028

0.7055

0.8631

0.0110

knn

K Neighbors Regressor

40.2368

2399.9460

48.9487

-0.0047

0.6900

0.7649

0.0170

huber

Huber Regressor

49.0278

4457.0476

66.7169

-0.8638

1.0082

0.6933

0.0090

par

Passive Aggressive Regressor

84.8315

13155.8677

108.9942

-4.5973

1.1798

2.0757

0.0080

创建模型

ridge = create_model('ridge',fold = 10)

MAE

MSE

RMSE

R2

RMSLE

MAPE

Fold

0

0.6455

1.2438

1.1153

0.9995

0.0108

0.0079

1

0.5131

0.6515

0.8072

0.9997

0.0094

0.0072

2

0.5559

0.8599

0.9273

0.9997

0.0107

0.0074

3

0.5645

1.1979

1.0945

0.9995

0.0104

0.0071

4

0.5961

1.2698

1.1269

0.9995

0.0113

0.0078

5

0.4975

0.5994

0.7742

0.9998

0.0081

0.0064

6

0.5088

0.6393

0.7996

0.9997

0.0092

0.0066

7

0.5078

0.8698

0.9326

0.9996

0.0087

0.0065

8

0.5362

1.0269

1.0134

0.9995

0.0109

0.0068

9

0.5661

0.7767

0.8813

0.9997

0.0111

0.0081

Mean

0.5491

0.9135

0.9472

0.9996

0.0100

0.0072

Std

0.0442

0.2441

0.1276

0.0001

0.0011

0.0006

br = create_model('br',fold=10)

MAE

MSE

RMSE

R2

RMSLE

MAPE

Fold

0

0.6455

1.2438

1.1153

0.9995

0.0108

0.0079

1

0.5131

0.6515

0.8072

0.9997

0.0094

0.0072

2

0.5559

0.8599

0.9273

0.9997

0.0107

0.0074

3

0.5645

1.1979

1.0945

0.9995

0.0104

0.0071

4

0.5961

1.2698

1.1269

0.9995

0.0113

0.0078

5

0.4975

0.5994

0.7742

0.9998

0.0081

0.0064

6

0.5088

0.6393

0.7996

0.9997

0.0092

0.0066

7

0.5078

0.8698

0.9326

0.9996

0.0087

0.0065

8

0.5362

1.0269

1.0134

0.9995

0.0109

0.0068

9

0.5661

0.7767

0.8813

0.9997

0.0111

0.0081

Mean

0.5491

0.9135

0.9472

0.9996

0.0100

0.0072

Std

0.0442

0.2441

0.1276

0.0001

0.0011

0.0006

lar = create_model('lar',fold=10)

MAE

MSE

RMSE

R2

RMSLE

MAPE

Fold

0

0.6455

1.2438

1.1153

0.9995

0.0108

0.0079

1

0.5131

0.6515

0.8072

0.9997

0.0094

0.0072

2

0.5559

0.8599

0.9273

0.9997

0.0107

0.0074

3

0.5645

1.1979

1.0945

0.9995

0.0104

0.0071

4

0.5961

1.2698

1.1269

0.9995

0.0113

0.0078

5

0.4975

0.5994

0.7742

0.9998

0.0081

0.0064

6

0.5089

0.6394

0.7996

0.9997

0.0092

0.0066

7

0.5078

0.8698

0.9326

0.9996

0.0087

0.0065

8

0.5362

1.0269

1.0134

0.9995

0.0109

0.0068

9

0.5661

0.7767

0.8813

0.9997

0.0111

0.0081

Mean

0.5492

0.9135

0.9472

0.9996

0.0100

0.0072

Std

0.0442

0.2441

0.1276

0.0001

0.0011

0.0006

优化模型

为了改进我们每个模型的回归误差指标,我们可以使用 PyCaret 的 tune_model( ) 来查看我们可以做出的改进。

# Tuning ridge
ridge_params = {'alpha' : [0.02,0.024,0.025,0.025,0.026,0.03]}
tune_ridge = tune_model(ridge, n_iter=1000, optimize='RMSE',custom_grid = ridge_params)

MAE

MSE

RMSE

R2

RMSLE

MAPE

Fold

0

0.6455

1.2438

1.1153

0.9995

0.0108

0.0079

1

0.5131

0.6515

0.8072

0.9997

0.0094

0.0072

2

0.5559

0.8599

0.9273

0.9997

0.0107

0.0074

3

0.5645

1.1979

1.0945

0.9995

0.0104

0.0071

4

0.5961

1.2698

1.1269

0.9995

0.0113

0.0078

5

0.4975

0.5994

0.7742

0.9998

0.0081

0.0064

6

0.5089

0.6394

0.7996

0.9997

0.0092

0.0066

7

0.5078

0.8698

0.9326

0.9996

0.0087

0.0065

8

0.5362

1.0269

1.0134

0.9995

0.0109

0.0068

9

0.5661

0.7767

0.8813

0.9997

0.0111

0.0081

Mean

0.5492

0.9135

0.9472

0.9996

0.0100

0.0072

Std

0.0442

0.2441

0.1276

0.0001

0.0011

0.0006

MAE 指标值实现的改进

# Tuning Bayesian Ridge
tune_br = tune_model(br,n_iter=1000, optimize='RMSE')

MAE

MSE

RMSE

R2

RMSLE

MAPE

Fold

0

0.6455

1.2438

1.1153

0.9995

0.0108

0.0079

1

0.5131

0.6515

0.8072

0.9997

0.0094

0.0072

2

0.5559

0.8599

0.9273

0.9997

0.0107

0.0074

3

0.5645

1.1979

1.0945

0.9995

0.0104

0.0071

4

0.5961

1.2698

1.1269

0.9995

0.0113

0.0078

5

0.4975

0.5994

0.7742

0.9998

0.0081

0.0064

6

0.5088

0.6393

0.7996

0.9997

0.0092

0.0066

7

0.5077

0.8698

0.9326

0.9996

0.0087

0.0065

8

0.5362

1.0269

1.0134

0.9995

0.0109

0.0068

9

0.5661

0.7767

0.8813

0.9997

0.0111

0.0081

Mean

0.5491

0.9135

0.9472

0.9996

0.0100

0.0072

Std

0.0442

0.2441

0.1276

0.0001

0.0011

0.0006

MAE 指标值进行了改进

# Tuning Least Angle Regression 
tune_lar = tune_model(lar,n_iter=1000, optimize='RMSE')

MAE

MSE

RMSE

R2

RMSLE

MAPE

Fold

0

0.6455

1.2438

1.1153

0.9995

0.0108

0.0079

1

0.5131

0.6515

0.8072

0.9997

0.0094

0.0072

2

0.5559

0.8599

0.9273

0.9997

0.0107

0.0074

3

0.5645

1.1979

1.0945

0.9995

0.0104

0.0071

4

0.5961

1.2698

1.1269

0.9995

0.0113

0.0078

5

0.4975

0.5994

0.7742

0.9998

0.0081

0.0064

6

0.5089

0.6394

0.7996

0.9997

0.0092

0.0066

7

0.5078

0.8698

0.9326

0.9996

0.0087

0.0065

8

0.5362

1.0269

1.0134

0.9995

0.0109

0.0068

9

0.5661

0.7767

0.8813

0.9997

0.0111

0.0081

Mean

0.5492

0.9135

0.9472

0.9996

0.0100

0.0072

Std

0.0442

0.2441

0.1276

0.0001

0.0011

0.0006

可视化数据

PyCaret 的另一个重要功能是可以绘制相关图形以可视化有关我们模型的信息。

# Error plot
plot_model(tune_br, plot = 'error')

图片

png

BayesianRidge 的预测误差绘制了一个 R² 图形,显示了模型对数据的适应程度。R² 为 0.9999 表示我们的模型可以很好地适应 99.99% 的数据,这很好!

# Importance Feature Plot
plot_model(tune_br, plot = 'feature')

图片

png

特征重要性图帮助我们了解模型如何处理数据集的每个特征。例如,我们可以看到,对于我们的模型预测来说,最有用的特征是每个交易日协商的较低价格,而交易量和 30 个周期的简单移动平均线根本没有使用。

定型模型

# Finalizing model
final_br_model = finalize_model(tune_br)
# Predicting last 2 years
prediction = predict_model(final_br_model,data = aapl_predict)
prediction

Model

MAE

MSE

RMSE

R2

RMSLE

MAPE

0

Bayesian Ridge

1.1944

2.3733

1.5405

0.9971

0.0081

0.0064

Open

High

Low

Volume

SMA7

SMA30

Close

prediction_label

Date

2022-12-30 00:00:00-05:00

127.073708

128.597672

126.103905

77034200

129.380005

139.470001

128.577881

127.606610

2023-01-03 00:00:00-05:00

128.924225

129.537766

122.877815

112117500

127.910004

138.630005

123.768448

124.459987

2023-01-04 00:00:00-05:00

125.569519

127.321106

123.778358

89113600

127.080002

137.809998

125.045036

125.289650

2023-01-05 00:00:00-05:00

125.807014

126.440353

123.461685

80962700

126.110001

137.050003

123.718971

124.938037

2023-01-06 00:00:00-05:00

124.698677

128.934128

123.590332

87754700

126.050003

136.369995

128.271103

125.093709

...

...

...

...

...

...

...

...

...

2024-12-30 00:00:00-05:00

252.229996

253.500000

250.750000

35557500

254.940002

243.139999

252.199997

254.026220

2024-12-31 00:00:00-05:00

252.440002

253.279999

249.429993

39480700

255.029999

243.990005

250.419998

252.700273

2025-01-02 00:00:00-05:00

248.929993

249.100006

241.820007

55740700

253.509995

244.520004

243.850006

245.032614

2025-01-03 00:00:00-05:00

243.360001

244.179993

241.889999

40244100

251.809998

245.020004

243.360001

245.046563

2025-01-06 00:00:00-05:00

244.309998

247.330002

243.199997

45007100

249.919998

245.550003

245.000000

246.394365

506 rows × 8 columns

绘制 Apple 股票的收盘价和预测价格

对于每个日期,我们现在有 Open、High、Low、Close 、Volume、SMA7、SMA30 和 Label,它代表 AAPL 在数据帧中包含的每一天的预测收盘价。

fig = px.line(round(prediction,2), x = prediction.index, y = ['Close','prediction_label'],title = 'AAPL close price x predicted price from June 10th, 2020 to June 10th, 2022')
newnames = {'Close':'Closing Price', 'prediction_label': 'Predicted Price'}
fig.for_each_trace(lambda t: t.update(name = newnames[t.name],legendgroup = newnames[t.name],hovertemplate = t.hovertemplate.replace(t.name, newnames[t.name])))
fig.update_traces(line=dict(width=2.5))
fig.update_layout(autosize=False,width=1200,height=800,title='AAPL Closing Price X Predicted Price from June 10th, 2020 to June 10th, 2022',margin=dict(l=0, r=0, t=80, b=0),font=dict(size=14)
)
fig.show("png")

图片

png

Conclusion 结论

PyCaret 库提供了一种简单的方法来探索和测试机器学习的不同回归模型,并选择其中哪一个最适合所使用的数据集。

通过这项研究,有可能找到一个模型,它与我们的数据进行了很好的调整,并且能够高度准确地预测过去 2 年的收盘价,成功地表明了该时期 APPL 股票的走向。

参考

什么是线性回归?

[教程:了解 Python 中的回归误差指标](

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/66409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新一代智能工控系统网络安全合规解决方案

01.新一代智能工控系统概述 新一代智能工控系统是工业自动化的核心&#xff0c;它通过集成人工智能、工业大模型、物联网、5G等技术&#xff0c;实现生产过程的智能化管理和控制。这些系统具备实时监控、自动化优化、灵活调整等特点&#xff0c;能够提升生产效率、保证产品质量…

【简博士统计学习方法】第1章:1. 统计学习的定义与分类

自用笔记 1. 统计学习的定义与分类 1.1 统计学习的概念 统计学习&#xff08;Statistical Machine Learning&#xff09;是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科。 以计算机和网络为平台&#xff1b;以数据为研究对象&#xff1b;以…

PS 解析成ES流

最近做ps 解析&#xff0c;整理了一下&#xff1a; 解析如下&#xff1a; 这里理解为&#xff0c;后面会跟着pes头&#xff0c;在长度F00D-2-0A字节以后。

Android存储方案对比(SharedPreferences 、 MMKV 、 DataStore)

简介&#xff1a;本文介绍了Android开发中常用的键值对存储方案&#xff0c;包括SharedPreferences、MMKV和DataStore&#xff0c;并且对比了它们在性能、并发处理、易用性和稳定性上的特点。通过实际代码示例&#xff0c;帮助开发者根据项目需求选择最适合的存储方案&#xff…

基于 GEE Sentinel-1 数据集提取水体

目录 1 水体提取原理 2 完整代码 3 运行结果 1 水体提取原理 水体提取是地理信息和遥感技术的关键应用之一&#xff0c;对于多个领域都具有重要的应用价值。它有助于更好地管理水资源&#xff0c;保护环境&#xff0c;减少灾害风险&#xff0c;促进可持续发展&#xff0c;以…

w~自动驾驶~合集16

我自己的原文哦~ https://blog.51cto.com/whaosoft/12765612 #SIMPL 用于自动驾驶的简单高效的多智能体运动预测基准 原标题&#xff1a;SIMPL: A Simple and Efficient Multi-agent Motion Prediction Baseline for Autonomous Driving 论文链接&#xff1a;https://ar…

外驱功率管电流型PWM控制芯片CRE6281B1

CRE6281B1 是一款外驱功率管的高度集成的电流型PWM 控制 IC&#xff0c;为高性能、低待机功率、低成本、高效率的隔离型反激式开关电源控制器。在满载时&#xff0c;CRE6281B1工作在固定频率(65kHz)模式。在负载较低时&#xff0c;CRE6281B1采用节能模式&#xff0c;实现较高的…

亚信安全2025年第1期《勒索家族和勒索事件监控报告》

本周态势快速感知 本周全球共监测到勒索事件51起&#xff0c;本周勒索事件数量降至近一年来最低&#xff0c;需注意防范。从整体上看Ransomhub依旧是影响最严重的勒索家族&#xff1b;本周Acrusmedia和Safepay也是两个活动频繁的恶意家族&#xff0c;需要注意防范。本周&#…

linux网络 | http结尾、理解长连接短链接与cookie

前言&#xff1a;本节是http章节的最后一部分&#xff0c;主要解释一些小概念。讲解到了HTTP的方法&#xff0c;表单&#xff0c; 重定向等等。 现在废话不多说&#xff0c; 开始我们的学习吧。 ps&#xff1a;本节内容都是概念&#xff0c; 知道就行&#xff0c; 友友们放心观…

韩国机场WebGIS可视化集合Google遥感影像分析

目录 前言 一、相关基础数据介绍 1、韩国的机场信息 2、空间数据准备 二、Leaflet叠加Google地图 1、叠加google地图 2、空间点的标记及展示 3、韩国机场空间分布 三、相关成果展示 1、务安国际机场 2、有同类问题的机场 四、总结 前言 12月29日8时57分左右务安国际机…

基于Django的农业管理系统

一、系统背景与意义 随着信息技术的不断发展&#xff0c;农业生产也逐渐向智能化、信息化转型。基于Django的农业管理系统正是为了满足这一需求而设计的。该系统通过集成先进的信息技术&#xff0c;旨在提升农业生产效率&#xff0c;优化资源配置&#xff0c;减少人工干预&…

后台管理系统引导功能的实现

引导是软件中经常见到的一个功能&#xff0c;无论是在后台项目还是前台或者是移动端项目中。 那么对于引导页而言&#xff0c;它是如何实现的呢&#xff1f;通常情况下引导页是通过 聚焦 的方式&#xff0c;高亮一块视图&#xff0c;然后通过文字解释的形式来告知用户该功能的作…

Yolov8训练方式以及C#中读取yolov8+onnx模型进行目标检测.NET 6.0

目录 首先你要定义v8的模型特征文件 下方是完整的模型编写函数 然后你要在控件窗体中定义应用这些方法以及函数 一、定义你的标签 二、下方是定义模块和坐标的方法 三、画框 完整推理函数代码块 效果展示 完整源码 训练其实和yolov10差不多 因为v10就是在v8的基础上做了优…

C 语言奇幻之旅 - 第16篇:C 语言项目实战

目录 引言1. 项目规划1.1 需求分析与设计1.1.1 项目目标1.1.2 功能需求1.1.3 技术实现方案 2. 代码实现2.1 模块化编程2.1.1 学生信息模块2.1.2 成绩管理模块 2.2 调试与测试2.2.1 调试2.2.2 测试2.2.4 测试结果 3. 项目总结3.1 代码优化与重构3.1.1 代码优化3.1.2 代码重构 3.…

云安全博客阅读(二)

2024-05-30 Cloudflare acquires BastionZero to extend Zero Trust access to IT infrastructure IT 基础设施的零信任 不同于应用安全&#xff0c;基础设置的安全的防护紧急程度更高&#xff0c;基础设施的安全防护没有统一的方案IT基础设施安全的场景多样&#xff0c;如se…

06-RabbitMQ基础

目录 1.初识MQ 1.1.同步调用 1.2.异步调用 1.3.技术选型 2.RabbitMQ 2.1.安装 2.2.收发消息 2.2.1.交换机 2.2.2.队列 2.2.3.绑定关系 2.2.4.发送消息 2.3.数据隔离 2.3.1.用户管理 2.3.2.virtual host 3.SpringAMQP 3.1.导入Demo工程 3.2.快速入门 3.2.1.消…

【Linux系列】并发与顺序执行:在 Linux 脚本中的应用与选择

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【机器学习篇】 科技异次元的超强 “魔杖”,开启奇幻新程

一起开启这场旅行吧&#xff0c;关注博主&#xff0c;点赞支持不迷路&#xff0c;下面一同欣赏本篇的美妙吧&#xff01;&#xff01; &#xff01; 博主主页&#xff1a; 羑悻的小杀马特.-CSDN博客 在当今科技飞速发展的时代&#xff0c;机器学习宛如一把来自科技异次元的超强…

联发科MTK6771/MT6771安卓核心板规格参数介绍

MT6771&#xff0c;也被称为Helio P60&#xff0c;是联发科技(MediaTek)推出的一款中央处理器(CPU)芯片&#xff0c;可运行 android9.0 操作系统的 4G AI 安卓智能模块。MT6771芯片采用了12纳米工艺制造&#xff0c;拥有八个ARM Cortex-A73和Cortex-A53核心&#xff0c;主频分别…

ros2笔记-2.5.3 多线程与回调函数

本节体验下多线程。 python示例 在src/demo_python_pkg/demo_python_pkg/下新建文件&#xff0c;learn_thread.py import threading import requestsclass Download:def download(self,url,callback):print(f线程&#xff1a;{threading.get_ident()} 开始下载&#xff1a;{…