贪心科技机器学习训练营(四)

网友投稿 584 2022-05-28

先把来源写上

来源:贪心学院,https://www.zhihu.com/people/tan-xin-xue-yuan/activities

这次回归

之前写过关于平安股票的,竟然没想到是同一个案例

平安股票分析

说明下这个模型是没用的

import numpy as np # 数学计算 import pandas as pd # 数据处理, 读取 CSV 文件 (e.g. pd.read_csv) import matplotlib.pyplot as plt from datetime import datetime as dt

1

2

3

4

5

# 你可以使用如下的方法下载某一个公司的股票交易历史 # 000001 为平安银行 # 如果你还没有安装, 可以使用 pip install tushare 安装tushare python包 # import tushare as ts # df = ts.get_hist_data('000001') # print(df) # df.to_csv('000001.csv')

1

2

3

4

5

6

7

df = pd.read_csv('./000001.csv')

1

print(np.shape(df)) df.head()

1

贪心科技机器学习训练营(四)

2

(611, 14)

1

股票数据的特征

date:日期

open:开盘价

high:最高价

close:收盘价

low:最低价

volume:成交量

price_change:价格变动

p_change:涨跌幅

ma5:5日均价

ma10:10日均价

ma20:20日均价

v_ma5:5日均量

v_ma10:10日均量

v_ma20:20日均量

# 将每一个数据的键值的类型从字符串转为日期 df['date'] = pd.to_datetime(df['date']) df = df.set_index('date') # 按照时间升序排列 df.sort_values(by=['date'], inplace=True, ascending=True) df.tail()

1

2

3

4

5

6

7

# 检测是否有缺失数据 NaNs df.dropna(axis=0 , inplace=True) df.isna().sum()

1

2

3

4

open 0 high 0 close 0 low 0 volume 0 price_change 0 p_change 0 ma5 0 ma10 0 ma20 0 v_ma5 0 v_ma10 0 v_ma20 0 dtype: int64

1

2

3

4

5

6

7

8

9

10

11

12

13

14

K线图

Min_date = df.index.min() Max_date = df.index.max() print ("First date is",Min_date) print ("Last date is",Max_date) print (Max_date - Min_date)

1

2

3

4

5

First date is 2016-11-29 00:00:00 Last date is 2019-05-30 00:00:00 912 days 00:00:00

1

2

3

plotly画图

from plotly import tools from plotly.graph_objs import * from plotly.offline import init_notebook_mode, iplot, iplot_mpl init_notebook_mode() import plotly.plotly as py import plotly.graph_objs as go trace = go.Ohlc(x=df.index, open=df['open'], high=df['high'], low=df['low'], close=df['close']) data = [trace] iplot(data, filename='simple_ohlc')

1

2

3

4

5

6

7

8

9

10

from sklearn.linear_model import LinearRegression from sklearn import preprocessing # 创建新的列, 包含预测值, 根据当前的数据预测5天以后的收盘价 num = 5 # 预测5天后的情况 df['label'] = df['close'].shift(-num) # 预测值 print(df.shape) df.head(6)

1

2

3

4

5

6

7

8

# 丢弃 'label', 'price_change', 'p_change', 不需要它们做预测 Data = df.drop(['label', 'price_change', 'p_change'],axis=1) Data.tail()

1

2

3

X = Data.values # 0 到 1 X = preprocessing.scale(X) # 后面5个不要 X = X[:-num] df.dropna(inplace=True) Target = df.label y = Target.values print(np.shape(X), np.shape(y)) # (606, 11) (606,)

1

2

3

4

5

6

7

8

9

10

11

12

# 将数据分为训练数据和测试数据 X_train, y_train = X[0:550, :], y[0:550] X_test, y_test = X[550:, -51:], y[550:606] print(X_train.shape) print(y_train.shape) print(X_test.shape) print(y_test.shape) (550, 11) (550,) (56, 11) (56,)

1

2

3

4

5

6

7

8

9

10

11

12

lr = LinearRegression() lr.fit(X_train, y_train) lr.score(X_test, y_test) # 使用绝对系数 R^2 评估模型 # 0.04930040648385525 非常的垃圾,所以个人认为毫无意义

1

2

3

4

5

6

7

打广告,欢迎关注毛利学python

机器学习

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:FastDFS相关学习
下一篇:Volume
相关文章