diff --git a/ColumnTransformer Meets NLP.ipynb b/ColumnTransformer Meets NLP.ipynb new file mode 100644 index 0000000..3ae1f2c --- /dev/null +++ b/ColumnTransformer Meets NLP.ipynb @@ -0,0 +1,573 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from scipy import stats\n", + "from scipy.stats import norm, skew\n", + "from sklearn import preprocessing\n", + "from sklearn.linear_model import Ridge\n", + "from sklearn.metrics import mean_squared_error\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.compose import ColumnTransformer\n", + "from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer\n", + "from sklearn.preprocessing import OneHotEncoder\n", + "from sklearn.pipeline import make_pipeline\n", + "from sklearn.pipeline import Pipeline\n", + "pd.set_option('display.float_format', lambda x: '%.3f' % x)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_csv('train.tsv', sep = '\\t')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "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", + "
train_idnameitem_condition_idcategory_namebrand_namepriceshippingitem_description
00MLB Cincinnati Reds T Shirt Size XL3Men/Tops/T-shirtsNaN10.0001No description yet
11Razer BlackWidow Chroma Keyboard3Electronics/Computers & Tablets/Components & P...Razer52.0000This keyboard is in great condition and works ...
22AVA-VIV Blouse1Women/Tops & Blouses/BlouseTarget10.0001Adorable top with a hint of lace and a key hol...
33Leather Horse Statues1Home/Home Décor/Home Décor AccentsNaN35.0001New with tags. Leather horses. Retail for [rm]...
4424K GOLD plated rose1Women/Jewelry/NecklacesNaN44.0000Complete with certificate of authenticity
\n", + "
" + ], + "text/plain": [ + " train_id name item_condition_id \\\n", + "0 0 MLB Cincinnati Reds T Shirt Size XL 3 \n", + "1 1 Razer BlackWidow Chroma Keyboard 3 \n", + "2 2 AVA-VIV Blouse 1 \n", + "3 3 Leather Horse Statues 1 \n", + "4 4 24K GOLD plated rose 1 \n", + "\n", + " category_name brand_name price \\\n", + "0 Men/Tops/T-shirts NaN 10.000 \n", + "1 Electronics/Computers & Tablets/Components & P... Razer 52.000 \n", + "2 Women/Tops & Blouses/Blouse Target 10.000 \n", + "3 Home/Home Décor/Home Décor Accents NaN 35.000 \n", + "4 Women/Jewelry/Necklaces NaN 44.000 \n", + "\n", + " shipping item_description \n", + "0 1 No description yet \n", + "1 0 This keyboard is in great condition and works ... \n", + "2 1 Adorable top with a hint of lace and a key hol... \n", + "3 1 New with tags. Leather horses. Retail for [rm]... \n", + "4 0 Complete with certificate of authenticity " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 1482535 entries, 0 to 1482534\n", + "Data columns (total 8 columns):\n", + "train_id 1482535 non-null int64\n", + "name 1482535 non-null object\n", + "item_condition_id 1482535 non-null int64\n", + "category_name 1476208 non-null object\n", + "brand_name 849853 non-null object\n", + "price 1482535 non-null float64\n", + "shipping 1482535 non-null int64\n", + "item_description 1482531 non-null object\n", + "dtypes: float64(1), int64(3), object(4)\n", + "memory usage: 90.5+ MB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "count 1482535.000\n", + "mean 26.738\n", + "std 38.586\n", + "min 0.000\n", + "25% 10.000\n", + "50% 17.000\n", + "75% 29.000\n", + "max 2009.000\n", + "Name: price, dtype: float64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.price.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mu = 26.75 and sigma = 38.59\n", + "\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEWCAYAAABMoxE0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl8VPW9//HXJztB1iTsS9CCLEEwgHivivViuWi9Iu7bdalVb2t/1z6qVmurtb231ra2VK1dXKu4YOtKbxUralWqiECDooiETUGEENlJyPb5/TEncRJmkgmTmSTM+/l4zCNnvud7zvmcM8l88j3fc77H3B0REZEDldbeAYiISOemRCIiInFRIhERkbgokYiISFyUSEREJC5KJCIiEhclEkkJZvaCmV2c4G1cYmYLwt7vNrND22jdN5rZfcF0oZm5mWW00bqHBLGmt8X6JPUokUinZGbrzKwi+ALcbGZ/NLNDotV395Pc/aFkxujuh7j7mubqmNmXzWxDDOu61d2/3hZxBcfuxLB1fxzEWtsW65fUo0Qindl/uPshQDEwEfhB0woW0ql/z9uq5SGSKJ36D0wEwN03Ai8ARQBm9ncz+4mZ/QPYCxwalDX8R29ml5vZCjPbZWYfmFlxUD7AzJ4yszIzW2tm/x1tu2aWZ2ZzzWynmS0CDmsy383sS8H0ycF2dpnZRjO71sy6BnEPCFpWu4Pt32JmT5rZI2a2E7gkKHukSQhfM7NPzWyTmV0btt0/mtn/hr1vaPWY2WxgCPCXYHvfbXqqLIhhrpl9bmalZnZ52LpuMbM/mdnDwb68b2YTY/6w5KCkRCKdnpkNBk4G/hlW/J/AFUA3YH2T+mcBtwAXAd2BU4HyoOXyF2AZMBCYCnzbzP49yqbvBiqB/sDXglc09wNXuns3QgnvFXffA5wEfBqcWjrE3T8N6s8AngR6Ao9GWecJwHBgGnB9+OmqaNz9P4GPCVpz7v7zCNXmABuAAcCZwK1m9m9h808N6vQE5gK/aWm7cnBTIpHO7Fkz2w4sAF4Dbg2b90d3f9/da9y9uslyXwd+7u7veEipu68HJgEF7v5jd68K+jfuBc5tuuGgY/oM4GZ33+Puy4Hm+mCqgdFm1t3dt7n70hb27S13f9bd69y9IkqdHwXbfg94EDivhXW2KEjKxwDXu3ulu5cA9xFKuvUWuPvzQZ/KbGBcvNuVzk2JRDqz09y9p7sPdfdvNvnC/aSZ5QYDqyOUDyV0mml7/Qu4EegboW4BkNFkO+sj1Kt3BqFW03oze83M/qWZutB8/JHqrCfUgojXAOBzd9/VZN0Dw95/Fja9F8hRP05qUyKRg1Vzw1p/QpP+jLDytUFyqn91c/eTI9QtA2oIJaV6Q6IGE2r9zAD6AM8Cf2ohzliG5W667frTYnuA3LB5/Vqx7k+B3mbWrcm6N8YQj6QoJRJJRfcB15rZhOCqri+Z2VBgEbDLzK43sy5mlm5mRWY2qekKgtM6TwO3mFmumY0GIt6nYmZZZnaBmfUITrPtBOqC2ZuBPDPrcQD7cVOw7THApcATQXkJcLKZ9TazfsC3myy3GYh4f4u7fwK8CfzUzHLM7AjgMqBpR79IAyUSSTnu/mfgJ8BjwC5CLYTeQXI4BRgPrAW2Eko60b7kvwUcQuhUzx8J9VNE85/AuuAqrP8CLghi+RB4HFgTnE5rzemp14BS4GXgdnf/W1A+m9AFA+uAv/FFgqn3U+AHwfauZX/nAYWEWifPAD909/mtiEtSjOnBViIiEg+1SEREJC5KJCIiEhclEhERiYsSiYiIxCUlbiLKz8/3wsLC9g5DRKRTWbJkyVZ3L2ipXkokksLCQhYvXtzeYYiIdCpm1txoDQ10aktEROKiRCIiInFRIhERkbikRB+JJE91dTUbNmygsrKyvUMRkRjl5OQwaNAgMjMzD2h5JRJpUxs2bKBbt24UFhZiZu0djoi0wN0pLy9nw4YNDBs27IDWoVNb0qYqKyvJy8tTEhHpJMyMvLy8uM4iKJFIm1MSEelc4v2bVSIREZG4KJGIiEhc1Nkeg8fe/jhi+fmToz5ZVUQkZahFIgclM+Oaa65peH/77bdzyy23JDWGQw45pMU6t9xyC7fffjsA//qv/xq13vbt2/ntb38b87YrKio4/vjjqa2tjXmZ1vjkk0844YQTGD16NGPGjOGOO+5oNH/79u2ceeaZjBw5klGjRvHWW281mr9y5UrGjx/f8OrevTu//vWvG+YXFhYyduxYxo8fz8SJExOyD+HHPtEqKys56qijGDduHGPGjOGHP/xhw7xZs2YxZswYioqKOO+886J2ekc7JnfccQdFRUWMGTOm0TEMV1VVxZQpU6ipqWnbHQsokchBKTs7m6effpqtW7e2ell3p66uruWKbezNN9+MOq+1ieSBBx7g9NNPJz09vS1C209GRga//OUv+eCDD1i4cCF33303H3zwQcP8q6++munTp/Phhx+ybNkyRo0a1Wj5ww8/nJKSEkpKSliyZAm5ubnMnDmzUZ1XX32VkpKSg2KcvOzsbF555RWWLVtGSUkJ8+bNY+HChWzcuJE777yTxYsXs3z5cmpra5kzZ07U9TQ9JsuXL+fee+9l0aJFLFu2jP/7v/+jtLR0v+WysrKYOnUqTzzR9KnLbUOJRA5KGRkZXHHFFcyaNWu/eb/61a8oKiqiqKio4T+4devWcfjhh3PRRRdRVFTEG2+8wciRI7nkkksYMWIEF1xwAfPnz+eYY45h+PDhLFq0qGF9p512GhMmTGDMmDHcc889Lcb2k5/8hBEjRnDssceycuXKhvL6FsyePXv46le/yrhx4ygqKuKJJ57ghhtuYPXq1YwfP57rrruuxW08+uijzJgxo+H9l7/8ZT788EMAysvLKSoqanEdzenfvz/FxcUAdOvWjVGjRrFx40YAduzYweuvv85ll10GhL7EevbsGXVdL7/8MocddhhDhw5tVQyRjvu6desYNWoUl19+OWPGjGHatGlUVFQ0LBPt2IdbtmwZU6ZMYfTo0aSlpWFm3Hzzza2KrSkza/h8q6urqa6ubrhSqqamhoqKCmpqati7dy8DBgyIeb0rVqxg8uTJ5ObmkpGRwfHHH8/TTz8dse5pp53Go48+Gtd+RKM+EkmYW2+9teHLq62MHDmSG2+8Maa6V111FUcccQTf/e53G8qWLFnCgw8+yNtvv427M3nyZI4//nh69erFqlWreOihhzj66KNZt24dpaWl/PnPf+aBBx5g0qRJPPbYYyxYsIC5c+dy66238uyzzwKh//579+5NRUUFkyZN4owzziAvLy9iTEuWLGHOnDmUlJRQU1NDcXExEyZMaFRn3rx5DBgwgL/+9a9A6It58uTJLF++nJKSkhb3u6qqijVr1hD+6ITS0lJGjBgBwLvvvsvYsWMbLXPcccexa9eu/dZ1++23c+KJJza7vXXr1vHPf/6TyZMnA7B27VoKCgq49NJLWbZsGRMmTOCOO+6ga9euEZefM2cO5513XqMyM2PatGmYGVdeeSVXXHHFfstFOu4Aq1at4vHHH+fee+/l7LPP5qmnnuLCCy+M6dhXVlZyzjnn8PDDD3PUUUdx0003UVlZyY9+9KO4j1VtbS0TJkygtLSUq666quF4XXvttQwZMoQuXbowbdo0pk2bFnH5SMekqKiI73//+5SXl9OlSxeef/75qKcCi4qKeOedd6LGFw8lEjlode/enYsuuog777yTLl26ALBgwQJmzpzZ8KV2+umn88Ybb3DqqacydOhQjj766Iblhw0b1vCFO2bMGKZOnYqZMXbsWNatW9dQ78477+SZZ54BQn0Hq1atippI3njjDWbOnElubi4Ap5566n51xo4dyzXXXMP111/PKaecwnHHHce2bdti3u+tW7c2agGsX7+egQMHkpYWOgHx7rvvcsQRR+wX14HYvXs3Z5xxBr/+9a/p3r07EPoPe+nSpdx1111MnjyZq6++mttuu43/+Z//2W/5qqoq5s6dy09/+tNG5QsWLGDgwIFs2bKFr3zlK4wcOZIpU6Y0qhPpuPfr149hw4Yxfvx4ACZMmNDwWcVy7OfPn09xcTFHHXUUAEcccQTz5s1rdJ/FgR6r9PR0SkpK2L59OzNnzmT58uUMHDiQ5557jrVr19KzZ0/OOussHnnkES688ML9lo92TK6//nqmTZtG165dGT9+fNTTmenp6WRlZbFr1y66det2QPsQjRKJJEysLYdE+va3v01xcTGXXnppi3Wb/secnZ3dMJ2WltbwPi0traHT8u9//zvz58/nrbfeIjc3ly9/+ctxjzM2YsQIli5dyvPPP88PfvADpk6dykUXXRTz8l26dGkUw7JlyxoljiVLlnDOOec0WuZA/suurq7mjDPO4IILLuD0009vKB80aBCDBg1q+I/7zDPP5Lbbbou4jhdeeIHi4mL69u3bqHzgwIEA9OnTh5kzZ7Jo0aJGiaS54x7+uaWnpzc6tdWS5cuXN2qtLV26tOEUXr14Wm8APXv25IQTTmDevHkMHTqUYcOGUVAQenbU6aefzptvvhkxkUQ7JpdddlnDacQbb7yRQYMGRd32vn37yMnJaTHG1lIfiRzUevfuzdlnn839998PhL4Enn32Wfbu3cuePXt45plnOO644w54/Tt27KBXr17k5uby4YcfsnDhwmbrT5kyhWeffZaKigp27drFX/7yl/3qfPrpp+Tm5nLhhRdy3XXXsXTpUrp16xbxyyuSXr16UVtb2/DFWlJS0jC9atUq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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df = df.loc[df['price'] > 0]\n", + "\n", + "sns.distplot(df['price'], fit = norm);\n", + "(mu, sigma) = norm.fit(df['price'])\n", + "print( '\\n mu = {:.2f} and sigma = {:.2f}\\n'.format(mu, sigma))\n", + "\n", + "plt.legend(['Normal dist. ($\\mu=$ {:.2f} and $\\sigma=$ {:.2f} )'.format(mu, sigma)],\n", + " loc='best')\n", + "plt.ylabel('Frequency')\n", + "plt.title('Price distribution')\n", + "\n", + "fig = plt.figure()\n", + "res = stats.probplot(df['price'], plot=plt)\n", + "plt.show();" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + " mu = 2.98 and sigma = 0.75\n", + "\n" + ] + }, + { + "data": { + "image/png": "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WOhcx6mqz7ei7777jvHjx9O/f38sFgsiwmOPPXZRn8umTZvo1asXPXr0wGazMXv2bP79739Xefzq1avp2bMnXbt2rdN1rrvuOt5+++2LirUqWlNQfvOnP/3J80XUUC655BJ+85vf1OrYe++9l8GDB/PLX/7Ss23r1q28+uqrbNy4EWMMo0ePZsKECcTFxXHw4EFef/11Lr30UlJSUjh06BDLli3jlVdeYeTIkSxatIh169axcuVK/vSnP/H++87161955RXatGlDYWEhI0eOZMaMGcTHx/uMaevWrSxZsoTt27dTUlJCcnIyw4cPL3fMxx9/TKdOnfjPf/4DQHZ2NqNHj2bXrl1s3769xvdtt9s5cuQI3lPMHzp0iD59+gCwY8cOBg0aVO4148aNIzc3t9K5nn76aa688spqr5eSksK3337L6NGjK+0bOHAgDz/8MBkZGYSFhbFq1SpGjBhBYmIiv/jFL+jSpQthYWFMnjyZyZMn+zy/r88X4ODBgyxevJiXXnqJWbNm8e6779KvX78aP19wjqe58cYbeeONNxg1ahSPPvooRUVF/O53v7uoz+TkyZN07tzZ8zwpKYmNGzdW+dktWbKEOXPmlNsmIkyePBkR4e6772b+/PmVXjdw4EA2b95c5XkvhiYF1WJFR0czb948FixYQFhYGADr1q3j+uuvJyIiAoDp06ezdu1arr32Wrp27cqll17qeX337t09X54DBgzgiiuuQEQYNGgQKSkpnuMWLFjAe++9Bzj72g8ePFhlUli7di3XX3894eHhAFx77bWVjhk0aBAPPPAAv/rVr/jhD3/IuHHjyMrKqvX7PnfuHLGxsZ7nx44dIzExEYvF2TGwY8cOBg8eXCmu+sjLy2PGjBk899xzREdHV9rfr18/fvWrXzF58mQiIiIYOnQoVquVrKws/v3vf3P06FFiY2OZOXMmb731Frfcckulc/j6fDt06ED37t0ZOnQoAMOHDyclJYVz587V+PkCfPbZZyQnJzNq1CgABg8ezMcff1zuHv/6fia1ZbfbWblyJX/+85/LbV+3bh2JiYmkpaXx/e9/n0suuYTx48eXO8ZqtWKz2cjNzSUqKqpB49KkoPymtr/o/elnP/sZycnJ3HbbbTUe604UbiEhIZ6/LRaL57nFYvEU+b744gs+++wz1q9fT3h4OBMnTrzogmmfPn3Y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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.distplot(np.log1p(df['price']), fit = norm);\n", + "(mu, sigma) = norm.fit(np.log1p(df['price']))\n", + "print( '\\n mu = {:.2f} and sigma = {:.2f}\\n'.format(mu, sigma))\n", + "\n", + "plt.legend(['Normal dist. ($\\mu=$ {:.2f} and $\\sigma=$ {:.2f} )'.format(mu, sigma)],\n", + " loc='best')\n", + "plt.ylabel('Frequency')\n", + "plt.title('Log (Price+1) distribution')\n", + "\n", + "fig = plt.figure()\n", + "res = stats.probplot(np.log1p(df['price']), plot=plt)\n", + "plt.show();" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "df[\"price\"] = np.log1p(df[\"price\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "train_id 0\n", + "name 0\n", + "item_condition_id 0\n", + "category_name 6314\n", + "brand_name 632336\n", + "price 0\n", + "shipping 0\n", + "item_description 4\n", + "dtype: int64" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.isnull().sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will replace all NaN values in these 3 columns with \"missing\". There are 82,427 descriptions are \"No description yet\". So we will replace them by \"missing\" too." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "NUM_BRANDS = 2500\n", + "NAME_MIN_DF = 10\n", + "MAX_FEAT_DESCP = 50000\n", + "\n", + "df[\"category_name\"] = df[\"category_name\"].fillna(\"Other\").astype(\"category\")\n", + "df[\"brand_name\"] = df[\"brand_name\"].fillna(\"unknown\")\n", + "\n", + "pop_brands = df[\"brand_name\"].value_counts().index[:NUM_BRANDS]\n", + "df.loc[~df[\"brand_name\"].isin(pop_brands), \"brand_name\"] = \"Other\"\n", + "\n", + "df[\"item_description\"] = df[\"item_description\"].fillna(\"None\")\n", + "df[\"item_condition_id\"] = df[\"item_condition_id\"].astype(\"category\")\n", + "df[\"brand_name\"] = df[\"brand_name\"].astype(\"category\")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "train_id int64\n", + "name object\n", + "item_condition_id category\n", + "category_name category\n", + "brand_name category\n", + "price float64\n", + "shipping int64\n", + "item_description object\n", + "dtype: object" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "target = df.price.values\n", + "features = df[['name', 'item_condition_id', 'category_name', 'brand_name', 'shipping', 'item_description']].copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(features, target, test_size = 0.2, random_state=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "name object\n", + "item_condition_id category\n", + "category_name category\n", + "brand_name category\n", + "shipping int64\n", + "item_description object\n", + "dtype: object" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "features.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "preprocess = ColumnTransformer(\n", + " [('item_condition_category', OneHotEncoder(dtype='int', handle_unknown='ignore'), ['item_condition_id']),\n", + " ('brand_name_category', OneHotEncoder(dtype='int', handle_unknown='ignore'), ['brand_name']),\n", + " ('category_name_countvec', CountVectorizer(), 'category_name'),\n", + " ('name_countvec', CountVectorizer(min_df=NAME_MIN_DF), 'name'),\n", + " ('description_tfidf', TfidfVectorizer(max_features = MAX_FEAT_DESCP, stop_words = 'english', ngram_range=(1,3)), 'item_description')],\n", + " remainder='passthrough')" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "model = make_pipeline(\n", + " preprocess,\n", + " Ridge(solver = \"lsqr\", fit_intercept=False))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Pipeline(memory=None,\n", + " steps=[('columntransformer', ColumnTransformer(n_jobs=None, remainder='passthrough', sparse_threshold=0.3,\n", + " transformer_weights=None,\n", + " transformers=[('item_condition_category', OneHotEncoder(categorical_features=None, categories=None, dtype='int',\n", + " handle_unknown='ignore', n_va...t_intercept=False, max_iter=None,\n", + " normalize=False, random_state=None, solver='lsqr', tol=0.001))])" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train RMSE: 0.4534\n", + "Test RMSE: 0.4674\n" + ] + } + ], + "source": [ + "y_train_pred = model.predict(X_train)\n", + "y_pred = model.predict(X_test)\n", + "\n", + "train_rmse = np.sqrt(mean_squared_error(y_train_pred, y_train))\n", + "test_rmse = np.sqrt(mean_squared_error(y_pred, y_test))\n", + "print('Train RMSE: %.4f' % train_rmse)\n", + "print('Test RMSE: %.4f' % test_rmse)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}