Машинное обучение

Введение/Обзор

Многочисленные люди пытались предсказать акции, и многие из них добились успеха. Однако все они начинаются с одного вопроса: «Как вы это делаете?» Позвольте мне объяснить, как я это сделал.

Я нашел набор данных, отображающий курс акций Apple за 40 лет (1980–2023 гг.). С помощью этих данных мне было любопытно, смогу ли я предсказать цену акций Apple на следующий день. Приведя это в действие, я решил использовать логистическую регрессию, чтобы предсказать эту цену. Благодаря обучению и тестированию предоставленных данных мои результаты привели меня к точности около 70%.

Источники и статистика

Сначала я импортировал это:

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt

Затем компьютер считывал и печатал данные.

data = pd.read_csv(’./AAPL_withPrediction.csv’)
print(data)
data.describe()

В приведенной выше таблице показаны первые несколько строк данных.

В дополнение к другим столбцам я создал отдельный столбец «Прогноз» и писал -1 или +1, если цена пошла вниз или вверх по сравнению с предыдущим днем. Затем я включил этот столбец в свой обучающий набор, чтобы он мог узнать, что при тех или иных обстоятельствах цена будет увеличиваться или уменьшаться.

Обучение и тестирование

В моем общем наборе данных были строки от 0 до 10000, но я использовал только строки 7000–9000, потому что на графике выше видно, что строки 0–7000 представляют собой плоскую линию, поэтому было бы спорно помещать ее в мой тренировочный набор. Строки 7000–9000 будут моими обучающими 80%, а 9000–10000 — моими проверочными 20%.

Код:

train_data = data[7000:9000]

Код:

test_data = data[9000:10000]

Код

x_train_p = train_data[[’Open’,’High’,’Low’,’Close’,’Adj Close’,’
    Volume’]]
y_train = train_data[’Prediction’]
# Scale data : Normalize
scaler = StandardScaler()
x_train = scaler.fit_transform(x_train_p)
# Regression
model = LogisticRegression()
model.fit(x_train,y_train)
# Test the model
x_test_p = test_data[[’Open’,’High’,’Low’,’Close’,’Adj Close’,’
    Volume’]]
y_test = test_data[’Prediction’]

x_test = scaler.fit_transform(x_test_p)

predictions = model.predict(x_test)
print(predictions)

Мне пришлось нормализовать свои данные, потому что их шкалы были не в одном масштабе, например, цена закрытия и объем. Цена закрытия в 1980-х, например, составляла 0,12 доллара, и в тот день Apple продала (в объеме) 469033600 акций. Это непристойное несоответствие между этими двумя, поэтому я нормализовал числа, чтобы они могли быть на одном уровне друг с другом.

Затем логистическая регрессия использовалась при обучении данных 7000–9000 с целью увидеть, может ли она предсказать рост или снижение цены акций на следующий день, а затем я проверил ее на данных 9000–10000.

Результат прогноза

После тестирования 9000–10000 результаты показали точность прогноза 72%.

На графике отображается мой прогноз (красный) и фактический результат на следующий день в зависимости от того, увеличился он или нет (синий). Как видите, моя программа правильно предсказала, выросла или упала цена акции.

Заключение

Узнав о Python, он помог мне объединить мои знания и скомпилировать их вместе, чтобы создать работающий алгоритм, который может прогнозировать цену акций Apple на следующий день. Есть много и более эффективных способов предсказать цену акций, и я надеюсь узнать больше об этих многочисленных способах.