Не упустите возможность увидеть сотни миллионов! 5 минут, чтобы научиться использовать прогноз Python акции цены

Предыдущая статья для запасов США данных из корреляционного анализа провела презентацию и демонстрацию коды, то мы будем в будущем сделать прогноз с историческими данными цен на американские акции.

Предвкушение складе Цена

6313830-5cefbdb87cce9bbf
Не упустите возможность увидеть сотни миллионов! 5 минут, чтобы научиться использовать прогноз Python акции цены

Предвкушение складе Цена

особенности проекта

Использование этих трех моделей машинного обучения для прогнозирования запаса:

Простой линейный анализ,

Квадратичные дискриминантного анализа (QDA)

К ближайшему соседу (КННЫ).

Во-первых, давайте напишем несколько функции: процент уровня и процент изменения.

dfreg = df.loc [: [ 'Adj Закрыть', 'Volume']]

dfreg [ 'HL_PCT'] = (ДФ [ 'High'] - ДФ [ 'Low']) / DF [ 'Close'] * 100,0

dfreg [ 'PCT_change'] = (ДФ [ 'Close'] - ДФ [ 'Open']) / DF [ 'Open'] * 100,0

6313830-228603b73eb884ed
Не упустите возможность увидеть сотни миллионов! 5 минут, чтобы научиться использовать прогноз Python акции цены

Конечный блок данных генерируется

Предварительная обработка и кросс-проверки

6313830-fb2d534a6f585595
Не упустите возможность увидеть сотни миллионов! 5 минут, чтобы научиться использовать прогноз Python акции цены

Сквозная сверка

Перед данных в прогнозной модели, следующие шаги будут использоваться для очистки и обработки данных:

1. Обработка пропущенные значения потери

2. В сегментации данных этикетки, предсказал целевой столбец AdjClose

3. Масштаб X, так что каждая из данных отвечают линейной регрессии распределения

4. Наконец определить обучающее множество X и X для модели генерации и оценок

5. Результат установлен быть предсказаны и тег идентифицирован как у

6. Обучение изолированного с помощью теста перекрестной проверки и разделения поезда испытания модели

Ну, шаг закончен. Код выглядит следующим образом:

Капля отсутствующее значение

dfreg.fillna (значение = -99999, Inplace = True)

Мы хотим выделить 1 процент данных для прогнозирования

forecast_out = INT (Math.ceil (0.01 * LEN (dfreg)))

Разделительный ярлык здесь, мы хотим предсказать AdjClose

forecast_col = 'Adj Закрыть'

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

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

Scale the X so that everyone can have the same distribution for linear regression

X = preprocessing.scale(X)

Finally We want to find Data Series of late X and early X (train) for model generation and evaluation

X_lately = X[-forecast_out:]

X = X[:-forecast_out]

Separate label and identify it as y

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

y = y[:-forecast_out]

模型生成 - 愉快的预测开始了

首先,导入Scikit-Learn:

from sklearn.linear_model import LinearRegression

from sklearn.neighbors import KNeighborsRegressor

from sklearn.linear_model import Ridge

from sklearn.preprocessing import PolynomialFeatures

from sklearn.pipeline import make_pipeline

简单线性分析和二次判别分析

简单线性分析显示两个或多个变量之间的线性关系。当我们在两个变量中绘制这种关系时,我们得到一条直线。二次判别分析与简单线性分析类似,只是模型允许多项式(例如:x平方)并产生曲线。

线性回归预测因变量(y)作为输出给出独立变量(x)作为输入。在绘图期间,这将给我们一条直线,如下所示:

6313830-4235d6ccbe74e6ef
不看错过好几亿!5分钟学会用Python预测美股价格

简单线性回归

下面通过使用Scikit-Learn库来训练模型。代码如下。

Linear regression

clfreg = LinearRegression(n_jobs=-1)

clfreg.fit(X_train, y_train)

Quadratic Regression 2

clfpoly2 = make_pipeline(PolynomialFeatures(2), Ridge())

clfpoly2.fit(X_train, y_train)

Quadratic Regression 3

clfpoly3 = make_pipeline(PolynomialFeatures(3), Ridge())

clfpoly3.fit(X_train, y_train)

K近邻(KNN)

该KNN使用特征相似性来预测数据点的值。这可确保分配的新点与数据集中的点类似。为了找出相似性,将选取点以得到最小距离(例如:欧几里德距离)。

6313830-303722c87a9fc3ce
不看错过好几亿!5分钟学会用Python预测美股价格

KNN模型可视化,您可以将被质疑的元素分组为k个元素

KNN Regression

clfknn = KNeighborsRegressor(n_neighbors=2)

clfknn.fit(X_train, y_train)

评估

6313830-934b433191f95507
不看错过好几亿!5分钟学会用Python预测美股价格

简单快速而有效的评估方法

一种简单快速而有效的评估方法是在每个训练模型中使用得分方法。得分方法使用测试数据集的y找到self.predict(X)的平均准确度。

confidencereg = clfreg.score(X_test, y_test)

confidencepoly2 = clfpoly2.score(X_test,y_test)

confidencepoly3 = clfpoly3.score(X_test,y_test)

confidenceknn = clfknn.score(X_test, y_test)

results

('The linear regression confidence is ', 0.96399641826551985)

('The quadratic regression 2 confidence is ', 0.96492624557970319)

('The quadratic regression 3 confidence is ', 0.9652082834532858)

('The knn regression confidence is ', 0.92844658034790639)

这显示了这些模型的大多数有着极高准确度分数(> 0.95)。然而,这并不意味着我们可以盲目套用,并交易股票。仍有许多问题需要注意,特别是对于不同价格轨迹不同的公司。

为了直观感觉,打印一些预测的股票预测结果。

forecast_set = clf.predict(X_lately)

dfreg['Forecast'] = np.nan

result

(array([ 115.44941187, 115.20206522, 116.78688393, 116.70244946,

116.58503739, 115.98769407, 116.54315699, 117.40012338,

117.21473053, 116.57244657, 116.048717 , 116.26444966,

115.78374093, 116.50647805, 117.92064806, 118.75581186,

118.82688731, 119.51873699]), 0.96234891774075604, 18)

预测可视化

使用现有的历史数据来预测未来的价格。这将有助于我们理解并掌握,可视化模型如何预测未来的股票定价。

last_date = dfreg.iloc [-1] .name

last_unix = last_date

next_unix = last_unix + datetime.timedelta (дни = 1)

для я в forecast_set:

next_date = next_unix

next_unix + = datetime.timedelta (дни = 1)

dfreg.loc [next_date] = [np.nan для _ в диапазоне (LEN (dfreg.columns) -1)] + [I]

dfreg [ 'Adj Закрыть']. Хвост (500) .plot ()

dfreg [ 'Прогноз']. Хвост (500) .plot ()

plt.legend (LOC = 4)

plt.xlabel ( 'Date')

plt.ylabel ( 'Цена')

plt.show ()

6313830-e4469f7db59637c8
Не упустите возможность увидеть сотни миллионов! 5 минут, чтобы научиться использовать прогноз Python акции цены

прогноз Stock визуализации

Вы можете увидеть синий показывает стоимость акций, основанную на регрессии. Прогноз цен в будущем будет менее продолжительным спад, а затем восстановить. Таким образом, вы можете покупать и продавать акции в период спада в период экономического подъема.

Воспроизводится в: https: //www.jianshu.com/p/0fd209702365

рекомендация

отblog.csdn.net/weixin_34055910/article/details/91264121