351 lines
76 KiB
Plaintext
351 lines
76 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Лабораторная работа 3\n",
|
|
"\n",
|
|
"Датасет - **Цены на кофе**\thttps://www.kaggle.com/datasets/mayankanand2701/starbucks-stock-price-dataset\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Бизнес-цели**: \n",
|
|
"1. Прогнозирование цены закрытия акции для поддержки принятия решений по инвестициям.\n",
|
|
"2. Оценка волатильности акций Starbucks для долгосрочных стратегий инвестирования."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Цели технического проекта**: \n",
|
|
"1. Создание модели машинного обучения для прогнозирования цены закрытия акций на основе исторических данных (дат, цен открытия, максимальных и минимальных цен, объёма торгов).\n",
|
|
"2. Разработка системы, которая вычисляет и анализирует волатильность на основе исторической ценовой информации и объёмов торгов."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 29,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Index(['Date', 'Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume'], dtype='object')\n",
|
|
"0 8212\n",
|
|
"1 8215\n",
|
|
"2 8216\n",
|
|
"3 8217\n",
|
|
"4 8218\n",
|
|
" ... \n",
|
|
"8031 19860\n",
|
|
"8032 19863\n",
|
|
"8033 19864\n",
|
|
"8034 19865\n",
|
|
"8035 19866\n",
|
|
"Name: Date_numeric, Length: 8036, dtype: int64\n",
|
|
"Index(['Date', 'Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume',\n",
|
|
" 'Date_numeric', 'Close_binned'],\n",
|
|
" dtype='object')\n",
|
|
"Обучающая выборка: (4821, 9)\n",
|
|
"Close\n",
|
|
"0.765625 16\n",
|
|
"0.835938 10\n",
|
|
"0.750000 10\n",
|
|
"0.882813 10\n",
|
|
"0.753906 9\n",
|
|
" ..\n",
|
|
"17.745001 1\n",
|
|
"4.757500 1\n",
|
|
"20.174999 1\n",
|
|
"94.080002 1\n",
|
|
"54.599998 1\n",
|
|
"Name: count, Length: 3663, dtype: int64\n",
|
|
"Контрольная выборка: (1607, 9)\n",
|
|
"Close\n",
|
|
"0.750000 9\n",
|
|
"0.773438 6\n",
|
|
"0.703125 6\n",
|
|
"0.765625 5\n",
|
|
"0.898438 4\n",
|
|
" ..\n",
|
|
"1.804688 1\n",
|
|
"0.656250 1\n",
|
|
"13.740000 1\n",
|
|
"27.799999 1\n",
|
|
"84.260002 1\n",
|
|
"Name: count, Length: 1421, dtype: int64\n",
|
|
"Тестовая выборка: (1607, 9)\n",
|
|
"Close\n",
|
|
"0.742188 6\n",
|
|
"0.789063 6\n",
|
|
"1.367188 5\n",
|
|
"0.750000 5\n",
|
|
"0.781250 5\n",
|
|
" ..\n",
|
|
"57.810001 1\n",
|
|
"111.239998 1\n",
|
|
"4.132813 1\n",
|
|
"38.915001 1\n",
|
|
"96.760002 1\n",
|
|
"Name: count, Length: 1425, dtype: int64\n",
|
|
"Обучающая выборка: (4821, 9)\n",
|
|
"Close_binned\n",
|
|
"High 1639\n",
|
|
"Low 1591\n",
|
|
"Medium 1591\n",
|
|
"Name: count, dtype: int64\n",
|
|
"Контрольная выборка: (1607, 9)\n",
|
|
"Close_binned\n",
|
|
"High 547\n",
|
|
"Low 530\n",
|
|
"Medium 530\n",
|
|
"Name: count, dtype: int64\n",
|
|
"Тестовая выборка: (1607, 9)\n",
|
|
"Close_binned\n",
|
|
"High 546\n",
|
|
"Medium 531\n",
|
|
"Low 530\n",
|
|
"Name: count, dtype: int64\n",
|
|
"Обучающая выборка после undersampling: (4773, 9)\n",
|
|
"Close\n",
|
|
"0.765625 16\n",
|
|
"0.835938 10\n",
|
|
"0.882813 10\n",
|
|
"0.750000 10\n",
|
|
"0.753906 9\n",
|
|
" ..\n",
|
|
"80.669998 1\n",
|
|
"57.799999 1\n",
|
|
"57.230000 1\n",
|
|
"85.169998 1\n",
|
|
"11.795000 1\n",
|
|
"Name: count, Length: 3630, dtype: int64\n",
|
|
"Open float64\n",
|
|
"High float64\n",
|
|
"Low float64\n",
|
|
"Adj Close float64\n",
|
|
"Volume float64\n",
|
|
"Date_numeric int64\n",
|
|
"Close_binned_Low bool\n",
|
|
"Close_binned_Medium bool\n",
|
|
"Close_binned_High bool\n",
|
|
"Volume_binned int64\n",
|
|
"Price_change float64\n",
|
|
"Volatility float64\n",
|
|
"dtype: object\n",
|
|
"Средняя абсолютная ошибка: 0.28906502132778844\n",
|
|
"Среднеквадратичная ошибка: 0.2722364217628283\n",
|
|
"время, затраченное на обучение модели: 0.016208171844482422. Время, затраченное на предсказание: 0.0012598037719726562\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"c:\\Python312\\Lib\\site-packages\\featuretools\\synthesis\\deep_feature_synthesis.py:169: UserWarning: Only one dataframe in entityset, changing max_depth to 1 since deeper features cannot be created\n",
|
|
" warnings.warn(\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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s2FkZMS873d7tex53lE2NjYoLi4Gx3HQ09OTOG80JyenwzHeREfqVF/V6aclll1/hg4diqVLl2L+/PkAgNOnT+ODDz5ATU1Nu08jIN0bPVInhJBuqKmpCbGxsUhOTkZJSQkEAgH09fXxySefwMrKStbTY6K1x91vg47UqW7atKldrxMIBEwTztu3b2PSpEmi78ePHw+BQID79+9j8ODBzOKQrosSTkII6WY4joObmxtSUlJgbW0NKysrcByH69ev44svvkBycjIOHTok62l22OrVq2U9BeZk1emnoaFB4nF9jx49mG3wIl0fJZyEENLNxMbGIiMjA6mpqRg7dqzYtbS0NEydOhXx8fGtninJQm1tbZu1hpGRkdDU1GQar76+Hn/99ReamprExocMGcI0jiw1V8fxdfQTx3H44osvoKioKBqrra2Fj4+P2NFIdCwSaQsVXhBCSDfz888/Y+XKlRLJJgCMGzcOAQEB2LdvH9OYTU1NWLNmDbS1taGqqoqbN28CAAIDA7F7927R62bMmCFxtuObKigogKOjI5SVlaGrqwt9fX3o6+tDT08P+vr6TGLIWnx8PKysrKCsrAxlZWUMGzYMe/bsYR7Hy8sLGhoa6NOnj+hr5syZGDRokNgYIW2hFU5CCOlmcnNz8f3337d53dXV9bU2p7THd999h7i4OHz//feYO3euaNzS0hLh4eHw9vZmGg94vgtfQUEBv/32m1QOfpe2jRs3IjAwEAsXLhSdNZqVlQUfHx/8/fffWLx4MbNYMTExzO5FuifapU4IId1Mz549UVpaCi0trVav379/H/r6+qirq2MW08jICJGRkXB2dhbbiZ6fn49Ro0bh0aNHzGI169WrF7Kzs2Fqasr83h3Baie+vr4+goODJUof4uLi8O2338qs3pOQ1tAjdUII6WYaGxuhoND2Ay55eXnmvbLv3bsn0fIReP6ona+NJ+bm5vj77795ufer1NbWtnmNVZ1qWVkZHBwcJMYdHByk2rudkPagR+qEENLNtLYBpCWWK5vNzM3NkZmZCV1dXbHxpKQk2NjYMI8HAOvXr8fy5csRGhoKKysriXM4e/fuzTReU1MT1q5di507d6KiogIFBQUwMDBAYGAg9PT0RGUDM2bMYBLPyMgIiYmJWLlypdh4QkIChg4dyiQGIaxQwkkIId2Ml5fXK1/Deod6UFAQ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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"from sklearn.model_selection import train_test_split\n",
|
|
"from imblearn.under_sampling import RandomUnderSampler\n",
|
|
"\n",
|
|
"df = pd.read_csv(\"data/Coffe.csv\")\n",
|
|
"print(df.columns)\n",
|
|
"\n",
|
|
"df['Date'] = pd.to_datetime(df['Date'])\n",
|
|
"df['Date_numeric'] = (df['Date'] - pd.Timestamp('1970-01-01')).dt.days\n",
|
|
"print(df['Date_numeric'])\n",
|
|
"\n",
|
|
"def split_stratified_into_train_val_test(\n",
|
|
" df_input,\n",
|
|
" stratify_colname=\"y\",\n",
|
|
" frac_train=0.6,\n",
|
|
" frac_val=0.15,\n",
|
|
" frac_test=0.25,\n",
|
|
" random_state=None,\n",
|
|
"):\n",
|
|
" if frac_train + frac_val + frac_test != 1.0:\n",
|
|
" raise ValueError(\n",
|
|
" \"fractions %f, %f, %f do not add up to 1.0\"\n",
|
|
" % (frac_train, frac_val, frac_test)\n",
|
|
" )\n",
|
|
"\n",
|
|
" if stratify_colname not in df_input.columns:\n",
|
|
" raise ValueError(\"%s is not a column in the dataframe\" % (stratify_colname))\n",
|
|
"\n",
|
|
" X = df_input \n",
|
|
" y = df_input[\n",
|
|
" [stratify_colname]\n",
|
|
" ] \n",
|
|
"\n",
|
|
" df_train, df_temp, y_train, y_temp = train_test_split(\n",
|
|
" X, y, stratify=y, test_size=(1.0 - frac_train), random_state=random_state\n",
|
|
" )\n",
|
|
"\n",
|
|
" relative_frac_test = frac_test / (frac_val + frac_test)\n",
|
|
" df_val, df_test, y_val, y_test = train_test_split(\n",
|
|
" df_temp,\n",
|
|
" y_temp,\n",
|
|
" stratify=y_temp,\n",
|
|
" test_size=relative_frac_test,\n",
|
|
" random_state=random_state,\n",
|
|
" )\n",
|
|
"\n",
|
|
" assert len(df_input) == len(df_train) + len(df_val) + len(df_test)\n",
|
|
"\n",
|
|
" return df_train, df_val, df_test\n",
|
|
"\n",
|
|
"bins = [df['Close'].min(), df['Close'].quantile(0.33), df['Close'].quantile(0.66), df['Close'].max()]\n",
|
|
"labels = ['Low', 'Medium', 'High']\n",
|
|
"df['Close_binned'] = pd.cut(df['Close'], bins=bins, labels=labels)\n",
|
|
"df = df.dropna()\n",
|
|
"# Now stratify using the binned values\n",
|
|
"df_train, df_val, df_test = split_stratified_into_train_val_test(\n",
|
|
" df, stratify_colname=\"Close_binned\", frac_train=0.60, frac_val=0.20, frac_test=0.20\n",
|
|
")\n",
|
|
"\n",
|
|
"print(df_train.columns) \n",
|
|
" \n",
|
|
"print(\"Обучающая выборка: \", df_train.shape)\n",
|
|
"print(df_train.Close.value_counts()) \n",
|
|
"\n",
|
|
"print(\"Контрольная выборка: \", df_val.shape)\n",
|
|
"print(df_val.Close.value_counts())\n",
|
|
"\n",
|
|
"print(\"Тестовая выборка: \", df_test.shape)\n",
|
|
"print(df_test.Close.value_counts())\n",
|
|
"\n",
|
|
"print(\"Обучающая выборка: \", df_train.shape)\n",
|
|
"print(df_train['Close_binned'].value_counts())\n",
|
|
"\n",
|
|
"print(\"Контрольная выборка: \", df_val.shape)\n",
|
|
"print(df_val['Close_binned'].value_counts())\n",
|
|
"\n",
|
|
"print(\"Тестовая выборка: \", df_test.shape)\n",
|
|
"print(df_test['Close_binned'].value_counts())\n",
|
|
"\n",
|
|
"rus = RandomUnderSampler(random_state=42)\n",
|
|
"X_resampled, y_resampled = rus.fit_resample(df_train, df_train[\"Close_binned\"])\n",
|
|
"df_train_rus = pd.DataFrame(X_resampled)\n",
|
|
"print(\"Обучающая выборка после undersampling: \", df_train_rus.shape)\n",
|
|
"print(df_train_rus.Close.value_counts())\n",
|
|
"\n",
|
|
"df_train = pd.get_dummies(df_train, columns=['Close_binned'])\n",
|
|
"\n",
|
|
"df_train['Volume_binned'] = pd.qcut(df_train['Volume'], q=4, labels=False)\n",
|
|
"\n",
|
|
"df_train['Price_change'] = df_train['Close'] - df_train['Open']\n",
|
|
"\n",
|
|
"from sklearn.preprocessing import StandardScaler\n",
|
|
"\n",
|
|
"scaler = StandardScaler()\n",
|
|
"df_train[['Open', 'Close', 'High', 'Low', 'Volume']] = scaler.fit_transform(df_train[['Open', 'Close', 'High', 'Low', 'Volume']])\n",
|
|
"\n",
|
|
"df_train['Volatility'] = df_train['High'] - df_train['Low']\n",
|
|
"\n",
|
|
"import featuretools as ft\n",
|
|
"\n",
|
|
"es = ft.EntitySet(id=\"stocks\")\n",
|
|
"es = es.add_dataframe(\n",
|
|
" dataframe_name=\"stock_data\", \n",
|
|
" dataframe=df_train, \n",
|
|
" index=\"Date\")\n",
|
|
"\n",
|
|
"feature_matrix, feature_defs = ft.dfs(\n",
|
|
" entityset=es, \n",
|
|
" target_dataframe_name=\"stock_data\")\n",
|
|
"\n",
|
|
"feature_defs\n",
|
|
"\n",
|
|
"# Оценка предсказательной способности\n",
|
|
"from sklearn.linear_model import LinearRegression\n",
|
|
"from sklearn.metrics import mean_absolute_error, mean_squared_error\n",
|
|
"df_train_regression = df_train.copy()\n",
|
|
"\n",
|
|
"X_train = df_train_regression.drop(['Close', 'Date'], axis=1)\n",
|
|
"y_train = df_train_regression['Close']\n",
|
|
"\n",
|
|
"X_test = df_test.drop(['Close', 'Date'], axis=1)\n",
|
|
"y_test = df_test['Close']\n",
|
|
"\n",
|
|
"X_train_encoded = pd.get_dummies(X_train, drop_first=True)\n",
|
|
"X_test_encoded = pd.get_dummies(X_test, drop_first=True)\n",
|
|
"\n",
|
|
"X_test_encoded = X_test_encoded.reindex(columns=X_train_encoded.columns, fill_value=0)\n",
|
|
"\n",
|
|
"print(X_train_encoded.dtypes)\n",
|
|
"\n",
|
|
"model = LinearRegression()\n",
|
|
"model.fit(X_train_encoded, y_train)\n",
|
|
"\n",
|
|
"predictions = model.predict(X_test_encoded)\n",
|
|
"\n",
|
|
"mae = mean_absolute_error(y_test, predictions)\n",
|
|
"mse = mean_squared_error(y_test, predictions)\n",
|
|
"print(\"Средняя абсолютная ошибка:\", mae)\n",
|
|
"print(\"Среднеквадратичная ошибка:\", mse)\n",
|
|
"\n",
|
|
"# Оценка скорости вычисления\n",
|
|
"import time\n",
|
|
"start_time = time.time()\n",
|
|
"model.fit(X_train_encoded, y_train)\n",
|
|
"training_time = time.time() - start_time\n",
|
|
"\n",
|
|
"start_time = time.time()\n",
|
|
"predictions = model.predict(X_test_encoded)\n",
|
|
"prediction_time = time.time() - start_time\n",
|
|
"\n",
|
|
"print(f'время, затраченное на обучение модели: {training_time}. Время, затраченное на предсказание: {prediction_time}')\n",
|
|
"\n",
|
|
"# Оценка корреляции\n",
|
|
"import seaborn as sns\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"corr_matrix = df_train_regression.corr()\n",
|
|
"sns.heatmap(corr_matrix, annot=False)\n",
|
|
"plt.show()\n"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.12.5"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|