美文网首页
2019-12-21

2019-12-21

作者: 数据小黑升值记 | 来源:发表于2019-12-21 19:33 被阅读0次

虽然我们的机器学习分类器花费几秒来训练,在一些情况下,训练分类器需要几个小时甚至是几天。想象你想要预测价格的每天都需要这么做。这不是必要的,因为我们呢可以使用 Pickle 模块来保存分类器。首先确保你导入了它:

import pickle

使用 Pickle,你可以保存 Python 对象,就像我们的分类器那样。在定义、训练和测试你的分类器之后,添加:

with open('linearregression.pickle','wb') as f:
    pickle.dump(clf, f)

现在,再次执行脚本,你应该得到了linearregression.pickle,它是分类器的序列化数据。现在,你需要做的所有事情就是加载pickle文件,将其保存到clf,并照常使用,例如:

pickle_in = open('linearregression.pickle','rb')
clf = pickle.load(pickle_in)

代码中:

import Quandl, math
import numpy as np
import pandas as pd
from sklearn import preprocessing, cross_validation, svm
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
from matplotlib import style
import datetime
import pickle

style.use('ggplot')

df = Quandl.get("WIKI/GOOGL")
df = df[['Adj. Open',  'Adj. High',  'Adj. Low',  'Adj. Close', 'Adj. Volume']]
df['HL_PCT'] = (df['Adj. High'] - df['Adj. Low']) / df['Adj. Close'] * 100.0
df['PCT_change'] = (df['Adj. Close'] - df['Adj. Open']) / df['Adj. Open'] * 100.0

df = df[['Adj. Close', 'HL_PCT', 'PCT_change', 'Adj. Volume']]
forecast_col = 'Adj. Close'
df.fillna(value=-99999, inplace=True)
forecast_out = int(math.ceil(0.1 * len(df)))

df['label'] = df[forecast_col].shift(-forecast_out)

X = np.array(df.drop(['label'], 1))
X = preprocessing.scale(X)
X_lately = X[-forecast_out:]
X = X[:-forecast_out]

df.dropna(inplace=True)

y = np.array(df['label'])

X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.2)
#COMMENTED OUT:
##clf = svm.SVR(kernel='linear')
##clf.fit(X_train, y_train)
##confidence = clf.score(X_test, y_test)
##print(confidence)
pickle_in = open('linearregression.pickle','rb')
clf = pickle.load(pickle_in)


forecast_set = clf.predict(X_lately)
df['Forecast'] = np.nan

last_date = df.iloc[-1].name
last_unix = last_date.timestamp()
one_day = 86400
next_unix = last_unix + one_day

for i in forecast_set:
    next_date = datetime.datetime.fromtimestamp(next_unix)
    next_unix += 86400
    df.loc[next_date] = [np.nan for _ in range(len(df.columns)-1)]+[i]
df['Adj. Close'].plot()
df['Forecast'].plot()
plt.legend(loc=4)
plt.xlabel('Date')
plt.ylabel('Price')
plt.show()

要注意我们注释掉了分类器的原始定义,并替换为加载我们保存的分类器。就是这么简单。

最后,我们要讨论一下效率和保存时间,前几天我打算提出一个相对较低的范式,这就是临时的超级计算机。严肃地说,随着按需主机服务的兴起,例如 AWS、DO 和 Linode,你能够按照小时来购买主机。虚拟服务器可以在 60 秒内建立,所需的模块可以在 15 分钟内安装,所以非常有限。你可以写一个 shell 脚本或者什么东西来给它加速。考虑你需要大量的处理,并且还没有一台顶级计算机,或者你使用笔记本。没有问题,只需要启动一台服务器。

相关文章

  • 2019-12-21遗愿清单

    2019-12-21遗愿清单

  • 2019-12-21我爱你

    2019-12-21我爱你

  • 2019-12-21张思倩分享【每天进步一点点】 爱。

  • 2019-12-21晚间日记

    2019-12-21晚间总结 今天是什么日子 起床:6:00左右 就寝:昨晚12:00左右(可怜(๑ó﹏ò๑)……...

  • 文先森的日常--LP107天

    日精进打卡第468天 姓名:李文杰 (四爷); 公司:中国太平人寿; 日期:2019-12-21 【知~学习】 《...

  • 2019-12-22

    2019-12-21 【日精进打卡第 637 天 【知~学习】 《六项精进》大纲 4 遍共 2404 遍 《大学》...

  • 2019-12-30

    菜菜_d868 字数 223 · 阅读 1 2019-12-21 20:25 姓名:邢彩颜 公司:三亚蔚蓝时代实业...

  • 公益项目管理培训

    2019-12-21 这次培训学习到很多很专业,很系统的公益系统知识,期待能学习到更多的技能和知识

  • 周末作业

    ❤️焦点·智慧父母课堂【肖丹分享第177天·运动第167天·读书第17天~2019-12-21】 又是周末,写作业...

  • 精读  作为意志和表象的世界2019-12-21

    标签 精读 作为意志和表象的世界 2019-12-21 > 01 第56节 419-423 重新概述一下意志表出为...

网友评论

      本文标题:2019-12-21

      本文链接:https://www.haomeiwen.com/subject/kbognctx.html