美文网首页
2019-11-27

2019-11-27

作者: 数据小黑升值记 | 来源:发表于2019-11-27 20:34 被阅读0次

Pandas 的 DataFrame 可以轻易转换为 NumPy 数组,所以事情就是这样的。

目前为止我们的代码:

import quandl, math
import numpy as np
import pandas as pd
from sklearn import preprocessing, cross_validation, svm
from sklearn.linear_model import LinearRegression

df = quandl.get("WIKI/GOOGL")

print(df.head())
#print(df.tail())

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']]
print(df.head())

forecast_col = 'Adj. Close'
df.fillna(value=-99999, inplace=True)
forecast_out = int(math.ceil(0.01 * len(df)))

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

我们之后要丢弃所有仍旧是 NaN 的信息。

df.dropna(inplace=True)

对于机器学习来说,通常要定义X(大写)作为特征,和y(小写)作为对于特征的标签。这样,我们可以定义我们的特征和标签,像这样:

X = np.array(df.drop(['label'], 1))
y = np.array(df['label'])

上面,我们所做的就是定义X(特征),是我们整个的 DataFrame,除了label列,并转换为 NumPy 数组。我们使用drop方法,可以用于 DataFrame,它返回一个新的 DataFrame。下面,我们定义我们的y变量,它是我们的标签,仅仅是 DataFrame 的标签列,并转换为 NumPy 数组。

现在我们就能告一段落,转向训练和测试了,但是我们打算做一些预处理。通常,你希望你的特征在 -1 到 1 的范围内。这可能不起作用,但是通常会加速处理过程,并有助于准确性。因为大家都使用这个范围,它包含在了 Sklearn 的preprocessing模块中。为了使用它,你需要对你的X变量调用preprocessing.scale

X = preprocessing.scale(X)

下面,创建标签y

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

现在就是训练和测试的时候了。方式就是选取 75% 的数据用于训练机器学习分类器。之后选取剩下的 25% 的数据用于测试分类器。由于这是你的样例数据,你应该拥有特征和一直标签。因此,如果你测试后 25% 的数据,你就会得到一种准确度和可靠性,叫做置信度。有许多方式可以实现它,但是,最好的方式可能就是使用内建的cross_validation,因为它也会为你打乱数据。代码是这样:

X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.2)

这里的返回值是特征的训练集、测试集、标签的训练集和测试集。现在,我们已经定义好了分类器。Sklearn 提供了许多通用的分类器,有一些可以用于回归。我们会在这个例子中展示一些,但是现在,让我们使用svm包中的支持向量回归。

clf = svm.SVR()

我们这里仅仅使用默认选项来使事情简单,但是你可以在sklearn.svm.SVR的文档中了解更多。

一旦你定义了分类器,你就可以训练它了。在 Sklearn 中,使用fit来训练。

clf.fit(X_train, y_train)

这里,我们拟合了我们的训练特征和训练标签。

我们的分类器现在训练完毕。这非常简单,现在我们可以测试了。

confidence = clf.score(X_test, y_test)

加载测试,之后:

print(confidence)
# 0.960075071072

所以这里,我们可以看到准确率几乎是 96%。没有什么可说的,让我们尝试另一个分类器,这一次使用LinearRegression

clf = LinearRegression()
# 0.963311624499

相关文章

  • 11月27日

    2019-11-27 毛雅亭 字数 633 · 阅读 5 2019-11-11 08:16 ...

  • Mr. L 的ScalersTalk第五轮《新概念》朗读持续力训

    2019-11-27, starting at 2019-10-11 新概念英语第二册 Lesson 48: Di...

  • 文先森的日常--剩15天

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

  • 2019-11-28

    2019-11-27 【日精进打卡第 613 天 【知~学习】 《六项精进》大纲 4 遍共 2308 遍 《大学》...

  • 《旅程》-闻禾学写诗

    《旅程》2019-11-27 站在你身后, 默默 等你回头 跟着你前行 心 向着你走! 跟在你身后 默默 等你回眸...

  • Snail的ScalersTalk第五轮新概念朗读持续力训练Da

    Day48 2019-11-27 • 标题:Snail的ScalersTalk第五轮新概念朗读持续力训练Day48...

  • 给你给我

    ——2019-11-27—— 原标题Aldo|写给你的》1710 1308怎可让wq轻易示人我可是付湘饭伢~王维家...

  • 愚公移山实录

    扎实学“愚公”,定能把“山”移 ——观周枫林老师2019-11-27 00:30 时间:2019年11月26日 授...

  • 沧海拾遗|bot集锦

    ——2019-11-27—— 2145泄私愤的代价》eg被当人质 有勇无谋一般都炮灰。 《希望的大地》看起来不比《...

  • 当下对React.js的再思考

    Time: 2019-11-27 之前在比赛中写前端工程时,使用了如下几个关键的技术点: redux,负责应用状态...

网友评论

      本文标题:2019-11-27

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