Skip to content

Instantly share code, notes, and snippets.

@QuantumDamage
Last active October 22, 2018 09:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save QuantumDamage/0c265eaf044cf9a35e2f246c9b993ff0 to your computer and use it in GitHub Desktop.
Save QuantumDamage/0c265eaf044cf9a35e2f246c9b993ff0 to your computer and use it in GitHub Desktop.
Nieco więcej o pozbywaniu się niepotrzebnych danych
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "import pandas as pd\nimport pandas_profiling\n\nimport numpy as np\n\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.ensemble import RandomForestRegressor\nfrom sklearn.metrics import mean_squared_error\n\nimport matplotlib.pyplot as plt",
"execution_count": 1,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "%matplotlib inline",
"execution_count": 2,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "# https://www.kaggle.com/dansbecker/new-york-city-taxi-fare-prediction\ntaxi_data = pd.read_csv(\"../input/taxi.zip\")",
"execution_count": 3,
"outputs": []
},
{
"metadata": {
"scrolled": false,
"trusted": true
},
"cell_type": "code",
"source": "#Fragment kodu 1\ntaxi_data[\"pickup_datetime\"] = pd.to_datetime(taxi_data[\"pickup_datetime\"])\n\ntaxi_data[\"pickup_year\"] = taxi_data[\"pickup_datetime\"].dt.year\ntaxi_data[\"pickup_month\"] = taxi_data[\"pickup_datetime\"].dt.month\ntaxi_data[\"pickup_day\"] = taxi_data[\"pickup_datetime\"].dt.day\ntaxi_data[\"pickup_hour\"] = taxi_data[\"pickup_datetime\"].dt.hour\ntaxi_data[\"pickup_minute\"] = taxi_data[\"pickup_datetime\"].dt.minute\ntaxi_data[\"pickup_second\"] = taxi_data[\"pickup_datetime\"].dt.second\ntaxi_data[\"pickup_dayofweek\"] = taxi_data[\"pickup_datetime\"].dt.dayofweek\n\ntaxi_data.drop([\"key\", \"pickup_datetime\"], axis = 1, inplace = True)",
"execution_count": 4,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "#Fragment kodu 2\ntaxi_data[\"longitude_diff\"] = abs(taxi_data[\"pickup_longitude\"] - taxi_data[\"dropoff_longitude\"])\ntaxi_data[\"latitude_diff\"] = abs(taxi_data[\"pickup_latitude\"] - taxi_data[\"dropoff_latitude\"])",
"execution_count": 5,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "#fragment kodu 3\ntaxi_data[\"euclidean_dist\"] = np.sqrt((taxi_data[\"pickup_longitude\"] - taxi_data[\"dropoff_longitude\"])**2 + \n (taxi_data[\"pickup_latitude\"] - taxi_data[\"dropoff_latitude\"])**2)\ntaxi_data[\"taxicab_dist\"] = taxi_data[\"longitude_diff\"] + taxi_data[\"latitude_diff\"]",
"execution_count": 6,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "y = taxi_data[\"fare_amount\"]\nX = taxi_data.drop([\"fare_amount\"], axis=1)",
"execution_count": 7,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 42)",
"execution_count": 8,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "X_train.shape, y_train.shape, X_test.shape, y_test.shape",
"execution_count": 9,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 9,
"data": {
"text/plain": "((37500, 16), (37500,), (12500, 16), (12500,))"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "forest = RandomForestRegressor(random_state = 42, n_estimators = 100)",
"execution_count": 10,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "#fragment kodu 4\ndeleted_columns = []\nresults = pd.DataFrame()\nfor number_of_removed in range(len(X_train.columns)):\n print(\"Ilość usuniętych kolumn: {}\".format(number_of_removed))\n \n execution_time = %timeit -o forest.fit(X = X_train, y = y_train)\n mse = mean_squared_error(y_true = y_test, y_pred = forest.predict(X_test))\n results = results.append({\"average_time\":execution_time.average, \"mse\":mse}, ignore_index = True)\n print(\"mse: {}\".format(mse))\n\n print(\"Usunięte kolumny: {}\".format(deleted_columns))\n print()\n \n worst_feature_id = np.where(forest.feature_importances_ == min(forest.feature_importances_))[0].item()\n worst_feature = X_train.columns[worst_feature_id]\n\n deleted_columns.append(worst_feature)\n \n X_train = X_train.drop([worst_feature], axis=1)\n X_test = X_test.drop([worst_feature], axis=1)",
"execution_count": 11,
"outputs": [
{
"output_type": "stream",
"text": "Ilość usuniętych kolumn: 0\n1min 23s ± 3.82 s per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 23.315867370945597\nUsunięte kolumny: []\n\nIlość usuniętych kolumn: 1\n1min 27s ± 1.84 s per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 23.5637732430968\nUsunięte kolumny: ['passenger_count']\n\nIlość usuniętych kolumn: 2\n1min 25s ± 457 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 23.380113638452\nUsunięte kolumny: ['passenger_count', 'pickup_second']\n\nIlość usuniętych kolumn: 3\n1min 21s ± 1.18 s per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 23.454258142500798\nUsunięte kolumny: ['passenger_count', 'pickup_second', 'pickup_dayofweek']\n\nIlość usuniętych kolumn: 4\n1min 19s ± 766 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 23.596762075576\nUsunięte kolumny: ['passenger_count', 'pickup_second', 'pickup_dayofweek', 'pickup_month']\n\nIlość usuniętych kolumn: 5\n1min 16s ± 1.01 s per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 23.64252273597007\nUsunięte kolumny: ['passenger_count', 'pickup_second', 'pickup_dayofweek', 'pickup_month', 'pickup_day']\n\nIlość usuniętych kolumn: 6\n1min 9s ± 1.33 s per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 23.564988380977802\nUsunięte kolumny: ['passenger_count', 'pickup_second', 'pickup_dayofweek', 'pickup_month', 'pickup_day', 'latitude_diff']\n\nIlość usuniętych kolumn: 7\n1min ± 552 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 23.692008928791726\nUsunięte kolumny: ['passenger_count', 'pickup_second', 'pickup_dayofweek', 'pickup_month', 'pickup_day', 'latitude_diff', 'pickup_latitude']\n\nIlość usuniętych kolumn: 8\n57.4 s ± 737 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 24.39479824926798\nUsunięte kolumny: ['passenger_count', 'pickup_second', 'pickup_dayofweek', 'pickup_month', 'pickup_day', 'latitude_diff', 'pickup_latitude', 'pickup_hour']\n\nIlość usuniętych kolumn: 9\n52.7 s ± 669 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 23.716893928228608\nUsunięte kolumny: ['passenger_count', 'pickup_second', 'pickup_dayofweek', 'pickup_month', 'pickup_day', 'latitude_diff', 'pickup_latitude', 'pickup_hour', 'pickup_minute']\n\nIlość usuniętych kolumn: 10\n52.5 s ± 673 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 25.74024618008069\nUsunięte kolumny: ['passenger_count', 'pickup_second', 'pickup_dayofweek', 'pickup_month', 'pickup_day', 'latitude_diff', 'pickup_latitude', 'pickup_hour', 'pickup_minute', 'pickup_year']\n\nIlość usuniętych kolumn: 11\n45.3 s ± 799 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 25.86314392786474\nUsunięte kolumny: ['passenger_count', 'pickup_second', 'pickup_dayofweek', 'pickup_month', 'pickup_day', 'latitude_diff', 'pickup_latitude', 'pickup_hour', 'pickup_minute', 'pickup_year', 'pickup_longitude']\n\nIlość usuniętych kolumn: 12\n36.6 s ± 819 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 26.503427444430283\nUsunięte kolumny: ['passenger_count', 'pickup_second', 'pickup_dayofweek', 'pickup_month', 'pickup_day', 'latitude_diff', 'pickup_latitude', 'pickup_hour', 'pickup_minute', 'pickup_year', 'pickup_longitude', 'longitude_diff']\n\nIlość usuniętych kolumn: 13\n28.8 s ± 975 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 28.68273499722724\nUsunięte kolumny: ['passenger_count', 'pickup_second', 'pickup_dayofweek', 'pickup_month', 'pickup_day', 'latitude_diff', 'pickup_latitude', 'pickup_hour', 'pickup_minute', 'pickup_year', 'pickup_longitude', 'longitude_diff', 'dropoff_latitude']\n\nIlość usuniętych kolumn: 14\n21.5 s ± 600 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 29.56373996042038\nUsunięte kolumny: ['passenger_count', 'pickup_second', 'pickup_dayofweek', 'pickup_month', 'pickup_day', 'latitude_diff', 'pickup_latitude', 'pickup_hour', 'pickup_minute', 'pickup_year', 'pickup_longitude', 'longitude_diff', 'dropoff_latitude', 'taxicab_dist']\n\nIlość usuniętych kolumn: 15\n13.9 s ± 455 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\nmse: 37.26427823666038\nUsunięte kolumny: ['passenger_count', 'pickup_second', 'pickup_dayofweek', 'pickup_month', 'pickup_day', 'latitude_diff', 'pickup_latitude', 'pickup_hour', 'pickup_minute', 'pickup_year', 'pickup_longitude', 'longitude_diff', 'dropoff_latitude', 'taxicab_dist', 'dropoff_longitude']\n\n",
"name": "stdout"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "results",
"execution_count": 12,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 12,
"data": {
"text/plain": " average_time mse\n0 83.989214 23.315867\n1 87.754297 23.563773\n2 85.606926 23.380114\n3 81.797035 23.454258\n4 79.499043 23.596762\n5 76.481952 23.642523\n6 69.301743 23.564988\n7 60.799570 23.692009\n8 57.376778 24.394798\n9 52.738214 23.716894\n10 52.520648 25.740246\n11 45.313237 25.863144\n12 36.597840 26.503427\n13 28.794015 28.682735\n14 21.534311 29.563740\n15 13.941729 37.264278",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>average_time</th>\n <th>mse</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>83.989214</td>\n <td>23.315867</td>\n </tr>\n <tr>\n <th>1</th>\n <td>87.754297</td>\n <td>23.563773</td>\n </tr>\n <tr>\n <th>2</th>\n <td>85.606926</td>\n <td>23.380114</td>\n </tr>\n <tr>\n <th>3</th>\n <td>81.797035</td>\n <td>23.454258</td>\n </tr>\n <tr>\n <th>4</th>\n <td>79.499043</td>\n <td>23.596762</td>\n </tr>\n <tr>\n <th>5</th>\n <td>76.481952</td>\n <td>23.642523</td>\n </tr>\n <tr>\n <th>6</th>\n <td>69.301743</td>\n <td>23.564988</td>\n </tr>\n <tr>\n <th>7</th>\n <td>60.799570</td>\n <td>23.692009</td>\n </tr>\n <tr>\n <th>8</th>\n <td>57.376778</td>\n <td>24.394798</td>\n </tr>\n <tr>\n <th>9</th>\n <td>52.738214</td>\n <td>23.716894</td>\n </tr>\n <tr>\n <th>10</th>\n <td>52.520648</td>\n <td>25.740246</td>\n </tr>\n <tr>\n <th>11</th>\n <td>45.313237</td>\n <td>25.863144</td>\n </tr>\n <tr>\n <th>12</th>\n <td>36.597840</td>\n <td>26.503427</td>\n </tr>\n <tr>\n <th>13</th>\n <td>28.794015</td>\n <td>28.682735</td>\n </tr>\n <tr>\n <th>14</th>\n <td>21.534311</td>\n <td>29.563740</td>\n </tr>\n <tr>\n <th>15</th>\n <td>13.941729</td>\n <td>37.264278</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "results.plot(grid = True, secondary_y= [\"mse\"])",
"execution_count": 13,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 13,
"data": {
"text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x7f84b17f0da0>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 432x288 with 2 Axes>",
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "plt.savefig('../output/results.png')",
"execution_count": 15,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 432x288 with 0 Axes>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"_draft": {
"nbviewer_url": "https://gist.github.com/b56747a31e85baf58ba31c6e885fe603"
},
"gist": {
"id": "b56747a31e85baf58ba31c6e885fe603",
"data": {
"description": "Nieco więcej o pozbywaniu się niepotrzebnych danych",
"public": true
}
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.6.6",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment