From 4148dbc671b06e8c8194d6100b5d935a20fb3d63 Mon Sep 17 00:00:00 2001 From: Poojavenkata Chidipothu Date: Sat, 28 Dec 2019 23:25:14 -0600 Subject: [PATCH 1/2] https://github.com/Poojavenkata/stackoverflow.git --- Salary.ipynb | 5 +++-- Salary_ML.py | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Salary.ipynb b/Salary.ipynb index cd285b5..6ce6492 100644 --- a/Salary.ipynb +++ b/Salary.ipynb @@ -274,7 +274,8 @@ "%matplotlib inline\n", "\n", "df = pd.read_csv('./survey_results_public.csv')\n", - "df.head()" + "df.head()\n", + "df.tail()" ] }, { @@ -5774,7 +5775,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.1" + "version": "3.7.3" } }, "nbformat": 4, diff --git a/Salary_ML.py b/Salary_ML.py index a916a9e..c7eda6d 100644 --- a/Salary_ML.py +++ b/Salary_ML.py @@ -44,6 +44,7 @@ def clean_data(df): X = df return X, y + def find_optimal_lm_mod(X, y, cutoffs, test_size = .30, random_state=42, plot=True): ''' INPUT @@ -54,6 +55,7 @@ def find_optimal_lm_mod(X, y, cutoffs, test_size = .30, random_state=42, plot=Tr random_state - int, default 42, controls random state for train_test_split plot - boolean, default 0.3, True to plot result + OUTPUT r2_scores_test - list of floats of r2 scores on the test data r2_scores_train - list of floats of r2 scores on the train data @@ -110,6 +112,7 @@ def main(): X, y = clean_data(df) #cutoffs here pertains to the number of missing values allowed in the used columns. #Therefore, lower values for the cutoff provides more predictors in the model. + ################################## cutoffs = [5000, 3500, 2500, 1000, 100, 50, 30, 20, 10, 5] r2_scores_test, r2_scores_train, lm_model, X_train, X_test, y_train, y_test = find_optimal_lm_mod(X, y, cutoffs, plot=False) From 2347130ebf2728fdad83c6b4e8008b376b1fc796 Mon Sep 17 00:00:00 2001 From: Poojavenkata Chidipothu Date: Sat, 28 Dec 2019 23:27:54 -0600 Subject: [PATCH 2/2] changes --- stackoverflow/BootcampStats.ipynb | 758 +++ stackoverflow/HowToBreakIntoTheField.ipynb | 2147 ++++++++ stackoverflow/PredictSalary.ipynb | 5782 ++++++++++++++++++++ stackoverflow/README.md | 40 + stackoverflow/Salary.ipynb | 5782 ++++++++++++++++++++ stackoverflow/Salary_ML.py | 121 + 6 files changed, 14630 insertions(+) create mode 100644 stackoverflow/BootcampStats.ipynb create mode 100644 stackoverflow/HowToBreakIntoTheField.ipynb create mode 100644 stackoverflow/PredictSalary.ipynb create mode 100644 stackoverflow/README.md create mode 100644 stackoverflow/Salary.ipynb create mode 100644 stackoverflow/Salary_ML.py diff --git a/stackoverflow/BootcampStats.ipynb b/stackoverflow/BootcampStats.ipynb new file mode 100644 index 0000000..5d80edc --- /dev/null +++ b/stackoverflow/BootcampStats.ipynb @@ -0,0 +1,758 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's look at the second question of interest. That is - What does the data suggest of Bootcamp grads in terms of job placement and salary?\n", + "\n", + "Again, let's read in the data and necessary libraries." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RespondentProfessionalProgramHobbyCountryUniversityEmploymentStatusFormalEducationMajorUndergradHomeRemoteCompanySize...StackOverflowMakeMoneyGenderHighestEducationParentsRaceSurveyLongQuestionsInterestingQuestionsConfusingInterestedAnswersSalaryExpectedSalary
01StudentYes, bothUnited StatesNoNot employed, and not looking for workSecondary schoolNaNNaNNaN...Strongly disagreeMaleHigh schoolWhite or of European descentStrongly disagreeStrongly agreeDisagreeStrongly agreeNaNNaN
12StudentYes, bothUnited KingdomYes, full-timeEmployed part-timeSome college/university study without earning ...Computer science or software engineeringMore than half, but not all, the time20 to 99 employees...Strongly disagreeMaleA master's degreeWhite or of European descentSomewhat agreeSomewhat agreeDisagreeStrongly agreeNaN37500.0
23Professional developerYes, bothUnited KingdomNoEmployed full-timeBachelor's degreeComputer science or software engineeringLess than half the time, but at least one day ...10,000 or more employees...DisagreeMaleA professional degreeWhite or of European descentSomewhat agreeAgreeDisagreeAgree113750.0NaN
34Professional non-developer who sometimes write...Yes, bothUnited StatesNoEmployed full-timeDoctoral degreeA non-computer-focused engineering disciplineLess than half the time, but at least one day ...10,000 or more employees...DisagreeMaleA doctoral degreeWhite or of European descentAgreeAgreeSomewhat agreeStrongly agreeNaNNaN
45Professional developerYes, I program as a hobbySwitzerlandNoEmployed full-timeMaster's degreeComputer science or software engineeringNever10 to 19 employees...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", + "

5 rows × 154 columns

\n", + "
" + ], + "text/plain": [ + " Respondent Professional \\\n", + "0 1 Student \n", + "1 2 Student \n", + "2 3 Professional developer \n", + "3 4 Professional non-developer who sometimes write... \n", + "4 5 Professional developer \n", + "\n", + " ProgramHobby Country University \\\n", + "0 Yes, both United States No \n", + "1 Yes, both United Kingdom Yes, full-time \n", + "2 Yes, both United Kingdom No \n", + "3 Yes, both United States No \n", + "4 Yes, I program as a hobby Switzerland No \n", + "\n", + " EmploymentStatus \\\n", + "0 Not employed, and not looking for work \n", + "1 Employed part-time \n", + "2 Employed full-time \n", + "3 Employed full-time \n", + "4 Employed full-time \n", + "\n", + " FormalEducation \\\n", + "0 Secondary school \n", + "1 Some college/university study without earning ... \n", + "2 Bachelor's degree \n", + "3 Doctoral degree \n", + "4 Master's degree \n", + "\n", + " MajorUndergrad \\\n", + "0 NaN \n", + "1 Computer science or software engineering \n", + "2 Computer science or software engineering \n", + "3 A non-computer-focused engineering discipline \n", + "4 Computer science or software engineering \n", + "\n", + " HomeRemote \\\n", + "0 NaN \n", + "1 More than half, but not all, the time \n", + "2 Less than half the time, but at least one day ... \n", + "3 Less than half the time, but at least one day ... \n", + "4 Never \n", + "\n", + " CompanySize ... StackOverflowMakeMoney Gender \\\n", + "0 NaN ... Strongly disagree Male \n", + "1 20 to 99 employees ... Strongly disagree Male \n", + "2 10,000 or more employees ... Disagree Male \n", + "3 10,000 or more employees ... Disagree Male \n", + "4 10 to 19 employees ... NaN NaN \n", + "\n", + " HighestEducationParents Race SurveyLong \\\n", + "0 High school White or of European descent Strongly disagree \n", + "1 A master's degree White or of European descent Somewhat agree \n", + "2 A professional degree White or of European descent Somewhat agree \n", + "3 A doctoral degree White or of European descent Agree \n", + "4 NaN NaN NaN \n", + "\n", + " QuestionsInteresting QuestionsConfusing InterestedAnswers Salary \\\n", + "0 Strongly agree Disagree Strongly agree NaN \n", + "1 Somewhat agree Disagree Strongly agree NaN \n", + "2 Agree Disagree Agree 113750.0 \n", + "3 Agree Somewhat agree Strongly agree NaN \n", + "4 NaN NaN NaN NaN \n", + "\n", + " ExpectedSalary \n", + "0 NaN \n", + "1 37500.0 \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", + "\n", + "[5 rows x 154 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "df = pd.read_csv('./survey_results_public.csv')\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2602, 154)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#In this case, we want to look at bootcamp data\n", + "#First - let's just look at how many people took a bootcamp in the dataset\n", + "\n", + "bootcamp_df = df[df['TimeAfterBootcamp'].isnull()==False]\n", + "not_bootcamp_df = df[df['TimeAfterBootcamp'].isnull()==True] \n", + "bootcamp_df.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Looks like a reasonable sample of ~2600 people\n", + "\n", + "#Additional questions about bootcamps - they suggest high salaries, placement, \n", + "#helping those with non-traditional backgrounds and diversity break into tech... let's see what\n", + "#the data suggests." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Male 0.863071\n", + "Female 0.112494\n", + "Other 0.006455\n", + "Gender non-conforming 0.005533\n", + "Male; Other 0.002766\n", + "Female; Gender non-conforming 0.001383\n", + "Male; Gender non-conforming 0.001383\n", + "Male; Female; Transgender; Gender non-conforming; Other 0.000922\n", + "Male; Female 0.000922\n", + "Transgender; Gender non-conforming 0.000922\n", + "Transgender 0.000922\n", + "Female; Transgender; Gender non-conforming 0.000922\n", + "Male; Transgender 0.000922\n", + "Male; Female; Transgender; Gender non-conforming 0.000461\n", + "Male; Gender non-conforming; Other 0.000461\n", + "Female; Gender non-conforming; Other 0.000461\n", + "Name: Gender, dtype: float64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bootcamp_df['Gender'].value_counts()/(bootcamp_df.shape[0] - sum(bootcamp_df['Gender'].isnull()))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Male 0.903857\n", + "Female 0.071659\n", + "Other 0.006418\n", + "Male; Other 0.005019\n", + "Gender non-conforming 0.004501\n", + "Male; Gender non-conforming 0.001886\n", + "Female; Transgender 0.001703\n", + "Transgender 0.001612\n", + "Female; Gender non-conforming 0.000791\n", + "Male; Female; Transgender; Gender non-conforming; Other 0.000395\n", + "Transgender; Gender non-conforming 0.000395\n", + "Male; Female 0.000395\n", + "Male; Transgender 0.000274\n", + "Male; Female; Transgender; Gender non-conforming 0.000182\n", + "Female; Transgender; Gender non-conforming 0.000182\n", + "Gender non-conforming; Other 0.000122\n", + "Male; Female; Transgender 0.000122\n", + "Male; Transgender; Gender non-conforming 0.000122\n", + "Male; Female; Other 0.000061\n", + "Male; Gender non-conforming; Other 0.000061\n", + "Female; Other 0.000030\n", + "Male; Female; Transgender; Other 0.000030\n", + "Male; Transgender; Other 0.000030\n", + "Female; Transgender; Gender non-conforming; Other 0.000030\n", + "Female; Transgender; Other 0.000030\n", + "Transgender; Other 0.000030\n", + "Male; Female; Gender non-conforming; Other 0.000030\n", + "Male; Female; Gender non-conforming 0.000030\n", + "Name: Gender, dtype: float64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "not_bootcamp_df['Gender'].value_counts()/(not_bootcamp_df.shape[0] - sum(not_bootcamp_df['Gender'].isnull()))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#It does appear there is a small push for diversity overall by bootcamps, but not huge..." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Bachelor's degree 0.475019\n", + "Master's degree 0.225211\n", + "Some college/university study without earning a bachelor's degree 0.162567\n", + "Secondary school 0.069562\n", + "Doctoral degree 0.022291\n", + "Professional degree 0.016141\n", + "I prefer not to answer 0.011914\n", + "Primary/elementary school 0.009224\n", + "I never completed any formal education 0.008071\n", + "Name: FormalEducation, dtype: float64" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bootcamp_df['FormalEducation'].value_counts()/(bootcamp_df.shape[0] - sum(bootcamp_df['FormalEducation'].isnull()))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Bachelor's degree 0.417565\n", + "Master's degree 0.216335\n", + "Some college/university study without earning a bachelor's degree 0.157942\n", + "Secondary school 0.117381\n", + "Doctoral degree 0.025620\n", + "I prefer not to answer 0.022095\n", + "Primary/elementary school 0.020967\n", + "Professional degree 0.013794\n", + "I never completed any formal education 0.008301\n", + "Name: FormalEducation, dtype: float64" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "not_bootcamp_df['FormalEducation'].value_counts()/(not_bootcamp_df.shape[0] - sum(not_bootcamp_df['FormalEducation'].isnull()))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#In terms of formal education it looks basically the same - more bachelors degree holders do \n", + "#bootcamps, but fewer phds do bootcamps." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "I already had a job as a developer when I started the program 0.458493\n", + "Immediately upon graduating 0.112990\n", + "I got a job as a developer before completing the program 0.096849\n", + "One to three months 0.087625\n", + "I haven't gotten a job as a developer yet 0.081091\n", + "Less than a month 0.059954\n", + "Four to six months 0.040354\n", + "Longer than a year 0.032667\n", + "Six months to a year 0.029977\n", + "Name: TimeAfterBootcamp, dtype: float64" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bootcamp_df['TimeAfterBootcamp'].value_counts()/bootcamp_df.shape[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#So interestingly this data makes it more difficult to analyze the impact of bootcamps,\n", + "# as many of the students already had developer jobs before starting the program\n", + "# we could remove them?\n", + "\n", + "#If you are truly new to the space, we can rule out that you already have a job as a developer\n", + "# then we can look at the other individuals and see which are still not \n", + "\n", + "not_devs = bootcamp_df[bootcamp_df['TimeAfterBootcamp']!=\"I already had a job as a developer when I started the program\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Immediately upon graduating 0.208659\n", + "I got a job as a developer before completing the program 0.178850\n", + "One to three months 0.161817\n", + "I haven't gotten a job as a developer yet 0.149752\n", + "Less than a month 0.110717\n", + "Four to six months 0.074521\n", + "Longer than a year 0.060326\n", + "Six months to a year 0.055358\n", + "Name: TimeAfterBootcamp, dtype: float64" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "not_devs['TimeAfterBootcamp'].value_counts()/not_devs.shape[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "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", + "
RespondentProfessionalProgramHobbyCountryUniversityEmploymentStatusFormalEducationMajorUndergradHomeRemoteCompanySize...StackOverflowMakeMoneyGenderHighestEducationParentsRaceSurveyLongQuestionsInterestingQuestionsConfusingInterestedAnswersSalaryExpectedSalary
16961697Professional developerYes, bothUnited StatesNoEmployed full-timeBachelor's degreeComputer science or software engineeringAll or almost all the time (I'm full-time remote)10,000 or more employees...DisagreeMaleHigh schoolWhite or of European descentDisagreeAgreeDisagreeAgree195000.0NaN
\n", + "

1 rows × 154 columns

\n", + "
" + ], + "text/plain": [ + " Respondent Professional ProgramHobby Country \\\n", + "1696 1697 Professional developer Yes, both United States \n", + "\n", + " University EmploymentStatus FormalEducation \\\n", + "1696 No Employed full-time Bachelor's degree \n", + "\n", + " MajorUndergrad \\\n", + "1696 Computer science or software engineering \n", + "\n", + " HomeRemote \\\n", + "1696 All or almost all the time (I'm full-time remote) \n", + "\n", + " CompanySize ... StackOverflowMakeMoney Gender \\\n", + "1696 10,000 or more employees ... Disagree Male \n", + "\n", + " HighestEducationParents Race SurveyLong \\\n", + "1696 High school White or of European descent Disagree \n", + "\n", + " QuestionsInteresting QuestionsConfusing InterestedAnswers Salary \\\n", + "1696 Agree Disagree Agree 195000.0 \n", + "\n", + " ExpectedSalary \n", + "1696 NaN \n", + "\n", + "[1 rows x 154 columns]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bootcamp_df[bootcamp_df['Salary']==195000]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bootcamp_df['Salary'].hist(bins=20);\n", + "plt.title('Salary for Bootcamp Grads');\n", + "plt.xlabel('Salary');\n", + "plt.ylabel('Count');" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "count 765.000000\n", + "mean 61775.438188\n", + "std 41797.379964\n", + "min 0.029364\n", + "25% 29520.430108\n", + "50% 56980.056980\n", + "75% 91397.849462\n", + "max 195000.000000\n", + "Name: Salary, dtype: float64" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bootcamp_df['Salary'].describe()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Here we can get some idea of how bootcamp grades fair, but this isn't straightforward.\n", + "#Many of these individuals are not new to the field, and the salaries are all over the place\n", + "#But the descriptive statistics here give us some ideas... just nothing really concrete" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/stackoverflow/HowToBreakIntoTheField.ipynb b/stackoverflow/HowToBreakIntoTheField.ipynb new file mode 100644 index 0000000..441624e --- /dev/null +++ b/stackoverflow/HowToBreakIntoTheField.ipynb @@ -0,0 +1,2147 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Screencast\n", + "\n", + "In the previous video, I brought a few questions we will be exploring throughout this lesson. First, let's take a look at the data, and see how we might answer the first question about how to break into the field of becoming a software developoer according to the survey results.\n", + "\n", + "To get started, let's read in the necessary libraries we will need to wrangle our data: pandas and numpy. If we decided to build some basic plots, matplotlib might prove useful as well." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RespondentProfessionalProgramHobbyCountryUniversityEmploymentStatusFormalEducationMajorUndergradHomeRemoteCompanySize...StackOverflowMakeMoneyGenderHighestEducationParentsRaceSurveyLongQuestionsInterestingQuestionsConfusingInterestedAnswersSalaryExpectedSalary
01StudentYes, bothUnited StatesNoNot employed, and not looking for workSecondary schoolNaNNaNNaN...Strongly disagreeMaleHigh schoolWhite or of European descentStrongly disagreeStrongly agreeDisagreeStrongly agreeNaNNaN
12StudentYes, bothUnited KingdomYes, full-timeEmployed part-timeSome college/university study without earning ...Computer science or software engineeringMore than half, but not all, the time20 to 99 employees...Strongly disagreeMaleA master's degreeWhite or of European descentSomewhat agreeSomewhat agreeDisagreeStrongly agreeNaN37500.0
23Professional developerYes, bothUnited KingdomNoEmployed full-timeBachelor's degreeComputer science or software engineeringLess than half the time, but at least one day ...10,000 or more employees...DisagreeMaleA professional degreeWhite or of European descentSomewhat agreeAgreeDisagreeAgree113750.0NaN
34Professional non-developer who sometimes write...Yes, bothUnited StatesNoEmployed full-timeDoctoral degreeA non-computer-focused engineering disciplineLess than half the time, but at least one day ...10,000 or more employees...DisagreeMaleA doctoral degreeWhite or of European descentAgreeAgreeSomewhat agreeStrongly agreeNaNNaN
45Professional developerYes, I program as a hobbySwitzerlandNoEmployed full-timeMaster's degreeComputer science or software engineeringNever10 to 19 employees...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", + "

5 rows × 154 columns

\n", + "
" + ], + "text/plain": [ + " Respondent Professional \\\n", + "0 1 Student \n", + "1 2 Student \n", + "2 3 Professional developer \n", + "3 4 Professional non-developer who sometimes write... \n", + "4 5 Professional developer \n", + "\n", + " ProgramHobby Country University \\\n", + "0 Yes, both United States No \n", + "1 Yes, both United Kingdom Yes, full-time \n", + "2 Yes, both United Kingdom No \n", + "3 Yes, both United States No \n", + "4 Yes, I program as a hobby Switzerland No \n", + "\n", + " EmploymentStatus \\\n", + "0 Not employed, and not looking for work \n", + "1 Employed part-time \n", + "2 Employed full-time \n", + "3 Employed full-time \n", + "4 Employed full-time \n", + "\n", + " FormalEducation \\\n", + "0 Secondary school \n", + "1 Some college/university study without earning ... \n", + "2 Bachelor's degree \n", + "3 Doctoral degree \n", + "4 Master's degree \n", + "\n", + " MajorUndergrad \\\n", + "0 NaN \n", + "1 Computer science or software engineering \n", + "2 Computer science or software engineering \n", + "3 A non-computer-focused engineering discipline \n", + "4 Computer science or software engineering \n", + "\n", + " HomeRemote \\\n", + "0 NaN \n", + "1 More than half, but not all, the time \n", + "2 Less than half the time, but at least one day ... \n", + "3 Less than half the time, but at least one day ... \n", + "4 Never \n", + "\n", + " CompanySize ... StackOverflowMakeMoney Gender \\\n", + "0 NaN ... Strongly disagree Male \n", + "1 20 to 99 employees ... Strongly disagree Male \n", + "2 10,000 or more employees ... Disagree Male \n", + "3 10,000 or more employees ... Disagree Male \n", + "4 10 to 19 employees ... NaN NaN \n", + "\n", + " HighestEducationParents Race SurveyLong \\\n", + "0 High school White or of European descent Strongly disagree \n", + "1 A master's degree White or of European descent Somewhat agree \n", + "2 A professional degree White or of European descent Somewhat agree \n", + "3 A doctoral degree White or of European descent Agree \n", + "4 NaN NaN NaN \n", + "\n", + " QuestionsInteresting QuestionsConfusing InterestedAnswers Salary \\\n", + "0 Strongly agree Disagree Strongly agree NaN \n", + "1 Somewhat agree Disagree Strongly agree NaN \n", + "2 Agree Disagree Agree 113750.0 \n", + "3 Agree Somewhat agree Strongly agree NaN \n", + "4 NaN NaN NaN NaN \n", + "\n", + " ExpectedSalary \n", + "0 NaN \n", + "1 37500.0 \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", + "\n", + "[5 rows x 154 columns]" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "from collections import defaultdict\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "df = pd.read_csv('./Part I/stackoverflow/survey_results_public.csv')\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now to look at our first question of interest: What do those employed in the industry suggest to help others enter the field? Looking at the `CousinEducation` field, you can see what these individuals would suggest to help others break into their field. Below you can take a look at the full field that survey participants would see." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[\"Let's pretend you have a distant cousin. They are 24 years old, have a college degree in a field not related to computer programming, and have been working a non-coding job for the last two years. They want your advice on how to switch to a career as a software developer. Which of the following options would you most strongly recommend to your cousin?\\nLet's pretend you have a distant cousin named Robert. He is 24 years old, has a college degree in a field not related to computer programming, and has been working a non-coding job for the last two years. He wants your advice on how to switch to a career as a software developer. Which of the following options would you most strongly recommend to Robert?\\nLet's pretend you have a distant cousin named Alice. She is 24 years old, has a college degree in a field not related to computer programming, and has been working a non-coding job for the last two years. She wants your advice on how to switch to a career as a software developer. Which of the following options would you most strongly recommend to Alice?\"]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2 = pd.read_csv('./Part I/stackoverflow/survey_results_schema.csv')\n", + "list(df2[df2.Column == 'CousinEducation']['Question'])" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
indexCousinEducation
0Take online courses; Buy books and work throug...711
1Take online courses551
2None of these523
3Take online courses; Part-time/evening courses...479
4Take online courses; Bootcamp; Part-time/eveni...465
\n", + "
" + ], + "text/plain": [ + " index CousinEducation\n", + "0 Take online courses; Buy books and work throug... 711\n", + "1 Take online courses 551\n", + "2 None of these 523\n", + "3 Take online courses; Part-time/evening courses... 479\n", + "4 Take online courses; Bootcamp; Part-time/eveni... 465" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Let's have a look at what the participants say\n", + "study = df['CousinEducation'].value_counts().reset_index()\n", + "study.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "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", + "
methodcount
0Take online courses; Buy books and work throug...711
1Take online courses551
2None of these523
3Take online courses; Part-time/evening courses...479
4Take online courses; Bootcamp; Part-time/eveni...465
\n", + "
" + ], + "text/plain": [ + " method count\n", + "0 Take online courses; Buy books and work throug... 711\n", + "1 Take online courses 551\n", + "2 None of these 523\n", + "3 Take online courses; Part-time/evening courses... 479\n", + "4 Take online courses; Bootcamp; Part-time/eveni... 465" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Oh this isn't what I was expecting, it is grouping items together if a participant provided \n", + "# more than just one answer. Let's see if we can clean this up.\n", + "# first to change this index column to a more appropriate name\n", + "study.rename(columns={'index': 'method', 'CousinEducation': 'count'}, inplace=True)\n", + "study.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A quick look through data, allows us to create a list of all of the individual methods marked by a user." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Here is a list of the different answers provided\n", + "possible_vals = [\"Take online courses\", \"Buy books and work through the exercises\", \n", + " \"None of these\", \"Part-time/evening courses\", \"Return to college\",\n", + " \"Contribute to open source\", \"Conferences/meet-ups\", \"Bootcamp\",\n", + " \"Get a job as a QA tester\", \"Participate in online coding competitions\",\n", + " \"Master's degree\", \"Participate in hackathons\", \"Other\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Now we want to see how often each of these individual values appears - I wrote \n", + "# this function to assist with process - it isn't the best solution, but it gets\n", + "# the job done and our dataset isn't large enough to computationally hurt us too much.\n", + "\n", + "def total_count(df, col1, col2, look_for):\n", + " '''\n", + " INPUT:\n", + " df - the pandas dataframe you want to search\n", + " col1 - the column name you want to look through\n", + " col2 - the column you want to count values from\n", + " look_for - a list of strings you want to search for in each row of df[col]\n", + " \n", + " OUTPUT:\n", + " new_df - a dataframe of each look_for with the count of how often it shows up \n", + " '''\n", + " new_df = defaultdict(int)\n", + " for val in look_for:\n", + " for idx in range(df.shape[0]):\n", + " if val in df[col1][idx]:\n", + " new_df[val] += int(df[col2][idx]) \n", + " new_df = pd.DataFrame(pd.Series(new_df)).reset_index()\n", + " new_df.columns = [col1, col2]\n", + " new_df.sort_values('count', ascending=False, inplace=True)\n", + " return new_df" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "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", + "
methodcount
12Take online courses15246
1Buy books and work through the exercises11750
8Part-time/evening courses7517
3Contribute to open source7423
0Bootcamp5276
2Conferences/meet-ups5244
11Return to college5017
10Participate in online coding competitions3610
4Get a job as a QA tester3376
9Participate in hackathons2747
5Master's degree2639
7Other2348
6None of these604
\n", + "
" + ], + "text/plain": [ + " method count\n", + "12 Take online courses 15246\n", + "1 Buy books and work through the exercises 11750\n", + "8 Part-time/evening courses 7517\n", + "3 Contribute to open source 7423\n", + "0 Bootcamp 5276\n", + "2 Conferences/meet-ups 5244\n", + "11 Return to college 5017\n", + "10 Participate in online coding competitions 3610\n", + "4 Get a job as a QA tester 3376\n", + "9 Participate in hackathons 2747\n", + "5 Master's degree 2639\n", + "7 Other 2348\n", + "6 None of these 604" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Now we can use our function and take a look at the results\n", + "# Looks like good news for Udacity - most individuals think that you \n", + "# should take online courses\n", + "\n", + "\n", + "study_df = total_count(study, 'method', 'count', possible_vals)\n", + "study_df" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "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", + "
methodcountperc
12Take online courses152460.209432
1Buy books and work through the exercises117500.161408
8Part-time/evening courses75170.103260
3Contribute to open source74230.101968
0Bootcamp52760.072476
2Conferences/meet-ups52440.072036
11Return to college50170.068918
10Participate in online coding competitions36100.049590
4Get a job as a QA tester33760.046376
9Participate in hackathons27470.037735
5Master's degree26390.036251
7Other23480.032254
6None of these6040.008297
\n", + "
" + ], + "text/plain": [ + " method count perc\n", + "12 Take online courses 15246 0.209432\n", + "1 Buy books and work through the exercises 11750 0.161408\n", + "8 Part-time/evening courses 7517 0.103260\n", + "3 Contribute to open source 7423 0.101968\n", + "0 Bootcamp 5276 0.072476\n", + "2 Conferences/meet-ups 5244 0.072036\n", + "11 Return to college 5017 0.068918\n", + "10 Participate in online coding competitions 3610 0.049590\n", + "4 Get a job as a QA tester 3376 0.046376\n", + "9 Participate in hackathons 2747 0.037735\n", + "5 Master's degree 2639 0.036251\n", + "7 Other 2348 0.032254\n", + "6 None of these 604 0.008297" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# We might also look at the percent\n", + "\n", + "study_df['perc'] = study_df['count']/np.sum(study_df['count'])\n", + "study_df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We might want to take this one step further and say we care more about the methods that are suggested by those who earn more, or those who have higher job satisfaction. Let's take a stab at incorporating that into this analysis." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# let's rewrite part of this function to get the mean salary for each method\n", + "\n", + "def mean_amt(df, col_name, col_mean, look_for):\n", + " '''\n", + " INPUT:\n", + " df - the pandas dataframe you want to search\n", + " col_name - the column name you want to look through\n", + " col_count - the column you want to count values from\n", + " col_mean - the column you want the mean amount for\n", + " look_for - a list of strings you want to search for in each row of df[col]\n", + " \n", + " OUTPUT:\n", + " df_all - holds sum, square, total, mean, variance, and standard deviation for the col_mean\n", + " '''\n", + " new_df = defaultdict(int)\n", + " squares_df = defaultdict(int)\n", + " denoms = dict()\n", + " for val in look_for:\n", + " denoms[val] = 0\n", + " for idx in range(df.shape[0]):\n", + " if df[col_name].isnull()[idx] == False:\n", + " if val in df[col_name][idx] and df[col_mean][idx] > 0:\n", + " new_df[val] += df[col_mean][idx]\n", + " squares_df[val] += df[col_mean][idx]**2 #Needed to understand the spread\n", + " denoms[val] += 1 \n", + " \n", + " # Turn into dataframes\n", + " new_df = pd.DataFrame(pd.Series(new_df)).reset_index()\n", + " squares_df = pd.DataFrame(pd.Series(squares_df)).reset_index()\n", + " denoms = pd.DataFrame(pd.Series(denoms)).reset_index()\n", + " \n", + " # Change the column names\n", + " new_df.columns = [col_name, 'col_sum']\n", + " squares_df.columns = [col_name, 'col_squares']\n", + " denoms.columns = [col_name, 'col_total']\n", + " \n", + " # Merge dataframes\n", + " df_means = pd.merge(new_df, denoms)\n", + " df_all = pd.merge(df_means, squares_df)\n", + " \n", + " # Additional columns needed for analysis\n", + " df_all['mean_col'] = df_means['col_sum']/df_means['col_total']\n", + " df_all['var_col'] = df_all['col_squares']/df_all['col_total'] - df_all['mean_col']**2\n", + " df_all['std_col'] = np.sqrt(df_all['var_col'])\n", + " df_all['lower_95'] = df_all['mean_col'] - 1.96*df_all['std_col']/np.sqrt(df_all['col_total'])\n", + " df_all['upper_95'] = df_all['mean_col'] + 1.96*df_all['std_col']/np.sqrt(df_all['col_total'])\n", + " return df_all" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CousinEducationcol_sumcol_totalcol_squaresmean_colvar_colstd_collower_95upper_95
3Contribute to open source1.392267e+0822531.239062e+1361796.1454951.680845e+0940998.10367160103.21454563489.076445
7Other4.491415e+077383.851360e+1260859.2816941.514792e+0938920.33107358051.23441163667.328977
5Master's degree4.284612e+077213.771773e+1259425.9692771.699862e+0941229.38760956416.46251762435.476037
11Return to college8.733691e+0714747.243713e+1259251.6361451.403567e+0937464.20878157339.03727661164.235014
0Bootcamp9.583229e+0716228.502989e+1259082.7949981.751510e+0941851.04391757046.04867161119.541325
9Participate in hackathons4.641498e+077964.044473e+1258310.2770601.680908e+0940998.87926455462.07023661158.483884
2Conferences/meet-ups9.699603e+0716778.366275e+1257839.0153071.643482e+0940539.88644655898.70108059779.329533
4Get a job as a QA tester5.852363e+0710325.017250e+1256708.9407711.645773e+0940568.12277154233.79298759184.088555
1Buy books and work through the exercises1.909928e+0833931.624985e+1356290.2322111.620639e+0940257.16056054935.64403357644.820390
12Take online courses2.415638e+0844932.011544e+1353764.4880121.586442e+0939830.16788352599.82576254929.150262
8Part-time/evening courses1.124542e+0821179.290785e+1253119.6131181.566963e+0939584.87914051433.35145854805.874778
6None of these5.377087e+061124.273189e+1148009.7063571.510415e+0938864.06365340811.98104155207.431672
10Participate in online coding competitions4.332660e+079313.326921e+1246537.7031611.407734e+0937519.78518144127.56702648947.839295
\n", + "
" + ], + "text/plain": [ + " CousinEducation col_sum col_total \\\n", + "3 Contribute to open source 1.392267e+08 2253 \n", + "7 Other 4.491415e+07 738 \n", + "5 Master's degree 4.284612e+07 721 \n", + "11 Return to college 8.733691e+07 1474 \n", + "0 Bootcamp 9.583229e+07 1622 \n", + "9 Participate in hackathons 4.641498e+07 796 \n", + "2 Conferences/meet-ups 9.699603e+07 1677 \n", + "4 Get a job as a QA tester 5.852363e+07 1032 \n", + "1 Buy books and work through the exercises 1.909928e+08 3393 \n", + "12 Take online courses 2.415638e+08 4493 \n", + "8 Part-time/evening courses 1.124542e+08 2117 \n", + "6 None of these 5.377087e+06 112 \n", + "10 Participate in online coding competitions 4.332660e+07 931 \n", + "\n", + " col_squares mean_col var_col std_col lower_95 \\\n", + "3 1.239062e+13 61796.145495 1.680845e+09 40998.103671 60103.214545 \n", + "7 3.851360e+12 60859.281694 1.514792e+09 38920.331073 58051.234411 \n", + "5 3.771773e+12 59425.969277 1.699862e+09 41229.387609 56416.462517 \n", + "11 7.243713e+12 59251.636145 1.403567e+09 37464.208781 57339.037276 \n", + "0 8.502989e+12 59082.794998 1.751510e+09 41851.043917 57046.048671 \n", + "9 4.044473e+12 58310.277060 1.680908e+09 40998.879264 55462.070236 \n", + "2 8.366275e+12 57839.015307 1.643482e+09 40539.886446 55898.701080 \n", + "4 5.017250e+12 56708.940771 1.645773e+09 40568.122771 54233.792987 \n", + "1 1.624985e+13 56290.232211 1.620639e+09 40257.160560 54935.644033 \n", + "12 2.011544e+13 53764.488012 1.586442e+09 39830.167883 52599.825762 \n", + "8 9.290785e+12 53119.613118 1.566963e+09 39584.879140 51433.351458 \n", + "6 4.273189e+11 48009.706357 1.510415e+09 38864.063653 40811.981041 \n", + "10 3.326921e+12 46537.703161 1.407734e+09 37519.785181 44127.567026 \n", + "\n", + " upper_95 \n", + "3 63489.076445 \n", + "7 63667.328977 \n", + "5 62435.476037 \n", + "11 61164.235014 \n", + "0 61119.541325 \n", + "9 61158.483884 \n", + "2 59779.329533 \n", + "4 59184.088555 \n", + "1 57644.820390 \n", + "12 54929.150262 \n", + "8 54805.874778 \n", + "6 55207.431672 \n", + "10 48947.839295 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_all = mean_amt(df, 'CousinEducation', 'Salary', possible_vals)\n", + "\n", + "# To get a simple answer to our questions - see these two tables.\n", + "\n", + "df_all.sort_values('mean_col', ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "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", + "
methodcountperc
12Take online courses152460.209432
1Buy books and work through the exercises117500.161408
8Part-time/evening courses75170.103260
3Contribute to open source74230.101968
0Bootcamp52760.072476
2Conferences/meet-ups52440.072036
11Return to college50170.068918
10Participate in online coding competitions36100.049590
4Get a job as a QA tester33760.046376
9Participate in hackathons27470.037735
5Master's degree26390.036251
7Other23480.032254
6None of these6040.008297
\n", + "
" + ], + "text/plain": [ + " method count perc\n", + "12 Take online courses 15246 0.209432\n", + "1 Buy books and work through the exercises 11750 0.161408\n", + "8 Part-time/evening courses 7517 0.103260\n", + "3 Contribute to open source 7423 0.101968\n", + "0 Bootcamp 5276 0.072476\n", + "2 Conferences/meet-ups 5244 0.072036\n", + "11 Return to college 5017 0.068918\n", + "10 Participate in online coding competitions 3610 0.049590\n", + "4 Get a job as a QA tester 3376 0.046376\n", + "9 Participate in hackathons 2747 0.037735\n", + "5 Master's degree 2639 0.036251\n", + "7 Other 2348 0.032254\n", + "6 None of these 604 0.008297" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "study_df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Although we can see the mean salary is highest for the individuals who say that you should contribute to open source, you might be asking - is that really a significant difference? The salary differences don't see that large...\n", + "\n", + "By the Central Limit Theorem, we know that the mean of any set of data will follow a normal distribution with a standard deviation equal to the standard deviation of the original data divided by the square root of the sample size, as long as we collect a large enough sample size. With that in mind, we can consider two salaries significantly different if a second salary is two standard deviations or more away from the other.\n", + "\n", + "Using the lower and upper bound components, we can get an idea of the salaries that are significantly different from one another. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Quiz - perform a similar analysis looking at career and job satisfaction for this individuals\n", + "# to determine which you want to be like" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "df_jobsat = mean_amt(df, 'CousinEducation', 'JobSatisfaction', possible_vals)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CousinEducationcol_sumcol_totalcol_squaresmean_colvar_colstd_collower_95upper_95
9Participate in hackathons14884.02073115166.07.1799324.0038042.0009517.0937957.266070
7Other13797.01937106521.07.1228704.2574892.0633687.0309807.214760
11Return to college27767.03904212971.07.1124493.9650701.9912487.0499857.174912
4Get a job as a QA tester21294.03000162716.07.0980003.8570631.9639417.0277217.168279
3Contribute to open source42374.05999324340.07.0635114.1724962.0426697.0118207.115202
2Conferences/meet-ups30868.04371236106.07.0620004.1446352.0358387.0016457.122354
0Bootcamp30404.04307231670.07.0592063.9567921.9891696.9997997.118613
1Buy books and work through the exercises66788.09492508944.07.0362414.1095172.0271946.9954597.077023
8Part-time/evening courses42797.06100324829.07.0159024.0277802.0069336.9655377.066266
12Take online courses85746.012222651056.07.0157094.0490092.0122156.9800357.051384
6None of these3000.043322898.06.9284064.8794012.2089376.7203437.136470
5Master's degree14459.02091108711.06.9148734.1744852.0431566.8272987.002448
10Participate in online coding competitions18184.02675135660.06.7977574.5045182.1223856.7173276.878187
\n", + "
" + ], + "text/plain": [ + " CousinEducation col_sum col_total \\\n", + "9 Participate in hackathons 14884.0 2073 \n", + "7 Other 13797.0 1937 \n", + "11 Return to college 27767.0 3904 \n", + "4 Get a job as a QA tester 21294.0 3000 \n", + "3 Contribute to open source 42374.0 5999 \n", + "2 Conferences/meet-ups 30868.0 4371 \n", + "0 Bootcamp 30404.0 4307 \n", + "1 Buy books and work through the exercises 66788.0 9492 \n", + "8 Part-time/evening courses 42797.0 6100 \n", + "12 Take online courses 85746.0 12222 \n", + "6 None of these 3000.0 433 \n", + "5 Master's degree 14459.0 2091 \n", + "10 Participate in online coding competitions 18184.0 2675 \n", + "\n", + " col_squares mean_col var_col std_col lower_95 upper_95 \n", + "9 115166.0 7.179932 4.003804 2.000951 7.093795 7.266070 \n", + "7 106521.0 7.122870 4.257489 2.063368 7.030980 7.214760 \n", + "11 212971.0 7.112449 3.965070 1.991248 7.049985 7.174912 \n", + "4 162716.0 7.098000 3.857063 1.963941 7.027721 7.168279 \n", + "3 324340.0 7.063511 4.172496 2.042669 7.011820 7.115202 \n", + "2 236106.0 7.062000 4.144635 2.035838 7.001645 7.122354 \n", + "0 231670.0 7.059206 3.956792 1.989169 6.999799 7.118613 \n", + "1 508944.0 7.036241 4.109517 2.027194 6.995459 7.077023 \n", + "8 324829.0 7.015902 4.027780 2.006933 6.965537 7.066266 \n", + "12 651056.0 7.015709 4.049009 2.012215 6.980035 7.051384 \n", + "6 22898.0 6.928406 4.879401 2.208937 6.720343 7.136470 \n", + "5 108711.0 6.914873 4.174485 2.043156 6.827298 7.002448 \n", + "10 135660.0 6.797757 4.504518 2.122385 6.717327 6.878187 " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_jobsat.sort_values('mean_col', ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567891011121314151617
0Bootcamp3040443072316707.059213.956791.989176.99987.11861Bootcamp9.58323e+0716228.50299e+1259082.81.75151e+09418515704661119.5
1Buy books and work through the exercises6678894925089447.036244.109522.027196.995467.07702Buy books and work through the exercises1.90993e+0833931.62499e+1356290.21.62064e+0940257.254935.657644.8
2Conferences/meet-ups3086843712361067.0624.144632.035847.001657.12235Conferences/meet-ups9.6996e+0716778.36627e+12578391.64348e+0940539.955898.759779.3
3Contribute to open source4237459993243407.063514.17252.042677.011827.1152Contribute to open source1.39227e+0822531.23906e+1361796.11.68084e+0940998.160103.263489.1
4Get a job as a QA tester2129430001627167.0983.857061.963947.027727.16828Get a job as a QA tester5.85236e+0710325.01725e+1256708.91.64577e+0940568.154233.859184.1
5Master's degree1445920911087116.914874.174482.043166.82737.00245Master's degree4.28461e+077213.77177e+12594261.69986e+0941229.456416.562435.5
6None of these3000433228986.928414.87942.208946.720347.13647None of these5.37709e+061124.27319e+1148009.71.51042e+0938864.14081255207.4
7Other1379719371065217.122874.257492.063377.030987.21476Other4.49141e+077383.85136e+1260859.31.51479e+0938920.358051.263667.3
8Part-time/evening courses4279761003248297.01594.027782.006936.965547.06627Part-time/evening courses1.12454e+0821179.29078e+1253119.61.56696e+0939584.951433.454805.9
9Participate in hackathons1488420731151667.179934.00382.000957.093797.26607Participate in hackathons4.6415e+077964.04447e+1258310.31.68091e+0940998.955462.161158.5
10Participate in online coding competitions1818426751356606.797764.504522.122396.717336.87819Participate in online coding competitions4.33266e+079313.32692e+1246537.71.40773e+0937519.844127.648947.8
11Return to college2776739042129717.112453.965071.991257.049997.17491Return to college8.73369e+0714747.24371e+1259251.61.40357e+0937464.25733961164.2
12Take online courses85746122226510567.015714.049012.012216.980037.05138Take online courses2.41564e+0844932.01154e+1353764.51.58644e+0939830.252599.854929.2
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 \\\n", + "0 Bootcamp 30404 4307 231670 7.05921 \n", + "1 Buy books and work through the exercises 66788 9492 508944 7.03624 \n", + "2 Conferences/meet-ups 30868 4371 236106 7.062 \n", + "3 Contribute to open source 42374 5999 324340 7.06351 \n", + "4 Get a job as a QA tester 21294 3000 162716 7.098 \n", + "5 Master's degree 14459 2091 108711 6.91487 \n", + "6 None of these 3000 433 22898 6.92841 \n", + "7 Other 13797 1937 106521 7.12287 \n", + "8 Part-time/evening courses 42797 6100 324829 7.0159 \n", + "9 Participate in hackathons 14884 2073 115166 7.17993 \n", + "10 Participate in online coding competitions 18184 2675 135660 6.79776 \n", + "11 Return to college 27767 3904 212971 7.11245 \n", + "12 Take online courses 85746 12222 651056 7.01571 \n", + "\n", + " 5 6 7 8 \\\n", + "0 3.95679 1.98917 6.9998 7.11861 \n", + "1 4.10952 2.02719 6.99546 7.07702 \n", + "2 4.14463 2.03584 7.00165 7.12235 \n", + "3 4.1725 2.04267 7.01182 7.1152 \n", + "4 3.85706 1.96394 7.02772 7.16828 \n", + "5 4.17448 2.04316 6.8273 7.00245 \n", + "6 4.8794 2.20894 6.72034 7.13647 \n", + "7 4.25749 2.06337 7.03098 7.21476 \n", + "8 4.02778 2.00693 6.96554 7.06627 \n", + "9 4.0038 2.00095 7.09379 7.26607 \n", + "10 4.50452 2.12239 6.71733 6.87819 \n", + "11 3.96507 1.99125 7.04999 7.17491 \n", + "12 4.04901 2.01221 6.98003 7.05138 \n", + "\n", + " 9 10 11 12 \\\n", + "0 Bootcamp 9.58323e+07 1622 8.50299e+12 \n", + "1 Buy books and work through the exercises 1.90993e+08 3393 1.62499e+13 \n", + "2 Conferences/meet-ups 9.6996e+07 1677 8.36627e+12 \n", + "3 Contribute to open source 1.39227e+08 2253 1.23906e+13 \n", + "4 Get a job as a QA tester 5.85236e+07 1032 5.01725e+12 \n", + "5 Master's degree 4.28461e+07 721 3.77177e+12 \n", + "6 None of these 5.37709e+06 112 4.27319e+11 \n", + "7 Other 4.49141e+07 738 3.85136e+12 \n", + "8 Part-time/evening courses 1.12454e+08 2117 9.29078e+12 \n", + "9 Participate in hackathons 4.6415e+07 796 4.04447e+12 \n", + "10 Participate in online coding competitions 4.33266e+07 931 3.32692e+12 \n", + "11 Return to college 8.73369e+07 1474 7.24371e+12 \n", + "12 Take online courses 2.41564e+08 4493 2.01154e+13 \n", + "\n", + " 13 14 15 16 17 \n", + "0 59082.8 1.75151e+09 41851 57046 61119.5 \n", + "1 56290.2 1.62064e+09 40257.2 54935.6 57644.8 \n", + "2 57839 1.64348e+09 40539.9 55898.7 59779.3 \n", + "3 61796.1 1.68084e+09 40998.1 60103.2 63489.1 \n", + "4 56708.9 1.64577e+09 40568.1 54233.8 59184.1 \n", + "5 59426 1.69986e+09 41229.4 56416.5 62435.5 \n", + "6 48009.7 1.51042e+09 38864.1 40812 55207.4 \n", + "7 60859.3 1.51479e+09 38920.3 58051.2 63667.3 \n", + "8 53119.6 1.56696e+09 39584.9 51433.4 54805.9 \n", + "9 58310.3 1.68091e+09 40998.9 55462.1 61158.5 \n", + "10 46537.7 1.40773e+09 37519.8 44127.6 48947.8 \n", + "11 59251.6 1.40357e+09 37464.2 57339 61164.2 \n", + "12 53764.5 1.58644e+09 39830.2 52599.8 54929.2 " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.DataFrame(np.hstack([df_jobsat, df_all]))" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "pd.DataFrame?" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 4307\n", + "1 9492\n", + "2 4371\n", + "3 5999\n", + "4 3000\n", + "5 2091\n", + "6 433\n", + "7 1937\n", + "8 6100\n", + "9 2073\n", + "10 2675\n", + "11 3904\n", + "12 12222\n", + "Name: col_total, dtype: int64" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_jobsat.col_total" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [], + "source": [ + "df_dotplot = pd.DataFrame(np.array(['Method', \"At least Master's\", \"Less Than Master's\", \n", + "\"Master's Degree\",0.0589517,0.0293459,\n", + "\"Bootcamp\",0.0746172,0.071824,\n", + "\"Become QA Tester\",0.0484688,0.0457388,\n", + "\"Buy Books\",0.162073,0.161205,\n", + "\"None of these\",0.00836278,0.00827705,\n", + "\"Part Time Courses\",0.103298,0.103248,\n", + "\"Return to College\",0.0687279,0.0689754,\n", + "\"Online Courses\",0.207892,0.2099,\n", + "\"Contribute to Opensource\",0.097821,0.10323,\n", + "\"Coding Competitions\",0.0453475,0.0508806,\n", + "\"Other\",0.0269729,0.0338607,\n", + "\"Hackathons\", 0.0316254,0.0395937,\n", + "\"Conferences\", 0.0658422, 0.0739201]).reshape((14, 3)))" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [], + "source": [ + "df_dotplot.columns = df_dotplot.iloc[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [], + "source": [ + "df_dotplot.drop(0, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "df_dotplot.prop = df_dotplot.prop.astype(float)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "df_dotplot = df_dotplot.melt(id_vars='Method', value_name='prop', var_name='status')" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n97sud/y2JQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.pointplot(data=df_dotplot, x='status', y='prop', hue='Method');\n" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nKoqQwS42NpacnBzvsmmaOBwOv+UpU6awZ88eXn31VQzDKLGN7/10OTk5xMfHl7rtY8dyz2hnykIf\nKSYiIuVJHykmFUnIS7GtW7dm9erVAGzevJnGjRv7rX/uuefIy8tj+vTp3kuyJbVp1qwZ69evB2D1\n6tVce+215bcnIiIiIpWcYVmWVVqFwnfF/vvf/8ayLCZMmMD27dvJzc2lRYsW3HvvvVx77bXeS6x9\n+vThtttuK9amYcOG7Nmzh7S0NFwuFw0aNGDcuHHY7SVfaj0fM2uasRMRkfKkGTupSEIGu9+Sgp2I\niFR0CnZSkeghciIiIiJhQsFOREREJEwo2ImIiIiECQU7ERERkTChYCciIiISJhTsRERERMKEgp2I\niIhImFCwExEREQkTCnYiIiIiYULBTkRERCRMKNiJiIiIhAkFOxEREZEwoWAnIiIiEiYU7ERERETC\nhIKdiIiISJhQsBMREREJEwp2IiIiImFCwU5EREQkTCjYiYiIiIQJBTsRERGRMKFgJyIiIhImFOxE\nREREwoSCnYiIiEiYULATERERCRMKdiIiIiJhwhGqgmmaZGRksHPnTiIjIxk3bhz16tXzq3Pq1Cn6\n9+/P+PHjadiwIYsXL+b9998HIC8vj++++461a9fy008/8cc//pHLLrsMgNTUVLp27Vr+eyUiIiJS\nCYUMditWrMDpdLJw4UI2b97MpEmTmDFjhnf9li1bSE9P5+DBg96y7t270717dwCef/557r33XuLj\n49m2bRv9+/dnwIAB52FXRERERCq3kJdiN27cSIcOHQBo1aoVW7du9VvvdDqZNm0aDRo0KNZ2y5Yt\nfP/99/Ts2ROArVu3smrVKnr16sXIkSPJzs4uj30QEREREcowY5ednU1sbKx32W6343a7cTjym15z\nzTUltp05cyaDBw/2Lrds2ZL77ruPFi1aMGPGDKZNm8bw4cNLbF+9egwOh71MO3ImkpLiyr1PERGp\nvHRekYoiZLCLjY0lJyfHu2yapjfUlebkyZPs2bOHG264wVvWuXNn4uPjva/Hjh1bah/HjuWG3M6Z\nSkqK4/DhrHLvV0REKqfyPq8oJMq5CHkptnXr1qxevRqAzZs307hx4zJ1vGHDBtq2betX9uCDD/Lt\nt98CsG7dOpo3b36m4xURERGREoSceuvcuTNr164lJSUFy7KYMGECmZmZ5Obmeu+dC2bPnj3UqVPH\n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\nmzdvZsqUKcTFxVGrVi1++eUXPB4PzZo1Y/To0cTGxjJ16lTGjh1LnTp1eOihhzh48CDr16/n8ccf\n5+OPP+bNN9/k0KFD5OTkkJSURLNmzUhLSyMpKYnevXvTs2dPpk6dyjvvvENGRga9evWiS5cuDB48\nmIYNG5KamsrcuXN5/PHHycnJwel0YpomqampPPvss+zevZvhw4eze/duPB4PF110Ec899xzXX389\nffr0Ye/evRiGgWEY1K5dm8mTJ9O4cWM++eQTZsyYgWEY2O12nnnmGa677jp++eUXMjIy+Pnnn7Es\ni27duvHQQw/x008/kZyczKZNmwD8lhcvXsy7777LqVOniI2NZe7cucycOZP3338fh8NBvXr1mDRp\nEnFxcSxatIj58+djmiYJCQmkpaXRsGHDEn9+NGMnIiJSgezatQubzeYNdQCbNm3iwIED9OnTh9Wr\nV7Njxw6Sk5PZsmULycnJrF27llmzZgFgmiaPPfYYq1atokePHuTl5fHoo48yceJEoqKiWLp0KXa7\nHZfLxa233krnzp2LXQI9ffo0PXr04I033uD06dP85z//4cMPPyQ+Pp7Fixfz4osv8uGHH5KVlcXe\nvXu56667ABgxYgQrV66kbdu2fPnll7z22mt88MEH1KhRgxdeeIFjx47x888/07p1a+x2O+PGjaNu\n3brMmjWLZs2aMWnSJO68807q1q3Lyy+/zOnTp6lXrx4jRozwju3AgQNEREQUCzcul4suXbpgt9u5\n+OKL+eWXX2jZsiUbNmzg4Ycf5qOPPmLFihUMHjyYI0eOkJmZydq1a4mIiGDUqFG888475OXlYRgG\nS5cu5fbbb6dx48a8+eabAEyePJn09HQWL17M0KFDWb9+PQBPP/00bdq0ITMzk/nz5/PBBx/w4Ycf\nhvw+f//998ydO5e5c+eycuVKFi9ezMKFC/n73/9OnTp1+L//+z+++uorlixZwrx581iyZAkPPfRQ\nyFlbzdiJiIhUIDabDdM0ufvuuwHweDxUr16dKVOmUKtWLWrVqkVaWhpxcXGMHz+ejRs3UrduXVav\nXo1hGADcdtttACQlJWGaJrm5uUG3de211/Lll18WK69WrRpJSUkAOBwOdu/eDUBUVBRJSUne0BkR\nEUFOTg6bN2/G5XLxxhtv8M4777B3715cLhd9+vQhNjYWl8vFRRddhM2WP59kmmaxbX755ZfccMMN\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for idx, row in df_dotplot.iterrows():\n", + " plt.plot([0,1],[row[\"At least Master's\"], row[\"Less Than Master's\"]]);\n", + " plt.text(1.05, row[\"Less Than Master's\"], row['Method']);\n", + "plt.xticks([0,1], [\"At least Master's\", \"Less Than Master's\"]);" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Method\n", + "At least Master's\n", + "Less Than Master's\n" + ] + } + ], + "source": [ + "for row in df_dotplot:\n", + " print(row)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/stackoverflow/PredictSalary.ipynb b/stackoverflow/PredictSalary.ipynb new file mode 100644 index 0000000..cd285b5 --- /dev/null +++ b/stackoverflow/PredictSalary.ipynb @@ -0,0 +1,5782 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the last two questions regarding what are related to relationships of variables with salary and job satisfaction - Each of these questions will involve not only building some sort of predictive model, but also finding and interpretting the influential components of whatever model we build.\n", + "\n", + "To get started let's read in the necessary libraries and take a look at some of our columns of interest." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RespondentProfessionalProgramHobbyCountryUniversityEmploymentStatusFormalEducationMajorUndergradHomeRemoteCompanySize...StackOverflowMakeMoneyGenderHighestEducationParentsRaceSurveyLongQuestionsInterestingQuestionsConfusingInterestedAnswersSalaryExpectedSalary
01StudentYes, bothUnited StatesNoNot employed, and not looking for workSecondary schoolNaNNaNNaN...Strongly disagreeMaleHigh schoolWhite or of European descentStrongly disagreeStrongly agreeDisagreeStrongly agreeNaNNaN
12StudentYes, bothUnited KingdomYes, full-timeEmployed part-timeSome college/university study without earning ...Computer science or software engineeringMore than half, but not all, the time20 to 99 employees...Strongly disagreeMaleA master's degreeWhite or of European descentSomewhat agreeSomewhat agreeDisagreeStrongly agreeNaN37500.0
23Professional developerYes, bothUnited KingdomNoEmployed full-timeBachelor's degreeComputer science or software engineeringLess than half the time, but at least one day ...10,000 or more employees...DisagreeMaleA professional degreeWhite or of European descentSomewhat agreeAgreeDisagreeAgree113750.0NaN
34Professional non-developer who sometimes write...Yes, bothUnited StatesNoEmployed full-timeDoctoral degreeA non-computer-focused engineering disciplineLess than half the time, but at least one day ...10,000 or more employees...DisagreeMaleA doctoral degreeWhite or of European descentAgreeAgreeSomewhat agreeStrongly agreeNaNNaN
45Professional developerYes, I program as a hobbySwitzerlandNoEmployed full-timeMaster's degreeComputer science or software engineeringNever10 to 19 employees...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", + "

5 rows × 154 columns

\n", + "
" + ], + "text/plain": [ + " Respondent Professional \\\n", + "0 1 Student \n", + "1 2 Student \n", + "2 3 Professional developer \n", + "3 4 Professional non-developer who sometimes write... \n", + "4 5 Professional developer \n", + "\n", + " ProgramHobby Country University \\\n", + "0 Yes, both United States No \n", + "1 Yes, both United Kingdom Yes, full-time \n", + "2 Yes, both United Kingdom No \n", + "3 Yes, both United States No \n", + "4 Yes, I program as a hobby Switzerland No \n", + "\n", + " EmploymentStatus \\\n", + "0 Not employed, and not looking for work \n", + "1 Employed part-time \n", + "2 Employed full-time \n", + "3 Employed full-time \n", + "4 Employed full-time \n", + "\n", + " FormalEducation \\\n", + "0 Secondary school \n", + "1 Some college/university study without earning ... \n", + "2 Bachelor's degree \n", + "3 Doctoral degree \n", + "4 Master's degree \n", + "\n", + " MajorUndergrad \\\n", + "0 NaN \n", + "1 Computer science or software engineering \n", + "2 Computer science or software engineering \n", + "3 A non-computer-focused engineering discipline \n", + "4 Computer science or software engineering \n", + "\n", + " HomeRemote \\\n", + "0 NaN \n", + "1 More than half, but not all, the time \n", + "2 Less than half the time, but at least one day ... \n", + "3 Less than half the time, but at least one day ... \n", + "4 Never \n", + "\n", + " CompanySize ... StackOverflowMakeMoney Gender \\\n", + "0 NaN ... Strongly disagree Male \n", + "1 20 to 99 employees ... Strongly disagree Male \n", + "2 10,000 or more employees ... Disagree Male \n", + "3 10,000 or more employees ... Disagree Male \n", + "4 10 to 19 employees ... NaN NaN \n", + "\n", + " HighestEducationParents Race SurveyLong \\\n", + "0 High school White or of European descent Strongly disagree \n", + "1 A master's degree White or of European descent Somewhat agree \n", + "2 A professional degree White or of European descent Somewhat agree \n", + "3 A doctoral degree White or of European descent Agree \n", + "4 NaN NaN NaN \n", + "\n", + " QuestionsInteresting QuestionsConfusing InterestedAnswers Salary \\\n", + "0 Strongly agree Disagree Strongly agree NaN \n", + "1 Somewhat agree Disagree Strongly agree NaN \n", + "2 Agree Disagree Agree 113750.0 \n", + "3 Agree Somewhat agree Strongly agree NaN \n", + "4 NaN NaN NaN NaN \n", + "\n", + " ExpectedSalary \n", + "0 NaN \n", + "1 37500.0 \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", + "\n", + "[5 rows x 154 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import r2_score, mean_squared_error\n", + "import seaborn as sns\n", + "%matplotlib inline\n", + "\n", + "df = pd.read_csv('./survey_results_public.csv')\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "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", + "
RespondentCareerSatisfactionJobSatisfactionHoursPerWeekStackOverflowSatisfactionSalaryExpectedSalary
count51392.00000042695.00000040376.00000020600.00000036592.00000012891.0000002566.000000
mean25696.5000007.3005746.9570783.9522828.42987556298.48064133142.220468
std14835.7368541.9554442.1676527.5647221.39063539880.90527730162.988829
min1.0000000.0000000.0000000.0000000.0000000.0000000.000000
25%12848.7500006.0000006.0000001.0000008.00000026440.3718394490.492484
50%25696.5000008.0000007.0000001.0000009.00000050000.00000029364.263691
75%38544.2500009.0000008.0000004.00000010.00000080000.00000050403.225806
max51392.00000010.00000010.00000040.00000010.000000197000.000000187500.000000
\n", + "
" + ], + "text/plain": [ + " Respondent CareerSatisfaction JobSatisfaction HoursPerWeek \\\n", + "count 51392.000000 42695.000000 40376.000000 20600.000000 \n", + "mean 25696.500000 7.300574 6.957078 3.952282 \n", + "std 14835.736854 1.955444 2.167652 7.564722 \n", + "min 1.000000 0.000000 0.000000 0.000000 \n", + "25% 12848.750000 6.000000 6.000000 1.000000 \n", + "50% 25696.500000 8.000000 7.000000 1.000000 \n", + "75% 38544.250000 9.000000 8.000000 4.000000 \n", + "max 51392.000000 10.000000 10.000000 40.000000 \n", + "\n", + " StackOverflowSatisfaction Salary ExpectedSalary \n", + "count 36592.000000 12891.000000 2566.000000 \n", + "mean 8.429875 56298.480641 33142.220468 \n", + "std 1.390635 39880.905277 30162.988829 \n", + "min 0.000000 0.000000 0.000000 \n", + "25% 8.000000 26440.371839 4490.492484 \n", + "50% 9.000000 50000.000000 29364.263691 \n", + "75% 10.000000 80000.000000 50403.225806 \n", + "max 10.000000 197000.000000 187500.000000 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Working with just quantitative variables is actually pretty straightforward \n", + "# for most supervised learning techniques (except - we note that any row with \n", + "# a missing value in any of the columns we use will be dropped -\n", + "# which might leave us with fewer predictions than we were hoping for).\n", + "# Let's just start and iterate on our findings\n", + "\n", + "# Let's just fit something and go from there\n", + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# The above are variables that python is treating as numeric variables, and therefore, we \n", + "# could send them into our linear model blindly to predict the response\n", + "# Let's take a quick look at our data first\n", + "\n", + "df.hist();" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\noOEFRiTAd1qYfGIAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.heatmap(df.corr(), annot=True, fmt=\".2f\");" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Input contains NaN, infinity or a value too large for dtype('float64').", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mlm_model\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mLinearRegression\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnormalize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# Here you could set any hyperparameters of your model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mlm_model\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# If this model was to predict for new individuals, we probably would want\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;31m# worry about train/test splits and cross-validation, but for now I am most\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0;31m# interested in finding a model that just fits all of the data well\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/joshuabernhard/anaconda3/lib/python3.6/site-packages/sklearn/linear_model/base.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, X, y, sample_weight)\u001b[0m\n\u001b[1;32m 510\u001b[0m \u001b[0mn_jobs_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mn_jobs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 511\u001b[0m X, y = check_X_y(X, y, accept_sparse=['csr', 'csc', 'coo'],\n\u001b[0;32m--> 512\u001b[0;31m y_numeric=True, multi_output=True)\n\u001b[0m\u001b[1;32m 513\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 514\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msample_weight\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0matleast_1d\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msample_weight\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/joshuabernhard/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py\u001b[0m in \u001b[0;36mcheck_X_y\u001b[0;34m(X, y, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, warn_on_dtype, estimator)\u001b[0m\n\u001b[1;32m 519\u001b[0m X = check_array(X, accept_sparse, dtype, order, copy, force_all_finite,\n\u001b[1;32m 520\u001b[0m \u001b[0mensure_2d\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mallow_nd\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mensure_min_samples\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 521\u001b[0;31m ensure_min_features, warn_on_dtype, estimator)\n\u001b[0m\u001b[1;32m 522\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmulti_output\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 523\u001b[0m y = check_array(y, 'csr', force_all_finite=True, ensure_2d=False,\n", + "\u001b[0;32m/Users/joshuabernhard/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py\u001b[0m in \u001b[0;36mcheck_array\u001b[0;34m(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)\u001b[0m\n\u001b[1;32m 405\u001b[0m % (array.ndim, estimator_name))\n\u001b[1;32m 406\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mforce_all_finite\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 407\u001b[0;31m \u001b[0m_assert_all_finite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 408\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 409\u001b[0m \u001b[0mshape_repr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_shape_repr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/joshuabernhard/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py\u001b[0m in \u001b[0;36m_assert_all_finite\u001b[0;34m(X)\u001b[0m\n\u001b[1;32m 56\u001b[0m and not np.isfinite(X).all()):\n\u001b[1;32m 57\u001b[0m raise ValueError(\"Input contains NaN, infinity\"\n\u001b[0;32m---> 58\u001b[0;31m \" or a value too large for %r.\" % X.dtype)\n\u001b[0m\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 60\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: Input contains NaN, infinity or a value too large for dtype('float64')." + ] + } + ], + "source": [ + "# Here we can see that none of our variables appear to greatly correlated with salary\n", + "# and we can see that if someone was given an expected salary question, they either\n", + "# never answered the salary question or they were not given the salary question\n", + "\n", + "\n", + "# We an still go ahead and make predictions using these variables as a reminder of the \n", + "# scikit learn way of fitting models. The process is similar to quickly fit models of \n", + "# all types - usually a four step process of - instantiate, fit, predict, score\n", + "# In most cases, we also will want to split data into training and test data to assure \n", + "# we are not building models that overfit the data and do not extend well to new situations.\n", + "\n", + "X = df[['CareerSatisfaction', 'HoursPerWeek', 'JobSatisfaction', 'StackOverflowSatisfaction']]\n", + "y = df['Salary']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .30, random_state=42)\n", + "\n", + "lm_model = LinearRegression(normalize=True) # Here you could set any hyperparameters of your model\n", + "lm_model.fit(X_train, y_train) # If this model was to predict for new individuals, we probably would want\n", + " # worry about train/test splits and cross-validation, but for now I am most \n", + " # interested in finding a model that just fits all of the data well" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(51392, 154)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "### Notice the above breaks because of the NaN values, so we either need to fill or remove them\n", + "# Or we could write a conditional model that fits differently \n", + "# depending on the values that are missing - we can see the nans based on the describe above\n", + "df.shape\n", + "\n", + "\n", + "#________ Video 1 through here on introduction to the data - could do a bit more EDA ________#" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0309946649591\n", + "1546382888.05\n" + ] + } + ], + "source": [ + "### The easiest way to move onto a conclusion in a first pass is probably just with dropping\n", + "\n", + "num_vars = df[['Salary', 'CareerSatisfaction', 'HoursPerWeek', 'JobSatisfaction', 'StackOverflowSatisfaction']]\n", + "df_dropna = num_vars.dropna(axis=0)\n", + "\n", + "X = df_dropna[['CareerSatisfaction', 'HoursPerWeek', 'JobSatisfaction', 'StackOverflowSatisfaction']]\n", + "y = df_dropna['Salary']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .30, random_state=42)\n", + "\n", + "lm_model = LinearRegression(normalize=True) # Here you could set any hyperparameters of your model\n", + "lm_model.fit(X_train, y_train) # If this model was to predict for new individuals, we probably would want\n", + " # worry about train/test splits and cross-validation, but for now I am most \n", + " # interested in finding a model that just fits all of the data well\n", + "\n", + " \n", + "y_test_preds = lm_model.predict(X_test) #We can then use our fitted model to predict the salary for each\n", + " #indvidual in our test set, and see how well these predictions\n", + " #match the truth.\n", + "\n", + "print(r2_score(y_test, y_test_preds)) #In this case we are predicting a continuous, numeric response. Therefore, common\n", + "print(mean_squared_error(y_test, y_test_preds)) #metrics to assess fit include Rsquared and MSE." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5338, 5)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Whoop - we built a model that predicts... but we are missing by ALOT!\n", + "# We can get a quick glimpse of how bad our predictions are...\n", + "# This suggests that 3% of the variability in salaries can be explained by these variables...\n", + "df_dropna.shape # But it also reduced our dataset to only 5338 rows \n", + " # ~20% of the original dataset size" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Recorded from here up\n", + "\n", + "\n", + "# Screencasts Remaining:\n", + "1. Imputation - first results\n", + "2. Categorical Variables - improved results, but what is happening?\n", + "3. Combat Overfitting - one method" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 19, + "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", + "
actualpredsdiff
034408.60215154632.316959-20223.714808
11182.79569941700.350270-40517.554571
233750.00000044195.215816-10445.215816
374660.63348462622.37448112038.259003
427149.32126759371.351903-32222.030636
\n", + "
" + ], + "text/plain": [ + " actual preds diff\n", + "0 34408.602151 54632.316959 -20223.714808\n", + "1 1182.795699 41700.350270 -40517.554571\n", + "2 33750.000000 44195.215816 -10445.215816\n", + "3 74660.633484 62622.374481 12038.259003\n", + "4 27149.321267 59371.351903 -32222.030636" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "preds_vs_act = pd.DataFrame(np.hstack([y_test.values.reshape(y_test.size,1), y_test_preds.reshape(y_test.size,1)]))\n", + "preds_vs_act.columns = ['actual', 'preds']\n", + "preds_vs_act['diff'] = preds_vs_act['actual'] - preds_vs_act['preds']\n", + "preds_vs_act.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\njOvCaBYdmWQAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "### We can plot how far our predictions are from the actual values compaired to the\n", + "### predicted values - you can see that it isn't uncommon for us to miss salaries by\n", + "### 150000 and the overpredictions tend to be much worse than the underpredictions\n", + "### THere also appears to be a trend where our differences decrease as the predicted\n", + "### values increase on the test data.\n", + "\n", + "plt.plot(preds_vs_act['preds'], preds_vs_act['diff'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('difference');" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.00797379867968\n", + "399198781.217\n" + ] + } + ], + "source": [ + "#______Video 2 ____Our First Modeling Attempt (Mark all the bad things)________#\n", + "\n", + "\n", + "\n", + "### There are tons of downfalls already - our predictions are pretty poor, we have predictions\n", + "### for only 20% of the total values that actually hold salaries, and we are only using \n", + "### quantitative variables to predict.\n", + "\n", + "### Given how bad the predictions are, we might not hurt anything by just filling the missing \n", + "### values to make more predictions.\n", + "\n", + "#Here we fill on the column means\n", + "df_fillna = num_vars.apply(lambda x: x.fillna(x.mean()),axis=0)\n", + "\n", + "X = df_fillna[['CareerSatisfaction', 'HoursPerWeek', 'JobSatisfaction', 'StackOverflowSatisfaction']]\n", + "y = df_fillna['Salary']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .30, random_state=42)\n", + "\n", + "lm_model = LinearRegression(normalize=True) # Here you could set any hyperparameters of your model\n", + "lm_model.fit(X_train, y_train) # If this model was to predict for new individuals, we probably would want\n", + " # worry about train/test splits and cross-validation, but for now I am most \n", + " # interested in finding a model that just fits all of the data well\n", + "\n", + " \n", + "y_test_preds = lm_model.predict(X_test) #We can then use our fitted model to predict the salary for each\n", + " #indvidual in our test set, and see how well these predictions\n", + " #match the truth.\n", + "\n", + "print(r2_score(y_test, y_test_preds)) #In this case we are predicting a continuous, numeric response. Therefore, common\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(51392, 4)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "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", + "
actualpredsdiff
056298.48064152365.5430373932.937604
156298.48064157685.877281-1387.396641
256298.48064156262.40980136.070840
356298.48064155896.141349402.339292
456298.48064155014.5348751283.945765
\n", + "
" + ], + "text/plain": [ + " actual preds diff\n", + "0 56298.480641 52365.543037 3932.937604\n", + "1 56298.480641 57685.877281 -1387.396641\n", + "2 56298.480641 56262.409801 36.070840\n", + "3 56298.480641 55896.141349 402.339292\n", + "4 56298.480641 55014.534875 1283.945765" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "### Now we can predict on everything, but our predictions are even worse!\n", + "\n", + "preds_vs_act = pd.DataFrame(np.hstack([y_test.values.reshape(y_test.size,1), y_test_preds.reshape(y_test.size,1)]))\n", + "preds_vs_act.columns = ['actual', 'preds']\n", + "preds_vs_act['diff'] = preds_vs_act['actual'] - preds_vs_act['preds']\n", + "preds_vs_act.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nBx6FpcRotsxGAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(preds_vs_act['preds'], preds_vs_act['diff'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('difference');" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nhJA4939YOpgvRxIGVAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(preds_vs_act['preds'], preds_vs_act['actual'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('actual'); #This looks less compelling that we are predicting well...\n", + "# I also think I found the mean amount...which aren't real 'actual' salaries" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(12891, 5)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "### Some strange line here - probably because we filled in our average for everything\n", + "### Which was actually data leakage. We shouldn't have done this at all. We would likely\n", + "### Have to use the mean of the old data to fill in the missing of the future data...\n", + "\n", + "### But this does depend a bit - if on future homes, you will have the x-variables before\n", + "### having to predict, this really isn't data leakage, as you would have the abiltiy to update\n", + "### the inputed means with each new individual in your dataset.\n", + "\n", + "### Really the values that have the mean value for the salary should be dropped - because\n", + "### those are not true salaries.\n", + "\n", + "df_fillna = df_fillna.drop(df_fillna[df_fillna['Salary'] == np.mean(df['Salary'])].index)\n", + "df_fillna.shape # that's better. we only have this many non-null salaries in our original dataset\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Below you can fit a new model with the missing salaries removed" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0386731875127\n", + "1489423021.69\n" + ] + } + ], + "source": [ + "X = df_fillna[['CareerSatisfaction', 'HoursPerWeek', 'JobSatisfaction', 'StackOverflowSatisfaction']]\n", + "y = df_fillna['Salary']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .30, random_state=42)\n", + "\n", + "lm_model = LinearRegression(normalize=True) # Here you could set any hyperparameters of your model\n", + "lm_model.fit(X_train, y_train) # If this model was to predict for new individuals, we probably would want\n", + " # worry about train/test splits and cross-validation, but for now I am most \n", + " # interested in finding a model that just fits all of the data well\n", + "\n", + " \n", + "y_test_preds = lm_model.predict(X_test) #We can then use our fitted model to predict the salary for each\n", + " #indvidual in our test set, and see how well these predictions\n", + " #match the truth.\n", + "\n", + "print(r2_score(y_test, y_test_preds)) #In this case we are predicting a continuous, numeric response. Therefore, common\n", + "print(mean_squared_error(y_test, y_test_preds)) #metrics to assess fit include Rsquared and MSE. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3868, 3)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "##### Stop Video 2\n", + "\n", + "\n", + "\n", + "### Now we can predict on everything, but our predictions are even worse!\n", + "\n", + "preds_vs_act = pd.DataFrame(np.hstack([y_test.values.reshape(y_test.size,1), y_test_preds.reshape(y_test.size,1)]))\n", + "preds_vs_act.columns = ['actual', 'preds']\n", + "preds_vs_act['diff'] = preds_vs_act['actual'] - preds_vs_act['preds']\n", + "preds_vs_act.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nJnDPPffgQx/6kGvHAwDxeBxf/epX8Yc//AGCIGDHjh0IBAKuHhMAvPfee7j99tvx7W9/G36/39Xj\nCYVCqKqqAgA0Njbin/7pn1w9HgDo6enBL3/5S0xOTmLNmjW44YYbXDumH/3oRwiHwwCAaDSKgYH/\n3979x0Rdx3Ecfx4cgvJLtPAfhjtouhzTpWSiBG06qA1luihng5w/hknzR0FARunuhgLqBrY001Zh\nZEjEH7Zabi6UIadjQ43ETcZsAl0SLjkkjrt794fzkpluFdK+3vvx193nPnz2eX358uX9/Xxv3+8l\nampqKC0tNWQeuH2sKyoqoru7m4CAAKxWq+H/jsaEqH/t4MGDkpGRIVlZWSIikpubKy0tLSIiUlJS\nIt9//738+uuvkpGRIcPDw3Lz5k3f648//liqqqpEROT48eNitVpFRGTZsmVy9epV8Xq9sm7dOmlv\nbx+XLHV1dWKz2URE5MaNG5KammroPCIiJ06ckKKiIhERaWlpkQ0bNhg+k8vlko0bN0paWppcuXLF\n0Hn++OMPyczMHNVm5Dwit/ez3Nxc8Xg84nQ6paqqyvCZ7ti+fbscPXrU8HlOnDghmzZtEhGRpqYm\nef311w2faSzoZYL/IDY2ln379vnet7e3M3/+fABSUlJobm7mwoULPPXUU0yYMIHw8HBiY2Pp6Oig\ntbWVZ5991tf3zJkzOJ1OXC4XsbGxmEwmkpOTaW5uHpcszz//PJs3bwZARAgMDDR0HoAlS5ZgtVoB\n6OnpISIiwvCZysrKWLlyJdHR0YCx97mOjg6GhoZYs2YNOTk5tLW1GToPQFNTEzNmzCAvL48NGzbw\n3HPPGT4TwMWLF7ly5Qovv/yy4fNYLBY8Hg9erxen04nZbDZ8prGgxcB/kJ6ejtn815UWEcFkMgEQ\nGhrKwMAATqeT8PBwX5/Q0FCcTueo9rv73lkyvbt9PISGhhIWFobT6WTTpk1s2bLF0HnuMJvNFBYW\nYrVaWbp0qaEz1dfXM2XKFN+BCIy9z4WEhLB27VoOHz7Mjh07yM/PN3QegBs3bvDjjz9SWVn5yGSC\n25c+8vLyAGPvcwCTJk2iu7ubF154gZKSErKzsw2faSzodwbGUEDAX7XV4OAgERERhIWFMTg4OKo9\nPDx8VPuD+kZERIzb/Ht7e8nLy2PVqlUsXbqUiooKQ+e5o6ysjPz8fF566SWGh4fvmY9RMn311VeY\nTCbOnDnDpUuXKCwspL+/37B5LBYL06dPx2QyYbFYmDx5Mu3t7YbNAzB58mTi4uKYMGECcXFxQthd\n9wAABZlJREFUBAcH88svvxg6082bN+nq6mLBggWA8Y9zn3zyCcnJybz55pv09vby6quvMjIyYuhM\nY0FXBsbQrFmzsNvtAJw6dYrExERmz55Na2srw8PDDAwM0NnZyYwZM5g7dy6NjY2+vvPmzSMsLIyg\noCB+/vlnRISmpiYSExPHZe59fX2sWbOGgoICXnzxRcPnAWhoaODDDz8EYOLEiZhMJhISEgyb6fPP\nP+fIkSNUV1fz5JNPUlZWRkpKimHz1NXVsWvXLgAcDgdOp5NFixYZNg/AvHnzOH36NCKCw+FgaGiI\npKQkQ2c6d+4cSUlJvvdGPy5ERET4zuwjIyNxu92GzzQW9EFF/9G1a9d44403qK2tpauri5KSEkZG\nRoiLi8NmsxEYGEhtbS1ffvklIkJubi7p6ekMDQ1RWFjI9evXCQoKYs+ePTz++OO0tbVRWlqKx+Mh\nOTmZrVu3jksOm83Gt99+S1xcnK9t27Zt2Gw2Q+YBuHXrFsXFxfT19eF2u1m/fj3x8fGG/R3dLTs7\nm+3btxMQEGDYPC6Xi+LiYnp6ejCZTOTn5xMVFWXYPHeUl5djt9sREbZu3UpMTIyhMx06dAiz2czq\n1asBDH2cg9tn7W+//TbXr19nZGSEnJwcEhISDJ1pLGgxoJRSSvk5vUyglFJK+TktBpRSSik/p8WA\nUkop5ee0GFBKKaX8nBYDSimllJ/TYkAp9dAVFRVRX1+Pw+Fg/fr1D+ybnZ39j8a22+3/+GeUUqNp\nMaCUGjfTpk3jo48+emCfs2fPjtNslFJ36O2IlVJ/y263s2/fPsxmM729vcyePZvXXnuNjRs3EhUV\nRXBwMIcPH6a8vJyzZ8/i8XhYsWIFq1evRkTYtWsXP/zwA9HR0Xg8HubPn8+1a9fIycnh5MmTdHd3\nU1xcTH9/PyEhIdhsNurq6gDIysri2LFjnDp1iqqqKtxuNzExMVitVqKiomhqamLnzp0EBwdjsVj+\n5y2llPFpMaCUuq8LFy7Q0NCAxWJh8+bNNDY20tXVxaFDh4iJieGLL74A4Ouvv8blcrF27VoSEhLo\n6+vjp59+4vjx4wwMDLBs2bJ7xt6xYwfp6em88sorNDY2sn//fiorK6murubYsWP09/ezZ88ePvvs\nMyIjIzl69Ci7d+/mvffeo6ioiE8//ZT4+Hi2bds23ptFqUeOFgNKqft6+umnfbeozszMpLa2lqlT\npxITEwPge2hSS0sLcPsW0JcvX6azs5O0tDSCgoKYMmUKKSkp94x97tw59u7dC0BqaiqpqamjPj9/\n/jy9vb3k5OQA4PV6iYyM5PLly0RHRxMfHw/A8uXLqaysfDgbQCk/ocWAUuq+AgMDfa9FhMDAQEJC\nQnxtHo+HgoIC0tLSAOjv72fSpElUVFTg9Xp9/e5+1PfftYkInZ2dPPHEE6PGnjt3LgcOHABgeHiY\nwcFBenp6Ro199xyVUv+OfoFQKXVfra2tOBwOvF4vDQ0N95zhL1iwgNraWkZGRhgcHGTVqlWcP3+e\npKQkvvvuO1wuF7///junT5++Z+zExES++eYbAJqbmykpKQFu/3N3u93MmTOHtrY2urq6APjggw8o\nLy9n5syZ/Pbbb3R0dAD4xlBK/Xu6MqCUuq/o6GjeeustHA4HixYtYuHChRw8eND3+cqVK7l69SrL\nly/H7XazYsUKnnnmGQAuXrxIRkYGjz32mG9J/27vvvsu77zzDjU1NUycOBGbzQbA4sWLyczMpL6+\nntLSUrZs2YLX62XatGlUVFQQFBTE3r17KSgowGw2M2vWrPHZGEo9wvSphUqpv2W323n//feprq7+\nv6eilHrI9DKBUkop5ed0ZUAppZTyc7oyoJRSSvk5LQaUUkopP6fFgFJKKeXntBhQSiml/JwWA0op\npZSf02JAKaWU8nN/Aj1bxLV0udFmAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(preds_vs_act['preds'], preds_vs_act['diff'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('difference');" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n7lE8uL3mmAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "### When we see fan like shapes in the residual plots like this - it often suggests\n", + "### we might make better predictions on the log of the response\n", + "\n", + "plt.plot(preds_vs_act['preds'], preds_vs_act['actual'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('actual'); #there appears to be a slight positive trend like we would want to see" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "146" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#______Video 3 Fill in Missing values with the mean - why this is bad_______#\n", + "\n", + "\n", + "### Let's see how we might be able to use categorical variables in our models.\n", + "### Though you might try to do something smart to reduce the feature space of your\n", + "### x-matrix (like find curved relationships that exist in salary comparing across categories).\n", + "### It is probably easier to just blindly encode all of the categorical variables as dummy\n", + "### variables in our models.\n", + "\n", + "cat_vars_int = df.select_dtypes(include=['object']).copy().columns\n", + "# http://pbpython.com/categorical-encoding.html\n", + "\n", + "len(cat_vars_int)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "### Now that we have a list of all the dummy variables we might be interested in... \n", + "### Let's dummy code them, so that we can use them in our machine learning models\n", + "### you can do this with pandas (get dummies) or with sklearn (one hot encoding)\n", + "### Feel free to use whatever you are comfortable with" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RespondentCareerSatisfactionJobSatisfactionHoursPerWeekStackOverflowSatisfactionSalaryExpectedSalaryProfessional_Professional developerProfessional_Professional non-developer who sometimes writes codeProfessional_Student...SurveyLong_Strongly agreeSurveyLong_Strongly disagreeQuestionsInteresting_DisagreeQuestionsInteresting_Somewhat agreeQuestionsInteresting_Strongly agreeQuestionsInteresting_Strongly disagreeQuestionsConfusing_DisagreeQuestionsConfusing_Somewhat agreeQuestionsConfusing_Strongly agreeQuestionsConfusing_Strongly disagree
count51392.00000042695.00000040376.00000020600.00000036592.00000012891.0000002566.00000051392.00000051392.00000051392.000000...51392.00000051392.00000051392.00000051392.00000051392.00000051392.00000051392.00000051392.00000051392.00000051392.000000
mean25696.5000007.3005746.9570783.9522828.42987556298.48064133142.2204680.7030470.1000160.160025...0.1139090.0206260.0365040.2616750.0563710.0049420.4077480.0626560.0031910.184795
std14835.7368541.9554442.1676527.5647221.39063539880.90527730162.9888290.4569200.3000240.366633...0.3177040.1421290.1875420.4395510.2306380.0701290.4914210.2423450.0564010.388135
min1.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
25%12848.7500006.0000006.0000001.0000008.00000026440.3718394490.4924840.0000000.0000000.000000...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
50%25696.5000008.0000007.0000001.0000009.00000050000.00000029364.2636911.0000000.0000000.000000...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
75%38544.2500009.0000008.0000004.00000010.00000080000.00000050403.2258061.0000000.0000000.000000...0.0000000.0000000.0000001.0000000.0000000.0000001.0000000.0000000.0000000.000000
max51392.00000010.00000010.00000040.00000010.000000197000.000000187500.0000001.0000001.0000001.000000...1.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000000
\n", + "

8 rows × 42341 columns

\n", + "
" + ], + "text/plain": [ + " Respondent CareerSatisfaction JobSatisfaction HoursPerWeek \\\n", + "count 51392.000000 42695.000000 40376.000000 20600.000000 \n", + "mean 25696.500000 7.300574 6.957078 3.952282 \n", + "std 14835.736854 1.955444 2.167652 7.564722 \n", + "min 1.000000 0.000000 0.000000 0.000000 \n", + "25% 12848.750000 6.000000 6.000000 1.000000 \n", + "50% 25696.500000 8.000000 7.000000 1.000000 \n", + "75% 38544.250000 9.000000 8.000000 4.000000 \n", + "max 51392.000000 10.000000 10.000000 40.000000 \n", + "\n", + " StackOverflowSatisfaction Salary ExpectedSalary \\\n", + "count 36592.000000 12891.000000 2566.000000 \n", + "mean 8.429875 56298.480641 33142.220468 \n", + "std 1.390635 39880.905277 30162.988829 \n", + "min 0.000000 0.000000 0.000000 \n", + "25% 8.000000 26440.371839 4490.492484 \n", + "50% 9.000000 50000.000000 29364.263691 \n", + "75% 10.000000 80000.000000 50403.225806 \n", + "max 10.000000 197000.000000 187500.000000 \n", + "\n", + " Professional_Professional developer \\\n", + "count 51392.000000 \n", + "mean 0.703047 \n", + "std 0.456920 \n", + "min 0.000000 \n", + "25% 0.000000 \n", + "50% 1.000000 \n", + "75% 1.000000 \n", + "max 1.000000 \n", + "\n", + " Professional_Professional non-developer who sometimes writes code \\\n", + "count 51392.000000 \n", + "mean 0.100016 \n", + "std 0.300024 \n", + "min 0.000000 \n", + "25% 0.000000 \n", + "50% 0.000000 \n", + "75% 0.000000 \n", + "max 1.000000 \n", + "\n", + " Professional_Student ... \\\n", + "count 51392.000000 ... \n", + "mean 0.160025 ... \n", + "std 0.366633 ... \n", + "min 0.000000 ... \n", + "25% 0.000000 ... \n", + "50% 0.000000 ... \n", + "75% 0.000000 ... \n", + "max 1.000000 ... \n", + "\n", + " SurveyLong_Strongly agree SurveyLong_Strongly disagree \\\n", + "count 51392.000000 51392.000000 \n", + "mean 0.113909 0.020626 \n", + "std 0.317704 0.142129 \n", + "min 0.000000 0.000000 \n", + "25% 0.000000 0.000000 \n", + "50% 0.000000 0.000000 \n", + "75% 0.000000 0.000000 \n", + "max 1.000000 1.000000 \n", + "\n", + " QuestionsInteresting_Disagree QuestionsInteresting_Somewhat agree \\\n", + "count 51392.000000 51392.000000 \n", + "mean 0.036504 0.261675 \n", + "std 0.187542 0.439551 \n", + "min 0.000000 0.000000 \n", + "25% 0.000000 0.000000 \n", + "50% 0.000000 0.000000 \n", + "75% 0.000000 1.000000 \n", + "max 1.000000 1.000000 \n", + "\n", + " QuestionsInteresting_Strongly agree \\\n", + "count 51392.000000 \n", + "mean 0.056371 \n", + "std 0.230638 \n", + "min 0.000000 \n", + "25% 0.000000 \n", + "50% 0.000000 \n", + "75% 0.000000 \n", + "max 1.000000 \n", + "\n", + " QuestionsInteresting_Strongly disagree QuestionsConfusing_Disagree \\\n", + "count 51392.000000 51392.000000 \n", + "mean 0.004942 0.407748 \n", + "std 0.070129 0.491421 \n", + "min 0.000000 0.000000 \n", + "25% 0.000000 0.000000 \n", + "50% 0.000000 0.000000 \n", + "75% 0.000000 1.000000 \n", + "max 1.000000 1.000000 \n", + "\n", + " QuestionsConfusing_Somewhat agree QuestionsConfusing_Strongly agree \\\n", + "count 51392.000000 51392.000000 \n", + "mean 0.062656 0.003191 \n", + "std 0.242345 0.056401 \n", + "min 0.000000 0.000000 \n", + "25% 0.000000 0.000000 \n", + "50% 0.000000 0.000000 \n", + "75% 0.000000 0.000000 \n", + "max 1.000000 1.000000 \n", + "\n", + " QuestionsConfusing_Strongly disagree \n", + "count 51392.000000 \n", + "mean 0.184795 \n", + "std 0.388135 \n", + "min 0.000000 \n", + "25% 0.000000 \n", + "50% 0.000000 \n", + "75% 0.000000 \n", + "max 1.000000 \n", + "\n", + "[8 rows x 42341 columns]" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "for var in cat_vars_int:\n", + " # for each cat add dummy var, drop original column\n", + " df = pd.concat([df.drop(var, axis=1), pd.get_dummies(df[var], prefix=var, prefix_sep='_', drop_first=True)], axis=1)\n", + "\n", + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "\n", + "\n", + "### Because we have more rows than number of variables, it is actually possible\n", + "### for us to build a model that uses all of the columns to predict the response...\n", + "### Whether this is actually a good idea or not is up for debate - let's maybe\n", + "### choose some variables that seem like they might be related to salary and go from there.\n", + "\n", + "### You can also see that the nulls are still dropped after dummy encoding, which means\n", + "### we will again need to figure out what to do with rows where those values are null.\n", + "### It might be okay to just use the mode of the dataset to fill in those values - though\n", + "### in reality, a lack of answer is maybe an indication that your answer is different \n", + "### from the group and therefore, you didn't want to answer the question.\n", + "\n", + "### We know there are 12891 non-NaN salaries to predict based on the previous model - so we\n", + "### want to make sure we can predict all of these salaries with our new model as well, but now\n", + "### unlike the 5 columns we had to choose from before we have more than 40,000 to choose from.\n", + "### This could be a great place for some PCA or PLS, but I would like to try and keep \n", + "### the interpretability of the features as much as possible... so I am just going to\n", + "### use the original features. \n", + "\n", + "### We could try even adding interactions or other combinations of these features, but again\n", + "### this would make our features less interpretable. So you have to weigh the pros and cons\n", + "### of adding these features." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(12891, 42347)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_result = pd.concat([df, df_fillna], axis=1, join='inner')\n", + "df_result.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SalarySalary
2113750.0113750.0
14100000.0100000.0
17130000.0130000.0
1882500.082500.0
22100764.0100764.0
\n", + "
" + ], + "text/plain": [ + " Salary Salary\n", + "2 113750.0 113750.0\n", + "14 100000.0 100000.0\n", + "17 130000.0 130000.0\n", + "18 82500.0 82500.0\n", + "22 100764.0 100764.0" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_result['Salary'].head()['Salary']" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "df_result = df_result.iloc[:,~df_result.columns.duplicated()]" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(12891, 42342)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_result.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "### Now we have no duplicated columns, we can focus on which of our new columns (and the \n", + "### previously used columns) we would like to use to try and predict the response. We might\n", + "### just go based on intuition, or we could try to find the variables that are most correlated\n", + "### Don't get too high of hopes - having a quant variable correlated with a 1-0 variable\n", + "### is not really what correlation coefficients are designed to detect. They are meant\n", + "### to find linear relationships between quant variables. Though correlations are not built for\n", + "### finding these relations - they can still give a sense of which variables are best related\n", + "\n", + "\n", + "### Actually if you try to build the correlation matrix... it might run for a long time, and\n", + "### not be very legible anyway... Let's just fit some stuff that seems interesting \n", + "### and intuitive." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "### Given how many columns we have to use - let's just drop all of the columns that have any\n", + "### missing values\n", + "\n", + "df_result = df_result.dropna(axis=1, how='any')" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(12891, 42336)" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_result.shape # which is only 6, sooo that kind of sucks at narrowing down this mess..." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "y = df_result['Salary']\n", + "X = df_result.drop(['Respondent', 'Salary'], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .30, random_state=42)\n", + "\n", + "#lm_model = LinearRegression(normalize=True) # Here you could set any hyperparameters of your model\n", + "#lm_model.fit(X_train, y_train) # If this model was to predict for new individuals, we probably would want\n", + " # worry about train/test splits and cross-validation, but for now I am most \n", + " # interested in finding a model that just fits all of the data well\n", + "\n", + " \n", + "#y_test_preds = lm_model.predict(X_test) #We can then use our fitted model to predict the salary for each\n", + " #indvidual in our test set, and see how well these predictions\n", + " #match the truth.\n", + "\n", + "#print(r2_score(y_test, y_test_preds)) #In this case we are predicting a continuous, numeric response. Therefore, common\n", + "#print(mean_squared_error(y_test, y_test_preds)) #metrics to assess fit include Rsquared and MSE. \n", + "## Filling in the missing values does appear to have helped based on a preliminary check\n" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#print(r2_score(y_train, lm_model.predict(X_train)))\n", + "#print(mean_squared_error(y_train, lm_model.predict(X_train))) # What does this mean?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To combat the overfitting we have a number of options, but one way that would also reduce our run time would be to remove columns from our dataframe. You will notice that sklearn does not provide pvals back for our coefficients, but it performs ridge regression by default. So, therefore, we can consider that columns that have larger coefficients are also more useful for predicting our response variable. How large is large enough to consider keeping? Well, that is a great question, and I also don't have a great answer... We can try some stuff and see what works. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we can also run cross-validation and aggregate our results to combat the overfitting we saw earlier using this reduced X matrix." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(12891, 2637)" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# You could deal with these rare events in different ways - you could consider them as great predictors\n", + "# I am going to remove them - as I feel like they are likely not that indicative of other individuals\n", + "# I want to find overriding truths about the individuals who receive particular salaries.\n", + "# So, let's only consider columns where there are more than 1000 of the level of interest in the column.\n", + "\n", + "reduce_X = X.iloc[:, np.where((X.sum() > 10) == True)[0]]\n", + "reduce_X.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.674976343389\n", + "503572469.281\n" + ] + } + ], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = .30, random_state=42)\n", + "\n", + "lm_model = LinearRegression(normalize=True) # Here you could set any hyperparameters of your model\n", + "lm_model.fit(X_train, y_train) # If this model was to predict for new individuals, we probably would want\n", + " # worry about train/test splits and cross-validation, but for now I am most \n", + " # interested in finding a model that just fits all of the data well\n", + "\n", + " \n", + "y_test_preds = lm_model.predict(X_test) #We can then use our fitted model to predict the salary for each\n", + " #indvidual in our test set, and see how well these predictions\n", + " #match the truth.\n", + "\n", + "print(r2_score(y_test, y_test_preds)) #In this case we are predicting a continuous, numeric response. Therefore, common\n", + "print(mean_squared_error(y_test, y_test_preds)) #metrics to assess fit include Rsquared and MSE. \n", + "## Filling in the missing values does appear to have helped based on a preliminary check" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.838856972216\n", + "259108335.391\n" + ] + } + ], + "source": [ + "print(r2_score(y_train, lm_model.predict(X_train))) #In this case we are predicting a continuous, numeric response. Therefore, common\n", + "print(mean_squared_error(y_train, lm_model.predict(X_train))) #metrics to assess fit include Rsquared and MSE. \n", + "## Filling in the missing values does appear to have helped based on a preliminary check" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "### Let's see what be the best number of features to use based on the test set performance\n", + "def find_optimal_lm_mod(X, y, cutoffs, test_size = .30, random_state=42, plot=True):\n", + " '''\n", + " INPUT\n", + " X - pandas dataframe, X matrix\n", + " y - pandas dataframe, response variable\n", + " cutoffs - list of ints, cutoff for number of non-zero values in dummy categorical vars\n", + " test_size - float between 0 and 1, default 0.3, determines the proportion of data as test data\n", + " random_state - int, default 42, controls random state for train_test_split\n", + " plot - boolean, default 0.3, True to plot result\n", + " \n", + " OUTPUT\n", + " r2_scores_test - list of floats of r2 scores on the test data\n", + " r2_scores_train - list of floats of r2 scores on the train data\n", + " lm_model - model object from sklearn\n", + " X_train, X_test, y_train, y_test - output from sklearn train test split used for optimal model\n", + " '''\n", + " r2_scores_test, r2_scores_train, num_feats, results = [], [], [], dict()\n", + " for cutoff in cutoffs:\n", + " \n", + " #reduce X matrix\n", + " reduce_X = X.iloc[:, np.where((X.sum() > cutoff) == True)[0]]\n", + " num_feats.append(reduce_X.shape[1])\n", + "\n", + " #split the data into train and test\n", + " X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = test_size, random_state=random_state)\n", + "\n", + " #fit the model and obtain pred response\n", + " lm_model = LinearRegression(normalize=True) \n", + " lm_model.fit(X_train, y_train)\n", + " y_test_preds = lm_model.predict(X_test)\n", + " y_train_preds = lm_model.predict(X_train)\n", + " \n", + " #append the r2 value from the test set\n", + " r2_scores_test.append(r2_score(y_test, y_test_preds))\n", + " r2_scores_train.append(r2_score(y_train, y_train_preds))\n", + " results[str(cutoff)] = r2_score(y_test, y_test_preds)\n", + " \n", + " if plot:\n", + " plt.plot(num_feats, r2_scores_test, label=\"Test\", alpha=.5)\n", + " plt.plot(num_feats, r2_scores_train, label=\"Train\", alpha=.5)\n", + " plt.xlabel('Number of Features')\n", + " plt.ylabel('Rsquared')\n", + " plt.title('Rsquared by Number of Features')\n", + " plt.legend(loc=1)\n", + " plt.show()\n", + " \n", + " best_cutoff = max(results, key=results.get)\n", + " \n", + " #reduce X matrix\n", + " reduce_X = X.iloc[:, np.where((X.sum() > int(best_cutoff)) == True)[0]]\n", + " num_feats.append(reduce_X.shape[1])\n", + "\n", + " #split the data into train and test\n", + " X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = test_size, random_state=random_state)\n", + "\n", + " #fit the model\n", + " lm_model = LinearRegression(normalize=True) \n", + " lm_model.fit(X_train, y_train)\n", + " \n", + " return r2_scores_test, r2_scores_train, lm_model, X_train, X_test, y_train, y_test" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n4VrtHwuFQgCAr7/+Gj/72c/wox/9CFOnTsW5556LRx99NPY8q9Ua+15VVfzkJz/BnDlzYtdobGyE\nIAidrt/6n35XJEnqUKbW586dOxeLFy+GLMu4/PLLTxg4v/rVr1BSUoLnnnsudp8gCB3KEQ6HO7zG\naDR2uN1dObsro6qqWLVqFcaOHQsAaGpqitUf6Pjzak9V1U63FUXptm4nEolEkJqairfffjt2X01N\nDVJSUvDxxx9j2bJluPXWW3HZZZdhzJgxeOeddzpd40Q/q9589gBw991344YbbsCnn36KtWvX4vnn\nn8fatWs79BYQnQj/tlDCufrqq1FYWIjly5cDAObPn4/33nsPV111FRYtWgS73Y7KykpcfPHFeP31\n1xGJRNDc3IyPPvoodg2n04ny8nIAQFlZGdxuNwDgiy++wMSJE3HrrbfivPPOw0cffYRIJNJlOS68\n8EK8+eab8Hg8AIBVq1bhvvvuQ3p6OiZMmIA33ngDQPQXgj179nRbn7feeguapqGxsRF///vf8R//\n8R8AgKKiIoiiiD/96U+46aabTvhzMRqN+O1vf4sXXngh1gJOTU1FOBzGvn37AETH10/F5s2bcezY\nMQDAX//611gZL7zwQrz44ovQNA2hUAh33nknXn311RNe78ILL8Rrr70We93rr7+OCy644JTKBgCn\nnXYaTCZTLLwrKytx9dVXo7y8HJs2bcIll1yCOXPmYNKkSdiwYUPsM5UkKfZLg9PpxLFjx1BbWwtN\n07Bhw4Yey9/VZ68oCi699FL4fD7cdNNNWLRoEfbv39+nX0woObHlTQnp4YcfxjXXXIN//vOf+NnP\nfoaHHnoIpaWlkCQJ3//+93HeeefFAv6aa65BamoqXC5X7PX33HMPFi9ejNLSUkyYMAETJkwAEP3F\n4IMPPsD06dNhMBgwZcoUNDY2xv6Tbu8HP/gBqqqqcOONN0IQBOTm5mLFihUAgCeffBIPPvgg1qxZ\ng1GjRmHMmDHd1iUlJQXXX389AoEAfvjDH+L888+PPXb99dfjvffeQ0FBQa9+LmPGjMH999+PhQsX\nxq5977334rbbboPT6ex2HPlE8vPzsWDBAtTU1GDMmDFYsmQJAOChhx7CsmXLMGPGDITDYVxwwQX4\nyU9+csLrLVy4EEuXLo29rri4GHfccccplQ2I/uLy7LPPYtmyZfjjH/8IRVHw3//93zj77LORnp6O\n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\nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cutoffs = [5000, 3500, 2500, 1000, 100, 50, 30, 20, 10, 5]\n", + "r2_scores_test, r2_scores_train, lm_model, X_train, X_test, y_train, y_test = find_optimal_lm_mod(X, y, cutoffs)" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(9023, 1081)" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#______Video 4 Creating Dummy Variables & Other Alternatives for Categorical Variables____#\n", + "\n", + "\n", + "\n", + "\n", + "### Now that we have the best model in terms of the r2 on the test data, we can use this model to see which features\n", + "### appear to be most important, and what impact they have on salary.\n", + "\n", + "X_train.shape # we have 1081 features in the optimal model - let's look at some of them\n" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n+ag2AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "y_test_preds = lm_model.predict(X_test)\n", + "\n", + "preds_vs_act = pd.DataFrame(np.hstack([y_test.values.reshape(y_test.size,1), y_test_preds.reshape(y_test.size,1)]))\n", + "preds_vs_act.columns = ['actual', 'preds']\n", + "preds_vs_act['diff'] = preds_vs_act['actual'] - preds_vs_act['preds']\n", + "\n", + "plt.plot(preds_vs_act['preds'], preds_vs_act['diff'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('difference');" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAFXCAYAAAA/LE0rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXtwFNeV/789Dw0wIxmU8JKEkjhhwGOXMFg4CchQLJVl\n403KUcoPSbZcsSNDjBGPKlysFSMM2DhUggPm4VVMfnGiOGhxWFWckOwfy1p4QVRCCWMwQqjCOgYk\nHrLBtkagEZru3x9Nj+bRtx8z3TM9PedT5TLquX37nu6eueeeex6cIAgCCIIgCILIWRyZHgBBEARB\nEJmFlAGCIAiCyHFIGSAIgiCIHIeUAYIgCILIcUgZIAiCIIgch5QBgiAIgshxXJkeQKbo6+tX/Hzc\nuDG4du16mkZjLnaSBbCXPCSLdbGTPCSLdUmnPOPH5zM/I8sAA5fLmekhGIadZAHsJQ/JYl3sJA/J\nYl2sIg8pAwRBEASR45iyTXDz5k00NDSgp6cHQ0NDePrpp/G1r30N//Zv/waO4zB16lSsW7cODocD\ne/fuRUtLC1wuF55++mksWLAAg4ODePbZZ/HJJ5/A6/Vi8+bNKCwsxPHjx/HSSy/B6XSioqICy5Yt\nAwDs2LEDbW1tcLlcaGhoQFlZmRliEQRBEIQtMUUZePvttzF27Fj89Kc/xaefforvfe97mD59Olau\nXImvf/3raGxsxIEDB3D33XejubkZ+/btQygUQk1NDebOnYs9e/bA7/ejvr4e+/fvx65du/D8889j\n3bp12L59O6ZMmYLFixejs7MTgiDgb3/7G9566y1cvHgR9fX12LdvnxliEQRBEIQtMUUZ+Jd/+Rcs\nWrQIACAIApxOJ06dOoV7770XADBv3jwcPnwYDocDM2fORF5eHvLy8lBaWoquri50dHSgrq4u0nbX\nrl0IBoMYGhpCaWkpAKCiogLt7e3Iy8tDRUUFOI5DUVERwuEwrl69isLCQjNEIwiCIAjbYYoy4PV6\nAQDBYBDLly/HypUrsXnzZnAcF/m8v78fwWAQ+fn5MecFg8GY49FtfT5fTNvz58/D4/Fg7NixMcf7\n+/tVlYFx48aoOm4oeV5mG3aSBbCXPCSLdbGTPCSLdbGCPKaFFl68eBHPPPMMampq8N3vfhc//elP\nI58NDAygoKAAPp8PAwMDMcfz8/Njjiu1LSgogNvtlu1DDbVQjvHj81XDD7MFO8kC2EseksW62Eke\nksW6pFOetIcWfvzxx3jyySfx7LPP4sEHHwQABAIB/PWvfwUAvPvuuygvL0dZWRk6OjoQCoXQ39+P\ns2fPwu/3Y9asWTh48GCk7T333AOfzwe3241z585BEAQcOnQI5eXlmDVrFg4dOgSe59Hb2wue52mL\ngCAIgiB0YIpl4N///d/x+eefY9euXdi1axcA4Mc//jFefPFFvPLKK7j99tuxaNEiOJ1O1NbWoqam\nBoIgYNWqVfB4PKiursaaNWtQXV0Nt9uNLVu2AADWr1+P1atXIxwOo6KiAjNmzAAAlJeX45FHHgHP\n82hsbDRDJIIgCIKwLZwgCEKmB5EJ1MwydjJF2UkWwF7ykCzWxU7ykCzJ09rqwtateejudsDv57Fy\n5RAqK4cN698q2wQ5m46YIAiCIJRobXVhyZLRkb9Pn3be+vuGoQqBFaAMhARBEAQhw9atebLHt22T\nP57NkDJAEARBWIrWVhfmzx+DyZN9mD9/DFpbM2PE7u6WnyJZx7MZ+0lEEARBZC2Saf70aSfCYS5i\nms+EQuD387qOZzOkDBAEQRCWgWWaX758VNoVgpUrh2SPr1ghfzybIQdCgiAIwjKwTPChEIclS0aj\noABYuDA9YxGdBG9g27aRaIIVK4yNJrAKZBkgCILIMayyJy+Hmgl+zZo0DeQWlZXDaGu7jt7eINra\nrttSEQBIGSAIgsgprLQnLwfLNC9x7hwsM1Y7QcoAQRBEDmH1cLnKymE0Nd2Ax8POh2eVsdoJUq8I\ngiByiGwIlxNN8YMxCX+isdJY7QLdUYIgiBwiW8LlKiuHUVSUHWO1A6QMEARB5BDZFC63bl1I9rgV\nx5rtkDJAEASRQ0h78oFAGC6XgEAgjKYma+balxvrnj2w5FizHVIGCIIgcgylcDk9YYdGhiiy+oof\na1VV0pcgFCAHQoIgCAKAvip9Rlb0y6XqgFaFLAMEQRAEAH1hh0aGKFo93DEXIGWAIAiCAKAv7NDI\nEMVsCHe0O3SnCYIgCAD6wg6NDFHMlnBHO0PKAEEQRJqxam0APWGHRoYoZlO4o12xxhtIEASRI1jZ\nWU5PlT4jK/rlUnVAq0KWAYIgiDRiRWe5hgYPpkzxYcIEH555ZhQuXuQgCIAgUx4g2qqxfr0Hn33G\nbqt0brxFRC7cUam9VuuKVa0wVoPuCkEQRBqxmrNcQ4MHu3ePKCLDw8C1axyARKtFvFWjt5eL/FvN\nwqHXIsJqX1AAfP65tr6sbIWxGmQZIAiCSCNWc5ZrbnartpGsFiyrhlzbePRaRFjtX35Ze19WtMJY\nFVIGCIIg0ojVnOVC8un/Y5CsFlqsF3otH3qPd3ZqP8dqVhgrQ3eEIAgijVitNoDHo95GslposV7o\ntXzoPR4IaD/HalYYK0PKAEEQRJpRqg2Qbmprb6q2kawWLKuGXNt49FpEWO2fe057X1azwlgZciAk\nCILIYTZtEvcJmpvdCIUAlwsoKBDw+edcQohffAjgxIkCOA64dCmxbTx6wwdZ7auqRqOvT1tfFLKo\nHVOVgffffx8/+9nP0NzcjFWrVuHjjz8GAPT09GDGjBn4+c9/jhdffBHHjh2D1+sFAOzatQtutxvP\nPvssPvnkE3i9XmzevBmFhYU4fvw4XnrpJTidTlRUVGDZsmUAgB07dqCtrQ0ulwsNDQ0oKyszUyyC\nIAhbMXt2GIcPO9Hd7cDUqTxWrkycMFtbXdi6dWRS3blzUPekWlk5HIlK2Lo1D0uXjsLWrfLXk9oD\noiPgmTMObN2ah4ICYOFC8XMppFEKa4wfo9SvlnGyzs0VTFMGXn/9dbz99tsYPVoM6/j5z38OAPjs\ns8/w+OOP47nnngMAnDp1Crt370ZhYWHk3F/96lfw+/2or6/H/v37sWvXLjz//PNYt24dtm/fjilT\npmDx4sXo7OyEIAj429/+hrfeegsXL15EfX099u3bZ5ZYBEEQtkJL+F2mKhTKta2uBurqYsMhR/qA\nzDH1MVIIook+A6Wlpdi+fXvC8e3bt+Oxxx7DhAkTwPM8PvroIzQ2NqKqqgq///3vAQAdHR247777\nAADz5s3DkSNHEAwGMTQ0hNLSUnAch4qKCrS3t6OjowMVFRXgOA5FRUUIh8O4evWqWWIRBEHYCi3h\nd5mqUMhqqyUcUqnfVMZkV0yzDCxatAgXLlyIOfbJJ5/gyJEjEavA9evX8dhjj+GJJ55AOBzG448/\njrvuugvBYBD5+fkAAK/Xi/7+fgSDQfh8vkhfXq8X58+fh8fjwdixY2OO9/f3x1ga5Bg3bgxcLqdi\nm/Hj83XJbGXsJAtgL3lIFutiJ3lYsnR3y7fv7nZGztHSRit6+mK1DYU4+Q809pvKmMzACu9ZWh0I\n/+u//gvf+c534HSKk/Do0aPx+OOPR7YSvvGNb6Crqws+nw8DAwMAgIGBARQUFMQciz7udrsTjkuK\nhBLXrl1X/Hz8+Hz09fXrltGK2EkWwF7ykCzWxU7yKMni94/B6dOJCyO/P4y+vuua22hFT1+sth6P\noFkhUBqj5CcQDjsAJPaXjHx6Sed7pqR0pDW08MiRI5g3b17k73/84x+orq5GOBzGzZs3cezYMdx5\n552YNWsWDh48CAB49913cc8998Dn88HtduPcuXMQBAGHDh1CeXk5Zs2ahUOHDoHnefT29oLneVWr\nAEEQBCGiJfwuUxUKWW21hEMq9QuM+AmIyoa8YpFLIYhptQx8+OGHmDJlSuTvr371q3jggQfw8MMP\nw+1244EHHsDUqVNRUlKCNWvWoLq6Gm63G1u2bAEArF+/HqtXr0Y4HEZFRQVmzJgBACgvL8cjjzwC\nnufR2NiYTpEIwrbkund1rqAl/C5TFQrl2q5d68TChSHMnh1O6AOA5jGyUysLCARyLwSREwQttabs\nh5pZJldMhNmIneSxqizx3tUSSpnyrCpLsthJHivLolfp1CKLlj4nT/YhHJazCAhwOqE6FqOU5Zzc\nJiAIIjsg72oiHUSb6sNhLhLSl0qZYa19slMSc6pjMWPcmYaUAYIgEqACL0Q6MEPp1NqnltTKrLHY\nUVmmbzZBEAlQgZfcoLXVhfnzx2DyZB/mzx+jurLV214NM5RO1rldXY6YsQOAw6G+Sy7Xnx2V5ewd\nOUEQpkEFXuyPXlO3GaZxM5RO1rk8zyWMfdIkdWVArj87KsukDBAEkYDVyuwSxqPX1G2GadwMpVOr\n+R8AHBpmQD0hj9msLGevtwNBEKaitcALkZ3oNXWbYRo3o6qgXJ+nTzsgCImRA5cucWhqGmk7aZIA\nQQAuX1auwmjHaoikDBAEQeQA8aFwEycK6O2Vy7rHNoHLZw6Uby8XegcgcqygQEB/P4fhYcDjAX7w\ng5uRcsqpIk3K69d70NnJVlb8fj5ppdduyjIpAwRBEDanpQUJVflYsEzdK1cOyeaekGvPrgI4wrVr\nI4pIKIRIFUIjFAJWnox4stmsbzTkM0AQBGFzNm2SP15Swmv2C9HjR8LO7qeMnmqESihfn3xg5CDL\nAEEQhM3p7JQ/fukSh2PHBuQ/lEGraTxZP4KQMbsEitd3uYC2NnOLD2UjZBkgCIKwOYGA/HGzQuGS\n7dfjMf/62Rz+ZyakDBAEQdichgb542btmesJ74tGTzXCZK9PfgLykDJAEARhc6qqkNa8EXL+Bexs\nfwI8HgF1dUOGRhM0Nd1AcTEPQAAgoKSEJz8BBUgZIAiCyGLiUwQ3NHhkUwZXVg6jre06enuDaGu7\nbvqkWFk5jBUrhjB1Ko8zZxzMBD+BAI9XXx3EX/7iwoQJPkyY4MPdd3sVMxs2NHgwZYrYdsoUHxoa\nRvYXpPuxdOkoFBQIaGoaxJUrQRw7NhCRWWozaZJ4/sSJyvcu+hyjUjFbDXtJQxAEkUPIhfBFhw1K\nIX0FBcDChZkdG4s5c8IJ7Xp7uVvHElfyy5ePhCECsWGJs2eHGSGNN2IUgeg2ktMi694BNwAkhmay\nxpetkGWAIAgiS9EawvfyyyYPRAYtYysu5nH4MDvngVyq49dfl2/b3OzWlDJZb9jjtm15tqxSGA9Z\nBgiCILIUrSF8rNBCM9EytsuXOVy6lJgFUamPwUH5tqGQtpTJesMeu7sdEBjuDtlcpTAe+0hCEASR\nY2gNk2OFFpqJlrH5/bzuMMBRo+TbejzaqgnqDS1UGqOdwhRJGSAIgshStIbwPfecyQORQcvYVqwY\n0h0G+NRT8m1ra29qqiaoN+xRaYx2ClMkZYAgCCJLkQvhq6sbSgghrKoS26fTI14uvM/lEuBwxIY2\nSu1KSkbaFRezwwBffRWoqxuCxyO2jQ5LVEuZLBVPEq+TSGGhfHrmXCjpzQkCazfE3vT19St+Pn58\nvmqbbMFOsgD2kodksS52kmf8+Hz84hc3ZL37jZzU4isVzp0bjvH8T/aa0f0GAhyWLVM/v6HBg+Zm\nN0IhcQthzpww3nlHWflxOARMmyZWWEzXRJ/O92z8+HzmZ2QZIAiCyAHM9oiXQvZOn3YiHOZw+rRT\nVhHQe834fk+eFMP81PIQ7N6dh1CIA8AhFOIUFIGR9TDPc5GwQbvlEVCDlAGCIIgcQIunfSroCdnT\nc81klBgjqh/aKWxQC6QMEARB5AAsz/fhYTD9B5Qy/cWjZ4LX44WfjBJjRPXDZJSkbM5SSMoAQRBE\nDjB3bpjxibxpXM7Uvnt3HlMh0DPB6/HCTyasT0/1w+Jiebc5vWGDctsk2bTdQMoAQRCEiVhltaiU\n6U8i2jTOMrWzjrPC7+SiG/Q45yUT1seqfrhgwXDCWBob5c0IesMGsz1LYXaoLARBEBkk3kteq7e5\nXO2ATOW012L2jm7DMrWzjovy3MC2bSP3acWK1L3y4/sNBDg884zy/ZOqH0ZHE9TW3lSoipj6uM32\nyTAbU0f5/vvvo7a2FgDQ2dmJ++67D7W1taitrcWf//xnAMDevXvx/e9/Hw8//DDeeecdAMDg4CDq\n6+tRU1ODp556ClevXgUAHD9+HA899BCqqqqwY8eOyHV27NiBBx98EFVVVThx4oSZIhEEwaClBZZY\nAWtFacXe2upCWRkwebIPM2d6kzb/mrlaZI0/+vjMmV7cfbcXTifAa7B6S/4DDQ0ecIwswRwH5j3b\nujUPZ844MHUqjzlzwtiwwaNaiVBr1UVBAMJh3IomGBXxYWBVIJw9O4zz54O4ciWI8+eDsoqA5BOx\nZMkonD3rwA9+cDPpio7ZnqXQtDwDr7/+Ot5++22MHj0ae/fuxVtvvYX+/n48+eSTkTZ9fX148skn\nsW/fPoRCIdTU1GDfvn148803EQwGUV9fj/379+O9997D888/jwceeADbt2/HlClTsHjxYqxatQqC\nIGDz5s349a9/jYsXL6K+vh779u1THR/lGche7CSPXWRhVaizamIWpfEC0FRtLxAIo63tumKbyZN9\nCIcTZ1WXS0Bvb1DjaBNhjb+ubogZzmcWeu6Z1J5VQdCMsbHeP8knIh4pgZFekv0O2D7PQGlpKbZv\n3x75+4MPPkBbWxseffRRNDQ0IBgM4sSJE5g5cyby8vKQn5+P0tJSdHV1oaOjA/fddx8AYN68eThy\n5AiCwSCGhoZQWloKjuNQUVGB9vZ2dHR0oKKiAhzHoaioCOFwOGJJIAgiPWTbfqnSeLWGyGkx/5q1\nWmSN0YiQOjby60Y990xqL6G3gqBekgk/TPYeZnuWQtPseIsWLcKFCxcif5eVleGhhx7CXXfdhdde\new07d+7E9OnTkZ8/oql4vV4Eg0EEg8HIca/Xi/7+fgSDQfh8vpi258+fh8fjwdixY2OO9/f3o7Cw\nUHF848aNgcul7FCjpEVlG3aSBbCXPHaQpbubddxpSfmUxqvVVhoIcKqyNTYC1dWJx9euTe2+sMYv\nev6bhXzfeu6Z1F6SnSWHUSi9f2yfCPXnymLxYvE/EScAbVYPK3xH0rap961vfQsFBQWRf2/cuBHl\n5eUYGBiItBkYGEB+fj58Pl/k+MDAAAoKCmKORR93u92yfahx7Zqyec8u5lvAXrIA9pLHLrL4/WNw\n+nSicu33h9HXp/xdywRK4xUEyH4WzzPP3EBfn/Kqb+FCoKnJleCctnDhMPr6kh4+c/wej2CaQsDq\nW889AwCnU4DLJVpHJk7k0NtrnuvaxIk8+voGZD/zeHyy8ng8Avr6kt/C0Yvttwni+eEPfxhx7jty\n5AjuvPNOlJWVoaOjA6FQCP39/Th79iz8fj9mzZqFgwcPAgDeffdd3HPPPfD5fHC73Th37hwEQcCh\nQ4dQXl6OWbNm4dChQ+B5Hr29veB5XtUqQBCEsWRbVTel8bI+Ky7mkzL/VlYOo63tOnp7g0k7p8XD\nGiMrpM4IWH2rVR6MJxTiIo6YZioCANDT42A6es6ZI593gXXc7qTNMvDCCy9g48aNcLvd+OIXv4iN\nGzfC5/OhtrYWNTU1EAQBq1atgsfjQXV1NdasWYPq6mq43W5s2bIFALB+/XqsXr0a4XAYFRUVmDFj\nBgCgvLwcjzzyCHieR2NjY7pEIgjiFpWVwygoADZuDBsaVmYW6mFwN7Bz52h0dgqWlEVp/LNnhyPH\nJ00SIAjApUsOuFwCbt4EJk8W0NMjJhJKREAgIEYCtLc7FfuWu2fRn82ZE8Z//ZcLFy5EXyfxmiUl\nPAoKhJjz4q8NiPv/p087AHAQBCESLiiNqbPTIdv/tm15ss/u0iV5C8rly2ZutVgXqlrIwC7mW8Be\nsgD2kodksS5Wlkdr3oORdk74/eFIu/nz5bcZtERIRPe9fr0Hvb3i5FlcLKCxUSwjHF0x0OUChoeV\nJlgBd9yhPXcD67mwIjccDgGXLgXR2urChg2eW4qQhPGRHnrJuW0CgiCITGCVDIBGoTXtbWy7kYRH\nM2d6mamJWds68bkLpk0Tcy+IZn7RytDT48CSJaPxyCOjY9IYKysCACsdsl5YERo8z6GhwYMlS0aj\np2dkvCyHyGzJC2A0pAwQBGFb0pUvPp0Kh9Ywzg0b5BP09/Q4sHt3nuY0wfH3sKfHgWvX2FNHW5s2\nR0ItMuhByW9BT7igVf1czIaUAYIgbEs68h+ku0CN1rS3sebwRHbvdkMQgJ07BxUdG/XmAkhl4zmV\n1L2VlcNwOOQvrlzFUMjKvABGQ8oAQRC2JR354tOdcMm4REbaFJd05tZP1UQ/bRrrfLZiFAjwhkZ6\nZCukDBAEYVvSkS8+3QVqtIZxFhVpX6IrKS7JKBnJkqqJXk+Io1HXtAukDBAEYVvSkf8g3QVqtKa9\nXbdOe359JcVFzwTrcmlXQAKBcMqpe+N9NQCA4+TH4HAIKCnhIaZVFlBczOf0tkA8pAwQBJG1qDnu\npSNfPGuynDMnrFgVUa/DYfQ5W7fmYcWKIUXzdmXlMOrqhuDxiJOjOEmyJ+uZM72yFRDFbRBtk/ww\n87Ymnt/Z6cScOeEYGRoaPCgq8kUqHU6Y4ENRkViJcNo0L4qKfOA4YMoUHx55ZLSsr8bYsfJjdbuB\ntWtDuHJFrGTY2BjC1q15hjl9GulEmokIGMozwMDKMcZ6sZMsgL3kIVmSx+xKiXrkaW11JSTckauI\np1ThT2ncWmSNzz0wd678GLSSTAXEZNIhSzKwqggaTbLPQIlU3sX498zM91opzwApAwzoR9q62Eke\nkiV5jEico0Qq8iiNjZXHX2ncarLqKQVcXMzj44851Unb5RI05AiIJRkFQpJhyhT5WgFGk+wzUCKV\ndzH+PTPzvVZSBrI7+wZBEDlLuh339KA0NtbyS2ncarLqCf+7fJnTFP7HNvlHM1J0SEpN/P/+nxs8\nr31Sl2RQDv8zjmSfgVqfRvWXqfc6898agiCIJEi3454elMaWzLjVztEzUTidQNigWjzFxUJkzx8Q\nV7W8ztsvyeCRz5FkOMk+A7U+5XA6oXvfP1PvNSkDBEFkJVaulJhMVUSlcaudo2eikNIEq1FYqG4+\naGwUl/PRiZf0hhZKMiRTcTEQ0K/VJPsMlGD1F12hUWsiqky9184XXnjhBVOvYFGuX1e+sV6vR7VN\ntmAnWQB7yUOyJM8dd/D42td4/N//OXDtGofp03m8+GLIsEiBVORRGlsy41Y7Z+xYAX/6U2LK3bq6\nIQwOAteuOeB2C7KFfFhs3TqI7353OHLNsWPFqoc8L67in3jiJpYtEyfwH/1oFD7+WG5tKUCpOuKL\nL4Yi5x844MLYsQKGhmKzGLpuzZ9jxwoIh8VaAx6PgCeeuInm5kHZ+zJpkoBTpxwIhwGOE/+Trpfs\nM1Aivj+3G7L3+v/+z4Ef/CBW6Yl/z8x8r71etvmFHAgZkGOXdbGTPCSLdTlwIB8bNoRVKwOyiPbu\nl0oJX77Mxfw7mX6j+z5zxgG3GxgaEksTOxxiad748sLjx+fD5dKmDIwbJ1oZrl0T2xYVCbj//mFZ\nx8CiIh4XL0o+CPKTPqts8bFjA0zHx7q6IWzaJO9EYNZ7prUSpBZYFRTlKjRapWohORASBEHEIU5S\nACB6dUtmXkBbeFf8JBddJyD638n0K5bhHVmFS453UilhVgia38/LeqmLCCgpETAwgIQiRL29HDNC\nQKxaqIS88nHhgiMqh0Eiu3fnYfbscNoSAsU/L73PJR72veZS7tssyGeAIAgijlTrDegt7qOlX2nC\nilYE9PSllEmwpETAhQvK1QiNRsrLoPR5ujC6voSWrI3plE8LpAwQBEHEkWp4l94wMC3ttSoYrL6k\njIRy6I0AUEd991kyxyt9bhbxGf7OnDE2nC868yXrXlghBDYaa42GIAjCAqQa3qU3DExLe62Th1Jf\nmzaFZNMzX75sbLIfLWGC0r680udmpOWVKznNyouQSjhfZeUw2tqu4447rBsCGw0pAwRBEHGkGt41\nd66+kDct/WqdPNT6kiap6JoARk9MWsIEJQdHlrVizpywbO2BlpbUxqZnC8eIcD4rh8BGQ8oAQRBE\nHJWVw9izB0kVOGptdck63I0bx8PlEivnFRfzuvtlTSoulwCHI7UiTOwV+kh1vwULhiPFjjhOiFQd\ndDgEeDyxY4i3QCjJzLJWHD4s7+z48su6xYuBZWGRxm90Qat0FMsyAgotZGCnMCk7yQLYSx6SJf1o\nDSHTK4/U7+nTDsh50Svlllcb00gUwUi/JSUC1q4diT9X6mP8+Hz84hc3ZD+XC1N0OkfSEbtcYsbC\nvDzg5k1g0iQBHAdcvMhF2uflJZ7ncIz4IsRnPRw3TsCYMfJ9TJ8ujm3p0lHMUEg9ilm8zOIzMib3\nvxHhiFYJLSRlgEG2/LBpwU6yAPaSh2SRx8iY7/h+tVaE01u1UK1QkMslpu7VOyalvtXaSJ8fOJCP\n6urE85MpLJQuiot5xciJaNlZSg4rhwGroqTePBJGVBe0ijJA2wQEQVgKOQcvralc1TA6hEyt32hY\n+/Ksc5csGYX588dg/Xq2N540bjW5Nm2SP/+NNxKzFmYL27blKb4rrHvS3u40xGxv1ruUKSjpEEEQ\nlkLpRzZV64BZFeG6utTPZzmMsa/NKSQJij1XTa7OTvnztVUmzAyXL3NwOASmp393t0PxXVG6J5WV\nw5Z9lzJFdo6aIGyEGeFT2YyZP7JmVYTLU1wMCoorz1SuLZ2rJlcgkPQlMobfz2PaNOVKjkrvitI9\nMeI7Z+WqmclAygBBZJCWFphmEs9WzPyRNSvM66ZCJF0gwCuuQrVkq2MhjVtNroYG+fO93qQvbTpK\n1QWlz5XeFda5rJBFvd+5bAkZ1AopAwSRQVh7udm672gEZv7ImhXmpbSC1RL3r5atzuUSUFjI3/pc\n/HdREY8f/WgUpkzx4emnR6GoiEdJiXz4XlUVZOW+7Tb56zmdQuRaLpf070TcbjHM0O1m+aELUf9p\nw+MRLSmcUlrbAAAgAElEQVSAuGXEcdFjEFBaOuKkp/SusJ41K2RR73cuW0IGtWJqNMH777+Pn/3s\nZ2hubsbp06exceNGOJ1O5OXlYfPmzfjiF7+IF198EceOHYP3loq6a9cuuN1uPPvss/jkk0/g9Xqx\nefNmFBYW4vjx43jppZfgdDpRUVGBZcuWAQB27NiBtrY2uFwuNDQ0oKysTHVsFE2QvdhJnsmT82NC\nriRYnudWxuhoAmnfN74CX7owIppAqfqenn4kiot5fPvb8hUEJYqKeNx//zAOH3ZG7l9joxMLF/aj\ntdWF9es9kaJGIol78g6HgGnTeJw+7QDHiSWFXS4gP1/AZ5+J4YA3b4qVEq9fH6lwGB2GGB9qyCpa\nlIiAurqbsjI6HALuvJPDsmU3YkIq498VAMxoFFZFwUx956wSTWCaMvD666/j7bffxujRo7F37148\n9thj+PGPf4w77rgDLS0t+PDDD/Hcc8+huroaO3fuRGFhYeTcX/3qVwgGg6ivr8f+/fvx3nvv4fnn\nn8cDDzyA7du3Y8qUKVi8eDFWrVoFQRCwefNm/PrXv8bFixdRX1+Pffv2qY6PlIHsxU7yLFyYj5Mn\nE48nE/Ocaez0XAB5eZRCHltbXdi40YMLF0ZK/65bp78OfWurC8uXj0IoZGyKYCuHESYDaxWuFvI3\nf/4Yw/IMGIFVlAHTtglKS0uxffv2yN+vvPIK7rjjDgBAOByGx+MBz/P46KOP0NjYiKqqKvz+978H\nAHR0dOC+++4DAMybNw9HjhxBMBjE0NAQSktLwXEcKioq0N7ejo6ODlRUVIDjOBQVFSEcDuPq1atm\niUUQhsLay83WfUc7oyXk8cIFKeEQh95eR1J70ZWVw6Z4+Tc3Z28YoRwss75ayJ/d9vqNwjQvpUWL\nFuHChQuRvydMmAAAOHbsGH7729/izTffxPXr1/HYY4/hiSeeQDgcxuOPP4677roLwWAQ+fmiBuP1\netHf349gMAifzxfpz+v14vz58/B4PBg7dmzM8f7+/hhLgxzjxo2By6UctqOkRWUbdpIFsI88VVXi\n/19+WQz/CgSA554DqqqUE9hYFbs8F4loeXbskG+zc+doLF6s/rkeAgHIWoxSwWhLQ6bp7nbKvm/d\n3crtFy8GCgqs9Z2zwvcmrS7Lf/7zn/Haa6/hF7/4BQoLCyMKwOjR4kP4xje+ga6uLvh8PgwMDAAA\nBgYGUFBQEHMs+rjb7U44LikSSly7pmwOspPJ006yAPaSZ/z4fCxc2I+FC2OP9/VlZjypYKfnAiTK\n09npg9y+d2engL6+oOrneli2TD2joV48HsESCoFR4/D7w+jrS/wd9/vltwGi2y9cCMt852y/TRDP\nH/7wB/z2t79Fc3MzpkyZAgD4xz/+gerqaoTDYdy8eRPHjh3DnXfeiVmzZuHgwYMAgHfffRf33HMP\nfD4f3G43zp07B0EQcOjQIZSXl2PWrFk4dOgQeJ5Hb28veJ5XtQoQBEHoRS3k0ciQSKman+hFbwxa\nKgmmA6PGwTLr0zZAcqTFMhAOh/HSSy9h8uTJqK+vBwDMnj0by5cvxwMPPICHH34YbrcbDzzwAKZO\nnYqSkhKsWbMG1dXVcLvd2LJlCwBg/fr1WL16NcLhMCoqKjBjxgwAQHl5OR555BHwPI/GxsZ0iEQQ\nRI6xcuWQ7Go9OtZf6XM9sCofRuN0CjGRKE6n6PU/fTqPOXPCaG8fiSZYu9aJhQtDmD07HFPwqKRE\nQEGBgM5O5S1TQIDHI07kv/ylG4KgtrIX4HCIxYok/4fowkrx4ygsFDB6tJh1UIoIaGlx45135Kco\nh0NgOmaKx29kPBol26BCRQzsZPK0kyyAveTJdVnMLEhkRjW5+IgBl0uszDdtGo+5c8P4859dMWF7\nRUUC7r9/OOZ4cbGAxsbYKIPo8U6cKODKFQ7Dw+oTrtTf5ctcjNOhywX84Ac3I2GN0bJEVykUJ2vt\nIX8jaBsbIFYo/MlPEuWNDnGMvifR94LjWOMTIn1LSkRBgYD+fvE+SGGQn3/OKT5/LdUioz+fOzcc\nE7Kp1l6yUihdwyrbBKQMMMj1H2krYyd5clkWo6q+mdUvSxkwai9fS1XCVJHyHEiymHktNbTIa2b4\nY/zzT6VaZCrt48diFWWAMhASBJER0l1BkNWvnjz1WqoTakWt4qAR/PKXbkye7ENZ2ciqNVNI8m7Y\nwK7CyAp/9Hj0ZTFUur6E2nui9V4l8xytmGE0dxOgEwSRUcwqSKSn3/jVnJQ7ALghGw5oZEU6tYqD\nRiAIHMJhMUxRlCtzhmBJTslPQI4QI1ljOCz6RMhl69R7fdbf8ce1PpdknqMVKxtab0QEQeQEZhUk\n0tOvXivCxInGTaZqUQjmkLnQQi1yuhjL01QVAbnrJxsdkmp7vW3TBSkDBEFkBLNCwLT229rqwunT\n+qwTnIFzqVrFQbshyVtUxFaoWM6MYl6C1G5+/PNXe0+0PpdknqMVwxxJGSAIIiOYVfVNS78j2wPy\nEwxr5XbpkvKE5PEIcDiEyP8DgTAWLFCWR8opIO2LSxUKHQ6pGqBZpv2RcWq/hpDw38j58n1wnBBz\n/9etUy7cVFLCR56deE/Y4ygs5FFcLFZqHDeOj9wvt1v8W+m9UntP5D6vqxvS1b6p6UbWVDakaAIG\nuezlbXXsJA/Jkl4kJzrRIsCe2JuabmDx4tEJ8rCK3IwgwOlETAiZWmEcNa92VpW91BFQVCTgxg2p\n6qD6NaLHHB9yt3u3m9GHeJ3oMEKx8iK7vXQPu7ocsjkNkq0wyAolNCvEVQtWiSYgB0KCIHICbaFf\nApqaBpkTwdy5YRVlQHTYi3ZEVHNUU/JbqKwcht/Pq1wzWbi4UsbqdHc7ZJ0u1e5J9HV6ejjs3p2H\n4mKe4Uw4cg9ZJLPnznIWPXo0Npwx+tlZcQVvFrRNQBCE5VEL/9MSHqg19Gvr1jxmeOHhw/om5W3b\n8lQd1dSUBSv5FPj9fEbDEyWS2XNnjZsVzmjF8D8zIWWAIAhLo1Y6WEtpYUBrONfI+cuXI0HBYPch\nv9va3e1gTuZz5oQxf/4Yppe8pCxIe9HFxZn3QF+xYsiwsLjLl7mY/XQln4PoPfc9e5DUip01blY4\noxXD/8wkt6QlCCLrSDY5TPzKTq9peft2JCgYkybJT1iskDi/n2c6ou3enXfLFC5vqpdWv9J+tlJ8\nfjooLhZlYd2DRJTbSc9DEMT/PIxcRILAYcWKIfT2BtHWdj1S9hvQlzCK9fxZESJGhP/pGV+mIWWA\nIAhLk2xymPjjZprbWSFx0oReWTmMtrbrkQlNbbuhrm4oJsWtktKQLr79bXE1rt3lXHm8c+aEYyw6\nSmWN5Uz2Wi1CEqznzyq6lGr4n97xZRpSBgiCsDRGlQ6WVujscDV1Ll/mUFQkf73iYl5zCJmaCbq9\nXVQWUt2fLynhsWDBMNxuQArH83p5lJSIYXfFxTy8Xm33Y/du0ZdCLbxSjcJCHk1NN3T5X8jdL70J\no+ItNKz3wOMRDAn/MyvdtlmQMkAQBpFNJsFsItnkMHJJhrZuzcPNm8mPJRwG0wO/p4dDZ6cDEyYI\nmDMnjK1b8yLvQkODJ+bdKChQnoC7uhyKSZG0cuECh3feceLmTcDrFUP2brsN6OsTq/v19HAYGADk\n8gfI8aMfjQKfkvVcwNWrHJYsGaVLNqcTmn1AlBStaAvNMGOuD4eT80nQOg6r+iLQrxVBGIBSjvtc\nCk8yA7X69Frq17PCCh0OAdOn85g4UcA776j/HLJMyiLiZ729XEKoWnSYnJYwQZ7nDKouODLegQFH\nZHzJoiy/vvHoIRTiEmpGTJwoyMqiNWU0K2TTqFTBZvdvNNZUUQgiy8g2k2C2Eb/nLpdNTulz1vOZ\nPp1HW9v1lE3fRHqI/j6xHP+0pow2Kx12uvo3GlIGCMIAss0kaCZ6tktaW12YOdOLCRN8mDDBh7vv\n9hqyvRI/hjNnjKlQR2SW6OfEUuC0KnZmpcNOV/9GQ9sEBGEA2WYSNAs92yVypvveXi7l7RW5MbCQ\nwuTMy/JHGIn4fXJG/p3qd66yctjUydns/o2E1GGCMIBsMwmahZ7tEiVPedb2ipGZBoGRMDkrZfkj\n2ER/n+g7ZyykDBCEAWSbSdAs9GyXKJnm5T7TkolQLAqk/Wft8mXRpBz//IqLeTgZhgKPh1fIBiid\nq82JTapsyHF6wx2Vq/nJRQZ4vbzCealRUpJM36wETmIlxJKSkYqEct8n+s4ZC20TEIRBZJNJ0Cz0\nmG6VTPNy7dWsDsl430dfJ/75TZggX+EtFOLw3ntBtLa6sHGjBxcuiAqFyyWGpRUUCJqzBUoOjOrV\nEKNRnnQ5Tux37twwDh92orvbgUAAWLYsdKtio/HbIQUFAsaNk6ofasPlgmx4n98v3hMtyH3nMlmB\nMJtRVAZqa2vBKbhm/uY3vzF8QARBZC8rVw7JTspypltWW1Z7JatDssl5WLkItDoUXrgw0k6a2PRM\nttHFiLQrM8rhjYKQGM548qSoLNXVDZmiDJw+LV9qWAlW1kale9/a6sKLLwLnz/six4qLBTQ2igUG\n1q/3oLd35HwK8dWOojJQX1+frnEQBGEDtMT8x7eNXl1LP+xy7ZWsDqxoAXkEBALacxHEU1IirsyN\nqN4nOTBK9+JHPxplQCw/m/Z2J5qaRp6P0wnFNMCZgOUAGPt8Yksiqz03qRw0wUbxG3TvvfdG/vP5\nfHA4HOA4DjzP49y5c+kaI0EQBmNmtkS1mP/4tseODeDKlSCuXAnivfcGmO2VHMb0eJA3NQ3qykUQ\nz9q14irUiHDECxe4yP2vrBzWkfc/Obq7HaisHMaKFUOYOpXHkEG+dkaOW6rmGP9upqJ8UeioOpp+\nAdasWYP33nsPn332GW6//XZ0dXVh1qxZePDBB80eH0EQBmPHbIksM3td3RDa252qVgpA+4Rx9KgT\n69d7mKWH9cHF3H+Ph11S1wj8fl6zBUQPRo2b44SE7I3SvdFn/Ykl10J8k0HT3T169Cj279+PRYsW\nYePGjdi7dy+GjFIpCYJIK9maLVFp3CzP8k2bQqpWCslKonVy370779a+tLHm9W3b8lBbm0LhBA2s\nWDFkyPZGPEaNm1UKetu2vFvFlpKDwg3V0WQZmDBhAtxuN7761a/izJkz+Nd//VcMiNUtCILIMrI1\nW6LauJOJ5jBjlZws3d2OiBf9r3/txs2b2pUNp1NAOKzcXiqLvHTpKNnPpToNep0B6+qGsGlTCH/+\nsyvGeS8ZWEWkursdSVliSkp4rF0r74NCxKLpyU2cOBFNTU2YOXMmWlpasH//fly/rh768f7776O2\nthYA8NFHH6G6uho1NTVYt24d+Fulr/bu3Yvvf//7ePjhh/HOO+8AAAYHB1FfX4+amho89dRTuHr1\nKgDg+PHjeOihh1BVVYUdO3ZErrNjxw48+OCDqKqqwokTJ/TdAYJIkWyrVqi15G860HrvWltdzFVj\nfr6AKVPEdMZTpvjQ0ODRfH32KtmczXuHg10REAAmTPBh9273rYlP+xjUJkqfD/jLX1yYMMHHbOt0\nAp2djlv7/8rjHEHAr37lxoQJvpQKIKnh9/OYPl3+/XS7xZLDcpahY8dEH5Rs+45mAk135KWXXsLB\ngwdRVlaGf/7nf8af/vQnvPDCC4rnvP7663j77bcxerSodb/88stYuXIlvv71r6OxsREHDhzA3Xff\njebmZuzbtw+hUAg1NTWYO3cu9uzZA7/fj/r6euzfvx+7du3C888/j3Xr1mH79u2YMmUKFi9ejM7O\nTgiCgL/97W946623cPHiRdTX12Pfvn0p3xiC0EI27r/rCf8zE633Tm31fu3ayJomFEJkz3nTpsRN\n7PgY9K4u1nrInImN59n9Rofa6S8TrDzeYBAIBpXXfnosEdHXNcZ3YqQ/OaR3U+492LFjMK6CZSzZ\n+B3NBJosA59//jlmzpyJ3t5eLFy4EGvXrkVpaaniOaWlpdi+fXvk71OnTuHee+8FAMybNw/t7e04\nceIEZs6ciby8POTn56O0tBRdXV3o6OjAfffdF2l75MgRBINBDA0NobS0FBzHoaKiAu3t7ejo6EBF\nRQU4jkNRURHC4XDEkkAQZpON++9Wydym9d6x2nk8Alwu+dVrc3PiBrNcBkMzw/iUKCnhI/ff4zE5\nhECV9F+f9dzkKC7mI1tATU03UFYGXe9tNn5HM4Emy8Bjjz0GjuMgCAKGh4fx8ccf44477lBcgS9a\ntAgXLlyI/C0IQiSBkdfrRX9/P4LBIPLzR7J8eb1eBIPBmOPRbX0+X0zb8+fPw+PxYOzYsTHH+/v7\nUVhYqCjTuHFj4HIpJ98YP14+A1k2YidZAOvI093NOu7UPMZMyLJ4MSJ14cXCL8bsmyvJ0tICbNoE\ndHYCgQDQ1SXfLv7ese5xOMzJZrADxNj5+LFE7SxmnEuXHDh/Xvw3a/sjfaRfIXr6aQ5z5gAvvyy+\nD6znCIj3auHC/Mh709AAVFVx0PreGvEdNRsrjEPTa/g///M/MX+fOHECb775pq4LORwjRoiBgQEU\nFBTA5/PFOCIODAwgPz8/5rhS24KCArjdbtk+1Lh2TdnnYfz4fPT19WuWz8rYSRbAWvL4/fJpZP3+\nMPr61P1qrCRLqijJEm+qPXmS3U/8vVO6x2fPOmST5ng8Avr6gjHHPvjAh0xMfHJMnMijr0/83WLJ\nZ2e2bwfuuusG/vu/RS1AKR1zODzyvpw8CVRXA59/rt2Slep31GzS+RugpHQk5fpZVlaGU6dO6Ton\nEAjgr3/9KwDg3XffRXl5OcrKytDR0YFQKIT+/n6cPXsWfr8fs2bNwsGDByNt77nnHvh8Prjdbpw7\ndw6CIODQoUMoLy/HrFmzcOjQIfA8j97eXvA8r2oVIAijoMpp2tATzhZ/75TuMSukLf54a6srY1sC\ncvT0OCJObLlaMTHaTK/3Hugx8dN3VBuaLAM74uxrf//73/GFL3xB14XWrFmDtWvX4pVXXsHtt9+O\nRYsWwel0ora2FjU1NRAEAatWrYLH40F1dTXWrFmD6upquN1ubNmyBQCwfv16rF69GuFwGBUVFZgx\nYwYAoLy8HI888gh4nkdjY6OucRFEKuhJv5vLsMICpXA2pXundI+lts3NboRCYvKb2tqbCc6DZsTW\nJxK9D66ueEj5ESorh/GjHwmWUlaU8Hp5DAyIY+U4wOGQohkSx19SwqOnh5OVLfqdkJ7xhg2eSJGn\nkhJB07lq0HdUG5wgqCeSjFcGxo0bh+985zu47bbbTBuY2aiZZXLFfJuN2EmeXJGFZQYOBMKaK9Sl\nwuTJPtU4/HhKSwE9WdeLi3k0NoYSiuWwcLkE9PaKWxkzZ3rR02PtPA8STqcAjhP3+aU6dnl58jUO\nAoFwpHCS3GdtbdcVqwxm+r1JB1m1TVBcXIxly5ZF/nv00Ufxpz/9ybABEkQuER3zXFYGw2KerRxL\nzTLVsvLQG00yORR6exGJunA4JK9/9tqpp8eBJUtGa068I42ptdVlAUVAQEmJtnskOm5yECskiv+x\nih11dzsUzfRyER5LloyOvAdz58rHLc6ZY2g8IwGVbYI33ngDwWAQLS0t6OnpiRwPh8P44x//iEcf\nfdT0ARKEnZBzpDMi5tnqsdRypto5c8LMPPRGj1lfiWCRQGAkbn3JktGG1wyQJrT0bGEoEwjwphRJ\n8vt5RTP9/PljZM+TtlAOH5Z3Kmxvzy2Hy3SgqI5+6Utfkj2el5eHn/zkJ6YMiCDsjFkxz9kQSx1f\nzZD1Q2/GmOVyK9TVKTuQPfec+H+zshRKE5oV0kDPmRPG6dPGj0Ny0pOrZNna6mJeU7on2Zo6OxvR\n5DNw9uxZhEIhBAIB9Pf344MPPsA3v/nNdIzPNMhnIHvJZnlYe9fR+8dW6lcPWp+LtEcsTgSZHXNr\nqwvbtuWhq8sBt1vMjV9UJIDngcuXHfD7w+jqYuXqF5BKqKIkp1JYXTooLORx9aoxk6vHIyAcBtNJ\nT3r2Z844FLMxSj4B5DNg/LVYaHoDWltb8bOf/QwAcOPGDezatSsmuyBBENowqy6AleoNKNHQ4Ins\nEbMm0mTGrOQvwfosemKaNo3Hq68O4rXXBnHhggO9vWJhHKUshZwBzv+trS7mvni6GCVftygpXn11\nEL29wUh1xOh7Hu0foKQIACMWBQoLTB+aLAPf+c538Ic//AFOp6ihDQ8Po7KyEn/84x9NH6BZkGUg\ne8lmeVh59lNNB2xWv3pQey5aKwTqHbOS7IB8Pvu6uqEYfwWJoiI+5cp7eiku5jPkQCigqWkQS5eO\nYkRaCCgpEbB2bQhHjzpl75eExyPg1VcHI+Z/uXuuTU5xTPG1KaL9DdaudWLhwuz8/suRVZaB4eFh\nDA4ORv6+yaozSRCEIvF712VlxkzYVqk3oIQWR7mSEp45ZtYKn9XvkiWjsHy5/LL3jTcSaxcAMLXy\nHgsprj4T/Nu/eVBQwF4P5ueLn23aFLqlXMm3DYWA5ctHYdIkH/Oea5EzEEh8/vH+BlVVI59ZOYIm\n29BkGXjjjTewZ88e/NM//RMEQcD//u//4tFHH0VNTU06xmgKZBnIXuwkTy7JoiXWn+UvoLzaFMPc\nCPOQFEuz/Rskaw4r7wAw8p6x3gmHQ8C0aYnnWZWssgxUV1fjwQcfhM/nQ3FxMR588EH09fUZNkCC\nIOyPFl8AVhvW6l80O5MiYDZShIcZqZMdjhFLFgDFvAPRsN4Jnlc+j5BH052qr6/HjRs3cO7cOZSX\nl+Po0aO4++67zR4bQRAWQSlLnNbzJk5UD8VjOYZRKFlmke5/dM6Azs7UFTGHQ8ClSyOWILW8A3Jj\nUkLuPEIeTd+wDz/8EL/5zW/wrW99C3V1dXjrrbdw5coVs8dGEIQFUMsSp/U8yTGvpISHyyVmvCsu\n5jX5OFgtKiLXiL7/0h6+FqRVf1GR/PObPj32uJ68AlreCVIitaPpTn3hC18Ax3H4yle+gjNnzmDi\nxIkYGqLQDoLIBZJNaMQ6r6BA9As4dmwA7703kJCIRs4hLFcr+1mFaIuN9Iy0MH06j7a261i3Tj59\nY7wlSE+IrJZ3gpRI7WjaJpg6dSo2btyI6upqrF69GleuXKGIAoLIEbq6kssCpzd7XEODRyU9cWrm\n6fiEOGrhcunC5RIwPAykZnIX4HCIk+/FixyuXUt9RcxxAu64IzZ5kNbwUInOTgcmT/bB7+dRVzeE\n9nanYuVAVtpoue2j6Heiq0s+iRHlI9COpjfmhRdewLe//W187WtfQ319Pa5cuRIpK0wQmSaXw4vM\nlr2hwcNMuqO26tKzymttdTEnZskCIZmni4qSSwMcCgFTp/KRCaK5WT68MN1IRX9SwXXrsQsCcO2a\nMQ6VeXmIWGwk9Kdm5iJbS7t352HFiqEYS1A8ekNkpXfi0qWg5UNrrY6m0EI7QqGF2Uu0PFZItpMK\nqTwbs2VXWwXGXydeFj3jUwpZiw83zKZyv+Yg/WSbHUUh4MqV2DBPVngoxwlMpTGakhIex44NpDQq\nO/+epeNaLHL5G0XYgGwo0GMWZsuulCTI4RASssSVlSHGQqFnlae05RBvSbh0KZ2hhFZcK6UrrwIX\nk7p5/vwxCDMyJ2tdUl64QGGgViV37KmELcnlqmZmy67UT7QXeKwFgEvY69dipfD7eaZloKvLgfnz\nx0TCGZXaEsYiKZbqfgI0yWc79v/FJGxNthToMWNv32zZlfqJdswywkKh5Bken0RG3YvcyNV8bk9y\nnZ0OLFliXCWj4mIrWloIgJQBIsvJhqpmycbpq2G27Kz+6+pivcCNsFBIWwrFxTzEyVx+0pCSyEjb\nDxwn1y63J3BjMXZLorFRPsSQyDykDBBZTTYX6Ellb1/K7MdxAjweISalq1Gys+7tpk2xP+jJWiji\nrSVHjzqj0gvLT0DRmfDa2q4nJK2xPmatjLX0K8DlEsBx4v8lpUv8t5HjEP9zOkf+XVzMW+57ScRC\nPgNE1qN1XzpTGL23H++lH7o1N8vFbaeK3L2NT008d25Ydg9fyUIRL8Pp005NfgCTJgkx12c5tFkX\nM6wW6pN5fT2wdu1IZEBDgwfNzW6EQriV48AY6upuJiiLciSb3jrdZMs4jYBCCxnYKXzFTrIA2ScP\nK2wuEAjj1CmnblmU+tOaJjZZWOGCdXVD+Nvf8tDZKTATykRjdvU7IpayMuC//1t8z+KTO+lFTJKU\nqNSMG8fjzBn1sMFUQ2LT9f1PV9gyhRYSRI5g9N5+JiMoWFse7e1OvP8+FBPKRJML0R5WorNz5N+p\nJluaNEl+/fiTn2jzB8iWcOBsGadR0DeSIEzGaL+GdEVQyEVAJKOIyPXDmlAIcygqGvl3iDlni74n\nkg8Ka/vh0iUupfc5W8KBs2WcRkE+AwSRBoz0a9CTvz1Z5Pb0lywZjeJiHj09iSZiURFJNPuz+hk3\nTk1xEeByQdYcTejn4kVEEkF5PPIKgXS/2cqCyPCwuGpOdv+clSfCauHA2TJOo7CnikMQNsZISwMr\n/4FS9kE5WIoIqx+1/PlNTYOYMIGsB0Zx8yYi4ay1tfJF5vLztd7v1MJjsyEcGMiecRoFKQMEkYVI\noXVayv+yUMp/wDKFXr6sbCKOHsPdd3tx+rS+nxi3W0BREY+lS0eht5elMFhRSUhmTGxTfHLnqPe3\ncaMHmzaFUFc3BI9HbO/xCKirG8Jnn+m3wiSzf54N4cBA9ozTKNIaTfCf//mfaG1tBQCEQiGcPn0a\n//Ef/4ElS5bgy1/+MgCguroa999/P/bu3YuWlha4XC48/fTTWLBgAQYHB/Hss8/ik08+gdfrxebN\nm1FYWIjjx4/jpZdegtPpREVFBZYtW6Y6FoomyF7sJI9RsiTj+awUlSAI0B2xcOBAPqqrtY5YQPJh\ndqmcaz08Hh7Dw5xsAaB4XC4BEycKKRRqGik+FB8219Xl0FRsKH480UWk0hGKZ6fvP2CdaIKMhRau\nX43uJ2kAACAASURBVL8e06dPh8PhQH9/P5588snIZ319fXjyySexb98+hEIh1NTUYN++fXjzzTcR\nDAZRX1+P/fv347333sPzzz+PBx54ANu3b8eUKVOwePFirFq1CoFAQPH6pAxkL3aSxyhZtIYbJsbo\nJ/74u1wCdu4c1K1cLFyYj5MnkxYB48bxuHaNjJXmIioDahUptRL9ftkxFC8dWEUZyMg37+TJk/j7\n3/+ORx55BB988AHa2trw6KOPoqGhAcFgECdOnMDMmTORl5eH/Px8lJaWoqurCx0dHbjvvvsAAPPm\nzcORI0cQDAYxNDSE0tJScByHiooKtLe3Z0IswgKYUQMgG9Di+Ry/LcBaXfv9fFIm0g8+SEkEVT8C\nYgTRAVP/Ok6qDaDXJ4SF0TUqiMyRkV/KpqYmPPPMMwCAsrIyPPTQQ7jrrrvw2muvYefOnZg+fTry\n80c0GK/Xi2AwiGAwGDnu9XrR39+PYDAIn88X0/b8+fOqYxg3bgxcLuWkJ0paVLZhJ1kAeXlaWoAl\nS0b+lvbACwqAqqo0Dk4nRjybQACyq/JAgIv0v2OHtr7WrnVi/Ph8LF4MLF4sHXUCYK8kW1p0DZcB\nKQNaSdaC8rOfOTB+fD66u1MfQ2kpsHjxyDvB6rO722n4708u/J6lm7QrA59//jk+/PBDfOMb3wAA\nfOtb30JBQUHk3xs3bkR5eTkGBkYyWQ0MDCA/Px8+ny9yfGBgAAUFBTHHoo+rce2acqY2O5mi7CQL\nwJZnw4YxkAtv27gxjIULzc3MlyxGPZtly+RNtM88cwN9feJqvrPTB/kJVwzjkzIHLlw4jL4+9rXk\n0hGnktFOoqSEx4ULtE2gHXXfCY9HQDgMFBVxCId5PPYYh9WrBXBc6gWILlwQEAjwkfdg0iRO1pfB\n7w/jF78YMsyXIFd+z8y6Fou0f/OOHj2Kb37zm5G/f/jDH+LEiRMAgCNHjuDOO+9EWVkZOjo6EAqF\n0N/fj7Nnz8Lv92PWrFk4ePAgAODdd9/FPffcA5/PB7fbjXPnzkEQBBw6dAjl5eXpFouwALmWJCQa\nLWZ9Vnx0IMBrzhwoF4GgTRFQ93Rfu1b0cieM49VXB7Fz5yDOnQN6ehwIh8UJ24j8DVJpaek9YDk1\nzpkTNqVqJ2EsaX8aH374IUpKSiJ/v/DCC9i4cSPcbje++MUvYuPGjfD5fKitrUVNTQ0EQcCqVavg\n8XhQXV2NNWvWoLq6Gm63G1u2bAEgOiOuXr0a4XAYFRUVmDFjRrrFIixAriUJiUctsZERyYqS3WtW\nTiAkoKlpMDL+2bPD2LZtZBV5+rR+L/dcgOMAZfdvAUuXjoJLw6+8xyOgtvYm/vIXVwqRCkBxMY/b\nbhMiz27FiiFFXwK7hullI1SoiIGdTFF2kgVgy5Mub2YjUXs2WkO19LTbuNGDCxfEybWoSMC6dSHV\nPidNEiAIuBX7n8zEzDZpc5zYt8slJr75/HMuRgYqasTCuBBLh0PAtGn8rbwQyfcZH2oIAJMn+2TD\nJuXaaiFXfs/MuhYLstMQtkGc0G7ErCrNKOubLlipfIFY5UZrO4noffneXk5Tn3IpiI1CWvUPD49E\nFETLwLJoEMY9E8nknypyVrhct9hlC/bfTCVyCrnMfNmK1lAtPSFdqfaZPMlNXEuWjMLWrXm3suUR\nVufTT7mEsN5cS+ubrZAyQBAWRatDJKtdZ6cj4Yc51T7Tj7hiDYXIZyBVPB4BLpeAkhIexcV8xNFU\nrFCozIIFwwnOqdEOqyUl4iq/t9eR4CSYa2l9sxXaJiAIpCeNql60mldZ7QAO4XCsyV1rn5MmCaZu\nDRDp59VXB2XfabZPhhg6qLTVJh2fP3+M7OeSk6CRVTsJc7CK+k8QGUOpYE8m0WpeZbWLZ9u2PE19\ntram5lFOWJOjR+V9AljvRFGRoNnnJpfDeu0CPSki57FqGlWt5tX4dqx4/u5uh6Y+16/3mCkWkTSp\n+U00N7tlj0vvhGTql+jtdWhWilnOgOQkmD2QMkDkPFZY1bBqKmh1iIxud8cd6j/Mn37KYXhY9CvY\nsMETuV5Dgwe9vUpyC1BLIMRx5OxnRUIhMCf2ysph5OfLPzctSjE5CWY/pAwQOU+mVzVGb1Mo/TBL\n1xInfDFnQE+PuAKcMMGnIZsgF/WfPJQgyCxSva+c4nuVilJMToLZDykDRM6T6VWN0dsUSj/MyiGD\nyU02oiVAAEc6gEVQtsyw3qtUlWI7hfXmIqQMEDlPplc1SisytZLM8Z83NHgwf/4YLF06CoIA7Nw5\nGKk3L3qNG/+VFy0BnEpqXCJdNDUN3qrxwPYdkSPTSjGRWSi0kCCgntffTFjhfpMmCYqZBeUyD0b3\nI7U/enTIkKqChLXxeAS8+uogAODwYXY2QdZK324ZPAl9kGWAIDIMa0XGM6yzkplXa5ZAlhc5YS/C\nYfH/kv8Ja9tHaaWv1dSvZrEisg9SBggiw7C2KS5flv8xl8y8WqMdQiHDhkrohrV3oh6VoRe/n1dU\nEI3a/rJqXg4iNUgZIAgLILciU3Po0h7tQJ59mYN97wMBHh4DUzqsWDGkqCAaZfJnKRwbNhibn4Ks\nD+mFlAGCsAByP3ys7QOpGMylSzTJZy8cOjuNq7lQWMgrKpAADFu9sxSOnh6HYRM2WR/SDykDhK2w\n6mpCaVysHz4AMdsHhYWxxWCuXaOvLyFy9aqoVKilpjYiq6aSwmFU1k6rZgW1M/RrQtgGq64m1Mal\n9MMnbR/s3DmIq1fp60ooI/mfKIUVpqowKykcRmXttEJW0FyD7ixhG6y6mlAbV1eX+g+f1sgBIjcp\nLh6Z/Csrh5kpqSdOFFJWmCsrh1FcbG7WzkxnBc1FSBkgbINVVxNK42ppYafvjf7h0yPDggXSj7Xx\nHutEplB+hhcvcjGrfK2VLCX0KsyNjfIhKkYlKKIESOmHlAHCNlh1NaE0rk2b2OdF//BNmqR9Qn/n\nHRcaG0O4ciWIK1fYhYuI7KGkRIj4jzgcAjweIaYgFM/HrvLjw1XLykT/E5bTqV6F2eysnZnOCpqL\ncIKQm0lE+/r6FT8fPz5ftU22YCdZALY88Rn5JMz4EWltdWHr1pFMbStXssO2lMa1dOnoSLKYaBwO\nAZcuBSN/3323V6WaYCyBQDiShph1fQIYWXGnKzJDgNsN3Lyp73py7/DMmV709CS+E9HPXkL6zogp\nqROzE8qdY1Vy5ffMrGuxIMsAkbXEO0IBSMtqQq+jotIqJxCQv4bbHVtulpWAiEW0H0Jl5fCtXPUs\ncnI9cAvlCoxmXE+vIlBXl6hotra6ZBUBQHmVT+Z3ggVZBhjYSfu0kyyAKM8vfnEjbVaAeFirq5IS\nHvn5giZrgcSBA/mormZ/LsnDuqYS0fcimfOJzOJ0Cti1a1D2HVJ6niUlPI4dG4g5Fv0b0Nrqyur6\nA3b8PbOCZYCUAQZ2euHsJAsgyhMIhDNm7pw82YdwWNvqTk45id5iCAQ4fPGLw2hrc8o6EkryJGPq\nj74XEyf6mI6KhLFwnGDIvXa5BPT2BmU/U3oHi4t5vPceWxnIduwkC2AdZYC2CYisJJORA3ocEuO9\ntOO3GE6eFB3+WJNHZ6cjsgWibOqXP3fCBB8mTCBFIJ0YtbxSes+UPtO7pUQQACkDRJaSycgBPWFb\n8cqJ/nwBIz4Jb7yht/ogh/TviRNG1RtQ2sdXegczHT1DZCdpVwYqKytRW1uL2tpaPPfcc/joo49Q\nXV2NmpoarFu3Dvytuq179+7F97//fTz88MN45513AACDg4Oor69HTU0NnnrqKVy9ehUAcPz4cTz0\n0EOoqqrCjh070i0SkQEy6Qgl5xBYVKRNOUnFcjE8TJO6tZA3AdTW3lQ5h2064DgxbNDhELB1a56i\nUyrLUtTV5bBUKm4iO0irMhAKhSAIApqbm9Hc3IyXX34ZL7/8MlauXInf/e53EAQBBw4cQF9fH5qb\nm9HS0oJf/vKXeOWVVzA0NIQ9e/bA7/fjd7/7Hb73ve9h165dAIB169Zhy5Yt2LNnD95//310dnam\nUywiA6QzDlkufWt8lcF167QlYTFj1cZxAhYsGEZuRwVkghHlzOEYeQc3bQrF5ABIPEdeqVuwYBiC\nwCEU4mLyBjQ0eGTTB2/aFIrJPSARn3OAILSQVmWgq6sLN27cwJNPPonHH38cx48fx6lTp3DvvfcC\nAObNm4f29nacOHECM2fORF5eHvLz81FaWoquri50dHTgvvvui7Q9cuQIgsEghoaGUFpaCo7jUFFR\ngfb29nSKRWQIubK/RqM1jFBJOWlo8KCoSNy7P33a+K+cIHB45x0XvF5SBjLF9OmiV/7WrXmYPNmH\nPM27QSPvCish0O7decz3T/oOTJsmr2RmOhU3kT2kVW0cNWoUfvjDH+Khhx7CP/7xDzz11FMQBAEc\nJ34JvF4v+vv7EQwGkZ8/4vXo9XoRDAZjjke39fl8MW3Pnz+vOpZx48bA5VIOtVLyvMw27CQLkLo8\nLS3Apk1AZycQCAANDUBVVWI71q7TkiWjsWPHyHktLWLbM2eAoiKgv9+JpUtHo6EB+OSTlIaqmYEB\ncgHKFF1dzphoD7lEUnK4XBxOnXICGI2lS7Vfb+fO0Vi8eOTv7m75dt3dzsh3xU6/AXaSBbCGPGlV\nBr7yla/gS1/6EjiOw1e+8hWMHTsWp06dinw+MDCAgoIC+Hw+DAwMxBzPz8+POa7UtqCgQHUs164p\nh5/ZKXzFTrIAqcsTH6Z38iRQXQ18/nniNsOpUz6wzLrSeQcODGH37pEVWLQuqlURKCzkb5WhJb8A\nayNA7hmJEdqJxz0eAaEQZD8DAL8/jL6+67f+rT0XRGengL6+kbBD1rlS/3b6DbCTLECOhhb+/ve/\nx09+8hMAwOXLlxEMBjF37lz89a9/BQC8++67KC8vR1lZGTo6OhAKhdDf34+zZ8/C7/dj1qxZOHjw\nYKTtPffcA5/PB7fbjXPnzkEQBBw6dAjl5eXpFIvIMvRUN3RrcOBvbtbr5Z+IWJ6YFAGrU1cn7xzI\nCt0Mh4GmpkFmf9E+JXqiVOJ9TyizIJEqabUMPPjgg3juuedQXV0NjuOwadMmjBs3DmvXrsUrr7yC\n22+/HYsWLYLT6URtbS1qamogCAJWrVoFj8eD6upqrFmzBtXV1XC73diyZQsAYP369Vi9ejXC4TAq\nKiowY8aMdIpFWBi5GgJ6chQMafgtDcn7DhI2w+EQsGlTCLNnh7F8+SiEQurKm9/P37I23cCGDR70\n9IjnlJQIWLs2FGOJktpFZwecMyccY3WSiJ/k5c7NtsyCRGahDIQM7GSKspMsgHZ5WFn7iot5zQVe\ntKXxlTcRE/YiOs2v1iyUxcU8GhtDKU3KRqQPttNvgJ1kAXJ0m4Ag0oneBD9yJlVtpltSBHKBCxcc\nES9+VoioyxW7turpcaQc4peOqBmCIGWAsC2s7YDLlznNOQriQwaLi3kUFvLQE9Pv9VJGOLsg+ZWw\nlMSJE+XfCzl/FLn8FQSRKUgZIGyLUspiPaut6LaNjSEVZz8hQcm4fp0sB3ZBUjBZeSVYuQLiFVO9\nZbAJwmxIGSBsixke1mpbDx4PYpQMgO1pTmQf0QqmnEKptWaGnogWgkgHpAwQtiLa9Lp1ax7q6oaY\n2wF6zLRSW7UMgmPGCDH96C9MRFgZJUWytdWFzz6TV/w+/ZSLeS8yWXWTIOQgmxRhG+KjB06fduL0\naaesP4BcW/HvxLYNDR7Z8C45rl1zxPRDP+5WQtrPl5uwBTgcgMMBDN96/F/4AodRo3hcvsypevGz\nIlckentj3wu/n2ckCTLOvyQ6rDYQAJYtc5HzIcGEfqkI26DH9Mpqu2TJqBgrQWurS7MiIHdNKidr\nJZQzPPI8d6sypPjfJ5+IzqbDw8DZsw4cPcoOMd2wQVvd4uXLR6G11WV6kqB4n4STJ0E+CYQipAwQ\ntkGP6ZW9Yo915krWzC/1P3euxiT1RIaRVxIk5SAU4rB7dx4aGuQnfSmZkBqhEBexIJhZdZN8Egi9\nkDJA2AatzltKbaOREr0kw/CwmLDoL3+hlZidMCL1NCC+W5ID4s6dgxAEYOnSUYaFGJJPAqEXejMI\n26DH9KolmVB3twOTJiWboFO0MMhlOiSyF1bq6aIife+JNCmbFWKoRzEmCICUAcJGsGK/1ZIJsRII\nhcPAp5+aPGjCRMzItM7JTtTr1rEKVMiPQZqUzTLnU+EiQi9kwyRsRWXlsOq+a7SXtbjyl9/vFQQO\nAwOUIyB7MefZbdzoSXjHWIWCAMhGGUifmWXOjx9PIMDhmWeM80kg7AcpA0ROER8CptXxi7APDoeA\n6dN5dHU5wHGiBSgW5XdCqlEgpxDIT7bsaoJmhhhGj0cshkOKAMGGtgmIrEdP8iBKAkRMn86jre06\nXnttEH4/D6cTuOMOHk1Ng3CqFai8hVYzvmSFOnPGgalTE3MVkDmfsApkGSCyGj3Jg4Bkza9Uojjd\nLFgwjMuXuZjV9NGjTtWcD06noFpaeMWKoYREUtJ7I5a3Vn/WWt4jLe8ma3uBzPlEuiHLAJHV6HXA\nSs78SoqAmSxYMAyPRwAgwOMRUFc3hP/4jxuRvP8rVgxh69Y87N6tHtb3xBM3ZY87HCMOpQCSSiQV\njZb3SOu7SSWKCStAlgEiq2Gt0Do7HZg82Qe/n8fKlSMrrblzw7J7tOPG8fjsMw48TxO/+QhwuaBp\nFawtFbSA4mIBjY0hVFYOY/bssOJKe/78McyeLl/mUFc3pHpNLWZ8ivUnsgl6K4msorXVhbIyRPwD\n2HkAuJi47bvv9qK11YXDh+U3hSdPFjBtGsVgpwstq2CtqaADAR7vvTcQY3pXWmkrTcZ+P49Nm0Jo\narqBsjLA5RJQUsKjuJjXnSlQb6y/Ht8XgjAaetuIrCF2D5aTXeGzkArFOBzyykN3twOCGWHphAyc\nrDd+PFqdPfU627E8+KP7qqwcxuLFQF9fUFff0axcOaQYVhiNXt8XgjAasgwQWQNrcigu5iOJhtQS\nzbgZ287Dw4CLVOO0ocUbX82cXljIJ5XPn+XBX1dnrOOeniRYRicfircytLQk1Q2RQ5AyQGQNrMmh\np4eLhG6ppYW9Ke9fBqkYDZEeursdqmZxNSe9q1cd2LDBE3O+VlN7UREPUXEU4HIJ4DgBhw87DTfN\na3UONNK/QC7FcXU1aNuBUISUASJrYE8OI/4Bvb3Kr/T06bxqGmLCfCZOFFRz8mupH9HT44g5X61P\naaIU3xOxIuHwMAdBMK4uQDIYWUuAKhYSyUDKAJF2knWU0jI5qPHZZxyWLh0FQQA4MgRYjugJSzKz\ni2GHybNhgyfyvi1fPkrXGNKFkcmHKIqBSAZ6O4i0kkqVNmlyKC1N5srihBK9khQE0gbSy8i++aVL\n8vc+fsKqrBzGq68OpnTVnh5H5H3TshWUiUlTj3+BGlSxkEgGUgaItJKqCbOychi33ab/umQFyDyB\nAB/ZN9czYVVWDqOuLn3peTM1aRqVfIhSHBPJQMoAkVZSMWFK2wsnT+q/LlkBMk/0ZKQ0YcltI23a\nFLrl9JfecWYjclaGPXtAIYqEIqQMEGklWRNm9PaCFjhO9BQX/09kHgHLl4/CpEm+SAZAObM4AOY2\n0uXLLIVu5PzoPktK2O+UxyOklFDI6sRbGaqqMj0iwupwgpC+VCs3b95EQ0MDenp6MDQ0hKeffhqT\nJ0/GkiVL8OUvfxkAUF1djfvvvx979+5FS0sLXC4Xnn76aSxYsACDg4N49tln8cknn8Dr9WLz5s0o\nLCzE8ePH8dJLL8HpdKKiogLLli1THUtfX7/i52LJT+U22YKVZIlPriKh9iM8f/4YXUmGCKMwr0iT\nNPlv2OCJFAdyuYDh4cTrBQJhCAJk34FAIIy2tusJx5XeGS2T/oED+diwIRxJaxyd1jrbsNJvQKrY\nSRYgvfKMH5/P/CytMTRvv/02xo4di5/+9Kf49NNP8b3vfQ/PPPMMnnjiCTz5/9s796ioruuPf4eZ\nYVAeBqIYBEmNzcQQSxSJ1fhaLmJMuowWlQawGKsoURM1qUSlijFQ1CS64pNgSbNS0oL4IF0raR5t\n/SG1GGOwaBTBhiqJIIhihBl1Buae3x+TGWbg3nkxd5jH/qw1a8Gde++cfc+55+yzzz57L15sPK+1\ntRVFRUU4cuQINBoNUlNTMWnSJBQXF0OpVOLll1/GJ598gv3792Pjxo3YvHkz9uzZg+HDh2PZsmWo\nqalBTEyMK0UjbMTRLG3CywiUUVBcxHu2eiXAvF67BJrBpUt+2Lfvns0R/QzX8OHnx6y2N73SCgB6\nZYIiAhLejkuXCZ555hmsXr0aAMAYg1Qqxfnz51FeXo4FCxYgKysLKpUK586dw9ixY+Hv74/g4GBE\nR0ejtrYWVVVVmDJlCgBg6tSpOHnyJFQqFbRaLaKjoyGRSDB58mRUVla6UizCTuxxlDKsH+t0QmeQ\nItC/MJMPYE/sBltSBRtQKjm7Pe6Flp7kcusBeGivPuFruNQyEBgYCABQqVRYtWoV1qxZA61Wi6Sk\nJIwePRr5+fnYt28fRo0aheDgYLPrVCoVVCqV8XhgYCA6OjqgUqkQFBRkdu73339vtSyhoQMhk1k2\nO1syqXganihLSQl+nJ0R7ov5gH7//RLcvOnYtZZISJBiyJBgLFsGLFtmOCoF0NtSYCA7G0hJ6X1c\no5EgI2MAQkIguJZ+6ZLQcalHvkuAZ/YBQniTLIB7yOPyUFvXrl3DypUrkZqaiueeew7t7e0ICQkB\nAMyYMQM5OTmIj4+HWq02XqNWqxEcHIygoCDjcbVajZCQELNjpsetcetW7zVGU7xpXcpdZCkrk2HL\nFgWamvSDgGnaWT7eeGMgDGbankRGcj/OLMkyIA7Wll/4vx8wgIOtBkd9Hdp27j//qUNrq+V3ticJ\nCUBBgQyrVgXwxhfIydEhIYH/nkolv7+BUml/OdwBd+kDnIE3yQK4j8+AS5cJbty4gcWLFyMzMxPz\n588HACxZsgTnzp0DAJw8eRKPPfYYYmNjUVVVBY1Gg46ODtTX10OpVCIuLg7Hjx8HAFRUVGDcuHEI\nCgqCXC7Hd999B8YYTpw4gfj4eFeKRdgAXxjYxkY/iwGHhNd88eMgQoqAeDj2bJubJUZTvlCGyMhI\nfUjo7GyNzfd1NBBQYmKXRT8EIWivPuFruFQZePfdd9He3o79+/cjLS0NaWlpWL9+PfLy8pCWloYz\nZ85gxYoVGDJkCNLS0pCamooXXngBr7zyChQKBVJSUvDf//4XKSkpOHjwoHHXwJYtW7B27VrMnz8f\nMTExePzxx10pFmEDltLRCq3DCq35+tOyrRvArywY1vbLy+/gkUf466+xUWJsDwUFd3/cAtidNEjo\nvo7iyHbWxMQuFBfDKREBTXE0FDdBiI1Ltxa6E7S10LVERARBp+MfQPz8GJqbe+eNF9qG6OcHcBRZ\n1S0xHTAt1Tnf+YDjW08tYcs9y8pkeOcdf7NthMuWDXDqeyOGbLbiDn2As/AmWQAfXSYgfBdLszCO\nkxjTz44dG4jw8CCEhwdhyxYF0tO1vWZnjz3mwoL7ON3Be3ruGugJ6xXl7oEHrM8zelqFnBmj39Z7\nCuXLKClx+Cd5oR0KhDtDlgEBXK198s1MnDVbcAdNWmhWZEAmY7zBZoDeM6ecnGDs2eP0IhI89LTa\nCAfyYfjZzyR46aXuuhozJtBqSmmZjKGpqbdVyJUIyRQbC/zjH857b4QsJa54Bu7QBzgLb5IFIMsA\nYUJfMvl5CobZmdDMUkgRAIBVqwIQERGEsWMDMWZMoAVFwNLMlXCEUaO6LTplZTLcvi1UTxJ88w3M\n2q1w+OBu+uIL4Kz1dyFHwpoah4vGC2UTJNwZUgbcAF8xHyYmduHRR+3v+DQaCXQ6/e4DSzNNPz+A\ndhg4F4P3vPluEMtkZARg2rSBGDrUumLmqHe+MxVoocG4qwtOdfKjHQqEO0PKgBvQl0x+noZQh+gM\n5HLRbu2TTJ/ehXfe8UdERBBWrgyw40r94GxNcbAlLLAQzlSgLbVJZ1rpxPCHIAhn4T12aA9GqeQE\nApx4n/nQkJtAKBBMX9DSBMup/N//9b17iIri0Noq4a1r0yUIe3GmAm2aL6Omhj9+xa5d/k4ZtBMT\nu2jwJ9wS75t6eiC+Zj5MTOzC7t33nHxX1qfBxXvRz0CHDeufZ9PcLBGs6yefFEw4YRWhnQq27GDg\nwxAbQSoQodwbrXQEYQq1cDfAm8yHQk5dPY8DcPoANWmS44OLt1JQcA/l5XewebPt0f7sISyMQ0yM\nDkKOm4YgROnpvRXbwkJ/h83vQnug+ro3ipz8CF+FthYK4E3bV1wli9D2wcBADmp1b71TImFgjBz+\nxCI9XYu8vG4loKxMZtEU7ggGpdVaQB2h7XsxMTqUl9sf61+sbXr9GRhITKg/c19oayHhdQg5dfEp\nAgBIERCZykrzwdeaKRzQO/XFxOh4Z/KA3hJg2MLZ07IzfDiM3xnyDxgGUGc7yYo1gze30sGjrXQE\nYQ+kDBBOg9ZV3Qu++igrk0EmYJmPiuLQ3KxCefkd5OVpei1dpadr0dbWnWiqqUmfaCorS4GMjAHQ\nZw7vTkJlitAg7egav5h+NgalqbMTKC+/47WKAOVJIEyh3tsDcdeX2JFZmWEmSsGCnE/P+jCYwIV2\ncWzaZO5XYBgUm5pUWL1ai6Ii/r2bQsdNt/kJDd5Xr/o51H69yc+mP/CFQGeEfZAy4GHY+xKXlckQ\nGwunKQ6WHATb2+03+48axaG8/I5DwYgIy/ScJQst4ygUjHcgNdT1Aw8EWVQiNAK+iTU1fsY2kpjY\nJegw6mhwLVNlxZtn8GLgK4HOCNshB0IB3NVJxVZHrLIyGbZsUfAGftGHBYbduRCEnKsUCg4ajWN6\nZXq6Fv/+txS1tX4u8CEwNHVf8FVgiIxkaG6WQKnkMGmSDoWFcvDJzud0Zy2XhCkKBbMaM2LYw4mi\nMwAAFVhJREFUMA7NzRJwXP/E5hdCKCdIWZkMe/cOQE0Nc3qukP6gZ3/Wn3kS+oq79s2O4i4OhKQM\nCOCuDc6Wl9haRx4ZyfVa0wW6B2YhBUE4SY39REZyePbZLhQW0kykv+Hz6LenrtPTtX2qR0d3FPQV\nofdk+vQu3oBLnrwM0bM/c/buDlfirn2zo7iLMkDLBB6GLV7UQiZAA42N/LO4wkJ/i8sPznQQzM7W\n4N//do5iQfQNPqc7W+rasLxgcDaMjQUc8f3or+BaQu+JUORFV5vQxfQN8rVAZ4R1SBlwI2x5+W15\niZ05aJt2gLYknrGVnBwF7T5wAvqtfo7C7ysA2OYMunv3PeO1iYldOHsWVn0/JBJms9Of2I6y9rY/\nV7ZXsR38yAGT6An1xm6CrS+/LS+xtY48MtL2Qd20A5Q4can96lU/p97P+7AtHfPWrfpZuURiv6IW\nE8MJdv5CSqdh94fQwGEtEZW/P2xy+nPmYCikVNi7+8WVUQhd4eBHDpiEKaQM9BFnzV7sefmtvcRC\nHXJUlD4QTHa27aFppVIYZWpudu7o3dVF2oAwEgg7OpoPyI524pZMwkJKpyEOgdBvGq4TUmQ6Oy2X\nyfA+ZWTwZ0m0dzC0pFTYm0HTlSZ0X8pkSrgH5EAogC1OHc4MXeps715D6NlLl/wQEyPBypXmOwiG\nDmXw8wOuXrU06HQzbBiHpibbziXExT6HPwaFQp8UqKVFYnQOXb3a+d7xpu+MIw5qtu1gYEhP77To\n6GqKtXKYvidKJYcnn9TxOkP2DO0sNs528PMmpztvkgVwHwdCUgYEsKWCnPnCiundO2RIMA4cuMvb\n0cpkjGboHkZoKIdt2zRmA6AtA6nYa8Km74wjinJfdqsI7YRxRMnuVhCkUCp1oihOQr9rqqwLbQt2\npCzeNIB6kyyA+ygDZHPqA7aa8pzlGNgXtmxR8B53XBGwbU2bcD63bvkZTd2GtrViRQAiIzlERhpy\nB/TGFhN7VpYCw4cHITw8CMOHByEri7/dWMIwqEkkDAoFs+pnYKAvJnChnTCO5DDoj3DEPZczDIpA\nVBRHDn6ES6DYk31AqeR4ZzKmHU3PGZKhowLMX2z933fNTJbOnJHoTfzOhKwJ/c0bbyjM4kUYtozq\ns0H2Pr+mpjv0rz4glf58qRTQGbM/d9erRgOjyTwvT2MxQI/+OBASEohbt/zM7gEAt2/r7yt0D0D4\nfXKUXbv8sWaNltdC4W5b6IR8hkJCGM6cUbu4NIQvQssEAjjLZ8AdgnsMGRL8o7c5DeCeAUNYGENb\nmzUfDaE6dXZdM0gk/FkmhQL02MOwYRw2b9ZrDbZGPbQFw1JAT78AW5VsV5pvxY4I6E2mdW+SBaBl\nAq/Alm1+7uAVXFICwUx1hHvSnR3QEkLfO98KJBQquq+KAABj9kNAr0grFM6ZnxgsdM7eQidG/AOx\nUjIThK3QENFHrG3tsmUpwdmYmmIfeIChsREgq4An4Zt1tWuXP8rL72DFCufcT4ylAFuX/ezFU5Yz\nCO+FLAMiI7ZjYM9ZiiG3vMERiS8Hgfj45MoT0UcM1jIhRTkykkNUFP936elal0TTEysYEEUEJPob\nr1EGOI5DdnY2nn/+eaSlpaGhoaG/iwRA3JecL6CKeyT+8c2ZLdE3DEqAkAKdna3BmTPqXu+TYVth\nXZ0fHn7YPsdbe03+Yi772bqcYZpaevjwIAwdar3sJSWwKqczlz/EDiVNOB+vcSD84osvcOzYMWzb\ntg3V1dUoKChAfn6+4PmemrXQFGdmESSI/sZUSbbV6a8vgb+sXcvXB/S3Q7C1eBJ8ctvyjJwZQM2Z\n9+LDE/pmeyAHQidTVVWFKVOmAADGjBmD8+fP93OJxMf9QpN6hV5J2ASzOUlSaCj/eQoFE7SW2TpL\n7ovZ3pFr+zvbn7WMpHxlt0VOZy5/uCKvAiECzEvIyspi5eXlxv+nTZvGOjs7Bc/v7OxyRbFE5Wc/\nYwyw7RMdzZhMZvkcPz/GAgJsv2fPj1zu+LX0EecjVp0UF+vb4Msv924zEon+ExurP08q5b+HTNb3\nd6Av93b02uJivWwyWbeMrkKozJbKbouczqwjMeubEA+vWcgJCgqCWt0dnIPjOMgs7Ke7dcuySc8T\nTFEvvcRvjktP16Kysjs066ZNUiQk2B4z3tHlhxde0LqJz4Jvo1Aws/TCtsX85ycmRh+Ot6fJPiGh\nC62twKZN+g8g/M4olfztSanUobW1b6b1vtzb2rVC8iQk6D+mtLbaV25HESpz9/e95bblGTmzjsSs\nb8Az+mZ7oGUCJxMXF4eKigoAQHV1NZRKZT+XSHyEnBPz8jRmJtbk5O5rbDFzCp2Tnq4VNA0bErkU\nFNxFYKBn7I2WShnv8enTra1rMoSGcj9ez38PS4SGcoK/IZHoTefWiInRCXrWmyoCQO92InQdH4a1\n+r7s0xfTtN6Xe/e3yd8RrGVa5Ct7X955R56FJz5XwouUgRkzZsDf3x/JycnYunUrNmzY0N9Fcgn2\ndtS27G6wpGTU1vb25jZ8Z7j28mV+j++e1xQU3P1xYGLGj58fM/s/LEwfb99w3fTpXZDLYXaOPrpi\n749Mxozx8fni5F+7puKV5eDBu8bjfn69r7t+XYW6OjWuXVPh+nX9PbpzAlj/3bo6tfE3YmNh9tst\nLSo0NZmXy7ClzvS88vI7vJ71Qk5apu1E6Dqxdr2IuaOmL/f2xO18pmXma5tCdV9cDIfeeUeehSc+\nV8KLdhPYizfsJrAVb5IF8C55SBb3xZvkIVncF1omIAiCIAjCLSBlgCAIgiB8HFIGCIIgCMLHIWWA\nIAiCIHwcUgYIgiAIwschZYAgCIIgfBxSBgiCIAjCxyFlgCAIgiB8HFIGCIIgCMLH8dkIhARBEARB\n6CHLAEEQBEH4OKQMEARBEISPQ8oAQRAEQfg4pAwQBEEQhI9DygBBEARB+DikDBAEQRCEjyPr7wK4\nEsYYpk6dip/85CcAgDFjxuC3v/0tqqur8fvf/x5SqRSTJ0/GSy+9BADYu3cvysvLIZPJkJWVhdjY\nWLS1tWHt2rW4d+8ewsPDsXXrVgwYMADHjh3Dvn37IJPJMG/ePPzqV78SVZaOjg5kZmZCpVKhs7MT\n69evx9ixY/H3v/8d27dvR0REBADg5Zdfxvjx491aFlvgOA6vv/466urq4O/vj9zcXDz44IP9XSwj\nnZ2dyMrKQmNjI7RaLZYvX46IiAhkZGQY21tKSgp+8YtfoLS0FCUlJZDJZFi+fDmmT5+Oe/fuITMz\nEzdv3kRgYCC2b9+OsLAwwbbpChITExEUFAQAiIqKwosvvoj169dDIpHg4YcfxubNm+Hn5+f28hw9\nehRlZWUAAI1Gg4sXL+LgwYMeVzdnz57F22+/jaKiIjQ0NIhWF3x9hdjyXLx4ETk5OZBKpfD398f2\n7dsxePBg5Obm4syZMwgMDAQA7N+/H3K53O3kMZWlpqZGtLYlqizMh7hy5QrLyMjodXz27NmsoaGB\ncRzH0tPT2YULF9j58+dZWloa4ziONTY2srlz5zLGGMvJyWFHjhxhjDFWUFDA3n//fabVatlTTz3F\nfvjhB6bRaNjcuXNZa2urqLLs2rWLvf/++4wxxurr69kvf/lLxhhjO3fuZJ999pnZue4uiy18/vnn\nbN26dYwxxv7zn/+wF198sZ9LZM7hw4dZbm4uY4yxW7dusWnTprHS0lL23nvvmZ13/fp1NmvWLKbR\naFh7e7vx7z/+8Y9s9+7djDHGPv74Y5aTk8MY42+bruDevXtszpw5ZscyMjLYl19+yRhjbNOmTeyL\nL77wGHkMvP7666ykpMTj6ubAgQNs1qxZLCkpiTEmXl0I9RViy7NgwQJWU1PDGGOsuLiY5eXlMcYY\nS05OZjdv3jS71t3k6SmLWG1LbFl8apngwoULaGlpQVpaGpYuXYr//e9/UKlU0Gq1iI6OhkQiweTJ\nk1FZWYmqqipMnjwZEokEw4YNg06nQ1tbG6qqqjBlyhQAwNSpU1FZWYn6+npER0dj0KBB8Pf3x7hx\n43D69GlRZVm0aBGSk5MBADqdDgqFwijjkSNHkJqaim3btqGrq8vtZbEF07KOGTMG58+f7+cSmfPM\nM89g9erVAPQWKKlUivPnz6O8vBwLFixAVlYWVCoVzp07h7Fjx8Lf3x/BwcGIjo5GbW1tr7o4efKk\nYNt0BbW1tbh79y4WL16MhQsXorq6GhcuXMD48eONZaysrPQYeQDgm2++wbfffovnn3/e4+omOjoa\ne/bsMf4vVl0I9RViy7Nz5048+uijALr7M47j0NDQgOzsbCQnJ+Pw4cMA4Hby9JRFrLYltixeu0xw\n6NAhfPDBB2bHsrOzsWzZMjz77LP4+uuvkZmZiX379hlNoQAQGBiI77//HgqFAvfdd5/Z8Y6ODqhU\nKgQHBwseMxxXqVSiypKXl4fY2Fi0trYiMzMTWVlZAIBJkybhqaeeQlRUFDZv3oySkhKoVCq3kcVR\nVCqVWT1JpVJ0dXVBJnOPJmwwY6pUKqxatQpr1qyBVqtFUlISRo8ejfz8fOzbtw+jRo3ifb5CdcHX\nNl1BQEAAlixZgqSkJFy5cgVLly4FYwwSiaRXGT1BHgAoKCjAypUrAQCxsbEeVTczZ87E1atXjf+L\nVRdC/V5YWJio8oSHhwMAzpw5gw8//BB//vOfcefOHfz617/Gb37zG+h0OixcuBCjR492O3l6yiJW\n2xJbFvfoSUUgKSkJSUlJZsfu3r0LqVQKAIiPj8f169cRGBgItVptPEetViMkJARyubzX8eDgYAQF\nBUGtViMgIMB4ruFYz3PFlAUA6urq8Oqrr+K1114zzhLmzZuHkJAQAEBCQgI+//xzjBo1ym1kcZSe\n5eI4zm0UAQPXrl3DypUrkZqaiueeew7t7e3GupgxYwZycnIQHx9vsS4Mx4TqwnA/sRkxYgQefPBB\nSCQSjBgxAvfddx8uXLjQqyxC7cXd5Glvb8fly5cxYcIEAPr68NS6AQA/v26jrjPrQqjfcwV/+9vf\nkJ+fjwMHDiAsLMyoAAwYMAAAMGHCBNTW1rq9PGK1LbFl8allgr179xpn2LW1tYiIiEBwcDDkcjm+\n++47MMZw4sQJxMfHIy4uDidOnADHcWhqagLHcQgLC0NcXByOHz8OAKioqMC4ceMwcuRINDQ04Icf\nfoBWq8XXX3+NsWPHiirLt99+i9WrV2PHjh2YNm0aAP1sYfbs2WhubgYAnDx5Eo899pjby2ILcXFx\nqKioAABUV1dDqVT2c4nMuXHjBhYvXozMzEzMnz8fALBkyRKcO3cOQHddxMbGoqqqChqNBh0dHaiv\nr4dSqeSti6CgIN626QoOHz6Mbdu2AQBaWlqgUqkwadIknDp1yljG+Ph4j5Hn9OnTmDhxovF/T64b\nAIiJiRGlLoT6CrH561//ig8//BBFRUUYPnw4AODKlStISUmBTqdDZ2cnzpw5Y+zP3FkesdqW2LL4\nVKKi27dvIzMzE3fu3IFUKkV2djZGjhyJ6upq5OXlQafTYfLkyXjllVcAAHv27EFFRQU4jsOGDRsQ\nHx+PGzduYN26dVCr1QgNDcWOHTswcOBAowc+Ywzz5s3DggULRJVl+fLlqKurQ2RkJAD9zDk/Px8n\nTpzAO++8g4CAAIwcORIbN26EXC53a1lswbCb4NKlS2CMIS8vDyNHjuzvYhnJzc3Fp59+ioceesh4\nbM2aNXjrrbcgl8sxePBg5OTkICgoCKWlpTh48CAYY8jIyMDMmTNx9+5drFu3Dq2trZDL5dixYweG\nDBki2DbFRqvVYsOGDWhqaoJEIsHatWsRGhqKTZs2obOzEw899BByc3MhlUo9Qp7CwkLIZDIsWrQI\ngH7NPScnx6Pq5urVq3j11VdRWlqKy5cvi1YXfH2FmPIUFxdj4sSJiIiIMM6on3jiCaxatQqFhYX4\n9NNPIZfLMWfOHKSkpLilPKZ1I2bbElMWn1IGCIIgCILojU8tExAEQRAE0RtSBgiCIAjCxyFlgCAI\ngiB8HFIGCIIgCMLHIWWAIAiCIHwcUgYIghCd9evX4+jRo2hpacHSpUstnpuWlmbXvU+dOmX3NQRB\nmEPKAEEQLmPo0KH4wx/+YPGcr776ykWlIQjCgHvFcyUIwm04deoU9uzZA5lMhmvXriE2NhbLly/H\nihUrEBoaCoVCgffeew9vvvkmvvrqK+h0OsydOxeLFi0CYwzbtm1DeXk5wsPDodPpMH78eFy9ehUL\nFy7EsWPH0NjYiA0bNqCtrQ0BAQHIzc01JqNJSkrCoUOHUFFRgd27d6OrqwtRUVHIyclBaGgoTpw4\nga1bt0KhUGDEiBH9/KQIwvMhZYAgCEHOnTuHjz76CCNGjMDq1atx/PhxXL58GYWFhYiKikJxcTEA\noKysDFqtFkuWLMHo0aNx48YN1NTU4OOPP0ZHRwdmz57d695btmzBzJkzsWDBAhw/fhz5+fnYtWsX\nioqKcOjQIbS1tWHHjh3405/+hEGDBqGkpARvv/02Nm/ejPXr1+ODDz7AyJEj8bvf/c7Vj4UgvA5S\nBgiCEOSJJ54whlieM2cOSktLcf/99yMqKgqAPvb6xYsX8eWXXwIA7ty5g7q6OtTX1+Ppp5+GXC5H\nWFgYpk6d2uvep0+fxs6dOwEA06ZNM+bYMHD27Flcu3YNCxcuBKAPST1o0CDU1dUhPDzcGI46MTER\nu3btEucBEISPQMoAQRCCGLJ8AvpEWFKpFAEBAcZjOp0OmZmZePrppwEAbW1tGDhwIN566y1wHGc8\njy/DpOkxxhjq6+vx05/+1OzecXFxePfddwEAGo0GarXamKSFr4wEQTgGORASBCFIVVUVWlpawHEc\nPvroo14z/AkTJqC0tBSdnZ1Qq9VITU3F2bNnMXHiRHz22WfQarW4ffs2/vWvf/W6d3x8PD755BMA\nQGVlJTZt2gRAP7h3dXXh8ccfR3V1NS5fvgwA2L9/P95880088sgjuHnzJmprawHAeA+CIByHLAME\nQQgSHh6O1157DS0tLZg0aRKefPJJHDhwwPh9cnIyGhoakJiYiK6uLsydOxc///nPAQDffPMNZs2a\nhcGDB/NmmMzOzsbGjRvxl7/8BQMGDEBubi4AICEhAXPmzMHRo0eRl5eHNWvWgOM4DB061JgFcufO\nncjMzIRMJkNMTIxrHgZBeDGUtZAgCF5OnTqFvXv3oqioqL+LQhCEyNAyAUEQBEH4OGQZIAiCIAgf\nhywDBEEQBOHjkDJAEARBED4OKQMEQRAE4eOQMkAQBEEQPg4pAwRBEATh45AyQBAEQRA+zv8Dr6Wd\no6AaojsAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(preds_vs_act['preds'], preds_vs_act['actual'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('actual'); #there appears to be a slight positive trend like we would want to see" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "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", + "
est_intcoefsabs_coefs
0Professional_Professional developer3.668536e+183.668536e+18
39Country_United States5.690911e+045.690911e+04
25Country_Norway4.020815e+044.020815e+04
5Country_Australia4.018075e+044.018075e+04
380Currency_Swiss francs3.683437e+043.683437e+04
12Country_Denmark3.018176e+043.018176e+04
24Country_New Zealand2.996317e+042.996317e+04
20Country_Israel2.964533e+042.964533e+04
10Country_Canada2.962889e+042.962889e+04
120YearsCodedJob_20 or more years2.960331e+042.960331e+04
19Country_Ireland2.855933e+042.855933e+04
375Currency_Mexican pesos (MXN$)-2.735578e+042.735578e+04
35Country_Switzerland2.729701e+042.729701e+04
111YearsCodedJob_12 to 13 years2.516108e+042.516108e+04
117YearsCodedJob_18 to 19 years2.506481e+042.506481e+04
118YearsCodedJob_19 to 20 years2.461425e+042.461425e+04
114YearsCodedJob_15 to 16 years2.344736e+042.344736e+04
116YearsCodedJob_17 to 18 years2.329919e+042.329919e+04
113YearsCodedJob_14 to 15 years2.157932e+042.157932e+04
38Country_United Kingdom2.105335e+042.105335e+04
\n", + "
" + ], + "text/plain": [ + " est_int coefs abs_coefs\n", + "0 Professional_Professional developer 3.668536e+18 3.668536e+18\n", + "39 Country_United States 5.690911e+04 5.690911e+04\n", + "25 Country_Norway 4.020815e+04 4.020815e+04\n", + "5 Country_Australia 4.018075e+04 4.018075e+04\n", + "380 Currency_Swiss francs 3.683437e+04 3.683437e+04\n", + "12 Country_Denmark 3.018176e+04 3.018176e+04\n", + "24 Country_New Zealand 2.996317e+04 2.996317e+04\n", + "20 Country_Israel 2.964533e+04 2.964533e+04\n", + "10 Country_Canada 2.962889e+04 2.962889e+04\n", + "120 YearsCodedJob_20 or more years 2.960331e+04 2.960331e+04\n", + "19 Country_Ireland 2.855933e+04 2.855933e+04\n", + "375 Currency_Mexican pesos (MXN$) -2.735578e+04 2.735578e+04\n", + "35 Country_Switzerland 2.729701e+04 2.729701e+04\n", + "111 YearsCodedJob_12 to 13 years 2.516108e+04 2.516108e+04\n", + "117 YearsCodedJob_18 to 19 years 2.506481e+04 2.506481e+04\n", + "118 YearsCodedJob_19 to 20 years 2.461425e+04 2.461425e+04\n", + "114 YearsCodedJob_15 to 16 years 2.344736e+04 2.344736e+04\n", + "116 YearsCodedJob_17 to 18 years 2.329919e+04 2.329919e+04\n", + "113 YearsCodedJob_14 to 15 years 2.157932e+04 2.157932e+04\n", + "38 Country_United Kingdom 2.105335e+04 2.105335e+04" + ] + }, + "execution_count": 122, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coefs_df = pd.DataFrame()\n", + "\n", + "coefs_df['est_int'] = X_train.columns\n", + "coefs_df['coefs'] = lm_model.coef_\n", + "coefs_df['abs_coefs'] = np.abs(lm_model.coef_)\n", + "\n", + "coefs_df.sort_values('abs_coefs', ascending=False).head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-3.6685360312259738e+18" + ] + }, + "execution_count": 116, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lm_model.intercept_" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((9023, 1081), 9023)" + ] + }, + "execution_count": 118, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, sum(X_train['Professional_Professional developer'])\n", + "\n", + "\n", + "#_____Video 7 Interpretting the results_____#" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#____Video 8 - Ensemble Models______#\n", + "\n", + "### One of the best out of the box methods for supervised machine learning\n", + "### is known as the RandomForest - let's see if we can use this model to outperform\n", + "### The linear model from earlier.\n", + "\n", + "from sklearn.ensemble import RandomForestRegressor\n", + "\n", + "### Let's see what be the best number of features to use based on the test set performance\n", + "def find_optimal_rf_mod(X, y, cutoffs, test_size = .30, random_state=42, plot=True):\n", + " '''\n", + " INPUT\n", + " X - pandas dataframe, X matrix\n", + " y - pandas dataframe, response variable\n", + " cutoffs - list of ints, cutoff for number of non-zero values in dummy categorical vars\n", + " test_size - float between 0 and 1, default 0.3, determines the proportion of data as test data\n", + " random_state - int, default 42, controls random state for train_test_split\n", + " plot - boolean, default 0.3, True to plot result\n", + " kwargs - include the arguments you want to pass to the rf model\n", + " \n", + " OUTPUT\n", + " r2_scores_test - list of floats of r2 scores on the test data\n", + " r2_scores_train - list of floats of r2 scores on the train data\n", + " rf_model - model object from sklearn\n", + " X_train, X_test, y_train, y_test - output from sklearn train test split used for optimal model\n", + " '''\n", + " r2_scores_test, r2_scores_train, num_feats, results = [], [], [], dict()\n", + " for cutoff in cutoffs:\n", + " \n", + " #reduce X matrix\n", + " reduce_X = X.iloc[:, np.where((X.sum() > cutoff) == True)[0]]\n", + " num_feats.append(reduce_X.shape[1])\n", + "\n", + " #split the data into train and test\n", + " X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = test_size, random_state=random_state)\n", + "\n", + " #fit the model and obtain pred response\n", + "\n", + " rf_model = RandomForestRegressor() #no normalizing here, but could tune other hyperparameters\n", + " rf_model.fit(X_train, y_train)\n", + " y_test_preds = rf_model.predict(X_test)\n", + " y_train_preds = rf_model.predict(X_train)\n", + " \n", + " #append the r2 value from the test set\n", + " r2_scores_test.append(r2_score(y_test, y_test_preds))\n", + " r2_scores_train.append(r2_score(y_train, y_train_preds))\n", + " results[str(cutoff)] = r2_score(y_test, y_test_preds)\n", + " \n", + " if plot:\n", + " plt.plot(num_feats, r2_scores_test, label=\"Test\", alpha=.5)\n", + " plt.plot(num_feats, r2_scores_train, label=\"Train\", alpha=.5)\n", + " plt.xlabel('Number of Features')\n", + " plt.ylabel('Rsquared')\n", + " plt.title('Rsquared by Number of Features')\n", + " plt.legend(loc=1)\n", + " plt.show()\n", + " \n", + " best_cutoff = max(results, key=results.get)\n", + " \n", + " #reduce X matrix\n", + " reduce_X = X.iloc[:, np.where((X.sum() > int(best_cutoff)) == True)[0]]\n", + " num_feats.append(reduce_X.shape[1])\n", + "\n", + " #split the data into train and test\n", + " X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = test_size, random_state=random_state)\n", + "\n", + " #fit the model\n", + " rf_model = RandomForestRegressor() \n", + " rf_model.fit(X_train, y_train)\n", + " \n", + " return r2_scores_test, r2_scores_train, rf_model, X_train, X_test, y_train, y_test" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cutoffs = [5000, 3500, 2500, 1000, 100, 50, 30, 20, 10, 5]\n", + "r2_test, r2_train, rf_model, X_train, X_test, y_train, y_test = find_optimal_rf_mod(X, y, cutoffs)" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n9UUCS1cdpDlDPOYMh1SV96+9PTamwRO/Y6Kx1tsbwcWLfMHereZFZTzrem7yHvhxFFSZM0wfGmNT\npGF4WMPu3WWYPt19AqgwRWHkDRYCent72b59+5iu6+z3v/89W7RoEZs3b17y793d3eyBBx5gP/vZ\nz9g///M/Jz//5je/yV5++WV25513st/97neMMcYSiQRbsGABe//999nixYuTxz7zzDNs27Ztjm0Z\nHY0H2LPg+PM/ZwzI/Jkxw/m7vO9Zfzo7jZ8ZMxiLRo1/Ozvl5+zs5J/r3nvd9Uv1uiUlzv0w74fq\nversZKy83Pt9DRJR/6LR1D0S9TkadT5/Z6dxX0pKjH9lz1f0bEtLjX/Ly+XP+d57+d/XNOPaU6eK\n77no2k7j0antKuPZfn9UxpxsnIjug/1dEY1X0c/Uqer3w8TtNbI1/kXj0O34lM0Zonfay5jwMxaL\nhVCIRR/72Mfw0Y9+FJqm4WMf+xiuvvpqHDt2LPn3wcFBVFdXo7KyEoODg2mfV1VVpX0uO7a6utqx\nLRcu+PcMzoana09PJXgJeHp6GPr7nbzC+d81+fBDQ4pftCj98/7+zGPNvm3cOBFApl3xsceAT3xC\n3Z6/aBGUrtvUJPYQt3LPPUNYtaocTvfKyWP7nnuG0N+fO29pUf+amhJYtOgyFi0Se8k3NSXQ358+\nblP+DSWorU33hH/zTWDZstRztyN6ttddl+59zntOAPDss/zvM2ZcW0RPD8PGjTr3u5s2GffBCu89\nW7QI6OjIjGxZtCgubC/PJ2DZMsDY/ctNdG+9JX7/nnhC/t4dOGA8t3/4B+foASvvvSd/fjzcXsP+\nrsgqmTr93Xoc7z4fODCSZtZxGp9Oc8aVK/L7bsIbU1ZE74HqWCwkQh/d8JOf/ATf/e53AQBnz57F\nwMAA5s2bh1deeQUA8OKLL2LOnDmYMWMGDh8+jOHhYVy6dAnvvPMOmpqaMHv2bLzwwgvJY2+44QZU\nVlaitLQUJ0+eBGMML730EubMmZO3PvrFjxq1oYGv6jTxoq5W8dgOEpGasbEx08ta5V6JVMmxGMtL\nOJWKGtVbwiII/Tc2beKbofyaYLyaaurqWCDmH7eJoWRmBSd0XROqoEUOnyZmn+zq9xkzgEhE/s4C\n7t4zex4LJ8x3xcl058a0J7rPougZr/OIyIfGjtOYIidJg1D0dvHixbh06RKWLVuG+++/H5s3b8a3\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "y_test_preds = rf_model.predict(X_test)\n", + "\n", + "preds_vs_act = pd.DataFrame(np.hstack([y_test.values.reshape(y_test.size,1), y_test_preds.reshape(y_test.size,1)]))\n", + "preds_vs_act.columns = ['actual', 'preds']\n", + "preds_vs_act['diff'] = preds_vs_act['actual'] - preds_vs_act['preds']\n", + "\n", + "plt.plot(preds_vs_act['preds'], preds_vs_act['diff'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('difference');" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Looks like this overfits quite a bit... " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 157, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from sklearn.model_selection import GridSearchCV\n", + "\n", + "### Let's see what be the best number of features to use based on the test set performance\n", + "def find_optimal_rf_mod(X, y, cutoffs, test_size = .30, random_state=42, plot=True, param_grid=None):\n", + " '''\n", + " INPUT\n", + " X - pandas dataframe, X matrix\n", + " y - pandas dataframe, response variable\n", + " cutoffs - list of ints, cutoff for number of non-zero values in dummy categorical vars\n", + " test_size - float between 0 and 1, default 0.3, determines the proportion of data as test data\n", + " random_state - int, default 42, controls random state for train_test_split\n", + " plot - boolean, default 0.3, True to plot result\n", + " kwargs - include the arguments you want to pass to the rf model\n", + " \n", + " OUTPUT\n", + " r2_scores_test - list of floats of r2 scores on the test data\n", + " r2_scores_train - list of floats of r2 scores on the train data\n", + " rf_model - model object from sklearn\n", + " X_train, X_test, y_train, y_test - output from sklearn train test split used for optimal model\n", + " '''\n", + "\n", + " r2_scores_test, r2_scores_train, num_feats, results = [], [], [], dict()\n", + " for cutoff in cutoffs:\n", + "\n", + " #reduce X matrix\n", + " reduce_X = X.iloc[:, np.where((X.sum() > cutoff) == True)[0]]\n", + " num_feats.append(reduce_X.shape[1])\n", + "\n", + " #split the data into train and test\n", + " X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = test_size, random_state=random_state)\n", + "\n", + " #fit the model and obtain pred response\n", + " if param_grid==None:\n", + " rf_model = RandomForestRegressor() #no normalizing here, but could tune other hyperparameters\n", + "\n", + " else:\n", + " rf_inst = RandomForestRegressor(n_jobs=-1, verbose=1)\n", + " rf_model = GridSearchCV(rf_inst, param_grid, n_jobs=-1) \n", + " \n", + " rf_model.fit(X_train, y_train)\n", + " y_test_preds = rf_model.predict(X_test)\n", + " y_train_preds = rf_model.predict(X_train)\n", + "\n", + " #append the r2 value from the test set\n", + " r2_scores_test.append(r2_score(y_test, y_test_preds))\n", + " r2_scores_train.append(r2_score(y_train, y_train_preds))\n", + " results[str(cutoff)] = r2_score(y_test, y_test_preds)\n", + "\n", + " if plot:\n", + " plt.plot(num_feats, r2_scores_test, label=\"Test\", alpha=.5)\n", + " plt.plot(num_feats, r2_scores_train, label=\"Train\", alpha=.5)\n", + " plt.xlabel('Number of Features')\n", + " plt.ylabel('Rsquared')\n", + " plt.title('Rsquared by Number of Features')\n", + " plt.legend(loc=1)\n", + " plt.show()\n", + " \n", + " best_cutoff = max(results, key=results.get)\n", + "\n", + " #reduce X matrix\n", + " reduce_X = X.iloc[:, np.where((X.sum() > int(best_cutoff)) == True)[0]]\n", + " num_feats.append(reduce_X.shape[1])\n", + "\n", + " #split the data into train and test\n", + " X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = test_size, random_state=random_state)\n", + "\n", + " #fit the model\n", + " if param_grid==None:\n", + " rf_model = RandomForestRegressor() #no normalizing here, but could tune other hyperparameters\n", + "\n", + " else:\n", + " rf_inst = RandomForestRegressor(n_jobs=-1, verbose=1)\n", + " rf_model = GridSearchCV(rf_inst, param_grid, n_jobs=-1) \n", + " rf_model.fit(X_train, y_train)\n", + " \n", + " return r2_scores_test, r2_scores_train, rf_model, X_train, X_test, y_train, y_test" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 2.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 2.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.0s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 5.3s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 5.7s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 5.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 10.3s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 10.5s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 10.5s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 12.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 13.1s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 13.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.6s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 11.6s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 12.5s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 12.7s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 20.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 21.6s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 21.5s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 26.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.5s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 27.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 27.6s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 8.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 16.2s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 6.8s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.0s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 16.5s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 16.6s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 29.8s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 38.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 30.5s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.9s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 30.7s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 37.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 36.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.8s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.4s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.5s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 4.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 5.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 4.2s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 4.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 5.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 5.3s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.9s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.5s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.4s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 10.5s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 6.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 11.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 11.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 6.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 20.3s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 20.6s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 20.6s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 26.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 26.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 26.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.7s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.7s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.6s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.8s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 9.7s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 10.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 12.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 12.7s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 26.5s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 11.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.7s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 29.1s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 29.3s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 11.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 47.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.3s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 49.4s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 49.5s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 21.1s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.1min finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.3s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 12.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 39.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 14.8s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 32.2s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 33.8s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 58.6s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 58.7s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.0s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 7.5s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 9.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.5s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.6s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.3s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.5s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 7.9s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.5s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 8.4s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 8.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 5.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.7s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 5.0s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 9.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 9.5s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 9.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 12.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 21.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 5.3s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 21.9s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 22.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 12.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 5.1s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 39.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 39.7s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 39.8s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 12.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 48.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 48.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 48.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.2s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 5.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 5.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 9.7s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 19.8s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 24.3s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 22.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 24.5s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 9.4s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 51.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 21.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 54.2s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 54.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 8.3s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 19.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 8.1s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 37.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.9min finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.5s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 5.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 5.9s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 26.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.2min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 27.9s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.1min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 2.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.9min\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.9min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 2.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.8s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 2.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.5s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 10.5s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 23.7s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 41.8s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 51.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.4s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.9s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 5.7s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.3s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 6.5s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 6.8s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 11.2s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 10.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 11.7s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 14.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 12.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 15.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 15.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 8.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 6.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 2.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.6s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 2.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.0s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 2.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 17.2s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 17.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 10.4s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 17.5s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 24.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 41.0s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 41.4s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 41.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 11.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 25.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 9.7s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.2min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 24.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 8.1s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 6.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 11.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 11.3s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 47.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 24.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 51.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 51.6s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 56.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 22.9s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.9min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.0min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 53.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 24.2s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 56.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 3.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 3.6min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 3.6min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 22.4s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 4.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.8s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 4.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 4.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.6s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 16.9s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 18.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.3min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.3min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.4min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.2min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.1min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 5.9min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 5.9min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 7.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.2s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 3.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 7.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 7.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 7.8s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 40.4s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.9min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.3s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 2.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.8s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 11.9s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 9.3s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 13.8s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 13.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 22.7s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 24.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 20.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 24.0s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 28.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 30.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 30.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 7.9s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 6.6s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 16.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 7.2s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 15.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 7.0s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 4.9s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 7.7s\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 35.4s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 36.6s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 24.0s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 39.8s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 52.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 21.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 47.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 20.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.6min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.6min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.6min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 47.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 18.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 21.2s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 15.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 21.7s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 15.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 15.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.7min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.8min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.8min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.7min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.8min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.8min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 8.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 8.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 8.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 52.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 47.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 46.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.5min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.4min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.3min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 7.6min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 7.4min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 7.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 12.8min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 12.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 12.5min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 15.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 15.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.9s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 15.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 21.2s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.6min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.4min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 8.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.8s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.8s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 2.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.3s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.9s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 11.8s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 13.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 9.4s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 13.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 23.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 24.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 21.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 25.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 29.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 30.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 30.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 7.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 7.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 8.7s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 19.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 9.3s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 18.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.8s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 8.8s\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 6.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 39.3s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 40.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 22.9s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 41.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 53.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 23.2s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 53.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 23.3s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.8min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.9min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.9min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 53.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 21.4s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 23.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 23.9s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 17.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 17.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 17.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.8min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.8min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.2min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 7.4min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 7.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 7.5min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 9.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 9.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 9.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 57.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 55.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 49.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.9min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.8min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.7min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 8.8min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 8.7min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 8.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 17.9min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 17.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 17.8min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 23.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 23.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.3s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.9s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 2.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 3.8s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 4.9s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 3.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 3.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 23.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 45.4s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 6.8min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 11.6min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 14.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 2.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 2.8s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.8s\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 3.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.5s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.9s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 16.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 18.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 19.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 12.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 32.3s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 34.7s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 35.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 30.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 42.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 44.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 44.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 11.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 11.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 13.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 14.0s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 29.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 29.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 7.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 8.5s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 13.0s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 8.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 58.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 59.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 33.2s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.3min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.3min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 34.0s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.4min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 35.0s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 4.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 4.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 4.3min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 5.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 34.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 5.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 5.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 36.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 37.7s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 26.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 26.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 26.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.6min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.7min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.7min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 6.1min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 6.2min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 6.3min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 11.1min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 11.1min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 11.2min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 14.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 14.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 14.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.4min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.2min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.2min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.0min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 15.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 15.0min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 14.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 25.0min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 24.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 24.9min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 30.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 31.0min finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.8s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 30.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 39.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.9min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 6.9min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 12.7min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 16.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.7s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.7s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 3.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.4s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 4.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 9.4s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 4.5s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 11.1s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 11.4s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 24.5s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 25.8s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 25.6s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 16.5s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 44.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 45.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 45.7s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 37.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 55.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 56.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 55.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 12.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 12.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 15.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 15.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 32.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 32.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 8.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 15.0s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 9.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 9.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.2min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 41.4s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.2min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.8min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.8min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 41.1s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.9min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 37.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 5.0min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 5.1min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 5.1min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 36.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 6.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 6.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 6.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 43.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 44.6s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 29.9s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 32.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 28.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.0min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.2min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.2min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.9min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 7.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 7.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 7.2min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 13.5min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 13.7min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 13.8min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 16.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 17.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 17.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.8min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.4min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 6.4min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 6.2min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.8min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 14.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 13.8min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 13.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 24.6min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 24.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 23.4min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 74.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 75.6min finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 3.7s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 4.5s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 3.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 75.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.3min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 10.0min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 18.0min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 22.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.6s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 5.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 5.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 5.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 3.5s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.0s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 11.3s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.8s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 13.5s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 13.8s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 29.3s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 31.8s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 32.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 20.3s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 55.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 58.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 58.5s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 47.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 19.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 19.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 22.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 23.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 50.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 49.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 12.9s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 22.6s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 13.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 14.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 50.9s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.0min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.0min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 59.7s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.2min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 53.5s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 7.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 7.4min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 7.3min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 50.9s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 9.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 9.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 9.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 55.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 56.9s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 37.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 34.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.9min\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 33.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.0min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.0min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.2min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 8.8min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 8.9min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 9.0min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.3min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 5.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 16.1min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.1min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 16.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 16.2min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 5.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 20.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.2min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 20.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 20.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.0min\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 8.0min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.7min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.3min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 18.4min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 18.0min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 17.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 32.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 31.8min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 30.8min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 40.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 3.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 39.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 38.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.8min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 11.1min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 19.0min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 23.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.9s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.5s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 8.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 8.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 8.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.6s\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.0s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 16.8s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 6.8s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 18.4s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 6.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 18.7s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 42.1s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 44.1s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 44.7s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 26.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.3min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.0min finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.4min\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 24.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 24.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 27.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 28.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 59.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 15.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 27.6s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 15.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 15.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.0min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.0min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 59.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.1min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.7min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.8min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 58.5s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.8min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 8.6min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 8.7min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 8.7min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 59.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 10.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 10.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 10.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 55.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 57.1s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 34.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.1min\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 35.8s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 33.9s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.1min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.2min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.3min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 10.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 5.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 10.6min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 10.7min\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 6.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 19.7min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.7min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 20.0min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 20.1min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 6.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 25.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.0min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 25.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.8min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 25.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.0min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 10.5min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 9.8min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 8.9min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 22.8min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 34.2min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 200.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 300.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 300.4min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 298.8min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 314.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 3.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 313.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 310.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 6.9min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 17.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 33.4min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 44.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.5s finished\n" + ] + }, + { + "data": { + "image/png": "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\nZRjeREREKvP/kjDXnJwv3oUAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cutoffs = [5000, 3500, 2500, 1000, 100, 50, 30, 20, 10, 5]\n", + "params = {'n_estimators': [10, 100, 1000], 'max_depth': [1, 5, 10, 100]}\n", + "r2_test, r2_train, rf_model, X_train, X_test, y_train, y_test = find_optimal_rf_mod(X, y, cutoffs, param_grid=params)" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.1434832190870845,\n", + " 0.50312830555464327,\n", + " 0.56587007612084017,\n", + " 0.61209835688773562,\n", + " 0.70037336638014969,\n", + " 0.71357758463021015,\n", + " 0.71179914641488184,\n", + " 0.71200015668392846,\n", + " 0.71225551954795407,\n", + " 0.71407567064339428]" + ] + }, + "execution_count": 161, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/stackoverflow/README.md b/stackoverflow/README.md new file mode 100644 index 0000000..531ebfa --- /dev/null +++ b/stackoverflow/README.md @@ -0,0 +1,40 @@ + +### Table of Contents + +1. [Installation](#installation) +2. [Project Motivation](#motivation) +3. [File Descriptions](#files) +4. [Results](#results) +5. [Licensing, Authors, and Acknowledgements](#licensing) + +## Installation + +There should be no necessary libraries to run the code here beyond the Anaconda distribution of Python. The code should run with no issues using Python versions 3.*. + +## Project Motivation + +For this project, I was interestested in using Stack Overflow data from 2017 to better understand: + +1. How other developers suggested breaking into the field (what education to pursue)? +2. What factors about an individual contributed to salary? +3. How bias played a role in the suggestions of developers for how to break into the field? +4. What was the state of bootcamps for assisting individuals with breaking into developer roles? +5. How were bootcamps assisting with increasing diversity in tech careers? + +The full set of files related to this course are owned by Udacity, so they are not publicly available here. However, you can see pieces of the analysis here. This README also serves as a template for students to follow in creating their own project README files. + + +## File Descriptions + +There are 3 notebooks available here to showcase work related to the above questions. Each of the notebooks is exploratory in searching through the data pertaining to the questions showcased by the notebook title. Markdown cells were used to assist in walking through the thought process for individual steps. + +There is an additional `.py` file that runs the necessary code to obtain the final model used to predict salary. + +## Results + +The main findings of the code can be found at the post available [here](https://medium.com/@josh_2774/how-do-you-become-a-developer-5ef1c1c68711). + +## Licensing, Authors, Acknowledgements + +Must give credit to Stack Overflow for the data. You can find the Licensing for the data and other descriptive information at the Kaggle link available [here](https://www.kaggle.com/stackoverflow/so-survey-2017/data). Otherwise, feel free to use the code here as you would like! + diff --git a/stackoverflow/Salary.ipynb b/stackoverflow/Salary.ipynb new file mode 100644 index 0000000..cd285b5 --- /dev/null +++ b/stackoverflow/Salary.ipynb @@ -0,0 +1,5782 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the last two questions regarding what are related to relationships of variables with salary and job satisfaction - Each of these questions will involve not only building some sort of predictive model, but also finding and interpretting the influential components of whatever model we build.\n", + "\n", + "To get started let's read in the necessary libraries and take a look at some of our columns of interest." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RespondentProfessionalProgramHobbyCountryUniversityEmploymentStatusFormalEducationMajorUndergradHomeRemoteCompanySize...StackOverflowMakeMoneyGenderHighestEducationParentsRaceSurveyLongQuestionsInterestingQuestionsConfusingInterestedAnswersSalaryExpectedSalary
01StudentYes, bothUnited StatesNoNot employed, and not looking for workSecondary schoolNaNNaNNaN...Strongly disagreeMaleHigh schoolWhite or of European descentStrongly disagreeStrongly agreeDisagreeStrongly agreeNaNNaN
12StudentYes, bothUnited KingdomYes, full-timeEmployed part-timeSome college/university study without earning ...Computer science or software engineeringMore than half, but not all, the time20 to 99 employees...Strongly disagreeMaleA master's degreeWhite or of European descentSomewhat agreeSomewhat agreeDisagreeStrongly agreeNaN37500.0
23Professional developerYes, bothUnited KingdomNoEmployed full-timeBachelor's degreeComputer science or software engineeringLess than half the time, but at least one day ...10,000 or more employees...DisagreeMaleA professional degreeWhite or of European descentSomewhat agreeAgreeDisagreeAgree113750.0NaN
34Professional non-developer who sometimes write...Yes, bothUnited StatesNoEmployed full-timeDoctoral degreeA non-computer-focused engineering disciplineLess than half the time, but at least one day ...10,000 or more employees...DisagreeMaleA doctoral degreeWhite or of European descentAgreeAgreeSomewhat agreeStrongly agreeNaNNaN
45Professional developerYes, I program as a hobbySwitzerlandNoEmployed full-timeMaster's degreeComputer science or software engineeringNever10 to 19 employees...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", + "

5 rows × 154 columns

\n", + "
" + ], + "text/plain": [ + " Respondent Professional \\\n", + "0 1 Student \n", + "1 2 Student \n", + "2 3 Professional developer \n", + "3 4 Professional non-developer who sometimes write... \n", + "4 5 Professional developer \n", + "\n", + " ProgramHobby Country University \\\n", + "0 Yes, both United States No \n", + "1 Yes, both United Kingdom Yes, full-time \n", + "2 Yes, both United Kingdom No \n", + "3 Yes, both United States No \n", + "4 Yes, I program as a hobby Switzerland No \n", + "\n", + " EmploymentStatus \\\n", + "0 Not employed, and not looking for work \n", + "1 Employed part-time \n", + "2 Employed full-time \n", + "3 Employed full-time \n", + "4 Employed full-time \n", + "\n", + " FormalEducation \\\n", + "0 Secondary school \n", + "1 Some college/university study without earning ... \n", + "2 Bachelor's degree \n", + "3 Doctoral degree \n", + "4 Master's degree \n", + "\n", + " MajorUndergrad \\\n", + "0 NaN \n", + "1 Computer science or software engineering \n", + "2 Computer science or software engineering \n", + "3 A non-computer-focused engineering discipline \n", + "4 Computer science or software engineering \n", + "\n", + " HomeRemote \\\n", + "0 NaN \n", + "1 More than half, but not all, the time \n", + "2 Less than half the time, but at least one day ... \n", + "3 Less than half the time, but at least one day ... \n", + "4 Never \n", + "\n", + " CompanySize ... StackOverflowMakeMoney Gender \\\n", + "0 NaN ... Strongly disagree Male \n", + "1 20 to 99 employees ... Strongly disagree Male \n", + "2 10,000 or more employees ... Disagree Male \n", + "3 10,000 or more employees ... Disagree Male \n", + "4 10 to 19 employees ... NaN NaN \n", + "\n", + " HighestEducationParents Race SurveyLong \\\n", + "0 High school White or of European descent Strongly disagree \n", + "1 A master's degree White or of European descent Somewhat agree \n", + "2 A professional degree White or of European descent Somewhat agree \n", + "3 A doctoral degree White or of European descent Agree \n", + "4 NaN NaN NaN \n", + "\n", + " QuestionsInteresting QuestionsConfusing InterestedAnswers Salary \\\n", + "0 Strongly agree Disagree Strongly agree NaN \n", + "1 Somewhat agree Disagree Strongly agree NaN \n", + "2 Agree Disagree Agree 113750.0 \n", + "3 Agree Somewhat agree Strongly agree NaN \n", + "4 NaN NaN NaN NaN \n", + "\n", + " ExpectedSalary \n", + "0 NaN \n", + "1 37500.0 \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", + "\n", + "[5 rows x 154 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import r2_score, mean_squared_error\n", + "import seaborn as sns\n", + "%matplotlib inline\n", + "\n", + "df = pd.read_csv('./survey_results_public.csv')\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "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", + "
RespondentCareerSatisfactionJobSatisfactionHoursPerWeekStackOverflowSatisfactionSalaryExpectedSalary
count51392.00000042695.00000040376.00000020600.00000036592.00000012891.0000002566.000000
mean25696.5000007.3005746.9570783.9522828.42987556298.48064133142.220468
std14835.7368541.9554442.1676527.5647221.39063539880.90527730162.988829
min1.0000000.0000000.0000000.0000000.0000000.0000000.000000
25%12848.7500006.0000006.0000001.0000008.00000026440.3718394490.492484
50%25696.5000008.0000007.0000001.0000009.00000050000.00000029364.263691
75%38544.2500009.0000008.0000004.00000010.00000080000.00000050403.225806
max51392.00000010.00000010.00000040.00000010.000000197000.000000187500.000000
\n", + "
" + ], + "text/plain": [ + " Respondent CareerSatisfaction JobSatisfaction HoursPerWeek \\\n", + "count 51392.000000 42695.000000 40376.000000 20600.000000 \n", + "mean 25696.500000 7.300574 6.957078 3.952282 \n", + "std 14835.736854 1.955444 2.167652 7.564722 \n", + "min 1.000000 0.000000 0.000000 0.000000 \n", + "25% 12848.750000 6.000000 6.000000 1.000000 \n", + "50% 25696.500000 8.000000 7.000000 1.000000 \n", + "75% 38544.250000 9.000000 8.000000 4.000000 \n", + "max 51392.000000 10.000000 10.000000 40.000000 \n", + "\n", + " StackOverflowSatisfaction Salary ExpectedSalary \n", + "count 36592.000000 12891.000000 2566.000000 \n", + "mean 8.429875 56298.480641 33142.220468 \n", + "std 1.390635 39880.905277 30162.988829 \n", + "min 0.000000 0.000000 0.000000 \n", + "25% 8.000000 26440.371839 4490.492484 \n", + "50% 9.000000 50000.000000 29364.263691 \n", + "75% 10.000000 80000.000000 50403.225806 \n", + "max 10.000000 197000.000000 187500.000000 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Working with just quantitative variables is actually pretty straightforward \n", + "# for most supervised learning techniques (except - we note that any row with \n", + "# a missing value in any of the columns we use will be dropped -\n", + "# which might leave us with fewer predictions than we were hoping for).\n", + "# Let's just start and iterate on our findings\n", + "\n", + "# Let's just fit something and go from there\n", + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# The above are variables that python is treating as numeric variables, and therefore, we \n", + "# could send them into our linear model blindly to predict the response\n", + "# Let's take a quick look at our data first\n", + "\n", + "df.hist();" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\noOEFRiTAd1qYfGIAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.heatmap(df.corr(), annot=True, fmt=\".2f\");" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Input contains NaN, infinity or a value too large for dtype('float64').", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mlm_model\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mLinearRegression\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnormalize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# Here you could set any hyperparameters of your model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0mlm_model\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX_train\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_train\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# If this model was to predict for new individuals, we probably would want\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;31m# worry about train/test splits and cross-validation, but for now I am most\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0;31m# interested in finding a model that just fits all of the data well\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/joshuabernhard/anaconda3/lib/python3.6/site-packages/sklearn/linear_model/base.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, X, y, sample_weight)\u001b[0m\n\u001b[1;32m 510\u001b[0m \u001b[0mn_jobs_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mn_jobs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 511\u001b[0m X, y = check_X_y(X, y, accept_sparse=['csr', 'csc', 'coo'],\n\u001b[0;32m--> 512\u001b[0;31m y_numeric=True, multi_output=True)\n\u001b[0m\u001b[1;32m 513\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 514\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0msample_weight\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0matleast_1d\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msample_weight\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/joshuabernhard/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py\u001b[0m in \u001b[0;36mcheck_X_y\u001b[0;34m(X, y, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, warn_on_dtype, estimator)\u001b[0m\n\u001b[1;32m 519\u001b[0m X = check_array(X, accept_sparse, dtype, order, copy, force_all_finite,\n\u001b[1;32m 520\u001b[0m \u001b[0mensure_2d\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mallow_nd\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mensure_min_samples\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 521\u001b[0;31m ensure_min_features, warn_on_dtype, estimator)\n\u001b[0m\u001b[1;32m 522\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mmulti_output\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 523\u001b[0m y = check_array(y, 'csr', force_all_finite=True, ensure_2d=False,\n", + "\u001b[0;32m/Users/joshuabernhard/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py\u001b[0m in \u001b[0;36mcheck_array\u001b[0;34m(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)\u001b[0m\n\u001b[1;32m 405\u001b[0m % (array.ndim, estimator_name))\n\u001b[1;32m 406\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mforce_all_finite\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 407\u001b[0;31m \u001b[0m_assert_all_finite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 408\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 409\u001b[0m \u001b[0mshape_repr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_shape_repr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/joshuabernhard/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py\u001b[0m in \u001b[0;36m_assert_all_finite\u001b[0;34m(X)\u001b[0m\n\u001b[1;32m 56\u001b[0m and not np.isfinite(X).all()):\n\u001b[1;32m 57\u001b[0m raise ValueError(\"Input contains NaN, infinity\"\n\u001b[0;32m---> 58\u001b[0;31m \" or a value too large for %r.\" % X.dtype)\n\u001b[0m\u001b[1;32m 59\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 60\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: Input contains NaN, infinity or a value too large for dtype('float64')." + ] + } + ], + "source": [ + "# Here we can see that none of our variables appear to greatly correlated with salary\n", + "# and we can see that if someone was given an expected salary question, they either\n", + "# never answered the salary question or they were not given the salary question\n", + "\n", + "\n", + "# We an still go ahead and make predictions using these variables as a reminder of the \n", + "# scikit learn way of fitting models. The process is similar to quickly fit models of \n", + "# all types - usually a four step process of - instantiate, fit, predict, score\n", + "# In most cases, we also will want to split data into training and test data to assure \n", + "# we are not building models that overfit the data and do not extend well to new situations.\n", + "\n", + "X = df[['CareerSatisfaction', 'HoursPerWeek', 'JobSatisfaction', 'StackOverflowSatisfaction']]\n", + "y = df['Salary']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .30, random_state=42)\n", + "\n", + "lm_model = LinearRegression(normalize=True) # Here you could set any hyperparameters of your model\n", + "lm_model.fit(X_train, y_train) # If this model was to predict for new individuals, we probably would want\n", + " # worry about train/test splits and cross-validation, but for now I am most \n", + " # interested in finding a model that just fits all of the data well" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(51392, 154)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "### Notice the above breaks because of the NaN values, so we either need to fill or remove them\n", + "# Or we could write a conditional model that fits differently \n", + "# depending on the values that are missing - we can see the nans based on the describe above\n", + "df.shape\n", + "\n", + "\n", + "#________ Video 1 through here on introduction to the data - could do a bit more EDA ________#" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0309946649591\n", + "1546382888.05\n" + ] + } + ], + "source": [ + "### The easiest way to move onto a conclusion in a first pass is probably just with dropping\n", + "\n", + "num_vars = df[['Salary', 'CareerSatisfaction', 'HoursPerWeek', 'JobSatisfaction', 'StackOverflowSatisfaction']]\n", + "df_dropna = num_vars.dropna(axis=0)\n", + "\n", + "X = df_dropna[['CareerSatisfaction', 'HoursPerWeek', 'JobSatisfaction', 'StackOverflowSatisfaction']]\n", + "y = df_dropna['Salary']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .30, random_state=42)\n", + "\n", + "lm_model = LinearRegression(normalize=True) # Here you could set any hyperparameters of your model\n", + "lm_model.fit(X_train, y_train) # If this model was to predict for new individuals, we probably would want\n", + " # worry about train/test splits and cross-validation, but for now I am most \n", + " # interested in finding a model that just fits all of the data well\n", + "\n", + " \n", + "y_test_preds = lm_model.predict(X_test) #We can then use our fitted model to predict the salary for each\n", + " #indvidual in our test set, and see how well these predictions\n", + " #match the truth.\n", + "\n", + "print(r2_score(y_test, y_test_preds)) #In this case we are predicting a continuous, numeric response. Therefore, common\n", + "print(mean_squared_error(y_test, y_test_preds)) #metrics to assess fit include Rsquared and MSE." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(5338, 5)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Whoop - we built a model that predicts... but we are missing by ALOT!\n", + "# We can get a quick glimpse of how bad our predictions are...\n", + "# This suggests that 3% of the variability in salaries can be explained by these variables...\n", + "df_dropna.shape # But it also reduced our dataset to only 5338 rows \n", + " # ~20% of the original dataset size" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Recorded from here up\n", + "\n", + "\n", + "# Screencasts Remaining:\n", + "1. Imputation - first results\n", + "2. Categorical Variables - improved results, but what is happening?\n", + "3. Combat Overfitting - one method" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 19, + "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", + "
actualpredsdiff
034408.60215154632.316959-20223.714808
11182.79569941700.350270-40517.554571
233750.00000044195.215816-10445.215816
374660.63348462622.37448112038.259003
427149.32126759371.351903-32222.030636
\n", + "
" + ], + "text/plain": [ + " actual preds diff\n", + "0 34408.602151 54632.316959 -20223.714808\n", + "1 1182.795699 41700.350270 -40517.554571\n", + "2 33750.000000 44195.215816 -10445.215816\n", + "3 74660.633484 62622.374481 12038.259003\n", + "4 27149.321267 59371.351903 -32222.030636" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "preds_vs_act = pd.DataFrame(np.hstack([y_test.values.reshape(y_test.size,1), y_test_preds.reshape(y_test.size,1)]))\n", + "preds_vs_act.columns = ['actual', 'preds']\n", + "preds_vs_act['diff'] = preds_vs_act['actual'] - preds_vs_act['preds']\n", + "preds_vs_act.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAEFCAYAAADE/xFGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztvX14HWd54P07R8eS7djOOlt/JJJZLiC6E3Ux8dI04ABO\n6ywB+rZdleWq3W0KtMKGhLXc8i4QQ0jjUKflLdT2JgRTFUgDjbfboO6WkpIS4pLY2aSLUxqQ/bjA\nvhexhB2ROHFsx5KlM/vHzEijo3nmzJwzc87o6P5dly77zJkzc8/Xc89zfxYcx0FRFEVR6qXYbAEU\nRVGU1kAViqIoipIKqlAURVGUVFCFoiiKoqSCKhRFURQlFUrNFqBZjI6+1PDwtuXLF3Pq1LlG7zY2\nKl99qHy1k2fZQOULsmLF0oLtO52hNJBSqa3ZIkSi8tWHylc7eZYNVL64qEJRFEVRUkEViqIoipIK\nqlAURVGUVFCFoiiKoqSCKhRFURQlFVShKAAMDpZYuxYuvXQJGzYsZnBw3kaUK4pSIzpqKAwOlti6\ndZH3qcCRI23e55fp7Z1opmiKoswhdIaisHt3e+jyPXvClyuKooShCkXh2LHw28C2XFEUJQwdMRS6\nu8uJliuKooShCkVh+/bx0OX9/eHLFUVRwlCFotDbO8G+fS+zdi2USg49PZPs26cOeUVRkqFRXgrg\nKpUtW2B09EyzRVEUZY6iMxRFURQlFVShKIqiKKmgCkVRFEVJBVUoiqIoSiqoQlEURVFSQRWKoiiK\nkgqqUBRFUZRUUIWiKIqipIIqFEVRFCUVVKEoiqIoqaAKRVEURUkFVSiKoihKKqhCURRFUVIh82rD\nInIN8EfGmOtEZB3wNeBfvK/vMcb8NxF5H7AVmAA+aYz5mogsAr4MrAReAt5tjBkVkTcAe7x1HzLG\n3O7t5zbgl7zl240xT2Z9bIoSxeBgid272zl2rEh3d5nt28e1JYDS0mSqUETkw8CNwFlv0euBzxhj\nPh1YZzWwDfg5YCHwmIj8PfAB4GljzO+LyCbg40A/8DngncCPgL/1lFQB2ABcA6wBHgCuzvLYFCWK\nwcESW7cumvp85Eib91n7zCitS8FxnMw2LiLvBP4ZuM8Y8wYRuQcQXEX2L8B24BeAdxhj3u/9ZhDY\nBdwCfMoY879E5GLgEPBG4AljzJXeuv1AOzAGLDbG/KG3/CngrcaYUZtsExOTTqnUlsVhKwpr18LT\nT4cv/+53Gy+PoqRIwfZFpjMUY8wDIvLKwKIngQFjzHdE5GPAbcA/AS8G1nkJuBhYFlgeXHa6Yt1X\nAeeB50K2YVUop06dq+GI6mPFiqWMjr7U8P3GReWrj6B8Q0NLCHvuhoacpjUxy/P5y7NsoPJV7stG\no53yg8aY7/j/B9bhKoighEuBFyqWhy2Ls1xRmkJ3dznRckVpBRqtUL4hIj/v/X8j8B3cWcubRWSh\nZ9q6EvgecBB4h7fu24FHjTGngXERebWIFIAbgEe9dW8QkaKIvAIoGmN+2rjDUpSZbN8+Hrq8vz98\nuaK0Ao3uKf8B4L+KyAXgBLDFGHNaRPbiKoYi8DFjzHnP33KviDwGjAO/4W3j/cBXgDbcKK8nAETk\nUeBxbxs3N/KgFKUS1/H+Mnv2TEd59fdrlJfS2mTqlM8zo6MvNfzA1Q5bHypffWQtXz1h0vP93NVL\ng30ozXHKK4rSmlQqj2uvnWRgoH3qew2Tnp+oQlEUJRFhOTZHjoSH4O/Z064KZR6hpVcURUnE7t3t\n1VfyOHZMh5j5hF5tRVESkURJaJj0/EIViqIoiUiiJDRMen6hCkVRlETYcmz6+sbp6ZmkVHLo6Zlk\n3z51yM831CmvKDHR6sEummOj2FCFoigx0OrBM+ntnZiXx61EoyYvRYmBLbJpz574EU+K0uqoQlGU\nGNgim5JEPA0OltiwYTGXXrqEDRsWMziYDwNBXuVS5h565yhKDLq7y6HJe3EjnvJqMsurXMrcRGco\nihKDeqsH59Vklle5lLmJKhRFiUFv7wT79r1cc1hsGiazLKhXLjWXKUFUoShKTHp7Jzhw4BwjI2c4\ncOBcIpNQXhtu1SOXby47cqSNycnClLksbaWiSmvuoApFURpAXhtu2eRav36y6iDeCHNZo5SWkg56\nVRSlAeQ1GTBMrvXr45Wib4QZL0ppNfvcKbNRhaIoDSKvyYCVcm3YsDh0vcpBvN7Itzjk1fekhKNX\nRVGUGcQdxBthxsur70kJRxWKoigziDuI1xv5Foe8+p6UcFShKEoLUk9kVJJBvJ7Itzg0Qmkp6aE+\nFEXJKbVWN7Zlvy9bBhs3Vt9v3gII8up7UmajCkVRckg9JVFskVF33hlPoYAO4kptqMlLUXJIPTke\nNqf60FBdIiVGExLnH6pQFCWH1BMua3Oq9/TUJVIiNCFxfqIKRVFySD3hsjan+i231CVSIppddFJn\nR81BFYqi5JB6wmVtkVGbNs1eN6uBt5kJiTo7ah6qUBQlh9QbLtvbO0F//ziXX17GmCK7d7ezf//M\ndbIceJuZkNjs2dF8RhWKouSUenI8wpTF5s3MUBZZDrxxZ1j+DKlUIrUZkpZraR56hhWlBYmjLLIc\neOPMsGYqPWLPkKqZ6bRcS/NQhaIoLUgcZZH1wFtthlXLDCmOmU7LtTQPVSiK0oLEURZZDrz+LGLV\nqiWsWbOE1atnzyZqmSHZlNC2bQuntq3lWpqHhj0oSguyffv4jEx7n1WrnKn/Z1VipTLLf2zM/bcy\n27+W8vc2ZTM2Vpixbc30bw4Fx3Gqr1UHInIN8EfGmOtE5DXAlwAH+B5wszGmLCLvA7YCE8AnjTFf\nE5FFwJeBlcBLwLuNMaMi8gZgj7fuQ8aY27393Ab8krd8uzHmySi5RkdfyvbAQ1ixYimjoy81erex\nUfnqI2/y/fqvL+KRR2a/M/b1jbNr11hm+92wYXGoovDp6ZnkwIFzsxSPT7HoIBJeuyzuttMmb9e2\nkkbKt2LF0oLtu0xNXiLyYWAAWOgt+gzwcWPMm4EC8KsishrYBlwL3ADcKSIdwAeAp711/xz4uLeN\nzwG/AbwJuEZE1onIvwM2ANcAm4C7szwuRZkLHDoUPvDed9+CTPdbzanvfx80TRUDPymX7SHMNjNd\n3H0r2ZK1yeuHwK8B93mfXw/8g/f/B4G3ApPAQWPMGDAmIj8A1uIqjE8F1r1VRJYBHcaYHwKIyDeA\n64Ex3NmKA/xYREoissIYM2oTbPnyxZRK9jedrFixYmnD95kEla8+8iTfmGUSMjZWiJRz/3748Ifh\nmWfcz2vWwKc+RWhiZBg9PfD001HfT+9/yxb3b+3a8N/cffcitmyZ/rxlCyxbBu99L5w/H73ttMnT\ntQ0jD/JlqlCMMQ+IyCsDiwreoA+uGetiYBnwYmCdsOXBZacr1n0VcB54LmQbVoVy6lT60+Jq6LS5\nPlS+ZHR0LGFsbLZ1oqPDYXT0TOhvwsxQzzwDmzfD6dPxHNsf/GC4Kcvn5ptfZnR05naGhsIHw6Gh\n2bJu3Ah79oTv47nnynz+82Op+0/ydm0rabDJy/pdo+eHQW/bUuAFXAWxtMryJOsGlyvKvOXGGy8k\nWg72KCqYDucdHCyxbt1FrFy5hJUrlyByEevWXTSVFwIETFkOHR0OxWJ0tJWtcKXNQe+byzo7Z34/\nPFzUMitNpNEK5SkRuc77/9uBR4EngTeLyEIRuRi4EtdhfxB4R3BdY8xpYFxEXi0iBVyfy6PeujeI\nSFFEXgEUjTE/bdhRKUoO2bVrjL6+cTo6HMBh4UK7Q94P8z1yxD4kDA0VWb16CVu3LmJ4uIjrBi1w\n6lSR4eHijLyQ22/voL9/nBMnzvDMM2c4cSI623/HjvB9RoUw9/ZOsGxZeGyNlllpDo1WKB8CbheR\nx4F24K+MMSeAvbiK4VvAx4wx54F7gJ8VkceALcDt3jbeD3wFVxE9ZYx5whjzHe/3jwMPADc38JgU\npWlEZY0PDpY4eLCNiQm48soyX/wiVmXiJwu6SsJGgXI56vtpRkamZwpxClBu2kSszPrK7WiZlXyR\nedhwXtGw4dmofPXRaPlsYbf79r0MEPpdX984Bw+2zWgrvHt3e2Qobj10dZU5fnz24F6pLKqdO9ux\ndnaWvdnSTNIOH9Z7b8a+rG8VamhUlDlKVOkS23viwMD0b3zzVLGY3bvV8ePhY8+ePe2JHOdRvp0w\ntMxKc9B5YQ7QZkBKLUSZe5KYfIpNGAXiyBcs32Lz7Zw8WdAyKzlCR64mUzmVryxPoSg2okqXOA6x\nzVgTE/H8IrNxZzbFIixaBGfPhm0nfNvVClDaTFxh29EyK/lBZyhNRpsBKbViyxp/8cUCxiR7tDs7\ny140WBLcKK9yucDZswWWL49fpfjIkWLkbDyuiWv9+kmd3ecIVShNRqNU5gdZmDUrq+r6ORnDw8XY\n0Vg+J08WmKjzJf/UqfB9+jkoQV+N40yHGO/Y0THrN9Xvf4e+vnEGBtq11W+O0FGryWgzoNYn7Va7\nQeW0e3c7/f3jjIycseZkBCmVwtfp7i5XuedchRXtwA9XKFdc4VYxXmApITYwMLs9cbX7v6enzMGD\n4SY9nd03D1UoTUabAWVDngId0jRrRimnOLPasmWc7u8fr1J4seDNfBKLzPr1k2zduii0DIzPRz4y\n83O1IpD9/eOpzu7zdL/MZVShNBltBpQ+ac8I6iXNgS9KOcWZ1V5xRdl6v/X2TtDXV+1FJr4prbPT\n3deDD1Y/7z/+8czPMysRh5dvSWt2n7f7ZS6jiY0NRJOj6iOufLaeGVn1yvDx5RscLLF793TTqtOn\nC6kl31166RImJ2cP6qWSw913n68aGVUoOFxxRXivER93gF1IEuURhn98K1cuibWtK6+cnJFwWe2l\nKiqxM8kLWZz7pVWejZT21Zx+KIrSDJoZ6BD2thumTKA2s2bUW3nlbLerqzzL7xF0htvewHt7J7jy\nyvp9eEePJjvfSWcIac3uNTAmPfSMKS1HMwMdbCapzs5yKmbNaj633t4JDhw4x8jIGQ4fPstTT51F\nJPy4o3w41147mVi2SsrlAoODJS67rDZjwLZtC6v6NILHG1V8MgrbfdHWxtT+K4MGlHASKRQRWZ6V\nIIqSFs0MdLC91Z48Wah74IPa3spreQO3RVAlZc+edm67zdZu2JmqhBzG2Fih6owlDWe67X4J7n/z\nZtSnEoNYCkVErhKRo8B3RaRTRH7gtd1VlNzRzECHNGdHtsEy6Vt5lEy2fcQz91SfeRw7VpzlYJ+m\n4EV+xfPV7Nw5M18lLWe6H4zgK7dCQUvi10rcGcpeoBd4zhgzjNvv/XOZSaUodZKGKaQW0podpRl5\nZJPpJz8pWPexalUcM1V1ReArM/962MxvcRgeLs44/rTCsQcHSwwMtE8pN8cJPy71qVQn7hlabIw5\n4n8wxvw9MDu9VVHmOWnNjtLMXfFlWruWKWc9wKlT4Y//Bz+4kJMn64vw8lm/fnLGLMhW5LFQoOoM\nAWYef1rO9LhlXjTZuDpxX3eeF5HX4c1xReQ/Ac9nJpWizGHSKFaYduRRb+8EW7bA6OiZqTa9Ni5c\nSEeZgJsFPzBQfT3HYSrxMSqTIXj8UcUxkxD3nGqycXXi3p0fAO7G7aD4ArAdt3OioigZUM0Xk8QZ\n7a9bKrk5F0kLR+aJ4HlJy7xoO9cdHc7ULPP++9Fk4xjEurOMMT8E3glcArwC2GyMMVkKpihzlSwj\nj/r7xxP5V2au6+Z6JC0cmSeCyiIt86LtXO/de37KB7dpU11izxviRnltAx40xpwFlgN/IyJbMpVM\nUeYgaUYe2QbLJP6VpJ0O884//mPbDGUN1B18oeWP0iNW6RUR+R5wjadQEJHFwBPGmNdmLF9mzNfS\nK5VlQYIlLvIgXxRzQb6ensnMy75ElV8ZGTkTa13XHZpkpuI+Lpdc4vD88/kymTVi8J8L995cKr2y\nAAhmJ40TJwhdyRVaBC970nKm+2az1auXsGbNElatmjafJcl1sa1bSnzJ3ZDa+MqkccOD5ofkh7h3\nx18D3xKRD4rIB4GHgP+ZnVhKFmh3yOypJYmwkqDiL5fd5L9gDS5bWZQwZ7TNP1B729/8ofkh+SGu\nU/4juMmNArwK2GuM+XiWginpo0Xwssc2gPs9QeLMDqv5PQ4daott8/f9A8nb+9ZL4xSW5ofkhyQj\nyRHgL3FnK8+LyFuyEUnJCu0OmT02B2+S7oLVFLxfzqTSGR1VqsXW3tcthZI367Wf3Oj+Wyi459HW\nq6VyZqbNsppHrDMtIncDvwz8MLDYAX4xC6GUbNi+fTy0f4QmbKVLWGLjTTctDF03THnYEvaC31dS\n2RvEnwHBy4CbiR7GFVeUcRwi95c1xaJDsVigu3uS/v7oPihXXz3Jnj3TQSWV60edB43ayp64qvut\ngBhjXs5SGCVb3Afq5cgHUsmGJFndNsXvE3wB8KP2bCVNdu7ssPZjAThypFhzefm0KJddhRen11+1\nKgRRfkK9z7MnrsnrRzTSKKpkRrOKJs4XbOaWKN9KJXHa3/r78v0ytsdzeDj6sXWc6W6SbW3NUiyF\nqaTLeqMO1U/YXOLmodwPvBE4BJz3lxtjfjs70bJlvuahRKHy1cfDDy9l8+bZyy+7rMzJkwWWLXNC\nCzLWmkdha107k6T5JmlQ3z7rydnJqv1z3u+9uZaH8nfAbcA3gH8I/ClKLOaqozSJ3Lt2hS8fGSky\nOVmwVvet7PMRl/y+dRfo6xv3qhond/r7x1XLPZMkpFpJn7hhw/fiKpCfAl8Bvu0tU5SqzNWEyqRy\nDw3Vtp/KPh9xsUfnTZvHmuUfGRhYwNKlDvv2nU/cn97P2Ul6z/h9TSrp61M/YaOIW8vr14G/Afbg\nFoh8XER+M0vBlNZhriZUxpXbf5OerKMNey3nwuaX2bfv/JR/zN5+N2umlcDq1cmU2osvFti6NTwq\nbtu2hValYrtehw41L4JtvhF3zvwRYD3wkjHmWWAdcEtmUiktxVx1lMaRe6ZjvHaOHk1+Lipb13Z0\nOLPexmfmxTA1c2lksuOjj8bx88Dy5e5Mxg0SCDfTj40VrDOVuXqftRJx59mTxpiXRAQAY8xPpI5e\nniJyGDjtffw/wB8AX8K9s74H3GyMKYvI+4CtwATwSWPM10RkEfBlYCXwEvBuY8yoiLwBdwY1ATxk\njLm9VvmUdEmrEVKjiSO3PavdoavL4fjxeIPZggXJ5as08YyNuQ2tHnywxIkThVnFP++6axFDQ0V2\n725n+/Zx9u49Hxme3Nbm4Dhw6aUO587BqVPx+78HsSVVTuNu0+ZjCiMsDHiu3metRNwr+H2vhtcC\nEblKRD4P/FMtOxSRhUDBGHOd9/de4DPAx40xb8a9u35VRFYD24BrgRuAO0WkA7fZ19Peun8O+CVg\nPgf8BvAm4BoRWVeLfEr6pNUIqZKsHf1x5La9/RaLcPjw2VlZ8zYH9YULyeWzKbPh4eIMv4PIRWzd\nuoinn2bG8p07O6bCkgsFt5mU70Tv7Czz2c+e5557zjM8XPQG+/xkDoSdd9v1OnKkOKcCQeYycRXK\nzUAnbtrtF3BnFzfVuM/XAYtF5CER+ZY3s3g901FjDwLXAz8PHDTGjBljXgR+AKzFVRh/F1xXRJYB\nHcaYHxpjHNxotOtrlE9JmSz6TTTC0R9Hbtvbb7lcYHCwNCPvp79/nA5LQNcVV8zcTpSyHBwscdVV\nF1mTGSuxvfkPDxdnFJ90C0a6f8PDRbZuXcRHP2qLQGtuMuSqVbP3X5m/4xMsrKlKJVvint27vJlE\nGn6Tc8AfAwPA5bhKoeApAnDNWBcDy4AXA78LWx5cdrpi3VdFCbF8+WJKpcY761asWNrwfSYhK/m2\nbHH/XNoAu6klCl++u+4K//7uuxcF9lM/1eS+/no4cqS6LPv3w9at9v3cemvb1LFVrusPhsuWuZ+j\ntpM2djNUktlK+jOb4eEiDz+8dKqT4v79btj20BD09EBnJzzzzOzf1XN/zNdnNwlxFcq/FZElxpgz\n1VetyjHgB54COSYiz+HOUHyWAi/gKoilVZZXW9fKqVPpNDtKQt6SoyqbbX3iE21s3PhS5DpBm3yj\nCZ6/oaElhA1UQ0MOo6O13aa1HOs3v7kYV9HM5nvfm5Zl587w9To6HPbuPc/GjROMjhK57h13THrl\nSTRqCdzzsXHjuVn1u55+2v6bWu+PvD27lTQ4sdH6XVyTVxn4sYg87pmpviUi36pRnt8GPg0gIpfh\nzi4eEpHrvO/fDjwKPAm8WUQWisjFwJW4DvuDwDuC6xpjTgPjIvJqESng+lwerVG+eUGYyWjzZmaZ\nVvKaP5J25eRajzUqgsg3e0WtNznJLKUVFa0UHbGUt6rB2eKfiyRtjtVBny1xFcqHgV7go8Dtgb9a\n+DPgX4nIY8B/w1Uw/cDtIvI40A78lTHmBG4PlkeBbwEfM8acB+4Bftb7/ZaAHO/HTbp8EnjKGPNE\njfLNC+LkWOQ5fyRtR3+tx1ptgPJ/b1uvrY1ZSitKWYb5DoJ0dpa55JIomVyHeyvgn6ckYcGaMZ8t\nsWp5AYjItcBrgS/i9pf/dpaCZc18r+UVpy95kt7ljaDy/A0OllKrnFzrsVaaW2y/r7ZeWNHHsHWq\nVQ+eJryeVlCePXvaOXrUdczPRfxzZqvf1dVVZtkyJ5X7I0/PbhhzqpaXiPQDnwR+D1gC7BOR/zcd\n8ZRmEMdk1OiGXEnDgNOqnDw4WLL2WK92rNU6Ivq/r7ZecCYUFV124kTcwT98vaA8Bw6co450sqZy\nySXlqettm63eeuuYVtZuMHHniu/B9UucNcY8B1yNa6pS5ihxTEZZ5Y+E0Sx/jb/fsbHwATjOsfb2\nTrB37/nQ7/zf+w7/MUsllEqzjU1Z1qvM+/vHZyjuuKHHeeP556evVxZh6UptxL2bJo0xwSfrPFBH\n5SKl2YQ9hPffT0TZjmwf1Gb5a2z77ehwEh1rb+8E999P6LmK07ckrqKwVdONZvr6AjMUd56SFeuh\nMt9n9+72OVfZuhWI2w/l07hG2V/BddBvAY4ZY7ZnK152zHcfShjNlC+ODyML+dL0E9nki9O3JK7y\nitcDZSYdHQ7PPHOGFSuW0tMz2dR2v2nR1VXm8OGzs5ZH+Z/qeRHSZ3fGvmrzoYjIa7z//hfgX4Dv\nAr8FfB1QH4qSGo321zRyv/YopGSzvsHBUk0mqhtvnK7r0iqFEm+9Ndx2aOstk4fIxPlAtbvrL71/\nv2qM2WeMeZcx5teMMXcZY9RAqdREmPO9kf6aII3Yr0059fSUYzuLp9+845qopqsPX331JBs2LKZU\nwhp80CiCJVFqpbOzHHrOBgdL1gi4KEU6V5u/5ZFqCqXs5Xv8YjChsc7ERmUeY3O+AzX7a+oZEBrh\nJ0pDaSVJ3gNXWT3zzBmuvnoycL6xBh80ijRClM+dm527A9HnyKbU85y8OxepdtZ+EbgKNxlRy8Er\ndRPlfK/2tr5/v1uWJFgaBZhhM59WUMkc6llGBLnbfrmunJkos1nYrMVXVkkV0Vzg1Kli6DWOmoXY\nlHfU/ahRYsmpplAeNsZcLSLfNsZoD/l5Thp1vWptguS+SYJfx8pXHLas77wNCLUqLf+c27pB9vS4\nyqlSWQFcddVFjIzM1SiucEUZpPIa2/qhuGX5w9GmXOlSTaEsEZEvA2/zamTNwBijuSjzhMromVpm\nAlB7EyR774/wQacVBoRq2fXA1EwneA3i/C7/VFeEldd4+/bx0OOemChY71VtypUu1Z66twIPAWdx\n+5VU/inzhLTyRGr1JyRVEHkeEOL6fKK6QZZKDsuXl7nppoWzttGKZi4bweNOUo3Ap1nBIK1K3DyU\ntcaYf26APA1D81BmEyVfmvkatdTgsuVfdHaWQyN7mpEpHef6JsmTsJ1zG3194xw82OaFFiczdS1f\nXk7UgjdPVJ67pPdqnPtxLj+7Geyr5jyUr3n//R8i8qPKv1SlVHJNknyNam/gtdTgsr1JfuITY7ks\nu2E7B0lmeklnWQMD7ZHZ+FEsXpz4Jw3EifSDVJ67pLlFadWEU6r7UA6KyG8Bv98AWZQcY7NPV5oG\n0vK1VNLbO8GyZW5TpbA3yTwNAlHnoJoTOBj4UK1UfZq4vqjqjvDmUGByMr5jPe69aiMs+CTNLqCt\nTDWF0u39vQp4DW6G/CTwNuD7wL2ZSqfkhrihr1mGYW7aBBs3Nr7TZlKizkGUE7hSETU2QisPisSu\n0NrbsRbWrJx51BOmbXsZWLYMNm6Mexzzl7g+lEeAdxljfup9Xg78tTFmQ8byZYb6UGaThnxZ9lCZ\nK+cv6hzcffd5qw9l9+72lqizVTt2hVIoODhO+HfVTJzVwt2D35dK4cmfa9fCN7+Z/3uvQfuqrx8K\ncBnwfODzWeDSeoRS6iOv5SKaVZMrLWo5r/5vSiU3eMBmquruLkdm5rdCqPNsHNJoTWx77+3qKk9V\ndA67btUy4Su/t1USGBqq+xDmBXFHob8F/l5EvoqrhN6F275XaQJZ+SnSoF77dTOp5byG/caGfw5s\nSY42c1jt5MEnkmT/UeuGf3fiRCHyulUzwcYNse7pibXavCfWK5Ex5veAzwJXAJcDf2yMuTVLwRQ7\nzeodEuftPcvaWPv3k+msrJbzGndA6uurbsO3RbLVTnrKpFCIjrRqFt3d5cjrVi0IIu6s8JZbapOv\nGvVYGoK/Xbs2vL5Zo4ndU77VmMs+lKz8FFHyZdVnIi6N2H8t5zVurkhPz+RU46eo0jU7dnQwMJDX\nxMSsZjy1b3ffvpe56aaF1ut2+eXhs76enkkOHDhnzW/q6HCYnGTKob9ly6LUfRT13NPNfB7T8KEo\nOWL16uj+5TbqeRtq1qyo3v0nOeZq/p/Kbe3Y0RG7HPzRo8VYVW2//vXmv2Xaycp8lnS7M2e+Udet\nWia87fu9e89nnpdSzzPV7OfRRp7vXiWEqJ4PUX6Kev0uzS6iV8v+kx7ztdeGdzNcv34ydFtJ/B0L\nFoSHvQbDqQcHS4yM1Hs+8+A3yZauLocDB6bDx23XbTpU2B5CnEYl6Fqp55lq9vNoQ2cocwzbm4mt\n6VC138X0NiTrAAAcrElEQVR9o2l29JZtP21tdttx0mM+eDBcQRw61JagPlb47PHChdDFMwaAempw\ndXQ47Nv3MsuXt74JO9itcXCwFGoiDPqsqmXCNytTvp5nqtnPow1VKHMM2xvIyZPRb6X1vtE0u4ie\nbf9jYwVrQyTbsQ0NFROtf+xYMcGbn3sdurrKM4ISRKoPAPW8Xf7rf+1w000La/79XGLr1oWsWbOE\n1auXsG1b+DEfOpT/fJ56nqlmP482VKHMMWp9M6n3jaYRnQ2r7f/++0lUSdZ+bOFKKOocJS2DsmyZ\nM+ONN84AkPzt0qGry/3NyEiRycnCnC3wmAw3X6RctueNHD2a//NQzzNV+du1a5tTELWS/J91ZQa1\nvpmk8UYTZhpoZILlpk0wYXlewmYd1cJwK5WQbf316yd59tlkfonK2UacwSNp2HCpBEuXtr6JqxYW\nLGi2BPHo7Z2gv3+cyy8vY0yR3bvbYz9Dwefxu9/NRz07VShzjFrfarKYYTSjH3eSWYd/zDa/RpxB\nv69vnIGBdiYmkimUsMiw3bvb6e8fn2Wr99e56aaFdHaW6ewsz9h/1D6a7YTNK2Nj5KqChI1GP0NZ\nvwBqHkoDmSu1qOJii+H3Y/zTZsWKpXz+8y9HdiMM23c9ctp+W42+vnG+/vXwqK2gIo+TT2DLTVm+\nvMyLL7qmH8VOGqagrJ7dtJ6htHvxVNmX5qEo6dOM0MWksw6ozdznv8m5zarsFAquH8OdVTBjVmML\nAQ6a2myRXXfc0TH1/1273J4vnZ0zZ2enThVVmcTgjjs6cln3Dhr7DDUid0UVilIzzQpd7O2d4Mor\n4+87qbkvaIaw5XT4YbonT57h8OGzPPXUWS5cgAMHzlVNTjx6tDg1wNkU1vHjRVavnh4A3X4wcSfV\n89PqYOP48WJDzbJJaOQz1AjlpQolAXmt8Nssmhm6mHTfSXIN4uSD+GG6lfdBnOTEcrkwNcBFJSH6\n623duoiVK+3Kp/VJX0E2O6Pcp5HPUCOU13y9QxPTDAd03mlmKHGW+7a/sc0O0628D+pJTowmWvnM\nWLPlrGDpH1DlNW7Wy2Ijn6FGKC91ysckDedZqznlG0214pXVCi/GJepaO054ifqenkm+//02SiXH\nWiyyq6vM8HDB2igqPVq//Eo07qPd2engOITOGP3ndnCwxM6dHaHljIIDe9i9l+Y9Vy9xn93BwVLd\nZWbmhVNeRIoi8jkReVxEDojIa9Lcfl5r52TNjh0drFmzhJUrl7BmzRJ27Oio/qMGk/bsMepNrtp9\nYDMfdHWVOXz4LJdemuULnL/t+aJMbOfSnc0NDxetFQr6+8en7htbbbwos1geLBa1lK/PusxMK42G\n/wFYaIx5I/BR4NNpbjyvtXOyxA9XdbOR3azkgYH23CmVtKNXbPkou3e3MzkZ/hv/PrApI7/+VOuZ\no5pHT0956jrZlMsjj8weZP06X9XMk1HZ9rbfbtu2cJZPLQtTWqVCe/pp8mGCdxynJf66u7s/093d\nvSnweThq/QsXJpwk3H+/47iNSGf+3X9/os3MKRYuDD/mhQubLdlM2trC5SyV0tm+7drb7oP773ec\ntWvd/a9dO/M7m6z6l/xvzZrpc5vkvK5dG+83CxYkv+eC90OWY8ZrXxt9bBmD7a9lfCgiMgA8YIx5\n0Pv8Y+BVxpjQOV0tiY312h/nmo9i5colhJtPHJ59tvZGXrViO39ZJ1jakxsdenqm74M417fWREkl\nCodSidjVDPyGaXGuhe9Hqby21X5bzd9W732ZVZO9OMwLHwpwGlga+Fy0KZNaaVaZ63qpddrdYbFs\n+cvTns7Xur2so1dsfpNSicT3QfptfhUoJCqN4zeoi3MtbGbTar+NqlCdht81ryb4VlIoB4F3AIjI\nG4CnmytOPqjHebh+fbjD4MYbL6TulKxne1mHXtb78FbW81q+vHX9bs2mUKhueDh+vMi6dRfFWt82\n+Pv3nK36dXd3OdNBX8vXZ88gcF5EDgF/Avxuk+XJBfW0zg1zaP7CL0ywa9dY6o7werdXz+yx2syo\nnoc3TFHGKzHfGqboRhPXgj887LZkrhZ1FzX49/ZOsHfv+dDv+vvHMx3081q+vmWy8owxZeD9zZaj\nXoKx7atXu3H0J08Wao5zr3XabRvg/UZeaU/nmxWWHadNcD1tYm3nsVRyAqX4w8w1Gg5WG8nOW7HK\n7VVt8K9+b2TXXri3d6IiT6b5JvhWmqHMKcLeiivfZoeHi9aM7LjUOu22hUxWy7eodTrfaJuwf/63\nbg3v+Fc5M/JnQHfffR7HIbTsShg2heja/ONnvyvZcOJEgX37XvYqIDhTf11d5UTNrmyz47nqd60V\nVShNwOYv2Lmzen5HUpNSVNOoKPls2dzV8i1qnc43yiY8OFjiqqsuqlr8MUwR1OLnabaTtPVxFUBn\nZzmW/6SS7u4yvb0THD58lmefPTP1d/jw2ZYf/LNAFUoTsJlBhoerv62mZQIaGLB3hotK+PIH+LQd\n4Y2oaeQrhGrFGyFcEdTi52lEVFep5NDWNj99LoUCPPvsGZ566ixXXJFceTfbid1qtEweSlKa2WDL\nFkNOjBpMSWPYo+LlK7dVTb5i0eHEicbnn/jUm8eTJAckTJlVi/23yefnLw0NFcnCxOX2X1mQybbn\nBu6jvHy5EzPgYfo3AJdd5nDbbWORLy9zLYcs433NizyUOYPNDNLZWV3HJX2jiprR2Mw6JYsFp5Y3\nwDxRfXYXPTOq1c/j29FtPVzq4ZJLyl43x/mqTMD3RfnK5KKL4pznaR/WyEgxH2VLMqKRlZRVoTQB\nmxnkE58Ym2H2me4EWLsJKGqwq/xu/363HpBbu2s2c908UG3g37fv/NSMLewBTOLnCXuIszB/LQyP\nKZjXnD1rH9ZKJftLW156pKRJo4tYqkJpAlH+gmBUiN8JsJ4IkahB7IUXCjNurF27wtfzuxNGdTjM\nc+MxXz5jwm/3YERP1AMY189j2wYQ+vuw9r5xOXFiPs9MkjMR8QhVm8Hm/T4PoxFtf4OoD6WBNMsO\nOzhY4o47Ojh+PDxM1R8UL710aWg13aj6QJV5HJXbDK5Xb++IWs6fTb5CwaG9HS5cAJFpeeqpC+bL\nV8s2bHJWo63N3n9FCcPup4y6Pg8/vJTNm2cvz0MyIdifjSxqfqkPZZ7jh0XabPj+20pPT/jvo0xF\ncd6Amtk7wiaf47jl+INtdgcHS7ETLKPeVmtJ0qy102P+lUm+Xli7uuzyRIXS22bveTeTNTq/SxXK\nPKLaQLdjR/jvonwncQZP22B5xx3Z91VJEma9Z097rAfQpiD375+9btg2wpRRVNvhYjFfg3IyGqXw\nnEByop1bbx2zmhcPHbJHAA4NhS/PW4O9ynvr2mvDlWRW/tB8nQ0lU6oNdJs2hdv4o6b0cQZg20N3\n/Hgx81lKkjexY8eKsRzvNgV5553uv1HbsCmjVavCB8LOTsfadVCZ9n/5yYi2WXjQD2jzO0Uph1pm\n740m7N4aGGinr2+8IT3rQRXKvCLOYJm0VIRtm0ePFqfevqMeuqxNBkkiq+IODraBx/YW6/OP/9jG\ntm3hYVmjo+GD3PBwMbJz4Hymp2dyVka77Xrv3Xt+ar1azEC1zN7TIEkggO1F59ChtoaVf9E7dR6R\nRTZ6cJtB00zQN2GbdkP2JgNbO98whoaK3Hxz9dpetoHHf4u1PdjT7ZRnc+GC3TTUnm8zfa6Ic4/b\nlM7QkFvWPmzQDpu9+22hs4r6Sup7bFaB1SAa5dVAWj3bNiq66YUXCqElT5Jk/qd5/qYj3+I9bMGo\nGFtE1v33w8aNL7Fq1RJrLbRaKBYdyuW8O98bTz2VG3bs6ODeexdYFXlf3zi7do1Nfa689+JGN9ZD\nkmjBFSuW0tMzmWnn0sC+NMpLyZ6oN6TbbhsL/S4Lk0EcM0Fv7wRLl8Z/pwjOSvy3YNe5O12c0Cft\nGUW5DJddVt3hPN+wlZ6vvP47dnSwbt1FrFy5hJUrlyByEQMD7ZGzwqhad9CY/I6kM448NN1ShaKk\nRpRtuhHFH8FuJrjqqotmKZgkvokXXijM+v3wsF+by201sHmzu/8LF+LLG69Crj+701lKkImJ2RUN\nbI7p4LWKW+8rSjkkGezDFFwcv0hSX0+jnrEo1OTVQFrd5JW1GSCOfHELQLoFFe0DRkeHw+Sk2388\nzCzW2Vn2BqmZ9PRM4jjELkJZTQ4lGZddVo5VTToOQTNn5b0X1xwVN2E1quJCnHW1OKTScjTzDcl/\nCzxyJN4tfd99CyK/37v3PCMjZ6xmMVurgajQ4yCdnW64665dY4EGT3GYny+AcRkZSW8WFxX1Fde8\nFDdhNWw2lIcZR1LyX4xGmVME25I2ilrKloyFu3QAh337pkNMk0bI+OY9v/WrrWT98HBhRkO1uDW5\nCoX4fdOV+ojyPcRtCx33/rGt14znqR5UoShznlrKlnR0hCuVzk5nqkjk7t3tobXNXMIVwNGjRUQu\n4vTpAt3d5QgFUGB4uJBYEaoyiWbBAhL5sIJ0dZU5caIQu/d7nMG+u7scy/yZpwTJelCTlzLnqSXO\n/sYbw0ed4eEiO3Z0VG0RDH4p9JkjfLnsOn19h3Ca4cMuBfr6xrnkEo36CsP+AuAE/sJZtsxJPfkv\nbmLtXG8N4aMKRZnzxH+7m7ZD79plr+lUzb/iMzERXr05ax54oMTzz8eN+ooeROcyYSVFbGVqenrK\nPPvsmcgmZ1kkANoSa+eSXyQJavJS5jzbt4/HMh319JRnRODY/BZ2/0o+iN/mFlo11LhYdGYkHgYJ\nuxf8GUDUvZKV2Wmu+UHqQWcoypyn8i3QFjFVaVawDSAd2RdBVurE1o66t3eCvr5xOjrcmVlHh0Nf\n37Q/xP8+jFYxOzUTVShKS1DZ6TJOuKXNvm3zr/jtmN3BKu/MBRlrxzb4Dw6WAjXT3J43AwPt7Ngx\n/Zbgh2q3qtmpmWhiYwNp9cTGrMlCvsHBUmjop225/5tauisq9eLQ01Nm/fpJDh5sC+3+GZXYWo/S\nqLz3duzo4L77FjA25s5ob7zxgtUE1wjyktioCqWBzMcBO03yJJ+vcGx5Jkr6FIsO99xzPjJ73Nby\nFuorkhi893bs6AitblBZULKR5EWhqMlLUWrAN7Ht23e+2aLMGxYsqF6UMcqxnlYUly0KMG50YCuj\nCkVR6iAYENAWr3yXUiMXLlQvyhiV95FWFJctCjDv0YGNQBWKotSJP1uZmJhuwhSvirCShCuuKFet\nwFtvFFec1gclS7KFRgeqQlGUVPGVy8mTZ2ZFEi1f3hrlNZrF+vWTsYoy1hrFFadD4uBgyUtonY0t\nOnA+oU75BpInp3IYKl99VJNPo8Pqo6urzOHDZyMj8OohqiT997/fxujoS9Z1LrmkzNGjZ+uWoVby\n4pRvaKa8iBSA48C/eIseN8bcIiJvAPYAE8BDxpjbvfVvA37JW77dGPOkiPwM8BfAImAEeK8x5pyI\n/DLwCW/dLxhj/rSRx6Yo1QirULt+/SSHDrXN+Jy//igOeYhkO37clSGrzPM4TbNs65w+3fzzkwca\nXXrl1cBhY8wvVyz/HPBO4EfA34rIOtw7eANwDbAGeAC4Gldp/IUx5ksi8lFgq4jcBfyJ9/1Z4KCI\n/E9jzMlGHJSixCXOYHj11ZPs3NkR2sCrOcyPwdJWGdj1z7TFWEdp9B37eqBTRB4Rka+LyzKgwxjz\nQ2OMA3wDuB54E+5sxTHG/BgoicgKb/nfedt70Fv3SuAHxphTxphx4DHgLQ0+NkVJhd7eCZ566uys\nvvWtnv3ebOL4Z669NrycsZZtcclshiIivwP8bsXim4E7jTH/XUTeBHwZ6AVOB9Z5CXgVcB54rmL5\nxcAy4MWIZcHlVpYvX0yp1Pg4zxUrljZ8n0lQ+eojTfm2bHH/guzfD3feCUNDcPHF8Nxz4b+dyyxZ\nAmfOzF7+ilcUePjhpeza5R5/Tw/s2AGbNqWz3y1bYNmy6fPb0wO33AKbNrl+r4cfXsrAwOzf/ef/\nDFu2NN83lodnIzOFYoz5M+DPgstEZDGujwNjzGMichnu4B88E0uBF4Bxy/LT3v9fDllWua6VU6dq\ny5ith7nuVG42Kh9s3Oj++fgO6qNHi7S1TTeXKpXc3iDp92PJnrNnw302b33rOJs3T/uXnn4aNm+G\nD32ozG23uUkgu3e3h5ZkiUvl+QUYHXWv7c6dk/imryAPPzzJ6Gjjx5MgDXbKW79rtMnrNmA7gIi8\nDnjGGPMiMC4ir/ac9jcAjwIHgRtEpCgirwCKxpifesvf4W3v7d66R4DLReQSEWnHNXc93sgDU5Rm\n4IcpnzhxhuHhMzz7rPs3MnKGkyfPWHMy8kxQCRYK02G/Bw+GWxRGRops3bqoashvvcRx2s93Gn0m\n/hDYICL/AHwGeI+3/P3AV4AngaeMMU8YY76Dqywex3XI3+yt+0lgk4gcBN4I3GWMuQD8Hq7/5XHc\nKK/hxhySouSXYE5GoQBzzRfjOIWpsOBaBm6/JEsaVEuqVDQPpaGoyaY+VL76CMoXzOVYvdrBceAn\nPylQLufPRFYoOPzO71zg4MG2WP3ZZ+Jw2WUOhQJT/eJrMYU9/PBSPvShMiMjs5VaHkrfz8s8FEVR\n8oEtfNlXNEeOFHPjf3Ect6dJT4+1YXwEBUZGpo/DN4VBfCXgJqRCpUGnq6vMrbeONV2Z5Ak1/imK\nMoWtdExXV9krHePQrDDmoaE2CgWHBQvq328SU9jtt4cX6Vq2zFFlUoHOUBRFCSVOEubgYMlLwqyc\nzWQzu3GcwlQk2yWXlHn++dreieP6YwYHS6FmriTbmE/oGVEUpWb8JEw/usz/q5zdZMHq1Q779r1c\nU0vmVavi/cbWfwXUGR+GKhRFUVLHN52NjJzh8GE36z/tasvHjhXp7Z1g797kTc6Gh4tTIcVRJeuj\nZiGaHT8bVSiKomROb+8ExpydmrkUi443s3Cmese4/04vr0awB0plufq+vvGpz6VS+La2bl3IunUX\nReav2GYhXV3lWP6TOP1VWonWPjpFUXKFzS/jhr3OrLcSrAIQFs4cnCFE+XsuvXSJRZpCiO/HZc+e\ndnp7J9i+fTy05cCtt1Zvz1jZrqCWCLO5hs5QFEXJJcEqALU0zPKpxdcRNHW5BToBHDo7y1X37c9K\ntm5dGPp9msmWeUMViqIouSfokzlw4FyiN/yoPvM2urvLUzOM6TYCBYaHi+zc2WE1YQW7Ptoi3Vo5\nOqx1j0xRFIWZPpa4uTP9/ePWCK/h4aK1XlhUVJhPK0eHqUJRFKXl8Wc4+/aFR4R1dpZnmdPiziSC\nJqw4v2nl6DB1yiuKMm8Ia8Ns60lv685YSVCJ2H/j0NNj31eroApFUZR5Rdye9LYIr0qCJizbb/bt\nO9/SisRHTV6KoighzMxvCUZ7zaQyfLmeiLS5js5QFEVRLPizGTdP5uyMsv82c1ncGVArogpFURQl\nJvNZWcRBTV6KoihKKqhCURRFUVJBFYqiKIqSCqpQFEVRlFRQhaIoiqKkQsFxGtsXWlEURWlNdIai\nKIqipIIqFEVRFCUVVKEoiqIoqaAKRVEURUkFVSiKoihKKqhCURRFUVJBFYqiKIqSClptuA5E5Brg\nj4wx14nIa4Av4Tat/h5wszGmLCLvA7YCE8AnjTFfE5FFwJeBlcBLwLuNMaMi8gZgj7fuQ8aY22uU\nawHwBeCVQAfwSWAoR/K1AX8KiCfP+4HzeZEvIOdK4DvAv/e2mRv5ROQwcNr7+H+AP8iZfLcAvwK0\nA58F/iEv8onIe4D3eB8XAlcBbwJ250S+BcC9uM/vJPA+cnb/2dAZSo2IyIeBAdwbEuAzwMeNMW8G\nCsCvishqYBtwLXADcKeIdAAfAJ721v1z4OPeNj4H/AbuzX2NiKyrUbzfBJ7ztv824K6cyffLAMaY\na71t/0HO5PMf6n3Ay96i3MgnIguBgjHmOu/vvTmT7zpgvbffDcCaPMlnjPmSf+5wXxi2AZ/Ii3zA\nO4CSMWY9sJMcPh82VKHUzg+BXwt8fj3uWxjAg8D1wM8DB40xY8aYF4EfAGtxL+jfBdcVkWVAhzHm\nh8YYB/iGt41a+O/Ard7/C7hvJLmRzxjz18AW7+O/AV7Ik3wef4z7AI54n/Mk3+uAxSLykIh8y3vz\nzJN8NwBPA4PA3wBfy5l8AIjIzwE/a4z5fM7kOwaURKQILAMu5Ew+K6pQasQY8wDuhfYpeBcK3Gnm\nxbg3w4uBdcKWB5edDlm3FtnOGGNeEpGlwF/hvqHkRj5PxgkRuRf4r8BX8iSfZxIZNcZ8I7A4N/IB\n53AV3g245sJcnT/gZ4CfA94VkK+YI/l8dgC+2SdP5+8MrrnrKK5peG/O5LOiCiU9gg2nl+K+dZ/2\n/h+1vNq6NSEia4BHgPuMMX+RN/kAjDHvBrpxH5pFOZLvt4F/LyIHcO3rf45rj86LfMeALxtjHGPM\nMeA5YFWO5HsO+IYxZtwYY3D9Y8HBq9nyISL/ChBjzCPeojw9H7+Le/66cWej9+L6ovIinxVVKOnx\nlGc7Bng78CjwJPBmEVkoIhcDV+I61A7i2kmn1jXGnAbGReTVIlLAfft8tBZBRGQV8BDwEWPMF3Io\n342e0xbct+0y8L/zIp8x5i3GmA2ejf2fgN8CHsyLfLgK79MAInIZ7tvnQzmS7zHgbSJS8OS7CHg4\nR/IBvAV4OPA5N88HcIrpGcbzwIKcyWdFo7zS40PAn4pIO3AE+CtjzKSI7MW9cEXgY8aY8yJyD3Cv\niDwGjOM6ymDaPNCGG4XxRI2y7ACWA7eKiO9L6Qf25kS+rwJfFJFv4z4s2z2Z8nL+wsjT9f0z4Eve\n9h1cBfPTvMjnRRq9BXfAKwI340ai5UI+DwF+FPicp+v7J8AXRORR3JnJDuB/50g+K1q+XlEURUkF\nNXkpiqIoqaAKRVEURUkFVSiKoihKKqhCURRFUVJBFYqiKIqSCqpQFCUniMiXROQ9InKZiHy9yrqP\nRH0fsv51XqKmomSG5qEoSs4wxowwnZhm47oGiKIoiVCFoih14GUv345b120NbjLfJ4H/gZtseB43\nK/n/w1UCbcCXjDF/4mUsfxr4f3CLULYBB0TklcABY8wrReTfAF/ELf1yDujz/hCRJ4wx14jI23Cr\n0i7ATSB8nzHmORF5K26S3HnculCKkilq8lKU+vl53GzwK3DbGfwSbib2bxpjrsftZ4Ex5t956/6q\niLwZeCewDvhZ3EKKrwnZ9meBB4wx/xb4fdwS5tu87V0jIiuAPwRuMMasw60i+0deGfN7gf9ojHk9\n02X4FSUzdIaiKPXzba8IIiJyH25p/meNMf+/9/31wFUi8ove5yXAa4Ee4KvGmAvAqMVvsgHYDGCM\n+TpQuc41wCuAR0QE3FnO8972R4wxR7z17gXuqPM4FSUSVSiKUj8Tgf8Xvc/BGUEb8GFjzFcBRORn\ngLPAp5hpJQhux2eqRYJnIrvSGDNUse3HjDG/4q2zELeS7CtibFtRUkVNXopSP28SkU6vIdJv4TY1\nCvIt4H0iskBEluBW470G+CbwLhHpEJHluN01K/k2sMn7//XA573/T4pICXgCeKOIdHvLb8X11/wz\nsFJEXuct31z3USpKFXSGoij1M4LbM6UT+HtcRXFL4PvPAZcDT+E+c180xhwAEJGrcUuOnwCCMw+f\nDwIDInIT0055cJ3+38Xt5PfbwF+KSBtwHNd3c0FENgP3icgEcDi1o1UUC1ptWFHqwIvy+n2vd4qi\nzGvU5KUoiqKkgs5QFEVRlFTQGYqiKIqSCqpQFEVRlFRQhaIoiqKkgioURVEUJRVUoSiKoiip8H8B\njOvCaBYdmWQAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "### We can plot how far our predictions are from the actual values compaired to the\n", + "### predicted values - you can see that it isn't uncommon for us to miss salaries by\n", + "### 150000 and the overpredictions tend to be much worse than the underpredictions\n", + "### THere also appears to be a trend where our differences decrease as the predicted\n", + "### values increase on the test data.\n", + "\n", + "plt.plot(preds_vs_act['preds'], preds_vs_act['diff'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('difference');" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.00797379867968\n", + "399198781.217\n" + ] + } + ], + "source": [ + "#______Video 2 ____Our First Modeling Attempt (Mark all the bad things)________#\n", + "\n", + "\n", + "\n", + "### There are tons of downfalls already - our predictions are pretty poor, we have predictions\n", + "### for only 20% of the total values that actually hold salaries, and we are only using \n", + "### quantitative variables to predict.\n", + "\n", + "### Given how bad the predictions are, we might not hurt anything by just filling the missing \n", + "### values to make more predictions.\n", + "\n", + "#Here we fill on the column means\n", + "df_fillna = num_vars.apply(lambda x: x.fillna(x.mean()),axis=0)\n", + "\n", + "X = df_fillna[['CareerSatisfaction', 'HoursPerWeek', 'JobSatisfaction', 'StackOverflowSatisfaction']]\n", + "y = df_fillna['Salary']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .30, random_state=42)\n", + "\n", + "lm_model = LinearRegression(normalize=True) # Here you could set any hyperparameters of your model\n", + "lm_model.fit(X_train, y_train) # If this model was to predict for new individuals, we probably would want\n", + " # worry about train/test splits and cross-validation, but for now I am most \n", + " # interested in finding a model that just fits all of the data well\n", + "\n", + " \n", + "y_test_preds = lm_model.predict(X_test) #We can then use our fitted model to predict the salary for each\n", + " #indvidual in our test set, and see how well these predictions\n", + " #match the truth.\n", + "\n", + "print(r2_score(y_test, y_test_preds)) #In this case we are predicting a continuous, numeric response. Therefore, common\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(51392, 4)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "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", + "
actualpredsdiff
056298.48064152365.5430373932.937604
156298.48064157685.877281-1387.396641
256298.48064156262.40980136.070840
356298.48064155896.141349402.339292
456298.48064155014.5348751283.945765
\n", + "
" + ], + "text/plain": [ + " actual preds diff\n", + "0 56298.480641 52365.543037 3932.937604\n", + "1 56298.480641 57685.877281 -1387.396641\n", + "2 56298.480641 56262.409801 36.070840\n", + "3 56298.480641 55896.141349 402.339292\n", + "4 56298.480641 55014.534875 1283.945765" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "### Now we can predict on everything, but our predictions are even worse!\n", + "\n", + "preds_vs_act = pd.DataFrame(np.hstack([y_test.values.reshape(y_test.size,1), y_test_preds.reshape(y_test.size,1)]))\n", + "preds_vs_act.columns = ['actual', 'preds']\n", + "preds_vs_act['diff'] = preds_vs_act['actual'] - preds_vs_act['preds']\n", + "preds_vs_act.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nBx6FpcRotsxGAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(preds_vs_act['preds'], preds_vs_act['diff'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('difference');" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nhJA4939YOpgvRxIGVAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(preds_vs_act['preds'], preds_vs_act['actual'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('actual'); #This looks less compelling that we are predicting well...\n", + "# I also think I found the mean amount...which aren't real 'actual' salaries" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(12891, 5)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "### Some strange line here - probably because we filled in our average for everything\n", + "### Which was actually data leakage. We shouldn't have done this at all. We would likely\n", + "### Have to use the mean of the old data to fill in the missing of the future data...\n", + "\n", + "### But this does depend a bit - if on future homes, you will have the x-variables before\n", + "### having to predict, this really isn't data leakage, as you would have the abiltiy to update\n", + "### the inputed means with each new individual in your dataset.\n", + "\n", + "### Really the values that have the mean value for the salary should be dropped - because\n", + "### those are not true salaries.\n", + "\n", + "df_fillna = df_fillna.drop(df_fillna[df_fillna['Salary'] == np.mean(df['Salary'])].index)\n", + "df_fillna.shape # that's better. we only have this many non-null salaries in our original dataset\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#Below you can fit a new model with the missing salaries removed" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0386731875127\n", + "1489423021.69\n" + ] + } + ], + "source": [ + "X = df_fillna[['CareerSatisfaction', 'HoursPerWeek', 'JobSatisfaction', 'StackOverflowSatisfaction']]\n", + "y = df_fillna['Salary']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .30, random_state=42)\n", + "\n", + "lm_model = LinearRegression(normalize=True) # Here you could set any hyperparameters of your model\n", + "lm_model.fit(X_train, y_train) # If this model was to predict for new individuals, we probably would want\n", + " # worry about train/test splits and cross-validation, but for now I am most \n", + " # interested in finding a model that just fits all of the data well\n", + "\n", + " \n", + "y_test_preds = lm_model.predict(X_test) #We can then use our fitted model to predict the salary for each\n", + " #indvidual in our test set, and see how well these predictions\n", + " #match the truth.\n", + "\n", + "print(r2_score(y_test, y_test_preds)) #In this case we are predicting a continuous, numeric response. Therefore, common\n", + "print(mean_squared_error(y_test, y_test_preds)) #metrics to assess fit include Rsquared and MSE. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3868, 3)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "##### Stop Video 2\n", + "\n", + "\n", + "\n", + "### Now we can predict on everything, but our predictions are even worse!\n", + "\n", + "preds_vs_act = pd.DataFrame(np.hstack([y_test.values.reshape(y_test.size,1), y_test_preds.reshape(y_test.size,1)]))\n", + "preds_vs_act.columns = ['actual', 'preds']\n", + "preds_vs_act['diff'] = preds_vs_act['actual'] - preds_vs_act['preds']\n", + "preds_vs_act.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nJnDPPffgQx/6kGvHAwDxeBxf/epX8Yc//AGCIGDHjh0IBAKuHhMAvPfee7j99tvx7W9/G36/39Xj\nCYVCqKqqAgA0Njbin/7pn1w9HgDo6enBL3/5S0xOTmLNmjW44YYbXDumH/3oRwiHwwCAaDSKgYH/\n3979x0Rdx3Ecfx4cgvJLtPAfhjtouhzTpWSiBG06qA1luihng5w/hknzR0FARunuhgLqBrY001Zh\nZEjEH7Zabi6UIadjQ43ETcZsAl0SLjkkjrt794fzkpluFdK+3vvx193nPnz2eX358uX9/Xxv3+8l\nampqKC0tNWQeuH2sKyoqoru7m4CAAKxWq+H/jsaEqH/t4MGDkpGRIVlZWSIikpubKy0tLSIiUlJS\nIt9//738+uuvkpGRIcPDw3Lz5k3f648//liqqqpEROT48eNitVpFRGTZsmVy9epV8Xq9sm7dOmlv\nbx+XLHV1dWKz2URE5MaNG5KammroPCIiJ06ckKKiIhERaWlpkQ0bNhg+k8vlko0bN0paWppcuXLF\n0Hn++OMPyczMHNVm5Dwit/ez3Nxc8Xg84nQ6paqqyvCZ7ti+fbscPXrU8HlOnDghmzZtEhGRpqYm\nef311w2faSzoZYL/IDY2ln379vnet7e3M3/+fABSUlJobm7mwoULPPXUU0yYMIHw8HBiY2Pp6Oig\ntbWVZ5991tf3zJkzOJ1OXC4XsbGxmEwmkpOTaW5uHpcszz//PJs3bwZARAgMDDR0HoAlS5ZgtVoB\n6OnpISIiwvCZysrKWLlyJdHR0YCx97mOjg6GhoZYs2YNOTk5tLW1GToPQFNTEzNmzCAvL48NGzbw\n3HPPGT4TwMWLF7ly5Qovv/yy4fNYLBY8Hg9erxen04nZbDZ8prGgxcB/kJ6ejtn815UWEcFkMgEQ\nGhrKwMAATqeT8PBwX5/Q0FCcTueo9rv73lkyvbt9PISGhhIWFobT6WTTpk1s2bLF0HnuMJvNFBYW\nYrVaWbp0qaEz1dfXM2XKFN+BCIy9z4WEhLB27VoOHz7Mjh07yM/PN3QegBs3bvDjjz9SWVn5yGSC\n25c+8vLyAGPvcwCTJk2iu7ubF154gZKSErKzsw2faSzodwbGUEDAX7XV4OAgERERhIWFMTg4OKo9\nPDx8VPuD+kZERIzb/Ht7e8nLy2PVqlUsXbqUiooKQ+e5o6ysjPz8fF566SWGh4fvmY9RMn311VeY\nTCbOnDnDpUuXKCwspL+/37B5LBYL06dPx2QyYbFYmDx5Mu3t7YbNAzB58mTi4uKYMGECcXFxQthd\n9wAABZlJREFUBAcH88svvxg6082bN+nq6mLBggWA8Y9zn3zyCcnJybz55pv09vby6quvMjIyYuhM\nY0FXBsbQrFmzsNvtAJw6dYrExERmz55Na2srw8PDDAwM0NnZyYwZM5g7dy6NjY2+vvPmzSMsLIyg\noCB+/vlnRISmpiYSExPHZe59fX2sWbOGgoICXnzxRcPnAWhoaODDDz8EYOLEiZhMJhISEgyb6fPP\nP+fIkSNUV1fz5JNPUlZWRkpKimHz1NXVsWvXLgAcDgdOp5NFixYZNg/AvHnzOH36NCKCw+FgaGiI\npKQkQ2c6d+4cSUlJvvdGPy5ERET4zuwjIyNxu92GzzQW9EFF/9G1a9d44403qK2tpauri5KSEkZG\nRoiLi8NmsxEYGEhtbS1ffvklIkJubi7p6ekMDQ1RWFjI9evXCQoKYs+ePTz++OO0tbVRWlqKx+Mh\nOTmZrVu3jksOm83Gt99+S1xcnK9t27Zt2Gw2Q+YBuHXrFsXFxfT19eF2u1m/fj3x8fGG/R3dLTs7\nm+3btxMQEGDYPC6Xi+LiYnp6ejCZTOTn5xMVFWXYPHeUl5djt9sREbZu3UpMTIyhMx06dAiz2czq\n1asBDH2cg9tn7W+//TbXr19nZGSEnJwcEhISDJ1pLGgxoJRSSvk5vUyglFJK+TktBpRSSik/p8WA\nUkop5ee0GFBKKaX8nBYDSimllJ/TYkAp9dAVFRVRX1+Pw+Fg/fr1D+ybnZ39j8a22+3/+GeUUqNp\nMaCUGjfTpk3jo48+emCfs2fPjtNslFJ36O2IlVJ/y263s2/fPsxmM729vcyePZvXXnuNjRs3EhUV\nRXBwMIcPH6a8vJyzZ8/i8XhYsWIFq1evRkTYtWsXP/zwA9HR0Xg8HubPn8+1a9fIycnh5MmTdHd3\nU1xcTH9/PyEhIdhsNurq6gDIysri2LFjnDp1iqqqKtxuNzExMVitVqKiomhqamLnzp0EBwdjsVj+\n5y2llPFpMaCUuq8LFy7Q0NCAxWJh8+bNNDY20tXVxaFDh4iJieGLL74A4Ouvv8blcrF27VoSEhLo\n6+vjp59+4vjx4wwMDLBs2bJ7xt6xYwfp6em88sorNDY2sn//fiorK6murubYsWP09/ezZ88ePvvs\nMyIjIzl69Ci7d+/mvffeo6ioiE8//ZT4+Hi2bds23ptFqUeOFgNKqft6+umnfbeozszMpLa2lqlT\npxITEwPge2hSS0sLcPsW0JcvX6azs5O0tDSCgoKYMmUKKSkp94x97tw59u7dC0BqaiqpqamjPj9/\n/jy9vb3k5OQA4PV6iYyM5PLly0RHRxMfHw/A8uXLqaysfDgbQCk/ocWAUuq+AgMDfa9FhMDAQEJC\nQnxtHo+HgoIC0tLSAOjv72fSpElUVFTg9Xp9/e5+1PfftYkInZ2dPPHEE6PGnjt3LgcOHABgeHiY\nwcFBenp6Ro199xyVUv+OfoFQKXVfra2tOBwOvF4vDQ0N95zhL1iwgNraWkZGRhgcHGTVqlWcP3+e\npKQkvvvuO1wuF7///junT5++Z+zExES++eYbAJqbmykpKQFu/3N3u93MmTOHtrY2urq6APjggw8o\nLy9n5syZ/Pbbb3R0dAD4xlBK/Xu6MqCUuq/o6GjeeustHA4HixYtYuHChRw8eND3+cqVK7l69SrL\nly/H7XazYsUKnnnmGQAuXrxIRkYGjz32mG9J/27vvvsu77zzDjU1NUycOBGbzQbA4sWLyczMpL6+\nntLSUrZs2YLX62XatGlUVFQQFBTE3r17KSgowGw2M2vWrPHZGEo9wvSphUqpv2W323n//feprq7+\nv6eilHrI9DKBUkop5ed0ZUAppZTyc7oyoJRSSvk5LQaUUkopP6fFgFJKKeXntBhQSiml/JwWA0op\npZSf02JAKaWU8nN/Aj1bxLV0udFmAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(preds_vs_act['preds'], preds_vs_act['diff'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('difference');" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n7lE8uL3mmAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "### When we see fan like shapes in the residual plots like this - it often suggests\n", + "### we might make better predictions on the log of the response\n", + "\n", + "plt.plot(preds_vs_act['preds'], preds_vs_act['actual'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('actual'); #there appears to be a slight positive trend like we would want to see" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "146" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#______Video 3 Fill in Missing values with the mean - why this is bad_______#\n", + "\n", + "\n", + "### Let's see how we might be able to use categorical variables in our models.\n", + "### Though you might try to do something smart to reduce the feature space of your\n", + "### x-matrix (like find curved relationships that exist in salary comparing across categories).\n", + "### It is probably easier to just blindly encode all of the categorical variables as dummy\n", + "### variables in our models.\n", + "\n", + "cat_vars_int = df.select_dtypes(include=['object']).copy().columns\n", + "# http://pbpython.com/categorical-encoding.html\n", + "\n", + "len(cat_vars_int)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "### Now that we have a list of all the dummy variables we might be interested in... \n", + "### Let's dummy code them, so that we can use them in our machine learning models\n", + "### you can do this with pandas (get dummies) or with sklearn (one hot encoding)\n", + "### Feel free to use whatever you are comfortable with" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
RespondentCareerSatisfactionJobSatisfactionHoursPerWeekStackOverflowSatisfactionSalaryExpectedSalaryProfessional_Professional developerProfessional_Professional non-developer who sometimes writes codeProfessional_Student...SurveyLong_Strongly agreeSurveyLong_Strongly disagreeQuestionsInteresting_DisagreeQuestionsInteresting_Somewhat agreeQuestionsInteresting_Strongly agreeQuestionsInteresting_Strongly disagreeQuestionsConfusing_DisagreeQuestionsConfusing_Somewhat agreeQuestionsConfusing_Strongly agreeQuestionsConfusing_Strongly disagree
count51392.00000042695.00000040376.00000020600.00000036592.00000012891.0000002566.00000051392.00000051392.00000051392.000000...51392.00000051392.00000051392.00000051392.00000051392.00000051392.00000051392.00000051392.00000051392.00000051392.000000
mean25696.5000007.3005746.9570783.9522828.42987556298.48064133142.2204680.7030470.1000160.160025...0.1139090.0206260.0365040.2616750.0563710.0049420.4077480.0626560.0031910.184795
std14835.7368541.9554442.1676527.5647221.39063539880.90527730162.9888290.4569200.3000240.366633...0.3177040.1421290.1875420.4395510.2306380.0701290.4914210.2423450.0564010.388135
min1.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
25%12848.7500006.0000006.0000001.0000008.00000026440.3718394490.4924840.0000000.0000000.000000...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
50%25696.5000008.0000007.0000001.0000009.00000050000.00000029364.2636911.0000000.0000000.000000...0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
75%38544.2500009.0000008.0000004.00000010.00000080000.00000050403.2258061.0000000.0000000.000000...0.0000000.0000000.0000001.0000000.0000000.0000001.0000000.0000000.0000000.000000
max51392.00000010.00000010.00000040.00000010.000000197000.000000187500.0000001.0000001.0000001.000000...1.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.0000001.000000
\n", + "

8 rows × 42341 columns

\n", + "
" + ], + "text/plain": [ + " Respondent CareerSatisfaction JobSatisfaction HoursPerWeek \\\n", + "count 51392.000000 42695.000000 40376.000000 20600.000000 \n", + "mean 25696.500000 7.300574 6.957078 3.952282 \n", + "std 14835.736854 1.955444 2.167652 7.564722 \n", + "min 1.000000 0.000000 0.000000 0.000000 \n", + "25% 12848.750000 6.000000 6.000000 1.000000 \n", + "50% 25696.500000 8.000000 7.000000 1.000000 \n", + "75% 38544.250000 9.000000 8.000000 4.000000 \n", + "max 51392.000000 10.000000 10.000000 40.000000 \n", + "\n", + " StackOverflowSatisfaction Salary ExpectedSalary \\\n", + "count 36592.000000 12891.000000 2566.000000 \n", + "mean 8.429875 56298.480641 33142.220468 \n", + "std 1.390635 39880.905277 30162.988829 \n", + "min 0.000000 0.000000 0.000000 \n", + "25% 8.000000 26440.371839 4490.492484 \n", + "50% 9.000000 50000.000000 29364.263691 \n", + "75% 10.000000 80000.000000 50403.225806 \n", + "max 10.000000 197000.000000 187500.000000 \n", + "\n", + " Professional_Professional developer \\\n", + "count 51392.000000 \n", + "mean 0.703047 \n", + "std 0.456920 \n", + "min 0.000000 \n", + "25% 0.000000 \n", + "50% 1.000000 \n", + "75% 1.000000 \n", + "max 1.000000 \n", + "\n", + " Professional_Professional non-developer who sometimes writes code \\\n", + "count 51392.000000 \n", + "mean 0.100016 \n", + "std 0.300024 \n", + "min 0.000000 \n", + "25% 0.000000 \n", + "50% 0.000000 \n", + "75% 0.000000 \n", + "max 1.000000 \n", + "\n", + " Professional_Student ... \\\n", + "count 51392.000000 ... \n", + "mean 0.160025 ... \n", + "std 0.366633 ... \n", + "min 0.000000 ... \n", + "25% 0.000000 ... \n", + "50% 0.000000 ... \n", + "75% 0.000000 ... \n", + "max 1.000000 ... \n", + "\n", + " SurveyLong_Strongly agree SurveyLong_Strongly disagree \\\n", + "count 51392.000000 51392.000000 \n", + "mean 0.113909 0.020626 \n", + "std 0.317704 0.142129 \n", + "min 0.000000 0.000000 \n", + "25% 0.000000 0.000000 \n", + "50% 0.000000 0.000000 \n", + "75% 0.000000 0.000000 \n", + "max 1.000000 1.000000 \n", + "\n", + " QuestionsInteresting_Disagree QuestionsInteresting_Somewhat agree \\\n", + "count 51392.000000 51392.000000 \n", + "mean 0.036504 0.261675 \n", + "std 0.187542 0.439551 \n", + "min 0.000000 0.000000 \n", + "25% 0.000000 0.000000 \n", + "50% 0.000000 0.000000 \n", + "75% 0.000000 1.000000 \n", + "max 1.000000 1.000000 \n", + "\n", + " QuestionsInteresting_Strongly agree \\\n", + "count 51392.000000 \n", + "mean 0.056371 \n", + "std 0.230638 \n", + "min 0.000000 \n", + "25% 0.000000 \n", + "50% 0.000000 \n", + "75% 0.000000 \n", + "max 1.000000 \n", + "\n", + " QuestionsInteresting_Strongly disagree QuestionsConfusing_Disagree \\\n", + "count 51392.000000 51392.000000 \n", + "mean 0.004942 0.407748 \n", + "std 0.070129 0.491421 \n", + "min 0.000000 0.000000 \n", + "25% 0.000000 0.000000 \n", + "50% 0.000000 0.000000 \n", + "75% 0.000000 1.000000 \n", + "max 1.000000 1.000000 \n", + "\n", + " QuestionsConfusing_Somewhat agree QuestionsConfusing_Strongly agree \\\n", + "count 51392.000000 51392.000000 \n", + "mean 0.062656 0.003191 \n", + "std 0.242345 0.056401 \n", + "min 0.000000 0.000000 \n", + "25% 0.000000 0.000000 \n", + "50% 0.000000 0.000000 \n", + "75% 0.000000 0.000000 \n", + "max 1.000000 1.000000 \n", + "\n", + " QuestionsConfusing_Strongly disagree \n", + "count 51392.000000 \n", + "mean 0.184795 \n", + "std 0.388135 \n", + "min 0.000000 \n", + "25% 0.000000 \n", + "50% 0.000000 \n", + "75% 0.000000 \n", + "max 1.000000 \n", + "\n", + "[8 rows x 42341 columns]" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "for var in cat_vars_int:\n", + " # for each cat add dummy var, drop original column\n", + " df = pd.concat([df.drop(var, axis=1), pd.get_dummies(df[var], prefix=var, prefix_sep='_', drop_first=True)], axis=1)\n", + "\n", + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "\n", + "\n", + "### Because we have more rows than number of variables, it is actually possible\n", + "### for us to build a model that uses all of the columns to predict the response...\n", + "### Whether this is actually a good idea or not is up for debate - let's maybe\n", + "### choose some variables that seem like they might be related to salary and go from there.\n", + "\n", + "### You can also see that the nulls are still dropped after dummy encoding, which means\n", + "### we will again need to figure out what to do with rows where those values are null.\n", + "### It might be okay to just use the mode of the dataset to fill in those values - though\n", + "### in reality, a lack of answer is maybe an indication that your answer is different \n", + "### from the group and therefore, you didn't want to answer the question.\n", + "\n", + "### We know there are 12891 non-NaN salaries to predict based on the previous model - so we\n", + "### want to make sure we can predict all of these salaries with our new model as well, but now\n", + "### unlike the 5 columns we had to choose from before we have more than 40,000 to choose from.\n", + "### This could be a great place for some PCA or PLS, but I would like to try and keep \n", + "### the interpretability of the features as much as possible... so I am just going to\n", + "### use the original features. \n", + "\n", + "### We could try even adding interactions or other combinations of these features, but again\n", + "### this would make our features less interpretable. So you have to weigh the pros and cons\n", + "### of adding these features." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(12891, 42347)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_result = pd.concat([df, df_fillna], axis=1, join='inner')\n", + "df_result.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SalarySalary
2113750.0113750.0
14100000.0100000.0
17130000.0130000.0
1882500.082500.0
22100764.0100764.0
\n", + "
" + ], + "text/plain": [ + " Salary Salary\n", + "2 113750.0 113750.0\n", + "14 100000.0 100000.0\n", + "17 130000.0 130000.0\n", + "18 82500.0 82500.0\n", + "22 100764.0 100764.0" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_result['Salary'].head()['Salary']" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "df_result = df_result.iloc[:,~df_result.columns.duplicated()]" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(12891, 42342)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_result.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "### Now we have no duplicated columns, we can focus on which of our new columns (and the \n", + "### previously used columns) we would like to use to try and predict the response. We might\n", + "### just go based on intuition, or we could try to find the variables that are most correlated\n", + "### Don't get too high of hopes - having a quant variable correlated with a 1-0 variable\n", + "### is not really what correlation coefficients are designed to detect. They are meant\n", + "### to find linear relationships between quant variables. Though correlations are not built for\n", + "### finding these relations - they can still give a sense of which variables are best related\n", + "\n", + "\n", + "### Actually if you try to build the correlation matrix... it might run for a long time, and\n", + "### not be very legible anyway... Let's just fit some stuff that seems interesting \n", + "### and intuitive." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "### Given how many columns we have to use - let's just drop all of the columns that have any\n", + "### missing values\n", + "\n", + "df_result = df_result.dropna(axis=1, how='any')" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(12891, 42336)" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_result.shape # which is only 6, sooo that kind of sucks at narrowing down this mess..." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "y = df_result['Salary']\n", + "X = df_result.drop(['Respondent', 'Salary'], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .30, random_state=42)\n", + "\n", + "#lm_model = LinearRegression(normalize=True) # Here you could set any hyperparameters of your model\n", + "#lm_model.fit(X_train, y_train) # If this model was to predict for new individuals, we probably would want\n", + " # worry about train/test splits and cross-validation, but for now I am most \n", + " # interested in finding a model that just fits all of the data well\n", + "\n", + " \n", + "#y_test_preds = lm_model.predict(X_test) #We can then use our fitted model to predict the salary for each\n", + " #indvidual in our test set, and see how well these predictions\n", + " #match the truth.\n", + "\n", + "#print(r2_score(y_test, y_test_preds)) #In this case we are predicting a continuous, numeric response. Therefore, common\n", + "#print(mean_squared_error(y_test, y_test_preds)) #metrics to assess fit include Rsquared and MSE. \n", + "## Filling in the missing values does appear to have helped based on a preliminary check\n" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#print(r2_score(y_train, lm_model.predict(X_train)))\n", + "#print(mean_squared_error(y_train, lm_model.predict(X_train))) # What does this mean?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To combat the overfitting we have a number of options, but one way that would also reduce our run time would be to remove columns from our dataframe. You will notice that sklearn does not provide pvals back for our coefficients, but it performs ridge regression by default. So, therefore, we can consider that columns that have larger coefficients are also more useful for predicting our response variable. How large is large enough to consider keeping? Well, that is a great question, and I also don't have a great answer... We can try some stuff and see what works. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we can also run cross-validation and aggregate our results to combat the overfitting we saw earlier using this reduced X matrix." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(12891, 2637)" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# You could deal with these rare events in different ways - you could consider them as great predictors\n", + "# I am going to remove them - as I feel like they are likely not that indicative of other individuals\n", + "# I want to find overriding truths about the individuals who receive particular salaries.\n", + "# So, let's only consider columns where there are more than 1000 of the level of interest in the column.\n", + "\n", + "reduce_X = X.iloc[:, np.where((X.sum() > 10) == True)[0]]\n", + "reduce_X.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.674976343389\n", + "503572469.281\n" + ] + } + ], + "source": [ + "X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = .30, random_state=42)\n", + "\n", + "lm_model = LinearRegression(normalize=True) # Here you could set any hyperparameters of your model\n", + "lm_model.fit(X_train, y_train) # If this model was to predict for new individuals, we probably would want\n", + " # worry about train/test splits and cross-validation, but for now I am most \n", + " # interested in finding a model that just fits all of the data well\n", + "\n", + " \n", + "y_test_preds = lm_model.predict(X_test) #We can then use our fitted model to predict the salary for each\n", + " #indvidual in our test set, and see how well these predictions\n", + " #match the truth.\n", + "\n", + "print(r2_score(y_test, y_test_preds)) #In this case we are predicting a continuous, numeric response. Therefore, common\n", + "print(mean_squared_error(y_test, y_test_preds)) #metrics to assess fit include Rsquared and MSE. \n", + "## Filling in the missing values does appear to have helped based on a preliminary check" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.838856972216\n", + "259108335.391\n" + ] + } + ], + "source": [ + "print(r2_score(y_train, lm_model.predict(X_train))) #In this case we are predicting a continuous, numeric response. Therefore, common\n", + "print(mean_squared_error(y_train, lm_model.predict(X_train))) #metrics to assess fit include Rsquared and MSE. \n", + "## Filling in the missing values does appear to have helped based on a preliminary check" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "### Let's see what be the best number of features to use based on the test set performance\n", + "def find_optimal_lm_mod(X, y, cutoffs, test_size = .30, random_state=42, plot=True):\n", + " '''\n", + " INPUT\n", + " X - pandas dataframe, X matrix\n", + " y - pandas dataframe, response variable\n", + " cutoffs - list of ints, cutoff for number of non-zero values in dummy categorical vars\n", + " test_size - float between 0 and 1, default 0.3, determines the proportion of data as test data\n", + " random_state - int, default 42, controls random state for train_test_split\n", + " plot - boolean, default 0.3, True to plot result\n", + " \n", + " OUTPUT\n", + " r2_scores_test - list of floats of r2 scores on the test data\n", + " r2_scores_train - list of floats of r2 scores on the train data\n", + " lm_model - model object from sklearn\n", + " X_train, X_test, y_train, y_test - output from sklearn train test split used for optimal model\n", + " '''\n", + " r2_scores_test, r2_scores_train, num_feats, results = [], [], [], dict()\n", + " for cutoff in cutoffs:\n", + " \n", + " #reduce X matrix\n", + " reduce_X = X.iloc[:, np.where((X.sum() > cutoff) == True)[0]]\n", + " num_feats.append(reduce_X.shape[1])\n", + "\n", + " #split the data into train and test\n", + " X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = test_size, random_state=random_state)\n", + "\n", + " #fit the model and obtain pred response\n", + " lm_model = LinearRegression(normalize=True) \n", + " lm_model.fit(X_train, y_train)\n", + " y_test_preds = lm_model.predict(X_test)\n", + " y_train_preds = lm_model.predict(X_train)\n", + " \n", + " #append the r2 value from the test set\n", + " r2_scores_test.append(r2_score(y_test, y_test_preds))\n", + " r2_scores_train.append(r2_score(y_train, y_train_preds))\n", + " results[str(cutoff)] = r2_score(y_test, y_test_preds)\n", + " \n", + " if plot:\n", + " plt.plot(num_feats, r2_scores_test, label=\"Test\", alpha=.5)\n", + " plt.plot(num_feats, r2_scores_train, label=\"Train\", alpha=.5)\n", + " plt.xlabel('Number of Features')\n", + " plt.ylabel('Rsquared')\n", + " plt.title('Rsquared by Number of Features')\n", + " plt.legend(loc=1)\n", + " plt.show()\n", + " \n", + " best_cutoff = max(results, key=results.get)\n", + " \n", + " #reduce X matrix\n", + " reduce_X = X.iloc[:, np.where((X.sum() > int(best_cutoff)) == True)[0]]\n", + " num_feats.append(reduce_X.shape[1])\n", + "\n", + " #split the data into train and test\n", + " X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = test_size, random_state=random_state)\n", + "\n", + " #fit the model\n", + " lm_model = LinearRegression(normalize=True) \n", + " lm_model.fit(X_train, y_train)\n", + " \n", + " return r2_scores_test, r2_scores_train, lm_model, X_train, X_test, y_train, y_test" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n4VrtHwuFQgCAr7/+Gj/72c/wox/9CFOnTsW5556LRx99NPY8q9Ua+15VVfzkJz/BnDlzYtdobGyE\nIAidrt/6n35XJEnqUKbW586dOxeLFy+GLMu4/PLLTxg4v/rVr1BSUoLnnnsudp8gCB3KEQ6HO7zG\naDR2uN1dObsro6qqWLVqFcaOHQsAaGpqitUf6Pjzak9V1U63FUXptm4nEolEkJqairfffjt2X01N\nDVJSUvDxxx9j2bJluPXWW3HZZZdhzJgxeOeddzpd40Q/q9589gBw991344YbbsCnn36KtWvX4vnn\nn8fatWs79BYQnQj/tlDCufrqq1FYWIjly5cDAObPn4/33nsPV111FRYtWgS73Y7KykpcfPHFeP31\n1xGJRNDc3IyPPvoodg2n04ny8nIAQFlZGdxuNwDgiy++wMSJE3HrrbfivPPOw0cffYRIJNJlOS68\n8EK8+eab8Hg8AIBVq1bhvvvuQ3p6OiZMmIA33ngDQPQXgj179nRbn7feeguapqGxsRF///vf8R//\n8R8AgKKiIoiiiD/96U+46aabTvhzMRqN+O1vf4sXXngh1gJOTU1FOBzGvn37AETH10/F5s2bcezY\nMQDAX//611gZL7zwQrz44ovQNA2hUAh33nknXn311RNe78ILL8Rrr70We93rr7+OCy644JTKBgCn\nnXYaTCZTLLwrKytx9dVXo7y8HJs2bcIll1yCOXPmYNKkSdiwYUPsM5UkKfZLg9PpxLFjx1BbWwtN\n07Bhw4Yey9/VZ68oCi699FL4fD7cdNNNWLRoEfbv39+nX0woObHlTQnp4YcfxjXXXIN//vOf+NnP\nfoaHHnoIpaWlkCQJ3//+93HeeefFAv6aa65BamoqXC5X7PX33HMPFi9ejNLSUkyYMAETJkwAEP3F\n4IMPPsD06dNhMBgwZcoUNDY2xv6Tbu8HP/gBqqqqcOONN0IQBOTm5mLFihUAgCeffBIPPvgg1qxZ\ng1GjRmHMmDHd1iUlJQXXX389AoEAfvjDH+L888+PPXb99dfjvffeQ0FBQa9+LmPGjMH999+PhQsX\nxq5977334rbbboPT6ex2HPlE8vPzsWDBAtTU1GDMmDFYsmQJAOChhx7CsmXLMGPGDITDYVxwwQX4\nyU9+csLrLVy4EEuXLo29rri4GHfccccplQ2I/uLy7LPPYtmyZfjjH/8IRVHw3//93zj77LORnp6O\n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\nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cutoffs = [5000, 3500, 2500, 1000, 100, 50, 30, 20, 10, 5]\n", + "r2_scores_test, r2_scores_train, lm_model, X_train, X_test, y_train, y_test = find_optimal_lm_mod(X, y, cutoffs)" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(9023, 1081)" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#______Video 4 Creating Dummy Variables & Other Alternatives for Categorical Variables____#\n", + "\n", + "\n", + "\n", + "\n", + "### Now that we have the best model in terms of the r2 on the test data, we can use this model to see which features\n", + "### appear to be most important, and what impact they have on salary.\n", + "\n", + "X_train.shape # we have 1081 features in the optimal model - let's look at some of them\n" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n+ag2AAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "y_test_preds = lm_model.predict(X_test)\n", + "\n", + "preds_vs_act = pd.DataFrame(np.hstack([y_test.values.reshape(y_test.size,1), y_test_preds.reshape(y_test.size,1)]))\n", + "preds_vs_act.columns = ['actual', 'preds']\n", + "preds_vs_act['diff'] = preds_vs_act['actual'] - preds_vs_act['preds']\n", + "\n", + "plt.plot(preds_vs_act['preds'], preds_vs_act['diff'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('difference');" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\no6AaojsAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(preds_vs_act['preds'], preds_vs_act['actual'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('actual'); #there appears to be a slight positive trend like we would want to see" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "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", + "
est_intcoefsabs_coefs
0Professional_Professional developer3.668536e+183.668536e+18
39Country_United States5.690911e+045.690911e+04
25Country_Norway4.020815e+044.020815e+04
5Country_Australia4.018075e+044.018075e+04
380Currency_Swiss francs3.683437e+043.683437e+04
12Country_Denmark3.018176e+043.018176e+04
24Country_New Zealand2.996317e+042.996317e+04
20Country_Israel2.964533e+042.964533e+04
10Country_Canada2.962889e+042.962889e+04
120YearsCodedJob_20 or more years2.960331e+042.960331e+04
19Country_Ireland2.855933e+042.855933e+04
375Currency_Mexican pesos (MXN$)-2.735578e+042.735578e+04
35Country_Switzerland2.729701e+042.729701e+04
111YearsCodedJob_12 to 13 years2.516108e+042.516108e+04
117YearsCodedJob_18 to 19 years2.506481e+042.506481e+04
118YearsCodedJob_19 to 20 years2.461425e+042.461425e+04
114YearsCodedJob_15 to 16 years2.344736e+042.344736e+04
116YearsCodedJob_17 to 18 years2.329919e+042.329919e+04
113YearsCodedJob_14 to 15 years2.157932e+042.157932e+04
38Country_United Kingdom2.105335e+042.105335e+04
\n", + "
" + ], + "text/plain": [ + " est_int coefs abs_coefs\n", + "0 Professional_Professional developer 3.668536e+18 3.668536e+18\n", + "39 Country_United States 5.690911e+04 5.690911e+04\n", + "25 Country_Norway 4.020815e+04 4.020815e+04\n", + "5 Country_Australia 4.018075e+04 4.018075e+04\n", + "380 Currency_Swiss francs 3.683437e+04 3.683437e+04\n", + "12 Country_Denmark 3.018176e+04 3.018176e+04\n", + "24 Country_New Zealand 2.996317e+04 2.996317e+04\n", + "20 Country_Israel 2.964533e+04 2.964533e+04\n", + "10 Country_Canada 2.962889e+04 2.962889e+04\n", + "120 YearsCodedJob_20 or more years 2.960331e+04 2.960331e+04\n", + "19 Country_Ireland 2.855933e+04 2.855933e+04\n", + "375 Currency_Mexican pesos (MXN$) -2.735578e+04 2.735578e+04\n", + "35 Country_Switzerland 2.729701e+04 2.729701e+04\n", + "111 YearsCodedJob_12 to 13 years 2.516108e+04 2.516108e+04\n", + "117 YearsCodedJob_18 to 19 years 2.506481e+04 2.506481e+04\n", + "118 YearsCodedJob_19 to 20 years 2.461425e+04 2.461425e+04\n", + "114 YearsCodedJob_15 to 16 years 2.344736e+04 2.344736e+04\n", + "116 YearsCodedJob_17 to 18 years 2.329919e+04 2.329919e+04\n", + "113 YearsCodedJob_14 to 15 years 2.157932e+04 2.157932e+04\n", + "38 Country_United Kingdom 2.105335e+04 2.105335e+04" + ] + }, + "execution_count": 122, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "coefs_df = pd.DataFrame()\n", + "\n", + "coefs_df['est_int'] = X_train.columns\n", + "coefs_df['coefs'] = lm_model.coef_\n", + "coefs_df['abs_coefs'] = np.abs(lm_model.coef_)\n", + "\n", + "coefs_df.sort_values('abs_coefs', ascending=False).head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-3.6685360312259738e+18" + ] + }, + "execution_count": 116, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lm_model.intercept_" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((9023, 1081), 9023)" + ] + }, + "execution_count": 118, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape, sum(X_train['Professional_Professional developer'])\n", + "\n", + "\n", + "#_____Video 7 Interpretting the results_____#" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#____Video 8 - Ensemble Models______#\n", + "\n", + "### One of the best out of the box methods for supervised machine learning\n", + "### is known as the RandomForest - let's see if we can use this model to outperform\n", + "### The linear model from earlier.\n", + "\n", + "from sklearn.ensemble import RandomForestRegressor\n", + "\n", + "### Let's see what be the best number of features to use based on the test set performance\n", + "def find_optimal_rf_mod(X, y, cutoffs, test_size = .30, random_state=42, plot=True):\n", + " '''\n", + " INPUT\n", + " X - pandas dataframe, X matrix\n", + " y - pandas dataframe, response variable\n", + " cutoffs - list of ints, cutoff for number of non-zero values in dummy categorical vars\n", + " test_size - float between 0 and 1, default 0.3, determines the proportion of data as test data\n", + " random_state - int, default 42, controls random state for train_test_split\n", + " plot - boolean, default 0.3, True to plot result\n", + " kwargs - include the arguments you want to pass to the rf model\n", + " \n", + " OUTPUT\n", + " r2_scores_test - list of floats of r2 scores on the test data\n", + " r2_scores_train - list of floats of r2 scores on the train data\n", + " rf_model - model object from sklearn\n", + " X_train, X_test, y_train, y_test - output from sklearn train test split used for optimal model\n", + " '''\n", + " r2_scores_test, r2_scores_train, num_feats, results = [], [], [], dict()\n", + " for cutoff in cutoffs:\n", + " \n", + " #reduce X matrix\n", + " reduce_X = X.iloc[:, np.where((X.sum() > cutoff) == True)[0]]\n", + " num_feats.append(reduce_X.shape[1])\n", + "\n", + " #split the data into train and test\n", + " X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = test_size, random_state=random_state)\n", + "\n", + " #fit the model and obtain pred response\n", + "\n", + " rf_model = RandomForestRegressor() #no normalizing here, but could tune other hyperparameters\n", + " rf_model.fit(X_train, y_train)\n", + " y_test_preds = rf_model.predict(X_test)\n", + " y_train_preds = rf_model.predict(X_train)\n", + " \n", + " #append the r2 value from the test set\n", + " r2_scores_test.append(r2_score(y_test, y_test_preds))\n", + " r2_scores_train.append(r2_score(y_train, y_train_preds))\n", + " results[str(cutoff)] = r2_score(y_test, y_test_preds)\n", + " \n", + " if plot:\n", + " plt.plot(num_feats, r2_scores_test, label=\"Test\", alpha=.5)\n", + " plt.plot(num_feats, r2_scores_train, label=\"Train\", alpha=.5)\n", + " plt.xlabel('Number of Features')\n", + " plt.ylabel('Rsquared')\n", + " plt.title('Rsquared by Number of Features')\n", + " plt.legend(loc=1)\n", + " plt.show()\n", + " \n", + " best_cutoff = max(results, key=results.get)\n", + " \n", + " #reduce X matrix\n", + " reduce_X = X.iloc[:, np.where((X.sum() > int(best_cutoff)) == True)[0]]\n", + " num_feats.append(reduce_X.shape[1])\n", + "\n", + " #split the data into train and test\n", + " X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = test_size, random_state=random_state)\n", + "\n", + " #fit the model\n", + " rf_model = RandomForestRegressor() \n", + " rf_model.fit(X_train, y_train)\n", + " \n", + " return r2_scores_test, r2_scores_train, rf_model, X_train, X_test, y_train, y_test" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cutoffs = [5000, 3500, 2500, 1000, 100, 50, 30, 20, 10, 5]\n", + "r2_test, r2_train, rf_model, X_train, X_test, y_train, y_test = find_optimal_rf_mod(X, y, cutoffs)" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n9UUCS1cdpDlDPOYMh1SV96+9PTamwRO/Y6Kx1tsbwcWLfMHereZFZTzrem7yHvhxFFSZM0wfGmNT\npGF4WMPu3WWYPt19AqgwRWHkDRYCent72b59+5iu6+z3v/89W7RoEZs3b17y793d3eyBBx5gP/vZ\nz9g///M/Jz//5je/yV5++WV25513st/97neMMcYSiQRbsGABe//999nixYuTxz7zzDNs27Ztjm0Z\nHY0H2LPg+PM/ZwzI/Jkxw/m7vO9Zfzo7jZ8ZMxiLRo1/Ozvl5+zs5J/r3nvd9Uv1uiUlzv0w74fq\nversZKy83Pt9DRJR/6LR1D0S9TkadT5/Z6dxX0pKjH9lz1f0bEtLjX/Ly+XP+d57+d/XNOPaU6eK\n77no2k7j0antKuPZfn9UxpxsnIjug/1dEY1X0c/Uqer3w8TtNbI1/kXj0O34lM0Zonfay5jwMxaL\nhVCIRR/72Mfw0Y9+FJqm4WMf+xiuvvpqHDt2LPn3wcFBVFdXo7KyEoODg2mfV1VVpX0uO7a6utqx\nLRcu+PcMzoana09PJXgJeHp6GPr7nbzC+d81+fBDQ4pftCj98/7+zGPNvm3cOBFApl3xsceAT3xC\n3Z6/aBGUrtvUJPYQt3LPPUNYtaocTvfKyWP7nnuG0N+fO29pUf+amhJYtOgyFi0Se8k3NSXQ358+\nblP+DSWorU33hH/zTWDZstRztyN6ttddl+59zntOAPDss/zvM2ZcW0RPD8PGjTr3u5s2GffBCu89\nW7QI6OjIjGxZtCgubC/PJ2DZMsDY/ctNdG+9JX7/nnhC/t4dOGA8t3/4B+foASvvvSd/fjzcXsP+\nrsgqmTr93Xoc7z4fODCSZtZxGp9Oc8aVK/L7bsIbU1ZE74HqWCwkQh/d8JOf/ATf/e53AQBnz57F\nwMAA5s2bh1deeQUA8OKLL2LOnDmYMWMGDh8+jOHhYVy6dAnvvPMOmpqaMHv2bLzwwgvJY2+44QZU\nVlaitLQUJ0+eBGMML730EubMmZO3PvrFjxq1oYGv6jTxoq5W8dgOEpGasbEx08ta5V6JVMmxGMtL\nOJWKGtVbwiII/Tc2beKbofyaYLyaaurqWCDmH7eJoWRmBSd0XROqoEUOnyZmn+zq9xkzgEhE/s4C\n7t4zex4LJ8x3xcl058a0J7rPougZr/OIyIfGjtOYIidJg1D0dvHixbh06RKWLVuG+++/H5s3b8a3\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "y_test_preds = rf_model.predict(X_test)\n", + "\n", + "preds_vs_act = pd.DataFrame(np.hstack([y_test.values.reshape(y_test.size,1), y_test_preds.reshape(y_test.size,1)]))\n", + "preds_vs_act.columns = ['actual', 'preds']\n", + "preds_vs_act['diff'] = preds_vs_act['actual'] - preds_vs_act['preds']\n", + "\n", + "plt.plot(preds_vs_act['preds'], preds_vs_act['diff'], 'bo');\n", + "plt.xlabel('predicted');\n", + "plt.ylabel('difference');" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#Looks like this overfits quite a bit... " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 157, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from sklearn.model_selection import GridSearchCV\n", + "\n", + "### Let's see what be the best number of features to use based on the test set performance\n", + "def find_optimal_rf_mod(X, y, cutoffs, test_size = .30, random_state=42, plot=True, param_grid=None):\n", + " '''\n", + " INPUT\n", + " X - pandas dataframe, X matrix\n", + " y - pandas dataframe, response variable\n", + " cutoffs - list of ints, cutoff for number of non-zero values in dummy categorical vars\n", + " test_size - float between 0 and 1, default 0.3, determines the proportion of data as test data\n", + " random_state - int, default 42, controls random state for train_test_split\n", + " plot - boolean, default 0.3, True to plot result\n", + " kwargs - include the arguments you want to pass to the rf model\n", + " \n", + " OUTPUT\n", + " r2_scores_test - list of floats of r2 scores on the test data\n", + " r2_scores_train - list of floats of r2 scores on the train data\n", + " rf_model - model object from sklearn\n", + " X_train, X_test, y_train, y_test - output from sklearn train test split used for optimal model\n", + " '''\n", + "\n", + " r2_scores_test, r2_scores_train, num_feats, results = [], [], [], dict()\n", + " for cutoff in cutoffs:\n", + "\n", + " #reduce X matrix\n", + " reduce_X = X.iloc[:, np.where((X.sum() > cutoff) == True)[0]]\n", + " num_feats.append(reduce_X.shape[1])\n", + "\n", + " #split the data into train and test\n", + " X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = test_size, random_state=random_state)\n", + "\n", + " #fit the model and obtain pred response\n", + " if param_grid==None:\n", + " rf_model = RandomForestRegressor() #no normalizing here, but could tune other hyperparameters\n", + "\n", + " else:\n", + " rf_inst = RandomForestRegressor(n_jobs=-1, verbose=1)\n", + " rf_model = GridSearchCV(rf_inst, param_grid, n_jobs=-1) \n", + " \n", + " rf_model.fit(X_train, y_train)\n", + " y_test_preds = rf_model.predict(X_test)\n", + " y_train_preds = rf_model.predict(X_train)\n", + "\n", + " #append the r2 value from the test set\n", + " r2_scores_test.append(r2_score(y_test, y_test_preds))\n", + " r2_scores_train.append(r2_score(y_train, y_train_preds))\n", + " results[str(cutoff)] = r2_score(y_test, y_test_preds)\n", + "\n", + " if plot:\n", + " plt.plot(num_feats, r2_scores_test, label=\"Test\", alpha=.5)\n", + " plt.plot(num_feats, r2_scores_train, label=\"Train\", alpha=.5)\n", + " plt.xlabel('Number of Features')\n", + " plt.ylabel('Rsquared')\n", + " plt.title('Rsquared by Number of Features')\n", + " plt.legend(loc=1)\n", + " plt.show()\n", + " \n", + " best_cutoff = max(results, key=results.get)\n", + "\n", + " #reduce X matrix\n", + " reduce_X = X.iloc[:, np.where((X.sum() > int(best_cutoff)) == True)[0]]\n", + " num_feats.append(reduce_X.shape[1])\n", + "\n", + " #split the data into train and test\n", + " X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = test_size, random_state=random_state)\n", + "\n", + " #fit the model\n", + " if param_grid==None:\n", + " rf_model = RandomForestRegressor() #no normalizing here, but could tune other hyperparameters\n", + "\n", + " else:\n", + " rf_inst = RandomForestRegressor(n_jobs=-1, verbose=1)\n", + " rf_model = GridSearchCV(rf_inst, param_grid, n_jobs=-1) \n", + " rf_model.fit(X_train, y_train)\n", + " \n", + " return r2_scores_test, r2_scores_train, rf_model, X_train, X_test, y_train, y_test" + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 2.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 2.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.0s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 5.3s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 5.7s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 5.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 10.3s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 10.5s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 10.5s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 12.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 13.1s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 13.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.6s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 11.6s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 12.5s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 12.7s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 20.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 21.6s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 21.5s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 26.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.5s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 27.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 27.6s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 8.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 16.2s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 6.8s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.0s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 16.5s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 16.6s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 29.8s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 38.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 30.5s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.9s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 30.7s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 37.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 36.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.8s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.4s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.5s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 4.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 5.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 4.2s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 4.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 5.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 5.3s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.9s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.5s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.4s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 10.5s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 6.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 11.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 11.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 6.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 20.3s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 20.6s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 20.6s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 26.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 26.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 26.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.7s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.7s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.6s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.8s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 9.7s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 10.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 12.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 12.7s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 26.5s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 11.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.7s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 29.1s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 29.3s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 11.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 47.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.3s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 49.4s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 49.5s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 21.1s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.1min finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.3s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 12.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 39.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 14.8s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 32.2s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 33.8s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 58.6s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 58.7s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.0s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 7.5s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 9.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.5s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.6s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.3s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.5s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 7.9s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.5s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 8.4s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 8.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 5.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.7s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 5.0s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 9.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 9.5s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 9.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 12.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 21.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 5.3s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 21.9s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 22.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 12.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 5.1s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 39.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 39.7s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 39.8s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 12.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 48.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 48.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 48.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.2s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 5.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 5.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 9.7s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 19.8s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 24.3s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 22.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 24.5s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 9.4s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 51.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 21.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 54.2s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 54.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 8.3s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 19.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 8.1s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 37.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.9min finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.5s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 5.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 5.9s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 26.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.2min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 27.9s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.1min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 2.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.9min\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.9min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 2.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.8s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 2.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.5s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 10.5s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 23.7s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 41.8s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 51.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.4s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.9s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 5.7s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.3s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 6.5s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 6.8s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 11.2s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 10.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 11.7s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 14.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 12.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 15.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 15.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 8.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 6.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 2.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.6s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 2.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.0s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 2.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 17.2s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 17.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 10.4s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 17.5s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 24.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 41.0s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 41.4s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 41.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 11.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 25.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 9.7s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.2min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 24.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 8.1s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 6.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 11.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 11.3s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 47.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 24.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 51.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 51.6s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 56.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 22.9s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.9min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.0min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 53.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 24.2s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 56.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 3.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 3.6min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 3.6min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 22.4s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 4.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.8s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 4.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 4.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.6s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 16.9s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 18.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.3min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.3min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.4min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.2min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.1min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 5.9min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 5.9min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 7.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.2s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 3.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 7.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 7.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 7.8s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 40.4s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.9min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.3s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 2.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.8s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 11.9s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 9.3s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 13.8s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 13.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 22.7s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 24.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 20.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 24.0s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 28.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 30.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 30.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 7.9s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 6.6s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 16.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 7.2s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 15.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 7.0s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 4.9s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 7.7s\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 35.4s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 36.6s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 24.0s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 39.8s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 52.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 21.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 47.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 20.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.6min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.6min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.6min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 47.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 18.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 21.2s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 15.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 21.7s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 15.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 15.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.7min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.8min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.8min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.7min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.8min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.8min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 8.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 8.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 8.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 52.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 47.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 46.1s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.5min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.4min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.3min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 7.6min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 7.4min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 7.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 12.8min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 12.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 12.5min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 15.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 15.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.9s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 15.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 21.2s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 3.6min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 6.4min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 8.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.8s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 1.8s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 2.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.3s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.9s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 11.8s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 13.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 9.4s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 13.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 23.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 24.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 21.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 25.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 29.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 30.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 30.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 7.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 7.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 8.7s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 19.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 9.3s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 18.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.8s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 8.8s\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 6.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 39.3s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 40.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 22.9s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 41.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 53.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 23.2s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 53.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 23.3s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.8min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.9min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 2.9min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 53.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 21.4s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 3.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 23.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 23.9s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 17.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 17.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 17.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.8min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.8min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.2min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 7.4min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 7.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 7.5min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 9.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 9.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 9.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 57.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 55.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 49.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.9min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.8min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.7min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 8.8min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 8.7min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 8.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 17.9min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 17.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 17.8min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 23.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 23.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.3s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.9s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 2.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 3.8s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 4.9s finished\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 3.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 3.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 23.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 45.4s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 6.8min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 11.6min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 14.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 2.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 2.8s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.8s\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 3.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.5s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.9s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 16.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 18.6s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 19.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 12.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 32.3s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 34.7s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 35.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 30.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 42.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 44.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 44.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 11.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 11.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 13.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 14.0s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 29.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 29.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 7.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 8.5s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 13.0s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 8.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 58.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 59.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 33.2s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.3min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.3min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 34.0s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.4min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 35.0s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 4.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 4.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 4.3min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 5.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 34.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 5.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 5.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 36.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 37.7s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 26.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 26.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 26.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.6min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.7min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.7min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 6.1min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 6.2min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 6.3min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 3.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 11.1min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 11.1min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 11.2min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 14.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 14.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 14.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.5min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.4min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.2min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.2min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.0min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 15.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 15.0min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 14.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 25.0min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 24.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 24.9min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 30.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 31.0min finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.8s finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 30.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 39.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.9min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 6.9min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 12.7min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 16.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.7s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.6s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.7s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 3.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.4s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 4.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 9.4s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 4.5s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 11.1s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 11.4s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 24.5s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 25.8s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 25.6s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 16.5s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 44.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 45.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 45.7s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 37.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 55.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 56.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 55.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 12.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 12.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 15.1s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 15.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 32.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 32.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 8.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 15.0s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 9.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 9.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.2min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 41.4s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.2min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.8min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.8min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 41.1s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 2.9min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 37.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 5.0min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 5.1min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 5.1min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 36.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 6.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 6.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 6.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 43.0s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 44.6s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 29.9s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 32.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 28.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.0min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.2min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.2min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.9min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 7.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 7.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 7.2min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 13.5min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 13.7min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 13.8min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 16.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 17.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 17.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.8min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.4min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 6.4min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 6.2min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.8min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 14.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 13.8min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 13.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 24.6min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 24.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 23.4min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 74.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 75.6min finished\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 3.7s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 4.5s finished\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.8s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 3.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 75.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.3min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 5.1min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 10.0min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 18.0min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 22.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.6s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 5.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 5.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 5.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.9s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 3.5s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.0s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 11.3s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.8s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 13.5s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 13.8s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 29.3s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 31.8s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 32.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 20.3s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 55.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 58.2s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 58.5s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 47.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 19.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 19.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 22.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 23.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 50.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 49.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 12.9s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 22.6s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 13.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 14.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 50.9s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 1.7min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.0min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.0min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 59.7s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.2min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 53.5s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 7.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 7.4min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 7.3min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 50.9s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 9.1min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 9.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 9.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 55.4s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 56.9s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 37.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 34.4s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 3.9min\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 33.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.0min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.0min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.2min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 8.8min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 4.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 8.9min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 9.0min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.3min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 5.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 16.1min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.1min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 16.2min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 16.2min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 5.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 20.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.2min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 20.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 20.4min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.0min\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.6min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 8.0min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.7min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 7.3min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 18.4min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 18.0min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 17.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 32.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 31.8min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 30.8min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 40.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.5s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 3.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 39.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.3s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 38.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.8min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 11.1min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 19.0min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 23.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.9s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.5s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 8.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 8.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.1s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 8.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 5.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.6s\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 4.0s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 16.8s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 6.8s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 18.4s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 6.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 18.7s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 42.1s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 44.1s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 44.7s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 26.9s\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.3min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.0min finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 1.4min\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 1.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 24.2s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 24.8s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 27.5s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 28.4s\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 1.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 59.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 15.2s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 27.6s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 15.1s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 15.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.0min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.0min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 59.6s\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 2.1min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.7min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.8min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 58.5s\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 4.8min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 2.3min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 8.6min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 8.7min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 8.7min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 59.3s\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 10.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 10.9min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.5s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 10.8min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.4s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.6s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 55.3s\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 57.1s\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 34.7s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.1min\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 35.8s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 10 out of 10 | elapsed: 33.9s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=4)]: Done 10 out of 10 | elapsed: 0.0s finished\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.1min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 4.2min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.3min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 10.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 5.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 10.6min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 10.7min\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.0min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 6.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 19.7min\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.7min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 20.0min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 20.1min\n", + "[Parallel(n_jobs=-1)]: Done 100 out of 100 | elapsed: 6.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.1s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 100 out of 100 | elapsed: 0.3s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 25.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.0s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 3.0min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 25.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.4s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.8min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 25.7min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.8s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.9s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 2.0min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 10.5min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 9.8min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 8.9min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 22.8min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 34.2min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 200.3min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 300.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 300.4min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 298.8min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 314.5min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.3s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.4s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 3.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 313.2min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.2s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.5s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.8s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 310.6min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.4s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 0.7s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 0.9s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.0s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.2s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=-1)]: Done 42 tasks | elapsed: 1.1min\n", + "[Parallel(n_jobs=-1)]: Done 192 tasks | elapsed: 6.9min\n", + "[Parallel(n_jobs=-1)]: Done 442 tasks | elapsed: 17.5min\n", + "[Parallel(n_jobs=-1)]: Done 792 tasks | elapsed: 33.4min\n", + "[Parallel(n_jobs=-1)]: Done 1000 out of 1000 | elapsed: 44.0min finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.3s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 0.6s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 1.2s finished\n", + "[Parallel(n_jobs=4)]: Done 42 tasks | elapsed: 0.1s\n", + "[Parallel(n_jobs=4)]: Done 192 tasks | elapsed: 0.5s\n", + "[Parallel(n_jobs=4)]: Done 442 tasks | elapsed: 1.0s\n", + "[Parallel(n_jobs=4)]: Done 792 tasks | elapsed: 2.1s\n", + "[Parallel(n_jobs=4)]: Done 1000 out of 1000 | elapsed: 2.5s finished\n" + ] + }, + { + "data": { + "image/png": "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\nZRjeREREKvP/kjDXnJwv3oUAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cutoffs = [5000, 3500, 2500, 1000, 100, 50, 30, 20, 10, 5]\n", + "params = {'n_estimators': [10, 100, 1000], 'max_depth': [1, 5, 10, 100]}\n", + "r2_test, r2_train, rf_model, X_train, X_test, y_train, y_test = find_optimal_rf_mod(X, y, cutoffs, param_grid=params)" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.1434832190870845,\n", + " 0.50312830555464327,\n", + " 0.56587007612084017,\n", + " 0.61209835688773562,\n", + " 0.70037336638014969,\n", + " 0.71357758463021015,\n", + " 0.71179914641488184,\n", + " 0.71200015668392846,\n", + " 0.71225551954795407,\n", + " 0.71407567064339428]" + ] + }, + "execution_count": 161, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/stackoverflow/Salary_ML.py b/stackoverflow/Salary_ML.py new file mode 100644 index 0000000..a916a9e --- /dev/null +++ b/stackoverflow/Salary_ML.py @@ -0,0 +1,121 @@ +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.linear_model import LinearRegression +from sklearn.model_selection import train_test_split +from sklearn.metrics import r2_score, mean_squared_error +import seaborn as sns + +def clean_data(df): + ''' + INPUT + df - pandas dataframe + + OUTPUT + X - A matrix holding all of the variables you want to consider when predicting the response + y - the corresponding response vector + + This function cleans df using the following steps to produce X and y: + 1. Drop all the rows with no salaries + 2. Create X as all the columns that are not the Salary column + 3. Create y as the Salary column + 4. Drop the Salary, Respondent, and the ExpectedSalary columns + 5. For each numeric variable, fill the column with the mean value. + 6. Create dummy columns for all the categorical variables, drop the original columns + ''' + # Drop rows with missing salary values + df = df.dropna(subset=['Salary'], axis=0) + y = df['Salary'] + + #Drop respondent and expected salary columns + df = df.drop(['Respondent', 'ExpectedSalary', 'Salary'], axis=1) + + # Fill numeric columns with the mean + num_vars = df.select_dtypes(include=['float', 'int']).columns + for col in num_vars: + df[col].fillna((df[col].mean()), inplace=True) + + # Dummy the categorical variables + cat_vars = df.select_dtypes(include=['object']).copy().columns + for var in cat_vars: + # for each cat add dummy var, drop original column + df = pd.concat([df.drop(var, axis=1), pd.get_dummies(df[var], prefix=var, prefix_sep='_', drop_first=True)], axis=1) + + X = df + return X, y + +def find_optimal_lm_mod(X, y, cutoffs, test_size = .30, random_state=42, plot=True): + ''' + INPUT + X - pandas dataframe, X matrix + y - pandas dataframe, response variable + cutoffs - list of ints, cutoff for number of non-zero values in dummy categorical vars + test_size - float between 0 and 1, default 0.3, determines the proportion of data as test data + random_state - int, default 42, controls random state for train_test_split + plot - boolean, default 0.3, True to plot result + + OUTPUT + r2_scores_test - list of floats of r2 scores on the test data + r2_scores_train - list of floats of r2 scores on the train data + lm_model - model object from sklearn + X_train, X_test, y_train, y_test - output from sklearn train test split used for optimal model + ''' + r2_scores_test, r2_scores_train, num_feats, results = [], [], [], dict() + for cutoff in cutoffs: + + #reduce X matrix + reduce_X = X.iloc[:, np.where((X.sum() > cutoff) == True)[0]] + num_feats.append(reduce_X.shape[1]) + + #split the data into train and test + X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = test_size, random_state=random_state) + + #fit the model and obtain pred response + lm_model = LinearRegression(normalize=True) + lm_model.fit(X_train, y_train) + y_test_preds = lm_model.predict(X_test) + y_train_preds = lm_model.predict(X_train) + + #append the r2 value from the test set + r2_scores_test.append(r2_score(y_test, y_test_preds)) + r2_scores_train.append(r2_score(y_train, y_train_preds)) + results[str(cutoff)] = r2_score(y_test, y_test_preds) + + if plot: + plt.plot(num_feats, r2_scores_test, label="Test", alpha=.5) + plt.plot(num_feats, r2_scores_train, label="Train", alpha=.5) + plt.xlabel('Number of Features') + plt.ylabel('Rsquared') + plt.title('Rsquared by Number of Features') + plt.legend(loc=1) + plt.show() + + best_cutoff = max(results, key=results.get) + + #reduce X matrix + reduce_X = X.iloc[:, np.where((X.sum() > int(best_cutoff)) == True)[0]] + num_feats.append(reduce_X.shape[1]) + + #split the data into train and test + X_train, X_test, y_train, y_test = train_test_split(reduce_X, y, test_size = test_size, random_state=random_state) + + #fit the model + lm_model = LinearRegression(normalize=True) + lm_model.fit(X_train, y_train) + + return r2_scores_test, r2_scores_train, lm_model, X_train, X_test, y_train, y_test + +def main(): + df = pd.read_csv('../Part1/stackoverflow/survey_results_public.csv') + X, y = clean_data(df) + #cutoffs here pertains to the number of missing values allowed in the used columns. + #Therefore, lower values for the cutoff provides more predictors in the model. + cutoffs = [5000, 3500, 2500, 1000, 100, 50, 30, 20, 10, 5] + + r2_scores_test, r2_scores_train, lm_model, X_train, X_test, y_train, y_test = find_optimal_lm_mod(X, y, cutoffs, plot=False) + print('Finished Finding the Best Model') + return lm_model + + +if __name__ == '__main__': + best_model = main()