{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Dealing with missing data" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from pandas import Series, DataFrame\n", "import pandas as pd\n", "from numpy.random import randn\n", "import numpy as np\n", "from collections import Counter\n", "import time\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(478138, 27) (61259, 26)\n", "['instance_id', 'item_id', 'item_category_list', 'item_property_list', 'item_brand_id', 'item_city_id', 'item_price_level', 'item_sales_level', 'item_collected_level', 'item_pv_level', 'user_id', 'user_gender_id', 'user_age_level', 'user_occupation_id', 'user_star_level', 'context_id', 'context_timestamp', 'context_page_id', 'predict_category_property', 'shop_id', 'shop_review_num_level', 'shop_review_positive_rate', 'shop_star_level', 'shop_score_service', 'shop_score_delivery', 'shop_score_description', 'is_trade']\n" ] } ], "source": [ "train = pd.read_table('round1_train.txt',sep = ' ')\n", "test_a = pd.read_table('round1_testa.txt',sep = ' ')\n", "test_b = pd.read_table('round1_testb.txt',sep = ' ')\n", "test = pd.concat([test_a,test_b]) # combine a,b test set\n", "print(train.shape,test.shape)\n", "print(list(train.columns))" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# drop duplicate instances in train and test\n", "train.drop_duplicates(inplace = True)\n", "test.drop_duplicates(inplace = True)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "positive instances num: 8994\n", "negative instances num: 469117\n" ] } ], "source": [ "print('positive instances num: ',sum(train['is_trade']))\n", "print('negative instances num: ', train.shape[0] - sum(train['is_trade']))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "item_brand_id 473\n", "item_city_id 277\n", "item_sales_level 913\n", "user_gender_id 12902\n", "user_age_level 964\n", "user_occupation_id 964\n", "user_star_level 964\n", "shop_review_positive_rate 7\n", "shop_score_service 59\n", "shop_score_delivery 59\n", "shop_score_description 59\n" ] } ], "source": [ "# how many missing data in each feature?\n", "\n", "# item_brand_id: 473 \n", "# item_city_id: 277 \n", "# item_sales_level: 913 \n", "# user_gender_id: 12902 \n", "# user_age_level: 964 \n", "# user_star_level: 964 \n", "# user_occupation_id: 964 \n", "# shop_review_positive_rate: 7 \n", "# shop_score_service 59\n", "# shop_score_delivery 59\n", "# shop_score_description 59\n", "\n", "for feature in list(train):\n", " missing_num = (train[feature] == -1).sum()\n", " if missing_num > 0:\n", " print(feature, missing_num)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# fill id with the most common one or two\n", "def filling_id(df,feature,missing_num):\n", " cc = Counter(df[feature])\n", " common = cc.most_common(2)\n", " # intutionly choose 5\n", " if common[0][1]/common[1][1] < 5: \n", " total = common[0][1] + common[1][1]\n", " p = [common[0][1]/total, common[1][1]/total]\n", " replace = np.random.choice([common[0][0], common[0][1]],missing_num,p)\n", " df.loc[df[feature] == -1, feature] = replace\n", " else:\n", " df.loc[df[feature] == -1, feature] = common[0][0]\n", " return df\n", "\n", "train= filling_id(train, 'item_brand_id', 473)\n", "train = filling_id(train,'item_city_id', 277)\n", "train = filling_id(train,'user_gender_id',12902)\n", "train = filling_id(train,'user_occupation_id',964)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# filling level with the most common six values\n", "def filling_level(df,feature,missing_num):\n", " cc = Counter(df[feature])\n", " # intutionly choose 6\n", " common = cc.most_common(6)\n", " total = 0\n", " p = []\n", " replace_list = []\n", " for i in common:\n", " total += i[1]\n", " for i in common:\n", " p.append(i[1]/total)\n", " replace_list.append(i[0])\n", " replace = np.random.choice(replace_list,missing_num,p)\n", " df.loc[df[feature] == -1, feature] = replace\n", " return df\n", "\n", "train = filling_level(train,'item_sales_level', 913)\n", "train = filling_level(train,'user_age_level', 964)\n", "train = filling_level(train, 'user_star_level', 964)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# replace missing data in these three columns with average\n", "items = ['shop_score_service', 'shop_score_delivery', 'shop_score_description']\n", "shop_service_mean = train.loc[train[items[0]] != -1, items[0]].mean()\n", "train.loc[train[items[0]] == -1, items[0]] = shop_service_mean\n", "shop_delivery_mean = train.loc[train[items[1]] != -1, items[1]].mean()\n", "train.loc[train[items[1]] == -1, items[1]] = shop_delivery_mean\n", "shop_description_mean = train.loc[train[items[2]] != -1, items[2]].mean()\n", "train.loc[train[items[2]] == -1, items[2]] = shop_description_mean" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[(1.0, 265918), (0.9970402457701614, 1852)]\n" ] } ], "source": [ "# filling shop_review_positive_rate\n", "cc = Counter(train['shop_review_positive_rate'])\n", "print(cc.most_common(2))\n", "train.loc[train['shop_review_positive_rate'] == -1, 'shop_review_positive_rate'] = 1" ] }, { "cell_type": "code", "execution_count": 10, "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", "
instance_iditem_iditem_category_listitem_property_listitem_brand_iditem_city_iditem_price_levelitem_sales_levelitem_collected_levelitem_pv_level...context_page_idpredict_category_propertyshop_idshop_review_num_levelshop_review_positive_rateshop_star_levelshop_score_serviceshop_score_deliveryshop_score_descriptionis_trade
010864107471412696434127203770986760697908382889764677758;57993470679825565202072967855524022579;5131280576272319091;263639...1975590437749032870394828332661642100333414...40065799347067982556520:-1;509660095530134768:-1;5...676593030904892234141.050021.01.01.00
1575471355159972516134127203770986760697908382889764677758;57993470679825565202072967855524022579;5131280576272319091;263639...1975590437749032870394828332661642100333414...40015799347067982556520:9172976955054793469;790838...676593030904892234141.050021.01.01.00
284267948129104098134127203770986760697908382889764677758;57993470679825565202072967855524022579;5131280576272319091;263639...1975590437749032870394828332661642100333414...40015799347067982556520:5131280576272319091;725801...676593030904892234141.050021.01.01.00
393708885005918902734127203770986760697908382889764677758;57993470679825565202072967855524022579;5131280576272319091;263639...1975590437749032870394828332661642100333414...4016509660095530134768:-1;5799347067982556520:-1;7...676593030904892234141.050021.01.01.00
4797569706501770807234127203770986760697908382889764677758;57993470679825565202072967855524022579;5131280576272319091;263639...1975590437749032870394828332661642100333414...40015799347067982556520:9172976955054793469;790838...676593030904892234141.050021.01.01.00
\n", "

5 rows × 27 columns

\n", "
" ], "text/plain": [ " instance_id item_id \\\n", "0 108641074714126964 3412720377098676069 \n", "1 5754713551599725161 3412720377098676069 \n", "2 842679481291040981 3412720377098676069 \n", "3 937088850059189027 3412720377098676069 \n", "4 7975697065017708072 3412720377098676069 \n", "\n", " item_category_list \\\n", "0 7908382889764677758;5799347067982556520 \n", "1 7908382889764677758;5799347067982556520 \n", "2 7908382889764677758;5799347067982556520 \n", "3 7908382889764677758;5799347067982556520 \n", "4 7908382889764677758;5799347067982556520 \n", "\n", " item_property_list item_brand_id \\\n", "0 2072967855524022579;5131280576272319091;263639... 1975590437749032870 \n", "1 2072967855524022579;5131280576272319091;263639... 1975590437749032870 \n", "2 2072967855524022579;5131280576272319091;263639... 1975590437749032870 \n", "3 2072967855524022579;5131280576272319091;263639... 1975590437749032870 \n", "4 2072967855524022579;5131280576272319091;263639... 1975590437749032870 \n", "\n", " item_city_id item_price_level item_sales_level \\\n", "0 3948283326616421003 3 3 \n", "1 3948283326616421003 3 3 \n", "2 3948283326616421003 3 3 \n", "3 3948283326616421003 3 3 \n", "4 3948283326616421003 3 3 \n", "\n", " item_collected_level item_pv_level ... context_page_id \\\n", "0 4 14 ... 4006 \n", "1 4 14 ... 4001 \n", "2 4 14 ... 4001 \n", "3 4 14 ... 4016 \n", "4 4 14 ... 4001 \n", "\n", " predict_category_property shop_id \\\n", "0 5799347067982556520:-1;509660095530134768:-1;5... 6765930309048922341 \n", "1 5799347067982556520:9172976955054793469;790838... 6765930309048922341 \n", "2 5799347067982556520:5131280576272319091;725801... 6765930309048922341 \n", "3 509660095530134768:-1;5799347067982556520:-1;7... 6765930309048922341 \n", "4 5799347067982556520:9172976955054793469;790838... 6765930309048922341 \n", "\n", " shop_review_num_level shop_review_positive_rate shop_star_level \\\n", "0 4 1.0 5002 \n", "1 4 1.0 5002 \n", "2 4 1.0 5002 \n", "3 4 1.0 5002 \n", "4 4 1.0 5002 \n", "\n", " shop_score_service shop_score_delivery shop_score_description is_trade \n", "0 1.0 1.0 1.0 0 \n", "1 1.0 1.0 1.0 0 \n", "2 1.0 1.0 1.0 0 \n", "3 1.0 1.0 1.0 0 \n", "4 1.0 1.0 1.0 0 \n", "\n", "[5 rows x 27 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train.head()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Deal with timestamp" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# convert timestamp to date\n", "def timestamp_datetime(stamp):\n", " struct_time = time.localtime(stamp)\n", " date_time = time.strftime('%Y-%M-%d %H:%M:%S', struct_time)\n", " return date_time\n", "\n", "def convert_date_time(df):\n", " df['datetime'] = df.context_timestamp.apply(timestamp_datetime)\n", " df['day'] = df.datetime.apply(lambda x: int(x[8:10]))\n", " df['hour'] = df.datetime.apply(lambda x: int(x[11:13]))\n", " df['time'] = df.datetime.apply(lambda x: x[11:])\n", " return df\n", "\n", "train = convert_date_time(train)\n", "test = convert_date_time(test)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# how many days in the dataset?\n", "# how many samples in each day?\n", "cc_train = Counter(train['day'])\n", "cc_test = Counter(test['day'])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.02459727983023054, 0.01895510632711998, 0.019108745869762273, 0.01879891119428377, 0.020147202016152128, 0.019324731560314813, 0.016210461796538542, 0.016020155923179312]\n" ] } ], "source": [ "# what's conversion rate in each day? Is there any special promotion day?\n", "days = cc_train.keys()\n", "conv_rates = []\n", "for day in days:\n", " conv_rate = train[train['day'] == day]['is_trade'].sum() / len(train[train['day'] == day])\n", " conv_rates.append(conv_rate)\n", "print(conv_rates)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# convert hour into midnight(0/24-7), morning(7-13), afternoon(13-19), night(19-24).\n", "def convert_to_timeslot(data):\n", " data['is_midnight'], data['is_morning'], data['is_afternoon'],data['is_night'] = -1, -1, -1, -1\n", " data['is_midnight'] = (data['hour'] <= 7).astype('int')\n", " data['is_morning'] = ((data['hour'] > 7) & (data['hour'] <= 13)).astype('int')\n", " data['is_afternoon'] = ((data['hour'] > 13) & (data['hour'] <= 19)).astype('int')\n", " data['is_night'] = (data['hour'] > 19).astype('int')\n", " return data\n", "\n", "train = convert_to_timeslot(train)\n", "test = convert_to_timeslot(test)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. Dealing with categorical feature \n", "#### item_category_list & item_property_list & predict_category_property \n", " `['item_category_list']`: lists of the item's properties, of type String. The format is combined as \"category_0; category_1; category_2\", starting from the root category (the high-level category) to the lead category (the most detailed category). \n", "`['item_property_list']`: lists of item's properties, of type String. The format is combined as \"property_0; property_1; property_2\". Each property has no affiliation with the others. \n", "`['predict_category_property']`: lists of the predicted categories and properties, of type String. The format is combined as \"category A: property_A_1, property_A_2, property_A_3; catgory B: property_B_1, property_B_2, property_B_3\"" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "# Since we observe that the root category is always the same in our dataset (7908382889764677758), \n", "# and there are two categories in the dataset, we only consider the second one \n", "train['item_category'] = train['item_category_list'].apply(lambda x: str(x).split(';')[1])\n", "test['item_category'] = test['item_category_list'].apply(lambda x: str(x).split(';')[1])" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# item_category_list & item_property_list & predict_category_property\n", "def extract_pred_cate_props(data):\n", " # extract category and property list from predict_cate_prop_lists \n", " pred_cate_prop_lists = list(data['predict_category_property'].str.split(';'))\n", " pred_cate_lists = []\n", " pred_prop_lists = []\n", " for pred_cate_props in pred_cate_prop_lists:\n", " pred_cate_list = []\n", " pred_prop_list = []\n", " \n", " if pred_cate_props == ['-1']:\n", " pred_cate_lists.append('-1')\n", " pred_prop_lists.append('-1')\n", " continue\n", " \n", " for pred_cate_prop in pred_cate_props:\n", " cate = pred_cate_prop.split(':')[0]\n", " if cate not in pred_cate_list:\n", " pred_cate_list.append(cate)\n", " \n", " props = pred_cate_prop.split(':')[1]\n", " props = props.split(',')\n", " for p in props:\n", " if p not in pred_prop_list:\n", " pred_prop_list.append(p)\n", " \n", " pred_cate_lists.append(pred_cate_list)\n", " pred_prop_lists.append(pred_prop_list)\n", " return pred_cate_lists, pred_prop_lists\n", " " ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "def calc_cate_prop_precision_recall(data):\n", " cate_lists = list(data['item_category_list'].str.split(';')) \n", " prop_lists = list(data['item_property_list'].str.split(';')) \n", " pred_cate_lists, pred_prop_lists = extract_pred_cate_props(data)\n", " \n", " cate_precision_list = []\n", " cate_recall_list = []\n", " for pred_cate, cate in zip(pred_cate_lists, cate_lists):\n", " count = 0\n", " for i in pred_cate:\n", " if i in cate:\n", " count += 1\n", " cate_precision = count / len(pred_cate)\n", " cate_recall = count/len(cate)\n", " \n", " cate_precision_list.append(cate_precision)\n", " cate_recall_list.append(cate_recall)\n", " \n", " # Question: how to deal with missing data in category and property list????\n", " prop_precision_list = []\n", " prop_recall_list = []\n", " for pred_prop, prop in zip(pred_prop_lists, prop_lists):\n", " count = 0\n", " for i in pred_prop:\n", " if i in prop:\n", " count += 1\n", " prop_precision = count / len(pred_prop)\n", " prop_recall = count/len(prop)\n", " \n", " prop_precision_list.append(prop_precision)\n", " prop_recall_list.append(prop_recall)\n", " \n", " return cate_precision_list, cate_recall_list, prop_precision_list, prop_recall_list " ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "cate_precision_list, cate_recall_list, prop_precision_list, prop_recall_list = calc_cate_prop_precision_recall(train)\n", "train['cate_precision'] = cate_precision_list\n", "train['cate_recall'] = cate_recall_list\n", "train['prop_precision'] = prop_precision_list\n", "train['prop_recall'] = prop_recall_list\n", "train.drop(['item_category_list', 'predict_category_property'],axis=1,inplace=True)\n", "\n", "cate_precision_list, cate_recall_list, prop_precision_list, prop_recall_list = calc_cate_prop_precision_recall(test)\n", "test['cate_precision'] = cate_precision_list\n", "test['cate_recall'] = cate_recall_list\n", "test['prop_precision'] = prop_precision_list\n", "test['prop_recall'] = prop_recall_list\n", "test.drop(['item_category_list', 'predict_category_property'],axis=1,inplace=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4. Dealing with continuous feature \n", "For some of continuous features, if they do not show clear linear relation with label, we may need to divide them into different section to find out the clear correlation.\n", "\n", "`['item_price_level'], ['item_sales_level'], ['item_collected_level'], ['item_pv_level']` \n", "`['user_age_level'], ['user_star_level']` \n", "`['shop_review_num_level'], ['shop_review_positive_rate'], ['shop_star_level'], ['shop_score_service'], ['shop_score_delivery'], ['shop_score_description']`" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# item_price_level:\n", "# we can see that is_trade decreasing with item_price_level increasing.\n", "# the higher the price, the less trade probability\n", "\n", "# item_sales_level:\n", "# in general, the higher the item_sales_level, the higher trade probability\n", "\n", "# item_collected_level: \n", "# in general, the higher the item_collected_level, the higher trade probability\n", "\n", "# item_pv_level: \n", "# extrordinarly high in 3 level. is_trade subtly increasing with item_pv_level\n", "\n", "sns.pointplot(x='item_price_level', y='is_trade', data=train)\n", "#sns.pointplot(x='item_sales_level', y='is_trade', data=train)\n", "#sns.pointplot(x='item_collected_level', y='is_trade', data=train)\n", "#sns.pointplot(x='item_pv_level', y='is_trade', data=train)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# user_age_level:\n", "# is_trade increase with user_age_level increase\n", "\n", "# user_star_level: \n", "# subtly increase as user_start_level increase, and extraordinarly large in 3010 \n", "sns.pointplot(x='user_age_level', y='is_trade', data=train)\n", "#sns.pointplot(x='user_star_level', y='is_trade', data=train)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.pointplot(x='shop_review_num_level', y='is_trade', data=train)\n", "sns.pointplot(x='shop_star_level', y='is_trade', data=train)\n", "\n", "# the remaining four plots are too intensive, and are not discrimincative\n", "# thus, we want to divide them into different section\n", "\n", "# sns.pointplot(x='shop_review_positive_rate', y='is_trade', data=train)\n", "# sns.pointplot(x='shop_score_service', y='is_trade', data=train)\n", "# sns.pointplot(x='shop_score_delivery', y='is_trade', data=train)\n", "# sns.pointplot(x='shop_score_description', y='is_trade', data=train)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "shop_score_description 0.965535\n", "Name: 0.2, dtype: float64" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train[['shop_score_description']].quantile(0.20)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "\"\\ndef f(x):\\n if x > 0.984:\\n return 2\\n elif x > 0.97 and x <= 0.984:\\n return 1\\n else:\\n return 0\\ntrain['shop_score_description'] = train'shop_score_description'].apply(f)\\nsns.pointplot(x = 'shop_score_description', y = 'is_trade', data=train)\\n\"" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'''\n", "def f(x):\n", " if x > 0.984:\n", " return 2\n", " elif x > 0.97 and x <= 0.984:\n", " return 1\n", " else:\n", " return 0\n", "train['shop_score_description'] = train'shop_score_description'].apply(f)\n", "sns.pointplot(x = 'shop_score_description', y = 'is_trade', data=train)\n", "'''" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "train.to_csv('data/complete_train.csv', index = None)\n", "test.to_csv('data/test.csv',index = None)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['instance_id', 'item_id', 'item_property_list', 'item_brand_id',\n", " 'item_city_id', 'item_price_level', 'item_sales_level',\n", " 'item_collected_level', 'item_pv_level', 'user_id', 'user_gender_id',\n", " 'user_age_level', 'user_occupation_id', 'user_star_level', 'context_id',\n", " 'context_timestamp', 'context_page_id', 'shop_id',\n", " 'shop_review_num_level', 'shop_review_positive_rate', 'shop_star_level',\n", " 'shop_score_service', 'shop_score_delivery', 'shop_score_description',\n", " 'is_trade', 'datetime', 'day', 'hour', 'time', 'is_midnight',\n", " 'is_morning', 'is_afternoon', 'is_night', 'item_category',\n", " 'cate_precision', 'cate_recall', 'prop_precision', 'prop_recall'],\n", " dtype='object')" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train.columns" ] }, { "cell_type": "code", "execution_count": 27, "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", "
instance_iditem_iditem_property_listitem_brand_iditem_city_iditem_price_levelitem_sales_levelitem_collected_levelitem_pv_leveluser_id...timeis_midnightis_morningis_afternoonis_nightitem_categorycate_precisioncate_recallprop_precisionprop_recall
010864107471412696434127203770986760692072967855524022579;5131280576272319091;263639...19755904377490328703948283326616421003334144505772604969228686...22:09:04000157993470679825565200.4000001.00.00.000000
1575471355159972516134127203770986760692072967855524022579;5131280576272319091;263639...19755904377490328703948283326616421003334142692638157208937547...00:00:32100057993470679825565201.0000001.00.20.045455
284267948129104098134127203770986760692072967855524022579;5131280576272319091;263639...19755904377490328703948283326616421003334145247924392014515924...15:04:12001057993470679825565200.6666671.01.00.045455
393708885005918902734127203770986760692072967855524022579;5131280576272319091;263639...19755904377490328703948283326616421003334142681414445369714628...18:17:50001057993470679825565200.4000001.00.00.000000
4797569706501770807234127203770986760692072967855524022579;5131280576272319091;263639...19755904377490328703948283326616421003334142729475788342039013...07:48:40100057993470679825565201.0000001.01.00.045455
\n", "

5 rows × 38 columns

\n", "
" ], "text/plain": [ " instance_id item_id \\\n", "0 108641074714126964 3412720377098676069 \n", "1 5754713551599725161 3412720377098676069 \n", "2 842679481291040981 3412720377098676069 \n", "3 937088850059189027 3412720377098676069 \n", "4 7975697065017708072 3412720377098676069 \n", "\n", " item_property_list item_brand_id \\\n", "0 2072967855524022579;5131280576272319091;263639... 1975590437749032870 \n", "1 2072967855524022579;5131280576272319091;263639... 1975590437749032870 \n", "2 2072967855524022579;5131280576272319091;263639... 1975590437749032870 \n", "3 2072967855524022579;5131280576272319091;263639... 1975590437749032870 \n", "4 2072967855524022579;5131280576272319091;263639... 1975590437749032870 \n", "\n", " item_city_id item_price_level item_sales_level \\\n", "0 3948283326616421003 3 3 \n", "1 3948283326616421003 3 3 \n", "2 3948283326616421003 3 3 \n", "3 3948283326616421003 3 3 \n", "4 3948283326616421003 3 3 \n", "\n", " item_collected_level item_pv_level user_id ... \\\n", "0 4 14 4505772604969228686 ... \n", "1 4 14 2692638157208937547 ... \n", "2 4 14 5247924392014515924 ... \n", "3 4 14 2681414445369714628 ... \n", "4 4 14 2729475788342039013 ... \n", "\n", " time is_midnight is_morning is_afternoon is_night \\\n", "0 22:09:04 0 0 0 1 \n", "1 00:00:32 1 0 0 0 \n", "2 15:04:12 0 0 1 0 \n", "3 18:17:50 0 0 1 0 \n", "4 07:48:40 1 0 0 0 \n", "\n", " item_category cate_precision cate_recall prop_precision \\\n", "0 5799347067982556520 0.400000 1.0 0.0 \n", "1 5799347067982556520 1.000000 1.0 0.2 \n", "2 5799347067982556520 0.666667 1.0 1.0 \n", "3 5799347067982556520 0.400000 1.0 0.0 \n", "4 5799347067982556520 1.000000 1.0 1.0 \n", "\n", " prop_recall \n", "0 0.000000 \n", "1 0.045455 \n", "2 0.045455 \n", "3 0.000000 \n", "4 0.045455 \n", "\n", "[5 rows x 38 columns]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train.head()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(478111, 38)" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train.shape" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(61259, 37)" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test.shape" ] }, { "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.5" } }, "nbformat": 4, "nbformat_minor": 2 }