596 lines
85 KiB
Plaintext
596 lines
85 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": 13,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" Date Open High Low Close Adj Close \\\n",
|
|
"0 1992-06-26 0.328125 0.347656 0.320313 0.335938 0.260703 \n",
|
|
"1 1992-06-29 0.339844 0.367188 0.332031 0.359375 0.278891 \n",
|
|
"2 1992-06-30 0.367188 0.371094 0.343750 0.347656 0.269797 \n",
|
|
"3 1992-07-01 0.351563 0.359375 0.339844 0.355469 0.275860 \n",
|
|
"4 1992-07-02 0.359375 0.359375 0.347656 0.355469 0.275860 \n",
|
|
"... ... ... ... ... ... ... \n",
|
|
"8031 2024-05-17 75.269997 78.000000 74.919998 77.849998 77.849998 \n",
|
|
"8032 2024-05-20 77.680000 78.320000 76.709999 77.540001 77.540001 \n",
|
|
"8033 2024-05-21 77.559998 78.220001 77.500000 77.720001 77.720001 \n",
|
|
"8034 2024-05-22 77.699997 81.019997 77.440002 80.720001 80.720001 \n",
|
|
"8035 2024-05-23 80.099998 80.699997 79.169998 79.260002 79.260002 \n",
|
|
"\n",
|
|
" Volume \n",
|
|
"0 224358400 \n",
|
|
"1 58732800 \n",
|
|
"2 34777600 \n",
|
|
"3 18316800 \n",
|
|
"4 13996800 \n",
|
|
"... ... \n",
|
|
"8031 14436500 \n",
|
|
"8032 11183800 \n",
|
|
"8033 8916600 \n",
|
|
"8034 22063400 \n",
|
|
"8035 4651418 \n",
|
|
"\n",
|
|
"[8036 rows x 7 columns]\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"
|
|
]
|
|
}
|
|
],
|
|
"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)\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'])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Index(['Date', 'Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume',\n",
|
|
" 'Date_numeric', 'Close_binned'],\n",
|
|
" dtype='object')\n",
|
|
"Обучающая выборка: (4821, 9)\n",
|
|
"Close\n",
|
|
"0.750000 17\n",
|
|
"0.765625 15\n",
|
|
"0.882813 11\n",
|
|
"0.753906 9\n",
|
|
"0.773438 9\n",
|
|
" ..\n",
|
|
"7.760000 1\n",
|
|
"88.459999 1\n",
|
|
"104.330002 1\n",
|
|
"10.850000 1\n",
|
|
"100.930000 1\n",
|
|
"Name: count, Length: 3690, dtype: int64\n",
|
|
"Контрольная выборка: (1607, 9)\n",
|
|
"Close\n",
|
|
"0.835938 6\n",
|
|
"0.781250 5\n",
|
|
"0.757813 5\n",
|
|
"1.851563 4\n",
|
|
"0.738281 4\n",
|
|
" ..\n",
|
|
"100.620003 1\n",
|
|
"6.020000 1\n",
|
|
"85.959999 1\n",
|
|
"91.529999 1\n",
|
|
"111.000000 1\n",
|
|
"Name: count, Length: 1436, dtype: int64\n",
|
|
"Тестовая выборка: (1607, 9)\n",
|
|
"Close\n",
|
|
"0.703125 6\n",
|
|
"0.851563 6\n",
|
|
"0.750000 6\n",
|
|
"0.742188 5\n",
|
|
"0.781250 5\n",
|
|
" ..\n",
|
|
"47.275002 1\n",
|
|
"31.760000 1\n",
|
|
"75.500000 1\n",
|
|
"2.406250 1\n",
|
|
"8.107500 1\n",
|
|
"Name: count, Length: 1427, 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 546\n",
|
|
"Medium 531\n",
|
|
"Low 530\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"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"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"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Обучающая выборка после undersampling: (4773, 9)\n",
|
|
"Close\n",
|
|
"0.750000 17\n",
|
|
"0.765625 15\n",
|
|
"0.882813 11\n",
|
|
"0.773438 9\n",
|
|
"0.753906 9\n",
|
|
" ..\n",
|
|
"58.810001 1\n",
|
|
"40.535000 1\n",
|
|
"91.860001 1\n",
|
|
"90.779999 1\n",
|
|
"96.970001 1\n",
|
|
"Name: count, Length: 3651, dtype: int64\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"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())"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" Date Open High Low Close Adj Close \\\n",
|
|
"75 1992-10-13 0.464844 0.472656 0.457031 0.472656 0.366803 \n",
|
|
"7819 2023-07-17 100.830002 101.809998 100.040001 100.930000 98.501541 \n",
|
|
"6447 2018-01-31 57.230000 57.450001 56.700001 56.810001 49.579262 \n",
|
|
"706 1995-04-12 0.769531 0.789063 0.769531 0.785156 0.609317 \n",
|
|
"4437 2010-02-05 10.895000 11.020000 10.630000 10.850000 8.420099 \n",
|
|
"... ... ... ... ... ... ... \n",
|
|
"4113 2008-10-22 5.120000 5.245000 4.880000 4.995000 3.876349 \n",
|
|
"4544 2010-07-12 12.635000 12.760000 12.490000 12.635000 9.845955 \n",
|
|
"6517 2018-05-11 57.720001 57.860001 57.070000 57.270000 50.514595 \n",
|
|
"3336 2005-09-21 11.642500 11.775000 11.530000 11.667500 9.054512 \n",
|
|
"3122 2004-11-15 13.797500 13.860000 13.687500 13.790000 10.701671 \n",
|
|
"\n",
|
|
" Volume Date_numeric Close_binned_Low Close_binned_Medium \\\n",
|
|
"75 4390400 8321 True False \n",
|
|
"7819 5244500 19555 False False \n",
|
|
"6447 13118400 17562 False False \n",
|
|
"706 10294400 9232 True False \n",
|
|
"4437 22069800 14645 False True \n",
|
|
"... ... ... ... ... \n",
|
|
"4113 29681400 14174 True False \n",
|
|
"4544 12906200 14802 False True \n",
|
|
"6517 5843400 17662 False False \n",
|
|
"3336 16207600 13047 False True \n",
|
|
"3122 10700400 12737 False True \n",
|
|
"\n",
|
|
" Close_binned_High Volume_binned Price_change \n",
|
|
"75 False 0 0.007812 \n",
|
|
"7819 True 0 0.099998 \n",
|
|
"6447 True 2 -0.419999 \n",
|
|
"706 False 1 0.015625 \n",
|
|
"4437 False 3 -0.045000 \n",
|
|
"... ... ... ... \n",
|
|
"4113 False 3 -0.125000 \n",
|
|
"4544 False 2 0.000000 \n",
|
|
"6517 True 0 -0.450001 \n",
|
|
"3336 False 2 0.025000 \n",
|
|
"3122 False 1 -0.007500 \n",
|
|
"\n",
|
|
"[4821 rows x 13 columns]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"df_train = pd.get_dummies(df_train, columns=['Close_binned'])\n",
|
|
"df_train['Volume_binned'] = pd.qcut(df_train['Volume'], q=4, labels=False)\n",
|
|
"df_train['Price_change'] = df_train['Close'] - df_train['Open']\n",
|
|
"print(df_train) "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" Date Open High Low Close Adj Close Volume \\\n",
|
|
"75 1992-10-13 -0.881061 -0.882121 -0.880250 -0.881109 0.366803 -0.731159 \n",
|
|
"7819 2023-07-17 2.093371 2.095750 2.098759 2.096893 98.501541 -0.670368 \n",
|
|
"6447 2018-01-31 0.801237 0.792199 0.802249 0.788980 49.579262 -0.109940 \n",
|
|
"706 1995-04-12 -0.872031 -0.872824 -0.870902 -0.871845 0.609317 -0.310940 \n",
|
|
"4437 2010-02-05 -0.571952 -0.572180 -0.575927 -0.573479 8.420099 0.527179 \n",
|
|
"... ... ... ... ... ... ... ... \n",
|
|
"4113 2008-10-22 -0.743100 -0.741883 -0.747938 -0.747047 3.876349 1.068937 \n",
|
|
"4544 2010-07-12 -0.520385 -0.521049 -0.520286 -0.520563 9.845955 -0.125044 \n",
|
|
"6517 2018-05-11 0.815758 0.804247 0.813318 0.802616 50.514595 -0.627741 \n",
|
|
"3336 2005-09-21 -0.549799 -0.549994 -0.549004 -0.549244 9.054512 0.109935 \n",
|
|
"3122 2004-11-15 -0.485933 -0.488725 -0.484463 -0.486324 10.701671 -0.282042 \n",
|
|
"\n",
|
|
" Date_numeric Close_binned_Low Close_binned_Medium Close_binned_High \\\n",
|
|
"75 8321 True False False \n",
|
|
"7819 19555 False False True \n",
|
|
"6447 17562 False False True \n",
|
|
"706 9232 True False False \n",
|
|
"4437 14645 False True False \n",
|
|
"... ... ... ... ... \n",
|
|
"4113 14174 True False False \n",
|
|
"4544 14802 False True False \n",
|
|
"6517 17662 False False True \n",
|
|
"3336 13047 False True False \n",
|
|
"3122 12737 False True False \n",
|
|
"\n",
|
|
" Volume_binned Price_change Volatility \n",
|
|
"75 0 0.007812 -0.001871 \n",
|
|
"7819 0 0.099998 -0.003009 \n",
|
|
"6447 2 -0.419999 -0.010050 \n",
|
|
"706 1 0.015625 -0.001922 \n",
|
|
"4437 3 -0.045000 0.003747 \n",
|
|
"... ... ... ... \n",
|
|
"4113 3 -0.125000 0.006055 \n",
|
|
"4544 2 0.000000 -0.000763 \n",
|
|
"6517 0 -0.450001 -0.009070 \n",
|
|
"3336 2 0.025000 -0.000990 \n",
|
|
"3122 1 -0.007500 -0.004262 \n",
|
|
"\n",
|
|
"[4821 rows x 14 columns]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"from sklearn.preprocessing import StandardScaler\n",
|
|
"\n",
|
|
"scaler = StandardScaler()\n",
|
|
"df_train[['Open', 'Close', 'High', 'Low', 'Volume']] = scaler.fit_transform(\n",
|
|
" df_train[['Open', 'Close', 'High', 'Low', 'Volume']])\n",
|
|
"df_train['Volatility'] = df_train['High'] - df_train['Low']\n",
|
|
"print(df_train) "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"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": {
|
|
"text/plain": [
|
|
"[<Feature: Open>,\n",
|
|
" <Feature: High>,\n",
|
|
" <Feature: Low>,\n",
|
|
" <Feature: Close>,\n",
|
|
" <Feature: Adj Close>,\n",
|
|
" <Feature: Volume>,\n",
|
|
" <Feature: Date_numeric>,\n",
|
|
" <Feature: Close_binned_Low>,\n",
|
|
" <Feature: Close_binned_Medium>,\n",
|
|
" <Feature: Close_binned_High>,\n",
|
|
" <Feature: Volume_binned>,\n",
|
|
" <Feature: Price_change>,\n",
|
|
" <Feature: Volatility>,\n",
|
|
" <Feature: DAY(Date)>,\n",
|
|
" <Feature: MONTH(Date)>,\n",
|
|
" <Feature: WEEKDAY(Date)>,\n",
|
|
" <Feature: YEAR(Date)>]"
|
|
]
|
|
},
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"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"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"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"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Оценка предсказательной способности\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",
|
|
"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)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Средняя абсолютная ошибка: 0.28573230577357767\n",
|
|
"Среднеквадратичная ошибка: 0.2813734754209575\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"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)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"время, затраченное на обучение модели: 0.025032997131347656. Время, затраченное на предсказание: 0.0\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Оценка скорости вычисления\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}')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 2 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Оценка корреляции\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()"
|
|
]
|
|
}
|
|
],
|
|
"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
|
|
}
|