{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Assignment 3\n", "\n", "We have information about several auctions at different times. The goal of the assignment is to predict whether a certain auction will be succesfull or not and then optimize a certain auction in order to get the most profit. The assignment consists of the following steps: \n", " \n", "1) *Descriptive Analysis* \n", "Here we do some basic exploratory analysis in order to get a feeling for the data and what we can do with it. We are allowed to also use correlation, plots and some simple inferences. Moreover, this is a nice way to start thinking about creating new features if neccesary. \n", " \n", "2) *Prediction Model* \n", "The goal is to build a prediction model that can either classify or predict the performance of a new auction. We are free to choose either classification or prediction as long as we are accurate since the model is used in step 3. Moreover, it should also be a relatively fast method in order to use it in our optimization in step 3. \n", " \n", "3) *Optimization* \n", "Given a new auction, optimize its features in such a way that you will maximize the final output. In other words, optimize the different variables and their values in a way to get the most money out of your auction. For example, if you have an item/lot that you expect will be worth 200 euros, then setting the starting bid at 50 euros or 100 euros might make a big difference on the end price. Each time we change a value, we check with our prediction model whether that change is a good one or not in order to eventually get the best \"lay-out\" of an auction. \n", "\n", "**Features** \n", "We have the following features in the dataset: \n", "* **Multiplier** This is defined as (Winning Bid / Estimated Value)\n", "* **LotNr** An items number, the lower the number the earlier the item is shown on the site\n", "* **Allocate** Whether the seller of the lot has set a price which he want as minimum for the lot \n", "* **EstValue**: estimated value of the lot (by auction experts)\n", "* **StartPrice**: starting bidding price of the lot\n", "* **Followers**: nr. of people following the lot\n", "* **Bank, Dealer, Liquidator, Volunteer**: type of sales\n", "* **LotsSale**: amount of lots of one sale\n", "* **LotsCtgry**: amount of lots within a sale with the same category\n", "* **Forced**: whether a sale is forced or not (due to bankruptcy)\n", "* **SP.EV**: starting price/estimated value\n", "* **Duration**: duration of auctions in hours on a lot\n", "* **Morning, Evening, Afternoon**: last bid on the lot " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Table of Contents \n", "\n", "1. [Functions](#functions)\n", "\n", "2. [Preprocessing](#preprocessing)\n", "\n", "3. [Exploration](#exploration)\n", "\n", "4. [Visualization](#visual) \n", "\n", " 4.1 [Plots](#plots) \n", " \n", " 4.2 [Correlations](#correlation) \n", " \n", "5. [Feature Engineering](#engineering) \n", "\n", " 5.1 [Outlier Removal](#outliers) \n", " \n", " 5.2 [Resolving Skewedness](#skewedness) \n", " \n", "6. [Feature Importance](#importance) \n", "\n", " 6.1 [Decision Tree](#importancetree) \n", " \n", " 6.2 [Random Forest](#importanceforest) \n", " \n", " 6.3 [Feature Selection](#selection) \n", " \n", "7. [Prediction](#prediction) \n", "\n", " 7.1 [Classification with K-Fold](#resultclassifiers) \n", " \n", " 7.2 [Classification with LOO](#loo) \n", " \n", " 7.3 [Voting Classifier with LOO](#voting) \n", " \n", " 7.4 [Regression with K-Fold](#regression) \n", " \n", "8. [Grid Search](#grid) \n", "\n", " 8.1 [Classification](#gridclassification) \n", "\n", " 8.2 [Regression](#gridregression) \n", "\n", "9. [Optimization - Description](#optimization)\n", "\n", "10. [Optimization - Regression](#regressionoptimization)\n", "\n", "11. [Optimization - Classification](#optimizationfull)\n", "\n", " 11.1 [Genetic Algorithm](#geneticalgorithm) \n", "\n", " 11.2 [Heuristic](#heuristic) \n", "\n", " 11.3 [Validation](#validation) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Functions \n", "[Back to Table of Contents](#table)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import math\n", "import graphviz \n", "import warnings\n", "import random\n", "\n", "import pandas as pd\n", "import numpy as np\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "\n", "from deap import base\n", "from deap import creator\n", "from deap import tools\n", "\n", "from scipy.stats import skew\n", "from sklearn.tree import DecisionTreeClassifier, export_graphviz\n", "from sklearn.neighbors import KNeighborsClassifier\n", "from sklearn.svm import SVC\n", "from sklearn.ensemble import RandomForestRegressor,VotingClassifier,AdaBoostClassifier, \\\n", " GradientBoostingClassifier, RandomForestClassifier, \\\n", " GradientBoostingRegressor\n", "from sklearn.naive_bayes import GaussianNB\n", "from sklearn.linear_model import LogisticRegression, Lasso, Ridge, ElasticNet\n", "from sklearn.kernel_ridge import KernelRidge\n", "\n", "from xgboost import XGBClassifier, XGBRegressor\n", "from catboost import CatBoostClassifier, CatBoostRegressor\n", "from lightgbm import LGBMClassifier, LGBMRegressor\n", "\n", "from sklearn.feature_selection import VarianceThreshold\n", "from sklearn.model_selection import StratifiedShuffleSplit, train_test_split, GridSearchCV,\\\n", " cross_val_score\n", "from sklearn.metrics import accuracy_score, log_loss, mean_squared_error\n", "from sklearn.preprocessing import StandardScaler, MinMaxScaler\n", "\n", "from mlxtend.classifier import StackingClassifier, StackingCVClassifier\n", "\n", "%matplotlib inline\n", "warnings.simplefilter(\"ignore\", category=PendingDeprecationWarning) # LightGBM\n", "warnings.simplefilter(\"ignore\", category=DeprecationWarning) # LightGBM\n", "warnings.simplefilter(\"ignore\", category=UserWarning) # LightGBM\n", "\n", "def preprocess_data(file_1_location = 'data2014.csv', file_2_location = 'data2015.csv'):\n", " \"\"\" Loading and preprocessing the data\n", " \n", " Parameters:\n", " -----------\n", " file_1_location (str): The location of the first csv file\n", " file_2_location (str): The location of the first csv file\n", " \n", " Returns:\n", " --------\n", " df (dataframe): Preprocessed dataframe\n", " \n", " \"\"\"\n", " \n", " # Load in Data\n", " df_2014 = pd.read_csv(file_1_location)\n", " df_2015 = pd.read_csv(file_2_location)\n", "\n", " # Merge two files\n", " df_2014['Year'] = 2014\n", " df_2015['Year'] = 2015\n", " df = df_2014.append(df_2015)\n", " df = df.set_index(np.arange(len(df)))\n", "\n", " # Extract part of day as a single variable and remove columns\n", " df['Part_of_Day'] = df.apply(lambda row: get_part_of_day(row), axis = 1)\n", " df['multiplier_binary'] = df.apply(lambda row: get_bin_multiplier(row['multiplier']), axis = 1)\n", "\n", " df = df.drop(['Morning', 'Afternoon', 'Evening'], 1)\n", "\n", " # Since we have the number of lots in a category, we can also say that each number of lots in a category \n", " # is associated with a single category\n", " # This is an assumption that might not hold, but it does give more information about having several categories\n", " categories = {value: index+1 for index, value in enumerate(list(df['LotsCtgry'].unique()))}\n", " df['Category'] = df.apply(lambda row: categories[row['LotsCtgry']], axis = 1)\n", "\n", " # Test for consecutive rows\n", " test_consecutive_sale(df)\n", "\n", " # Create new column with sale number as the number of lots in a sale can be used as a proxy to which sale a lot belongs\n", " sale_number = {value: index+1 for index, value in enumerate(list(df['LotsSale'].unique()))}\n", " df['Sale_nr'] = df.apply(lambda row: sale_number[row['LotsSale']], axis = 1)\n", "\n", " # # Get number of categories in a sale\n", " df = get_categories_per_sale(df)\n", " \n", " # Ordered lot numbers by category\n", " ctgry_lot_nr_map = {(sales_nr,ctgry_nr,lot_nr): idx + 1 \n", " for (sales_nr,ctgry_nr),lot_nr_list \n", " in df.groupby(['Sale_nr','Category']).LotNr.unique().items()\n", " for idx, lot_nr in enumerate(lot_nr_list)}\n", "\n", " df['CtgryLotNr'] = list(zip(*[df.Sale_nr,df.Category,df.LotNr]))\n", " df['CtgryLotNr'] = df['CtgryLotNr'].map(ctgry_lot_nr_map)\n", "\n", " # Binarize Year\n", " year_map={2014:0,2015:1}\n", " df.Year = df.Year.map(year_map)\n", " \n", " # Create winning bid and the difference between winning bid and est. value\n", " df['WinningBid'] = df.apply(lambda row: row['EstValue'] * row['multiplier'], axis = 1)\n", " df['ResultDifference'] = df.apply(lambda row: row['EstValue'] * row['multiplier'] - \n", " row['EstValue'], axis = 1)\n", " \n", " # Create 3 classes\n", " df['multiplier_three'] = df.apply(lambda row: three_classes(row), axis = 1)\n", " \n", " return df\n", "\n", "def get_part_of_day(row):\n", " if row['Morning'] == 1:\n", " return 0\n", " elif row['Afternoon'] == 1:\n", " return 1\n", " elif row['Evening'] == 1:\n", " return 2\n", " else:\n", " return 'Error!'\n", " \n", "def get_bin_multiplier(row):\n", " if row < 1:\n", " return 0\n", " elif row >= 1:\n", " return 1\n", " else:\n", " return 'Error'\n", " \n", "def test_consecutive_sale(df):\n", " \"\"\" We want to know if the number of lots in a sale can be used\n", " to indicate whether it belongs to a certain sale. This function\n", " checks whether a consecutive series of LotsSale belong to each\n", " other by keeping a set in which we store the LotsSale values\n", " and check whether a new series of LotsSale has the same amount as\n", " a series we have seen previously. If it doesn't return an error, \n", " we can use the column \"LotsSale\" as a proxy for the lotnumber\n", " \"\"\"\n", " consecutive_check = set()\n", " previous = ''\n", "\n", " for i in df['LotsSale']:\n", " if len(consecutive_check) == 0:\n", " consecutive_check.update([i])\n", " previous = i\n", "\n", " if i == previous:\n", " continue\n", " else:\n", " if i in consecutive_check:\n", " print('Problem!')\n", " break\n", " else:\n", " consecutive_check.update([i])\n", " previous = i\n", " \n", "def get_categories_per_sale(df):\n", " \"\"\" Count for each sale how many categories there are in it\n", " \"\"\"\n", " test = df.groupby(by = ['Sale_nr', 'Category']).count().reset_index()\n", " df['Categories_per_sale'] = 0\n", " \n", " for i in df['Sale_nr'].unique():\n", " df.loc[df['Sale_nr'] == i, 'Categories_per_sale'] = len(test[test['Sale_nr'] == i]['Category'].unique())\n", " \n", " return df\n", "\n", "def correlation_matrix(df):\n", " \"\"\" Shows a correlation matrix\n", " \n", " Parameters:\n", " -----------\n", " df (dataframe): Insert a dataframe with only the\n", " columns that you want to visualize\n", " \"\"\"\n", " sns.set(style=\"white\")\n", "\n", " # Compute the correlation matrix\n", " corr = df.corr()\n", "\n", " # Generate a mask for the upper triangle\n", " mask = np.zeros_like(corr, dtype=np.bool)\n", " mask[np.triu_indices_from(mask)] = True\n", "\n", " # Set up the matplotlib figure\n", " f, ax = plt.subplots(figsize=(11, 9))\n", "\n", " sns.heatmap(corr, mask=mask,cmap=\"RdBu_r\", linewidths=.5, cbar_kws={\"shrink\": .5});\n", "\n", "def scatter_plot(df, x, y, figsize = (10, 5), xlabel=None, ylabel=None, title=None):\n", " \"\"\" Plots a scatterplot\n", " \n", " Parameters:\n", " -----------\n", " df (dataframe): Data to be plotted\n", " x (str): Name of column to be plotted\n", " y (str): Name of column to be plotted\n", " figsize (tup): Tuple of size \n", " xlabel (str): Label x axis\n", " ylabel (str): Label y axis\n", " title (str): Title \n", " \"\"\"\n", " \n", " if not xlabel:\n", " xlabel = x\n", " if not ylabel:\n", " ylabel = y\n", " if not title:\n", " title = x + ' vs. ' + y\n", " \n", " plt.figure(figsize=figsize)\n", " xseries = df[x]\n", " yseries = df[y]\n", " plt.xlabel(xlabel)\n", " plt.ylabel(ylabel)\n", " plt.title(title)\n", " plt.plot(xseries,yseries, 'ro')\n", " plt.show()\n", " \n", "def multiple_scatter_plots(df, to_plot, figsize=(10, 5), markersize=2, max_row=2):\n", " \"\"\" Plots a scatterplot\n", " \n", " Parameters:\n", " -----------\n", " df (dataframe): Data to be plotted\n", " to_plot (list of tuples): Each tuples contains the column name of what you\n", " want to plot on the x and y axis respectively\n", " figsize (tup): Width and length of figures\n", " marketsize (int): Size of dots\n", " max_row (int): Number of plots per row\n", " \n", " \"\"\"\n", " # Initialize values and create figure\n", " number_of_plots = len(to_plot)\n", " max_column = math.ceil(number_of_plots / max_row)\n", " fig, axs = plt.subplots(nrows=max_row, ncols=max_column, figsize=figsize)\n", " \n", " # Flatten list if possible\n", " try:\n", " axs = [item for sublist in axs for item in sublist]\n", " except:\n", " pass\n", " \n", " # Plot subplots\n", " for i in range(len(to_plot)):\n", " x = to_plot[i][0]\n", " y = to_plot[i][1]\n", " axs[i].plot(df[x], df[y], 'ro', markersize=markersize)\n", " axs[i].set_xlabel(x)\n", " axs[i].set_ylabel(y)\n", " axs[i].set_title(x + ' vs. ' + y)\n", " \n", " # Remove plots that are empty\n", " empty_plots = abs(number_of_plots - (max_column * max_row))\n", " if empty_plots > 0:\n", " for i in range(1, empty_plots + 1, 1):\n", " axs[-1].remove()\n", " \n", " plt.tight_layout(pad=2, h_pad=5)\n", " plt.show()\n", " \n", "def plot_feature_importance(dataset, X, y):\n", " \"\"\" Plot the importance of features in X\n", " \n", " Parameters:\n", " -----------\n", " dataset (type): Dataset only containing relevant columns for X and y\n", " X (numpy array): Matrix of features\n", " y (numpy array): Target feature\n", " \n", " \"\"\"\n", " \n", " # Create random forest classifier\n", " forest = RandomForestClassifier(n_estimators=250, random_state=42)\n", " forest.fit(X, y)\n", "\n", " # Calculate the relative importances of reatures\n", " importances = forest.feature_importances_\n", " std = np.std([tree.feature_importances_ for tree in forest.estimators_],axis=0)\n", " indices = np.argsort(importances)[::-1]\n", "\n", " # Plot the feature importances of the forest\n", " plt.figure(figsize=(10, 4))\n", " plt.title(\"Feature importances\")\n", " plt.bar(range(X.shape[1]), importances[indices],\n", " color=\"r\", yerr=std[indices], align=\"center\")\n", " plt.xticks(range(X.shape[1]), dataset.columns[indices], rotation=70)\n", " plt.xlim([-1, X.shape[1]])\n", " plt.ylim([0, 0.4])\n", " plt.show()\n", " \n", "def plot_decision_tree(dataset, X, y, max_depth=3):\n", " \"\"\" Plot decision tree to gain insight to feature importances\n", " \n", " Parameters:\n", " -----------\n", " dataset (type): Dataset only containing relevant columns for X and y\n", " X (numpy array): Matrix of features\n", " y (numpy array): Target feature\n", " max_depth (int): Depth of the decision tree\n", " \n", " \"\"\"\n", "\n", " dtree=DecisionTreeClassifier(max_depth=max_depth)\n", " dtree.fit(X,y)\n", "\n", " dot_data = export_graphviz(dtree, out_file=None, \n", " feature_names=dataset.columns[:-1], \n", " class_names=[\"0\", \"1\"], \n", " filled=True, rounded=True, \n", " special_characters=True) \n", " graph = graphviz.Source(dot_data) \n", " return graph\n", "\n", "def cv_multiple_classifiers(X, y, classifiers = [RandomForestClassifier()], n_splits = 5, \n", " print_process = False):\n", " \"\"\"\n", " \n", " Parameters:\n", " -----------\n", " X (numpy array): Matrix of features\n", " y (numpy array): Target feature\n", " n_splits (int): Number of splits for cross validation\n", " \n", " Returns:\n", " --------\n", " log (dataframe): Dataframe of the results\n", " \n", " \"\"\"\n", " \n", " # Dataframe to track results\n", " log_cols = [\"Classifier\", \"Accuracy\"]\n", " log = pd.DataFrame(columns=log_cols)\n", " acc_dict = {name.__class__.__name__: 0 for name in classifiers}\n", "\n", " # Method of cross validation\n", " sss = StratifiedShuffleSplit(n_splits=n_splits, test_size=0.3, random_state=42)\n", " fold = 1\n", "\n", " # Cross-validation for each classifier \n", " for train_index, test_index in sss.split(X, y):\n", " if print_process:\n", " print('Fold {}'.format(fold))\n", " X_train, X_test = X[train_index], X[test_index]\n", " y_train, y_test = y[train_index], y[test_index]\n", "\n", " for clf in classifiers:\n", " name = clf.__class__.__name__\n", " clf.fit(X_train, y_train)\n", " train_predictions = clf.predict(X_test)\n", " acc = accuracy_score(y_test, train_predictions)\n", " acc_dict[name] += acc\n", "\n", " fold += 1\n", "\n", " # Average out accuracies over number of splits\n", " for clf in acc_dict:\n", " acc_dict[clf] = acc_dict[clf] / n_splits\n", " log_entry = pd.DataFrame([[clf, acc_dict[clf]]], columns=log_cols)\n", " log = log.append(log_entry)\n", "\n", " # Plot results\n", " plt.xlabel('Accuracy')\n", " plt.title('Classifier Accuracy')\n", " sns.set_color_codes(\"muted\")\n", " sns.barplot(x='Accuracy', y='Classifier', data=log, color=\"b\")\n", " \n", " return log\n", "\n", "def select_features(df, features = [], target = 'multiplier_binary'):\n", " \"\"\"\n", " \n", " Parameters:\n", " -----------\n", " df (dataframe): Dataframe that you want to select features from\n", " features (list): List of the names (str) of the features you want\n", " to extract as your X feature matrix\n", " target (str): The column name of the feature that you want to extract\n", " \n", " Returns:\n", " --------\n", " dataset (dataframe): Dataframe containig the features and target variables\n", " X (numpy matrix): Numpy matrix of feature values\n", " y (numpy array): Numpy array of the target values\n", " \n", " \"\"\"\n", " \n", " # Select a standard set of features if no other are given\n", " if len(features) == 0:\n", " features = ['LotNr', 'Allocate', 'EstValue', 'StartPrice','Followers', 'Bank', 'Dealer', \n", " 'Liquidator', 'Volunteer', 'LotsSale','LotsCtgry', 'Forced','SP.EV','Duration', \n", " 'Year', 'Category', 'Sale_nr', 'Categories_per_sale']\n", " features.append(target)\n", " dataset = df[features]\n", "\n", " # Get X and y matrices\n", " X = dataset.iloc[:, list(range(len(dataset.columns)-1))].values\n", " y = dataset.iloc[:, -1].values\n", " \n", " return dataset, X, y\n", "\n", "def loo_cv(dataset, clf=RandomForestClassifier(n_estimators=100), adjust_folds=True):\n", " \"\"\" Leave one-out cross validation\n", " \n", " An implementation of leave one-out cross validation in which the folds\n", " are determined by the sale number as we want to predict the multiplier of\n", " sales we have not previously seen. Thereby creating an average accuracy score\n", " that better represents reality. Folds in which the y_test shows very little\n", " rows are removed as those are likely outliers. \n", " \n", " Parameters:\n", " -----------\n", " dataset (dataframe): Dataframe with only the features used\n", " in the classification task including the target.\n", " clf (classifier): Classifier to be used for the Leave-one out \n", " cross validation\n", " \n", " Returns:\n", " --------\n", " results (list): List of accuracies per fold\n", " info_folds (dict): Dictionary of lengths of y_test per fold with the intent\n", " to remove folds that with less than 50 rows\n", " \"\"\"\n", " \n", " nr_folds = len(dataset['Sale_nr'].unique())\n", " info_folds = {fold: '' for fold in range(1, nr_folds+1)}\n", " results = []\n", "\n", " for sale_nr in range(1, nr_folds+1):\n", " X_train = dataset[dataset['Sale_nr']!= sale_nr].iloc[:,0:-1].values\n", " X_test = dataset[dataset['Sale_nr']== sale_nr].iloc[:,0:-1].values\n", "\n", " y_train = dataset[dataset['Sale_nr']!= sale_nr].iloc[:,-1].values\n", " y_test = dataset[dataset['Sale_nr']== sale_nr].iloc[:,-1].values\n", "\n", " name = clf.__class__.__name__\n", " clf.fit(X_train, y_train)\n", " train_predictions = clf.predict(X_test)\n", " acc = accuracy_score(y_test, train_predictions)\n", "\n", " results.append(acc)\n", " info_folds[sale_nr] = len(y_test)\n", " \n", " if adjust_folds:\n", " folds_to_remove = [fold[0]-1 for fold in info_folds.items() if fold[1]<50]\n", " results = [value for index, value in enumerate(results) if index not in folds_to_remove]\n", " for fold in folds_to_remove:\n", " del info_folds[fold+1]\n", " \n", " return results, info_folds\n", "\n", "def three_classes(row):\n", " \"\"\" Create 3 classes of the multiplier variable:\n", " 0 for multiplier < 1\n", " 1 for multiplier between 1 and 2\n", " 2 for multiplier larger than 2\n", " \"\"\"\n", " if row['multiplier'] < 1:\n", " return 0\n", " elif row['multiplier'] > 1.5:\n", " return 2\n", " else:\n", " return 1\n", "\n", "def plot_multiplier_distribution():\n", " \"\"\" A quick plot to demonstrate outliers\n", " in the data with respect to the variable\n", " multipliers. \n", " \"\"\"\n", " \n", " plt.figure()\n", " plt.subplot(121)\n", " plt.hist(df['multiplier'], 60, facecolor='g', alpha=0.75)\n", " plt.xlabel('Multiplier')\n", " plt.ylabel('Count')\n", " plt.title('Histogram of Multiplier')\n", " plt.grid(True)\n", "\n", " plt.subplot(122)\n", " plt.hist(df['multiplier'], 60, facecolor='g', alpha=0.75)\n", " plt.xlabel('Multiplier')\n", " plt.ylabel('Count')\n", " plt.title('Zoomed in Version')\n", " plt.axis([0, 60, 0, 10])\n", " plt.grid(True)\n", " plt.tight_layout(pad=2, h_pad=5)\n", "\n", " plt.show()\n", " \n", "def resolve_skewedness(df):\n", " \"\"\" Resolving the skewedness with features \n", " that show a skew over .65 and normalizing\n", " those features with a log(1+p) transform. \n", " \n", " \"\"\"\n", " # # Selecting only the numeric features\n", " numeric_feature_names = df.dtypes[df.dtypes != \"object\"].index\n", "\n", " # # Calculates the skewedness of the features and then gets the features with a skewedness above a certain threshold\n", " skewed_features = df[numeric_feature_names].apply(lambda x: skew(x.dropna()))\n", " skewed_features = list(skewed_features[skewed_features > 0.65].index)\n", " skewed_features.remove('multiplier')\n", " skewed_features.remove('multiplier_three')\n", " skewed_features.remove('WinningBid')\n", " skewed_features.remove('ResultDifference')\n", "\n", " df[skewed_features] = np.log1p(df[skewed_features])\n", " \n", " return df\n", "\n", "def rmse_cross_validation(model, X, y):\n", " \"\"\" Cross validation using RMSE as error measure\n", " \"\"\"\n", " rmse= np.sqrt(-cross_val_score(model, X, y, scoring=\"neg_mean_squared_error\", cv = 5))\n", " return(rmse)\n", "\n", "def rmse(y_true, y_pred):\n", " \"\"\" Calculate RMSE between predicted and true values\n", " \"\"\"\n", " return np.sqrt(mean_squared_error(y_true, y_pred))\n", "\n", "def grid_search(param_grid, estimator):\n", " \"\"\" Gridsearch implementation\n", " \"\"\"\n", " grid = GridSearchCV(estimator,param_grid,refit=True,verbose=2)\n", " grid.fit(X, y)\n", " print(grid.best_params_)\n", " print(grid.best_estimator_)\n", " \n", "def prepare_data_optimization(target = 'multiplier_binary'):\n", " \"\"\" All preprocessing steps that are necessary for optimization\n", " \n", " This function preprocesses the data, extract features, outlier removal, \n", " feature engineering etc. Basically, it does all steps seen in this\n", " notebook until the actual optimization. Thus, this also includes\n", "\n", " \n", " Returns:\n", " --------\n", " df (dataframe): Preprocessed full data\n", " to_optimize (dataframe): Only the data from sale_nr 10 \n", " which we want to optimize\n", " baseline (int): The sum of all 1's in the to_optimize dataset\n", " so we know what to beat. \n", " X (numpy array): nD Array of features for training\n", " y (numpy array): 1D Array of features for training\n", " \n", " \"\"\"\n", " # Preprocess data\n", " df = preprocess_data()\n", " \n", " # Remove outliers\n", " df = df[df['multiplier'] <= 10]\n", " df = df[df['EstValue'] < 15000]\n", " \n", " # We choose to optimize sale_nr 10 as that sale has sufficient lots available to optimize\n", " to_optimize = df.loc[df.Sale_nr == 10, :].copy()\n", " \n", " if target == 'multiplier':\n", " baseline = np.sum(to_optimize.multiplier.values * to_optimize.EstValue.values)\n", " else:\n", " baseline = np.sum(to_optimize.multiplier_binary)\n", " \n", " # Initialize Decision variables\n", " to_optimize.LotNr = range(1, len(to_optimize)+1, 1)\n", " to_optimize.Duration = 50\n", " to_optimize.Part_of_Day = 1\n", " to_optimize.StartPrice = to_optimize.EstValue / 10\n", " \n", " # Select only features for prediction, sale_nr is removed to prevent overfitting\n", " features = ['LotNr', 'StartPrice','Duration','Part_of_Day','Allocate','EstValue','Followers', \n", " 'Bank','Dealer','Liquidator','Volunteer','LotsSale','LotsCtgry','Forced','Year',\n", " 'Category', 'Categories_per_sale','CtgryLotNr', 'RelStartPriceCtgry', \n", " 'RelDurationCtgry', 'RelLotNr','RelCtgryLotNr']\n", " to_optimize = to_optimize[features]\n", "\n", " # Create X and y for training the model by selecting all sales except sale_nr 10\n", " df_train = df.loc[df.Sale_nr != 10, :].copy()\n", " df_train = df[features + [target]]\n", " dataset, X, y = select_features(df_train, features, target)\n", " \n", " return df, to_optimize, baseline, X, y\n", "\n", "def heuristic_probabilities(row, feature, interval):\n", " \"\"\" Heuristic to optimize individual features\n", " \n", " The heuristic optimizes the value of the feature variable\n", " by iterating over values as defined by the interval. Thus,\n", " a starting value is selected and added by the interval until\n", " it improves. If after 10 iterations there has been no improvement,\n", " it resets back to the starting value and goes the other direction. \n", " For example, if adding 5 to the starting price of 40 doesn't yield \n", " any improvement, reset back to the starting price of 40 and substract\n", " 5 instead. \n", " \n", " Parameters:\n", " -----------\n", " row (numpy array): Array of features to optimize. \n", " feature (string): The feature to optimize\n", " interval (float): Intervals in which to optimize the feature\n", " \n", " Returns:\n", " --------\n", " row (numpy array): Array of features that are optimized. \n", " \n", " \"\"\" \n", " best_probability = float(clf.predict_proba(row.reshape(1, -1)).flatten()[1])\n", " feature_index = to_optimize.columns.get_loc(feature) # Global, change this!\n", " est_value = row[to_optimize.columns.get_loc('EstValue')]\n", "\n", " start_row = row.copy()\n", " temp_row = row.copy()\n", " \n", " k = 0\n", " count_consecutive = 0\n", " list_probabilities = []\n", " \n", " while k < 20: \n", " temp_row[feature_index] += interval\n", " \n", " # If feature to optimize is startprice, then it cannot be higher than EstValue\n", " # In all other cases it only needs to be higher than zero as negative are impossible\n", " if ((feature == 'StartPrice') and (temp_row[feature_index] < est_value)\n", " and (temp_row[feature_index] > 0)):\n", " new_probability = float(clf.predict_proba(temp_row.reshape(1, -1)).flatten()[1]) \n", " elif (feature != 'StartPrice') and (temp_row[feature_index] > 0):\n", " new_probability = float(clf.predict_proba(temp_row.reshape(1, -1)).flatten()[1]) \n", " else:\n", " return row, list_probabilities\n", " \n", " # Changes direction of interval if there hasn't been improvement\n", " # after 10 consecutive iterations. \n", " if new_probability > best_probability:\n", " row = temp_row.copy()\n", " list_probabilities.append(new_probability - best_probability)\n", " best_probability = new_probability\n", " count_consecutive = 0\n", " else:\n", " count_consecutive += 1\n", " if count_consecutive == 10:\n", " interval = interval * -1\n", " temp_row = start_row.copy()\n", " k = 0\n", " k += 1\n", " return row, list_probabilities\n", "\n", "def evalOneMax(individual, temp_to_optimize, target):\n", " \"\"\" Evaluation Function to be used with DEAP.\n", " It returns the sum of 1s for the target. \n", " \"\"\"\n", " for index, value in enumerate(individual):\n", " temp_to_optimize.loc[index, target] = value\n", " return np.sum(clf.predict(temp_to_optimize.values)),\n", "\n", "def initialize_deap(to_optimize, target, min_val, max_val):\n", " \"\"\" \n", " Registrates the following:\n", " attr_bool: Values (genes) taken between 0 and 300\n", " individual: a set of genes that correspond to all starting prices for the dataframe to optimize\n", " population: a list of individuals\n", " evaluate: register the goal / fitness function\n", " mate: the crossover operator\n", " mutate: a mutation operator with a probability to flip each attribute/gene of 0.05\n", " select: selecting individuals for breeding next generation\n", " \"\"\"\n", " temp_to_optimize = to_optimize.copy()\n", " temp_to_optimize = temp_to_optimize.reset_index(drop=True)\n", " \n", " creator.create(\"FitnessMax\", base.Fitness, weights=(1.0,))\n", " creator.create(\"Individual\", list, fitness=creator.FitnessMax)\n", " toolbox = base.Toolbox()\n", " toolbox.register(\"attr_bool\", random.randint, min_val, max_val)\n", " toolbox.register(\"individual\", tools.initRepeat, creator.Individual, toolbox.attr_bool, len(to_optimize))\n", " toolbox.register(\"population\", tools.initRepeat, list, toolbox.individual)\n", " toolbox.register(\"evaluate\", evalOneMax, temp_to_optimize = temp_to_optimize, target = target)\n", " toolbox.register(\"mate\", tools.cxTwoPoint)\n", " toolbox.register(\"mutate\", tools.mutFlipBit, indpb=0.05)\n", " toolbox.register(\"select\", tools.selTournament, tournsize=3)\n", " return toolbox, temp_to_optimize\n", "\n", "def heuristic_ga(to_optimize, target, min_val=0, max_val=300):\n", " \"\"\" A genetic algorithm for optimization of the target. \n", " \n", " Code was adopted from:\n", " https://github.com/DEAP/deap/blob/master/examples/ga/onemax.py\n", " \n", " Parameters:\n", " -----------\n", " to_optimize (dataframe): The dataframe to be optimized\n", " target (str): The target column to optimize\n", " min_val (float): Minimum value (>= 0) the target can take\n", " max_val (float): Maximum value (> min_val) the target can take\n", " \n", " Returns\n", " to_optimize (dataframe): Dataframe with the target optimized \n", " \"\"\"\n", " random.seed(64)\n", " \n", " # create an initial population of 300 individuals\n", " toolbox, temp_to_optimize = initialize_deap(to_optimize, target, min_val, max_val)\n", " pop = toolbox.population(n=300)\n", "\n", " # CXPB is probability with which two individuals are crossed\n", " # MUTPB is the probability for mutating an individual\n", " CXPB, MUTPB = 0.5, 0.2\n", " \n", " print(\"Start of evolution\")\n", " \n", " # Evaluate the entire population\n", " fitnesses = list(map(toolbox.evaluate, pop))\n", " for ind, fit in zip(pop, fitnesses):\n", " ind.fitness.values = fit\n", " \n", " print(\" Evaluated %i individuals\" % len(pop))\n", "\n", " # Extracting all the fitnesses of \n", " fits = [ind.fitness.values[0] for ind in pop]\n", "\n", " # Variable keeping track of the number of generations\n", " g = 0\n", " \n", " # Begin the evolution\n", " while max(fits) < 100 and g < 1000:\n", " g = g + 1\n", " print(\"-- Generation %i --\" % g)\n", " \n", " # Select and clone the next generation individuals\n", " offspring = toolbox.select(pop, len(pop))\n", " offspring = list(map(toolbox.clone, offspring))\n", " \n", " # Apply crossover and mutation on the offspring\n", " for child1, child2 in zip(offspring[::2], offspring[1::2]):\n", "\n", " # cross two individuals with probability CXPB\n", " if random.random() < CXPB:\n", " toolbox.mate(child1, child2)\n", "\n", " # fitness values of the children\n", " # must be recalculated later\n", " del child1.fitness.values\n", " del child2.fitness.values\n", "\n", " for mutant in offspring:\n", "\n", " # mutate an individual with probability MUTPB\n", " if random.random() < MUTPB:\n", " toolbox.mutate(mutant)\n", " del mutant.fitness.values\n", " \n", " # Evaluate the individuals with an invalid fitness\n", " invalid_ind = [ind for ind in offspring if not ind.fitness.valid]\n", " fitnesses = map(toolbox.evaluate, invalid_ind)\n", " for ind, fit in zip(invalid_ind, fitnesses):\n", " ind.fitness.values = fit\n", " \n", " print(\" Evaluated %i individuals\" % len(invalid_ind))\n", " \n", " # The population is entirely replaced by the offspring\n", " pop[:] = offspring\n", " \n", " # Gather all the fitnesses in one list and print the stats\n", " fits = [ind.fitness.values[0] for ind in pop]\n", " \n", " length = len(pop)\n", " mean = sum(fits) / length\n", " sum2 = sum(x*x for x in fits)\n", " std = abs(sum2 / length - mean**2)**0.5\n", " \n", " print(\" Min %s\" % min(fits))\n", " print(\" Max %s\" % max(fits))\n", " print(\" Avg %s\" % mean)\n", " print(\" Std %s\" % std)\n", " \n", " print(\"-- End of (successful) evolution --\")\n", " \n", " best_ind = tools.selBest(pop, 1)[0]\n", " temp_to_optimize.loc[:, target] = best_ind\n", " return temp_to_optimize\n", "\n", "\n", "def print_results(data, clf):\n", " \"\"\" Print final result of heuristics\n", " \n", " It prints both the sum of 1s as well as the sum of \n", " belonging to the first class.\n", " \n", " Parameters:\n", " -----------\n", " data (list of tuples): Each tuple indicates the df with the corresponding name\n", " E.g. results(data = [(df, 'Heuristic'), (df2, 'Heuristic 2'), clf])\n", " clf (classifier): Classifier to be used for calculating results\n", " \n", " \"\"\"\n", " for df, name in data:\n", " print(name)\n", " sum_1s = np.sum(clf.predict(df.values))\n", " sum_probabilities = np.sum([x[1] if x[1] > 0.5 else 0 for x in clf.predict_proba(df.values)])\n", " print('Sum of 1s: {}'.format(sum_1s))\n", " print('Sum of probs that class is 1: {}'.format(sum_probabilities))\n", " print()\n", "\n", "def validate_heuristic_results(clf, df, baseline, percentage=30, iterations=100):\n", " \"\"\" Validation of results after using heuristic\n", " \n", " The issue with using a classifier is that it is only\n", " accurate for a certain percentage of items. For that \n", " reason optimizing might be an issue. For example,\n", " if a model is only accurate for 80% of a binary predictor, \n", " then 80% of the optimized values are likely to be correct\n", " and 20% likely incorrect. This function reverts x% of the \n", " target (e.g. 1 to 0 and 0 to 1) as a way to simulate having\n", " x% of the target classified incorrectly. Then the baseline\n", " is again calculated. This is average over a set amount of \n", " instances/iterations. \n", " \n", " Parameters:\n", " -----------\n", " clf (model): Model that is used for prediction\n", " df (dataframe): Dataframe that is optimized\n", " baseline (int): Baseline with which to compare (sum of 1s)\n", " percentage (float): percentage to be swapped\n", " iterations (int): Number of iterations to average over\n", " \"\"\"\n", " \n", " temp = list(clf.predict(df.values))\n", " indices = [np.random.choice(range(len(temp)), int(len(temp)/100*percentage), \n", " replace=False) for i in range(iterations)]\n", " multiple_tests = []\n", "\n", " for sample in indices:\n", " # Predict scores and invert them according to the sample\n", " result = list(clf.predict(df.values))\n", " for index in sample:\n", " result[index] = (result[index] * -1) + 1\n", "\n", " multiple_tests.append(np.sum(result))\n", "\n", " print('Baseline: \\t{}'.format(baseline))\n", " print('Optimization: \\t{}'.format(np.mean(multiple_tests)))" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%html\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Preprocess Data \n", "[Back to Table of Contents](#table)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Steps taken:**\n", "* Load and merge the 2014 and 2015 files\n", "* Extract part of day as a single variable and remove columns\n", "* Create a binary feature of the multipler variable\n", "* Create category based on the number of lots per category (those are unique and therefore represent a category)\n", "* Create Sale number based on the number of lost per sale (those are unique and therefore represent a lot)\n", "* Create categories per sale" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "df = preprocess_data()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below you can see the data as was given to me without additional preprocessing of the data. The main purpose is to optimize the feature *\"multiplier\"* by finding optimal values for the decision variables. " ] }, { "cell_type": "code", "execution_count": 49, "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", "
multiplierLotNrAllocateEstValueStartPriceFollowersBankDealerLiquidatorVolunteerLotsSaleLotsCtgryForcedSP.EVDurationYearPart_of_Daymultiplier_binaryCategory
01.30000060700400190100117743600.571429670211
10.61666770600350120100117743600.583333670201
20.600000901500600190100117743600.400000670201
30.833333100300150200100117743600.500000670201
40.60000011050030090100117743600.600000680201
\n", "
" ], "text/plain": [ " multiplier LotNr Allocate EstValue StartPrice Followers Bank Dealer \\\n", "0 1.300000 6 0 700 400 19 0 1 \n", "1 0.616667 7 0 600 350 12 0 1 \n", "2 0.600000 9 0 1500 600 19 0 1 \n", "3 0.833333 10 0 300 150 20 0 1 \n", "4 0.600000 11 0 500 300 9 0 1 \n", "\n", " Liquidator Volunteer LotsSale LotsCtgry Forced SP.EV Duration \\\n", "0 0 0 1177 436 0 0.571429 67 \n", "1 0 0 1177 436 0 0.583333 67 \n", "2 0 0 1177 436 0 0.400000 67 \n", "3 0 0 1177 436 0 0.500000 67 \n", "4 0 0 1177 436 0 0.600000 68 \n", "\n", " Year Part_of_Day multiplier_binary Category \n", "0 0 2 1 1 \n", "1 0 2 0 1 \n", "2 0 2 0 1 \n", "3 0 2 0 1 \n", "4 0 2 0 1 " ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df.columns[:-10]].head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Newly created features** \n", "Several new features were created based on the initial set of features:\n", "\n", "| Feature | Description \n", "|-|------|\n", "| Multiplier_binary | The multiplier variable in binary format (0 if value < 1 and 1 if value >= 1)|\n", "| Category | The number of the category for a certain item|\n", "| Sale_nr | The number of the sale|\n", "| Categories_per_sale | The number of categories per sale|\n", "| CtgryLotNr | Ordering of Lots within a category |\n", "| RelStartPriceCtgry | Relative starting price with regards to the category |\n", "| RelDurationCtgry | Relative duration with regards to the category |\n", "| RelLotNr | LotNr divided by LotsSale |\n", "| RelCtrgyLotNr | Relative amount of lots per category (CtgryLotNr / LotsCtgry) |\n", "| WinningBid | The winning bid (EstValue * multiplier) |\n", "| ResultsDifference | Difference between winning bid and est. value | " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. Exploration \n", "[Back to Table of Contents](#table)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have no missing values that we have to worry about. " ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isnull().values.any()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It turns out there is a lot of data missing. The number of lots in sale indicate how many lots there should be in a sale. \n", "However, when you actually count the number of lots, there seem to be some missing. " ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Lots Expected: 1177, \tLots in df: 783, \t Lots missing: 394\n", "Lots Expected: 1411, \tLots in df: 979, \t Lots missing: 432\n", "Lots Expected: 95, \tLots in df: 89, \t Lots missing: 6\n", "Lots Expected: 1223, \tLots in df: 765, \t Lots missing: 458\n", "Lots Expected: 355, \tLots in df: 36, \t Lots missing: 319\n", "Lots Expected: 905, \tLots in df: 767, \t Lots missing: 138\n", "Lots Expected: 219, \tLots in df: 157, \t Lots missing: 62\n", "Lots Expected: 295, \tLots in df: 226, \t Lots missing: 69\n", "Lots Expected: 955, \tLots in df: 730, \t Lots missing: 225\n", "Lots Expected: 422, \tLots in df: 378, \t Lots missing: 44\n", "Lots Expected: 460, \tLots in df: 243, \t Lots missing: 217\n", "Lots Expected: 191, \tLots in df: 158, \t Lots missing: 33\n", "Lots Expected: 68, \tLots in df: 34, \t Lots missing: 34\n", "Lots Expected: 17, \tLots in df: 14, \t Lots missing: 3\n", "Lots Expected: 1426, \tLots in df: 1152, \t Lots missing: 274\n", "Lots Expected: 462, \tLots in df: 390, \t Lots missing: 72\n", "Lots Expected: 646, \tLots in df: 507, \t Lots missing: 139\n", "Lots Expected: 1053, \tLots in df: 877, \t Lots missing: 176\n", "Lots Expected: 721, \tLots in df: 526, \t Lots missing: 195\n", "Lots Expected: 1329, \tLots in df: 996, \t Lots missing: 333\n", "Lots Expected: 89, \tLots in df: 62, \t Lots missing: 27\n", "Lots Expected: 1079, \tLots in df: 771, \t Lots missing: 308\n", "Lots Expected: 161, \tLots in df: 101, \t Lots missing: 60\n", "Lots Expected: 291, \tLots in df: 3, \t Lots missing: 288\n", "Lots Expected: 326, \tLots in df: 252, \t Lots missing: 74\n", "Lots Expected: 280, \tLots in df: 201, \t Lots missing: 79\n", "Lots Expected: 162, \tLots in df: 119, \t Lots missing: 43\n" ] } ], "source": [ "for i in df['LotsSale'].unique():\n", " nr_lots_suggested = i\n", " nr_lots_actual = len(df[df['LotsSale'] == i])\n", " print('Lots Expected: {}, \\tLots in df: {}, \\t Lots missing: {}'.format(nr_lots_suggested, nr_lots_actual, \n", " nr_lots_suggested - nr_lots_actual))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Most likely the data that is missing are lots that couldn't be sold as nobody would place a bid. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4. Visualizations \n", "[Back to Table of Contents](#table)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 4.1 Plots \n", "[Back to Table of Contents](#table)\n", "\n", "After some playing around, I found the following (possibly) interesting plots to show some form of relationship, \n", "at least to the human eye. Further exploration seems to be neccesary with regards to the Estimated value \n", "which is why next you can see the correlations. " ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nSZI08ExqJUmSNPBMaiVJkjTwTGolSZI08ExqJUmSNPBMaiVJkjTwTGolSZI08ExqJUmSNPBMaiVJ\nkjTwTGolSZI08ExqJUmSNPBMaiVJkjTwTGolSZI08ExqJUmSNPBMaiVJkjTwTGolSZI08ExqJUmS\nNPBMaiVJkjTwTGolSZI08ExqJUmSNPBMaiVJkjTwTGolSZI08ExqJUmSNPBMaiVJkjTwTGolSZI0\n8ExqJUmSNPBMaiVJkjTwTGolSZI08ExqJUmSNPBMaiVJkjTwTGolSZI08ExqJUmSNPBMaiVJkjTw\nTGolSZI08ExqJUmSNPBMaiVJkjTwTGolSZI08ExqJUmSNPBMaiVJkjTwTGolSZI08ExqJUmSNPBM\naiVJkjTwTGolSZI08ExqJUmSNPBMakVEbIuI55b3T4qIT/e7TcOi+t42ef7CiDiuzX1tjohXl/df\nEREXdaqdkgaXMVwqLO53A9Q5EbENOAC4u7L4UZl5Y39apKqIOAl4ZGb+SW1ZZq6azb4y8zPAZzrU\nNEnzgDF87iJiBfDpzDxwhtutAV6dmU+vLNsAHAc8JTMvLZc9EvifzFzUqTarc0xqh88LM/Pr/W7E\nbEXEXpl59/RrarZ8j6V5zRg+v/wC+CDw/OlWjIhFwKLMHO96q9SQSe0CEREvAv4aCOBK4PWZuWW2\n20XEq4A/yswXlutdDXw3M48pH19PEZyvjIhHAx8Dngj8HPiLzDyvXG8D8BvgocCzgKMiYgnwIeAg\n4HbgI5n5obp23QO4CXh6Zn6/XPYA4KflvsaBDcDTy/s/AJ41XbCpfcsH/g74U4oek9cDO4GPAvcH\nPpSZf1Vp/w2Z+Z7q9vW9BBHxAuDdwKKIOBq4JjMfHxGby/XPKHsKXgN8F1gNjAFvzMyLG7RzDZVe\nhZm+x8DAfmhKC5ExvL0YPs17cd/ydawCdgD/APwVcCjwSWDviPgVsCszl5WbnQm8PCKelZnfaLDP\nzcB/ACuA3wV+B7h6tm3U3FhTuwBExKOAs4G3AQ8Avgx8oQw8s93uG8AzImIkIkaBvYGnlds9HLgX\ncFVE3BP4GnAW8EDgWOC0iHhs5VAvB04G7g38O/Ap4LWZeW/gcGBTfdsy8y7gc+X+ao4BvpGZNwPv\nAG4o230ARUK5e9o3q/AgYB+KD4G/pAh8f0IR0J8B/GX5GtuWmV+hCJ7nZua9MvPxTVZ9CnAtRfL8\n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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "multiple_scatter_plots(df, [('EstValue', 'multiplier'),('StartPrice', 'multiplier'),\n", " ('Followers', 'multiplier'),('Followers', 'LotNr')], figsize=(10, 8), \n", " max_row=2)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scatter_plot(df, 'EstValue', 'StartPrice')" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZYAAAEGCAYAAABGnrPVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3X+cHXV97/HX2wQIEDBZAtuYxIQf\nQUUvCG4BpfVuwPIjUkMv2pKqrErNbaVcsLYKtRoFabXXq+D1FruVlIC4iEEukaIYQ1brVcLvIiFA\nIr+yJiZIiLCg2Ojn/jHfEyYn5+yvzNlzZvf9fDzO48x85zszn3N2vvs5851figjMzMyK8rJmB2Bm\nZmOLE4uZmRXKicXMzArlxGJmZoVyYjEzs0I5sZiZWaHGfWKRtEZSZ7PjaCZJfyRpg6R+SUc3aB1z\nJIWkiQPU6Zd0yBCXF5IOS8NfkvSxomK1sUXS45LeUmdaKbYdSd+S1NXsOIZqTCeWWhuUpPdI+kFl\nPCJeGxG9gyxn0H+KJfdZ4C8jYnJE3Fs9MX32zfnPL2mipC2SRnQhlKReSX+WL0vrf3S4y4qIP4+I\nS0YShw2NpHemxF/9Ckkfb3Z8IzXSbUfSP0u6ukb5kZJelNRWTISZiDgtIpYWucxGGtOJpSxaIGHN\nBtYMUmcbcFpufD7wTMMiGgUt8L2XRkRcmxL/jhdwAbAZ+Jcmh9cMVwH/TdK+VeVnAzdHxNbhLGys\nbYvjPrHk92okHSvpLknPpl/on0vVvp/et6VfaW+U9DJJfyfpifTL/WpJL88t9+w07WlJH6tazyck\nLZP0FUnPAu9J6/6RpG2SNkn6oqQ9c8sLSR+QtE7Sc5IukXRomudZSdfn61d9xpqxStpLUj8wAfgP\nST8Z4Ku6hqzRVJwN7PSLrXoPMX3Or9SI51Lg94Evpu/zi7nPWOneuip1U6xIn/d7kmbX+XxXSfpU\nbvx0Sfel7/KHko6sivEjku4Hnh9rDXq0pC7TzwNnRcSmVPYKScslbZW0XtL7c/X3knSZpI3pdZmk\nvdK0Tkl9kj6cts9Nks6QNF/SI2l5f5tb1sskXSjpJ6l9XZ/fQ5D07lzb++ggn2PHtpOL40O5ON5b\na76I+BHwU+DM3LImAH8KLB0sTr3UC3KOpCeB2yRNSv8Tnk7b7p2S2lP9HXv49dpz1XK7JD0p6eeD\n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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_multiplier_distribution()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 4.2 Correlations \n", "[Back to Table of Contents](#table)\n", "\n", "This is where things get really interesting. Why? Because, unfortunately, there is a high correlation between the Estimated Value and the Start Price. \n", "This basically indicates that the Starting Prices are likely to be a standard percentage of the Estimated Value. \n", "In other words, we cannot infer how changing the Starting Price would affect the multiplier as it is always the same, which is a **problem**" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqIAAAJbCAYAAAA/nPYiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XtYlHX+//HnDAKCIKgoHkhFzHRt\nRVF/aJSVp9SyWhMwNzy0rmWlhauipYUmiqfVgiQPqaWGR2qzsi0Pu7aYYpZlbZrioRADSg4Ccpz5\n/eG32QgtmUGHgdfjuua6mPu+P+/7c4+71/Xq87nv+2Mwm81mRERERERuMKO9OyAiIiIidZOCqIiI\niIjYhYKoiIiIiNiFgqiIiIiI2IWCqIiIiIjYhYKoiIiIiNiFgqiIiIiI2IWCqIiIiIjYhYKoiIiI\niNiFgqiIiIiI2IWCqIiIiIjYhYLoNUhKSmLx4sUAbN68mdLSUr755hvi4+Ov2iYuLo7ExMTfPU5E\nRESkrqpn7w44mhUrVvDggw/SqVMnOnXq9LvHX+txIiIiInVNnRsRTUpKYuLEifz1r3/lwQcfJCkp\niSeffJKBAweya9cuQkJCLMdGRkZy8OBBy/etW7eSlZVl2R4ZGQlAv379mDx5MsOHD2fGjBmYTCZL\nm18et3PnTsLDw3n44YctI6xxcXE8+uijjBgxgtTU1BvxE4iIiIjUCHUuiAIUFBSwatUq/vrXv5KY\nmEh8fDxz5swhKSnpN9uFhobStGlTli5dWmF7RkYGTz/9NNu2baOwsJBdu3ZVapuTk0NcXBzr1q0j\nMTGRjIwMkpOTAWjXrh2bNm0iICCg+i5SREREpIark1PzP0+Ve3p6EhAQgMFgwMvLi+Li4grHmc3m\na6rXokUL2rRpA0C3bt04ffp0pWO+++47Lly4wPjx44HLYfj7778HwN/f3+prEREREXFUdXJE1GAw\nXHVfWVkZBQUFlJSUcPLkySu2/eXUO1weEc3KygLgs88+o3379pXa+fn50aJFC9asWcP69et55JFH\nCAwMBMBorJP/DCIiIlLH1ckR0d8yatQowsPD8fPzo2XLlpX29+jRg/Hjx/Pkk09atrm4uPDiiy9y\n/vx5AgMD6du3L//9738rtGvcuDFjxowhIiKC8vJyWrVqxeDBg6/79YiIiIjUVAbztc4/y1WFhIRY\n7vcUERERkWujOWERERERsQuNiIqIiIiIXWhEVERERETsQkFUREREROxCT807mKPnc61u+8cWXtXY\nExERERHbaERUREREROxCQVRERERE7EJBVERERETsQkFUREREROxCQbSKDh48SGRk5DUdu2HDBkub\nHj16cP78ecu+xYsXk5SUdF36KCIiIuIIFESvo4SEBMvfzs7OzJgxA60fICIiInKZgmg1SE5OJjQ0\nlEceeYSnnnqKvLw8EhISyM3NJTo6GoBevXrh5eXFxo0bK7RNS0tj6NChREREsGrVKjv0XkRERMQ+\nFERtZDabmTVrFvHx8WzYsIGePXuSkJDAhAkT8PLysgRRgOjoaNatW8eZM2cq1MjKyuK1117jr3/9\n643tvIiIiIgdKYjaKDs7Gw8PD3x9fQHo2bMnJ06cuOKxjRo14tlnn2X69OmYTCbLdj8/P1xcXG5I\nf0VERERqCgVRGzVq1Ij8/HwyMzMBSElJoW3btgBXvB+0b9+++Pv789Zbb1m2GY36ZxAREZG6R0t8\nWiE5OZlhw4ZZvj/22GNMnDgRg8GAl5cX8+fPByAgIIApU6YQGhpaof1zzz3HgQMHbmifRURERGoa\ng1mPcTsUrTUvIiIitYXmhEVERETELhRERURERMQuFERFRERExC50j6iIiIiI2IWemncwmbkFVrdt\n5tUAgNM/XrS6hr+Pp9VtRURERH5JU/MiIiIiYhcKoiIiIiJiFwqiIiIiImIXCqIiIiIiYhcKor+w\ncuVKbr/9doqLiwGIiIggNTWVuLg4EhMTq+UcH330ERkZGdVSS0RERMSRKYj+wo4dOxgyZAjvvffe\ndTvHG2+8QX5+/nWrLyIiIuIo9Pqm/3Pw4EFat27NiBEjmDp1KsOGDbvicbGxsRw+fBiA++67j9Gj\nR3PmzBlmzpxJaWkp9evXZ+nSpfz444/ExsZiMpnIy8tj5syZ5OXl8c033xAVFcWbb77J5s2beffd\ndzEYDAwZMoRRo0bdyEsWERERsSsF0f+zdetWQkNDadeuHS4uLnzxxReVjtm7dy9paWls2bKFsrIy\nRo4cSa9evVi2bBnjx4+nT58+vP/++/z3v/8lLy+PqKgobrnlFnbs2EFSUhJz586lU6dOREdH8913\n3/H+++/z5ptvYjAYGDNmDLfffjvt2rWzw9WLiIiI3HgKokBubi779u3jwoULrF+/nvz8fDZs2FDp\nuNTUVHr06IHBYMDZ2ZnAwEBSU1M5ffo03bp1A2DIkCEAfPrppyxfvpz69etTUFCAh4dHhVrffvst\n6enpjBkzxtKH7777TkFURERE6gwFUeCdd97hoYceIioqCoBLly7Rr18/GjVqVOG4gIAAkpKSGDNm\nDKWlpXz++ef86U9/IiAggKNHj3LbbbfxzjvvkJubS1JSEosXLyYgIICXX36Zc+fOAWAwGDCbzbRr\n14727duzevVqDAYD69ato0OHDjf82kVERETsRUGUy9PyCxcutHx3c3Nj4MCBbNu2rcJxd999Nykp\nKYSHh1NaWsqgQYPo3Lkz06ZN4/nnnychIYH69euzaNEiysrKeOKJJ2jSpAnNmzcnOzsbgG7dujFt\n2jTWrFlD7969efjhhykpKaFLly74+vre0OsWERERsSeD2Ww227sTcu201ryIiIjUFnp9k4iIiIjY\nhYKoiIiIiNiFgqiIiIiI2IXuERURERERu9BT8w7mfI71Dyu18L78sNKuE1lW1+h/c1MASn9ItbqG\nc/MAq9uKiIhI7aGpeRERERGxCwVREREREbELBVERERERsQsFURERERGxizoXRA8ePEjv3r2JiIiw\nfCZNmnTFY9PT09mzZw/fffcdffv25ZcvGCgtLaVv375cvHjlVYri4uJITEy8LtcgIiIiUhvUyafm\ne/XqxdKlS3/3uAMHDnDq1Cn69u1L69atSUlJITg4GIA9e/YQHByMp6eWvBQRERGxRp0MoleyceNG\n3n77bYxGI0FBQUyZMoWVK1dSVFREt27dCAsL4+2337YE0e3bt/PEE08AsGTJEr766isKCgoICAhg\n/vz5lroHDx5k06ZNluAbEhJCcnIy58+fZ9asWRQXF+Pq6sqLL75IixYtbvyFi4iIiNhJnQyiBw4c\nICIiwvL9zjvvZOfOncyaNYuuXbvy5ptvYjabGT9+PKdOnaJfv36UlJTw97//naKiIvLy8vjxxx/p\n2rUr+fn5NGzYkLVr12Iymbj33nvJyMj43T4sWLCAiIgI7rzzTj755BMWL17MkiVLrudli4iIiNQo\ndTKIXmlqvk+fPqxZs4bFixfTtWtXfr3glIuLC/3792fXrl2kp6fz0EMPAeDq6sqFCxeYPHky7u7u\nFBYWUlpaetVz/1z322+/ZcWKFaxevRqz2Yyzs3M1X6WIiIhIzVYng+iVbNmyhdmzZ+Pq6spf/vIX\n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\ngAEkJyczYsQIzGYz8+bNY+3atbRu3Zp+/fqxf/9+wsLCMBqNBAUFERISYtV5FERFREREagFDNb6X\n3Gg0MmfOnArbAgICLH9PmjSJSZMm2XweBVERERGRWqA6R0RvFAVRERERkVqgOu8RvVEUREVERERq\ngep8av5GcbweW+HPf/4zn3zySYVtc+fOZevWrZWOTUtLIywsrMrnSE9PZ8+ePVb3UURERMQWRidD\nlT41QZ0IomFhYfzjH/+wfC8pKWHv3r3ce++91XaOAwcO8Nlnn1VbPREREZGqMBgNVfrUBHVian7Q\noEEsW7aMS5cu4ebmxu7duwkJCeHMmTO8+OKLODk54erqyosvvlihXd++fdm5cyeurq4sXryYdu3a\n0apVK1atWoWzszNpaWkMGTKE8ePHs3LlSoqKiujWrRt+fn7MnTsXAG9vb+bNm4enpydLlizh0KFD\nmM1mxowZw+DBg4mIiKBRo0bk5eXx2muv4eTkZI+fSERERByc0QGn5utEEHV1daVfv3589NFH3H//\n/SQlJfHMM88wc+ZMYmJi6NSpE7t27SI2NpZp06b9br309HTeeecdSkpKuOOOO5gwYQLjx4/n1KlT\n9OvXj7CwMObNm0f79u3ZunUrq1evJigoiLS0NDZt2kRxcTFhYWGWd24NHTqUAQMGXO+fQURERGox\nPaxUg4WGhrJw4UKCg4PJy8ujc+fOZGZm0qlTJwB69uzJkiVLrtrebDZb/u7QoQP16tWjXr161K9f\nv9KxqampzJ49G4DS0lL8/f359ttv+frrr4mIiACgrKyM9PR0APz9taqOiIiI2EZBtAa75ZZbKCgo\n4I033uChhx4CoFmzZhw7doyOHTty6NAh2rZtW6GNi4sLmZmZ+Pn5cezYMcuLXA2Gyv/QRqMRk8kE\nXA6WCxYsoGXLlhw+fJisrCycnZ0JDg7mxRdfxGQysXz5cvz8/K5aT0RERKQqNDVfwz300EMsWrSI\nvXv3ApefnH/xxRcxm804OTkxb968CsePGzeO8ePH06pVKxo2bPibtTt06EBCQgKdO3cmOjqaqKgo\nysvLAYiJiaFt27akpKQwcuRICgsL6d+/Px4etq+VLiIiIgKOOSJqMP9yzllqPK01f5nWmq9Ia82L\niMinQ/pV6fge7+++Tj25dnVqRFRERESktnLEF9oriIqIiIjUAjXlJfVVoSAqIiIiUgvoHlERERER\nsYujDw+p0vF/THz/OvXk2mlE1MEc+i7b6rY9WzcC4Ks/W7+06a0b3wPgeGae1TVuadaQL9NzrW4P\n0KWlF0fP21bjjy28eCn5lE01ng5px8enfrKpxh3tmvDN2PttqtFp7TvVci3dZ31gU43DLw6yqb2I\niFivpizbWRUKoiIiIiK1gN7e+6vwAAAgAElEQVQjKiIiIiJ24Yj3iCqIioiIiNQCen2TiIiIiNiF\nweh4QdTxelxNDh48SGRk5DUdu2HDht/c/9ZbbzFq1CjGjh3LmDFj+M9//vObx4eEhFxzP0VERESu\nhdHJWKVPTaAR0WuQkJDAI488csV9Fy9eZPny5bz33nu4uLiQkZFBaGgo//rXvzA64H+ZiIiIiGPS\n1LyDS05OZtmyZbi6uuLt7c28efPYuHEjubm5REdHM3r0aGbMmEG9evVwcnJi4cKF+Pj4UF5eTmJi\nInfffTetW7dm165dGI1Gvv32W2JjYzGZTOTl5TFz5kyCgoIs5zt+/Dhz584FsJzP01PrfYuIiEjV\nOWIQdbweXydms5lZs2YRHx/Phg0b6NmzJwkJCUyYMAEvLy+io6PZv38/nTt3Zu3atTz++OPk5ubi\n5OTE2rVrOXv2LOPGjePuu+9m27ZtAJw8eZKoqCjWrVvH2LFjSUpKqnDOWbNm8cILL7B+/Xr69OnD\n6tWr7XHpIiIiUgsYjMYqfWoCjYj+n+zsbDw8PPD19QWgZ8+e/P3vf69wzPDhw1m1ahXjxo3D09OT\nyMhIMjIyKCoq4vnnnwfg9OnTjBs3ju7du9OsWTOWL19O/fr1KSgowMPDo0K91NRUZs+eDUBpaSn+\n/v434EpFRESkNjI4Odm7C1VWM+JwDdCoUSPy8/PJzMwEICUlhbZt2wKXR0sBdu/eTffu3Xn99dcZ\nNGgQq1ev5scff2TKlCnk5l5e5adVq1Y0atQIZ2dnYmJimDRpEgsWLKBDhw78ejVVf39/FixYwPr1\n65k6dSp33nnnjbtgERERqVUMTsYqfWqCOj0impyczLBhwyzfH3vsMSZOnIjBYMDLy4v58+cDEBAQ\nwJQpU5g0aRJTp04lLi4Oo9HIjBkz6Ny5M6NGjWL06NHUr1+f8vJyQkNDadeuHffffz9PPPEETZo0\noXnz5mRnV1yeMzo6mqioKMrLywGIiYm5cRcvIiIitYojPiRdZ4NocHAwKSkplbaHh4dX2rZ+/XrL\n35s3b660PzQ0lNDQ0Erbx44dy9ixYyttT05OBuDWW2+tUFtERETEWjVllLMq6mwQFREREalNFERF\nRERExC5qypPwVaEgKiIiIlILOOKIqMH860e5RURERMThnJ//ZJWObzHjlevUk2unEVEHcywjz+q2\nHX0bAlC4daHVNdxDpwFw+seLVtfw9/Hk41M/Wd0e4I52TaqlxqYvztlUY0Rgq2rpR/G/NtpUw/Wu\nP1dLP1YcPGtTjceC23AmarTV7dsueN2m84uI1GU1Zf34qlAQFREREakFdI+oiIiIiNiFI94jqiAq\nIiIiUgsoiIqIiIiIXTg5O9u7C1XmeNHZSgcPHiQyMvKajt2wYcNv7j9//jxPP/00ERERhIaGEh0d\nTUlJCXB55aXS0lKb+ysiIiJSFY641nzN6EUNk5CQcNV95eXlPPHEEzz66KOsX7+erVu3Uq9ePV5+\n+WUAVqxYgclkulFdFREREQEcM4jW6an55ORkli1bhqurK97e3sybN4+NGzeSm5tLdHQ0o0ePZsaM\nGdSrVw8nJycWLlzI2bNnad68OYGBgZY6U6dOxWQysXXrVrKysoiMjOSVV15h9uzZfPXVV/j4+HDu\n3DkSEhKIj48nJyeHnJwcbrnlFjp06MCf//xncnNzGTt2LElJSXb8RURERMRROeJT847X42piNpuZ\nNWsW8fHxbNiwgZ49e5KQkMCECRPw8vIiOjqa/fv307lzZ9auXcvjjz9Obm4umZmZ3HTTTRVqubq6\n4ubmRmhoKE2bNmXp0qXs3r2bnJwctm3bxrx58zh//rzl+F69erFp0ybGjRvH22+/DcC7777L0KFD\nb+hvICIiIrWHI46I1oxe2EF2djYeHh74+voC0LNnT06cOFHhmOHDh9OoUSPGjRvHxo0bcXJyomXL\nlvzwww+Vau3du7fCtlOnTtG1a1cAGjduTLt27Sz7/P39Abjpppto0KABJ0+eZMeOHTzwwAPVfp0i\nIiJSNyiIOpBGjRqRn59PZmYmACkpKbRt2xa4PFoKsHv3brp3787rr7/OoEGDWL16NV27diUtLY0v\nv/zScmx8fDyHDh0CwGAwYDKZuPnmmzly5AgAubm5nDlzxnJug8Fg+TssLIyEhAR8fX1p3Ljx9b5s\nERERqaUMRmOVPjVBnbpHNDk5mWHDhlm+P/bYY0ycOBGDwYCXlxfz588HICAggClTpjBp0iSmTp1K\nXFwcRqORGTNmYDQaeemll5gzZw6XLl2isLCQrl278swzzwDQo0cPxo8fzxtvvMG+ffsYMWIEPj4+\n1K9fH+crvFahf//+zJkzh0WLFt2YH0FERERqJYPRyd5dqLI6E0SDg4NJSUmptD08PLzStvXr11v+\n3rx5c6X9N910E6tWrbrieRYsWABAamoqPXr04IUXXiA7O5v77ruPRo0aERsbW+H48vJyWrVqRUhI\nSJWuR0RERKQCBwyiNWNcthZq0aIF7777LmFhYYwbN44pU6bg4uJS4ZjPPvuMsLAwnnjiCYw1ZIhc\nREREHJTRWLXPbzCZTDz//POEh4cTERHB2bNnr3jMuHHjSExMtLrLdWZE9EZzd3f/zfeRAgQFBbFj\nx44b1CMRERGpzQxO1TciumvXLkpKSti8eTNHjhwhNja2Uq5ZtmwZubm5Np1HQVRERESkNqjGqfnD\nhw9zxx13ANC1a1e++uqrCvs/+OADDAYDffr0sek8CqIOpqNvQ5truIdOs7mGv4+nTe3vaNfE5j5U\nR40Rga1qRD9c7/pzjejHY8FtbK7RdsHrNtcQERErVGMQzc/Px8PDw/LdycmJsrIy6tWrx7fffsu7\n777Lyy+/zCuvvGLTeRREHUxJTqbVbV28mwGw6N8nra4x9c72AOQXXrK6hoe7GyW5P1rdHsDFy4fi\ngos21XBt4Inp5AGbahjb9yJlUF+bavy/D/bg0u1Rm2qUfL6Gkk+221TDpfdDlB5826YazsEPcvey\nfVa33/vM5f+yjv/ktNU1nurtb3VbERFHVp2vZPLw8KCgoMDy3WQyUa/e5dj49ttvk5GRwejRozl3\n7hzOzs60atXKqtFRBVERERGR2qAaR0SDgoLYu3cvQ4YM4ciRI3To0MGyb9q0/82sxsXF4ePjY/UU\nvYKoiIiISG1QjUF0wIABJCcnM2LECMxmM/PmzWPt2rW0bt2afv36Vdt5FERFREREaoHqnJo3Go3M\nmTOnwraAgIBKx02cONGm8yiIioiIiNQGDvhCewXRq0hLS+P++++nc+fOlm3BwcE89dRT1+V8iYmJ\n/Pjjjzb/l4WIiIjUUQqitUv79u0rLPcpIiIiUlNV5wvtbxQF0SqKjY3l8OHDANx3332MHj2a6dOn\nk5OTQ05ODgkJCcTFxfHll19SWlrKxIkT6d+/P0uWLOHQoUOYzWbGjBnD4MGD+fTTT5k3bx5eXl4Y\njUa6du1q56sTERERh+WAy4UriP6GkydPEhERYfk+bNgw0tLS2LJlC2VlZYwcOZJevXoB0KtXL8aM\nGcNHH31EdnY227ZtIysriw0bNuDs7ExaWhqbNm2iuLiYsLAwQkJCmD9/PkuWLMHf358XXnjBXpcp\nIiIitYChnou9u1BlCqK/4ddT86tXr6ZHjx4YDAacnZ0JDAwkNTUVAH//yy/RPn36tGVks2nTpkRG\nRrJq1Sq+/vprS6gtKysjPT2djIwMS7ugoCC+++67G3l5IiIiUps44Iio4/XYjgICAizT8qWlpXz+\n+ee0aXN5SUSDwQBAu3btOHr0KAAXL17kL3/5C+3atSM4OJj169fz+uuvM3jwYPz8/GjatKklyP7c\nRkRERMQaBqNTlT41gUZEq+Duu+8mJSWF8PBwSktLGTRoUIWn6gH69evHJ598wsMPP0x5eTlPPvkk\nffr0ISUlhZEjR1JYWEj//v3x8PBg0aJFREVF0aBBAxo0aICXl5edrkxEREQcXg0Jl1WhIHoVfn5+\nbNmypdL2qKioSttiY2MtfxsMBmbNmlXpmBkzZlTa1r59e7Zt22ZjT0VERERwyKl5BVERERGRWkCv\nbxIRERER+3DAqXmD2Ww227sTIiIiImKb8mMfV+l4p453XKeeXDuNiIqIiIjUAgbdIyrX24WLhVa3\nbezpDkDJj2lW13Dx8QPgeGae1TVuadaQ8zkFVrcHaOHdgIuFl2yq4enuxqHvsm2q0bN1I1YcPGtT\njceC21C85w2barj2HcWek1k21ejbvmm11Cg/+4XV7Z3aBAJQ+kOq1TWcmwcAMG3H11bXWDi08+8f\nJCJS0zjg1LyCqIiIiEhtYNCIqIiIiIjYg4KoiIiIiNiDWUG09lm5ciX79+/HaDRiMBiIjIxkw4YN\nfP3113h7ewNQXl7O7Nmzufnmmy3t9u/fz5QpUwgICLBs8/HxYdKkSYwfP56PPvrIsr2kpIR77rmH\nHTt24OHhceMuTkRERGoPBdHa5eTJk+zZs4fExEQMBgPffPMNUVFR/OEPf2Dq1Kn06dMHgH//+9+8\n9NJLxMfHV2h/2223sXjx4kp1mzdvzqeffkqPHj0A2LVrF7fffrtCqIiIiFjPYLB3D6rM8aLzDdS4\ncWPS09PZtm0bGRkZdOrU6YpLcubm5uLu7n7NdUNDQ/nHP/5h+b59+3bCwsKqpc8iIiJSRxmNVfvU\nABoR/Q2NGzcmISGBDRs28Morr1C/fn0iIyMBWLRoEatWrcJoNNKsWTOmTp1aqf3+/fuJiIiwfO/b\nty9jx47lnnvu4eWXX6akpIQLFy6Qm5vLH//4xxt2XSIiIlL76B7RWubs2bN4eHgwf/58AI4ePcr4\n8eMJDAysMDV/NVebmnd1deWuu+5i9+7dnD59muHDh1+X/ouIiEgd4oBB1PF6fAMdP36c6OhoiouL\nAfD398fT0xMnJ9tfGBsWFsZ7773Hnj17uO+++2yuJyIiInWcwVi1Tw2gEdHfMHDgQFJTUwkNDcXd\n3R2z2cy0adPYtWvXVdv87W9/Y9q0aUDlqXmA1157DRcXFzp06EB2djYdO3bUQ0oiIiJiuxoSLqtC\nQfR3TJgwgQkTJlTY1r9//6sev2TJEgB8fX3Zv3//b9beuHGj7R0UERERQfeIioiIiIi9KIiKiIiI\niF0YbX+G5UZTEBURERGpBRxxat5gNpvN9u6EiIiIiNim5EJ6lY53adzyOvXk2mlEVERERKQ2cMAR\nUQVRB1N4qcjqtu5u9QHo9/LHVtfYPekOAC5cLLS6RmNPd4rzc61uD+Dq4UVxwUXbajTwpPzsFzbV\ncGoTSPkx639PAKeOd7Do3ydtqjH1zvaUn/7Mtn74B5GTb/2/K4C3hzuB09+3uv0XsUMAGPOm9dey\nbmQQAMV73rC6hmvfUQBsP1q10YVfeuiP9h9pEJE6RkFUREREROxCQVRERERE7MERH1ZSEBURERGp\nDRwwiDpej6vRwYMH6d27NxERETzyyCOMGDGC99+3/v42gPT0dPbs2QNATEwM6enW32MmIiIics0M\nhqp9aoA6PyLaq1cvli5dCkBBQQERERH4+/vTqVMnq+odOHCAU6dO0bdvX5577rnq7KqIiIjI1Tng\niGidD6K/1KBBA8LDw5kzZw7Nmze3BNSQkBCSk5OZPn06OTk55OTkkJCQwOLFi/nhhx/Izs6mT58+\nTJw4kZUrV1JUVES3bt1Yt24d0dHRNG3alKlTp5Kfn095eTlPP/00vXv3ZujQofy///f/OH78OAaD\ngeXLl+Pp6WnnX0FEREQckSPeI+p4Pb7OmjRpQnZ29lX39+rVi02bNlFQUEDXrl157bXXSExMJDEx\nEScnJ8aPH899991Hv379LG0SEhK47bbb2LhxIy+99BLPPfccJpOJgoIC7r33XjZs2ECzZs3Yt2/f\njbhEERERqY0Mxqp9agCNiP5Keno6999/PydOnLBs++XiU/7+/gB4e3tz9OhRDhw4gIeHByUlJVet\nmZqaytChQwHw9fXFw8ODCxcuAPCHP/wBgBYtWlBcXFzt1yMiIiJ1g7mG3PdZFTUjDtcQ+fn5bN26\nlR49epCVlQXAuXPnyM3938vXDf/3j5yUlISnpydLlizh0UcfpaioCLPZjNFoxGQyVagbEBDAp59+\nCkBGRgZ5eXl4e3tXqCciIiJiC7O5ap+aoM6PiB44cICIiAiMRiPl5eVMnDiRoKAgPD09CQ0NJSAg\nAD8/v0rtevfuzeTJkzl8+DBubm60adOGzMxMOnToQEJCAp07d7Yc+9hjj/Hss8/yz3/+k6KiIubM\nmUO9enX+pxcREZFqZKop6bIK6nQaCg4O5pNPPrnivoSEhErbYmNjLX/ffPPN7Nixo9Ixvr6+/POf\n/wTg3nvvtWxfvnx5pWN/fs0TwJQpU6694yIiIiK/4ngxtI4HUREREZHawuSASVRBVERERKQWMGtq\nXkRERETswRFHRA1mR4zPIiIiIlLBTxcLq3R8E0/3q+4zmUxER0dz/PhxXFxcmDt3Lm3atLHs37Jl\nC5s2baJevXpMmDCBu+++26o+a0RUREREpBaozhHRXbt2UVJSwubNmzly5AixsbGWB7mzsrJYv349\n27dvp7i4mJEjRxISEoKLi0uVz6Mg6mDyCy9Z3dbD3Q2AUz9etLpGO5/LS5Ceyy6wukarRg34Idf6\n9gDNvRqQlVe1//L7taYN3cnJt62Gt4c7h7/PsalG95u8Kcn+waYaLo2aV0s/zv6Ub1ONNk08bOpH\n95suv1/3uwvW96N1Yw8AjmXkWV2jo29DAMrPfmF1Dac2gZdrfH/U+ho3/dHqtiJS95RX4yT34cOH\nueOOOwDo2rUrX331lWXfl19+Sbdu3XBxccHFxYXWrVtz7NgxunTpUuXzKIiKiIiI1ALVebNlfn4+\nHh4elu9OTk6UlZVRr1498vPz8fT0tOxr0KAB+fnWDSAoiIqIiIjUAtU5Ne/h4UFBwf9mL00mk2Ux\nnl/vKygoqBBMq0JLfIqIiIjUAmazuUqf3xIUFMS+ffsAOHLkCB06dLDs69KlC4cPH6a4uJiLFy+S\nmppaYX9VKIjaaNKkSaxcudLyvaCggHvuuYdjx47ZsVciIiJS15iq+PktAwYMwMXFhREjRjB//nxm\nzJjB2rVr2b17N02bNiUiIoKRI0cyevRoIiMjcXV1tarPmpq3UXR0NA899BB9+/alffv2LFiwgPDw\ncDp27GjvromIiEgdUp33iBqNRubMmVNhW0BAgOXvsLAwwsLCbD6PgqiNGjduzKxZs5g5cyaTJ0/m\n+++/Z/bs2Rw/fpy5c+cC4O3tzbx583B3d+f555/nhx9+IDs7mz59+vDMM88wffp0cnJyyMnJYcWK\nFXh5edn5qkRERMTRmBzw1fCamq8Gffv2xd/fn+nTpxMbG4vBYGDWrFm88MILrF+/nj59+rB69WrO\nnz9P165dee2110hMTCQxMdFSo1evXmzatEkhVERERKxiruKnJtCIaDV58MEHKSoqwtfXF4DU1FRm\nz54NQGlpKf7+/nh7e3P06FEOHDiAh4cHJSUllvb+/v526beIiIjUDo64xKeC6HXi7+/PggULaNmy\nJYcPHyYrK4ukpCQ8PT2ZM2cOZ8+eZcuWLZan1gwGg517LCIiIo7MAWfmFUSvl+joaKKioigvLwcg\nJiaGgIAAJk+ezOHDh3Fzc6NNmzZkZmbauaciIiJSG5hqzIT7tVMQrSbBwcEEBwdbvt96662sX7++\n0nE7duyotC02Nva69k1ERERqP42IioiIiIhd6B5REREREbELjYiKiIiIiF044j2iBvPvLTYqIiIi\nIjXel+m5VTq+S0v7v7tcI6IO5r8/5Fnd9g/NGwJQln7c6hr1Wt4CwInMi1bXuLmZp03tf65xMsu2\nGu2bevLxqZ9sqnFHuyZs+uKcTTVGBLai7PMPbKpRr9sgYnZ/a1ON5/p1qJbftOyLD61uXy9wIAA/\nXSy0ukYTT3cAZu78xuoacwd3AqA047TVNZx9L78b+J/HrX8zxj23NAMg7UK+1TX8GntY3VZEHIsj\nrqykICoiIiJSC5Sb7N2DqlMQFREREakFNCIqIiIiInZRriAqIiIiIvagEdEb5ODBgzzzzDO0b98e\ngOLiYoYOHUpERMTvtj1+/Dh5eXn07NmzSuf8/vvveeqpp+jYsSMLFiy44jG33nor3bp1A6CoqIjb\nb7+diRMnYjQaq3QuERERkarSPaI3UK9evVi6dCkAJSUlDBo0iAceeICGDRv+ZrsPP/wQHx+fKgfR\nzz77jN69ezN9+vSrHuPl5WVZ1tNsNvPCCy+wcePGawrIIiIiIrYoNTleEnXYIPpL+fn5GI1Gjh07\nRnx8PHB5RHLBggU4OzszYcIEvL29CQ4O5q233sLZ2ZnOnTvTpUuXK9aLjY3l8OHDANx3330MGDCA\nhIQEioqKaN26NSNHjvzdPhkMBsaOHcuzzz5LREQEGzZs4MMPP6SsrAxPT0/i4uKYMWMGQ4cO5a67\n7iI1NZUFCxawcuXK6vthREREpM7QEp830IEDB4iIiMBgMODs7MysWbM4ceIEixYtwtfXl1dffZUP\nPviAoUOHkpWVxfbt23FxccFsNuPj43PVELp3717S0tLYsmULZWVljBw5kl69ejF+/HhOnTp1TSH0\nZz4+PmRnZ2MymcjJyWHdunUYjUb+8pe/cPToUUJDQ0lMTOSuu+5i27ZtDB8+vLp+HhEREaljyh0w\niTpsEP3l1PzPdu3aRUxMDO7u7mRkZBAUFASAn58fLi4u11Q3NTWVHj16WAJuYGAgqampVvXx3Llz\nNG/eHKPRiLOzM5MnT8bd3Z0ffviBsrIygoODiYmJ4aeffiI5OZnJkydbdR4RERERR3xYqVY9RTNz\n5kzmzZtHbGwszZo14+fVS3/5sJDBYMD0G/dQBAQEWKblS0tL+fzzz2nTpk2V+2IymVizZg333nsv\nx44dY9euXSxbtoxZs2ZhMpkwm80YDAaGDh1KTEwMISEhODs7V/k8IiIiIgDl5qp9agKHHRG9kgce\neICwsDAaNmyIj48PmZmVl9a79dZbWbhwIQEBAfTq1avS/rvvvpuUlBTCw8MpLS1l0KBBdO7cmePH\nf39ZzNzcXMvtAmVlZdx2220MHz6coqIi3NzcGDZsGC4uLjRt2tTSt2HDhnHXXXfxj3/8w/YfQERE\nROosRxwRdcggGhwcTHBwcKXtM2bMYMaMGZW2b9myxfL3XXfdxV133fWb9aOioiptGzZs2O/266uv\nvrridjc3N954440r7isvL6d79+4EBAT8bn0RERGRq9E9og4kPj6egwcPVto+b948brrppqu227x5\nM++++26l7ZMnT7a8Q/Ra/fOf/yQ+Pp6YmJgqtRMRERH5NY2IOpCnnnqKp556qsrtwsPDCQ8Pr5Y+\n3HPPPdxzzz3VUktERETqtppy32dV1NkgKiIiIlKbOOKIqMFsdsBei4iIiEgFb36eVqXjR3bzu049\nuXYaEXUwl9552eq2bvdPAuDw9zlW1+h+kzcA57ILrK7RqlEDLlwstLo9QGNPd3ILLtlUw6uBG4Xb\nF9tUw/2hKRRftP73BHD19ObQd9k21ejZuhFnf8q3qUabJh5cKiqyqYZb/frsP/OT1e1va9sEgOOZ\neVbXuKXZ5WV+S3IqvzXjWrl4NwOg6JL1/xur7+YGYNNv6la//uV+FFr//7f67g0AOPXjRatrtPPx\ntLqtiNw4mpoXEREREbtwxKl5BVERERGRWqBcQVRERERE7MGk94iKiIiIiD044j2iNX6t+aSkJBYv\nvvxAyebNmyktLeWbb74hPj7+qm3i4uJITEz83eOuxc+1fs2ad5CKiIiIXC8ms7lKn5rAoUZEV6xY\nwYMPPkinTp3o1KnT7x5/rcdZw9aAKyIiIlKddI/o70hKSmLv3r0UFRWRlZXFqFGj2L17NydOnGDa\ntGm88MILJCcnAxAZGcmIESMsbbdu3UpWVhaRkZGMHj2aTZs2sXTpUvr160dgYCDfffcdN998c4Xl\nMg8ePGg5bufOnaxbtw6j0Uj37t2ZMmUKcXFxfP755xQWFhITE3PV9d537drFzp07KSoqYubMmXTp\n0oWQkBCSk5OJiIigY8eOnDhxgvz8fF566SVatWrFkiVL+OqrrygoKCAgIID58+dXON/gwYP54Ycf\niIqKory8nAcffJDt27fj4uJyff8RREREpFZyxLXmb/jUfEFBAatWreKvf/0riYmJxMfHM2fOHJKS\nkn6zXWhoKE2bNmXp0qUVtmdkZPD000+zbds2CgsL2bVrV6W2OTk5xMXFsW7dOhITE8nIyLAE3nbt\n2rFp06arhlCAVq1a8cYbbxATE8MLL7xQaX+XLl1Yt24dISEhvPfee+Tn59OwYUPWrl37/9m797iq\nqvz/4y8OHVQuchFU6GAg5GiWeclB00jN8jJZfU1JyePXb6mT37FUfqammHiBRFH7qqPmpBMeLyRG\nWTPTNJM62liYqU3mDYW8X0BEURAQOL8/GE8xeD0HReD9fDx4CPus9Vlr73PAz2PtvdYiKSmJ77//\nnjNnzpRr78UXX2TDhg2UlJTw1VdfERYWpiRURERE7FZSar2tr3vBXb81f/VWuYeHByEhITg5OeHp\n6UlhYWG5cre64ZO/vz8PPPAAAG3atOGnn36qUObo0aOcO3eO4cOHA2XJ8LFjxwAIDg6+aRvt27cH\n4MEHHyQrK6vC6w899BAAjRs35uzZs9SpU4dz584RFRWFq6sr+fn5XLlypVx77u7utG/fnn/+85+k\npKTwv//7v7d0viIiIiLXcq8kl7fjro+IOjk5Xfe14uJi8vLyKCoq4tChQ9esW1paWu7YmTNnbMnh\nzp07CQ0NrVDPZDLh7+/P8uXLsVgsDBo0iEcffRQAg+Hml+CHH34A4MCBAwQEBNy0/JYtWzh16hRz\n584lKiqKgoICW2L9y1b7R3IAACAASURBVPYiIiJITk4mOzub5s2b3zSuiIiIyPUUFZfe1te94J6a\nrDR48GBeeuklTCbTNRO+xx57jOHDh/O73/3OdszFxYXp06dz6tQpHn30Ubp168bevXvL1fPx8WHI\nkCGYzWZKSkq4//776dWr1y336/jx4wwePJiioiKmTZt20/KtWrVi0aJFRERE4OLiQmBgIJmZFbcb\nfPTRRzly5Agvv/zyLfdFRERE5Fqq44iok/VW74Hfo65OGqqOSktLGThwIMuWLcPd3f2W6miv+TLa\na7487TX/M+01/x/90F7zIrXGlC/231b5qT2q/m7sPTUiWpVGjhzJhQsXyh1zd3dn8eLFd6S9Y8eO\nMXLkSF566aVbTkJFRERErqc6johW+0S0skZD7/a6oIGBgaxfv/6utikiIiI1lxJREREREakS1TER\nrfbPiIqIiIgIRK3/8bbKz33+4TvUk1unEdFqJv+y/RMfXOuVTXzIyrV/opBffVcATp23f/KEv5eb\nQ/Wvxjh9wbEYjT3dOH/JsUlTXu6ulTLRqPDShZsXvIE67p58vv+MQzF6NW/ExXzHJoB5uNbjUJb9\nk2JC/comxRRdOGt3DBdPXwC+PFhxzd9b1f1BPwBKftppdwzn4LZA5UxW+q73U3bHeOwvGwD4yYHJ\nSsH/nqxUmGd/jDpumvAkcqdVxxHRu76OqIiIiIhUvju9s1JBQQGvv/46kZGRDBs2jHPnzl2z3OXL\nl3n++efZsmXLTWMqERURERGpAUqs1tv6ul1r1qyhWbNmrF69mhdeeIFFixZds9y0adNuuIHRLykR\nFREREakB7vSI6I4dO3jiiScACA8P55tvvqlQZtmyZbRp0+aWd4zUM6IiIiIiNUBlPiOanJxMYmJi\nuWMNGjTAw6PseW83NzcuXiz/3Pg333zDkSNHmDZtGjt33toz9rUyET148CCzZ8/m8uXL5Ofn8+ST\nT/L6669fcxj55MmT7N+/n27dulVBT0VERERuTWUmov3796d///7ljo0cOZK8vLKJwnl5edSvX7/c\n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\nxZ999lmFY40aNeKLL76w/WyxWMq9np6ezmOPPcaUKVPIycnh2WefxdvbGxcXF/74xz9WiLd161bb\n9zNnzrR9P2vWrAplR44cyciRI2/llPD19WXp0qXljgUGBrJs2bIKZdeuXXvDWHXq1GH+/PkVjl/r\nmv3S0KFDGTp06C30VkREROTGamwiWpn8/f1JSEggMTGRkpISxo4de8PnLx3x4Ycf8qc//anC8aio\nqEqP16ZNG7tiioiIiFQGJaK3wNXV1bZc05320ksv8dJLL13ztZuNct5uPBEREZGqVFoNE1En6/W2\nSBIRERGRasPv+dm3VT5r/Zt3qCe3TnvNi4iIiNQAujUvd1zG2Yt2123q6wHAjj5P2x2j3Wd/B+BI\n9iW7YzzQwJ3tR3Psrg/Qvol3pcRY+8NJh2JEtApg7+lch2I81Lg+JUf+5VAM5wce5YeTFxyK0SrA\nky8OZN684A30+FVDCv5i/6M3dXuPAOCbbk/aHaPjxs0AfL7/jN0xejUvW8GiMPec3THq1PcB4P+2\nZtgdY1SnsnWFT53PszuGv5cbAPmXC+yO4VqvLgAHM+3/+/NgQw+HrieUXdNzF/MdiuHj4UrJTzsd\niuEc3Nah+iJ3So1c0F5ERERE7n0aERURERGRKqFEVERERESqxJ1ORAsKCnjzzTfJzs7Gzc2N+Ph4\nfHx8ypV555132LFjBwaDgfHjx9OuXbsbxrzx3pXV1MGDBxk+fDhms5kXX3yR+fPnY7VaWblypUNx\nt23bxpgxY265/NX2tm3bxmOPPcapU6dsryUkJJCSkuJQf0RERESuspaW3tbX7VqzZg3NmjVj9erV\nvPDCCyxatKjc6/v372fXrl0kJycza9asG+6SeVWNS0Rzc3OJiopi4sSJWCwW1q5dS1paGklJSXdt\n/dKrftme0WjkrbfeQqtliYiIyJ1gLS25ra/btWPHDp544gkAwsPD+eabb8q93rBhQ+rWrUtRURGX\nLl3ivvtufuO9xt2a37BhA2FhYQQFBQHg7OxMfHw8f/zjH7lw4QIxMTFMmDCBcePGkZmZib+/P9u3\nb+ef//wnZrMZb29vcnNz8fHx4bnnnqNLly6kp6cTHx/Pq6++es02t27dyrvvvkudOnXw8vIiLi6O\nVatW2drr1asXHTp0oLS0lFWrVjFo0CBb3ePHjzNixAi8vLwIDw9n2LBhd+MyiYiISA1Tmbfmk5OT\n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\nSUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "correlation_matrix(df)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "EstValue StartPrice 0.972891\n", "multiplier_binary multiplier_three 0.909424\n", "StartPrice WinningBid 0.899354\n", "EstValue WinningBid 0.871405\n", "Category Sale_nr 0.852410\n", "Dealer Forced 0.839268\n", "Year Sale_nr 0.818900\n", "LotNr RelLotNr 0.788180\n", "LotsCtgry CtgryLotNr 0.711148\n", "RelLotNr RelCtgryLotNr 0.704299\n", "dtype: float64" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "corr_matrix = df.corr().abs()\n", "corr_matrix = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), \n", " k=1).astype(np.bool)).stack().sort_values(ascending=False)\n", "corr_matrix[:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5. Feature Engineering \n", "[Back to Table of Contents](#table)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 5.1 Outlier Removal \n", "[Back to Table of Contents](#table)\n", "\n", "As seen before it looks like the target variable 'multiplier' shows some outliers for the multiplier with a value higher than 10. Especially regressors are highly affected by outliers and decrease the resulting score. Therefore, we remove the outliers in this sample. It should be noted that there was no possibility to discuss with the owners of the data as domain expertise would have helped. They could have helped in advising whether to remove the outliers or not and which points to regard as outliers. " ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.26 % of outliers with regards to the multiplier\n" ] } ], "source": [ "outlier_percentage = len(df[df['multiplier']>10]) / len(df) * 100\n", "print('{} % of outliers with regards to the multiplier'\\\n", " .format(round(outlier_percentage,2)))\n", "df = df[df['multiplier'] <= 10]" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.12 % of outliers with regards to the EstValue\n" ] } ], "source": [ "outlier_percentage = len(df[df['EstValue']>=15000]) / len(df) * 100\n", "print('{} % of outliers with regards to the EstValue'\\\n", " .format(round(outlier_percentage,2)))\n", "df = df[df['EstValue'] < 15000]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thus, we can clearly see that we removed 0.26% of the outliers when removing all rows that are associated with a multiplier score of higher than 10. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 5.2 Skewedness \n", "[Back to Table of Contents](#table)\n", "\n", "In order to get a good score out of you regressors you often have to fix a skewed distribution of your feature variables. Regressors in most cases expect a normal distribution that has no skew. Therefore, we would like to do a log(1+p) transform for the variables that show a skew of larger than 0.65. It should be noted though that we only do this for the regression later on as this will not have any effect on " ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# df = resolve_skewedness(df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 6. Feature Importance \n", "[Back to Table of Contents](#table)\n", "\n", "Here we are going to look into the importance of some features. \n", "Preferably, we would like to see that important features are those that can be selected as decision variables. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 6.1 Decision Tree \n", "[Back to Table of Contents](#table)\n", "\n", "A decision tree is used to give a quick and intuitive feeling on what features are important. " ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "Tree\r\n", "\r\n", "\r\n", "0\r\n", "\r\n", "Followers ≤ 13.5\r\n", "gini = 0.49\r\n", "samples = 11273\r\n", "value = [6424, 4849]\r\n", "class = 0\r\n", "\r\n", "\r\n", "1\r\n", "\r\n", "Followers ≤ 6.5\r\n", "gini = 0.395\r\n", "samples = 6977\r\n", "value = [5089, 1888]\r\n", "class = 0\r\n", "\r\n", "\r\n", "0->1\r\n", "\r\n", "\r\n", "True\r\n", "\r\n", "\r\n", "8\r\n", "\r\n", "Followers ≤ 23.5\r\n", "gini = 0.428\r\n", "samples = 4296\r\n", "value = [1335, 2961]\r\n", "class = 1\r\n", "\r\n", "\r\n", "0->8\r\n", "\r\n", "\r\n", "False\r\n", "\r\n", "\r\n", "2\r\n", "\r\n", "SP.EV ≤ 0.975\r\n", "gini = 0.254\r\n", "samples = 2911\r\n", "value = [2476, 435]\r\n", "class = 0\r\n", "\r\n", "\r\n", "1->2\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "5\r\n", "\r\n", "SP.EV ≤ 0.927\r\n", "gini = 0.459\r\n", "samples = 4066\r\n", "value = [2613, 1453]\r\n", "class = 0\r\n", "\r\n", "\r\n", "1->5\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "3\r\n", "\r\n", "gini = 0.237\r\n", "samples = 2871\r\n", "value = [2476, 395]\r\n", "class = 0\r\n", "\r\n", "\r\n", "2->3\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "4\r\n", "\r\n", "gini = 0.0\r\n", "samples = 40\r\n", "value = [0, 40]\r\n", "class = 1\r\n", "\r\n", "\r\n", "2->4\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "6\r\n", "\r\n", "gini = 0.455\r\n", "samples = 4024\r\n", "value = [2613, 1411]\r\n", "class = 0\r\n", "\r\n", "\r\n", "5->6\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "7\r\n", "\r\n", "gini = 0.0\r\n", "samples = 42\r\n", "value = [0, 42]\r\n", "class = 1\r\n", "\r\n", "\r\n", "5->7\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "9\r\n", "\r\n", "EstValue ≤ 47.5\r\n", "gini = 0.479\r\n", "samples = 2593\r\n", "value = [1028, 1565]\r\n", "class = 1\r\n", "\r\n", "\r\n", "8->9\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "12\r\n", "\r\n", "Followers ≤ 31.5\r\n", "gini = 0.296\r\n", "samples = 1703\r\n", "value = [307, 1396]\r\n", "class = 1\r\n", "\r\n", "\r\n", "8->12\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "10\r\n", "\r\n", "gini = 0.41\r\n", "samples = 966\r\n", "value = [278, 688]\r\n", "class = 1\r\n", "\r\n", "\r\n", "9->10\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "11\r\n", "\r\n", "gini = 0.497\r\n", "samples = 1627\r\n", "value = [750, 877]\r\n", "class = 1\r\n", "\r\n", "\r\n", "9->11\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "13\r\n", "\r\n", "gini = 0.37\r\n", "samples = 795\r\n", "value = [195, 600]\r\n", "class = 1\r\n", "\r\n", "\r\n", "12->13\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "14\r\n", "\r\n", "gini = 0.216\r\n", "samples = 908\r\n", "value = [112, 796]\r\n", "class = 1\r\n", "\r\n", "\r\n", "12->14\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "\r\n" ], "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features = ['LotNr','Allocate','EstValue','StartPrice','Followers','Bank','Dealer','Liquidator','Volunteer','LotsSale',\n", " 'LotsCtgry','Forced','SP.EV','Duration','Year','Category','Sale_nr','Categories_per_sale','CtgryLotNr',\n", " 'RelStartPriceCtgry', 'RelLotNr', 'RelCtgryLotNr','RelDurationCtgry']\n", "target = 'multiplier_binary'\n", "dataset, X, y = select_features(df, target = target)\n", "plot_decision_tree(dataset, X, y, max_depth=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 6.2 Random Forest \n", "[Back to Table of Contents](#table)\n", "\n", "A random forest is a better way of indicating which features are important as it can see for each tree in the forest which features allow for the highest increase/decrease in gini/entropy. \n", "Unfortunately, Followers is highest and clearly not a decision variable as those are decided beforehand. \n", "However, **LotNr** seems to be an importance feature and is something we can definitely optimize! " ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlYAAAFXCAYAAABgEQAnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3XlclWX+//HX4QAuHERQXFCBXJAU\nDSH3pQx3LZk29/YsS5sax+mX05hjptZkU0ZojQ2mpaJpalmZmCOKO4aCirmggigupAKCLOf+/dH3\nnNFpQes+QPl+Ph489HCfc3+u+3CW933d133dFsMwDERERETkV3Or7AaIiIiI/F4oWImIiIiYRMFK\nRERExCQKViIiIiImUbASERERMYmClYiIiIhJFKxEBICWLVty5513MnjwYOfPX//611+8vj179jBp\n0iQTW3i1devWMXXqVJet/6dkZmYybty4Cq8rIr8N7pXdABGpOj744AP8/PxMWdehQ4fIyckxZV0/\nJioqiqioKJet/6dkZ2eTkZFR4XVF5LfBoglCRQS+77HasmXLjwarw4cP88orr3D+/HnKysoYNWoU\n9957L3a7nWnTprF7924KCgowDIOpU6cSEBDAsGHDyMvLo0+fPkRHR/Pyyy/z2WefAbBt2zbn7bff\nfpuUlBROnz5Ny5Ytef3115k9ezZfffUVdrudRo0a8dJLL1G/fv2r2rR8+XLWrFnDu+++y6hRo2jd\nujUpKSnk5uZy//33c/bsWbZv305hYSFvvvkmLVu2ZNSoUbRq1Yrk5GS+++47Bg8ezDPPPANAQkIC\nMTEx2O12vLy8eOGFF2jbtu1V7WvRogWpqank5OTQvn173n//febMmcO6desoKiqisLCQ559/nt69\ne/P2229z4sQJzpw5w4kTJ6hfvz7/+Mc/qFevHhkZGUyaNInc3Fzc3NwYM2YMAwYMICcnhylTpnDy\n5ElKSkoYOHAgTz75JKWlpbz88svs2rULDw8PGjduzPTp0/Hy8nL9C0NEro8hImIYRkhIiDFo0CDj\nrrvucv6cPXvWKCkpMQYMGGCkpaUZhmEYFy9eNPr372988803xq5du4xx48YZZWVlhmEYxrvvvms8\n8cQThmEYxrJly4zRo0cbhmEYW7duNQYOHOisdeXtWbNmGX379jVKSkoMwzCMTz75xHj22Wedtxcv\nXmw89thjP2jvlesfOXKkMXbsWMMwDCMlJcUICQkx1q1bZxiGYbzyyivGiy++6Lzf448/bhQXFxsX\nLlww+vbta3z99dfGoUOHjC5duhjHjx83DMMwNm/ebHTt2tXIy8v7QfuubHtWVpYxatQoo7Cw0DAM\nw/jss8+MQYMGObcrKirKyMvLMwzDMJ544gnjrbfeMgzDMKKjo40PP/zQMAzDyM7Odt5v1KhRznYX\nFRUZo0aNMlavXm3s2LHD6Nevn2G32w3DMIzXXnvNSE5Ovq6/r4hUDB0KFBGnHzsUeOjQIY4fP87E\niROdvysqKmLfvn0MHz4cHx8fFi9eTGZmJtu2bftFvSjh4eG4u3//cbR+/XpSU1O55557ALDb7RQW\nFpa7jt69ewPQpEkTALp37w5AYGAg27dvd95vyJAheHh44OHhQb9+/di0aRNNmzalU6dOzsd27twZ\nPz8/0tLSftC+KzVq1IjXXnuNTz/9lGPHjjl77hw6dOiAzWYDoFWrVly4cIHz58+Tnp7OfffdB0DD\nhg1JSEjg0qVL7NixgwsXLvDWW28BcOnSJdLT0+nWrRtWq5X77ruPbt260bdvX9q2bXutT6+IVCAF\nKxH5WWVlZXh7e7Ny5Urn786ePYu3tzf/+c9/eOWVV3j44YeJioqiadOmrFq16gfrsFgsGFeMOigp\nKblqec2aNZ3/t9vtPPbYYwwfPhyA4uJiLly4UG47PT09r7rt4eHxo/e7MiAZhoGbmxt2ux2LxXLV\n/QzDoLS09Aftu9LevXt56qmneOihh+jatSvt27fn73//u3N59erVnf93PAeO+lfWO3LkCP7+/hiG\nweLFi6lRowYAubm5VKtWDS8vL1auXMmuXbvYunUrzz77LI8++igjRowo93kRkYqlswJF5GfddNNN\nVK9e3RmsTp48yaBBg0hLSyMpKYmePXsyfPhwwsLCSEhIoKysDACr1eoMJn5+fmRnZ3Pu3DkMw2D1\n6tU/Wa9bt258/PHH5OfnA/DWW2/xl7/8xbTtWbVqFXa7nQsXLvDFF19wxx130LlzZzZt2kRmZiYA\nW7Zs4eTJk9xyyy0/eLzVanUGwx07dhAWFsbDDz9Mhw4dWLdunXP7f4rNZqN169asWLEC+P75HDZs\nGEVFRYSHhxMXFwfAxYsXGTZsGOvWrWP9+vU89NBDtGvXjnHjxhEdHe3sTRORqkU9ViLyszw9PYmN\njeWVV15h7ty5lJaW8sc//pHIyEhq167N+PHjufPOOyktLaVr167OQefh4eG88847jB07lpiYGIYO\nHco999yDv78/t99+O6mpqT9a77777iMnJ4f7778fi8VCw4YNmTFjhmnbU1RUxL333ktBQQHDhw+n\nc+fOALz00kuMHTuWsrIyqlevzpw5c/D29v7B45s3b061atW49957mTNnDl999RX9+/fHbrfTs2dP\nLly44AyFP2XmzJn8/e9/Z8GCBVgsFl555RX8/f15/fXXefnll7nzzjspLi5m0KBB3HXXXZSVlZGY\nmMigQYOoWbMmPj4+vPzyy6Y9JyJiHp0VKCI3jFGjRjFixAj69etX2U0Rkd8pHQoUERERMYl6rERE\nRERMUm6Pld1uZ9KkSQwZMoRRo0Zx7NixH73PY489xqJFi4DvxzCMGzeO4cOH8/jjj5Obm2t+y0VE\nRESqmHKDVUJCAsXFxcTHxzN+/PgfHUT65ptvXnU69KJFiwgJCWHhwoVER0cTGxtrbqtFREREqqBy\nzwpMTk52TrQXHh7+g1N8v/zySywWCz169LjqMY899hgAPXr0KDdYFRUVkZaWhr+/P1ar9bo3QkRE\nRKSilJWVcebMGcLCwq6arw6uIVjl5+c7Zw6G/85N4+7uzrfffstnn33GrFmzeOedd656jOM0ZS8v\nL/Ly8n62Rlpamia6ExERkd+Ujz76iFtvvfWq35UbrGw221WXaLDb7c6Zg1esWEFOTg4PPvggJ06c\nwMPDg0aNGl31mIKCAmrVqvWzNfz9/Z0NbNCgwfVtlYiIiEgFOnXqFCNGjHDmlyuVG6wiIiJYv349\nAwYMICUlhZCQEOeyK2dDfvvtt6lbty49evTg0KFDbNiwgbZt25KYmEhkZOTP1nAc/mvQoAGNGze+\n5g0TERERqSw/Nnyp3GDVu3dvkpKSGDp0KIZhMG3aNOLi4ggMDCQqKupHHzNs2DCef/55hg0bhoeH\nBzNnzvz1rRcRERGp4qrEPFZZWVlERUWxbt069ViJiIhIlfZzuUUzr4uIiIiYRMFKRERExCQKViIi\nIiImUbASERERMYmClYiIiIhJFKxERERETKJgJSIiImISBSsRERERkyhYiYiIiJhEwUpERETEJApW\nIiIiIiZRsBIRERExiYKViIiIiEkUrERERERMomAlIiIiYhIFKxERERGTKFiJiIiImETBSkRERMQk\nClYiIiIiJnEv7w52u53Jkydz4MABPD09mTp1KkFBQc7lH330EcuXL8disfD000/Ts2dPDMOgR48e\nBAcHAxAeHs748eNdthEiIiIiVUG5wSohIYHi4mLi4+NJSUlhxowZzJ49G4Dc3FwWLlzIihUruHz5\nMgMHDuT222/n+PHjtG7dmjlz5rh8A0RERESqinIPBSYnJ9O9e3fg+56ntLQ05zI/Pz9WrlyJh4cH\nZ8+epVatWlgsFvbu3UtOTg6jRo3i8ccf58iRI67bAhEREZEqotxglZ+fj81mc962Wq2UlpY6b7u7\nu/Phhx8yZMgQ+vbtC4C/vz+jR49mwYIFPPHEE0yYMMEFTRcRERGpWsoNVjabjYKCAudtu92Ou/vV\nRxBHjhzJxo0b2bFjB1u3biUsLIyoqCgAbr31VnJycjAMw+Smi4iIiFQt5QariIgIEhMTAUhJSSEk\nJMS57MiRI4wdOxbDMPDw8MDT0xM3NzdiYmL44IMPAEhPTycgIACLxeKiTRARERGpGsodvN67d2+S\nkpIYOnQohmEwbdo04uLiCAwMJCoqitDQUIYMGYLFYqF79+506NCBli1bMmHCBDZs2IDVamX69OkV\nsS0iIiIilcpiVIFjdFlZWURFRbFu3ToaN25c2c0RERER+Uk/l1s0QaiIiIiISRSsREREREyiYCUi\nIiJiEgUrEREREZMoWImIiIiYRMFKRERExCQKViIiIiImUbASERERMYmClYiIiIhJFKxERERETKJg\nJSIiImISBSsRERERk9ywwSo4OJjg4ODKboaIiIj8jtywwUpERETEbApWIiIiIiZRsBIRERExiYKV\niIiIiEkUrERERERMomAlIiIiYhL38u5gt9uZPHkyBw4cwNPTk6lTpxIUFORc/tFHH7F8+XIsFgtP\nP/00PXv2pKioiAkTJnDu3Dm8vLx49dVX8fPzc+mGAGCxuPYxhnH96xcREZEbRrk9VgkJCRQXFxMf\nH8/48eOZMWOGc1lubi4LFy5k8eLFzJs3j8mTJ2MYBosWLSIkJISFCxcSHR1NbGysSzdCREREpCoo\nN1glJyfTvXt3AMLDw0lLS3Mu8/PzY+XKlXh4eHD27Flq1aqFxWK56jE9evRgy5YtLmq+iIiISNVR\nbrDKz8/HZrM5b1utVkpLS5233d3d+fDDDxkyZAh9+/Z1Psbb2xsALy8v8vLyzG63iIiISJVTbrCy\n2WwUFBQ4b9vtdtzdrx6aNXLkSDZu3MiOHTvYunXrVY8pKCigVq1aJjdbREREpOopN1hFRESQmJgI\nQEpKCiEhIc5lR44cYezYsRiGgYeHB56enri5uREREcGGDRsASExMJDIy0kXNFxEREak6yj0rsHfv\n3iQlJTF06FAMw2DatGnExcURGBhIVFQUoaGhDBkyBIvFQvfu3enQoQNt2rTh+eefZ9iwYXh4eDBz\n5syK2BYRERGRSmUxjMqfQyArK4uoqCjWrVtH48aNf/mKrmPqhOD/+/fo9ay/8p8qERERqWQ/l1vK\n7bH6vTpa2Q0QERGR3x3NvC4iIiJiEgUrEREREZMoWImIiIiYRMFKRERExCQKViIiIiImUbASERER\nMYmClYiIiIhJFKxERERETKJgJSIiImISBSsRERERkyhYiYiIiJhEwUpERETEJApWIiIiIiZRsBIR\nERExiYKViIiIiEkUrERERERMomAlIiIiYhIFKxERERGTuJd3B7vdzuTJkzlw4ACenp5MnTqVoKAg\n5/J58+axevVqAG677TbGjh2LYRj06NGD4OBgAMLDwxk/frxrtkBERESkiig3WCUkJFBcXEx8fDwp\nKSnMmDGD2bNnA5CZmcmqVatYunQpFouF4cOH06tXL2rUqEHr1q2ZM2eOyzdAREREpKoo91BgcnIy\n3bt3B77veUpLS3Mua9CgAXPnzsVqteLm5kZpaSnVqlVj79695OTkMGrUKB5//HGOHDniui0QERER\nqSLKDVb5+fnYbDbnbavVSmlpKQAeHh74+flhGAavvvoqrVq14qabbsLf35/Ro0ezYMECnnjiCSZM\nmOC6LRARERGpIso9FGiz2SgoKHDettvtuLv/92GXL19m4sSJeHl58dJLLwEQFhaG1WoF4NZbbyUn\nJwfDMLBYLGa3X0RERKTKKLfHKiIigsTERABSUlIICQlxLjMMg6eeeoqWLVsyZcoUZ5iKiYnhgw8+\nACA9PZ2AgACFKhEREfndK7fHqnfv3iQlJTF06FAMw2DatGnExcURGBiI3W5n+/btFBcXs3HjRgD+\n9Kc/MXr0aCZMmMCGDRuwWq1Mnz7d5RsiIiIiUtnKDVZubm5MmTLlqt81a9bM+f/U1NQffdx77733\nK5smIiIi8tuiCUJFRERETKJgVYGCg4Odk6aKiIjI74+ClYiIiIhJFKxERERETKJgJSIiImISBSsR\n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\nYPz48cTFxWG3200foJqVlcWMGTOc6/Xz8+PcuXPUqFGDESNGuPxsGMeHycWLF1myZAmdOnVi48aN\nzJo1i169epl+KNKxd3b27FkSExNJTU3lgQce4Oabb2bFihUuG2/k2M7ExERWrVrFgw8+SJMmTa66\nT//+/U0bI/i/tm3bhru7O4mJiTRt2pS6detSvXp1ysrK+Nvf/mbq2CPHc7x//37uvvtuHnroIb77\n7juOHTvG6dOnXTZOpFOnTixZsoQPP/yQW265hYceeog///nPLql1rUpLS2natCnHjh1j7969eHt7\nU79+ffr37+8cGA3ln7VosVgoKirCw8ODtLQ0Pv30U958801WrlzJoEGDXLoNV/Z4ZmRkkJ2dzdix\nY+nUqZPLeh4dr6H09HQKCwt54okn2LhxIx06dGDKlCnExMRQu3Zt0+o5vlt27tzJsmXLqFevHv36\n9aNDhw6cPHnSpePXHByf+5cuXcLb25t33nmHhx9+mB07drh88HpOTg61a9d2fr916dKFWbNmmdJR\ncaWQkBBSU1PJz89n1apVZGdnExUVxaJFi3jyyScrpUcZbvAeK8cLLyYmhuzsbHx9falTpw716tUz\nbSD3vHnzePHFF1m6dCkNGzYkKCiIBx98kHvuuYdBgwa5fFDzlTp27IiXlxdLlizh5ZdfZu/evXTs\n2NHUVD9jxgxq1KhBWFgY+fn5eHp6YrPZnEHL1WdROT5A4+PjSUtLo1OnTnh5eXHkyBHatWtn+hvN\n8SXw8ssv4+bmho+PD3PnzuXbb79l7NixuLm5uWSbHeu0Wq2cOXOGmTNn8tVXX3Hx4kXatGmD1Wql\ncePGpo4ZubKu4/T+Xbt2kZGRwYkTJwgMDKRGjRp4e3u7pGZMTAwnTpygfv36BAcH07Bhw6vChNlu\nuukmBg0axMiRI7FarfzrX//in//8J3v37qVPnz6Vckagr68vN998M61ataJ69erY7XbOnTtHYmIi\n/v7+1/x54tipateuHTVr1qS4uJjly5dz8OBBnnrqKZe13/F+2b9/P6tWreK9995j+fLltGnThk8+\n+YQOHTq45GxEx98qNzeXnJwcjh49SlBQEK1atWLbtm3cc889ptezWCxMmzaN0NBQ8vLyWLlyJWvX\nrqVr164VctKD47lu0qQJmzZtYteuXZSUlLBz506XHcZ2HKauUaMGBw4c4O233+bUqVOkpKSQl5fH\n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\n+CIeHh70798fDw8PqlWrRu/evU2pc2W398KFC/nggw9ISUlh37593HXXXS6/nMGyZcvw9fUlICCA\n0tJSdu3axaVLlzh48CCnT582dRLAxMREjh07xuTJk7Hb7SQlJdG1a1csFgseHh4unxcnLS2NTZs2\n8cILL5CZmUlKSgrduvBcRY8AACAASURBVHWjQYMGtG7dmsaNG5v6AX7lqcxz584lKSmJN954gx07\nduDr6+vy6z7m5eVx6NAh54Scly5d4osvviA2Npa4uDj69++Pl5eXafWmT59OSEgIgwcPxsfHh/z8\nfN577z3OnTtH165dnZNzmh2q4Pu/7aVLlwgMDOS7775j8ODBLFq0yHk2mdkDrT09PZk2bRpz586l\na9euDB06FJvN9v/bu/OwKK/z4ePfAQZZBVFWEVFERRGXsIiiENu4kKox1iUxatraRJuYmtQl1uZn\nEs3SWGJcG6ka1woq4hJUFMQFFINsCgLKIoqigIiADDDMzPuH10y1b9o08XkYJefzp5cX58zAzHOf\nc+5z36xZs4YRI0a02q2576NUKgkICMDGxobAwECio6O5d+8er7/+OvDDtwEbGxtZvnw5wcHBDBgw\nAE9PTzw8PBg4cCC+vr6yHtfr55adnc21a9coKiqioqKCuro67O3tZXkY6j+nt27dYtu2baxYsYLa\n2lrmzZvHq6++io+Pj6Q7KLGxsXh5eTFx4kSys7PZtm0bq1evpkOHDgwYMKBVjqj0r2fhwoVERkay\nYcMGamtr6dGjB3379pUl/UShUNC5c2fOnDnD119/TXJyMqampowaNYoRI0YYFj9SfgcrFAratWuH\nSqVi3bp1HD9+nPbt2zN27FijXix51M9qx0pv0KBB7N69m6ioKOrr6/nggw8kvUatUCjQ6XTY2Niw\nefNmioqK2L9/P0FBQbLWiYGHXyjnz5/n7NmzLFq0yLD9HBUVxdmzZyUv83/06FFDzZC7d+8ajhSk\nulb7Q44fP05ISAidOnXC1dWV7Oxs4F8rJLluOZ04cYJ3330XnU5HRkYGSUlJnDp1il/84heyjAcP\n31NbW1tmzJjBiRMnSEhIoLy8HH9/f0OxTikD2erq6sce3vDwCNTLy4vTp08zdOhQyROe9TtVDg4O\nBAQEsHPnTsaPH8/o0aPZuXMn/v7+gDx/X3369GH37t0UFBQwaNAgvvvuOz7//HPq6uoYOXKkpGP9\n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\nSUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_feature_importance(dataset, X, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 6.3 Feature Selection \n", "[Back to Table of Contents](#table)\n", "\n", "This an important part of most parts that will follow. This piece of code will let you quickly select \n", "the feature variables that you want in your \"X\" variable and the target feature variable in \"y\". \n", "Moreover, a dataframe called \"dataset\" will be generated that includes the features and target variables. \n", "The target variable will always be the last column in dataframe \"dataset\". \n", "\n", "You can use this code to change the variables in the **Predictions**, **GridSearch** and **Feature Importance**. " ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "features = ['LotNr','Allocate','EstValue','StartPrice','Followers','Bank','Dealer', \n", " 'Liquidator','Volunteer','LotsSale','LotsCtgry','Forced','SP.EV', \n", " 'Duration','Year','Category','Sale_nr','Categories_per_sale','CtgryLotNr',\n", " 'RelStartPriceCtgry', 'RelLotNr', 'RelCtgryLotNr','RelDurationCtgry']\n", "target = 'multiplier_binary'\n", "dataset, X, y = select_features(df, features, target)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7. Prediction \n", "[Back to Table of Contents](#table)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 7.1 Classification with K-Fold \n", "[Back to Table of Contents](#table)\n", "\n", "The initial results show that a Random Forest performs best, even with no parameters tweaked.\n", "Some tweaking is ofcourse necessary in order to get the best results. \n", "It should be noted though that I haven't thought yet\n", "about the best way to do cross validation in this case. For now, it is simply 5-fold cross validation. \n", "A thought would \n", "be to use **leave-one out** as we have multiple different sales and we can see how it would perform if we would predict \n", "for each sale. \n", "It would definitely most relevant to the optimization as we are (probably) going to optimize individual sales. " ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clf = [KNeighborsClassifier(), LGBMClassifier(),DecisionTreeClassifier(),\n", " RandomForestClassifier(),AdaBoostClassifier(),GradientBoostingClassifier(),\n", " GaussianNB(),LogisticRegression(),XGBClassifier()]\n", "result = cv_multiple_classifiers(X, y, classifiers = clf, n_splits=10, print_process=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 7.2 Classification with Leave-One-Out CV \n", "[Back to Table of Contents](#table)\n", "\n", "The issue with normal k-fold cross validation is that there will be leakage of data with respect to individual sales. The purpose of cross validation is to prove that your model works on data that it has not seen before. However, if you use k-fold cross validation then it it likely that information regarding a certain sale will end up in both the train and test sets. Therefore, we adopted leave-one-out (LOO) cross validation which is essentially a k-fold cross validation where the k's are defined by the sales themselves. Seeing as we have 27 sales in the dataset, LOO CV will give us a 27-fold cross validation which is a more accurate than any normal k-fold CV. " ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [], "source": [ "rfc = RandomForestClassifier(n_estimators=100, max_features= 11)\n", "lgbm = LGBMClassifier(learning_rate=0.2, max_depth=2,metric='binary_logloss', min_child_samples=20,min_data_in_leaf=15, num_leaves=2, objective='binary',random_state=42)\n", "xgb = XGBClassifier(gamma=1, learning_rate=0.000001,max_depth=1, min_child_weight=1,n_estimators=100,n_jobs=-1, objective='binary:logistic', random_state=42,reg_alpha=0.5, reg_lambda=0.5)\n", "results, info_folds = loo_cv(dataset, adjust_folds=False, clf=lgbm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "27 folds/sales in the cross validation is fairly large, which is typically not an issue if each fold has enough data. However, there are some folds/sale that only have a few lots in them. What you then get is that you have 99% of the data is trained and only 1% is tested on. When you test on 1% of the data, then it is likely you get outliers, either very high or very low accuracy scores. Therefore, I simply removed the accuracy of folds where the target fold has 50 or less datapoints. " ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "old: 0.7083953661270547\n", "new: 0.718611468448668\n" ] } ], "source": [ "folds_to_remove = [fold[0]-1 for fold in info_folds.items() if fold[1]<50]\n", "results_new = [value for index, value in enumerate(results) if index not in folds_to_remove]\n", "print('old: {}'.format(sum(results)/len(results)))\n", "print('new: {}'.format(sum(results_new)/len(results_new)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 7.3 Voting Classifier with Leave-One-Out CV \n", "[Back to Table of Contents](#table)\n", "\n", "Instead of choosing a single classifier, let's use multiple classifiers and see if they agree on a better model than simply using a single one. The idea is simple, all classifiers make mistakes but they don't all make the same mistakes. It's a principle very similar to Random Forests and ensembles in general. " ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [], "source": [ "clf1 = RandomForestClassifier(n_estimators=100, max_features= 11, random_state=42)\n", "clf2 = AdaBoostClassifier()\n", "clf3 = GradientBoostingClassifier()\n", "clf4 = LGBMClassifier(learning_rate=0.2, max_depth=2,metric='binary_logloss', min_child_samples=20,min_data_in_leaf=15, num_leaves=2, objective='binary',random_state=42)\n", "clf5 = XGBClassifier(gamma=1, learning_rate=0.000001,max_depth=1, min_child_weight=1,n_estimators=100,n_jobs=-1, objective='binary:logistic', random_state=42,reg_alpha=0.5, reg_lambda=0.5)\n", "eclf1 = VotingClassifier(estimators=[('rf', clf1),('ada',clf2),('grad',clf3),('lgbm',clf4),('xgb', clf5)],voting='soft',weights=[1,1,1,3,1])\n", "results, info_folds = loo_cv(dataset, adjust_folds=False, clf=eclf1)" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "old: 0.7058487953523901\n", "new: 0.7183394071044964\n" ] } ], "source": [ "folds_to_remove = [fold[0]-1 for fold in info_folds.items() if fold[1]<50]\n", "results_test = [value for index, value in enumerate(results) if index not in folds_to_remove]\n", "print('old: {}'.format(sum(results)/len(results)))\n", "print('new: {}'.format(sum(results_test)/len(results_test)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see the VotingClassifier does not improve results. This does not mean that it is not possible to get an improvement with a VotingClassifier, merely that it is very difficult to do so. Setting the right weights might do the trick. However, even if we manage to do so optimization we'll be lengthy computationally due to the ensemble of models. Thus, let's just keep LightGBM as our preferred as it computationally fast and gives a high accuracy. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 7.4 Regression with K-Fold CV \n", "[Back to Table of Contents](#table)\n", "\n", "The next step is obviously to see whether we can do regression instead of classification. The advantage is that you can more accurately predict the multiplier value and therefore increase the performance of optimization. However, this needs to be fairly accurate in order for this to work seeing as most multiplier values are between 0 and 3. Therefore, we would like to have a RMSE of at most 0.5. " ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'ElasticNet': 0.9227761403114669,\n", " 'GradientBoostingRegressor': 0.835459893069204,\n", " 'KernelRidge': 0.8465575195837018,\n", " 'LGBMRegressor': 0.8492899940535616,\n", " 'Lasso': 0.9224493829111007,\n", " 'RandomForestRegressor': 0.9245381147668305,\n", " 'XGBRegressor': 0.8313899573979497}" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = resolve_skewedness(df)\n", "target = 'multiplier'\n", "dataset, X, y = select_features(df, features = [], target = target)\n", "models = [GradientBoostingRegressor(), Lasso(),ElasticNet(),KernelRidge(), \n", " RandomForestRegressor(), XGBRegressor(), LGBMRegressor()]\n", "result = {name.__class__.__name__: np.mean(rmse_cross_validation(name, X, y)) for name in models}\n", "result" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results currently show as lowest score 0.83. Removing high multipliers will help with that, but it seems to me that doing so a bit cheating. At some point you are removing valueable information that is needed for when you model data that was not previously seen. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 8. Grid Search \n", "[Back to Table of Contents](#table)\n", "\n", "A simple gridsearch that can be used to find the best parameters for the selected classifier. \n", "However, changing classifier and selecting parameters is a lot of work, so I decided against putting it all into a function. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 8.1 GridSearch Classification \n", "[Back to Table of Contents](#table)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "target = 'multiplier_binary'\n", "dataset, X, y = select_features(df, features = [], target = target)\n", "parameters = [{'n_estimators': [1, 10, 50, 100, 200, 300], 'max_features':np.arange(1, len(dataset.columns)-1, 1)}]\n", "lgbm_grid = {'num_leaves': [2,3],'max_depth': [2],'min_data_in_leaf': [15],'objective': ['binary'],'boosting': ['gbdt'],'metric': ['binary_logloss'],'learning_rate': [0.2]}\n", "xgb_grid = {'max_depth': [1,3], 'learning_rate': [0.0001],'min_child_weight': [1]}\n", "# grid_search(xgb_grid, XGBClassifier())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 8.2 GridSearch Regression \n", "[Back to Table of Contents](#table)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "param_grid_gradient = {'n_estimators': [500, 3000], 'learning_rate': np.arange(0.01, 0.1, 0.01), \n", " 'max_depth': [1, 3, 5, 7], 'min_samples_leaf': [10, 15, 20], 'min_samples_split': [10, 15, 20]}\n", "param_grid_lasso = {'alpha':np.arange(0.0001, 0.001, 0.0001), 'max_iter': np.arange(10000, 50000, 10000)}\n", "param_grid_net = {'alpha': np.arange(0.0001, 0.001, 0.0001),'max_iter': np.arange(1000, 10000, 1000)}\n", "param_grid_ridge = {'alpha': np.arange(0.1, 0.9, 0.1),'kernel': ['polynomial'],'degree': [2],'coef0':[1.85]} \n", "model = [GradientBoostingRegressor(), Lasso(), ElasticNet(), KernelRidge()]\n", "# grid_search(param_grid_gradient, model[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 9. Optimization - Description \n", "[Back to Table of Contents](#table)\n", "\n", "\n", "**Decision Variables:** \n", "Decision variables are features that we can change before the auction starts in order to optimize the profit made. \n", "For example, the starting price is a decision variable as we can change what it would be before the auction. \n", "The estimated value on the other is *not* a decison variable as they are judged by experts and typically do not change. \n", " \n", "The following are chosen to be the decision variables: \n", "* *StartPrice*: starting bidding price of the lot\n", "* *Duration*: duration of auctions in hours on a lot\n", "\n", "**Sale Selection** \n", "For optimization, it might be best to approach it in one of two ways:\n", "* Either leave one sale out and optimize that one, or\n", "* Construct our own sale and try to optimize that one\n", "\n", "Leaving one sale out is preferred as it represents real data. We simply leave one out, train on the rest and then simply optimize that sale. \n", "\n", "**Performance** \n", "The performance of an auction is judged by the sum of all predicted binary multipliers. If there are 10 items that are predicted a 1, then the total score is a 10. \n", "However, predicting a 1 for an item that is estimated to be worth \\$100 is not necessarely the same as predicting a 1 for an item with a worth of \\$200. \n", "You can choose to do a weighted sum of 0's and 1's in order to approximate a regression task. For example, an item worth \\$100 with a prediction of 1 might be multiplied by 1.1 whereas the \\$200 item is multiplied by 1.2 to indicate that it is more important to score a 1 for a higher valued item than a lower valued item. However, we start by optimizing the number of 1s. \n", "\n", "Thus, there are three possible performance measures: \n", "* Unweighted Classification \n", "* Weighted Classification \n", "* Regression (best way, but difficult to achieve a low RMSE)\n", "\n", "We start with regression so indicate to which extend that is possible. As you will see below, it has difficulties limiting the maximum amount of money that can be made. \n", "\n", "**Heuristics** \n", "We basically have to find the right combination of decision variables for each lot. \n", "In order to do that we can either brute-force it, which is difficult and might take too much time. \n", "Or we can choose to use a heuristic for that purpose. \n", "\n", "* Step 1: Insert the LotNr based on Highest Estimated Value\n", "* Step 2: Choose the Duration based on the Duration correlated highest to the Multiplier\n", "* Step 3: ....\n", "* Step 4: Profit! " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 10. Optimization with Regression \n", "[Back to Table of Contents](#table)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Fit Data** \n", "Train on all sales are not sale_nr 10 so we have a pre-trained model on which we can do the optimization" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "df, to_optimize, baseline, X, y = prepare_data_optimization(target='multiplier')\n", "regressor = GradientBoostingRegressor(n_estimators = 3000, min_samples_leaf = 15, learning_rate = 0.05, max_features ='sqrt',min_samples_split = 10, loss = 'huber').fit(X, y)\n", "regressor = Lasso().fit(X, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's say I randomly put in some numbers, how well would I do? " ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "to_optimize.LotNr = range(len(to_optimize), 0, -1)\n", "to_optimize.StartPrice = to_optimize.EstValue * 10000000000\n", "to_optimize.Duration = 50\n", "to_optimize.Part_of_Day = 1" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Baseline: \t$65530,-\n", "Optimization: \t$210216374858014,-\n" ] } ], "source": [ "result = int(np.sum(regressor.predict(to_optimize.values) * to_optimize.EstValue.values))\n", "print('Baseline: \\t${},-'.format(int(baseline)))\n", "print('Optimization: \\t${},-'.format(int(result)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Problem:** \n", "Clearly we have a problem, the model apparently thinks that a higher Starting Price leads to a higher multiplier. However, if we set the Starting Price at 10 times the Estimated Value then it gives a high score, while in reality nobody would actually bid that much. Thus, this is an indication of the issues when using a regressor in this case. \n", "This problem exists for Lasso, Ridge and ElasticNet because they are typical regressors. \n", "\n", "The regressors that seem to work are:\n", "* GradientBoosting\n", "* RandomForestRegressor" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 11. Optimization - Classification \n", "[Back to Table of Contents](#table) \n", "\n", "I've chosen the following variables to be decision variables that we can optimize:\n", "* StartPrice\n", "* Duration" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 11.1 Genetic Algorithm \n", "[Back to Table of Contents](#table) " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "df, to_optimize, baseline, X, y = prepare_data_optimization()\n", "clf = LGBMClassifier(learning_rate=0.2, max_depth=2,metric='binary_logloss', min_child_samples=20,\n", " min_data_in_leaf=15, num_leaves=2, objective='binary',random_state=42).fit(X, y)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Start of evolution\n", " Evaluated 300 individuals\n", "-- End of (successful) evolution --\n" ] } ], "source": [ "temp_to_optimize = heuristic_ga(to_optimize, target = 'StartPrice', min_val = 0, max_val = 500)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Baseline\n", "Sum of 1s: 193\n", "Sum of probs that class is 1: 134.31452018508756\n", "\n", "Genetic Algorithm\n", "Sum of 1s: 217\n", "Sum of probs that class is 1: 155.1691108767212\n" ] } ], "source": [ "print_results(temp_to_optimize, 'Genetic Algorithm', clf, to_optimize, 'Baseline')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 11.2 Heuristic \n", "[Back to Table of Contents](#table) \n", "The heuristic optimizes the value of the feature variable (i.e. StartPrice or Duration)\n", "by iterating over values as defined by the interval. Thus,\n", "a starting value is selected and added by the interval until\n", "it improves. If after 10 iterations there has been no improvement,\n", "it resets back to the starting value and goes the other direction. \n", "For example, if adding 5 to the starting price of 40 doesn't yield \n", "any improvement, reset back to the starting price of 40 and substract\n", "5 instead." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "df, to_optimize_v2, baseline, X, y = prepare_data_optimization()\n", "\n", "results = []\n", "for index, row in enumerate(to_optimize_v2.values):\n", " to_optimize_v2.iloc[index], improvements = heuristic_probabilities(row, feature = 'StartPrice',interval = 1)\n", " results.append(improvements)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Heuristic\n", "Sum of 1s: 217\n", "Sum of probs that class is 1: 155.51677586136967\n", "\n", "Baseline\n", "Sum of 1s: 193\n", "Sum of probs that class is 1: 134.31452018508756\n", "\n" ] } ], "source": [ "print_results([(to_optimize_v2, 'Heuristic'), (to_optimize, 'Baseline')], clf)" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "results = [x for y in results for x in y] # Flatten results\n", "results = [(i + 1, sum(results[:i+1])) for i in range(len(results))] # Sum sequence \n", "results = pd.DataFrame(results, columns = ['index', 'value'])\n", "scatter_plot(results, 'index', 'value', xlabel='Sum of Improved Probabilities', ylabel='Iteration', \n", " title='Improvement of Probabilities')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 11.3 Validation \n", "[Back to Table of Contents](#table) \n", "Our classifier gives ~70% accuracy. In the worst case scenario 30% of classifications are incorrect. Therefore, let's see what happens if change 30% of 0's and 1's to 1's and 0's respectively. " ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Baseline: \t200\n", "Optimization: \t200.172\n" ] } ], "source": [ "validate_heuristic_results(clf, to_optimize_v2, baseline, percentage=30, iterations=1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is a great result! Why? Because this is the minimum sum that we can achieve assuming in practice it is also 70% accuracy. In practice, it may actually result in a better score. \n", "\n", "Also, there are more 1's after optimization (which is of course the goal) which means that if you are inverting the scores, it is more likely that you would invert a 1 to a 0. Thus, this even further validates that the optimization score is a bare minimum. " ] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:JADS]", "language": "python", "name": "conda-env-JADS-py" }, "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.5.3" }, "latex_envs": { "LaTeX_envs_menu_present": true, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": false, "user_envs_cfg": false } }, "nbformat": 4, "nbformat_minor": 2 }