关于机器学习的三个阶段
567
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小时内删除侵权内容。