{ "cells": [ { "cell_type": "raw", "metadata": {}, "source": [ "Задача 21 (лесные пожары)\n", "\n", "Датасет заменен на YearPredictionMSD\n", "\n", "Предсказание года выпуска аудиотрека. Features extracted from the 'timbre' features from The Echo Nest API. Выборка состоит из 90 признаков и 515345 объектов." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "column_names = ['year', *('average' + str(i) for i in range(12)), *('covariance' + str(i) for i in range(78))]\n", "data = pd.read_csv(\"YearPredictionMSD.txt\", sep = \",\", header=None, names = column_names)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
yearaverage0average1average2average3average4average5average6average7average8...covariance68covariance69covariance70covariance71covariance72covariance73covariance74covariance75covariance76covariance77
0200149.9435721.4711473.077508.74861-17.40628-13.09905-25.01202-12.232577.83089...13.01620-54.4054858.9936715.373441.11144-23.0879368.40795-1.82223-27.463482.26327
1200148.7321518.4293070.3267912.94636-10.32437-24.837778.76630-0.9201918.76548...5.66812-19.6807333.0496442.87836-9.90378-32.2278870.4938812.0494158.4345326.92061
2200150.9571431.8560255.8185113.41693-6.57898-18.54940-3.27872-2.3503516.07017...3.0380026.05866-50.9277910.93792-0.0756843.20130-115.00698-0.0585939.67068-0.66345
3200148.24750-1.8983736.297722.587760.97170-26.216835.05097-10.341243.55005...34.57337-171.70734-16.96705-46.67617-12.5151682.58061-72.089939.90558199.6297118.85382
4200150.9702042.2099867.099648.46791-15.85279-16.81409-12.48207-9.3763612.63699...9.92661-55.9572464.92712-17.72522-1.49237-7.5003551.766317.8871355.6692628.74903
\n", "

5 rows × 91 columns

\n", "
" ], "text/plain": [ " year average0 average1 average2 average3 average4 average5 average6 \\\n", "0 2001 49.94357 21.47114 73.07750 8.74861 -17.40628 -13.09905 -25.01202 \n", "1 2001 48.73215 18.42930 70.32679 12.94636 -10.32437 -24.83777 8.76630 \n", "2 2001 50.95714 31.85602 55.81851 13.41693 -6.57898 -18.54940 -3.27872 \n", "3 2001 48.24750 -1.89837 36.29772 2.58776 0.97170 -26.21683 5.05097 \n", "4 2001 50.97020 42.20998 67.09964 8.46791 -15.85279 -16.81409 -12.48207 \n", "\n", " average7 average8 ... covariance68 covariance69 covariance70 \\\n", "0 -12.23257 7.83089 ... 13.01620 -54.40548 58.99367 \n", "1 -0.92019 18.76548 ... 5.66812 -19.68073 33.04964 \n", "2 -2.35035 16.07017 ... 3.03800 26.05866 -50.92779 \n", "3 -10.34124 3.55005 ... 34.57337 -171.70734 -16.96705 \n", "4 -9.37636 12.63699 ... 9.92661 -55.95724 64.92712 \n", "\n", " covariance71 covariance72 covariance73 covariance74 covariance75 \\\n", "0 15.37344 1.11144 -23.08793 68.40795 -1.82223 \n", "1 42.87836 -9.90378 -32.22788 70.49388 12.04941 \n", "2 10.93792 -0.07568 43.20130 -115.00698 -0.05859 \n", "3 -46.67617 -12.51516 82.58061 -72.08993 9.90558 \n", "4 -17.72522 -1.49237 -7.50035 51.76631 7.88713 \n", "\n", " covariance76 covariance77 \n", "0 -27.46348 2.26327 \n", "1 58.43453 26.92061 \n", "2 39.67068 -0.66345 \n", "3 199.62971 18.85382 \n", "4 55.66926 28.74903 \n", "\n", "[5 rows x 91 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "You should respect the following train / test split:\n", "train: first 463,715 examples\n", "test: last 51,630 examples\n", "It avoids the 'producer effect' by making sure no song\n", "from a given artist ends up in both the train and test set." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(463715, 51630)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train = data.iloc[:463715, :]\n", "test = data.iloc[463715:, :]\n", "len(train), len(test)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "Для решения задачи предлагается использовать метод наименьших квадратов с регуляризацией" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "def get_ans(dataset):\n", " return dataset.iloc[:, [0]]\n", "\n", "def get_x(dataset):\n", " return dataset.iloc[:, 1:]\n", "\n", "from sklearn.utils import shuffle\n", "train, test = shuffle(train), shuffle(test)\n", "\n", "from sklearn import linear_model\n", "from sklearn.metrics import mean_squared_error, make_scorer, r2_score\n", "from sklearn import cross_validation\n", "from matplotlib import pyplot as plt" ] }, { "cell_type": "raw", "metadata": {}, "source": [ "Подберем параметр регуляризации" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[91.44714723040313,\n", " 91.44714738530332,\n", " 91.4471475402068,\n", " 91.44714769511359,\n", " 91.44714785002348,\n", " 91.44714800493679,\n", " 91.44714815985333,\n", " 91.44714831477303,\n", " 91.44714846969607,\n", " 91.44714862462236,\n", " 91.44714877955192,\n", " 91.44714893448469,\n", " 91.44714908942073,\n", " 91.44714924436006,\n", " 91.4471493993026]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "regularization_params = [i/10 for i in range(15)]\n", "scores = []\n", "for param in regularization_params:\n", " model = linear_model.Ridge(param)\n", " train_size, test_size = 20000, 5000\n", " model.fit(get_x(train[:train_size]), get_ans(train[:train_size]))\n", " md_ans = model.predict(get_x(test[:test_size]))\n", " scores.append(sqrt(mean_squared_error(get_ans(test[:test_size]), md_ans)))\n", "best_score = 10000\n", "best_param = -1\n", "for ind, param in enumerate(regularization_params):\n", " if best_score > scores[ind]:\n", " best_score = scores[ind]\n", " best_param = param\n", "assert(best_score < 10000)\n", "scores" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0.21055280965974632,\n", " 0.23094712536602469,\n", " 0.23591108708301778,\n", " 0.23863616852739278,\n", " 0.23649985107224847,\n", " 0.2347417736549744,\n", " 0.2339521853233253,\n", " 0.23213138094415853,\n", " 0.23059526427004318,\n", " 0.23199621638960566]" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scaling_params = [i/10 for i in range(1,11)]\n", "best_param = 0 #in order not to require previous cells to be run\n", "model = linear_model.Ridge(best_param)\n", "\n", "scores = []\n", "for scale in scaling_params:\n", " train_size = int(len(train) * scale)\n", " test_size = int(len(test) * scale)\n", " model.fit(get_x(train[:train_size]), get_ans(train[:train_size]))\n", " md_ans = model.predict(get_x(test[:test_size]))\n", " scores.append(r2_score(get_ans(test[:test_size]), md_ans))\n", "scores" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#from recommendations\n", "from matplotlib import pyplot as plt\n", "plt.rcParams['font.family'] = 'serif'\n", "plt.rcParams['font.serif'] = 'FreeSerif'\n", "plt.rcParams['lines.linewidth'] = 2\n", "plt.rcParams['lines.markersize'] = 12\n", "plt.rcParams['xtick.labelsize'] = 24\n", "plt.rcParams['ytick.labelsize'] = 24\n", "plt.rcParams['legend.fontsize'] = 16\n", "plt.rcParams['axes.titlesize'] = 36\n", "plt.rcParams['axes.labelsize'] = 24\n", "\n", "plt.figure(figsize=(9, 9))\n", "plt.plot(scaling_params, scores)\n", "plt.xlabel('fraction of dataset used')\n", "plt.ylabel('r2 score')\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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }