Repository: jphall663/GWU_data_mining Branch: master Commit: 1b760e3870d1 Files: 141 Total size: 48.6 MB Directory structure: gitextract_uh8insif/ ├── .gitattributes ├── .gitignore ├── 00_intro_and_history/ │ ├── 00_intro_and_history.md │ ├── notes/ │ │ └── .gitignore │ ├── quiz/ │ │ └── .gitignore │ └── spring_2017_announcements/ │ └── spring_2017_announcements.md ├── 01_basic_data_prep/ │ ├── 01_basic_data_prep.md │ ├── assignment/ │ │ └── .gitignore │ ├── notes/ │ │ └── .gitignore │ ├── quiz/ │ │ └── .gitignore │ └── src/ │ ├── notebooks/ │ │ ├── py/ │ │ │ ├── .gitignore │ │ │ └── Py_Part_0_pandas_numpy.ipynb │ │ ├── r/ │ │ │ ├── .gitignore │ │ │ ├── R_Part_0_Basics_dplyr_and_ggplot2.ipynb │ │ │ └── R_Part_1_data.table.ipynb │ │ └── sas/ │ │ ├── SAS_Part_0_Base_SAS_PROC_SGPLOT.ipynb │ │ └── SAS_Part_1_PROC_SQL.ipynb │ └── raw/ │ ├── py/ │ │ ├── Py_Part_0_pandas_numpy.py │ │ ├── pyspark_example.py │ │ ├── scratch.csv │ │ ├── scratch2.csv │ │ └── scratch3.csv │ ├── r/ │ │ ├── .gitignore │ │ ├── R_Part_0_Basics_dplyr_and_ggplot2.r │ │ └── R_Part_1_data.table.r │ └── sas/ │ ├── .gitignore │ ├── SAS_Part_0_Base_SAS_PROC_SGPLOT.sas │ └── SAS_Part_1_PROC_SQL.sas ├── 02_analytical_data_prep/ │ ├── 02_analytical_data_prep.md │ ├── data/ │ │ ├── loan.csv │ │ └── loans.sas7bdat │ ├── notes/ │ │ └── .gitignore │ ├── quiz/ │ │ └── .gitignore │ ├── src/ │ │ ├── .gitignore │ │ ├── DataPreperation.py │ │ ├── data_sets/ │ │ │ └── kaggle_house/ │ │ │ ├── test.csv │ │ │ └── train.csv │ │ ├── housing.html │ │ ├── housing.ipynb │ │ ├── py_part_2_discretization.ipynb │ │ ├── py_part_2_encoding.ipynb │ │ ├── py_part_2_feature_extraction.ipynb │ │ ├── py_part_2_feature_selection.ipynb │ │ ├── py_part_2_impute.ipynb │ │ ├── py_part_2_over_sample.ipynb │ │ ├── py_part_2_standardize.ipynb │ │ ├── py_part_2_target_encode_categorical.ipynb │ │ ├── py_part_2_target_encode_numeric.ipynb │ │ └── py_part_2_winsorize.ipynb │ └── xml/ │ └── 02_analytical_data_prep.xml ├── 03_regression/ │ ├── .gitignore │ ├── 03_regression.md │ ├── assignment/ │ │ └── .gitignore │ ├── data/ │ │ ├── .gitignore │ │ ├── loan_clean.csv │ │ ├── test.csv │ │ └── train.csv │ ├── quiz/ │ │ └── .gitignore │ ├── src/ │ │ ├── .gitignore │ │ ├── py_part_3_kaggle_starter.ipynb │ │ ├── py_part_3_linear_regression_gradient_descent.ipynb │ │ ├── py_part_3_penalized_linear_regression.ipynb │ │ ├── py_part_3_penalized_logistic_regression.ipynb │ │ ├── spark_kaggle_starter/ │ │ │ ├── README.md │ │ │ ├── feature_combiner.py │ │ │ ├── get_type_lists.py │ │ │ ├── logging_lib/ │ │ │ │ ├── LICENSE.md │ │ │ │ ├── LoggingController.py │ │ │ │ ├── MarkdownBuilder.py │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── example.py │ │ │ │ └── markdown_preview_github.css │ │ │ ├── main.py │ │ │ ├── spark_controler/ │ │ │ │ ├── LICENSE.md │ │ │ │ ├── README.md │ │ │ │ ├── __init__.py │ │ │ │ ├── ec2_instance_data_dict.py │ │ │ │ ├── emr_controller.py │ │ │ │ ├── files/ │ │ │ │ │ ├── setup.sh │ │ │ │ │ └── terminate_idle_cluster.sh │ │ │ │ ├── resource_calculator/ │ │ │ │ │ └── C2FO-Spark-Config-Cheatsheet.xlsx │ │ │ │ └── scripts/ │ │ │ │ ├── bootstrap_actions.sh │ │ │ │ ├── deep_learning_install_complete.sh │ │ │ │ ├── pyspark_quick_setup.sh │ │ │ │ └── terminate_idle_cluster.sh │ │ │ ├── spark_main.py │ │ │ └── target_encoder.py │ │ └── target_encoder.py │ ├── xlsx/ │ │ └── assessment_workbook.xlsx │ └── xml/ │ ├── 03_linear_regression.xml │ └── 03_logistic_regression.xml ├── 04_decision_trees/ │ ├── 04_decision_trees.md │ ├── data/ │ │ └── .gitignore │ ├── quiz/ │ │ └── .gitignore │ ├── src/ │ │ ├── py_part_4_decision_tree_ensembles.ipynb │ │ └── py_part_4_kaggle_xgboost.ipynb │ └── xml/ │ └── 04_decision_trees.xml ├── 05_neural_networks/ │ ├── 05_neural_networks.md │ ├── assignment/ │ │ └── .gitignore │ ├── data/ │ │ └── .gitignore │ ├── quiz/ │ │ ├── .gitignore │ │ └── sample/ │ │ └── .gitignore │ ├── src/ │ │ ├── .gitignore │ │ ├── py_part_5_MNIST_DNN.ipynb │ │ ├── py_part_5_MNIST_autoencoder.ipynb │ │ ├── py_part_5_MNIST_data_augmentation.ipynb │ │ ├── py_part_5_MNIST_keras_lenet.ipynb │ │ ├── py_part_5_basic_mlp_example.ipynb │ │ └── py_part_5_neural_networks.ipynb │ └── xml/ │ └── 05_neural_networks.xml ├── 06_clustering/ │ ├── 06_clustering.md │ ├── assignment/ │ │ └── key/ │ │ └── .gitignore │ ├── quiz/ │ │ └── .gitignore │ ├── src/ │ │ └── py_part_6_clustering.ipynb │ └── xml/ │ └── 06_clustering.xml ├── 07_association_rules/ │ ├── 07_association_rules.md │ ├── assignment/ │ │ ├── .gitignore │ │ └── assignment_7.docx │ ├── quiz/ │ │ └── .gitignore │ └── xml/ │ └── 07_association_rules.xml ├── 08_text_mining/ │ ├── 08_text_mining.md │ ├── quiz/ │ │ ├── .gitignore │ │ └── sample/ │ │ ├── .gitignore │ │ └── Quiz_8.docx │ └── xml/ │ └── 08_text_mining.xml ├── 09_matrix_factorization/ │ ├── 09_matrix_factorization.md │ └── src/ │ ├── py_part_9_iris_pca.ipynb │ └── py_part_9_kaggle_GLRM_example.ipynb ├── 10_model_interpretability/ │ ├── 10_model_interpretability.md │ ├── quiz/ │ │ └── .gitignore │ └── src/ │ ├── dt_surrogate.ipynb │ ├── lime.ipynb │ ├── loco.ipynb │ ├── mono_xgboost.ipynb │ ├── pdp_ice.ipynb │ └── sensitivity_analysis.ipynb ├── README.md ├── anaconda_py35_h2o_xgboost_graphviz/ │ └── Dockerfile ├── cold_call.py └── requirements.txt ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitattributes ================================================ *.sas7bdat filter=lfs diff=lfs merge=lfs -text *.jpg filter=lfs diff=lfs merge=lfs -text *.png filter=lfs diff=lfs merge=lfs -text *.csv filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text ================================================ FILE: .gitignore ================================================ *.DS_Store .idea* *.ipynb_checkpoints interpreting_ml FAQ RosterInformation.xlsx env ================================================ FILE: 00_intro_and_history/00_intro_and_history.md ================================================ ## Section 00: Intro and History #### Class Notes * *Introduction to Data Mining* - [chapter 1 notes](http://www-users.cs.umn.edu/~kumar/dmbook/dmslides/chap1_intro.pdf) * *Advanced Business Analytics* - chapter 1 notes (available on [Blackboard](https://blackboard.gwu.edu)) * [Instructor notes](notes/00_instructor_notes.pdf) * [More Thoughts on Data Mining](https://github.com/jphall663/nafsa_2018_slides/blob/master/main.pdf) #### Required Reading * [*A Very Short History of Data Science*](http://www.forbes.com/sites/gilpress/2013/05/28/a-very-short-history-of-data-science/) * *Introduction to Data Mining* - chapter 1 * [*The Evolution of Analytics*](http://www.oreilly.com/data/free/the-evolution-of-analytics.csp) (see Blackboard electronic reserves too) #### [Sample Quiz](quiz/sample/quiz_0.pdf) #### [Quiz key](quiz/key/quiz_0_key.pdf) #### Example Data Sets * Structured data * Analytical base table/'Tidy' data - [UCI Adult data](https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data) * Times series data - [Historical stock data for DIJA 30 companies](https://www.kaggle.com/szrlee/stock-time-series-20050101-to-20171231/data) * Transactional data - [State of Oklahoma credit card purchases](https://catalog.data.gov/dataset/purchase-card-pcard-fiscal-year-2014/resource/4105c297-84dc-4f25-9061-c4e2ad38f7d2) * Semi-structured data - [Web visitor interest logs](https://www.kaggle.com/yburger/web-visitor-interests) * Unstructured data * Text data - [Hillary Clinton's emails](https://www.kaggle.com/kaggle/hillary-clinton-emails) * Image data - [CIFAR-10 data](https://www.kaggle.com/c/cifar-10) #### Supplementary References * [*Statistical Modeling: the Two Cultures*](http://www.stat.uchicago.edu/~lekheng/courses/191f09/breiman.pdf) * [*Fifty Years of Data Science*](http://courses.csail.mit.edu/18.337/2015/docs/50YearsDataScience.pdf) * [*The Future of Data Analysis*](https://projecteuclid.org/euclid.aoms/1177704711) * [*Data Science: An Action Plan for Expanding the Technical Areas of the Field of Statistics*](https://utexas.instructure.com/files/35465950/download) *** * [H2O Algorithm Overview](notes/h2o_algos.pdf) * [Quora answer for good machine learning references](https://www.quora.com/What-are-some-of-the-best-research-papers-books-for-Machine-learning) * [An Empirical Comparison of Supervised Learning Algorithms](http://www.eecs.wsu.edu/~holder/courses/CptS570/fall07/present/CaruanaICML06.pdf) ================================================ FILE: 00_intro_and_history/notes/.gitignore ================================================ *.pptx ================================================ FILE: 00_intro_and_history/quiz/.gitignore ================================================ key ================================================ FILE: 00_intro_and_history/spring_2017_announcements/spring_2017_announcements.md ================================================ ## Section 00 Announcements 1. Attend class **if possible**: * In general, you only need to attend the class (e.g. Thursday or Friday) you registered for, **not both classes**. * As of now Thursday's class (1/19) is still on schedule. * Friday's class (1/20) is **cancelled** because the university is closed (as some of you correctly pointed out). * Neither section's classroom is capable of video recordings. * I intend to teach the same material for both classes. 2. Read the class [syllabus](https://github.com/jphall663/GWU_data_mining/blob/master/README.md). 3. Study all the class notes and required reading materials listed on the [Section 00 page](https://github.com/jphall663/GWU_data_mining/blob/master/00_intro_and_history/00_intro_and_history.md) in preparation for a quiz the following week (1/26-1/27). You should also have a look at the [sample quiz](https://github.com/jphall663/GWU_data_mining/blob/master/00_intro_and_history/sample_quiz/quiz_0.pdf). The *Advanced Business Analytics* materials have been posted to the Electronic Reserves section of Blackboard. 4. Pick your group for the semester project. Please speak with your classmates about which group you will be joining and either send a representative from your group to Thursday's class or contact me about your group members by email (one email per group please, and include your section number: Thursday=11, Friday=12). 5. Begin installing software over the next few weeks: * Register for [SAS on Demand for Academics](https://odamid.oda.sas.com/SASODAControlCenter/enroll.html?enroll=f0c0602b-d3c3-4676-b44c-c378f14fac91) which will give you access to cloud versions of SAS software suitable for in class use. * You may need a local install of SAS to complete some assignments and you may need to contact the [GWU Instructional Technology Lab](https://itl.gwu.edu/sas-software-distribution) for information or assistance regarding installing this software. I would try to start installing SAS and SAS Enterprise Miner soon. * For Python and h2o.ai: * First, install [Anaconda Python](https://www.continuum.io/downloads). * Then install the [h2o.ai library for Python](http://h2o-release.s3.amazonaws.com/h2o/rel-tutte/2/index.html). (See the 'INSTALL IN PYTHON' tab **only**). * If you are have difficulties with installing software, we can discuss them in class or office hours. ================================================ FILE: 01_basic_data_prep/01_basic_data_prep.md ================================================ ## Section 01: Basic Data Prep #### Basic data operations A great deal of work in data mining projects is spent on data munging. Below some of the basic operations are illustrated and defined. Code examples are provided in common languages. ![alt text](basic_data_operations.png) **Subset/Select/Filter/Slice Rows** - Selecting rows or reducing the number of rows in a data set by some criterion. **Subset/Select/Slice Columns** - Selecting(/variables) or reducing the number of columns(/variables) in a data set by some criterion. **Sort/Arrange/Order By** - Arranging the rows of a data set in sequential order based on the values of one or more variables. **Group By** - Grouping the rows of a data set together based on the values of one or more variables. **Transpose** - Rearranging a data set such that the row and column(/variable) values are switched. **Merge/Bind** - Combining data sets side-by-side regardless of the values of any variable(s). **Join/Bind** - Combining data sets side-by-side based on matching values of variables in both data sets. **Append/Bind** - Stacking data sets bottom-to-top regardless of the values of any variable(s). #### Code examples * [Python Pandas](01_basic_data_prep.md#python-pandas---view-notebook) - [view notebook](src/notebooks/py/Py_Part_0_pandas_numpy.ipynb) * R * [Basics, dplyr, and ggplot](01_basic_data_prep.md#r-basics-dplyr-and-ggplot---view-notebook) - [view notebook](src/notebooks/r/R_Part_0_Basics_dplyr_and_ggplot2.ipynb) * [data.table](01_basic_data_prep.md#r-datatable---view-notebook) - [view notebook](src/notebooks/r/R_Part_1_data.table.ipynb) * SAS * [Base SAS and PROC SGPLOT](01_basic_data_prep.md#base-sas-and-proc-sgplot---clonedownload-notebook) - [clone/download notebook](src/notebooks/sas) * [PROC SQL](01_basic_data_prep.md#sas-proc-sql---clonedownload-notebook) - [clone/download notebook](src/notebooks/sas) #### Class Notes: * [Instructor Notes](notes/01_instructor_notes.pdf) * *Introduction to Data Mining* - [chapter 2 notes](https://www-users.cs.umn.edu/~kumar/dmbook/dmslides/chap2_data.pdf) #### Required Reading * *Introduction to Data Mining* - chapter 2, sections 2.1-2.3 * [*Tidy Data*](https://www.jstatsoft.org/article/view/v059i10) #### [Sample Quiz](quiz/sample/quiz_1.pdf) #### [Quiz key](quiz/key/quiz_1_key.pdf) #### [Assignment](assignment/assignment_1.pdf) #### [Assignment Key](assignment/key) #### Supplementary References * Simple [benchmark](https://github.com/szilard/benchm-databases) of data processing tools by [@szilard](https://github.com/szilard) *** #### Python Pandas - [view notebook](src/notebooks/py/Py_Part_0_pandas_numpy.ipynb) ```python """ Copyright (C) 2017 - 2023 J. Patrick Hall, jphall@gwu.edu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ #%% standard output ########################################################### # print is the primary function used to write to the console in Python # print is a *function* in Python 3 # print is a *statement* in Python 2 print('Hello World!') # Python 3 print 'Hello World!' # Python 2 # an object with no functions or operators is also printed to the console x = 'Hello World!' x #%% importing libraries ####################################################### # python contains many libraries, often called modules # modules are: # * nearly always free and open source # * installed using many different methods - a package manager like conda, # readily available through the Anaconda release of Python # (https://www.continuum.io/downloads) - is often a good solution for # installing and managing packages/modules # * of relatively high and uniform quality and but licensing can vary # * imported using the import statement # import packages # packages can be aliased using the as statement import string # module with string utilities import pandas as pd # module with many utilities for dataframes import numpy as np # module with numeric and math utilities import matplotlib.pyplot as plt # module for plotting #%% generating a sample data set ############################################## # set the number of rows and columns for the sample data set n_rows = 1000 n_vars = 2 ### create lists of strings that will become column names # lists are: # * a common data structure in python # * surrounded by square brackets [] # * can contain different data types as list elements # * often created by a speficic type pythonic syntax, list comprehensions # * indexed from 0, unlike SAS or R # * slicable using numeric indices # list comprehension # str() converts to string # range() creates a list of values from arg1 to arg2 num_col_names = ['numeric' + str(i+1) for i in range(0, n_vars)] num_col_names # type() can be used to determine the class of an object in python type(num_col_names) # anonymous functions # the lamba statement is used to define simple anonymous functions # map() is very similar to to lapply() in R # it applies a function to the elements of a list char_col_names = map(lambda j: 'char' + str(j+1), range(0, n_vars)) char_col_names # string.ascii_uppercase is a string constant of uppercase letters print(string.ascii_uppercase) # another list comprehension # slice first seven letters of the string text_draw = [(letter * 8) for letter in string.ascii_uppercase[:7]] text_draw # create a random numerical columns directly using numpy # the numerical columns will originally be a 2-D numpy array randoms = np.random.randn(n_rows, n_vars) randoms[0:5] type(randoms) # create numerical columns of Pandas dataframe from numpy array # notice that a key is generated automatically num_cols = pd.DataFrame(randoms, columns=num_col_names) num_cols.head() type(num_cols) # create random character columns as a Pandas dataframe # use numpy sampling function choice() to generate a numpy array of random text # create Pandas dataframe from numpy 2-D array char_cols = pd.DataFrame(np.random.choice(text_draw, (n_rows, n_vars)), columns=char_col_names) char_cols.head() # use Pandas concat() to join the numeric and character columns scratch_df = pd.concat([num_cols, char_cols], axis=1) scratch_df.head() #%% plotting variables in a dataframe ######################################### # pandas has several builtin plotting utilities # pandas hist() method to plot a histogram of numeric1 # pandas alllows slicing by dataframes index using ix[] # ix[:, 0] means all rows of the 0th column - or numeric1 scratch_df.ix[:, 0].plot.hist(title='Histogram of Numeric1') # use pandas scatter() method to plot numeric1 vs. numeric2 scratch_df.plot.scatter(x='numeric1', y='numeric2', title='Numeric1 vs. Numeric2') #%% subsetting pandas dataframes ############################################## ### by columns # subsetting by index # one column returns a Pandas series # a Pandas series is like a single column vector scratch_df.iloc[:, 0].head() type(scratch_df.iloc[:, 0]) # more than one columns makes a dataframe # iloc enables location by index scratch_df.iloc[:, 0:2].head() type(scratch_df.iloc[:, 0:2]) # subsetting by variable name scratch_df['numeric1'].head() scratch_df.numeric1.head() # loc[] allows for location by column or row label scratch_df.loc[:, 'numeric1'].head() # loc can accept lists as an input scratch_df.loc[:, ['numeric1', 'numeric2']].head() ### by rows # subsetting by index scratch_df[0:3] # selecting by index scratch_df.iloc[0:5, :] # select by row label # here index/key values 0:5 are returned scratch_df.loc[0:5, :] ### boolean subsetting scratch_df[scratch_df.numeric2 > 0].head() scratch_df[scratch_df.char1 == 'AAAAAAAA'].head() scratch_df[scratch_df.char1.isin(['AAAAAAAA', 'BBBBBBBB'])].head() scratch_df[scratch_df.numeric2 > 0].loc[5:10, 'char2'] #%% updating the dataframe #################################################### # must use .copy() or this will be a symbolic link scratch_df2 = scratch_df.copy() # pandas supports in place overwrites of data # overwrite last 500 rows of char1 with ZZZZZZZZ scratch_df2.loc[500:, 'char1'] = 'ZZZZZZZZ' scratch_df2.tail() # iat[] allows for fast location of specific indices scratch_df2.iat[0, 0] = 1000 scratch_df2.head() #%% sorting the dataframe ##################################################### # sort by values of one variable scratch_df2.sort_values(by='char1').head() # sort by values of multiple variables and specify sort order scratch_df3 = scratch_df2.sort_values(by=['char1', 'numeric1'], ascending=[False, True]).copy() scratch_df3.head() # sort by the value of the dataframe index scratch_df2.sort_index().head() #%% adding data to the dataframe ############################################## # pandas concat() supports numerous types of joins and merges # pandas merge() supports joins and merges using more SQL-like syntax # i.e. merge(left, right, on=) # pandas append() supports stacking dataframes top-to-bottom # create a toy dataframe to join/merge onto scratch_df scratch_df3 = scratch_df3.drop(['numeric1', 'numeric2'] , axis=1) scratch_df3.columns = ['char3', 'char4'] scratch_df3.tail() # default outer join on indices # indices are not in identical, matching order # this will create 2000 row � 6 column dataset scratch_df4 = pd.concat([scratch_df, scratch_df3]) scratch_df4 # outer join on matching columns # axis=1 specificies to join on columns # this performs the expected join scratch_df5 = pd.concat([scratch_df, scratch_df3], axis=1) scratch_df5.head() scratch_df5.shape # append scratch_df6 = scratch_df.append(scratch_df) scratch_df6.shape #%% comparing dataframes ###################################################### # Use Pandas equals() to compare dataframes # Row order is not ignored scratch_df.equals(scratch_df) scratch_df.equals(scratch_df.sort_values(by='char1')) scratch_df.equals(scratch_df2) #%% summarizing dataframes #################################################### # Pandas offers several straightforward summarization functions scratch_df.mean() scratch_df.mode() scratch_df.describe() #%% by group processing ####################################################### # use pandas groupby() to create groups for subsequent processing # use summary function size() on groups created by groupby() counts = scratch_df.groupby('char1').size() plt.figure() counts.plot.bar(title='Frequency of char1 values (Histogram of char1)') # groupby the values of more than one variable group_means = scratch_df.groupby(['char1', 'char2']).mean() group_means #%% transposing a table ####################################################### # transposing a matrix simply switches row and columns values # transposing a dataframe is more complex because of metadata associated with # variable names and row indices # pandas .T performs a transpose scratch_df.T.iloc[:, 0:5] # often, instead of simply transposing, a data set will need to be reformatted # in a melt/stack -> column split -> cast action described in Hadley # Wickham's *Tidy Data*: # https://www.jstatsoft.org/article/view/v059i10 # # see the stack and unstack methods for Pandas dataframes #%% exporting and importing a dataframe # many to_* methods available for exporting dataframes to other formats # many read_* methods available for creating dataframes from other formats # export to csv scratch_df.to_csv('scratch.csv') # import from csv scratch_df7 = pd.read_csv('scratch.csv') ``` #### R Basics, dplyr, and ggplot - [view notebook](src/notebooks/r/R_Part_0_Basics_dplyr_and_ggplot2.ipynb) ```r ############################################################################### # Copyright (C) 2017 - 2023 J. Patrick Hall, jphall@gwu.edu # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. ### standard output ########################################################### # two primary R core functions are used to print information to the console # print() and cat() # print is a generic function that responds differently to different classes # of R objects # note that '.' is just a character, it does not denote object membership # as in Java and Python # cat() simply attempts to print string literals # an object with no functions or operators is also printed to the console x <- 'Hello World!' print(x) cat(x) x class(x) <- 'some.class' print(x) cat(x) x ### import packages ########################################################### # R contains thousands of packages for many different purposes # Packages are: # - nearly always free and open source # - installed using the install.packages() function or a GUI command # - of varying quality and licensing # - loaded using the library() function, after being installed library(dplyr) # popular package for data wrangling with consistent syntax library(ggplot2) # popular package for plotting with consistent syntax # surpress warnings about versions and object masking # using suppressPackageStartupMessages() # suppressPackageStartupMessages(library(dplyr)) # suppressPackageStartupMessages(library(ggplot2)) ### working directory ######################################################### # enter the directory location of this file within single quotes # '<-' is the preferred assignment operator in R # '/' is the safest directory separator character to use git_dir <- '/path/to/GWU_data_mining/01_basic_data_prep/src/raw/r' # set the working directory # the working directory is where files are written to and read from by default # setwd() sets the working directory # getwd() prints the current working directory setwd(git_dir) getwd() ### generate a sample data set ################################################ # set the number of rows and columns for the sample data set n_rows <- 1000 n_vars <- 5 # create a key variable # a key variable has a unique value for each row of a data set # seq() generates values from a number (default = 1), to another number, by # a certain value (default = 1) # many types of data structures in R have key variables (a.k.a. row names) by # default key <- seq(n_rows) # show the first five elements # most data structures in R can be 'sliced', i.e. using numeric indices # to select a subset of items key[1:5] # create lists of strings that will become column names # paste() concatentates strings with a separator character in between them num_vars <- paste('numeric', seq_len(n_vars), sep = '') num_vars char_vars <- paste('char', seq_len(n_vars), sep = '') char_vars # initialize a data.frame with the key variable scratch_df <- data.frame(INDEX = key) # add n_var numeric columns, each with n_row rows, to the data.frame # each column contains random uniform numeric values generated by runif() # replicate() replicates n_row length lists of numeric values n_vars times scratch_df[, num_vars] <- replicate(n_vars, runif(n_rows)) # head() displays the top of a data structure head(scratch_df) # add n_var character columns, each with n_row rows, to the data.frame # create a list of strings from which to generate random text variables # sapply() applies a function to a sequence of values # LETTERS is a character vector containing uppercase letters # an anonymous function is defined that replicates a value 8 times with no # seperator character # replicate() replicates n_var lists of n_row elements from text_draw sampled # randomly from test_draw using the sample() function text_draw <- sapply(LETTERS[1:7], FUN = function(x) paste(rep(x, 8), collapse = "")) text_draw scratch_df[, char_vars] <- replicate(n_vars, sample(text_draw, n_rows, replace = TRUE)) head(scratch_df) # convert from standard data.frame to dlpyr table # dplyr is a popular, intuitive, and effcient package for manipulating data sets # R has many data types: http://www.statmethods.net/input/datatypes.html scratch_tbl <- tbl_df(scratch_df) # use the dplyr::glimpse function to see a summary of the generated data set glimpse(scratch_tbl) ### plotting variables in the table ########################################### # ggplot allows you to overlay graphics using the '+' operator # plot univariate densities of numeric1 and char1 using the geom_bar() # components # gtitle adds title # coord_flip rotates the bar chart ggplot(scratch_tbl, aes(numeric1)) + geom_bar(stat = "bin", fill = "blue", bins = 100) + ggtitle('Histogram of Numeric1') ggplot(scratch_tbl, aes(char1)) + geom_bar(aes(fill=char1)) + ggtitle('Histogram of Char1') + coord_flip() ### subsetting the table ###################################################### # subset variables using dplyr::select # subset a range of variables with similar names and numeric suffixes # subset all the variables whose names begin with 'char' # subset variables by their names num_vars <- select(scratch_tbl, num_range('numeric', 1:n_vars)) head(num_vars) char_vars <- select(scratch_tbl, starts_with('char')) head(char_vars) mixed_vars <- select(scratch_tbl, one_of('numeric1', 'char1')) head(mixed_vars) # subset rows using multiple dplyr functions # subset rows using their numeric indices # subset top rows based on the value of a certain variable # subset rows where a certain variable has a certain value some_rows <- slice(scratch_tbl, 1:10) some_rows sorted_top_rows <- top_n(scratch_tbl, 10, numeric1) sorted_top_rows AAAAAAAA_rows <- filter(scratch_tbl, char1 == 'AAAAAAAA') head(AAAAAAAA_rows) ### updating the table ######################################################## # dplyr, as a best practice, does not support in-place overwrites of data # dplyr::transform enables the creation of new variables from existing # variables scratch_tbl2 <- transform(scratch_tbl, new_numeric = round(numeric1, 1)) head(scratch_tbl2) # dplyr::mutate enables the creation of new variables from existing # variables and computed variables scratch_tbl2 <- mutate(scratch_tbl, new_numeric = round(numeric1, 1), new_numeric2 = new_numeric * 10) head(scratch_tbl2) # dplyr::transmute enables the creation of new variables from existing # variables and computed variables, but keeps only newly created variables scratch_tbl2 <- transmute(scratch_tbl, new_numeric = round(numeric1, 1), new_numeric2 = new_numeric * 10) head(scratch_tbl2) ### sorting the table ######################################################### # sort tables using dplyr::arrange # sort by one variable # sort by two variables sorted <- arrange(char_vars, char1) head(sorted) sorted2 <- arrange(char_vars, char1, char2) head(sorted2) ### adding data to the table ################################################## # add data to a table using dplyr:: bind and dplyr::join # bind smashes tables together # join combines tables based on matching values of a shared variable bindr <- bind_rows(sorted, sorted2) nrow(bindr) bindc <- bind_cols(sorted, sorted2) ncol(bindc) # create two tables to join on a key variable sorted_left <- arrange(select(scratch_tbl, one_of('INDEX', 'char1')), char1) right <- select(scratch_tbl, one_of('INDEX', 'numeric1')) # Perform join # joined table contains `char1` from the left table # and `numeric1` from the right table # matched by the value of `INDEX` joined <- left_join(sorted_left, right, by = 'INDEX') head(joined) ### comparing tables ########################################################## # comparing tables using dplyr::all.equal # dplyr::all.equal will test tables for equality despite the order of rows # and/or columns # very useful for keeping track of changes to important tables # Create a table for comparision test <- select(scratch_tbl, one_of('INDEX', 'numeric1', 'char1')) # Compare print(all.equal(joined, test, ignore_row_order = FALSE)) print(all.equal(joined, test, ignore_col_order = FALSE)) print(all.equal(joined, test)) ### summarizing tables ######################################################## # combine rows of tables into summary values with dplyr::summarise and # dplyr::summarise_each # summarize one variable using summarise, avg is the name of the created var # summarize many variables using summarise_each, funs() defines the summary # function ave <- summarise(num_vars, avg = mean(numeric1)) ave all_aves <-summarise_each(num_vars, funs(mean)) all_aves ### by group processing ####################################################### # By groups allow you to divide and process a data set based on the values of # one or more variables # dplyr::group_by groups a data set together based on the values of a certain # variable # operations can then be applied to groups grouped <- group_by(joined, char1) grouped <- summarise(grouped, avg = mean(numeric1)) grouped ### Transposing a table ####################################################### # Transposing a matrix simply switches row and columns values # Transposing a data.frame or dplyr table is more complex because of metadata # associated with variable names and row indices transposed = t(scratch_tbl) glimpse(transposed) # Often, instead of simply transposing, a data set will need to be reformatted # in a melt/stack-column split-cast action described in Hadley Wickham's # 'Tidy Data' https://www.jstatsoft.org/article/view/v059i10 # see also dplyr::gather and dplyr::spread() ### exporting and importing the table ######################################### # the R core function write.table enables writing text files # the similar R core function read.table enables reading text files # export # use the sep option to specifiy the columns delimiter character # row.names = FALSE indicates not to save the row number to the text file filename <- paste(git_dir, 'scratch.csv', sep = '/') write.table(scratch_tbl, file = filename, quote = FALSE, sep = ',', row.names = FALSE) # import import <- read.table(filename, header = TRUE, sep = ',') ``` #### R data.table - [view notebook](src/notebooks/r/R_Part_1_data.table.ipynb) ```r ############################################################################### # Copyright (C) 2017 - 2023 J. Patrick Hall, jphall@gwu.edu # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. ### data.table is an efficient package for manipulating data sets ############# # data.table is implemented in optimized C and often attempts to update # items by reference to avoid copying large amounts of data # data.table is a subclass of data.frame and generally accepts data.frame # syntax # general form of a data.table is dt[i, j, by] # i is row index, indexed from 1 ... # j is col index, indexed from 1 ... # by is by-group var name library(data.table) # enter the directory location of this file within single quotes git_dir <- '/path/to/GWU_data_mining/01_basic_data_prep/src/raw/r' # set the working directory setwd(git_dir) getwd() ### generate a sample data set ################################################ # set the number of rows and columns for the sample data set n_rows <- 1000 n_vars <- 3 # create a key variable key <- seq(n_rows) # create lists of strings that will become column names num_vars <- paste('numeric', seq_len(n_vars), sep = '') char_vars <- paste('char', seq_len(n_vars), sep = '') # create a list of strings from which to generate random text variables text_draw <- sapply(LETTERS[1:7], FUN = function(x) paste(rep(x, 8), collapse = "")) # create a sample data.table scratch_dt <- data.table(key, replicate(n_vars, runif(n_rows)), replicate(n_vars, sample(text_draw, n_rows, replace = TRUE))) # the data.table::set* family of methods in data.table always updates items # by reference for efficiency setnames(scratch_dt, c('key', num_vars, char_vars)) scratch_dt ### plotting ################################################################## # data.table enables simple plotting for numeric variables scratch_dt[,plot(numeric1, numeric2)] ### subsetting the table ###################################################### ### by column # selecting a single column results in a vector class(scratch_dt[,char1]) length(scratch_dt[,char1]) # multiple columns can be selected # specifying multiple columns by a vector results in a concatenated vector class(scratch_dt[,c(numeric1, char1)]) length(scratch_dt[,c(numeric1, char1)]) # specifying multiple columns by list results in a data.table class(scratch_dt[,list(numeric1, char1)]) scratch_dt[,list(numeric1, char1)] # '.' is an alias for 'list' class(scratch_dt[,.(numeric1, char1)] ) scratch_dt[,.(numeric1, char1)] # computed columns scratch_dt[1:5, round(numeric1, 1)] # compute standalone vector scratch_dt[, .(new_numeric = round(numeric1, 1))] # assign name ### by row scratch_dt[3:5] # use numeric indices/slicing scratch_dt[3:5,] scratch_dt[char1 == 'DDDDDDDD'] scratch_dt[char1 %in% c('DDDDDDDD', 'EEEEEEEE')] # .N contains the number of rows or the last row scratch_dt[.N] scratch_dt[,.N] ### sorting the table ######################################################### # data.table::setorder reorders columns by reference sorted <- setorder(scratch_dt, char1) sorted # when used in data.table order() also reorders columns by reference sorted <- scratch_dt[order(char1)] sorted # sort orders can be specified by using order() sorted2 <- scratch_dt[order(char1, -numeric1)] sorted2 # data.table::setkey reorders columns by reference by the specified key # variable (here called 'key') and sets the variable to the key of the # data.table for future operations # subsetting and selecting by the key variable will be more efficient # in future operations sorted3 <- setkey(scratch_dt, key) sorted3 ### updating the table ######################################################## # update rows by reference using the := operator # data.table supports overwrite of data scratch_dt2 <- scratch_dt[key > 500, char1 := 'ZZZZZZZZ'] scratch_dt2 # create new columns by reference using the := operator scratch_dt2[, new_numeric := round(numeric1, 1)] scratch_dt2 ### adding data to the table ################################################## # use data.table::rbindlist to stack data.tables vertically bindr <- rbindlist(list(sorted, sorted2)) nrow(bindr) # data.table::merge joins tables side-by-side using a common key variable # joining data.tables without prespecified keys (i.e. by using data.table::setkey) # requires that a key for the join be specified # The prefix 'x.' is added to the left table variable names by default # The prefix 'y.' is added to the right table variables names by default joined1 <- merge(sorted, sorted2, by = c('key')) joined1 # joining data.tables with prespecified keys does not require that a key be # specified when data.table::merge is called # Add a key to the scratch_dt2 table scratch_dt2 <- setkey(scratch_dt2[,.(key, char1, new_numeric)], key) scratch_dt2 # Now sorted3 and scratch_dt2 can be joined without specifiying a key joined2 <- merge(sorted3, scratch_dt2) joined2 ### by group processing ####################################################### # by groups allow you to divide and process a data set based on the values # of a certain variable # general form of a data.table is dt[i, j, by] # by is by group variable name scratch_dt2[, sum(new_numeric), by = char1] scratch_dt2[1:500, sum(new_numeric), by = char1] # .N returns the number of rows in each by group scratch_dt2[, .N, by = char1] # by groups can also be a list scratch_dt[, mean(new_numeric), by = .(char1, char2)] # .SD represents all the variables except the by variable(s) scratch_dt2[, lapply(.SD, sum), by = char1] # .N can be used to find the first and last rows of each by group scratch_dt2[, .SD[c(1, .N)], by = char1] ### operations can be chained ################################################# # chaining scratch_dt2[, .(new_numeric2 = sum(new_numeric)), by = char1][new_numeric2 > 40] # no chaining scratch_dt3 <- scratch_dt2[, .(new_numeric2 = sum(new_numeric)), by = char1] scratch_dt3[new_numeric2 > 40] ### Transposing a table ####################################################### # Transposing a matrix simply switches row and columns values # Transposing a data.frame or data.table is more complex because of metadata # associated with variable names and row indices transposed = t(scratch_dt) str(transposed) # Often, instead of simply transposing, a data set will need to be reformatted # in a melt/stack-column split-cast action described in Hadley Wickham's # 'Tidy Data' https://www.jstatsoft.org/article/view/v059i10 # see also dcast.data.table and melt.data.table ### exporting and importing the table ######################################### # fread and fwrite allow for optimized file i/o # fwrite only availabe in data.table version > 1.9.7 # available from http://Rdatatable.github.io/data.table # use fwrite to write a file fwrite(scratch_dt, 'scratch_dt.csv') # use fread to read a file scratch_dt <- fread('scratch_dt.csv') head(scratch_dt) ``` #### Base SAS and PROC SGPLOT - [clone/download notebook](src/notebooks/sas) ```sas ******************************************************************************; * Copyright (C) 2015 by SAS Institute Inc., Cary, NC 27513 USA *; * *; * Licensed under the Apache License, Version 2.0 (the "License"); *; * you may not use this file except in compliance with the License. *; * You may obtain a copy of the License at *; * *; * http://www.apache.org/licenses/LICENSE-2.0 *; * *; * Unless required by applicable law or agreed to in writing, software *; * distributed under the License is distributed on an "AS IS" BASIS, *; * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *; * See the License for the specific language governing permissions and *; * limitations under the License. *; ******************************************************************************; ******************************************************************************; * NOTE: examples are meant for the free SAS University Edition *; * to install see: http://www.sas.com/en_us/software/university-edition.html *; ******************************************************************************; ******************************************************************************; * SECTION 1: Hello World! - Standard SAS Output *; ******************************************************************************; * the _null_ data step allows you to execute commands; * or read a data set without creating a new data set; data _null_; put 'Hello world!'; run; * print the value of a variable to the log; * VERY useful for debugging; data _null_; x = 'Hello world!'; put x; put x=; run; * file print writes to the open standard output; * usually html or listing; data _null_; file print; put 'Hello world!'; run; * logging information levels; * use these prefixes to print color-coded information to the log; data _null_; put 'NOTE: Hello world!'; put 'WARNING: Hello world!'; put 'ERROR: Hello world!'; run; * you can also use the put macro statement; * SAS macro statements are often used for program flow control around DATA; * step statements and SAS procedures; * This tutorial will only use simple macro statements; %put Hello world!; %put NOTE: Hello world!; %put WARNING: Hello world!; %put ERROR: Hello world!; %put 'Hello world!'; /* macro variables are ALWAYS strings */ * the macro preprocessor resolves macro variables as text literals; * before data step code is executed; %let x = Hello world!; %put &x; %put '&x'; /* single quotes PREVENT macro resolution */ %put "&x"; /* double quotes ALLOW macro resolution */ ******************************************************************************; * SECTION 2 - SAS data sets *; ******************************************************************************; *** sas data sets ************************************************************; * the sas data set is the primary data structure in the SAS language; * now you will make one called scratch; * The size of data set is more typically defined by the size of the SAS data * set(s) from which it is created; %let n_rows = 1000; /* define number of rows */ %let n_vars = 5; /* define number of character and numeric variables */ * options mprint; /* to see the macro variables resolve uncomment this line */ data scratch; /* data sets can be made permanent by creating them in a library */ /* syntax: data . */ /* a library is like a database */ /* a library is usually directly mapped to a filesystem directory */ /* since you did not specify a permanent library on the data statement */ /* the scratch set will be created in the temporary library work */ /* it will be deleted when you leave SAS */ /* SAS is strongly typed - it is safest to declare variables */ /* using a length statement - especially for character variables */ /* $ denotes a character variable */ /* arrays are a data structure that can exist during the data step */ /* they are a reference to a group of variables */ /* horizontally across a data set */ /* $ denotes a character array */ /* do loops are often used in conjuction with arrays */ /* SAS arrays are indexed from 1, like R data structures */ /* a key is a variable with a unique value for each row */ /* mod() is the modulo function */ /* the %eval() macro function performs math operations */ /* before text substitution */ /* the drop statement removes variables from the output data set */ /* since you are not reading from a pre-existing data set */ /* you must output rows explicitly using the output statement */ length key 8 char1-char&n_vars $ 8 numeric1-numeric&n_vars 8; text_draw = 'AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD EEEEEEEE FFFFFFFF GGGGGGGG'; array c $ char1-char&n_vars; array n numeric1-numeric&n_vars; do i=1 to &n_rows; key = i; do j=1 to %eval(&n_vars); /* assign a random value from text_draw */ /* to each element of the array c */ c[j] = scan(text_draw, floor(7*ranuni(12345)+1), ' '); /* assign a random numeric value to each element of the n array */ /* ranuni() requires a seed value */ n[j] = ranuni(%eval(&n_rows*&n_vars)); end; if mod(i, %eval(&n_rows/10)) = 0 then put 'Processing line ' i '...'; drop i j text_draw; output; end; put 'Done.'; run; * (obs=) option enables setting the number of rows to print; proc print data=scratch (obs=5); run; *** basic data analysis ******************************************************; * use proc contents to understand basic information about a data set; proc contents data=scratch; run; * use proc freq to analyze categorical data; proc freq /* nlevels counts the discreet levels in each variable */ /* the colon operator expands to include variable names with prefix char */ data=scratch nlevels; /* request frequency bar charts for each variable */ tables char: / plots=freqplot(type=bar); run; * use proc univariate to analyze numeric data; proc univariate data=scratch; /* request univariate statistics for variables names with prefix 'numeric' */ var numeric:; /* request histograms for the same variables */ histogram numeric:; /* inset basic statistics on the histograms */ inset min max mean / position=ne; run; *** basic data manipulation **************************************************; * subsetting columns; * create scratch2 set; data scratch2; /* set statement reads from a pre-existing data set */ /* no output statement is required - this is more typical */ /* using data set options: keep, drop, etc. is often more efficient than */ /* corresponding data step statements */ /* : notation */ set scratch(keep=numeric:); run; * print first five rows; proc print data=scratch2(obs=5); run; * overwrite scratch2 set; data scratch2; /* ranges of vars specified using var - var syntax */ set scratch(keep=char1-char&n_vars); run; * print first five rows; proc print data=scratch2(obs=5); run; * overwrite scratch2 set; data scratch2; /* by name */ set scratch(keep=key numeric1 char1); run; * print first five rows; proc print data=scratch2(obs=5); run; * subsetting and modifying columns; * select two columns and modify them with data step functions; * overwrite scratch2 set; data scratch2; /* use length statement to ensure correct length of trans_char1 */ /* the lag function saves the value from the row above */ /* lag will create a numeric missing value in the first row */ /* tranwrd finds and replaces character values */ set scratch(keep=key char1 numeric1 rename=(char1=new_char1 numeric1=new_numeric1)); length trans_char1 $8; lag_numeric1 = lag(new_numeric1); trans_char1 = tranwrd(new_char1, 'GGGGGGGG', 'foo'); run; * print first five rows; * notice that '.' represents numeric missing in SAS; proc print data=scratch2(obs=5); run; * subsetting rows; * select only the first row and impute the missing value; * create scratch3 set; data scratch3; /* the where data set option can subset rows of data sets */ /* there are MANY other ways to do this ... */ set scratch2 (where=(key=1)); lag_numeric1 = 0; run; * print; proc print data=scratch3; run; * subsetting rows; * remove the problematic first row containing the missing value; * from scratch2 set; data scratch2; set scratch2; if key > 1; run; * print first five rows; proc print data=scratch2(obs=5); run; * combining data sets top-to-bottom; * add scratch3 to the bottom of scratch2; proc append base=scratch2 /* proc append does not read the base set */ data=scratch3; /* for performance reasons base set should be largest */ run; * sorting data sets; * sort scratch2 in place; proc sort data=scratch2; by key; /* you must specificy a variables to sort by */ run; * print first five rows; proc print data=scratch2(obs=5); run; * sorting data sets; * create the new scratch4 set; proc sort data=scratch2 out=scratch4; /* specifying an out set creates a new data set */ by new_char1 new_numeric1; /* you can sort by many variables */ run; * print first five rows; proc print data=scratch4(obs=5); run; * combining data sets side-by-side; * to create messy scratch5 set; data scratch5; /* merge simply attaches two or more data sets together side-by-side*/ /* it overwrites common variables - be careful */ merge scratch scratch4; run; * print first five rows; proc print data=scratch5(obs=5); run; * combining data sets side-by-side; * join columns to scratch from scratch2 when key variable matches; * to create scratch6 correctly; data scratch6; /* merging with a by variable is safer */ /* it requires that both sets be sorted */ /* then rows are matched when key values are equal */ /* very similar to SQL join */ merge scratch scratch2; by key; run; * print first five rows; proc print data=scratch6(obs=5); run; * don't forget PROC SQL; * nearly all common SQL statements and functions are supported by PROC SQL; * join columns to scratch from scratch2 when key variable matches; * to create scratch7 correctly; proc sql noprint; /* noprint suppresses procedure output */ create table scratch7 as select * from scratch join scratch2 on scratch.key = scratch2.key; quit; * print first five rows; proc print data=scratch7(obs=5); run; * comparing data sets; * results from data step merge with by variable and PROC SQL join; * should be equal; proc compare base=scratch6 compare=scratch7; run; * export data set; * to default directory; * to create a csv file; proc export data=scratch7 /* likely the correct directory for SAS University Edition */ outfile='/folders/myfolders/sasuser.v94/scratch.csv' /* create a csv */ dbms=csv /* replace an existing file with that name */ replace; run; * import data set; * from default directory; * from the csv file; * to overwrite scratch7 set; proc import /* import from scratch7.csv */ /* likely the correct directory for SAS University Edition */ datafile='/folders/myfolders/sasuser.v94/scratch.csv' /* create a sas table in the work library */ out=scratch7 /* from a csv file */ dbms=csv /* replace an existing data set with that name */ replace; run; * by group processing; * by variables can be used in the data step; * the data set must be sorted; * create scratch8 summary set; data scratch8; set scratch4; by new_char1 new_numeric1; retain count 0; /* retained variables are remembered from row-to-row */ if last.new_char1 then do; /* first. and last. can be used with by vars */ count + 1; /* shorthand to increment a retained variable */ output; /* output the last row of a sorted by group */ end; run; * using PROC PRINT without the data= option prints the most recent set; proc print; run; * by group processing; * by variables can be used efficiently in most procedures; * the data set must be sorted; proc univariate data=scratch4; var lag_numeric1; histogram lag_numeric1; inset min max mean / position=ne; by new_char1; run; * transpose; proc transpose data=scratch out=scratch8; run; * print; proc print; var _NAME_ col1-col5; run; * transposing a sas data set can be a complex process; * because of metadata associated with variable names; * often, instead of simply transposing, a data set will need to be reformatted; * in a melt/stack - column split - cast action described in Tidy Data by * Hadley Wickham: https://www.jstatsoft.org/article/view/v059i10 * see also: * https://github.com/sassoftware/enlighten-apply/tree/master/SAS_UE_TidyData ******************************************************************************; * SECTION 3 - generating analytical graphics *; ******************************************************************************; *** histograms using PROC SGPLOT *********************************************; proc sgplot /* sashelp.iris is a sample data set */ /* binwidth - bin width in terms of histogram variable */ /* datalabel - display counts or percents for each bin */ /* showbins - use bins to determine x-axis tickmarks */ data=sashelp.iris; histogram petalwidth / binwidth=2 datalabel=count showbins; run; *** bubble plots using PROC SGPLOT *******************************************; proc sgplot /* group - color by a categorical variable */ /* lineattrs - sets the bubble outline color and other outline attributes */ data=sashelp.iris; bubble x=petalwidth y=petallength size=sepallength / group=species lineattrs=(color=grey); run; *** scatter plot with regression information using PROC SGPLOT ***************; proc sgplot /* clm - confidence limits for mean predicted values */ /* cli - prediction limits for individual predicted values */ /* alpha - set threshold for clm and cli limits */ data=sashelp.iris; reg x=petalwidth y=petallength / clm cli alpha=0.1; run; *** stacked bar chart using PROC SGPLOT **************************************; proc sgplot /* sashelp.cars is a sample data set */ /* vbar variable on x-axis */ /* group - splits vertical bars */ /* add title */ data=sashelp.cars; vbar type / group=origin; title 'Car Types by Country of Origin'; run; ``` #### SAS PROC SQL - [clone/download notebook](src/notebooks/sas) ```sas ******************************************************************************; * Copyright (C) 2017 - 2023 by J. Patrick Hall, jphall@gwu.edu *; * *; * Permission is hereby granted, free of charge, to any person obtaining a *; * copy of this software and associated documentation files (the "Software"), *; * to deal in the Software without restriction, including without limitation *; * the rights to use, copy, modify, merge, publish, distribute, sublicense, *; * and/or sell copies of the Software, and to permit persons to whom the *; * Software is furnished to do so, subject to the following conditions: *; * *; * The above copyright notice and this permission notice shall be included *; * in all copies or substantial portions of the Software. *; * *; * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *; * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,*; * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *; * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *; * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *; * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *; * DEALINGS IN THE SOFTWARE. *; ******************************************************************************; ******************************************************************************; * simple SQL operations demonstrated using SAS PROC SQL *; * a *VERY BASIC* introduction to SQL *; ******************************************************************************; ******************************************************************************; * NOTE: examples are meant for the free SAS University Edition *; * to install see: http://www.sas.com/en_us/software/university-edition.html *; * Refer to part 0 *; ******************************************************************************; *** simulate some small example tables using SAS data step *******************; * table1 has a primary key called key and two numeric variables: x1 and x2; * table1 is located in the SAS work library, it could be called work.table1; data table1; do key=1 to 20; x1 = key * 10; x2 = key + 10; output; end; run; proc print; run; * table2 has a primary key called key and two character variables: x3 and x4; * table2 is located in the SAS work library, it could be called work.table2; data table2; do key=2 to 20 by 2; x3 = scan('a b c d e f g h i j', key/2); x4 = scan('k l m n o p q r s t', key/2); output; end; run; proc print; run; ******************************************************************************; * SAS PROC SQL allows users to execute valid SQL statements; * often called queries, from SAS; * in a more typical SQL environment the proc sql and quit statements; * would be unnecessary and unrecognized in a query; proc sql; * display basic information about table1 in the SAS log; * in SQL parlance work is the database and table1 is the table; describe table work.table1; quit; proc sql; * display the variable x1 from table1; select x1 from work.table1; quit; * the NOPRINT option can be used to supress output; * very important for large tables; proc sql /* noprint */; * create table3 in the work library/database; * x1 from table1 will be named x5 in the new table; * the SQL statement as creates a temporary name or alias; create table table3 as select key, x1 as x5 from table1; quit; proc sql; * a where clause is used to subset rows of a table; * the order by statement sorts displayed results or created tables; * desc refers to descending sort order; create table table4 as select key, x2 as x6 from table1 where key <= 10 order by x6 desc; quit; proc sql; * insert can be used to add data to a table; insert into table1 values (21, 210, 31); quit; proc sql; * update can be used to change the value of previously existing data; update table1 set key = 6, x1 = 60, x2 = 16 where key = 7; quit; proc sql; * an inner join only retains rows from both tables; * where key values match; create table table5 as select * from table1 join table2 on table1.key = table2.key; quit; proc sql; * left joins retain all the rows from one table; * and only retain rows where key values match from the other table; * aliases can also be used for tables; create table table6 as select * from table1 as t1 /* left table */ left join table2 as t2 /* right table */ on t1.key = t2.key; quit; proc sql; * the where statement cannot be used with aggregate functions; * instead use the having statement; * where sum_x1 > 100 would cause errors in this query; create table table7 as select key, sum(x1) as sum_x1 from table1 group by key having sum_x1 > 100; quit; proc sql; * a subquery is a query embedded in another query; select * from (select key, x1, x2 from table1 where key <= 10); quit; ``` ================================================ FILE: 01_basic_data_prep/assignment/.gitignore ================================================ raw assignment_1.docx key ================================================ FILE: 01_basic_data_prep/notes/.gitignore ================================================ *.pptx ================================================ FILE: 01_basic_data_prep/quiz/.gitignore ================================================ key ================================================ FILE: 01_basic_data_prep/src/notebooks/py/.gitignore ================================================ .ipynb_checkpoints scratch.csv ================================================ FILE: 01_basic_data_prep/src/notebooks/py/Py_Part_0_pandas_numpy.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Python: Part 0 - Pandas and Numpy\n", "\n", "## 1. Standard output\n", "`print` is the primary function used to write to the console in Python\n", "* `print` is a *function* in Python 3\n", "* `print` is a *statement* in Python 2 " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello World!\n", "Hello World!\n" ] } ], "source": [ "print('Hello World!') # Python 3\n", "print 'Hello World!' # Python 2" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'Hello World!'" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# An object with no functions or operators is also printed to the console\n", "x = 'Hello World!'\n", "x" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 2. Importing libraries \n", "\n", "Python contains many libraries, often called *modules*, for different purposes\n", "\n", "Modules are:\n", "* Nearly always free and open source\n", "* Installed using many different methods - a package manager like `conda`, readily available through the Anaconda release of Python (https://www.continuum.io/downloads) - is often a good solution for installing and managing packages/modules \n", "* Of relatively high and uniform quality and but licensing can vary\n", "* Imported using the `import` statement" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# import packages\n", "import string # module with string utilities\n", "import pandas as pd # large module with many utilities for dataframes, here aliased as 'pd' \n", "import numpy as np # large module with many numeric and mathematical utilities, here aliased as 'np'\n", "import matplotlib.pyplot as plt # module for plotting\n", "\n", "# \"magic\" syntax to display matplotlib graphics in a notebook\n", "# magic statements start with '%' and are often used to control notebook behavior\n", "%matplotlib inline " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 3. Generating a sample data set\n", "#### Set the number of rows and columns for the sample data set" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "n_rows = 1000\n", "n_vars = 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create lists of strings that will become column names\n", "* Lists are a common data structure in Python\n", "* Lists are surrounded by square brackets [] and contain different data types as list elements\n", "* Lists can be created by a speficic type Pythonic syntax, called list comprehensions\n", "* Lists in Python are indexed from 0, unlike SAS or R\n", "* Lists in Python, and other data structures, can be sliced using numeric indices" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['numeric1', 'numeric2']" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# list comprehension\n", "# str() converts to string\n", "# range() creates a list of values from arg1 to arg2\n", "num_col_names = ['numeric' + str(i+1) for i in range(0, n_vars)] \n", "num_col_names" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "list" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(num_col_names) # type() can be used to determine the class of an object in Python" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Python supports anonymous functions" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['char1', 'char2']" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# anonymous functions\n", "# the lamba statement is used to define simple anonymous functions\n", "# map() is very similar to to lapply() in R - it applies a function to the elements of a list\n", "char_col_names = map(lambda j: 'char' + str(j+1), range(0, n_vars)) \n", "char_col_names" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a list of text elements from which to sample" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ABCDEFGHIJKLMNOPQRSTUVWXYZ\n" ] }, { "data": { "text/plain": [ "['AAAAAAAA',\n", " 'BBBBBBBB',\n", " 'CCCCCCCC',\n", " 'DDDDDDDD',\n", " 'EEEEEEEE',\n", " 'FFFFFFFF',\n", " 'GGGGGGGG']" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# string.ascii_uppercase is a string constant of uppercase letters\n", "print(string.ascii_uppercase)\n", "\n", "# another list comprehension\n", "# slice first seven letters of the string\n", "text_draw = [(letter * 8) for letter in string.ascii_uppercase[:7]] \n", "text_draw" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a random numerical columns directly using numpy\n", "The numerical columns will originally be a 2-D numpy array" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[-1.846671 , 1.84830227],\n", " [-0.70740383, -1.00412281],\n", " [-0.09483552, -0.25116307],\n", " [-0.12577991, -1.23737785],\n", " [ 0.38218289, -1.7115725 ]])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "randoms = np.random.randn(n_rows, n_vars)\n", "randoms[0:5]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "numpy.ndarray" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(randoms)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create numerical columns of Pandas dataframe from numpy array\n", "Notice that a key is generated automatically " ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "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", "
numeric1numeric2
0-1.8466711.848302
1-0.707404-1.004123
2-0.094836-0.251163
3-0.125780-1.237378
40.382183-1.711572
\n", "" ], "text/plain": [ " numeric1 numeric2\n", "0 -1.846671 1.848302\n", "1 -0.707404 -1.004123\n", "2 -0.094836 -0.251163\n", "3 -0.125780 -1.237378\n", "4 0.382183 -1.711572" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "num_cols = pd.DataFrame(randoms, columns=num_col_names)\n", "num_cols.head()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "pandas.core.frame.DataFrame" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(num_cols)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create random character columns as a Pandas dataframe\n", "* Use a numpy sampling function `choice()` to generate a 2-D numpy array of random text values\n", "* Create Pandas dataframe from numpy 2-D array" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "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", "
char1char2
0EEEEEEEEAAAAAAAA
1DDDDDDDDDDDDDDDD
2AAAAAAAADDDDDDDD
3DDDDDDDDFFFFFFFF
4CCCCCCCCFFFFFFFF
\n", "
" ], "text/plain": [ " char1 char2\n", "0 EEEEEEEE AAAAAAAA\n", "1 DDDDDDDD DDDDDDDD\n", "2 AAAAAAAA DDDDDDDD\n", "3 DDDDDDDD FFFFFFFF\n", "4 CCCCCCCC FFFFFFFF" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "char_cols = pd.DataFrame(np.random.choice(text_draw, (n_rows, n_vars)), \n", " columns=char_col_names)\n", "char_cols.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Use Pandas `concat()` function to join the numeric and character columns into a new dataframe" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "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", "
numeric1numeric2char1char2
0-1.8466711.848302EEEEEEEEAAAAAAAA
1-0.707404-1.004123DDDDDDDDDDDDDDDD
2-0.094836-0.251163AAAAAAAADDDDDDDD
3-0.125780-1.237378DDDDDDDDFFFFFFFF
40.382183-1.711572CCCCCCCCFFFFFFFF
\n", "
" ], "text/plain": [ " numeric1 numeric2 char1 char2\n", "0 -1.846671 1.848302 EEEEEEEE AAAAAAAA\n", "1 -0.707404 -1.004123 DDDDDDDD DDDDDDDD\n", "2 -0.094836 -0.251163 AAAAAAAA DDDDDDDD\n", "3 -0.125780 -1.237378 DDDDDDDD FFFFFFFF\n", "4 0.382183 -1.711572 CCCCCCCC FFFFFFFF" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df = pd.concat([num_cols, char_cols], axis=1)\n", "scratch_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 4. Plotting variables in a dataframe\n", "Pandas has several builtin plotting utilities\n", "#### Use Pandas `hist()` method to plot a histogram of numeric1" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Pandas alllows slicing by dataframes index using ix[]\n", "# ix[:, 0] means all rows of the 0th column - or numeric1\n", "scratch_df.ix[:, 0].plot.hist(title='Histogram of Numeric1')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### use Pandas `scatter()` method to plot numeric1 vs. numeric2" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Anaconda\\lib\\site-packages\\matplotlib\\collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n", " if self._edgecolors == str('face'):\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_df.plot.scatter(x='numeric1', y='numeric2',\n", " title='Numeric1 vs. Numeric2')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 5. Subsetting Pandas dataframes\n", "### By columns\n", "#### Subsetting by index" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0 -1.846671\n", "1 -0.707404\n", "2 -0.094836\n", "3 -0.125780\n", "4 0.382183\n", "Name: numeric1, dtype: float64" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# one column returns a Pandas series\n", "# a Pandas series is like a single column vector\n", "scratch_df.iloc[:, 0].head()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "pandas.core.series.Series" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(scratch_df.iloc[:, 0])" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "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", "
numeric1numeric2
0-1.8466711.848302
1-0.707404-1.004123
2-0.094836-0.251163
3-0.125780-1.237378
40.382183-1.711572
\n", "
" ], "text/plain": [ " numeric1 numeric2\n", "0 -1.846671 1.848302\n", "1 -0.707404 -1.004123\n", "2 -0.094836 -0.251163\n", "3 -0.125780 -1.237378\n", "4 0.382183 -1.711572" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# more than one columns makes a dataframe\n", "# iloc enables location by index\n", "scratch_df.iloc[:, 0:2].head()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "pandas.core.frame.DataFrame" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(scratch_df.iloc[:, 0:2])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Subsetting by variable name" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0 -1.846671\n", "1 -0.707404\n", "2 -0.094836\n", "3 -0.125780\n", "4 0.382183\n", "Name: numeric1, dtype: float64" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df['numeric1'].head()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0 -1.846671\n", "1 -0.707404\n", "2 -0.094836\n", "3 -0.125780\n", "4 0.382183\n", "Name: numeric1, dtype: float64" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df.numeric1.head()" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0 -1.846671\n", "1 -0.707404\n", "2 -0.094836\n", "3 -0.125780\n", "4 0.382183\n", "Name: numeric1, dtype: float64" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# loc[] allows for location by column or row label \n", "scratch_df.loc[:, 'numeric1'].head()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "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", "
numeric1numeric2
0-1.8466711.848302
1-0.707404-1.004123
2-0.094836-0.251163
3-0.125780-1.237378
40.382183-1.711572
\n", "
" ], "text/plain": [ " numeric1 numeric2\n", "0 -1.846671 1.848302\n", "1 -0.707404 -1.004123\n", "2 -0.094836 -0.251163\n", "3 -0.125780 -1.237378\n", "4 0.382183 -1.711572" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# loc can accept lists as an input\n", "scratch_df.loc[:, ['numeric1', 'numeric2']].head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### By rows\n", "#### Subsetting by index" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "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", "
numeric1numeric2char1char2
0-1.8466711.848302EEEEEEEEAAAAAAAA
1-0.707404-1.004123DDDDDDDDDDDDDDDD
2-0.094836-0.251163AAAAAAAADDDDDDDD
\n", "
" ], "text/plain": [ " numeric1 numeric2 char1 char2\n", "0 -1.846671 1.848302 EEEEEEEE AAAAAAAA\n", "1 -0.707404 -1.004123 DDDDDDDD DDDDDDDD\n", "2 -0.094836 -0.251163 AAAAAAAA DDDDDDDD" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df[0:3]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "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", "
numeric1numeric2char1char2
0-1.8466711.848302EEEEEEEEAAAAAAAA
1-0.707404-1.004123DDDDDDDDDDDDDDDD
2-0.094836-0.251163AAAAAAAADDDDDDDD
3-0.125780-1.237378DDDDDDDDFFFFFFFF
40.382183-1.711572CCCCCCCCFFFFFFFF
\n", "
" ], "text/plain": [ " numeric1 numeric2 char1 char2\n", "0 -1.846671 1.848302 EEEEEEEE AAAAAAAA\n", "1 -0.707404 -1.004123 DDDDDDDD DDDDDDDD\n", "2 -0.094836 -0.251163 AAAAAAAA DDDDDDDD\n", "3 -0.125780 -1.237378 DDDDDDDD FFFFFFFF\n", "4 0.382183 -1.711572 CCCCCCCC FFFFFFFF" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Selecting by index \n", "scratch_df.iloc[0:5, :] " ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "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", "
numeric1numeric2char1char2
0-1.8466711.848302EEEEEEEEAAAAAAAA
1-0.707404-1.004123DDDDDDDDDDDDDDDD
2-0.094836-0.251163AAAAAAAADDDDDDDD
3-0.125780-1.237378DDDDDDDDFFFFFFFF
40.382183-1.711572CCCCCCCCFFFFFFFF
5-0.661172-0.124998FFFFFFFFGGGGGGGG
\n", "
" ], "text/plain": [ " numeric1 numeric2 char1 char2\n", "0 -1.846671 1.848302 EEEEEEEE AAAAAAAA\n", "1 -0.707404 -1.004123 DDDDDDDD DDDDDDDD\n", "2 -0.094836 -0.251163 AAAAAAAA DDDDDDDD\n", "3 -0.125780 -1.237378 DDDDDDDD FFFFFFFF\n", "4 0.382183 -1.711572 CCCCCCCC FFFFFFFF\n", "5 -0.661172 -0.124998 FFFFFFFF GGGGGGGG" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# select by row label\n", "# here index/key values 0:5 are returned\n", "scratch_df.loc[0:5, :]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Boolean subsetting" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "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", "
numeric1numeric2char1char2
0-1.8466711.848302EEEEEEEEAAAAAAAA
7-0.1352250.982267CCCCCCCCEEEEEEEE
90.5341100.430327AAAAAAAAFFFFFFFF
11-0.9573390.435087EEEEEEEEBBBBBBBB
120.3906650.408823GGGGGGGGFFFFFFFF
\n", "
" ], "text/plain": [ " numeric1 numeric2 char1 char2\n", "0 -1.846671 1.848302 EEEEEEEE AAAAAAAA\n", "7 -0.135225 0.982267 CCCCCCCC EEEEEEEE\n", "9 0.534110 0.430327 AAAAAAAA FFFFFFFF\n", "11 -0.957339 0.435087 EEEEEEEE BBBBBBBB\n", "12 0.390665 0.408823 GGGGGGGG FFFFFFFF" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df[scratch_df.numeric2 > 0].head()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "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", "
numeric1numeric2char1char2
2-0.094836-0.251163AAAAAAAADDDDDDDD
80.565589-1.405314AAAAAAAAEEEEEEEE
90.5341100.430327AAAAAAAAFFFFFFFF
21-0.121501-0.906697AAAAAAAAGGGGGGGG
262.0968711.511935AAAAAAAACCCCCCCC
\n", "
" ], "text/plain": [ " numeric1 numeric2 char1 char2\n", "2 -0.094836 -0.251163 AAAAAAAA DDDDDDDD\n", "8 0.565589 -1.405314 AAAAAAAA EEEEEEEE\n", "9 0.534110 0.430327 AAAAAAAA FFFFFFFF\n", "21 -0.121501 -0.906697 AAAAAAAA GGGGGGGG\n", "26 2.096871 1.511935 AAAAAAAA CCCCCCCC" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df[scratch_df.char1 == 'AAAAAAAA'].head()" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "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", "
numeric1numeric2char1char2
2-0.094836-0.251163AAAAAAAADDDDDDDD
80.565589-1.405314AAAAAAAAEEEEEEEE
90.5341100.430327AAAAAAAAFFFFFFFF
13-0.679535-1.710162BBBBBBBBEEEEEEEE
21-0.121501-0.906697AAAAAAAAGGGGGGGG
\n", "
" ], "text/plain": [ " numeric1 numeric2 char1 char2\n", "2 -0.094836 -0.251163 AAAAAAAA DDDDDDDD\n", "8 0.565589 -1.405314 AAAAAAAA EEEEEEEE\n", "9 0.534110 0.430327 AAAAAAAA FFFFFFFF\n", "13 -0.679535 -1.710162 BBBBBBBB EEEEEEEE\n", "21 -0.121501 -0.906697 AAAAAAAA GGGGGGGG" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df[scratch_df.char1.isin(['AAAAAAAA', 'BBBBBBBB'])].head()" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "7 EEEEEEEE\n", "9 FFFFFFFF\n", "Name: char2, dtype: object" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df[scratch_df.numeric2 > 0].loc[5:10, 'char2']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 6. Updating the dataframe" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "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", "
numeric1numeric2char1char2
9952.5374331.944461ZZZZZZZZDDDDDDDD
9961.550140-0.074913ZZZZZZZZFFFFFFFF
9972.759164-0.211622ZZZZZZZZCCCCCCCC
9982.095885-0.700426ZZZZZZZZBBBBBBBB
9991.8661740.539002ZZZZZZZZAAAAAAAA
\n", "
" ], "text/plain": [ " numeric1 numeric2 char1 char2\n", "995 2.537433 1.944461 ZZZZZZZZ DDDDDDDD\n", "996 1.550140 -0.074913 ZZZZZZZZ FFFFFFFF\n", "997 2.759164 -0.211622 ZZZZZZZZ CCCCCCCC\n", "998 2.095885 -0.700426 ZZZZZZZZ BBBBBBBB\n", "999 1.866174 0.539002 ZZZZZZZZ AAAAAAAA" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# must use .copy() or this will be a symbolic link\n", "scratch_df2 = scratch_df.copy()\n", "\n", "# Pandas supports in place overwrites of data\n", "# overwrite last 500 rows of char1 with ZZZZZZZZ\n", "scratch_df2.loc[500:, 'char1'] = 'ZZZZZZZZ'\n", "scratch_df2.tail()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "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", "
numeric1numeric2char1char2
01000.0000001.848302EEEEEEEEAAAAAAAA
1-0.707404-1.004123DDDDDDDDDDDDDDDD
2-0.094836-0.251163AAAAAAAADDDDDDDD
3-0.125780-1.237378DDDDDDDDFFFFFFFF
40.382183-1.711572CCCCCCCCFFFFFFFF
\n", "
" ], "text/plain": [ " numeric1 numeric2 char1 char2\n", "0 1000.000000 1.848302 EEEEEEEE AAAAAAAA\n", "1 -0.707404 -1.004123 DDDDDDDD DDDDDDDD\n", "2 -0.094836 -0.251163 AAAAAAAA DDDDDDDD\n", "3 -0.125780 -1.237378 DDDDDDDD FFFFFFFF\n", "4 0.382183 -1.711572 CCCCCCCC FFFFFFFF" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# iat[] allows for fast location of specific indices\n", "scratch_df2.iat[0, 0] = 1000\n", "scratch_df2.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 7. Sorting the dataframe\n", "#### Sort by values of one variable" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "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", "
numeric1numeric2char1char2
4990.199489-1.008574AAAAAAAADDDDDDDD
2250.531949-1.267235AAAAAAAADDDDDDDD
347-0.643377-0.165108AAAAAAAAAAAAAAAA
1030.6660050.631195AAAAAAAABBBBBBBB
102-0.9243821.784032AAAAAAAACCCCCCCC
\n", "
" ], "text/plain": [ " numeric1 numeric2 char1 char2\n", "499 0.199489 -1.008574 AAAAAAAA DDDDDDDD\n", "225 0.531949 -1.267235 AAAAAAAA DDDDDDDD\n", "347 -0.643377 -0.165108 AAAAAAAA AAAAAAAA\n", "103 0.666005 0.631195 AAAAAAAA BBBBBBBB\n", "102 -0.924382 1.784032 AAAAAAAA CCCCCCCC" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df2.sort_values(by='char1').head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Sort by values of multiple variables and specify sort order" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "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", "
numeric1numeric2char1char2
533-3.4901431.699398ZZZZZZZZEEEEEEEE
605-2.669272-0.577942ZZZZZZZZGGGGGGGG
759-2.455348-0.499223ZZZZZZZZGGGGGGGG
630-2.4263460.238347ZZZZZZZZEEEEEEEE
884-2.4095020.063437ZZZZZZZZBBBBBBBB
\n", "
" ], "text/plain": [ " numeric1 numeric2 char1 char2\n", "533 -3.490143 1.699398 ZZZZZZZZ EEEEEEEE\n", "605 -2.669272 -0.577942 ZZZZZZZZ GGGGGGGG\n", "759 -2.455348 -0.499223 ZZZZZZZZ GGGGGGGG\n", "630 -2.426346 0.238347 ZZZZZZZZ EEEEEEEE\n", "884 -2.409502 0.063437 ZZZZZZZZ BBBBBBBB" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df3 = scratch_df2.sort_values(by=['char1', 'numeric1'],\n", " ascending=[False, True]).copy()\n", "scratch_df3.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Sort by the value of the dataframe index" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "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", "
numeric1numeric2char1char2
01000.0000001.848302EEEEEEEEAAAAAAAA
1-0.707404-1.004123DDDDDDDDDDDDDDDD
2-0.094836-0.251163AAAAAAAADDDDDDDD
3-0.125780-1.237378DDDDDDDDFFFFFFFF
40.382183-1.711572CCCCCCCCFFFFFFFF
\n", "
" ], "text/plain": [ " numeric1 numeric2 char1 char2\n", "0 1000.000000 1.848302 EEEEEEEE AAAAAAAA\n", "1 -0.707404 -1.004123 DDDDDDDD DDDDDDDD\n", "2 -0.094836 -0.251163 AAAAAAAA DDDDDDDD\n", "3 -0.125780 -1.237378 DDDDDDDD FFFFFFFF\n", "4 0.382183 -1.711572 CCCCCCCC FFFFFFFF" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df2.sort_index().head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 8. Adding data to the dataframe\n", "* Pandas `concat()` supports numerous types of joins and merges\n", "* Pandas `merge()` supports joins and merges using more SQL-like syntax \n", " * i.e. `merge(left, right, on=)`\n", "* Pandas `append()` supports stacking dataframes top-to-bottom" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "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", "
char3char4
286AAAAAAAAAAAAAAAA
172AAAAAAAAAAAAAAAA
26AAAAAAAACCCCCCCC
228AAAAAAAAGGGGGGGG
117AAAAAAAAGGGGGGGG
\n", "
" ], "text/plain": [ " char3 char4\n", "286 AAAAAAAA AAAAAAAA\n", "172 AAAAAAAA AAAAAAAA\n", "26 AAAAAAAA CCCCCCCC\n", "228 AAAAAAAA GGGGGGGG\n", "117 AAAAAAAA GGGGGGGG" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create a toy dataframe to join/merge onto scratch_df\n", "scratch_df3 = scratch_df3.drop(['numeric1', 'numeric2'] , axis=1)\n", "scratch_df3.columns = ['char3', 'char4']\n", "scratch_df3.tail()" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
char1char2char3char4numeric1numeric2
0EEEEEEEEAAAAAAAANaNNaN-1.8466711.848302
1DDDDDDDDDDDDDDDDNaNNaN-0.707404-1.004123
2AAAAAAAADDDDDDDDNaNNaN-0.094836-0.251163
3DDDDDDDDFFFFFFFFNaNNaN-0.125780-1.237378
4CCCCCCCCFFFFFFFFNaNNaN0.382183-1.711572
5FFFFFFFFGGGGGGGGNaNNaN-0.661172-0.124998
6GGGGGGGGGGGGGGGGNaNNaN0.828998-0.967002
7CCCCCCCCEEEEEEEENaNNaN-0.1352250.982267
8AAAAAAAAEEEEEEEENaNNaN0.565589-1.405314
9AAAAAAAAFFFFFFFFNaNNaN0.5341100.430327
10DDDDDDDDCCCCCCCCNaNNaN0.627748-0.870272
11EEEEEEEEBBBBBBBBNaNNaN-0.9573390.435087
12GGGGGGGGFFFFFFFFNaNNaN0.3906650.408823
13BBBBBBBBEEEEEEEENaNNaN-0.679535-1.710162
14DDDDDDDDBBBBBBBBNaNNaN2.4134312.178699
15EEEEEEEEFFFFFFFFNaNNaN0.860728-1.677506
16EEEEEEEEGGGGGGGGNaNNaN-2.2621083.574336
17CCCCCCCCGGGGGGGGNaNNaN1.5591530.458943
18EEEEEEEEGGGGGGGGNaNNaN-0.027194-0.293085
19EEEEEEEEGGGGGGGGNaNNaN1.1423780.649251
20FFFFFFFFCCCCCCCCNaNNaN0.152942-0.996234
21AAAAAAAAGGGGGGGGNaNNaN-0.121501-0.906697
22BBBBBBBBCCCCCCCCNaNNaN1.6347910.741408
23DDDDDDDDFFFFFFFFNaNNaN-0.944472-0.210692
24BBBBBBBBAAAAAAAANaNNaN-2.4097630.079427
25DDDDDDDDEEEEEEEENaNNaN2.1866542.085687
26AAAAAAAACCCCCCCCNaNNaN2.0968711.511935
27CCCCCCCCAAAAAAAANaNNaN-0.809646-1.582986
28AAAAAAAAGGGGGGGGNaNNaN-0.581517-1.024026
29DDDDDDDDDDDDDDDDNaNNaN0.915936-0.378046
.....................
63NaNNaNAAAAAAAADDDDDDDDNaNNaN
218NaNNaNAAAAAAAABBBBBBBBNaNNaN
396NaNNaNAAAAAAAABBBBBBBBNaNNaN
225NaNNaNAAAAAAAADDDDDDDDNaNNaN
149NaNNaNAAAAAAAACCCCCCCCNaNNaN
9NaNNaNAAAAAAAAFFFFFFFFNaNNaN
118NaNNaNAAAAAAAAGGGGGGGGNaNNaN
8NaNNaNAAAAAAAAEEEEEEEENaNNaN
255NaNNaNAAAAAAAACCCCCCCCNaNNaN
479NaNNaNAAAAAAAADDDDDDDDNaNNaN
103NaNNaNAAAAAAAABBBBBBBBNaNNaN
289NaNNaNAAAAAAAADDDDDDDDNaNNaN
243NaNNaNAAAAAAAABBBBBBBBNaNNaN
32NaNNaNAAAAAAAAGGGGGGGGNaNNaN
57NaNNaNAAAAAAAACCCCCCCCNaNNaN
257NaNNaNAAAAAAAADDDDDDDDNaNNaN
130NaNNaNAAAAAAAACCCCCCCCNaNNaN
376NaNNaNAAAAAAAAGGGGGGGGNaNNaN
247NaNNaNAAAAAAAADDDDDDDDNaNNaN
195NaNNaNAAAAAAAAAAAAAAAANaNNaN
366NaNNaNAAAAAAAAAAAAAAAANaNNaN
452NaNNaNAAAAAAAAAAAAAAAANaNNaN
408NaNNaNAAAAAAAABBBBBBBBNaNNaN
260NaNNaNAAAAAAAAGGGGGGGGNaNNaN
91NaNNaNAAAAAAAAFFFFFFFFNaNNaN
286NaNNaNAAAAAAAAAAAAAAAANaNNaN
172NaNNaNAAAAAAAAAAAAAAAANaNNaN
26NaNNaNAAAAAAAACCCCCCCCNaNNaN
228NaNNaNAAAAAAAAGGGGGGGGNaNNaN
117NaNNaNAAAAAAAAGGGGGGGGNaNNaN
\n", "

2000 rows × 6 columns

\n", "
" ], "text/plain": [ " char1 char2 char3 char4 numeric1 numeric2\n", "0 EEEEEEEE AAAAAAAA NaN NaN -1.846671 1.848302\n", "1 DDDDDDDD DDDDDDDD NaN NaN -0.707404 -1.004123\n", "2 AAAAAAAA DDDDDDDD NaN NaN -0.094836 -0.251163\n", "3 DDDDDDDD FFFFFFFF NaN NaN -0.125780 -1.237378\n", "4 CCCCCCCC FFFFFFFF NaN NaN 0.382183 -1.711572\n", "5 FFFFFFFF GGGGGGGG NaN NaN -0.661172 -0.124998\n", "6 GGGGGGGG GGGGGGGG NaN NaN 0.828998 -0.967002\n", "7 CCCCCCCC EEEEEEEE NaN NaN -0.135225 0.982267\n", "8 AAAAAAAA EEEEEEEE NaN NaN 0.565589 -1.405314\n", "9 AAAAAAAA FFFFFFFF NaN NaN 0.534110 0.430327\n", "10 DDDDDDDD CCCCCCCC NaN NaN 0.627748 -0.870272\n", "11 EEEEEEEE BBBBBBBB NaN NaN -0.957339 0.435087\n", "12 GGGGGGGG FFFFFFFF NaN NaN 0.390665 0.408823\n", "13 BBBBBBBB EEEEEEEE NaN NaN -0.679535 -1.710162\n", "14 DDDDDDDD BBBBBBBB NaN NaN 2.413431 2.178699\n", "15 EEEEEEEE FFFFFFFF NaN NaN 0.860728 -1.677506\n", "16 EEEEEEEE GGGGGGGG NaN NaN -2.262108 3.574336\n", "17 CCCCCCCC GGGGGGGG NaN NaN 1.559153 0.458943\n", "18 EEEEEEEE GGGGGGGG NaN NaN -0.027194 -0.293085\n", "19 EEEEEEEE GGGGGGGG NaN NaN 1.142378 0.649251\n", "20 FFFFFFFF CCCCCCCC NaN NaN 0.152942 -0.996234\n", "21 AAAAAAAA GGGGGGGG NaN NaN -0.121501 -0.906697\n", "22 BBBBBBBB CCCCCCCC NaN NaN 1.634791 0.741408\n", "23 DDDDDDDD FFFFFFFF NaN NaN -0.944472 -0.210692\n", "24 BBBBBBBB AAAAAAAA NaN NaN -2.409763 0.079427\n", "25 DDDDDDDD EEEEEEEE NaN NaN 2.186654 2.085687\n", "26 AAAAAAAA CCCCCCCC NaN NaN 2.096871 1.511935\n", "27 CCCCCCCC AAAAAAAA NaN NaN -0.809646 -1.582986\n", "28 AAAAAAAA GGGGGGGG NaN NaN -0.581517 -1.024026\n", "29 DDDDDDDD DDDDDDDD NaN NaN 0.915936 -0.378046\n", ".. ... ... ... ... ... ...\n", "63 NaN NaN AAAAAAAA DDDDDDDD NaN NaN\n", "218 NaN NaN AAAAAAAA BBBBBBBB NaN NaN\n", "396 NaN NaN AAAAAAAA BBBBBBBB NaN NaN\n", "225 NaN NaN AAAAAAAA DDDDDDDD NaN NaN\n", "149 NaN NaN AAAAAAAA CCCCCCCC NaN NaN\n", "9 NaN NaN AAAAAAAA FFFFFFFF NaN NaN\n", "118 NaN NaN AAAAAAAA GGGGGGGG NaN NaN\n", "8 NaN NaN AAAAAAAA EEEEEEEE NaN NaN\n", "255 NaN NaN AAAAAAAA CCCCCCCC NaN NaN\n", "479 NaN NaN AAAAAAAA DDDDDDDD NaN NaN\n", "103 NaN NaN AAAAAAAA BBBBBBBB NaN NaN\n", "289 NaN NaN AAAAAAAA DDDDDDDD NaN NaN\n", "243 NaN NaN AAAAAAAA BBBBBBBB NaN NaN\n", "32 NaN NaN AAAAAAAA GGGGGGGG NaN NaN\n", "57 NaN NaN AAAAAAAA CCCCCCCC NaN NaN\n", "257 NaN NaN AAAAAAAA DDDDDDDD NaN NaN\n", "130 NaN NaN AAAAAAAA CCCCCCCC NaN NaN\n", "376 NaN NaN AAAAAAAA GGGGGGGG NaN NaN\n", "247 NaN NaN AAAAAAAA DDDDDDDD NaN NaN\n", "195 NaN NaN AAAAAAAA AAAAAAAA NaN NaN\n", "366 NaN NaN AAAAAAAA AAAAAAAA NaN NaN\n", "452 NaN NaN AAAAAAAA AAAAAAAA NaN NaN\n", "408 NaN NaN AAAAAAAA BBBBBBBB NaN NaN\n", "260 NaN NaN AAAAAAAA GGGGGGGG NaN NaN\n", "91 NaN NaN AAAAAAAA FFFFFFFF NaN NaN\n", "286 NaN NaN AAAAAAAA AAAAAAAA NaN NaN\n", "172 NaN NaN AAAAAAAA AAAAAAAA NaN NaN\n", "26 NaN NaN AAAAAAAA CCCCCCCC NaN NaN\n", "228 NaN NaN AAAAAAAA GGGGGGGG NaN NaN\n", "117 NaN NaN AAAAAAAA GGGGGGGG NaN NaN\n", "\n", "[2000 rows x 6 columns]" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# default outer join on matching indices\n", "# this will create 2000 row × 6 column dataset because indices are not in identical order\n", "scratch_df4 = pd.concat([scratch_df, scratch_df3])\n", "scratch_df4" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "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", "
numeric1numeric2char1char2char3char4
0-1.8466711.848302EEEEEEEEAAAAAAAAEEEEEEEEAAAAAAAA
1-0.707404-1.004123DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
2-0.094836-0.251163AAAAAAAADDDDDDDDAAAAAAAADDDDDDDD
3-0.125780-1.237378DDDDDDDDFFFFFFFFDDDDDDDDFFFFFFFF
40.382183-1.711572CCCCCCCCFFFFFFFFCCCCCCCCFFFFFFFF
\n", "
" ], "text/plain": [ " numeric1 numeric2 char1 char2 char3 char4\n", "0 -1.846671 1.848302 EEEEEEEE AAAAAAAA EEEEEEEE AAAAAAAA\n", "1 -0.707404 -1.004123 DDDDDDDD DDDDDDDD DDDDDDDD DDDDDDDD\n", "2 -0.094836 -0.251163 AAAAAAAA DDDDDDDD AAAAAAAA DDDDDDDD\n", "3 -0.125780 -1.237378 DDDDDDDD FFFFFFFF DDDDDDDD FFFFFFFF\n", "4 0.382183 -1.711572 CCCCCCCC FFFFFFFF CCCCCCCC FFFFFFFF" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# outer join on matching columns\n", "# axis=1 specificies to join on matching columns\n", "scratch_df5 = pd.concat([scratch_df, scratch_df3], axis=1)\n", "scratch_df5.head()" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(1000, 6)" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df5.shape" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(2000, 4)" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# append\n", "scratch_df6 = scratch_df.append(scratch_df)\n", "scratch_df6.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 9. Comparing dataframes\n", "* Use Pandas `equals()` to compare dataframes\n", "* Row order is not ignored" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df.equals(scratch_df)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df.equals(scratch_df.sort_values(by='char1'))" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df.equals(scratch_df2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 10. Summarizing dataframes\n", "Pandas offers several straightforward summarization functions" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "numeric1 0.067432\n", "numeric2 -0.002979\n", "dtype: float64" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df.mean()" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
numeric1numeric2char1char2
0NaNNaNDDDDDDDDBBBBBBBB
\n", "
" ], "text/plain": [ " numeric1 numeric2 char1 char2\n", "0 NaN NaN DDDDDDDD BBBBBBBB" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df.mode()" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": false }, "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", "
numeric1numeric2
count1000.0000001000.000000
mean0.067432-0.002979
std1.0143621.008141
min-3.490143-3.344991
25%-0.610958-0.692698
50%0.0505450.002861
75%0.7188160.676773
max3.2599143.623428
\n", "
" ], "text/plain": [ " numeric1 numeric2\n", "count 1000.000000 1000.000000\n", "mean 0.067432 -0.002979\n", "std 1.014362 1.008141\n", "min -3.490143 -3.344991\n", "25% -0.610958 -0.692698\n", "50% 0.050545 0.002861\n", "75% 0.718816 0.676773\n", "max 3.259914 3.623428" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 11. By group processing\n", "Use Pandas `groupby()` to create groups for subsequent processing" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# use summary function size() on groups created by groupby()\n", "counts = scratch_df.groupby('char1').size()\n", "plt.figure()\n", "counts.plot.bar(title='Frequency of char1 values (Histogram of char1)')" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": false }, "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", "
numeric1numeric2
char1char2
AAAAAAAAAAAAAAAA0.2872260.139453
BBBBBBBB-0.1161690.065721
CCCCCCCC-0.0274250.133440
DDDDDDDD0.197693-0.190331
EEEEEEEE0.0635900.329729
FFFFFFFF-0.175555-0.329659
GGGGGGGG0.1898240.147558
BBBBBBBBAAAAAAAA-0.0868140.221350
BBBBBBBB0.188284-0.389512
CCCCCCCC0.069539-0.126538
DDDDDDDD0.314592-0.064758
EEEEEEEE0.269574-0.129884
FFFFFFFF-0.205605-0.028343
GGGGGGGG0.365227-0.053123
CCCCCCCCAAAAAAAA0.028210-0.295764
BBBBBBBB0.074422-0.017167
CCCCCCCC0.2433600.073591
DDDDDDDD0.250268-0.491992
EEEEEEEE-0.085427-0.369362
FFFFFFFF0.1755090.043392
GGGGGGGG-0.017040-0.272344
DDDDDDDDAAAAAAAA0.202584-0.024968
BBBBBBBB0.0894110.240417
CCCCCCCC0.4106710.360820
DDDDDDDD0.350856-0.309482
EEEEEEEE0.1093950.058292
FFFFFFFF0.078943-0.383857
GGGGGGGG-0.0139820.018074
EEEEEEEEAAAAAAAA-0.369364-0.409199
BBBBBBBB-0.0992740.193680
CCCCCCCC0.0351460.146343
DDDDDDDD-0.2684580.223898
EEEEEEEE0.0790990.065767
FFFFFFFF0.253714-0.161576
GGGGGGGG-0.2700560.107336
FFFFFFFFAAAAAAAA0.0298300.038701
BBBBBBBB0.217070-0.012318
CCCCCCCC0.205450-0.087807
DDDDDDDD0.264409-0.141813
EEEEEEEE0.0421050.272400
FFFFFFFF0.1469050.100713
GGGGGGGG-0.3161320.396029
GGGGGGGGAAAAAAAA0.1604100.226501
BBBBBBBB0.0585950.171269
CCCCCCCC0.0277900.132749
DDDDDDDD0.0060630.317409
EEEEEEEE-0.286541-0.345819
FFFFFFFF-0.053367-0.024303
GGGGGGGG0.2238950.133305
\n", "
" ], "text/plain": [ " numeric1 numeric2\n", "char1 char2 \n", "AAAAAAAA AAAAAAAA 0.287226 0.139453\n", " BBBBBBBB -0.116169 0.065721\n", " CCCCCCCC -0.027425 0.133440\n", " DDDDDDDD 0.197693 -0.190331\n", " EEEEEEEE 0.063590 0.329729\n", " FFFFFFFF -0.175555 -0.329659\n", " GGGGGGGG 0.189824 0.147558\n", "BBBBBBBB AAAAAAAA -0.086814 0.221350\n", " BBBBBBBB 0.188284 -0.389512\n", " CCCCCCCC 0.069539 -0.126538\n", " DDDDDDDD 0.314592 -0.064758\n", " EEEEEEEE 0.269574 -0.129884\n", " FFFFFFFF -0.205605 -0.028343\n", " GGGGGGGG 0.365227 -0.053123\n", "CCCCCCCC AAAAAAAA 0.028210 -0.295764\n", " BBBBBBBB 0.074422 -0.017167\n", " CCCCCCCC 0.243360 0.073591\n", " DDDDDDDD 0.250268 -0.491992\n", " EEEEEEEE -0.085427 -0.369362\n", " FFFFFFFF 0.175509 0.043392\n", " GGGGGGGG -0.017040 -0.272344\n", "DDDDDDDD AAAAAAAA 0.202584 -0.024968\n", " BBBBBBBB 0.089411 0.240417\n", " CCCCCCCC 0.410671 0.360820\n", " DDDDDDDD 0.350856 -0.309482\n", " EEEEEEEE 0.109395 0.058292\n", " FFFFFFFF 0.078943 -0.383857\n", " GGGGGGGG -0.013982 0.018074\n", "EEEEEEEE AAAAAAAA -0.369364 -0.409199\n", " BBBBBBBB -0.099274 0.193680\n", " CCCCCCCC 0.035146 0.146343\n", " DDDDDDDD -0.268458 0.223898\n", " EEEEEEEE 0.079099 0.065767\n", " FFFFFFFF 0.253714 -0.161576\n", " GGGGGGGG -0.270056 0.107336\n", "FFFFFFFF AAAAAAAA 0.029830 0.038701\n", " BBBBBBBB 0.217070 -0.012318\n", " CCCCCCCC 0.205450 -0.087807\n", " DDDDDDDD 0.264409 -0.141813\n", " EEEEEEEE 0.042105 0.272400\n", " FFFFFFFF 0.146905 0.100713\n", " GGGGGGGG -0.316132 0.396029\n", "GGGGGGGG AAAAAAAA 0.160410 0.226501\n", " BBBBBBBB 0.058595 0.171269\n", " CCCCCCCC 0.027790 0.132749\n", " DDDDDDDD 0.006063 0.317409\n", " EEEEEEEE -0.286541 -0.345819\n", " FFFFFFFF -0.053367 -0.024303\n", " GGGGGGGG 0.223895 0.133305" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# groupby the values of more than one variable\n", "group_means = scratch_df.groupby(['char1', 'char2']).mean()\n", "group_means" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 12. Transposing a table\n", "* Transposing a matrix simply switches row and columns values\n", "* Transposing a data.frame or dplyr table is more complex because of metadata associated with variable names and row indices" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "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", "
01234
numeric1-1.84667-0.707404-0.0948355-0.125780.382183
numeric21.8483-1.00412-0.251163-1.23738-1.71157
char1EEEEEEEEDDDDDDDDAAAAAAAADDDDDDDDCCCCCCCC
char2AAAAAAAADDDDDDDDDDDDDDDDFFFFFFFFFFFFFFFF
\n", "
" ], "text/plain": [ " 0 1 2 3 4\n", "numeric1 -1.84667 -0.707404 -0.0948355 -0.12578 0.382183\n", "numeric2 1.8483 -1.00412 -0.251163 -1.23738 -1.71157\n", "char1 EEEEEEEE DDDDDDDD AAAAAAAA DDDDDDDD CCCCCCCC\n", "char2 AAAAAAAA DDDDDDDD DDDDDDDD FFFFFFFF FFFFFFFF" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Pandas .T performs a transpose\n", "scratch_df.T.iloc[:, 0:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Often, instead of simply transposing, a data set will need to be reformatted in a **melt/stack** - **column split** - **cast** action described in Hadley Wickham's *Tidy Data*:\n", "https://www.jstatsoft.org/article/view/v059i10\n", "\n", "See the `stack` and `unstack` methods for Pandas dataframes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exporting and importing a dataframe\n", "* Many `to_*` methods available for exporting dataframes to other formats\n", "* Many `read_*` methods available for creating dataframes from other formats" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# export to csv\n", "scratch_df.to_csv('scratch.csv')" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# import from csv \n", "scratch_df7 = pd.read_csv('scratch.csv')" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: 01_basic_data_prep/src/notebooks/r/.gitignore ================================================ .ipynb_checkpoints scratch.csv ================================================ FILE: 01_basic_data_prep/src/notebooks/r/R_Part_0_Basics_dplyr_and_ggplot2.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# R: Part 0 - Basics, dplyr, and ggplot2\n", "\n", "## 1. Standard output\n", "\n", "Two primary R core functions are used to print information to the console:\n", "* `print()`: a generic function that responds differently to different classes of R objects\n", "* `cat()`: simply attempts to print string literals" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] \"Hello World!\"\n", "Hello World!" ] }, { "data": { "text/html": [ "'Hello World!'" ], "text/latex": [ "'Hello World!'" ], "text/markdown": [ "'Hello World!'" ], "text/plain": [ "[1] \"Hello World!\"" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[1] \"Hello World!\"\n", "attr(,\"class\")\n", "[1] \"some.class\"\n", "Hello World!" ] } ], "source": [ "x <- 'Hello World!'\n", "print(x)\n", "cat(x)\n", "x\n", "\n", "class(x) <- 'some.class' # '.' is just a character, it does not denote object membership\n", "print(x)\n", "cat(x) " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[1] \"Hello World!\"\n", "attr(,\"class\")\n", "[1] \"some.class\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# An object with no functions or operators is also printed to the console\n", "x " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 2. Importing libraries" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "R contains thousands of libraries, often called *packages*, for many different purposes\n", "\n", "Packages are:\n", "* Nearly always free and open source\n", "* Installed using the `install.packages()` function or a GUI command\n", "* Of varying quality and licensing\n", "* Loaded using the `library()` function, after being installed" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "library(dplyr) # popular package for data wrangling with consistent syntax\n", "library(ggplot2) # popular package for plotting with consistent syntax" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 3. Setting the working directory\n", "\n", "#### Enter the directory location of this file within single quotes" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# '<-' is the preferred assignment operator in R\n", "# '/' is the safest directory separator character to use\n", "\n", "git_dir <- 'C:/path/to/GWU_data_mining/01_basic_data_prep/src/notebooks/r'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Set the working directory\n", "\n", "* The working directory is where files are written to and read from by default\n", "* `setwd()` sets the working directory\n", "* `getwd()` prints the current working directory" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "'C:/workspace/GWU_data_mining/01_basic_data_prep/src/notebooks/r'" ], "text/latex": [ "'C:/workspace/GWU\\_data\\_mining/01\\_basic\\_data\\_prep/src/notebooks/r'" ], "text/markdown": [ "'C:/workspace/GWU_data_mining/01_basic_data_prep/src/notebooks/r'" ], "text/plain": [ "[1] \"C:/workspace/GWU_data_mining/01_basic_data_prep/src/notebooks/r\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "setwd(git_dir)\n", "getwd()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 4. Generating a sample data set\n", "\n", "#### Set the number of rows and columns for the sample data set" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "n_rows <- 1000\n", "n_vars <- 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a key variable\n", "* A key variable has a unique value for each row of a data set\n", "* `seq()` generates values from a number (default = 1), to another number, by a certain value (default = 1)\n", "* Many types of data structures in R have key variables (a.k.a. row names) by default" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [], "source": [ "key <- seq(n_rows)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Show the first five elements of `key`\n", "\n", "Most data structures in R can be 'sliced', i.e. using numeric indices to select a subset of items " ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 1
  2. \n", "\t
  3. 2
  4. \n", "\t
  5. 3
  6. \n", "\t
  7. 4
  8. \n", "\t
  9. 5
  10. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 1\n", "\\item 2\n", "\\item 3\n", "\\item 4\n", "\\item 5\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 1\n", "2. 2\n", "3. 3\n", "4. 4\n", "5. 5\n", "\n", "\n" ], "text/plain": [ "[1] 1 2 3 4 5" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "key[1:5] " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create lists of strings that will become column names\n", "`paste()` concatentates strings with a separator character in between them" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 'numeric1'
  2. \n", "\t
  3. 'numeric2'
  4. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'numeric1'\n", "\\item 'numeric2'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'numeric1'\n", "2. 'numeric2'\n", "\n", "\n" ], "text/plain": [ "[1] \"numeric1\" \"numeric2\"" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
    \n", "\t
  1. 'char1'
  2. \n", "\t
  3. 'char2'
  4. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'char1'\n", "\\item 'char2'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'char1'\n", "2. 'char2'\n", "\n", "\n" ], "text/plain": [ "[1] \"char1\" \"char2\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "num_vars <- paste('numeric', seq_len(n_vars), sep = '')\n", "num_vars \n", "\n", "char_vars <- paste('char', seq_len(n_vars), sep = '')\n", "char_vars" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Initialize a data.frame with the key variable" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
INDEX
1
2
3
4
5
6
\n" ], "text/latex": [ "\\begin{tabular}{r|l}\n", " INDEX\\\\\n", "\\hline\n", "\t 1\\\\\n", "\t 2\\\\\n", "\t 3\\\\\n", "\t 4\\\\\n", "\t 5\\\\\n", "\t 6\\\\\n", "\\end{tabular}\n" ], "text/plain": [ " INDEX\n", "1 1 \n", "2 2 \n", "3 3 \n", "4 4 \n", "5 5 \n", "6 6 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_df <- data.frame(INDEX = key)\n", "\n", "# head() displays the top of a data structure\n", "head(scratch_df) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Add n_var numeric columns, each with n_row rows, to the data.frame\n", "* Each column contains random uniform numeric values generated by runif()\n", "* `replicate()` replicates `n_row` length lists of numeric values `n_vars` times" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
INDEXnumeric1numeric2
1 0.3474129 0.4332860769
2 0.6859666 0.9104925687
3 0.8332253 0.0006273664
4 0.1599061 0.9637706790
5 0.6742479 0.7491531989
6 0.8877142 0.7471935684
\n" ], "text/latex": [ "\\begin{tabular}{r|lll}\n", " INDEX & numeric1 & numeric2\\\\\n", "\\hline\n", "\t 1 & 0.3474129 & 0.4332860769\\\\\n", "\t 2 & 0.6859666 & 0.9104925687\\\\\n", "\t 3 & 0.8332253 & 0.0006273664\\\\\n", "\t 4 & 0.1599061 & 0.9637706790\\\\\n", "\t 5 & 0.6742479 & 0.7491531989\\\\\n", "\t 6 & 0.8877142 & 0.7471935684\\\\\n", "\\end{tabular}\n" ], "text/plain": [ " INDEX numeric1 numeric2 \n", "1 1 0.3474129 0.4332860769\n", "2 2 0.6859666 0.9104925687\n", "3 3 0.8332253 0.0006273664\n", "4 4 0.1599061 0.9637706790\n", "5 5 0.6742479 0.7491531989\n", "6 6 0.8877142 0.7471935684" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_df[, num_vars] <- replicate(n_vars, runif(n_rows))\n", "head(scratch_df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Add n_var character columns, each with n_row rows, to the data.frame\n", "* Create a list of strings from which to generate random text variables\n", "* `sapply()` applies a function to a sequence of values\n", "* `LETTERS` is a character vector containing uppercase letters\n", "* An anonymous function is defined that replicates a value 8 times with no seperator character\n", "* `replicate()` replicates n_var lists of n_row elements from text_draw sampled randomly from `test_draw` using the `sample()` function" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\t
A
\n", "\t\t
'AAAAAAAA'
\n", "\t
B
\n", "\t\t
'BBBBBBBB'
\n", "\t
C
\n", "\t\t
'CCCCCCCC'
\n", "\t
D
\n", "\t\t
'DDDDDDDD'
\n", "\t
E
\n", "\t\t
'EEEEEEEE'
\n", "\t
F
\n", "\t\t
'FFFFFFFF'
\n", "\t
G
\n", "\t\t
'GGGGGGGG'
\n", "
\n" ], "text/latex": [ "\\begin{description*}\n", "\\item[A] 'AAAAAAAA'\n", "\\item[B] 'BBBBBBBB'\n", "\\item[C] 'CCCCCCCC'\n", "\\item[D] 'DDDDDDDD'\n", "\\item[E] 'EEEEEEEE'\n", "\\item[F] 'FFFFFFFF'\n", "\\item[G] 'GGGGGGGG'\n", "\\end{description*}\n" ], "text/markdown": [ "A\n", ": 'AAAAAAAA'B\n", ": 'BBBBBBBB'C\n", ": 'CCCCCCCC'D\n", ": 'DDDDDDDD'E\n", ": 'EEEEEEEE'F\n", ": 'FFFFFFFF'G\n", ": 'GGGGGGGG'\n", "\n" ], "text/plain": [ " A B C D E F G \n", "\"AAAAAAAA\" \"BBBBBBBB\" \"CCCCCCCC\" \"DDDDDDDD\" \"EEEEEEEE\" \"FFFFFFFF\" \"GGGGGGGG\" " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "text_draw <- sapply(LETTERS[1:7],\n", " FUN = function(x) paste(rep(x, 8), collapse = \"\"))\n", "text_draw " ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
INDEXnumeric1numeric2char1char2
1 0.3474129 0.4332860769CCCCCCCC GGGGGGGG
2 0.6859666 0.9104925687EEEEEEEE AAAAAAAA
3 0.8332253 0.0006273664GGGGGGGG DDDDDDDD
4 0.1599061 0.9637706790BBBBBBBB AAAAAAAA
5 0.6742479 0.7491531989AAAAAAAA BBBBBBBB
6 0.8877142 0.7471935684FFFFFFFF BBBBBBBB
\n" ], "text/latex": [ "\\begin{tabular}{r|lllll}\n", " INDEX & numeric1 & numeric2 & char1 & char2\\\\\n", "\\hline\n", "\t 1 & 0.3474129 & 0.4332860769 & CCCCCCCC & GGGGGGGG \\\\\n", "\t 2 & 0.6859666 & 0.9104925687 & EEEEEEEE & AAAAAAAA \\\\\n", "\t 3 & 0.8332253 & 0.0006273664 & GGGGGGGG & DDDDDDDD \\\\\n", "\t 4 & 0.1599061 & 0.9637706790 & BBBBBBBB & AAAAAAAA \\\\\n", "\t 5 & 0.6742479 & 0.7491531989 & AAAAAAAA & BBBBBBBB \\\\\n", "\t 6 & 0.8877142 & 0.7471935684 & FFFFFFFF & BBBBBBBB \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " INDEX numeric1 numeric2 char1 char2 \n", "1 1 0.3474129 0.4332860769 CCCCCCCC GGGGGGGG\n", "2 2 0.6859666 0.9104925687 EEEEEEEE AAAAAAAA\n", "3 3 0.8332253 0.0006273664 GGGGGGGG DDDDDDDD\n", "4 4 0.1599061 0.9637706790 BBBBBBBB AAAAAAAA\n", "5 5 0.6742479 0.7491531989 AAAAAAAA BBBBBBBB\n", "6 6 0.8877142 0.7471935684 FFFFFFFF BBBBBBBB" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_df[, char_vars] <- replicate(n_vars,\n", " sample(text_draw, n_rows, replace = TRUE))\n", "head(scratch_df) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Convert from standard data.frame to dlpyr table\n", "* `dplyr` is a popular, intuitive, and effcient package for manipulating data sets\n", "* R has many other data types, here are few: http://www.statmethods.net/input/datatypes.html" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "scratch_tbl <- tbl_df(scratch_df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Use the dplyr::glimpse function to see a summary of the generated data set \n", "\n", "`::` notation is used to specify a method (or function) is a member of certain package, i.e. in the 'namespace' of a certain package\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Observations: 1,000\n", "Variables: 5\n", "$ INDEX 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,...\n", "$ numeric1 0.34741287, 0.68596664, 0.83322530, 0.15990611, 0.67424790...\n", "$ numeric2 0.4332860769, 0.9104925687, 0.0006273664, 0.9637706790, 0....\n", "$ char1 \"CCCCCCCC\", \"EEEEEEEE\", \"GGGGGGGG\", \"BBBBBBBB\", \"AAAAAAAA\"...\n", "$ char2 \"GGGGGGGG\", \"AAAAAAAA\", \"DDDDDDDD\", \"AAAAAAAA\", \"BBBBBBBB\"...\n" ] } ], "source": [ "glimpse(scratch_tbl)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 5. Plotting variables in a table\n", "\n", "#### Use `ggplot` to plot univariate densities of numeric1 and char1 with `geom_bar()`\n", "* `ggplot` allows you to overlay graphics using the '+' operator\n", "* `gtitle` adds title\n", "* `coord_flip` rotates the bar chart" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": {}, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\npLm+8w2J1BGJSHN95xsSqSMSkeb6zjckUkckIs31nW9IpI5IRJrrO9+QSB2RiDTXd74hkToi\nEWmu73xDInVEItJc3/mGROqIRKS5vvMNidQRiUhzfecbEqkjEpHm+s43JFJHJCLN9Z1vSKSO\nSESa6zvfkEgdkYg013e+IZE6IhFpru98QyJ1RCLSXN/5hkTqiESkub7zDYnUEYlIc33nGxKp\nIxKR5vrONyRSR6TVIq3dh6m0/ElLO03tdPb6WiIVzF23rm6Ztwddcnndh0xG0amH6lS1JEQq\nLbE45bzfRCISkUZ3Ons9kToiEWl0p7PXE6kjEpFGdzp7PZE6IhFpdKez1xOpIxKRRnc6ez2R\nOiIRaXSns9cTqSMSkUZ3Ons9kToiEWl0p7PXE6kjEpFGdzp7PZE6IhFpdKez1xOpIxKRRnc6\nez2ROiIRaXSns9cTqSMSkUZ3Ons9kToiEWl0p7PXE6kj0nLW7kNGWv6kpZ3668pTilckF9Rp\nX06dMlN7WPchk1F06qE6VW0GV6SideUp529crkiuSEQa3ens9UTqiESk0Z3OXk+kjkhEGt3p\n7PVE6ohEpNGdzl5PpI5IRBrd6ez1ROqIRKTRnc5eT6SOSEQa3ens9UTqiESk0Z3OXk+kjkhE\nGt3p7PVE6ohEpNGdzl5PpI5IRBrd6ez1ROqIRKTRnc5eT6SOSEQa3ens9UTqiESk0Z3OXk+k\njkhEGt3p7PVE6oj07SKtvEvVEu3nbVSkxQ3n5xa0T1abgkgLS7SfR6R6FLdPVpuCSAtLtJ9H\npHoUt09Wm4JIC0u0n0ekehS3T1abgkgLS7SfR6R6FLdPVpuCSAtLtJ9HpHoUt09Wm4JIC0u0\nn0ekehS3T1abgkgLS7SfR6R6FLdPVpuCSAtLtJ9HpHoUt09Wm4JIC0u0n0ekehS3T1abgkgL\nS7SfR6R6FLdPVpuCSAtLtJ9HpHoUt09Wm4JIC0u0n0ekehS3T1abgkgLS7SfR6R6FLdPVpuC\nSAtLtJ9HpHoUt09Wm4JIC0u0n0ekehS3T1abgkgLS7SfR6R6FLdPVpuCSAtLtJ9HpHoUt09W\nm4JIC0u0n0ekehS3T1abgkgLS7SfR6R6FLdPVpuCSAtLtJ9HpHoUt09Wm4JIC0u0n0ekehS3\nT1abgkgLS7SfR6R6FLdPVpuCSAtLtJ9HpHoUt09Wm4JIC0u0n0ekehS3T1abgkgLS7SfR6R6\n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", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ggplot(scratch_tbl, aes(numeric1)) +\n", " geom_bar(stat = \"bin\", fill = \"blue\", bins = 100) +\n", " ggtitle('Histogram of Numeric1')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": {}, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ggplot(scratch_tbl, aes(char1)) +\n", " geom_bar(aes(fill=char1)) +\n", " ggtitle('Histogram of Char1') +\n", " coord_flip()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 6. Subsetting tables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Subset columns using `dplyr::select`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Subset a range of variables with similar names and numeric suffixes" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
numeric1numeric2
0.3474129 0.4332860769
0.6859666 0.9104925687
0.8332253 0.0006273664
0.1599061 0.9637706790
0.6742479 0.7491531989
0.8877142 0.7471935684
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " numeric1 & numeric2\\\\\n", "\\hline\n", "\t 0.3474129 & 0.4332860769\\\\\n", "\t 0.6859666 & 0.9104925687\\\\\n", "\t 0.8332253 & 0.0006273664\\\\\n", "\t 0.1599061 & 0.9637706790\\\\\n", "\t 0.6742479 & 0.7491531989\\\\\n", "\t 0.8877142 & 0.7471935684\\\\\n", "\\end{tabular}\n" ], "text/plain": [ " numeric1 numeric2 \n", "1 0.3474129 0.4332860769\n", "2 0.6859666 0.9104925687\n", "3 0.8332253 0.0006273664\n", "4 0.1599061 0.9637706790\n", "5 0.6742479 0.7491531989\n", "6 0.8877142 0.7471935684" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "num_vars <- select(scratch_tbl, num_range('numeric', 1:n_vars))\n", "head(num_vars)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Subset all the variables whose names begin with 'char'" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
char1char2
CCCCCCCCGGGGGGGG
EEEEEEEEAAAAAAAA
GGGGGGGGDDDDDDDD
BBBBBBBBAAAAAAAA
AAAAAAAABBBBBBBB
FFFFFFFFBBBBBBBB
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " char1 & char2\\\\\n", "\\hline\n", "\t CCCCCCCC & GGGGGGGG\\\\\n", "\t EEEEEEEE & AAAAAAAA\\\\\n", "\t GGGGGGGG & DDDDDDDD\\\\\n", "\t BBBBBBBB & AAAAAAAA\\\\\n", "\t AAAAAAAA & BBBBBBBB\\\\\n", "\t FFFFFFFF & BBBBBBBB\\\\\n", "\\end{tabular}\n" ], "text/plain": [ " char1 char2 \n", "1 CCCCCCCC GGGGGGGG\n", "2 EEEEEEEE AAAAAAAA\n", "3 GGGGGGGG DDDDDDDD\n", "4 BBBBBBBB AAAAAAAA\n", "5 AAAAAAAA BBBBBBBB\n", "6 FFFFFFFF BBBBBBBB" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "char_vars <- select(scratch_tbl, starts_with('char'))\n", "head(char_vars)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Subset variables by their names" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
numeric1char1
0.3474129CCCCCCCC
0.6859666EEEEEEEE
0.8332253GGGGGGGG
0.1599061BBBBBBBB
0.6742479AAAAAAAA
0.8877142FFFFFFFF
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " numeric1 & char1\\\\\n", "\\hline\n", "\t 0.3474129 & CCCCCCCC \\\\\n", "\t 0.6859666 & EEEEEEEE \\\\\n", "\t 0.8332253 & GGGGGGGG \\\\\n", "\t 0.1599061 & BBBBBBBB \\\\\n", "\t 0.6742479 & AAAAAAAA \\\\\n", "\t 0.8877142 & FFFFFFFF \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " numeric1 char1 \n", "1 0.3474129 CCCCCCCC\n", "2 0.6859666 EEEEEEEE\n", "3 0.8332253 GGGGGGGG\n", "4 0.1599061 BBBBBBBB\n", "5 0.6742479 AAAAAAAA\n", "6 0.8877142 FFFFFFFF" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mixed_vars <- select(scratch_tbl, one_of('numeric1', 'char1'))\n", "head(mixed_vars)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Subset columns with several different `dplyr` methods" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Subset/slice rows using their numeric indices" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
INDEXnumeric1numeric2char1char2
1 0.3474129 0.4332860769CCCCCCCC GGGGGGGG
2 0.6859666 0.9104925687EEEEEEEE AAAAAAAA
3 0.8332253 0.0006273664GGGGGGGG DDDDDDDD
4 0.1599061 0.9637706790BBBBBBBB AAAAAAAA
5 0.6742479 0.7491531989AAAAAAAA BBBBBBBB
6 0.8877142 0.7471935684FFFFFFFF BBBBBBBB
7 0.8268970 0.7529136408GGGGGGGG GGGGGGGG
8 0.3910927 0.2017313016GGGGGGGG CCCCCCCC
9 0.8908531 0.7093369325DDDDDDDD GGGGGGGG
10 0.9922066 0.0265828427FFFFFFFF DDDDDDDD
\n" ], "text/latex": [ "\\begin{tabular}{r|lllll}\n", " INDEX & numeric1 & numeric2 & char1 & char2\\\\\n", "\\hline\n", "\t 1 & 0.3474129 & 0.4332860769 & CCCCCCCC & GGGGGGGG \\\\\n", "\t 2 & 0.6859666 & 0.9104925687 & EEEEEEEE & AAAAAAAA \\\\\n", "\t 3 & 0.8332253 & 0.0006273664 & GGGGGGGG & DDDDDDDD \\\\\n", "\t 4 & 0.1599061 & 0.9637706790 & BBBBBBBB & AAAAAAAA \\\\\n", "\t 5 & 0.6742479 & 0.7491531989 & AAAAAAAA & BBBBBBBB \\\\\n", "\t 6 & 0.8877142 & 0.7471935684 & FFFFFFFF & BBBBBBBB \\\\\n", "\t 7 & 0.8268970 & 0.7529136408 & GGGGGGGG & GGGGGGGG \\\\\n", "\t 8 & 0.3910927 & 0.2017313016 & GGGGGGGG & CCCCCCCC \\\\\n", "\t 9 & 0.8908531 & 0.7093369325 & DDDDDDDD & GGGGGGGG \\\\\n", "\t 10 & 0.9922066 & 0.0265828427 & FFFFFFFF & DDDDDDDD \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " INDEX numeric1 numeric2 char1 char2 \n", "1 1 0.3474129 0.4332860769 CCCCCCCC GGGGGGGG\n", "2 2 0.6859666 0.9104925687 EEEEEEEE AAAAAAAA\n", "3 3 0.8332253 0.0006273664 GGGGGGGG DDDDDDDD\n", "4 4 0.1599061 0.9637706790 BBBBBBBB AAAAAAAA\n", "5 5 0.6742479 0.7491531989 AAAAAAAA BBBBBBBB\n", "6 6 0.8877142 0.7471935684 FFFFFFFF BBBBBBBB\n", "7 7 0.8268970 0.7529136408 GGGGGGGG GGGGGGGG\n", "8 8 0.3910927 0.2017313016 GGGGGGGG CCCCCCCC\n", "9 9 0.8908531 0.7093369325 DDDDDDDD GGGGGGGG\n", "10 10 0.9922066 0.0265828427 FFFFFFFF DDDDDDDD" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "some_rows <- slice(scratch_tbl, 1:10)\n", "some_rows" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Subset top rows based on the value of a certain variable" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
INDEXnumeric1numeric2char1char2
10 0.9922066 0.02658284FFFFFFFF DDDDDDDD
68 0.9977602 0.85634274DDDDDDDD DDDDDDDD
101 0.9972045 0.80539363AAAAAAAA CCCCCCCC
106 0.9987065 0.11530087CCCCCCCC GGGGGGGG
241 0.9942145 0.73674233EEEEEEEE FFFFFFFF
404 0.9984709 0.48149003BBBBBBBB FFFFFFFF
518 0.9946709 0.57738147EEEEEEEE FFFFFFFF
582 0.9936982 0.95461096AAAAAAAA CCCCCCCC
656 0.9944665 0.71217725CCCCCCCC BBBBBBBB
721 0.9977745 0.57664150FFFFFFFF AAAAAAAA
\n" ], "text/latex": [ "\\begin{tabular}{r|lllll}\n", " INDEX & numeric1 & numeric2 & char1 & char2\\\\\n", "\\hline\n", "\t 10 & 0.9922066 & 0.02658284 & FFFFFFFF & DDDDDDDD \\\\\n", "\t 68 & 0.9977602 & 0.85634274 & DDDDDDDD & DDDDDDDD \\\\\n", "\t 101 & 0.9972045 & 0.80539363 & AAAAAAAA & CCCCCCCC \\\\\n", "\t 106 & 0.9987065 & 0.11530087 & CCCCCCCC & GGGGGGGG \\\\\n", "\t 241 & 0.9942145 & 0.73674233 & EEEEEEEE & FFFFFFFF \\\\\n", "\t 404 & 0.9984709 & 0.48149003 & BBBBBBBB & FFFFFFFF \\\\\n", "\t 518 & 0.9946709 & 0.57738147 & EEEEEEEE & FFFFFFFF \\\\\n", "\t 582 & 0.9936982 & 0.95461096 & AAAAAAAA & CCCCCCCC \\\\\n", "\t 656 & 0.9944665 & 0.71217725 & CCCCCCCC & BBBBBBBB \\\\\n", "\t 721 & 0.9977745 & 0.57664150 & FFFFFFFF & AAAAAAAA \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " INDEX numeric1 numeric2 char1 char2 \n", "1 10 0.9922066 0.02658284 FFFFFFFF DDDDDDDD\n", "2 68 0.9977602 0.85634274 DDDDDDDD DDDDDDDD\n", "3 101 0.9972045 0.80539363 AAAAAAAA CCCCCCCC\n", "4 106 0.9987065 0.11530087 CCCCCCCC GGGGGGGG\n", "5 241 0.9942145 0.73674233 EEEEEEEE FFFFFFFF\n", "6 404 0.9984709 0.48149003 BBBBBBBB FFFFFFFF\n", "7 518 0.9946709 0.57738147 EEEEEEEE FFFFFFFF\n", "8 582 0.9936982 0.95461096 AAAAAAAA CCCCCCCC\n", "9 656 0.9944665 0.71217725 CCCCCCCC BBBBBBBB\n", "10 721 0.9977745 0.57664150 FFFFFFFF AAAAAAAA" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sorted_top_rows <- top_n(scratch_tbl, 10, numeric1)\n", "sorted_top_rows " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Subset rows where a certain variable has a certain value" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
INDEXnumeric1numeric2char1char2
5 0.674247900.7491532 AAAAAAAA BBBBBBBB
13 0.217155880.8610248 AAAAAAAA EEEEEEEE
15 0.124706820.9516568 AAAAAAAA CCCCCCCC
24 0.067379930.6272992 AAAAAAAA EEEEEEEE
27 0.221876900.6680512 AAAAAAAA DDDDDDDD
28 0.547668230.7143838 AAAAAAAA BBBBBBBB
\n" ], "text/latex": [ "\\begin{tabular}{r|lllll}\n", " INDEX & numeric1 & numeric2 & char1 & char2\\\\\n", "\\hline\n", "\t 5 & 0.67424790 & 0.7491532 & AAAAAAAA & BBBBBBBB \\\\\n", "\t 13 & 0.21715588 & 0.8610248 & AAAAAAAA & EEEEEEEE \\\\\n", "\t 15 & 0.12470682 & 0.9516568 & AAAAAAAA & CCCCCCCC \\\\\n", "\t 24 & 0.06737993 & 0.6272992 & AAAAAAAA & EEEEEEEE \\\\\n", "\t 27 & 0.22187690 & 0.6680512 & AAAAAAAA & DDDDDDDD \\\\\n", "\t 28 & 0.54766823 & 0.7143838 & AAAAAAAA & BBBBBBBB \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " INDEX numeric1 numeric2 char1 char2 \n", "1 5 0.67424790 0.7491532 AAAAAAAA BBBBBBBB\n", "2 13 0.21715588 0.8610248 AAAAAAAA EEEEEEEE\n", "3 15 0.12470682 0.9516568 AAAAAAAA CCCCCCCC\n", "4 24 0.06737993 0.6272992 AAAAAAAA EEEEEEEE\n", "5 27 0.22187690 0.6680512 AAAAAAAA DDDDDDDD\n", "6 28 0.54766823 0.7143838 AAAAAAAA BBBBBBBB" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "AAAAAAAA_rows <- filter(scratch_tbl, char1 == 'AAAAAAAA')\n", "head(AAAAAAAA_rows)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 7. Updating a table\n", "`dplyr`, as a best practice, does not support in-place overwrites of data " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`dplyr::transform` enables the creation of new variables from existing variables" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
INDEXnumeric1numeric2char1char2new_numeric
1 0.3474129 0.4332860769CCCCCCCC GGGGGGGG 0.3
2 0.6859666 0.9104925687EEEEEEEE AAAAAAAA 0.7
3 0.8332253 0.0006273664GGGGGGGG DDDDDDDD 0.8
4 0.1599061 0.9637706790BBBBBBBB AAAAAAAA 0.2
5 0.6742479 0.7491531989AAAAAAAA BBBBBBBB 0.7
6 0.8877142 0.7471935684FFFFFFFF BBBBBBBB 0.9
\n" ], "text/latex": [ "\\begin{tabular}{r|llllll}\n", " INDEX & numeric1 & numeric2 & char1 & char2 & new\\_numeric\\\\\n", "\\hline\n", "\t 1 & 0.3474129 & 0.4332860769 & CCCCCCCC & GGGGGGGG & 0.3 \\\\\n", "\t 2 & 0.6859666 & 0.9104925687 & EEEEEEEE & AAAAAAAA & 0.7 \\\\\n", "\t 3 & 0.8332253 & 0.0006273664 & GGGGGGGG & DDDDDDDD & 0.8 \\\\\n", "\t 4 & 0.1599061 & 0.9637706790 & BBBBBBBB & AAAAAAAA & 0.2 \\\\\n", "\t 5 & 0.6742479 & 0.7491531989 & AAAAAAAA & BBBBBBBB & 0.7 \\\\\n", "\t 6 & 0.8877142 & 0.7471935684 & FFFFFFFF & BBBBBBBB & 0.9 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " INDEX numeric1 numeric2 char1 char2 new_numeric\n", "1 1 0.3474129 0.4332860769 CCCCCCCC GGGGGGGG 0.3 \n", "2 2 0.6859666 0.9104925687 EEEEEEEE AAAAAAAA 0.7 \n", "3 3 0.8332253 0.0006273664 GGGGGGGG DDDDDDDD 0.8 \n", "4 4 0.1599061 0.9637706790 BBBBBBBB AAAAAAAA 0.2 \n", "5 5 0.6742479 0.7491531989 AAAAAAAA BBBBBBBB 0.7 \n", "6 6 0.8877142 0.7471935684 FFFFFFFF BBBBBBBB 0.9 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_tbl2 <- transform(scratch_tbl, \n", " new_numeric = round(numeric1, 1))\n", "head(scratch_tbl2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`dplyr::mutate` enables the creation of new variables from existing variables and computed variables" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
INDEXnumeric1numeric2char1char2new_numericnew_numeric2
1 0.3474129 0.4332860769CCCCCCCC GGGGGGGG 0.3 3
2 0.6859666 0.9104925687EEEEEEEE AAAAAAAA 0.7 7
3 0.8332253 0.0006273664GGGGGGGG DDDDDDDD 0.8 8
4 0.1599061 0.9637706790BBBBBBBB AAAAAAAA 0.2 2
5 0.6742479 0.7491531989AAAAAAAA BBBBBBBB 0.7 7
6 0.8877142 0.7471935684FFFFFFFF BBBBBBBB 0.9 9
\n" ], "text/latex": [ "\\begin{tabular}{r|lllllll}\n", " INDEX & numeric1 & numeric2 & char1 & char2 & new\\_numeric & new\\_numeric2\\\\\n", "\\hline\n", "\t 1 & 0.3474129 & 0.4332860769 & CCCCCCCC & GGGGGGGG & 0.3 & 3 \\\\\n", "\t 2 & 0.6859666 & 0.9104925687 & EEEEEEEE & AAAAAAAA & 0.7 & 7 \\\\\n", "\t 3 & 0.8332253 & 0.0006273664 & GGGGGGGG & DDDDDDDD & 0.8 & 8 \\\\\n", "\t 4 & 0.1599061 & 0.9637706790 & BBBBBBBB & AAAAAAAA & 0.2 & 2 \\\\\n", "\t 5 & 0.6742479 & 0.7491531989 & AAAAAAAA & BBBBBBBB & 0.7 & 7 \\\\\n", "\t 6 & 0.8877142 & 0.7471935684 & FFFFFFFF & BBBBBBBB & 0.9 & 9 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " INDEX numeric1 numeric2 char1 char2 new_numeric new_numeric2\n", "1 1 0.3474129 0.4332860769 CCCCCCCC GGGGGGGG 0.3 3 \n", "2 2 0.6859666 0.9104925687 EEEEEEEE AAAAAAAA 0.7 7 \n", "3 3 0.8332253 0.0006273664 GGGGGGGG DDDDDDDD 0.8 8 \n", "4 4 0.1599061 0.9637706790 BBBBBBBB AAAAAAAA 0.2 2 \n", "5 5 0.6742479 0.7491531989 AAAAAAAA BBBBBBBB 0.7 7 \n", "6 6 0.8877142 0.7471935684 FFFFFFFF BBBBBBBB 0.9 9 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_tbl2 <- mutate(scratch_tbl, \n", " new_numeric = round(numeric1, 1), \n", " new_numeric2 = new_numeric * 10)\n", "head(scratch_tbl2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`dplyr::transmute` enables the creation of new variables from existing variables and computed variables, but keeps only newly created variables" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
new_numericnew_numeric2
0.33
0.77
0.88
0.22
0.77
0.99
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " new\\_numeric & new\\_numeric2\\\\\n", "\\hline\n", "\t 0.3 & 3 \\\\\n", "\t 0.7 & 7 \\\\\n", "\t 0.8 & 8 \\\\\n", "\t 0.2 & 2 \\\\\n", "\t 0.7 & 7 \\\\\n", "\t 0.9 & 9 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " new_numeric new_numeric2\n", "1 0.3 3 \n", "2 0.7 7 \n", "3 0.8 8 \n", "4 0.2 2 \n", "5 0.7 7 \n", "6 0.9 9 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_tbl2 <- transmute(scratch_tbl, \n", " new_numeric = round(numeric1, 1), \n", " new_numeric2 = new_numeric * 10)\n", "head(scratch_tbl2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 8. Sorting a table \n", "Sort tables by one variable or more variables using `dplyr::arrange`" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
char1char2
AAAAAAAABBBBBBBB
AAAAAAAAEEEEEEEE
AAAAAAAACCCCCCCC
AAAAAAAAEEEEEEEE
AAAAAAAADDDDDDDD
AAAAAAAABBBBBBBB
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " char1 & char2\\\\\n", "\\hline\n", "\t AAAAAAAA & BBBBBBBB\\\\\n", "\t AAAAAAAA & EEEEEEEE\\\\\n", "\t AAAAAAAA & CCCCCCCC\\\\\n", "\t AAAAAAAA & EEEEEEEE\\\\\n", "\t AAAAAAAA & DDDDDDDD\\\\\n", "\t AAAAAAAA & BBBBBBBB\\\\\n", "\\end{tabular}\n" ], "text/plain": [ " char1 char2 \n", "1 AAAAAAAA BBBBBBBB\n", "2 AAAAAAAA EEEEEEEE\n", "3 AAAAAAAA CCCCCCCC\n", "4 AAAAAAAA EEEEEEEE\n", "5 AAAAAAAA DDDDDDDD\n", "6 AAAAAAAA BBBBBBBB" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# one sort var: char1\n", "sorted <- arrange(char_vars, char1)\n", "head(sorted)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
char1char2
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " char1 & char2\\\\\n", "\\hline\n", "\t AAAAAAAA & AAAAAAAA\\\\\n", "\t AAAAAAAA & AAAAAAAA\\\\\n", "\t AAAAAAAA & AAAAAAAA\\\\\n", "\t AAAAAAAA & AAAAAAAA\\\\\n", "\t AAAAAAAA & AAAAAAAA\\\\\n", "\t AAAAAAAA & AAAAAAAA\\\\\n", "\\end{tabular}\n" ], "text/plain": [ " char1 char2 \n", "1 AAAAAAAA AAAAAAAA\n", "2 AAAAAAAA AAAAAAAA\n", "3 AAAAAAAA AAAAAAAA\n", "4 AAAAAAAA AAAAAAAA\n", "5 AAAAAAAA AAAAAAAA\n", "6 AAAAAAAA AAAAAAAA" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# two sort vars: char1, char2\n", "sorted2 <- arrange(char_vars, char1, char2)\n", "head(sorted2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 9. Adding data to the table\n", "Add data to a table using `dplyr:: bind` and `dplyr::join`\n", "* Bind methods smash tables together\n", " * `bindr` stacks data sets vertically\n", " * `bindc` combines data sets horizontally\n", "* `join` combines tables based on matching values of a shared key (or 'by') variable" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "2000" ], "text/latex": [ "2000" ], "text/markdown": [ "2000" ], "text/plain": [ "[1] 2000" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "bindr <- bind_rows(sorted, sorted2)\n", "nrow(bindr) #nrow - number of rows" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "4" ], "text/latex": [ "4" ], "text/markdown": [ "4" ], "text/plain": [ "[1] 4" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "bindc <- bind_cols(sorted, sorted2)\n", "ncol(bindc) # ncol - number of columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create two tables to join on a key variable " ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sorted_left <- arrange(select(scratch_tbl, one_of('INDEX', 'char1')), char1)\n", "right <- select(scratch_tbl, one_of('INDEX', 'numeric1'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Perform join\n", "Joined table contains `char1` from the left table and `numeric1` from the right table matched by the value of `INDEX`" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
INDEXchar1numeric1
5 AAAAAAAA 0.67424790
13 AAAAAAAA 0.21715588
15 AAAAAAAA 0.12470682
24 AAAAAAAA 0.06737993
27 AAAAAAAA 0.22187690
28 AAAAAAAA 0.54766823
\n" ], "text/latex": [ "\\begin{tabular}{r|lll}\n", " INDEX & char1 & numeric1\\\\\n", "\\hline\n", "\t 5 & AAAAAAAA & 0.67424790\\\\\n", "\t 13 & AAAAAAAA & 0.21715588\\\\\n", "\t 15 & AAAAAAAA & 0.12470682\\\\\n", "\t 24 & AAAAAAAA & 0.06737993\\\\\n", "\t 27 & AAAAAAAA & 0.22187690\\\\\n", "\t 28 & AAAAAAAA & 0.54766823\\\\\n", "\\end{tabular}\n" ], "text/plain": [ " INDEX char1 numeric1 \n", "1 5 AAAAAAAA 0.67424790\n", "2 13 AAAAAAAA 0.21715588\n", "3 15 AAAAAAAA 0.12470682\n", "4 24 AAAAAAAA 0.06737993\n", "5 27 AAAAAAAA 0.22187690\n", "6 28 AAAAAAAA 0.54766823" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "joined <- left_join(sorted_left, right, by = 'INDEX')\n", "head(joined)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 10. Comparing tables using `dplyr::all.equal`\n", "* `dplyr::all.equal` will test tables for equality despite the order of rowsand/or columns\n", "* Very useful for keeping track of changes to important tables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a table for comparision \n", "`test` will have the same values as `joined` but in a different order" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": true }, "outputs": [], "source": [ "test <- select(scratch_tbl, one_of('INDEX', 'numeric1', 'char1'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Perform comparisons" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] \"Same row values, but different order\"\n" ] } ], "source": [ "print(all.equal(joined, test, ignore_row_order = FALSE))" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] \"Same column names, but different order\"\n" ] } ], "source": [ "print(all.equal(joined, test, ignore_col_order = FALSE))" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] TRUE\n" ] } ], "source": [ "print(all.equal(joined, test))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 11. Summarizing tables\n", "Combine rows of tables into summary values, like means or sums, using:\n", "* `dplyr::summarise` \n", "* `dplyr::summarise_each`" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\n", "
avg
0.4963676
\n" ], "text/latex": [ "\\begin{tabular}{r|l}\n", " avg\\\\\n", "\\hline\n", "\t 0.4963676\\\\\n", "\\end{tabular}\n" ], "text/plain": [ " avg \n", "1 0.4963676" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ave <- summarise(num_vars, avg = mean(numeric1)) # avg is the name of the new variable\n", "ave" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\n", "
numeric1numeric2
0.49636760.50781
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " numeric1 & numeric2\\\\\n", "\\hline\n", "\t 0.4963676 & 0.50781 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " numeric1 numeric2\n", "1 0.4963676 0.50781 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "all_aves <-summarise_each(num_vars, funs(mean)) # funs() defines the summary function\n", "all_aves" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 12. By group processing\n", "By groups allow you to divide and process a data set based on the values of a certain variable\n", "* `dplyr::group_by` groups a data set together based on the values of a certain variable\n", "* Operations can then be applied to groups" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": true }, "outputs": [], "source": [ "grouped <- group_by(joined, char1)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
char1avg
AAAAAAAA 0.4920375
BBBBBBBB 0.5358034
CCCCCCCC 0.5129227
DDDDDDDD 0.4786441
EEEEEEEE 0.4459109
FFFFFFFF 0.4992131
GGGGGGGG 0.5048102
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " char1 & avg\\\\\n", "\\hline\n", "\t AAAAAAAA & 0.4920375\\\\\n", "\t BBBBBBBB & 0.5358034\\\\\n", "\t CCCCCCCC & 0.5129227\\\\\n", "\t DDDDDDDD & 0.4786441\\\\\n", "\t EEEEEEEE & 0.4459109\\\\\n", "\t FFFFFFFF & 0.4992131\\\\\n", "\t GGGGGGGG & 0.5048102\\\\\n", "\\end{tabular}\n" ], "text/plain": [ " char1 avg \n", "1 AAAAAAAA 0.4920375\n", "2 BBBBBBBB 0.5358034\n", "3 CCCCCCCC 0.5129227\n", "4 DDDDDDDD 0.4786441\n", "5 EEEEEEEE 0.4459109\n", "6 FFFFFFFF 0.4992131\n", "7 GGGGGGGG 0.5048102" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "grouped <- summarise(grouped, avg = mean(numeric1)) # avg is the name of the new variable\n", "grouped" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 13. Transposing a table\n", "* Transposing a matrix simply switches row and columns values\n", "* Transposing a data.frame or dplyr table is more complex because of metadata associated with variable names and row indices" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " chr [1:5, 1:1000] \" 1\" \"0.3474128747\" \"0.4332860769\" \"CCCCCCCC\" ...\n", " - attr(*, \"dimnames\")=List of 2\n", " ..$ : chr [1:5] \"INDEX\" \"numeric1\" \"numeric2\" \"char1\" ...\n", " ..$ : NULL\n" ] } ], "source": [ "transposed = t(scratch_tbl)\n", "glimpse(transposed)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Often, instead of simply transposing, a data set will need to be reformatted in a **melt/stack** - **column split** - **cast** action described in Hadley Wickham's *Tidy Data*:\n", "https://www.jstatsoft.org/article/view/v059i10\n", "\n", "See also dplyr::gather and dplyr::spread()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 14. Exporting and importing a table\n", "* The R core function `write.table` enables writing text files\n", " * Use the `sep` option to specifiy the columns delimiter character\n", " * `row.names = FALSE` indicates not to save the row number to the text file\n", "* The similar R core function `read.table` enables reading text files" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# export\n", "filename <- paste(git_dir, 'scratch.csv', sep = '/') \n", "write.table(scratch_tbl, file = filename, quote = FALSE, sep = ',',\n", " row.names = FALSE) " ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# import\n", "import <- read.table(filename, header = TRUE, sep = ',')" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "R", "language": "R", "name": "ir" }, "language_info": { "codemirror_mode": "r", "file_extension": ".r", "mimetype": "text/x-r-source", "name": "R", "pygments_lexer": "r", "version": "3.3.2" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 01_basic_data_prep/src/notebooks/r/R_Part_1_data.table.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# R: Part 1 - data.table\n", "\n", "## 1. Load library\n", "\n", "`data.table` is an efficient package for manipulating data sets\n", "* data.table is implemented in optimized C and often attempts to update items by reference to avoid copying large amounts of data\n", "* data.table is a subclass of data.frame and generally accepts data.frame syntax \n", "* general form of a `data.table` is `dt[i, j, by]`\n", " * `i` is row index, indexed from 1 ...\n", " * `j` is col index, indexed from 1 ...\n", " * by is by-group var name" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "library(data.table)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 2. Setting the working directory\n", "\n", "#### Enter the directory location of this file within single quotes" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# '<-' is the preferred assignment operator in R\n", "# '/' is the safest directory separator character to use\n", "\n", "git_dir <- 'C:/path/to/GWU_data_mining/01_basic_data_prep/src/notebooks/r'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Set the working directory\n", "\n", "* The working directory is where files are written to and read from by default\n", "* `setwd()` sets the working directory\n", "* `getwd()` prints the current working directory" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "'C:/workspace/GWU_data_mining/01_basic_data_prep/src/notebooks/r'" ], "text/latex": [ "'C:/workspace/GWU\\_data\\_mining/01\\_basic\\_data\\_prep/src/notebooks/r'" ], "text/markdown": [ "'C:/workspace/GWU_data_mining/01_basic_data_prep/src/notebooks/r'" ], "text/plain": [ "[1] \"C:/workspace/GWU_data_mining/01_basic_data_prep/src/notebooks/r\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "setwd(git_dir)\n", "getwd()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "***\n", "## 3. Generating a sample data set\n", "\n", "#### Set the number of rows and columns for the sample data set" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "n_rows <- 1000\n", "n_vars <- 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a key variable\n", "* A key variable has a unique value for each row of a data set\n", "* `seq()` generates values from a number (default = 1), to another number, by a certain value (default = 1)\n", "* Many types of data structures in R have key variables (a.k.a. row names) by default" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "key <- seq(n_rows)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Show the first five elements of `key`\n", "\n", "Most data structures in R can be 'sliced', i.e. using numeric indices to select a subset of items " ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 1
  2. \n", "\t
  3. 2
  4. \n", "\t
  5. 3
  6. \n", "\t
  7. 4
  8. \n", "\t
  9. 5
  10. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 1\n", "\\item 2\n", "\\item 3\n", "\\item 4\n", "\\item 5\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 1\n", "2. 2\n", "3. 3\n", "4. 4\n", "5. 5\n", "\n", "\n" ], "text/plain": [ "[1] 1 2 3 4 5" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "key[1:5] " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create lists of strings that will become column names\n", "\n", "`paste()` concatentates strings with a separator character in between them" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 'numeric1'
  2. \n", "\t
  3. 'numeric2'
  4. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'numeric1'\n", "\\item 'numeric2'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'numeric1'\n", "2. 'numeric2'\n", "\n", "\n" ], "text/plain": [ "[1] \"numeric1\" \"numeric2\"" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
    \n", "\t
  1. 'char1'
  2. \n", "\t
  3. 'char2'
  4. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'char1'\n", "\\item 'char2'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'char1'\n", "2. 'char2'\n", "\n", "\n" ], "text/plain": [ "[1] \"char1\" \"char2\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "num_vars <- paste('numeric', seq_len(n_vars), sep = '')\n", "num_vars \n", "\n", "char_vars <- paste('char', seq_len(n_vars), sep = '')\n", "char_vars" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a list of strings from which to generate random text variables\n", "* `sapply()` applies a function to a sequence of values\n", "* `LETTERS` is a character vector containing uppercase letters\n", "* An anonymous function is defined that replicates a value 8 times with no seperator character" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\t
A
\n", "\t\t
'AAAAAAAA'
\n", "\t
B
\n", "\t\t
'BBBBBBBB'
\n", "\t
C
\n", "\t\t
'CCCCCCCC'
\n", "\t
D
\n", "\t\t
'DDDDDDDD'
\n", "\t
E
\n", "\t\t
'EEEEEEEE'
\n", "\t
F
\n", "\t\t
'FFFFFFFF'
\n", "\t
G
\n", "\t\t
'GGGGGGGG'
\n", "
\n" ], "text/latex": [ "\\begin{description*}\n", "\\item[A] 'AAAAAAAA'\n", "\\item[B] 'BBBBBBBB'\n", "\\item[C] 'CCCCCCCC'\n", "\\item[D] 'DDDDDDDD'\n", "\\item[E] 'EEEEEEEE'\n", "\\item[F] 'FFFFFFFF'\n", "\\item[G] 'GGGGGGGG'\n", "\\end{description*}\n" ], "text/markdown": [ "A\n", ": 'AAAAAAAA'B\n", ": 'BBBBBBBB'C\n", ": 'CCCCCCCC'D\n", ": 'DDDDDDDD'E\n", ": 'EEEEEEEE'F\n", ": 'FFFFFFFF'G\n", ": 'GGGGGGGG'\n", "\n" ], "text/plain": [ " A B C D E F G \n", "\"AAAAAAAA\" \"BBBBBBBB\" \"CCCCCCCC\" \"DDDDDDDD\" \"EEEEEEEE\" \"FFFFFFFF\" \"GGGGGGGG\" " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "text_draw <- sapply(LETTERS[1:7],\n", " FUN = function(x) paste(rep(x, 8), collapse = \"\"))\n", "text_draw " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a sample `data.table`\n", "* `replicate()` replicates `n_row` length lists of numeric values `n_vars` times\n", "* `replicate()` replicates n_var lists of n_row elements from text_draw sampled randomly from `test_draw` using the `sample()` function" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "scratch_dt <- data.table(key,\n", " replicate(n_vars, runif(n_rows)), \n", " replicate(n_vars, sample(text_draw, n_rows, \n", " replace = TRUE)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `data.table::set*` family of methods in data.table always updates items by reference for efficiency" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "setnames(scratch_dt, c('key', num_vars, char_vars))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Set option to print first 5 and last 5 rows of `data.table` by default" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " key numeric1 numeric2 char1 char2\n", " 1: 1 0.259996684 0.46904710 GGGGGGGG EEEEEEEE\n", " 2: 2 0.732081677 0.98525640 FFFFFFFF AAAAAAAA\n", " 3: 3 0.003667001 0.44219657 FFFFFFFF CCCCCCCC\n", " 4: 4 0.035518094 0.33271310 EEEEEEEE BBBBBBBB\n", " 5: 5 0.634085899 0.39789319 EEEEEEEE FFFFFFFF\n", " --- \n", " 996: 996 0.149284828 0.06582848 CCCCCCCC GGGGGGGG\n", " 997: 997 0.664694987 0.35249160 GGGGGGGG AAAAAAAA\n", " 998: 998 0.119148107 0.66886333 DDDDDDDD GGGGGGGG\n", " 999: 999 0.299141358 0.78567161 FFFFFFFF FFFFFFFF\n", "1000: 1000 0.169459480 0.31053551 EEEEEEEE GGGGGGGG\n" ] } ], "source": [ "options(datatable.print.topn=5)\n", "print(scratch_dt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 4. Plotting variables in a table\n", "`data.table` enables simple plotting for numeric variables" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "NULL" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAMFBMVEUAAABNTU1oaGh8fHyM\njIyampqnp6eysrK9vb3Hx8fQ0NDZ2dnh4eHp6enw8PD////QFLu4AAAACXBIWXMAABJ0AAAS\ndAHeZh94AAAgAElEQVR4nO1diXbcKgxlkjTpa5P4///2NTNeWARIQgLs0T2tncyAJEAXxGLH\nLQaDoRlutAEGwxVgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQy\nGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBE\nMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARg\nRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgE\nYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIY\nBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQy\nGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBE\nMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARg\nRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgE\nYEQyGATQgUjOYDgZGF4uT5wBKgwGSRiRDAYBGJEMBgEYkQwGARiRDAYBGJEMBgEYkQwGARiR\nDAYBdCXS34+3+97V2/tfLRUGwxB0JNL3i7cP/KqiwmAYhI5Eene3/z7vP339ubl3DRUGwyB0\nJNLNfe4/f7qbhgqDYRA6Eik411c+5GdEMpwMNiIZDALoO0f683X/yeZIhquh5/L3q7dq9/Kt\nosJgGIO++0jv932k29uH7SMZrgU72WAwCMCIZBDDzwPXrIeuCfJnxYWINHM1PwN+qt89Lmry\npWTL+8ooIonvI0lWs4GDewOsVy35MrI1fGUeIom8ksWINAwu+l9OTG9iF90boOErVwntBKu5\nJ+YMR9k9WZ1IR+xH1SHXwiq+YkQaiDnDUaZVGCKtolkjghGJgWchknedB1yrEHOkUDSLSWKR\n3WqwVD92FSJJVDOuUuWisTnJz7aqvmrnjoSBJlyNyo3fu68IhgTXIVJrneAEiK7BRvc50GBV\nbR8JJBKhRqX6sE3lKs+IFGVqq2bckCYZjQ0lUra2FK0KRTvgl17YKe/KayMEiV2yPPLhXzo+\nwLVw/iPrZePmSKVhIGtV+4CwjUGedmSNKixvHvO5ehhSV96RSL+NSLE0wTiRqNm7Jt/BVkkY\nu8s42h9Vo0o7qM6/NyrvGdp93sqvPBFQwccIIql0tCi10T3+GprryAyfGbE1IonoTmU+/tcG\nQ5TyrnOkz/LjfBIqdglkD+0/RxqHqvemvbDa1AlRoyq608Exkw637dV3seG397S5kopHfkYo\n0H/VTgHYleTonknQgUjOIWpUR7db9ZcTYVck+hKplwreuNF7H0kceJZXKgjwXFFn3nv5h8G1\nOTOou7kdULWFXpG4JJGEGn04Zajnd/H9R8WJoAqUC2oP5Rudai4NDJBp7Mk41YRaQkBNpK5A\npLQ6RIg0PIhz65wfbQKp2EW5IJHE6mOnxa7mEUAVciQTmphaSq2FnUhdgEhQDcoQqV1EGxyy\nL/QyhPcm3YAgoRH6MHMjxdqExeguPDWeFFWptfwhE5OSIVwVFCJBGQSqVXROwDPABffwS6hp\nJYmkOBzDRML0GEezekUNRjMtJmETMmSrAq8CrkEBP+hHpEx/VyBSrniS3bLeBNEnwUPTppGY\ncTmmV3pEwnrSNYkk4Ae9iJRtKbd2txCRMpYNn9bh4A0sPg2QA5I/JO2djWJrEXcUKJLpWfRU\n6NUgp3tnP0ENZXO5aW6hzMMXGjEIjto9VlQWTAcQECkaiZTmSHicnEjMpy1xohdM6zblqJEC\nXrUbPn1j49g/8m3fRt56du8azY2UB+OLr9rtPbZODVK7d9YYFt0j/eC68FmJlJ3aoechSUJ/\n2qRJo1gvkIYhlmeNggqoexsHln8XiZT7bngcAwDRCoUoFtuE6KO0ok6Bqe/TEskLBibxKJ45\nhUbKE2nEokJ5B5fQZ4vaDSuWrSCU4SclUlBT5yZSoc0FunApoM4UkYkkUQxIhuCQje2wz0qk\n+2UuInGbL+9NEy1nl8tGcrU9kVrx5MY+fId9TiJtJXOYxN1AcwzcOlVHGpV0VVwT57kxGdWm\neoJESq41nWThqqAQaY4e+wG833cwnXhyvGiQDJFCFXEmuU5DjEgEPzs1kZDbDz1QMKRwLk7R\neCpT22I3ZHGCqghlivYsUrVL8LNzEmm2BeCCF2SWlaK7fAxHrCEkUzwrQ1IwaBARqaieCClW\nbq+uwAThHOnqQHRti0hNCaHgBfBXkd/KF4ca3VSJ5JZg7zuxuPF0lNy0hm0OKAUt6qREUujC\niQg65+juJ4O/iomUy86GNJGOApcHEEqzBGfuqvpHgHDy6LREGouwgulECh0R5UWcp87JsV0p\nuS8y1z9QJ2aYKhQCc8gEj99n0jLEK2N+InlXHpF8l0N4Eeii9QVr3vBQklgmUvIh/vAPJE8O\nrOCZwu4zE2lcdAcziDBHWgLrMURKE5S5Rfec6pupvDtscfIpwQjlWS+Lp89BpJHrDQmR8rag\nzKw2M9SkNW6pLgSCFgdWHjHRkapyXk8xrovupGy4joAmmZlFQ4VyLIDQjXQRzLnoGtsAR0By\nSxDB4gA4HB53KHQldX2ytOISiTCi0iQzsyioYFaNEMQ9tuI3OCKV6kTEMbP7SIHiPfaLiZQ1\nDlC04DmHkRfdQZVN1WZEYqF7XJk6IYlInezd1WzmPn4PjR8SbtQENlfQyYkk9ao1xtJo3+kZ\n0NAobmXTKmGtliOYu8+UguMBoBXJw+f5pEy7liJRmivotERaA3En0M9Odkwig/ThUAy3luCT\nbmX0iLSPUAUj4qJo2Et+tSxRfJcsGiqCRhLQVhEz+iQFBAy3Hp9Hd33ssZ0X1+XrOf5mFPGf\nkkhp8N2orCRm2KBFfgELPGWO7mRF5G5kO6Xma85WYmpel1CUtpNXE9Yli44KoX4LRSS8Ismh\nS4y/bXNt3rEAYAU8+1LZ8N6l4wpVPPEcSYRI/kkqkRBa1gPEOmZoPuX/GiqK/T0xg/wWunJy\nqHpdwVoRxEVe2trtzERq9rMt/qiKIRCp0SSmWoSs2DGXJe6P13viU0kqlNNtQ1E2nksWF7gD\nJgvRUORanxE9N5Ea69ePN8pTBKxdkq4vLQ0QDRMp1gmmqhrlDW8gjRavzuUXp6u08AsjwdNT\nE4ky4hdf/YusduyAtDVPa03pESmSHJidKC0kBmUHW0mZZHGFyi5OV5gRB/QSYcTJiYQWCNUs\noX2wfZbPTVwOhDi1AQkcZIBaKQxfqeSjiy+lKspoS11RnQb0Iv3VsxAJEkuqQOT4sisS4YBI\nzIFZcPYUQUQK47A0QSK5FjDpEgllYcz4NDkppHgOImWqSqHD35pHKiprig+3GXR2izYgCzA6\nwWagh5rCqy+jewXEhipK94MGeKhdf6N1Ys9NJInwC16orXhKj3MSwCgDfkn4qp4AyxAaNZhO\nXSFS2RgmeQm4DpEkHDrTxuW2FCFwDQ8+Z/2h5Qmq9qGGWgW0VSX0mJk3hhtOEjAjkXCPSWtY\nnpNca0v1MWkbijJDkqpajD6dCvBWEnLyq6Fr8P1TEQmxEaQ1BhTGuqxGJ25P9iE7OSJh/T4q\nWe+zvhtLiuPtgqj75yQSIpNSixbqO6tx924hi1LP8MMbB1vXqqKU1qMRPhsP8QQ1uqMyZRIh\nBAGaCZiESD3fiVawIrwjm8gFdxkbDln+RomQKzNDY72IepUfl07QFZ5k1c4v5kgiBb6C3rYN\nwi4ZCzxhmzErnwRGBGYNqzdMQlRRjaQDeKclUnIdRaSE0UUzjvdnOy0iHXexcLaFSGwm1/MB\nZomOgaSAliGenkVcRViFxdrTXx7bFNTd7WBQsNnUqD93x68PMDwWaRkpQApfUlTPCBFJclZG\nYeU1iORNCuKEkhVLMiqfgupfOL1RZEeLM6sbR6EKvGVuv3oKXeZn3xCMRrDC5TpOUvdxQiJB\nD+Phj8IoolrxfgKZ9g4jxUANtuSodEziAzFsEArnqYNzYvHWBY5CXZVI++jj8ylbpcyYhIla\nu0pbE0WKyccYXVibXKoHZeG+sBLoAbgeBxl+xpxe8e24QNzFifS4QmUGJgWo96PIzckPo1Bn\nrpv15aRFbx2py0DZxHDbRHowKAefBb8FQ1lJr+gMOK5PyoB3NiId1R2MSECAswSBT0GXZK9W\n2b2RDUWKHNAgEjZhIQ+WSP7kSjyAyyBlPcE1TkokYKHM+Z/7n7qyyRrNlJMpG4qUOVAarlDp\naOpymaIS54nkGxL0i9LjeBaAouvuI2WIBO5x7uFBqTYam4kawnFmGdmv8mqWLGmTj9HkZtZU\ngbfRUHQYsnaKjw1RSSLpucLZiATFAfcfdtYkSctOQgltgCnYAjmhXNNnlhMC+XmiIfOQHv5t\nLVV+1c4zxKVpRWsz932DnvMR6VEZSZnT9SFcy6ObCWqFTM0LNv2qGjm6YAXyTGP7WbyoCFCn\noAqzXoS0oyKoJfI+HZEWeO8E7mrrwvDu4RM4MjPDJCkeFeTRI8UjI9m8hs0kqrZwBb/BvwOh\n0T3QhwpfEMJ1s2ioiMsMrtolH0FyEImWcP4bmSkxVOSU7uJaWhmWyOEEy194VPJiOqHd6+ju\n6Vqam+u8RAJyQcEPQhT28ZRH6IiLHUWcPu6SRf6GTXJVBlRx6JzBXcASWJ5EbVyJSAoIusXg\nvv5yXOVVb5dluzgBXWHQ1CYJlb3h6Svp6t3lRZO26N4gWzvLhCpijeAKVxKpR74suy8UKfcU\neCQSGegEXIewas4nknD1brUZiTUiyemDWyzoEaEFdpkQDjbJV+CFdSLqJIiEFgD1QGgtwtXr\njgY8+hMjkrC+WGtcwZIPESFN8mgsEY1F0tt4tJ0c3j/KLWXvXcEc2Hm09502R4Izk3uxTJeU\nEmlZJCMNmk3tvh84/dJWlO0w+L7+UZLoOy1kjRRwMv1Is247WneXLB1VcCoFSSTFQA5ATJzG\n1k4mBm1FWQdnL1LyrlDymEZLs+vCJtVlBpFmPODztXfJ0lEFp+POBckSQz4bwJZz0xDiXQWw\nrX9s3TpxnqFRs2iZax8ga8LViMSbOGYqtWssl8IjTnOPKTKh9uWt6x88IklbQ5Pp7w8bkSo5\niUTKMaZnLJeHAKHFibTNfBY2kQrPYTItQlvgxHn0FETaNg5KUudgTAYCjS4+BhzxEWaOlGYG\nOoe2/oIaXApHG1cjUtqgHotmJksBIiQQ74H3Mcntv+MrGH69UJuJ1Oyyfef1iBQ3KKPDnAwy\nRBLvSbD7SEVrkobiF3NsX3khIsFH4TcGnZhJQmHZVNEr9PhY87xlZAkvQ6Rcf3QBIp3a9gyS\nzgH1opqJcR0iZTJegkgnnuDlELeH8/6dEVchUj786TFHUo8ppgrLRBB1DvucaZ6C0kx5AiKp\nr9pdccDogMBRoentUFAb9fpEOliUk9rafDKj3URONADcBRXlx1iej0h8b24/CB3deUKebFRL\nCMBqP71aIzfqdYjErdPm8USGSO0iTgSpYw28WsOMYs9LJO4o304DCSKJkPE8AAkg9hxZJROK\nsc9MpDZVzUMSVkD1JcfXnyxJdRs8IuGyPO0cqVVVC5EIUUkm7WHF2SdLKnGToBxsnmddtWvV\n1bhuRzitCWvbP9cL+3tAKW4qC2IMSBgiPec+UoOunkNAthk3KxTD/h5QipuycugFx1UwXbAR\nqWt3XmjG8B1FGmG/HuLzptJxU10zIYd3bUsE5GBYogqyillCmxqqnqYZ9h8ZZGvroAXeknEN\nhiExoxUuQSTodU+jUPGQalenGPZvyZqGA+gF6/tVbPKjijqJn5NIM72AsOqk7QmALNEdlZxX\nW5B1vvrhQaYMjiKhR85LEGnNMqb9oLOX6PSsBGmOutY4MbO2IE0BkaZZ9mjDWk5CcXoS6euX\nu30sy+8Xd3uXU9HwknYBhFU9KLQhuW+LjWDe8MOzzFbLCI45z0ak79vP0vzvj/sK/auYijFE\nCit5MJFI7itOpGSYEuLSWEo64l5ERyK9u3/j0PvN/fpevu8/y6jYYrqe1b4PAVFVn2Ky3fC3\nADJECkdlmeiue5CYXUWZjki31d+/77ebmAren1Zswt4Hw0PRIB5h/zyhW4i79l5u75rRLFQF\nnWsS5O2kRHL+wIFZJCbI7RsGeIs68SeVflTRTmQX7gf/GkqEBuW2JZFqCyAfh5pzjnTziPQt\nOCL1j6a9Vk6qutyIC8bXW4yqCW/281pdjydSqZY9FgUpMurmXLXb5kjv3+vP8irUEL7P3icS\nhRua4QrS89RncRMQqZDRZVJk1c24j6S0atcBHlt84mxBKtZaVSeehUjD50ilEm5C0ziikImm\nVjfLAzr7SB3g1bs3w2Pum44lkv4kfvSqHYtI7dXSk0hTqSAgmRIF8R1LDiUXUhPSFTosK4/d\nR2ISqbVajEh1QERqEETKi29gdEqqg57trAJnjrQ0F9OIVIcckejdHoV7Kh5/vtNznFU7Aa1d\nsgBCilIma7d0jsSWRB0Nont/qM+pFMDYR2rX2SULICSR4nyUs/Zu1syqHSE/1+LhRBpuwFlw\nutBuTKgR7iNR8y5si4f78XADzoLzEamXDWJosnh0cRMinW3p4QCjByRkOBuRztdDdl+fYOrJ\n6AiZfL6lhw1ky4kZuhLp78fbfQb09v6Xq4LllkN7Ud9i1u5TFxotOaeJnpHwrucC2XJiho5E\n+n7xVhO4R4QYRBrcix4Wz9udF53Gnx9Gd46qMRVAtpyaoSOR3t3tv8/7T19/buxDq/Q+cXQv\nuusfbUgWaKfJJkQfv1DoS3CPYUV38QwdiXRzn/vPn+zHKOixbl2mLjaLhxuSRSuRCMcvcHoI\nIDyGRVI9MZHCB0CKUspfcs4GyMokouElql1wtwh1fBAmApoebq0LwSrA6r7QHElmRCID4b99\nJi/zEmlBP60PJsMXTP5YAX4wJUcytAx950h/vu4/tcyR6Kh3LYx5F/+A/0w82t+F9CAIalB5\nvPMh+Ci6lzL7NyaAFwnihsPL7CO9eqt2L98qKkBhta4lG/nnoh3mCIY6ANURwcmn9Y7Mw3Rm\nASJFdT/NMN+TSMvf9/s+0u3tg72PxIIrBy5gYzgHdb5+QjIldhpNQiVvhKQsN6zV4hUCP0dq\nD+1iXbMM812JNFBF8Ww9pNV5/8D0dErcTVgI75M+cqo8IOHdsUR6rBQ8iuCCT1FVsfVn/NIk\nhs6yOfc0RCrJBb7cWhtq9S25izPVTXCcllfylcAnkR37nT/uuB+f48xrHj8AxudPN/Xk15MQ\nqdzjAp5aJZILPBBrA49I3hWRGis7JBLOKrcuSbhlYb0iurlPwM+JOg9VRqTH58CSbpZIe4xW\nkgjbsHXkFC/E+86CcJ/kwI9LvyjK3+ZHzHettw4T6FpvHvxoMCLlc7gMj4LdFGpst+3NahGp\nnDTgGafP9p69LGfUiquwRtNbvA1PQiR6/1RatVuORSvqXGdfotAhUnXkDb9lnkaPV+2gRAuZ\nowQDMKmiuzaehkj0lq3s+ZAkbts0zh1jEt4Q74pKmk0s4F3rsOrKi4+d46qsBUYkBZnoOYCs\nxKU5oCou3ZMOGcRfo47XZTSUitHbixP9rA6rTWWXLHoqZENx1YXmekBF/iK1tzwUhA6OKW2S\nJhKB0UNHW6uuIXTDX6/hKO2SRUuFpOMf82fpAiLdihN9JnIrQoIMmNICGoJPMgQvfltDa6s+\nRiLOxncDTk4kUmpIABhwCZfQLeF+fu4EH1k36K9F9/GLifH2eAhzsZsXhyRmPTa2qov+98Gp\nidQeQWyXhwiASBK9WnjCLNffMgrDKb9LOIAl0m64v/ad6fdbBpXmVo3+F9OKDVrPTaT9uv0U\ndYZCoSMqoOpEJFrugEhALhfVkEdTdrWJEQmx17VINO+uVT+LkorGKvey+wGeJ645dFyleiNS\n1mbW8ELOQc29jtQusS8cZYPPmOaEZrXGdqiVlDY9gCztLFoqJBwpIVJ8hqa5xM53xbxMRmHa\nPBe5ahdtGgWjTzQ+hQm4aBXjbXwXhQg1L1vITERqcyTvvsd2+aVeNgIxBSJxCtO6UOyKv3uf\nwcsLzndYKcdsH9hw+0hGJD9lS4V7XR/YeGKe4Usp9Ldd12sh9QvgwPtgDRgerD8IOmZ+34wW\nqxiR9FXc1fieA/bGMtZEehbAXWcAXNqtn4Ee7j2eTVpEiZSxj1BzKFtIzYuMEwm4DpHqtSPl\n9GHEOCWNcr63RW3AnOOYiywek9QKR/N7RGJk8+5nl4s7dDizGrNMqAKJSZ0+hsh2V3T3PncH\nn5Ic7pgh6Q62tAEPZwui3qA97IJ1BDwVkU4B3WVntx63cSmRXEwyzX6HGjkK2XJMoYu6L0ik\nkwwigpCayuXEuPBsxv7p8njyHBqsFKA9BStprR/DvByR5p3Lq0HKwwpVB7mRO7jUp8ab+wvW\nc4zr9fmIVBIw02Alf8xLYJpUXHYOv3XHN52qtZGxvOxbTFcbdq9GpJJTzTRYaRzzwkjj+fxG\nlpRIfSMtqV1DRrZnW7UrEokqW7Gn9Wxp15IpWCqYS1+oVsdMWfjA2xuNvGsv8mT7SIXqoq/6\nLCyvQ8ne742nnI7sybEM4EP2LCMzR+IJ6wbWea+03oCdaCAbwzx6Fm0VXo3lm5dMJJYpFNmY\nSWxRiseidDxKBfMHEZCVE0XKECL79skOihHAbBCTjYTpiIQ8gUN0I9XQZRfepKXUwtLRWOE8\n6xQA4ljvuv1UH1zSOsLV2iWIFObJv0KEJFt3DrDZ0uTbpbxXmNbgAXSffvTstjScI+FPQyS0\ne9BiEWUirbYEWog9PJlIJ5jWYAG+JAwm0tHqxxs6CoKXOIkRCUhK8VRlrwse4vEmO3gjywWH\nzJ99WoNFXI768Ouy6RLZGUnXnyNpDR19vG5bK6i9GwXM611zgpNPz0+jLVyrDBoAd1BESuoN\n1SQXIJLe0CHpdXlZLnzMNGjxmsyl1MLXIA2A5KAFTKSgdqCBqSi+/EmaqZZAJIuuihMELDWX\nv/8/rmkN5N6FN3exleAP3usn3tVPl7xVQs1Vzk4k8FzyVPDO1mTHpPXiPCJFjwIus3cVPQEs\nCOQrKKp6LVc5N5HmdzAovkgTrVcXdraYXeanRDoilYbsPj5yciKRUo8AarVoH4QOHwGztRd0\n5qEbD3QYsq/kdLCpSxYlFXIOpoXVstr+hRfOhcc0wmyt5Zx/AEciXrXLpzuuyjAiqQJaM4KS\nBexJXsYoRiQRKROg1CPUFvO0TOqSRUnFiYhUGwugh+bQPKQa0yhmhjHN62zyez6y/lEu96mJ\ndIIudreQ5n7JUtNS5iFBaGN9KS4gc6TCZxwUiFQr98mJlJZuiv7yANPvkmya79tiCJGtY9SL\n41DmgDGxiLE1UecmUjLETzidZlJAo0MQ8CvvLXZS8NuMKhaOgcNFHpGKrHZCZyfSnuNRZfPH\neiPR7le7BEki7YIXstwKkeT6o+chUpDPmJRBq1/tw5FcDW8tl+0DSzZv3WcU22kN5tcnkj+U\nc/K3YLJZmSY2BoEl5saw6zVDgcwoehyWD78nD7pYq68+RwozcAOEBipMOCvTQ2EWyq6HoOkA\nuQvw+aEsPeNAe+YMbfW1V+2iDLw5UhsVhGOJuYe3dTiCbOTXw9Z2C9QKcEjldiswf1CsrhuX\n9sL7SEEOB/8NH6SyppaQqpTph7f8RCa6U2SuhS7wM5LrLZa31b9g612GSNtbqMld+jRNsTRy\nugeyTG+qh0Kb5Yi0fThN612FSNy4bqKmkGalDnKPK0R3OX2A2ONU4jzxxIWIxMzbWJmSg4i0\nN/accGkNpuAYuClzme+xogX3HY1IjS4gOa3JFIF9NmIRs2ykNugtstu0KvM9TuwiafV1iFRf\n6c9UWGtlCvb72TiGv67ccUzqOf4lfxyDLsITJGFRlyxdVJQ9rvRtHxfAP9EZfuZdSeqi+6Ug\ncNgpurfiQkQqu+roBbF05zCTDJwOsCPWixKpvfMrVQ9H9qWIdORPamK4W7nlWKIn5gvu+hkv\nBvIyI2+0uyKR8gFSIBn/amCByM/t/wnvJN4y+ndqzkK+uU9RyCDPimz18GKXSxIJkJH4I7rf\nkVnY2abG9CfY2DFpRdHYUxQoEvPP0B25vGssfInLH6xgMCMH3SxdVcA1Edco2j9lJlcRkQjy\n2jZKihaR7JAEqkxBImYtFFkR/0WLcBZrRMoQKWwJdHVJTTWONxKTPVglBOsyhcruOGBUB4nK\nObI1RCnlqsKIFGeOhYSBgn+vr/YJEGldaXCBZ4xDplyyfzdgWcBRBFWnYQuVchRGK0Lr7Ult\njhTmLsvwajjTDtHLCVyzk4XPoE1JJNl5U7YdpIlUEIZnxUEkViVckkioCHy/gnXtHSBZv5Zw\nsuOpaOVKRP8dElf9jC45EAaJkyUSd7TKi3mGfSRcGSmHCOB28Hi2XsgEyL7WfUE2LQvoV1tB\nq1bRHZUpnzYvDVWXQaJCjlhPsoaArOu2Hu5cRCpFw/TBOIndUgPcnpAQba/SF89UgYVcslZE\nXxIPw9EdyIKTXJMmumoX6uH3U2093MmIlPu2ZY0Y0pl+SCaSf9UdhDaNbj8O7ZtAkRDd6QmA\n1HBayX0k7NBF00fN2yWLkIp8OzZVH5B3IwCBSIW3d7cFDTh4ZOXPw2r5iETq0n/Aw7CQVvqM\nkCKcnkVIRbaWmqoPbG+37AvWgWxs0OlbJNy4GQN2K1qIVHF9enzbwVkCPaJ1zZkRUsTTs6a2\n54cAACAASURBVAip0CES2N47i5z3SaFWY9ftTaRNf8Anjpyy3wiPrVSiIU7PR3cWwidnL0ik\nbMnkR6S4Nv1PsoalTHLwl/LYZggHkfjT5tKQJBmtUYUdf4itlMi7NpqVjHIl3ScjUq7qW6ov\nk5fk/gCRksBdP7I7tPJjqmp0JxetEatltaxGpGaq72aFjVoRfC4iZStSetWu8DlaiP+HMtjW\nobHHdq17xt5VBuUDd3hdQfTK0EdS4yvaiBRE+rlsDE2K4FjFrb5se5JcqpJYfjKQ5lh8snKr\ngxGGVt5Amu1EiKqCHaW6XjY8s4J4YhvrK9kYmhTRQUWiC5gkLRkXgKSMnDxsuTwaca0heLd3\nKK260CdPJLVR3icSEJ4bkSrKwKamNJTe5IExPK1Xbk5EC4Q9dDXiyTMJH9kF6QuZRWK7PZ7b\nZIb3TC6GIlX0JZL+DIbWtHFsvlDN8xudWjCsd3vGlTIUiUSzz6UDhHeXm5Bm9hWRPQZFET1L\nfxWjBhNY/EJq2ohIwWcLxtqg96QSCTS2eiyPQyRyKy3HW+jynQ1tnMOaVT0JfE0i9Vgmw4Pa\ntIGTpF3vUi1aGM+TozuARolOLJFEVwH9WSAgHqwvKbjFozH8PUOkNpqJxJbSvHoMdWbhHSEk\nucKeUxYQd95VrZX4HyZSzR6tPi1XR2pEqpTjkkRiV2Zrq2fCa5w1cJgf5a4I2x4N8e3AFadQ\ndFDnPupVq0wncM7VkRaRauUwIqUZG4gE5cdZEzpkEsSgQilPBvlZ3EJimEjuuIyJoTMnVclt\nKGO/EUkgXyU/ytuy7R8xDFYByqCMryW5uWJ1IxCp8shrgaTkFRO0s/RWwRxZtIjkggUnsmrg\n9UfIkUPiBQtlnR2AcPXscI6Q7l1bcFEi8boZOpEKT/OlybhEClRR5zJIQHnD3chhi6AoV+94\nJKosSDdLfxXpxgempondU+JgmfyI1qoliaY/LBlFJKaHCxbj9hLEXF1X+lWJFAvE9anU+Nq7\nlvJjWqvCYVy3jEmUy4vsFGSBfm2YEYkFeSJhxVK63mI4VEuYKl4gDhIktIZgyDBVECh7lQ0B\nPYMxAPck0vf77d/148W51/+UVFTkNcqN35iGltoc5mNVyYVg7VWGPcokk4ppwk7m1rPzHYn0\ndftn3PfN3fGqoqImr0luJvhBEemRteG51Zoq8UlMa5Vh1tpwKtjjLDqej7aVWcztSKRf7u37\n3+XX1z9O/XLvGipq8tqIlIgg1PjGIq6/l1VpLKs1zpEQ2dGtwuwlKM0DZKDp7Egk577Xy78o\nz900VFQENohNt9EX338xTd1kA2YKJUyktglXdKemERhhCYQIkp6ASP8uN+f9Iq6irJvfNj85\n07cKLduHXSbNpHcYicA5/isgUCZl+V+rUG+Hq31eGSednki/3OeyfPxcfkak4iRJnEiNXdy9\nXQvtnvsiTaRTtmXxDtdJCmb3Pzgi5cQjA1mJlU4g6exzpE93e/9c3m7/mPTnxf3RUKGErWbd\nUuBRzeptUFMhktLZg4aQEZcV7t4qFbqLruhgzpGmX7Vb/qwrdj/40FGhg7Wa904Q/Lo+JOk4\n+y5aXjZ5EBV5/0pN7/5tzTyCCVHSyfeRluW/Xy8/LHr7+FJToYGj6UDDJiGSfGznFQy1mtLs\njane0rf1eieYIPM+QO0sE6qomkA4LoOdI9FDO2TzbosCyN4Xa8JuMq4PaAgEKZIIROoIIxJs\nQNy5LiVH0lq1Q49hlHk1ZVwMRzr5Atb0lhTV50hdYUQqGOCPSZX1esQGenRH5MQ7ikbKZXdo\nHEVEB4hitWw0UwyWyRhFpM77SESoBA2QCxddQWOcIZUsjkY7EqkM1D5SX8xDJOdDQkUDdIgE\nODtuMoCTjuUGQSYt00yRVndYaFfSL2xH9TWLLVbgmISW6W/wQmc6wCxL0lM8DYxIBQPUzai4\nNcEKYmyH5MSWGCt9fCwxDEYk2IA+nWuNSHgr0JwjrWT7JwndU/Okiq5E+vvxdp8Bvb3/1VIh\nhj5OU/N/rBUQI3N5SSuMUmcVLk/BjkT6fvFWE/o+2DctpEa+hEgSTz9F7cAPd59h8tSRSO/u\n9t/96Pfy9efW98G+iSHTV0ee75K/yU7TCg5wwGck6zo16qDBryORbo8nKO747PxgXx0nDz5C\nXz0OqoOFqo8QgOvziaS0BrpJDQqCnAJqHZTXzvLIlxRYXAUbg4IPwXeV+AXYhqLckFQfIYD6\nmJNIsaGYM4cqjW0jkqews1rZBvWXBcpEQjl2ynF2HakSKdSw1Siimz4vkf7Nkf48Hp+Ybo6k\nG3yUtSroPOK6woBE1sznvWRBi2/fc8WBGM6DV1ZOik3YlOWBV2/V7uVbRQUT0kRCNYAie523\n3iComP0CB7FzX0kkF9xddM/IiO5oZeXEuGSNWVb8fb/vI93ePuT3kZrfycDUC5qyYBpAk0gP\nC3KSsyOE0oqLIJG8q//T/vljSEJNwJENNCOR9FS0TjdEXQvZAKrxZNHuTG2prbigNrXwbzRL\nmeT2X1CaIhloZZjUBExJJF62Iz/atcrtHRz1rCrFJdMAWAotezAPBlJOLgVECvKVB2Karmck\n0vF4SoNKlGuV2yBt1YrKkrCcTWpQGyH31ikVFaUaMtGvJNHDtU9HJG9aLWxaJZIALPGXXt3x\naVYBIwATRvr86wgiYXVX+SbZ93SbI33/cu51fT+dbIPTiLT94/pAtvKT5i239+b5YdzOpkOP\nyO+wDvtAOUvLehUgUpfOhaOsgUjrH5Z4O5SKgSJsY5BjusB9EEGuE1eItF7jUwbZDGW7irq8\ndOiqB1ICJit4aWURccEXtnO422cf6d39/sem37fXh0q6oLoKdNrCrkk9f55KMQuK7e1FMBLx\nEi4nvteEUjr/O8Xu/h7zlldpAntGg8HWBiKt78P/ur18DScSuuzQ096HF6Wpo29K7Q0uTqkT\nCS09TQnQXa27r0nuGrNVwLKlJeZYf/h+fR09R8JmgZazyxF85AClOgafyG6YeGDKtY2liDXf\n2BA/W4OVYpjn+D1rdGwg0ovbjvm8vI4g0u4FKEfy5FKIFGiKf06lpxv4/JgFv4u5cqmcMrr7\n47DiOsMJwauMBiL9dr/Wn77ca3ci+W6GcSRfbDrIlJYq0CM9mLAhZkEcq9mIcFdSTgnet5qb\na4oyFt2JtLzv7fxHeFzGeG3mihEbEcn3pYqmmgKoGph1g2LgyiDMeltUjHBapDFFgco9T/yW\nR38iLZ9v209fvzoTyS8tuuSZhOUBbVTYg+LvNkHCEMkjjEuLJe3i4CJh9NmktOo9R1KEEpGi\nKvJWrQotOohIOLXOp0U9DvQHH+VoDhIfV/+ytI6CKlTsvWqnCDUieVVUr65w6jElkYIlA4pg\ntT/yF2gJjYr++AyZyelCjlYR+u4j3fH9/vPM+O29+Jxem4pSEtocaQlGoUqmvZWUu+6c+uie\nS0ad4XhyNSMrkEjgWIi1Ibu3MEd42Eikr9tavlvlb/DxVeSSkAaXvIpsrr2VBu0VYr0EuY8U\nilV3P3hEelyZRMrIm4RJjUR6db9+xqLvd/eWS85BwSp4YkPvXGutEMSOA2iEehiOIzi6awHy\n++AzoiFAcl5RtJ4CbsviebWENZCK8Au6d2EPpBK/z0sWwLa4piG/UzyUtlQ8LaMZIkQkmgP1\ne/nJbT3d8N2LSP7VhXc4Q7biKu1YD/0UIz6ys1NavFekGtu0je1B39sUktaaENrIymWBjsZT\nDGwk0rt7/XmPyd/X8uu1WlRAn3szl0pp83Vdq6ZyK8Wn1ERBnj7QuIFgnc6ysnelawHqu1hu\n8MtczcK7Xg5KWjSPhCDL9oqt8kvxm1QAn7ujXiv+XhJYe/3Ckm0lp/ZQ7uLLpPXWcpZoTc+a\nxMLEwHeh4DZ0LvE6dgb7HxXzUKkKWf77ecPW62+6GLyK9PP0DSO5bqkisGxFtpXcweUJiNRU\nyLxAjTGpiZ2kfaSoUrZZZ/QtnPjx47Ya2olIKqh3Mz2IlIWL/lfT87bJaQOSXCF1Kk0BpWqK\nibRe4Sxpifd+8qpE2vogJJF0OtdtKHIoyayVRkqWZyVSOW4P7vtvcM1CRNr+ogcxLCDgMOpu\n2Aa6IJZV4Sy/emQM65L0ea83T0KkplZ00zy8sTW4RFLdbgNcrGxnUCleUviEfixo/wNTHVbt\nxhBpT7IypMoUjGnUQcNFkgcfeo32Z3KFIToFmfoZtRIAj29UiOTbUw1cEuP3SZU+kRSBUoHa\nR6LoQwbDCXvLLtQlUApOecDqCI7O4kQQKEgTyrnjCqsEM1UrBU68/47nUSuR3kS3j0AV0qKz\nu3TEgRDbSL1nHDl9pGGm6ciV/Ni0Dyyxs6MVkbfaDiohc2BFw1mUhnI1p8PONfMC0oTVsAEr\nWwYZc7T57BNJXFGGSCTCc2ad5GifBD/L8QIUUegRCRS/N1NVL+SO9PhbFcOJpKApSyQlMIrQ\nSKTvt9fKnzpiQTzCrsw5t4lltaU4RNpFd/WChlG3Ua2GJniOpIb+RBq3akcQdowIWSLtjs4g\nEhQHbPsV7vhg6eUIGVXaEWZ2i09GuHZXFDZfdMfkZ6gM1c9PpOOar6Bk0KoL8/JG45nHolAs\nu1y0+oW3StSpHG/xSQtXsP1Y+V2CyqEXoZFISuCpgKs6IE++grIcC6VmVisCF1pSf2rrpYU4\n0Cu4RJrbLdbN6vYuj0+97xdijV+HSLmyh0TKVlDG1aGdOqi7D5SsP6KGQgy0ozJxoB7UWIiu\nKod9D+PxG9g8VJo3E+nP24/GN9FXNvCIlMkZVVK2guD8SB9WJZLGpGM4RnYOXjj3+FWghluJ\n9PqIXfu//CSXJcckXheJreEakZr8RpJII+MpHyM7h/hBoxmI9Nu93p8yP94DLgJZImGDCOhp\nY6xBlTlSagRlKxFrRF3SwHgqhDyRcBXqH/DybGgfHxuJ9PPOBoXWESVSSzeMJ5JfCcCqXWQE\nrc7EwqB5JlvSRILjifSDI5U7fpDoYRqJtC/6diZSdvCQdhK81PI+UkZsleJOsoZnmmwJNxcg\nDqi1R+QdMmlfAG+zpZFIL+uI9OlemswoqIC+hrsf4MN2S3SkIoUfm5wiJkxFpHLZiQWGSpZy\nKyWQ3JRRZo705+ZE39pQIxKcSGcirSHVJ1KpsCrd9hxE2gdbOBZfSiwDMkT30kdujQRqcSAN\njURa3tZzDX3eIhR+O4c/cHC06PFbNpluADQU5b0/JSKB/Vdz5NFKpPs+knv7j29BXUXu23kc\ngow1WPd+yaYqJSCrVZjOtntfZrrLYFIax4GxHVALzV1MM5FUMCORREO8cJEvm2qpJOAoFqbR\n0sDMXPk4REoNAbixL3xz9wsLBnTJIqxiQIQi3pevUXr5LKbbk06KtpYQJBJQS7gV8apGZO2f\nk0hRFXXwNBXuVh8O2L+flEqNHXk2u1Bt4/0ibwm2A20l0vttyGMUwSsT2IOFQEW3YT1fVU6h\noVgIW7u3DUlp7v4nMLKWZD7PJGTofOB9gueR6mVtX2MFZ67VvLUUGHqOmRDicGxztQoAvuk9\nAwYtwdd+I5Gc7P4RpAKbNj9lz7QWpatPldRpiEiRSOWlGYXkZaR0959n/ld/PKacnaEx0E7P\nT1SBTZsnEvw1zUMTIYhxEJli2RbDqdPg0djmbvvqY/eATB3diPQ+/i1CtbLmvicSKXKSem78\ncLOLhoMcgpV9sfE/LOmMlvLRa460vL7KPtIHqMAlrgxIrUSKRwwhIh0cyqadt5+PSjjx2MlH\nt1W7PxMsNpTLmm3fpg5Uhkg7PYuJ55lHRAhr8JJEQtd+I5E+Jli1q5U1RxiJXfm2OVKcdpgT\nMpsvrMFzEUm6d2okkvCpb0hFJWW9PnTWWCVW7by00V0HufUMfo8SPoTlXQWgORDLx8uNRBq8\naoesj1HPV5AfJ1flUbaypHSLeqfu1HBbJxGWyM/yMXbVbtJ1IkYLdVhSyIa40b1FhVwJVJt2\nq2zBKUnrYsPHyHd/zxmVMzmhvaRQWXSZrBZ1jVon9Q77RxcxItuyuKGLDX0PopVPlx7fDR4m\nc2YakQ7hj8FoPd309ETy3gtCli8be4X7+0t474vaxm4+thvII6A5dIm0bI+b3xWI6GgN7XSA\nI5L3jyadE3uVvC34juwC+7gq0RkVzMx+hd90BJcqjvVviUX0/VPvKgwXdcJPTiRvwsiSTstV\nokf4HZFImxvJrDYUzcxryK6Lh9EHkN87m8EtAPwsidSaPPT9oXU5AprGfuykRHIN3TgrasAT\nicjTLbVMD1wuG62y4OOFMZH2K7cAe0+SfiE4wAUpNvHbLAmVq6a2LcuYORI4J6kLjZYm1IhE\naZNYbmM1ConxZLjw10j08SFbc9iTtANBaI9JW0s192PnJFJyRYg8wg+ckoLO2nfkjVg5BsgM\nbL6MooXtRNr7QyEHwtjhh6INnSuoty3L39c3tgVIFem3tNHYqzCWs6FX7YhiM3cu5DZ2W4mE\nPuwpx/3QomKqyLhZiLR89/xrFNv4RxkH/ZpS2DHlj8hhZCPgTlLBQcqM8Nf4w6hrx9ax1DJL\naBAv3piASMKnW8oR7lbxFJVhTU30YILsqp0k0oB1SS3Mrdrh+wVH6xEx8pCa23MlApqz/HY3\nvg04Fd6Xbr+SJc7kqSuCBcgJKe5/AhgH7iMRqlu6B+HJm2fV7oNvQ1kF8B2n1Iwup79TTzYs\ntQasyPoWfzSIJW/sPtJGoxfZx5IqROIEA2QfHeHUsvPugZg4ACAC62hScyRZcIhULTGRewOc\nOna/ieI8Ki7SJeB709MRad+PDotXXp1uKGVPX4hXRBZkI06IUxt/gLRmwhOuiqyKnULxmZK9\nxAlrKk1KfuqggpZRBFrymtUXpQOAKUF4TqeVSB8vXU82BHGdiz5fQNYUqyLPMh6RGjtiiEFT\nuuNFBpwySM/pNBKp81uENhdLyAH15dA3OYG0r/JoHEV8/5ybSN71stj2WXoQqfNbhGpEAg6y\nFv2x9CV/jb3Fw7xdmUTWPMHS1CSXwsGiDnMkpaYtE2lJIrtCOMQmEsdxRR0s6i1gYo8h1/MQ\nCZp1Z1MzFGx46/wWIW+OVFq1S2O7UmQn5xBZeRx/j5gDlWPUVOVpiIRvuUYifd36vkXovvbt\ngD8Cuk0N0+xFZ5OO9WF5XH/3Swn67rCpypPMkY4rMjFD/vpz9+eR9pPfmW+B7wrG9TnoJeF2\n+cF2hEM/yardgi/kCYkU3tPviesD+ge9RPx9LiLNtPJRQKuRjOd0KNLpWQRV1Ig0IZj+Hp/d\nSGUcgk/h1r3Rddg0IkkC9mcWkRIvgNzCLceEccoKGYquE7nTEWlb+57QbbL+zGlRcNkks4rh\nwC+fHX0D3zMSyU3qNlm+MEYMnBesI9KTTP6JaCMSea7NUEHPIqtCemlDCKWGoz8+VRAWJ9oO\n8PaslYYm6NV6LUSirv4OIlK1JmfkSRWioUQkrDj5Os4o96q3hgFw2wnsgIY5EhhYL6UyPwuR\nOrSdbEzuN2WuDXeNbv2tG5EC9bSs/aJQtqbdWfy8lTJ3JJILoaEir3rp0HgI98LzOT0Inl/F\n2NN2XqFiOU+vtbTMARhMxsUdfdP+aXRPcjEU0bPc8fc2jkgqUhMtNbrS+Jz0i8CQtDPo8RPa\n1Da0EMmF93JafoFags9jcJ+TSMv3m3v9ukvoHNpJBF2oVkX1D2QrEKsYfVftuhCpXqRSbfO7\nTi9MTiO7OYi0LP85999yRiKJOCrXDFS+riuZLXOk9epHpSwdxSZpCj6XILxD2tOXSMvXq3v7\nPiORGvO3mSE6+ZJA26odahytVlaxUlqJBFTobKt2H+72p5VIzF2ZVh61Fp1PJNnJV5CRWSQ+\ncdfHYO4/Lsc1SRbda9+HBrU0WNaqyfaRPl/qjVDpfBeq17RGZjJEagncdSZfXWdWntrQXtAA\nGpGSkrQEn3CtyK+PNVf8r0YicaxoC32kiKTkuBTz0ocFuxMpVF8ekqqhlEuujx9bqhp8bLQi\nbwSR2lQIOTUNW0MJPOCiYDe+SgJ/EKtJZqEqRKq4LsSgILoTrepqn2NEQsGbIrc0j9KQRCCS\nn274OFsbdCqL34daoCQIqxiP7dV4TYKIH/ADziFEetR6rVuqtoxWLIWVC8VDQ2d+S80Tytnj\nElAmSSTlZyIS8djDgMi+UpuIHcSyALpBwfYmwin2hwB9O0R4xBQjFX6lc6TojshSlz8jkRpU\nCMVH9DasEan0ZVUAw5xgvoPKvmUh8q8sM7oPQWbVrhQ31hJAyS81R1pE+rGyD8GDYrnuES0D\nhvKubk5JGimPpyxQ34KRRPLMB99wIUikWgOdkkhiGjKU+KkwyMWKrltrGWiStTcPhxQVfWAW\njdWOcaG2Oy7pTMG7gpmjO0IbYsJBAr/K/n683WdAb++Vt0qqt0qxGpN+O/giV5+V8epob2Aj\nh9Ors4jk81kKg7Z1vdqDDEAOIWJmdyTS94u3mvCqogKN8mwlvIff1fq4ygQqELBb0ZFIVDUo\nuSNoFNdeOibVFr+XMtN41uhmuePd3f77vP/09efm3jVUoMElUlFmoWVgfWwiuaZwcITXK+Co\nvTWEIAuQ37HVznLHzX3uP3+6m4YKPPIu5bhEKrVMhUjEtdg1RKN3qcOiMA34zXR0LIOtUc7y\nyOdyv4ipwCPnUsc6A2M5Gje19Zeatitjd9CVNTKMPBvWetiGo6ch0lQjUs6ldk+nelyFCjBl\nvF8Ib3OI7k+LYFdsdAfRd4705/6k+QRzpIpixoHHSnCWW+jmDCrRfU50Gfrc2uctT0Wk5dVb\ntXsp/oGy0URiTFyrGcP3kzSUsFWENwlU875+vr0N56O7lZ5EWv6+3/eRbm8fo/eRaop1hgmv\nvVuIxFyk2nIv3kywfrKRqcW7KmOSlciuRBJTodiVovTn8hVzhrMjkvDgUM/iPaxNRzhZUxo6\nWN0F96mmGQK7cxJJs+rYsusMdMh0ZZOIKxOwEYeEMODMm0BceYnumCz8Rh0f1y0nJZKqGVod\nY7pQh7QhKG7zBCnUALxSFLJmIfo4xkrwlGmtB52AMRmckEizrlolzRx+4M3wqzRalmgIWmJP\n60okusZqlpic1NB4OpydSNvmKX11QLtJQFdx6YsHgZzeVZpIyYZWnUgclcjxmUYkshU9cW4i\neSya7qxM0u6PyUh9ShL5FPgr3/Jg1W5btlCIAModVSKzrmTWQGTFCYnk+ZKLft9T0Dp9DaTt\n7sC/clDPGQ1FzV1AsI+EOMSh4cFA7dR0jCdSsZ5OSaS9U10TR41Q9zVKo3AXHwAVhwtTciYx\nothIugXH/XsdsJvBBINtdrRUHeoMGE0i2xYxFUFknxKpKgPfKI3L4ZEKnN40KNRa60eZU6oD\ntmVAG9VkNfO5bTCvqD8nkYJkMZEQ7kEgEsWeek6UOE6DszwaXQ3Qo9wu9+A6ypQR89omJtbq\n6tREgudIQJHTlWmkmlz1IZwFbHekM1DXIrk+xnYtX6GDvqnb3n2ltS02vDiRDn876jgpMuBm\nWM+Dq49Eh+gT77hdZY5PIAeXEG2BKzjjO76ZbcvHiFRMCfTdwTjlMo+f4nq3DJFoRh7HcRbP\n+2q+RlDS4CK8Tj6KqZONVcwqP11pIzMxIX9BRaU9zk4kMLdLL1yhYPQS38srhIchfq4aTyIl\nqKXXbkNAQJfHCrr/jTvucirbB7lqlRdVXHLVrprfD9/biARUX+i3tRZ226gYdN9V3w89E9eI\nnYnkm6VPJF8xU0S1pcoqLrePRBTT+BfpgZlOJL4o/Ig9t2Z0xxYYmkjltBJeRsPRhwR91npv\nrPG8wvZYRW1cfwIiRX2mmNzUgcC0u89t0Z03PCHJUWdd1Nd2O0iYPqkIjFIiCqM7bJRA5GdE\nikXsqwzya0jQ4m+WSMfd51K9z87FTbnUPo0W2fKWFKa2bSuTohYgOp5WnUYkSMAWTz2k5fsq\n3kYm8Mx4fUTypuUO1e7JiSKkqX0DPVib+JhY73hqCdpV1DNrZ+muYvPerLd6X1GbHNy2KkRd\nHqejRRC04iCWrGU7gqwuXOq0Z4RbKeC5zt46ZRVlGV2y9FZx1CrsTXuIz9EWZUKv2gF50Spd\neqnZF6xKq6IbY4sTpOhOkbtdWkpyDSLFFYCbuCThWVFmXjZ2Hyn+hYJwSlIMVPd4tpDwemgg\nEjMfrF83i66K9K06lVpFzG8KQSHZxuChH8XzYv44q7ACzUO39yyQy4vd0aOo186iqiJYWAgE\nlAekMpGyAjZSZMYr2G+kJhJlIq1XaHtnEBQmUNlIgaZqT25EChOHz0uXa9X5qQo8yjApLzv7\nlZRXF+067umi4iCIs7nUsKTBb7fMiLSldeF9/7ggZFsAqDg+nUiZTHJuXfBMBySZgkeSZij0\nSDZHWtPCRKrngULC2ACYY7nQbrck/k6QSDUW744hH1TRkZZ76OkDWJBMTV2ASIwuJViSLlhQ\niaDAr46hDpWHjMLmcqhDf5qP39LaMyxtPhsJ5BcxECRRU+cnUmnbtSK+FPxlZVaJFETeQWLl\nmus8CGHUxdwOf2Xo9O8CG6gCk61AnnYWVRVufT8bXXwxT1ZkeZriDj6FNvbw8W5rzXdl3jWb\nJii3wMCcTgC5RMr3lKy2ugCR6P7T1qCZil43s3KvrhPy8a5UKQJZienjs5h6z/diR+W30rK8\n4/6URGLKZ2sBX6qzbGOjr0IYU6wgrGD4MTZLsZjco7xYMMU+KZHEHfKgZjwtkFTjClvBvcFx\nOGQHhktmRJpBhXCI5NW+zNk6WMs27AnJawOjx8BVB3rgQqWi4pmIVDslKmMhRU5Q+15G2bbe\npE1CJEqPQTlqeFQm4TiwHJ5mjlQ5/iNUuzQ5mW5MNvrgbD2rAt1jMCuzmktl6QVQi9BzRiIV\nk0iNAUQ5cHJhIvXZjuKgUlBeZQ4rbXwCGtMNnI9I5TaTct1crJZND1a2OJF0gpl2fToDOwAA\nIABJREFUyDYKvPs0DChCPxuRsMGAJwfpvaBk8TkSceu5F6R7t+DVNYMLjLP+uYiE79F9IlVN\nKoiBFLJdY+iAhHnSuxjZUetwDQaW5ORiZ1yVSC1zJAIn9qSNEUbif20nxMbRaClaXVkB8q5B\npmpDT/DE/HWJVG6zwrcUTuxypEN10KnGxi+oOWBtK7j4Anp4YAY+jBKg/laoNi46R1qqUUal\nY8SWQPaZ/pINY9cQMNqbt4KhU1XetZZrLJEwzXNKIrWKZcTqwgOSL0/y9Qr8BwAwgYvoVjCq\nMaTDASauuY8UpyUfQCAWQPiYT3wnxC+1orIsxfiqxlYwZeoxmEcYnJ1IxD1zHidkD55612Vb\nzsAQCbHRH4qm2FMhkoJDI4k0NOol4PREoqYf3ijpbqP/v5TRuxYS8CLX1YLsKk3i0PiKbHzu\nh/ZuIJnmZYg5OZEmiaFpSJ5180alQq7ozklRyOaKvf/9W99s9ECRTyk/2AhJbIqQdbOoqTgl\nke7w1wQxu47xAlZ2GYw/BywMEbFv4QOBUkrp8EAo/myKkHWzqKkQJ1L3P+HgUGrjJYnS0T56\nAZxnCcrp8dXes6cT0tUWIetm0VMhOwnuNrU9zMapfDi6Rzzv6qVqMp/gQD2IRO/SxIgUdiw0\n5bpZ9FTIuD7ubz3IIWhy7CYFsFCeRncNVTEVkTh/lUaKSKtLPReRJIIx6DSQbohHbfJ4XqQT\nMBG6EZk5Uj7TSiPWPEXEHZ5tsUFQm08k7RCPR6T01fjCRMKXWmLVrpYJsZIpoSsR8pSrdpLK\nnEckbSuoCrYOOhySxA0kjMPN+0gFAcf+LysibINbxRiRuMr2DjDp+BV0Eju9nUV7kEfLPx2K\nBeATSQDMxj8/kZo7oWBmFAhUnSaVzAbfQBmOQuOPaDShOKRuHcaYIvJG+7MTSaJr9msueOxG\npqSwy5ciG6hMPcjdD5XShH91sDN4LnV6IhHTgzKSmhOcggDN4lx5NQPUfjUiFfdqRtFoO27C\nUH1WIsk+dRfXnOAUJGGFJxtWkCmT+gJIT2wxdGFUHkGjhd/q5yQStPMjpjuaKDVKi+7rqlCJ\nFjkiSa4vjJ5hrUPO6PeahGjqqk5KpO0qTiSZrYhDQGLgNhTlh6RsmcS8f/ian/cHcMZYAVVl\nmy+dkkhekaUDnrq8qjsHbsogkn4QlyroPEJtY35hmqSqHuxInpxIsp1rtTIR+kI3jZ12+70y\n1e56rqL7COWi/50B91TPTSThzrROpPLXqYjESR34aSSj70k/9SEQMqE8KisrD+7h5881R9L6\ng1s1IiF6LaC/D1LvC1adPChVFFvY1hWzcKxvDxuQACK1DMynJJLT22eo9EocIqUpOkZRhc3d\naEDq7NOVvTRV1dHd+4ZvzjmJtLeDvOZKzBXd82kGOAgE0JiokEOI9LBjTC1ptNAZiaTb8A0v\ni98ELCUudkU+inFJqh7tOke1aLSQEYmGzMppegaojzHVyWR0z8lZqI7FOkUzTw8j30BGJCqA\nyXvkIJ0cBqMGW1VEx2o51ylUL5MMbjvOSKS5ZiGpOZ3MQ6nRsaW2JAOfd4/uTQbMM7itOCeR\npqrG2EGaHQbX2UpHbZSnY4uqcypFiSQmSQqnJNJcA7swkbCuLxu1kfqmCpEy3wkSaWxwD+Kk\nRJoJ0kRCZhYmElJrXbXLapUbRoxI86gQhOgcCe8juDkSPNIkD2ChtVZVbwrrizJ8GJHmUSEI\n0VU7ApEwakCXT3NSiVRQ7fb/wJgk9iCId50DRiQJpE/Y8lcaojtFLVZa6obkLh4ab9wm4+BS\n+IXYiDTZctMPjEizQbSzBQkCfdiq1fPs423DLvqiUUekcC4nMSKJo7GJRTvbKpH2t3ytWr3h\ng2RCQBL/1WH7qORAWziYjUN3GJGEIcCDw7nb6wEaBQ6P9o3d36BwDCh49RFJAB4d4hoLNV9U\nd4cRSRhi8YuMw8RUefywXWNjs18kUuPli/B+aN0ESREpfk/mNDAiyUIsfhFjZBy8eT/Gxu73\ncikAiicZAod33nSpqUSO8CfgO8OIJAu5iYCUoFBgMIvhEgn4Lkv7h56Av3y4Y7iczUXOTSTZ\n9zVICJuWSJA8HpHAL7Mk8fdmWx8vcdH/Q8d4Wp2ZSLLrW0LCHmKkIjteA4EOHd79Icmlv5dK\nkbEsW2gnNq/x4kRPlu7qA7YtT00kQtpuwtb3h7Y3LNeg3KEg/34sdsP3YikYFBfy9c328AWt\n+2jXKh7SiDb8xEQSDX4EhQm9HYfrfDkCOvAKj0xLsRTgHKliqYyfQ5yB2SUEfG9mRJIWJiiJ\n4xlZ9ckRg/y9JCaUlP1EB5Ge46VsSbwnpC+6I5IypJPx/cu51z+rkKIUI5KG+mgfiU2klOKU\nMBTdPcBTPZ9G++/+f0nMSaTv2/2gyNtDSDuR5pwjTUykNE20CoAmEkPnrnKpNT424Wa7Nxo9\nB5He3e9/bPp9e70LkSCSQEChcDRZlN9U3bgVsm1eEcZ6LkmyONQAQvY3iYR+b6C2SzvlHOn2\nyPh1e/mSIRJzFhHkXw5TxP4kUqcJQ0lzdeq/BByCzip4gVOtLHgioVPWE3op9M4NTblqt9nz\n/foqRaRUBS2nUv0PfoMoahCJNl2BPNvfXUG7PSEAQkisLX4Goto6r1KFTbiP9OK+t59eVYhE\n6D7g1auTg1Yc0mSqJgs980EKPHa2arL8CI8HmQiiI5F+u1/rT1/uVYVIyLzHtiNT3QxHUgCM\nIxK140a2UWWxQSiEjkxiNm5HIi3vu4l/KtY2FQUfiPCING4OVAGxOAiflh+ykZXnUAkVTkey\nG7cnkZbPt+2nr1/jiOTPUjnatCa27chZljnqg3HVjMQGoLzfLf4cTVIyqOq4swvclUi6KjhE\nYvQ/E0+s4OLkC4l4ecqg0ZdRyW1HqtY7v3EvRCTaEtMjfGCcLp2YSD41kmW5ZoldQTe6cSwJ\nsz85kZB90hYN87qwqYm0oXCwroUa/VhFbpwGCniqzkekkftI3l4jv8qm5pFvY+QbDcFa3ziP\n9RojXrv4B/i4QuYhkvMhoaKoPX1hASHzMiziQcIvW0ykIAFD6qTlFgoUzrFqN5OKlprnRoXd\nAEygHfBNg1BRCC5jtws6wT7SVCraYgF2TpIWbgQWrjOEBwqX8E6Ry89alhv0SmxSDe7cnpdI\nDWzost7AXQuBps7xHGAuIvnXFjZohttV2V2J9Pfj7fFI0vtfngqRt4rsnTO70foQiaei5pAT\nzJGAR8W3+6TTMISrdCTS94u3mvDKUNE4eD8eTA7iHKawJiIhlTJ1eIOQeCXmsm5TRpzQWEph\nYWQaIPjdkUjv7vbf5/2nrz83905X0dRdNa55S1lysBmlgk+kigk8rNa78LPl4BLawgKROqza\nEoFpi45EurnP/edPdyOraOuuolkDS8YhjNmtbzQqtkhmHxWpgZaNcbAjLrpLruX80T3IGocM\nwtCMQDoSKYyM6eNkW0AVqm1uKOYByd1diincEeZw50iJWHC+RHbadEjffseaCxDJs2L7I2UE\nmwgvU1mIpd1zRvdSGoZYKoaOSNJEYsFFbgcm2a4Cq3alz0JlaNnJ2xHaieRzYbcUaxShlnZL\nK504r6I6EunfHOnP1/2nznOk9BzDoBi8TqTATP4+Eig1EUbumdwxmrKJVEnoosi2TVqassY8\n+Ou5Vu2WV2/V7uW7lDJDJFYfHa4yDN22272wMiAJMz3qRFyshOK0/v9AKlpSuQWINhGSBzEJ\nIiKIPp9rH+n9vo90e/vouI8UM2jkmpCrWaBOJHC/liLHG5XWT4+OCr0AXkhHCxnIRKoMnfz6\n70qkESqOqplgVbVOZI3QMyCS/wlR2Taaxm/Zpu0j1ZSQQgaK4wfBgBGJKwoUmVvM0itiTbZK\n6HkQJo7yaMri2ND7RtBkkixCXxDuxZfEGZEKogCR7ImlKhRoHK+pe3fi4vcCVk1TlbWVl6T6\nWHUiz5HqsrtkGakiXzXwNxrBVRkdYs54/4erMDOE82W2d1vUBwDLCtn2PAGRclUDO1Wrq5HR\naQQMlpX15mC8vF3Hf8Y+EkZqlyxjVWSqZhYi9VDnrVku4rRtqLLuta2GZyBSRclYIrXpQx+5\nPq7ygaQRaXlqIs0xR2qKi7DDi7K/4qssZnGzYRPsaTzw1ESaYdWuywRDm0iZikRUbbEI9eME\nPdoK+WoqhmB6lglVPPR030cCtHlXTk5MXi6RCCerMf0RUNQCFdAH3FRbC8vV5yaSIiY53R8k\nISpp2x5KNWYmpakG5+15ldT3mGH5thTTMUTTs0yoQhfkfUKWkuguZQ/ekwsSonvuM1D54tdJ\nIbU+kY7VzvXXrKqLE4nto43RXZ8VC4oWQonwnlyQAWjFEukwopK6E5GWlUjF3ujSROLGJs1z\n2B4xx5K1U6gXIBUCXI6LD7iiiL+xGKNeu78KHyArars2kZjCmtunE5EyE4wFYhdBZuZeNCPR\n+fC8cH6BMs2FI2Ixtfaq3RbTgecUk6QM6dqQUcF153YaCBCJ/8bRZs27BWhJQEoHPJaOKtU+\nCuBo9ziuoeSTzueqEUmXSGArtnqze/zxJk7O6N4goXG/93gTJ0f/g4coFisOS9DYaETSyJed\npoAf401oPoXcPCT5PsTTyTRlKzo2mz+AicK5sBlsjkTP57ANmVXR1LCEd4nABjWpJ5M4xxhe\nIbaRCFf/bpvExM/ttmKbqR1SbdVOL1++020jkgvvpLyb8uYBkaYTqARm/RPmZtsEaf9H0hOt\n89etsH0kqnpvREK8qgPoi9tCuyYiud1FuOpZOkFjWfVP68ectzhIUeaxKD/LxYu8GJFEImW/\nDiuNKhvUpPlZEriz/BbITlFIczN3HD2o5AK2h/OheXTH2ULCvEQSWr8JiFSxB/4eagXaOz1K\nQQeQOopAAPXIrKfCWvn38KFOpNA7wq4KCM2jO84WEmYjUnyYRZJI1eqEuZtmo3Lc84560lg0\n2gm0NzSVsZcTteUVpqkRiepMpyeS5wvUTqSi3g+6S9MkwBEBIpEtw49HqWisNqGeZxh2+xE9\nQsS6OpFoncz5iXRc5Yh0zI6YIuPmqctpPMkQh5HL4QR5yWIVloP2815+L1o9A3Ho9pq21JUw\nXrBHwlRE8n1B0C+i+TpZYtyd1UxriLFg0UcBCpKViZQJe0XDSbyz+0PQ0VGKWXMlImlEKvwT\nBqRZy95d0jVVRBe73IpVy2YV2aiCai8ca65WsjlBKCf7quUuWfRUhEQS7ew2yc0C6y/4jMMO\nmviS6DJXED0Pv04zQ2WL3KYGPjbYNHz47ESK12LmW4LChBBx2JERlAvlC6IrRKo7Jt/xvDZx\nwKccuY0saHxYsSy7SxZJFZE/Tb+Cu5OkYOQWmHoBapKkNNeh7xgjsqLy17NGhvufUuUK0EBr\nQDodkQB/mnAU8oCchyxR/J6Rw51CNU0suAJcck1/704krX73dETSMEGTikgi1eJ3tg859pNN\nbXqXyGkd+CkpiJcJzJLKkGn9kxFpDwwEjdgmMTpswja+K8+D+T5EOCORV8zM7kDn385rk+QC\nG+8ikBqizkgkJ/vwySZTaaqF9xjGlg/q0W2sfrJRqPzRnStXq5WkQpxTEmn7J6gru2LWPFBR\nGr+6ahB+jRHdHg411kDWU1kHB6TjBpFokSlg9BzJHXwS05WTKdIFyjzbAViC6U3FPIULmVFE\nqxjPSyTw5TTNurJEqpjTE+ksObrDuTCJFBA8ot3+l7CNSCyUVFRm5UWxYGs67xuOqw4Dzroh\nfUG8eVQclVAk0yqG85Y+muR0ySKoYh+SyGbkWnNd1oJkXoJI8hP0OiK3L7EAtg9YpIaS0Q2L\no2N/46FJcJcsgipcEN7RhYJj0oNLQHPW7RmJXImSwx/d47rwXqxGqBAgawSKkcp1XohTyueH\nLXAShjX0LHIq1mpn1Gm+NQsyZ5ojpch15tCnXUEgEvidWhwXy8VNMw8W1c9ika1RRY1IrAnS\nsk57KTLRTtmv1w+PgEKhqncdhEYiaQUCqVwckZJrQTbDHEXoECk7SSrJxM2EJQeBcgRR1RSU\nZtQ5RPwcaTNzXiJtxpeZdDYiNfS366K5RgAnOAigIgjPE0rzOjq/pYhHWLVbl46CcTa6SwGQ\ni2i5qxKJ3flvOYEhqXFAkWx4XHNtMRNguE8kolWSAyt6wWN7nDEdkuQdLZWLKPKaqbLpcjoi\n8XvN0julgY6deg5svYscqMnWQEwkKO3+IZnfWv5b0Rq812f9aKm5d05U5ftULmLNbkFsupyQ\nSK1CEcKJ78Q4JDf36SQiwYl3G3JfI4e7XgDVstZlEZXPlLu9xPo6q3ZYAcWpUKU26Xu+0SCg\nR6RQQS5x1MVjQ5mZiMQXpGH9BfeRcNlhb9lqo9Zx1V/Kfpwe86R5cX4zk/Idn288iXV18YOI\nJEUARfMRos9PJKCfyLYM6pGyLUl2SNpXmQIW+cRrIVKV5t6XlX4S3MgvGKjXpT+sycWrrfHw\nKia6C+IJiFRZtyrILkW7FSIt/qjlpxJpS0IY7x0TxMmqVI2MR9NlyzxoEt0lUe9iTk8kIH07\nkTyulL+HmdQxNsovRMLJozssTgM6NQNsP0lQEljD3S7ZPAw19CxqKkDHaCTSfSgqLNEUiaTY\np68KCEXNbtd2ZHqgV1gzYduXL3X/tCz4ikSqeEv4LTTFKk89SkRi9en4LEkbF/0T3jVJP+sB\nHSLFIglBLkEqIZd2FjUVGSIVvcX/Nru+VxvF4TkSBxTXTj0nupdTr/oQusRDPA0iEWQSKplp\n6cmJBMRWzrvlMrmwtqh15pZk1Y4PgglAGxdy832XF9xUZMK2tAgNCljv+/iVTMmmm0VPRdjm\nVMfm+lq8j9QAigkQkfIlbiDScd3L19pngPnZQoPnmV1VUGMloyyiJWdm0VQR76vQx7MuRZIw\nAUyb354hSM5k9PyzPYqlbPjVJD0uR/aKIFJV8Iw6P5GAbOjsJyMSsY25vu8Raf+9oabkD/dt\nZu08rwlCKdrPd7OGyecmUhzEjHgOjuLutDbmBk5BoLx+wB/eCkY0RlFub7SqoHolh0tQ/ErT\nzdJJBYNIe5/mtsC7N5Wo5OCGvZRs61WESIVs7USKqi9PpGolt4aulyISpza8k9KVP/TFRf0l\nCwPGwSLCOQhqFpIVFd13De74lBtFJSLKI045rovuZFyMSMxgZncVeSaFPSbXvt5IHZ1pOuig\nQRzAFupZSBMEvdvOiBTn5AczSkTyrgJLX30R9QINzuLSDx1f6GHWLh8tKOZctIFCt4adcWoi\nNShUIVLwfHtza/WH0D4ZwKOmaji2t8iyYoPW322OJKdRY44UTDdOSKRmAEFXezXcX42LnR1F\nWZN7+Gwm26QuWRRVCM3UtVbttnbOEGm6dQYFJGVsJdK25M0iQEKkvaeTOAKlnUVNBXurBNhl\n19hHis6HR93nadYeIDTUVWMY5bx/ZEPSEelxbW2FsxOJlnzL1c2Bo/cKRYrPtvbgoakK2+p/\nY5DjVV1Y6bX3PhLFamfRUsEMEvo58MNjvP4uPRl4Tia1Dipts5EmIgUsFniD2m5VhyxaKgiu\n6OKBoB+TcppOTKSRpjcSKe3Mjp6uOVzVzqKlAtWe4bwUm0sICkfNZsBQ06M5UrOw7doWrnbJ\noqaiHmEEhxFD6X28oPT4c0czZDGWSP6qHU+ANyQd/tHUHGcnUrUTOfqaJWLSeAc+8ard2Cr0\n9pE4mZeg1sMdKXa82CWLogrUYcR4FRrlwD32eBA65txqumAf8ORE2rPArQoSCeOdk3jKJGYA\nmJPgdbuyfAG+oLyrE5uwKYu6iqy/+WMQSewk4d8kZmRAJFMH7iFj/QWq07iuXfDQYE0xLllj\nFnUVeX9bv6F27JOsqE1iBgxipdKSNz6TWEsBEgmcPCHtuAaRCv62n6Uidp5oS1S72bmJ5F3B\n76Gzqki3ZEa0mPoq2BG9AZlkMSpVaxZtFcX6k3uOBhS+sFp8zVwVjzRjBCq2Jf17MXkD6fzs\nKCIhmyw411VPjUnUnEVbhYK/IZsS3+LpIWhMg048R6oRKfqylHyviuDJXHS5vWPgqIy4rvUZ\niaTgb8gl8uiOFLe/37DapPOu2tWGmPjbIpEe14NPRdG57NGPzdhkPRWRBP3teL8ZYviP7pWE\nm+Bl63+XutXR4x2jV52TM4vFASkdkvI88lLQiOSnlnWEBV/fFyGSnIMR15b2O+bd03Gv6XaF\nh3ZAin+KZfAAFZ5ZLBkDECmbPIqh3FLmaFmVYE/jHUSqhw4M8RybplNRVo02IA5KisnWTnPx\n8gShQ0aKUuTCQaS/5F6AqbnkAJHWwYAUVSlUi0P3X0YkWDN6SPKHfxKRjk3iSqzk5VV0GRQo\n+umbMOGwHXdOIw//IhQYkWDNeAtwb0VLRhXP0+LckZTJiBQ8p1hOTdh99ZJHkVqQopgdrYxa\nfZhqNyLBmmkWIIjktfV+9d7UVZAyFZG0JmnHi2e8AM+7V8YEMmdpxkX3UhqGWDr+frzdz7+/\nvf/VUtEMVpiAqmlv8Xu9xMFLRkoymg3sZ44pg5J8uDbkehBODU5GpO8Xd+BVRYUAeF0usXmO\n9xuGa3awlMZVO8kF800/RWLTqTlpIrVEHLPMkd7d7b/P+09ff27uXUOFCDgNX3JwgbCjYR9J\nNhYLXhyrrB+K6UYRqV6IjkS6uc/9509301AxENmlXeWJcFWid2VK8Gyi+yFfPzBjkors8JLQ\nu/MdiRTtPGqomBD3qdC4LdTmrhycx1F5VM+R2Yn2BuKl5jQUg5CCCFptRNKF3joXVn94Zwpg\nOzROP0aq4Lup0QUgsK7vHOnP1/2nuedIotje+j2KSa1ESvPz3xCczykVuKFAmLNGd0xaiiH0\nLA+8eqt2L98qKiQg6vT7MtcoKjX6qNyIVhgKxJYShDErkZa/7/d9pNvbx8T7SMKR2GONyy1t\nr2kHaIg9iNZWHrk5VoHRUkSS7qymJdJMKsqqBYn0+Ishi5NwxuJH+dxNFPauTAnBgjkkSYZI\nCpPROedIc6moaJZk0tYfS034Mx/pQMo9ixUrUhqFKplz1W4uFRXNokTaWoQrIbrDH6lBJmAq\nE0mArTpVMv3ruGbdR9JojuhFBPT80R3+aHaUB4x2tg6uknmI5HxIqOBBI2aSn/CfkUjyU5hQ\nfnTvDAvtYtUq7S0+4e82RxKEcgc5tkqMSKnykQMiiLZVu2fBHEdIdLNMqOJc4O8jPRNGVklX\nIp3hwT6DgYOORDrHg30GAwcdiXSWB/sMBjo6EukpH6MwPAk6Euk5H+wzPAdsRDIYBNB3jvR8\nD/YZngQ9l79P8mCfwUBH332kEzzYZzBwYCcbDAYBGJEMBgEYkQwGARiRDAYBGJEMBgEYkQwG\nARiRDAYBGJEMBgEYkQwGAUxKJIPhZGB4uTxxTqF7CgNM/3X0G5FMv+mfTNaZdE9hgOm/jn4j\nkuk3/ZPJOpPuKQww/dfRb0Qy/aZ/Mlln0j2FAab/OvqNSKbf9E8m60y6pzDA9F9HvxHJ9Jv+\nyWSdSfcUBpj+6+g3Ipl+0z+ZLIPhaWFEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBE\nMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBNCdSO83d3v/Ln3Q\n24DfL10NgMr7t2MzJPo/fzn362uY/u/eDrD8DmtbRn9vIr3eX/b/UvigtwHv9w9uvVoSKu/3\nrV8zJPr/jC3/1+2hvx+TP8M/NiHkgJ2J9NfdPpfPm/ub/aC3AZ/u1/dPJ/VrkP4fvHH+joiU\n/tu/D77f3Psg/b/umt971f/yo9yvbSkH7Eykd/fn3/U/95H9oLcBb48a6OXKUHn/Y/1BHiH9\n/90d+dvdBul3fev/X5f5GuiScsDORHpzP0P4p3vLftDbgBW9GhLQ/xU1bV/9v9xnL92g/jWq\n7UXk5V+/EdS2lAN2JlLS//TukDL6vt3rMP2v7qsfkRL9L275uN3D2zH6P9bQrldI8hk1vpQD\nGpHu+H0f4Ifo/3D/9Ss+1ABv98n+KP3L75/VhtvvTvoj5UYkMQPu+Lr1Ci0T/fegYiiRfhYb\nfvUaEaCO5Ae9BqRIuRFJzIAffN86BXZQaPWz8DyUSD9zpK9eGxCJ/t8/od0/Incckq5ApFts\ndvJBbwN+8NpvGyvW/+seU/YjUlL+zj1Zov/F/UzPvjvuJIZllXLAIat2X/Gq3VfnVbtA39fL\na7/dwFh/y1+kl9Dfe/k/0d87JIl1STlgZyJ93DvgP8f2X/JBbwP+/dwtrgP09yZSpgG+elVC\nov8xInTbx/pBUNdSDvj0Jxu6uVBG/x0DTzb8mx19/8xR/huk/939nHN779aTLlFtn/Rkw7+Q\n+Ad3332Ux/tgiAG/+o4IaQWEP/XX/9G3ARL9r50d4KhtUQfsTaTHWd+Hahd9MMSAzqFVWgHh\nTwP0/3nt2QCp/s4OEBNJyAF7E8lguCSMSAaDAIxIBoMAjEgGgwCMSAaDAIxIBoMAjEgGgwCM\nSAaDAIxIBoMAjEgGgwCMSAaDAIxIBoMAjEgGgwCMSAaDAIxIBoMAjEgGgwCMSAaDAIxIBoMA\njEgGgwCMSAaDAIxIBoMAjEgGgwCMSAaDAIxIBoMAjEgGgwCMSAaDAIxIBoMAjEgGgwCMSAaD\nAIxIBoMAjEgGgwCMSAaDAIxIBoMAjEiXQfpn/35b63aDVfVlkBDps+Nf1Hx6WFVfFp83I1I/\nWFVfFb/dqxGpH6yqJ4RzX2/u9rFs4drP9d//j/tn7849/gb37xd3+/34+vvFva1p32/u9ev+\n6XvPP5b+9LCqnhDO/YvKnPsIifTx89mf15/rD5Pefn5wr/ev39xGm/vXt+9/P31Cyw8GLVhV\nT4h//Pj+F5q9hES6f/a43pblz89P36/uz/rVI9V/Pz/+WocsI1JHWFVPCOcq70iRAAABWElE\nQVT+LntAt//0+Oxr/f3N/ZDn+19It361fvr358PbJmeM/c8Iq+oJEcyMkp+231fsfPF+DOQY\nesCqekIYkc4Hq+oJgSNSlNyINBRW1RMiostfiEhvP8sMfvL77dXmSINgVT0hDrq8uN8/S3MA\nkf5zt8+fXde3gEi/f1bt3m3Vrj+sqifEQZffP7OgN4hIjx0jd/sKiOTtIy1GpJ6wqp4QHl0+\nbu4XOEe6n2xwv76WkEg/Bx/evgI5hh6wqjYYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARg\nRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgE\nYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIYBGBEMhgEYEQyGARgRDIY\nBGBEMhgEYEQyGARgRDIYBPA/dCkTgk9T/0YAAAAASUVORK5CYII=", "text/plain": [ "plot without title" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_dt[,plot(numeric1, numeric2)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 5. Subsetting tables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Subsetting a `data.table` by column" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Selecting a single column results in a vector" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "'character'" ], "text/latex": [ "'character'" ], "text/markdown": [ "'character'" ], "text/plain": [ "[1] \"character\"" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "1000" ], "text/latex": [ "1000" ], "text/markdown": [ "1000" ], "text/plain": [ "[1] 1000" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "class(scratch_dt[,char1])\n", "length(scratch_dt[,char1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Multiple columns can be selected" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Specifying multiple columns by a vector results in a concatenated vector" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "'character'" ], "text/latex": [ "'character'" ], "text/markdown": [ "'character'" ], "text/plain": [ "[1] \"character\"" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "2000" ], "text/latex": [ "2000" ], "text/markdown": [ "2000" ], "text/plain": [ "[1] 2000" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "class(scratch_dt[,c(numeric1, char1)])\n", "length(scratch_dt[,c(numeric1, char1)])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Specifying multiple columns by list results in a `data.table`" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 'data.table'
  2. \n", "\t
  3. 'data.frame'
  4. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'data.table'\n", "\\item 'data.frame'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'data.table'\n", "2. 'data.frame'\n", "\n", "\n" ], "text/plain": [ "[1] \"data.table\" \"data.frame\"" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ " numeric1 char1\n", " 1: 0.259996684 GGGGGGGG\n", " 2: 0.732081677 FFFFFFFF\n", " 3: 0.003667001 FFFFFFFF\n", " 4: 0.035518094 EEEEEEEE\n", " 5: 0.634085899 EEEEEEEE\n", " --- \n", " 996: 0.149284828 CCCCCCCC\n", " 997: 0.664694987 GGGGGGGG\n", " 998: 0.119148107 DDDDDDDD\n", " 999: 0.299141358 FFFFFFFF\n", "1000: 0.169459480 EEEEEEEE\n" ] } ], "source": [ "class(scratch_dt[,list(numeric1, char1)])\n", "print(scratch_dt[,list(numeric1, char1)])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "'.' is an alias for 'list'" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 'data.table'
  2. \n", "\t
  3. 'data.frame'
  4. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 'data.table'\n", "\\item 'data.frame'\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 'data.table'\n", "2. 'data.frame'\n", "\n", "\n" ], "text/plain": [ "[1] \"data.table\" \"data.frame\"" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ " numeric1 char1\n", " 1: 0.259996684 GGGGGGGG\n", " 2: 0.732081677 FFFFFFFF\n", " 3: 0.003667001 FFFFFFFF\n", " 4: 0.035518094 EEEEEEEE\n", " 5: 0.634085899 EEEEEEEE\n", " --- \n", " 996: 0.149284828 CCCCCCCC\n", " 997: 0.664694987 GGGGGGGG\n", " 998: 0.119148107 DDDDDDDD\n", " 999: 0.299141358 FFFFFFFF\n", "1000: 0.169459480 EEEEEEEE\n" ] } ], "source": [ "class(scratch_dt[,.(numeric1, char1)] )\n", "print(scratch_dt[,.(numeric1, char1)])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Computed columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compute a standalone vector and display first five elements" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
    \n", "\t
  1. 0.3
  2. \n", "\t
  3. 0.7
  4. \n", "\t
  5. 0
  6. \n", "\t
  7. 0
  8. \n", "\t
  9. 0.6
  10. \n", "
\n" ], "text/latex": [ "\\begin{enumerate*}\n", "\\item 0.3\n", "\\item 0.7\n", "\\item 0\n", "\\item 0\n", "\\item 0.6\n", "\\end{enumerate*}\n" ], "text/markdown": [ "1. 0.3\n", "2. 0.7\n", "3. 0\n", "4. 0\n", "5. 0.6\n", "\n", "\n" ], "text/plain": [ "[1] 0.3 0.7 0.0 0.0 0.6" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_dt[1:5, round(numeric1, 1)] # compute standalone vector" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compute a new column with assigned name" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " new_numeric\n", " 1: 0.3\n", " 2: 0.7\n", " 3: 0.0\n", " 4: 0.0\n", " 5: 0.6\n", " --- \n", " 996: 0.1\n", " 997: 0.7\n", " 998: 0.1\n", " 999: 0.3\n", "1000: 0.2\n" ] } ], "source": [ "print(scratch_dt[, .(new_numeric = round(numeric1, 1))]) # assign name" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Subsetting a `data.table` by row" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use numeric indices (or 'slicing')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\n", "
keynumeric1numeric2char1char2
3 0.0036670010.4421966 FFFFFFFF CCCCCCCC
4 0.0355180940.3327131 EEEEEEEE BBBBBBBB
5 0.6340858990.3978932 EEEEEEEE FFFFFFFF
\n" ], "text/latex": [ "\\begin{tabular}{r|lllll}\n", " key & numeric1 & numeric2 & char1 & char2\\\\\n", "\\hline\n", "\t 3 & 0.003667001 & 0.4421966 & FFFFFFFF & CCCCCCCC \\\\\n", "\t 4 & 0.035518094 & 0.3327131 & EEEEEEEE & BBBBBBBB \\\\\n", "\t 5 & 0.634085899 & 0.3978932 & EEEEEEEE & FFFFFFFF \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " key numeric1 numeric2 char1 char2 \n", "1 3 0.003667001 0.4421966 FFFFFFFF CCCCCCCC\n", "2 4 0.035518094 0.3327131 EEEEEEEE BBBBBBBB\n", "3 5 0.634085899 0.3978932 EEEEEEEE FFFFFFFF" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_dt[3:5]" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\n", "
keynumeric1numeric2char1char2
3 0.0036670010.4421966 FFFFFFFF CCCCCCCC
4 0.0355180940.3327131 EEEEEEEE BBBBBBBB
5 0.6340858990.3978932 EEEEEEEE FFFFFFFF
\n" ], "text/latex": [ "\\begin{tabular}{r|lllll}\n", " key & numeric1 & numeric2 & char1 & char2\\\\\n", "\\hline\n", "\t 3 & 0.003667001 & 0.4421966 & FFFFFFFF & CCCCCCCC \\\\\n", "\t 4 & 0.035518094 & 0.3327131 & EEEEEEEE & BBBBBBBB \\\\\n", "\t 5 & 0.634085899 & 0.3978932 & EEEEEEEE & FFFFFFFF \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " key numeric1 numeric2 char1 char2 \n", "1 3 0.003667001 0.4421966 FFFFFFFF CCCCCCCC\n", "2 4 0.035518094 0.3327131 EEEEEEEE BBBBBBBB\n", "3 5 0.634085899 0.3978932 EEEEEEEE FFFFFFFF" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_dt[3:5,] # comma is optional" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use variable values" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " key numeric1 numeric2 char1 char2\n", " 1: 18 0.77342184 0.31187663 DDDDDDDD CCCCCCCC\n", " 2: 25 0.32552511 0.02781991 DDDDDDDD EEEEEEEE\n", " 3: 29 0.67213389 0.91959072 DDDDDDDD GGGGGGGG\n", " 4: 42 0.12872212 0.44037910 DDDDDDDD EEEEEEEE\n", " 5: 44 0.28204772 0.94455718 DDDDDDDD AAAAAAAA\n", " --- \n", "127: 964 0.03882007 0.90117101 DDDDDDDD CCCCCCCC\n", "128: 968 0.06489768 0.97608891 DDDDDDDD DDDDDDDD\n", "129: 969 0.82980244 0.70093445 DDDDDDDD BBBBBBBB\n", "130: 970 0.30456941 0.77411254 DDDDDDDD CCCCCCCC\n", "131: 998 0.11914811 0.66886333 DDDDDDDD GGGGGGGG\n" ] } ], "source": [ "print(scratch_dt[char1 == 'DDDDDDDD'])" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " key numeric1 numeric2 char1 char2\n", " 1: 4 0.03551809 0.3327131 EEEEEEEE BBBBBBBB\n", " 2: 5 0.63408590 0.3978932 EEEEEEEE FFFFFFFF\n", " 3: 11 0.84197527 0.5039631 EEEEEEEE CCCCCCCC\n", " 4: 14 0.50103007 0.7063631 EEEEEEEE AAAAAAAA\n", " 5: 16 0.09726815 0.1038322 EEEEEEEE AAAAAAAA\n", " --- \n", "277: 979 0.31631015 0.8999229 EEEEEEEE BBBBBBBB\n", "278: 984 0.38788661 0.5133926 EEEEEEEE EEEEEEEE\n", "279: 987 0.54909619 0.7445486 EEEEEEEE FFFFFFFF\n", "280: 998 0.11914811 0.6688633 DDDDDDDD GGGGGGGG\n", "281: 1000 0.16945948 0.3105355 EEEEEEEE GGGGGGGG\n" ] } ], "source": [ "print(scratch_dt[char1 %in% c('DDDDDDDD', 'EEEEEEEE')])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### .N operator\n", "* Used in `i` (i.e. as a row index) `.N` represents the numeric value of the last row of a `data.table`\n", "* Used in `j` (i.e. as a column index) `.N` represents the number of rows in a `data.table`" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\n", "
keynumeric1numeric2char1char2
1000 0.16945950.3105355EEEEEEEE GGGGGGGG
\n" ], "text/latex": [ "\\begin{tabular}{r|lllll}\n", " key & numeric1 & numeric2 & char1 & char2\\\\\n", "\\hline\n", "\t 1000 & 0.1694595 & 0.3105355 & EEEEEEEE & GGGGGGGG \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " key numeric1 numeric2 char1 char2 \n", "1 1000 0.1694595 0.3105355 EEEEEEEE GGGGGGGG" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_dt[.N]" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "1000" ], "text/latex": [ "1000" ], "text/markdown": [ "1000" ], "text/plain": [ "[1] 1000" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_dt[,.N]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 6. Sorting a table " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`data.table::setorder` reorders columns by reference" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " key numeric1 numeric2 char1 char2\n", " 1: 35 0.69515565 0.004905779 AAAAAAAA AAAAAAAA\n", " 2: 47 0.37059339 0.869991876 AAAAAAAA BBBBBBBB\n", " 3: 51 0.04640185 0.883355444 AAAAAAAA DDDDDDDD\n", " 4: 53 0.36996356 0.423926687 AAAAAAAA AAAAAAAA\n", " 5: 59 0.36241661 0.642012189 AAAAAAAA CCCCCCCC\n", " --- \n", " 996: 931 0.41697288 0.001541809 GGGGGGGG GGGGGGGG\n", " 997: 956 0.03146415 0.537123892 GGGGGGGG AAAAAAAA\n", " 998: 977 0.94039200 0.537894669 GGGGGGGG EEEEEEEE\n", " 999: 982 0.68691456 0.586067937 GGGGGGGG FFFFFFFF\n", "1000: 997 0.66469499 0.352491600 GGGGGGGG AAAAAAAA\n" ] } ], "source": [ "sorted <- setorder(scratch_dt, char1)\n", "print(sorted)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When used in `data.table`, `order()` also reorders columns by reference" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " key numeric1 numeric2 char1 char2\n", " 1: 35 0.69515565 0.004905779 AAAAAAAA AAAAAAAA\n", " 2: 47 0.37059339 0.869991876 AAAAAAAA BBBBBBBB\n", " 3: 51 0.04640185 0.883355444 AAAAAAAA DDDDDDDD\n", " 4: 53 0.36996356 0.423926687 AAAAAAAA AAAAAAAA\n", " 5: 59 0.36241661 0.642012189 AAAAAAAA CCCCCCCC\n", " --- \n", " 996: 931 0.41697288 0.001541809 GGGGGGGG GGGGGGGG\n", " 997: 956 0.03146415 0.537123892 GGGGGGGG AAAAAAAA\n", " 998: 977 0.94039200 0.537894669 GGGGGGGG EEEEEEEE\n", " 999: 982 0.68691456 0.586067937 GGGGGGGG FFFFFFFF\n", "1000: 997 0.66469499 0.352491600 GGGGGGGG AAAAAAAA\n" ] } ], "source": [ "sorted <- scratch_dt[order(char1)]\n", "print(sorted)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sort orders can be specified by using `order()`" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " key numeric1 numeric2 char1 char2\n", " 1: 361 0.988891296 0.02420181 AAAAAAAA DDDDDDDD\n", " 2: 95 0.988878589 0.18766972 AAAAAAAA GGGGGGGG\n", " 3: 848 0.985371143 0.72682615 AAAAAAAA AAAAAAAA\n", " 4: 108 0.977229631 0.22178106 AAAAAAAA DDDDDDDD\n", " 5: 826 0.973477794 0.57627465 AAAAAAAA EEEEEEEE\n", " --- \n", " 996: 414 0.026325888 0.95853580 GGGGGGGG EEEEEEEE\n", " 997: 210 0.011404102 0.37012387 GGGGGGGG DDDDDDDD\n", " 998: 750 0.010638036 0.31127618 GGGGGGGG AAAAAAAA\n", " 999: 649 0.007135095 0.10497346 GGGGGGGG BBBBBBBB\n", "1000: 518 0.006429464 0.11806816 GGGGGGGG FFFFFFFF\n" ] } ], "source": [ "sorted2 <- scratch_dt[order(char1, -numeric1)]\n", "print(sorted2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### data.table::setkey\n", "* Reorders columns by reference by the specified key variable (here called 'key')\n", "* Sets the variable to the key of the data.table for future operations\n", "* Subsetting and selecting by the key variable will be more efficient in future operations " ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " key numeric1 numeric2 char1 char2\n", " 1: 1 0.259996684 0.46904710 GGGGGGGG EEEEEEEE\n", " 2: 2 0.732081677 0.98525640 FFFFFFFF AAAAAAAA\n", " 3: 3 0.003667001 0.44219657 FFFFFFFF CCCCCCCC\n", " 4: 4 0.035518094 0.33271310 EEEEEEEE BBBBBBBB\n", " 5: 5 0.634085899 0.39789319 EEEEEEEE FFFFFFFF\n", " --- \n", " 996: 996 0.149284828 0.06582848 CCCCCCCC GGGGGGGG\n", " 997: 997 0.664694987 0.35249160 GGGGGGGG AAAAAAAA\n", " 998: 998 0.119148107 0.66886333 DDDDDDDD GGGGGGGG\n", " 999: 999 0.299141358 0.78567161 FFFFFFFF FFFFFFFF\n", "1000: 1000 0.169459480 0.31053551 EEEEEEEE GGGGGGGG\n" ] } ], "source": [ "sorted3 <- setkey(scratch_dt, key)\n", "print(sorted3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 7. Updating a table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Update rows by reference using the := operator\n", "##### (data.table supports overwrite of data)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " key numeric1 numeric2 char1 char2\n", " 1: 1 0.259996684 0.46904710 GGGGGGGG EEEEEEEE\n", " 2: 2 0.732081677 0.98525640 FFFFFFFF AAAAAAAA\n", " 3: 3 0.003667001 0.44219657 FFFFFFFF CCCCCCCC\n", " 4: 4 0.035518094 0.33271310 EEEEEEEE BBBBBBBB\n", " 5: 5 0.634085899 0.39789319 EEEEEEEE FFFFFFFF\n", " --- \n", " 996: 996 0.149284828 0.06582848 ZZZZZZZZ GGGGGGGG\n", " 997: 997 0.664694987 0.35249160 ZZZZZZZZ AAAAAAAA\n", " 998: 998 0.119148107 0.66886333 ZZZZZZZZ GGGGGGGG\n", " 999: 999 0.299141358 0.78567161 ZZZZZZZZ FFFFFFFF\n", "1000: 1000 0.169459480 0.31053551 ZZZZZZZZ GGGGGGGG\n" ] } ], "source": [ "scratch_dt2 <- scratch_dt[key > 500, char1 := 'ZZZZZZZZ']\n", "print(scratch_dt2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create new columns by reference using the := operator" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
keynumeric1numeric2char1char2new_numeric
1 0.2599966840.4690471 GGGGGGGG EEEEEEEE 0.3
2 0.7320816770.9852564 FFFFFFFF AAAAAAAA 0.7
3 0.0036670010.4421966 FFFFFFFF CCCCCCCC 0.0
4 0.0355180940.3327131 EEEEEEEE BBBBBBBB 0.0
5 0.6340858990.3978932 EEEEEEEE FFFFFFFF 0.6
6 0.9588044260.4134339 FFFFFFFF CCCCCCCC 1.0
\n" ], "text/latex": [ "\\begin{tabular}{r|llllll}\n", " key & numeric1 & numeric2 & char1 & char2 & new\\_numeric\\\\\n", "\\hline\n", "\t 1 & 0.259996684 & 0.4690471 & GGGGGGGG & EEEEEEEE & 0.3 \\\\\n", "\t 2 & 0.732081677 & 0.9852564 & FFFFFFFF & AAAAAAAA & 0.7 \\\\\n", "\t 3 & 0.003667001 & 0.4421966 & FFFFFFFF & CCCCCCCC & 0.0 \\\\\n", "\t 4 & 0.035518094 & 0.3327131 & EEEEEEEE & BBBBBBBB & 0.0 \\\\\n", "\t 5 & 0.634085899 & 0.3978932 & EEEEEEEE & FFFFFFFF & 0.6 \\\\\n", "\t 6 & 0.958804426 & 0.4134339 & FFFFFFFF & CCCCCCCC & 1.0 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " key numeric1 numeric2 char1 char2 new_numeric\n", "1 1 0.259996684 0.4690471 GGGGGGGG EEEEEEEE 0.3 \n", "2 2 0.732081677 0.9852564 FFFFFFFF AAAAAAAA 0.7 \n", "3 3 0.003667001 0.4421966 FFFFFFFF CCCCCCCC 0.0 \n", "4 4 0.035518094 0.3327131 EEEEEEEE BBBBBBBB 0.0 \n", "5 5 0.634085899 0.3978932 EEEEEEEE FFFFFFFF 0.6 \n", "6 6 0.958804426 0.4134339 FFFFFFFF CCCCCCCC 1.0 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "head(scratch_dt2[, new_numeric := round(numeric1, 1)])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 8. Adding data to the table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use `data.table::rbindlist` to stack `data.tables` vertically" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "2000" ], "text/latex": [ "2000" ], "text/markdown": [ "2000" ], "text/plain": [ "[1] 2000" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "bindr <- rbindlist(list(sorted, sorted2))\n", "nrow(bindr)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### `data.table::merge` joins tables side-by-side using a common key (or 'by') variable \n", "* Joining data.tables without prespecified keys (i.e. by using data.table::setkey) requires that a key for the join be specified\n", "* joining data.tables with prespecified keys does not require that a key be specified when data.table::merge is called\n", "* The prefix 'x.' is added to the left table variable names by default\n", "* The prefix 'y.' is added to the right table variables names by default" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " key numeric1.x numeric2.x char1.x char2.x numeric1.y numeric2.y\n", " 1: 1 0.259996684 0.46904710 GGGGGGGG EEEEEEEE 0.259996684 0.46904710\n", " 2: 2 0.732081677 0.98525640 FFFFFFFF AAAAAAAA 0.732081677 0.98525640\n", " 3: 3 0.003667001 0.44219657 FFFFFFFF CCCCCCCC 0.003667001 0.44219657\n", " 4: 4 0.035518094 0.33271310 EEEEEEEE BBBBBBBB 0.035518094 0.33271310\n", " 5: 5 0.634085899 0.39789319 EEEEEEEE FFFFFFFF 0.634085899 0.39789319\n", " --- \n", " 996: 996 0.149284828 0.06582848 CCCCCCCC GGGGGGGG 0.149284828 0.06582848\n", " 997: 997 0.664694987 0.35249160 GGGGGGGG AAAAAAAA 0.664694987 0.35249160\n", " 998: 998 0.119148107 0.66886333 DDDDDDDD GGGGGGGG 0.119148107 0.66886333\n", " 999: 999 0.299141358 0.78567161 FFFFFFFF FFFFFFFF 0.299141358 0.78567161\n", "1000: 1000 0.169459480 0.31053551 EEEEEEEE GGGGGGGG 0.169459480 0.31053551\n", " char1.y char2.y\n", " 1: GGGGGGGG EEEEEEEE\n", " 2: FFFFFFFF AAAAAAAA\n", " 3: FFFFFFFF CCCCCCCC\n", " 4: EEEEEEEE BBBBBBBB\n", " 5: EEEEEEEE FFFFFFFF\n", " --- \n", " 996: CCCCCCCC GGGGGGGG\n", " 997: GGGGGGGG AAAAAAAA\n", " 998: DDDDDDDD GGGGGGGG\n", " 999: FFFFFFFF FFFFFFFF\n", "1000: EEEEEEEE GGGGGGGG\n" ] } ], "source": [ "joined1 <- merge(sorted, sorted2, by = c('key'))\n", "print(joined1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Add a key to the `scratch_dt2` table" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " key char1 new_numeric\n", " 1: 1 GGGGGGGG 0.3\n", " 2: 2 FFFFFFFF 0.7\n", " 3: 3 FFFFFFFF 0.0\n", " 4: 4 EEEEEEEE 0.0\n", " 5: 5 EEEEEEEE 0.6\n", " --- \n", " 996: 996 ZZZZZZZZ 0.1\n", " 997: 997 ZZZZZZZZ 0.7\n", " 998: 998 ZZZZZZZZ 0.1\n", " 999: 999 ZZZZZZZZ 0.3\n", "1000: 1000 ZZZZZZZZ 0.2\n" ] } ], "source": [ "scratch_dt2 <- setkey(scratch_dt2[,.(key, char1, new_numeric)], key)\n", "print(scratch_dt2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now `sorted3` and `scratch_dt2` can be joined without specifiying a key" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " key numeric1 numeric2 char1.x char2 new_numeric.x char1.y\n", " 1: 1 0.259996684 0.46904710 GGGGGGGG EEEEEEEE 0.3 GGGGGGGG\n", " 2: 2 0.732081677 0.98525640 FFFFFFFF AAAAAAAA 0.7 FFFFFFFF\n", " 3: 3 0.003667001 0.44219657 FFFFFFFF CCCCCCCC 0.0 FFFFFFFF\n", " 4: 4 0.035518094 0.33271310 EEEEEEEE BBBBBBBB 0.0 EEEEEEEE\n", " 5: 5 0.634085899 0.39789319 EEEEEEEE FFFFFFFF 0.6 EEEEEEEE\n", " --- \n", " 996: 996 0.149284828 0.06582848 ZZZZZZZZ GGGGGGGG 0.1 ZZZZZZZZ\n", " 997: 997 0.664694987 0.35249160 ZZZZZZZZ AAAAAAAA 0.7 ZZZZZZZZ\n", " 998: 998 0.119148107 0.66886333 ZZZZZZZZ GGGGGGGG 0.1 ZZZZZZZZ\n", " 999: 999 0.299141358 0.78567161 ZZZZZZZZ FFFFFFFF 0.3 ZZZZZZZZ\n", "1000: 1000 0.169459480 0.31053551 ZZZZZZZZ GGGGGGGG 0.2 ZZZZZZZZ\n", " new_numeric.y\n", " 1: 0.3\n", " 2: 0.7\n", " 3: 0.0\n", " 4: 0.0\n", " 5: 0.6\n", " --- \n", " 996: 0.1\n", " 997: 0.7\n", " 998: 0.1\n", " 999: 0.3\n", "1000: 0.2\n" ] } ], "source": [ "joined2 <- merge(sorted3, scratch_dt2)\n", "print(joined2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 9. By group processing\n", "* By groups allow you to divide and process a data set based on the values of a certain variable\n", "* General form of a `data.table` is `dt[i, j, by]`, where `by` is by group variable name" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
char1V1
GGGGGGGG 41.4
FFFFFFFF 31.9
EEEEEEEE 38.0
CCCCCCCC 41.5
BBBBBBBB 31.6
DDDDDDDD 28.8
AAAAAAAA 41.5
ZZZZZZZZ247.6
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " char1 & V1\\\\\n", "\\hline\n", "\t GGGGGGGG & 41.4 \\\\\n", "\t FFFFFFFF & 31.9 \\\\\n", "\t EEEEEEEE & 38.0 \\\\\n", "\t CCCCCCCC & 41.5 \\\\\n", "\t BBBBBBBB & 31.6 \\\\\n", "\t DDDDDDDD & 28.8 \\\\\n", "\t AAAAAAAA & 41.5 \\\\\n", "\t ZZZZZZZZ & 247.6 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " char1 V1 \n", "1 GGGGGGGG 41.4\n", "2 FFFFFFFF 31.9\n", "3 EEEEEEEE 38.0\n", "4 CCCCCCCC 41.5\n", "5 BBBBBBBB 31.6\n", "6 DDDDDDDD 28.8\n", "7 AAAAAAAA 41.5\n", "8 ZZZZZZZZ 247.6" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
char1V1
GGGGGGGG41.4
FFFFFFFF31.9
EEEEEEEE38.0
CCCCCCCC41.5
BBBBBBBB31.6
DDDDDDDD28.8
AAAAAAAA41.5
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " char1 & V1\\\\\n", "\\hline\n", "\t GGGGGGGG & 41.4 \\\\\n", "\t FFFFFFFF & 31.9 \\\\\n", "\t EEEEEEEE & 38.0 \\\\\n", "\t CCCCCCCC & 41.5 \\\\\n", "\t BBBBBBBB & 31.6 \\\\\n", "\t DDDDDDDD & 28.8 \\\\\n", "\t AAAAAAAA & 41.5 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " char1 V1 \n", "1 GGGGGGGG 41.4\n", "2 FFFFFFFF 31.9\n", "3 EEEEEEEE 38.0\n", "4 CCCCCCCC 41.5\n", "5 BBBBBBBB 31.6\n", "6 DDDDDDDD 28.8\n", "7 AAAAAAAA 41.5" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_dt2[, sum(new_numeric), by = char1]\n", "scratch_dt2[1:500, sum(new_numeric), by = char1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### `.N` returns the number of rows in each by group" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
char1N
GGGGGGGG 83
FFFFFFFF 66
EEEEEEEE 77
CCCCCCCC 85
BBBBBBBB 59
DDDDDDDD 57
AAAAAAAA 73
ZZZZZZZZ500
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " char1 & N\\\\\n", "\\hline\n", "\t GGGGGGGG & 83 \\\\\n", "\t FFFFFFFF & 66 \\\\\n", "\t EEEEEEEE & 77 \\\\\n", "\t CCCCCCCC & 85 \\\\\n", "\t BBBBBBBB & 59 \\\\\n", "\t DDDDDDDD & 57 \\\\\n", "\t AAAAAAAA & 73 \\\\\n", "\t ZZZZZZZZ & 500 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " char1 N \n", "1 GGGGGGGG 83\n", "2 FFFFFFFF 66\n", "3 EEEEEEEE 77\n", "4 CCCCCCCC 85\n", "5 BBBBBBBB 59\n", "6 DDDDDDDD 57\n", "7 AAAAAAAA 73\n", "8 ZZZZZZZZ 500" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_dt2[, .N, by = char1] " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### by groups can also be a list of variables" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
char1char2V1
AAAAAAAA AAAAAAAA 0.4700000
AAAAAAAA BBBBBBBB 0.5166667
AAAAAAAA CCCCCCCC 0.5666667
AAAAAAAA DDDDDDDD 0.5928571
AAAAAAAA EEEEEEEE 0.7250000
AAAAAAAA FFFFFFFF 0.5727273
AAAAAAAA GGGGGGGG 0.5923077
BBBBBBBB AAAAAAAA 0.5833333
BBBBBBBB BBBBBBBB 0.6900000
BBBBBBBB CCCCCCCC 0.4727273
BBBBBBBB DDDDDDDD 0.2777778
BBBBBBBB EEEEEEEE 0.5200000
BBBBBBBB FFFFFFFF 0.5250000
BBBBBBBB GGGGGGGG 0.6888889
CCCCCCCC AAAAAAAA 0.4250000
CCCCCCCC BBBBBBBB 0.5125000
CCCCCCCC CCCCCCCC 0.4538462
CCCCCCCC DDDDDDDD 0.4937500
CCCCCCCC EEEEEEEE 0.5611111
CCCCCCCC FFFFFFFF 0.4363636
CCCCCCCC GGGGGGGG 0.5142857
DDDDDDDD AAAAAAAA 0.5750000
DDDDDDDD BBBBBBBB 0.5500000
DDDDDDDD CCCCCCCC 0.4750000
DDDDDDDD DDDDDDDD 0.5000000
DDDDDDDD EEEEEEEE 0.3800000
DDDDDDDD FFFFFFFF 0.6777778
DDDDDDDD GGGGGGGG 0.4285714
EEEEEEEE AAAAAAAA 0.3428571
EEEEEEEE BBBBBBBB 0.3200000
EEEEEEEE CCCCCCCC 0.4875000
EEEEEEEE DDDDDDDD 0.5111111
EEEEEEEE EEEEEEEE 0.5272727
EEEEEEEE FFFFFFFF 0.5400000
EEEEEEEE GGGGGGGG 0.6083333
FFFFFFFF AAAAAAAA 0.4500000
FFFFFFFF BBBBBBBB 0.6000000
FFFFFFFF CCCCCCCC 0.4875000
FFFFFFFF DDDDDDDD 0.3692308
FFFFFFFF EEEEEEEE 0.6666667
FFFFFFFF FFFFFFFF 0.4250000
FFFFFFFF GGGGGGGG 0.4800000
GGGGGGGG AAAAAAAA 0.6153846
GGGGGGGG BBBBBBBB 0.4692308
GGGGGGGG CCCCCCCC 0.6166667
GGGGGGGG DDDDDDDD 0.5250000
GGGGGGGG EEEEEEEE 0.4083333
GGGGGGGG FFFFFFFF 0.4363636
GGGGGGGG GGGGGGGG 0.3900000
ZZZZZZZZ AAAAAAAA 0.4945205
ZZZZZZZZ BBBBBBBB 0.5267606
ZZZZZZZZ CCCCCCCC 0.4842105
ZZZZZZZZ DDDDDDDD 0.4615385
ZZZZZZZZ EEEEEEEE 0.5500000
ZZZZZZZZ FFFFFFFF 0.5640000
ZZZZZZZZ GGGGGGGG 0.3596491
\n" ], "text/latex": [ "\\begin{tabular}{r|lll}\n", " char1 & char2 & V1\\\\\n", "\\hline\n", "\t AAAAAAAA & AAAAAAAA & 0.4700000\\\\\n", "\t AAAAAAAA & BBBBBBBB & 0.5166667\\\\\n", "\t AAAAAAAA & CCCCCCCC & 0.5666667\\\\\n", "\t AAAAAAAA & DDDDDDDD & 0.5928571\\\\\n", "\t AAAAAAAA & EEEEEEEE & 0.7250000\\\\\n", "\t AAAAAAAA & FFFFFFFF & 0.5727273\\\\\n", "\t AAAAAAAA & GGGGGGGG & 0.5923077\\\\\n", "\t BBBBBBBB & AAAAAAAA & 0.5833333\\\\\n", "\t BBBBBBBB & BBBBBBBB & 0.6900000\\\\\n", "\t BBBBBBBB & CCCCCCCC & 0.4727273\\\\\n", "\t BBBBBBBB & DDDDDDDD & 0.2777778\\\\\n", "\t BBBBBBBB & EEEEEEEE & 0.5200000\\\\\n", "\t BBBBBBBB & FFFFFFFF & 0.5250000\\\\\n", "\t BBBBBBBB & GGGGGGGG & 0.6888889\\\\\n", "\t CCCCCCCC & AAAAAAAA & 0.4250000\\\\\n", "\t CCCCCCCC & BBBBBBBB & 0.5125000\\\\\n", "\t CCCCCCCC & CCCCCCCC & 0.4538462\\\\\n", "\t CCCCCCCC & DDDDDDDD & 0.4937500\\\\\n", "\t CCCCCCCC & EEEEEEEE & 0.5611111\\\\\n", "\t CCCCCCCC & FFFFFFFF & 0.4363636\\\\\n", "\t CCCCCCCC & GGGGGGGG & 0.5142857\\\\\n", "\t DDDDDDDD & AAAAAAAA & 0.5750000\\\\\n", "\t DDDDDDDD & BBBBBBBB & 0.5500000\\\\\n", "\t DDDDDDDD & CCCCCCCC & 0.4750000\\\\\n", "\t DDDDDDDD & DDDDDDDD & 0.5000000\\\\\n", "\t DDDDDDDD & EEEEEEEE & 0.3800000\\\\\n", "\t DDDDDDDD & FFFFFFFF & 0.6777778\\\\\n", "\t DDDDDDDD & GGGGGGGG & 0.4285714\\\\\n", "\t EEEEEEEE & AAAAAAAA & 0.3428571\\\\\n", "\t EEEEEEEE & BBBBBBBB & 0.3200000\\\\\n", "\t EEEEEEEE & CCCCCCCC & 0.4875000\\\\\n", "\t EEEEEEEE & DDDDDDDD & 0.5111111\\\\\n", "\t EEEEEEEE & EEEEEEEE & 0.5272727\\\\\n", "\t EEEEEEEE & FFFFFFFF & 0.5400000\\\\\n", "\t EEEEEEEE & GGGGGGGG & 0.6083333\\\\\n", "\t FFFFFFFF & AAAAAAAA & 0.4500000\\\\\n", "\t FFFFFFFF & BBBBBBBB & 0.6000000\\\\\n", "\t FFFFFFFF & CCCCCCCC & 0.4875000\\\\\n", "\t FFFFFFFF & DDDDDDDD & 0.3692308\\\\\n", "\t FFFFFFFF & EEEEEEEE & 0.6666667\\\\\n", "\t FFFFFFFF & FFFFFFFF & 0.4250000\\\\\n", "\t FFFFFFFF & GGGGGGGG & 0.4800000\\\\\n", "\t GGGGGGGG & AAAAAAAA & 0.6153846\\\\\n", "\t GGGGGGGG & BBBBBBBB & 0.4692308\\\\\n", "\t GGGGGGGG & CCCCCCCC & 0.6166667\\\\\n", "\t GGGGGGGG & DDDDDDDD & 0.5250000\\\\\n", "\t GGGGGGGG & EEEEEEEE & 0.4083333\\\\\n", "\t GGGGGGGG & FFFFFFFF & 0.4363636\\\\\n", "\t GGGGGGGG & GGGGGGGG & 0.3900000\\\\\n", "\t ZZZZZZZZ & AAAAAAAA & 0.4945205\\\\\n", "\t ZZZZZZZZ & BBBBBBBB & 0.5267606\\\\\n", "\t ZZZZZZZZ & CCCCCCCC & 0.4842105\\\\\n", "\t ZZZZZZZZ & DDDDDDDD & 0.4615385\\\\\n", "\t ZZZZZZZZ & EEEEEEEE & 0.5500000\\\\\n", "\t ZZZZZZZZ & FFFFFFFF & 0.5640000\\\\\n", "\t ZZZZZZZZ & GGGGGGGG & 0.3596491\\\\\n", "\\end{tabular}\n" ], "text/plain": [ " char1 char2 V1 \n", "1 AAAAAAAA AAAAAAAA 0.4700000\n", "2 AAAAAAAA BBBBBBBB 0.5166667\n", "3 AAAAAAAA CCCCCCCC 0.5666667\n", "4 AAAAAAAA DDDDDDDD 0.5928571\n", "5 AAAAAAAA EEEEEEEE 0.7250000\n", "6 AAAAAAAA FFFFFFFF 0.5727273\n", "7 AAAAAAAA GGGGGGGG 0.5923077\n", "8 BBBBBBBB AAAAAAAA 0.5833333\n", "9 BBBBBBBB BBBBBBBB 0.6900000\n", "10 BBBBBBBB CCCCCCCC 0.4727273\n", "11 BBBBBBBB DDDDDDDD 0.2777778\n", "12 BBBBBBBB EEEEEEEE 0.5200000\n", "13 BBBBBBBB FFFFFFFF 0.5250000\n", "14 BBBBBBBB GGGGGGGG 0.6888889\n", "15 CCCCCCCC AAAAAAAA 0.4250000\n", "16 CCCCCCCC BBBBBBBB 0.5125000\n", "17 CCCCCCCC CCCCCCCC 0.4538462\n", "18 CCCCCCCC DDDDDDDD 0.4937500\n", "19 CCCCCCCC EEEEEEEE 0.5611111\n", "20 CCCCCCCC FFFFFFFF 0.4363636\n", "21 CCCCCCCC GGGGGGGG 0.5142857\n", "22 DDDDDDDD AAAAAAAA 0.5750000\n", "23 DDDDDDDD BBBBBBBB 0.5500000\n", "24 DDDDDDDD CCCCCCCC 0.4750000\n", "25 DDDDDDDD DDDDDDDD 0.5000000\n", "26 DDDDDDDD EEEEEEEE 0.3800000\n", "27 DDDDDDDD FFFFFFFF 0.6777778\n", "28 DDDDDDDD GGGGGGGG 0.4285714\n", "29 EEEEEEEE AAAAAAAA 0.3428571\n", "30 EEEEEEEE BBBBBBBB 0.3200000\n", "31 EEEEEEEE CCCCCCCC 0.4875000\n", "32 EEEEEEEE DDDDDDDD 0.5111111\n", "33 EEEEEEEE EEEEEEEE 0.5272727\n", "34 EEEEEEEE FFFFFFFF 0.5400000\n", "35 EEEEEEEE GGGGGGGG 0.6083333\n", "36 FFFFFFFF AAAAAAAA 0.4500000\n", "37 FFFFFFFF BBBBBBBB 0.6000000\n", "38 FFFFFFFF CCCCCCCC 0.4875000\n", "39 FFFFFFFF DDDDDDDD 0.3692308\n", "40 FFFFFFFF EEEEEEEE 0.6666667\n", "41 FFFFFFFF FFFFFFFF 0.4250000\n", "42 FFFFFFFF GGGGGGGG 0.4800000\n", "43 GGGGGGGG AAAAAAAA 0.6153846\n", "44 GGGGGGGG BBBBBBBB 0.4692308\n", "45 GGGGGGGG CCCCCCCC 0.6166667\n", "46 GGGGGGGG DDDDDDDD 0.5250000\n", "47 GGGGGGGG EEEEEEEE 0.4083333\n", "48 GGGGGGGG FFFFFFFF 0.4363636\n", "49 GGGGGGGG GGGGGGGG 0.3900000\n", "50 ZZZZZZZZ AAAAAAAA 0.4945205\n", "51 ZZZZZZZZ BBBBBBBB 0.5267606\n", "52 ZZZZZZZZ CCCCCCCC 0.4842105\n", "53 ZZZZZZZZ DDDDDDDD 0.4615385\n", "54 ZZZZZZZZ EEEEEEEE 0.5500000\n", "55 ZZZZZZZZ FFFFFFFF 0.5640000\n", "56 ZZZZZZZZ GGGGGGGG 0.3596491" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "two_by_vars <- scratch_dt[, mean(new_numeric), by = .(char1, char2)]\n", "two_by_vars[order(char1, char2)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### `.SD` represents all the variables except the by variable(s)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
char1keynew_numeric
GGGGGGGG 21394 41.4
FFFFFFFF 15475 31.9
EEEEEEEE 18120 38.0
CCCCCCCC 21529 41.5
BBBBBBBB 13509 31.6
DDDDDDDD 15001 28.8
AAAAAAAA 20222 41.5
ZZZZZZZZ375250 247.6
\n" ], "text/latex": [ "\\begin{tabular}{r|lll}\n", " char1 & key & new\\_numeric\\\\\n", "\\hline\n", "\t GGGGGGGG & 21394 & 41.4 \\\\\n", "\t FFFFFFFF & 15475 & 31.9 \\\\\n", "\t EEEEEEEE & 18120 & 38.0 \\\\\n", "\t CCCCCCCC & 21529 & 41.5 \\\\\n", "\t BBBBBBBB & 13509 & 31.6 \\\\\n", "\t DDDDDDDD & 15001 & 28.8 \\\\\n", "\t AAAAAAAA & 20222 & 41.5 \\\\\n", "\t ZZZZZZZZ & 375250 & 247.6 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " char1 key new_numeric\n", "1 GGGGGGGG 21394 41.4 \n", "2 FFFFFFFF 15475 31.9 \n", "3 EEEEEEEE 18120 38.0 \n", "4 CCCCCCCC 21529 41.5 \n", "5 BBBBBBBB 13509 31.6 \n", "6 DDDDDDDD 15001 28.8 \n", "7 AAAAAAAA 20222 41.5 \n", "8 ZZZZZZZZ 375250 247.6 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_dt2[, lapply(.SD, base::sum), by = char1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### `.N` can be used to find the first and last rows of each by group" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
char1keynew_numeric
GGGGGGGG 1 0.3
GGGGGGGG 500 0.6
FFFFFFFF 2 0.7
FFFFFFFF 485 0.5
EEEEEEEE 4 0.0
EEEEEEEE 490 0.1
CCCCCCCC 8 0.1
CCCCCCCC 498 0.6
BBBBBBBB 12 0.1
BBBBBBBB 496 0.3
DDDDDDDD 18 0.8
DDDDDDDD 470 0.6
AAAAAAAA 35 0.7
AAAAAAAA 499 0.9
ZZZZZZZZ 501 0.5
ZZZZZZZZ1000 0.2
\n" ], "text/latex": [ "\\begin{tabular}{r|lll}\n", " char1 & key & new\\_numeric\\\\\n", "\\hline\n", "\t GGGGGGGG & 1 & 0.3 \\\\\n", "\t GGGGGGGG & 500 & 0.6 \\\\\n", "\t FFFFFFFF & 2 & 0.7 \\\\\n", "\t FFFFFFFF & 485 & 0.5 \\\\\n", "\t EEEEEEEE & 4 & 0.0 \\\\\n", "\t EEEEEEEE & 490 & 0.1 \\\\\n", "\t CCCCCCCC & 8 & 0.1 \\\\\n", "\t CCCCCCCC & 498 & 0.6 \\\\\n", "\t BBBBBBBB & 12 & 0.1 \\\\\n", "\t BBBBBBBB & 496 & 0.3 \\\\\n", "\t DDDDDDDD & 18 & 0.8 \\\\\n", "\t DDDDDDDD & 470 & 0.6 \\\\\n", "\t AAAAAAAA & 35 & 0.7 \\\\\n", "\t AAAAAAAA & 499 & 0.9 \\\\\n", "\t ZZZZZZZZ & 501 & 0.5 \\\\\n", "\t ZZZZZZZZ & 1000 & 0.2 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " char1 key new_numeric\n", "1 GGGGGGGG 1 0.3 \n", "2 GGGGGGGG 500 0.6 \n", "3 FFFFFFFF 2 0.7 \n", "4 FFFFFFFF 485 0.5 \n", "5 EEEEEEEE 4 0.0 \n", "6 EEEEEEEE 490 0.1 \n", "7 CCCCCCCC 8 0.1 \n", "8 CCCCCCCC 498 0.6 \n", "9 BBBBBBBB 12 0.1 \n", "10 BBBBBBBB 496 0.3 \n", "11 DDDDDDDD 18 0.8 \n", "12 DDDDDDDD 470 0.6 \n", "13 AAAAAAAA 35 0.7 \n", "14 AAAAAAAA 499 0.9 \n", "15 ZZZZZZZZ 501 0.5 \n", "16 ZZZZZZZZ 1000 0.2 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scratch_dt2[, .SD[c(1, .N)], by = char1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 10. Operation chaining\n", "Operations can be chained for more concise syntax" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
char1new_numeric2
GGGGGGGG 41.4
CCCCCCCC 41.5
AAAAAAAA 41.5
ZZZZZZZZ247.6
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " char1 & new\\_numeric2\\\\\n", "\\hline\n", "\t GGGGGGGG & 41.4 \\\\\n", "\t CCCCCCCC & 41.5 \\\\\n", "\t AAAAAAAA & 41.5 \\\\\n", "\t ZZZZZZZZ & 247.6 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " char1 new_numeric2\n", "1 GGGGGGGG 41.4 \n", "2 CCCCCCCC 41.5 \n", "3 AAAAAAAA 41.5 \n", "4 ZZZZZZZZ 247.6 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# chaining - one line of code\n", "scratch_dt2[, .(new_numeric2 = sum(new_numeric)), by = char1][new_numeric2 > 40]" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\n", "
char1new_numeric2
GGGGGGGG 41.4
CCCCCCCC 41.5
AAAAAAAA 41.5
ZZZZZZZZ247.6
\n" ], "text/latex": [ "\\begin{tabular}{r|ll}\n", " char1 & new\\_numeric2\\\\\n", "\\hline\n", "\t GGGGGGGG & 41.4 \\\\\n", "\t CCCCCCCC & 41.5 \\\\\n", "\t AAAAAAAA & 41.5 \\\\\n", "\t ZZZZZZZZ & 247.6 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ " char1 new_numeric2\n", "1 GGGGGGGG 41.4 \n", "2 CCCCCCCC 41.5 \n", "3 AAAAAAAA 41.5 \n", "4 ZZZZZZZZ 247.6 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# no chaining - two lines of code\n", "scratch_dt3 <- scratch_dt2[, .(new_numeric2 = sum(new_numeric)), by = char1]\n", "scratch_dt3[new_numeric2 > 40]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 11. Transposing a table\n", "* Transposing a matrix simply switches row and columns values\n", "* Transposing a data.frame or data.table is more complex because of metadata associated with variable names and row indices" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " chr [1:6, 1:1000] \" 1\" \"0.2599966838\" \"0.469047098\" \"GGGGGGGG\" ...\n", " - attr(*, \"dimnames\")=List of 2\n", " ..$ : chr [1:6] \"key\" \"numeric1\" \"numeric2\" \"char1\" ...\n", " ..$ : NULL\n" ] } ], "source": [ "transposed = t(scratch_dt)\n", "str(transposed)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Often, instead of simply transposing, a data set will need to be reformatted in a **melt/stack** - **column split** - **cast** action described in Hadley Wickham's *Tidy Data*:\n", "https://www.jstatsoft.org/article/view/v059i10\n", "\n", "See also dcast.data.table and melt.data.table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 12. Exporting and importing a table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`data.table::fread` and `data.table::fwrite` allow for optimized file i/o\n", "* `fwrite` only availabe in data.table version > 1.9.7\n", "* available from http://Rdatatable.github.io/data.table" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# use fwrite to write a file \n", "fwrite(scratch_dt, 'scratch.csv')" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " key numeric1 numeric2 char1 char2 new_numeric\n", " 1: 1 0.51494785 0.767991723 FFFFFFFF FFFFFFFF 0.5\n", " 2: 2 0.36132422 0.868816448 FFFFFFFF DDDDDDDD 0.4\n", " 3: 3 0.71456376 0.160537094 GGGGGGGG AAAAAAAA 0.7\n", " 4: 4 0.64633263 0.550704608 BBBBBBBB CCCCCCCC 0.6\n", " 5: 5 0.11546163 0.044725391 AAAAAAAA CCCCCCCC 0.1\n", " --- \n", " 996: 996 0.49468994 0.908724921 ZZZZZZZZ EEEEEEEE 0.5\n", " 997: 997 0.07238554 0.560199407 ZZZZZZZZ GGGGGGGG 0.1\n", " 998: 998 0.03046075 0.008601266 ZZZZZZZZ GGGGGGGG 0.0\n", " 999: 999 0.12894029 0.381171830 ZZZZZZZZ BBBBBBBB 0.1\n", "1000: 1000 0.93970260 0.632544576 ZZZZZZZZ FFFFFFFF 0.9\n" ] } ], "source": [ "# use fread to read a file\n", "scratch_dt <- fread('scratch.csv')\n", "print(scratch_dt)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "R", "language": "R", "name": "ir" }, "language_info": { "codemirror_mode": "r", "file_extension": ".r", "mimetype": "text/x-r-source", "name": "R", "pygments_lexer": "r", "version": "3.3.2" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 01_basic_data_prep/src/notebooks/sas/SAS_Part_0_Base_SAS_PROC_SGPLOT.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# SAS: Part 0 - Base SAS, PROC SGPLOT" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## License\n", "\n", "Copyright (c) 2015 by SAS Institute Inc., Cary, NC 27513 USA \n", "\n", "Licensed under the Apache License, Version 2.0 (the \"License\");\n", "you may not use this file except in compliance with the License.\n", "You may obtain a copy of the License at\n", "\n", "http://www.apache.org/licenses/LICENSE-2.0\n", "\n", "Unless required by applicable law or agreed to in writing, software\n", "distributed under the License is distributed on an \"AS IS\" BASIS,\n", "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "See the License for the specific language governing permissions and\n", "limitations under the License. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "#### NOTE: these examples are meant for the free SAS University Edition\n", "* To install see: http://www.sas.com/en_us/software/university-edition.html\n", "* SAS University Edition includes SAS kernel for Jupyter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 1. SAS Output\n", "* The `_null_ data` step allows you to execute commands (like writing to the log) or to read a data set without creating a new data set\n", "* The `put` command outputs information to the log" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "

\n", "\n", "
11   ods listing close;ods html5 file=stdout options(bitmap_mode='inline') device=png; ods graphics on / outputfmt=png;
NOTE: Writing HTML5 Body file: STDOUT
12
13 data _null_;
14 put 'Hello world!'; /* put command to the log */
15 run;
Hello world!
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds

16 ods html5 close;ods listing;

17
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data _null_;\n", " put 'Hello world!'; /* put command to the log */\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Print the value of a variable to the log" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "

\n", "\n", "
19   ods listing close;ods html5 file=stdout options(bitmap_mode='inline') device=png; ods graphics on / outputfmt=png;
NOTE: Writing HTML5 Body file: STDOUT
20
21 data _null_;
22 x = 'Hello world!';
23 put x;
24 put x=; /* useful for debugging */
25 run;
Hello world!
x=Hello world!
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds

26 ods html5 close;ods listing;

27
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data _null_;\n", " x = 'Hello world!';\n", " put x;\n", " put x=; /* useful for debugging */\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### `file print` redirects the results to html in a Jupyter notebook" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The DATASTEP Procedure

\n", "
\n", "

FilePrint1

\n", "
\n",
       "Hello world!                                                                                                                        \n",
       "
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data _null_;\n", " file print; /* redirects the results to html*/\n", " put 'Hello world!';\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Logging information levels - use these prefixes to print color-coded information to the log" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "

\n", "\n", "
38   ods listing close;ods html5 file=stdout options(bitmap_mode='inline') device=png; ods graphics on / outputfmt=png;
NOTE: Writing HTML5 Body file: STDOUT
39
40 data _null_;
41 put 'NOTE: Hello world!';
42 put 'WARNING: Hello world!';
43 put 'ERROR: Hello world!';
44 run;
NOTE: Hello world!
WARNING: Hello world!
ERROR: Hello world!
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds

45 ods html5 close;ods listing;

46
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data _null_;\n", " put 'NOTE: Hello world!';\n", " put 'WARNING: Hello world!';\n", " put 'ERROR: Hello world!';\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### You can also use the put macro statement\n", "* SAS macro statements are often used for program flow control around `data` step statements and SAS procedures\n", "* This tutorial will only use simple macro statements" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "

\n", "\n", "
48   ods listing close;ods html5 file=stdout options(bitmap_mode='inline') device=png; ods graphics on / outputfmt=png;
NOTE: Writing HTML5 Body file: STDOUT
49
50 %put Hello world!;
Hello world!
51 %put NOTE: Hello world!;
NOTE: Hello world!
52 %put WARNING: Hello world!;
WARNING: Hello world!
53 %put ERROR: Hello world!;
ERROR: Hello world!
54 ods html5 close;ods listing;

55
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%put Hello world!;\n", "%put NOTE: Hello world!;\n", "%put WARNING: Hello world!;\n", "%put ERROR: Hello world!;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Macro variables are ALWAYS strings" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "

\n", "\n", "
57   ods listing close;ods html5 file=stdout options(bitmap_mode='inline') device=png; ods graphics on / outputfmt=png;
NOTE: Writing HTML5 Body file: STDOUT
58
59 %put 'Hello world!'; /* single quotes will be printed */
'Hello world!'
60 ods html5 close;ods listing;

61
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%put 'Hello world!'; /* single quotes will be printed */" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### The macro preprocessor resolves macro variables as text literals before `data` step code is executed\n", "* Single quotes PREVENT macro resolution\n", "* Double quotes ALLOW macro resolution" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "

\n", "\n", "
63   ods listing close;ods html5 file=stdout options(bitmap_mode='inline') device=png; ods graphics on / outputfmt=png;
NOTE: Writing HTML5 Body file: STDOUT
64
65 %let x = Hello world!;
66 %put &x;
Hello world!
67 %put '&x'; /* single quotes PREVENT macro resolution */
'&x'
68 %put "&x"; /* double quotes ALLOW macro resolution */
"Hello world!"
69 ods html5 close;ods listing;

70
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%let x = Hello world!;\n", "%put &x;\n", "%put '&x'; /* single quotes PREVENT macro resolution */\n", "%put \"&x\"; /* double quotes ALLOW macro resolution */" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 2. Generate a sample data set\n", "The SAS data set is the primary data structure in the SAS language\n", "* To simulate a sample data set for this example, macro variables are used to define the number of columns and rows\n", "* The size of data set is more typically defined by the size of the SAS data set(s) from which it is created" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "

\n", "\n", "
72   ods listing close;ods html5 file=stdout options(bitmap_mode='inline') device=png; ods graphics on / outputfmt=png;
NOTE: Writing HTML5 Body file: STDOUT
73
74 %let n_rows = 1000; /* define number of rows */
75 %let n_vars = 2; /* define number of character and numeric variables */
76 ods html5 close;ods listing;

77
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%let n_rows = 1000; /* define number of rows */\n", "%let n_vars = 2; /* define number of character and numeric variables */" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### The SAS `data` step is used to create and manipulate data sets" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "

\n", "\n", "
79   ods listing close;ods html5 file=stdout options(bitmap_mode='inline') device=png; ods graphics on / outputfmt=png;
NOTE: Writing HTML5 Body file: STDOUT
80
81 * options mprint; /* to see the macro variables resolve uncomment this line */
82 data scratch;
83
84 /* data sets can be made permanent by creating them in a library */
85 /* syntax: data <library>.<table> */
86 /* a library is like a database */
87 /* a library is usually directly mapped to a filesystem directory */
88 /* since a permanent library was not specified for the data set */
89 /* the scratch data set will be created in the temporary library, work */
90 /* it will be deleted when you leave SAS */
91
92 /* SAS is strongly typed - it is safest to declare variables */
93 /* using a length statement - especially for character variables */
94 /* $ denotes a character variable */
95
96 /* arrays are a data structure that can exist during the data step */
97 /* they are a reference to a group of variables */
98 /* horizontally across a data set */
99 /* $ denotes a character array */
100 /* do loops are often used in conjuction with arrays */
101 /* SAS arrays are indexed from 1, like R data structures */
102
103 /* a key is a variable with a unique value for each row */
104
105 /* mod() is the modulo function */
106 /* the %eval() macro function performs math operations */
107 /* before text substitution */
108
109 /* the drop statement removes variables from the output data set */
110
111 /* since you are not reading from a pre-existing data set */
112 /* you must output rows explicitly using the output statement */
113
114 length key 8 char1-char&n_vars $ 8 numeric1-numeric&n_vars 8;
115 text_draw = 'AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD EEEEEEEE FFFFFFFF GGGGGGGG';
116 array c $
116! char1-char&n_vars;
117 array n
117! numeric1-numeric&n_vars;
118 do i=1 to &n_rows;
119 key = i;
120 do j=1 to %eval(&n_vars);
121 /* assign a random value from text_draw */
122 /* to each element of the array c */
123 c[j] = scan(text_draw, floor(7*ranuni(12345)+1), ' ');
124 /* assign a random numeric value to each element of the n array */
125 /* ranuni() requires a seed value */
126 n[j] = ranuni(%eval(&n_rows*&n_vars));
127 end;
128 if mod(i, %eval(&n_rows/10)) = 0 then put 'Processing line ' i '...';
129 drop i j text_draw;
130 output;
131 end;
132 put 'Done.';
133 run;
Processing line 100 ...
Processing line 200 ...
Processing line 300 ...
Processing line 400 ...
Processing line 500 ...
Processing line 600 ...
Processing line 700 ...
Processing line 800 ...
Processing line 900 ...
Processing line 1000 ...
Done.
NOTE: The data set WORK.SCRATCH has 1000 observations and 5 variables.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.01 seconds

134 ods html5 close;ods listing;

135
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* options mprint; /* to see the macro variables resolve uncomment this line */\n", "data scratch;\n", "\n", " /* data sets can be made permanent by creating them in a library */\n", " /* syntax: data . */\n", " /* a library is like a database */\n", " /* a library is usually directly mapped to a filesystem directory */ \n", " /* since a permanent library was not specified for the data set */\n", " /* the scratch data set will be created in the temporary library, work */\n", " /* it will be deleted when you leave SAS */\n", "\n", " /* SAS is strongly typed - it is safest to declare variables */\n", " /* using a length statement - especially for character variables */\n", " /* $ denotes a character variable */\n", "\n", " /* arrays are a data structure that can exist during the data step */\n", " /* they are a reference to a group of variables */\n", " /* horizontally across a data set */\n", " /* $ denotes a character array */\n", " /* do loops are often used in conjuction with arrays */\n", " /* SAS arrays are indexed from 1, like R data structures */\n", "\n", " /* a key is a variable with a unique value for each row */\n", "\n", " /* mod() is the modulo function */\n", " /* the %eval() macro function performs math operations */\n", " /* before text substitution */\n", "\n", " /* the drop statement removes variables from the output data set */\n", "\n", " /* since you are not reading from a pre-existing data set */\n", " /* you must output rows explicitly using the output statement */\n", "\n", " length key 8 char1-char&n_vars $ 8 numeric1-numeric&n_vars 8;\n", " text_draw = 'AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD EEEEEEEE FFFFFFFF GGGGGGGG';\n", " array c $ char1-char&n_vars;\n", " array n numeric1-numeric&n_vars;\n", " do i=1 to &n_rows;\n", " key = i;\n", " do j=1 to %eval(&n_vars);\n", " /* assign a random value from text_draw */\n", " /* to each element of the array c */\n", " c[j] = scan(text_draw, floor(7*ranuni(12345)+1), ' ');\n", " /* assign a random numeric value to each element of the n array */\n", " /* ranuni() requires a seed value */\n", " n[j] = ranuni(%eval(&n_rows*&n_vars));\n", " end;\n", " if mod(i, %eval(&n_rows/10)) = 0 then put 'Processing line ' i '...';\n", " drop i j text_draw;\n", " output;\n", " end;\n", " put 'Done.';\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Use `PROC PRINT` to print the data set\n", "Procedure output is directed to html automatically in a Jupyter notebook" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.SCRATCH

\n", "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeychar1char2numeric1numeric2
11CCCCCCCCFFFFFFFF0.745190.27628
22BBBBBBBBAAAAAAAA0.728880.73432
33EEEEEEEEDDDDDDDD0.764080.18159
44BBBBBBBBDDDDDDDD0.393600.85949
55CCCCCCCCBBBBBBBB0.181290.23532
\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "/* (obs=) option enables setting the number of rows to print */\n", "proc print data=scratch (obs=5); run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 3. Basic data manipulation and analysis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Use `proc contents` to understand basic information about a data set" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The CONTENTS Procedure

\n", "
\n", "

The CONTENTS Procedure

\n", "
\n", "

WORK.SCRATCH

\n", "
\n", "

Attributes

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Data Set NameWORK.SCRATCHObservations1000
Member TypeDATAVariables5
EngineV9Indexes0
Created11/28/2016 01:56:19Observation Length40
Last Modified11/28/2016 01:56:19Deleted Observations0
Protection CompressedNO
Data Set Type SortedNO
Label   
Data RepresentationSOLARIS_X86_64, LINUX_X86_64, ALPHA_TRU64, LINUX_IA64  
Encodingutf-8 Unicode (UTF-8)  
\n", "
\n", "
\n", "

Engine/Host Information

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Engine/Host Dependent Information
Data Set Page Size65536
Number of Data Set Pages1
First Data Page1
Max Obs per Page1632
Obs in First Data Page1000
Number of Data Set Repairs0
Filename/tmp/SAS_work0F7300002FA6_localhost.localdomain/scratch.sas7bdat
Release Created9.0401M3
Host CreatedLinux
Inode Number277735
Access Permissionrw-r--r--
Owner Namesasdemo
File Size128KB
File Size (bytes)131072
\n", "
\n", "
\n", "

Variables

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Alphabetic List of Variables and Attributes
#VariableTypeLen
2char1Char8
3char2Char8
1keyNum8
4numeric1Num8
5numeric2Num8
\n", "
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc contents data=scratch; run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Use `PROC FREQ` to analyze categorical data" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The FREQ Procedure

\n", "
\n", "

The FREQ Procedure

\n", "
\n", "

NLevels

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Number of Variable Levels
VariableLevels
char17
char27
\n", "
\n", "
\n", "

Table char1

\n", "
\n", "

One-Way Frequencies

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
char1FrequencyPercentCumulative
Frequency
Cumulative
Percent
AAAAAAAA14314.3014314.30
BBBBBBBB14314.3028628.60
CCCCCCCC14914.9043543.50
DDDDDDDD14214.2057757.70
EEEEEEEE15215.2072972.90
FFFFFFFF13713.7086686.60
GGGGGGGG13413.401000100.00
\n", "
\n", "
\n", "

Distribution Plots

\n", "
\n", "

Frequency Plot

\n", "
\n", "\"Bar\n", "
\n", "
\n", "
\n", "
\n", "
\n", "

Table char2

\n", "
\n", "

One-Way Frequencies

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
char2FrequencyPercentCumulative
Frequency
Cumulative
Percent
AAAAAAAA13013.0013013.00
BBBBBBBB13513.5026526.50
CCCCCCCC16516.5043043.00
DDDDDDDD14114.1057157.10
EEEEEEEE14514.5071671.60
FFFFFFFF14214.2085885.80
GGGGGGGG14214.201000100.00
\n", "
\n", "
\n", "

Distribution Plots

\n", "
\n", "

Frequency Plot

\n", "
\n", "\"Bar\n", "
\n", "
\n", "
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc freq\n", " /* nlevels counts the discreet levels in each variable */\n", " /* the colon operator expands to include variable names with prefix char */\n", " data=scratch nlevels;\n", " /* request frequency bar charts for each variable */\n", " tables char: / plots=freqplot(type=bar);\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Use `PROC UNIVARIATE` to analyze numeric data" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "

Variable: numeric1

\n", "
\n", "

The UNIVARIATE Procedure

\n", "
\n", "

numeric1

\n", "
\n", "

Moments

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Moments
N1000Sum Weights1000
Mean0.50633821Sum Observations506.33821
Std Deviation0.28943761Variance0.08377413
Skewness-0.0121365Kurtosis-1.2171282
Uncorrected SS340.068739Corrected SS83.6903564
Coeff Variation57.1629012Std Error Mean0.00915282
\n", "
\n", "
\n", "

Basic Measures of Location and Variability

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Basic Statistical Measures
LocationVariability
Mean0.506338Std Deviation0.28944
Median0.496667Variance0.08377
Mode.Range0.99590
  Interquartile Range0.49767
\n", "
\n", "
\n", "

Tests For Location

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt55.32045Pr > |t|<.0001
SignM500Pr >= |M|<.0001
Signed RankS250250Pr >= |S|<.0001
\n", "
\n", "
\n", "

Quantiles

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Quantiles (Definition 5)
LevelQuantile
100% Max0.99999473
99%0.98796014
95%0.94980769
90%0.90868125
75% Q30.76605127
50% Median0.49666691
25% Q10.26838609
10%0.10392146
5%0.05273732
1%0.01445704
0% Min0.00409347
\n", "
\n", "
\n", "

Extreme Observations

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Extreme Observations
LowestHighest
ValueObsValueObs
0.004093472150.994379912
0.004337857090.995267483
0.005074687290.99624063
0.006100448630.998160191
0.006474254980.999995793
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "
\n", "
\n", "

Histogram 1

\n", "
\n", "

Panel 1

\n", "
\n", "\"Histogram\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "

Variable: numeric2

\n", "
\n", "
\n", "

numeric2

\n", "
\n", "

Moments

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Moments
N1000Sum Weights1000
Mean0.4982058Sum Observations498.205796
Std Deviation0.2863714Variance0.08200858
Skewness0.03568271Kurtosis-1.1339161
Uncorrected SS330.135587Corrected SS81.9265714
Coeff Variation57.4805441Std Error Mean0.00905586
\n", "
\n", "
\n", "

Basic Measures of Location and Variability

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Basic Statistical Measures
LocationVariability
Mean0.498206Std Deviation0.28637
Median0.488096Variance0.08201
Mode.Range0.99554
  Interquartile Range0.48204
\n", "
\n", "
\n", "

Tests For Location

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt55.01475Pr > |t|<.0001
SignM500Pr >= |M|<.0001
Signed RankS250250Pr >= |S|<.0001
\n", "
\n", "
\n", "

Quantiles

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Quantiles (Definition 5)
LevelQuantile
100% Max0.99859106
99%0.99375025
95%0.95629616
90%0.90871284
75% Q30.74257851
50% Median0.48809598
25% Q10.26053719
10%0.10560284
5%0.04079423
1%0.01021775
0% Min0.00304634
\n", "
\n", "
\n", "

Extreme Observations

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Extreme Observations
LowestHighest
ValueObsValueObs
0.00304634720.995486145
0.004504233960.995995888
0.00564384870.996861213
0.00698680530.997395355
0.007972653950.99859199
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "
\n", "
\n", "

Histogram 1

\n", "
\n", "

Panel 1

\n", "
\n", "\"Histogram\n", "
\n", "
\n", "
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc univariate\n", " data=scratch;\n", " /* request univariate statistics for variables names with prefix 'numeric'' */\n", " var numeric:;\n", " /* request histograms for the same variables */\n", " histogram numeric:;\n", " /* inset basic statistics on the histograms */\n", " inset min max mean / position=ne;\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 4. Basic data manipulation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Subsetting data sets by column using data set options" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.SCRATCH2

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obsnumeric1numeric2
10.745190.27628
20.728880.73432
30.764080.18159
40.393600.85949
50.181290.23532
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* create scratch2 set;\n", "data scratch2;\n", " /* set statement reads from a pre-existing data set */\n", " /* no output statement is required - this is more typical */\n", " /* using data set options: keep, drop, etc. is often more efficient than */\n", " /* corresponding data step statements */\n", " /* : notation */\n", " set scratch(keep=numeric:);\n", "run;\n", "\n", "* print first five rows;\n", "proc print data=scratch2(obs=5); run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Subsetting data sets by column using `data` step statements\n", "SAS `data` step supports in place overwrites of data" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.SCRATCH2

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obschar1char2
1CCCCCCCCFFFFFFFF
2BBBBBBBBAAAAAAAA
3EEEEEEEEDDDDDDDD
4BBBBBBBBDDDDDDDD
5CCCCCCCCBBBBBBBB
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* overwrite scratch2 set;\n", "data scratch2;\n", " /* ranges of vars specified using var - var syntax */\n", " set scratch(keep=char1-char&n_vars);\n", "run;\n", "\n", "* print first five rows;\n", "proc print data=scratch2(obs=5); run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Subsetting data sets by column using variable names" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.SCRATCH2

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeychar1numeric1
11CCCCCCCC0.74519
22BBBBBBBB0.72888
33EEEEEEEE0.76408
44BBBBBBBB0.39360
55CCCCCCCC0.18129
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* overwrite scratch2 set;\n", "data scratch2;\n", " /* by name */\n", " set scratch(keep=key numeric1 char1);\n", "run;\n", "\n", "* print first five rows;\n", "proc print data=scratch2(obs=5); run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Subset and modify columns" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.SCRATCH2

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeynew_char1new_numeric1trans_char1lag_numeric1
11CCCCCCCC0.74519CCCCCCCC.
22BBBBBBBB0.72888BBBBBBBB0.74519
33EEEEEEEE0.76408EEEEEEEE0.72888
44BBBBBBBB0.39360BBBBBBBB0.76408
55CCCCCCCC0.18129CCCCCCCC0.39360
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* select two columns and modify them with data step functions;\n", "* overwrite scratch2 set;\n", "data scratch2;\n", " /* use length statement to ensure correct length of trans_char1 */\n", " /* the lag function saves the value from the row above */\n", " /* lag will create a numeric missing ('.') value in the first row */\n", " /* tranwrd finds and replaces character values */\n", " set scratch(keep=key char1 numeric1\n", " rename=(char1=new_char1 numeric1=new_numeric1));\n", " length trans_char1 $8;\n", " lag_numeric1 = lag(new_numeric1);\n", " trans_char1 = tranwrd(new_char1, 'GGGGGGGG', 'foo');\n", "run;\n", "\n", "* print first five rows;\n", "* notice that '.' represents numeric missing in SAS;\n", "proc print data=scratch2(obs=5); run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Subsetting rows using the `where` data set option" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.SCRATCH3

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeynew_char1new_numeric1trans_char1lag_numeric1
11CCCCCCCC0.74519CCCCCCCC0
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* select only the first row and impute the missing value;\n", "* create scratch3 set;\n", "data scratch3;\n", " /* the where data set option can subset rows of data sets */\n", " /* there are MANY other ways to do this ... */\n", " set scratch2 (where=(key=1));\n", " lag_numeric1 = 0;\n", "run;\n", "\n", "* print;\n", "proc print data=scratch3; run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Subsetting rows using `data` step statements " ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.SCRATCH2

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeynew_char1new_numeric1trans_char1lag_numeric1
12BBBBBBBB0.72888BBBBBBBB0.74519
23EEEEEEEE0.76408EEEEEEEE0.72888
34BBBBBBBB0.39360BBBBBBBB0.76408
45CCCCCCCC0.18129CCCCCCCC0.39360
56BBBBBBBB0.56993BBBBBBBB0.18129
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* remove the problematic first row containing the missing value;\n", "* from scratch2 set;\n", "data scratch2;\n", " set scratch2;\n", " if key > 1;\n", "run;\n", "\n", "* print first five rows;\n", "proc print data=scratch2(obs=5); run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Combining data sets top-to-bottom using `PROC APPEND`" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "

\n", "\n", "
271  ods listing close;ods html5 file=stdout options(bitmap_mode='inline') device=png; ods graphics on / outputfmt=png;
NOTE: Writing HTML5 Body file: STDOUT
272
273 * add scratch3 to the bottom of scratch2;
274 proc append
275 base=scratch2 /* proc append does not read the base set */
276 data=scratch3; /* for performance reasons base set should be largest */
277 run;
NOTE: Appending WORK.SCRATCH3 to WORK.SCRATCH2.
NOTE: There were 1 observations read from the data set WORK.SCRATCH3.
NOTE: 1 observations added.
NOTE: The data set WORK.SCRATCH2 has 1000 observations and 5 variables.
NOTE: PROCEDURE APPEND used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds

278 ods html5 close;ods listing;

279
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* add scratch3 to the bottom of scratch2;\n", "proc append\n", " base=scratch2 /* proc append does not read the base set */\n", " data=scratch3; /* for performance reasons base set should be largest */\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Sorting data sets using `PROC SORT`" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.SCRATCH2

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeynew_char1new_numeric1trans_char1lag_numeric1
11CCCCCCCC0.74519CCCCCCCC0.00000
22BBBBBBBB0.72888BBBBBBBB0.74519
33EEEEEEEE0.76408EEEEEEEE0.72888
44BBBBBBBB0.39360BBBBBBBB0.76408
55CCCCCCCC0.18129CCCCCCCC0.39360
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* sort scratch2 in place;\n", "proc sort\n", " data=scratch2;\n", " by key; /* you must specificy a variables to sort by */\n", "run;\n", "\n", "* print first five rows;\n", "proc print data=scratch2(obs=5); run;" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.SCRATCH4

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeynew_char1new_numeric1trans_char1lag_numeric1
1729AAAAAAAA0.005075AAAAAAAA0.71008
2370AAAAAAAA0.012808AAAAAAAA0.40257
3965AAAAAAAA0.029816AAAAAAAA0.79305
4758AAAAAAAA0.043995AAAAAAAA0.77802
5383AAAAAAAA0.064970AAAAAAAA0.39526
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* create the new scratch4 set;\n", "proc sort\n", " data=scratch2\n", " out=scratch4; /* specifying an out set creates a new data set */\n", " by new_char1 new_numeric1; /* you can sort by many variables */\n", "run;\n", "\n", "* print first five rows;\n", "proc print data=scratch4(obs=5); run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Combining data sets side-by-side using the `data` step `merge` statement " ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.SCRATCH5

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeychar1char2numeric1numeric2new_char1new_numeric1trans_char1lag_numeric1
1729CCCCCCCCFFFFFFFF0.745190.27628AAAAAAAA0.005075AAAAAAAA0.71008
2370BBBBBBBBAAAAAAAA0.728880.73432AAAAAAAA0.012808AAAAAAAA0.40257
3965EEEEEEEEDDDDDDDD0.764080.18159AAAAAAAA0.029816AAAAAAAA0.79305
4758BBBBBBBBDDDDDDDD0.393600.85949AAAAAAAA0.043995AAAAAAAA0.77802
5383CCCCCCCCBBBBBBBB0.181290.23532AAAAAAAA0.064970AAAAAAAA0.39526
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* combining data sets side-by-side;\n", "* to create messy scratch5 set;\n", "data scratch5;\n", " /* merge simply attaches two or more data sets together side-by-side*/\n", " /* it overwrites common variables - be careful */\n", " merge scratch scratch4;\n", "run;\n", "\n", "* print first five rows;\n", "proc print data=scratch5(obs=5); run;" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.SCRATCH6

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeychar1char2numeric1numeric2new_char1new_numeric1trans_char1lag_numeric1
11CCCCCCCCFFFFFFFF0.745190.27628CCCCCCCC0.74519CCCCCCCC0.00000
22BBBBBBBBAAAAAAAA0.728880.73432BBBBBBBB0.72888BBBBBBBB0.74519
33EEEEEEEEDDDDDDDD0.764080.18159EEEEEEEE0.76408EEEEEEEE0.72888
44BBBBBBBBDDDDDDDD0.393600.85949BBBBBBBB0.39360BBBBBBBB0.76408
55CCCCCCCCBBBBBBBB0.181290.23532CCCCCCCC0.18129CCCCCCCC0.39360
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* join columns to scratch from scratch2 when key variable matches;\n", "* to create scratch6 correctly;\n", "data scratch6;\n", " /* merging with a by variable is safer */\n", " /* it requires that both sets be sorted */\n", " /* then rows are matched when key values are equal */\n", " /* very similar to SQL join */\n", " merge scratch scratch2;\n", " by key;\n", "run;\n", "\n", "* print first five rows;\n", "proc print data=scratch6(obs=5); run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Combining data sets side-by-side using `PROC SQL` \n", "`PROC SQL` allows the execution of SQL statements inside a SAS session" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.SCRATCH7

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeychar1char2numeric1numeric2new_char1new_numeric1trans_char1lag_numeric1
11CCCCCCCCFFFFFFFF0.745190.27628CCCCCCCC0.74519CCCCCCCC0.00000
22BBBBBBBBAAAAAAAA0.728880.73432BBBBBBBB0.72888BBBBBBBB0.74519
33EEEEEEEEDDDDDDDD0.764080.18159EEEEEEEE0.76408EEEEEEEE0.72888
44BBBBBBBBDDDDDDDD0.393600.85949BBBBBBBB0.39360BBBBBBBB0.76408
55CCCCCCCCBBBBBBBB0.181290.23532CCCCCCCC0.18129CCCCCCCC0.39360
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* nearly all common SQL statements and functions are supported by PROC SQL;\n", "* join columns to scratch from scratch2 when key variable matches;\n", "* to create scratch7 correctly;\n", "proc sql noprint; /* noprint suppresses procedure output */\n", " create table scratch7 as\n", " select *\n", " from scratch\n", " join scratch2\n", " on scratch.key = scratch2.key;\n", "quit;\n", "\n", "* print first five rows;\n", "proc print data=scratch7(obs=5); run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Comparing data sets using `PROC COMPARE`" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The COMPARE Procedure

\n", "
\n", "

Datasets

\n", "
\n",
       "                                                       The COMPARE Procedure                                                        \n",
       "                                           Comparison of WORK.SCRATCH6 with WORK.SCRATCH7                                           \n",
       "                                                           (Method=EXACT)                                                           \n",
       "                                                                                                                                    \n",
       "                                                         Data Set Summary                                                           \n",
       "                                                                                                                                    \n",
       "                                  Dataset                 Created          Modified  NVar    NObs                                   \n",
       "                                                                                                                                    \n",
       "                                  WORK.SCRATCH6  28NOV16:01:56:24  28NOV16:01:56:24     9    1000                                   \n",
       "                                  WORK.SCRATCH7  28NOV16:01:56:24  28NOV16:01:56:24     9    1000                                   \n",
       "                                                                                                                                    \n",
       "                                                                                                                                    \n",
       "                                                         Variables Summary                                                          \n",
       "                                                                                                                                    \n",
       "                                               Number of Variables in Common: 9.                                                    \n",
       "
\n", "
\n", "
\n", "

Summary

\n", "
\n",
       "                                                                                                                                    \n",
       "                                                                                                                                    \n",
       "                                                        Observation Summary                                                         \n",
       "                                                                                                                                    \n",
       "                                                   Observation      Base  Compare                                                   \n",
       "                                                                                                                                    \n",
       "                                                   First Obs           1        1                                                   \n",
       "                                                   Last  Obs        1000     1000                                                   \n",
       "                                                                                                                                    \n",
       "                                  Number of Observations in Common: 1000.                                                           \n",
       "                                  Total Number of Observations Read from WORK.SCRATCH6: 1000.                                       \n",
       "                                  Total Number of Observations Read from WORK.SCRATCH7: 1000.                                       \n",
       "                                                                                                                                    \n",
       "                                  Number of Observations with Some Compared Variables Unequal: 0.                                   \n",
       "                                  Number of Observations with All Compared Variables Equal: 1000.                                   \n",
       "                                                                                                                                    \n",
       "                                  NOTE: No unequal values were found. All values compared are exactly equal.                        \n",
       "                                                                                                                                    \n",
       "
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* results from data step merge with by variable and PROC SQL join;\n", "* should be equal;\n", "proc compare base=scratch6 compare=scratch7;\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Export data using `PROC EXPORT`" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "

\n", "\n", "
368  ods listing close;ods html5 file=stdout options(bitmap_mode='inline') device=png; ods graphics on / outputfmt=png;
NOTE: Writing HTML5 Body file: STDOUT
369
370 * export data set to create a csv file;
371 * to default directory;
372 proc export
373 data=scratch7
374 outfile='scratch.csv'
375 dbms=csv
376 /* replace an existing file with that name */
377 replace;
378 run;
ERROR: Expecting page 1, got page -1 instead.
ERROR: Page validation error while reading SASUSER.PROFILE.CATALOG.
NOTE: Unable to open SASUSER.PROFILE. WORK.PROFILE will be opened instead.
NOTE: All profile changes will be lost at the end of the session.
379 /**********************************************************************
380 * PRODUCT: SAS
381 * VERSION: 9.4
382 * CREATOR: External File Interface
383 * DATE: 28NOV16
384 * DESC: Generated SAS Datastep Code
385 * TEMPLATE SOURCE: (None Specified.)
386 ***********************************************************************/
387 data _null_;
388 %let _EFIERR_ = 0; /* set the ERROR detection macro variable */
389 %let _EFIREC_ = 0; /* clear export record count macro variable */
390 file 'scratch.csv' delimiter=',' DSD DROPOVER lrecl=32767;
391 if _n_ = 1 then /* write column names or labels */
392 do;
393 put
394 "key"
395 ','
396 "char1"
397 ','
398 "char2"
399 ','
400 "numeric1"
401 ','
402 "numeric2"
403 ','
404 "new_char1"
405 ','
406 "new_numeric1"
407 ','
408 "trans_char1"
409 ','
410 "lag_numeric1"
411 ;
412 end;
413 set SCRATCH7 end=EFIEOD;
414 format key best12. ;
415 format char1 $8. ;
416 format char2 $8. ;
417 format numeric1 best12. ;
418 format numeric2 best12. ;
419 format new_char1 $8. ;
420 format new_numeric1 best12. ;
421 format trans_char1 $8. ;
422 format lag_numeric1 best12. ;
423 do;
424 EFIOUT + 1;
425 put key @;
426 put char1 $ @;
427 put char2 $ @;
428 put numeric1 @;
429 put numeric2 @;
430 put new_char1 $ @;
431 put new_numeric1 @;
432 put trans_char1 $ @;
433 put lag_numeric1 ;
434 ;
435 end;
436 if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */
437 if EFIEOD then call symputx('_EFIREC_',EFIOUT);
438 run;
NOTE: The file 'scratch.csv' is:
Filename=/folders/myfolders/scratch.csv,
Owner Name=sasdemo,Group Name=sas,
Access Permission=-rw-r--r--,
Last Modified=28Nov2016:01:56:23

NOTE: 1001 records were written to the file 'scratch.csv'.
The minimum record length was 75.
The maximum record length was 92.
NOTE: There were 1000 observations read from the data set WORK.SCRATCH7.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds

1000 records created in scratch.csv from SCRATCH7.


NOTE: "scratch.csv" file was successfully created.
NOTE: PROCEDURE EXPORT used (Total process time):
real time 0.04 seconds
cpu time 0.04 seconds

439 ods html5 close;ods listing;

440
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* export data set to create a csv file;\n", "* to default directory;\n", "proc export\n", " data=scratch7\n", " outfile='scratch.csv'\n", " dbms=csv\n", " /* replace an existing file with that name */\n", " replace;\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Import data using `PROC IMPORT`" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "

\n", "\n", "
442  ods listing close;ods html5 file=stdout options(bitmap_mode='inline') device=png; ods graphics on / outputfmt=png;
NOTE: Writing HTML5 Body file: STDOUT
443
444 * import data set;
445 * from default directory;
446 * from the csv file;
447 * to overwrite scratch7 set;
448 proc import
449 /* import from scratch7.csv */
450 datafile='scratch.csv'
451 /* create a sas table in the work library */
452 out=scratch7
453 /* from a csv file */
454 dbms=csv
455 /* replace an existing data set with that name */
456 replace;
457 run;
458 /**********************************************************************
459 * PRODUCT: SAS
460 * VERSION: 9.4
461 * CREATOR: External File Interface
462 * DATE: 28NOV16
463 * DESC: Generated SAS Datastep Code
464 * TEMPLATE SOURCE: (None Specified.)
465 ***********************************************************************/
466 data WORK.SCRATCH7 ;
467 %let _EFIERR_ = 0; /* set the ERROR detection macro variable */
468 infile 'scratch.csv' delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2 ;
469 informat key best32. ;
470 informat char1 $8. ;
471 informat char2 $8. ;
472 informat numeric1 best32. ;
473 informat numeric2 best32. ;
474 informat new_char1 $8. ;
475 informat new_numeric1 best32. ;
476 informat trans_char1 $8. ;
477 informat lag_numeric1 best32. ;
478 format key best12. ;
479 format char1 $8. ;
480 format char2 $8. ;
481 format numeric1 best12. ;
482 format numeric2 best12. ;
483 format new_char1 $8. ;
484 format new_numeric1 best12. ;
485 format trans_char1 $8. ;
486 format lag_numeric1 best12. ;
487 input
488 key
489 char1 $
490 char2 $
491 numeric1
492 numeric2
493 new_char1 $
494 new_numeric1
495 trans_char1 $
496 lag_numeric1
497 ;
498 if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */
499 run;
NOTE: The infile 'scratch.csv' is:
Filename=/folders/myfolders/scratch.csv,
Owner Name=sasdemo,Group Name=sas,
Access Permission=-rw-r--r--,
Last Modified=28Nov2016:01:56:23,
File Size (bytes)=90834

NOTE: 1000 records were read from the infile 'scratch.csv'.
The minimum record length was 75.
The maximum record length was 92.
NOTE: The data set WORK.SCRATCH7 has 1000 observations and 9 variables.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.01 seconds

1000 rows created in WORK.SCRATCH7 from scratch.csv.



NOTE: WORK.SCRATCH7 data set was successfully created.
NOTE: The data set WORK.SCRATCH7 has 1000 observations and 9 variables.
NOTE: PROCEDURE IMPORT used (Total process time):
real time 0.03 seconds
cpu time 0.03 seconds

500 ods html5 close;ods listing;

501
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* import data set;\n", "* from default directory;\n", "* from the csv file;\n", "* to overwrite scratch7 set;\n", "proc import\n", " /* import from scratch7.csv */\n", " datafile='scratch.csv'\n", " /* create a sas table in the work library */\n", " out=scratch7\n", " /* from a csv file */\n", " dbms=csv\n", " /* replace an existing data set with that name */\n", " replace;\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### By group processing in the `data` step" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.SCRATCH8

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeynew_char1new_numeric1trans_char1lag_numeric1count
1962AAAAAAAA0.99264AAAAAAAA0.075291
2201BBBBBBBB0.98891BBBBBBBB0.716652
3191CCCCCCCC0.99816CCCCCCCC0.849663
4597DDDDDDDD0.98891DDDDDDDD0.826144
5793EEEEEEEE0.99999EEEEEEEE0.118735
663FFFFFFFF0.99624FFFFFFFF0.029606
7456GGGGGGGG0.97751foo0.289077
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* by variables can be used in the data step;\n", "* the data set must be sorted;\n", "* create scratch8 summary set;\n", "data scratch8;\n", " set scratch4;\n", " by new_char1 new_numeric1;\n", " retain count 0; /* retained variables are remembered from row-to-row */\n", " if last.new_char1 then do; /* first. and last. can be used with by vars */\n", " count + 1; /* shorthand to increment a retained variable */\n", " output; /* output the last row of a sorted by group */\n", " end;\n", "run;\n", "\n", "* using PROC PRINT without the data= option prints the most recent set;\n", "proc print; run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### By group processing in SAS procedures" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "

Variable: lag_numeric1

\n", "
\n", "

The UNIVARIATE Procedure

\n", "
\n", "

new_char1=AAAAAAAA

\n", "
\n", "

lag_numeric1

\n", "
\n", "

Moments

\n", "

new_char1=AAAAAAAA

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Moments
N143Sum Weights143
Mean0.49071887Sum Observations70.1727988
Std Deviation0.29483857Variance0.08692978
Skewness0.13096455Kurtosis-1.2282289
Uncorrected SS46.7791457Corrected SS12.3440289
Coeff Variation60.0829894Std Error Mean0.02465564
\n", "
\n", "
\n", "

Basic Measures of Location and Variability

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Basic Statistical Measures
LocationVariability
Mean0.490719Std Deviation0.29484
Median0.430797Variance0.08693
Mode.Range0.98457
  Interquartile Range0.52836
\n", "
\n", "
\n", "

Tests For Location

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt19.90291Pr > |t|<.0001
SignM71.5Pr >= |M|<.0001
Signed RankS5148Pr >= |S|<.0001
\n", "
\n", "
\n", "

Quantiles

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Quantiles (Definition 5)
LevelQuantile
100% Max0.98890576
99%0.98655522
95%0.96006550
90%0.92620130
75% Q30.77802470
50% Median0.43079665
25% Q10.24966709
10%0.10271068
5%0.06484634
1%0.00610044
0% Min0.00433785
\n", "
\n", "
\n", "

Extreme Observations

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Extreme Observations
LowestHighest
ValueObsValueObs
0.004337851170.96718834
0.00610044750.97450716
0.00647425490.97850499
0.014056151260.98655562
0.0245728490.98890618
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "
\n", "
\n", "

Histogram 1

\n", "
\n", "

Panel 1

\n", "

new_char1=AAAAAAAA

\n", "
\n", "\"Histogram\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "

Variable: lag_numeric1

\n", "
\n", "
\n", "

new_char1=BBBBBBBB

\n", "
\n", "

lag_numeric1

\n", "
\n", "

Moments

\n", "

new_char1=BBBBBBBB

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Moments
N143Sum Weights143
Mean0.53527493Sum Observations76.544315
Std Deviation0.29608721Variance0.08766764
Skewness-0.1741468Kurtosis-1.2955583
Uncorrected SS53.4210573Corrected SS12.4488044
Coeff Variation55.3149782Std Error Mean0.02476006
\n", "
\n", "
\n", "

Basic Measures of Location and Variability

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Basic Statistical Measures
LocationVariability
Mean0.535275Std Deviation0.29609
Median0.548172Variance0.08767
Mode.Range0.97268
  Interquartile Range0.55076
\n", "
\n", "
\n", "

Tests For Location

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt21.61849Pr > |t|<.0001
SignM71.5Pr >= |M|<.0001
Signed RankS5148Pr >= |S|<.0001
\n", "
\n", "
\n", "

Quantiles

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Quantiles (Definition 5)
LevelQuantile
100% Max0.9856062
99%0.9844003
95%0.9629953
90%0.9016123
75% Q30.8079205
50% Median0.5481721
25% Q10.2571620
10%0.1145349
5%0.0580258
1%0.0193226
0% Min0.0129249
\n", "
\n", "
\n", "

Extreme Observations

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Extreme Observations
LowestHighest
ValueObsValueObs
0.01292492760.968072222
0.01932262480.973458170
0.02964551890.981268269
0.03923631740.984400282
0.04314492100.985606278
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "
\n", "
\n", "

Histogram 1

\n", "
\n", "

Panel 1

\n", "

new_char1=BBBBBBBB

\n", "
\n", "\"Histogram\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "

Variable: lag_numeric1

\n", "
\n", "
\n", "

new_char1=CCCCCCCC

\n", "
\n", "

lag_numeric1

\n", "
\n", "

Moments

\n", "

new_char1=CCCCCCCC

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Moments
N149Sum Weights149
Mean0.51844134Sum Observations77.2477597
Std Deviation0.30300948Variance0.09181474
Skewness-0.0848525Kurtosis-1.2553408
Uncorrected SS53.637014Corrected SS13.5885819
Coeff Variation58.4462411Std Error Mean0.0248235
\n", "
\n", "
\n", "

Basic Measures of Location and Variability

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Basic Statistical Measures
LocationVariability
Mean0.518441Std Deviation0.30301
Median0.545160Variance0.09181
Mode.Range0.99367
  Interquartile Range0.52698
\n", "
\n", "
\n", "

Tests For Location

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt20.8851Pr > |t|<.0001
SignM74Pr >= |M|<.0001
Signed RankS5513Pr >= |S|<.0001
\n", "
\n", "
\n", "

Quantiles

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Quantiles (Definition 5)
LevelQuantile
100% Max0.99366507
99%0.99113039
95%0.97016056
90%0.93772714
75% Q30.78893718
50% Median0.54515967
25% Q10.26196195
10%0.09154551
5%0.03813221
1%0.00507468
0% Min0.00000000
\n", "
\n", "
\n", "

Extreme Observations

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Extreme Observations
LowestHighest
ValueObsValueObs
0.000000004020.981746289
0.005074684290.984780384
0.010141113610.987015303
0.016296932910.991130382
0.018980683780.993665298
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "
\n", "
\n", "

Histogram 1

\n", "
\n", "

Panel 1

\n", "

new_char1=CCCCCCCC

\n", "
\n", "\"Histogram\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "

Variable: lag_numeric1

\n", "
\n", "
\n", "

new_char1=DDDDDDDD

\n", "
\n", "

lag_numeric1

\n", "
\n", "

Moments

\n", "

new_char1=DDDDDDDD

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Moments
N142Sum Weights142
Mean0.5209562Sum Observations73.9757808
Std Deviation0.28497267Variance0.08120942
Skewness-0.2170349Kurtosis-1.1551723
Uncorrected SS49.9886703Corrected SS11.4505284
Coeff Variation54.7018476Std Error Mean0.02391438
\n", "
\n", "
\n", "

Basic Measures of Location and Variability

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Basic Statistical Measures
LocationVariability
Mean0.520956Std Deviation0.28497
Median0.578337Variance0.08121
Mode.Range0.98069
  Interquartile Range0.50251
\n", "
\n", "
\n", "

Tests For Location

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt21.78423Pr > |t|<.0001
SignM71Pr >= |M|<.0001
Signed RankS5076.5Pr >= |S|<.0001
\n", "
\n", "
\n", "

Quantiles

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Quantiles (Definition 5)
LevelQuantile
100% Max0.98477907
99%0.97048743
95%0.92748484
90%0.89918963
75% Q30.75668994
50% Median0.57833705
25% Q10.25417622
10%0.08992516
5%0.05752626
1%0.01591177
0% Min0.00409347
\n", "
\n", "
\n", "

Extreme Observations

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Extreme Observations
LowestHighest
ValueObsValueObs
0.004093475300.935270491
0.015911775040.953484445
0.032195715290.969972537
0.033171374390.970487559
0.044766075720.984779521
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "
\n", "
\n", "

Histogram 1

\n", "
\n", "

Panel 1

\n", "

new_char1=DDDDDDDD

\n", "
\n", "\"Histogram\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "

Variable: lag_numeric1

\n", "
\n", "
\n", "

new_char1=EEEEEEEE

\n", "
\n", "

lag_numeric1

\n", "
\n", "

Moments

\n", "

new_char1=EEEEEEEE

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Moments
N152Sum Weights152
Mean0.50392372Sum Observations76.5964058
Std Deviation0.30547624Variance0.09331573
Skewness0.05104127Kurtosis-1.359438
Uncorrected SS52.6894218Corrected SS14.0906759
Coeff Variation60.6195399Std Error Mean0.0247774
\n", "
\n", "
\n", "

Basic Measures of Location and Variability

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Basic Statistical Measures
LocationVariability
Mean0.503924Std Deviation0.30548
Median0.472996Variance0.09332
Mode.Range0.97934
  Interquartile Range0.56091
\n", "
\n", "
\n", "

Tests For Location

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt20.33804Pr > |t|<.0001
SignM76Pr >= |M|<.0001
Signed RankS5814Pr >= |S|<.0001
\n", "
\n", "
\n", "

Quantiles

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Quantiles (Definition 5)
LevelQuantile
100% Max0.9999947
99%0.9981595
95%0.9686054
90%0.9213424
75% Q30.7869107
50% Median0.4729956
25% Q10.2260008
10%0.1094131
5%0.0597403
1%0.0274655
0% Min0.0206584
\n", "
\n", "
\n", "

Extreme Observations

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Extreme Observations
LowestHighest
ValueObsValueObs
0.02065846470.988909636
0.02746556480.994379674
0.03397276090.995267723
0.03492326510.998160678
0.03761346640.999995721
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "
\n", "
\n", "

Histogram 1

\n", "
\n", "

Panel 1

\n", "

new_char1=EEEEEEEE

\n", "
\n", "\"Histogram\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "

Variable: lag_numeric1

\n", "
\n", "
\n", "

new_char1=FFFFFFFF

\n", "
\n", "

lag_numeric1

\n", "
\n", "

Moments

\n", "

new_char1=FFFFFFFF

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Moments
N137Sum Weights137
Mean0.48863056Sum Observations66.9423872
Std Deviation0.27619572Variance0.07628408
Skewness-0.0498362Kurtosis-1.0731154
Uncorrected SS43.084731Corrected SS10.3746346
Coeff Variation56.524447Std Error Mean0.02359699
\n", "
\n", "
\n", "

Basic Measures of Location and Variability

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Basic Statistical Measures
LocationVariability
Mean0.488631Std Deviation0.27620
Median0.475913Variance0.07628
Mode.Range0.98572
  Interquartile Range0.44419
\n", "
\n", "
\n", "

Tests For Location

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt20.70732Pr > |t|<.0001
SignM68.5Pr >= |M|<.0001
Signed RankS4726.5Pr >= |S|<.0001
\n", "
\n", "
\n", "

Quantiles

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Quantiles (Definition 5)
LevelQuantile
100% Max0.9962396
99%0.9734552
95%0.9105424
90%0.8545792
75% Q30.7400244
50% Median0.4759132
25% Q10.2958376
10%0.0941431
5%0.0296041
1%0.0128085
0% Min0.0105241
\n", "
\n", "
\n", "

Extreme Observations

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Extreme Observations
LowestHighest
ValueObsValueObs
0.01052417850.920413766
0.01280857460.949874786
0.01555658000.966347845
0.01657468380.973455806
0.01842938010.996240813
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "
\n", "
\n", "

Histogram 1

\n", "
\n", "

Panel 1

\n", "

new_char1=FFFFFFFF

\n", "
\n", "\"Histogram\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "

Variable: lag_numeric1

\n", "
\n", "
\n", "

new_char1=GGGGGGGG

\n", "
\n", "

lag_numeric1

\n", "
\n", "

Moments

\n", "

new_char1=GGGGGGGG

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Moments
N134Sum Weights134
Mean0.48282754Sum Observations64.69889
Std Deviation0.26307513Variance0.06920853
Skewness0.23125403Kurtosis-0.9008902
Uncorrected SS40.4431397Corrected SS9.20473394
Coeff Variation54.4863566Std Error Mean0.02272623
\n", "
\n", "
\n", "

Basic Measures of Location and Variability

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Basic Statistical Measures
LocationVariability
Mean0.482828Std Deviation0.26308
Median0.451759Variance0.06921
Mode.Range0.97778
  Interquartile Range0.40099
\n", "
\n", "
\n", "

Tests For Location

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt21.24539Pr > |t|<.0001
SignM67Pr >= |M|<.0001
Signed RankS4522.5Pr >= |S|<.0001
\n", "
\n", "
\n", "

Quantiles

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Quantiles (Definition 5)
LevelQuantile
100% Max0.9926352
99%0.9775109
95%0.9349751
90%0.8826924
75% Q30.7133919
50% Median0.4517587
25% Q10.3123979
10%0.1230748
5%0.0749330
1%0.0296565
0% Min0.0148579
\n", "
\n", "
\n", "

Extreme Observations

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Extreme Observations
LowestHighest
ValueObsValueObs
0.01485798950.957998881
0.02965659820.966782975
0.04836129220.976707986
0.05150948890.977511944
0.05386308940.992635917
\n", "
\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "
\n", "

The UNIVARIATE Procedure

\n", "
\n", "
\n", "

Histogram 1

\n", "
\n", "

Panel 1

\n", "

new_char1=GGGGGGGG

\n", "
\n", "\"Histogram\n", "
\n", "
\n", "
\n", "
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* by variables can be used efficiently in most procedures;\n", "* the data set must be sorted;\n", "proc univariate\n", " data=scratch4;\n", " var lag_numeric1;\n", " histogram lag_numeric1;\n", " inset min max mean / position=ne;\n", " by new_char1;\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Transposing a table\n", "* Transposing a matrix simply switches row and columns values\n", "* Transposing a SAS data set is more complex because of metadata associated with variable names" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.SCRATCH8

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obs_NAME_COL1COL2COL3COL4COL5
1key1.000002.000003.000004.000005.00000
2numeric10.745190.728880.764080.393600.18129
3numeric20.276280.734320.181590.859490.23532
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "* transpose;\n", "proc transpose \n", " data=scratch\n", " out=scratch8;\n", "run;\n", "\n", "* print;\n", "proc print; var _NAME_ col1-col5; run; " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Often, instead of simply transposing, a data set will need to be reformatted in a **melt/stack** - **column split** - **cast** action described in Tidy Data by\n", "Hadley Wickham: \n", "https://www.jstatsoft.org/article/view/v059i10\n", "\n", "See also: https://github.com/sassoftware/enlighten-apply/tree/master/SAS_UE_TidyData\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 5. Generating plots with `PROC SGPLOT`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Histograms with PROC SGPLOT" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "

The SGPLOT Procedure

\n", "
\n", "

The SGPlot Procedure

\n", "
\n", "\"The\n", "
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc sgplot\n", " /* sashelp.iris is a sample data set */\n", " /* binwidth - bin width in terms of histogram variable */\n", " /* datalabel - display counts or percents for each bin */\n", " /* showbins - use bins to determine x-axis tickmarks */\n", " data=sashelp.iris;\n", " histogram petalwidth /\n", " binwidth=2\n", " datalabel=count\n", " showbins;\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Bubble plots with PROC SGPLOT " ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "

The SGPLOT Procedure

\n", "
\n", "

The SGPlot Procedure

\n", "
\n", "\"The\n", "
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc sgplot\n", " /* group - color by a categorical variable */\n", " /* lineattrs - sets the bubble outline color and other outline attributes */\n", " data=sashelp.iris;\n", " bubble x=petalwidth y=petallength size=sepallength /\n", " group=species\n", " lineattrs=(color=grey);\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Scatter plot with regression overlay using `PROC SGPLOT`" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "

The SGPLOT Procedure

\n", "
\n", "

The SGPlot Procedure

\n", "
\n", "\"The\n", "
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc sgplot\n", " /* clm - confidence limits for mean predicted values */\n", " /* cli - prediction limits for individual predicted values */\n", " /* alpha - set threshold for clm and cli limits */\n", " data=sashelp.iris;\n", " reg x=petalwidth y=petallength /\n", " clm cli alpha=0.1;\n", "run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Stack bar chart with `PROC SGPLOT`" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "

The SGPLOT Procedure

\n", "
\n", "

The SGPlot Procedure

\n", "
\n", "\"The\n", "
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc sgplot\n", " /* sashelp.cars is a sample data set */\n", " /* vbar variable on x-axis */\n", " /* group - splits vertical bars */\n", " /* add title */\n", " data=sashelp.cars;\n", " vbar type / group=origin;\n", " title 'Car Types by Country of Origin';\n", "run;" ] } ], "metadata": { "kernelspec": { "display_name": "SAS", "language": "sas", "name": "sas" }, "language_info": { "codemirror_mode": "sas", "file_extension": ".sas", "mimetype": "text/x-sas", "name": "sas" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: 01_basic_data_prep/src/notebooks/sas/SAS_Part_1_PROC_SQL.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# SAS: Part 1 - PROC SQL" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "#### NOTE: these examples are meant for the free SAS University Edition\n", "* To install see: http://www.sas.com/en_us/software/university-edition.html\n", "* SAS University Edition includes SAS kernel for Jupyter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 1. Generate sample data set \n", "##### Generate some small example tables using SAS `data` step\n", "* `table1` has a primary key called `key` and two numeric variables: `x1` and `x2`\n", "* `table1` is located in the SAS work library, it could be called `work.table1`" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.TABLE1

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeyx1x2
111011
222012
333013
444014
555015
666016
777017
888018
999019
101010020
111111021
121212022
131313023
141414024
151515025
161616026
171717027
181818028
191919029
202020030
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data table1; \n", " do key=1 to 20;\n", " x1 = key * 10; \n", " x2 = key + 10;\n", " output;\n", " end; \n", "run; \n", "proc print; run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* `table2` has a primary key called `key` and two character variables: `x3` and `x4`\n", "* `table2` is located in the SAS work library, it could be called `work.table2`" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.TABLE2

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeyx3x4
12ak
24bl
36cm
48dn
510eo
612fp
714gq
816hr
918is
1020jt
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data table2; \n", " do key=2 to 20 by 2; \n", " x3 = scan('a b c d e f g h i j', key/2);\n", " x4 = scan('k l m n o p q r s t', key/2);\n", " output;\n", " end; \n", "run;\n", "proc print; run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "## 2. Data manipulation with `PROC SQL`\n", "* SAS `PROC SQL` allows users to execute valid SQL statements from a SAS session\n", "* In a more typical SQL environment the `PROC SQL` and `quit` statements would be unnecessary and unrecognized\n", "##### Query `x1` from `table`" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The SQL Procedure

\n", "
\n", "

Query Results

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
x1
10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc sql;\n", "\n", " select x1 from work.table1; \n", "\n", "quit; " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Creating a new table using `PROC SQL`\n", "* create `table3` in the work library/database\n", "* `x1` from `table1` will be named `x5` in the new table" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.TABLE3

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeyx5
1110
2220
3330
4440
5550
6660
7770
8880
9990
1010100
1111110
1212120
1313130
1414140
1515150
1616160
1717170
1818180
1919190
2020200
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc sql; \n", "\n", " create table table3 as \n", " select key, x1 as x5\n", " from table1;\n", "\n", "quit;\n", "proc print data=table3; run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Subsetting tables with a `where` clause\n", "* a `where` clause is used to subset rows of a table\n", "* the `order` by statement sorts displayed results or created tables\n", "* `desc` refers to descending sort order" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.TABLE4

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeyx6
11020
2919
3818
4717
5616
6515
7414
8313
9212
10111
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc sql;\n", "\n", " create table table4 as \n", " select key, x2 as x6 \n", " from table1 \n", " where key <= 10\n", " order by x6 desc;\n", "\n", "quit;\n", "proc print data=table4; run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Updating data with `PROC SQL`\n", "##### `insert` statement" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.TABLE1

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeyx1x2
111011
222012
333013
444014
555015
666016
777017
888018
999019
101010020
111111021
121212022
131313023
141414024
151515025
161616026
171717027
181818028
191919029
202020030
212121031
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc sql;\n", "\n", " * insert can be used to add data to a table;\n", " insert into table1\n", " values (21, 210, 31);\n", "\n", "quit;\n", "proc print data=table1; run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### `PROC SQL` supports in place over writing of data\n", "#### `update` statement" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.TABLE1

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeyx1x2
111011
222012
333013
444014
555015
666016
766016
888018
999019
101010020
111111021
121212022
131313023
141414024
151515025
161616026
171717027
181818028
191919029
202020030
212121031
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc sql;\n", "\n", " * update can be used to change the value of previously existing data;\n", " update table1\n", " set key = 6, x1 = 60, x2 = 16\n", " where key = 7;\n", "\n", "quit;\n", "proc print data=table1; run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Joining tables using `PROC SQL`\n", "##### Inner joins\n", "* An inner join only retains rows from both tables where key values match\n", "* Inner join is the default behavior of the `join` statement" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.TABLE5

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeyx1x2x3x4
122012ak
244014bl
366016cm
466016cm
588018dn
61010020eo
71212022fp
81414024gq
91616026hr
101818028is
112020030jt
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc sql; \n", "\n", " create table table5 as\n", " select * \n", " from table1\n", " join table2\n", " on table1.key = table2.key; \n", "\n", "quit;\n", "proc print data=table5; run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Left joins\n", "* Left joins retain all the rows from one table, the left table\n", "* Left joins only retain rows where key values match from the other table, the right table\n", "* Aliases can also be used for tables" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.TABLE6

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeyx1x2x3x4
111011    
222012ak
333013    
444014bl
555015    
666016cm
766016cm
888018dn
999019    
101010020eo
111111021    
121212022fp
131313023    
141414024gq
151515025    
161616026hr
171717027    
181818028is
191919029    
202020030jt
212121031    
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc sql;\n", "\n", " create table table6 as \n", " select * \n", " from table1 as t1 /* left table */\n", " left join table2 as t2 /* right table */\n", " on t1.key = t2.key;\n", "\n", "quit;\n", "proc print data=table6; run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Aggregating data using `PROC SQL`\n", "* The `where` statement cannot be used with aggregate functions\n", "* Instead use the having statement\n", "* `where sum_x1 > 100` would cause errors in this query" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The PRINT Procedure

\n", "
\n", "

Data Set WORK.TABLE7

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Obskeysum_x1
16120
211110
312120
413130
514140
615150
716160
817170
918180
1019190
1120200
1221210
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc sql;\n", "\n", " create table table7 as\n", " select key, sum(x1) as sum_x1\n", " from table1 \n", " group by key\n", " having sum_x1 > 100;\n", "\n", "quit;\n", "proc print data=table7; run;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Subqueries\n", "A subquery is a query embedded in another query" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "SAS Output\n", "\n", "\n", "\n", "

SAS Output

\n", "
\n", "
\n", "

The SAS System

\n", "
\n", "

The SQL Procedure

\n", "
\n", "

Query Results

\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
keyx1x2
11011
22012
33013
44014
55015
66016
66016
88018
99019
1010020
\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proc sql print;\n", "\n", " select * from \n", " \n", " /* subquery */\n", " (select key, x1, x2\n", " from table1\n", " where key <= 10);\n", "\n", "quit;" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "SAS", "language": "sas", "name": "sas" }, "language_info": { "codemirror_mode": "sas", "file_extension": ".sas", "mimetype": "text/x-sas", "name": "sas" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: 01_basic_data_prep/src/raw/py/Py_Part_0_pandas_numpy.py ================================================ """ Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ #%% standard output ########################################################### # print is the primary function used to write to the console in Python # print is a *function* in Python 3 # print is a *statement* in Python 2 print('Hello World!') # Python 3 print 'Hello World!' # Python 2 # an object with no functions or operators is also printed to the console x = 'Hello World!' x #%% importing libraries ####################################################### # python contains many libraries, often called modules # modules are: # * nearly always free and open source # * installed using many different methods - a package manager like conda, # readily available through the Anaconda release of Python # (https://www.continuum.io/downloads) - is often a good solution for # installing and managing packages/modules # * of relatively high and uniform quality and but licensing can vary # * imported using the import statement # import packages # packages can be aliased using the as statement import string # module with string utilities import pandas as pd # module with many utilities for dataframes import numpy as np # module with numeric and math utilities import matplotlib.pyplot as plt # module for plotting #%% generating a sample data set ############################################## # set the number of rows and columns for the sample data set n_rows = 1000 n_vars = 2 ### create lists of strings that will become column names # lists are: # * a common data structure in python # * surrounded by square brackets [] # * can contain different data types as list elements # * often created by a speficic type pythonic syntax, list comprehensions # * indexed from 0, unlike SAS or R # * slicable using numeric indices # list comprehension # str() converts to string # range() creates a list of values from arg1 to arg2 num_col_names = ['numeric' + str(i+1) for i in range(0, n_vars)] num_col_names # type() can be used to determine the class of an object in python type(num_col_names) # anonymous functions # the lamba statement is used to define simple anonymous functions # map() is very similar to to lapply() in R # it applies a function to the elements of a list char_col_names = map(lambda j: 'char' + str(j+1), range(0, n_vars)) char_col_names # string.ascii_uppercase is a string constant of uppercase letters print(string.ascii_uppercase) # another list comprehension # slice first seven letters of the string text_draw = [(letter * 8) for letter in string.ascii_uppercase[:7]] text_draw # create a random numerical columns directly using numpy # the numerical columns will originally be a 2-D numpy array randoms = np.random.randn(n_rows, n_vars) randoms[0:5] type(randoms) # create numerical columns of Pandas dataframe from numpy array # notice that a key is generated automatically num_cols = pd.DataFrame(randoms, columns=num_col_names) num_cols.head() type(num_cols) # create random character columns as a Pandas dataframe # use numpy sampling function choice() to generate a numpy array of random text # create Pandas dataframe from numpy 2-D array char_cols = pd.DataFrame(np.random.choice(text_draw, (n_rows, n_vars)), columns=char_col_names) char_cols.head() # use Pandas concat() to join the numeric and character columns scratch_df = pd.concat([num_cols, char_cols], axis=1) scratch_df.head() #%% plotting variables in a dataframe ######################################### # pandas has several builtin plotting utilities # pandas hist() method to plot a histogram of numeric1 # pandas alllows slicing by dataframes index using ix[] # ix[:, 0] means all rows of the 0th column - or numeric1 scratch_df.ix[:, 0].plot.hist(title='Histogram of Numeric1') # use pandas scatter() method to plot numeric1 vs. numeric2 scratch_df.plot.scatter(x='numeric1', y='numeric2', title='Numeric1 vs. Numeric2') #%% subsetting pandas dataframes ############################################## ### by columns # subsetting by index # one column returns a Pandas series # a Pandas series is like a single column vector scratch_df.iloc[:, 0].head() type(scratch_df.iloc[:, 0]) # more than one columns makes a dataframe # iloc enables location by index scratch_df.iloc[:, 0:2].head() type(scratch_df.iloc[:, 0:2]) # subsetting by variable name scratch_df['numeric1'].head() scratch_df.numeric1.head() # loc[] allows for location by column or row label scratch_df.loc[:, 'numeric1'].head() # loc can accept lists as an input scratch_df.loc[:, ['numeric1', 'numeric2']].head() ### by rows # subsetting by index scratch_df[0:3] # selecting by index scratch_df.iloc[0:5, :] # select by row label # here index/key values 0:5 are returned scratch_df.loc[0:5, :] ### boolean subsetting scratch_df[scratch_df.numeric2 > 0].head() scratch_df[scratch_df.char1 == 'AAAAAAAA'].head() scratch_df[scratch_df.char1.isin(['AAAAAAAA', 'BBBBBBBB'])].head() scratch_df[scratch_df.numeric2 > 0].loc[5:10, 'char2'] #%% updating the dataframe #################################################### # must use .copy() or this will be a symbolic link scratch_df2 = scratch_df.copy() # pandas supports in place overwrites of data # overwrite last 500 rows of char1 with ZZZZZZZZ scratch_df2.loc[500:, 'char1'] = 'ZZZZZZZZ' scratch_df2.tail() # iat[] allows for fast location of specific indices scratch_df2.iat[0, 0] = 1000 scratch_df2.head() #%% sorting the dataframe ##################################################### # sort by values of one variable scratch_df2.sort_values(by='char1').head() # sort by values of multiple variables and specify sort order scratch_df3 = scratch_df2.sort_values(by=['char1', 'numeric1'], ascending=[False, True]).copy() scratch_df3.head() # sort by the value of the dataframe index scratch_df2.sort_index().head() #%% adding data to the dataframe ############################################## # pandas concat() supports numerous types of joins and merges # pandas merge() supports joins and merges using more SQL-like syntax # i.e. merge(left, right, on=) # pandas append() supports stacking dataframes top-to-bottom # create a toy dataframe to join/merge onto scratch_df scratch_df3 = scratch_df3.drop(['numeric1', 'numeric2'] , axis=1) scratch_df3.columns = ['char3', 'char4'] scratch_df3.tail() # default outer join on indices # indices are not in identical, matching order # this will create 2000 row × 6 column dataset scratch_df4 = pd.concat([scratch_df, scratch_df3]) scratch_df4 # outer join on matching columns # axis=1 specificies to join on columns # this performs the expected join scratch_df5 = pd.concat([scratch_df, scratch_df3], axis=1) scratch_df5.head() scratch_df5.shape # append scratch_df6 = scratch_df.append(scratch_df) scratch_df6.shape #%% comparing dataframes ###################################################### # Use Pandas equals() to compare dataframes # Row order is not ignored scratch_df.equals(scratch_df) scratch_df.equals(scratch_df.sort_values(by='char1')) scratch_df.equals(scratch_df2) #%% summarizing dataframes #################################################### # Pandas offers several straightforward summarization functions scratch_df.mean() scratch_df.mode() scratch_df.describe() #%% by group processing ####################################################### # use pandas groupby() to create groups for subsequent processing # use summary function size() on groups created by groupby() counts = scratch_df.groupby('char1').size() plt.figure() counts.plot.bar(title='Frequency of char1 values (Histogram of char1)') # groupby the values of more than one variable group_means = scratch_df.groupby(['char1', 'char2']).mean() group_means #%% transposing a table ####################################################### # transposing a matrix simply switches row and columns values # transposing a dataframe is more complex because of metadata associated with # variable names and row indices # pandas .T performs a transpose scratch_df.T.iloc[:, 0:5] # often, instead of simply transposing, a data set will need to be reformatted # in a melt/stack -> column split -> cast action described in Hadley # Wickham's *Tidy Data*: # https://www.jstatsoft.org/article/view/v059i10 # # see the stack and unstack methods for Pandas dataframes #%% exporting and importing a dataframe # many to_* methods available for exporting dataframes to other formats # many read_* methods available for creating dataframes from other formats # export to csv scratch_df.to_csv('scratch.csv') # import from csv scratch_df7 = pd.read_csv('scratch.csv') ================================================ FILE: 01_basic_data_prep/src/raw/py/pyspark_example.py ================================================ # read in data >>> path = 'scratch.csv' >>> cust_df = spark.read.option('header', 'true').csv(path) >>> cust_df.printSchema() root |-- numeric1: string (nullable = true) |-- numeric2: string (nullable = true) |-- char1: string (nullable = true) |-- char2: string (nullable = true) |-- key: string (nullable = true) >>> cust_df.count() 1000 >>> cust_df.createOrReplaceTempView('cust_df') >>> spark.sql('SELECT COUNT(*) FROM cust_df').show() +--------+ |count(1)| +--------+ | 1000| +--------+ >>> path = 'scratch2.csv' >>> trans_df = spark.read.option('header', 'true').csv(path) >>> trans_df.printSchema() root |-- key: string (nullable = true) |-- numeric3: string (nullable = true) trans_df.count() 5000 >>> trans_df.createOrReplaceTempView('trans_df') >>> spark.sql('SELECT COUNT(*) FROM trans_df').show() +--------+ |count(1)| +--------+ | 5000| +--------+ # drop columns >>> cust_df = cust_df.drop('numeric2', 'char2') >>> cust_df.printSchema() root |-- numeric1: string (nullable = true) |-- char1: string (nullable = true) |-- key: string (nullable = true) # convert columns to double for numeric functions >>> trans_df = trans_df.withColumn('numeric3', trans_df['numeric3'].cast('double')) >>> trans_df.printSchema() root |-- key: string (nullable = true) |-- numeric3: double (nullable = true) # groupby >>> grouped_trans_df = trans_df.groupby('key').max('numeric3') >>> grouped_trans_df.show() +---+-------------------+ |key| max(numeric3)| +---+-------------------+ |296| 1.0647960079919738| |467| 0.507246728488537| |675| 1.3214449254393992| |691| 0.5217609876322263| |829| 1.310916126295388| |125| 1.0003281519032272| |451| 0.2978896491275767| |800| 1.3279887599365996| |853| 1.3573387004663975| |944| 0.6426301312589007| |666| 1.9515934218160937| |870| 1.5273080721916197| |919| 2.111709321232935| |926| 1.4025836781372398| | 7| 1.3853932472374593| | 51| 2.7536210228351967| |124| 1.6386144192310446| |447| 1.1035305318873843| |591|0.09231430553027069| |307| 0.7940950500154996| +---+-------------------+ only showing top 20 rows >>> grouped_trans_df.count() 1000 # rename >>> grouped_trans_df = grouped_trans_df.withColumnRenamed('max(numeric3)', 'max_numeric3') >>> grouped_trans_df.printSchema() root |-- key: string (nullable = true) |-- max_numeric3: double (nullable = true) # join >>> joined_cust_df = cust_df.join(grouped_trans_df, cust_df.key == grouped_trans_df.key).drop(cust_df.key) >>> joined_cust_df.printSchema() root |-- numeric1: string (nullable = true) |-- char1: string (nullable = true) |-- key: string (nullable = true) |-- max_numeric3: double (nullable = true) >>> joined_cust_df.count() 1000 >>> joined_cust_df.show() +--------------------+--------+---+-------------------+ | numeric1| char1|key| max_numeric3| +--------------------+--------+---+-------------------+ | -0.5437866363786446|CCCCCCCC| 0| 0.9855791456824139| | 1.6335321929483595|BBBBBBBB| 1|0.23625117401868062| | 0.00291794414741136|DDDDDDDD| 2| 1.6535993358257746| |-0.06729804442995206|EEEEEEEE| 3| 2.0374484244839057| | 0.6297253946298446|AAAAAAAA| 4| 2.703289941498199| | 0.3231675367659894|BBBBBBBB| 5| 2.0757967800249455| | 0.22986952407577876|FFFFFFFF| 6| 1.569895017566389| |-0.13708940465148253|FFFFFFFF| 7| 1.3853932472374593| | 1.057404395056542|EEEEEEEE| 8| 2.0562785413641| | -0.4334591093154298|BBBBBBBB| 9| 0.784434164694336| | 0.43814491396723926|DDDDDDDD| 10| 1.3079973031811907| | -0.8036731258030813|EEEEEEEE| 11| 1.666499057767304| |-0.11565694024047969|GGGGGGGG| 12| 0.726302697310102| | 0.4147488002582721|GGGGGGGG| 13| 1.3856410120066784| | -1.2389072279737852|FFFFFFFF| 14| 1.234118255742245| | -1.0807816716458907|GGGGGGGG| 15| 1.213158520894163| | -0.6065529938589715|DDDDDDDD| 16|0.14752573068092437| | 0.4252504393111313|GGGGGGGG| 17| 0.8645213389801757| | 1.426088732449592|AAAAAAAA| 18| 1.441803835958583| | -1.0352471625774415|AAAAAAAA| 19| 1.0362781824173604| +--------------------+--------+---+-------------------+ # subset rows >>> joined_cust_df_subset = joined_cust_df.filter(joined_cust_df.key < 10) >>> joined_cust_df_subset.count() 10 >>> joined_cust_df_subset.show() +--------------------+--------+---+-------------------+ | numeric1| char1|key| max_numeric3| +--------------------+--------+---+-------------------+ | -0.5437866363786446|CCCCCCCC| 0| 0.9855791456824139| | 1.6335321929483595|BBBBBBBB| 1|0.23625117401868062| | 0.00291794414741136|DDDDDDDD| 2| 1.6535993358257746| |-0.06729804442995206|EEEEEEEE| 3| 2.0374484244839057| | 0.6297253946298446|AAAAAAAA| 4| 2.703289941498199| | 0.3231675367659894|BBBBBBBB| 5| 2.0757967800249455| | 0.22986952407577876|FFFFFFFF| 6| 1.569895017566389| |-0.13708940465148253|FFFFFFFF| 7| 1.3853932472374593| | 1.057404395056542|EEEEEEEE| 8| 2.0562785413641| | -0.4334591093154298|BBBBBBBB| 9| 0.784434164694336| +--------------------+--------+---+-------------------+ # convert to pandas and save joined_cust_df_subset.toPandas().to_csv('scratch3.csv') ================================================ FILE: 01_basic_data_prep/src/raw/py/scratch.csv ================================================ version https://git-lfs.github.com/spec/v1 oid sha256:fc62fe607c91e763bd8ff3c6acf8ab2cc3161c3daae774333ff697fe79e6eb98 size 61224 ================================================ FILE: 01_basic_data_prep/src/raw/py/scratch2.csv ================================================ version https://git-lfs.github.com/spec/v1 oid sha256:38876ee8293ecb125ed00a087dd6243141b5bd9016d85db57ebba6508e2dda46 size 117680 ================================================ FILE: 01_basic_data_prep/src/raw/py/scratch3.csv ================================================ version https://git-lfs.github.com/spec/v1 oid sha256:799b05787882a2af637073f9294ebac7630d75d656e5fc26fe11aefb1337da25 size 545 ================================================ FILE: 01_basic_data_prep/src/raw/r/.gitignore ================================================ scratch.csv ================================================ FILE: 01_basic_data_prep/src/raw/r/R_Part_0_Basics_dplyr_and_ggplot2.r ================================================ ############################################################################### # Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. ### standard output ########################################################### # two primary R core functions are used to print information to the console # print() and cat() # print is a generic function that responds differently to different classes # of R objects # note that '.' is just a character, it does not denote object membership # as in Java and Python # cat() simply attempts to print string literals # an object with no functions or operators is also printed to the console x <- 'Hello World!' print(x) cat(x) x class(x) <- 'some.class' print(x) cat(x) x ### import packages ########################################################### # R contains thousands of packages for many different purposes # Packages are: # - nearly always free and open source # - installed using the install.packages() function or a GUI command # - of varying quality and licensing # - loaded using the library() function, after being installed library(dplyr) # popular package for data wrangling with consistent syntax library(ggplot2) # popular package for plotting with consistent syntax # surpress warnings about versions and object masking # using suppressPackageStartupMessages() # suppressPackageStartupMessages(library(dplyr)) # suppressPackageStartupMessages(library(ggplot2)) ### working directory ######################################################### # enter the directory location of this file within single quotes # '<-' is the preferred assignment operator in R # '/' is the safest directory separator character to use git_dir <- '/path/to/GWU_data_mining/01_basic_data_prep/src/raw/r' # set the working directory # the working directory is where files are written to and read from by default # setwd() sets the working directory # getwd() prints the current working directory setwd(git_dir) getwd() ### generate a sample data set ################################################ # set the number of rows and columns for the sample data set n_rows <- 1000 n_vars <- 5 # create a key variable # a key variable has a unique value for each row of a data set # seq() generates values from a number (default = 1), to another number, by # a certain value (default = 1) # many types of data structures in R have key variables (a.k.a. row names) by # default key <- seq(n_rows) # show the first five elements # most data structures in R can be 'sliced', i.e. using numeric indices # to select a subset of items key[1:5] # create lists of strings that will become column names # paste() concatentates strings with a separator character in between them num_vars <- paste('numeric', seq_len(n_vars), sep = '') num_vars char_vars <- paste('char', seq_len(n_vars), sep = '') char_vars # initialize a data.frame with the key variable scratch_df <- data.frame(INDEX = key) # add n_var numeric columns, each with n_row rows, to the data.frame # each column contains random uniform numeric values generated by runif() # replicate() replicates n_row length lists of numeric values n_vars times scratch_df[, num_vars] <- replicate(n_vars, runif(n_rows)) # head() displays the top of a data structure head(scratch_df) # add n_var character columns, each with n_row rows, to the data.frame # create a list of strings from which to generate random text variables # sapply() applies a function to a sequence of values # LETTERS is a character vector containing uppercase letters # an anonymous function is defined that replicates a value 8 times with no # seperator character # replicate() replicates n_var lists of n_row elements from text_draw sampled # randomly from test_draw using the sample() function text_draw <- sapply(LETTERS[1:7], FUN = function(x) paste(rep(x, 8), collapse = "")) text_draw scratch_df[, char_vars] <- replicate(n_vars, sample(text_draw, n_rows, replace = TRUE)) head(scratch_df) # convert from standard data.frame to dlpyr table # dplyr is a popular, intuitive, and effcient package for manipulating data sets # R has many data types: http://www.statmethods.net/input/datatypes.html scratch_tbl <- tbl_df(scratch_df) # use the dplyr::glimpse function to see a summary of the generated data set glimpse(scratch_tbl) ### plotting variables in the table ########################################### # ggplot allows you to overlay graphics using the '+' operator # plot univariate densities of numeric1 and char1 using the geom_bar() # components # gtitle adds title # coord_flip rotates the bar chart ggplot(scratch_tbl, aes(numeric1)) + geom_bar(stat = "bin", fill = "blue", bins = 100) + ggtitle('Histogram of Numeric1') ggplot(scratch_tbl, aes(char1)) + geom_bar(aes(fill=char1)) + ggtitle('Histogram of Char1') + coord_flip() ### subsetting the table ###################################################### # subset variables using dplyr::select # subset a range of variables with similar names and numeric suffixes # subset all the variables whose names begin with 'char' # subset variables by their names num_vars <- select(scratch_tbl, num_range('numeric', 1:n_vars)) head(num_vars) char_vars <- select(scratch_tbl, starts_with('char')) head(char_vars) mixed_vars <- select(scratch_tbl, one_of('numeric1', 'char1')) head(mixed_vars) # subset rows using multiple dplyr functions # subset rows using their numeric indices # subset top rows based on the value of a certain variable # subset rows where a certain variable has a certain value some_rows <- slice(scratch_tbl, 1:10) some_rows sorted_top_rows <- top_n(scratch_tbl, 10, numeric1) sorted_top_rows AAAAAAAA_rows <- filter(scratch_tbl, char1 == 'AAAAAAAA') head(AAAAAAAA_rows) ### updating the table ######################################################## # dplyr, as a best practice, does not support in-place overwrites of data # dplyr::transform enables the creation of new variables from existing # variables scratch_tbl2 <- transform(scratch_tbl, new_numeric = round(numeric1, 1)) head(scratch_tbl2) # dplyr::mutate enables the creation of new variables from existing # variables and computed variables scratch_tbl2 <- mutate(scratch_tbl, new_numeric = round(numeric1, 1), new_numeric2 = new_numeric * 10) head(scratch_tbl2) # dplyr::transmute enables the creation of new variables from existing # variables and computed variables, but keeps only newly created variables scratch_tbl2 <- transmute(scratch_tbl, new_numeric = round(numeric1, 1), new_numeric2 = new_numeric * 10) head(scratch_tbl2) ### sorting the table ######################################################### # sort tables using dplyr::arrange # sort by one variable # sort by two variables sorted <- arrange(char_vars, char1) head(sorted) sorted2 <- arrange(char_vars, char1, char2) head(sorted2) ### adding data to the table ################################################## # add data to a table using dplyr:: bind and dplyr::join # bind smashes tables together # join combines tables based on matching values of a shared variable bindr <- bind_rows(sorted, sorted2) nrow(bindr) bindc <- bind_cols(sorted, sorted2) ncol(bindc) # create two tables to join on a key variable sorted_left <- arrange(select(scratch_tbl, one_of('INDEX', 'char1')), char1) right <- select(scratch_tbl, one_of('INDEX', 'numeric1')) # Perform join # joined table contains `char1` from the left table # and `numeric1` from the right table # matched by the value of `INDEX` joined <- left_join(sorted_left, right, by = 'INDEX') head(joined) ### comparing tables ########################################################## # comparing tables using dplyr::all.equal # dplyr::all.equal will test tables for equality despite the order of rows # and/or columns # very useful for keeping track of changes to important tables # Create a table for comparision test <- select(scratch_tbl, one_of('INDEX', 'numeric1', 'char1')) # Compare print(all.equal(joined, test, ignore_row_order = FALSE)) print(all.equal(joined, test, ignore_col_order = FALSE)) print(all.equal(joined, test)) ### summarizing tables ######################################################## # combine rows of tables into summary values with dplyr::summarise and # dplyr::summarise_each # summarize one variable using summarise, avg is the name of the created var # summarize many variables using summarise_each, funs() defines the summary # function ave <- summarise(num_vars, avg = mean(numeric1)) ave all_aves <-summarise_each(num_vars, funs(mean)) all_aves ### by group processing ####################################################### # By groups allow you to divide and process a data set based on the values of # one or more variables # dplyr::group_by groups a data set together based on the values of a certain # variable # operations can then be applied to groups grouped <- group_by(joined, char1) grouped <- summarise(grouped, avg = mean(numeric1)) grouped ### Transposing a table ####################################################### # Transposing a matrix simply switches row and columns values # Transposing a data.frame or dplyr table is more complex because of metadata # associated with variable names and row indices transposed = t(scratch_tbl) glimpse(transposed) # Often, instead of simply transposing, a data set will need to be reformatted # in a melt/stack-column split-cast action described in Hadley Wickham's # 'Tidy Data' https://www.jstatsoft.org/article/view/v059i10 # see also dplyr::gather and dplyr::spread() ### exporting and importing the table ######################################### # the R core function write.table enables writing text files # the similar R core function read.table enables reading text files # export # use the sep option to specifiy the columns delimiter character # row.names = FALSE indicates not to save the row number to the text file filename <- paste(git_dir, 'scratch.csv', sep = '/') write.table(scratch_tbl, file = filename, quote = FALSE, sep = ',', row.names = FALSE) # import import <- read.table(filename, header = TRUE, sep = ',') ================================================ FILE: 01_basic_data_prep/src/raw/r/R_Part_1_data.table.r ================================================ ############################################################################### # Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. ### data.table is an efficient package for manipulating data sets ############# # data.table is implemented in optimized C and often attempts to update # items by reference to avoid copying large amounts of data # data.table is a subclass of data.frame and generally accepts data.frame # syntax # general form of a data.table is dt[i, j, by] # i is row index, indexed from 1 ... # j is col index, indexed from 1 ... # by is by-group var name library(data.table) # enter the directory location of this file within single quotes git_dir <- '/path/to/GWU_data_mining/01_basic_data_prep/src/raw/r' # set the working directory setwd(git_dir) getwd() ### generate a sample data set ################################################ # set the number of rows and columns for the sample data set n_rows <- 1000 n_vars <- 3 # create a key variable key <- seq(n_rows) # create lists of strings that will become column names num_vars <- paste('numeric', seq_len(n_vars), sep = '') char_vars <- paste('char', seq_len(n_vars), sep = '') # create a list of strings from which to generate random text variables text_draw <- sapply(LETTERS[1:7], FUN = function(x) paste(rep(x, 8), collapse = "")) # create a sample data.table scratch_dt <- data.table(key, replicate(n_vars, runif(n_rows)), replicate(n_vars, sample(text_draw, n_rows, replace = TRUE))) # the data.table::set* family of methods in data.table always updates items # by reference for efficiency setnames(scratch_dt, c('key', num_vars, char_vars)) scratch_dt ### plotting ################################################################## # data.table enables simple plotting for numeric variables scratch_dt[,plot(numeric1, numeric2)] ### subsetting the table ###################################################### ### by column # selecting a single column results in a vector class(scratch_dt[,char1]) length(scratch_dt[,char1]) # multiple columns can be selected # specifying multiple columns by a vector results in a concatenated vector class(scratch_dt[,c(numeric1, char1)]) length(scratch_dt[,c(numeric1, char1)]) # specifying multiple columns by list results in a data.table class(scratch_dt[,list(numeric1, char1)]) scratch_dt[,list(numeric1, char1)] # '.' is an alias for 'list' class(scratch_dt[,.(numeric1, char1)] ) scratch_dt[,.(numeric1, char1)] # computed columns scratch_dt[1:5, round(numeric1, 1)] # compute standalone vector scratch_dt[, .(new_numeric = round(numeric1, 1))] # assign name ### by row scratch_dt[3:5] # use numeric indices/slicing scratch_dt[3:5,] scratch_dt[char1 == 'DDDDDDDD'] scratch_dt[char1 %in% c('DDDDDDDD', 'EEEEEEEE')] # .N contains the number of rows or the last row scratch_dt[.N] scratch_dt[,.N] ### sorting the table ######################################################### # data.table::setorder reorders columns by reference sorted <- setorder(scratch_dt, char1) sorted # when used in data.table order() also reorders columns by reference sorted <- scratch_dt[order(char1)] sorted # sort orders can be specified by using order() sorted2 <- scratch_dt[order(char1, -numeric1)] sorted2 # data.table::setkey reorders columns by reference by the specified key # variable (here called 'key') and sets the variable to the key of the # data.table for future operations # subsetting and selecting by the key variable will be more efficient # in future operations sorted3 <- setkey(scratch_dt, key) sorted3 ### updating the table ######################################################## # update rows by reference using the := operator # data.table supports overwrite of data scratch_dt2 <- scratch_dt[key > 500, char1 := 'ZZZZZZZZ'] scratch_dt2 # create new columns by reference using the := operator scratch_dt2[, new_numeric := round(numeric1, 1)] scratch_dt2 ### adding data to the table ################################################## # use data.table::rbindlist to stack data.tables vertically bindr <- rbindlist(list(sorted, sorted2)) nrow(bindr) # data.table::merge joins tables side-by-side using a common key variable # joining data.tables without prespecified keys (i.e. by using data.table::setkey) # requires that a key for the join be specified # The prefix 'x.' is added to the left table variable names by default # The prefix 'y.' is added to the right table variables names by default joined1 <- merge(sorted, sorted2, by = c('key')) joined1 # joining data.tables with prespecified keys does not require that a key be # specified when data.table::merge is called # Add a key to the scratch_dt2 table scratch_dt2 <- setkey(scratch_dt2[,.(key, char1, new_numeric)], key) scratch_dt2 # Now sorted3 and scratch_dt2 can be joined without specifiying a key joined2 <- merge(sorted3, scratch_dt2) joined2 ### by group processing ####################################################### # by groups allow you to divide and process a data set based on the values # of a certain variable # general form of a data.table is dt[i, j, by] # by is by group variable name scratch_dt2[, sum(new_numeric), by = char1] scratch_dt2[1:500, sum(new_numeric), by = char1] # .N returns the number of rows in each by group scratch_dt2[, .N, by = char1] # by groups can also be a list scratch_dt[, mean(new_numeric), by = .(char1, char2)] # .SD represents all the variables except the by variable(s) scratch_dt2[, lapply(.SD, sum), by = char1] # .N can be used to find the first and last rows of each by group scratch_dt2[, .SD[c(1, .N)], by = char1] ### operations can be chained ################################################# # chaining scratch_dt2[, .(new_numeric2 = sum(new_numeric)), by = char1][new_numeric2 > 40] # no chaining scratch_dt3 <- scratch_dt2[, .(new_numeric2 = sum(new_numeric)), by = char1] scratch_dt3[new_numeric2 > 40] ### Transposing a table ####################################################### # Transposing a matrix simply switches row and columns values # Transposing a data.frame or data.table is more complex because of metadata # associated with variable names and row indices transposed = t(scratch_dt) str(transposed) # Often, instead of simply transposing, a data set will need to be reformatted # in a melt/stack-column split-cast action described in Hadley Wickham's # 'Tidy Data' https://www.jstatsoft.org/article/view/v059i10 # see also dcast.data.table and melt.data.table ### exporting and importing the table ######################################### # fread and fwrite allow for optimized file i/o # fwrite only availabe in data.table version > 1.9.7 # available from http://Rdatatable.github.io/data.table # use fwrite to write a file fwrite(scratch_dt, 'scratch_dt.csv') # use fread to read a file scratch_dt <- fread('scratch_dt.csv') head(scratch_dt) ================================================ FILE: 01_basic_data_prep/src/raw/sas/.gitignore ================================================ scratch.csv ================================================ FILE: 01_basic_data_prep/src/raw/sas/SAS_Part_0_Base_SAS_PROC_SGPLOT.sas ================================================ ******************************************************************************; * Copyright (c) 2015 by SAS Institute Inc., Cary, NC 27513 USA *; * *; * Licensed under the Apache License, Version 2.0 (the "License"); *; * you may not use this file except in compliance with the License. *; * You may obtain a copy of the License at *; * *; * http://www.apache.org/licenses/LICENSE-2.0 *; * *; * Unless required by applicable law or agreed to in writing, software *; * distributed under the License is distributed on an "AS IS" BASIS, *; * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *; * See the License for the specific language governing permissions and *; * limitations under the License. *; ******************************************************************************; ******************************************************************************; * NOTE: examples are meant for the free SAS University Edition *; * to install see: http://www.sas.com/en_us/software/university-edition.html *; ******************************************************************************; ******************************************************************************; * SECTION 1: Hello World! - Standard SAS Output *; ******************************************************************************; * the _null_ data step allows you to execute commands; * or read a data set without creating a new data set; data _null_; put 'Hello world!'; run; * print the value of a variable to the log; * VERY useful for debugging; data _null_; x = 'Hello world!'; put x; put x=; run; * file print writes to the open standard output; * usually html or listing; data _null_; file print; put 'Hello world!'; run; * logging information levels; * use these prefixes to print color-coded information to the log; data _null_; put 'NOTE: Hello world!'; put 'WARNING: Hello world!'; put 'ERROR: Hello world!'; run; * you can also use the put macro statement; * SAS macro statements are often used for program flow control around DATA; * step statements and SAS procedures; * This tutorial will only use simple macro statements; %put Hello world!; %put NOTE: Hello world!; %put WARNING: Hello world!; %put ERROR: Hello world!; %put 'Hello world!'; /* macro variables are ALWAYS strings */ * the macro preprocessor resolves macro variables as text literals; * before data step code is executed; %let x = Hello world!; %put &x; %put '&x'; /* single quotes PREVENT macro resolution */ %put "&x"; /* double quotes ALLOW macro resolution */ ******************************************************************************; * SECTION 2 - SAS data sets *; ******************************************************************************; *** sas data sets ************************************************************; * the sas data set is the primary data structure in the SAS language; * now you will make one called scratch; * The size of data set is more typically defined by the size of the SAS data * set(s) from which it is created; %let n_rows = 1000; /* define number of rows */ %let n_vars = 5; /* define number of character and numeric variables */ * options mprint; /* to see the macro variables resolve uncomment this line */ data scratch; /* data sets can be made permanent by creating them in a library */ /* syntax: data . */ /* a library is like a database */ /* a library is usually directly mapped to a filesystem directory */ /* since you did not specify a permanent library on the data statement */ /* the scratch set will be created in the temporary library work */ /* it will be deleted when you leave SAS */ /* SAS is strongly typed - it is safest to declare variables */ /* using a length statement - especially for character variables */ /* $ denotes a character variable */ /* arrays are a data structure that can exist during the data step */ /* they are a reference to a group of variables */ /* horizontally across a data set */ /* $ denotes a character array */ /* do loops are often used in conjuction with arrays */ /* SAS arrays are indexed from 1, like R data structures */ /* a key is a variable with a unique value for each row */ /* mod() is the modulo function */ /* the %eval() macro function performs math operations */ /* before text substitution */ /* the drop statement removes variables from the output data set */ /* since you are not reading from a pre-existing data set */ /* you must output rows explicitly using the output statement */ length key 8 char1-char&n_vars $ 8 numeric1-numeric&n_vars 8; text_draw = 'AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD EEEEEEEE FFFFFFFF GGGGGGGG'; array c $ char1-char&n_vars; array n numeric1-numeric&n_vars; do i=1 to &n_rows; key = i; do j=1 to %eval(&n_vars); /* assign a random value from text_draw */ /* to each element of the array c */ c[j] = scan(text_draw, floor(7*ranuni(12345)+1), ' '); /* assign a random numeric value to each element of the n array */ /* ranuni() requires a seed value */ n[j] = ranuni(%eval(&n_rows*&n_vars)); end; if mod(i, %eval(&n_rows/10)) = 0 then put 'Processing line ' i '...'; drop i j text_draw; output; end; put 'Done.'; run; * (obs=) option enables setting the number of rows to print; proc print data=scratch (obs=5); run; *** basic data analysis ******************************************************; * use proc contents to understand basic information about a data set; proc contents data=scratch; run; * use proc freq to analyze categorical data; proc freq /* nlevels counts the discreet levels in each variable */ /* the colon operator expands to include variable names with prefix char */ data=scratch nlevels; /* request frequency bar charts for each variable */ tables char: / plots=freqplot(type=bar); run; * use proc univariate to analyze numeric data; proc univariate data=scratch; /* request univariate statistics for variables names with prefix 'numeric' */ var numeric:; /* request histograms for the same variables */ histogram numeric:; /* inset basic statistics on the histograms */ inset min max mean / position=ne; run; *** basic data manipulation **************************************************; * subsetting columns; * create scratch2 set; data scratch2; /* set statement reads from a pre-existing data set */ /* no output statement is required - this is more typical */ /* using data set options: keep, drop, etc. is often more efficient than */ /* corresponding data step statements */ /* : notation */ set scratch(keep=numeric:); run; * print first five rows; proc print data=scratch2(obs=5); run; * overwrite scratch2 set; data scratch2; /* ranges of vars specified using var - var syntax */ set scratch(keep=char1-char&n_vars); run; * print first five rows; proc print data=scratch2(obs=5); run; * overwrite scratch2 set; data scratch2; /* by name */ set scratch(keep=key numeric1 char1); run; * print first five rows; proc print data=scratch2(obs=5); run; * subsetting and modifying columns; * select two columns and modify them with data step functions; * overwrite scratch2 set; data scratch2; /* use length statement to ensure correct length of trans_char1 */ /* the lag function saves the value from the row above */ /* lag will create a numeric missing value in the first row */ /* tranwrd finds and replaces character values */ set scratch(keep=key char1 numeric1 rename=(char1=new_char1 numeric1=new_numeric1)); length trans_char1 $8; lag_numeric1 = lag(new_numeric1); trans_char1 = tranwrd(new_char1, 'GGGGGGGG', 'foo'); run; * print first five rows; * notice that '.' represents numeric missing in SAS; proc print data=scratch2(obs=5); run; * subsetting rows; * select only the first row and impute the missing value; * create scratch3 set; data scratch3; /* the where data set option can subset rows of data sets */ /* there are MANY other ways to do this ... */ set scratch2 (where=(key=1)); lag_numeric1 = 0; run; * print; proc print data=scratch3; run; * subsetting rows; * remove the problematic first row containing the missing value; * from scratch2 set; data scratch2; set scratch2; if key > 1; run; * print first five rows; proc print data=scratch2(obs=5); run; * combining data sets top-to-bottom; * add scratch3 to the bottom of scratch2; proc append base=scratch2 /* proc append does not read the base set */ data=scratch3; /* for performance reasons base set should be largest */ run; * sorting data sets; * sort scratch2 in place; proc sort data=scratch2; by key; /* you must specificy a variables to sort by */ run; * print first five rows; proc print data=scratch2(obs=5); run; * sorting data sets; * create the new scratch4 set; proc sort data=scratch2 out=scratch4; /* specifying an out set creates a new data set */ by new_char1 new_numeric1; /* you can sort by many variables */ run; * print first five rows; proc print data=scratch4(obs=5); run; * combining data sets side-by-side; * to create messy scratch5 set; data scratch5; /* merge simply attaches two or more data sets together side-by-side*/ /* it overwrites common variables - be careful */ merge scratch scratch4; run; * print first five rows; proc print data=scratch5(obs=5); run; * combining data sets side-by-side; * join columns to scratch from scratch2 when key variable matches; * to create scratch6 correctly; data scratch6; /* merging with a by variable is safer */ /* it requires that both sets be sorted */ /* then rows are matched when key values are equal */ /* very similar to SQL join */ merge scratch scratch2; by key; run; * print first five rows; proc print data=scratch6(obs=5); run; * don't forget PROC SQL; * nearly all common SQL statements and functions are supported by PROC SQL; * join columns to scratch from scratch2 when key variable matches; * to create scratch7 correctly; proc sql noprint; /* noprint suppresses procedure output */ create table scratch7 as select * from scratch join scratch2 on scratch.key = scratch2.key; quit; * print first five rows; proc print data=scratch7(obs=5); run; * comparing data sets; * results from data step merge with by variable and PROC SQL join; * should be equal; proc compare base=scratch6 compare=scratch7; run; * export data set; * to default directory; * to create a csv file; proc export data=scratch7 /* likely the correct directory for SAS University Edition */ outfile='/folders/myfolders/sasuser.v94/scratch.csv' /* create a csv */ dbms=csv /* replace an existing file with that name */ replace; run; * import data set; * from default directory; * from the csv file; * to overwrite scratch7 set; proc import /* import from scratch7.csv */ /* likely the correct directory for SAS University Edition */ datafile='/folders/myfolders/sasuser.v94/scratch.csv' /* create a sas table in the work library */ out=scratch7 /* from a csv file */ dbms=csv /* replace an existing data set with that name */ replace; run; * by group processing; * by variables can be used in the data step; * the data set must be sorted; * create scratch8 summary set; data scratch8; set scratch4; by new_char1 new_numeric1; retain count 0; /* retained variables are remembered from row-to-row */ if last.new_char1 then do; /* first. and last. can be used with by vars */ count + 1; /* shorthand to increment a retained variable */ output; /* output the last row of a sorted by group */ end; run; * using PROC PRINT without the data= option prints the most recent set; proc print; run; * by group processing; * by variables can be used efficiently in most procedures; * the data set must be sorted; proc univariate data=scratch4; var lag_numeric1; histogram lag_numeric1; inset min max mean / position=ne; by new_char1; run; * transpose; proc transpose data=scratch out=scratch8; run; * print; proc print; var _NAME_ col1-col5; run; * transposing a sas data set can be a complex process; * because of metadata associated with variable names; * often, instead of simply transposing, a data set will need to be reformatted; * in a melt/stack - column split - cast action described in Tidy Data by * Hadley Wickham: https://www.jstatsoft.org/article/view/v059i10 * see also: * https://github.com/sassoftware/enlighten-apply/tree/master/SAS_UE_TidyData ******************************************************************************; * SECTION 3 - generating analytical graphics *; ******************************************************************************; *** histograms using PROC SGPLOT *********************************************; proc sgplot /* sashelp.iris is a sample data set */ /* binwidth - bin width in terms of histogram variable */ /* datalabel - display counts or percents for each bin */ /* showbins - use bins to determine x-axis tickmarks */ data=sashelp.iris; histogram petalwidth / binwidth=2 datalabel=count showbins; run; *** bubble plots using PROC SGPLOT *******************************************; proc sgplot /* group - color by a categorical variable */ /* lineattrs - sets the bubble outline color and other outline attributes */ data=sashelp.iris; bubble x=petalwidth y=petallength size=sepallength / group=species lineattrs=(color=grey); run; *** scatter plot with regression information using PROC SGPLOT ***************; proc sgplot /* clm - confidence limits for mean predicted values */ /* cli - prediction limits for individual predicted values */ /* alpha - set threshold for clm and cli limits */ data=sashelp.iris; reg x=petalwidth y=petallength / clm cli alpha=0.1; run; *** stacked bar chart using PROC SGPLOT **************************************; proc sgplot /* sashelp.cars is a sample data set */ /* vbar variable on x-axis */ /* group - splits vertical bars */ /* add title */ data=sashelp.cars; vbar type / group=origin; title 'Car Types by Country of Origin'; run; ================================================ FILE: 01_basic_data_prep/src/raw/sas/SAS_Part_1_PROC_SQL.sas ================================================ ******************************************************************************; * Copyright (C) 2017 by J. Patrick Hall, jphall@gwu.edu *; * *; * Permission is hereby granted, free of charge, to any person obtaining a *; * copy of this software and associated documentation files (the "Software"), *; * to deal in the Software without restriction, including without limitation *; * the rights to use, copy, modify, merge, publish, distribute, sublicense, *; * and/or sell copies of the Software, and to permit persons to whom the *; * Software is furnished to do so, subject to the following conditions: *; * *; * The above copyright notice and this permission notice shall be included *; * in all copies or substantial portions of the Software. *; * *; * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *; * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,*; * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL *; * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *; * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING *; * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER *; * DEALINGS IN THE SOFTWARE. *; ******************************************************************************; ******************************************************************************; * simple SQL operations demonstrated using SAS PROC SQL *; * a *VERY BASIC* introduction to SQL *; ******************************************************************************; ******************************************************************************; * NOTE: examples are meant for the free SAS University Edition *; * to install see: http://www.sas.com/en_us/software/university-edition.html *; * Refer to part 0 *; ******************************************************************************; *** simulate some small example tables using SAS data step *******************; * table1 has a primary key called key and two numeric variables: x1 and x2; * table1 is located in the SAS work library, it could be called work.table1; data table1; do key=1 to 20; x1 = key * 10; x2 = key + 10; output; end; run; proc print; run; * table2 has a primary key called key and two character variables: x3 and x4; * table2 is located in the SAS work library, it could be called work.table2; data table2; do key=2 to 20 by 2; x3 = scan('a b c d e f g h i j', key/2); x4 = scan('k l m n o p q r s t', key/2); output; end; run; proc print; run; ******************************************************************************; * SAS PROC SQL allows users to execute valid SQL statements; * often called queries, from SAS; * in a more typical SQL environment the proc sql and quit statements; * would be unnecessary and unrecognized in a query; proc sql; * display basic information about table1 in the SAS log; * in SQL parlance work is the database and table1 is the table; describe table work.table1; quit; proc sql; * display the variable x1 from table1; select x1 from work.table1; quit; * the NOPRINT option can be used to supress output; * very important for large tables; proc sql /* noprint */; * create table3 in the work library/database; * x1 from table1 will be named x5 in the new table; * the SQL statement as creates a temporary name or alias; create table table3 as select key, x1 as x5 from table1; quit; proc sql; * a where clause is used to subset rows of a table; * the order by statement sorts displayed results or created tables; * desc refers to descending sort order; create table table4 as select key, x2 as x6 from table1 where key <= 10 order by x6 desc; quit; proc sql; * insert can be used to add data to a table; insert into table1 values (21, 210, 31); quit; proc sql; * update can be used to change the value of previously existing data; update table1 set key = 6, x1 = 60, x2 = 16 where key = 7; quit; proc sql; * an inner join only retains rows from both tables; * where key values match; create table table5 as select * from table1 join table2 on table1.key = table2.key; quit; proc sql; * left joins retain all the rows from one table; * and only retain rows where key values match from the other table; * aliases can also be used for tables; create table table6 as select * from table1 as t1 /* left table */ left join table2 as t2 /* right table */ on t1.key = t2.key; quit; proc sql; * the where statement cannot be used with aggregate functions; * instead use the having statement; * where sum_x1 > 100 would cause errors in this query; create table table7 as select key, sum(x1) as sum_x1 from table1 group by key having sum_x1 > 100; quit; proc sql; * a subquery is a query embedded in another query; select * from (select key, x1, x2 from table1 where key <= 10); quit; ================================================ FILE: 02_analytical_data_prep/02_analytical_data_prep.md ================================================ ## Section 02: Analytical Data Prep A great deal of work in data mining projects is spent on data munging. Below some common data problems that can cause models and predictions to be inaccurate are listed along with their symptoms and potential solutions. #### Enterprise Miner Materials * [Example data](data/loans.sas7bdat) * [Diagram notes](notes/02_analytical_data_prep.pdf) * [Diagram XML](xml/02_analytical_data_prep.xml) * [Introductory Video(s)](https://www.youtube.com/playlist?list=PLVBcK_IpFVi-xzvJiOlf33UvVbRoLRu0z) #### Supplementary References * [Label, Segment, Featurize: a cross domain framework for prediction engineering](http://www.jmaxkanter.com/static/papers/DSAA_LSF_2016.pdf) * *Introduction to Data Mining* - chapter 2 * *Introduction to Data Mining* - [chapter 2 notes](https://www-users.cs.umn.edu/~kumar/dmbook/dmslides/chap2_data.pdf) #### [Sample Quiz](quiz/sample/quiz_2.pdf) #### [Quiz key](quiz/key/quiz_2_key.pdf) #### A Data Preperation Lib Kes Wrote (works with spark, pandas, and h2o frames) * [DataPreperation Library src](src/DataPreperation.py) * [view notebook example](src/housing.ipynb) * [view notebook html](http://htmlpreview.github.com/?https://github.com/kcrandall/GWU_data_mining/blob/master/02_analytical_data_prep/src/housing.html) *Not all the functions have been strenuously tested for all use cases, may have bugs (email kmcrandall@gwmail.gwu.edu if you find one). #### Class notes Problem | Symptoms | Solution --- | --- | --- **[Incomplete data](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#incomplete-data)** | Useless models and meaningless results. | Get more data. Get better data. [Design of Experiment](https://en.wikipedia.org/wiki/Design_of_experiments) approaches. **[Biased Data](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#biased-data)** | Biased models and biased, inaccurate results. | Get more data. Get better data. [Design of Experiment](https://en.wikipedia.org/wiki/Design_of_experiments) approaches. **Wide Data** | Long, intolerable compute times. Meaningless results due to curse of dimensionality. | [Feature selection](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#feature-selection---view-notebook). [Feature extraction](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#feature-extraction---view-notebook). L1 Regularization. **Sparse data** | Long, intolerable compute times. Meaningless results due to curse of dimensionality. | [Feature extraction](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#feature-extraction---view-notebook). Appropriate data representation, i.e. COO, CSR. Appropriate algorithm selection, e.g. factorization machines. **Imbalanced Target Variable** | Single class model predictions. Biased model predictions. | [Proportional Oversampling](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#oversampling---view-notebook). Inverse prior probability weighting. Mixture models, e.g. zero-inflated regression methods. **Outliers** | Biased models and biased, inaccurate results. Unstable parameter estimates and rule generation. Unreliable out-of-domain predictions. | [Discretization](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#discretization---view-notebook). [Winsorizing](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#winsorizing---view-notebook). Appropriate algorithm selection, e.g. Huber loss functions. **Missing Values** | Information loss. Biased models and biased, inaccurate results. | [Imputation](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#imputation---view-notebook). [Discretization](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#discretization---view-notebook). Appropriate algorithm selection, e.g. Tree-based models, naive Bayes classification. **Character Variables** | Information loss. Biased models and biased, inaccurate results. Computational errors. | [Encoding](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#encoding---view-notebook). Appropriate algorithm selection, e.g. Tree-based models, naive Bayes classification. **High Cardinality Categorical Variables** | Over-fit models and inaccurate results. Long, intolerable compute times. Unreliable out-of-domain predictions. | [Target Encoding (categorical)](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#target-encoding-categorical---view-notebook) or variants e.g. perturbed rate-by-level or [Weight of Evidence](http://support.sas.com/documentation/cdl/en/prochp/66409/HTML/default/viewer.htm#prochp_hpbin_details02.htm). [Target Encoding (numeric)](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#target-encoding-numeric---view-notebook) or variants average-, median, BLUP-by-level. [Discretization](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#discretization---view-notebook). Embedding approaches, e.g. entity embedding neural networks, factorization machines. **Disparate Variable Scales** | Unreliable parameter estimates, biased models, and biased, inaccurate results. | [Standardization](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#standardization---view-notebook), Appropriate algorithm selection, e.g. Tree-based models. **Strong Multicollinearity (correlation)** | Unstable parameter estimates, unstable rule generation, and unstable predictions. | [Feature selection](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#feature-selection---view-notebook). [Feature extraction](https://github.com/jphall663/GWU_data_mining/blob/master/02_analytical_data_prep/02_analytical_data_prep.md#feature-extraction---view-notebook). L2 Regularization. **Dirty Data** | Information loss. Biased models and biased, inaccurate results. Long, intolerable compute times. Unstable parameter estimates and rule generation. Unreliable out-of-domain predictions. | Combination of solution strategies. In some cases this is not a problem at all. Some algorithms and software packages handle this automatically and elegantly ... some don't. #### Incomplete data When a data set simply does not contain information about the phenomenon of interest. There is no analytical remedy for incomplete data. You must collect more and better data, and probably dispose of the original incomplete set. #### Biased data When a data set contains information about the phenomenon of interest, but that information is consistently and systematically wrong. There is no analytical remedy for biased data. You must collect more and better data, and probably dispose of the original biased set. #### Feature selection - [view notebook](src/py_part_2_feature_selection.ipynb) Finding the best subset of original variables from a data set, typically by measuring the original variable's relationship to the target variable and taking the subset of original variables with the strongest relationships with the target. Feature selection decreases the impact of the curse of dimensionality and usually increases the signal-to-noise ratio in a data set, resulting in faster training times and more accurate models. Because feature selection uses original variables from a data set, its results are usually more interpretable than feature extraction techniques. #### Feature extraction - [view notebook](src/py_part_2_feature_extraction.ipynb) Combining the original variables in a data set into a new, smaller set of more representative variables, very often using unsupervised learning methods. Feature extraction may also be referred to as 'dimension reduction'. Feature extraction is the unsupervised analog of feature selection, i.e. it tends to decreases the impact of the curse of dimensionality and usually increases the signal-to-noise ratio in a data set. Feature extraction techniques combine the original variables in the data set in complex ways, usually creating uninterpretable new variables. #### Oversampling - [view notebook](src/py_part_2_over_sample.ipynb) Taking all the rows containing rare events in a data set and increasing them proportionally to the number of rows not containing rare values. 'Undersampling' is the opposite and equally valid approach where the rows not containing rare events are decreased proportionally to the number of rows containing rare events. With rare events, models will often find that the most accurate possible outcome is to predict the rare event never happens. Both oversampling and undersampling artificially inflate the frequency of rare events, which helps models learn to predict rare events. #### Encoding - [view notebook](src/py_part_2_encoding.ipynb) Changing the representation of a variable. Very often in data mining applications categorical, character variables are encoded to numeric variables to be used with algorithms that cannot accept character or categorical variables. #### Target Encoding (Categorical) - [view notebook](src/py_part_2_target_encode_categorical.ipynb) An encoding method for changing categorical variables into numeric variables when the target is a binary categorical variable. Particularly helpful when a categorical variable has many levels. #### Target Encoding (Numeric) - [view notebook](src/py_part_2_target_encode_numeric.ipynb) An encoding method for changing categorical variables into numeric variables when the target is a numeric variable. Particularly helpful when a categorical variable has many levels. #### Discretization - [view notebook](src/py_part_2_discretization.ipynb) Changing a numeric variable into an ordinal or nominal categorical variable based on value ranges of the original numeric variable. Discretization can also be referred to as 'binning'. Discretization has many benefits: * When restricted to using linear models, binning helps introduce nonlinearity because each bin in a variable gets its own parameter. * Binning smoothes complex signals in training data, often decreasing overfitting. * Binning deals with missing values elegantly by assigning them to their own bin. * Binning handles outliers elegantly by assigning all outlying values, in training and new data, to the 'high' or 'low' bin. (Outliers damage predictive models that seek to minimize squared error because they create disproportionately large, i.e. squared, residuals which optimization routines will try to minimize at the expense of minimizing the error for more reliable data points.) #### Winsorizing - [view notebook](src/py_part_2_winsorize.ipynb) Removing outliers in a variable's value and replacing them with more central values of that variable. (Outliers damage predictive models that seek to minimize squared error because they create disproportionately large, i.e. squared, residuals which optimization routines will try to minimize at the expense of minimizing the error for more reliable data points.) #### Imputation - [view notebook](src/py_part_2_impute.ipynb) Replacing missing data with an appropriate, non-missing value. In predictive modeling imputing should be used with care. Missingness is often predictive. Also imputation changes the distribution of the input variable learned by the model. #### Standardization - [view notebook](src/py_part_2_standardize.ipynb) Enforcing similar scales on a set of variables. For distance-based algorithms (e.g. k-means) and algorithms that use gradient-related methods to create model parameters (e.g. regression, artificial neural networks) variables must be on the same scale, or variables with large values will incorrectly dominate the training process. ================================================ FILE: 02_analytical_data_prep/data/loan.csv ================================================ [File too large to display: 15.3 MB] ================================================ FILE: 02_analytical_data_prep/data/loans.sas7bdat ================================================ version https://git-lfs.github.com/spec/v1 oid sha256:057a8ac066b21a7ecfca31980addfef2ab5f1cd8e91b6d701728d6b6da9c8617 size 23789568 ================================================ FILE: 02_analytical_data_prep/notes/.gitignore ================================================ *.pptx ================================================ FILE: 02_analytical_data_prep/quiz/.gitignore ================================================ key ================================================ FILE: 02_analytical_data_prep/src/.gitignore ================================================ .ipynb_checkpoints ================================================ FILE: 02_analytical_data_prep/src/DataPreperation.py ================================================ class DataPreperation(object): def __init__(self): pass @staticmethod def label_encoder(dataframe,columns=[],frame_type='spark'): """ Converts a categorical column to numeric indexed features. Keeps the old columns and returns added new encoded columns (named column+'_encoded'). Example output: id | gender | gender_encoded —-|———-|————— 0 | M | 0.0 1 | F | 1.0 2 | F | 1.0 3 | M | 0.0 4 | M | 0.0 5 | M | 0.0 :param dataframe: The dataframe to encode :param columns: The columns to encode :param frame_type: The type of frame that is input and output. Accepted: 'h2o', 'pandas', 'spark' return: A dataframe. """ if frame_type == 'spark': from pyspark.ml.feature import StringIndexer df = dataframe for column in columns: indexer = StringIndexer(inputCol=column, outputCol=column+'_encoded') df = indexer.fit(df).transform(df) return df else: from sklearn.preprocessing import LabelEncoder df = None if frame_type == 'h2o': # convert to pandas df = dataframe.as_data_frame() elif frame_type == 'pandas': df = dataframe for column in columns: #give empty columns their own value df[column]=df[column].fillna(-1) #encode the column le = LabelEncoder() le.fit() le.fit(list(df[column].values)) # Make a new encoded column df[column+'_encoded'] = le.transform(list(df[column].values)) if frame_type == 'h2o': import h2o print('Converting to H2OFrame ...') # convert train back to h2o df = h2o.H2OFrame(df) print('Done.') return df else: return df @staticmethod def imputer(dataframe,columns=[], type='median',frame_type='spark'): """ Imputes columns given with a given imputation type. Spark supports: mean, median Pandas supports: mean, median, most_frequent :param dataframe: The dataframe to impute :param columns: The columns to impute :param type: The type of imputing to do :param frame_type: The type of frame that is input and output. Accepted: 'h2o', 'pandas', 'spark' return: A dataframe. """ if frame_type == 'spark': from pyspark.sql.functions import avg, lit, when, col df = dataframe for column in columns: if type == 'median': # Greenwald-Khanna algorithm for finding quanitiles median = df.approxQuantile(column, [0.5], 0.25)[0] # relative error - .25 is a measure of how accurate the number will be higher will be more expensive df = df.withColumn(column, when(col(column).isNull(), lit(median)) .otherwise(df[column])) elif type == 'mean': #get the first element from list mean = df.select(avg(column)).rdd.flatMap(list).collect()[0] print(mean) df = df.withColumn(column, when(col(column).isNull(), lit(mean)) .otherwise(df[column])) else: raise Exception('Type not supported. Please use a supported type.') return df else: from sklearn.preprocessing import Imputer df = None if frame_type == 'h2o': # convert to pandas df = dataframe.as_data_frame() elif frame_type == 'pandas': df = dataframe for column in columns: imputer = None if type == 'median': imputer = Imputer(missing_values='NaN', #numpy nissing values strategy="mean", axis=0) #impute columns elif type == 'mean': imputer = Imputer(missing_values='NaN', #numpy nissing values strategy="median", axis=0) #impute columns elif type == 'most_frequent': imputer = Imputer(missing_values='NaN', #numpy nissing values strategy="most_frequent", axis=0) #impute columns else: raise Exception('Type not supported. Please use a supported type.') df[column] = imputer.fit_transform(df[column]) if frame_type == 'h2o': import h2o print('Converting to H2OFrame ...') # convert train back to h2o df = h2o.H2OFrame(df) print('Done.') return df else: return df @staticmethod def polynomial_expansion(dataframe,columns=[], degree=3,frame_type='spark',only_return_polys=False,id_col='ID'): """ Creates a polynomial expansion space based on the features. Both polynomials and interactions. Example Usage: df = DataPreperation.polynomial_expansion(df,['Col1', 'Col2']) :param dataframe: The dataframe to compute polynomials with :param columns: The columns to create polynomidals from :param degree: The degree to which you want to expand. degree 2 gets (x, x * x, y, x * y, y * y). :param frame_type: The type of frame that is input and output. Accepted: 'h2o', 'pandas', 'spark' :parm string only_return_polys: will only return the new columns if set to true and not any of the orginal columns :parm string id_col: (required for spark) an ID column to join the frames back together return: A dataframe. """ if(degree <2): raise Exception('Degree must be >= 2. Got: '+str(degree)) if frame_type == 'spark': from pyspark.sql.functions import pow, col df = dataframe if only_return_polys: df = df.select(id_col, columns) for column in columns: for i in range(2,degree+1): df = df.withColumn(column+'_'+'^'+str(i), pow(col(column), i) ) return df else: pass #This is broken # @staticmethod # def polynomial_combiner(dataframe,columns=[], degree=3,frame_type='spark',only_return_polys=False,id_col='ID',sparkSession=None): # """ # Creates a polynomial expansion space based on the features. Both polynomials and interactions. # # :param dataframe: The dataframe to compute polynomials with # :param columns: The columns to create polynomidals from # :param degree: The degree to which you want to expand. degree 2 gets (x, x * x, y, x * y, y * y). # :param frame_type: The type of frame that is input and output. Accepted: 'h2o', 'pandas', 'spark' # :parm string only_return_polys: will only return the new columns if set to true and not any of the orginal columns # :parm string id_col: (required for spark) an ID column to join the frames back together # :parm string sparkSession: (required for spark) the spark session for the application # return: A dataframe. # """ # if frame_type == 'spark': # from pyspark.ml.feature import PolynomialExpansion # from pyspark.ml.feature import VectorAssembler # # df = dataframe # # assembler = VectorAssembler( # inputCols=[x for x in columns], # outputCol='features') # df = assembler.transform(df) # df.show(2) # polyExpansion = PolynomialExpansion(degree=degree, inputCol="features", outputCol="polyFeatures") # # df = polyExpansion.transform(df) # df.show(2) # # #define a function for extracting pca vector column into their own columns # def extract_vectors_with_id_col(row): # """ # Takes a vector and extracts it into many columns from the vector. # polyFeatures is the vector being extracted in this function. # Vector values will be named _2, _3, ... # """ # # tuple(x for x in row if x not in ['pcaFeatures'])+ # return (row[id_col],)+tuple(float(x) for x in row.polyFeatures.values) # # # def rename_columns(dataframe,new_prefix='poly_',old_colomn_starting_index=2,new_column_starting_index=1): # """ # Takes a spark df and renames all columns to something like pca_1 # from the previously named columns. # """ # old_column_index = old_colomn_starting_index # new_column_index = new_column_starting_index # for i in range(0,number_of_poly_features): # dataframe = dataframe.withColumnRenamed('_'+str(old_colomn_starting_index),new_prefix+str(new_column_starting_index)) # old_colomn_starting_index+=1 # new_column_starting_index+=1 # return dataframe # # #calculate the number of terms that the expansion made # number_of_poly_features = len(sparkSession.sparkContext.parallelize(df.select(id_col,'polyFeatures').rdd.top(1)).flatMap(list).collect()[1]) # df.show(38) # # if only_return_polys: #only keep decompostion columns and id # df = df.select(id_col,'polyFeatures').rdd.map(extract_vectors_with_id_col).toDF([id_col]) # df = rename_columns(df) # else: #join on ID column and keep all columns # df = df.rdd.map(extract_vectors_with_id_col).toDF([id_col]).join(df,id_col,'inner') # df = rename_columns(df) # df.show(37) # # # return df.drop('polyFeatures','features') # else: # pass @staticmethod def get_top_correlations(dataframe,columns,frame_type='spark'): """ Compute the pearson correlation between two columns and return a list of correlations with the highest correlations first. :param dataframe: The dataframe to compute correlations with :param columns: The columns to compute correlations on must be numeric :param frame_type: The type of frame that is input and output. Accepted: 'h2o', 'pandas', 'spark' return: A list of dictionaries with correlations and columns ordered with highest first. """ if frame_type == 'spark': import math correlation_list = [] correlations_finished = [] #hold correlatons done to prevent repitition for i, col_i in enumerate(columns): for j, col_j in enumerate(columns): if col_i+col_j not in correlations_finished: # don't repeat columns = [col_i,col_j] correlation = dataframe.stat.corr(col_i,col_j) if math.isnan(correlation): correlation=0.0 correlation_list.append({ 'columns': columns, 'correlation': correlation, 'correlation_abs':math.fabs(correlation), }) # print({ # 'columns': columns, # 'correlation': correlation, # 'correlation_abs':math.fabs(correlation), # }) correlations_finished.append(col_i+col_j) #sort the list so highest correlations are first correlation_list = sorted(correlation_list, key=lambda x: x['correlation_abs'], reverse=True) return correlation_list else: pass @staticmethod def feature_combiner(training_frame, valid_frame = None, test_frame=None, columns=['X1','X2','...'],frame_type='spark'): """ Combines numeric features using simple arithmatic operations to create interactions terms. :param training_frame: Training frame from which to generate features and onto which generated feeatures will be cbound. :param valid_frame: (optional) To also combine features on a validation frame include this :param test_frame: (optional) Test frame from which to generate features and onto which generated feeatures will be cbound. :param columns: List of original numeric features from which to generate combined features. :param frame_type: The type of frame that is input and output. Accepted: 'h2o', 'pandas', 'spark' return: Tuple of either (train_df, test_df) or (train_df, valid_df, test_df) """ import math def nCr(n,r): f = math.factorial return f(n) // f(r) // f(n-r) total = nCr(len(columns),2) if frame_type == 'spark': train_df = training_frame test_df = None if test_frame: test_df = test_frame valid_df = None if valid_frame: valid_df = valid_frame completed = 1 for i, col_i in enumerate(columns): for j, col_j in enumerate(columns): # don't repeat (i*j = j*i) if i < j: print('Combining: ' + col_i + ' & ' + col_j + ' (' + str(completed) + '/' + str(total) + ')'+ '...') combined_col_name = str(col_i + '|' + col_j) # multiply, add a new column train_df = train_df.withColumn(combined_col_name, train_df[col_i]*train_df[col_j]) if valid_frame: valid_df = valid_df.withColumn(combined_col_name, valid_df[col_i]*valid_df[col_j]) if test_frame: test_df = test_df.withColumn(combined_col_name, test_df[col_i]*test_df[col_j]) completed += 1 print('DONE combining features.') if valid_frame: if test_frame: return train_df, valid_df, test_df else: return train_df, valid_df else: if test_frame: return train_df, test_df else: return train_df else: train_df, test_df, valid_df = None, None, None if frame_type == 'h2o': # convert to pandas train_df = training_frame.as_data_frame() if valid_frame: valid_df = valid_frame.as_data_frame() if test_frame: test_df = test_frame.as_data_frame() elif frame_type == 'pandas': train_df = training_frame valid_df = valid_frame test_df = test_frame completed = 1 for i, col_i in enumerate(columns): for j, col_j in enumerate(columns): # don't repeat (i*j = j*i) if i < j: print('Combining: ' + col_i + ' & ' + col_j+' (' + str(completed) + '/' + str(total) + ')'+ '...') # convert to pandas col_i_train_df = train_df[col_i] col_j_train_df = train_df[col_j] col_i_valid_df,col_j_valid_df = None,None if valid_frame: col_i_valid_df = valid_df[col_i] col_j_valid_df = valid_df[col_j] col_i_test_df, col_j_test_df = None,None if test_frame: col_i_test_df = test_df[col_i] col_j_test_df = test_df[col_j] # multiply columns together train_df[str(col_i + '|' + col_j)] = col_i_train_df.values*col_j_train_df.values if valid_frame: valid_df[str(col_i + '|' + col_j)] = col_i_valid_df.values*col_j_valid_df.values if test_frame: test_df[str(col_i + '|' + col_j)] = col_i_test_df.values*col_j_test_df.values completed += 1 print('DONE combining features.') if frame_type == 'pandas': if valid_frame: if test_frame: return (train_df, valid_df, test_df) else: return (train_df, valid_df) else: if test_frame: return (train_df, test_df) else: return train_df elif frame_type == 'h2o': # convert back to h2o import h2o print('Converting to H2OFrame ...') # convert train back to h2o training_frame = h2o.H2OFrame(train_df) training_frame.columns = list(train_df) # conserve memory del train_df validation_frame = None if valid_frame: # convert test back to h2o validation_frame = h2o.H2OFrame(valid_df) validation_frame.columns = list(valid_df) # conserve memory del valid_df test_frame = None if test_frame: # convert test back to h2o test_frame = h2o.H2OFrame(test_df) test_frame.columns = list(test_df) # conserve memory del test_df print('Done.') if valid_frame: if test_frame: return training_frame, validation_frame, test_frame else: return training_frame, validation_frame else: if test_frame: return training_frame, test_frame else: return training_frame @staticmethod def shrunken_averages_encoder(training_frame, valid_frame = None,test_frame=None, x='x', y='y', lambda_=0.15, perturb_range=0.05,threshold=150, test=False, frame_type='h2o',test_does_have_y=False,id_col=None,only_return_encoded=False): """ Applies simple target encoding to categorical variables. :param training_frame: Training frame which to create target means and to be encoded. :param valid_frame: (optional) To also combine features on a validation frame include this :param test_frame: (optional) Test frame to be encoded using information from training frame. :param x: Name of input variable to be encoded. :param y: Name of target variable to use for encoding. :param lambda_: Balance between level mean and overall mean for small groups. :param perturb_range: The percent range you want to perturb (enject random noise) levels. 0.05 means that the levels would be perturbed randomly inbetween -0.05% to +0.05% (set to 0 if you don't want to perturb) :param threshold: Number below which a level is considered small enough to be shrunken. :param test: Whether or not to print the row_val_dict for testing purposes. :param frame_type: The type of frame being used. Accepted: ['h2o','pandas','spark'] :param bool test_does_have_y: if the test has y values. If it does then it will caculate independent averages from test frame to prevent feature leakage :param id_col: (spark required only) The name of the id column for spark dataframes :param only_return_encoded: (spark optional only) If set to true will only return the encoded columns and id_col :return: Tuple of 1-3 frames in order of train,valid,test """ encode_name = x + '_Tencode' if frame_type == 'spark': # x_column_type = training_frame.select(x).dtypes.flatMap(list)[1] #To get the average out of the df have to convert to an rdd and flatMap #it. Then take the first and only value from the list returned. overall_mean = training_frame.agg({y:'avg'}).rdd.flatMap(list).first() overall_mean_train = overall_mean #ALTERNATIVE way to do the same thing with sql functions # from pyspark.sql.functions import col, avg # overall_mean = training_frame.agg(avg(col(y))).rdd.flatMap(list).first() def find_shrunken_averages(tuple_input): """ Reduce function to return the proper average for a given level. :return: A tuple of (level, ajusted_mean||overall_mean) """ #The categorical level. level = tuple_input[0] # The labels list (y varaibale) from a map function. labels = tuple_input[1] # The total number of level occurances in the frame (ie count) level_n = len(labels) level_mean = sum(labels) / level_n # Determine if there enough occurances of a level. If NOT return overall_mean if level_n >= threshold: return(level,level_mean) else: return(level, ((1 - lambda_) * level_mean) +\ (lambda_ * overall_mean) ) #This article shows why one has to use a map-groupByKey-map rather then map-reduce order. To collect all values into one reducer #you have to do a groupByKey. #https://databricks.gitbooks.io/databricks-spark-knowledge-base/content/best_practices/prefer_reducebykey_over_groupbykey.html levels_average_list_train = training_frame.select(x,y).rdd.map(lambda i: (i[0], i[1])).groupByKey().map(find_shrunken_averages).collect() # print(levels_average_list_train) levels_average_list_valid = None overall_mean_valid = None if valid_frame: #update overall_mean to valid frames mean overall_mean_valid = valid_frame.agg({y:'avg'}).rdd.flatMap(list).first() overall_mean = overall_mean_valid levels_average_list_valid = valid_frame.select(x,y).rdd.map(lambda i: (i[0], i[1])).groupByKey().map(find_shrunken_averages).collect() levels_average_list_test = None overall_mean_test = None if test_does_have_y: #update overall_mean to valid frames mean overall_mean_test = test_frame.agg({y:'avg'}).rdd.flatMap(list).first() overall_mean = overall_mean_test levels_average_list_test = test_frame.select(x,y).rdd.map(lambda i: (i[0], i[1])).groupByKey().map(find_shrunken_averages).collect() from pyspark.sql.functions import lit #creates a literal value # create new frames with a new column new_training_frame, new_test_frame, new_valid_frame = None,None,None if id_col != None: #filter out other columns to save memory if id_col specified new_training_frame = training_frame.select(id_col,x).withColumn(encode_name, lit(overall_mean_train)) if valid_frame: new_valid_frame = valid_frame.select(id_col,x).withColumn(encode_name, lit(overall_mean_valid)) if test_does_have_y: new_test_frame = test_frame.select(id_col,x).withColumn(encode_name, lit(overall_mean_test)) else: if valid_frame: new_test_frame = test_frame.select(id_col,x).withColumn(encode_name, lit(overall_mean_valid)) else: #no valid frame so apply train means new_test_frame = test_frame.select(id_col,x).withColumn(encode_name, lit(overall_mean_train)) else: new_training_frame = training_frame.withColumn(encode_name, lit(overall_mean_train)) if valid_frame: new_valid_frame = valid_frame.withColumn(encode_name, lit(overall_mean_valid)) if test_does_have_y: new_test_frame = test_frame.withColumn(encode_name, lit(overall_mean_test)) else: if valid_frame: new_test_frame = test_frame.withColumn(encode_name, lit(overall_mean_valid)) else: #no valid frame so apply train means new_test_frame = test_frame.withColumn(encode_name, lit(overall_mean_train)) #Replace the values in the dataframes with new encoded values from pyspark.sql.functions import when for k,v in levels_average_list_train: new_training_frame = new_training_frame.withColumn(encode_name, when(new_training_frame[x] == k, v) .otherwise(new_training_frame[encode_name])) if not test_does_have_y: if not valid_frame: new_test_frame= new_test_frame.withColumn(encode_name, when(new_test_frame[x] == k, v) .otherwise(new_test_frame[encode_name])) #if we have a validation frame we want to set the test levels to the original_numerics #from the averaged valid frame instead of the test frame if valid_frame: for k,v in levels_average_list_valid: new_valid_frame = new_valid_frame.withColumn(encode_name, when(new_valid_frame[x] == k, v) .otherwise(new_valid_frame[encode_name])) if not test_does_have_y: new_test_frame= new_test_frame.withColumn(encode_name, when(new_test_frame[x] == k, v) .otherwise(new_test_frame[encode_name])) #if the test frame has its own levels if test_does_have_y: for k,v in levels_average_list_test: new_test_frame= new_test_frame.withColumn(encode_name, when(new_test_frame[x] == k, v) .otherwise(new_test_frame[encode_name])) if perturb_range > 0 or perturb_range < 0: #This will perturb everything by the same amount udfs dont work. # from pyspark.sql.types import NumericType,FloatType # from pyspark.sql.functions import udf # def perturb_value(value): # import numpy as np # perturb_percent = np.random.uniform(low=1-perturb_range, high=1+perturb_range, size=(1))[0] # return (value*perturb_percent) # perturb_value_udf = udf(perturb_value, FloatType()) # new_training_frame = new_training_frame.withColumn(encode_name,perturb_value(new_training_frame[encode_name])) def perturb_value(tuple_input): """ A mapper to inject random noise into each individual value. """ id = tuple_input[0] value = tuple_input[1] from numpy.random import uniform perturb_percent = uniform(low=1-perturb_range, high=1+perturb_range, size=(1))[0] return (id, float(value*perturb_percent)) # new_training_frame.select(encode_name).show(10) if training_frame: #Do the transformations and perturb temp_df = new_training_frame.select(id_col,encode_name).rdd.map(lambda i: (i[0], i[1])).map(perturb_value).toDF([id_col,encode_name]) #Join the perturbed row back onto the main set new_training_frame = new_training_frame.drop(encode_name).join(temp_df,id_col,'inner') if valid_frame: #Do the transformations and perturb temp_df = new_valid_frame.select(id_col,encode_name).rdd.map(lambda i: (i[0], i[1])).map(perturb_value).toDF([id_col,encode_name]) #Join the perturbed row back onto the main set new_valid_frame = new_valid_frame.drop(encode_name).join(temp_df,id_col,'inner') if test_frame: #Do the transformations and perturb temp_df = new_test_frame.select(id_col,encode_name).rdd.map(lambda i: (i[0], i[1])).map(perturb_value).toDF([id_col,encode_name]) #Join the perturbed row back onto the main set new_test_frame = new_test_frame.drop(encode_name).join(temp_df,id_col,'inner') # new_training_frame.select(encode_name).show(10) if only_return_encoded: #remove origional x as its already in the original dfs if valid_frame: if test_frame: return new_training_frame.drop(x), new_valid_frame.drop(x),new_test_frame.drop(x) else: return new_training_frame.drop(x), new_valid_frame.drop(x) else: if test_frame: return new_training_frame.drop(x), new_test_frame.drop(x) else: return new_training_frame.drop(x) else: if valid_frame: if test_frame: return new_training_frame.drop(x).join(training_frame,id_col,'inner'), new_valid_frame.drop(x).join(valid_frame,id_col,'inner'), new_test_frame.drop(x).join(test_frame,id_col,'inner') else: return new_training_frame.drop(x).join(training_frame,id_col,'inner'), new_valid_frame.drop(x).join(valid_frame,id_col,'inner') else: if test_frame: return new_training_frame.drop(x).join(training_frame,id_col,'inner'), new_test_frame.drop(x).join(test_frame,id_col,'inner') else: return new_training_frame.drop(x).join(training_frame,id_col,'inner') else: import h2o import pandas as pd import numpy as np trdf, vdf, tsdf, tss = None, None, None, None if frame_type == 'h2o': # convert to pandas trdf = training_frame.as_data_frame().loc[:, [x,y]] # df if valid_frame: vdf = valid_frame.as_data_frame().loc[:, [x,y]] # df if test_frame: if test_does_have_y: tsdf = test_frame.as_data_frame().loc[:, [x,y]] # df else: tss = test_frame.as_data_frame().loc[:, x] # series elif frame_type == 'pandas': trdf = training_frame.loc[:, [x,y]] # df if valid_frame: vdf = valid_frame.loc[:, [x,y]] # df if test_frame: if test_does_have_y: tsdf = test_frame.loc[:, [x,y]] # df else: tss = test_frame.loc[:, x] # series # create dictionary of level:encode val overall_mean_train = trdf[y].mean() overall_mean_valid = None if valid_frame: overall_mean_valid = vdf[y].mean() overall_mean_test = None if test_frame: if test_does_have_y: overall_mean_test = tsdf[y].mean() row_val_dict_train = {} row_val_dict_valid = {} row_val_dict_test = {} for level in trdf[x].unique(): level_df = trdf[trdf[x] == level][y] level_n = level_df.shape[0] level_mean = level_df.mean() if level_n >= threshold: row_val_dict_train[level] = level_mean else: row_val_dict_train[level] = ((1 - lambda_) * level_mean) +\ (lambda_ * overall_mean_train) if valid_frame: for level in vdf[x].unique(): level_df = vdf[trdf[x] == level][y] level_n = level_df.shape[0] level_mean = level_df.mean() if level_n >= threshold: row_val_dict_valid[level] = level_mean else: row_val_dict_valid[level] = ((1 - lambda_) * level_mean) +\ (lambda_ * overall_mean_valid) if test_frame: if test_does_have_y: for level in tsdf[x].unique(): level_df = tsdf[tsdf[x] == level][y] level_n = level_df.shape[0] level_mean = level_df.mean() if level_n >= threshold: row_val_dict_test[level] = level_mean else: row_val_dict_test[level] = ((1 - lambda_) * level_mean) +\ (lambda_ * overall_mean_test) row_val_dict_train[np.nan] = overall_mean_train # handle missing values if valid_frame: row_val_dict_valid[np.nan] = overall_mean_valid # handle missing values if test_frame: if test_does_have_y: row_val_dict_test[np.nan] = overall_mean_test # handle missing values if test: print(row_val_dict_train) print(row_val_dict_valid) from numpy.random import uniform # apply the transform to training data trdf[encode_name] = trdf[x].apply(lambda i: row_val_dict_train[i]*uniform(low=1-perturb_range, high=1+perturb_range)) if valid_frame: vdf[encode_name] = vdf[x].apply(lambda i: row_val_dict_valid[i]*uniform(low=1-perturb_range, high=1+perturb_range)) if test_frame: if test_does_have_y: tsdf[encode_name] = tsdf[x].apply(lambda i: row_val_dict_test[i]*uniform(low=1-perturb_range, high=1+perturb_range)) # apply the transform to test data if it doesn't have its own y values if test_frame: if not test_does_have_y: tsdf = pd.DataFrame(columns=[x, encode_name]) tsdf[x] = tss if valid_frame: tsdf.loc[:, encode_name] = overall_mean_valid # handle previously unseen values else: tsdf.loc[:, encode_name] = overall_mean_train # handle previously unseen values # handle values that are seen in tsdf but not row_val_dict for i, col_i in enumerate(tsdf[x]): try: row_val_dict_train[col_i] except: # a value that appeared in tsdf isn't in the row_val_dict so just # make it the overall_mean row_val_dict_train[col_i] = overall_mean_train if valid_frame: for i, col_i in enumerate(vdf[x]): try: row_val_dict_valid[col_i] except: # a value that appeared in tsdf isn't in the row_val_dict so just # make it the overall_mean row_val_dict_valid[col_i] = overall_mean_valid tsdf[encode_name] = tsdf[x].apply(lambda i: row_val_dict_valid[i]*uniform(low=1-perturb_range, high=1+perturb_range)) else: tsdf[encode_name] = tsdf[x].apply(lambda i: row_val_dict_train[i]*uniform(low=1-perturb_range, high=1+perturb_range)) if frame_type == 'h2o': # convert back to H2O trdf = h2o.H2OFrame(trdf[encode_name].as_matrix()) trdf.columns = [encode_name] if valid_frame: vdf = h2o.H2OFrame(vdf[encode_name].as_matrix()) vdf.columns = [encode_name] if test_frame: tsdf = h2o.H2OFrame(tsdf[encode_name].as_matrix()) tsdf.columns = [encode_name] if valid_frame: if test_frame: return (trdf,vdf, tsdf) else: return (trdf,vdf) else: if test_frame: return (trdf,tsdf) else: return trdf else: #pandas #just return pandas if valid_frame: if test_frame: return (trdf,vdf, tsdf) else: return (trdf,vdf) else: if test_frame: return (trdf,tsdf) else: return trdf @staticmethod def convert_boolean_to_int(frame, rejects=[],frame_type='spark'): """Converts all boolean types to integers. :param frame: The frame from which to determine types. :param rejects: Columns not to be converted :param frame_type: The type of frame being used. Accepted: ['h2o','pandas','spark'] :return: The new dataframe """ if frame_type == 'spark': from pyspark.sql.functions import when df = frame for column, dtype in df.dtypes: if column not in rejects: if dtype == 'boolean': df = df.withColumn(column, when(df[column] == True, 1) .when(df[column] == False,0) .otherwise(None).cast('integer')) return df else: pass @staticmethod def get_type_lists(frame, rejects=['Id', 'ID','id'],frame_type='spark'): """Creates lists of numeric and categorical variables. :param frame: The frame from which to determine types. :param rejects: Variable names not to be included in returned lists. :param frame_type: The type of frame being used. Accepted: ['h2o','pandas','spark'] :return: Tuple of lists for numeric and categorical variables in the frame. """ #Handle spark type data frames if frame_type == 'spark': nums, cats = [], [] for key, val in frame.dtypes: if key not in rejects: if val == 'string' or val == 'boolean': cats.append(key) else: # ['int','double'] nums.append(key) print('Numeric =', nums) print() print('Categorical =', cats) return nums, cats else: nums, cats = [], [] for key, val in frame.types.items(): if key not in rejects: if val == 'enum': cats.append(key) else: nums.append(key) print('Numeric =', nums) print() print('Categorical =', cats) return nums, cats @staticmethod def remove_outliers_by_percentile(dataframe, columns, limits =.01, frame_type='spark'): """ Remove all rows in a dataframe with columns outside of the percentiles. :param object df: The df to be tranformed :param list columns: columns to have outliers removed :param float limits: The percentage between 1-100 that should be removed on either side :param string frame_type: the frame type you want input and returned Accepted: 'h2o','spark','pandas' :return: the df with outlier rows removed """ if frame_type == 'spark': import numpy as np df = dataframe def percentile_threshold(ardd, percentile): assert percentile > 0 and percentile <= 100, "percentile should be larger then 0 and smaller or equal to 100" # df.approxQuantile("x", [0.5], 0.25) return ardd.sortBy(lambda x: x).zipWithIndex().map(lambda x: (x[1], x[0])) \ .lookup(np.ceil(ardd.count() / 100 * percentile - 1))[0] for column in columns: def flatten_column(row): return tuple(float(x) for x in row) #Compute the percentiles lower = percentile_threshold(df.select(column).rdd.flatMap(flatten_column),limits) upper = percentile_threshold(df.select(column).rdd.flatMap(flatten_column), 100 - limits) print('For {column} the lower limit is {lower}'.format(column=column,lower=str(lower))) print('For {column} the upper limit is {upper}'.format(column=column,upper=str(upper))) from pyspark.sql.functions import lit #Filter out outliers df = df.where("{column} < {upper} AND {column} > {lower} "\ .format(column=column,upper=upper,lower=lower)) return df else: import numpy as np df = None if frame_type == 'h2o': # convert to pandas df = dataframe.as_data_frame() elif frame_type == 'pandas': df = dataframe for column in columns: ulimit = np.percentile(train_df[column].values, 100 - limits) llimit = np.percentile(train_df[column].values, limits) df[column] = df[df[column] < ulimit] df[column] = df[df[column] > llimit] if frame_type == 'h2o': import h2o print('Converting to H2OFrame ...') # convert train back to h2o df = h2o.H2OFrame(df) print('Done.') return df else: return df @staticmethod def winsorize_columns(dataframe, columns, winzerize_type='percentile',limits =.01, standard_deviation_limit=3,frame_type='spark'): """ Winzerize all columns specified in a dataframe. Must pick between type percentile and type stddev. stddev only supported by spark frames :param object df: The df to be tranformed :param list columns: columns to be winzerized :param string winzerize_type: The type of winserizing you want to do either percentile or stddev :param float limits: The percentage between 1-100 that should be winzerized on either side (for type percentile only) :param float standard_deviation_limit: The standard dev limits you want to remove on either side (for type stddev only) :param string frame_type: the frame type you want input and returned Accepted: 'h2o','spark','pandas' :return: the df with column(s) winzerized """ if frame_type == 'spark': import numpy as np df = dataframe if winzerize_type == 'percentile': def percentile_threshold(ardd, percentile): assert percentile > 0 and percentile <= 100, "percentile should be larger then 0 and smaller or equal to 100" return ardd.sortBy(lambda x: x).zipWithIndex().map(lambda x: (x[1], x[0])) \ .lookup(np.ceil(ardd.count() / 100 * percentile - 1))[0] for column in columns: def flatten_column(row): return tuple(float(x) for x in row) #Compute the percentiles lower = percentile_threshold(df.select(column).rdd.flatMap(flatten_column),limits) upper = percentile_threshold(df.select(column).rdd.flatMap(flatten_column), 100 - limits) print('For {column} the lower limit is {lower}'.format(column=column,lower=str(lower))) print('For {column} the upper limit is {upper}'.format(column=column,upper=str(upper))) from pyspark.sql.functions import when #Make columns greater then upper bound == to upper bound df = df.withColumn(column, when(df[column] > upper, upper) .otherwise(df[column])) #Make columns less then lower bound == to lower bound df = df.withColumn(column, when(df[column] < lower, lower) .otherwise(df[column])) return df elif winzerize_type == 'stddev': def replace(df,column_to_filter,standard_deviations=3): """ Will remove the outliers that have a stddev higher then x(param standard_deviations). """ import math #This function will flatten the row of the dataframe def flatten_column(row): return tuple(float(x) for x in row) stats = df.select(column_to_filter).rdd.flatMap(flatten_column).stats() mean = stats.mean() variance = stats.variance() stddev = math.sqrt(variance) stddev_threshhold = stddev*standard_deviations # print(stddev_threshhold) from pyspark.sql.functions import lit,abs from pyspark.sql.functions import when df = df.withColumn(column_to_filter, when((abs(df[column_to_filter] - mean) > stddev_threshhold) & ((df[column_to_filter] - mean) > 0), (mean+stddev_threshhold)) .otherwise(df[column_to_filter])) df = df.withColumn(column_to_filter, when((abs(df[column_to_filter] - mean) > stddev_threshhold) & ((df[column_to_filter] - mean) < 0), (mean-stddev_threshhold)) .otherwise(df[column_to_filter])) return df for column in columns: df = replace(df,column,standard_deviation_limit) return df else: from scipy.stats.mstats import winsorize df = None if frame_type == 'h2o': # convert to pandas df = dataframe.as_data_frame() elif frame_type == 'pandas': df = dataframe for column in columns: df[column] = winsorize(df[column], limits = limits) if frame_type == 'h2o': import h2o print('Converting to H2OFrame ...') # convert train back to h2o df = h2o.H2OFrame(df) print('Done.') return df else: return df @staticmethod def remove_outliers_by_std(dataframe, columns, standard_deviation_limit = 3, frame_type='spark'): """ Remove rows from a dataframe that contain outliers in columns. :param object dataframe: the dataframe to remove outliers from :param list columns: the columns you want to use to calculate outliers to remove :param numeric standard_deviation_limit: the propertion of standard deviation that makes a column value an outlier :param string frame_type: the frame type you want input and returned :return: the df with outliers removed """ if frame_type == 'spark': def remove(df,column_to_filter,standard_deviations=3): """ Will remove the outliers that have a stddev higher then x(param standard_deviations). """ import math #This function will flatten the row of the dataframe def flatten_column(row): return tuple(float(x) for x in row) stats = df.select(column_to_filter).rdd.flatMap(flatten_column).stats() mean = stats.mean() variance = stats.variance() stddev = math.sqrt(variance) stddev_threshhold = stddev*standard_deviations print(stddev_threshhold) from pyspark.sql.functions import lit df = df.where("abs({column_to_filter} - {mean}) > {stddev_threshhold}"\ .format(column_to_filter=column_to_filter,mean=mean,stddev_threshhold=stddev_threshhold)) return df df = dataframe for column in columns: df = remove(df,column,standard_deviation_limit) return df else: import numpy as np df = None if frame_type == 'h2o': # convert to pandas df = dataframe.as_data_frame() elif frame_type == 'pandas': df = dataframe for column in columns: stddev = df[column].values.std(ddof=1) mean = stddev = df[column].values.mean() df[column] = df[abs(df[column] - mean) < stddev*standard_deviations] if frame_type == 'h2o': import h2o print('Converting to H2OFrame ...') # convert train back to h2o df = h2o.H2OFrame(df) print('Done.') return df else: return df @staticmethod def create_spark_estimator_vector(df, ignore = [], out_put_column='features' ): """ Creates a vector of features to use for SparkML estimators. :param object df: A spark data frame :param list ignore: list of columns that won't be used :param string out_put_column: the name of the output vector :return: The df with new vector column added """ from pyspark.ml.feature import VectorAssembler assembler = VectorAssembler( inputCols=[x for x in df.columns if x not in ignore], outputCol=out_put_column) return assembler.transform(df) @staticmethod def dimensionality_reduction(train_frame,valid_frame=None,test_frame=None,columns=[],n_comp=320,random_seed=420,decompositions_to_run=['PCA','TSVD','ICA','GRP','SRP'],frame_type='spark',test_does_have_y=False,only_return_decompositions=False,id_col='ID', column_name=None): """ Shrink input features in n_comp features using one or more decomposition functions. h2o/pandas frames supports: ['PCA','TSVD','ICA','GRP','SRP'] spark frame supports: ['PCA','SVD'] :param object train_frame: an input frame of the training data :param object valid_frame: (optional) an input frame with validation data :param object test_frame: (optional) an input frame of the test data :param list columns: the columns to decompose :param int n_comp: the number of features you want return (per technique) :param int random_seed: the random seed you want to make the decompositions with :param string frame_type: the frame type you want input and returned Accepted: 'h2o','spark','pandas' :param bool test_does_have_y: if the test has y values. If it does then it will caculate independent vectors to prevent feature leakage :parm bool only_return_decompositions: will only return the decompositions if set to true and not any of the orginal columns :parm string only_return_decompositions: will only return the decompositions if set to true and not any of the orginal columns :parm string id_col: (required for spark) an ID column to join the frames back together :parm string column_name: (optional) if you want something to come before the pca_# :return: Up to three frames in order train, valid, test (depends on how many frames you input) """ if frame_type == 'spark': from pyspark.ml.feature import PCA from pyspark.ml.linalg import Vectors from pyspark.ml.feature import VectorAssembler # from pyspark.ml.feature import VectorDisassembler from pyspark.ml.feature import StandardScaler from pyspark.ml import Pipeline train_df, valid_df, test_df = None,None,None train_df = train_frame if valid_frame: valid_df = valid_frame if test_frame: test_df = test_frame assembler = VectorAssembler( inputCols=columns, outputCol="features") scaler = StandardScaler(inputCol=assembler.getOutputCol(), outputCol="scaledFeatures", withStd=False, withMean=True) pca = PCA(k=n_comp, inputCol=scaler.getOutputCol(), outputCol="pcaFeatures") pipeline = Pipeline(stages=[assembler,scaler, pca]) #define a function for extracting pca vector column into their own columns def extract_vectors(row): """ Takes a vector and extracts it into many columns from the vector. pcaFeatures is the vector being extracted in this function. Vector values will be named _2, _3, ... """ # tuple(x for x in row if x not in ['pcaFeatures'])+ return tuple(float(x) for x in row.pcaFeatures.values) #define a function for extracting pca vector column into their own columns def extract_vectors_with_id_col(row): """ Takes a vector and extracts it into many columns from the vector. pcaFeatures is the vector being extracted in this function. Vector values will be named _2, _3, ... """ # tuple(x for x in row if x not in ['pcaFeatures'])+ return (row[id_col],)+tuple(float(x) for x in row.pcaFeatures.values) def rename_columns(dataframe,new_prefix='pca_',old_colomn_starting_index=2,new_column_starting_index=1): """ Takes a spark df and renames all columns to something like pca_1 from the previously named columns. """ old_column_index = old_colomn_starting_index new_column_index = new_column_starting_index for i in range(0,n_comp): if column_name: dataframe = dataframe.withColumnRenamed('_'+str(old_colomn_starting_index),column_name+'_'+new_prefix+str(new_column_starting_index)) else: dataframe = dataframe.withColumnRenamed('_'+str(old_colomn_starting_index),new_prefix+str(new_column_starting_index)) old_colomn_starting_index+=1 new_column_starting_index+=1 return dataframe #Do PCA tranformation for training data model_train = pipeline.fit(train_frame) result_train = model_train.transform(train_frame) extracted_pca_train = result_train.rdd.map(extract_vectors_with_id_col).toDF([id_col]) extracted_pca_train = rename_columns(extracted_pca_train) #Do PCA tranformation for validation data if it was given extracted_pca_valid = None model_valid = None #Will need this to fit test if it doesn't have y values if valid_frame: model_valid = pipeline.fit(valid_frame) result_valid = model_train.transform(valid_frame) extracted_pca_valid = result_valid.rdd.map(extract_vectors_with_id_col).toDF([id_col]) extracted_pca_valid = rename_columns(extracted_pca_valid) #Do PCA tranformation for test data if it was given extracted_pca_test = None if test_frame: model_test = pipeline.fit(test_frame) result_test = model_test.transform(test_frame) extracted_pca_test = result_test.rdd.map(extract_vectors_with_id_col).toDF([id_col]) extracted_pca_test = rename_columns(extracted_pca_test) ### ### SVD ### ### # https://stackoverflow.com/questions/33428589/pyspark-and-pca-how-can-i-extract-the-eigenvectors-of-this-pca-how-can-i-calcu/33500704#33500704 # https://github.com/apache/spark/blob/master/examples/src/main/python/mllib/svd_example.py # https://blog.dominodatalab.com/pca-on-very-large-neuroimaging-datasets-using-pyspark/ from pyspark.mllib.linalg.distributed import RowMatrix from pyspark.mllib.linalg.distributed import IndexedRow, IndexedRowMatrix from pyspark.mllib.linalg import DenseVector def extract_svd_vectors_with_id_col(row): """ Takes a vector and extracts it into many columns from the vector. pcaFeatures is the vector being extracted in this function. Vector values will be named _2, _3, ... """ # tuple(x for x in row if x not in ['pcaFeatures'])+ return (row[id_col],)+tuple(float(x) for x in row.svdFeatures.values) if 'SVD' in decompositions_to_run: #Train first mat = IndexedRowMatrix(result_train.rdd.map(lambda row: IndexedRow(row[id_col],DenseVector(row['pcaFeatures'])))) svd = mat.computeSVD(n_comp, computeU=True) U = svd.U # The U factor is a RowMatrix. s = svd.s # The singular values are stored in a local dense vector. V = svd.V # Print vectors for testing # collected = U.rows.collect() # print("U factor is:") # for vector in collected: # print(vector) # print("Singular values are: %s" % s) # print("V factor is:\n%s" % V) extracted_svd_train = U.rows.map(lambda x: (x, )).toDF().rdd.map(lambda x: (x['_1'][0],x['_1'][1] )).toDF([id_col,'svdFeatures']).rdd.map(extract_svd_vectors_with_id_col).toDF([id_col]) extracted_svd_train = rename_columns(extracted_svd_train,new_prefix='svd_') if valid_frame: mat = IndexedRowMatrix(result_valid.rdd.map(lambda row: IndexedRow(row[id_col],DenseVector(row['pcaFeatures'])))) svd = mat.computeSVD(n_comp, computeU=True) U = svd.U # The U factor is a RowMatrix. s = svd.s # The singular values are stored in a local dense vector. V = svd.V # The V factor is a local dense matrix. extracted_svd_valid = U.rows.map(lambda x: (x, )).toDF().rdd.map(lambda x: (x['_1'][0],x['_1'][1] )).toDF([id_col,'svdFeatures']).rdd.map(extract_svd_vectors_with_id_col).toDF([id_col]) extracted_svd_valid = rename_columns(extracted_svd_valid,new_prefix='svd_') if test_frame: mat = IndexedRowMatrix(result_valid.rdd.map(lambda row: IndexedRow(row[id_col],DenseVector(row['pcaFeatures'])))) svd = mat.computeSVD(n_comp, computeU=True) U = svd.U # The U factor is a RowMatrix. s = svd.s # The singular values are stored in a local dense vector. V = svd.V # The V factor is a local dense matrix. extracted_svd_test = U.rows.map(lambda x: (x, )).toDF().rdd.map(lambda x: (x['_1'][0],x['_1'][1] )).toDF([id_col,'svdFeatures']).rdd.map(extract_svd_vectors_with_id_col).toDF([id_col]) extracted_svd_test = rename_columns(extracted_svd_test,new_prefix='svd_') if only_return_decompositions: train_df = train_df.select(id_col) if valid_df: train_df = valid_df.select(id_col) if test_df: test_df = test_df.select(id_col) if 'PCA' in decompositions_to_run: train_df = extracted_pca_train.join(train_df,id_col,'inner') if valid_df: valid_df = extracted_pca_valid.join(valid_df,id_col,'inner') if test_df: test_df = extracted_pca_test.join(test_df,id_col,'inner') if 'SVD' in decompositions_to_run: train_df = extracted_svd_train.join(train_df,id_col,'inner') if valid_df: valid_df = extracted_svd_valid.join(valid_df,id_col,'inner') if test_df: test_df = extracted_svd_test.join(test_df,id_col,'inner') # return the right number of frames if valid_frame: if test_frame: return train_df.drop('features','scaledFeatures','pcaFeatures','svdFeatures'),valid_df.drop('features','scaledFeatures','pcaFeatures','svdFeatures'),test_df.drop('features','scaledFeatures','pcaFeatures','svdFeatures') else: return train_df.drop('features','scaledFeatures','pcaFeatures','svdFeatures'),valid_df.drop('features','scaledFeatures','pcaFeatures','svdFeatures') else: if test_frame: return train_df.drop('features','scaledFeatures','pcaFeatures','svdFeatures'),test_df.drop('features','scaledFeatures','pcaFeatures','svdFeatures') else: return train_df.drop('features','scaledFeatures','pcaFeatures','svdFeatures') elif frame_type in ['h2o','pandas']: from sklearn.random_projection import GaussianRandomProjection from sklearn.random_projection import SparseRandomProjection from sklearn.decomposition import PCA, FastICA from sklearn.decomposition import TruncatedSVD import pandas as pd train_df, test_df, valid_df = None, None, None if frame_type == 'h2o': # convert to pandas train_df = train_frame.as_data_frame() if valid_frame: valid_df = valid_frame.as_data_frame() test_df = test_frame.as_data_frame() elif frame_type == 'pandas': train_df = training_frame if valid_frame: valid_df = valid_frame test_df = test_frame train_df = train_df[columns] if valid_frame: valid_df = valid_df[columns] test_df = test_df[columns] tsvd_results_train, tsvd_results_valid, tsvd_results_test = None, None, None if 'TSVD' in decompositions_to_run: tsvd = TruncatedSVD(n_components=n_comp, random_state=random_seed) tsvd_results_train = tsvd.fit_transform(train_df) tsvd_results_valid, tsvd_results_test = None, None if valid_frame: tsvd2 = TruncatedSVD(n_components=n_comp, random_state=random_seed) tsvd_results_valid = tsvd2.fit_transform(valid_df) if test_frame: if test_does_have_y: tsvd3 = TruncatedSVD(n_components=n_comp, random_state=random_seed) tsvd_results_test = tsvd3.fit_transform(test_df) else: tsvd_results_test = tsvd2.transform(test_df) else: if test_frame: if test_does_have_y: tsvd3 = TruncatedSVD(n_components=n_comp, random_state=random_seed) tsvd_results_test = tsvd3.fit_transform(test_df) else: tsvd_results_test = tsvd.transform(test_df) #PCA pca_results_train, pca_results_valid, pca_results_test = None, None, None if 'PCA' in decompositions_to_run: pca = PCA(n_components=n_comp, random_state=random_seed) pca_results_train = pca.fit_transform(train_df) if valid_frame: pca2 = PCA(n_components=n_comp, random_state=random_seed) pca_results_valid = pca2.fit_transform(valid_df) if test_frame: if test_does_have_y: pca3 = PCA(n_components=n_comp, random_state=random_seed) pca_results_test = pca3.fit_transform(test_df) else: pca_results_test = pca2.transform(test_df) else: if test_frame: if test_does_have_y: pca3 = PCA(n_components=n_comp, random_state=random_seed) pca_results_test = pca3.fit_transform(test_df) else: pca_results_test = pca.transform(test_df) # ICA ica_results_train, ica_results_valid, ica_results_test = None, None, None if 'ICA' in decompositions_to_run: ica = FastICA(n_components=n_comp, random_state=random_seed) ica_results_train = ica.fit_transform(train_df) if valid_frame: ica2 = FastICA(n_components=n_comp, random_state=random_seed) ica_results_valid = ica2.fit_transform(valid_df) if test_frame: if test_does_have_y: ica3 = FastICA(n_components=n_comp, random_state=random_seed) ica_results_test = ica3.fit_transform(test_df) else: ica_results_test = ica2.transform(test_df) else: if test_frame: if test_does_have_y: ica3 = FastICA(n_components=n_comp, random_state=random_seed) ica_results_test = ica3.fit_transform(test_df) else: ica_results_test = ica.transform(test_df) # GRP grp_results_train, grp_results_valid, grp_results_test = None, None, None if 'GRP' in decompositions_to_run: grp = GaussianRandomProjection(n_components=n_comp,eps=0.1, random_state=random_seed) grp_results_train = grp.fit_transform(train_df) if valid_frame: grp2 = GaussianRandomProjection(n_components=n_comp,eps=0.1, random_state=random_seed) grp_results_valid = grp2.fit_transform(valid_df) if test_frame: if test_does_have_y: grp3 = GaussianRandomProjection(n_components=n_comp,eps=0.1, random_state=random_seed) grp_results_test = grp3.fit_transform(test_df) else: grp_results_test = grp2.transform(test_df) else: if test_frame: if test_does_have_y: grp3 = GaussianRandomProjection(n_components=n_comp,eps=0.1, random_state=random_seed) grp_results_test = grp3.fit_transform(test_df) else: grp_results_test = grp.transform(test_df) # SRP srp_results_train, srp_results_valid, srp_results_test = None, None, None if 'SRP' in decompositions_to_run: srp = SparseRandomProjection(n_components=n_comp, dense_output=True, random_state=random_seed) srp_results_train = srp.fit_transform(train_df) if valid_frame: srp2 = SparseRandomProjection(n_components=n_comp, dense_output=True, random_state=random_seed) srp_results_valid = srp2.fit_transform(valid_df) if test_frame: if test_does_have_y: srp3 = SparseRandomProjection(n_components=n_comp, dense_output=True, random_state=random_seed) srp_results_test = srp3.fit_transform(test_df) else: srp_results_test = srp2.transform(test_df) else: if test_frame: if test_does_have_y: srp3 = SparseRandomProjection(n_components=n_comp, dense_output=True, random_state=random_seed) srp_results_test = srp3.fit_transform(test_df) else: srp_results_test = srp.transform(test_df) if only_return_decompositions: train_df = pd.DataFrame() if valid_frame: valid_df = pd.DataFrame() if test_frame: test_df = pd.DataFrame() for i in range(1, n_comp + 1): if 'PCA' in decompositions_to_run: train_df['pca_' + str(i)] = pca_results_train[:, i - 1] if valid_frame: valid_df['pca_' + str(i)] = pca_results_valid[:, i - 1] if test_frame: test_df['pca_' + str(i)] = pca_results_test[:, i - 1] if 'ICA' in decompositions_to_run: train_df['ica_' + str(i)] = ica_results_train[:, i - 1] if valid_frame: valid_df['pca_' + str(i)] = ica_results_valid[:, i - 1] if test_frame: test_df['ica_' + str(i)] = ica_results_test[:, i - 1] if 'TSVD' in decompositions_to_run: train_df['tsvd_' + str(i)] = tsvd_results_train[:, i - 1] if valid_frame: valid_df['pca_' + str(i)] = tsvd_results_valid[:, i - 1] if test_frame: test_df['tsvd_' + str(i)] = tsvd_results_test[:, i - 1] if 'GRP' in decompositions_to_run: train_df['grp_' + str(i)] = grp_results_train[:, i - 1] if valid_frame: valid_df['pca_' + str(i)] = grp_results_valid[:, i - 1] if test_frame: test_df['grp_' + str(i)] = grp_results_test[:, i - 1] if 'SRP' in decompositions_to_run: train_df['srp_' + str(i)] = srp_results_train[:, i - 1] if valid_frame: valid_df['pca_' + str(i)] = srp_results_valid[:, i - 1] if test_frame: test_df['srp_' + str(i)] = srp_results_test[:, i - 1] if frame_type == 'pandas': if valid_frame: if test_frame: return (train_df, valid_df, test_df) else: return (train_df, valid_df) else: if test_frame: return (train_df, test_df) else: return (train_df) elif frame_type == 'h2o': # convert back to h2o import h2o print('Converting to H2OFrame ...') # convert train back to h2o training_frame = h2o.H2OFrame(train_df) training_frame.columns = list(train_df) # conserve memory del train_df testing_frame = None if test_frame: # convert test back to h2o testing_frame = h2o.H2OFrame(test_df) testing_frame.columns = list(test_df) # conserve memory del test_df validation_frame = None if valid_frame: # convert test back to h2o validation_frame = h2o.H2OFrame(valid_df) validation_frame.columns = list(valid_df) # conserve memory del valid_df print('Done.') if valid_frame: if test_frame: return training_frame, validation_frame, testing_frame else: return training_frame, validation_frame else: if test_frame: return training_frame, testing_frame else: return training_frame @staticmethod def pca(frame,columns=[],k=320,frame_type='spark'): """Computes the top `k` principal components, corresponding scores, and all eigenvalues. Note: All eigenvalues should be returned in sorted order (largest to smallest). `eigh` returns each eigenvectors as a column. This function should also return eigenvectors as columns. Args: df: A Spark dataframe with a 'features' column, which (column) consists of DenseVectors. k (int): The number of principal components to return. Returns: tuple of (np.ndarray, RDD of np.ndarray, np.ndarray): A tuple of (eigenvectors, `RDD` of scores, eigenvalues). Eigenvectors is a multi-dimensional array where the number of rows equals the length of the arrays in the input `RDD` and the number of columns equals `k`. The `RDD` of scores has the same number of rows as `data` and consists of arrays of length `k`. Eigenvalues is an array of length d (the number of features). """ if frame_type == 'spark': # https://stackoverflow.com/questions/33428589/pyspark-and-pca-how-can-i-extract-the-eigenvectors-of-this-pca-how-can-i-calcu/33481471 from numpy.linalg import eigh from pyspark.ml.linalg import Vectors from pyspark.ml.feature import VectorAssembler from pyspark.ml.feature import StandardScaler from pyspark.ml import Pipeline assembler = VectorAssembler( inputCols=columns, outputCol="features") scaler = StandardScaler(inputCol=assembler.getOutputCol(), outputCol="scaledFeatures", withStd=False, withMean=True) pipeline = Pipeline(stages=[assembler,scaler]) model = pipeline.fit(frame) df = model.transform(frame) def estimateCovariance(df): """Compute the covariance matrix for a given dataframe. Note: The multi-dimensional covariance array should be calculated using outer products. Don't forget to normalize the data by first subtracting the mean. Args: df: A Spark dataframe with a column named 'features', which (column) consists of DenseVectors. Returns: np.ndarray: A multi-dimensional array where the number of rows and columns both equal the length of the arrays in the input dataframe. """ import numpy as np m = df.select(df['scaledFeatures']).map(lambda x: x[0]).mean() dfZeroMean = df.select(df['scaledFeatures']).map(lambda x: x[0]).map(lambda x: x-m) # subtract the mean return dfZeroMean.map(lambda x: np.outer(x,x)).sum()/df.count() cov = estimateCovariance(df) col = cov.shape[1] eigVals, eigVecs = eigh(cov) inds = np.argsort(eigVals) eigVecs = eigVecs.T[inds[-1:-(col+1):-1]] components = eigVecs[0:k] eigVals = eigVals[inds[-1:-(col+1):-1]] # sort eigenvals score = df.select(df['scaledFeatures']).map(lambda x: x[0]).map(lambda x: np.dot(x, components.T) ) #Show the Variance explained print('Vairance Explained:', sum(eigVals[0:k])/sum(eigVals) ) # Return the `k` principal components, `k` scores, and all eigenvalues return components.T, score, eigVals elif frame_type in ['h2o','pandas']: raise Exception('Not Implemented yet.') ================================================ FILE: 02_analytical_data_prep/src/data_sets/kaggle_house/test.csv ================================================ version https://git-lfs.github.com/spec/v1 oid sha256:8fdd3d829d4d986b58f845c9553b225e67dd8383624d90fb6ca1d4bed5798c1e size 451405 ================================================ FILE: 02_analytical_data_prep/src/data_sets/kaggle_house/train.csv ================================================ version https://git-lfs.github.com/spec/v1 oid sha256:1e18addf81e5e4d347cc17ee6075bbe4a42b7fa26b9e5b063e8f692a5f929d41 size 460676 ================================================ FILE: 02_analytical_data_prep/src/housing.html ================================================ housing

Imports And Setup

You may see a lot of posts online telling you to set up an individual sparkcontext variable. Please note those are from versions ~1.6 and lower and are no longer relevent in 2.0. Now you should only make one SparkSession and access spark context from spark.sparkContext.

In [16]:
# imports
import pandas as pd
import numpy as np
import time
import os
from tabulate import tabulate

import sys
from operator import add
from pyspark import SparkContext
from pyspark.sql import SparkSession
from pyspark.sql import SQLContext
from pyspark.sql import functions as F #https://stackoverflow.com/questions/39504950/python-pyspark-get-sum-of-a-pyspark-dataframe-column-values
from pyspark.sql.functions import monotonically_increasing_id

from DataPreperation import DataPreperation


#.config('spark.executor.cores','6') \
spark = SparkSession.builder \
        .appName("App") \
        .getOrCreate()
        # .master("local[*]") \
        # .config('spark.cores.max','16')
        #.master("local") \
        # .config("spark.some.config.option", "some-value") \

spark.sparkContext.setLogLevel('WARN') #Get rid of all the junk in output

Y            = 'SalePrice'
ID_VAR       = 'Id'
DROPS        = [ID_VAR]

original_train = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('data_sets/kaggle_house/train.csv')
original_test = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('data_sets/kaggle_house/test.csv')


#add an id column for row reference
# original_train.withColumn("id", monotonically_increasing_id())
# original_test.withColumn("id", monotonically_increasing_id())


#this needs to be done for h2o glm.predict() bug (which needs same number of columns)
# test = test.withColumn(Y,test[ID_VAR])


# (train,valid) = original_train.randomSplit([0.7,0.3], seed=123)

# train.describe().show()

Data types

Lets see which variables are categorical and which are numeric. We will need to handle the numeric data later.

In [17]:
numerics, categoricals = DataPreperation.get_type_lists(frame=original_train,rejects=[ID_VAR,Y],frame_type='spark')
Numeric = ['MSSubClass', 'LotArea', 'OverallQual', 'OverallCond', 'YearBuilt', 'YearRemodAdd', 'BsmtFinSF1', 'BsmtFinSF2', 'BsmtUnfSF', 'TotalBsmtSF', '1stFlrSF', '2ndFlrSF', 'LowQualFinSF', 'GrLivArea', 'BsmtFullBath', 'BsmtHalfBath', 'FullBath', 'HalfBath', 'BedroomAbvGr', 'KitchenAbvGr', 'TotRmsAbvGrd', 'Fireplaces', 'GarageCars', 'GarageArea', 'WoodDeckSF', 'OpenPorchSF', 'EnclosedPorch', '3SsnPorch', 'ScreenPorch', 'PoolArea', 'MiscVal', 'MoSold', 'YrSold']

Categorical = ['MSZoning', 'LotFrontage', 'Street', 'Alley', 'LotShape', 'LandContour', 'Utilities', 'LotConfig', 'LandSlope', 'Neighborhood', 'Condition1', 'Condition2', 'BldgType', 'HouseStyle', 'RoofStyle', 'RoofMatl', 'Exterior1st', 'Exterior2nd', 'MasVnrType', 'MasVnrArea', 'ExterQual', 'ExterCond', 'Foundation', 'BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinType2', 'Heating', 'HeatingQC', 'CentralAir', 'Electrical', 'KitchenQual', 'Functional', 'FireplaceQu', 'GarageType', 'GarageYrBlt', 'GarageFinish', 'GarageQual', 'GarageCond', 'PavedDrive', 'PoolQC', 'Fence', 'MiscFeature', 'SaleType', 'SaleCondition']

Dealing with Outliers

Lets look a possible outlier. It may not be an outlier and it may be best to keep the column as is, but lets just pretend it is actually an outlier.

In [18]:
import plotly.graph_objs as go
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
init_notebook_mode(connected=True)

original_train.select('TotalBsmtSF',Y).toPandas().head()
trace = go.Scatter(
    x = original_train.select('TotalBsmtSF').rdd.flatMap(list).collect(),
    y = original_train.select(Y).rdd.flatMap(list).collect(),
    mode = 'markers'
)
data = [trace]

# Plot and embed in ipython notebook!
iplot(data)#, filename='basic-scatter')

Winsorize for Outliers

In [19]:
original_train = DataPreperation.winsorize_columns(original_train,['TotalBsmtSF'],\
                                                   winzerize_type='percentile',limits =0.1)
For TotalBsmtSF the lower limit is 0.0
For TotalBsmtSF the upper limit is 3206.0

New Chart

After winsorizing the new chart moved all the values > 3200 are now = 3200

In [20]:
import plotly.graph_objs as go
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
init_notebook_mode(connected=True)

original_train.select('TotalBsmtSF',Y).toPandas().head()
trace = go.Scatter(
    x = original_train.select('TotalBsmtSF').rdd.flatMap(list).collect(),
    y = original_train.select(Y).rdd.flatMap(list).collect(),
    mode = 'markers'
)
data = [trace]

# Plot and embed in ipython notebook!
iplot(data)#, filename='basic-scatter')

Label Encoding

When you have an algorithm like an SVM or decision tree that doesn't always numerical values as greater then one another. Or you have an ordinal variable label encoding is a good choice.

(example XGBoost requires you to do this)

convert not likely, likely, very likey into lets say 1,2,3

Note: this must be done before you split the data unlike other data prep techniques

In [21]:
print('Column before encoding...')
print(original_train.select('RoofStyle').rdd.flatMap(list).collect()[0:49])
print()
original_train = DataPreperation.label_encoder(original_train,['RoofStyle'])
print()
numerics, categoricals = DataPreperation.get_type_lists(frame=original_train,rejects=[ID_VAR,Y],frame_type='spark')
print()
print('Column after encoding...')
print(original_train.select('RoofStyle_encoded').rdd.flatMap(list).collect()[0:49])
Column before encoding...
['Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Hip', 'Hip', 'Hip', 'Gable', 'Hip', 'Gable', 'Gable', 'Gable', 'Gable', 'Hip', 'Gable', 'Gable', 'Hip', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gambrel', 'Gable', 'Gable', 'Hip', 'Hip', 'Gable', 'Gable', 'Hip', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Hip', 'Gable', 'Hip', 'Gable', 'Gable', 'Gable']


Numeric = ['MSSubClass', 'LotArea', 'OverallQual', 'OverallCond', 'YearBuilt', 'YearRemodAdd', 'BsmtFinSF1', 'BsmtFinSF2', 'BsmtUnfSF', 'TotalBsmtSF', '1stFlrSF', '2ndFlrSF', 'LowQualFinSF', 'GrLivArea', 'BsmtFullBath', 'BsmtHalfBath', 'FullBath', 'HalfBath', 'BedroomAbvGr', 'KitchenAbvGr', 'TotRmsAbvGrd', 'Fireplaces', 'GarageCars', 'GarageArea', 'WoodDeckSF', 'OpenPorchSF', 'EnclosedPorch', '3SsnPorch', 'ScreenPorch', 'PoolArea', 'MiscVal', 'MoSold', 'YrSold', 'RoofStyle_encoded']

Categorical = ['MSZoning', 'LotFrontage', 'Street', 'Alley', 'LotShape', 'LandContour', 'Utilities', 'LotConfig', 'LandSlope', 'Neighborhood', 'Condition1', 'Condition2', 'BldgType', 'HouseStyle', 'RoofStyle', 'RoofMatl', 'Exterior1st', 'Exterior2nd', 'MasVnrType', 'MasVnrArea', 'ExterQual', 'ExterCond', 'Foundation', 'BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinType2', 'Heating', 'HeatingQC', 'CentralAir', 'Electrical', 'KitchenQual', 'Functional', 'FireplaceQu', 'GarageType', 'GarageYrBlt', 'GarageFinish', 'GarageQual', 'GarageCond', 'PavedDrive', 'PoolQC', 'Fence', 'MiscFeature', 'SaleType', 'SaleCondition']

Column after encoding...
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0]

Feature interaction

Feature interaction is multiplying two variables together (example columns $x$ and $y$ -> $xy$)

In [22]:
#Here is how to do polynomical expansion
train_corr = DataPreperation.get_top_correlations(original_train,numerics)
In [23]:
# https://plot.ly/python/figure-factory/table/
import plotly.figure_factory as ff

corr_df = pd.DataFrame(columns=['columns', 'correlation', 'correlation_abs'])
for idx, d in enumerate(train_corr):
    corr_df.loc[idx] = [d['columns'],d['correlation'],d['correlation_abs']]
    
table = ff.create_table(corr_df)
iplot(table, filename='pandas_table')
In [24]:
for idx, row in corr_df.iterrows():
    if(corr_df.loc[idx]['correlation_abs'] >0.5 and corr_df.loc[idx]['correlation_abs'] != 1): #Set a cutoff only combine values greater then .7
        original_train = DataPreperation.feature_combiner(original_train,columns=corr_df.loc[idx]['columns'])
        original_test = DataPreperation.feature_combiner(original_test,columns=corr_df.loc[idx]['columns'])
#show the results 
table = ff.create_table(original_train.select('GarageArea','GarageCars','GarageArea|GarageCars').toPandas().sample(10))
table.layout.width=1000
iplot(table, filename='pandas_table')
Combining: GarageArea & GarageCars (1/1)...
DONE combining features.
Combining: GarageArea & GarageCars (1/1)...
DONE combining features.
Combining: 1stFlrSF & TotalBsmtSF (1/1)...
DONE combining features.
Combining: 1stFlrSF & TotalBsmtSF (1/1)...
DONE combining features.
Combining: YearRemodAdd & YearBuilt (1/1)...
DONE combining features.
Combining: YearRemodAdd & YearBuilt (1/1)...
DONE combining features.

Polynomial Expansion

Polynomial expansion is taking a variable and adding polynomial terms such as $x^2$$ $$x ^3$ etc. This can be very helpful especially in regression based models.

In [25]:
original_train = DataPreperation.polynomial_expansion(original_train,['1stFlrSF'],degree=3)
original_test = DataPreperation.polynomial_expansion(original_test,['1stFlrSF'],degree=3)

#show the results 
print(original_train.select(ID_VAR,'1stFlrSF','1stFlrSF_^2','1stFlrSF_^3').toPandas().sample(2))
table = ff.create_table(original_train.select(ID_VAR,'1stFlrSF','1stFlrSF_^2','1stFlrSF_^3').toPandas().sample(10))
table.layout.width=1000
iplot(table, filename='pandas_table')
      Id  1stFlrSF  1stFlrSF_^2   1stFlrSF_^3
924  925      1686    2842596.0  4.792617e+09
649  650       630     396900.0  2.500470e+08

Perturbed Rate-by-Level with Shrunken Averages

This algorithm is good for hanlding any kind of categorical column when the algoithm needs a continuous column. For this slgorithm you MUST split the data BEFORE putting it in other wise you will have feature leakage and will overfit very very very very badly. You also want to perturb the data in insert random noise to further prevent overfitting.

Formula: $$(1 − λ) * levelmean + λ * overallmean*purtubedamount$$

In [26]:
(train,valid) = original_train.randomSplit([0.7,0.3], seed=123)

print("Encoding numberic variables...")
for i, var in enumerate(['MSZoning']):
    total = len(categoricals)

    print('Encoding: ' + var + ' (' + str(i+1) + '/' + str(total) + ') ...')
    train,valid, original_test = DataPreperation.shrunken_averages_encoder(train, valid_frame = valid,test_frame=original_test,\
                                                     x=var, y=Y, lambda_=0.15, perturb_range=0.05,threshold=150,\
                                                     test=False, frame_type='spark',test_does_have_y=False,id_col=ID_VAR)        
table = ff.create_table(train.select('MSZoning','MSZoning_Tencode').toPandas().sample(15))
iplot(table, filename='pandas_table')
Encoding numberic variables...
Encoding: MSZoning (1/46) ...

Dimensionality Reduction PCA

This is a way to make your feature set less wide and make a smaller number of features out of a hopefully large number of features. The most common and historic algorithm to do this is Principal Component Analysis (PCA).

Note n_comp will set the number of eigen vectors to return. If its 1 it'll pick the top 1 of all the eigen vectors. Below we can use an n_comp value of 1 or 2 b/c we have two features that we're feeding in.

In [27]:
# original_train = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('data_sets/kaggle_house/train.csv')
# original_test = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('data_sets/kaggle_house/test.csv')
# (train,valid) = original_train.randomSplit([0.7,0.3], seed=123)

#PCA does not handle null values and there was some in test
# train.na.drop()
# valid.na.drop()
# original_test.na.drop()
# original_test.GarageArea.cast('float')
# original_test.GarageCars.cast('float')

for idx, row in corr_df.iterrows():
    if(corr_df.loc[idx]['correlation_abs'] >.7 and corr_df.loc[idx]['correlation_abs'] != 1): #Set a cutoff only combine values greater then .7
        print('Doing PCA for', corr_df.loc[idx]['columns'])
        #The test data was messy so i couldnt include test it has 'NA' which made for errors
        train,valid = DataPreperation.dimensionality_reduction(train, valid_frame = valid,test_frame=None,\
                                                                     columns=corr_df.loc[idx]['columns'],n_comp=2,\
                                                                    random_seed=420,decompositions_to_run=['PCA'],\
                                                                      frame_type='spark',test_does_have_y=False,\
                                                                      only_return_decompositions=False,id_col=ID_VAR,\
                                                                      column_name=corr_df.loc[idx]['columns'][0]+'&'+corr_df.loc[idx]['columns'][1])#show the results 

        
        
table = ff.create_table(train.select('GarageArea','GarageCars','GarageArea&GarageCars_pca_1','1stFlrSF&TotalBsmtSF_pca_2').toPandas()[0:10])
# table = ff.create_table(train.select('1stFlrSF','TotalBsmtSF','1stFlrSF&TotalBsmtSF_pca_1','1stFlrSF&TotalBsmtSF_pca_2').toPandas()[0:10])
table.layout.width=1000
iplot(table, filename='pandas_table')
Doing PCA for ['GarageArea', 'GarageCars']
Doing PCA for ['1stFlrSF', 'TotalBsmtSF']

Dimensionality Reduction SVD (cont.)

SVD's are a nother type of decomposition. Many people claim they work better on large datasets compared to PCA.

"Singular value decomposition is often preferred over eigendecomposition of the covariance matrix because the calculation of the covariance matrix is a source of error. In singular value decomposition, with such a large dataset, we are much more robust to errors due to dynamic range of numbers or computational error."

In [28]:
# original_train = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('data_sets/kaggle_house/train.csv')
# original_test = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('data_sets/kaggle_house/test.csv')
# (train,valid) = original_train.randomSplit([0.7,0.3], seed=123)

#PCA does not handle null values and there was some in test
# train.na.drop()
# valid.na.drop()
# original_test.na.drop()
# original_test.GarageArea.cast('float')
# original_test.GarageCars.cast('float')

for idx, row in corr_df.iterrows():
    if(corr_df.loc[idx]['correlation_abs'] >.7 and corr_df.loc[idx]['correlation_abs'] != 1): #Set a cutoff only combine values greater then .7
        print('Doing SVD for', corr_df.loc[idx]['columns'])
        #The test data was messy so i couldnt include test it has 'NA' which made for errors
        train,valid = DataPreperation.dimensionality_reduction(train, valid_frame = valid,test_frame=None,\
                                                                     columns=corr_df.loc[idx]['columns'],n_comp=2,\
                                                                    random_seed=420,decompositions_to_run=['SVD'],\
                                                                      frame_type='spark',test_does_have_y=False,\
                                                                      only_return_decompositions=False,id_col=ID_VAR,\
                                                                      column_name=corr_df.loc[idx]['columns'][0]+'&'+corr_df.loc[idx]['columns'][1])#show the results 

        
table = ff.create_table(train.select('GarageArea','GarageCars','GarageArea&GarageCars_svd_1','1stFlrSF&TotalBsmtSF_svd_2').toPandas()[0:10])
# table = ff.create_table(train.select('1stFlrSF','TotalBsmtSF','1stFlrSF&TotalBsmtSF_pca_1','1stFlrSF&TotalBsmtSF_pca_2').toPandas()[0:10])
table.layout.width=1000
iplot(table, filename='pandas_table') 
Doing SVD for ['GarageArea', 'GarageCars']
Doing SVD for ['1stFlrSF', 'TotalBsmtSF']
================================================ FILE: 02_analytical_data_prep/src/housing.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Imports And Setup\n", "\n", "You may see a lot of posts online telling you to set up an individual sparkcontext variable. Please note those are from versions ~1.6 and lower and are no longer relevent in 2.0. Now you should only make one `SparkSession` and access spark context from `spark.sparkContext`." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# imports\n", "import pandas as pd\n", "import numpy as np\n", "import time\n", "import os\n", "from tabulate import tabulate\n", "\n", "import sys\n", "from operator import add\n", "from pyspark import SparkContext\n", "from pyspark.sql import SparkSession\n", "from pyspark.sql import SQLContext\n", "from pyspark.sql import functions as F #https://stackoverflow.com/questions/39504950/python-pyspark-get-sum-of-a-pyspark-dataframe-column-values\n", "from pyspark.sql.functions import monotonically_increasing_id\n", "\n", "from DataPreperation import DataPreperation\n", "\n", "\n", "#.config('spark.executor.cores','6') \\\n", "spark = SparkSession.builder \\\n", " .appName(\"App\") \\\n", " .getOrCreate()\n", " # .master(\"local[*]\") \\\n", " # .config('spark.cores.max','16')\n", " #.master(\"local\") \\\n", " # .config(\"spark.some.config.option\", \"some-value\") \\\n", "\n", "spark.sparkContext.setLogLevel('WARN') #Get rid of all the junk in output\n", "\n", "Y = 'SalePrice'\n", "ID_VAR = 'Id'\n", "DROPS = [ID_VAR]\n", "\n", "original_train = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('data_sets/kaggle_house/train.csv')\n", "original_test = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('data_sets/kaggle_house/test.csv')\n", "\n", "\n", "#add an id column for row reference\n", "# original_train.withColumn(\"id\", monotonically_increasing_id())\n", "# original_test.withColumn(\"id\", monotonically_increasing_id())\n", "\n", "\n", "#this needs to be done for h2o glm.predict() bug (which needs same number of columns)\n", "# test = test.withColumn(Y,test[ID_VAR])\n", "\n", "\n", "# (train,valid) = original_train.randomSplit([0.7,0.3], seed=123)\n", "\n", "# train.describe().show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data types\n", "Lets see which variables are categorical and which are numeric. We will need to handle the numeric data later." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Numeric = ['MSSubClass', 'LotArea', 'OverallQual', 'OverallCond', 'YearBuilt', 'YearRemodAdd', 'BsmtFinSF1', 'BsmtFinSF2', 'BsmtUnfSF', 'TotalBsmtSF', '1stFlrSF', '2ndFlrSF', 'LowQualFinSF', 'GrLivArea', 'BsmtFullBath', 'BsmtHalfBath', 'FullBath', 'HalfBath', 'BedroomAbvGr', 'KitchenAbvGr', 'TotRmsAbvGrd', 'Fireplaces', 'GarageCars', 'GarageArea', 'WoodDeckSF', 'OpenPorchSF', 'EnclosedPorch', '3SsnPorch', 'ScreenPorch', 'PoolArea', 'MiscVal', 'MoSold', 'YrSold']\n", "\n", "Categorical = ['MSZoning', 'LotFrontage', 'Street', 'Alley', 'LotShape', 'LandContour', 'Utilities', 'LotConfig', 'LandSlope', 'Neighborhood', 'Condition1', 'Condition2', 'BldgType', 'HouseStyle', 'RoofStyle', 'RoofMatl', 'Exterior1st', 'Exterior2nd', 'MasVnrType', 'MasVnrArea', 'ExterQual', 'ExterCond', 'Foundation', 'BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinType2', 'Heating', 'HeatingQC', 'CentralAir', 'Electrical', 'KitchenQual', 'Functional', 'FireplaceQu', 'GarageType', 'GarageYrBlt', 'GarageFinish', 'GarageQual', 'GarageCond', 'PavedDrive', 'PoolQC', 'Fence', 'MiscFeature', 'SaleType', 'SaleCondition']\n" ] } ], "source": [ "numerics, categoricals = DataPreperation.get_type_lists(frame=original_train,rejects=[ID_VAR,Y],frame_type='spark')" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Dealing with Outliers\n", "Lets look a possible outlier. It may not be an outlier and it may be best to keep the column as is, but lets just pretend it is actually an outlier." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/vnd.plotly.v1+html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "mode": "markers", "type": "scatter", "x": [ 856, 1262, 920, 756, 1145, 796, 1686, 1107, 952, 991, 1040, 1175, 912, 1494, 1253, 832, 1004, 0, 1114, 1029, 1158, 637, 1777, 1040, 1060, 1566, 900, 1704, 1484, 520, 649, 1228, 1234, 1398, 1561, 1117, 1097, 1297, 1057, 0, 1088, 1350, 840, 938, 1150, 1752, 1434, 1656, 736, 955, 794, 816, 816, 1842, 384, 1425, 970, 860, 1410, 780, 1158, 530, 1370, 576, 1057, 1143, 1947, 1453, 747, 1304, 2223, 845, 832, 1086, 840, 462, 952, 672, 1768, 440, 896, 1237, 1563, 1065, 384, 1288, 684, 612, 1013, 990, 0, 1235, 876, 1214, 824, 680, 1588, 960, 458, 950, 1610, 741, 0, 1226, 1040, 1053, 641, 789, 793, 1844, 994, 384, 1264, 1809, 1028, 729, 1092, 1125, 1673, 728, 938, 732, 1080, 1199, 1362, 520, 1078, 672, 660, 1008, 924, 992, 1063, 1267, 1461, 1304, 1214, 1907, 1004, 928, 864, 1734, 910, 1490, 1728, 970, 715, 884, 1080, 896, 969, 1710, 825, 1602, 1200, 572, 0, 774, 991, 1392, 1232, 1572, 1541, 882, 1149, 644, 1617, 1582, 840, 1686, 720, 1080, 1064, 1362, 1606, 1202, 1151, 1052, 2216, 968, 756, 793, 0, 1362, 504, 1107, 1188, 660, 1086, 1593, 853, 725, 1431, 970, 864, 855, 1726, 1360, 755, 1713, 1121, 1196, 617, 848, 720, 1424, 1140, 1100, 1157, 1092, 864, 1212, 900, 990, 689, 1070, 1436, 686, 798, 1248, 1498, 1010, 713, 864, 2392, 630, 1203, 483, 912, 1373, 1194, 1462, 483, 894, 860, 483, 1414, 996, 1694, 735, 1566, 686, 540, 626, 948, 1845, 1020, 1367, 840, 1444, 728, 1573, 798, 1302, 1314, 975, 864, 1604, 963, 0, 1362, 1482, 506, 926, 680, 1422, 802, 720, 740, 1143, 1095, 1385, 1152, 1240, 816, 952, 1560, 864, 2121, 1160, 807, 1262, 1314, 1468, 1575, 625, 912, 858, 882, 698, 1079, 780, 768, 795, 1416, 1003, 910, 975, 702, 1092, 1165, 1028, 1541, 894, 1470, 2000, 700, 319, 861, 1896, 697, 972, 793, 2136, 728, 716, 845, 1088, 1347, 1372, 1249, 1136, 1502, 1162, 710, 720, 1719, 1383, 844, 596, 1728, 1056, 3206, 1358, 943, 1499, 1922, 1536, 1208, 1215, 967, 721, 0, 1684, 536, 972, 958, 1478, 764, 1848, 1869, 1453, 616, 624, 940, 1200, 1158, 1142, 1062, 1086, 888, 883, 0, 483, 796, 672, 1394, 1099, 1268, 1063, 953, 0, 744, 608, 847, 683, 870, 1580, 1856, 982, 1026, 1293, 939, 784, 1580, 1256, 658, 1041, 1468, 1682, 861, 804, 0, 788, 735, 1144, 894, 864, 961, 1092, 1260, 1310, 672, 1141, 806, 1281, 1064, 840, 1063, 1034, 1276, 1056, 1470, 1008, 1080, 1340, 672, 1370, 756, 1056, 1344, 1602, 988, 1470, 1196, 651, 1518, 907, 1208, 1392, 483, 901, 765, 926, 630, 799, 648, 884, 440, 684, 3094, 1440, 1078, 1258, 915, 1436, 1517, 930, 780, 649, 813, 1533, 872, 768, 1728, 1242, 624, 1364, 588, 709, 832, 560, 864, 715, 1040, 1375, 1277, 728, 1626, 832, 1488, 808, 547, 1976, 1494, 970, 1478, 2153, 1705, 907, 1833, 1792, 910, 1216, 999, 1113, 1073, 1484, 954, 630, 264, 806, 728, 1269, 190, 720, 3200, 1026, 864, 912, 672, 866, 1214, 1501, 855, 960, 777, 1218, 689, 1041, 1008, 1368, 864, 1084, 768, 2006, 689, 1264, 794, 1276, 0, 1244, 1004, 3138, 1379, 1257, 928, 1452, 528, 2035, 1461, 611, 0, 0, 707, 1117, 880, 864, 1051, 1581, 1838, 969, 1650, 723, 654, 1204, 1065, 768, 825, 912, 1069, 928, 1709, 0, 998, 993, 1092, 637, 729, 1374, 1392, 1389, 996, 1163, 1095, 806, 1122, 1517, 1496, 943, 1728, 864, 846, 384, 372, 832, 861, 1164, 689, 1050, 1144, 2042, 816, 1237, 884, 1868, 816, 840, 1437, 742, 770, 1722, 816, 848, 924, 1814, 684, 1258, 1430, 716, 1058, 780, 908, 600, 1494, 768, 1040, 896, 965, 1029, 1440, 1032, 1299, 1120, 630, 936, 783, 832, 1822, 1482, 864, 1522, 980, 756, 732, 1116, 978, 1156, 1040, 1248, 636, 1554, 1386, 1056, 1056, 1440, 264, 811, 796, 1520, 1518, 1057, 1952, 780, 1766, 981, 0, 1094, 756, 630, 813, 755, 880, 756, 2109, 525, 1053, 776, 912, 1486, 793, 1629, 1392, 1138, 2077, 1406, 1021, 1408, 1188, 700, 738, 672, 1208, 1477, 1136, 855, 1095, 768, 2046, 988, 923, 793, 1291, 1626, 1195, 1190, 874, 551, 1419, 1362, 848, 2444, 1210, 1073, 927, 1112, 616, 980, 894, 1391, 1800, 1164, 1234, 360, 1473, 0, 1643, 1324, 728, 876, 270, 859, 1228, 960, 725, 1064, 718, 1176, 1311, 971, 1742, 848, 864, 941, 1698, 864, 880, 1232, 1584, 780, 1595, 868, 1153, 864, 948, 880, 0, 893, 1200, 864, 264, 912, 1349, 520, 1337, 1142, 952, 1240, 1720, 0, 576, 660, 1479, 1030, 1026, 729, 866, 672, 744, 1318, 864, 1145, 756, 1252, 1494, 1498, 980, 983, 1860, 1650, 858, 836, 1029, 912, 1935, 1204, 1614, 864, 0, 975, 1237, 761, 1413, 1097, 742, 1372, 686, 956, 901, 832, 1145, 1029, 1117, 1496, 712, 650, 660, 773, 1926, 731, 616, 1196, 728, 1734, 936, 1417, 980, 1324, 1024, 849, 1040, 848, 540, 1442, 686, 1649, 1008, 1568, 1010, 1358, 798, 936, 847, 778, 1489, 2078, 784, 1454, 1013, 600, 1392, 600, 941, 1516, 1144, 1067, 1559, 483, 1099, 768, 672, 650, 1127, 1800, 876, 1390, 740, 864, 907, 528, 848, 1273, 918, 1127, 1763, 1040, 940, 702, 1090, 1054, 912, 1039, 1040, 1148, 1372, 1002, 1638, 1040, 0, 1050, 894, 804, 105, 832, 676, 1184, 1064, 1462, 1109, 864, 1090, 1156, 808, 795, 892, 1698, 1626, 816, 2217, 1505, 672, 918, 1059, 1383, 0, 780, 951, 0, 2330, 912, 858, 992, 783, 1670, 876, 1056, 1623, 1017, 864, 742, 1105, 1268, 768, 1001, 612, 546, 480, 1134, 1104, 1184, 928, 1272, 1316, 1604, 1686, 1126, 1181, 832, 1753, 964, 1466, 925, 1905, 1500, 585, 600, 1176, 1113, 1391, 1032, 1728, 992, 1440, 1632, 819, 1088, 1144, 1616, 936, 1161, 864, 828, 768, 784, 945, 979, 561, 1057, 1337, 696, 858, 1330, 804, 1800, 817, 783, 728, 1098, 600, 588, 720, 764, 918, 1428, 728, 673, 440, 1241, 894, 1121, 944, 1225, 1266, 1128, 0, 1164, 485, 1930, 848, 770, 1396, 916, 822, 750, 1700, 747, 1050, 1442, 1007, 1187, 0, 691, 1574, 1680, 1346, 985, 1657, 546, 1710, 1008, 720, 0, 602, 1022, 1082, 810, 1504, 1220, 384, 1362, 1132, 1199, 912, 1346, 1565, 882, 1268, 1638, 768, 672, 686, 824, 1338, 1654, 920, 0, 1620, 1055, 546, 630, 1134, 800, 1306, 1475, 2524, 0, 1992, 990, 0, 0, 1302, 1316, 816, 1216, 1065, 1193, 1364, 973, 1104, 854, 1338, 894, 662, 1103, 1154, 1306, 799, 780, 942, 845, 1048, 727, 810, 690, 1240, 800, 796, 1096, 848, 990, 1258, 1040, 1459, 1251, 691, 936, 546, 1082, 970, 1247, 0, 600, 1181, 864, 936, 1314, 684, 1074, 672, 1271, 290, 950, 1010, 655, 630, 1463, 910, 868, 924, 1836, 773, 803, 816, 1008, 833, 1734, 408, 894, 533, 1040, 1012, 1552, 672, 698, 384, 1005, 1373, 1530, 847, 936, 1122, 974, 1008, 1128, 916, 960, 1032, 780, 1567, 915, 952, 780, 1466, 1006, 672, 1042, 1298, 704, 572, 650, 932, 1466, 1073, 816, 864, 1437, 1219, 1314, 1580, 901, 855, 1296, 894, 1198, 1360, 1502, 1694, 959, 1127, 1930, 1096, 1261, 625, 1598, 952, 1683, 876, 818, 731, 0, 1216, 1600, 2396, 1120, 1572, 784, 978, 1624, 831, 994, 1249, 776, 702, 1224, 663, 728, 879, 815, 1212, 1051, 864, 866, 884, 1630, 1056, 2158, 1056, 1682, 931, 1660, 1055, 559, 672, 648, 925, 894, 0, 1300, 0, 672, 912, 952, 1040, 2136, 788, 588, 894, 912, 1702, 1075, 1361, 1106, 0, 1188, 940, 747, 764, 847, 1141, 1476, 884, 1689, 1053, 2076, 792, 585, 756, 1012, 735, 876, 2110, 1405, 864, 1192, 746, 884, 1986, 864, 856, 1054, 841, 1050, 1104, 764, 1405, 691, 925, 2002, 728, 874, 1332, 1489, 935, 1019, 661, 928, 723, 1680, 1128, 698, 1573, 1309, 1040, 912, 804, 780, 1328, 1624, 1501, 1085, 1152, 630, 994, 832, 864, 1052, 1120, 547, 6110, 1246, 978, 771, 1165, 1616, 976, 1652, 1368, 990, 924, 1278, 1902, 1274, 1453, 1393, 948, 952, 1622, 1352, 1753, 864, 1478, 0, 750, 420, 1795, 796, 544, 816, 1510, 935, 1588, 911, 816, 803, 765, 1350, 1656, 693, 916, 864, 858, 1114, 1284, 896, 728, 960, 1568, 1732, 1482, 684, 1248, 858, 698, 2033, 992, 570, 864, 1078, 756, 1980, 612, 1530, 715, 616, 600, 814, 873, 757, 848, 1657, 840, 992, 1108, 2633, 1026, 1571, 768, 984, 483, 384, 864, 1205, 596, 816, 560, 796, 1392, 714, 1746, 735, 1525, 1584, 864, 482, 1356, 1094, 747, 939, 1208, 976, 862, 839, 1286, 1485, 672, 1594, 768, 833, 622, 791, 944, 856, 0, 1844, 833, 1386, 777, 1284, 1144, 1844, 708, 1069, 848, 697, 1024, 1252, 1223, 913, 788, 1440, 732, 958, 656, 936, 1126, 1319, 864, 1932, 912, 539, 588, 848, 1017, 952, 1422, 814, 1188, 1220, 560, 630, 896, 1573, 547, 1140, 1221, 953, 1542, 1152, 1078, 1256 ], "y": [ 208500, 181500, 223500, 140000, 250000, 143000, 307000, 200000, 129900, 118000, 129500, 345000, 144000, 279500, 157000, 132000, 149000, 90000, 159000, 139000, 325300, 139400, 230000, 129900, 154000, 256300, 134800, 306000, 207500, 68500, 40000, 149350, 179900, 165500, 277500, 309000, 145000, 153000, 109000, 82000, 160000, 170000, 144000, 130250, 141000, 319900, 239686, 249700, 113000, 127000, 177000, 114500, 110000, 385000, 130000, 180500, 172500, 196500, 438780, 124900, 158000, 101000, 202500, 140000, 219500, 317000, 180000, 226000, 80000, 225000, 244000, 129500, 185000, 144900, 107400, 91000, 135750, 127000, 136500, 110000, 193500, 153500, 245000, 126500, 168500, 260000, 174000, 164500, 85000, 123600, 109900, 98600, 163500, 133900, 204750, 185000, 214000, 94750, 83000, 128950, 205000, 178000, 118964, 198900, 169500, 250000, 100000, 115000, 115000, 190000, 136900, 180000, 383970, 217000, 259500, 176000, 139000, 155000, 320000, 163990, 180000, 100000, 136000, 153900, 181000, 84500, 128000, 87000, 155000, 150000, 226000, 244000, 150750, 220000, 180000, 174000, 143000, 171000, 230000, 231500, 115000, 260000, 166000, 204000, 125000, 130000, 105000, 222500, 141000, 115000, 122000, 372402, 190000, 235000, 125000, 79000, 109500, 269500, 254900, 320000, 162500, 412500, 220000, 103200, 152000, 127500, 190000, 325624, 183500, 228000, 128500, 215000, 239000, 163000, 184000, 243000, 211000, 172500, 501837, 100000, 177000, 200100, 120000, 200000, 127000, 475000, 173000, 135000, 153337, 286000, 315000, 184000, 192000, 130000, 127000, 148500, 311872, 235000, 104000, 274900, 140000, 171500, 112000, 149000, 110000, 180500, 143900, 141000, 277000, 145000, 98000, 186000, 252678, 156000, 161750, 134450, 210000, 107000, 311500, 167240, 204900, 200000, 179900, 97000, 386250, 112000, 290000, 106000, 125000, 192500, 148000, 403000, 94500, 128200, 216500, 89500, 185500, 194500, 318000, 113000, 262500, 110500, 79000, 120000, 205000, 241500, 137000, 140000, 180000, 277000, 76500, 235000, 173000, 158000, 145000, 230000, 207500, 220000, 231500, 97000, 176000, 276000, 151000, 130000, 73000, 175500, 185000, 179500, 120500, 148000, 266000, 241500, 290000, 139000, 124500, 205000, 201000, 141000, 415298, 192000, 228500, 185000, 207500, 244600, 179200, 164700, 159000, 88000, 122000, 153575, 233230, 135900, 131000, 235000, 167000, 142500, 152000, 239000, 175000, 158500, 157000, 267000, 205000, 149900, 295000, 305900, 225000, 89500, 82500, 360000, 165600, 132000, 119900, 375000, 178000, 188500, 260000, 270000, 260000, 187500, 342643, 354000, 301000, 126175, 242000, 87000, 324000, 145250, 214500, 78000, 119000, 139000, 284000, 207000, 192000, 228950, 377426, 214000, 202500, 155000, 202900, 82000, 87500, 266000, 85000, 140200, 151500, 157500, 154000, 437154, 318061, 190000, 95000, 105900, 140000, 177500, 173000, 134000, 130000, 280000, 156000, 145000, 198500, 118000, 190000, 147000, 159000, 165000, 132000, 162000, 172400, 134432, 125000, 123000, 219500, 61000, 148000, 340000, 394432, 179000, 127000, 187750, 213500, 76000, 240000, 192000, 81000, 125000, 191000, 426000, 119000, 215000, 106500, 100000, 109000, 129000, 123000, 169500, 67000, 241000, 245500, 164990, 108000, 258000, 168000, 150000, 115000, 177000, 280000, 339750, 60000, 145000, 222000, 115000, 228000, 181134, 149500, 239000, 126000, 142000, 206300, 215000, 113000, 315000, 139000, 135000, 275000, 109008, 195400, 175000, 85400, 79900, 122500, 181000, 81000, 212000, 116000, 119000, 90350, 110000, 555000, 118000, 162900, 172500, 210000, 127500, 190000, 199900, 119500, 120000, 110000, 280000, 204000, 210000, 188000, 175500, 98000, 256000, 161000, 110000, 263435, 155000, 62383, 188700, 124000, 178740, 167000, 146500, 250000, 187000, 212000, 190000, 148000, 440000, 251000, 132500, 208900, 380000, 297000, 89471, 326000, 374000, 155000, 164000, 132500, 147000, 156000, 175000, 160000, 86000, 115000, 133000, 172785, 155000, 91300, 34900, 430000, 184000, 130000, 120000, 113000, 226700, 140000, 289000, 147000, 124500, 215000, 208300, 161000, 124500, 164900, 202665, 129900, 134000, 96500, 402861, 158000, 265000, 211000, 234000, 106250, 150000, 159000, 184750, 315750, 176000, 132000, 446261, 86000, 200624, 175000, 128000, 107500, 39300, 178000, 107500, 188000, 111250, 158000, 272000, 315000, 248000, 213250, 133000, 179665, 229000, 210000, 129500, 125000, 263000, 140000, 112500, 255500, 108000, 284000, 113000, 141000, 108000, 175000, 234000, 121500, 170000, 108000, 185000, 268000, 128000, 325000, 214000, 316600, 135960, 142600, 120000, 224500, 170000, 139000, 118500, 145000, 164500, 146000, 131500, 181900, 253293, 118500, 325000, 133000, 369900, 130000, 137000, 143000, 79500, 185900, 451950, 138000, 140000, 110000, 319000, 114504, 194201, 217500, 151000, 275000, 141000, 220000, 151000, 221000, 205000, 152000, 225000, 359100, 118500, 313000, 148000, 261500, 147000, 75500, 137500, 183200, 105500, 314813, 305000, 67000, 240000, 135000, 168500, 165150, 160000, 139900, 153000, 135000, 168500, 124000, 209500, 82500, 139400, 144000, 200000, 60000, 93000, 85000, 264561, 274000, 226000, 345000, 152000, 370878, 143250, 98300, 155000, 155000, 84500, 205950, 108000, 191000, 135000, 350000, 88000, 145500, 149000, 97500, 167000, 197900, 402000, 110000, 137500, 423000, 230500, 129000, 193500, 168000, 137500, 173500, 103600, 165000, 257500, 140000, 148500, 87000, 109500, 372500, 128500, 143000, 159434, 173000, 285000, 221000, 207500, 227875, 148800, 392000, 194700, 141000, 755000, 335000, 108480, 141500, 176000, 89000, 123500, 138500, 196000, 312500, 140000, 361919, 140000, 213000, 55000, 302000, 254000, 179540, 109900, 52000, 102776, 189000, 129000, 130500, 165000, 159500, 157000, 341000, 128500, 275000, 143000, 124500, 135000, 320000, 120500, 222000, 194500, 110000, 103000, 236500, 187500, 222500, 131400, 108000, 163000, 93500, 239900, 179000, 190000, 132000, 142000, 179000, 175000, 180000, 299800, 236000, 265979, 260400, 98000, 96500, 162000, 217000, 275500, 156000, 172500, 212000, 158900, 179400, 290000, 127500, 100000, 215200, 337000, 270000, 264132, 196500, 160000, 216837, 538000, 134900, 102000, 107000, 114500, 395000, 162000, 221500, 142500, 144000, 135000, 176000, 175900, 187100, 165500, 128000, 161500, 139000, 233000, 107900, 187500, 160200, 146800, 269790, 225000, 194500, 171000, 143500, 110000, 485000, 175000, 200000, 109900, 189000, 582933, 118000, 227680, 135500, 223500, 159950, 106000, 181000, 144500, 55993, 157900, 116000, 224900, 137000, 271000, 155000, 224000, 183000, 93000, 225000, 139500, 232600, 385000, 109500, 189000, 185000, 147400, 166000, 151000, 237000, 167000, 139950, 128000, 153500, 100000, 144000, 130500, 140000, 157500, 174900, 141000, 153900, 171000, 213000, 133500, 240000, 187000, 131500, 215000, 164000, 158000, 170000, 127000, 147000, 174000, 152000, 250000, 189950, 131500, 152000, 132500, 250580, 148500, 248900, 129000, 169000, 236000, 109500, 200500, 116000, 133000, 66500, 303477, 132250, 350000, 148000, 136500, 157000, 187500, 178000, 118500, 100000, 328900, 145000, 135500, 268000, 149500, 122900, 172500, 154500, 165000, 118858, 140000, 106500, 142953, 611657, 135000, 110000, 153000, 180000, 240000, 125500, 128000, 255000, 250000, 131000, 174000, 154300, 143500, 88000, 145000, 173733, 75000, 35311, 135000, 238000, 176500, 201000, 145900, 169990, 193000, 207500, 175000, 285000, 176000, 236500, 222000, 201000, 117500, 320000, 190000, 242000, 79900, 184900, 253000, 239799, 244400, 150900, 214000, 150000, 143000, 137500, 124900, 143000, 270000, 192500, 197500, 129000, 119900, 133900, 172000, 127500, 145000, 124000, 132000, 185000, 155000, 116500, 272000, 155000, 239000, 214900, 178900, 160000, 135000, 37900, 140000, 135000, 173000, 99500, 182000, 167500, 165000, 85500, 199900, 110000, 139000, 178400, 336000, 159895, 255900, 126000, 125000, 117000, 395192, 195000, 197000, 348000, 168000, 187000, 173900, 337500, 121600, 136500, 185000, 91000, 206000, 82000, 86000, 232000, 136905, 181000, 149900, 163500, 88000, 240000, 102000, 135000, 100000, 165000, 85000, 119200, 227000, 203000, 187500, 160000, 213490, 176000, 194000, 87000, 191000, 287000, 112500, 167500, 293077, 105000, 118000, 160000, 197000, 310000, 230000, 119750, 84000, 315500, 287000, 97000, 80000, 155000, 173000, 196000, 262280, 278000, 139600, 556581, 145000, 115000, 84900, 176485, 200141, 165000, 144500, 255000, 180000, 185850, 248000, 335000, 220000, 213500, 81000, 90000, 110500, 154000, 328000, 178000, 167900, 151400, 135000, 135000, 154000, 91500, 159500, 194000, 219500, 170000, 138800, 155900, 126000, 145000, 133000, 192000, 160000, 187500, 147000, 83500, 252000, 137500, 197000, 92900, 160000, 136500, 146000, 129000, 176432, 127000, 170000, 128000, 157000, 60000, 119500, 135000, 159500, 106000, 325000, 179900, 274725, 181000, 280000, 188000, 205000, 129900, 134500, 117000, 318000, 184100, 130000, 140000, 133700, 118400, 212900, 112000, 118000, 163900, 115000, 174000, 259000, 215000, 140000, 135000, 93500, 117500, 239500, 169000, 102000, 119000, 94000, 196000, 144000, 139000, 197500, 424870, 80000, 80000, 149000, 180000, 174500, 116900, 143000, 124000, 149900, 230000, 120500, 201800, 218000, 179900, 230000, 235128, 185000, 146000, 224000, 129000, 108959, 194000, 233170, 245350, 173000, 235000, 625000, 171000, 163000, 171900, 200500, 239000, 285000, 119500, 115000, 154900, 93000, 250000, 392500, 745000, 120000, 186700, 104900, 95000, 262000, 195000, 189000, 168000, 174000, 125000, 165000, 158000, 176000, 219210, 144000, 178000, 148000, 116050, 197900, 117000, 213000, 153500, 271900, 107000, 200000, 140000, 290000, 189000, 164000, 113000, 145000, 134500, 125000, 112000, 229456, 80500, 91500, 115000, 134000, 143000, 137900, 184000, 145000, 214000, 147000, 367294, 127000, 190000, 132500, 101800, 142000, 130000, 138887, 175500, 195000, 142500, 265900, 224900, 248328, 170000, 465000, 230000, 178000, 186500, 169900, 129500, 119000, 244000, 171750, 130000, 294000, 165400, 127500, 301500, 99900, 190000, 151000, 181000, 128900, 161500, 180500, 181000, 183900, 122000, 378500, 381000, 144000, 260000, 185750, 137000, 177000, 139000, 137000, 162000, 197900, 237000, 68400, 227000, 180000, 150500, 139000, 169000, 132500, 143000, 190000, 278000, 281000, 180500, 119500, 107500, 162900, 115000, 138500, 155000, 140000, 160000, 154000, 225000, 177500, 290000, 232000, 130000, 325000, 202500, 138000, 147000, 179200, 335000, 203000, 302000, 333168, 119000, 206900, 295493, 208900, 275000, 111000, 156500, 72500, 190000, 82500, 147000, 55000, 79000, 130500, 256000, 176500, 227000, 132500, 100000, 125500, 125000, 167900, 135000, 52500, 200000, 128500, 123000, 155000, 228500, 177000, 155835, 108500, 262500, 283463, 215000, 122000, 200000, 171000, 134900, 410000, 235000, 170000, 110000, 149900, 177500, 315000, 189000, 260000, 104900, 156932, 144152, 216000, 193000, 127000, 144000, 232000, 105000, 165500, 274300, 466500, 250000, 239000, 91000, 117000, 83000, 167500, 58500, 237500, 157000, 112000, 105000, 125500, 250000, 136000, 377500, 131000, 235000, 124000, 123000, 163000, 246578, 281213, 160000, 137500, 138000, 137450, 120000, 193000, 193879, 282922, 105000, 275000, 133000, 112000, 125500, 215000, 230000, 140000, 90000, 257000, 207000, 175900, 122500, 340000, 124000, 223000, 179900, 127500, 136500, 274970, 144000, 142000, 271000, 140000, 119000, 182900, 192140, 143750, 64500, 186500, 160000, 174000, 120500, 394617, 149700, 197000, 191000, 149300, 310000, 121000, 179600, 129000, 157900, 240000, 112000, 92000, 136000, 287090, 145000, 84500, 185000, 175000, 210000, 266500, 142125, 147500 ] } ], "layout": {} }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import plotly.graph_objs as go\n", "from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot\n", "init_notebook_mode(connected=True)\n", "\n", "original_train.select('TotalBsmtSF',Y).toPandas().head()\n", "trace = go.Scatter(\n", " x = original_train.select('TotalBsmtSF').rdd.flatMap(list).collect(),\n", " y = original_train.select(Y).rdd.flatMap(list).collect(),\n", " mode = 'markers'\n", ")\n", "data = [trace]\n", "\n", "# Plot and embed in ipython notebook!\n", "iplot(data)#, filename='basic-scatter')" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Winsorize for Outliers" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "For TotalBsmtSF the lower limit is 0.0\n", "For TotalBsmtSF the upper limit is 3206.0\n" ] } ], "source": [ "original_train = DataPreperation.winsorize_columns(original_train,['TotalBsmtSF'],\\\n", " winzerize_type='percentile',limits =0.1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## New Chart\n", "After winsorizing the new chart moved all the values > 3200 are now = 3200" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/vnd.plotly.v1+html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "mode": "markers", "type": "scatter", "x": [ 856, 1262, 920, 756, 1145, 796, 1686, 1107, 952, 991, 1040, 1175, 912, 1494, 1253, 832, 1004, 0, 1114, 1029, 1158, 637, 1777, 1040, 1060, 1566, 900, 1704, 1484, 520, 649, 1228, 1234, 1398, 1561, 1117, 1097, 1297, 1057, 0, 1088, 1350, 840, 938, 1150, 1752, 1434, 1656, 736, 955, 794, 816, 816, 1842, 384, 1425, 970, 860, 1410, 780, 1158, 530, 1370, 576, 1057, 1143, 1947, 1453, 747, 1304, 2223, 845, 832, 1086, 840, 462, 952, 672, 1768, 440, 896, 1237, 1563, 1065, 384, 1288, 684, 612, 1013, 990, 0, 1235, 876, 1214, 824, 680, 1588, 960, 458, 950, 1610, 741, 0, 1226, 1040, 1053, 641, 789, 793, 1844, 994, 384, 1264, 1809, 1028, 729, 1092, 1125, 1673, 728, 938, 732, 1080, 1199, 1362, 520, 1078, 672, 660, 1008, 924, 992, 1063, 1267, 1461, 1304, 1214, 1907, 1004, 928, 864, 1734, 910, 1490, 1728, 970, 715, 884, 1080, 896, 969, 1710, 825, 1602, 1200, 572, 0, 774, 991, 1392, 1232, 1572, 1541, 882, 1149, 644, 1617, 1582, 840, 1686, 720, 1080, 1064, 1362, 1606, 1202, 1151, 1052, 2216, 968, 756, 793, 0, 1362, 504, 1107, 1188, 660, 1086, 1593, 853, 725, 1431, 970, 864, 855, 1726, 1360, 755, 1713, 1121, 1196, 617, 848, 720, 1424, 1140, 1100, 1157, 1092, 864, 1212, 900, 990, 689, 1070, 1436, 686, 798, 1248, 1498, 1010, 713, 864, 2392, 630, 1203, 483, 912, 1373, 1194, 1462, 483, 894, 860, 483, 1414, 996, 1694, 735, 1566, 686, 540, 626, 948, 1845, 1020, 1367, 840, 1444, 728, 1573, 798, 1302, 1314, 975, 864, 1604, 963, 0, 1362, 1482, 506, 926, 680, 1422, 802, 720, 740, 1143, 1095, 1385, 1152, 1240, 816, 952, 1560, 864, 2121, 1160, 807, 1262, 1314, 1468, 1575, 625, 912, 858, 882, 698, 1079, 780, 768, 795, 1416, 1003, 910, 975, 702, 1092, 1165, 1028, 1541, 894, 1470, 2000, 700, 319, 861, 1896, 697, 972, 793, 2136, 728, 716, 845, 1088, 1347, 1372, 1249, 1136, 1502, 1162, 710, 720, 1719, 1383, 844, 596, 1728, 1056, 3206, 1358, 943, 1499, 1922, 1536, 1208, 1215, 967, 721, 0, 1684, 536, 972, 958, 1478, 764, 1848, 1869, 1453, 616, 624, 940, 1200, 1158, 1142, 1062, 1086, 888, 883, 0, 483, 796, 672, 1394, 1099, 1268, 1063, 953, 0, 744, 608, 847, 683, 870, 1580, 1856, 982, 1026, 1293, 939, 784, 1580, 1256, 658, 1041, 1468, 1682, 861, 804, 0, 788, 735, 1144, 894, 864, 961, 1092, 1260, 1310, 672, 1141, 806, 1281, 1064, 840, 1063, 1034, 1276, 1056, 1470, 1008, 1080, 1340, 672, 1370, 756, 1056, 1344, 1602, 988, 1470, 1196, 651, 1518, 907, 1208, 1392, 483, 901, 765, 926, 630, 799, 648, 884, 440, 684, 3094, 1440, 1078, 1258, 915, 1436, 1517, 930, 780, 649, 813, 1533, 872, 768, 1728, 1242, 624, 1364, 588, 709, 832, 560, 864, 715, 1040, 1375, 1277, 728, 1626, 832, 1488, 808, 547, 1976, 1494, 970, 1478, 2153, 1705, 907, 1833, 1792, 910, 1216, 999, 1113, 1073, 1484, 954, 630, 264, 806, 728, 1269, 190, 720, 3200, 1026, 864, 912, 672, 866, 1214, 1501, 855, 960, 777, 1218, 689, 1041, 1008, 1368, 864, 1084, 768, 2006, 689, 1264, 794, 1276, 0, 1244, 1004, 3138, 1379, 1257, 928, 1452, 528, 2035, 1461, 611, 0, 0, 707, 1117, 880, 864, 1051, 1581, 1838, 969, 1650, 723, 654, 1204, 1065, 768, 825, 912, 1069, 928, 1709, 0, 998, 993, 1092, 637, 729, 1374, 1392, 1389, 996, 1163, 1095, 806, 1122, 1517, 1496, 943, 1728, 864, 846, 384, 372, 832, 861, 1164, 689, 1050, 1144, 2042, 816, 1237, 884, 1868, 816, 840, 1437, 742, 770, 1722, 816, 848, 924, 1814, 684, 1258, 1430, 716, 1058, 780, 908, 600, 1494, 768, 1040, 896, 965, 1029, 1440, 1032, 1299, 1120, 630, 936, 783, 832, 1822, 1482, 864, 1522, 980, 756, 732, 1116, 978, 1156, 1040, 1248, 636, 1554, 1386, 1056, 1056, 1440, 264, 811, 796, 1520, 1518, 1057, 1952, 780, 1766, 981, 0, 1094, 756, 630, 813, 755, 880, 756, 2109, 525, 1053, 776, 912, 1486, 793, 1629, 1392, 1138, 2077, 1406, 1021, 1408, 1188, 700, 738, 672, 1208, 1477, 1136, 855, 1095, 768, 2046, 988, 923, 793, 1291, 1626, 1195, 1190, 874, 551, 1419, 1362, 848, 2444, 1210, 1073, 927, 1112, 616, 980, 894, 1391, 1800, 1164, 1234, 360, 1473, 0, 1643, 1324, 728, 876, 270, 859, 1228, 960, 725, 1064, 718, 1176, 1311, 971, 1742, 848, 864, 941, 1698, 864, 880, 1232, 1584, 780, 1595, 868, 1153, 864, 948, 880, 0, 893, 1200, 864, 264, 912, 1349, 520, 1337, 1142, 952, 1240, 1720, 0, 576, 660, 1479, 1030, 1026, 729, 866, 672, 744, 1318, 864, 1145, 756, 1252, 1494, 1498, 980, 983, 1860, 1650, 858, 836, 1029, 912, 1935, 1204, 1614, 864, 0, 975, 1237, 761, 1413, 1097, 742, 1372, 686, 956, 901, 832, 1145, 1029, 1117, 1496, 712, 650, 660, 773, 1926, 731, 616, 1196, 728, 1734, 936, 1417, 980, 1324, 1024, 849, 1040, 848, 540, 1442, 686, 1649, 1008, 1568, 1010, 1358, 798, 936, 847, 778, 1489, 2078, 784, 1454, 1013, 600, 1392, 600, 941, 1516, 1144, 1067, 1559, 483, 1099, 768, 672, 650, 1127, 1800, 876, 1390, 740, 864, 907, 528, 848, 1273, 918, 1127, 1763, 1040, 940, 702, 1090, 1054, 912, 1039, 1040, 1148, 1372, 1002, 1638, 1040, 0, 1050, 894, 804, 105, 832, 676, 1184, 1064, 1462, 1109, 864, 1090, 1156, 808, 795, 892, 1698, 1626, 816, 2217, 1505, 672, 918, 1059, 1383, 0, 780, 951, 0, 2330, 912, 858, 992, 783, 1670, 876, 1056, 1623, 1017, 864, 742, 1105, 1268, 768, 1001, 612, 546, 480, 1134, 1104, 1184, 928, 1272, 1316, 1604, 1686, 1126, 1181, 832, 1753, 964, 1466, 925, 1905, 1500, 585, 600, 1176, 1113, 1391, 1032, 1728, 992, 1440, 1632, 819, 1088, 1144, 1616, 936, 1161, 864, 828, 768, 784, 945, 979, 561, 1057, 1337, 696, 858, 1330, 804, 1800, 817, 783, 728, 1098, 600, 588, 720, 764, 918, 1428, 728, 673, 440, 1241, 894, 1121, 944, 1225, 1266, 1128, 0, 1164, 485, 1930, 848, 770, 1396, 916, 822, 750, 1700, 747, 1050, 1442, 1007, 1187, 0, 691, 1574, 1680, 1346, 985, 1657, 546, 1710, 1008, 720, 0, 602, 1022, 1082, 810, 1504, 1220, 384, 1362, 1132, 1199, 912, 1346, 1565, 882, 1268, 1638, 768, 672, 686, 824, 1338, 1654, 920, 0, 1620, 1055, 546, 630, 1134, 800, 1306, 1475, 2524, 0, 1992, 990, 0, 0, 1302, 1316, 816, 1216, 1065, 1193, 1364, 973, 1104, 854, 1338, 894, 662, 1103, 1154, 1306, 799, 780, 942, 845, 1048, 727, 810, 690, 1240, 800, 796, 1096, 848, 990, 1258, 1040, 1459, 1251, 691, 936, 546, 1082, 970, 1247, 0, 600, 1181, 864, 936, 1314, 684, 1074, 672, 1271, 290, 950, 1010, 655, 630, 1463, 910, 868, 924, 1836, 773, 803, 816, 1008, 833, 1734, 408, 894, 533, 1040, 1012, 1552, 672, 698, 384, 1005, 1373, 1530, 847, 936, 1122, 974, 1008, 1128, 916, 960, 1032, 780, 1567, 915, 952, 780, 1466, 1006, 672, 1042, 1298, 704, 572, 650, 932, 1466, 1073, 816, 864, 1437, 1219, 1314, 1580, 901, 855, 1296, 894, 1198, 1360, 1502, 1694, 959, 1127, 1930, 1096, 1261, 625, 1598, 952, 1683, 876, 818, 731, 0, 1216, 1600, 2396, 1120, 1572, 784, 978, 1624, 831, 994, 1249, 776, 702, 1224, 663, 728, 879, 815, 1212, 1051, 864, 866, 884, 1630, 1056, 2158, 1056, 1682, 931, 1660, 1055, 559, 672, 648, 925, 894, 0, 1300, 0, 672, 912, 952, 1040, 2136, 788, 588, 894, 912, 1702, 1075, 1361, 1106, 0, 1188, 940, 747, 764, 847, 1141, 1476, 884, 1689, 1053, 2076, 792, 585, 756, 1012, 735, 876, 2110, 1405, 864, 1192, 746, 884, 1986, 864, 856, 1054, 841, 1050, 1104, 764, 1405, 691, 925, 2002, 728, 874, 1332, 1489, 935, 1019, 661, 928, 723, 1680, 1128, 698, 1573, 1309, 1040, 912, 804, 780, 1328, 1624, 1501, 1085, 1152, 630, 994, 832, 864, 1052, 1120, 547, 3206, 1246, 978, 771, 1165, 1616, 976, 1652, 1368, 990, 924, 1278, 1902, 1274, 1453, 1393, 948, 952, 1622, 1352, 1753, 864, 1478, 0, 750, 420, 1795, 796, 544, 816, 1510, 935, 1588, 911, 816, 803, 765, 1350, 1656, 693, 916, 864, 858, 1114, 1284, 896, 728, 960, 1568, 1732, 1482, 684, 1248, 858, 698, 2033, 992, 570, 864, 1078, 756, 1980, 612, 1530, 715, 616, 600, 814, 873, 757, 848, 1657, 840, 992, 1108, 2633, 1026, 1571, 768, 984, 483, 384, 864, 1205, 596, 816, 560, 796, 1392, 714, 1746, 735, 1525, 1584, 864, 482, 1356, 1094, 747, 939, 1208, 976, 862, 839, 1286, 1485, 672, 1594, 768, 833, 622, 791, 944, 856, 0, 1844, 833, 1386, 777, 1284, 1144, 1844, 708, 1069, 848, 697, 1024, 1252, 1223, 913, 788, 1440, 732, 958, 656, 936, 1126, 1319, 864, 1932, 912, 539, 588, 848, 1017, 952, 1422, 814, 1188, 1220, 560, 630, 896, 1573, 547, 1140, 1221, 953, 1542, 1152, 1078, 1256 ], "y": [ 208500, 181500, 223500, 140000, 250000, 143000, 307000, 200000, 129900, 118000, 129500, 345000, 144000, 279500, 157000, 132000, 149000, 90000, 159000, 139000, 325300, 139400, 230000, 129900, 154000, 256300, 134800, 306000, 207500, 68500, 40000, 149350, 179900, 165500, 277500, 309000, 145000, 153000, 109000, 82000, 160000, 170000, 144000, 130250, 141000, 319900, 239686, 249700, 113000, 127000, 177000, 114500, 110000, 385000, 130000, 180500, 172500, 196500, 438780, 124900, 158000, 101000, 202500, 140000, 219500, 317000, 180000, 226000, 80000, 225000, 244000, 129500, 185000, 144900, 107400, 91000, 135750, 127000, 136500, 110000, 193500, 153500, 245000, 126500, 168500, 260000, 174000, 164500, 85000, 123600, 109900, 98600, 163500, 133900, 204750, 185000, 214000, 94750, 83000, 128950, 205000, 178000, 118964, 198900, 169500, 250000, 100000, 115000, 115000, 190000, 136900, 180000, 383970, 217000, 259500, 176000, 139000, 155000, 320000, 163990, 180000, 100000, 136000, 153900, 181000, 84500, 128000, 87000, 155000, 150000, 226000, 244000, 150750, 220000, 180000, 174000, 143000, 171000, 230000, 231500, 115000, 260000, 166000, 204000, 125000, 130000, 105000, 222500, 141000, 115000, 122000, 372402, 190000, 235000, 125000, 79000, 109500, 269500, 254900, 320000, 162500, 412500, 220000, 103200, 152000, 127500, 190000, 325624, 183500, 228000, 128500, 215000, 239000, 163000, 184000, 243000, 211000, 172500, 501837, 100000, 177000, 200100, 120000, 200000, 127000, 475000, 173000, 135000, 153337, 286000, 315000, 184000, 192000, 130000, 127000, 148500, 311872, 235000, 104000, 274900, 140000, 171500, 112000, 149000, 110000, 180500, 143900, 141000, 277000, 145000, 98000, 186000, 252678, 156000, 161750, 134450, 210000, 107000, 311500, 167240, 204900, 200000, 179900, 97000, 386250, 112000, 290000, 106000, 125000, 192500, 148000, 403000, 94500, 128200, 216500, 89500, 185500, 194500, 318000, 113000, 262500, 110500, 79000, 120000, 205000, 241500, 137000, 140000, 180000, 277000, 76500, 235000, 173000, 158000, 145000, 230000, 207500, 220000, 231500, 97000, 176000, 276000, 151000, 130000, 73000, 175500, 185000, 179500, 120500, 148000, 266000, 241500, 290000, 139000, 124500, 205000, 201000, 141000, 415298, 192000, 228500, 185000, 207500, 244600, 179200, 164700, 159000, 88000, 122000, 153575, 233230, 135900, 131000, 235000, 167000, 142500, 152000, 239000, 175000, 158500, 157000, 267000, 205000, 149900, 295000, 305900, 225000, 89500, 82500, 360000, 165600, 132000, 119900, 375000, 178000, 188500, 260000, 270000, 260000, 187500, 342643, 354000, 301000, 126175, 242000, 87000, 324000, 145250, 214500, 78000, 119000, 139000, 284000, 207000, 192000, 228950, 377426, 214000, 202500, 155000, 202900, 82000, 87500, 266000, 85000, 140200, 151500, 157500, 154000, 437154, 318061, 190000, 95000, 105900, 140000, 177500, 173000, 134000, 130000, 280000, 156000, 145000, 198500, 118000, 190000, 147000, 159000, 165000, 132000, 162000, 172400, 134432, 125000, 123000, 219500, 61000, 148000, 340000, 394432, 179000, 127000, 187750, 213500, 76000, 240000, 192000, 81000, 125000, 191000, 426000, 119000, 215000, 106500, 100000, 109000, 129000, 123000, 169500, 67000, 241000, 245500, 164990, 108000, 258000, 168000, 150000, 115000, 177000, 280000, 339750, 60000, 145000, 222000, 115000, 228000, 181134, 149500, 239000, 126000, 142000, 206300, 215000, 113000, 315000, 139000, 135000, 275000, 109008, 195400, 175000, 85400, 79900, 122500, 181000, 81000, 212000, 116000, 119000, 90350, 110000, 555000, 118000, 162900, 172500, 210000, 127500, 190000, 199900, 119500, 120000, 110000, 280000, 204000, 210000, 188000, 175500, 98000, 256000, 161000, 110000, 263435, 155000, 62383, 188700, 124000, 178740, 167000, 146500, 250000, 187000, 212000, 190000, 148000, 440000, 251000, 132500, 208900, 380000, 297000, 89471, 326000, 374000, 155000, 164000, 132500, 147000, 156000, 175000, 160000, 86000, 115000, 133000, 172785, 155000, 91300, 34900, 430000, 184000, 130000, 120000, 113000, 226700, 140000, 289000, 147000, 124500, 215000, 208300, 161000, 124500, 164900, 202665, 129900, 134000, 96500, 402861, 158000, 265000, 211000, 234000, 106250, 150000, 159000, 184750, 315750, 176000, 132000, 446261, 86000, 200624, 175000, 128000, 107500, 39300, 178000, 107500, 188000, 111250, 158000, 272000, 315000, 248000, 213250, 133000, 179665, 229000, 210000, 129500, 125000, 263000, 140000, 112500, 255500, 108000, 284000, 113000, 141000, 108000, 175000, 234000, 121500, 170000, 108000, 185000, 268000, 128000, 325000, 214000, 316600, 135960, 142600, 120000, 224500, 170000, 139000, 118500, 145000, 164500, 146000, 131500, 181900, 253293, 118500, 325000, 133000, 369900, 130000, 137000, 143000, 79500, 185900, 451950, 138000, 140000, 110000, 319000, 114504, 194201, 217500, 151000, 275000, 141000, 220000, 151000, 221000, 205000, 152000, 225000, 359100, 118500, 313000, 148000, 261500, 147000, 75500, 137500, 183200, 105500, 314813, 305000, 67000, 240000, 135000, 168500, 165150, 160000, 139900, 153000, 135000, 168500, 124000, 209500, 82500, 139400, 144000, 200000, 60000, 93000, 85000, 264561, 274000, 226000, 345000, 152000, 370878, 143250, 98300, 155000, 155000, 84500, 205950, 108000, 191000, 135000, 350000, 88000, 145500, 149000, 97500, 167000, 197900, 402000, 110000, 137500, 423000, 230500, 129000, 193500, 168000, 137500, 173500, 103600, 165000, 257500, 140000, 148500, 87000, 109500, 372500, 128500, 143000, 159434, 173000, 285000, 221000, 207500, 227875, 148800, 392000, 194700, 141000, 755000, 335000, 108480, 141500, 176000, 89000, 123500, 138500, 196000, 312500, 140000, 361919, 140000, 213000, 55000, 302000, 254000, 179540, 109900, 52000, 102776, 189000, 129000, 130500, 165000, 159500, 157000, 341000, 128500, 275000, 143000, 124500, 135000, 320000, 120500, 222000, 194500, 110000, 103000, 236500, 187500, 222500, 131400, 108000, 163000, 93500, 239900, 179000, 190000, 132000, 142000, 179000, 175000, 180000, 299800, 236000, 265979, 260400, 98000, 96500, 162000, 217000, 275500, 156000, 172500, 212000, 158900, 179400, 290000, 127500, 100000, 215200, 337000, 270000, 264132, 196500, 160000, 216837, 538000, 134900, 102000, 107000, 114500, 395000, 162000, 221500, 142500, 144000, 135000, 176000, 175900, 187100, 165500, 128000, 161500, 139000, 233000, 107900, 187500, 160200, 146800, 269790, 225000, 194500, 171000, 143500, 110000, 485000, 175000, 200000, 109900, 189000, 582933, 118000, 227680, 135500, 223500, 159950, 106000, 181000, 144500, 55993, 157900, 116000, 224900, 137000, 271000, 155000, 224000, 183000, 93000, 225000, 139500, 232600, 385000, 109500, 189000, 185000, 147400, 166000, 151000, 237000, 167000, 139950, 128000, 153500, 100000, 144000, 130500, 140000, 157500, 174900, 141000, 153900, 171000, 213000, 133500, 240000, 187000, 131500, 215000, 164000, 158000, 170000, 127000, 147000, 174000, 152000, 250000, 189950, 131500, 152000, 132500, 250580, 148500, 248900, 129000, 169000, 236000, 109500, 200500, 116000, 133000, 66500, 303477, 132250, 350000, 148000, 136500, 157000, 187500, 178000, 118500, 100000, 328900, 145000, 135500, 268000, 149500, 122900, 172500, 154500, 165000, 118858, 140000, 106500, 142953, 611657, 135000, 110000, 153000, 180000, 240000, 125500, 128000, 255000, 250000, 131000, 174000, 154300, 143500, 88000, 145000, 173733, 75000, 35311, 135000, 238000, 176500, 201000, 145900, 169990, 193000, 207500, 175000, 285000, 176000, 236500, 222000, 201000, 117500, 320000, 190000, 242000, 79900, 184900, 253000, 239799, 244400, 150900, 214000, 150000, 143000, 137500, 124900, 143000, 270000, 192500, 197500, 129000, 119900, 133900, 172000, 127500, 145000, 124000, 132000, 185000, 155000, 116500, 272000, 155000, 239000, 214900, 178900, 160000, 135000, 37900, 140000, 135000, 173000, 99500, 182000, 167500, 165000, 85500, 199900, 110000, 139000, 178400, 336000, 159895, 255900, 126000, 125000, 117000, 395192, 195000, 197000, 348000, 168000, 187000, 173900, 337500, 121600, 136500, 185000, 91000, 206000, 82000, 86000, 232000, 136905, 181000, 149900, 163500, 88000, 240000, 102000, 135000, 100000, 165000, 85000, 119200, 227000, 203000, 187500, 160000, 213490, 176000, 194000, 87000, 191000, 287000, 112500, 167500, 293077, 105000, 118000, 160000, 197000, 310000, 230000, 119750, 84000, 315500, 287000, 97000, 80000, 155000, 173000, 196000, 262280, 278000, 139600, 556581, 145000, 115000, 84900, 176485, 200141, 165000, 144500, 255000, 180000, 185850, 248000, 335000, 220000, 213500, 81000, 90000, 110500, 154000, 328000, 178000, 167900, 151400, 135000, 135000, 154000, 91500, 159500, 194000, 219500, 170000, 138800, 155900, 126000, 145000, 133000, 192000, 160000, 187500, 147000, 83500, 252000, 137500, 197000, 92900, 160000, 136500, 146000, 129000, 176432, 127000, 170000, 128000, 157000, 60000, 119500, 135000, 159500, 106000, 325000, 179900, 274725, 181000, 280000, 188000, 205000, 129900, 134500, 117000, 318000, 184100, 130000, 140000, 133700, 118400, 212900, 112000, 118000, 163900, 115000, 174000, 259000, 215000, 140000, 135000, 93500, 117500, 239500, 169000, 102000, 119000, 94000, 196000, 144000, 139000, 197500, 424870, 80000, 80000, 149000, 180000, 174500, 116900, 143000, 124000, 149900, 230000, 120500, 201800, 218000, 179900, 230000, 235128, 185000, 146000, 224000, 129000, 108959, 194000, 233170, 245350, 173000, 235000, 625000, 171000, 163000, 171900, 200500, 239000, 285000, 119500, 115000, 154900, 93000, 250000, 392500, 745000, 120000, 186700, 104900, 95000, 262000, 195000, 189000, 168000, 174000, 125000, 165000, 158000, 176000, 219210, 144000, 178000, 148000, 116050, 197900, 117000, 213000, 153500, 271900, 107000, 200000, 140000, 290000, 189000, 164000, 113000, 145000, 134500, 125000, 112000, 229456, 80500, 91500, 115000, 134000, 143000, 137900, 184000, 145000, 214000, 147000, 367294, 127000, 190000, 132500, 101800, 142000, 130000, 138887, 175500, 195000, 142500, 265900, 224900, 248328, 170000, 465000, 230000, 178000, 186500, 169900, 129500, 119000, 244000, 171750, 130000, 294000, 165400, 127500, 301500, 99900, 190000, 151000, 181000, 128900, 161500, 180500, 181000, 183900, 122000, 378500, 381000, 144000, 260000, 185750, 137000, 177000, 139000, 137000, 162000, 197900, 237000, 68400, 227000, 180000, 150500, 139000, 169000, 132500, 143000, 190000, 278000, 281000, 180500, 119500, 107500, 162900, 115000, 138500, 155000, 140000, 160000, 154000, 225000, 177500, 290000, 232000, 130000, 325000, 202500, 138000, 147000, 179200, 335000, 203000, 302000, 333168, 119000, 206900, 295493, 208900, 275000, 111000, 156500, 72500, 190000, 82500, 147000, 55000, 79000, 130500, 256000, 176500, 227000, 132500, 100000, 125500, 125000, 167900, 135000, 52500, 200000, 128500, 123000, 155000, 228500, 177000, 155835, 108500, 262500, 283463, 215000, 122000, 200000, 171000, 134900, 410000, 235000, 170000, 110000, 149900, 177500, 315000, 189000, 260000, 104900, 156932, 144152, 216000, 193000, 127000, 144000, 232000, 105000, 165500, 274300, 466500, 250000, 239000, 91000, 117000, 83000, 167500, 58500, 237500, 157000, 112000, 105000, 125500, 250000, 136000, 377500, 131000, 235000, 124000, 123000, 163000, 246578, 281213, 160000, 137500, 138000, 137450, 120000, 193000, 193879, 282922, 105000, 275000, 133000, 112000, 125500, 215000, 230000, 140000, 90000, 257000, 207000, 175900, 122500, 340000, 124000, 223000, 179900, 127500, 136500, 274970, 144000, 142000, 271000, 140000, 119000, 182900, 192140, 143750, 64500, 186500, 160000, 174000, 120500, 394617, 149700, 197000, 191000, 149300, 310000, 121000, 179600, 129000, 157900, 240000, 112000, 92000, 136000, 287090, 145000, 84500, 185000, 175000, 210000, 266500, 142125, 147500 ] } ], "layout": {} }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import plotly.graph_objs as go\n", "from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot\n", "init_notebook_mode(connected=True)\n", "\n", "original_train.select('TotalBsmtSF',Y).toPandas().head()\n", "trace = go.Scatter(\n", " x = original_train.select('TotalBsmtSF').rdd.flatMap(list).collect(),\n", " y = original_train.select(Y).rdd.flatMap(list).collect(),\n", " mode = 'markers'\n", ")\n", "data = [trace]\n", "\n", "# Plot and embed in ipython notebook!\n", "iplot(data)#, filename='basic-scatter')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Label Encoding\n", "When you have an algorithm like an SVM or decision tree that doesn't always numerical values as greater then one another. Or you have an ordinal variable label encoding is a good choice.\n", "\n", "(example XGBoost requires you to do this)\n", "\n", "convert not likely, likely, very likey into lets say 1,2,3\n", "\n", "Note: this must be done before you split the data unlike other data prep techniques" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Column before encoding...\n", "['Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Hip', 'Hip', 'Hip', 'Gable', 'Hip', 'Gable', 'Gable', 'Gable', 'Gable', 'Hip', 'Gable', 'Gable', 'Hip', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Gambrel', 'Gable', 'Gable', 'Hip', 'Hip', 'Gable', 'Gable', 'Hip', 'Gable', 'Gable', 'Gable', 'Gable', 'Gable', 'Hip', 'Gable', 'Hip', 'Gable', 'Gable', 'Gable']\n", "\n", "\n", "Numeric = ['MSSubClass', 'LotArea', 'OverallQual', 'OverallCond', 'YearBuilt', 'YearRemodAdd', 'BsmtFinSF1', 'BsmtFinSF2', 'BsmtUnfSF', 'TotalBsmtSF', '1stFlrSF', '2ndFlrSF', 'LowQualFinSF', 'GrLivArea', 'BsmtFullBath', 'BsmtHalfBath', 'FullBath', 'HalfBath', 'BedroomAbvGr', 'KitchenAbvGr', 'TotRmsAbvGrd', 'Fireplaces', 'GarageCars', 'GarageArea', 'WoodDeckSF', 'OpenPorchSF', 'EnclosedPorch', '3SsnPorch', 'ScreenPorch', 'PoolArea', 'MiscVal', 'MoSold', 'YrSold', 'RoofStyle_encoded']\n", "\n", "Categorical = ['MSZoning', 'LotFrontage', 'Street', 'Alley', 'LotShape', 'LandContour', 'Utilities', 'LotConfig', 'LandSlope', 'Neighborhood', 'Condition1', 'Condition2', 'BldgType', 'HouseStyle', 'RoofStyle', 'RoofMatl', 'Exterior1st', 'Exterior2nd', 'MasVnrType', 'MasVnrArea', 'ExterQual', 'ExterCond', 'Foundation', 'BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinType2', 'Heating', 'HeatingQC', 'CentralAir', 'Electrical', 'KitchenQual', 'Functional', 'FireplaceQu', 'GarageType', 'GarageYrBlt', 'GarageFinish', 'GarageQual', 'GarageCond', 'PavedDrive', 'PoolQC', 'Fence', 'MiscFeature', 'SaleType', 'SaleCondition']\n", "\n", "Column after encoding...\n", "[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0]\n" ] } ], "source": [ "print('Column before encoding...')\n", "print(original_train.select('RoofStyle').rdd.flatMap(list).collect()[0:49])\n", "print()\n", "original_train = DataPreperation.label_encoder(original_train,['RoofStyle'])\n", "print()\n", "numerics, categoricals = DataPreperation.get_type_lists(frame=original_train,rejects=[ID_VAR,Y],frame_type='spark')\n", "print()\n", "print('Column after encoding...')\n", "print(original_train.select('RoofStyle_encoded').rdd.flatMap(list).collect()[0:49])" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Feature interaction \n", "Feature interaction is multiplying two variables together (example columns $x$ and $y$ -> $xy$)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#Here is how to do polynomical expansion\n", "train_corr = DataPreperation.get_top_correlations(original_train,numerics)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "colorscale": [ [ 0, "#00083e" ], [ 0.5, "#ededee" ], [ 1, "#ffffff" ] ], "hoverinfo": "none", "opacity": 0.75, "showscale": false, "type": "heatmap", "z": [ [ 0, 0, 0 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ] ] } ], "layout": { "annotations": [ { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "columns", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "correlation", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "correlation_abs", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'MSSubClass']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1.0", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['RoofStyle_encoded', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1.0", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['GarageArea', 'GarageCars']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.882475414281462", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.882475414281462", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['1stFlrSF', 'TotalBsmtSF']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.808817918648286", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.808817918648286", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['YearRemodAdd', 'YearBuilt']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.5928549763436516", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.5928549763436516", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['TotalBsmtSF', 'BsmtUnfSF']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.43283263834537045", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.43283263834537045", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['YearBuilt', 'OverallCond']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.3759831956069893", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.3759831956069893", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['Fireplaces', 'TotRmsAbvGrd']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.32611448017720013", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.32611448017720013", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', '2ndFlrSF']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.30788572075985926", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.30788572075985926", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['GarageCars', 'Fireplaces']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.3007887663013562", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.3007887663013562", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'KitchenAbvGr']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 11, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.2817210402648814", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 11, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.2817210402648814", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 11, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['TotRmsAbvGrd', 'KitchenAbvGr']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 12, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.256045408535949", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 12, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.256045408535949", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 12, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', '1stFlrSF']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 13, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.25175835187837925", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 13, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.25175835187837925", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 13, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'TotalBsmtSF']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 14, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.24827764718002152", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 14, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.24827764718002152", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 14, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['BedroomAbvGr', 'HalfBath']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 15, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.22665148415094502", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 15, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.22665148415094502", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 15, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['WoodDeckSF', 'GarageArea']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 16, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.2246663071787637", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 16, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.2246663071787637", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 16, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['1stFlrSF', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 17, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.21855840409129543", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 17, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.21855840409129543", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 17, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['BsmtUnfSF', 'BsmtFinSF2']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 18, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.20929449241994488", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 18, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.20929449241994488", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 18, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['2ndFlrSF', '1stFlrSF']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 19, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.20264618100232076", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 19, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.20264618100232076", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 19, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['KitchenAbvGr', 'BedroomAbvGr']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 20, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.19859675770713378", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 20, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.19859675770713378", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 20, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'HalfBath']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 21, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.17735438864391687", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 21, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.17735438864391687", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 21, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['TotalBsmtSF', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 22, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.15883107546601227", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 22, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.15883107546601227", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 22, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['GrLivArea', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 23, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.14883308812170562", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 23, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.14883308812170562", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 23, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['BsmtHalfBath', 'BsmtFullBath']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 24, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.1478709605476014", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 24, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.1478709605476014", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 24, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['YrSold', 'MoSold']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 25, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.14572141267539515", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 25, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.14572141267539515", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 25, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'BsmtUnfSF']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 26, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.14075948083501172", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 26, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.14075948083501172", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 26, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'LotArea']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 27, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.13978108172014597", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 27, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.13978108172014597", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 27, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['LotArea', 'MSSubClass']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 28, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.13978108172014594", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 28, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.13978108172014594", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 28, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['HalfBath', 'FullBath']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 29, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.1363805887491452", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 29, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.1363805887491452", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 29, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['GrLivArea', 'LowQualFinSF']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 30, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.13468281300660073", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 30, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.13468281300660073", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 30, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'FullBath']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 31, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.13160822241028108", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 31, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.13160822241028108", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 31, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['BsmtFinSF1', 'YearRemodAdd']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 32, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.1284505471282884", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 32, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.1284505471282884", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 32, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['TotRmsAbvGrd', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 33, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.12673309641601102", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 33, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.12673309641601102", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 33, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MiscVal', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 34, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.12206442815712627", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 34, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.12206442815712627", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 34, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['BsmtFinSF1', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 35, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.11564766417732929", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 35, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.11564766417732929", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 35, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['Fireplaces', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 36, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.11497881612445161", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 36, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.11497881612445161", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 36, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['LotArea', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 37, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.1061591700038435", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 37, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.1061591700038435", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 37, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['OverallQual', 'LotArea']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 38, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.10580574175496422", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 38, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.10580574175496422", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 38, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'GarageArea']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 39, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.09867154319256435", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 39, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.09867154319256435", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 39, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['OverallQual', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 40, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.09577233626390078", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 40, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.09577233626390078", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 40, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['EnclosedPorch', 'OpenPorchSF']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 41, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.09307931750864906", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 41, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.09307931750864906", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 41, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['OverallCond', 'OverallQual']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 42, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.09193234263907189", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 42, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.09193234263907189", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 42, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['ScreenPorch', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 43, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0908813509254945", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 43, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0908813509254945", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 43, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 44, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.08860872589714583", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 44, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.08860872589714583", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 44, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['BsmtFinSF2', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 45, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.07872166948008127", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 45, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.07872166948008127", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 45, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['GarageArea', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 46, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.07816356004174109", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 46, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.07816356004174109", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 46, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'GrLivArea']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 47, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0748531796577994", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 47, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0748531796577994", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 47, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['GarageCars', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 48, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0740440561091197", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 48, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0740440561091197", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 48, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['WoodDeckSF', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 49, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.07085774358536079", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 49, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.07085774358536079", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 49, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'BsmtFinSF1']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 50, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.06983574916710049", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 50, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.06983574916710049", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 50, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'BsmtFinSF2']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 51, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.06564857918852389", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 51, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.06564857918852389", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 51, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['LowQualFinSF', '2ndFlrSF']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 52, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.06335295010932274", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 52, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.06335295010932274", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 52, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['PoolArea', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 53, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.06135495110498165", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 53, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.06135495110498165", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 53, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'OverallCond']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 54, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.059315817084104695", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 54, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.059315817084104695", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 54, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['OpenPorchSF', 'WoodDeckSF']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 55, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.058660608565887375", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 55, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.058660608565887375", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 55, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['BsmtFullBath', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 56, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.056702478391039805", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 56, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.056702478391039805", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 56, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['FullBath', 'BsmtHalfBath']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 57, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.05453581198363552", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 57, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.05453581198363552", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 57, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['PoolArea', 'ScreenPorch']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 58, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.05130739451790555", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 58, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.05130739451790555", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 58, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['BsmtFinSF2', 'BsmtFinSF1']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 59, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.05011740004715112", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 59, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.05011740004715112", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 59, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'LowQualFinSF']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 60, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.046473755899517154", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 60, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.046473755899517154", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 60, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'Fireplaces']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 61, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.04556934027456939", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 61, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.04556934027456939", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 61, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', '3SsnPorch']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 62, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.04382454917560846", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 62, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.04382454917560846", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 62, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['OverallCond', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 63, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.04282578856450448", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 63, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.04282578856450448", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 63, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'YearRemodAdd']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 64, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.04058104478406425", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 64, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.04058104478406425", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 64, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'TotRmsAbvGrd']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 65, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.04038006478367613", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 65, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.04038006478367613", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 65, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'GarageCars']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 66, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.040109793135783604", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 66, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.040109793135783604", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 66, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['BsmtHalfBath', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 67, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.03911393537269276", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 67, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.03911393537269276", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 67, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['3SsnPorch', 'EnclosedPorch']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 68, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.03730528278804611", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 68, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.03730528278804611", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 68, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['YearBuilt', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 69, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.03678666278394898", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 69, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.03678666278394898", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 69, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['BsmtFullBath', 'GrLivArea']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 70, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.034836049544905566", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 70, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.034836049544905566", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 70, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'OverallQual']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 71, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.032627707521842034", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 71, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.032627707521842034", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 71, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['ScreenPorch', '3SsnPorch']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 72, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.03143584703909575", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 72, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.03143584703909575", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 72, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MiscVal', 'PoolArea']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 73, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.029668650854021747", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 73, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.029668650854021747", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 73, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'YearBuilt']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 74, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.027850136946705798", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 74, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.027850136946705798", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 74, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['BedroomAbvGr', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 75, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.027530715328531935", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 75, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.027530715328531935", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 75, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['LowQualFinSF', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 76, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.026296101325995865", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 76, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.026296101325995865", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 76, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'ScreenPorch']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 77, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.026030176699806656", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 77, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.026030176699806656", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 77, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MoSold', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 78, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0245926834379919", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 78, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0245926834379919", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 78, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'BedroomAbvGr']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 79, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.02343802846062706", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 79, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.02343802846062706", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 79, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'YrSold']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 80, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.02140703785109821", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 80, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.02140703785109821", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 80, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['3SsnPorch', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 81, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.01764278526194262", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 81, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.01764278526194262", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 81, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['EnclosedPorch', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 82, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.014783107621892092", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 82, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.014783107621892092", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 82, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['RoofStyle_encoded', 'YrSold']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 83, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.01462606530351168", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 83, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.01462606530351168", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 83, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['YrSold', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 84, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.014626065303510663", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 84, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.014626065303510663", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 84, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'MoSold']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 85, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.013584643238322348", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 85, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.013584643238322348", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 85, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'WoodDeckSF']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 86, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.012579358249219592", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 86, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.012579358249219592", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 86, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['HalfBath', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 87, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.012493352795980099", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 87, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.012493352795980099", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 87, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'EnclosedPorch']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 88, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.012036621902094771", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 88, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.012036621902094771", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 88, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['KitchenAbvGr', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 89, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.01150328514106547", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 89, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.01150328514106547", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 89, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['2ndFlrSF', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 90, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.011464392620722371", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 90, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.011464392620722371", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 90, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['FullBath', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 91, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.009409915040546274", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 91, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.009409915040546274", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 91, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['BsmtUnfSF', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 92, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.00927944573168773", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 92, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.00927944573168773", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 92, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['OpenPorchSF', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 93, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.009076576776646892", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 93, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.009076576776646892", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 93, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'PoolArea']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 94, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.008282707579624416", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 94, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.008282707579624416", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 94, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'MiscVal']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 95, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.007683291329865976", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 95, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.007683291329865976", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 95, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MoSold', 'MiscVal']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 96, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.0064945502212821835", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 96, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0064945502212821835", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 96, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'OpenPorchSF']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 97, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.006100121231942231", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 97, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.006100121231942231", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 97, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'BsmtFullBath']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 98, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.003491025779044692", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 98, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.003491025779044692", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 98, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['YearRemodAdd', 'RoofStyle_encoded']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 99, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0028633620026209026", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 99, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0028633620026209026", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 99, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "['MSSubClass', 'BsmtHalfBath']", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 100, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.0023325345518022886", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 100, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0023325345518022886", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 100, "yref": "y1" } ], "height": 3080, "margin": { "b": 0, "l": 0, "r": 0, "t": 0 }, "xaxis": { "dtick": 1, "gridwidth": 2, "showticklabels": false, "tick0": -0.5, "ticks": "", "zeroline": false }, "yaxis": { "autorange": "reversed", "dtick": 1, "gridwidth": 2, "showticklabels": false, "tick0": 0.5, "ticks": "", "zeroline": false } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# https://plot.ly/python/figure-factory/table/\n", "import plotly.figure_factory as ff\n", "\n", "corr_df = pd.DataFrame(columns=['columns', 'correlation', 'correlation_abs'])\n", "for idx, d in enumerate(train_corr):\n", " corr_df.loc[idx] = [d['columns'],d['correlation'],d['correlation_abs']]\n", " \n", "table = ff.create_table(corr_df)\n", "iplot(table, filename='pandas_table')" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Combining: GarageArea & GarageCars (1/1)...\n", "DONE combining features.\n", "Combining: GarageArea & GarageCars (1/1)...\n", "DONE combining features.\n", "Combining: 1stFlrSF & TotalBsmtSF (1/1)...\n", "DONE combining features.\n", "Combining: 1stFlrSF & TotalBsmtSF (1/1)...\n", "DONE combining features.\n", "Combining: YearRemodAdd & YearBuilt (1/1)...\n", "DONE combining features.\n", "Combining: YearRemodAdd & YearBuilt (1/1)...\n", "DONE combining features.\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "colorscale": [ [ 0, "#00083e" ], [ 0.5, "#ededee" ], [ 1, "#ffffff" ] ], "hoverinfo": "none", "opacity": 0.75, "showscale": false, "type": "heatmap", "z": [ [ 0, 0, 0 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ], [ 0.5, 0.5, 0.5 ], [ 1, 1, 1 ] ] } ], "layout": { "annotations": [ { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "GarageArea", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "GarageCars", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "GarageArea|GarageCars", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "460", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "920", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "726", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "3", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2178", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "216", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "216", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "297", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "297", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "480", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "960", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "375", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "375", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "528", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1056", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "711", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "3", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2133", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "286", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "286", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "583", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1166", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" } ], "height": 380, "margin": { "b": 0, "l": 0, "r": 0, "t": 0 }, "width": 1000, "xaxis": { "dtick": 1, "gridwidth": 2, "showticklabels": false, "tick0": -0.5, "ticks": "", "zeroline": false }, "yaxis": { "autorange": "reversed", "dtick": 1, "gridwidth": 2, "showticklabels": false, "tick0": 0.5, "ticks": "", "zeroline": false } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for idx, row in corr_df.iterrows():\n", " if(corr_df.loc[idx]['correlation_abs'] >0.5 and corr_df.loc[idx]['correlation_abs'] != 1): #Set a cutoff only combine values greater then .7\n", " original_train = DataPreperation.feature_combiner(original_train,columns=corr_df.loc[idx]['columns'])\n", " original_test = DataPreperation.feature_combiner(original_test,columns=corr_df.loc[idx]['columns'])\n", "#show the results \n", "table = ff.create_table(original_train.select('GarageArea','GarageCars','GarageArea|GarageCars').toPandas().sample(10))\n", "table.layout.width=1000\n", "iplot(table, filename='pandas_table')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Polynomial Expansion\n", "Polynomial expansion is taking a variable and adding polynomial terms such as $x^2$$ $$x ^3$ etc. This can be very helpful especially in regression based models." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Id 1stFlrSF 1stFlrSF_^2 1stFlrSF_^3\n", "924 925 1686 2842596.0 4.792617e+09\n", "649 650 630 396900.0 2.500470e+08\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "colorscale": [ [ 0, "#00083e" ], [ 0.5, "#ededee" ], [ 1, "#ffffff" ] ], "hoverinfo": "none", "opacity": 0.75, "showscale": false, "type": "heatmap", "z": [ [ 0, 0, 0, 0 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ] ] } ], "layout": { "annotations": [ { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "Id", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "1stFlrSF", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "1stFlrSF_^2", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "1stFlrSF_^3", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "368.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1431.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2047761.0", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2930345991.0", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1282.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1339.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1792921.0", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2400721219.0", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "77.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "952.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "906304.0", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "862801408.0", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "587.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "838.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "702244.0", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "588480472.0", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "225.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2392.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "5721664.0", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "13686220288.0", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "202.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1279.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1635841.0", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2092240639.0", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "543.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1680.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2822400.0", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "4741632000.0", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "97.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1588.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2521744.0", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "4004529472.0", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "787.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "966.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "933156.0", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "901428696.0", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "547.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "915.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "837225.0", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "766060875.0", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" } ], "height": 380, "margin": { "b": 0, "l": 0, "r": 0, "t": 0 }, "width": 1000, "xaxis": { "dtick": 1, "gridwidth": 2, "showticklabels": false, "tick0": -0.5, "ticks": "", "zeroline": false }, "yaxis": { "autorange": "reversed", "dtick": 1, "gridwidth": 2, "showticklabels": false, "tick0": 0.5, "ticks": "", "zeroline": false } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "original_train = DataPreperation.polynomial_expansion(original_train,['1stFlrSF'],degree=3)\n", "original_test = DataPreperation.polynomial_expansion(original_test,['1stFlrSF'],degree=3)\n", "\n", "#show the results \n", "print(original_train.select(ID_VAR,'1stFlrSF','1stFlrSF_^2','1stFlrSF_^3').toPandas().sample(2))\n", "table = ff.create_table(original_train.select(ID_VAR,'1stFlrSF','1stFlrSF_^2','1stFlrSF_^3').toPandas().sample(10))\n", "table.layout.width=1000\n", "iplot(table, filename='pandas_table')" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Perturbed Rate-by-Level with Shrunken Averages\n", "This algorithm is good for hanlding any kind of categorical column when the algoithm needs a continuous column. For this slgorithm you MUST split the data BEFORE putting it in other wise you will have feature leakage and will overfit very very very very badly. You also want to perturb the data in insert random noise to further prevent overfitting.\n", "\n", "Formula:\n", "$$(1 − λ) * levelmean + λ * overallmean*purtubedamount$$" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Encoding numberic variables...\n", "Encoding: MSZoning (1/46) ...\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "colorscale": [ [ 0, "#00083e" ], [ 0.5, "#ededee" ], [ 1, "#ffffff" ] ], "hoverinfo": "none", "opacity": 0.75, "showscale": false, "type": "heatmap", "z": [ [ 0, 0 ], [ 0.5, 0.5 ], [ 1, 1 ], [ 0.5, 0.5 ], [ 1, 1 ], [ 0.5, 0.5 ], [ 1, 1 ], [ 0.5, 0.5 ], [ 1, 1 ], [ 0.5, 0.5 ], [ 1, 1 ], [ 0.5, 0.5 ], [ 1, 1 ], [ 0.5, 0.5 ], [ 1, 1 ], [ 0.5, 0.5 ] ] } ], "layout": { "annotations": [ { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "MSZoning", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "MSZoning_Tencode", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "RL", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "192660.07978703637", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "RL", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "190255.82953064964", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "RL", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "198250.0035603056", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "RL", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "200759.7581272335", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "RL", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "191238.07880085925", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "RL", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "196033.18306296735", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "RL", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "193042.73041939328", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "FV", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "206358.80379301118", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "RL", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "196450.12417699164", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "RM", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "124776.07476906863", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "RL", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 11, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "196550.80974091523", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 11, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "RL", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 12, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "195150.8213936457", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 12, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "RL", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 13, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "195289.60276071442", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 13, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "RL", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 14, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "195138.43023113342", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 14, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "RL", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 15, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "194574.45454736796", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 15, "yref": "y1" } ], "height": 530, "margin": { "b": 0, "l": 0, "r": 0, "t": 0 }, "xaxis": { "dtick": 1, "gridwidth": 2, "showticklabels": false, "tick0": -0.5, "ticks": "", "zeroline": false }, "yaxis": { "autorange": "reversed", "dtick": 1, "gridwidth": 2, "showticklabels": false, "tick0": 0.5, "ticks": "", "zeroline": false } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "(train,valid) = original_train.randomSplit([0.7,0.3], seed=123)\n", "\n", "print(\"Encoding numberic variables...\")\n", "for i, var in enumerate(['MSZoning']):\n", " total = len(categoricals)\n", "\n", " print('Encoding: ' + var + ' (' + str(i+1) + '/' + str(total) + ') ...')\n", " train,valid, original_test = DataPreperation.shrunken_averages_encoder(train, valid_frame = valid,test_frame=original_test,\\\n", " x=var, y=Y, lambda_=0.15, perturb_range=0.05,threshold=150,\\\n", " test=False, frame_type='spark',test_does_have_y=False,id_col=ID_VAR) \n", "table = ff.create_table(train.select('MSZoning','MSZoning_Tencode').toPandas().sample(15))\n", "iplot(table, filename='pandas_table')" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Dimensionality Reduction PCA\n", "This is a way to make your feature set less wide and make a smaller number of features out of a hopefully large number of features. The most common and historic algorithm to do this is Principal Component Analysis (PCA).\n", "\n", "Note n_comp will set the number of eigen vectors to return. If its 1 it'll pick the top 1 of all the eigen vectors. Below we can use an n_comp value of 1 or 2 b/c we have two features that we're feeding in. " ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Doing PCA for ['GarageArea', 'GarageCars']\n", "Doing PCA for ['1stFlrSF', 'TotalBsmtSF']\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "colorscale": [ [ 0, "#00083e" ], [ 0.5, "#ededee" ], [ 1, "#ffffff" ] ], "hoverinfo": "none", "opacity": 0.75, "showscale": false, "type": "heatmap", "z": [ [ 0, 0, 0, 0 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ] ] } ], "layout": { "annotations": [ { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "GarageArea", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "GarageCars", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "GarageArea&GarageCars_pca_1", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "1stFlrSF&TotalBsmtSF_pca_2", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "890.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "3.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-411.83658681157107", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "16.138672256192024", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "319.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "159.16687031917482", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-38.943451801441086", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "908.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "3.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-429.83650012810557", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "13.011070739884758", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "702.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-223.83438871075984", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "25.16561716711044", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "440.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "38.164349563241885", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-425.0266634591828", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "864.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "3.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-385.8367120210213", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "54.86138400635508", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "765.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "3.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-286.8371887800817", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "22.541340097595878", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "478.1684375569869", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "79.8610760896261", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "478.1684375569869", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "89.80570498462893", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "497.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-18.83537593911727", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "90.65363639382184", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" } ], "height": 380, "margin": { "b": 0, "l": 0, "r": 0, "t": 0 }, "width": 1000, "xaxis": { "dtick": 1, "gridwidth": 2, "showticklabels": false, "tick0": -0.5, "ticks": "", "zeroline": false }, "yaxis": { "autorange": "reversed", "dtick": 1, "gridwidth": 2, "showticklabels": false, "tick0": 0.5, "ticks": "", "zeroline": false } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# original_train = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('data_sets/kaggle_house/train.csv')\n", "# original_test = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('data_sets/kaggle_house/test.csv')\n", "# (train,valid) = original_train.randomSplit([0.7,0.3], seed=123)\n", "\n", "#PCA does not handle null values and there was some in test\n", "# train.na.drop()\n", "# valid.na.drop()\n", "# original_test.na.drop()\n", "# original_test.GarageArea.cast('float')\n", "# original_test.GarageCars.cast('float')\n", "\n", "for idx, row in corr_df.iterrows():\n", " if(corr_df.loc[idx]['correlation_abs'] >.7 and corr_df.loc[idx]['correlation_abs'] != 1): #Set a cutoff only combine values greater then .7\n", " print('Doing PCA for', corr_df.loc[idx]['columns'])\n", " #The test data was messy so i couldnt include test it has 'NA' which made for errors\n", " train,valid = DataPreperation.dimensionality_reduction(train, valid_frame = valid,test_frame=None,\\\n", " columns=corr_df.loc[idx]['columns'],n_comp=2,\\\n", " random_seed=420,decompositions_to_run=['PCA'],\\\n", " frame_type='spark',test_does_have_y=False,\\\n", " only_return_decompositions=False,id_col=ID_VAR,\\\n", " column_name=corr_df.loc[idx]['columns'][0]+'&'+corr_df.loc[idx]['columns'][1])#show the results \n", "\n", " \n", " \n", "table = ff.create_table(train.select('GarageArea','GarageCars','GarageArea&GarageCars_pca_1','1stFlrSF&TotalBsmtSF_pca_2').toPandas()[0:10])\n", "# table = ff.create_table(train.select('1stFlrSF','TotalBsmtSF','1stFlrSF&TotalBsmtSF_pca_1','1stFlrSF&TotalBsmtSF_pca_2').toPandas()[0:10])\n", "table.layout.width=1000\n", "iplot(table, filename='pandas_table')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dimensionality Reduction SVD (cont.)\n", "SVD's are a nother type of decomposition. Many people claim they work better on large datasets compared to PCA.\n", "\n", "\"Singular value decomposition is often preferred over eigendecomposition of the covariance matrix because the calculation of the covariance matrix is a source of error. In singular value decomposition, with such a large dataset, we are much more robust to errors due to dynamic range of numbers or computational error.\"\n", "- https://blog.dominodatalab.com/pca-on-very-large-neuroimaging-datasets-using-pyspark/" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Doing SVD for ['GarageArea', 'GarageCars']\n", "Doing SVD for ['1stFlrSF', 'TotalBsmtSF']\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "data": [ { "colorscale": [ [ 0, "#00083e" ], [ 0.5, "#ededee" ], [ 1, "#ffffff" ] ], "hoverinfo": "none", "opacity": 0.75, "showscale": false, "type": "heatmap", "z": [ [ 0, 0, 0, 0 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ], [ 0.5, 0.5, 0.5, 0.5 ], [ 1, 1, 1, 1 ] ] } ], "layout": { "annotations": [ { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "GarageArea", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "GarageCars", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "GarageArea&GarageCars_svd_1", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#ffffff" }, "showarrow": false, "text": "1stFlrSF&TotalBsmtSF_svd_2", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 0, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "890.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "3.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.05836749075216554", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0028580583577983904", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 1, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "319.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "1.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.022557905559896615", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.00689664280529183", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 2, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "908.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "3.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.060918526302883365", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0023041796054669933", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 3, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "702.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.03172290182918937", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.004456674088912061", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 4, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "440.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.005408837853481264", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.07526957537170552", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 5, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "864.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "3.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.05468266162335089", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.00971560947460175", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 6, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "765.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "3.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.04065196609440283", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.003991930961804614", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 7, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.06776836432420809", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.014142899264414921", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 8, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "-0.06776836432420809", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.015904031114506348", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 9, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "497.0", "x": -0.45, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "2.0", "x": 0.55, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.0026694413904585312", "x": 1.55, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" }, { "align": "left", "font": { "color": "#000000" }, "showarrow": false, "text": "0.016054194486834195", "x": 2.55, "xanchor": "left", "xref": "x1", "y": 10, "yref": "y1" } ], "height": 380, "margin": { "b": 0, "l": 0, "r": 0, "t": 0 }, "width": 1000, "xaxis": { "dtick": 1, "gridwidth": 2, "showticklabels": false, "tick0": -0.5, "ticks": "", "zeroline": false }, "yaxis": { "autorange": "reversed", "dtick": 1, "gridwidth": 2, "showticklabels": false, "tick0": 0.5, "ticks": "", "zeroline": false } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# original_train = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('data_sets/kaggle_house/train.csv')\n", "# original_test = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('data_sets/kaggle_house/test.csv')\n", "# (train,valid) = original_train.randomSplit([0.7,0.3], seed=123)\n", "\n", "#PCA does not handle null values and there was some in test\n", "# train.na.drop()\n", "# valid.na.drop()\n", "# original_test.na.drop()\n", "# original_test.GarageArea.cast('float')\n", "# original_test.GarageCars.cast('float')\n", "\n", "for idx, row in corr_df.iterrows():\n", " if(corr_df.loc[idx]['correlation_abs'] >.7 and corr_df.loc[idx]['correlation_abs'] != 1): #Set a cutoff only combine values greater then .7\n", " print('Doing SVD for', corr_df.loc[idx]['columns'])\n", " #The test data was messy so i couldnt include test it has 'NA' which made for errors\n", " train,valid = DataPreperation.dimensionality_reduction(train, valid_frame = valid,test_frame=None,\\\n", " columns=corr_df.loc[idx]['columns'],n_comp=2,\\\n", " random_seed=420,decompositions_to_run=['SVD'],\\\n", " frame_type='spark',test_does_have_y=False,\\\n", " only_return_decompositions=False,id_col=ID_VAR,\\\n", " column_name=corr_df.loc[idx]['columns'][0]+'&'+corr_df.loc[idx]['columns'][1])#show the results \n", "\n", " \n", "table = ff.create_table(train.select('GarageArea','GarageCars','GarageArea&GarageCars_svd_1','1stFlrSF&TotalBsmtSF_svd_2').toPandas()[0:10])\n", "# table = ff.create_table(train.select('1stFlrSF','TotalBsmtSF','1stFlrSF&TotalBsmtSF_pca_1','1stFlrSF&TotalBsmtSF_pca_2').toPandas()[0:10])\n", "table.layout.width=1000\n", "iplot(table, filename='pandas_table') " ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 02_analytical_data_prep/src/py_part_2_discretization.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Simple discretization - Pandas and numpy\n", "\n", "## Imports " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd # pandas for handling mixed data sets \n", "import numpy as np # numpy for basic math and matrix operations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create sample data set" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "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", "
x1
01.314953
1-1.550305
2-1.168123
30.531124
40.089564
51.140028
6-0.633408
7-0.152805
80.608893
9-2.485712
10-1.309433
111.057359
121.920338
130.526936
140.438425
15-1.262219
161.340732
17-0.096697
18-0.596703
19-0.958907
\n", "" ], "text/plain": [ " x1\n", "0 1.314953\n", "1 -1.550305\n", "2 -1.168123\n", "3 0.531124\n", "4 0.089564\n", "5 1.140028\n", "6 -0.633408\n", "7 -0.152805\n", "8 0.608893\n", "9 -2.485712\n", "10 -1.309433\n", "11 1.057359\n", "12 1.920338\n", "13 0.526936\n", "14 0.438425\n", "15 -1.262219\n", "16 1.340732\n", "17 -0.096697\n", "18 -0.596703\n", "19 -0.958907" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df = pd.DataFrame({'x1': pd.Series(np.random.randn(20))}) \n", "\n", "scratch_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Discretize" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "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", "
x1x1_discrete
01.314953(1.0391, 1.92]
1-1.550305(-1.605, -0.723]
2-1.168123(-1.605, -0.723]
30.531124(0.158, 1.0391]
40.089564(-0.723, 0.158]
51.140028(1.0391, 1.92]
6-0.633408(-0.723, 0.158]
7-0.152805(-0.723, 0.158]
80.608893(0.158, 1.0391]
9-2.485712(-2.49, -1.605]
10-1.309433(-1.605, -0.723]
111.057359(1.0391, 1.92]
121.920338(1.0391, 1.92]
130.526936(0.158, 1.0391]
140.438425(0.158, 1.0391]
15-1.262219(-1.605, -0.723]
161.340732(1.0391, 1.92]
17-0.096697(-0.723, 0.158]
18-0.596703(-0.723, 0.158]
19-0.958907(-1.605, -0.723]
\n", "
" ], "text/plain": [ " x1 x1_discrete\n", "0 1.314953 (1.0391, 1.92]\n", "1 -1.550305 (-1.605, -0.723]\n", "2 -1.168123 (-1.605, -0.723]\n", "3 0.531124 (0.158, 1.0391]\n", "4 0.089564 (-0.723, 0.158]\n", "5 1.140028 (1.0391, 1.92]\n", "6 -0.633408 (-0.723, 0.158]\n", "7 -0.152805 (-0.723, 0.158]\n", "8 0.608893 (0.158, 1.0391]\n", "9 -2.485712 (-2.49, -1.605]\n", "10 -1.309433 (-1.605, -0.723]\n", "11 1.057359 (1.0391, 1.92]\n", "12 1.920338 (1.0391, 1.92]\n", "13 0.526936 (0.158, 1.0391]\n", "14 0.438425 (0.158, 1.0391]\n", "15 -1.262219 (-1.605, -0.723]\n", "16 1.340732 (1.0391, 1.92]\n", "17 -0.096697 (-0.723, 0.158]\n", "18 -0.596703 (-0.723, 0.158]\n", "19 -0.958907 (-1.605, -0.723]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df['x1_discrete'] = pd.DataFrame(pd.cut(scratch_df['x1'], 5))\n", "scratch_df" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 02_analytical_data_prep/src/py_part_2_encoding.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Simple encoding - Pandas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Imports" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd # pandas for handling mixed data sets " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a sample data set" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "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", "
x1x2
0AC
1AD
2AE
3AF
4AG
5BH
6BI
7BJ
8BK
9BL
\n", "
" ], "text/plain": [ " x1 x2\n", "0 A C\n", "1 A D\n", "2 A E\n", "3 A F\n", "4 A G\n", "5 B H\n", "6 B I\n", "7 B J\n", "8 B K\n", "9 B L" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df = pd.DataFrame({'x1': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],\n", " 'x2': ['C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L']})\n", "scratch_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Encode categorical variables as binary dummies" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "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", "
x1x2x1_Ax1_Bx2_Cx2_Dx2_Ex2_Fx2_Gx2_Hx2_Ix2_Jx2_Kx2_L
0AC1.00.01.00.00.00.00.00.00.00.00.00.0
1AD1.00.00.01.00.00.00.00.00.00.00.00.0
2AE1.00.00.00.01.00.00.00.00.00.00.00.0
3AF1.00.00.00.00.01.00.00.00.00.00.00.0
4AG1.00.00.00.00.00.01.00.00.00.00.00.0
5BH0.01.00.00.00.00.00.01.00.00.00.00.0
6BI0.01.00.00.00.00.00.00.01.00.00.00.0
7BJ0.01.00.00.00.00.00.00.00.01.00.00.0
8BK0.01.00.00.00.00.00.00.00.00.01.00.0
9BL0.01.00.00.00.00.00.00.00.00.00.01.0
\n", "
" ], "text/plain": [ " x1 x2 x1_A x1_B x2_C x2_D x2_E x2_F x2_G x2_H x2_I x2_J x2_K \\\n", "0 A C 1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "1 A D 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "2 A E 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3 A F 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 \n", "4 A G 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 \n", "5 B H 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 \n", "6 B I 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 \n", "7 B J 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 \n", "8 B K 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 \n", "9 B L 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "\n", " x2_L \n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "5 0.0 \n", "6 0.0 \n", "7 0.0 \n", "8 0.0 \n", "9 1.0 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.concat([scratch_df, pd.get_dummies(scratch_df)], axis=1)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 02_analytical_data_prep/src/py_part_2_feature_extraction.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Simple feature extraction - Pandas and Scikit-Learn" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Imports" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import pandas as pd # pandas for handling mixed data sets \n", "import numpy as np # numpy for basic math and matrix operations\n", "import matplotlib.pyplot as plt # pyplot for plotting\n", "\n", "# scikit-learn for machine learning and data preprocessing\n", "from sklearn.decomposition import PCA" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Perform basic feature extraction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a sample data set" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "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", "
x1x2
01.01.5
12.52.0
23.03.5
34.54.0
\n", "
" ], "text/plain": [ " x1 x2\n", "0 1.0 1.5\n", "1 2.5 2.0\n", "2 3.0 3.5\n", "3 4.5 4.0" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df = pd.DataFrame({'x1': [1, 2.5, 3, 4.5],\n", " 'x2': [1.5, 2, 3.5, 4]})\n", "\n", "scratch_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Compress `x1` and `x2` into a single principal component" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "pca = PCA(n_components=1)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "PCA(copy=True, n_components=1, whiten=False)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pca.fit(scratch_df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Principal components analysis finds vectors that represent that direction(s) of most variance in a data set. These are called *eigenvectors*." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "First eigenvector = [[ 0.77653412 0.6300752 ]]\n" ] } ], "source": [ "print('First eigenvector = ', pca.components_)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Principal components are the projection of the data onto these eigenvectors. Principal components are usually centered around zero and each principal component is uncorrelated with all the others, i.e. principal components are *orthogonal* to one-another. Becuase prinicipal components represent the highest variance dimensions in the data and are not correlated with one another, they do an excellent job summarizing a data set with only a few dimensions (e.g. columns) and PCA is probably the most popular feature extraction technique." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "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", "
x1x2Centered_PC1Non_centered_PC1PC1_x1_back_projectionPC1_x2_back_projection
01.01.5-2.1465291.7216470.7765340.630075
12.52.0-0.6666903.2014862.3296021.890226
23.03.50.6666904.5348663.8826713.150376
34.54.02.1465296.0147045.4357394.410526
\n", "
" ], "text/plain": [ " x1 x2 Centered_PC1 Non_centered_PC1 PC1_x1_back_projection \\\n", "0 1.0 1.5 -2.146529 1.721647 0.776534 \n", "1 2.5 2.0 -0.666690 3.201486 2.329602 \n", "2 3.0 3.5 0.666690 4.534866 3.882671 \n", "3 4.5 4.0 2.146529 6.014704 5.435739 \n", "\n", " PC1_x2_back_projection \n", "0 0.630075 \n", "1 1.890226 \n", "2 3.150376 \n", "3 4.410526 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df['Centered_PC1'] = pca.transform(scratch_df[['x1', 'x2']])\n", "scratch_df['Non_centered_PC1'] = pca.transform(scratch_df[['x1', 'x2']] + pca.mean_)\n", "scratch_df['PC1_x1_back_projection'] = pd.Series(np.arange(1,8,2)) * pca.components_[0][0]\n", "scratch_df['PC1_x2_back_projection'] = pd.Series(np.arange(1,8,2)) * pca.components_[0][1]\n", "scratch_df" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nQ8AeF9GmTRtq1qzJ66+/Tv78+dm3bx8bNmzw2E+bNm3YsGED4eHhVKpUie3btzNhwgT27t3L4sWe\n92b75ptvWLBgAU8//TS33norFSpUoEOHDnz66adMnz6dPHn+/if+6aefcuXKFfc0q7Qcq0+fPsyb\nN4/u3btTr149Vq9eTevWrVM1BuHSpUs0adKEQ4cOMWjQIEqVKsWcOXNYvXp1otcvXLiQixcvMmDA\nAAICAti0aRNvv/02hw8f5pNPPgGgf//+HDlyhFWrVjF37txEoWPy5Mm0a9eOsLAwrly5wscff0yX\nLl346quvaNmy5Q1r3bhxIwEBAZQt6zlB6/3336dGjRr079+ff//73wC8/PLLREdH8+233+Ln5+ex\nfUhICOvXr0/x3IhkK8aYbPUFhAAmKirKSBodOmRM27b2h/7OnY353//SvIuoqCiT0vk/fdqYcuWM\nyZPnWv+CMT4+xvj5GbNzp+e28fHGFCny93bXf7lcxrz5ZuL9//67MU2a/L2dZRnTtasx58+n+dvx\n8OeffxrLskyHDh1uuF27du2My+Uy586dM8YYM3LkyCRf99RTTxmXy2W2b99ujDFm4sSJxuVymZMn\nTya77zlz5pg8efKYDRs2eLRPnz7duFwus3HjRnebZVkmT5485ueff/bYdsWKFcayLLNkyRKP9lat\nWpmgoKA0H2vr1q3GsiwTERHhsV337t2Ny+Uyr776arLfz/Xf96JFi9xtFy9eNMHBwcblcplvv/3W\n3X7p0qVErx8zZozx8fExv/32m7vt6aefNi6XK8njJdxHbGysqV69umnWrNkN6zTGmAYNGph77rkn\nyedmzJhhLMsy8+bNM99//73JkyePeeaZZ5LcNjw83BQoUCDF44lktJR+R197Hggxafz7q0sSuYEx\n8N57UKWKPVBg8WK7l6FkyUw53Acf2J/8Y2P/bouLs3sa3njDc9vYWEhu4TEfH/jf/zzbjIH27e0J\nHde3LVwI/fvfXN1nz54FoFChQjfc7trzZ86ccbdZlsVTTz3lsV1ERATGGJYuXQrALX8Nyvj000+T\nvQb/73//m8qVK1OhQgVOnDjh/mrcuDHGGNasWeOxfaNGjahYsaJHW5MmTbj11lvdn8gBTp8+zapV\nq+jatWuaj7VkyRIsyyIiIsLjOIMHD07VWIJly5ZRqlQpHn30UXebr68v/fr1S7Tt9eMvLly4wIkT\n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\nwQJ69uzJ2bNnefLJJz1qmj17NhcuXGDAgAEYYxg7diwdO3Z0h1GA7du306BBAwIDAxk2bBj+/v58\n8skntG3bls8++4xHHnnE42c3YMAAbr31Vl577TV++eUXJk6ciJ+fn3vMwpQpUxgwYAABAQEMGzYM\nYwylSpVK8Wcya9YsLly4QEREBBcvXmTSpEk0adKEHTt2uP+tWZbF1atXad68OY0bN2b8+PEUKFAA\nsP+o9uvXj/vuu48333yTo0ePMnHiRDZs2MCWLVsoWLCgex8J34evvvoqr732Gt26daNv374cO3aM\nSZMmsWnTJo/XLl++nHbt2lGmTBmeeeYZSpQowa5du/jqq68YMGAAAwYM4OjRo3z77bf83//9H8aY\nG/ZmbNu2jYYNG1KsWDFefPFFXC4X7777Lg0bNmTdunXuXs3UnvssZ4zJVl9ACGCioqKMZL2oqCiT\nk8//hx9+aCzLSvTlcrk8titTpozp27ev+/HMmTONZVmmSZMmifZZqFAhExkZecPjtmjRwgQHB6eq\nxtjYWGNZlvHx8THbt293t+/fv9/kz5/f/OMf/3C3DR8+3FiWZR577LFE+xk+fLjJmzdvov36+fmZ\nAwcOuNs3b95sLMsy06dPd7d169bN5M2b12zdujXZOletWmVcLpdZv369u61+/frG5XKZKVOmuNsu\nX75satSoYUqXLm3i4+ONMcbExcWZq1eveuzv9OnTpnjx4qZ///6Jah41alSydRhjzIwZM4xlWead\nd95Jdpt///vfxrIsM27cOI/2Rx991OTJk8d9Tq4d09/f3xw+fNi93dSpU41lWaZMmTLmwoUL7vbn\nn3/euFwuj21Tex7eeust43K5zMKFCz2+53vvvdfccsst7uPs27fPWJZlSpYsac6ePevedvHixcbl\ncpmvv/7a3dawYUNTu3ZtExsb6/F91q1b11StWtX9+Np7ulWrVh7bDRw40OTNm9ecP3/e3VapUiXz\n0EMPJXtur3et1kKFCpnff//d3b5x40ZjWZYZOnSouy0sLMy4XC7zyiuveOzj8uXL5tZbbzUhISHm\nypUr7vbPP//cWJZl/vnPf7rbEr7PY2JijI+Pj3nrrbc89rlt2zaTJ08e988/NjbW3HHHHSY4ONjj\nnCbUv39/j/1fk9R785FHHjH+/v7m4MGD7rbDhw+bggULmmbNmrnb0nLuE0rpd/S154EQk8a/v7ok\nIZnrwgXYvDlzvy5cyNCSLcti2rRprFq1yv21cuXKVL0uqamWRYoU4fvvv0/UVXqzGjRo4DEQMzAw\nkDZt2nh8kr1WV//+/VO93xYtWnDHHXe4H9eqVYsCBQrwyy+/APan9S+++IIOHTpQo0aNNNedP39+\nnnjiCffjfPny0a9fP44ePeruPne5XOTJY3eAGmM4deoUV69epU6dOmzevDnNx1y8eDG33XZbok/k\n11u2bBn58uXjqaee8mgfMmQIcXFxic5r8+bNuf32292P69atC0CXLl08rrFfa792/q5JzXlYtmwZ\npUuXplOnTu7tfHx8GDhwIGfOnEl0iaZbt27uT8dgv0eMMe5jHz9+nLVr19KlSxdOnz7NiRMnOHHi\nBMePH6d58+ZER0fzxx9/uF9vWRbh4eEex2jQoAFxcXEcPHgwyfOYWh07dqREiRLux/fddx+1a9dO\ndGkESPT+3bRpEydOnOCpp57yuNzQtm1bgoKCWLJkSbLHXbRoEZZl0bFjR/f3f+LECUqVKsVdd93F\nmjVrAPjhhx/47bffiIyM9Din6RUbG8uqVavo2LEjZcuWdbfffvvtdO3alW+//ZaLFy+62zPz3KeX\nLklI5vr5Z6hdO3OPERUFNxigmB733HPPDQc9JifhzAqAcePG0bt3b8qUKUOdOnVo1aoVPXv2THLb\ntAgKCkrUVqFCBRYvXszJkycpVqyYu/3aeIrUuP6X2TW33HKL+9rp77//zvnz59N8WeCa0qVLkz9/\n/kR1G2PYv3+/+7x/8MEHjB8/nt27dxMbG+uxbVrFxMRQqVKlG05xO3DgAGXKlEk0oK5y5cru56+X\n8Dxdu1xTpkyZRO3XQs/1UnMeDhw4kOT3W7lyZYwxKdZUtGhRAPex9+7dC8CwYcN44YUXEu3XsiyO\nHTtG8eLFU73P9Eru/fvll196tOXPn5/bbrvNo+3AgQNYlpXkualUqRJRUVHJHnffvn3ExcVx1113\nJXrOsiwKFy4M2AHPsqx0v88T+v3337l8+XKyP8+4uDgOHTpEcHCwuz2zzn16KTBI5qpUyf6DntnH\n8BJJjd7u2rUrDRs25NNPP2XlypWMGzeOsWPH8vnnn9OsWTPH6kpOctNFzQ1Gg2e0Dz/8kD59+tCp\nUyeGDRtG8eLF8fHx4fXXX+fw4cNZVseNJHeenDx/KR372oDUoUOHJvveSxgunX4/+Pr6Zuj+4uPj\nyZMnT6Ieo2tSM34oqzh97hNSYJDM5e+f4Z/+s6NSpUq5B0n98ccf3H333YwePdr9Szs9i7tc+7R4\nvd27d1OoUCGP3oWMVrJkSQoUKMCOHTvS9frDhw9z+fJlj0/Xu3fvxrIsd6/LokWLqFixIgsWLPB4\n7fWLZ6VF+fLl2bp1K/Hx8ckOSgsMDOS7775LNG3v2sj9wMDAdB07OTc6D9f+aAcGBib5c46Ojsay\nrDTXVL58ecC+/NGkSZObqN5TRr1/9+zZk6qet2uDVHfv3k39+vU9ntu9e/cNz0v58uXdPQw3Olb5\n8uUxxrBjxw4efPDBZLdL7fdesmRJ8ufPz+7duxM9Fx0djY+PT6LeKW+jMQwimSguLo6zZ896tBUv\nXpxSpUpx+fJld1uBAgU4ffp0mva9bt06tm3b5n68f/9+vvrqK1q0aHFzRafAx8eHdu3a8dlnn7F1\n69Y0v/7y5cvMmDHD/fjKlSvMmDGD2267jZo1a7qPkdD69esTTT9LrY4dO/K///2PadOmJbtNq1at\nuHLlinvK3DUTJkzAx8eHli1bpuvYkPQflRudh7vvvttd06FDh1i0aJF7u9jYWN5++20KFy5MgwYN\n0lTHbbfdRv369Zk2bRrHjh1L9Pzx48fTtL9r0vP+Xbx4sce4no0bNxIVFUWrVq1SfO29995LQEAA\n06ZN87hc9eWXX7J37173TI+kdOzYEcuyePXVV5N8/tqU0XvuuYc77riDCRMmcObMmWT3V6BAAeLi\n4riQwliqPHny8NBDD7F48WKPabZHjx7lk08+oVGjRmnqCXSCehhEEkhvd19Srzt9+jR33nknnTt3\npnr16hQoUIAVK1bw008/MXnyZPd2tWvXZvHixTz33HPUrl2bwoULp/iLs2rVqjz88MNERESQJ08e\npk6dSp48eXjllVfSVX9ajBkzhtWrV1O/fn3Cw8OpWLEihw8fZuHChfzwww/uaZVJnZPSpUszatQo\nYmJiCAoKYv78+ezcuZMPPvjA/en/kUce4YsvvuDRRx+lZcuWxMTEMH36dKpUqeIRtFKrV69ezJkz\nh4EDB7Jx40YeeOABzp07x8qVK4mMjKRly5Z06NCBBx98kKFDh7Jv3z73tMolS5bw3HPPJTm2I7XS\nex769+/Pe++9R48ePfjvf/9LYGAgn3zyCT/88ANTpkxJ1x+YadOm8eCDD1KtWjX69u3LnXfeye+/\n/8769es5duwYP/744w3rTqq9du3azJo1i9GjR1O+fHluu+02GjZseMM67rrrLurXr0///v25cOEC\nk757ZK0AAArjSURBVCZNomTJkjz77LMpfg/58uVjzJgx9OvXjwcffJDQ0FCOHDnC5MmTCQoKYuDA\ngcm+Njg42L36Y0xMDG3btqVgwYL88ssvfPrpp0RERDBw4EBcLhdTp06lQ4cO1KxZk169enHbbbfx\n888/s3v3br766iv39w7w9NNP06xZM/LmzUvnzp2TPPaoUaNYs2YN999/PwMGDMCyLKZPn05cXFyi\nabupPfdZKq3TKpz+QtMqHZUbplW6XK4Uv7+yZcuafv36uR/PnDnTuFyuRNMML1++bJ5//nlTs2ZN\nU6RIEVO4cGETEhJiZs6c6bHd2bNnTbdu3UyxYsWMy+W64RTLa9O1IiMjzZw5c0xwcLDx8/Mz9957\nr8cURmPsKWUul8v8+eefifYzfPhwky9fPo/9ulwuM2TIkBS/X2OMOXjwoOnZs6cpWbKk8fPzM0FB\nQWbQoEEmLi7OGJP8tMpatWqZH3/80dSrV8/4+/ubu+66y8yYMSPRMUeNGmXKlStn/P39TZ06dczy\n5ctNWFiYqVChQqKaR48enez5uubixYvmpZdeMnfddZfJnz+/KV26tOnatavHFNJz586ZyMhIU7p0\naZM/f35TsWJFM3HiRI/9JHee9u3bZ1wul5k8ebJH+7Xz8Pnnn6frPBw7dsz07t3blChRwvj6+pqa\nNWuauXPnpurYyZ2fX375xfTs2dOUKlXK+Pr6mjvuuMO0a9fOfPbZZ+5tkntPJ/VzPXr0qGndurUp\nXLiwcblcN5xieW1a5aRJk8y//vUvExgYaPz8/EyTJk3Mzp07PbYNCwszxYoVS3ZfH3/8sQkJCTF+\nfn6mePHi5rHHHjNHjx712CbhtMprFi1aZBo0aGAKFSpkChUqZKpUqWIGDRpkYmJiPLZbt26deeih\nh0zhwoVNoUKFTK1atTymGMf9f3v3GmpZWcdx/PtzEHW0FDpeMjulTJlhTGlRVt5odEJQE8VKDcqx\nsDIGu5BTiFQoYmRhZRiE5h1fTKUvRDEnwltexgxpVEhTiclrjOWUTuO/F2uPHQ8z7nP2zDlrrTPf\nD+wXZ3P22j8eztn7t5/17PWsX19nnHFG7bbbbjVv3rxXn2tTY79y5cpavHjxq897xBFH1D333POa\n35nO2E82k1+rbL0ATDuwhaFVc70w9MHEwtA3G94ot3Zb8zhMLAyzYdmyZbXDDjvMynN1gddhkCRp\nBKtXr2ZsbKztGHOCaxgkSXPOo48+yvLly1m+fDnHH39823HmBGcYpB7a1D4QfdDX3Fva1jwOs/H3\nu2LFCs4991wWLVrEBRdcMKPPtbVwhkHqmXnz5rF+/fq2Y4xkc3abnEu25nHYcB2EmbZkyRKWLFky\n48+zNXGGQZIkDWVhkCRJQ1kYJEnSUBYGSZI0lIseNZING/JIkrpjJl+bLQyalrGxMebPn88pp5zS\ndhRJ0kbMnz9/Ri5WZWHQtIyPj7Nq1aqRd7WTJM2ssbExxsfHt/hxLQyatvHx8Rn5Y5QkdVdnFj0m\n+XKSx5L8O8ldST7Qdqa55pprrmk7Qu84ZqNx3KbPMRuN4zZ7OlEYknwS+AFwDvA+4AHgpiTuGLIF\n+Y81fY7ZaBy36XPMRuO4zZ5OFAbgTOCSqrq8qh4CTgfWAqe2G0uSJEEHCkOSbYEDgd9uuK+qCrgF\nOKitXJIk6f9aLwzAGDAPeGrS/U8Be8x+HEmSNFkfvyWxPXjhoFGsWbOGlStXth2jVxyz0Thu0+eY\njcZxm54J753bT/exaWb/2zM4JbEWOL6qrp9w/2XAzlV13KTfPwm4alZDSpI0t5xcVVdP5wGtzzBU\n1bok9wEfA64HSJLBzxdt5CE3AScDfwX+M0sxJUmaC7YH3k7zXjotrc8wACQ5EbiM5tsRd9N8a+IE\n4F1V9UyL0SRJEh2YYQCoqusG11z4LrA78EdgsWVBkqRu6MQMgyRJ6rYufK1SkiR1nIVBkiQN1bvC\n4CZV05Pk4CTXJ/lbkleSHNN2pq5LsizJ3UleSPJUkl8leWfbubosyelJHkiyZnC7I8nH287VN0nO\nGvyfXth2li5Lcs5gnCbe/tx2rq5LsmeSK5I8m2Tt4H/2gKk+vleFwU2qRrIjzSLSLwEuWJmag4Ef\nAx8EFgHbAjcn2aHVVN32JPBN4ACaS73fCvwmyX6tpuqRwYefL9C8rmm4B2kWye8xuH203TjdlmQX\n4HbgJWAxsB/wNeAfUz5GnxY9JrkL+ENVLR38HJoXqouq6oJWw/VAkleAT0y8QJaGGxTSp4FDquq2\ntvP0RZLngK9X1aVtZ+m6JDsB9wFfBM4G7q+qr7abqruSnAMcW1VT/nS8tUtyPnBQVR066jF6M8Pg\nJlVq0S40szPPtx2kD5Jsk+RTwHzgzrbz9MRPgRuq6ta2g/TIOwanWv+S5Mokb207UMcdDdyb5LrB\nqdaVSU6bzgF6Uxhwkyq1YDCL9SPgtqryHOnrSLJ/kn/STHleDBw32K5er2NQrt4LLGs7S4/cBXyW\nZmr9dGBv4PdJdmwzVMftQzOD9TBwJPAz4KIkn5nqATpx4Sapwy4G3g18pO0gPfAQsBDYmeZKrZcn\nOcTSsGlJ9qIppIuqal3befqiqiZe1vjBJHcDjwMnAp4C27htgLur6uzBzw8k2Z+mcF0x1QP0xbPA\neppFLhPtDvx99uNorkvyE+Ao4LCqWt12nq6rqv9W1aNVdX9VfZtm8d7StnN13IHArsDKJOuSrAMO\nBZYmeXkww6UhqmoN8AiwoO0sHbYamLzN8ypgfKoH6E1hGLTvDZtUAa/ZpOqOtnJpbhqUhWOBw6vq\nibbz9NQ2wHZth+i4W4D30JySWDi43QtcCSysPq1Kb9Fg0egCmjdFbdztwL6T7tuXZmZmSvp2SuJC\n4LLB7pYbNqmaT7NxlTZicE5vAbDhk8o+SRYCz1fVk+0l664kFwOfBo4BXkyyYVZrTVW5Q+pGJDkP\nuBF4AngDzY6yh9KcK9UmVNWLwGvWxiR5EXiuqiZ/GtRAku8DN9C82b0F+A6wDrimzVwd90Pg9iTL\ngOtovjZ+GvD5qR6gV4XBTapG8n5gBc0q/6K5jgXAL4FT2wrVcafTjNXvJt3/OeDyWU/TD7vR/E29\nGVgD/Ak40lX/I3FWYbi9gKuBNwHPALcBH6qq51pN1WFVdW+S44Dzab66+xiwtKquneoxenUdBkmS\n1I7erGGQJEntsTBIkqShLAySJGkoC4MkSRrKwiBJkoayMEiSpKEsDJIkaSgLgyRJGsrCIEmShrIw\nSNrikuyR5KokDydZn+TCtjNJ2jwWBkkzYTvgaeB7NHu+SOo5C4OkaUsylmR1krMm3PfhJC8lObyq\nHq+qM6vqSuCFFqNK2kJ6tVulpG6oqmeTnAr8OsnNwCM0O3leVFUr2k0naSZYGCSNpKpuTPJzmm2G\n7wX+BXyr3VSSZoqnJCRtjm/QfPA4ATipqta1nEfSDLEwSNocC4A9aV5L9m45i6QZ5CkJSSNJsi1w\nBXAt8DDwiyT7V9Wz7SaTNBMsDJJGdR7wRuArwFrgKOBS4GiAJAuBADsBuw5+frmqVrUTV9LmSFW1\nnUFSzyQ5FLgZOKyq7hzc9zaaay6cVVWXJHkFmPwC83hV7TO7aSVtCRYGSZI0lIseJUnSUBYGSZI0\nlIVBkiQNZWGQJElDWRgkSdJQFgZJkjSUhUGSJA1lYZAkSUNZGCRJ0lAWBkmSNJSFQZIkDWVhkCRJ\nQ/0PwNqefYBxiKYAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = plt.scatter(scratch_df.x1, scratch_df.x2, color='b')\n", "pc, = plt.plot(scratch_df.PC1_x1_back_projection, scratch_df.PC1_x2_back_projection, color='r')\n", "plt.legend([x, pc], ['Observed data (x)', 'First principal component projection'], loc=4)\n", "plt.xlabel('x1')\n", "plt.ylabel('x2')\n", "plt.show()" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 02_analytical_data_prep/src/py_part_2_feature_selection.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Simple feature selection - Pandas and Scipy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Imports" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import pandas as pd # pandas for handling mixed data sets \n", "import numpy as np # numpy for basic math and matrix operations\n", "\n", "# scipy for stats and more advanced calculations\n", "from scipy.stats import chi2_contingency" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Perform simple feature selection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a sample data set" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "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", "
x1x2x3x4y
00-0.965284AC0
110.278069AD0
220.223738AE0
330.158793AF0
44-0.433190AG0
55-0.368828BH1
66-0.947958BI1
77-0.873526BJ1
880.820806BK1
99-0.755244BL1
\n", "
" ], "text/plain": [ " x1 x2 x3 x4 y\n", "0 0 -0.965284 A C 0\n", "1 1 0.278069 A D 0\n", "2 2 0.223738 A E 0\n", "3 3 0.158793 A F 0\n", "4 4 -0.433190 A G 0\n", "5 5 -0.368828 B H 1\n", "6 6 -0.947958 B I 1\n", "7 7 -0.873526 B J 1\n", "8 8 0.820806 B K 1\n", "9 9 -0.755244 B L 1" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df = pd.DataFrame({'x1': pd.Series(np.arange(0, 10)),\n", " 'x2': pd.Series(np.random.randn(10)), \n", " 'x3': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],\n", " 'x4': ['C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'],\n", " 'y' : [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]})\n", "\n", "scratch_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Calculate Pearson correlation for numeric variables\n", "`pandas.DataFrame.corr()` function shows that `x1` is much more correlated with `y` than `x2`." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "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", "
x1x2y
x11.000000-0.0898960.870388
x2-0.0898961.000000-0.234613
y0.870388-0.2346131.000000
\n", "
" ], "text/plain": [ " x1 x2 y\n", "x1 1.000000 -0.089896 0.870388\n", "x2 -0.089896 1.000000 -0.234613\n", "y 0.870388 -0.234613 1.000000" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df.corr()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Calculate Chi-Square statistic for categorical variables\n", "* `pandas.crosstab()` creates frequency tables\n", "* `scipy.stats.chi2_contingency()` function on the contingency tables shows that the frequency of values in `x3` is related to `y` more so than the frequency of values in `x4`." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "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", "
y01
x3
A50
B05
\n", "
" ], "text/plain": [ "y 0 1\n", "x3 \n", "A 5 0\n", "B 0 5" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.crosstab(scratch_df.x3, scratch_df.y)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "chi2 = 6.4\n", "p-value = 0.011412036386\n" ] } ], "source": [ "chi2, p, dof, ex = chi2_contingency(pd.crosstab(scratch_df.x3, scratch_df.y))\n", "print('chi2 =', chi2)\n", "print('p-value =', p)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "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", "
y01
x4
C10
D10
E10
F10
G10
H01
I01
J01
K01
L01
\n", "
" ], "text/plain": [ "y 0 1\n", "x4 \n", "C 1 0\n", "D 1 0\n", "E 1 0\n", "F 1 0\n", "G 1 0\n", "H 0 1\n", "I 0 1\n", "J 0 1\n", "K 0 1\n", "L 0 1" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.crosstab(scratch_df.x4, scratch_df.y)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "chi2 = 10.0\n", "p-value = 0.350485212323\n" ] } ], "source": [ "chi2, p, dof, ex = chi2_contingency(pd.crosstab(scratch_df.x4, scratch_df.y))\n", "print('chi2 =', chi2)\n", "print('p-value =', p)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 02_analytical_data_prep/src/py_part_2_impute.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Simple imputation - Pandas and numpy\n", "\n", "## Imports " ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd # pandas for handling mixed data sets \n", "import numpy as np # numpy for basic math and matrix operations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create sample data set" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "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", "
x1
00.0
11.0
22.0
33.0
4NaN
55.0
66.0
77.0
8NaN
98.0
109.0
\n", "
" ], "text/plain": [ " x1\n", "0 0.0\n", "1 1.0\n", "2 2.0\n", "3 3.0\n", "4 NaN\n", "5 5.0\n", "6 6.0\n", "7 7.0\n", "8 NaN\n", "9 8.0\n", "10 9.0" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df = pd.DataFrame({'x1': [0, 1, 2, 3, np.nan, 5, 6, 7, np.nan, 8, 9]}) \n", "\n", "scratch_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Impute" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "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", "
x1x1_impute
00.00.000000
11.01.000000
22.02.000000
33.03.000000
4NaN4.555556
55.05.000000
66.06.000000
77.07.000000
8NaN4.555556
98.08.000000
109.09.000000
\n", "
" ], "text/plain": [ " x1 x1_impute\n", "0 0.0 0.000000\n", "1 1.0 1.000000\n", "2 2.0 2.000000\n", "3 3.0 3.000000\n", "4 NaN 4.555556\n", "5 5.0 5.000000\n", "6 6.0 6.000000\n", "7 7.0 7.000000\n", "8 NaN 4.555556\n", "9 8.0 8.000000\n", "10 9.0 9.000000" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df['x1_impute'] = scratch_df.fillna(scratch_df.mean())\n", "scratch_df" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 02_analytical_data_prep/src/py_part_2_over_sample.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Simple oversampling - Pandas and imbalanced-learn" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Imports" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import pandas as pd # pandas for handling mixed data sets \n", "import numpy as np # numpy for basic math and matrix operations\n", "\n", "# imbalanced-learn for oversampling\n", "from imblearn.over_sampling import RandomOverSampler " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Proportional oversampling" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a sample data set" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "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", "
xy
000
111
220
330
440
550
661
770
880
990
\n", "
" ], "text/plain": [ " x y\n", "0 0 0\n", "1 1 1\n", "2 2 0\n", "3 3 0\n", "4 4 0\n", "5 5 0\n", "6 6 1\n", "7 7 0\n", "8 8 0\n", "9 9 0" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df = pd.DataFrame({'x': pd.Series(np.arange(0, 10)),\n", " 'y': [0, 1, 0, 0, 0, 0, 1, 0, 0, 0]})\n", "scratch_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If the event in a classification problem or the value in a prediction problem is imbalanced (usually toward zero) this can lead to biased models, single class predictions for classification models, and biased predictions for prediction models. The simplest approach for an imbalanced target is to *oversample* the data set." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "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", "
over_sample_xover_sample_y
000
120
230
340
450
570
680
790
811
961
1011
1161
1261
1361
1461
1561
\n", "
" ], "text/plain": [ " over_sample_x over_sample_y\n", "0 0 0\n", "1 2 0\n", "2 3 0\n", "3 4 0\n", "4 5 0\n", "5 7 0\n", "6 8 0\n", "7 9 0\n", "8 1 1\n", "9 6 1\n", "10 1 1\n", "11 6 1\n", "12 6 1\n", "13 6 1\n", "14 6 1\n", "15 6 1" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# fit random oversampling function\n", "# cannot pass single array for X, must use numpy.reshape(-1, 1)\n", "ros = RandomOverSampler()\n", "over_sample_x, over_sample_y = ros.fit_sample(scratch_df.x.get_values().reshape(-1, 1), \n", " scratch_df.y)\n", "\n", "# create Pandas dataframe from oversampling results\n", "over_sample_df = pd.DataFrame({'over_sample_x': over_sample_x.reshape(16,),\n", " 'over_sample_y': over_sample_y})\n", "over_sample_df" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 02_analytical_data_prep/src/py_part_2_standardize.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Simple standardization - Pandas and numpy\n", "\n", "## Imports " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd # pandas for handling mixed data sets \n", "import numpy as np # numpy for basic math and matrix operations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create sample data set" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "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", "
x1x2
06818
11063
28782
37917
481212
534813
620910
781817
85259
91250
104233
114115
128596
1390818
1495316
1556711
161054
1759018
181452
194259
\n", "
" ], "text/plain": [ " x1 x2\n", "0 68 18\n", "1 106 3\n", "2 878 2\n", "3 791 7\n", "4 812 12\n", "5 348 13\n", "6 209 10\n", "7 818 17\n", "8 525 9\n", "9 125 0\n", "10 423 3\n", "11 411 5\n", "12 859 6\n", "13 908 18\n", "14 953 16\n", "15 567 11\n", "16 105 4\n", "17 590 18\n", "18 145 2\n", "19 425 9" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create a data frame containing variables of disparate scale\n", "scratch_df = pd.DataFrame({'x1': pd.Series(np.random.choice(1000, 20)),\n", " 'x2': pd.Series(np.random.choice(20, 20))}) \n", "\n", "scratch_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Standardize" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "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", "
x1x2x1_stdx2_std
06818-1.4020921.467988
11063-1.279695-1.020127
287821.206901-1.186002
379170.926675-0.356630
4812120.9943160.472742
534813-0.5002180.638616
620910-0.9479340.140993
7818171.0136421.302114
852590.069895-0.024881
91250-1.218496-1.517750
104233-0.258645-1.020127
114115-0.297296-0.688379
1285961.145702-0.522504
13908181.3035301.467988
14953161.4484741.136239
15567110.2051760.306868
161054-1.282916-0.854253
17590180.2792591.467988
181452-1.154076-1.186002
194259-0.252203-0.024881
\n", "
" ], "text/plain": [ " x1 x2 x1_std x2_std\n", "0 68 18 -1.402092 1.467988\n", "1 106 3 -1.279695 -1.020127\n", "2 878 2 1.206901 -1.186002\n", "3 791 7 0.926675 -0.356630\n", "4 812 12 0.994316 0.472742\n", "5 348 13 -0.500218 0.638616\n", "6 209 10 -0.947934 0.140993\n", "7 818 17 1.013642 1.302114\n", "8 525 9 0.069895 -0.024881\n", "9 125 0 -1.218496 -1.517750\n", "10 423 3 -0.258645 -1.020127\n", "11 411 5 -0.297296 -0.688379\n", "12 859 6 1.145702 -0.522504\n", "13 908 18 1.303530 1.467988\n", "14 953 16 1.448474 1.136239\n", "15 567 11 0.205176 0.306868\n", "16 105 4 -1.282916 -0.854253\n", "17 590 18 0.279259 1.467988\n", "18 145 2 -1.154076 -1.186002\n", "19 425 9 -0.252203 -0.024881" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# create a deep copy \n", "# so this cell can be run many times w/o error\n", "scratch_df1 = scratch_df.copy()\n", "\n", "# loop through columns\n", "# create new column\n", "# apply z-score formula to new column\n", "for col_name in scratch_df.columns:\n", " new_col_name = col_name + '_std'\n", " scratch_df1[new_col_name] = (scratch_df[col_name] - scratch_df[col_name].mean())/scratch_df[col_name].std()\n", "\n", "# new variables are on the same scale\n", "scratch_df1" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 02_analytical_data_prep/src/py_part_2_target_encode_categorical.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Simple target encoding: rate-by-level - Pandas and numpy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Imports" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd # pandas for handling mixed data sets \n", "from numpy.random import uniform # numpy for basic math and matrix operations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a sample data set" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "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", "
x1x2y
0AC0
1AD0
2AD1
3AD0
4AC1
5BC1
6BE1
7BC1
8BE0
9BE1
\n", "
" ], "text/plain": [ " x1 x2 y\n", "0 A C 0\n", "1 A D 0\n", "2 A D 1\n", "3 A D 0\n", "4 A C 1\n", "5 B C 1\n", "6 B E 1\n", "7 B C 1\n", "8 B E 0\n", "9 B E 1" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df = pd.DataFrame({'x1': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],\n", " 'x2': ['C', 'D', 'D', 'D', 'C', 'C', 'E', 'C', 'E', 'E'],\n", " 'y': [0, 0, 1, 0, 1, 1, 1, 1, 0, 1]})\n", "scratch_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Encode categorical variables using a rate-by-level approach " ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "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", "
x1x2yx1_encodex2_encode
0AC00.40.750000
1AD00.40.333333
2AD10.40.333333
3AD00.40.333333
4AC10.40.750000
5BC10.80.750000
6BE10.80.666667
7BC10.80.750000
8BE00.80.666667
9BE10.80.666667
\n", "
" ], "text/plain": [ " x1 x2 y x1_encode x2_encode\n", "0 A C 0 0.4 0.750000\n", "1 A D 0 0.4 0.333333\n", "2 A D 1 0.4 0.333333\n", "3 A D 0 0.4 0.333333\n", "4 A C 1 0.4 0.750000\n", "5 B C 1 0.8 0.750000\n", "6 B E 1 0.8 0.666667\n", "7 B C 1 0.8 0.750000\n", "8 B E 0 0.8 0.666667\n", "9 B E 1 0.8 0.666667" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# make a new deep copy of scratch_df \n", "# so you can run this cell many times w/o errors\n", "scratch_df1 = scratch_df.copy()\n", "\n", "# loop through columns to create new encoded columns \n", "for col_name in scratch_df.columns[:-1]:\n", " new_col_name = col_name + '_encode' \n", " # create a dictionary of original categorical value:event rate for that value\n", " row_val_dict = {}\n", " for level in scratch_df[col_name].unique():\n", " row_val_dict[level] = scratch_df[scratch_df[col_name] == level]['y'].mean()\n", " # apply the transform from the dictionary on all rows in the column\n", " scratch_df1[new_col_name] = scratch_df[col_name].apply(lambda i: row_val_dict[i]) \n", " \n", "scratch_df1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Perturb to prevent overfitting" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "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", "
x1x2yx1_encodex2_encode
0AC00.3966600.752811
1AD00.3742760.359561
2AD10.3851200.362976
3AD00.3665030.353950
4AC10.4084560.704154
5BC10.8444660.737979
6BE10.7864560.707412
7BC10.7601630.709422
8BE00.7522780.709365
9BE10.7904680.714065
\n", "
" ], "text/plain": [ " x1 x2 y x1_encode x2_encode\n", "0 A C 0 0.396660 0.752811\n", "1 A D 0 0.374276 0.359561\n", "2 A D 1 0.385120 0.362976\n", "3 A D 0 0.366503 0.353950\n", "4 A C 1 0.408456 0.704154\n", "5 B C 1 0.844466 0.737979\n", "6 B E 1 0.786456 0.707412\n", "7 B C 1 0.760163 0.709422\n", "8 B E 0 0.752278 0.709365\n", "9 B E 1 0.790468 0.714065" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# make a new deep copy of scratch_df \n", "# so you can run this cell many times w/o errors\n", "scratch_df2 = scratch_df.copy()\n", "\n", "# loop through columns to create new encoded columns\n", "for col_name in scratch_df.columns[:-1]:\n", " new_col_name = col_name + '_encode' \n", " row_val_dict = {}\n", " # create a dictionary of original categorical value:event rate for that value\n", " for level in scratch_df[col_name].unique():\n", " # apply the transform from the dictionary on all rows in the column\n", " # add in a little random noise, can prevent overfitting for rare levels\n", " row_val_dict[level] = (scratch_df[scratch_df[col_name] == level]['y'].mean())\n", " scratch_df2[new_col_name] = scratch_df[col_name].apply(lambda i: row_val_dict[i] + uniform(low=-0.05, high=0.05)) \n", " \n", "scratch_df2" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 02_analytical_data_prep/src/py_part_2_target_encode_numeric.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Simple target encoding: average-by-level - Pandas and numpy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Imports" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd # pandas for handling mixed data sets \n", "import numpy as np # numpy for basic math and matrix operations\n", "from numpy.random import uniform # numpy for basic math and matrix operations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a sample data set" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "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", "
x1x2y
0AC158
1AD707
2AD674
3AD951
4AC248
5BC942
6BE931
7BC523
8BE405
9BE569
\n", "
" ], "text/plain": [ " x1 x2 y\n", "0 A C 158\n", "1 A D 707\n", "2 A D 674\n", "3 A D 951\n", "4 A C 248\n", "5 B C 942\n", "6 B E 931\n", "7 B C 523\n", "8 B E 405\n", "9 B E 569" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df = pd.DataFrame({'x1': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],\n", " 'x2': ['C', 'D', 'D', 'D', 'C', 'C', 'E', 'C', 'E', 'E'],\n", " 'y': pd.Series(np.random.choice(1000, 10))})\n", "scratch_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Encode categorical variables using a rate-by-level approach " ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "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", "
x1x2yx1_encodex2_encode
0AC158547.6467.750000
1AD707547.6777.333333
2AD674547.6777.333333
3AD951547.6777.333333
4AC248547.6467.750000
5BC942674.0467.750000
6BE931674.0635.000000
7BC523674.0467.750000
8BE405674.0635.000000
9BE569674.0635.000000
\n", "
" ], "text/plain": [ " x1 x2 y x1_encode x2_encode\n", "0 A C 158 547.6 467.750000\n", "1 A D 707 547.6 777.333333\n", "2 A D 674 547.6 777.333333\n", "3 A D 951 547.6 777.333333\n", "4 A C 248 547.6 467.750000\n", "5 B C 942 674.0 467.750000\n", "6 B E 931 674.0 635.000000\n", "7 B C 523 674.0 467.750000\n", "8 B E 405 674.0 635.000000\n", "9 B E 569 674.0 635.000000" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# make a new deep copy of scratch_df \n", "# so you can run this cell many times w/o errors\n", "scratch_df1 = scratch_df.copy()\n", "\n", "# loop through columns to create new encoded columns \n", "for col_name in scratch_df.columns[:-1]:\n", " new_col_name = col_name + '_encode' \n", " # create a dictionary of original categorical value:average y for that value\n", " row_val_dict = {}\n", " for level in scratch_df[col_name].unique():\n", " row_val_dict[level] = scratch_df[scratch_df[col_name] == level]['y'].mean()\n", " # apply the transform from the dictionary on all rows in the column\n", " scratch_df1[new_col_name] = scratch_df[col_name].apply(lambda i: row_val_dict[i]) \n", " \n", "scratch_df1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Perturb to prevent overfitting" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "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", "
x1x2yx1_encodex2_encode
0AC158549.272525472.079463
1AD707550.507909774.249363
2AD674552.234351780.370135
3AD951545.406594774.984095
4AC248546.832261465.229813
5BC942678.281481467.124270
6BE931673.194447638.293288
7BC523674.193392463.425045
8BE405677.787234639.248453
9BE569674.505306632.268885
\n", "
" ], "text/plain": [ " x1 x2 y x1_encode x2_encode\n", "0 A C 158 549.272525 472.079463\n", "1 A D 707 550.507909 774.249363\n", "2 A D 674 552.234351 780.370135\n", "3 A D 951 545.406594 774.984095\n", "4 A C 248 546.832261 465.229813\n", "5 B C 942 678.281481 467.124270\n", "6 B E 931 673.194447 638.293288\n", "7 B C 523 674.193392 463.425045\n", "8 B E 405 677.787234 639.248453\n", "9 B E 569 674.505306 632.268885" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# make a new deep copy of scratch_df \n", "# so you can run this cell many times w/o errors\n", "scratch_df2 = scratch_df.copy()\n", "\n", "# loop through columns to create new encoded columns\n", "for col_name in scratch_df.columns[:-1]:\n", " new_col_name = col_name + '_encode' \n", " row_val_dict = {}\n", " # create a dictionary of original categorical value:average y for that value\n", " for level in scratch_df[col_name].unique():\n", " # apply the transform from the dictionary on all rows in the column\n", " # add in a little random noise, can prevent overfitting for rare levels\n", " row_val_dict[level] = (scratch_df[scratch_df[col_name] == level]['y'].mean())\n", " scratch_df2[new_col_name] = scratch_df[col_name].apply(lambda i: row_val_dict[i] + uniform(low=-5, high=5)) \n", " \n", "scratch_df2" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 02_analytical_data_prep/src/py_part_2_winsorize.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Simple winsorizing - Pandas, numpy, and scipy\n", "\n", "## Imports " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd # pandas for handling mixed data sets \n", "import numpy as np # numpy for basic math and matrix operations\n", "from scipy.stats.mstats import winsorize # scipy for stats and more advanced calculations " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create sample data set" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "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", "
x1
0729
1555
2760
3493
4995
5530
6281
7948
866
9989
10563
11192
12156
13531
142
15996
16730
17914
18265
1920
\n", "
" ], "text/plain": [ " x1\n", "0 729\n", "1 555\n", "2 760\n", "3 493\n", "4 995\n", "5 530\n", "6 281\n", "7 948\n", "8 66\n", "9 989\n", "10 563\n", "11 192\n", "12 156\n", "13 531\n", "14 2\n", "15 996\n", "16 730\n", "17 914\n", "18 265\n", "19 20" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df = pd.DataFrame({'x1': pd.Series(np.random.choice(1000, 20))}) \n", "\n", "scratch_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Winsorize" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "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", "
x1x1_winsor
0729729
1555555
2760760
3493493
4995989
5530530
6281281
7948948
86666
9989989
10563563
11192192
12156156
13531531
14266
15996989
16730730
17914914
18265265
192066
\n", "
" ], "text/plain": [ " x1 x1_winsor\n", "0 729 729\n", "1 555 555\n", "2 760 760\n", "3 493 493\n", "4 995 989\n", "5 530 530\n", "6 281 281\n", "7 948 948\n", "8 66 66\n", "9 989 989\n", "10 563 563\n", "11 192 192\n", "12 156 156\n", "13 531 531\n", "14 2 66\n", "15 996 989\n", "16 730 730\n", "17 914 914\n", "18 265 265\n", "19 20 66" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scratch_df['x1_winsor'] = winsorize(scratch_df['x1'], limits=[0.1, 0.1])\n", "scratch_df" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 02_analytical_data_prep/xml/02_analytical_data_prep.xml ================================================ <_ROOT_ EMVERSION="14.1" ORIENTATION="HORIZONTAL"> ================================================ FILE: 03_regression/.gitignore ================================================ *.R *.sas *.docx ================================================ FILE: 03_regression/03_regression.md ================================================ ## Section 03: Regression Regression is important because it is stable, interpretable and widely understood and accepted, and easy to deploy. #### Class Materials * [Instructor notes](notes/instructor_notes.pdf) ##### Linear Regression * [Overview of interpreting linear regression](notes/interpreting_regression.pdf) * [The Bias/Variance Tradeoff](notes/bias_variance.pdf) * [Advanced notes](notes/msba_2017_ml_week_1_FINAL.pdf) * [EM linear regression example](xml/03_linear_regression.xml) * [H2o linear regression example](src/py_part_3_penalized_linear_regression.ipynb) * [**Basic** gradient descent example](src/py_part_3_linear_regression_gradient_descent.ipynb) * [Kaggle Advanced Regression Contest starter kit](src/py_part_3_kaggle_starter.ipynb) *** ##### Logistic Regression and GLM * Overview of logistic regression - [Blackboard electronic reserves](https://blackboard.gwu.edu) * [Overview of interpreting logistic regression](notes/interpreting_logisitic_regression.pdf) * [Confusion Matrix](https://en.wikipedia.org/wiki/Confusion_matrix) * [Overview of Penalized GLM](notes/penalized_GLM.pdf) * [EM logistic regression example](xml/03_logistic_regression.xml) * [H2o logistic regression example](src/py_part_3_penalized_logistic_regression.ipynb) * Overview of assessing binary classifiers * [Interpreting assessment measures](https://github.com/jphall663/GWU_data_mining/blob/master/03_regression/notes/interpretting_assessment_measures.pdf) * [Assessment measure workbook](xlsx/assessment_workbook.xlsx) * [Assignment](assignment/assignment_2.pdf) * [Assignment Key](assignment/key) #### Sample Quizzes * [Sample quiz 3.1 - bias/variance tradeoff](quiz/sample/quiz_3.1.pdf) * [Sample quiz 3.2 - linear regression](quiz/sample/quiz_3.2.pdf) * [Sample quiz 3.3 - logistic regression and assessment](quiz/sample/quiz_3.3.pdf) #### Quiz Keys * [Linear regression](quiz/key/quiz_3.1_key.pdf) * [Logistic regression](quiz/key/quiz_3.2_key.pdf) #### Supplementary References * [*Introduction to Statistical Learning*](http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Fourth%20Printing.pdf)
Sections 2.2, 3.1 - 3.3, and 4.3 * [*Elements of Statistical Learning*](https://web.stanford.edu/~hastie/ElemStatLearn/printings/ESLII_print12.pdf)
Chapters 3, 4 and 7 * [*Generalized Linear Modeling with H2o*](http://docs.h2o.ai/h2o/latest-stable/h2o-docs/booklets/GLMBooklet.pdf) * *Logistic regression in Enterprise Miner* - [Blackboard electronic reserves](https://blackboard.gwu.edu) * [UCLA IDRE: *How do I interpret odds ratios in logistic regression?*](https://stats.idre.ucla.edu/other/mult-pkg/faq/general/faq-how-do-i-interpret-odds-ratios-in-logistic-regression/) * [Elastic Net Regression](https://web.stanford.edu/~hastie/Papers/B67.2%20(2005)%20301-320%20Zou%20&%20Hastie.pdf)
By Hastie and Zhou, 2005 ================================================ FILE: 03_regression/assignment/.gitignore ================================================ key ================================================ FILE: 03_regression/data/.gitignore ================================================ submission*.csv ================================================ FILE: 03_regression/data/loan_clean.csv ================================================ [File too large to display: 23.2 MB] ================================================ FILE: 03_regression/data/test.csv ================================================ version https://git-lfs.github.com/spec/v1 oid sha256:8fdd3d829d4d986b58f845c9553b225e67dd8383624d90fb6ca1d4bed5798c1e size 451405 ================================================ FILE: 03_regression/data/train.csv ================================================ version https://git-lfs.github.com/spec/v1 oid sha256:1e18addf81e5e4d347cc17ee6075bbe4a42b7fa26b9e5b063e8f692a5f929d41 size 460676 ================================================ FILE: 03_regression/quiz/.gitignore ================================================ key ================================================ FILE: 03_regression/src/.gitignore ================================================ py_part_3_kaggle_starter-Copy1.ipynb .ipynb_checkpoints/py_part_3_kaggle_starter-Copy1-checkpoint.ipynb ================================================ FILE: 03_regression/src/py_part_3_kaggle_starter.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "***\n", "# Linear Regression Starter Kit for Kaggle House Prices " ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Imports and inits" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: java version \"1.8.0_112\"; Java(TM) SE Runtime Environment (build 1.8.0_112-b16); Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)\n", " Starting server from /Users/phall/anaconda/lib/python3.5/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpive8wwq9\n", " JVM stdout: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpive8wwq9/h2o_phall_started_from_python.out\n", " JVM stderr: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpive8wwq9/h2o_phall_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321... successful.\n" ] }, { "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", "
H2O cluster uptime:01 secs
H2O cluster timezone:America/New_York
H2O data parsing timezone:UTC
H2O cluster version:3.18.0.11
H2O cluster version age:3 hours and 37 minutes
H2O cluster name:H2O_from_python_phall_08mo8c
H2O cluster total nodes:1
H2O cluster free memory:10.67 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
H2O internal security:False
H2O API Extensions:XGBoost, Algos, AutoML, Core V3, Core V4
Python version:3.5.2 final
" ], "text/plain": [ "-------------------------- ----------------------------------------\n", "H2O cluster uptime: 01 secs\n", "H2O cluster timezone: America/New_York\n", "H2O data parsing timezone: UTC\n", "H2O cluster version: 3.18.0.11\n", "H2O cluster version age: 3 hours and 37 minutes\n", "H2O cluster name: H2O_from_python_phall_08mo8c\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 10.67 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "H2O API Extensions: XGBoost, Algos, AutoML, Core V3, Core V4\n", "Python version: 3.5.2 final\n", "-------------------------- ----------------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import h2o\n", "from h2o.estimators.glm import H2OGeneralizedLinearEstimator\n", "from h2o.estimators.glrm import H2OGeneralizedLowRankEstimator\n", "from h2o.grid.grid_search import H2OGridSearch \n", "h2o.init(max_mem_size='12G') # give h2o as much memory as possible\n", "h2o.no_progress() # turn off h2o progress bars\n", "\n", "import numpy as np\n", "import pandas as pd\n", "\n", "import matplotlib as plt\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Import data" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1460, 81)\n", "(1459, 81)\n" ] } ], "source": [ "train = h2o.import_file('../../03_regression/data/train.csv')\n", "test = h2o.import_file('../../03_regression/data/test.csv')\n", "\n", "# bug fix - from Keston\n", "dummy_col = np.random.rand(test.shape[0])\n", "test = test.cbind(h2o.H2OFrame(dummy_col))\n", "cols = test.columns\n", "cols[-1] = 'SalePrice'\n", "test.columns = cols\n", "print(train.shape)\n", "print(test.shape)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "#### Determine data types" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "def get_type_lists(frame=train, rejects=['Id', 'SalePrice']):\n", "\n", " \"\"\"Creates lists of numeric and categorical variables.\n", " \n", " :param frame: The frame from which to determine types.\n", " :param rejects: Variable names not to be included in returned lists.\n", " :return: Tuple of lists for numeric and categorical variables in the frame.\n", " \n", " \"\"\"\n", " \n", " nums, cats = [], []\n", " for key, val in frame.types.items():\n", " if key not in rejects:\n", " if val == 'enum':\n", " cats.append(key)\n", " else: \n", " nums.append(key)\n", " \n", " print('Numeric =', nums) \n", " print()\n", " print('Categorical =', cats)\n", " \n", " return nums, cats" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Numeric = ['OverallQual', 'KitchenAbvGr', 'YrSold', 'LotArea', 'PoolArea', 'BsmtHalfBath', 'TotRmsAbvGrd', 'OverallCond', 'YearBuilt', 'ScreenPorch', 'MoSold', 'OpenPorchSF', 'BsmtFinSF2', '1stFlrSF', 'TotalBsmtSF', 'YearRemodAdd', 'GrLivArea', 'EnclosedPorch', 'GarageYrBlt', 'BsmtFinSF1', 'BsmtUnfSF', 'GarageArea', 'LotFrontage', 'MasVnrArea', 'BedroomAbvGr', '3SsnPorch', '2ndFlrSF', 'LowQualFinSF', 'MSSubClass', 'GarageCars', 'MiscVal', 'BsmtFullBath', 'FullBath', 'HalfBath', 'WoodDeckSF', 'Fireplaces']\n", "\n", "Categorical = ['ExterCond', 'RoofStyle', 'BsmtCond', 'LotShape', 'Foundation', 'Heating', 'KitchenQual', 'BsmtFinType2', 'HouseStyle', 'Fence', 'MSZoning', 'Street', 'LandContour', 'HeatingQC', 'GarageType', 'Exterior2nd', 'FireplaceQu', 'CentralAir', 'SaleCondition', 'RoofMatl', 'GarageQual', 'LandSlope', 'BsmtFinType1', 'SaleType', 'BsmtExposure', 'Exterior1st', 'PavedDrive', 'Functional', 'MasVnrType', 'GarageCond', 'MiscFeature', 'Alley', 'PoolQC', 'BsmtQual', 'Neighborhood', 'Condition2', 'Utilities', 'BldgType', 'Condition1', 'ExterQual', 'GarageFinish', 'Electrical', 'LotConfig']\n" ] } ], "source": [ "original_nums, cats = get_type_lists()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Split into to train and validation (before doing data prep!!!)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1001, 81)\n", "(459, 81)\n" ] } ], "source": [ "train, valid = train.split_frame([0.7], seed=12345)\n", "print(train.shape)\n", "print(valid.shape)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Impute numeric missing" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "# median usually better than mean\n", "# (_ signifies temporary throw-away variable, used to suppress output)\n", "_ = train[['MasVnrArea', 'GarageYrBlt', 'LotFrontage']].impute(method='median')\n", "_ = valid[['MasVnrArea', 'GarageYrBlt', 'LotFrontage']].impute(method='median')\n", "_ = test[['BsmtHalfBath', 'BsmtFinSF1', 'BsmtFullBath', 'BsmtFinSF2', 'BsmtUnfSF', 'MasVnrArea', \n", " 'GarageYrBlt', 'LotFrontage', 'GarageCars', 'TotalBsmtSF', 'GarageArea']].impute(method='median')" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Encode categorical vars using shrunken averages\n", "http://helios.mm.di.uoa.gr/~rouvas/ssi/sigkdd/sigkdd.vol3.1/barreca.ps" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "def target_encoder(training_frame, test_frame, x, y, lambda_=0.15, threshold=150, test=False):\n", "\n", " \"\"\" Applies simple target encoding to categorical variables.\n", "\n", " :param training_frame: Training frame which to create target means and to be encoded.\n", " :param test_frame: Test frame to be encoded using information from training frame.\n", " :param x: Name of input variable to be encoded.\n", " :param y: Name of target variable to use for encoding.\n", " :param lambda_: Balance between level mean and overall mean for small groups.\n", " :param threshold: Number below which a level is considered small enough to be shrunken.\n", " :param test: Whether or not to print the row_val_dict for testing purposes.\n", " :return: Tuple of encoded variable from train and test set as H2OFrames.\n", "\n", " \"\"\"\n", "\n", " # convert to pandas\n", " trdf = training_frame.as_data_frame().loc[:, [x,y]] # df\n", " tss = test_frame.as_data_frame().loc[:, x] # series\n", "\n", "\n", " # create dictionary of level:encode val\n", "\n", " encode_name = x + '_Tencode'\n", " overall_mean = trdf[y].mean()\n", " row_val_dict = {}\n", "\n", " for level in trdf[x].unique():\n", " level_df = trdf[trdf[x] == level][y]\n", " level_n = level_df.shape[0]\n", " level_mean = level_df.mean()\n", " if level_n >= threshold:\n", " row_val_dict[level] = level_mean\n", " else:\n", " row_val_dict[level] = ((1 - lambda_) * level_mean) +\\\n", " (lambda_ * overall_mean)\n", "\n", " row_val_dict[np.nan] = overall_mean # handle missing values\n", "\n", " if test:\n", " print(row_val_dict)\n", "\n", " # apply the transform to training data\n", " trdf[encode_name] = trdf[x].apply(lambda i: row_val_dict[i])\n", "\n", " # apply the transform to test data\n", " tsdf = pd.DataFrame(columns=[x, encode_name])\n", " tsdf[x] = tss\n", " tsdf.loc[:, encode_name] = overall_mean # handle previously unseen values\n", " # handle values that are seen in tsdf but not row_val_dict\n", " for i, col_i in enumerate(tsdf[x]):\n", " try:\n", " row_val_dict[col_i]\n", " except:\n", " # a value that appeared in tsdf isn't in the row_val_dict so just\n", " # make it the overall_mean\n", " row_val_dict[col_i] = overall_mean\n", " tsdf[encode_name] = tsdf[x].apply(lambda i: row_val_dict[i])\n", "\n", "\n", " # convert back to H2O\n", "\n", " trdf = h2o.H2OFrame(trdf[encode_name].as_matrix())\n", " trdf.columns = [encode_name]\n", "\n", " tsdf = h2o.H2OFrame(tsdf[encode_name].as_matrix())\n", " tsdf.columns = [encode_name]\n", "\n", " return (trdf, tsdf)\n" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "#### Execute encoding" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Encoding: ExterCond (1/43) ...\n", "Encoding: RoofStyle (2/43) ...\n", "Encoding: BsmtCond (3/43) ...\n", "Encoding: LotShape (4/43) ...\n", "Encoding: Foundation (5/43) ...\n", "Encoding: Heating (6/43) ...\n", "Encoding: KitchenQual (7/43) ...\n", "Encoding: BsmtFinType2 (8/43) ...\n", "Encoding: HouseStyle (9/43) ...\n", "Encoding: Fence (10/43) ...\n", "Encoding: MSZoning (11/43) ...\n", "Encoding: Street (12/43) ...\n", "Encoding: LandContour (13/43) ...\n", "Encoding: HeatingQC (14/43) ...\n", "Encoding: GarageType (15/43) ...\n", "Encoding: Exterior2nd (16/43) ...\n", "Encoding: FireplaceQu (17/43) ...\n", "Encoding: CentralAir (18/43) ...\n", "Encoding: SaleCondition (19/43) ...\n", "Encoding: RoofMatl (20/43) ...\n", "Encoding: GarageQual (21/43) ...\n", "Encoding: LandSlope (22/43) ...\n", "Encoding: BsmtFinType1 (23/43) ...\n", "Encoding: SaleType (24/43) ...\n", "Encoding: BsmtExposure (25/43) ...\n", "Encoding: Exterior1st (26/43) ...\n", "Encoding: PavedDrive (27/43) ...\n", "Encoding: Functional (28/43) ...\n", "Encoding: MasVnrType (29/43) ...\n", "Encoding: GarageCond (30/43) ...\n", "Encoding: MiscFeature (31/43) ...\n", "Encoding: Alley (32/43) ...\n", "Encoding: PoolQC (33/43) ...\n", "Encoding: BsmtQual (34/43) ...\n", "Encoding: Neighborhood (35/43) ...\n", "Encoding: Condition2 (36/43) ...\n", "Encoding: Utilities (37/43) ...\n", "Encoding: BldgType (38/43) ...\n", "Encoding: Condition1 (39/43) ...\n", "Encoding: ExterQual (40/43) ...\n", "Encoding: GarageFinish (41/43) ...\n", "Encoding: Electrical (42/43) ...\n", "Encoding: LotConfig (43/43) ...\n", "Done.\n" ] } ], "source": [ "total = len(cats)\n", "for i, var in enumerate(cats):\n", " \n", " tr_enc, _ = target_encoder(train, test, var, 'SalePrice')\n", " v_enc, ts_enc = target_encoder(valid, test, var, 'SalePrice')\n", " \n", " print('Encoding: ' + var + ' (' + str(i+1) + '/' + str(total) + ') ...')\n", "\n", " train = train.cbind(tr_enc)\n", " valid = valid.cbind(v_enc)\n", " test = test.cbind(ts_enc) \n", " \n", "print('Done.')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### One-hot encode categorical variables" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1001, 216)\n", "(459, 216)\n", "True\n", "(1001, 211)\n", "(459, 211)\n", "True\n", "(1001, 211)\n", "(459, 211)\n", "(1459, 211)\n", "True\n" ] } ], "source": [ "# one-hot encode training frame\n", "train_cats_df = train[cats].as_data_frame()\n", "train_cats_df_dummies = pd.get_dummies(train_cats_df)\n", "\n", "# one-hot encode validation frame\n", "valid_cats_df = valid[cats].as_data_frame()\n", "valid_cats_df_dummies = pd.get_dummies(valid_cats_df)\n", "\n", "# keep only the same new columns in the encoded new frames\n", "# (they different b/c of different levels in variables)\n", "train_diff_cols = list(set(train_cats_df_dummies.columns) - set(valid_cats_df_dummies.columns))\n", "valid_diff_cols = list(set(valid_cats_df_dummies.columns) - set(train_cats_df_dummies.columns))\n", "train_cats_df_dummies.drop(train_diff_cols, axis=1, inplace=True)\n", "valid_cats_df_dummies.drop(valid_diff_cols, axis=1, inplace=True)\n", "\n", "# check that columns are actually the same in both frames\n", "print(train_cats_df_dummies.shape)\n", "print(valid_cats_df_dummies.shape)\n", "print(all(train_cats_df_dummies.columns == valid_cats_df_dummies.columns))\n", "\n", "# one-hot encode test frame\n", "test_cats_df = test[cats].as_data_frame()\n", "test_cats_df_dummies = pd.get_dummies(test_cats_df)\n", "\n", "# keep only the same new columns in train and valid encoded frames\n", "# (they different b/c of different levels in variables)\n", "# remove columns in train and valid encoded frames not in encoded test frame\n", "# remember encoded train and valid now have same columns\n", "# so only need to check for train OR valid, not both\n", "train_diff_cols = list(set(train_cats_df_dummies.columns) - set(test_cats_df_dummies.columns))\n", "train_cats_df_dummies.drop(train_diff_cols, axis=1, inplace=True)\n", "valid_cats_df_dummies.drop(train_diff_cols, axis=1, inplace=True)\n", "\n", "# check that columns are actually the same in encoded train and valid frames\n", "print(train_cats_df_dummies.shape)\n", "print(valid_cats_df_dummies.shape)\n", "print(all(train_cats_df_dummies.columns == valid_cats_df_dummies.columns))\n", "\n", "# now remove columns in encoded test not in encoded train and valid\n", "# (they different b/c of different levels in variables)\n", "train_diff_cols = list(set(test_cats_df_dummies.columns) - set(train_cats_df_dummies.columns))\n", "test_cats_df_dummies.drop(train_diff_cols, axis=1, inplace=True)\n", "\n", "# check that columns are actually the same in all encoded frames\n", "print(train_cats_df_dummies.shape)\n", "print(valid_cats_df_dummies.shape)\n", "print(test_cats_df_dummies.shape)\n", "print(all(train_cats_df_dummies.columns == valid_cats_df_dummies.columns) and all(valid_cats_df_dummies.columns == test_cats_df_dummies.columns))\n", "\n", "# convert to h2o\n", "train_one_hot = h2o.H2OFrame(train_cats_df_dummies.as_matrix())\n", "train_one_hot.columns = list(train_cats_df_dummies.columns)\n", "train = train.cbind(train_one_hot)\n", "\n", "valid_one_hot = h2o.H2OFrame(valid_cats_df_dummies.as_matrix())\n", "valid_one_hot.columns = list(valid_cats_df_dummies.columns)\n", "valid = valid.cbind(valid_one_hot)\n", "\n", "test_one_hot = h2o.H2OFrame(test_cats_df_dummies.as_matrix())\n", "test_one_hot.columns = list(test_cats_df_dummies.columns)\n", "test = test.cbind(test_one_hot) " ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": true, "editable": true }, "source": [ "#### Redefine numerics and explore" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Numeric = ['OverallQual', 'KitchenAbvGr', 'SaleCondition_Tencode', 'FireplaceQu_Tencode', 'Condition1_Artery', 'YrSold', 'Utilities_Tencode', 'BsmtExposure_Tencode', 'PavedDrive_N', 'LotShape_Tencode', 'GarageType_Detchd', 'Exterior1st_BrkFace', 'GarageFinish_Unf', 'Exterior2nd_AsbShng', 'Exterior2nd_Stucco', 'BldgType_Duplex', 'Neighborhood_BrDale', 'ExterQual_TA', 'LotShape_IR2', 'Exterior2nd_Stone', 'RoofMatl_Tencode', 'Street_Tencode', 'LandContour_Low', 'Neighborhood_NridgHt', 'TotalBsmtSF', 'RoofStyle_Hip', 'BsmtFinType1_Tencode', 'HouseStyle_1Story', 'GarageCond_Po', 'BldgType_2fmCon', 'YearRemodAdd', 'GrLivArea', 'EnclosedPorch', 'Foundation_PConc', 'Neighborhood_NPkVill', 'RoofStyle_Flat', 'HeatingQC_TA', 'Neighborhood_Blmngtn', 'FireplaceQu_Gd', 'BsmtFinType2_Tencode', 'LotShape_Reg', 'Exterior1st_HdBoard', 'HeatingQC_Fa', 'Alley_Pave', 'BsmtFinType1_BLQ', 'LotFrontage', 'Heating_GasA', 'GarageCond_TA', 'Neighborhood_Somerst', 'HouseStyle_SFoyer', 'Neighborhood_ClearCr', 'Functional_Tencode', 'Alley_Tencode', 'Functional_Typ', 'GarageQual_Gd', 'GarageCars', 'BldgType_Twnhs', 'LotShape_IR1', 'HeatingQC_Gd', 'KitchenQual_Gd', 'ExterCond_TA', 'Electrical_Tencode', 'Foundation_Stone', 'BsmtFinType2_GLQ', 'Electrical_FuseP', 'Heating_Grav', 'LotConfig_Corner', 'Neighborhood_CollgCr', 'MiscFeature_Othr', 'Electrical_FuseA', 'FullBath', 'GarageFinish_Fin', 'Fireplaces', 'Neighborhood_Mitchel', 'Exterior1st_AsbShng', 'LandSlope_Mod', 'SaleType_ConLw', 'FireplaceQu_Po', 'BsmtQual_Tencode', 'LotArea', 'Exterior2nd_BrkFace', 'BsmtFinType2_ALQ', 'RoofMatl_CompShg', 'BsmtHalfBath', 'HouseStyle_Tencode', 'Neighborhood_NoRidge', 'GarageCond_Tencode', 'Foundation_BrkTil', 'Exterior2nd_Tencode', 'Exterior1st_Stucco', 'MiscVal', 'BsmtFinSF2', 'LotConfig_FR2', 'Fence_Tencode', 'KitchenQual_Ex', 'Neighborhood_Tencode', 'YearBuilt', 'LandSlope_Sev', 'Heating_Tencode', 'LandContour_HLS', 'Neighborhood_OldTown', 'SaleType_Tencode', 'Exterior2nd_VinylSd', 'SaleType_ConLD', 'GarageType_Tencode', 'SaleType_ConLI', 'Heating_GasW', 'LandContour_Tencode', 'Neighborhood_Veenker', 'Foundation_Tencode', 'LandSlope_Tencode', 'Neighborhood_Edwards', 'BsmtQual_Ex', 'BedroomAbvGr', 'Electrical_SBrkr', 'BsmtFinType2_BLQ', 'PavedDrive_Y', 'PoolQC_Tencode', 'SaleCondition_Family', 'BsmtFinType1_ALQ', 'BsmtQual_Fa', 'SaleType_WD', 'LandContour_Bnk', '3SsnPorch', 'LandContour_Lvl', 'Neighborhood_SWISU', 'HeatingQC_Tencode', 'PavedDrive_Tencode', 'HalfBath', 'Fence_GdPrv', 'HeatingQC_Ex', 'RoofMatl_Tar&Grv', 'LotConfig_CulDSac', 'HouseStyle_1.5Unf', 'BsmtFullBath', 'GarageQual_Fa', 'ExterCond_Gd', 'BsmtQual_TA', 'Functional_Maj2', 'SaleCondition_Alloca', 'Condition1_PosA', 'GarageCond_Gd', 'GarageQual_TA', 'FireplaceQu_Fa', 'KitchenQual_Tencode', 'Condition2_Tencode', 'BsmtFinType1_Rec', 'ExterCond_Tencode', 'GarageFinish_Tencode', 'RoofStyle_Gambrel', 'Exterior1st_CemntBd', 'MSZoning_C (all)', 'Condition1_PosN', 'Exterior2nd_MetalSd', 'RoofStyle_Gable', 'GarageType_BuiltIn', 'Electrical_FuseF', 'Condition1_RRAe', 'TotRmsAbvGrd', 'LowQualFinSF', 'SaleType_New', 'RoofStyle_Shed', 'Functional_Maj1', 'MoSold', 'Neighborhood_NWAmes', 'MasVnrType_BrkCmn', 'Exterior2nd_CmentBd', '1stFlrSF', 'GarageCond_Fa', 'BsmtFinType2_Rec', 'GarageType_Attchd', 'MiscFeature_Shed', 'BsmtExposure_Av', 'SaleCondition_Normal', 'Condition1_Norm', 'BsmtFinType2_LwQ', 'GarageQual_Po', 'Neighborhood_NAmes', 'GarageArea', 'Functional_Min1', 'LotConfig_Tencode', 'OpenPorchSF', 'Condition1_Feedr', 'ExterQual_Ex', 'BsmtUnfSF', 'GarageType_CarPort', 'LandSlope_Gtl', 'Functional_Mod', 'FireplaceQu_Ex', 'MSZoning_RM', 'RoofStyle_Tencode', '2ndFlrSF', 'Exterior2nd_Wd Sdng', 'BsmtCond_Gd', 'BsmtCond_Po', 'MiscFeature_Tencode', 'Neighborhood_StoneBr', 'MasVnrType_None', 'Neighborhood_Sawyer', 'BldgType_TwnhsE', 'ExterQual_Gd', 'KitchenQual_Fa', 'Foundation_CBlock', 'BsmtCond_Tencode', 'Neighborhood_Crawfor', 'GarageType_Basment', 'Condition2_Artery', 'Fence_GdWo', 'MSSubClass', 'BsmtFinType1_LwQ', 'SaleCondition_Partial', 'Exterior1st_VinylSd', 'CentralAir_Y', 'Condition1_Tencode', 'Street_Grvl', 'PavedDrive_P', 'GarageCond_Ex', 'BsmtFinType2_Unf', 'HouseStyle_2.5Unf', 'Neighborhood_Gilbert', 'BsmtFinSF1', 'PoolArea', 'CentralAir_Tencode', 'SaleType_COD', 'GarageFinish_RFn', 'FireplaceQu_TA', 'GarageQual_Tencode', 'OverallCond', 'BldgType_1Fam', 'SaleCondition_Abnorml', 'ScreenPorch', 'Exterior1st_BrkComm', 'Exterior2nd_Brk Cmn', 'SaleType_Oth', 'BsmtExposure_Gd', 'GarageYrBlt', 'Alley_Grvl', 'BldgType_Tencode', 'ExterQual_Tencode', 'KitchenQual_TA', 'CentralAir_N', 'Neighborhood_SawyerW', 'MSZoning_Tencode', 'BsmtFinType1_Unf', 'Condition1_RRAn', 'Neighborhood_IDOTRR', 'Condition2_Norm', 'MiscFeature_Gar2', 'SaleType_CWD', 'Neighborhood_BrkSide', 'HouseStyle_SLvl', 'RoofMatl_WdShngl', 'BsmtExposure_No', 'MSZoning_FV', 'BsmtFinType1_GLQ', 'Exterior1st_WdShing', 'MasVnrArea', 'Exterior1st_Tencode', 'Exterior2nd_HdBoard', 'MSZoning_RL', 'BsmtQual_Gd', 'LotShape_IR3', 'Exterior2nd_Plywood', 'BsmtExposure_Mn', 'MasVnrType_BrkFace', 'Neighborhood_Timber', 'Foundation_Slab', 'MSZoning_RH', 'Exterior2nd_Wd Shng', 'BsmtCond_Fa', 'BsmtCond_TA', 'HouseStyle_1.5Fin', 'Exterior1st_MetalSd', 'Fence_MnWw', 'Exterior1st_Plywood', 'MasVnrType_Stone', 'Fence_MnPrv', 'Street_Pave', 'Functional_Min2', 'Utilities_AllPub', 'Exterior1st_Wd Sdng', 'ExterQual_Fa', 'HouseStyle_2Story', 'ExterCond_Fa', 'MasVnrType_Tencode', 'WoodDeckSF', 'GarageType_2Types', 'Exterior2nd_AsphShn', 'Neighborhood_MeadowV', 'LotConfig_Inside']\n", "\n", "Categorical = ['LotShape', 'KitchenQual', 'LandContour', 'SaleCondition', 'RoofMatl', 'PoolQC', 'BsmtQual', 'SaleType', 'GarageCond', 'Utilities', 'GarageQual', 'Condition1', 'BsmtFinType2', 'CentralAir', 'Fence', 'Heating', 'MSZoning', 'Exterior1st', 'RoofStyle', 'BsmtExposure', 'Alley', 'LandSlope', 'ExterQual', 'Foundation', 'HouseStyle', 'GarageType', 'Functional', 'HeatingQC', 'Exterior2nd', 'BsmtFinType1', 'PavedDrive', 'MasVnrType', 'Neighborhood', 'Electrical', 'LotConfig', 'ExterCond', 'BsmtCond', 'GarageFinish', 'Street', 'FireplaceQu', 'MiscFeature', 'Condition2', 'BldgType']\n" ] } ], "source": [ "encoded_nums, cats = get_type_lists(frame=train)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Imputed and encoded numeric training data:\n", "Rows:1001\n", "Cols:290\n", "\n", "\n" ] }, { "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", "
OverallQual KitchenAbvGr SaleCondition_Tencode FireplaceQu_Tencode Condition1_Artery YrSold Utilities_Tencode BsmtExposure_Tencode PavedDrive_N LotShape_Tencode GarageType_Detchd Exterior1st_BrkFace GarageFinish_Unf Exterior2nd_AsbShng Exterior2nd_Stucco BldgType_Duplex Neighborhood_BrDale ExterQual_TA LotShape_IR2 Exterior2nd_Stone RoofMatl_Tencode Street_Tencode LandContour_Low Neighborhood_NridgHt TotalBsmtSF RoofStyle_Hip BsmtFinType1_Tencode HouseStyle_1Story GarageCond_Po BldgType_2fmCon YearRemodAdd GrLivArea EnclosedPorch Foundation_PConc Neighborhood_NPkVill RoofStyle_Flat HeatingQC_TA Neighborhood_Blmngtn FireplaceQu_Gd BsmtFinType2_Tencode LotShape_Reg Exterior1st_HdBoard HeatingQC_Fa Alley_Pave BsmtFinType1_BLQ LotFrontage Heating_GasA GarageCond_TA Neighborhood_Somerst HouseStyle_SFoyer Neighborhood_ClearCr Functional_Tencode Alley_Tencode Functional_Typ GarageQual_Gd GarageCars BldgType_Twnhs LotShape_IR1 HeatingQC_Gd KitchenQual_Gd ExterCond_TA Electrical_Tencode Foundation_Stone BsmtFinType2_GLQ Electrical_FuseP Heating_Grav LotConfig_Corner Neighborhood_CollgCr MiscFeature_Othr Electrical_FuseA FullBath GarageFinish_Fin Fireplaces Neighborhood_Mitchel Exterior1st_AsbShng LandSlope_Mod SaleType_ConLw FireplaceQu_Po BsmtQual_Tencode LotArea Exterior2nd_BrkFace BsmtFinType2_ALQ RoofMatl_CompShg BsmtHalfBath HouseStyle_Tencode Neighborhood_NoRidge GarageCond_Tencode Foundation_BrkTil Exterior2nd_Tencode Exterior1st_Stucco MiscVal BsmtFinSF2 LotConfig_FR2 Fence_Tencode KitchenQual_Ex Neighborhood_Tencode YearBuilt LandSlope_Sev Heating_Tencode LandContour_HLS Neighborhood_OldTown SaleType_Tencode Exterior2nd_VinylSd SaleType_ConLD GarageType_Tencode SaleType_ConLI Heating_GasW LandContour_Tencode Neighborhood_Veenker Foundation_Tencode LandSlope_Tencode Neighborhood_Edwards BsmtQual_Ex BedroomAbvGr Electrical_SBrkr BsmtFinType2_BLQ PavedDrive_Y PoolQC_Tencode SaleCondition_Family BsmtFinType1_ALQ BsmtQual_Fa SaleType_WD LandContour_Bnk 3SsnPorch LandContour_Lvl Neighborhood_SWISU HeatingQC_Tencode PavedDrive_Tencode HalfBath Fence_GdPrv HeatingQC_Ex RoofMatl_Tar&Grv LotConfig_CulDSac HouseStyle_1.5Unf BsmtFullBath GarageQual_Fa ExterCond_Gd BsmtQual_TA Functional_Maj2 SaleCondition_Alloca Condition1_PosA GarageCond_Gd GarageQual_TA FireplaceQu_Fa KitchenQual_Tencode Condition2_Tencode BsmtFinType1_Rec ExterCond_Tencode GarageFinish_Tencode RoofStyle_Gambrel Exterior1st_CemntBd MSZoning_C (all) Condition1_PosN Exterior2nd_MetalSd RoofStyle_Gable GarageType_BuiltIn Electrical_FuseF Condition1_RRAe TotRmsAbvGrd LowQualFinSF SaleType_New RoofStyle_Shed Functional_Maj1 MoSold Neighborhood_NWAmes MasVnrType_BrkCmn Exterior2nd_CmentBd 1stFlrSF GarageCond_Fa BsmtFinType2_Rec GarageType_Attchd MiscFeature_Shed BsmtExposure_Av SaleCondition_Normal Condition1_Norm BsmtFinType2_LwQ GarageQual_Po Neighborhood_NAmes GarageArea Functional_Min1 LotConfig_Tencode OpenPorchSF Condition1_Feedr ExterQual_Ex BsmtUnfSF GarageType_CarPort LandSlope_Gtl Functional_Mod FireplaceQu_Ex MSZoning_RM RoofStyle_Tencode 2ndFlrSF Exterior2nd_Wd Sdng BsmtCond_Gd BsmtCond_Po MiscFeature_Tencode Neighborhood_StoneBr MasVnrType_None Neighborhood_Sawyer BldgType_TwnhsE ExterQual_Gd KitchenQual_Fa Foundation_CBlock BsmtCond_Tencode Neighborhood_Crawfor GarageType_Basment Condition2_Artery Fence_GdWo MSSubClass BsmtFinType1_LwQ SaleCondition_Partial Exterior1st_VinylSd CentralAir_Y Condition1_Tencode Street_Grvl PavedDrive_P GarageCond_Ex BsmtFinType2_Unf HouseStyle_2.5Unf Neighborhood_Gilbert BsmtFinSF1 PoolArea CentralAir_Tencode SaleType_COD GarageFinish_RFn FireplaceQu_TA GarageQual_Tencode OverallCond BldgType_1Fam SaleCondition_Abnorml ScreenPorch Exterior1st_BrkComm Exterior2nd_Brk Cmn SaleType_Oth BsmtExposure_Gd GarageYrBlt Alley_Grvl BldgType_Tencode ExterQual_Tencode KitchenQual_TA CentralAir_N Neighborhood_SawyerW MSZoning_Tencode BsmtFinType1_Unf Condition1_RRAn Neighborhood_IDOTRR Condition2_Norm MiscFeature_Gar2 SaleType_CWD Neighborhood_BrkSide HouseStyle_SLvl RoofMatl_WdShngl BsmtExposure_No MSZoning_FV BsmtFinType1_GLQ Exterior1st_WdShing MasVnrArea Exterior1st_Tencode Exterior2nd_HdBoard MSZoning_RL BsmtQual_Gd LotShape_IR3 Exterior2nd_Plywood BsmtExposure_Mn MasVnrType_BrkFace Neighborhood_Timber Foundation_Slab MSZoning_RH Exterior2nd_Wd Shng BsmtCond_Fa BsmtCond_TA HouseStyle_1.5Fin Exterior1st_MetalSd Fence_MnWw Exterior1st_Plywood MasVnrType_Stone Fence_MnPrv Street_Pave Functional_Min2 Utilities_AllPub Exterior1st_Wd Sdng ExterQual_Fa HouseStyle_2Story ExterCond_Fa MasVnrType_Tencode WoodDeckSF GarageType_2Types Exterior2nd_AsphShn Neighborhood_MeadowV LotConfig_Inside
type int int real real int int real real int real int int int int int int int int int int real real int int int int real int int int int int int int int int int int int real int int int int int real int int int int int real real int int int int int int int int real int int int int int int int int int int int int int int int int real int int int int int real int real int real int int int int real int real int int real int int real int int real int int real int real real int int int int int int real int int int int int int int int real real int int int int int int int int int int int int int int int int real real int real real int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int real int int int int int int int int int real int int int int real int int int int int int int real int int int int int int int int int real int int int int int int int int real int int int real int int int int int int int int real int real real int int int real int int int int int int int int int int int int int real real int int int int int int int int int int int int int int int int int int int int int int int int int int real int int int int int
mins 2.0 0.0 115832.04385614386 141462.34885614386 0.0 2006.0 144200.79385614386 167645.4123076923 0.0 163944.593856143850.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 143775.79385614386146350.103856143860.0 0.0 0.0 0.0 150410.4464877228 0.0 0.0 0.0 1950.0 480.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 154536.9355228105 0.0 0.0 0.0 0.0 0.0 21.0 0.0 0.0 0.0 0.0 0.0 110059.12718947718 128075.200999001 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 84275.79385614386 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 121216.120939477161300.0 0.0 0.0 0.0 0.0 118907.2224275724 0.0 112070.79385614386 0.0 129978.2396894772 0.0 0.0 0.0 0.0 141306.738141858140.0 109690.79385614386 1875.0 0.0 93469.96052281052 0.0 0.0 125968.293856143860.0 0.0 125174.96052281052 0.0 0.0 145140.16285614387 0.0 121726.89385614388 181486.5182747485 0.0 0.0 0.0 0.0 0.0 0.0 182171.959040959050.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 135668.69902855766 129253.89464979465 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 124936.94820396997 108075.79385614386 0.0 122047.1494116994 141354.57177033494 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 480.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 176473.2899159664 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 161577.2224275724 0.0 0.0 0.0 0.0 140375.79385614386 0.0 0.0 0.0 0.0 0.0 0.0 0.0 84275.79385614386 0.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 0.0 134468.29385614386 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 119608.23368665233 0.0 0.0 0.0 96813.29385614386 2.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1908.0 0.0 138273.46052281052116078.96885614384 0.0 0.0 0.0 78614.79385614386 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 78325.79385614386 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 155578.6188811189 0.0 0.0 0.0 0.0 0.0
mean 6.14485514485514451.046953046953047 181541.32494458588 200266.80114860163 0.0279720279720279722007.828171828172 182178.65314071544 182844.62529074325 0.06293706293706294181993.927863245660.257742257742257730.03396603396603397 0.41758241758241760.011988011988011988 0.0159840159840159840.037962037962037960.01098901098901099 0.6163836163836164 0.0289710289710289720.003996003996003996182033.94005549894182203.5349842964 0.020979020979020980.05194805194805195 1063.23876123876130.2017982017982018185645.79515235015 0.4965034965034965 0.0049950049950049950.018981018981018981985.138861138861 1519.801198801198821.2577422577422580.45154845154845150.004995004995004995 0.0089910089910089920.29370629370629370.011988011988011988 0.2597402597402597184056.7578759402 0.62137862137862140.15584415584415584 0.0289710289710289720.0309690309690309680.096903096903096970.59975669099758 0.9820179820179821 0.916083916083916 0.058941058941058944 0.0269730269730269720.022977022977022976 182576.2453368809 180171.385468627270.932067932067932 0.0079920079920079921.79320679320679320.0299700299700299720.344655344655344640.163836163836163840.4035964035964036 0.8771228771228772 182952.64128239392 0.0029970029970029970.009990009990009990.0019980019980019980.0059940059940059940.17982017982017980.1018981018981019 0.00099900099900099880.0589410589410589441.57442557442557440.249750249750249760.62037962037962040.03896103896103896 0.012987012987012988 0.042957042957042960.00099900099900099880.00999000999000999182245.4127874123810628.2627372627380.015984015984015984 0.0089910089910089920.983016983016983 0.059940059940059943183188.25635258848 0.027972027972027972 186002.74671607115 0.09490509490509491183994.52609268852 0.01498501498501498639.68431568431568541.64935064935065 0.03496503496503497177450.870309760150.07292707292707293182171.95904095905 1972.29870129870120.00999000999000999182323.579859551040.037962037962037960.06993006993006994 181180.3311701286 0.35264735264735264 0.005994005994005994185255.62265751234 0.0039960039960039960.006993006993006993182186.73299732237 0.005994005994005994 183119.90242260243 182145.0556687069 0.07392607392607392 0.085914085914085922.871128871128871 0.92007992007992010.0179820179820179840.9170829170829171182802.8256832079 0.00999000999000999 0.141858141858141860.0239760239760239760.87012987012987010.049950049950049953.45654345654345670.89110889110889110.014985014985014986182409.7085632649 182908.18055950044 0.381618381618381630.039960039960039960.51348651348651350.0069930069930069930.067932067932067940.0069930069930069930.426573426573426560.035964035964035970.1048951048951049 0.43856143856143860.0029970029970029970.008991008991008992 0.0069930069930069930.0069930069930069930.90509490509490510.02197802197802198180810.97023994988 182224.44204037724 0.09490509490509491182637.23505924645 185712.87216180423 0.0069930069930069930.04195804195804196 0.0069930069930069930.010989010989010990.14485514485514486 0.77422577422577420.0579420579420579440.0169830169830169840.0059940059940059946.512487512487512 5.92507492507492550.079920079920079920.00099900099900099880.0089910089910089926.3626373626373620.052947052947052944 0.010989010989010990.04195804195804196 1172.08891108891110.0229770229770229760.035964035964035970.6123876123876124 0.0309690309690309680.150849150849150850.8161838161838162 0.87512487512487510.032967032967032970.0019980019980019980.14685314685314685 477.468531468531470.024975024975024976181772.16118142597 44.924075924075920.050949050949050950.03896103896103896575.99000999001 0.0059940059940059940.9470529470529471 0.0069930069930069930.018981018981018980.14185814185814186182159.0086938536 341.78721278721280.12987012987012986 0.033966033966033970.000999000999000999181198.1922414748 0.01998001998001998 0.5714285714285714 0.053946053946053944 0.079920079920079920.33866133866133870.0229770229770229760.4305694305694306 184043.119007665660.03696303696303696 0.0139860139860139860.00099900099900099880.0349650349650349757.087912087912090.044955044955044950.08291708291708291 0.35764235764235763 0.9410589410589411 182645.11776425372 0.0049950049950049950.019980019980019980.0009990009990009990.8681318681318682 0.0049950049950049950.05194805194805195 445.59940059940063.3766233766233764182822.70708043204 0.033966033966033970.284715284715284730.22377622377622378186018.3297154893 5.583416583416583 0.83316683316683320.07792207792207792 14.7632367632367640.000999000999000999 0.002997002997002997 0.00099900099900099880.09590409590409591978.734522560336 0.027972027972027972182849.79797600003181095.69602749898 0.50049950049950050.0589410589410589440.04295704295704296 183387.926401819980.3006993006993007 0.0169830169830169840.023976023976023976 0.989010989010989 0.0009990009990009990.00199800199800199760.03296703296703297 0.050949050949050950.0009990009990009990.64935064935064930.044955044955044950.2957042957042957 0.01898101898101898 106.91146881287727183565.71379414792 0.14185814185814186 0.79320679320679320.426573426573426560.0049950049950049950.1028971028971029 0.077922077922077920.31368631368631367 0.028971028971028972 0.0169830169830169840.0129870129870129880.022977022977022976 0.0299700299700299720.91008991008991010.1088911088911089 0.14685314685314685 0.0029970029970029970.07592407592407592 0.09690309690309690.1108891108891109 0.995004995004995 0.0229770229770229760.999000999000999 0.13686313686313686 0.0059940059940059940.3016983016983017 0.017982017982017984180574.40004970055 91.07392607392607 0.0039960039960039960.000999000999000999 0.01098901098901099 0.7132867132867133
maxs 10.0 3.0 260380.61674771016 306119.08332982805 1.0 2010.0 182216.631 243510.2073978105 1.0 220137.097304419731.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 669075.7938561438 182383.5220883534 1.0 1.0 6110.0 1.0 236446.98648648648 1.0 1.0 1.0 2010.0 5642.0 552.0 1.0 1.0 1.0 1.0 1.0 1.0 218122.46052281052 1.0 1.0 1.0 1.0 1.0 313.0 1.0 1.0 1.0 1.0 1.0 185063.6387995713 182171.959040959051.0 1.0 4.0 1.0 1.0 1.0 1.0 1.0 187738.31270358307 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 3.0 1.0 3.0 1.0 1.0 1.0 1.0 1.0 312352.66653056245164660.0 1.0 1.0 1.0 2.0 210965.119205298 1.0 188146.75027262812 1.0 298475.79385614384 1.0 15500.0 1127.0 1.0 182171.959040959051.0 329868.35814185813 2010.0 1.0 185483.958141858171.0 1.0 263880.6876061438 1.0 1.0 243875.5455802818 1.0 1.0 215016.8662245649 1.0 226465.82743362832 200379.84385614385 1.0 1.0 8.0 1.0 1.0 1.0 443825.793856143841.0 1.0 1.0 1.0 1.0 508.0 1.0 1.0 216426.0 187523.8671023965 2.0 1.0 1.0 1.0 1.0 1.0 3.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 305958.0876917603 269469.54385614384 1.0 185708.33940774488 243708.832 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 14.0 528.0 1.0 1.0 1.0 12.0 1.0 1.0 1.0 4692.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1418.0 1.0 215932.78135614388 523.0 1.0 1.0 2153.0 1.0 1.0 1.0 1.0 1.0 248325.79385614384 2065.0 1.0 1.0 1.0 239825.79385614384 1.0 1.0 1.0 1.0 1.0 1.0 1.0 212500.143856143841.0 1.0 1.0 1.0 190.0 1.0 1.0 1.0 1.0 219155.3393106893 1.0 1.0 1.0 1.0 1.0 1.0 5644.0 738.0 186782.0 1.0 1.0 1.0 222252.04385614384 9.0 1.0 1.0 440.0 1.0 1.0 1.0 1.0 2010.0 1.0 187595.7541966427 348876.58744588745 1.0 1.0 1.0 204495.203856143871.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1378.0 250025.79385614384 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 256064.3778767624 736.0 1.0 1.0 1.0 1.0
sigma 1.35351246909513320.225373482897182924904.825355766643 24220.265190439717 0.16497509877791622 1.31698350576063031201.565692600516 24443.64548833232 0.2429711197549310221926.2581711746460.437609983321333160.18123232284875357 0.49340708289459060.10888592129446238 0.1254761162303637 0.191200006687872680.1043030243047673 0.486509309973929160.16780893945150885 0.06311906197034287 15980.2063757640462541.57596669904930.143385635819772980.22203310856424385 450.468353978460870.401542978069301133760.024871504866 0.5002377057337464 0.07053385694136521 0.1365260438134813820.606836203107406520.2774292995626 61.04442237008638 0.49789567170251630.07053385694136521 0.09444088584443137 0.45568667925489070.10888592129446238 0.43871121762217627125.754339386596 0.48528599557631730.3628888420554036 0.16780893945150882 0.1733203970684352 0.295973646800521122.7496663701105320.132952336107056340.277400520819714670.23563208084316006 0.16208555849219963 0.14990506486282734 9673.472750816663 9252.69549005405 0.25175507816252560.08908458865630989 0.73497877941734220.17058985638337087 0.4754933291791864 0.370311853889217450.490863578753866160.3284602165957300516469.48508284952 0.05469011785513898 0.099499245726286280.04467666052878164 0.07722717115132449 0.38422957672772620.30266548135919563 0.0316069770620507 0.23563208084316006 0.553809800116696 0.433084792578125 0.64167301310266720.19359886229138712 0.1132747493096711 0.202861645346889440.0316069770620507 0.0994992457262862849068.18360107548 9442.373107111374 0.12547611623036373 0.09444088584443137 0.129272149789847270.24577143121932704 21247.33154021499 0.16497509877791622 10671.42984932999 0.2932303121848353630224.673393447134 0.12155338240964245 516.2493547150991 148.918386783089740.1837830889288342 11076.4607161218 0.2601467348946046 51529.93244080358 29.8730260990025760.099499245726286288588.039549532368 0.191200006687872680.2551566089774966 25459.9304787338730.4780329324591398 0.07722717115132449 34065.80911242866 0.06311906197034287 0.0833729509556244 11064.930655592712 0.07722717115132448 39735.24037714125 1835.4154172265207 0.2617813410643901 0.2803772255576202 0.80521774966503590.27130498264203260.13295233610705634 0.275894693892220611861.8012299129770.09949924572628628 0.349078993719392770.1530508916164013 0.33632853449697530.2179506767654037529.83605804459362 0.31165825695923590.12155338240964245 35398.540443061385 15415.629575665143 0.500221729058003 0.195963257784714350.500067927453793 0.08337295095562439 0.251755078162525570.0833729509556244 0.5204355357324736 0.186293571293522360.306571384812760970.49645898971770920.05469011785513898 0.09444088584443137 0.0833729509556244 0.0833729509556244 0.29323031218483530.1466849805415793649556.81599252628 6389.719881512636 0.2932303121848353 9945.861000354018 41548.00781303608 0.0833729509556244 0.20059352491484425 0.0833729509556244 0.1043030243047673 0.35213066324306946 0.41830016133755550.23375063773038277 0.12927214978984727 0.07722717115132448 1.587480364002624749.51948485817861 0.271304982642032570.0316069770620507 0.09444088584443137 2.67681950033293 0.22403974244273311 0.1043030243047673 0.20059352491484425 392.4739572085174 0.14990506486282734 0.186293571293522360.487448862555236230.1733203970684352 0.358080686747802970.3875278340684991 0.33074251222153070.178639547447053040.04467666052878164 0.3541363966222441 209.922579201812540.1561269495494752 10669.040225587913 63.018745066608790.2200036327009134 0.19359886229138712444.457507417863160.07722717115132448 0.224039742442733110.0833729509556244 0.136526043813481380.3490789937193927 20695.37765547134 432.90859505942320.3363285344969753 0.181232322848753570.0316069770620507 5900.127068841758 0.14000142713701028 0.495119033306998970.22602414270805915 0.271304982642032570.47349108354203060.14990506486282734 0.4954034471262543 10415.5288163923980.18876537720770628 0.11749125841608729 0.0316069770620507 0.1837830889288342 42.221277381626720.207309003608195870.2758946938922206 0.4795456557659927 0.2356320808431600613080.75973520576 0.07053385694136521 0.1400014271370103 0.0316069770620507 0.338516479057381470.07053385694136521 0.22203310856424385 467.173265887122843.98791894358056 15828.294334486282 0.181232322848753570.451504312112457950.4169821649352954 11950.130371967638 1.08870781906107170.37301321845058140.2681829187738808 54.16981527671003 0.0316069770620507 0.05469011785513898 0.0316069770620507 0.294606868204403524.0757519967241040.16497509877791622 13615.68412825508552277.89924581869 0.5002496879057 0.23563208084316006 0.20286164534688944 22616.4199503314960.458791358342232170.12927214978984727 0.1530508916164013 0.10430302430476730.0316069770620507 0.04467666052878164 0.17863954744705304 0.2200036327009134 0.0316069770620507 0.47741185356260050.207309003608195870.456586824680178970.13652604381348138 179.4411497100248 29589.150408848316 0.34907899371939277 0.40520834911660720.4948263805145668 0.07053385694136523 0.30397631223764526 0.2681829187738808 0.46422246552972585 0.16780893945150882 0.12927214978984727 0.11327474930967109 0.14990506486282734 0.17058985638337087 0.28619589778347960.311658256959235940.3541363966222441 0.05469011785513898 0.265009000280689 0.29597364680052110.314151728773388540.070533856941365210.14990506486282734 0.03160697706205070.34387461413973297 0.07722717115132448 0.459224468955121030.13295233610705634 32873.17832435439 120.050441604646040.06311906197034287 0.0316069770620507 0.1043030243047673 0.45245252426446547
zeros 0 1 0 0 973 0 0 0 938 0 743 967 583 989 985 963 990 384 972 997 0 0 980 949 25 799 0 504 996 982 0 0 867 549 996 992 707 989 741 0 379 845 972 970 904 0 18 84 942 974 978 0 0 68 993 48 971 656 837 597 123 0 998 991 999 995 821 899 1000 942 6 751 466 962 988 958 1000 991 0 0 985 992 17 943 0 973 0 906 0 986 969 894 966 0 928 0 0 991 0 963 931 0 648 995 0 997 994 0 995 0 0 927 915 4 80 983 83 0 991 859 977 130 951 985 109 986 0 0 626 961 487 994 933 994 586 965 896 562 998 992 994 994 95 979 0 0 906 0 0 994 959 994 990 856 226 943 984 995 0 984 921 1000 992 0 948 990 959 0 978 965 388 970 850 184 125 968 999 854 48 976 0 460 950 962 78 995 53 994 982 859 0 572 871 967 1000 0 981 429 947 921 662 978 570 0 964 987 1000 966 0 956 918 643 59 0 996 981 1000 132 996 949 326 995 0 967 716 777 0 0 167 923 921 1000 998 1000 905 0 973 0 0 500 942 958 0 700 984 977 11 1000 999 968 950 1000 351 956 705 982 570 0 859 207 574 996 898 923 687 972 984 988 978 971 90 892 854 998 925 904 890 5 978 1 864 995 699 983 0 523 997 1000 990 287
missing0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 7.0 1.0 177020.8800489596 182171.95904095905 0.0 2008.0 182216.631 167645.4123076923 0.0 165131.570739549850.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 181235.93597560975182383.5220883534 0.0 0.0 856.0 0.0 236446.98648648648 0.0 0.0 0.0 2003.0 1710.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 185630.71806674337 1.0 0.0 0.0 0.0 0.0 65.0 1.0 1.0 0.0 0.0 0.0 185063.6387995713 182171.959040959051.0 0.0 2.0 0.0 0.0 0.0 1.0 1.0 187738.31270358307 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 2.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 200924.0538641686 8450.0 0.0 0.0 1.0 0.0 210965.119205298 0.0 188146.75027262812 0.0 216626.90934844193 0.0 0.0 0.0 0.0 182171.959040959050.0 197940.3021894772 2003.0 0.0 183201.273652085450.0 0.0 174574.412169919641.0 0.0 203664.60358890705 0.0 0.0 182282.48766816143 0.0 226465.82743362832 181982.57594936708 0.0 0.0 3.0 1.0 0.0 1.0 182171.959040959050.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 216426.0 187523.8671023965 1.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 212221.98514851485 182525.73333333337 0.0 185708.33940774488 200494.42807017543 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 8.0 0.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0 856.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 548.0 0.0 176473.2899159664 61.0 0.0 0.0 150.0 0.0 1.0 0.0 0.0 0.0 171522.79741935484 854.0 0.0 0.0 0.0 182171.95904095905 0.0 0.0 0.0 0.0 1.0 0.0 0.0 184737.951701427 0.0 0.0 0.0 0.0 60.0 0.0 0.0 1.0 1.0 185776.46347031964 0.0 0.0 0.0 1.0 0.0 0.0 706.0 0.0 186782.0 0.0 1.0 0.0 188334.07174392935 5.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 2003.0 0.0 187595.7541966427 229333.4454277286 0.0 0.0 0.0 192391.802267002520.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 196.0 216859.72905027933 0.0 1.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 203515.30891719743 0.0 0.0 0.0 0.0 1.0
1 6.0 1.0 177020.8800489596 204076.0357142857 0.0 2007.0 182216.631 243510.2073978105 0.0 165131.570739549850.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 181235.93597560975182383.5220883534 0.0 0.0 1262.0 0.0 161782.77448994666 1.0 0.0 0.0 1976.0 1262.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 185630.71806674337 1.0 0.0 0.0 0.0 0.0 80.0 1.0 1.0 0.0 0.0 0.0 185063.6387995713 182171.959040959051.0 0.0 2.0 0.0 0.0 0.0 0.0 1.0 187738.31270358307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 200924.0538641686 9600.0 0.0 0.0 1.0 1.0 178321.97183098592 0.0 188146.75027262812 0.0 155721.17213200592 0.0 0.0 0.0 1.0 182171.959040959050.0 218575.79385614384 1976.0 0.0 183201.273652085450.0 0.0 174574.412169919640.0 0.0 203664.60358890705 0.0 0.0 182282.48766816143 1.0 150397.2807424594 181982.57594936708 0.0 0.0 3.0 1.0 0.0 1.0 182171.959040959050.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 216426.0 187523.8671023965 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 139811.59481037923 182525.73333333337 0.0 185708.33940774488 200494.42807017543 0.0 0.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 1262.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 460.0 0.0 178818.25814185815 0.0 1.0 0.0 284.0 0.0 1.0 0.0 0.0 0.0 171522.79741935484 0.0 0.0 0.0 0.0 182171.95904095905 0.0 1.0 0.0 0.0 0.0 0.0 1.0 184737.951701427 0.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 1.0 147024.16052281053 0.0 0.0 0.0 1.0 0.0 0.0 978.0 0.0 186782.0 0.0 1.0 1.0 188334.07174392935 8.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 1976.0 0.0 187595.7541966427 144619.2755267423 1.0 0.0 0.0 192391.802267002520.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 155330.24861804862 0.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 155578.6188811189 298.0 0.0 0.0 0.0 0.0
2 7.0 1.0 177020.8800489596 204076.0357142857 0.0 2008.0 182216.631 187129.27013819513 0.0 209450.394202898550.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 181235.93597560975182383.5220883534 0.0 0.0 920.0 0.0 236446.98648648648 0.0 0.0 0.0 2002.0 1786.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 185630.71806674337 0.0 0.0 0.0 0.0 0.0 68.0 1.0 1.0 0.0 0.0 0.0 185063.6387995713 182171.959040959051.0 0.0 2.0 0.0 1.0 0.0 1.0 1.0 187738.31270358307 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 2.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 200924.0538641686 11250.0 0.0 0.0 1.0 0.0 210965.119205298 0.0 188146.75027262812 0.0 216626.90934844193 0.0 0.0 0.0 0.0 182171.959040959050.0 197940.3021894772 2001.0 0.0 183201.273652085450.0 0.0 174574.412169919641.0 0.0 203664.60358890705 0.0 0.0 182282.48766816143 0.0 226465.82743362832 181982.57594936708 0.0 0.0 3.0 1.0 0.0 1.0 182171.959040959050.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 216426.0 187523.8671023965 1.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 212221.98514851485 182525.73333333337 0.0 185708.33940774488 200494.42807017543 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 0.0 9.0 0.0 0.0 0.0 920.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 608.0 0.0 176473.2899159664 42.0 0.0 0.0 434.0 0.0 1.0 0.0 0.0 0.0 171522.79741935484 866.0 0.0 0.0 0.0 182171.95904095905 0.0 0.0 0.0 0.0 1.0 0.0 0.0 184737.951701427 0.0 0.0 0.0 0.0 60.0 0.0 0.0 1.0 1.0 185776.46347031964 0.0 0.0 0.0 1.0 0.0 0.0 486.0 0.0 186782.0 0.0 1.0 1.0 188334.07174392935 5.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 2001.0 0.0 187595.7541966427 229333.4454277286 0.0 0.0 0.0 192391.802267002520.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 162.0 216859.72905027933 0.0 1.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 203515.30891719743 0.0 0.0 0.0 0.0 1.0
3 8.0 1.0 177020.8800489596 204076.0357142857 0.0 2008.0 182216.631 207605.41721854304 0.0 209450.394202898550.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 181235.93597560975182383.5220883534 0.0 0.0 1145.0 0.0 236446.98648648648 0.0 0.0 0.0 2000.0 2198.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 185630.71806674337 0.0 0.0 0.0 0.0 0.0 84.0 1.0 1.0 0.0 0.0 0.0 185063.6387995713 182171.959040959051.0 0.0 3.0 0.0 1.0 0.0 1.0 1.0 187738.31270358307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 200924.0538641686 14260.0 0.0 0.0 1.0 0.0 210965.119205298 1.0 188146.75027262812 0.0 216626.90934844193 0.0 0.0 0.0 1.0 182171.959040959050.0 329868.35814185813 2000.0 0.0 183201.273652085450.0 0.0 174574.412169919641.0 0.0 203664.60358890705 0.0 0.0 182282.48766816143 0.0 226465.82743362832 181982.57594936708 0.0 0.0 4.0 1.0 0.0 1.0 182171.959040959050.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 216426.0 187523.8671023965 1.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 212221.98514851485 182525.73333333337 0.0 185708.33940774488 200494.42807017543 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 9.0 0.0 0.0 0.0 0.0 12.0 0.0 0.0 0.0 1145.0 0.0 0.0 1.0 0.0 1.0 1.0 1.0 0.0 0.0 0.0 836.0 0.0 178818.25814185815 84.0 0.0 0.0 490.0 0.0 1.0 0.0 0.0 0.0 171522.79741935484 1053.0 0.0 0.0 0.0 182171.95904095905 0.0 0.0 0.0 0.0 1.0 0.0 0.0 184737.951701427 0.0 0.0 0.0 0.0 60.0 0.0 0.0 1.0 1.0 185776.46347031964 0.0 0.0 0.0 1.0 0.0 0.0 655.0 0.0 186782.0 0.0 1.0 1.0 188334.07174392935 5.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 2000.0 0.0 187595.7541966427 229333.4454277286 0.0 0.0 0.0 192391.802267002520.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 350.0 216859.72905027933 0.0 1.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 203515.30891719743 192.0 0.0 0.0 0.0 0.0
4 5.0 1.0 177020.8800489596 182171.95904095905 0.0 2009.0 182216.631 167645.4123076923 0.0 209450.394202898550.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 181235.93597560975182383.5220883534 0.0 0.0 796.0 0.0 236446.98648648648 0.0 0.0 0.0 1995.0 1362.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 185630.71806674337 0.0 0.0 0.0 0.0 0.0 85.0 1.0 1.0 0.0 0.0 0.0 185063.6387995713 182171.959040959051.0 0.0 2.0 0.0 1.0 0.0 0.0 1.0 187738.31270358307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 200924.0538641686 14115.0 0.0 0.0 1.0 0.0 149995.43881027232 0.0 188146.75027262812 0.0 216626.90934844193 0.0 700.0 0.0 0.0 154576.6979101979 0.0 157653.37334332333 1993.0 0.0 183201.273652085450.0 0.0 174574.412169919641.0 0.0 203664.60358890705 0.0 0.0 182282.48766816143 0.0 185142.46052281052 181982.57594936708 0.0 0.0 1.0 1.0 0.0 1.0 182171.959040959050.0 0.0 0.0 1.0 0.0 320.0 1.0 0.0 216426.0 187523.8671023965 1.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 139811.59481037923 182525.73333333337 0.0 185708.33940774488 141354.57177033494 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 0.0 10.0 0.0 0.0 0.0 796.0 0.0 0.0 1.0 1.0 0.0 1.0 1.0 0.0 0.0 0.0 480.0 0.0 176473.2899159664 30.0 0.0 0.0 64.0 0.0 1.0 0.0 0.0 0.0 171522.79741935484 566.0 0.0 0.0 0.0 151058.18256582128 0.0 1.0 0.0 0.0 0.0 0.0 0.0 184737.951701427 0.0 0.0 0.0 0.0 50.0 0.0 0.0 1.0 1.0 185776.46347031964 0.0 0.0 0.0 1.0 0.0 0.0 732.0 0.0 186782.0 0.0 0.0 0.0 188334.07174392935 5.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1993.0 0.0 187595.7541966427 144619.2755267423 1.0 0.0 0.0 192391.802267002520.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 216859.72905027933 0.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 155578.6188811189 40.0 0.0 0.0 0.0 1.0
5 8.0 1.0 177020.8800489596 225928.18076923076 0.0 2007.0 182216.631 207605.41721854304 0.0 165131.570739549850.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 181235.93597560975182383.5220883534 0.0 0.0 1686.0 0.0 236446.98648648648 1.0 0.0 0.0 2005.0 1694.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 185630.71806674337 1.0 0.0 0.0 0.0 0.0 75.0 1.0 1.0 1.0 0.0 0.0 185063.6387995713 182171.959040959051.0 0.0 2.0 0.0 0.0 0.0 1.0 1.0 187738.31270358307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 312352.6665305624510084.0 0.0 0.0 1.0 0.0 178321.97183098592 0.0 188146.75027262812 0.0 216626.90934844193 0.0 0.0 0.0 0.0 182171.959040959050.0 214617.5167374998 2004.0 0.0 183201.273652085450.0 0.0 174574.412169919641.0 0.0 203664.60358890705 0.0 0.0 182282.48766816143 0.0 226465.82743362832 181982.57594936708 0.0 1.0 3.0 1.0 0.0 1.0 182171.959040959050.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 216426.0 187523.8671023965 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 212221.98514851485 182525.73333333337 0.0 185708.33940774488 200494.42807017543 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 7.0 0.0 0.0 0.0 0.0 8.0 0.0 0.0 0.0 1694.0 0.0 0.0 1.0 0.0 1.0 1.0 1.0 0.0 0.0 0.0 636.0 0.0 176473.2899159664 57.0 0.0 0.0 317.0 0.0 1.0 0.0 0.0 0.0 171522.79741935484 0.0 0.0 0.0 0.0 182171.95904095905 0.0 0.0 0.0 0.0 1.0 0.0 0.0 184737.951701427 0.0 0.0 0.0 0.0 20.0 0.0 0.0 1.0 1.0 185776.46347031964 0.0 0.0 0.0 1.0 0.0 0.0 1369.0 0.0 186782.0 0.0 1.0 0.0 188334.07174392935 5.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 2004.0 0.0 187595.7541966427 229333.4454277286 0.0 0.0 0.0 192391.802267002520.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 186.0 216859.72905027933 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 256064.3778767624 255.0 0.0 0.0 0.0 1.0
6 7.0 2.0 153108.76116383614 204076.0357142857 1.0 2008.0 182216.631 167645.4123076923 0.0 165131.570739549851.0 1.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 181235.93597560975182383.5220883534 0.0 0.0 952.0 0.0 172096.88704318937 0.0 0.0 0.0 1950.0 1774.0 205.0 0.0 0.0 0.0 0.0 0.0 0.0 185630.71806674337 1.0 0.0 0.0 0.0 0.0 51.0 1.0 1.0 0.0 0.0 0.0 153787.09385614385 182171.959040959050.0 0.0 2.0 0.0 0.0 1.0 0.0 1.0 129502.64385614384 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 0.0 2.0 0.0 0.0 0.0 0.0 0.0 141930.004555808646120.0 0.0 0.0 1.0 0.0 149995.43881027232 0.0 188146.75027262812 1.0 153754.05472570908 0.0 0.0 0.0 0.0 182171.959040959050.0 133772.61742757243 1931.0 0.0 183201.273652085450.0 1.0 174574.412169919640.0 0.0 133017.2480620155 0.0 0.0 182282.48766816143 0.0 136922.75385614386 181982.57594936708 0.0 0.0 2.0 0.0 0.0 1.0 182171.959040959050.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 157465.01829268291 187523.8671023965 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 139811.59481037923 182525.73333333337 0.0 185708.33940774488 141354.57177033494 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 8.0 0.0 0.0 0.0 0.0 4.0 0.0 0.0 0.0 1022.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 468.0 1.0 176473.2899159664 0.0 0.0 0.0 952.0 0.0 1.0 0.0 0.0 1.0 171522.79741935484 752.0 0.0 0.0 0.0 182171.95904095905 0.0 1.0 0.0 0.0 0.0 0.0 0.0 184737.951701427 0.0 0.0 0.0 0.0 50.0 0.0 0.0 0.0 1.0 134468.29385614386 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 186782.0 0.0 0.0 1.0 131334.2021894772 5.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 1931.0 0.0 187595.7541966427 144619.2755267423 1.0 0.0 0.0 135492.298433608641.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 174764.54385614386 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 155578.6188811189 90.0 0.0 0.0 0.0 1.0
7 5.0 1.0 177020.8800489596 182171.95904095905 0.0 2008.0 182216.631 167645.4123076923 0.0 165131.570739549851.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 181235.93597560975182383.5220883534 0.0 0.0 1040.0 1.0 150410.4464877228 1.0 0.0 0.0 1965.0 1040.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 185630.71806674337 1.0 1.0 0.0 0.0 0.0 70.0 1.0 1.0 0.0 0.0 0.0 185063.6387995713 182171.959040959051.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 187738.31270358307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 141930.0045558086411200.0 0.0 0.0 1.0 0.0 178321.97183098592 0.0 188146.75027262812 0.0 169688.48681389034 0.0 0.0 0.0 0.0 182171.959040959050.0 143540.98922651424 1965.0 0.0 183201.273652085450.0 0.0 174574.412169919640.0 0.0 133017.2480620155 0.0 0.0 182282.48766816143 0.0 150397.2807424594 181982.57594936708 0.0 0.0 3.0 1.0 0.0 1.0 182171.959040959050.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 216426.0 187523.8671023965 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 139811.59481037923 182525.73333333337 1.0 185708.33940774488 141354.57177033494 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0 1040.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 384.0 0.0 176473.2899159664 0.0 0.0 0.0 134.0 0.0 1.0 0.0 0.0 0.0 222601.05940594056 0.0 0.0 0.0 0.0 182171.95904095905 0.0 1.0 1.0 0.0 0.0 0.0 1.0 184737.951701427 0.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 1.0 185776.46347031964 0.0 0.0 0.0 1.0 0.0 0.0 906.0 0.0 186782.0 0.0 0.0 0.0 188334.07174392935 5.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1965.0 0.0 187595.7541966427 144619.2755267423 1.0 0.0 0.0 192391.802267002520.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 162189.70512820513 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 155578.6188811189 0.0 0.0 0.0 0.0 1.0
8 9.0 1.0 260380.61674771016 225928.18076923076 0.0 2006.0 182216.631 167645.4123076923 0.0 209450.394202898550.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 181235.93597560975182383.5220883534 0.0 1.0 1175.0 1.0 236446.98648648648 0.0 0.0 0.0 2006.0 2324.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 185630.71806674337 0.0 0.0 0.0 0.0 0.0 85.0 1.0 1.0 0.0 0.0 0.0 185063.6387995713 182171.959040959051.0 0.0 3.0 0.0 1.0 0.0 0.0 1.0 187738.31270358307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3.0 1.0 2.0 0.0 0.0 0.0 0.0 0.0 312352.6665305624511924.0 0.0 0.0 1.0 0.0 210965.119205298 0.0 188146.75027262812 0.0 153754.05472570908 0.0 0.0 0.0 0.0 182171.959040959051.0 301677.8909715284 2005.0 0.0 183201.273652085450.0 0.0 263880.6876061438 0.0 0.0 243875.5455802818 0.0 0.0 182282.48766816143 0.0 226465.82743362832 181982.57594936708 0.0 1.0 4.0 1.0 0.0 1.0 182171.959040959050.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 216426.0 187523.8671023965 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 305958.0876917603 182525.73333333337 0.0 185708.33940774488 243708.832 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 11.0 0.0 1.0 0.0 0.0 7.0 0.0 0.0 0.0 1182.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 736.0 0.0 176473.2899159664 21.0 0.0 1.0 177.0 0.0 1.0 0.0 0.0 0.0 222601.05940594056 1142.0 0.0 0.0 0.0 182171.95904095905 0.0 0.0 0.0 0.0 0.0 0.0 0.0 184737.951701427 0.0 0.0 0.0 0.0 60.0 0.0 1.0 0.0 1.0 185776.46347031964 0.0 0.0 0.0 1.0 0.0 0.0 998.0 0.0 186782.0 0.0 0.0 0.0 188334.07174392935 5.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 2005.0 0.0 187595.7541966427 348876.58744588745 0.0 0.0 0.0 192391.802267002520.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 1.0 286.0 155487.09385614385 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 256064.3778767624 147.0 0.0 0.0 0.0 1.0
9 5.0 1.0 177020.8800489596 182171.95904095905 0.0 2008.0 182216.631 167645.4123076923 0.0 220137.097304419731.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0 181235.93597560975182383.5220883534 0.0 0.0 912.0 1.0 161782.77448994666 1.0 0.0 0.0 1962.0 912.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 185630.71806674337 0.0 1.0 0.0 0.0 0.0 70.59975669099757 1.0 1.0 0.0 0.0 0.0 185063.6387995713 182171.959040959051.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 187738.31270358307 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 141930.0045558086412968.0 0.0 0.0 1.0 0.0 178321.97183098592 0.0 188146.75027262812 0.0 172512.37104060987 0.0 0.0 0.0 0.0 182171.959040959050.0 143540.98922651424 1962.0 0.0 183201.273652085450.0 0.0 174574.412169919640.0 0.0 133017.2480620155 0.0 0.0 182282.48766816143 0.0 150397.2807424594 181982.57594936708 0.0 0.0 2.0 1.0 0.0 1.0 182171.959040959050.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 141464.28231292518 187523.8671023965 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 139811.59481037923 182525.73333333337 0.0 185708.33940774488 141354.57177033494 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.0 0.0 0.0 0.0 0.0 9.0 0.0 0.0 0.0 912.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 352.0 0.0 176473.2899159664 0.0 0.0 0.0 175.0 0.0 1.0 0.0 0.0 0.0 222601.05940594056 0.0 0.0 0.0 0.0 182171.95904095905 0.0 1.0 1.0 0.0 0.0 0.0 1.0 184737.951701427 0.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 1.0 185776.46347031964 0.0 0.0 0.0 1.0 0.0 0.0 737.0 0.0 186782.0 0.0 0.0 0.0 188334.07174392935 6.0 1.0 0.0 176.0 0.0 0.0 0.0 0.0 1962.0 0.0 187595.7541966427 144619.2755267423 1.0 0.0 0.0 192391.802267002520.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 162189.70512820513 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 155578.6188811189 140.0 0.0 0.0 0.0 1.0
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "--------------------------------------------------------------------------------\n", "Imputed and encoded numeric validation data:\n", "Rows:459\n", "Cols:290\n", "\n", "\n" ] }, { "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", "
OverallQual KitchenAbvGr SaleCondition_Tencode FireplaceQu_Tencode Condition1_Artery YrSold Utilities_Tencode BsmtExposure_Tencode PavedDrive_N LotShape_Tencode GarageType_Detchd Exterior1st_BrkFace GarageFinish_Unf Exterior2nd_AsbShng Exterior2nd_Stucco BldgType_Duplex Neighborhood_BrDale ExterQual_TA LotShape_IR2 Exterior2nd_Stone RoofMatl_Tencode Street_Tencode LandContour_Low Neighborhood_NridgHt TotalBsmtSF RoofStyle_Hip BsmtFinType1_Tencode HouseStyle_1Story GarageCond_Po BldgType_2fmCon YearRemodAdd GrLivArea EnclosedPorch Foundation_PConc Neighborhood_NPkVill RoofStyle_Flat HeatingQC_TA Neighborhood_Blmngtn FireplaceQu_Gd BsmtFinType2_Tencode LotShape_Reg Exterior1st_HdBoard HeatingQC_Fa Alley_Pave BsmtFinType1_BLQ LotFrontage Heating_GasA GarageCond_TA Neighborhood_Somerst HouseStyle_SFoyer Neighborhood_ClearCr Functional_Tencode Alley_Tencode Functional_Typ GarageQual_Gd GarageCars BldgType_Twnhs LotShape_IR1 HeatingQC_Gd KitchenQual_Gd ExterCond_TA Electrical_Tencode Foundation_Stone BsmtFinType2_GLQ Electrical_FuseP Heating_Grav LotConfig_Corner Neighborhood_CollgCr MiscFeature_Othr Electrical_FuseA FullBath GarageFinish_Fin Fireplaces Neighborhood_Mitchel Exterior1st_AsbShng LandSlope_Mod SaleType_ConLw FireplaceQu_Po BsmtQual_Tencode LotArea Exterior2nd_BrkFace BsmtFinType2_ALQ RoofMatl_CompShg BsmtHalfBath HouseStyle_Tencode Neighborhood_NoRidge GarageCond_Tencode Foundation_BrkTil Exterior2nd_Tencode Exterior1st_Stucco MiscVal BsmtFinSF2 LotConfig_FR2 Fence_Tencode KitchenQual_Ex Neighborhood_Tencode YearBuilt LandSlope_Sev Heating_Tencode LandContour_HLS Neighborhood_OldTown SaleType_Tencode Exterior2nd_VinylSd SaleType_ConLD GarageType_Tencode SaleType_ConLI Heating_GasW LandContour_Tencode Neighborhood_Veenker Foundation_Tencode LandSlope_Tencode Neighborhood_Edwards BsmtQual_Ex BedroomAbvGr Electrical_SBrkr BsmtFinType2_BLQ PavedDrive_Y PoolQC_Tencode SaleCondition_Family BsmtFinType1_ALQ BsmtQual_Fa SaleType_WD LandContour_Bnk 3SsnPorch LandContour_Lvl Neighborhood_SWISU HeatingQC_Tencode PavedDrive_Tencode HalfBath Fence_GdPrv HeatingQC_Ex RoofMatl_Tar&Grv LotConfig_CulDSac HouseStyle_1.5Unf BsmtFullBath GarageQual_Fa ExterCond_Gd BsmtQual_TA Functional_Maj2 SaleCondition_Alloca Condition1_PosA GarageCond_Gd GarageQual_TA FireplaceQu_Fa KitchenQual_Tencode Condition2_Tencode BsmtFinType1_Rec ExterCond_Tencode GarageFinish_Tencode RoofStyle_Gambrel Exterior1st_CemntBd MSZoning_C (all) Condition1_PosN Exterior2nd_MetalSd RoofStyle_Gable GarageType_BuiltIn Electrical_FuseF Condition1_RRAe TotRmsAbvGrd LowQualFinSF SaleType_New RoofStyle_Shed Functional_Maj1 MoSold Neighborhood_NWAmes MasVnrType_BrkCmn Exterior2nd_CmentBd 1stFlrSF GarageCond_Fa BsmtFinType2_Rec GarageType_Attchd MiscFeature_Shed BsmtExposure_Av SaleCondition_Normal Condition1_Norm BsmtFinType2_LwQ GarageQual_Po Neighborhood_NAmes GarageArea Functional_Min1 LotConfig_Tencode OpenPorchSF Condition1_Feedr ExterQual_Ex BsmtUnfSF GarageType_CarPort LandSlope_Gtl Functional_Mod FireplaceQu_Ex MSZoning_RM RoofStyle_Tencode 2ndFlrSF Exterior2nd_Wd Sdng BsmtCond_Gd BsmtCond_Po MiscFeature_Tencode Neighborhood_StoneBr MasVnrType_None Neighborhood_Sawyer BldgType_TwnhsE ExterQual_Gd KitchenQual_Fa Foundation_CBlock BsmtCond_Tencode Neighborhood_Crawfor GarageType_Basment Condition2_Artery Fence_GdWo MSSubClass BsmtFinType1_LwQ SaleCondition_Partial Exterior1st_VinylSd CentralAir_Y Condition1_Tencode Street_Grvl PavedDrive_P GarageCond_Ex BsmtFinType2_Unf HouseStyle_2.5Unf Neighborhood_Gilbert BsmtFinSF1 PoolArea CentralAir_Tencode SaleType_COD GarageFinish_RFn FireplaceQu_TA GarageQual_Tencode OverallCond BldgType_1Fam SaleCondition_Abnorml ScreenPorch Exterior1st_BrkComm Exterior2nd_Brk Cmn SaleType_Oth BsmtExposure_Gd GarageYrBlt Alley_Grvl BldgType_Tencode ExterQual_Tencode KitchenQual_TA CentralAir_N Neighborhood_SawyerW MSZoning_Tencode BsmtFinType1_Unf Condition1_RRAn Neighborhood_IDOTRR Condition2_Norm MiscFeature_Gar2 SaleType_CWD Neighborhood_BrkSide HouseStyle_SLvl RoofMatl_WdShngl BsmtExposure_No MSZoning_FV BsmtFinType1_GLQ Exterior1st_WdShing MasVnrArea Exterior1st_Tencode Exterior2nd_HdBoard MSZoning_RL BsmtQual_Gd LotShape_IR3 Exterior2nd_Plywood BsmtExposure_Mn MasVnrType_BrkFace Neighborhood_Timber Foundation_Slab MSZoning_RH Exterior2nd_Wd Shng BsmtCond_Fa BsmtCond_TA HouseStyle_1.5Fin Exterior1st_MetalSd Fence_MnWw Exterior1st_Plywood MasVnrType_Stone Fence_MnPrv Street_Pave Functional_Min2 Utilities_AllPub Exterior1st_Wd Sdng ExterQual_Fa HouseStyle_2Story ExterCond_Fa MasVnrType_Tencode WoodDeckSF GarageType_2Types Exterior2nd_AsphShn Neighborhood_MeadowV LotConfig_Inside
type int int real real int int real real int real int int int int int int int int int int real real int int int int real int int int int int int int int int int int int real int int int int int real int int int int int real real int int int int int int int int real int int int int int int int int int int int int int int int int real int int int int int real int real int real int int int int real int real int int real int int real int int real int int real int real real int int int int int int real int int int int int int int int real real int int int int int int int int int int int int int int int int real real int real real int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int real int int int int int int int int int real int int int int real int int int int int int int real int int int int int int int int int real int int int int int int int int real int int int real int int int int int int int int real int real real int int int real int int int int int int int int int int int int int real real int int int int int int int int int int int int int int int int int int int int int int int int int int real int int int int int
mins 1.0 1.0 143816.52450980392 133191.52450980392 0.0 2006.0 178193.4967320261 161376.63366336634 0.0 163981.4191419142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 175904.0245098039295579.02450980392 0.0 0.0 0.0 0.0 146338.19117647057 0.0 0.0 0.0 1950.0 334.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 145091.52450980392 0.0 0.0 0.0 0.0 0.0 21.0 0.0 0.0 0.0 0.0 0.0 84954.02450980392 134607.547237076650.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100143.52450980392 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 134771.7517825312 1491.0 0.0 0.0 0.0 0.0 122402.59593837534 0.0 118776.9411764706 0.0 106204.02450980392 0.0 0.0 0.0 0.0 133419.962009803920.0 112866.7168174962 1872.0 0.0 77729.02450980392 0.0 0.0 107734.024509803920.0 0.0 111434.07450980392 0.0 0.0 163075.56297134238 0.0 110363.31736694677 175531.83179723503 0.0 0.0 0.0 0.0 0.0 0.0 178193.4967320261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100679.02450980392 114840.96895424835 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 105130.89950980392 84954.02450980392 0.0 91754.02450980392 143948.79679144386 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 334.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 165751.57330498463 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 139864.02450980392 0.0 0.0 0.0 0.0 73479.02450980392 0.0 0.0 0.0 0.0 0.0 0.0 0.0 78579.02450980392 0.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 0.0 150223.0311764706 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 111601.52450980392 0.0 0.0 0.0 134853.20367647058 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1900.0 0.0 128987.5661764706 91042.14950980392 0.0 0.0 0.0 118217.357843137240.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 96429.02450980392 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 131576.52450980392 0.0 0.0 0.0 0.0 0.0
mean 6.0 1.0457516339869282 177335.48292323467 194587.7731541999 0.043572984749455342007.7886710239652178193.49673202608 178366.11043615703 0.058823529411764705176786.222382417040.281045751633986930.034858387799564274 0.40740740740740740.017429193899782137 0.02178649237472767 0.0305010893246187370.010893246187363835 0.62962962962962970.0261437908496732030.002178649237472767177969.71943483275178225.259312657550.0326797385620915050.054466230936819175 1044.76034858387790.1830065359477124 180031.3096223675 0.4989106753812636 0.0043572984749455340.0261437908496732031984.27015250544671506.00435729847523.47276688453159 0.424836601307189530.008714596949891068 0.0087145969498910680.291938997821350740.010893246187363835 0.261437908496732 180587.69974155238 0.66013071895424840.1437908496732026 0.043572984749455340.021786492374727670.111111111111111168.85751978891821 0.9694989106753813 0.8910675381263616 0.058823529411764705 0.021786492374727670.010893246187363835 178425.73264556366 176164.9969256838 0.9302832244008714 0.0130718954248366021.710239651416122 0.028322440087145970.3028322440087146 0.167755991285403060.396514161220043570.8801742919389978179083.6277286514 0.0065359477124183010.0087145969498910680.0021786492374727670.0021786492374727670.180827886710239640.10457516339869281 0.0021786492374727670.076252723311546841.54466230936819170.22222222222222220.59694989106753820.02178649237472767 0.015250544662309368 0.047930283224400870.0087145969498910680.02178649237472767179069.5994297065510273.8082788671020.0196078431372549 0.021786492374727670.9803921568627451 0.05228758169934641177648.76674783204 0.02832244008714597 184432.01265538894 0.1111111111111111 179728.60882139349 0.02178649237472767 51.78649237472767 57.235294117647060.026143790849673203173941.1787702735 0.058823529411764705178193.49673202613 1969.01960784313720.006535947712418301178371.048677858950.0261437908496732030.09368191721132897 177239.637024221450.3289760348583878 0.006535947712418301185134.53079371183 0.0021786492374727670.023965141612200435177854.22806185656 0.010893246187363835 179041.90369302404 177815.9926203597 0.05664488017429194 0.076252723311546842.85620915032679750.89978213507625270.0326797385620915050.9193899782135077178198.693960300120.02178649237472767 0.169934640522875820.0239651416122004350.86274509803921570.028322440087145973.30718954248366 0.9128540305010894 0.02178649237472767 180663.66151693795 179002.9605814003 0.385620915032679760.041394335511982570.494553376906318070.0087145969498910680.056644880174291940.0152505446623093680.42265795206971680.0261437908496732030.089324618736383450.457516339869281030.0043572984749455340.006535947712418301 0.0021786492374727670.0043572984749455340.88235294117647060.023965141612200435177298.28443120164 178197.18104147978 0.08278867102396514178484.55631381093 181122.03431372548 0.0087145969498910680.04139433551198257 0.0065359477124183010.0174291938997821370.1503267973856209 0.7973856209150327 0.06535947712418301 0.021786492374727670.0108932461873638356.529411764705882 5.6688453159041390.09150326797385620.0021786492374727670.0108932461873638356.2331154684095860.04357298474945534 0.0087145969498910680.0392156862745098 1141.99128540305010.0261437908496732030.0392156862745098 0.5599128540305011 0.0392156862745098 0.152505446623093680.8300653594771242 0.83660130718954250.028322440087145970.0021786492374727670.16993464052287582 463.1917211328976 0.013071895424836602178163.26637404418 50.4466230936819140.065359477124183010.02832244008714597548.15904139433550.0065359477124183010.94553376906318090.0174291938997821370.0108932461873638350.1655773420479303177381.1458157119 358.34422657952070.14596949891067537 0.067538126361655780.002178649237472767177409.66351972884 0.010893246187363835 0.6361655773420479 0.04357298474945534 0.074074074074074070.324618736383442240.0348583877995642740.4422657952069717 180413.2355397497 0.030501089324618737 0.0108932461873638350.0021786492374727670.0413943355119825756.481481481481480.063180827886710240.0915032679738562 0.3420479302832244 0.9215686274509803178617.62590029472 0.0021786492374727670.021786492374727670.0021786492374727670.8431372549019608 0.0130718954248366020.058823529411764705 439.366013071895451.411764705882353 179115.1849288735 0.0196078431372549 0.2984749455337691 0.19389978213507625184195.20382758768 5.5577342047930290.840958605664488 0.05010893246187364 15.7102396514161220.002178649237472767 0.008714596949891068 0.0043572984749455340.082788671023965141977.99530516431920.04793028322440087178649.14910504507174940.2994916485 0.50980392156862740.07843137254901960.034858387799564274 179328.326688453120.281045751633986930.0196078431372549 0.02832244008714597 0.99128540305010890.0021786492374727670.0043572984749455340.054466230936819175 0.0305010893246187370.0108932461873638350.6601307189542484 0.043572984749455340.2657952069716776 0.015250544662309368 96.68340611353712179651.10523303002 0.14161220043572983 0.77777777777777780.416122004357298460.0108932461873638350.08496732026143791 0.07843137254901960.28540305010893247 0.0196078431372549 0.0152505446623093680.0065359477124183010.032679738562091505 0.0326797385620915050.8714596949891068 0.098039215686274510.15904139433551198 0.0174291938997821370.06971677559912855 0.067538126361655780.100217864923747280.9978213507625272 0.0239651416122004351.0 0.1503267973856209 0.0174291938997821370.3115468409586057 0.02178649237472767176108.20460862629 101.159041394335520.0043572984749455340.004357298474945534 0.013071895424836602 0.7363834422657952
maxs 10.0 2.0 255001.6042717087 345181.5245098039 1.0 2010.0 178193.4967320261 252970.21398348815 1.0 257372.274509803921.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 296434.0245098039 178405.7096069869 1.0 1.0 3200.0 1.0 224699.7863950498 1.0 1.0 1.0 2009.0 3608.0 301.0 1.0 1.0 1.0 1.0 1.0 1.0 194068.52450980392 1.0 1.0 1.0 1.0 1.0 182.0 1.0 1.0 1.0 1.0 1.0 181312.14950980392 180974.444509803931.0 1.0 4.0 1.0 1.0 1.0 1.0 1.0 184788.65617433417 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 3.0 1.0 3.0 1.0 1.0 1.0 1.0 1.0 287410.74022408965215245.0 1.0 1.0 1.0 1.0 221634.02450980392 1.0 187300.52567237164 1.0 237481.8022875817 1.0 8300.0 1474.0 1.0 181956.919246646 1.0 288359.0245098039 2009.0 1.0 179414.4157303371 1.0 1.0 255001.6042717087 1.0 1.0 243247.1728431373 1.0 1.0 252389.99950980392 1.0 222366.88205128204 219485.8426916221 1.0 1.0 6.0 1.0 1.0 1.0 180579.024509803921.0 1.0 1.0 1.0 1.0 407.0 1.0 1.0 211491.75330396477 184063.06872037915 2.0 1.0 1.0 1.0 1.0 1.0 2.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 307728.635620915 302979.0245098039 1.0 197862.3578431373 223156.8495098039 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 12.0 572.0 1.0 1.0 1.0 12.0 1.0 1.0 1.0 3228.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1248.0 1.0 221371.6687405731 547.0 1.0 1.0 2336.0 1.0 1.0 1.0 1.0 1.0 205162.1274859944 1611.0 1.0 1.0 1.0 188229.02450980392 1.0 1.0 1.0 1.0 1.0 1.0 1.0 204324.734187223251.0 1.0 1.0 1.0 190.0 1.0 1.0 1.0 1.0 311479.0245098039 1.0 1.0 1.0 1.0 1.0 1.0 1880.0 648.0 184861.02836879433 1.0 1.0 1.0 282791.5245098039 9.0 1.0 1.0 480.0 1.0 1.0 1.0 1.0 2009.0 1.0 183943.1995098039 311103.9129713424 1.0 1.0 1.0 219311.6970098039 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1600.0 230256.21200980392 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 243111.468058191 857.0 1.0 1.0 1.0 1.0
sigma 1.44173597447221110.2091739611899642625636.556448480504 26261.653007677996 0.204365779535131461.35306629720753452.5135516264537697e-1127626.169564810076 0.23555084889380104 21170.4226490213220.4500002378437404 0.18362117945411424 0.49188793859694330.1310069037882297 0.14614504277920642 0.172149173337855 0.10391394837112493 0.48343078205836830.15973691874197046 0.04667600280093366 12445.8724128997533866.01858558816230.17799099580759073 0.2271829775714029 412.081185132844440.3870937819534913727951.82176724416 0.5005443659750534 0.06593773367971356 0.15973691874197046 20.739310451691143537.104943660910661.3210181735312640.494857534844919230.09304576528310601 0.09304576528310601 0.4551504724840862 0.10391394837112493 0.439897395193242176894.848900014341 0.47418141866773310.3512603754441095 0.204365779535131460.146145042779206420.314612582626658520.3336957672701180.172149173337855040.311894398019551430.23555084889380104 0.146145042779206420.10391394837112493 8139.874204543357 9343.37774237094 0.254946964177438950.11370659234585333 0.77129431516622660.166073379628124680.459984616419216060.3740571514579301 0.489707208348205 0.325111959407647217731.970597652497 0.08066849729623203 0.09304576528310601 0.04667600280093366 0.04667600280093366 0.385295455743078550.30633911111302276 0.04667600280093366 0.2656916272579344 0.54459315902805590.41619332648094930.65156132576993160.14614504277920642 0.12268152211154956 0.213851833012183250.093045765283106 0.1461450427792064244973.30052212846 11072.9887857232240.13879966880587874 0.146145042779206420.138799668805878740.2228492452574714 21371.858060255647 0.16607337962812466 11807.813469454748 0.3146125826266585 26639.054892573466 0.14614504277920642 449.54109321577573185.24001065203290.15973691874197044 10548.08650865389 0.23555084889380104 47446.35307377432 30.8235159309202440.08066849729623203 7482.963820995197 0.15973691874197046 0.29170361506006576 25705.6486190496940.4703539008032539 0.08066849729623203 30435.668123888274 0.04667600280093366 0.15310743040467312 12704.54644175498 0.1039139483711249 37636.63649998418 9612.485004032436 0.23141501838140016 0.2656916272579344 0.83914830486512340.30061791608375680.17799099580759078 0.2725323152743117111.3469012372631 0.14614504277920642 0.375985163112035060.15310743040467312 0.34449171841051450.1660733796281246628.184579011387560.282356588091234540.14614504277920642 31183.876623648655 17370.731330504437 0.5091844194507408 0.199417862534865510.5005158549466561 0.09304576528310601 0.231415018381400160.12268152211154956 0.51612504260465520.15973691874197046 0.2855229272595246 0.4987354503190191 0.06593773367971356 0.08066849729623203 0.04667600280093366 0.06593773367971356 0.32254128344656410.15310743040467312 48579.93227209305 7675.71672468966 0.2758631966708999 12461.390436783056 32859.958768536344 0.09304576528310601 0.19941786253486551 0.08066849729623203 0.1310069037882297 0.3577814065762584 0.402386067699143870.24742876742245962 0.146145042779206420.1039139483711249 1.706878545585754546.660851634977130.28863805603392590.04667600280093366 0.10391394837112493 2.7620544236992080.20436577953513146 0.093045765283106 0.19431953632823026 373.0166882400161 0.15973691874197046 0.194319536328230240.4969390948644701 0.194319536328230260.359902396813744860.37598516311203506 0.37013245014901 0.166073379628124660.04667600280093366 0.37598516311203506 221.954985446370360.11370659234585333 11574.452561519602 72.74780631554772 0.247428767422459620.16607337962812466436.03582789669870.08066849729623203 0.22718297757140290.1310069037882297 0.10391394837112493 0.372106367160156913516.296484902436 444.58569991411460.3534608789584997 0.251225459740467670.04667600280093366 5663.060039991692 0.10391394837112493 0.481626727250485050.20436577953513146 0.2621771521888821 0.468743112389263360.18362117945411424 0.4971974812005726 13346.5506402785870.17214917333785504 0.1039139483711249 0.04667600280093366 0.1994178625348655142.516182190064540.243553370993828 0.2886380560339259 0.47491317281703105 0.269142543474526412058.531723299979 0.04667600280093366 0.146145042779206420.04667600280093366 0.364068118155211230.11370659234585333 0.23555084889380104 431.4241433973325 30.24604981500501219717.249202290564 0.138799668805878740.458088234626017050.3957826787506991 10759.770112055136 1.1646354111862860.366113716953193450.21840776811577012 59.1279137021035340.04667600280093366 0.093045765283106 0.06593773367971355 0.2758631966708999 23.8354067943704030.2138518330121832511313.68629107155246704.67697264016 0.50044932289701540.26914254347452640.18362117945411424 22954.50756787529 0.4500002378437404 0.138799668805878740.16607337962812466 0.093045765283106 0.04667600280093366 0.06593773367971356 0.2271829775714029 0.172149173337855 0.10391394837112493 0.474181418667733060.204365779535131460.442237721717322340.12268152211154956 183.006592418819 27697.042657464834 0.349032371003077 0.41619332648094930.493452096947616550.1039139483711249 0.279137295849318 0.26914254347452640.45209893909744425 0.13879966880587874 0.12268152211154958 0.08066849729623203 0.17799099580759078 0.17799099580759078 0.335055629886566840.2976921246503835 0.3661137169531934 0.1310069037882297 0.25494696417743895 0.251225459740467670.3006179160837569 0.046676002800933660.15310743040467312 0.0 0.3577814065762584 0.1310069037882297 0.463631012331890750.1461450427792064527404.304553567163 136.042805602811280.06593773367971355 0.06593773367971356 0.11370659234585333 0.4410745030942369
zeros 0 0 0 0 439 0 0 0 432 0 330 443 272 451 449 445 454 170 447 458 0 0 444 434 12 375 0 230 457 447 0 0 385 264 455 455 325 454 339 0 156 393 439 449 408 0 14 50 432 449 454 0 0 32 453 33 446 320 382 277 55 0 456 455 458 458 376 411 458 424 3 357 224 449 452 437 455 449 0 0 450 449 9 435 0 446 0 408 0 449 439 399 447 0 432 0 0 456 0 447 416 0 308 456 0 458 448 0 454 0 0 433 424 2 46 444 37 0 449 381 448 63 446 451 40 449 0 0 287 440 232 455 433 452 270 447 418 249 457 456 458 457 54 448 0 0 421 0 0 455 440 456 451 390 93 429 449 454 0 450 417 458 454 0 439 455 441 0 447 441 202 441 389 78 75 446 458 381 33 453 0 196 429 446 40 456 25 451 454 383 0 257 392 428 458 0 454 167 439 425 310 443 256 0 445 454 458 440 0 430 417 302 36 0 458 449 458 72 453 432 141 458 0 450 322 370 0 0 73 436 423 458 455 457 421 0 437 0 0 225 423 443 0 330 450 446 4 458 457 434 445 454 156 439 337 452 291 0 394 102 268 454 420 423 328 450 452 456 444 444 59 414 386 451 427 428 413 1 448 0 390 451 316 449 0 238 457 457 453 121
missing0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 7.0 1.0 147087.25059676045 219907.1857598039 0.0 2006.0 178193.4967320261 161376.63366336634 0.0 194850.585660883051.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 756.0 0.0 169309.44117647057 0.0 0.0 0.0 1970.0 1717.0 272.0 0.0 0.0 0.0 0.0 0.0 1.0 182592.86046511628 0.0 0.0 0.0 0.0 0.0 60.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 3.0 0.0 1.0 1.0 1.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 138313.571428571429550.0 0.0 0.0 1.0 0.0 203633.455628685 0.0 187300.52567237164 1.0 180267.3578431373 0.0 0.0 0.0 0.0 178193.4967320261 0.0 216008.84593837537 1915.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 0.0 0.0 142532.16792065662 0.0 0.0 175715.78281622913 0.0 144486.10784313726 175531.83179723503 0.0 0.0 3.0 1.0 0.0 1.0 178193.4967320261 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 158961.70308123247 184063.06872037915 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 211880.81318681315 178218.27472527474 0.0 180398.05693069307 143948.79679144386 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 7.0 0.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0 961.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 642.0 0.0 165751.57330498463 35.0 0.0 0.0 540.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 756.0 0.0 1.0 0.0 178193.4967320261 0.0 1.0 0.0 0.0 0.0 0.0 0.0 204324.734187223251.0 0.0 0.0 0.0 70.0 0.0 0.0 0.0 1.0 181573.27604166663 0.0 0.0 0.0 1.0 0.0 0.0 216.0 0.0 184861.02836879433 0.0 0.0 0.0 185601.24938271605 5.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 1998.0 0.0 181805.66321243523143747.87889273357 0.0 0.0 0.0 187920.610644257710.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 154595.81798806478 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 1.0 0.0 1.0 0.0 157482.0 0.0 0.0 0.0 0.0 0.0
1 7.0 1.0 171302.3622047244 205118.42900418595 0.0 2009.0 178193.4967320261 199413.65506535943 0.0 194850.585660883050.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 1107.0 0.0 169309.44117647057 0.0 0.0 0.0 1973.0 2090.0 228.0 0.0 0.0 0.0 0.0 0.0 0.0 156634.52450980392 0.0 1.0 0.0 0.0 0.0 68.85751978891821 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 2.0 0.0 1.0 0.0 0.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 2.0 0.0 2.0 0.0 0.0 0.0 0.0 0.0 206633.0314136125710382.0 0.0 0.0 1.0 0.0 203633.455628685 0.0 187300.52567237164 0.0 169568.25527903467 0.0 350.0 32.0 0.0 178193.4967320261 0.0 184610.14950980392 1973.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 0.0 0.0 201051.39688715953 0.0 0.0 175715.78281622913 0.0 148549.72906403942 175531.83179723503 0.0 0.0 3.0 1.0 1.0 1.0 178193.4967320261 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 211491.75330396477 184063.06872037915 1.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 140285.62820512822 178218.27472527474 0.0 180398.05693069307 201271.56721053383 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 7.0 0.0 0.0 0.0 0.0 11.0 1.0 0.0 0.0 1107.0 0.0 0.0 1.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 484.0 0.0 165751.57330498463 204.0 0.0 0.0 216.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 983.0 0.0 0.0 0.0 163465.69117647057 0.0 0.0 0.0 0.0 0.0 0.0 1.0 181115.23 0.0 0.0 0.0 0.0 60.0 0.0 0.0 0.0 1.0 197366.52450980392 0.0 0.0 0.0 0.0 0.0 0.0 859.0 0.0 184861.02836879433 0.0 1.0 1.0 185601.24938271605 6.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1973.0 0.0 181805.66321243523143747.87889273357 1.0 0.0 0.0 187920.610644257710.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 240.0 167128.41844919784 1.0 1.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 243111.468058191 235.0 0.0 0.0 0.0 0.0
2 5.0 2.0 171302.3622047244 205118.42900418595 1.0 2008.0 178193.4967320261 161376.63366336634 0.0 163981.4191419142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 991.0 0.0 224699.7863950498 0.0 0.0 1.0 1950.0 1077.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 182592.86046511628 1.0 0.0 0.0 0.0 0.0 50.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 1.0 1.0 0.0 0.0 0.0 0.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 2.0 0.0 0.0 0.0 0.0 0.0 138313.571428571427420.0 0.0 0.0 1.0 0.0 122402.59593837534 0.0 187300.52567237164 1.0 151828.55059676044 0.0 0.0 0.0 0.0 178193.4967320261 0.0 129965.77450980392 1939.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 0.0 0.0 201051.39688715953 0.0 0.0 175715.78281622913 0.0 144486.10784313726 175531.83179723503 0.0 0.0 2.0 1.0 0.0 1.0 178193.4967320261 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 211491.75330396477 184063.06872037915 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 140285.62820512822 127029.02450980392 0.0 180398.05693069307 201271.56721053383 0.0 0.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1077.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 205.0 0.0 165751.57330498463 4.0 0.0 0.0 140.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 0.0 0.0 0.0 0.0 178193.4967320261 0.0 1.0 0.0 0.0 0.0 0.0 0.0 181115.23 0.0 0.0 1.0 0.0 190.0 0.0 0.0 0.0 1.0 152316.52450980392 0.0 0.0 0.0 1.0 0.0 0.0 851.0 0.0 184861.02836879433 0.0 1.0 1.0 194951.1078431373 6.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1939.0 0.0 128987.5661764706 143747.87889273357 1.0 0.0 0.0 187920.610644257710.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 151733.02861939298 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 157482.0 0.0 0.0 0.0 0.0 0.0
3 7.0 1.0 171302.3622047244 178193.4967320261 0.0 2007.0 178193.4967320261 161376.63366336634 0.0 163981.4191419142 1.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 832.0 0.0 168970.16598267213 0.0 0.0 0.0 2001.0 854.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 182592.86046511628 1.0 0.0 0.0 0.0 0.0 51.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 2.0 0.0 0.0 0.0 0.0 1.0 135344.4530812325 0.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 138313.571428571426120.0 0.0 0.0 1.0 0.0 122402.59593837534 0.0 187300.52567237164 1.0 163767.73719637108 0.0 0.0 0.0 0.0 181956.919246646 0.0 129965.77450980392 1929.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 0.0 0.0 142532.16792065662 0.0 0.0 175715.78281622913 0.0 144486.10784313726 175531.83179723503 0.0 0.0 2.0 0.0 0.0 1.0 178193.4967320261 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 211491.75330396477 184063.06872037915 0.0 1.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 140285.62820512822 178218.27472527474 0.0 180398.05693069307 143948.79679144386 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 0.0 7.0 0.0 0.0 0.0 854.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 576.0 0.0 165751.57330498463 112.0 0.0 0.0 832.0 0.0 1.0 0.0 0.0 1.0 171401.71038251367 0.0 1.0 0.0 0.0 178193.4967320261 0.0 1.0 0.0 0.0 0.0 0.0 0.0 181115.23 0.0 0.0 0.0 0.0 45.0 0.0 0.0 0.0 1.0 181573.27604166663 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 184861.02836879433 0.0 0.0 0.0 185601.24938271605 8.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1991.0 0.0 181805.66321243523143747.87889273357 1.0 0.0 0.0 132608.827141382851.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 154595.81798806478 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 1.0 0.0 0.0 0.0 157482.0 48.0 0.0 0.0 0.0 0.0
4 6.0 1.0 171302.3622047244 205118.42900418595 0.0 2010.0 178193.4967320261 161376.63366336634 0.0 194850.585660883050.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 1004.0 0.0 169309.44117647057 1.0 0.0 0.0 1970.0 1004.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 182592.86046511628 0.0 0.0 0.0 0.0 0.0 68.85751978891821 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 2.0 0.0 1.0 0.0 0.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 138313.5714285714211241.0 0.0 0.0 1.0 0.0 170914.57205240175 0.0 187300.52567237164 0.0 163767.73719637108 0.0 700.0 0.0 0.0 178193.4967320261 0.0 152080.32258672698 1970.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 0.0 0.0 201051.39688715953 0.0 0.0 175715.78281622913 0.0 148549.72906403942 175531.83179723503 0.0 0.0 2.0 1.0 0.0 1.0 178193.4967320261 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 211491.75330396477 184063.06872037915 0.0 0.0 1.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 140285.62820512822 178218.27472527474 0.0 180398.05693069307 223156.8495098039 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 0.0 3.0 0.0 0.0 0.0 1004.0 0.0 0.0 1.0 1.0 0.0 1.0 1.0 0.0 0.0 1.0 480.0 0.0 221371.6687405731 0.0 0.0 0.0 426.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 0.0 1.0 0.0 0.0 163465.69117647057 0.0 0.0 0.0 0.0 0.0 0.0 1.0 181115.23 0.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 1.0 181573.27604166663 0.0 0.0 0.0 1.0 0.0 0.0 578.0 0.0 184861.02836879433 0.0 0.0 1.0 185601.24938271605 7.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1970.0 0.0 181805.66321243523143747.87889273357 1.0 0.0 0.0 187920.610644257710.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 180.0 154595.81798806478 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 1.0 0.0 0.0 0.0 203114.2504640024 0.0 0.0 0.0 0.0 0.0
5 5.0 1.0 171302.3622047244 178193.4967320261 0.0 2008.0 178193.4967320261 161376.63366336634 0.0 163981.4191419142 1.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 1114.0 0.0 224699.7863950498 1.0 0.0 0.0 2004.0 1114.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 182592.86046511628 1.0 0.0 0.0 0.0 0.0 66.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 2.0 0.0 0.0 0.0 1.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 138313.5714285714213695.0 0.0 0.0 1.0 0.0 170914.57205240175 0.0 187300.52567237164 0.0 209302.39072847684 0.0 0.0 0.0 0.0 178193.4967320261 0.0 189097.7776348039 2004.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 1.0 0.0 142532.16792065662 0.0 0.0 175715.78281622913 0.0 222366.88205128204 175531.83179723503 0.0 0.0 3.0 1.0 0.0 1.0 178193.4967320261 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 211491.75330396477 184063.06872037915 1.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 211880.81318681315 178218.27472527474 0.0 180398.05693069307 143948.79679144386 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 6.0 0.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 1114.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 576.0 0.0 177919.81360946747 102.0 0.0 0.0 468.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 0.0 0.0 0.0 0.0 178193.4967320261 0.0 1.0 0.0 0.0 0.0 0.0 0.0 181115.23 0.0 0.0 0.0 0.0 20.0 0.0 0.0 1.0 1.0 150829.02450980392 0.0 0.0 0.0 1.0 0.0 0.0 646.0 0.0 184861.02836879433 0.0 0.0 0.0 185601.24938271605 5.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 2004.0 0.0 181805.66321243523143747.87889273357 0.0 0.0 1.0 187920.610644257710.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 206602.9363057325 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 157482.0 0.0 0.0 0.0 0.0 1.0
6 7.0 1.0 171302.3622047244 219907.1857598039 0.0 2007.0 178193.4967320261 161376.63366336634 1.0 163981.4191419142 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 637.0 0.0 168970.16598267213 0.0 0.0 0.0 1950.0 1108.0 205.0 1.0 0.0 0.0 0.0 0.0 1.0 182592.86046511628 1.0 0.0 0.0 0.0 0.0 57.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 134607.547237076651.0 0.0 1.0 0.0 0.0 0.0 1.0 1.0 100143.52450980392 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 138313.571428571427449.0 0.0 0.0 1.0 0.0 122402.59593837534 0.0 187300.52567237164 0.0 163767.73719637108 0.0 0.0 0.0 0.0 181956.919246646 0.0 112866.7168174962 1930.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 0.0 0.0 201051.39688715953 0.0 0.0 163075.56297134238 0.0 222366.88205128204 175531.83179723503 0.0 0.0 3.0 0.0 0.0 0.0 178193.4967320261 0.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 211491.75330396477 114840.96895424835 0.0 1.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 211880.81318681315 178218.27472527474 0.0 180398.05693069307 143948.79679144386 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 6.0 0.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 1108.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 280.0 0.0 177919.81360946747 0.0 0.0 0.0 637.0 0.0 1.0 0.0 0.0 1.0 171401.71038251367 0.0 1.0 0.0 0.0 178193.4967320261 0.0 1.0 0.0 0.0 0.0 0.0 0.0 181115.23 0.0 0.0 0.0 0.0 45.0 0.0 0.0 0.0 1.0 181573.27604166663 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 184861.02836879433 0.0 0.0 0.0 185601.24938271605 7.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1930.0 1.0 181805.66321243523143747.87889273357 0.0 0.0 0.0 132608.827141382851.0 0.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 154595.81798806478 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 1.0 0.0 0.0 0.0 157482.0 0.0 0.0 0.0 0.0 1.0
7 4.0 1.0 171302.3622047244 178193.4967320261 0.0 2008.0 178193.4967320261 161376.63366336634 0.0 194850.585660883051.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 520.0 0.0 168970.16598267213 1.0 0.0 0.0 1950.0 520.0 87.0 0.0 0.0 0.0 0.0 0.0 0.0 182592.86046511628 0.0 0.0 1.0 0.0 0.0 60.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 138313.571428571426324.0 0.0 0.0 1.0 0.0 170914.57205240175 0.0 187300.52567237164 1.0 151828.55059676044 0.0 0.0 0.0 0.0 178193.4967320261 0.0 129965.77450980392 1927.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 0.0 0.0 142532.16792065662 0.0 0.0 175715.78281622913 0.0 144486.10784313726 175531.83179723503 0.0 0.0 1.0 1.0 0.0 1.0 178193.4967320261 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 127694.14950980392 184063.06872037915 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 105130.89950980392 84954.02450980392 0.0 180398.05693069307 143948.79679144386 0.0 0.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 4.0 0.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 520.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 240.0 0.0 177919.81360946747 0.0 1.0 0.0 520.0 0.0 1.0 0.0 0.0 1.0 171401.71038251367 0.0 0.0 0.0 0.0 178193.4967320261 0.0 1.0 0.0 0.0 0.0 1.0 0.0 181115.23 0.0 0.0 0.0 0.0 30.0 0.0 0.0 0.0 0.0 150223.0311764706 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 111601.52450980392 0.0 0.0 0.0 134853.20367647058 6.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1920.0 0.0 181805.66321243523143747.87889273357 0.0 1.0 0.0 132608.827141382851.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 151733.02861939298 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 157482.0 49.0 0.0 0.0 0.0 1.0
8 5.0 1.0 171302.3622047244 178193.4967320261 0.0 2008.0 178193.4967320261 161376.63366336634 0.0 194850.585660883050.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 1228.0 0.0 168970.16598267213 1.0 0.0 0.0 2006.0 1228.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 182592.86046511628 0.0 1.0 0.0 0.0 0.0 68.85751978891821 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 1.0 0.0 1.0 1.0 1.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 138313.571428571428544.0 0.0 0.0 1.0 0.0 170914.57205240175 0.0 187300.52567237164 0.0 169568.25527903467 0.0 0.0 0.0 0.0 151206.9049445865 0.0 143162.40700980392 1966.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 0.0 0.0 201051.39688715953 0.0 0.0 175715.78281622913 0.0 148549.72906403942 175531.83179723503 0.0 0.0 3.0 1.0 0.0 1.0 178193.4967320261 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 158961.70308123247 184063.06872037915 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 211880.81318681315 178218.27472527474 0.0 180398.05693069307 143948.79679144386 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 1228.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 271.0 0.0 221371.6687405731 65.0 0.0 0.0 1228.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 0.0 0.0 0.0 0.0 178193.4967320261 0.0 1.0 1.0 0.0 0.0 0.0 1.0 181115.23 0.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 1.0 181573.27604166663 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 184861.02836879433 0.0 0.0 0.0 185601.24938271605 6.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1966.0 0.0 181805.66321243523143747.87889273357 0.0 0.0 0.0 187920.610644257711.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 167128.41844919784 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 157482.0 0.0 0.0 0.0 0.0 0.0
9 5.0 1.0 171302.3622047244 178193.4967320261 0.0 2009.0 178193.4967320261 161376.63366336634 0.0 163981.4191419142 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 1097.0 0.0 168970.16598267213 1.0 0.0 0.0 1995.0 1097.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 182592.86046511628 1.0 0.0 0.0 0.0 0.0 112.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 2.0 0.0 0.0 0.0 0.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 1.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 206633.0314136125710859.0 0.0 0.0 1.0 0.0 170914.57205240175 0.0 187300.52567237164 0.0 209302.39072847684 0.0 0.0 0.0 0.0 178193.4967320261 0.0 190019.7797181373 1994.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 1.0 0.0 201051.39688715953 0.0 0.0 175715.78281622913 0.0 222366.88205128204 175531.83179723503 0.0 0.0 3.0 1.0 0.0 1.0 178193.4967320261 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 211491.75330396477 184063.06872037915 1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 140285.62820512822 178218.27472527474 0.0 180398.05693069307 143948.79679144386 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 1097.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 672.0 0.0 165751.57330498463 64.0 0.0 0.0 1097.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 0.0 0.0 0.0 0.0 178193.4967320261 0.0 1.0 0.0 0.0 0.0 0.0 0.0 181115.23 0.0 0.0 0.0 0.0 20.0 0.0 0.0 1.0 1.0 181573.27604166663 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 184861.02836879433 0.0 0.0 0.0 185601.24938271605 5.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1995.0 0.0 181805.66321243523143747.87889273357 1.0 0.0 0.0 187920.610644257711.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 206602.9363057325 0.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 157482.0 392.0 0.0 0.0 0.0 0.0
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "--------------------------------------------------------------------------------\n", "Imputed and encoded numeric test data:\n", "Rows:1459\n", "Cols:290\n", "\n", "\n" ] }, { "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", "
OverallQual KitchenAbvGr SaleCondition_Tencode FireplaceQu_Tencode Condition1_Artery YrSold Utilities_Tencode BsmtExposure_Tencode PavedDrive_N LotShape_Tencode GarageType_Detchd Exterior1st_BrkFace GarageFinish_Unf Exterior2nd_AsbShng Exterior2nd_Stucco BldgType_Duplex Neighborhood_BrDale ExterQual_TA LotShape_IR2 Exterior2nd_Stone RoofMatl_Tencode Street_Tencode LandContour_Low Neighborhood_NridgHt TotalBsmtSF RoofStyle_Hip BsmtFinType1_Tencode HouseStyle_1Story GarageCond_Po BldgType_2fmCon YearRemodAdd GrLivArea EnclosedPorch Foundation_PConc Neighborhood_NPkVill RoofStyle_Flat HeatingQC_TA Neighborhood_Blmngtn FireplaceQu_Gd BsmtFinType2_Tencode LotShape_Reg Exterior1st_HdBoard HeatingQC_Fa Alley_Pave BsmtFinType1_BLQ LotFrontage Heating_GasA GarageCond_TA Neighborhood_Somerst HouseStyle_SFoyer Neighborhood_ClearCr Functional_Tencode Alley_Tencode Functional_Typ GarageQual_Gd GarageCars BldgType_Twnhs LotShape_IR1 HeatingQC_Gd KitchenQual_Gd ExterCond_TA Electrical_Tencode Foundation_Stone BsmtFinType2_GLQ Electrical_FuseP Heating_Grav LotConfig_Corner Neighborhood_CollgCr MiscFeature_Othr Electrical_FuseA FullBath GarageFinish_Fin Fireplaces Neighborhood_Mitchel Exterior1st_AsbShng LandSlope_Mod SaleType_ConLw FireplaceQu_Po BsmtQual_Tencode LotArea Exterior2nd_BrkFace BsmtFinType2_ALQ RoofMatl_CompShg BsmtHalfBath HouseStyle_Tencode Neighborhood_NoRidge GarageCond_Tencode Foundation_BrkTil Exterior2nd_Tencode Exterior1st_Stucco MiscVal BsmtFinSF2 LotConfig_FR2 Fence_Tencode KitchenQual_Ex Neighborhood_Tencode YearBuilt LandSlope_Sev Heating_Tencode LandContour_HLS Neighborhood_OldTown SaleType_Tencode Exterior2nd_VinylSd SaleType_ConLD GarageType_Tencode SaleType_ConLI Heating_GasW LandContour_Tencode Neighborhood_Veenker Foundation_Tencode LandSlope_Tencode Neighborhood_Edwards BsmtQual_Ex BedroomAbvGr Electrical_SBrkr BsmtFinType2_BLQ PavedDrive_Y PoolQC_Tencode SaleCondition_Family BsmtFinType1_ALQ BsmtQual_Fa SaleType_WD LandContour_Bnk 3SsnPorch LandContour_Lvl Neighborhood_SWISU HeatingQC_Tencode PavedDrive_Tencode HalfBath Fence_GdPrv HeatingQC_Ex RoofMatl_Tar&Grv LotConfig_CulDSac HouseStyle_1.5Unf BsmtFullBath GarageQual_Fa ExterCond_Gd BsmtQual_TA Functional_Maj2 SaleCondition_Alloca Condition1_PosA GarageCond_Gd GarageQual_TA FireplaceQu_Fa KitchenQual_Tencode Condition2_Tencode BsmtFinType1_Rec ExterCond_Tencode GarageFinish_Tencode RoofStyle_Gambrel Exterior1st_CemntBd MSZoning_C (all) Condition1_PosN Exterior2nd_MetalSd RoofStyle_Gable GarageType_BuiltIn Electrical_FuseF Condition1_RRAe TotRmsAbvGrd LowQualFinSF SaleType_New RoofStyle_Shed Functional_Maj1 MoSold Neighborhood_NWAmes MasVnrType_BrkCmn Exterior2nd_CmentBd 1stFlrSF GarageCond_Fa BsmtFinType2_Rec GarageType_Attchd MiscFeature_Shed BsmtExposure_Av SaleCondition_Normal Condition1_Norm BsmtFinType2_LwQ GarageQual_Po Neighborhood_NAmes GarageArea Functional_Min1 LotConfig_Tencode OpenPorchSF Condition1_Feedr ExterQual_Ex BsmtUnfSF GarageType_CarPort LandSlope_Gtl Functional_Mod FireplaceQu_Ex MSZoning_RM RoofStyle_Tencode 2ndFlrSF Exterior2nd_Wd Sdng BsmtCond_Gd BsmtCond_Po MiscFeature_Tencode Neighborhood_StoneBr MasVnrType_None Neighborhood_Sawyer BldgType_TwnhsE ExterQual_Gd KitchenQual_Fa Foundation_CBlock BsmtCond_Tencode Neighborhood_Crawfor GarageType_Basment Condition2_Artery Fence_GdWo MSSubClass BsmtFinType1_LwQ SaleCondition_Partial Exterior1st_VinylSd CentralAir_Y Condition1_Tencode Street_Grvl PavedDrive_P GarageCond_Ex BsmtFinType2_Unf HouseStyle_2.5Unf Neighborhood_Gilbert BsmtFinSF1 PoolArea CentralAir_Tencode SaleType_COD GarageFinish_RFn FireplaceQu_TA GarageQual_Tencode OverallCond BldgType_1Fam SaleCondition_Abnorml ScreenPorch Exterior1st_BrkComm Exterior2nd_Brk Cmn SaleType_Oth BsmtExposure_Gd GarageYrBlt Alley_Grvl BldgType_Tencode ExterQual_Tencode KitchenQual_TA CentralAir_N Neighborhood_SawyerW MSZoning_Tencode BsmtFinType1_Unf Condition1_RRAn Neighborhood_IDOTRR Condition2_Norm MiscFeature_Gar2 SaleType_CWD Neighborhood_BrkSide HouseStyle_SLvl RoofMatl_WdShngl BsmtExposure_No MSZoning_FV BsmtFinType1_GLQ Exterior1st_WdShing MasVnrArea Exterior1st_Tencode Exterior2nd_HdBoard MSZoning_RL BsmtQual_Gd LotShape_IR3 Exterior2nd_Plywood BsmtExposure_Mn MasVnrType_BrkFace Neighborhood_Timber Foundation_Slab MSZoning_RH Exterior2nd_Wd Shng BsmtCond_Fa BsmtCond_TA HouseStyle_1.5Fin Exterior1st_MetalSd Fence_MnWw Exterior1st_Plywood MasVnrType_Stone Fence_MnPrv Street_Pave Functional_Min2 Utilities_AllPub Exterior1st_Wd Sdng ExterQual_Fa HouseStyle_2Story ExterCond_Fa MasVnrType_Tencode WoodDeckSF GarageType_2Types Exterior2nd_AsphShn Neighborhood_MeadowV LotConfig_Inside
type int int real real int int real real int real int int int int int int int int int int real real int int real int real int int int int int int int int int int int int real int int int int int real int int int int int real real int int real int int int int int real int int int int int int int int int int int int int int int int real int int int int real real int real int real int int real int real int real int int real int int real int int real int int real int real real int int int int int int real int int int int int int int int real real int int int int int int real int int int int int int int int int real real int real real int int int int int int int int int int int int int int int int int int int int int int int int int int int int int real int real int int int real int int int int int real int int int int real int int int int int int int real int int int int int int int int int real int int int int int int real int real int int int real int int int int int int int int real int real real int int int real int int int int int int int int int int int int int real real int int int int int int int int int int int int int int int int int int int int int int int int int int real int int int int int
mins 1.0 0.0 143816.52450980392 133191.52450980392 0.0 2006.0 178193.4967320261 161376.63366336634 0.0 163981.4191419142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 175904.0245098039295579.02450980392 0.0 0.0 0.0 0.0 146338.19117647057 0.0 0.0 0.0 1950.0 407.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 145091.52450980392 0.0 0.0 0.0 0.0 0.0 21.0 0.0 0.0 0.0 0.0 0.0 84954.02450980392 134607.547237076650.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100143.52450980392 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 134771.7517825312 1470.0 0.0 0.0 0.0 0.0 122402.59593837534 0.0 118776.9411764706 0.0 106204.02450980392 0.0 0.0 0.0 0.0 133419.962009803920.0 112866.7168174962 1879.0 0.0 77729.02450980392 0.0 0.0 107734.024509803920.0 0.0 111434.07450980392 0.0 0.0 163075.56297134238 0.0 110363.31736694677 175531.83179723503 0.0 0.0 0.0 0.0 0.0 0.0 178193.4967320261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100679.02450980392 114840.96895424835 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 105130.89950980392 127029.02450980392 0.0 91754.02450980392 143948.79679144386 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 407.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 165751.57330498463 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 139864.02450980392 0.0 0.0 0.0 0.0 73479.02450980392 0.0 0.0 0.0 0.0 0.0 0.0 0.0 78579.02450980392 0.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 0.0 150223.0311764706 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 111601.52450980392 0.0 0.0 0.0 134853.20367647058 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1895.0 0.0 128987.5661764706 91042.14950980392 0.0 0.0 0.0 118217.357843137240.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 96429.02450980392 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 131576.52450980392 0.0 0.0 0.0 0.0 0.0
mean 6.078821110349555 1.0424948594928032 176492.09637795316 194452.82035270391 0.030157642220699112007.7697052775875178193.4967320261 179354.86101843632 0.08636052090472926176844.0836371834 0.2686771761480466 0.025359835503769704 0.42837559972583960.01233721727210418 0.01439342015078821 0.039067854694996570.009595613433858808 0.6113776559287183 0.0239890335846470180.0006854009595613434176751.75320615337178065.092670329530.016449623029472240.06100068540095956 1046.11796982167360.181631254283756 182091.99147253158 0.5106237148732008 0.0047978067169294020.0212474297464016441983.66278272789581486.045921864290724.243317340644270.453050034270048 0.009595613433858808 0.0047978067169294040.294037011651816340.0075394105551747775 0.249485949280329 180689.57815766838 0.64016449623029470.15078821110349555 0.0294722412611377640.0253598355037697040.0829335161069225568.58035714285714 0.9910897875257025 0.910212474297464 0.06579849211788896 0.0315284441398217960.010966415352981495 178383.03720943845 176172.851497708970.93008910212474290.0068540095956134341.76611796982167360.0363262508567512 0.3317340644276902 0.159698423577793010.387251542152159 0.8608636052090473 180126.11931528116 0.0034270047978067170.0137080191912268680.0034270047978067170.00137080191912268690.169979437971213150.08019191226867718 0.00137080191912268690.064427690198766281.570938999314599 0.251542152159013040.58122001370801920.04455106237148732 0.01644962302947224 0.0411240575736806 0.002056202878684030.01782042494859493181062.106896876569819.1610692254960.015078821110349555 0.0226182316655243330.9883481836874571 0.06520247083047358176296.0327526845 0.0205620287868403 184620.93755108098 0.11309115832762166180995.23531825157 0.01233721727210418 58.1679232350925352.61934156378601 0.02604523646333105174246.9783571091 0.07196710075394105179660.9318538107 1971.3577793008910.00205620287868403179140.348339493560.0479780671692940360.08636052090472926 175933.107153458750.34955448937628514 0.011651816312542838186339.7089378328 0.00274160383824537370.00616860863605209179174.226337526 0.008910212474297465 181006.2901857593 177395.21920765378 0.06442769019876628 0.093899931459904042.85400959561343370.91638108293351610.0239890335846470180.8917066483893078178193.4967320261 0.01782042494859493 0.143248800548320760.03632625085675120.86223440712817 0.0370116518163125451.7943797121315970.89856065798492110.015764222069910898182227.81273899964 177090.15440559445 0.37765592871830020.040438656614119260.51542152159013020.008224811514736120.056202878684030160.0034270047978067170.43445435827041860.0520904729266621 0.104866346812885540.43454420836189170.00274160383824537330.00822481151473612 0.008224811514736120.004112405757368060.886223440712817 0.02810143934201508179340.3962464452 178369.39980873463 0.10623714873200822178138.29247727426 180987.1789957136 0.00753941055517477750.04455106237148732 0.010281014393420150.0137080191912268680.15969842357779301 0.8012337217272104 0.06716929403701165 0.0157642220699108940.0116518163125428386.385195339273475 3.54352296093214520.080191912268677180.002056202878684030.0034270047978067176.1041809458533240.039753255654557916 0.0068540095956134340.045236463331048665 1156.5346127484580.0267306374228923930.034955448937628510.5846470185058259 0.0315284441398217960.135023989033584650.8252227553118574 0.85743660041124060.028101439342015080.00137080191912268690.14941740918437288 472.7688614540466 0.023303632625085675178278.00897433652 48.3139136394791 0.0568882796435915 0.03769705277587389554.2949245541838 0.00411240575736806 0.9568197395476353 0.0137080191912268680.0130226182316655250.1658670322138451177370.7037166422 325.96778615490060.13296778615490062 0.039067854694996570.00205620287868403177606.24421888925 0.01782042494859493 0.60178204249485960.05277587388622344 0.0774503084304318 0.33653187114461960.0212474297464016440.4119259766963674 179283.617252378840.03564084989718985 0.0116518163125428380.002056202878684030.03975325565455791657.378341329677860.054832076764907470.0822481151473612 0.34955448937628514 0.9307745030843043 179939.77372747526 0.004112405757368060.021932830705962990.00068540095956134340.8478409869773817 0.0089102124742974650.05894448252227553 439.2037037037037 1.7443454420836186179789.60281035837 0.030157642220699110.266620973269362570.1912268677176148 182567.66333366183 5.55380397532556550.82590815627141880.06100068540095956 17.0644276901987660.00274160383824537370.01028101439342015 0.00274160383824537370.097326936257710761977.72121650977560.047978067169294036178370.36965515942177673.68837649448 0.518848526387937 0.0692254969156957 0.045236463331048665 179232.090430191780.288553803975325540.016449623029472240.03838245373543523 0.9897189856065799 0.002056202878684030.00548320767649074750.03427004797806717 0.043180260452364630.00068540095956134340.65181631254283760.050719671007539410.295407813570939 0.0205620287868403 100.70914127423823179810.686881209 0.1363947909527073 0.7635366689513365 0.405071967100753940.004112405757368060.08773132282385196 0.085675119945167920.297464016449623 0.023303632625085675 0.0171350239890335830.0068540095956134340.029472241261137764 0.040438656614119260.8875942426319396 0.109664153529814940.157642220699109 0.00068540095956134340.0774503084304318 0.082933516106922550.117888965044551060.9958875942426320.024674434544208360.9986291980808774 0.1405071967100754 0.014393420150788210.292666209732693640.026730637422892393178207.07986924512 93.17477724468814 0.0116518163125428380.00068540095956134340.013708019191226868 0.7409184372858122
maxs 10.0 2.0 255001.6042717087 345181.5245098039 1.0 2010.0 178193.4967320261 252970.21398348815 1.0 257372.274509803921.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 296434.0245098039 178405.7096069869 1.0 1.0 5095.0 1.0 224699.7863950498 1.0 1.0 1.0 2010.0 5095.0 1012.0 1.0 1.0 1.0 1.0 1.0 1.0 194068.52450980392 1.0 1.0 1.0 1.0 1.0 200.0 1.0 1.0 1.0 1.0 1.0 181312.14950980392 180974.444509803931.0 1.0 5.0 1.0 1.0 1.0 1.0 1.0 184788.65617433417 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 4.0 1.0 4.0 1.0 1.0 1.0 1.0 1.0 287410.7402240896556600.0 1.0 1.0 1.0 2.0 203633.455628685 1.0 187300.52567237164 1.0 237481.8022875817 1.0 17000.0 1526.0 1.0 181956.919246646 1.0 288359.0245098039 2010.0 1.0 179414.4157303371 1.0 1.0 255001.6042717087 1.0 1.0 243247.1728431373 1.0 1.0 252389.99950980392 1.0 222366.88205128204 219485.8426916221 1.0 1.0 6.0 1.0 1.0 1.0 178193.4967320261 1.0 1.0 1.0 1.0 1.0 360.0 1.0 1.0 211491.75330396477 184063.06872037915 2.0 1.0 1.0 1.0 1.0 1.0 3.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 307728.635620915 302979.0245098039 1.0 197862.3578431373 223156.8495098039 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 15.0 1064.0 1.0 1.0 1.0 12.0 1.0 1.0 1.0 5095.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1488.0 1.0 221371.6687405731 742.0 1.0 1.0 2140.0 1.0 1.0 1.0 1.0 1.0 205162.1274859944 1862.0 1.0 1.0 1.0 188229.02450980392 1.0 1.0 1.0 1.0 1.0 1.0 1.0 204324.734187223251.0 1.0 1.0 1.0 190.0 1.0 1.0 1.0 1.0 311479.0245098039 1.0 1.0 1.0 1.0 1.0 1.0 4010.0 800.0 184861.02836879433 1.0 1.0 1.0 194951.1078431373 9.0 1.0 1.0 576.0 1.0 1.0 1.0 1.0 2207.0 1.0 183943.1995098039 311103.9129713424 1.0 1.0 1.0 219311.6970098039 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1290.0 230256.21200980392 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 243111.468058191 1424.0 1.0 1.0 1.0 1.0
sigma 1.43681164047301850.2084716721132495724614.4488081099 26907.81955497985 0.171079570089422571.30174014938026435.126500680162683e-1228882.715536905405 0.2809919895538277619890.6371899698970.443423632431031330.1572694081056416 0.49501302456943640.11042358302463616 0.11914688223009973 0.1938228729850296 0.0975195151653435 0.487604324535388660.15306736600382193 0.026180163474687157 3137.23596097321575302.397777524548 0.127240440356304550.23941363412000524 442.7467124418268 0.385672517228196528488.122976770384 0.5000585236116573 0.06912353185685688 0.14425754688724 21.130466908170447485.5660986532533 67.227765419569690.497961501139334960.0975195151653435 0.06912353185685688 0.455764873622765130.08653149669551326 0.432863875540073446944.959535831842 0.48011655572247230.3579650165268748 0.16918406147420464 0.1572694081056416 0.2758762626833162 20.5612278567184920.094004666863962010.28597513745204960.24801453666172463 0.17480086959752092 0.10418057472370519 7764.753398575103 9344.441064269206 0.255084225065055 0.08253302911202244 0.77567892634949780.187164805469516170.470997476990348940.366451739577279330.48728896363127110.3462074671746118715963.223969023644 0.0584602673976526850.11631587360629349 0.05846026739765268 0.03701164311081744 0.3757435238777045 0.2716831980940073 0.03701164311081744 0.245597445063011040.55518988803566120.4340481838423863 0.64742045307201010.2063866763682702 0.12724044035630458 0.198645199605190530.045314261536557460.132343727114438 46910.28684795174 4955.51732692645 0.12190831162866256 0.14873402291122378 0.107349662391458880.2522950420673912 20533.377591439952 0.14196141967157097 11764.26956490508 0.3168127872491411425951.286853243677 0.11042358302463616 630.806977589708 176.693300528607070.159324450512575249594.9929215269 0.2585220396937797448658.82908689111 30.390070837205290.045314261536557464120.71252262847250.2137931247830296 0.28099198955382776 24826.25863986618 0.4769927590577036 0.10734966239145886 30059.124281346805 0.052306430561493825 0.0783247194382852416731.14952435502 0.09400466686396201 38032.67490944731 8806.02800442613 0.24559744506301098 0.2917894619697452 0.82978836273545110.27691036433310930.15306736600382193 0.31085709476308845.126500680162683e-120.132343727114438 0.3504465118555794 0.18716480546951620.34477196279930350.18885506378679484 20.2078417514965 0.30201311005184550.12460478782851317 30689.89005702429 20263.256532577616 0.50301667694158580.197053256189473970.49993347689444470.090347986989003440.2303920496347853 0.0584602673976526850.53028345502320520.222285676214612870.3064861798203469 0.49586698671874830.052306430561493825 0.09034798698900344 0.090347986989003440.064017988542015 0.31764856558735380.1653193297430115650064.369659260024 6115.23069917075 0.3082465587454653613372.26174917729 33850.87496256971 0.08653149669551326 0.2063866763682702 0.1009073539966373 0.11631587360629349 0.36645173957727933 0.399208561424995560.25040078872907034 0.12460478782851318 0.10734966239145886 1.508894575192540944.0432508643755650.2716831980940073 0.045314261536557460.05846026739765268 2.7224319012508060.1954459414523688 0.08253302911202244 0.207893599164312 398.165819592379 0.16135040794187366 0.183729971434756080.492951757959398050.17480086959752092 0.341866371587219940.37990667632874264 0.34974693269719470.165319329743011560.03701164311081744 0.3566216701721248 216.974164680402850.1509178059409568 11456.730191238737 68.883364113153970.231708441017898750.1905278605244564 437.110507934869250.064017988542015 0.203332394910303330.11631587360629349 0.11341007524500221 0.372088771179716213409.559779876743 420.61022646910340.3396563355205147 0.1938228729850296 0.045314261536557464663.358457904918 0.132343727114438 0.48969866065846560.22366239763173515 0.267396269321953150.47268521331156140.14425754688724 0.4923506005463547 13660.6213644789310.18545660813680687 0.10734966239145888 0.045314261536557460.1954459414523688 42.746879618718210.227730247764282470.27483655971462884 0.4769927590577036 0.2539242415502212515269.946772589561 0.064017988542015 0.1465144866534379 0.026180163474687154 0.359298107014739240.09400466686396203 0.23560151907589041 455.1118876132698630.49164630534206618602.36395373965 0.171079570089422570.4423441433443435 0.3934021212665224611447.223084004703 1.11373960328920820.37931845575066990.23941363412000524 56.6097629069105540.052306430561493825 0.10090735399663729 0.052306430561493825 0.2965040649452962 25.7144505812253530.2137931247830296 11421.92229037309248363.331700835224 0.49981592326550320.253924241550221250.20789359916431202 23489.4065731974550.4532453077561968 0.127240440356304580.19218365164804962 0.100907353996637290.045314261536557460.07387071315755715 0.18198437051533645 0.203332394910303360.026180163474687154 0.47655793658446940.2194999060175877 0.456382291342592230.14196141967157097 176.7098243723940227215.585184717394 0.34332497952241703 0.425055592900959460.491074287376700170.064017988542015 0.2830007618230365 0.2799796803410525 0.45729914512824427 0.1509178059409568 0.1298189738866536 0.08253302911202244 0.16918406147420464 0.197053256189473970.315973310448961040.3125778206919001 0.3645301476683725 0.026180163474687157 0.26739626932195315 0.2758762626833162 0.322587168824092 0.0640179885420150.155184125242575940.037011643110817440.3476316348507352 0.119146882230099730.455142486955672660.16135040794187366 28422.54135345877 127.744881519076030.10734966239145886 0.026180163474687154 0.11631587360629349 0.43828069227636257
zeros 0 2 0 0 1415 0 0 0 1333 0 1067 1422 834 1441 1438 1402 1445 567 1424 1458 0 0 1435 1370 41 1194 0 714 1452 1428 0 0 1208 798 1445 1452 1030 1448 1095 0 525 1239 1416 1422 1338 0 13 131 1363 1413 1443 0 0 102 1449 76 1406 975 1226 894 203 0 1454 1439 1454 1457 1211 1342 1457 1365 3 1092 730 1394 1435 1399 1456 1433 0 0 1437 1426 17 1364 0 1429 0 1294 0 1441 1408 1278 1421 0 1354 0 0 1456 0 1389 1333 0 949 1442 0 1455 1450 0 1446 0 0 1365 1322 2 122 1424 158 0 1433 1250 1406 201 1405 1446 148 1436 0 0 921 1400 707 1447 1377 1454 849 1383 1306 825 1455 1447 1447 1453 166 1418 0 0 1304 0 0 1448 1394 1444 1439 1226 290 1361 1436 1442 0 1445 1342 1456 1454 0 1401 1449 1393 0 1420 1408 606 1413 1262 255 208 1418 1457 1241 76 1425 0 642 1376 1404 123 1453 63 1439 1440 1217 0 839 1265 1402 1456 0 1433 581 1382 1346 968 1428 858 0 1407 1442 1456 1401 0 1379 1339 949 101 0 1453 1427 1458 222 1446 1373 462 1453 0 1415 1070 1180 0 0 254 1370 1319 1455 1444 1455 1317 0 1389 0 0 702 1358 1393 0 1038 1435 1403 15 1456 1451 1409 1396 1458 508 1385 1028 1429 877 0 1260 345 868 1453 1331 1334 1025 1425 1434 1449 1416 1400 164 1299 1229 1458 1346 1338 1287 6 1423 2 1254 1438 1032 1420 0 762 1442 1458 1439 378
missing0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 5.0 1.0 171302.3622047244 178193.4967320261 0.0 2010.0 178193.4967320261 161376.63366336634 0.0 163981.4191419142 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 882.0 0.0 156012.9060887513 1.0 0.0 0.0 1961.0 896.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 168862.10143288085 1.0 0.0 0.0 0.0 0.0 80.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 138313.5714285714211622.0 0.0 0.0 1.0 0.0 170914.57205240175 0.0 187300.52567237164 0.0 209302.39072847684 0.0 0.0 144.0 0.0 151206.9049445865 0.0 152080.32258672698 1961.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 1.0 0.0 201051.39688715953 0.0 0.0 175715.78281622913 0.0 148549.72906403942 175531.83179723503 0.0 0.0 2.0 1.0 0.0 1.0 178193.4967320261 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 149413.2797336845 184063.06872037915 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 140285.62820512822 178218.27472527474 1.0 180398.05693069307 143948.79679144386 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 896.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 1.0 0.0 1.0 730.0 0.0 177919.81360946747 0.0 1.0 0.0 270.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 0.0 0.0 0.0 0.0 178193.4967320261 0.0 1.0 0.0 0.0 0.0 0.0 1.0 181115.23 0.0 0.0 0.0 0.0 20.0 0.0 0.0 1.0 1.0 150223.0311764706 0.0 0.0 0.0 0.0 0.0 0.0 468.0 0.0 184861.02836879433 0.0 0.0 0.0 185601.24938271605 6.0 1.0 0.0 120.0 0.0 0.0 0.0 0.0 1961.0 0.0 181805.66321243523143747.87889273357 1.0 0.0 0.0 134962.357843137260.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 206602.9363057325 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 157482.0 140.0 0.0 0.0 0.0 1.0
1 6.0 1.0 171302.3622047244 178193.4967320261 0.0 2010.0 178193.4967320261 161376.63366336634 0.0 194850.585660883050.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 1329.0 1.0 169309.44117647057 1.0 0.0 0.0 1958.0 1329.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 182592.86046511628 0.0 0.0 0.0 0.0 0.0 81.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 1.0 0.0 1.0 0.0 1.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 138313.5714285714214267.0 0.0 0.0 1.0 0.0 170914.57205240175 0.0 187300.52567237164 0.0 163767.73719637108 0.0 12500.0 0.0 0.0 178193.4967320261 0.0 152080.32258672698 1958.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 0.0 0.0 201051.39688715953 0.0 0.0 175715.78281622913 0.0 148549.72906403942 175531.83179723503 0.0 0.0 3.0 1.0 0.0 1.0 178193.4967320261 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 149413.2797336845 184063.06872037915 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 211880.81318681315 178218.27472527474 0.0 180398.05693069307 143948.79679144386 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 1329.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 1.0 312.0 0.0 165751.57330498463 36.0 0.0 0.0 406.0 0.0 1.0 0.0 0.0 0.0 205162.1274859944 0.0 1.0 0.0 0.0 188229.02450980392 0.0 0.0 0.0 0.0 0.0 0.0 1.0 181115.23 0.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 1.0 181573.27604166663 0.0 0.0 0.0 1.0 0.0 0.0 923.0 0.0 184861.02836879433 0.0 0.0 0.0 185601.24938271605 6.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1958.0 0.0 181805.66321243523143747.87889273357 0.0 0.0 0.0 187920.610644257710.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 108.0 154595.81798806478 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 1.0 0.0 0.0 0.0 203114.2504640024 393.0 0.0 0.0 0.0 0.0
2 5.0 1.0 171302.3622047244 205118.42900418595 0.0 2010.0 178193.4967320261 161376.63366336634 0.0 194850.585660883050.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 928.0 0.0 224699.7863950498 0.0 0.0 0.0 1998.0 1629.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 182592.86046511628 0.0 0.0 0.0 0.0 0.0 74.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 2.0 0.0 1.0 1.0 0.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 206633.0314136125713830.0 0.0 0.0 1.0 0.0 203633.455628685 0.0 187300.52567237164 0.0 209302.39072847684 0.0 0.0 0.0 0.0 151206.9049445865 0.0 191808.0596949891 1997.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 1.0 0.0 201051.39688715953 0.0 0.0 175715.78281622913 0.0 222366.88205128204 175531.83179723503 0.0 0.0 3.0 1.0 0.0 1.0 178193.4967320261 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 158961.70308123247 184063.06872037915 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 140285.62820512822 178218.27472527474 0.0 180398.05693069307 223156.8495098039 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 0.0 3.0 0.0 0.0 0.0 928.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 482.0 0.0 177919.81360946747 34.0 0.0 0.0 137.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 701.0 0.0 0.0 0.0 178193.4967320261 0.0 1.0 0.0 0.0 0.0 0.0 0.0 181115.23 0.0 0.0 0.0 0.0 60.0 0.0 0.0 1.0 1.0 181573.27604166663 0.0 0.0 0.0 1.0 0.0 1.0 791.0 0.0 184861.02836879433 0.0 0.0 1.0 185601.24938271605 5.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1997.0 0.0 181805.66321243523143747.87889273357 1.0 0.0 0.0 187920.610644257710.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 206602.9363057325 0.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 157482.0 212.0 0.0 0.0 0.0 1.0
3 6.0 1.0 171302.3622047244 219907.1857598039 0.0 2010.0 178193.4967320261 161376.63366336634 0.0 194850.585660883050.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 926.0 0.0 224699.7863950498 0.0 0.0 0.0 1998.0 1604.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 182592.86046511628 0.0 0.0 0.0 0.0 0.0 78.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 2.0 0.0 1.0 0.0 1.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 138313.571428571429978.0 0.0 0.0 1.0 0.0 203633.455628685 0.0 187300.52567237164 0.0 209302.39072847684 0.0 0.0 0.0 0.0 178193.4967320261 0.0 191808.0596949891 1998.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 1.0 0.0 201051.39688715953 0.0 0.0 175715.78281622913 0.0 222366.88205128204 175531.83179723503 0.0 0.0 3.0 1.0 0.0 1.0 178193.4967320261 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 211491.75330396477 184063.06872037915 1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 211880.81318681315 178218.27472527474 0.0 180398.05693069307 223156.8495098039 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 7.0 0.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 926.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 470.0 0.0 177919.81360946747 36.0 0.0 0.0 324.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 678.0 0.0 0.0 0.0 178193.4967320261 0.0 0.0 0.0 0.0 0.0 0.0 0.0 181115.23 0.0 0.0 0.0 0.0 60.0 0.0 0.0 1.0 1.0 181573.27604166663 0.0 0.0 0.0 1.0 0.0 1.0 602.0 0.0 184861.02836879433 0.0 0.0 0.0 185601.24938271605 6.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1998.0 0.0 181805.66321243523143747.87889273357 0.0 0.0 0.0 187920.610644257710.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 20.0 206602.9363057325 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 203114.2504640024 360.0 0.0 0.0 0.0 1.0
4 8.0 1.0 171302.3622047244 178193.4967320261 0.0 2010.0 178193.4967320261 161376.63366336634 0.0 194850.585660883050.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 1280.0 0.0 169309.44117647057 1.0 0.0 0.0 1992.0 1280.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 182592.86046511628 0.0 1.0 0.0 0.0 0.0 43.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 2.0 0.0 1.0 0.0 1.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 206633.031413612575005.0 0.0 0.0 1.0 0.0 170914.57205240175 0.0 187300.52567237164 0.0 169568.25527903467 0.0 0.0 0.0 0.0 178193.4967320261 0.0 288359.0245098039 1992.0 0.0 179414.4157303371 1.0 0.0 170822.7626262626 0.0 0.0 201051.39688715953 0.0 0.0 252389.99950980392 0.0 222366.88205128204 175531.83179723503 0.0 0.0 2.0 1.0 0.0 1.0 178193.4967320261 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 211491.75330396477 184063.06872037915 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 211880.81318681315 178218.27472527474 0.0 180398.05693069307 201271.56721053383 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1280.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 506.0 0.0 177919.81360946747 82.0 0.0 0.0 1017.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 0.0 0.0 0.0 0.0 178193.4967320261 1.0 1.0 0.0 1.0 1.0 0.0 0.0 181115.23 0.0 0.0 0.0 0.0 120.0 0.0 0.0 0.0 1.0 181573.27604166663 0.0 0.0 0.0 1.0 0.0 0.0 263.0 0.0 184861.02836879433 0.0 1.0 0.0 185601.24938271605 5.0 0.0 0.0 144.0 0.0 0.0 0.0 0.0 1992.0 0.0 183943.1995098039 228065.58659034083 0.0 0.0 0.0 187920.610644257710.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 167128.41844919784 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 157482.0 0.0 0.0 0.0 0.0 1.0
5 6.0 1.0 171302.3622047244 205118.42900418595 0.0 2010.0 178193.4967320261 161376.63366336634 0.0 194850.585660883050.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 763.0 0.0 168970.16598267213 0.0 0.0 0.0 1994.0 1655.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 182592.86046511628 0.0 1.0 0.0 0.0 0.0 75.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 2.0 0.0 1.0 1.0 0.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 2.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 206633.0314136125710000.0 0.0 0.0 1.0 0.0 203633.455628685 0.0 187300.52567237164 0.0 169568.25527903467 0.0 0.0 0.0 0.0 178193.4967320261 0.0 191808.0596949891 1993.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 0.0 0.0 201051.39688715953 0.0 0.0 175715.78281622913 0.0 222366.88205128204 175531.83179723503 0.0 0.0 3.0 1.0 0.0 1.0 178193.4967320261 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 158961.70308123247 184063.06872037915 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 140285.62820512822 178218.27472527474 0.0 180398.05693069307 223156.8495098039 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 7.0 0.0 0.0 0.0 0.0 4.0 0.0 0.0 0.0 763.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 440.0 0.0 165751.57330498463 84.0 0.0 0.0 763.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 892.0 0.0 0.0 0.0 178193.4967320261 0.0 1.0 0.0 0.0 0.0 0.0 0.0 181115.23 0.0 0.0 0.0 0.0 60.0 0.0 0.0 0.0 1.0 181573.27604166663 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 184861.02836879433 0.0 0.0 1.0 185601.24938271605 5.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1993.0 0.0 181805.66321243523143747.87889273357 1.0 0.0 0.0 187920.610644257711.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 167128.41844919784 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 157482.0 157.0 0.0 0.0 0.0 0.0
6 6.0 1.0 171302.3622047244 178193.4967320261 0.0 2010.0 178193.4967320261 161376.63366336634 0.0 194850.585660883050.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 1168.0 0.0 169309.44117647057 1.0 0.0 0.0 2007.0 1187.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 182592.86046511628 0.0 1.0 0.0 0.0 0.0 68.58035714285714 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 2.0 0.0 1.0 0.0 0.0 0.0 184788.65617433417 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 206633.031413612577980.0 0.0 0.0 1.0 0.0 170914.57205240175 0.0 187300.52567237164 0.0 169568.25527903467 0.0 500.0 0.0 0.0 181956.919246646 0.0 191808.0596949891 1992.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 0.0 0.0 201051.39688715953 0.0 0.0 175715.78281622913 0.0 222366.88205128204 175531.83179723503 0.0 0.0 3.0 1.0 0.0 1.0 178193.4967320261 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 211491.75330396477 184063.06872037915 0.0 1.0 1.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 140285.62820512822 178218.27472527474 0.0 179370.36597321855 223156.8495098039 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 6.0 0.0 0.0 0.0 0.0 3.0 0.0 0.0 0.0 1187.0 0.0 0.0 1.0 1.0 0.0 1.0 1.0 0.0 0.0 0.0 420.0 0.0 177919.81360946747 21.0 0.0 0.0 233.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 0.0 0.0 0.0 0.0 163465.69117647057 0.0 1.0 0.0 0.0 0.0 0.0 0.0 181115.23 0.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 1.0 181573.27604166663 0.0 0.0 0.0 1.0 0.0 1.0 935.0 0.0 184861.02836879433 0.0 0.0 0.0 185601.24938271605 7.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1992.0 0.0 181805.66321243523143747.87889273357 1.0 0.0 0.0 187920.610644257710.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 167128.41844919784 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 157482.0 483.0 0.0 0.0 0.0 1.0
7 6.0 1.0 171302.3622047244 219907.1857598039 0.0 2010.0 178193.4967320261 161376.63366336634 0.0 194850.585660883050.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 789.0 0.0 168970.16598267213 0.0 0.0 0.0 1998.0 1465.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 182592.86046511628 0.0 0.0 0.0 0.0 0.0 63.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 2.0 0.0 1.0 1.0 0.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 206633.031413612578402.0 0.0 0.0 1.0 0.0 203633.455628685 0.0 187300.52567237164 0.0 209302.39072847684 0.0 0.0 0.0 0.0 178193.4967320261 0.0 191808.0596949891 1998.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 1.0 0.0 201051.39688715953 0.0 0.0 175715.78281622913 0.0 222366.88205128204 175531.83179723503 0.0 0.0 3.0 1.0 0.0 1.0 178193.4967320261 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 158961.70308123247 184063.06872037915 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 140285.62820512822 178218.27472527474 0.0 180398.05693069307 223156.8495098039 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 7.0 0.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 789.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 393.0 0.0 177919.81360946747 75.0 0.0 0.0 789.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 676.0 0.0 0.0 0.0 178193.4967320261 0.0 1.0 0.0 0.0 0.0 0.0 0.0 181115.23 0.0 0.0 0.0 0.0 60.0 0.0 0.0 1.0 1.0 181573.27604166663 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 184861.02836879433 0.0 0.0 0.0 185601.24938271605 5.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1998.0 0.0 181805.66321243523143747.87889273357 1.0 0.0 0.0 187920.610644257711.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 206602.9363057325 0.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 157482.0 0.0 0.0 0.0 0.0 1.0
8 7.0 1.0 171302.3622047244 133191.52450980392 0.0 2010.0 178193.4967320261 252970.21398348815 0.0 163981.4191419142 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 1300.0 0.0 224699.7863950498 1.0 0.0 0.0 1990.0 1341.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 182592.86046511628 1.0 1.0 0.0 0.0 0.0 85.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 2.0 0.0 0.0 1.0 1.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 206633.0314136125710176.0 0.0 0.0 1.0 0.0 170914.57205240175 0.0 187300.52567237164 0.0 169568.25527903467 0.0 0.0 0.0 0.0 178193.4967320261 0.0 191808.0596949891 1990.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 0.0 0.0 201051.39688715953 0.0 0.0 175715.78281622913 0.0 222366.88205128204 175531.83179723503 0.0 0.0 2.0 1.0 0.0 1.0 178193.4967320261 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 158961.70308123247 184063.06872037915 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 211880.81318681315 178218.27472527474 0.0 180398.05693069307 143948.79679144386 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 5.0 0.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0 1341.0 0.0 0.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 506.0 0.0 177919.81360946747 0.0 0.0 0.0 663.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 0.0 0.0 0.0 0.0 178193.4967320261 0.0 1.0 0.0 0.0 0.0 0.0 0.0 181115.23 0.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 1.0 181573.27604166663 0.0 0.0 0.0 1.0 0.0 1.0 637.0 0.0 184861.02836879433 0.0 0.0 0.0 185601.24938271605 5.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 1990.0 0.0 181805.66321243523143747.87889273357 0.0 0.0 0.0 187920.610644257710.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 167128.41844919784 1.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 157482.0 192.0 0.0 0.0 0.0 1.0
9 4.0 1.0 171302.3622047244 178193.4967320261 0.0 2010.0 178193.4967320261 161376.63366336634 0.0 163981.4191419142 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 176671.8111111111 178405.7096069869 0.0 0.0 882.0 0.0 169309.44117647057 1.0 0.0 0.0 1970.0 882.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 167901.0383986928 1.0 0.0 0.0 0.0 0.0 70.0 1.0 1.0 0.0 0.0 0.0 179857.76346604215 178193.4967320261 1.0 0.0 2.0 0.0 0.0 0.0 0.0 1.0 184788.65617433417 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 138313.571428571428400.0 0.0 0.0 1.0 0.0 170914.57205240175 0.0 187300.52567237164 0.0 163573.83733031675 0.0 0.0 78.0 0.0 151206.9049445865 0.0 152080.32258672698 1970.0 0.0 179414.4157303371 0.0 0.0 170822.7626262626 0.0 0.0 201051.39688715953 0.0 0.0 175715.78281622913 0.0 148549.72906403942 175531.83179723503 0.0 0.0 2.0 1.0 0.0 1.0 178193.4967320261 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 149413.2797336845 184063.06872037915 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 140285.62820512822 178218.27472527474 0.0 180398.05693069307 223156.8495098039 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 4.0 0.0 0.0 0.0 0.0 4.0 0.0 0.0 0.0 882.0 0.0 1.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 1.0 525.0 0.0 165751.57330498463 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 171401.71038251367 0.0 0.0 0.0 0.0 178193.4967320261 0.0 1.0 0.0 0.0 0.0 0.0 1.0 181115.23 0.0 0.0 0.0 0.0 20.0 0.0 0.0 0.0 1.0 181573.27604166663 0.0 0.0 0.0 0.0 0.0 0.0 804.0 0.0 184861.02836879433 0.0 0.0 0.0 185601.24938271605 5.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1970.0 0.0 181805.66321243523143747.87889273357 1.0 0.0 0.0 187920.610644257710.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 173812.54638480392 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 1.0 1.0 0.0 1.0 0.0 0.0 0.0 0.0 157482.0 240.0 0.0 0.0 0.0 0.0
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print('Imputed and encoded numeric training data:')\n", "train[encoded_nums].describe() #79 numeric columns w/ no missing\n", "print('--------------------------------------------------------------------------------')\n", "print('Imputed and encoded numeric validation data:')\n", "valid[encoded_nums].describe() #79 numeric columns w/ no missing\n", "print('--------------------------------------------------------------------------------')\n", "print('Imputed and encoded numeric test data:')\n", "test[encoded_nums].describe() #79 numeric columns w/ no missing" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Neighborhood Neighborhood_Tencode
NAmes 152080
NAmes 152080
Gilbert 191808
Gilbert 191808
StoneBr 288359
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "{nan: 178193.49673202613, 'CollgCr': 190019.77971813726, 'Gilbert': 191808.0596949891, 'SWISU': 156269.02450980392, 'Edwards': 126241.13989441929, 'Blmngtn': 210845.6545098039, 'NPkVill': 147641.52450980392, 'Timber': 260109.74673202613, 'NridgHt': 284073.1545098039, 'SawyerW': 189097.7776348039, 'BrDale': 116064.02450980392, 'Crawfor': 216008.84593837534, 'BrkSide': 129965.77450980392, 'Somerst': 227656.9671023965, 'Sawyer': 143162.40700980392, 'MeadowV': 113131.52450980392, 'ClearCr': 207949.02450980392, 'NoRidge': 273948.2552790347, 'Veenker': 243734.02450980392, 'IDOTRR': 112866.71681749621, 'StoneBr': 288359.0245098039, 'NAmes': 152080.32258672698, 'OldTown': 139863.03613771088, 'Mitchel': 169316.52450980392, 'NWAmes': 184610.14950980392}\n" ] } ], "source": [ "# Check Neighborhood_Tencode\n", "\n", "print(test[0:5, ['Neighborhood', 'Neighborhood_Tencode']])\n", "_, _ = target_encoder(valid, test, 'Neighborhood', 'SalePrice', test=True)\n", "del _\n", "\n", "# NAmes 152080\n", "# NAmes 152080\n", "# Gilbert 191808\n", "# Gilbert 191808\n", "# StoneBr 288359" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Create combination features" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "def feature_combiner(training_frame, test_frame, nums):\n", " \n", " \"\"\" Combines numeric features using simple arithmatic operations.\n", " \n", " :param training_frame: Training frame from which to generate features and onto which generated \n", " feeatures will be cbound.\n", " :param test_frame: Test frame from which to generate features and onto which generated \n", " feeatures will be cbound.\n", " :param nums: List of original numeric features from which to generate combined features.\n", " \n", " \"\"\"\n", "\n", " total = len(nums)\n", " \n", " # convert to pandas\n", " train_df = training_frame.as_data_frame()\n", " test_df = test_frame.as_data_frame()\n", " \n", " for i, col_i in enumerate(nums):\n", " \n", " print('Combining: ' + col_i + ' (' + str(i+1) + '/' + str(total) + ') ...') \n", " \n", " for j, col_j in enumerate(nums):\n", " \n", " # don't repeat (i*j = j*i)\n", " if i < j:\n", " \n", " # convert to pandas\n", " col_i_train_df = train_df[col_i]\n", " col_j_train_df = train_df[col_j]\n", " col_i_test_df = test_df[col_i]\n", " col_j_test_df = test_df[col_j] \n", "\n", " # multiply, convert back to h2o\n", " train_df[str(col_i + '|' + col_j)] = col_i_train_df.values*col_j_train_df.values\n", " test_df[str(col_i + '|' + col_j)] = col_i_test_df.values*col_j_test_df.values\n", " \n", " print('Done.')\n", " \n", " # convert back to h2o\n", " \n", " print('Converting to H2OFrame ...')\n", " \n", " training_frame = h2o.H2OFrame(train_df)\n", " training_frame.columns = list(train_df)\n", " test_frame = h2o.H2OFrame(test_df)\n", " test_frame.columns = list(test_df)\n", " \n", " print('Done.')\n", " print()\n", " \n", " # conserve memory \n", " del train_df\n", " del test_df \n", " \n", " return training_frame, test_frame\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Combining: OverallQual (1/290) ...\n", "Combining: KitchenAbvGr (2/290) ...\n", "Combining: SaleCondition_Tencode (3/290) ...\n", "Combining: FireplaceQu_Tencode (4/290) ...\n", "Combining: Condition1_Artery (5/290) ...\n", "Combining: YrSold (6/290) ...\n", "Combining: Utilities_Tencode (7/290) ...\n", "Combining: BsmtExposure_Tencode (8/290) ...\n", "Combining: PavedDrive_N (9/290) ...\n", "Combining: LotShape_Tencode (10/290) ...\n", "Combining: GarageType_Detchd (11/290) ...\n", "Combining: Exterior1st_BrkFace (12/290) ...\n", "Combining: GarageFinish_Unf (13/290) ...\n", "Combining: Exterior2nd_AsbShng (14/290) ...\n", "Combining: Exterior2nd_Stucco (15/290) ...\n", "Combining: BldgType_Duplex (16/290) ...\n", "Combining: Neighborhood_BrDale (17/290) ...\n", "Combining: ExterQual_TA (18/290) ...\n", "Combining: LotShape_IR2 (19/290) ...\n", "Combining: Exterior2nd_Stone (20/290) ...\n", "Combining: RoofMatl_Tencode (21/290) ...\n", "Combining: Street_Tencode (22/290) ...\n", "Combining: LandContour_Low (23/290) ...\n", "Combining: Neighborhood_NridgHt (24/290) ...\n", "Combining: TotalBsmtSF (25/290) ...\n", "Combining: RoofStyle_Hip (26/290) ...\n", "Combining: BsmtFinType1_Tencode (27/290) ...\n", "Combining: HouseStyle_1Story (28/290) ...\n", "Combining: GarageCond_Po (29/290) ...\n", "Combining: BldgType_2fmCon (30/290) ...\n", "Combining: YearRemodAdd (31/290) ...\n", "Combining: GrLivArea (32/290) ...\n", "Combining: EnclosedPorch (33/290) ...\n", "Combining: Foundation_PConc (34/290) ...\n", "Combining: Neighborhood_NPkVill (35/290) ...\n", "Combining: RoofStyle_Flat (36/290) ...\n", "Combining: HeatingQC_TA (37/290) ...\n", "Combining: Neighborhood_Blmngtn (38/290) ...\n", "Combining: FireplaceQu_Gd (39/290) ...\n", "Combining: BsmtFinType2_Tencode (40/290) ...\n", "Combining: LotShape_Reg (41/290) ...\n", "Combining: Exterior1st_HdBoard (42/290) ...\n", "Combining: HeatingQC_Fa (43/290) ...\n", "Combining: Alley_Pave (44/290) ...\n", "Combining: BsmtFinType1_BLQ (45/290) ...\n", "Combining: LotFrontage (46/290) ...\n", "Combining: Heating_GasA (47/290) ...\n", "Combining: GarageCond_TA (48/290) ...\n", "Combining: Neighborhood_Somerst (49/290) ...\n", "Combining: HouseStyle_SFoyer (50/290) ...\n", "Combining: Neighborhood_ClearCr (51/290) ...\n", "Combining: Functional_Tencode (52/290) ...\n", "Combining: Alley_Tencode (53/290) ...\n", "Combining: Functional_Typ (54/290) ...\n", "Combining: GarageQual_Gd (55/290) ...\n", "Combining: GarageCars (56/290) ...\n", "Combining: BldgType_Twnhs (57/290) ...\n", "Combining: LotShape_IR1 (58/290) ...\n", "Combining: HeatingQC_Gd (59/290) ...\n", "Combining: KitchenQual_Gd (60/290) ...\n", "Combining: ExterCond_TA (61/290) ...\n", "Combining: Electrical_Tencode (62/290) ...\n", "Combining: Foundation_Stone (63/290) ...\n", "Combining: BsmtFinType2_GLQ (64/290) ...\n", "Combining: Electrical_FuseP (65/290) ...\n", "Combining: Heating_Grav (66/290) ...\n", "Combining: LotConfig_Corner (67/290) ...\n", "Combining: Neighborhood_CollgCr (68/290) ...\n", "Combining: MiscFeature_Othr (69/290) ...\n", "Combining: Electrical_FuseA (70/290) ...\n", "Combining: FullBath (71/290) ...\n", "Combining: GarageFinish_Fin (72/290) ...\n", "Combining: Fireplaces (73/290) ...\n", "Combining: Neighborhood_Mitchel (74/290) ...\n", "Combining: Exterior1st_AsbShng (75/290) ...\n", "Combining: LandSlope_Mod (76/290) ...\n", "Combining: SaleType_ConLw (77/290) ...\n", "Combining: FireplaceQu_Po (78/290) ...\n", "Combining: BsmtQual_Tencode (79/290) ...\n", "Combining: LotArea (80/290) ...\n", "Combining: Exterior2nd_BrkFace (81/290) ...\n", "Combining: BsmtFinType2_ALQ (82/290) ...\n", "Combining: RoofMatl_CompShg (83/290) ...\n", "Combining: BsmtHalfBath (84/290) ...\n", "Combining: HouseStyle_Tencode (85/290) ...\n", "Combining: Neighborhood_NoRidge (86/290) ...\n", "Combining: GarageCond_Tencode (87/290) ...\n", "Combining: Foundation_BrkTil (88/290) ...\n", "Combining: Exterior2nd_Tencode (89/290) ...\n", "Combining: Exterior1st_Stucco (90/290) ...\n", "Combining: MiscVal (91/290) ...\n", "Combining: BsmtFinSF2 (92/290) ...\n", "Combining: LotConfig_FR2 (93/290) ...\n", "Combining: Fence_Tencode (94/290) ...\n", "Combining: KitchenQual_Ex (95/290) ...\n", "Combining: Neighborhood_Tencode (96/290) ...\n", "Combining: YearBuilt (97/290) ...\n", "Combining: LandSlope_Sev (98/290) ...\n", "Combining: Heating_Tencode (99/290) ...\n", "Combining: LandContour_HLS (100/290) ...\n", "Combining: Neighborhood_OldTown (101/290) ...\n", "Combining: SaleType_Tencode (102/290) ...\n", "Combining: Exterior2nd_VinylSd (103/290) ...\n", "Combining: SaleType_ConLD (104/290) ...\n", "Combining: GarageType_Tencode (105/290) ...\n", "Combining: SaleType_ConLI (106/290) ...\n", "Combining: Heating_GasW (107/290) ...\n", "Combining: LandContour_Tencode (108/290) ...\n", "Combining: Neighborhood_Veenker (109/290) ...\n", "Combining: Foundation_Tencode (110/290) ...\n", "Combining: LandSlope_Tencode (111/290) ...\n", "Combining: Neighborhood_Edwards (112/290) ...\n", "Combining: BsmtQual_Ex (113/290) ...\n", "Combining: BedroomAbvGr (114/290) ...\n", "Combining: Electrical_SBrkr (115/290) ...\n", "Combining: BsmtFinType2_BLQ (116/290) ...\n", "Combining: PavedDrive_Y (117/290) ...\n", "Combining: PoolQC_Tencode (118/290) ...\n", "Combining: SaleCondition_Family (119/290) ...\n", "Combining: BsmtFinType1_ALQ (120/290) ...\n", "Combining: BsmtQual_Fa (121/290) ...\n", "Combining: SaleType_WD (122/290) ...\n", "Combining: LandContour_Bnk (123/290) ...\n", "Combining: 3SsnPorch (124/290) ...\n", "Combining: LandContour_Lvl (125/290) ...\n", "Combining: Neighborhood_SWISU (126/290) ...\n", "Combining: HeatingQC_Tencode (127/290) ...\n", "Combining: PavedDrive_Tencode (128/290) ...\n", "Combining: HalfBath (129/290) ...\n", "Combining: Fence_GdPrv (130/290) ...\n", "Combining: HeatingQC_Ex (131/290) ...\n", "Combining: RoofMatl_Tar&Grv (132/290) ...\n", "Combining: LotConfig_CulDSac (133/290) ...\n", "Combining: HouseStyle_1.5Unf (134/290) ...\n", "Combining: BsmtFullBath (135/290) ...\n", "Combining: GarageQual_Fa (136/290) ...\n", "Combining: ExterCond_Gd (137/290) ...\n", "Combining: BsmtQual_TA (138/290) ...\n", "Combining: Functional_Maj2 (139/290) ...\n", "Combining: SaleCondition_Alloca (140/290) ...\n", "Combining: Condition1_PosA (141/290) ...\n", "Combining: GarageCond_Gd (142/290) ...\n", "Combining: GarageQual_TA (143/290) ...\n", "Combining: FireplaceQu_Fa (144/290) ...\n", "Combining: KitchenQual_Tencode (145/290) ...\n", "Combining: Condition2_Tencode (146/290) ...\n", "Combining: BsmtFinType1_Rec (147/290) ...\n", "Combining: ExterCond_Tencode (148/290) ...\n", "Combining: GarageFinish_Tencode (149/290) ...\n", "Combining: RoofStyle_Gambrel (150/290) ...\n", "Combining: Exterior1st_CemntBd (151/290) ...\n", "Combining: MSZoning_C (all) (152/290) ...\n", "Combining: Condition1_PosN (153/290) ...\n", "Combining: Exterior2nd_MetalSd (154/290) ...\n", "Combining: RoofStyle_Gable (155/290) ...\n", "Combining: GarageType_BuiltIn (156/290) ...\n", "Combining: Electrical_FuseF (157/290) ...\n", "Combining: Condition1_RRAe (158/290) ...\n", "Combining: TotRmsAbvGrd (159/290) ...\n", "Combining: LowQualFinSF (160/290) ...\n", "Combining: SaleType_New (161/290) ...\n", "Combining: RoofStyle_Shed (162/290) ...\n", "Combining: Functional_Maj1 (163/290) ...\n", "Combining: MoSold (164/290) ...\n", "Combining: Neighborhood_NWAmes (165/290) ...\n", "Combining: MasVnrType_BrkCmn (166/290) ...\n", "Combining: Exterior2nd_CmentBd (167/290) ...\n", "Combining: 1stFlrSF (168/290) ...\n", "Combining: GarageCond_Fa (169/290) ...\n", "Combining: BsmtFinType2_Rec (170/290) ...\n", "Combining: GarageType_Attchd (171/290) ...\n", "Combining: MiscFeature_Shed (172/290) ...\n", "Combining: BsmtExposure_Av (173/290) ...\n", "Combining: SaleCondition_Normal (174/290) ...\n", "Combining: Condition1_Norm (175/290) ...\n", "Combining: BsmtFinType2_LwQ (176/290) ...\n", "Combining: GarageQual_Po (177/290) ...\n", "Combining: Neighborhood_NAmes (178/290) ...\n", "Combining: GarageArea (179/290) ...\n", "Combining: Functional_Min1 (180/290) ...\n", "Combining: LotConfig_Tencode (181/290) ...\n", "Combining: OpenPorchSF (182/290) ...\n", "Combining: Condition1_Feedr (183/290) ...\n", "Combining: ExterQual_Ex (184/290) ...\n", "Combining: BsmtUnfSF (185/290) ...\n", "Combining: GarageType_CarPort (186/290) ...\n", "Combining: LandSlope_Gtl (187/290) ...\n", "Combining: Functional_Mod (188/290) ...\n", "Combining: FireplaceQu_Ex (189/290) ...\n", "Combining: MSZoning_RM (190/290) ...\n", "Combining: RoofStyle_Tencode (191/290) ...\n", "Combining: 2ndFlrSF (192/290) ...\n", "Combining: Exterior2nd_Wd Sdng (193/290) ...\n", "Combining: BsmtCond_Gd (194/290) ...\n", "Combining: BsmtCond_Po (195/290) ...\n", "Combining: MiscFeature_Tencode (196/290) ...\n", "Combining: Neighborhood_StoneBr (197/290) ...\n", "Combining: MasVnrType_None (198/290) ...\n", "Combining: Neighborhood_Sawyer (199/290) ...\n", "Combining: BldgType_TwnhsE (200/290) ...\n", "Combining: ExterQual_Gd (201/290) ...\n", "Combining: KitchenQual_Fa (202/290) ...\n", "Combining: Foundation_CBlock (203/290) ...\n", "Combining: BsmtCond_Tencode (204/290) ...\n", "Combining: Neighborhood_Crawfor (205/290) ...\n", "Combining: GarageType_Basment (206/290) ...\n", "Combining: Condition2_Artery (207/290) ...\n", "Combining: Fence_GdWo (208/290) ...\n", "Combining: MSSubClass (209/290) ...\n", "Combining: BsmtFinType1_LwQ (210/290) ...\n", "Combining: SaleCondition_Partial (211/290) ...\n", "Combining: Exterior1st_VinylSd (212/290) ...\n", "Combining: CentralAir_Y (213/290) ...\n", "Combining: Condition1_Tencode (214/290) ...\n", "Combining: Street_Grvl (215/290) ...\n", "Combining: PavedDrive_P (216/290) ...\n", "Combining: GarageCond_Ex (217/290) ...\n", "Combining: BsmtFinType2_Unf (218/290) ...\n", "Combining: HouseStyle_2.5Unf (219/290) ...\n", "Combining: Neighborhood_Gilbert (220/290) ...\n", "Combining: BsmtFinSF1 (221/290) ...\n", "Combining: PoolArea (222/290) ...\n", "Combining: CentralAir_Tencode (223/290) ...\n", "Combining: SaleType_COD (224/290) ...\n", "Combining: GarageFinish_RFn (225/290) ...\n", "Combining: FireplaceQu_TA (226/290) ...\n", "Combining: GarageQual_Tencode (227/290) ...\n", "Combining: OverallCond (228/290) ...\n", "Combining: BldgType_1Fam (229/290) ...\n", "Combining: SaleCondition_Abnorml (230/290) ...\n", "Combining: ScreenPorch (231/290) ...\n", "Combining: Exterior1st_BrkComm (232/290) ...\n", "Combining: Exterior2nd_Brk Cmn (233/290) ...\n", "Combining: SaleType_Oth (234/290) ...\n", "Combining: BsmtExposure_Gd (235/290) ...\n", "Combining: GarageYrBlt (236/290) ...\n", "Combining: Alley_Grvl (237/290) ...\n", "Combining: BldgType_Tencode (238/290) ...\n", "Combining: ExterQual_Tencode (239/290) ...\n", "Combining: KitchenQual_TA (240/290) ...\n", "Combining: CentralAir_N (241/290) ...\n", "Combining: Neighborhood_SawyerW (242/290) ...\n", "Combining: MSZoning_Tencode (243/290) ...\n", "Combining: BsmtFinType1_Unf (244/290) ...\n", "Combining: Condition1_RRAn (245/290) ...\n", "Combining: Neighborhood_IDOTRR (246/290) ...\n", "Combining: Condition2_Norm (247/290) ...\n", "Combining: MiscFeature_Gar2 (248/290) ...\n", "Combining: SaleType_CWD (249/290) ...\n", "Combining: Neighborhood_BrkSide (250/290) ...\n", "Combining: HouseStyle_SLvl (251/290) ...\n", "Combining: RoofMatl_WdShngl (252/290) ...\n", "Combining: BsmtExposure_No (253/290) ...\n", "Combining: MSZoning_FV (254/290) ...\n", "Combining: BsmtFinType1_GLQ (255/290) ...\n", "Combining: Exterior1st_WdShing (256/290) ...\n", "Combining: MasVnrArea (257/290) ...\n", "Combining: Exterior1st_Tencode (258/290) ...\n", "Combining: Exterior2nd_HdBoard (259/290) ...\n", "Combining: MSZoning_RL (260/290) ...\n", "Combining: BsmtQual_Gd (261/290) ...\n", "Combining: LotShape_IR3 (262/290) ...\n", "Combining: Exterior2nd_Plywood (263/290) ...\n", "Combining: BsmtExposure_Mn (264/290) ...\n", "Combining: MasVnrType_BrkFace (265/290) ...\n", "Combining: Neighborhood_Timber (266/290) ...\n", "Combining: Foundation_Slab (267/290) ...\n", "Combining: MSZoning_RH (268/290) ...\n", "Combining: Exterior2nd_Wd Shng (269/290) ...\n", "Combining: BsmtCond_Fa (270/290) ...\n", "Combining: BsmtCond_TA (271/290) ...\n", "Combining: HouseStyle_1.5Fin (272/290) ...\n", "Combining: Exterior1st_MetalSd (273/290) ...\n", "Combining: Fence_MnWw (274/290) ...\n", "Combining: Exterior1st_Plywood (275/290) ...\n", "Combining: MasVnrType_Stone (276/290) ...\n", "Combining: Fence_MnPrv (277/290) ...\n", "Combining: Street_Pave (278/290) ...\n", "Combining: Functional_Min2 (279/290) ...\n", "Combining: Utilities_AllPub (280/290) ...\n", "Combining: Exterior1st_Wd Sdng (281/290) ...\n", "Combining: ExterQual_Fa (282/290) ...\n", "Combining: HouseStyle_2Story (283/290) ...\n", "Combining: ExterCond_Fa (284/290) ...\n", "Combining: MasVnrType_Tencode (285/290) ...\n", "Combining: WoodDeckSF (286/290) ...\n", "Combining: GarageType_2Types (287/290) ...\n", "Combining: Exterior2nd_AsphShn (288/290) ...\n", "Combining: Neighborhood_MeadowV (289/290) ...\n", "Combining: LotConfig_Inside (290/290) ...\n", "Done.\n", "Converting to H2OFrame ...\n", "Done.\n", "\n", "Combining: OverallQual (1/290) ...\n", "Combining: KitchenAbvGr (2/290) ...\n", "Combining: SaleCondition_Tencode (3/290) ...\n", "Combining: FireplaceQu_Tencode (4/290) ...\n", "Combining: Condition1_Artery (5/290) ...\n", "Combining: YrSold (6/290) ...\n", "Combining: Utilities_Tencode (7/290) ...\n", "Combining: BsmtExposure_Tencode (8/290) ...\n", "Combining: PavedDrive_N (9/290) ...\n", "Combining: LotShape_Tencode (10/290) ...\n", "Combining: GarageType_Detchd (11/290) ...\n", "Combining: Exterior1st_BrkFace (12/290) ...\n", "Combining: GarageFinish_Unf (13/290) ...\n", "Combining: Exterior2nd_AsbShng (14/290) ...\n", "Combining: Exterior2nd_Stucco (15/290) ...\n", "Combining: BldgType_Duplex (16/290) ...\n", "Combining: Neighborhood_BrDale (17/290) ...\n", "Combining: ExterQual_TA (18/290) ...\n", "Combining: LotShape_IR2 (19/290) ...\n", "Combining: Exterior2nd_Stone (20/290) ...\n", "Combining: RoofMatl_Tencode (21/290) ...\n", "Combining: Street_Tencode (22/290) ...\n", "Combining: LandContour_Low (23/290) ...\n", "Combining: Neighborhood_NridgHt (24/290) ...\n", "Combining: TotalBsmtSF (25/290) ...\n", "Combining: RoofStyle_Hip (26/290) ...\n", "Combining: BsmtFinType1_Tencode (27/290) ...\n", "Combining: HouseStyle_1Story (28/290) ...\n", "Combining: GarageCond_Po (29/290) ...\n", "Combining: BldgType_2fmCon (30/290) ...\n", "Combining: YearRemodAdd (31/290) ...\n", "Combining: GrLivArea (32/290) ...\n", "Combining: EnclosedPorch (33/290) ...\n", "Combining: Foundation_PConc (34/290) ...\n", "Combining: Neighborhood_NPkVill (35/290) ...\n", "Combining: RoofStyle_Flat (36/290) ...\n", "Combining: HeatingQC_TA (37/290) ...\n", "Combining: Neighborhood_Blmngtn (38/290) ...\n", "Combining: FireplaceQu_Gd (39/290) ...\n", "Combining: BsmtFinType2_Tencode (40/290) ...\n", "Combining: LotShape_Reg (41/290) ...\n", "Combining: Exterior1st_HdBoard (42/290) ...\n", "Combining: HeatingQC_Fa (43/290) ...\n", "Combining: Alley_Pave (44/290) ...\n", "Combining: BsmtFinType1_BLQ (45/290) ...\n", "Combining: LotFrontage (46/290) ...\n", "Combining: Heating_GasA (47/290) ...\n", "Combining: GarageCond_TA (48/290) ...\n", "Combining: Neighborhood_Somerst (49/290) ...\n", "Combining: HouseStyle_SFoyer (50/290) ...\n", "Combining: Neighborhood_ClearCr (51/290) ...\n", "Combining: Functional_Tencode (52/290) ...\n", "Combining: Alley_Tencode (53/290) ...\n", "Combining: Functional_Typ (54/290) ...\n", "Combining: GarageQual_Gd (55/290) ...\n", "Combining: GarageCars (56/290) ...\n", "Combining: BldgType_Twnhs (57/290) ...\n", "Combining: LotShape_IR1 (58/290) ...\n", "Combining: HeatingQC_Gd (59/290) ...\n", "Combining: KitchenQual_Gd (60/290) ...\n", "Combining: ExterCond_TA (61/290) ...\n", "Combining: Electrical_Tencode (62/290) ...\n", "Combining: Foundation_Stone (63/290) ...\n", "Combining: BsmtFinType2_GLQ (64/290) ...\n", "Combining: Electrical_FuseP (65/290) ...\n", "Combining: Heating_Grav (66/290) ...\n", "Combining: LotConfig_Corner (67/290) ...\n", "Combining: Neighborhood_CollgCr (68/290) ...\n", "Combining: MiscFeature_Othr (69/290) ...\n", "Combining: Electrical_FuseA (70/290) ...\n", "Combining: FullBath (71/290) ...\n", "Combining: GarageFinish_Fin (72/290) ...\n", "Combining: Fireplaces (73/290) ...\n", "Combining: Neighborhood_Mitchel (74/290) ...\n", "Combining: Exterior1st_AsbShng (75/290) ...\n", "Combining: LandSlope_Mod (76/290) ...\n", "Combining: SaleType_ConLw (77/290) ...\n", "Combining: FireplaceQu_Po (78/290) ...\n", "Combining: BsmtQual_Tencode (79/290) ...\n", "Combining: LotArea (80/290) ...\n", "Combining: Exterior2nd_BrkFace (81/290) ...\n", "Combining: BsmtFinType2_ALQ (82/290) ...\n", "Combining: RoofMatl_CompShg (83/290) ...\n", "Combining: BsmtHalfBath (84/290) ...\n", "Combining: HouseStyle_Tencode (85/290) ...\n", "Combining: Neighborhood_NoRidge (86/290) ...\n", "Combining: GarageCond_Tencode (87/290) ...\n", "Combining: Foundation_BrkTil (88/290) ...\n", "Combining: Exterior2nd_Tencode (89/290) ...\n", "Combining: Exterior1st_Stucco (90/290) ...\n", "Combining: MiscVal (91/290) ...\n", "Combining: BsmtFinSF2 (92/290) ...\n", "Combining: LotConfig_FR2 (93/290) ...\n", "Combining: Fence_Tencode (94/290) ...\n", "Combining: KitchenQual_Ex (95/290) ...\n", "Combining: Neighborhood_Tencode (96/290) ...\n", "Combining: YearBuilt (97/290) ...\n", "Combining: LandSlope_Sev (98/290) ...\n", "Combining: Heating_Tencode (99/290) ...\n", "Combining: LandContour_HLS (100/290) ...\n", "Combining: Neighborhood_OldTown (101/290) ...\n", "Combining: SaleType_Tencode (102/290) ...\n", "Combining: Exterior2nd_VinylSd (103/290) ...\n", "Combining: SaleType_ConLD (104/290) ...\n", "Combining: GarageType_Tencode (105/290) ...\n", "Combining: SaleType_ConLI (106/290) ...\n", "Combining: Heating_GasW (107/290) ...\n", "Combining: LandContour_Tencode (108/290) ...\n", "Combining: Neighborhood_Veenker (109/290) ...\n", "Combining: Foundation_Tencode (110/290) ...\n", "Combining: LandSlope_Tencode (111/290) ...\n", "Combining: Neighborhood_Edwards (112/290) ...\n", "Combining: BsmtQual_Ex (113/290) ...\n", "Combining: BedroomAbvGr (114/290) ...\n", "Combining: Electrical_SBrkr (115/290) ...\n", "Combining: BsmtFinType2_BLQ (116/290) ...\n", "Combining: PavedDrive_Y (117/290) ...\n", "Combining: PoolQC_Tencode (118/290) ...\n", "Combining: SaleCondition_Family (119/290) ...\n", "Combining: BsmtFinType1_ALQ (120/290) ...\n", "Combining: BsmtQual_Fa (121/290) ...\n", "Combining: SaleType_WD (122/290) ...\n", "Combining: LandContour_Bnk (123/290) ...\n", "Combining: 3SsnPorch (124/290) ...\n", "Combining: LandContour_Lvl (125/290) ...\n", "Combining: Neighborhood_SWISU (126/290) ...\n", "Combining: HeatingQC_Tencode (127/290) ...\n", "Combining: PavedDrive_Tencode (128/290) ...\n", "Combining: HalfBath (129/290) ...\n", "Combining: Fence_GdPrv (130/290) ...\n", "Combining: HeatingQC_Ex (131/290) ...\n", "Combining: RoofMatl_Tar&Grv (132/290) ...\n", "Combining: LotConfig_CulDSac (133/290) ...\n", "Combining: HouseStyle_1.5Unf (134/290) ...\n", "Combining: BsmtFullBath (135/290) ...\n", "Combining: GarageQual_Fa (136/290) ...\n", "Combining: ExterCond_Gd (137/290) ...\n", "Combining: BsmtQual_TA (138/290) ...\n", "Combining: Functional_Maj2 (139/290) ...\n", "Combining: SaleCondition_Alloca (140/290) ...\n", "Combining: Condition1_PosA (141/290) ...\n", "Combining: GarageCond_Gd (142/290) ...\n", "Combining: GarageQual_TA (143/290) ...\n", "Combining: FireplaceQu_Fa (144/290) ...\n", "Combining: KitchenQual_Tencode (145/290) ...\n", "Combining: Condition2_Tencode (146/290) ...\n", "Combining: BsmtFinType1_Rec (147/290) ...\n", "Combining: ExterCond_Tencode (148/290) ...\n", "Combining: GarageFinish_Tencode (149/290) ...\n", "Combining: RoofStyle_Gambrel (150/290) ...\n", "Combining: Exterior1st_CemntBd (151/290) ...\n", "Combining: MSZoning_C (all) (152/290) ...\n", "Combining: Condition1_PosN (153/290) ...\n", "Combining: Exterior2nd_MetalSd (154/290) ...\n", "Combining: RoofStyle_Gable (155/290) ...\n", "Combining: GarageType_BuiltIn (156/290) ...\n", "Combining: Electrical_FuseF (157/290) ...\n", "Combining: Condition1_RRAe (158/290) ...\n", "Combining: TotRmsAbvGrd (159/290) ...\n", "Combining: LowQualFinSF (160/290) ...\n", "Combining: SaleType_New (161/290) ...\n", "Combining: RoofStyle_Shed (162/290) ...\n", "Combining: Functional_Maj1 (163/290) ...\n", "Combining: MoSold (164/290) ...\n", "Combining: Neighborhood_NWAmes (165/290) ...\n", "Combining: MasVnrType_BrkCmn (166/290) ...\n", "Combining: Exterior2nd_CmentBd (167/290) ...\n", "Combining: 1stFlrSF (168/290) ...\n", "Combining: GarageCond_Fa (169/290) ...\n", "Combining: BsmtFinType2_Rec (170/290) ...\n", "Combining: GarageType_Attchd (171/290) ...\n", "Combining: MiscFeature_Shed (172/290) ...\n", "Combining: BsmtExposure_Av (173/290) ...\n", "Combining: SaleCondition_Normal (174/290) ...\n", "Combining: Condition1_Norm (175/290) ...\n", "Combining: BsmtFinType2_LwQ (176/290) ...\n", "Combining: GarageQual_Po (177/290) ...\n", "Combining: Neighborhood_NAmes (178/290) ...\n", "Combining: GarageArea (179/290) ...\n", "Combining: Functional_Min1 (180/290) ...\n", "Combining: LotConfig_Tencode (181/290) ...\n", "Combining: OpenPorchSF (182/290) ...\n", "Combining: Condition1_Feedr (183/290) ...\n", "Combining: ExterQual_Ex (184/290) ...\n", "Combining: BsmtUnfSF (185/290) ...\n", "Combining: GarageType_CarPort (186/290) ...\n", "Combining: LandSlope_Gtl (187/290) ...\n", "Combining: Functional_Mod (188/290) ...\n", "Combining: FireplaceQu_Ex (189/290) ...\n", "Combining: MSZoning_RM (190/290) ...\n", "Combining: RoofStyle_Tencode (191/290) ...\n", "Combining: 2ndFlrSF (192/290) ...\n", "Combining: Exterior2nd_Wd Sdng (193/290) ...\n", "Combining: BsmtCond_Gd (194/290) ...\n", "Combining: BsmtCond_Po (195/290) ...\n", "Combining: MiscFeature_Tencode (196/290) ...\n", "Combining: Neighborhood_StoneBr (197/290) ...\n", "Combining: MasVnrType_None (198/290) ...\n", "Combining: Neighborhood_Sawyer (199/290) ...\n", "Combining: BldgType_TwnhsE (200/290) ...\n", "Combining: ExterQual_Gd (201/290) ...\n", "Combining: KitchenQual_Fa (202/290) ...\n", "Combining: Foundation_CBlock (203/290) ...\n", "Combining: BsmtCond_Tencode (204/290) ...\n", "Combining: Neighborhood_Crawfor (205/290) ...\n", "Combining: GarageType_Basment (206/290) ...\n", "Combining: Condition2_Artery (207/290) ...\n", "Combining: Fence_GdWo (208/290) ...\n", "Combining: MSSubClass (209/290) ...\n", "Combining: BsmtFinType1_LwQ (210/290) ...\n", "Combining: SaleCondition_Partial (211/290) ...\n", "Combining: Exterior1st_VinylSd (212/290) ...\n", "Combining: CentralAir_Y (213/290) ...\n", "Combining: Condition1_Tencode (214/290) ...\n", "Combining: Street_Grvl (215/290) ...\n", "Combining: PavedDrive_P (216/290) ...\n", "Combining: GarageCond_Ex (217/290) ...\n", "Combining: BsmtFinType2_Unf (218/290) ...\n", "Combining: HouseStyle_2.5Unf (219/290) ...\n", "Combining: Neighborhood_Gilbert (220/290) ...\n", "Combining: BsmtFinSF1 (221/290) ...\n", "Combining: PoolArea (222/290) ...\n", "Combining: CentralAir_Tencode (223/290) ...\n", "Combining: SaleType_COD (224/290) ...\n", "Combining: GarageFinish_RFn (225/290) ...\n", "Combining: FireplaceQu_TA (226/290) ...\n", "Combining: GarageQual_Tencode (227/290) ...\n", "Combining: OverallCond (228/290) ...\n", "Combining: BldgType_1Fam (229/290) ...\n", "Combining: SaleCondition_Abnorml (230/290) ...\n", "Combining: ScreenPorch (231/290) ...\n", "Combining: Exterior1st_BrkComm (232/290) ...\n", "Combining: Exterior2nd_Brk Cmn (233/290) ...\n", "Combining: SaleType_Oth (234/290) ...\n", "Combining: BsmtExposure_Gd (235/290) ...\n", "Combining: GarageYrBlt (236/290) ...\n", "Combining: Alley_Grvl (237/290) ...\n", "Combining: BldgType_Tencode (238/290) ...\n", "Combining: ExterQual_Tencode (239/290) ...\n", "Combining: KitchenQual_TA (240/290) ...\n", "Combining: CentralAir_N (241/290) ...\n", "Combining: Neighborhood_SawyerW (242/290) ...\n", "Combining: MSZoning_Tencode (243/290) ...\n", "Combining: BsmtFinType1_Unf (244/290) ...\n", "Combining: Condition1_RRAn (245/290) ...\n", "Combining: Neighborhood_IDOTRR (246/290) ...\n", "Combining: Condition2_Norm (247/290) ...\n", "Combining: MiscFeature_Gar2 (248/290) ...\n", "Combining: SaleType_CWD (249/290) ...\n", "Combining: Neighborhood_BrkSide (250/290) ...\n", "Combining: HouseStyle_SLvl (251/290) ...\n", "Combining: RoofMatl_WdShngl (252/290) ...\n", "Combining: BsmtExposure_No (253/290) ...\n", "Combining: MSZoning_FV (254/290) ...\n", "Combining: BsmtFinType1_GLQ (255/290) ...\n", "Combining: Exterior1st_WdShing (256/290) ...\n", "Combining: MasVnrArea (257/290) ...\n", "Combining: Exterior1st_Tencode (258/290) ...\n", "Combining: Exterior2nd_HdBoard (259/290) ...\n", "Combining: MSZoning_RL (260/290) ...\n", "Combining: BsmtQual_Gd (261/290) ...\n", "Combining: LotShape_IR3 (262/290) ...\n", "Combining: Exterior2nd_Plywood (263/290) ...\n", "Combining: BsmtExposure_Mn (264/290) ...\n", "Combining: MasVnrType_BrkFace (265/290) ...\n", "Combining: Neighborhood_Timber (266/290) ...\n", "Combining: Foundation_Slab (267/290) ...\n", "Combining: MSZoning_RH (268/290) ...\n", "Combining: Exterior2nd_Wd Shng (269/290) ...\n", "Combining: BsmtCond_Fa (270/290) ...\n", "Combining: BsmtCond_TA (271/290) ...\n", "Combining: HouseStyle_1.5Fin (272/290) ...\n", "Combining: Exterior1st_MetalSd (273/290) ...\n", "Combining: Fence_MnWw (274/290) ...\n", "Combining: Exterior1st_Plywood (275/290) ...\n", "Combining: MasVnrType_Stone (276/290) ...\n", "Combining: Fence_MnPrv (277/290) ...\n", "Combining: Street_Pave (278/290) ...\n", "Combining: Functional_Min2 (279/290) ...\n", "Combining: Utilities_AllPub (280/290) ...\n", "Combining: Exterior1st_Wd Sdng (281/290) ...\n", "Combining: ExterQual_Fa (282/290) ...\n", "Combining: HouseStyle_2Story (283/290) ...\n", "Combining: ExterCond_Fa (284/290) ...\n", "Combining: MasVnrType_Tencode (285/290) ...\n", "Combining: WoodDeckSF (286/290) ...\n", "Combining: GarageType_2Types (287/290) ...\n", "Combining: Exterior2nd_AsphShn (288/290) ...\n", "Combining: Neighborhood_MeadowV (289/290) ...\n", "Combining: LotConfig_Inside (290/290) ...\n", "Done.\n", "Converting to H2OFrame ...\n", "Done.\n", "\n" ] } ], "source": [ "train, _ = feature_combiner(train, test, encoded_nums)\n", "valid, test = feature_combiner(valid, test, encoded_nums)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "#### Redefine numerics and explore" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Numeric = ['Exterior1st_BrkFace|GarageCond_TA', 'HouseStyle_SLvl|Fence_MnPrv', 'BldgType_Duplex|Alley_Tencode', 'RoofMatl_CompShg|ScreenPorch', 'FireplaceQu_TA|SaleType_Oth', 'GarageType_CarPort|BsmtCond_Po', 'SaleCondition_Tencode|BldgType_2fmCon', 'Foundation_BrkTil|Condition2_Tencode', 'GarageCond_Gd|MiscFeature_Tencode', 'Foundation_Stone|Neighborhood_Edwards', 'BsmtFinType1_ALQ|KitchenQual_Tencode', 'Exterior1st_Tencode|Neighborhood_MeadowV', 'Electrical_FuseA|SaleCondition_Partial', 'GarageQual_Gd|BsmtCond_Tencode', 'HouseStyle_SFoyer|Heating_GasW', 'LotShape_Reg|MasVnrType_Tencode', 'Condition1_Norm|SaleCondition_Abnorml', 'Neighborhood_OldTown', 'Heating_GasA|Neighborhood_Crawfor', 'Fence_Tencode|LandSlope_Tencode', 'RoofMatl_CompShg|HouseStyle_1.5Fin', 'ExterCond_TA|Exterior1st_BrkComm', '1stFlrSF|Neighborhood_Crawfor', 'MiscVal|TotRmsAbvGrd', 'MiscFeature_Othr|GarageYrBlt', 'CentralAir_N|MasVnrArea', 'BsmtFinType1_Tencode|SaleType_CWD', 'MiscVal|Condition1_PosN', 'LandSlope_Sev|Exterior1st_MetalSd', 'Exterior2nd_Tencode|GarageCond_Gd', 'BsmtFinType2_BLQ|Exterior2nd_AsphShn', 'Exterior1st_AsbShng|Exterior2nd_Plywood', 'BldgType_1Fam|Exterior1st_Tencode', 'Functional_Min1|ScreenPorch', 'Alley_Tencode|BsmtFinType2_Rec', 'KitchenAbvGr|Exterior1st_Stucco', 'GarageFinish_Unf|Neighborhood_OldTown', 'SaleCondition_Normal|Fence_GdWo', 'BsmtFinType1_BLQ|Condition2_Norm', 'Condition1_PosA|Exterior1st_Wd Sdng', 'YrSold|GarageType_Basment', 'Functional_Tencode|GarageCars', 'GarageFinish_Fin|LotConfig_Inside', 'Condition1_PosN|Fence_MnWw', 'HeatingQC_TA|RoofStyle_Shed', 'BsmtFinType2_BLQ|Functional_Mod', 'BedroomAbvGr|GarageQual_Po', 'Foundation_Stone|GarageCond_Ex', 'LotConfig_CulDSac|Exterior2nd_AsphShn', 'Exterior1st_BrkFace|BsmtCond_Gd', 'GarageCond_TA|Exterior2nd_VinylSd', 'BsmtFinType2_LwQ|ExterQual_Ex', 'LotConfig_Corner|Fireplaces', 'ExterQual_Ex|Neighborhood_Sawyer', 'SaleCondition_Partial|WoodDeckSF', 'GarageCond_Tencode|Neighborhood_Sawyer', 'BldgType_Duplex|Functional_Min2', 'Neighborhood_NAmes|Utilities_AllPub', 'Exterior2nd_MetalSd|Condition1_Norm', 'PavedDrive_Tencode|Neighborhood_IDOTRR', 'ExterCond_TA|Foundation_Slab', 'GarageType_BuiltIn|BsmtCond_Fa', 'GarageQual_Gd|PoolArea', 'Exterior1st_Stucco|BldgType_TwnhsE', 'GarageType_Tencode|Exterior1st_CemntBd', 'GarageCond_Po|Fireplaces', 'ExterQual_Gd|Exterior2nd_Brk Cmn', 'BedroomAbvGr|MSZoning_C (all)', 'RoofMatl_CompShg|RoofStyle_Gambrel', 'HeatingQC_Fa|LotConfig_CulDSac', 'SaleType_ConLI|Neighborhood_NWAmes', 'Electrical_SBrkr|GarageType_Attchd', 'Functional_Tencode|Neighborhood_IDOTRR', 'Exterior2nd_Stone|PoolQC_Tencode', 'KitchenAbvGr|Condition1_RRAn', 'BsmtQual_Fa|Neighborhood_Crawfor', 'Condition1_Feedr|Condition2_Artery', '1stFlrSF|MSZoning_RL', 'YearBuilt|MiscFeature_Shed', 'Exterior2nd_Tencode|PoolQC_Tencode', 'GarageQual_TA', 'FireplaceQu_Po|ExterQual_Ex', 'HouseStyle_SFoyer|Condition1_RRAe', 'Foundation_BrkTil|SaleType_COD', 'LandContour_Lvl|Functional_Min2', 'BedroomAbvGr|Neighborhood_Sawyer', 'ExterCond_Gd|SaleCondition_Normal', 'FireplaceQu_TA|SaleType_CWD', 'HalfBath|MSZoning_RH', 'RoofStyle_Hip|MiscFeature_Gar2', 'BsmtFinType2_ALQ|Exterior2nd_VinylSd', 'Fireplaces|LotConfig_Tencode', 'GarageCond_Fa|Exterior2nd_Brk Cmn', 'HouseStyle_1.5Unf|GarageType_Basment', 'Exterior2nd_Stone|Functional_Typ', 'LotShape_Reg|BsmtFinType2_BLQ', 'GarageType_BuiltIn|MasVnrType_Stone', 'GarageCars|BsmtExposure_Av', 'Fence_Tencode|GarageType_Tencode', 'Neighborhood_Blmngtn|HouseStyle_SLvl', 'Foundation_Tencode|HeatingQC_Tencode', 'RoofMatl_WdShngl|Exterior1st_Plywood', 'SaleCondition_Partial|HouseStyle_SLvl', 'HeatingQC_Fa|KitchenQual_Tencode', 'HeatingQC_TA|BsmtFinType2_LwQ', 'RoofStyle_Flat|LotShape_Reg', 'Electrical_FuseA|Exterior2nd_CmentBd', 'PavedDrive_N|Exterior2nd_HdBoard', 'MiscFeature_Shed|MSZoning_FV', 'OverallQual|Neighborhood_NridgHt', 'LotFrontage|Neighborhood_Timber', 'LowQualFinSF|ExterQual_Ex', 'GarageType_Attchd|Exterior2nd_HdBoard', 'HalfBath|OpenPorchSF', 'GarageType_Tencode|Exterior1st_Plywood', 'SaleType_New|Neighborhood_StoneBr', 'ExterCond_Gd|BsmtExposure_No', 'Heating_Grav|SaleType_COD', 'HeatingQC_TA|BsmtUnfSF', 'HouseStyle_SFoyer|SaleCondition_Normal', 'Fence_Tencode|LandContour_Lvl', 'KitchenQual_Tencode|SaleType_New', 'MSZoning_RM|Exterior1st_Plywood', 'HouseStyle_1Story|Neighborhood_Edwards', 'HeatingQC_TA|LotArea', 'KitchenAbvGr|BsmtCond_Po', 'HeatingQC_Fa|PoolArea', 'KitchenQual_Ex|Exterior1st_BrkComm', 'BsmtFinSF1|BsmtCond_TA', 'Neighborhood_Blmngtn|BsmtCond_Tencode', 'OverallQual|Neighborhood_Tencode', 'Street_Tencode|MasVnrType_None', 'Exterior2nd_Stone|Condition1_Norm', 'Neighborhood_Tencode|GarageQual_Po', 'LotConfig_FR2|Exterior2nd_Wd Shng', 'YrSold|BsmtQual_Tencode', 'BldgType_2fmCon|KitchenQual_Ex', 'Neighborhood_Somerst|BedroomAbvGr', 'BsmtQual_Ex', 'Functional_Min2', 'GarageCond_Gd|Exterior1st_MetalSd', 'GarageFinish_Unf|MSZoning_RH', 'OverallQual|Alley_Pave', 'MiscVal|GarageCond_Ex', 'BsmtFinType2_GLQ|ExterQual_Fa', 'Fireplaces|LandSlope_Tencode', 'MiscFeature_Tencode|Condition2_Norm', 'Neighborhood_NridgHt|SaleType_ConLw', 'BsmtExposure_Av|Condition1_RRAn', 'RoofStyle_Gambrel|Exterior1st_Tencode', 'Neighborhood_Veenker|GarageQual_TA', 'BsmtFinType2_Rec|Foundation_CBlock', 'Neighborhood_Gilbert|MasVnrArea', 'ScreenPorch|BsmtFinType1_GLQ', 'Electrical_FuseA|Exterior2nd_Tencode', 'Neighborhood_ClearCr|BsmtCond_TA', 'KitchenQual_Gd|TotRmsAbvGrd', 'KitchenQual_Fa|Neighborhood_BrkSide', 'GarageYrBlt|SaleType_CWD', 'CentralAir_Y|Fence_MnPrv', 'Condition1_Norm|Condition2_Norm', 'FireplaceQu_Gd|LandSlope_Tencode', 'Heating_GasA|LotShape_IR3', 'GrLivArea|GarageFinish_RFn', 'ExterQual_TA|Exterior2nd_Tencode', 'Functional_Tencode|Neighborhood_Veenker', 'LotArea|SaleCondition_Partial', 'PoolArea|BsmtFinType1_GLQ', 'Neighborhood_CollgCr|HeatingQC_Ex', 'Neighborhood_Somerst|Neighborhood_StoneBr', 'TotalBsmtSF|Functional_Maj2', 'Heating_GasW|BsmtCond_TA', 'LandContour_Low|Exterior1st_Tencode', 'LandContour_Tencode|SaleCondition_Partial', 'Exterior1st_BrkFace|Functional_Mod', 'LandContour_Lvl|Street_Pave', 'YrSold|MiscFeature_Gar2', 'HouseStyle_1Story|HeatingQC_Ex', 'SaleCondition_Partial|BsmtFinType2_Unf', 'LotArea|Exterior2nd_BrkFace', 'LotConfig_FR2|SaleType_ConLI', 'BsmtFinType2_GLQ|Condition2_Tencode', 'KitchenAbvGr|KitchenQual_Gd', 'LotConfig_FR2|LotConfig_Tencode', 'GarageCond_Fa|GarageFinish_RFn', 'Heating_GasW|SaleType_Oth', 'Exterior1st_VinylSd|CentralAir_Tencode', 'Condition1_Artery|BsmtFinType2_Tencode', 'LotShape_IR2|PoolQC_Tencode', 'LandContour_HLS|Condition1_PosN', 'LotConfig_Corner|BedroomAbvGr', 'OverallQual|Neighborhood_NPkVill', 'PavedDrive_N|FullBath', 'BedroomAbvGr|Street_Grvl', 'RoofStyle_Gable|BsmtExposure_Mn', 'Exterior2nd_Stone|Exterior1st_Stucco', 'HouseStyle_1Story|MoSold', '1stFlrSF|Neighborhood_Timber', 'BsmtExposure_Tencode|MSZoning_RL', 'SaleType_COD|MasVnrType_Stone', 'Exterior2nd_Stone|BsmtFinType1_BLQ', 'BldgType_TwnhsE|BsmtExposure_Gd', 'BldgType_2fmCon|Street_Grvl', 'TotRmsAbvGrd|RoofStyle_Tencode', 'RoofMatl_Tencode|GarageType_Tencode', 'Neighborhood_OldTown|Condition1_Norm', 'ExterCond_Tencode|Neighborhood_StoneBr', 'RoofMatl_Tar&Grv|Condition1_Feedr', 'BsmtExposure_Av|MSSubClass', 'Electrical_FuseF|SaleCondition_Abnorml', 'SaleCondition_Tencode|PavedDrive_N', 'FireplaceQu_Po|HouseStyle_1.5Unf', 'MiscFeature_Shed|MSZoning_Tencode', 'ExterCond_Gd|Exterior1st_Tencode', 'BsmtFinType2_ALQ|GarageCond_Gd', 'Neighborhood_Timber|ExterCond_Fa', 'Neighborhood_NWAmes|MasVnrType_BrkCmn', 'BldgType_Twnhs|BsmtFinType2_ALQ', 'Neighborhood_CollgCr|LandSlope_Mod', 'FireplaceQu_Tencode|Condition1_RRAe', 'Electrical_SBrkr|LandSlope_Gtl', 'Neighborhood_Crawfor|Functional_Min2', 'FireplaceQu_Po|GarageCond_Tencode', 'LotFrontage|ExterCond_TA', 'Functional_Typ|BsmtExposure_No', 'BsmtFinSF1|Exterior2nd_HdBoard', 'FireplaceQu_Tencode|BsmtFinType1_BLQ', 'Heating_Tencode|RoofMatl_WdShngl', 'GarageType_Detchd|Neighborhood_NAmes', 'MSZoning_Tencode|Neighborhood_Timber', 'BsmtFinSF1|HouseStyle_2Story', 'GarageFinish_RFn|ExterQual_Tencode', 'HeatingQC_Ex|Exterior1st_Wd Sdng', 'Exterior1st_CemntBd|TotRmsAbvGrd', 'HeatingQC_Fa|BsmtExposure_Gd', 'BldgType_TwnhsE|Fence_MnWw', 'Alley_Tencode|GarageFinish_RFn', '1stFlrSF|Neighborhood_BrkSide', 'Neighborhood_NridgHt|Functional_Maj2', 'LotConfig_FR2|Exterior1st_Wd Sdng', 'Neighborhood_NoRidge|BsmtFinType1_Unf', 'Neighborhood_Tencode|ExterQual_Gd', 'MiscFeature_Shed|Functional_Min2', 'Neighborhood_NAmes|Condition2_Artery', 'Electrical_Tencode|HouseStyle_SLvl', 'Functional_Tencode|LowQualFinSF', 'ExterQual_TA|BsmtFinType1_ALQ', 'ExterCond_Tencode|Neighborhood_MeadowV', 'BsmtFinType1_LwQ|PavedDrive_P', 'GarageFinish_Fin|Electrical_SBrkr', 'SaleType_Tencode|KitchenQual_Fa', 'GarageQual_TA|RoofStyle_Gable', 'RoofMatl_CompShg|MiscVal', 'GarageType_Tencode|Heating_GasW', 'Exterior1st_AsbShng|SaleType_WD', 'PavedDrive_Y|Condition2_Tencode', 'SaleType_New|Condition1_Tencode', 'HouseStyle_SFoyer|LotConfig_CulDSac', 'GarageType_CarPort|Condition1_Tencode', 'BsmtFinType1_LwQ|Alley_Grvl', 'Heating_GasW|CentralAir_N', 'Functional_Maj1|ExterQual_Gd', 'Neighborhood_CollgCr|GarageQual_TA', 'Foundation_Stone|TotRmsAbvGrd', 'Neighborhood_Somerst|GarageQual_Po', 'GarageQual_Gd|HeatingQC_Ex', 'Neighborhood_NPkVill|Alley_Tencode', 'LotShape_IR1|GarageCond_Fa', 'Heating_Tencode|MSZoning_RL', 'Neighborhood_CollgCr|GarageQual_Po', 'EnclosedPorch|Foundation_BrkTil', 'SaleType_ConLw|Exterior2nd_Brk Cmn', 'SaleType_Tencode|BldgType_TwnhsE', 'MasVnrType_BrkFace|WoodDeckSF', 'BldgType_Twnhs|Neighborhood_IDOTRR', 'Alley_Pave|Condition2_Norm', 'Exterior2nd_Stucco|HouseStyle_SFoyer', 'Foundation_BrkTil|SaleType_New', 'MSZoning_C (all)|BsmtFinSF1', 'Exterior2nd_BrkFace|Exterior2nd_Wd Sdng', 'GarageFinish_Unf|BsmtFullBath', 'LandSlope_Gtl|BsmtFinSF1', 'RoofMatl_Tar&Grv|ExterQual_Tencode', 'YrSold|GarageCond_Ex', 'LotConfig_Corner|PavedDrive_P', 'PavedDrive_N|Condition1_RRAe', 'BldgType_2fmCon|PavedDrive_Y', 'BsmtExposure_Tencode|GarageFinish_Fin', 'Exterior1st_BrkFace|Electrical_FuseA', 'Neighborhood_Edwards|LandContour_Lvl', 'Condition2_Tencode|BldgType_1Fam', 'Alley_Pave|Neighborhood_Somerst', 'SaleType_COD|BsmtFinType1_GLQ', 'LotArea|Exterior1st_VinylSd', 'HeatingQC_Fa|1stFlrSF', 'GarageFinish_Unf|Neighborhood_Mitchel', 'Condition2_Tencode|Exterior1st_Plywood', 'SaleType_ConLI|GarageFinish_Tencode', 'Neighborhood_BrDale|LandContour_Lvl', 'Heating_Grav|HouseStyle_Tencode', 'Neighborhood_Sawyer|ExterQual_Gd', 'GarageFinish_Fin|MasVnrType_Tencode', 'BsmtFinType2_LwQ|MSZoning_RM', 'SaleType_WD|BsmtFinType1_Rec', 'Electrical_FuseF|Condition1_Tencode', 'ExterQual_TA|SaleCondition_Partial', 'Neighborhood_Mitchel|Foundation_Slab', 'Exterior1st_Tencode', 'Exterior1st_CemntBd|Neighborhood_SawyerW', 'Functional_Typ|Heating_GasW', 'TotRmsAbvGrd|GarageQual_Tencode', 'BsmtFinType2_GLQ|GarageQual_Tencode', 'MasVnrType_BrkCmn|BsmtFinType2_LwQ', 'Neighborhood_BrDale|Condition1_Norm', 'SaleType_Tencode|Functional_Maj2', 'GarageFinish_Fin|Neighborhood_Mitchel', 'BsmtFinType1_ALQ|HalfBath', 'GarageType_Detchd|SaleCondition_Family', '1stFlrSF|Neighborhood_Sawyer', 'MiscVal|Exterior1st_MetalSd', 'Heating_Tencode|MSZoning_C (all)', 'BsmtFinType1_Tencode|BldgType_1Fam', 'BsmtFinSF2|BsmtExposure_Gd', 'Street_Grvl|MSZoning_RH', 'HouseStyle_Tencode|GarageCond_Fa', 'GarageCond_TA|BsmtFinType1_Unf', 'HouseStyle_1.5Unf|Exterior2nd_Wd Shng', 'BsmtFinType2_ALQ|LandContour_Tencode', 'BsmtFinSF1|MasVnrArea', 'Functional_Typ|BsmtUnfSF', 'Electrical_Tencode|Exterior2nd_Plywood', 'Exterior1st_HdBoard|BsmtFinType2_GLQ', 'Electrical_FuseF|HouseStyle_SLvl', 'GarageCars|MasVnrType_None', 'EnclosedPorch|ExterCond_Gd', 'HeatingQC_Tencode|OverallCond', 'BsmtFinType1_Unf|Neighborhood_Timber', 'LotArea|MoSold', 'FireplaceQu_Fa|BsmtFinType2_Rec', 'Street_Tencode|OverallCond', 'Electrical_Tencode|MasVnrType_Stone', 'Neighborhood_Veenker|Utilities_AllPub', 'BldgType_2fmCon|LandContour_Lvl', 'GrLivArea|BsmtQual_Tencode', 'BsmtFinType2_LwQ|BsmtFinType1_Unf', 'SaleType_Tencode|LandContour_Tencode', 'RoofStyle_Hip|LandSlope_Mod', 'LandSlope_Gtl|FireplaceQu_Ex', 'GarageCond_Tencode|FireplaceQu_TA', 'CentralAir_N|BsmtQual_Gd', 'GarageFinish_Unf|Functional_Typ', 'GarageCars|Electrical_FuseP', 'Neighborhood_Tencode|MasVnrArea', 'Foundation_Tencode|BsmtExposure_Av', 'GarageCond_TA|2ndFlrSF', 'PoolQC_Tencode|ExterQual_Gd', 'LotConfig_CulDSac|Condition1_PosN', 'GarageType_Detchd|Functional_Min2', 'Condition1_Tencode|Exterior1st_WdShing', 'PavedDrive_P|Exterior2nd_AsphShn', 'MSZoning_C (all)|Fence_MnWw', 'SaleType_New|GarageYrBlt', 'Exterior1st_CemntBd|Condition1_PosN', 'Neighborhood_Somerst|SaleCondition_Normal', 'BsmtFinType2_GLQ|Neighborhood_Mitchel', 'Neighborhood_NAmes|MiscFeature_Gar2', 'Electrical_SBrkr|Condition1_RRAn', 'LotArea|YearBuilt', 'Foundation_BrkTil|PoolQC_Tencode', 'LandContour_HLS|PavedDrive_Y', 'LotShape_Tencode|BldgType_Duplex', 'Utilities_Tencode|BsmtFinSF2', 'Exterior2nd_Brk Cmn|Exterior1st_Wd Sdng', 'Fence_Tencode|BsmtCond_Tencode', 'BsmtFinType2_GLQ|LandContour_Lvl', 'GarageType_Tencode|BsmtFinType2_LwQ', 'Street_Tencode|Exterior2nd_MetalSd', 'SaleType_ConLI|Electrical_FuseF', 'TotalBsmtSF|BsmtHalfBath', 'MiscFeature_Othr|Exterior1st_VinylSd', 'FireplaceQu_Gd|HeatingQC_Gd', 'KitchenQual_Gd|SaleType_COD', 'GarageCond_Gd|OverallCond', 'ExterQual_Tencode|Exterior1st_Plywood', 'Exterior2nd_Tencode|SaleCondition_Family', 'GarageType_Basment|BsmtExposure_Gd', 'Neighborhood_Somerst', 'BsmtFinType2_Tencode|SaleType_Oth', 'SaleCondition_Family|KitchenQual_TA', 'Neighborhood_Tencode|LandSlope_Sev', 'YearBuilt|MSZoning_RH', 'LotShape_Tencode|LotShape_Reg', 'MoSold|Neighborhood_Crawfor', 'GarageType_Attchd|BldgType_Tencode', 'SaleCondition_Tencode|SaleType_New', 'GarageType_Attchd|GarageType_Basment', 'SaleCondition_Normal|MasVnrType_Stone', 'ExterQual_Tencode|BsmtCond_Fa', 'HalfBath|Condition2_Tencode', 'Electrical_SBrkr|Functional_Mod', 'FireplaceQu_Tencode|RoofMatl_CompShg', 'ExterQual_TA|BldgType_Twnhs', 'SaleType_ConLw|3SsnPorch', 'Neighborhood_OldTown|BsmtQual_Ex', 'GarageType_Detchd|RoofMatl_Tencode', 'HouseStyle_1.5Fin|ExterCond_Fa', 'Neighborhood_ClearCr|GarageFinish_Tencode', 'KitchenQual_Gd|GarageQual_Fa', 'Heating_GasW|ExterQual_Tencode', 'HouseStyle_1.5Unf|GarageFinish_Tencode', 'Functional_Tencode|Neighborhood_StoneBr', 'FullBath|BsmtFinType1_Rec', 'Exterior2nd_Stucco|GarageCars', 'LotShape_IR2|Utilities_AllPub', 'GrLivArea|Fence_GdPrv', 'GarageCond_Po|BsmtExposure_Mn', 'BsmtFinType1_BLQ|Exterior1st_CemntBd', 'GarageFinish_Unf|Foundation_Slab', 'RoofStyle_Hip|Exterior1st_VinylSd', 'LotConfig_Corner|KitchenQual_Fa', 'GarageQual_Gd|BsmtQual_TA', 'YearBuilt|GarageType_Attchd', 'Exterior2nd_Stone|Exterior2nd_AsphShn', 'Functional_Typ|Neighborhood_Tencode', 'Exterior2nd_BrkFace|MasVnrArea', 'GarageType_CarPort|CentralAir_N', 'MiscFeature_Othr|1stFlrSF', 'Condition1_Artery|Functional_Min1', 'Neighborhood_Tencode|Exterior2nd_VinylSd', 'BldgType_Duplex|BsmtQual_Tencode', 'BsmtQual_Gd|Foundation_Slab', 'PavedDrive_Tencode|ScreenPorch', 'GarageCond_Tencode|Exterior2nd_Wd Shng', 'Functional_Maj2|Street_Grvl', 'BsmtFinType2_LwQ|KitchenQual_Fa', 'CentralAir_Y|ExterQual_Tencode', 'Neighborhood_Tencode|GarageCond_Gd', 'YearRemodAdd|CentralAir_N', 'LotShape_IR2|LotConfig_Inside', 'LandSlope_Mod|Condition1_PosN', 'LotConfig_CulDSac|GarageCond_Ex', 'RoofStyle_Tencode|MiscFeature_Tencode', 'GarageCond_Po|RoofStyle_Flat', 'BldgType_Tencode|ExterQual_Fa', 'GarageCond_TA|BsmtFinType1_LwQ', 'RoofStyle_Hip|GarageCond_Gd', 'BsmtFinType2_LwQ|BsmtFinSF1', 'ExterQual_Gd|BsmtFinType1_GLQ', 'Neighborhood_NridgHt|Electrical_Tencode', 'GarageFinish_Tencode|Exterior2nd_Brk Cmn', 'HeatingQC_Fa|SaleCondition_Family', 'Electrical_Tencode|1stFlrSF', 'YrSold|Functional_Tencode', 'BsmtFinType1_BLQ|ExterCond_Tencode', 'RoofStyle_Flat|Neighborhood_ClearCr', 'Neighborhood_Somerst|ExterQual_Gd', 'Neighborhood_Tencode|SaleType_Oth', 'HeatingQC_TA|Electrical_FuseF', 'LandContour_Tencode', 'Neighborhood_NPkVill|MasVnrType_BrkCmn', 'TotalBsmtSF|GarageType_CarPort', 'Neighborhood_BrDale|PoolQC_Tencode', 'OverallQual|HouseStyle_1.5Unf', 'BsmtExposure_Av|LotConfig_Inside', 'Fence_GdWo|FireplaceQu_TA', 'LotShape_Reg|Exterior2nd_AsphShn', 'GarageType_Attchd|SaleCondition_Abnorml', 'Condition2_Artery|Utilities_AllPub', 'GarageArea|CentralAir_Tencode', 'Alley_Pave|GarageFinish_Tencode', 'LandSlope_Tencode|BsmtFinType1_Rec', 'Neighborhood_Blmngtn|ExterCond_Fa', 'LotShape_Reg|SaleType_ConLD', 'PavedDrive_N|GarageYrBlt', 'GarageType_Detchd|ExterQual_Gd', 'KitchenQual_Ex|OpenPorchSF', 'KitchenAbvGr|ExterQual_Fa', 'LotShape_IR1|GarageFinish_RFn', 'LandContour_Bnk|RoofMatl_WdShngl', 'RoofStyle_Gable|Exterior1st_MetalSd', 'Electrical_FuseF|WoodDeckSF', 'Exterior1st_BrkFace|LotShape_Reg', 'TotalBsmtSF|RoofStyle_Shed', '2ndFlrSF|KitchenQual_TA', 'LandSlope_Tencode|KitchenQual_Fa', 'RoofMatl_Tencode|KitchenQual_Gd', 'Exterior1st_AsbShng|LandSlope_Gtl', 'HeatingQC_Ex', 'SaleType_Tencode|SaleCondition_Abnorml', 'HeatingQC_Fa|TotRmsAbvGrd', 'RoofMatl_Tencode|2ndFlrSF', 'HeatingQC_Gd|LowQualFinSF', 'Exterior2nd_MetalSd|MiscFeature_Gar2', 'Utilities_Tencode|Neighborhood_OldTown', '1stFlrSF|SaleType_COD', 'PoolArea|MasVnrType_Stone', 'GrLivArea|BsmtFinType2_Unf', 'Foundation_PConc|BldgType_Tencode', 'LotShape_IR2|Neighborhood_MeadowV', 'Exterior1st_BrkFace|SaleType_WD', 'TotalBsmtSF|BldgType_2fmCon', 'RoofStyle_Hip|LotShape_Reg', 'LotShape_Reg|Electrical_FuseF', 'Neighborhood_NoRidge|TotRmsAbvGrd', 'LandContour_Low|OpenPorchSF', 'Electrical_SBrkr|GarageType_CarPort', 'LotShape_Tencode|Exterior2nd_Stone', 'LowQualFinSF|BsmtCond_Po', 'Street_Tencode|MasVnrType_Stone', 'MasVnrType_BrkCmn|BsmtExposure_No', 'SaleCondition_Alloca|Street_Pave', 'Exterior1st_BrkFace|YearRemodAdd', 'BsmtFinType2_ALQ|BsmtFinType1_LwQ', 'LotConfig_Corner|SaleCondition_Normal', 'Neighborhood_NridgHt|BsmtFinType2_BLQ', 'KitchenAbvGr|SaleType_CWD', 'BldgType_Duplex|Condition1_RRAe', 'RoofMatl_Tencode|OverallCond', 'MoSold|Exterior1st_VinylSd', 'LotShape_IR1|Electrical_FuseP', 'LotShape_IR2|BsmtFullBath', 'BsmtFinType2_LwQ|Exterior1st_WdShing', 'Exterior2nd_BrkFace|BsmtQual_Ex', 'Exterior2nd_AsbShng|HouseStyle_Tencode', 'FireplaceQu_Ex|RoofStyle_Tencode', 'Neighborhood_NridgHt|GarageType_CarPort', 'Condition1_PosN|Neighborhood_BrkSide', 'Exterior2nd_AsbShng|Alley_Pave', 'Exterior2nd_BrkFace|Alley_Grvl', 'LandContour_Low|Neighborhood_NAmes', 'Heating_GasW|Neighborhood_StoneBr', 'Condition1_Artery|FireplaceQu_Fa', 'LandContour_Lvl|GarageQual_Fa', 'LotShape_Reg|MiscFeature_Shed', 'BsmtFinType1_Tencode|Exterior2nd_Wd Shng', 'GarageFinish_Tencode|GarageYrBlt', 'HouseStyle_2.5Unf|SaleType_CWD', 'GarageQual_Gd|GarageType_2Types', 'GarageQual_TA|GarageYrBlt', 'BsmtCond_Gd|LotShape_IR3', 'Neighborhood_Blmngtn|Neighborhood_Tencode', 'HeatingQC_Gd|RoofMatl_Tar&Grv', 'Functional_Min1|Exterior2nd_AsphShn', 'Neighborhood_CollgCr|LandSlope_Tencode', 'BsmtHalfBath|Alley_Grvl', 'BldgType_2fmCon|RoofStyle_Gambrel', 'BsmtFinType2_Tencode|Exterior1st_AsbShng', 'Neighborhood_NoRidge|CentralAir_N', 'BsmtQual_Tencode|HouseStyle_1.5Unf', 'GarageCond_Po|ExterQual_Fa', 'FireplaceQu_Gd|Exterior2nd_VinylSd', 'MSZoning_Tencode|LotConfig_Inside', 'Heating_GasW|3SsnPorch', 'BsmtFinType2_GLQ|Exterior2nd_Brk Cmn', 'GarageType_Attchd|LotConfig_Tencode', 'LandSlope_Mod|SaleType_CWD', 'LotShape_IR1|LotConfig_Corner', 'LandContour_Low|GarageType_Tencode', 'SaleType_New|2ndFlrSF', 'Heating_GasW|LotConfig_Tencode', 'Alley_Grvl|Exterior2nd_Wd Shng', 'BsmtFinType2_LwQ|Exterior2nd_Wd Shng', 'BsmtFinType1_Rec|Exterior1st_MetalSd', 'SaleCondition_Partial|ExterQual_Tencode', 'GarageFinish_Tencode|MasVnrType_BrkFace', 'Neighborhood_SawyerW|Neighborhood_BrkSide', 'Exterior2nd_AsbShng|MiscFeature_Othr', 'YrSold|GarageQual_Tencode', 'LandSlope_Gtl|BsmtExposure_Mn', 'SaleType_ConLw|BsmtFinType2_BLQ', 'BsmtQual_Ex|LotConfig_CulDSac', 'FireplaceQu_Po|Exterior2nd_HdBoard', 'Neighborhood_NridgHt|Alley_Grvl', 'BsmtHalfBath|Street_Grvl', 'LotShape_Tencode|Neighborhood_OldTown', 'ExterQual_Ex|LandSlope_Gtl', 'Exterior2nd_MetalSd|Neighborhood_MeadowV', 'Exterior1st_AsbShng|Condition2_Artery', 'KitchenQual_Gd|KitchenQual_Fa', 'MiscVal|MSZoning_RL', 'KitchenQual_Tencode|SaleType_CWD', 'LandSlope_Gtl|BldgType_TwnhsE', 'Neighborhood_Veenker|LandContour_Bnk', 'OverallCond|Exterior2nd_AsphShn', 'LotArea|Utilities_AllPub', 'BsmtExposure_Tencode|BsmtUnfSF', 'KitchenQual_Gd|1stFlrSF', 'Neighborhood_NPkVill|HouseStyle_2Story', 'HeatingQC_Fa|LandContour_Lvl', 'GarageArea|MasVnrType_None', '3SsnPorch|Exterior2nd_Plywood', 'Exterior2nd_VinylSd|BsmtFinSF1', 'Neighborhood_ClearCr|GarageCond_Gd', 'BsmtCond_Po|ExterQual_Fa', 'BsmtExposure_Tencode|GarageType_Detchd', 'Neighborhood_StoneBr|Exterior1st_Tencode', 'Electrical_FuseA|GarageFinish_Fin', 'BldgType_2fmCon|Utilities_AllPub', 'BsmtFinType1_Tencode|MSSubClass', 'BsmtCond_Po|BsmtFinType2_Unf', 'LotFrontage|Exterior2nd_Plywood', 'HeatingQC_Ex|SaleType_COD', 'Heating_Grav|Electrical_FuseF', 'LandContour_Tencode|Neighborhood_NWAmes', 'Neighborhood_NPkVill|Functional_Mod', 'Neighborhood_NridgHt|FireplaceQu_Ex', 'Alley_Tencode|Exterior1st_Wd Sdng', 'Electrical_Tencode|BsmtExposure_Gd', 'SaleType_ConLw|Electrical_SBrkr', 'Fireplaces|HalfBath', 'GarageCars|Condition2_Norm', 'Functional_Maj1|Neighborhood_Gilbert', 'HeatingQC_Fa|Electrical_Tencode', 'Foundation_PConc|SaleCondition_Alloca', 'YrSold|RoofStyle_Gable', 'LotConfig_Tencode|Alley_Grvl', 'LandSlope_Mod|MoSold', 'BsmtExposure_Av|GarageType_CarPort', 'GarageQual_Fa|Exterior1st_Tencode', 'LandSlope_Sev|GarageQual_Po', 'HouseStyle_SFoyer|Fence_Tencode', 'Neighborhood_Tencode|BldgType_TwnhsE', 'BsmtFinType1_BLQ|BsmtQual_TA', 'BldgType_2fmCon|Exterior1st_VinylSd', 'FireplaceQu_Tencode|RoofStyle_Flat', 'ExterCond_Tencode|RoofMatl_WdShngl', 'SaleCondition_Alloca|LowQualFinSF', 'BsmtExposure_Tencode|BsmtFinType2_Tencode', 'BsmtFinType2_ALQ|GarageType_Basment', 'BldgType_2fmCon|LotShape_IR1', 'GarageQual_Tencode|Exterior1st_Wd Sdng', 'KitchenAbvGr|Neighborhood_NoRidge', 'YrSold|BsmtQual_Ex', 'LandContour_Tencode|Exterior1st_WdShing', 'Neighborhood_CollgCr|Neighborhood_Mitchel', 'Exterior2nd_AsbShng|BsmtFinType1_Tencode', 'FireplaceQu_Fa|MSZoning_RH', 'BsmtFinType1_GLQ|MSZoning_RH', 'BsmtUnfSF|HouseStyle_1.5Fin', 'MSZoning_C (all)|Exterior2nd_Wd Sdng', 'HeatingQC_Tencode|LotShape_IR3', 'HeatingQC_Gd|MSSubClass', 'KitchenQual_Ex|ExterQual_Fa', 'Exterior2nd_Stucco|GarageType_2Types', 'LotShape_Tencode|BsmtFinType2_Unf', 'KitchenQual_Fa|MasVnrType_BrkFace', 'HeatingQC_Gd|SaleType_New', 'LotConfig_CulDSac|SaleCondition_Abnorml', 'GarageQual_Tencode|LotShape_IR3', 'SaleCondition_Family|FireplaceQu_TA', 'Alley_Pave|LotConfig_Corner', 'LotConfig_Tencode|Exterior1st_Tencode', 'LotFrontage|BsmtQual_Gd', 'Neighborhood_OldTown|Exterior2nd_Plywood', 'GarageType_Basment|PoolArea', 'GarageType_CarPort|BldgType_1Fam', 'HeatingQC_Fa|Exterior1st_Plywood', 'Neighborhood_Veenker|HouseStyle_2.5Unf', 'Neighborhood_BrDale|Condition1_PosA', 'SaleType_New|GarageFinish_RFn', 'MSZoning_RM|Neighborhood_Gilbert', 'Neighborhood_Blmngtn|Exterior1st_Tencode', 'BedroomAbvGr|GarageQual_TA', 'RoofStyle_Flat|GarageYrBlt', 'LandContour_Lvl|PoolArea', 'SaleType_ConLw|ExterQual_Ex', 'Electrical_Tencode|Street_Pave', 'FireplaceQu_Gd|BsmtQual_Gd', 'Alley_Tencode|KitchenQual_Gd', 'Exterior2nd_VinylSd|Exterior2nd_Wd Sdng', 'Utilities_Tencode|ExterCond_Fa', 'MiscFeature_Othr|SaleType_Oth', 'HouseStyle_Tencode|LandContour_Lvl', 'KitchenQual_Gd|BldgType_Tencode', 'LandContour_Tencode|FireplaceQu_Fa', 'SaleType_ConLw|Heating_Tencode', 'GarageFinish_Tencode|BsmtCond_Gd', 'GarageCond_Ex|SaleCondition_Abnorml', 'Street_Grvl|GarageFinish_RFn', 'RoofMatl_Tencode|WoodDeckSF', 'RoofMatl_CompShg|BsmtFinType1_ALQ', 'ExterQual_Ex|MSZoning_FV', 'TotRmsAbvGrd|Neighborhood_Sawyer', 'TotalBsmtSF|Electrical_FuseA', 'HeatingQC_Fa|Exterior1st_CemntBd', 'Exterior2nd_BrkFace|Heating_Tencode', 'Electrical_FuseA|Exterior1st_WdShing', 'BsmtFinType2_Rec|FireplaceQu_Ex', 'Condition1_Artery|Foundation_BrkTil', 'BsmtExposure_Tencode|MSZoning_RH', 'YrSold|CentralAir_N', 'GarageQual_Po|GarageCond_Ex', 'Neighborhood_Veenker|SaleType_New', 'OverallQual|PoolQC_Tencode', 'RoofStyle_Gable|GarageType_CarPort', 'SaleType_ConLD|MasVnrArea', 'BsmtFinType2_BLQ|RoofMatl_WdShngl', 'HeatingQC_Tencode|Exterior1st_CemntBd', 'ExterCond_Tencode|MasVnrType_BrkCmn', 'MiscVal|SaleCondition_Family', 'Neighborhood_Veenker|Exterior1st_Wd Sdng', 'RoofStyle_Tencode|Foundation_Slab', 'BldgType_1Fam|Neighborhood_IDOTRR', 'GarageFinish_Fin|BsmtFinSF1', 'BsmtFinType2_GLQ|SaleType_WD', 'Exterior2nd_Stucco|Exterior1st_HdBoard', 'GarageType_Attchd|MasVnrType_None', 'Neighborhood_Blmngtn|ExterQual_Tencode', 'PavedDrive_N|HeatingQC_TA', 'RoofStyle_Hip|Foundation_BrkTil', 'BsmtExposure_Tencode|Neighborhood_CollgCr', 'Neighborhood_Gilbert|ExterQual_Tencode', 'PavedDrive_P|MasVnrType_Stone', 'RoofStyle_Flat|KitchenQual_TA', 'Exterior2nd_Stucco|Neighborhood_OldTown', 'Neighborhood_SWISU|ExterQual_Ex', 'BsmtExposure_Mn|Exterior1st_MetalSd', 'LotShape_Tencode|Exterior2nd_VinylSd', 'Neighborhood_BrDale|Exterior2nd_Wd Shng', 'MasVnrArea|Foundation_Slab', 'LotShape_IR1|FireplaceQu_Ex', 'BldgType_2fmCon|Neighborhood_Sawyer', 'Condition1_PosA|HouseStyle_2.5Unf', 'Condition2_Norm|HouseStyle_1.5Fin', 'HouseStyle_1Story|Electrical_SBrkr', 'BsmtFinType1_Rec|Condition1_Norm', 'YearRemodAdd|LotArea', 'Alley_Tencode|Electrical_SBrkr', 'Electrical_FuseA|Exterior2nd_MetalSd', 'Exterior2nd_Stucco|HouseStyle_2Story', 'Exterior2nd_Stucco|LotShape_Reg', 'GarageCond_Gd|Exterior1st_CemntBd', 'Neighborhood_SWISU|SaleType_New', 'OverallCond|ScreenPorch', 'PavedDrive_Y|LotConfig_Inside', 'GarageFinish_RFn|Foundation_Slab', 'HouseStyle_Tencode|WoodDeckSF', 'MiscFeature_Othr|FireplaceQu_Ex', 'HeatingQC_Gd|GarageArea', 'Functional_Tencode|LotShape_IR1', 'BsmtFinType2_Rec|MasVnrType_None', 'ExterQual_Gd|BsmtQual_Gd', 'GarageType_CarPort|BsmtExposure_Mn', 'Neighborhood_NridgHt|GarageType_2Types', 'BsmtFinType2_GLQ|Functional_Maj2', 'Exterior1st_BrkFace|Condition2_Tencode', 'Neighborhood_OldTown|TotRmsAbvGrd', 'SaleCondition_Alloca|BsmtCond_Po', 'BsmtFinType1_Unf|Neighborhood_IDOTRR', 'HouseStyle_SFoyer|BsmtFinType2_ALQ', 'GarageType_Basment|BsmtFinSF1', 'OpenPorchSF|BsmtCond_Gd', 'Exterior2nd_Stucco|KitchenQual_Ex', 'Neighborhood_NoRidge|MiscFeature_Tencode', 'Exterior1st_Tencode|MSZoning_RL', 'Neighborhood_SWISU|PavedDrive_Tencode', 'MSZoning_RM|Alley_Grvl', 'RoofStyle_Flat|Neighborhood_NWAmes', 'Foundation_PConc|2ndFlrSF', 'SaleType_Tencode|Alley_Grvl', 'RoofMatl_Tar&Grv|Condition1_RRAn', 'RoofStyle_Gable|HouseStyle_2.5Unf', 'Alley_Pave|ExterQual_Tencode', 'LandSlope_Tencode|Fence_MnPrv', 'RoofStyle_Gable|Alley_Grvl', 'SaleCondition_Family|SaleCondition_Partial', 'BsmtFinType1_ALQ|Exterior2nd_Plywood', 'YearBuilt|PoolArea', 'SaleCondition_Partial|BsmtCond_TA', 'Alley_Pave|GarageCars', 'Functional_Typ|PavedDrive_Tencode', 'BldgType_TwnhsE|FireplaceQu_TA', 'HouseStyle_SFoyer|Electrical_FuseA', 'RoofStyle_Shed|Neighborhood_Sawyer', 'Fence_Tencode|Condition2_Tencode', 'Exterior2nd_AsbShng|1stFlrSF', 'LotShape_Tencode|BsmtQual_Gd', 'Neighborhood_Blmngtn|BsmtFinType2_GLQ', 'MiscVal|SaleCondition_Normal', 'BsmtFinType2_BLQ|MasVnrType_BrkCmn', 'LotShape_IR1|Neighborhood_IDOTRR', 'LandContour_Low|Foundation_Tencode', 'GarageQual_Tencode|Exterior2nd_AsphShn', 'Street_Tencode|Neighborhood_OldTown', 'LotShape_Reg|HalfBath', 'LotConfig_Corner|Alley_Grvl', 'Neighborhood_Edwards|LotConfig_Tencode', 'Neighborhood_BrDale|SaleType_Tencode', 'Neighborhood_Veenker|MSZoning_RM', 'HeatingQC_Fa|Exterior2nd_HdBoard', 'Fireplaces|Foundation_BrkTil', 'BsmtFinType1_Tencode|SaleCondition_Normal', 'Neighborhood_ClearCr|LotConfig_Tencode', 'GarageCond_Fa|Exterior2nd_Wd Sdng', 'OverallQual|OverallCond', 'KitchenAbvGr|GarageFinish_RFn', 'HouseStyle_SFoyer|Condition2_Artery', 'BldgType_Duplex|LandSlope_Mod', 'GarageType_Tencode|RoofMatl_WdShngl', 'SaleType_New|HouseStyle_SLvl', 'BldgType_Twnhs|KitchenQual_Tencode', 'YrSold|SaleType_ConLI', 'Exterior2nd_BrkFace|GarageType_Attchd', 'GarageQual_Tencode|BsmtCond_Fa', 'Fireplaces|BsmtQual_Fa', 'BsmtFinType2_Unf|MSZoning_Tencode', 'Exterior1st_Stucco|Condition1_Norm', 'GrLivArea|BldgType_1Fam', 'FireplaceQu_Tencode|BsmtFinSF1', 'LotConfig_FR2|Neighborhood_MeadowV', 'HeatingQC_Gd|HeatingQC_Tencode', 'BsmtFinSF2|MSZoning_C (all)', 'Alley_Tencode|BsmtCond_Po', 'GarageType_BuiltIn|Condition1_RRAn', 'Exterior2nd_Stone|GarageType_Tencode', 'LandSlope_Tencode|Street_Pave', 'Street_Tencode|Heating_GasW', 'Condition1_PosN|LotConfig_Inside', 'BsmtFinType1_Tencode|LotShape_IR3', 'BsmtFinType1_Tencode|RoofStyle_Tencode', 'Exterior1st_AsbShng|BsmtExposure_No', 'OverallQual|ExterQual_Gd', 'Neighborhood_BrDale|GarageCond_Ex', 'Exterior2nd_CmentBd|Exterior2nd_Brk Cmn', 'Neighborhood_Mitchel|GarageType_Tencode', 'BsmtFinType2_ALQ|Neighborhood_NAmes', 'Utilities_Tencode|Street_Pave', 'KitchenAbvGr|MiscVal', 'Condition1_RRAe|BldgType_TwnhsE', 'BsmtExposure_Gd|Fence_MnWw', 'LandSlope_Sev|MSZoning_RM', 'Exterior1st_HdBoard|Neighborhood_MeadowV', 'CentralAir_Y|BsmtFinType1_Unf', 'RoofStyle_Shed|MasVnrType_BrkFace', 'GarageQual_Gd|BsmtUnfSF', 'GarageQual_TA|Condition1_Feedr', 'SaleCondition_Normal|ExterQual_Gd', 'Heating_GasW|GarageArea', 'BsmtFinType2_ALQ|CentralAir_Y', 'RoofStyle_Gable|BsmtFinType2_Unf', 'BsmtFinType1_BLQ|MiscFeature_Tencode', 'Electrical_SBrkr|Foundation_Slab', 'Exterior2nd_Stone|LandContour_Lvl', 'GarageCars|Neighborhood_Crawfor', 'LandSlope_Sev|Neighborhood_OldTown', 'MiscFeature_Othr|BsmtExposure_No', 'YearRemodAdd|1stFlrSF', 'Foundation_PConc|Fence_GdWo', 'Heating_Grav|Condition1_PosA', 'Functional_Maj2|MasVnrType_Tencode', 'PavedDrive_Y|LotShape_IR3', 'BldgType_Duplex|ExterQual_Ex', 'LandSlope_Tencode|BsmtFinType2_LwQ', 'BsmtFinType2_Tencode|Exterior2nd_MetalSd', 'HeatingQC_Fa|Foundation_BrkTil', 'BldgType_Duplex|HeatingQC_Gd', 'Foundation_BrkTil|Condition1_Norm', 'Neighborhood_CollgCr|FireplaceQu_Ex', 'HouseStyle_SFoyer|Exterior1st_CemntBd', 'ExterQual_Ex|BsmtCond_Tencode', 'BsmtHalfBath|LandSlope_Sev', 'OverallCond|BldgType_1Fam', 'PoolQC_Tencode|MasVnrType_None', 'HouseStyle_SFoyer|FireplaceQu_Po', 'ExterQual_TA|RoofMatl_Tar&Grv', 'LotConfig_CulDSac|FireplaceQu_Ex', 'Functional_Typ|MSZoning_FV', 'BsmtCond_Fa|ExterCond_Fa', 'Fireplaces|Alley_Grvl', 'GarageQual_Gd|Exterior2nd_Wd Shng', 'Electrical_Tencode|Condition1_Norm', 'BsmtFinType2_GLQ|GarageQual_TA', 'Electrical_FuseP|SaleType_ConLI', 'KitchenQual_Ex|KitchenQual_TA', 'GarageFinish_Fin|Neighborhood_SWISU', 'GarageCars|RoofMatl_WdShngl', 'ExterQual_Tencode|BsmtExposure_Mn', 'LandContour_Low|HeatingQC_Ex', 'Exterior2nd_AsbShng|Fence_MnPrv', 'SaleCondition_Family|Street_Grvl', 'PavedDrive_N|Heating_Grav', 'MSZoning_C (all)|Fence_GdWo', 'Neighborhood_NAmes|Fence_MnWw', 'SaleCondition_Tencode|BsmtFinType1_ALQ', 'Foundation_CBlock|MSZoning_RL', 'GarageType_Detchd|BsmtUnfSF', 'BsmtFinType1_Tencode|BsmtQual_Fa', 'BsmtCond_Tencode|Alley_Grvl', 'GarageFinish_Unf|HouseStyle_1.5Unf', 'Exterior1st_BrkFace|Neighborhood_SawyerW', 'BsmtFinType2_Rec|BsmtCond_Fa', 'Exterior2nd_AsbShng|GarageType_CarPort', 'Functional_Tencode|Exterior1st_CemntBd', 'LandContour_HLS|SaleCondition_Partial', 'CentralAir_N|Exterior1st_MetalSd', 'Exterior1st_VinylSd|RoofMatl_WdShngl', 'Functional_Mod|MasVnrType_BrkFace', 'RoofMatl_CompShg|BsmtFinType2_Rec', 'KitchenAbvGr|LandContour_HLS', 'ExterQual_TA|Exterior2nd_VinylSd', 'FullBath|BsmtCond_Po', 'Fence_GdPrv|ExterQual_Tencode', 'KitchenQual_Ex|WoodDeckSF', 'Neighborhood_NoRidge|Fence_MnPrv', 'Exterior2nd_Wd Sdng|Alley_Grvl', 'Street_Tencode|GarageType_Tencode', 'RoofMatl_Tencode|FireplaceQu_TA', 'Functional_Typ|BsmtCond_Fa', 'HeatingQC_Tencode|Exterior1st_Tencode', 'Condition1_PosN|BsmtExposure_Mn', 'FullBath|BsmtCond_TA', 'LotShape_Tencode|Condition2_Artery', 'Neighborhood_ClearCr|Functional_Typ', 'SaleCondition_Family|BsmtExposure_Mn', 'BsmtFinSF2|BldgType_TwnhsE', 'LandContour_Tencode|MasVnrType_Tencode', 'FullBath|Functional_Min2', 'GarageQual_Gd|BldgType_1Fam', 'FireplaceQu_Fa|BsmtCond_Gd', 'GarageFinish_Tencode|SaleType_New', 'SaleType_Tencode|ExterQual_Gd', 'Street_Tencode|GarageYrBlt', 'Exterior2nd_Stone|MasVnrType_None', 'Neighborhood_BrDale|GarageType_Attchd', 'Neighborhood_Blmngtn|LotShape_IR1', 'GarageCond_Po|Exterior1st_CemntBd', 'Foundation_PConc|Functional_Min1', 'GarageCond_Tencode|2ndFlrSF', 'Neighborhood_IDOTRR|Exterior1st_Wd Sdng', 'BsmtHalfBath|RoofStyle_Gambrel', 'RoofStyle_Gambrel|BldgType_1Fam', 'YearRemodAdd|GarageType_Attchd', 'Neighborhood_NoRidge|Condition2_Norm', 'LotShape_IR2|BsmtFinType1_GLQ', 'GarageQual_Fa|RoofStyle_Tencode', 'HouseStyle_Tencode|HouseStyle_2.5Unf', 'Heating_GasA|MasVnrType_None', 'Electrical_FuseP|Neighborhood_Tencode', 'BsmtFinType2_Tencode|LotShape_Reg', '2ndFlrSF|Exterior1st_MetalSd', 'Condition1_PosA|MSZoning_FV', 'Neighborhood_Somerst|OpenPorchSF', 'Heating_GasW|GarageCond_Gd', 'RoofStyle_Flat|BldgType_Twnhs', 'BldgType_1Fam|KitchenQual_TA', 'SaleType_ConLD|Neighborhood_MeadowV', 'MSSubClass|Exterior1st_MetalSd', 'RoofMatl_CompShg|KitchenQual_Fa', 'Condition1_Norm|Fence_MnWw', 'HeatingQC_Gd|LotConfig_FR2', 'GarageQual_Po|LotConfig_Tencode', 'FireplaceQu_Gd|BsmtCond_Gd', 'Electrical_FuseP|LotConfig_Corner', 'Condition2_Norm|BsmtCond_TA', 'TotalBsmtSF|ExterQual_Gd', 'KitchenAbvGr|MSZoning_FV', 'LotShape_Reg|PoolArea', 'Functional_Maj2|RoofStyle_Tencode', 'RoofMatl_Tencode|GarageCond_Gd', 'BsmtFinType2_Unf|Exterior1st_Plywood', 'Fence_MnPrv|ExterCond_Fa', 'Neighborhood_NoRidge|ExterCond_Gd', 'GarageType_Tencode|GarageQual_TA', 'Neighborhood_Blmngtn|HeatingQC_Gd', 'BsmtFinType2_ALQ|Fence_Tencode', 'Electrical_FuseF|MiscFeature_Tencode', 'PoolQC_Tencode|BldgType_1Fam', 'Exterior1st_HdBoard|LandSlope_Gtl', 'SaleCondition_Family|PavedDrive_Tencode', 'Neighborhood_NPkVill|YearBuilt', 'GarageType_Attchd|MSZoning_FV', 'GarageFinish_RFn|OverallCond', 'GarageCond_TA|BldgType_TwnhsE', 'MSSubClass|HouseStyle_1.5Fin', 'Condition2_Tencode|GarageType_Attchd', 'OverallQual|Neighborhood_Edwards', 'RoofStyle_Flat|Condition1_Tencode', 'ExterCond_Tencode|Condition1_RRAe', 'SaleCondition_Family|Functional_Maj2', 'MiscFeature_Othr|MoSold', 'RoofStyle_Gambrel|MasVnrType_Tencode', 'BldgType_Twnhs|BsmtExposure_Mn', 'LotShape_IR1|Foundation_Slab', 'Exterior1st_HdBoard|Neighborhood_SWISU', 'Neighborhood_Blmngtn|SaleCondition_Abnorml', 'BldgType_Duplex|Street_Pave', 'Neighborhood_Blmngtn|BsmtFullBath', 'Electrical_FuseF|Neighborhood_Sawyer', 'GarageFinish_Unf|HalfBath', 'Neighborhood_CollgCr|Foundation_BrkTil', 'BldgType_1Fam|ScreenPorch', 'MSZoning_C (all)|RoofStyle_Tencode', 'TotRmsAbvGrd|MSZoning_RH', 'Functional_Typ|BsmtFinType2_LwQ', 'Fence_GdPrv|MSZoning_RH', 'BsmtCond_TA|ExterCond_Fa', 'GarageCars|Neighborhood_NAmes', 'Exterior2nd_VinylSd|FireplaceQu_Ex', 'LandContour_Low|Condition2_Tencode', 'LotShape_IR1|GarageYrBlt', 'BsmtFullBath|WoodDeckSF', 'Exterior2nd_Tencode|Exterior1st_CemntBd', 'Foundation_PConc|SaleType_ConLw', 'Electrical_FuseP|CentralAir_Tencode', 'FullBath|RoofStyle_Tencode', 'MSZoning_RH|MasVnrType_Tencode', 'Exterior2nd_Stucco|LandSlope_Mod', 'Exterior2nd_VinylSd|Exterior2nd_AsphShn', 'PavedDrive_P|LotShape_IR3', 'Fence_GdPrv|MasVnrType_Tencode', 'SaleType_Tencode|MasVnrArea', 'Condition2_Artery|BldgType_1Fam', 'Neighborhood_NridgHt|MasVnrType_Stone', 'MasVnrType_BrkCmn|BsmtCond_TA', 'Neighborhood_BrDale|MSZoning_C (all)', 'FireplaceQu_Gd|Neighborhood_Edwards', 'SaleCondition_Family|LowQualFinSF', 'SaleCondition_Family|GarageYrBlt', 'Heating_GasW|BsmtFinType1_ALQ', 'BsmtExposure_Av|MSZoning_RM', '3SsnPorch|Exterior2nd_MetalSd', 'BsmtFinType2_GLQ|BsmtFinType1_Rec', 'MiscFeature_Othr|MasVnrType_BrkFace', 'HouseStyle_1Story|MasVnrType_Stone', 'YearRemodAdd|PoolQC_Tencode', 'Electrical_FuseA|Exterior2nd_AsphShn', 'RoofStyle_Tencode|HouseStyle_1.5Fin', 'Electrical_FuseF|MasVnrType_Stone', 'BsmtFinType1_BLQ|Neighborhood_NAmes', 'TotalBsmtSF|BsmtFinType1_LwQ', 'KitchenQual_TA|Exterior1st_Plywood', 'GarageFinish_Unf|EnclosedPorch', 'HeatingQC_TA|Functional_Maj2', 'YrSold|Condition1_RRAe', 'YrSold|Fence_GdPrv', '2ndFlrSF|Neighborhood_SawyerW', 'BsmtFinType2_BLQ|SaleType_WD', 'Fireplaces|BsmtQual_Tencode', 'LandSlope_Sev|Functional_Maj2', 'HeatingQC_Fa|LotConfig_Inside', 'Condition1_Tencode|Exterior2nd_Wd Shng', 'FireplaceQu_Po|Condition2_Tencode', 'Street_Tencode|GarageType_BuiltIn', 'Exterior2nd_Stone|PavedDrive_Tencode', 'SaleType_Oth|Exterior2nd_AsphShn', 'Heating_GasA|Utilities_AllPub', '1stFlrSF|BsmtQual_Gd', 'Alley_Pave|GarageYrBlt', 'Fence_GdPrv|RoofMatl_WdShngl', 'Electrical_SBrkr|Fence_MnPrv', 'GarageType_Detchd|Condition1_RRAn', 'Neighborhood_Edwards|GarageQual_TA', 'SaleCondition_Tencode|LotShape_IR2', 'YearRemodAdd|Condition1_Norm', 'Fireplaces|PavedDrive_Y', 'Neighborhood_ClearCr|Electrical_FuseP', 'FireplaceQu_Po|Neighborhood_SawyerW', 'LotConfig_CulDSac|LotConfig_Inside', '1stFlrSF|LotConfig_Inside', 'Exterior2nd_AsbShng|EnclosedPorch', 'FireplaceQu_Gd|SaleType_WD', 'FireplaceQu_Tencode|MSZoning_C (all)', 'LotShape_Tencode|MSZoning_FV', 'LandSlope_Gtl|WoodDeckSF', 'Neighborhood_Veenker|Neighborhood_Crawfor', 'MasVnrType_BrkCmn|BsmtCond_Fa', 'GarageCars|Condition1_RRAn', 'Foundation_PConc|Exterior2nd_Plywood', 'HouseStyle_1.5Unf|GarageArea', 'GarageCars|MoSold', 'GarageCars|Functional_Maj1', 'LotFrontage|MSZoning_FV', 'HeatingQC_Gd|MSZoning_RH', 'BsmtFinType2_Tencode|YearBuilt', 'Neighborhood_Blmngtn|Exterior1st_CemntBd', 'HeatingQC_TA|WoodDeckSF', 'Neighborhood_BrDale|GarageQual_Gd', 'BsmtFinType1_Tencode|LandContour_Lvl', 'ExterQual_TA|KitchenQual_Ex', 'RoofMatl_Tar&Grv|Condition1_Tencode', 'BsmtFinType2_LwQ|ExterCond_Fa', 'BsmtFinType2_GLQ|RoofStyle_Tencode', 'MiscVal|Exterior1st_VinylSd', 'Foundation_Tencode|Condition1_Feedr', 'Neighborhood_BrDale|Exterior2nd_VinylSd', 'HouseStyle_1Story|OverallCond', 'Neighborhood_NPkVill|LotShape_IR3', 'GarageType_Detchd|BsmtQual_TA', 'RoofMatl_Tar&Grv|MasVnrArea', 'Neighborhood_BrDale|Neighborhood_NPkVill', 'GarageCond_Gd|ExterQual_Gd', 'Exterior2nd_CmentBd|Neighborhood_Gilbert', 'GarageQual_Po|BldgType_TwnhsE', 'BsmtQual_Fa', 'RoofStyle_Flat|GarageType_2Types', 'MasVnrType_None|PoolArea', 'Exterior1st_VinylSd|ExterQual_Fa', 'HouseStyle_Tencode|Exterior1st_CemntBd', 'SaleType_ConLw|Fence_MnWw', 'Neighborhood_OldTown|KitchenQual_TA', 'ExterQual_Gd|LotShape_IR3', 'LotConfig_Tencode|LotShape_IR3', 'Heating_GasA|Functional_Maj1', 'GarageArea|SaleCondition_Partial', 'GarageQual_Po|Condition1_RRAn', 'BldgType_2fmCon|Neighborhood_IDOTRR', 'Foundation_PConc|KitchenQual_Gd', 'RoofStyle_Gambrel|BsmtFinType2_LwQ', 'Neighborhood_Blmngtn|Neighborhood_Crawfor', 'BsmtFinType2_Unf|MSZoning_FV', 'RoofMatl_CompShg|1stFlrSF', 'GarageCond_Po|Condition1_RRAe', 'LandSlope_Mod|BsmtQual_Gd', 'GarageQual_Fa|Exterior2nd_Plywood', 'SaleCondition_Normal|Exterior1st_WdShing', 'Condition1_Norm|HouseStyle_2Story', 'HeatingQC_Fa|SaleType_WD', 'ExterCond_Gd', 'LandSlope_Sev|LandSlope_Gtl', 'BsmtFinType2_GLQ|Fence_MnPrv', 'Electrical_FuseA|PavedDrive_Tencode', 'GarageQual_Po|MasVnrArea', 'BsmtFinSF2|Neighborhood_NWAmes', 'HeatingQC_Fa|MasVnrType_None', 'Heating_GasA|Fireplaces', 'ExterCond_Gd|Neighborhood_SawyerW', 'BsmtUnfSF|BldgType_Tencode', 'KitchenAbvGr|Exterior1st_WdShing', 'LandSlope_Sev|Functional_Mod', 'Exterior2nd_BrkFace|KitchenQual_Ex', 'OverallQual|LotConfig_Corner', 'BsmtFinType2_GLQ|BedroomAbvGr', 'Neighborhood_BrDale|YearBuilt', 'Functional_Tencode|ExterQual_Tencode', 'Exterior1st_HdBoard|SaleType_New', 'BldgType_TwnhsE|GarageFinish_RFn', 'Neighborhood_NPkVill|Fireplaces', 'BsmtQual_Tencode|Functional_Maj1', 'BldgType_TwnhsE|BsmtQual_Gd', 'BldgType_Duplex|BsmtFullBath', 'LotConfig_CulDSac|SaleCondition_Normal', 'RoofMatl_Tencode|Neighborhood_NPkVill', 'SaleType_New|LotConfig_Inside', 'Exterior2nd_Stone|SaleType_ConLw', 'LotShape_Tencode|LandContour_Bnk', 'MSZoning_C (all)|Condition1_Tencode', 'LotConfig_Corner|ExterQual_Fa', 'FireplaceQu_Tencode|HouseStyle_2Story', 'HeatingQC_Fa|ExterQual_Gd', 'BldgType_Duplex|BsmtFinType1_GLQ', 'Alley_Tencode|Foundation_Slab', 'Heating_Tencode|RoofStyle_Gambrel', 'TotalBsmtSF|PavedDrive_Y', 'BsmtQual_Fa|BsmtFinType1_LwQ', 'Fence_GdPrv|Neighborhood_SawyerW', 'LotShape_Tencode|BsmtExposure_Gd', 'Functional_Typ|GarageQual_Gd', 'Fence_Tencode|Functional_Maj2', 'Electrical_Tencode|Exterior1st_CemntBd', 'Neighborhood_Mitchel|Functional_Maj1', 'BsmtFinType2_ALQ|MSZoning_FV', 'BedroomAbvGr|Exterior2nd_AsphShn', 'ExterQual_Ex|Condition2_Artery', 'RoofMatl_Tencode|BsmtFinType1_Rec', 'BsmtFinType2_GLQ|LandSlope_Tencode', 'GarageType_Detchd|BsmtFinType1_Rec', 'Neighborhood_Edwards|BedroomAbvGr', 'Street_Grvl|ScreenPorch', 'LotShape_Reg|MSZoning_C (all)', 'Exterior2nd_VinylSd|Condition1_Tencode', 'TotRmsAbvGrd|BsmtFinType1_LwQ', 'Exterior2nd_Wd Shng|Utilities_AllPub', 'LandContour_HLS|BsmtExposure_Mn', 'Functional_Typ|ExterQual_Ex', 'Exterior2nd_Stone|Heating_Tencode', 'GarageCond_Tencode|BsmtFinType1_Rec', 'BsmtCond_Gd', 'GarageCond_Po|Fence_GdPrv', 'FireplaceQu_Tencode|Fence_GdPrv', 'SaleCondition_Tencode|KitchenQual_Tencode', 'RoofStyle_Hip|Street_Grvl', 'Functional_Min1|Neighborhood_Timber', 'CentralAir_Y|MSZoning_FV', 'KitchenQual_Ex|LowQualFinSF', 'LowQualFinSF|Condition2_Artery', 'FullBath|MiscVal', 'FireplaceQu_Gd|ExterQual_Gd', 'Heating_GasW|HouseStyle_2Story', 'PavedDrive_Y|SaleCondition_Normal', 'Exterior2nd_CmentBd|Condition2_Norm', 'Functional_Maj2|BsmtExposure_Gd', 'BsmtFinType2_Tencode|LotConfig_Corner', 'Neighborhood_NPkVill|ExterQual_Gd', 'LotShape_Reg|GarageType_2Types', 'Electrical_FuseP|2ndFlrSF', 'LotFrontage|LandContour_Tencode', 'Exterior2nd_BrkFace|MSZoning_RL', 'LotConfig_Corner|SaleType_COD', 'Functional_Maj1|MasVnrType_BrkCmn', 'BldgType_Twnhs|Exterior2nd_Brk Cmn', 'PoolQC_Tencode|Street_Grvl', 'LotShape_Tencode|Neighborhood_StoneBr', 'GarageFinish_Unf|FireplaceQu_TA', 'BldgType_Tencode|ExterQual_Tencode', 'BsmtFinType2_LwQ|Neighborhood_NAmes', 'BsmtFinType1_GLQ|Fence_MnPrv', 'HeatingQC_Fa|Functional_Tencode', 'BsmtFinType1_BLQ|HeatingQC_Tencode', 'SaleCondition_Tencode|FireplaceQu_Ex', 'Exterior2nd_Stone|HalfBath', 'LotShape_IR3|WoodDeckSF', 'PavedDrive_N|GarageCond_Tencode', 'FireplaceQu_Gd|Condition2_Tencode', 'Electrical_FuseP|Exterior1st_Stucco', 'Exterior1st_AsbShng|BsmtCond_Tencode', 'EnclosedPorch|Fence_MnWw', 'RoofStyle_Hip|Exterior2nd_VinylSd', 'GarageCars|ExterCond_Fa', 'Neighborhood_NoRidge|LandContour_Lvl', 'GrLivArea|BsmtFullBath', 'GarageCond_Po|EnclosedPorch', 'BldgType_Twnhs|MasVnrArea', 'OverallQual|ExterCond_Fa', 'BsmtHalfBath|GarageQual_TA', 'GarageQual_Gd|Neighborhood_Timber', 'BsmtHalfBath|BsmtQual_TA', 'Condition1_Feedr|BsmtFinType1_LwQ', 'LotShape_Tencode|LotShape_IR3', 'Heating_GasA|ExterCond_Tencode', 'LotArea|LowQualFinSF', 'GrLivArea|Fireplaces', 'RoofStyle_Tencode|BsmtFinType2_Unf', 'Exterior2nd_CmentBd|MSZoning_RM', 'FireplaceQu_Gd|GarageQual_Gd', 'Exterior1st_CemntBd|MasVnrType_BrkFace', 'OpenPorchSF|Exterior2nd_AsphShn', 'Exterior2nd_Tencode|BsmtQual_Fa', 'OpenPorchSF|HouseStyle_SLvl', 'LotShape_Tencode|LotConfig_Tencode', 'Neighborhood_Mitchel|Functional_Maj2', 'OverallQual|SaleType_New', 'MSZoning_C (all)|Exterior1st_MetalSd', 'LandContour_Bnk|BsmtFinType1_LwQ', 'GarageFinish_Unf|FireplaceQu_Po', 'Foundation_Tencode|2ndFlrSF', 'Fence_GdWo|Exterior2nd_HdBoard', 'Foundation_PConc|Electrical_Tencode', 'GarageFinish_Unf|LotShape_IR2', 'FullBath|MSZoning_FV', 'GarageQual_Gd|BsmtQual_Fa', 'LandSlope_Sev|GarageType_Attchd', 'Exterior2nd_Plywood', 'Condition1_Artery|Condition1_Feedr', 'Neighborhood_BrDale|Neighborhood_Tencode', 'Neighborhood_Somerst|SaleType_ConLD', 'RoofStyle_Shed|HouseStyle_SLvl', 'GarageQual_TA|Functional_Min2', 'Alley_Tencode|MiscFeature_Gar2', 'BsmtFinType2_ALQ|LotConfig_Inside', 'HeatingQC_Tencode|Functional_Mod', 'BsmtFinType2_LwQ|GarageQual_Tencode', 'RoofMatl_Tar&Grv|BldgType_1Fam', 'LotConfig_Tencode|Neighborhood_Timber', 'MiscFeature_Tencode|BldgType_TwnhsE', 'BsmtExposure_Tencode|BsmtCond_Gd', 'BldgType_Duplex|Electrical_FuseP', 'Neighborhood_Blmngtn|GarageQual_Po', 'Functional_Typ|GarageQual_Po', 'SaleType_ConLw|MiscFeature_Tencode', 'Functional_Maj2|Neighborhood_IDOTRR', 'Condition1_Artery|BsmtFinType1_LwQ', 'HouseStyle_1Story|Neighborhood_Mitchel', 'Alley_Tencode|BsmtFinType1_LwQ', 'Foundation_BrkTil|BldgType_TwnhsE', 'HalfBath|CentralAir_N', 'RoofStyle_Gable|MiscFeature_Gar2', 'BsmtHalfBath|YearBuilt', 'GarageCond_Tencode|BsmtFinType1_ALQ', 'BsmtQual_Fa|MiscFeature_Tencode', 'Neighborhood_Tencode|MasVnrType_Tencode', 'BsmtFinType1_ALQ|Functional_Maj2', 'GrLivArea|GarageQual_Po', 'Neighborhood_NWAmes|ExterQual_Gd', 'Exterior2nd_AsbShng|Exterior1st_VinylSd', 'LotShape_Tencode|SaleCondition_Alloca', 'Electrical_FuseA|Exterior1st_VinylSd', 'Condition2_Tencode|Condition1_Feedr', 'Utilities_Tencode|GarageCond_Gd', 'FireplaceQu_Fa|BsmtFinType1_Unf', 'LotArea|LandContour_Tencode', 'KitchenQual_Gd|Neighborhood_Tencode', 'BsmtExposure_Av|GarageQual_Tencode', 'GarageType_CarPort|Neighborhood_SawyerW', 'Neighborhood_Mitchel|LandSlope_Sev', 'ExterCond_Tencode|GarageYrBlt', 'Exterior2nd_AsbShng|Functional_Typ', 'BsmtQual_TA|GarageFinish_Tencode', 'Functional_Tencode|GarageCond_Tencode', 'BsmtFinType1_Rec|MoSold', 'GarageCond_Gd|ScreenPorch', 'GarageCond_Po|RoofStyle_Shed', 'BedroomAbvGr|Neighborhood_Crawfor', 'Neighborhood_NoRidge|ExterCond_Fa', 'RoofStyle_Tencode|BsmtCond_Tencode', 'Foundation_Stone|SaleType_ConLw', 'BsmtExposure_No|Fence_MnWw', 'LotConfig_Corner|HouseStyle_1.5Unf', 'SaleType_New|Neighborhood_IDOTRR', 'EnclosedPorch|Exterior1st_Wd Sdng', 'Exterior2nd_Stucco|ExterQual_Gd', 'Neighborhood_Somerst|Condition1_Feedr', 'Utilities_Tencode|BsmtFinType1_Rec', 'Exterior1st_AsbShng|LandSlope_Mod', 'GarageType_Attchd|Condition1_Tencode', 'ExterCond_Gd|Foundation_Slab', 'RoofStyle_Tencode|HouseStyle_SLvl', 'Neighborhood_Somerst|Heating_GasW', 'RoofStyle_Shed|1stFlrSF', 'Heating_Tencode|GarageType_2Types', 'PavedDrive_N|BsmtExposure_Gd', 'Neighborhood_Veenker|RoofStyle_Tencode', 'BsmtFinType2_Tencode|MiscVal', 'Exterior2nd_BrkFace|MiscVal', 'GarageFinish_RFn|MiscFeature_Gar2', 'SaleType_Oth|Neighborhood_IDOTRR', 'LandContour_Low|BsmtCond_Tencode', 'TotalBsmtSF|KitchenQual_Fa', 'GrLivArea|SaleType_WD', 'BsmtFinType2_Tencode|KitchenQual_TA', 'FireplaceQu_Gd|1stFlrSF', 'KitchenQual_Fa|MSSubClass', 'Electrical_FuseP|GarageQual_Po', 'BldgType_TwnhsE|ExterCond_Fa', 'Heating_Tencode|GarageArea', 'Functional_Maj1|Neighborhood_Crawfor', 'HeatingQC_Tencode|MiscFeature_Gar2', 'FireplaceQu_Ex|BsmtFinType1_GLQ', 'BldgType_Duplex|KitchenQual_Tencode', 'GarageFinish_Tencode|Exterior2nd_CmentBd', 'Exterior2nd_Stone|Neighborhood_NWAmes', 'BedroomAbvGr|LowQualFinSF', 'PavedDrive_N|PavedDrive_P', 'Neighborhood_SWISU|Neighborhood_BrkSide', 'PavedDrive_N|KitchenQual_Tencode', 'ExterCond_Tencode|Alley_Grvl', 'Heating_GasA|BsmtCond_Tencode', 'Neighborhood_ClearCr|LotConfig_CulDSac', 'Electrical_SBrkr|HeatingQC_Ex', 'FireplaceQu_Gd|MasVnrType_BrkFace', 'Exterior1st_WdShing|LotConfig_Inside', 'Electrical_SBrkr|Condition2_Tencode', 'Neighborhood_Blmngtn|Neighborhood_OldTown', 'Exterior1st_HdBoard|Condition1_Norm', 'Fence_GdWo|HouseStyle_2Story', 'TotRmsAbvGrd|CentralAir_Tencode', 'YearRemodAdd|Fence_GdPrv', 'YearRemodAdd|Functional_Maj2', 'HouseStyle_1.5Fin|Exterior1st_Plywood', 'BedroomAbvGr|Exterior1st_VinylSd', 'PavedDrive_N|GarageType_Tencode', 'LotConfig_CulDSac|LowQualFinSF', 'Exterior1st_BrkFace|BsmtHalfBath', 'KitchenQual_Ex|SaleType_WD', 'Exterior2nd_BrkFace|Foundation_Slab', 'RoofMatl_Tencode|BsmtFinType1_Unf', 'Neighborhood_SawyerW|MasVnrType_Tencode', 'Foundation_BrkTil|Exterior1st_Plywood', 'GarageType_BuiltIn|GarageCond_Ex', 'BsmtFinType1_Rec|1stFlrSF', 'Foundation_PConc|Alley_Tencode', 'GarageFinish_Fin|LowQualFinSF', 'ExterCond_TA|Neighborhood_NAmes', 'Neighborhood_Somerst|GarageType_Tencode', 'RoofMatl_CompShg|BsmtFullBath', 'Utilities_AllPub|HouseStyle_2Story', 'GarageQual_Gd|Neighborhood_SWISU', 'Exterior2nd_Tencode|BsmtFinSF2', 'Exterior2nd_Stone|RoofStyle_Shed', 'LotShape_IR1|Condition1_PosA', 'BsmtFinType2_GLQ|SaleCondition_Abnorml', 'BsmtFinType2_LwQ|BsmtExposure_Mn', 'LotConfig_CulDSac|SaleCondition_Alloca', 'SaleCondition_Tencode|Utilities_AllPub', 'Fence_GdWo|RoofMatl_WdShngl', 'FullBath|PavedDrive_P', 'HeatingQC_TA|Fence_MnWw', 'BsmtQual_Tencode|PavedDrive_Y', 'BldgType_Duplex|ExterCond_Gd', 'Neighborhood_CollgCr|ExterCond_Fa', 'LotShape_Tencode|Condition1_PosN', 'LotConfig_Corner|Neighborhood_NAmes', 'Exterior1st_BrkFace|Electrical_FuseF', 'Utilities_Tencode|KitchenQual_TA', 'Exterior2nd_Stone|LotConfig_Inside', 'HouseStyle_Tencode|Neighborhood_Edwards', 'Neighborhood_BrDale|PavedDrive_Tencode', 'Electrical_SBrkr|Neighborhood_StoneBr', 'BsmtQual_Ex|KitchenQual_TA', 'PoolArea|ScreenPorch', 'BsmtFinType1_Tencode|TotRmsAbvGrd', 'Heating_GasA|Condition1_RRAn', 'BsmtFinSF2|LandSlope_Sev', 'BsmtExposure_Av|Foundation_Slab', 'Foundation_BrkTil|BsmtFinType2_Rec', 'ExterCond_TA|Neighborhood_SWISU', 'Exterior2nd_HdBoard|Foundation_Slab', 'LandSlope_Sev|GarageFinish_Tencode', 'SaleCondition_Tencode|Exterior1st_Wd Sdng', 'KitchenAbvGr|Neighborhood_Somerst', '3SsnPorch|RoofMatl_Tar&Grv', 'Street_Grvl|Condition1_RRAn', 'FullBath|Exterior2nd_HdBoard', 'ExterCond_Gd|1stFlrSF', 'EnclosedPorch|MiscFeature_Othr', 'BldgType_Duplex|BldgType_Tencode', 'GrLivArea|KitchenQual_Tencode', 'SaleType_Tencode|BsmtFullBath', 'SaleType_ConLD|Exterior1st_Plywood', 'Exterior2nd_Brk Cmn|SaleType_Oth', 'SaleType_WD|MSZoning_C (all)', 'HeatingQC_Ex|BsmtCond_Gd', 'HeatingQC_TA|Condition1_RRAn', 'PavedDrive_N|Condition2_Norm', 'MiscFeature_Othr|SaleType_CWD', 'Heating_GasA|HeatingQC_Ex', 'LotShape_IR3|BsmtCond_Fa', 'LandSlope_Sev|Condition1_Norm', 'Exterior1st_BrkFace|SaleType_ConLD', 'Neighborhood_Somerst|Functional_Tencode', 'BsmtHalfBath|GarageType_Attchd', 'ExterCond_TA|LandContour_Tencode', 'SaleType_COD|Fence_MnPrv', 'BsmtQual_Ex|MSSubClass', 'GrLivArea|LotFrontage', 'Neighborhood_NoRidge|Fence_GdWo', 'GarageArea|HouseStyle_SLvl', 'Exterior2nd_AsbShng|YearBuilt', 'Neighborhood_BrDale|RoofStyle_Shed', 'Condition1_PosN|Condition2_Artery', 'BsmtCond_Tencode|CentralAir_Tencode', 'LotShape_IR1|BsmtFinType2_Unf', 'GarageFinish_Fin|BsmtHalfBath', 'BsmtFinType2_LwQ|MasVnrType_BrkFace', 'BsmtCond_Tencode|BsmtQual_Gd', 'HeatingQC_Ex|OverallCond', 'KitchenAbvGr|BsmtFinType2_Rec', 'GarageFinish_Unf|BsmtFinType1_BLQ', 'FireplaceQu_Po|SaleType_Oth', 'Street_Tencode|HeatingQC_TA', 'GarageType_Tencode|BsmtFinType2_Rec', 'OverallQual|HouseStyle_1.5Fin', 'Functional_Typ|BsmtFinType2_GLQ', 'GarageType_Tencode|Neighborhood_Veenker', 'GarageType_Detchd|GrLivArea', 'Alley_Pave|Neighborhood_Mitchel', 'Functional_Maj2|1stFlrSF', 'Heating_Grav|MiscFeature_Othr', 'FireplaceQu_Tencode|MasVnrType_Stone', 'OpenPorchSF|Exterior1st_Wd Sdng', 'FullBath|Neighborhood_Timber', 'BsmtFinType1_Rec|BsmtCond_Po', 'PavedDrive_N|RoofStyle_Gambrel', 'SaleCondition_Family|Condition1_Tencode', 'Exterior1st_Stucco|Condition1_RRAe', 'MiscFeature_Shed|BsmtFinType1_LwQ', 'GarageFinish_Fin|Exterior1st_AsbShng', 'Electrical_Tencode|GarageType_Tencode', 'LotConfig_Corner|SaleType_New', 'GarageCond_TA|GarageFinish_Fin', 'Exterior1st_Stucco|YearBuilt', 'HouseStyle_2.5Unf|Neighborhood_SawyerW', 'LandContour_Low|MasVnrType_Tencode', 'BsmtFinType2_BLQ|HouseStyle_SLvl', 'RoofMatl_Tencode|Neighborhood_OldTown', 'YearRemodAdd|HeatingQC_Fa', 'LotShape_IR2|BsmtFinType1_ALQ', 'ExterCond_Tencode|MasVnrType_Tencode', 'Electrical_Tencode|Heating_GasW', 'Exterior1st_CemntBd|RoofStyle_Shed', 'FireplaceQu_Fa|MasVnrType_Tencode', 'HalfBath|Condition1_Norm', 'Exterior2nd_MetalSd|Neighborhood_BrkSide', 'GarageCond_Tencode|MSSubClass', 'OverallQual|BsmtCond_Tencode', 'Exterior2nd_MetalSd|MSZoning_FV', 'PavedDrive_Y|OpenPorchSF', 'YearRemodAdd|Foundation_Slab', 'GarageQual_Fa|MasVnrType_BrkCmn', 'ExterCond_TA|BsmtFinType2_BLQ', 'FullBath|RoofMatl_WdShngl', 'BsmtHalfBath|GarageArea', 'Exterior2nd_Stucco|FireplaceQu_Fa', 'Exterior2nd_Stucco|BsmtFinType2_ALQ', 'ExterQual_TA|GrLivArea', 'PoolQC_Tencode|LandContour_Bnk', 'BldgType_TwnhsE|Exterior2nd_Wd Shng', 'GarageCond_TA|Condition2_Tencode', 'BsmtFinType2_GLQ|GarageQual_Po', 'Functional_Tencode|Exterior2nd_Tencode', 'SaleType_ConLw|SaleCondition_Abnorml', 'GarageQual_Po|LotShape_IR3', 'BsmtExposure_Tencode|LandSlope_Sev', 'BsmtFinType2_Tencode|FireplaceQu_Fa', 'BsmtFinType2_Tencode|RoofStyle_Gable', 'SaleCondition_Alloca|Exterior2nd_Brk Cmn', 'SaleType_Tencode|GarageCond_Ex', 'MSZoning_Tencode|Neighborhood_IDOTRR', '1stFlrSF|Functional_Mod', 'ExterQual_Ex|Neighborhood_SawyerW', 'MoSold|CentralAir_N', 'MSZoning_C (all)|Utilities_AllPub', 'LotShape_Reg|Electrical_FuseP', 'LotShape_IR2|GarageQual_Fa', 'Neighborhood_Blmngtn|Functional_Maj1', 'BldgType_Duplex|TotRmsAbvGrd', 'PavedDrive_N|GrLivArea', 'Electrical_FuseP|ExterQual_Tencode', 'Condition1_Tencode|GarageCond_Ex', 'BsmtFinType2_BLQ|ExterQual_Tencode', 'BsmtExposure_Av|Condition1_Norm', 'LotConfig_Tencode|Exterior1st_BrkComm', 'FireplaceQu_TA|Exterior1st_MetalSd', 'Exterior2nd_Tencode|MasVnrType_BrkFace', 'LandContour_Tencode|KitchenQual_TA', 'LotShape_IR2|HouseStyle_1.5Unf', 'Exterior1st_Stucco|GarageArea', 'Foundation_Tencode|MSSubClass', 'Street_Tencode|Functional_Maj1', 'GarageCond_Tencode|RoofStyle_Tencode', '3SsnPorch|GarageYrBlt', 'BsmtHalfBath|BedroomAbvGr', 'YearRemodAdd|BsmtExposure_No', 'YearRemodAdd|BsmtFinSF1', 'BldgType_Duplex|Neighborhood_SawyerW', '2ndFlrSF|MasVnrType_Tencode', 'BsmtFinType1_Tencode|GarageFinish_Tencode', 'Condition1_Artery|GarageArea', 'BsmtHalfBath|MSZoning_RH', 'EnclosedPorch|LandContour_HLS', 'Neighborhood_Veenker|RoofStyle_Gambrel', 'Condition1_PosN|GarageQual_Po', 'LandContour_Lvl|Fence_GdPrv', 'Heating_Grav|Neighborhood_NoRidge', 'Exterior1st_VinylSd|HouseStyle_2Story', 'BsmtHalfBath|SaleCondition_Abnorml', 'BsmtExposure_Mn|BsmtCond_TA', 'MSZoning_C (all)|SaleType_Oth', 'BsmtHalfBath|1stFlrSF', 'Neighborhood_NAmes|MSZoning_RM', 'Neighborhood_CollgCr|SaleType_ConLI', 'FullBath|BsmtFinType2_Rec', 'GarageFinish_Fin|Neighborhood_Crawfor', 'HeatingQC_Fa|MiscFeature_Tencode', 'LotShape_IR1|Condition1_Tencode', 'Neighborhood_ClearCr|BsmtFinType1_ALQ', 'BsmtFinType2_GLQ|HouseStyle_2.5Unf', 'Exterior1st_HdBoard|Exterior2nd_BrkFace', 'Electrical_FuseP|LotConfig_Inside', 'BsmtUnfSF|Condition2_Norm', 'ExterCond_Gd|Street_Pave', 'Functional_Mod|GarageQual_Tencode', 'Functional_Typ|GarageYrBlt', 'Functional_Typ|MoSold', 'Electrical_FuseF|Neighborhood_StoneBr', 'Exterior1st_WdShing|Functional_Min2', 'Functional_Min1|Condition1_Feedr', 'SaleType_ConLD|GarageCond_Ex', 'HeatingQC_Fa|ExterCond_TA', 'GarageQual_TA|BsmtFinType2_Unf', 'Electrical_SBrkr|SaleType_Oth', 'FireplaceQu_Tencode|BsmtQual_Fa', 'Foundation_Stone|LotConfig_Tencode', 'LotShape_IR1|LotConfig_Inside', 'TotalBsmtSF|LowQualFinSF', 'BsmtFinType2_BLQ|GarageType_Attchd', 'ExterQual_TA|BsmtFinType1_BLQ', 'RoofStyle_Flat|BsmtFinType2_GLQ', 'ScreenPorch|GarageYrBlt', 'YearBuilt|MasVnrType_Tencode', 'Fence_GdPrv|ExterQual_Gd', 'Electrical_Tencode|BsmtFinSF1', 'SaleType_ConLD|RoofStyle_Gambrel', 'LotFrontage|BsmtFinType2_BLQ', 'Neighborhood_BrkSide|RoofMatl_WdShngl', 'Condition1_PosN|Functional_Min1', 'Exterior2nd_MetalSd|Exterior1st_Wd Sdng', 'LotArea|HouseStyle_SLvl', 'KitchenAbvGr|BsmtFinType2_Tencode', 'MoSold|HouseStyle_2.5Unf', 'Exterior1st_Plywood|Exterior1st_Wd Sdng', 'BsmtFinType2_ALQ|LotConfig_CulDSac', 'Exterior2nd_HdBoard|Fence_MnWw', 'BsmtFinType2_GLQ|Exterior2nd_Tencode', 'SaleType_ConLw|Condition1_Feedr', 'BsmtFinType1_Tencode|Foundation_PConc', 'Condition1_Artery|SaleCondition_Partial', 'ExterCond_TA|BsmtQual_Ex', 'BsmtFinType2_BLQ|Neighborhood_StoneBr', 'Exterior1st_BrkFace|PavedDrive_Y', 'Foundation_Stone|GarageType_BuiltIn', 'HeatingQC_Ex|MSSubClass', 'LotShape_Reg|Neighborhood_Somerst', 'BsmtFinSF2|SaleType_CWD', 'Fence_Tencode|Condition1_RRAn', 'Electrical_Tencode|HeatingQC_Ex', 'Exterior1st_HdBoard|MiscFeature_Tencode', 'MSZoning_Tencode|Neighborhood_MeadowV', 'Exterior1st_AsbShng|MSZoning_Tencode', 'EnclosedPorch|RoofStyle_Tencode', 'GarageFinish_Unf|Functional_Maj1', 'Exterior1st_AsbShng|LotConfig_CulDSac', 'Functional_Maj1|Exterior2nd_Wd Shng', 'LotShape_Tencode|BsmtCond_Po', 'SaleType_ConLI|BsmtQual_TA', 'MSZoning_C (all)|ExterQual_Gd', 'Electrical_FuseP|Exterior2nd_Tencode', 'Exterior2nd_Tencode|MasVnrType_BrkCmn', 'Exterior2nd_Tencode|SaleType_WD', 'FullBath|GarageFinish_Fin', 'KitchenAbvGr|LotConfig_Tencode', 'Heating_GasA|Neighborhood_SWISU', 'LotShape_Reg|FullBath', 'GarageType_CarPort|Exterior1st_MetalSd', 'GarageQual_Po|BsmtCond_Fa', 'Neighborhood_Somerst|Neighborhood_SawyerW', 'HeatingQC_Tencode|Exterior2nd_AsphShn', 'BsmtFinType2_BLQ|Exterior2nd_MetalSd', 'EnclosedPorch|RoofMatl_Tar&Grv', 'Neighborhood_Crawfor|MiscFeature_Gar2', 'FireplaceQu_TA|HouseStyle_2Story', 'BldgType_Twnhs|KitchenQual_Gd', 'YrSold|BldgType_1Fam', 'BsmtExposure_Tencode|Alley_Tencode', 'LandContour_Tencode|CentralAir_Y', 'RoofStyle_Gable|BldgType_Tencode', 'HeatingQC_Gd|BsmtExposure_Av', 'GarageCond_TA|Exterior2nd_Tencode', 'FullBath|MSZoning_RH', 'SaleType_ConLD|Exterior2nd_Wd Shng', 'MoSold|BsmtFinType1_GLQ', 'Exterior1st_HdBoard|KitchenQual_Tencode', 'HeatingQC_Fa|BsmtFinType1_Rec', 'FireplaceQu_Tencode|RoofStyle_Gable', 'PoolArea|RoofMatl_WdShngl', 'Foundation_PConc|PavedDrive_Y', 'EnclosedPorch|LandSlope_Tencode', 'SaleType_ConLI|MasVnrType_BrkCmn', 'SaleCondition_Alloca|Exterior2nd_CmentBd', 'Condition1_RRAn|BsmtQual_Gd', 'Neighborhood_NridgHt|MasVnrType_BrkCmn', 'Exterior2nd_BrkFace|PoolQC_Tencode', 'BldgType_Tencode|LotConfig_Inside', 'OverallQual|BsmtQual_Tencode', 'GarageCond_Gd|GarageType_2Types', 'BldgType_Twnhs|SaleType_New', 'GrLivArea|Exterior1st_BrkComm', 'LotConfig_CulDSac|BsmtExposure_Mn', 'Functional_Tencode|BsmtFinType1_Rec', 'BsmtFinType1_BLQ|ExterQual_Ex', 'LotShape_IR3|LotConfig_Inside', 'GrLivArea|BsmtFinType1_ALQ', 'Exterior2nd_Wd Sdng|Exterior1st_Tencode', 'Neighborhood_NWAmes|OverallCond', 'SaleType_COD|RoofMatl_WdShngl', 'LandContour_HLS|BsmtQual_Ex', 'Neighborhood_Mitchel|Neighborhood_MeadowV', 'Neighborhood_Gilbert|OverallCond', 'LotArea|Neighborhood_SawyerW', 'GarageType_Attchd|BsmtCond_TA', 'GarageQual_TA|BsmtFinSF1', 'LotArea|GarageQual_Tencode', 'Neighborhood_CollgCr|BsmtFinType1_Unf', 'Functional_Typ|LotConfig_CulDSac', 'Neighborhood_ClearCr|BsmtQual_TA', 'GarageFinish_Unf|LandContour_Low', 'BsmtExposure_Tencode|BsmtFinType2_Rec', 'BsmtHalfBath|PoolQC_Tencode', 'Neighborhood_CollgCr|RoofStyle_Gable', 'RoofStyle_Gable|Exterior1st_Plywood', 'GarageCond_TA|Exterior1st_AsbShng', 'Neighborhood_Mitchel|BsmtFinSF2', 'Alley_Pave|MSSubClass', 'BsmtFinType2_BLQ|Neighborhood_SawyerW', 'Exterior2nd_Tencode|GarageType_Attchd', 'LandSlope_Mod|Exterior2nd_Wd Shng', 'RoofStyle_Hip|BsmtFinType1_Unf', 'LandSlope_Mod|ExterQual_Gd', 'Functional_Maj2|BsmtFinType2_LwQ', 'LotConfig_Tencode|Condition1_Feedr', 'BedroomAbvGr|ExterCond_Fa', 'EnclosedPorch|YearBuilt', 'Street_Tencode|ScreenPorch', 'GarageType_BuiltIn|SaleType_New', 'Functional_Maj1|RoofStyle_Tencode', 'BldgType_Duplex|FireplaceQu_Fa', 'Fence_GdPrv|FireplaceQu_TA', 'Street_Grvl|PavedDrive_P', 'LandSlope_Mod|MasVnrType_Stone', 'Neighborhood_BrDale|BsmtFinType2_Unf', 'LotConfig_FR2|BsmtQual_Gd', 'LotShape_IR1|SaleType_ConLI', 'Neighborhood_SWISU|Exterior2nd_MetalSd', 'HouseStyle_1Story|BsmtCond_Fa', 'Exterior1st_Stucco|Neighborhood_Gilbert', 'Exterior2nd_Stone|SaleType_COD', 'OverallQual|MoSold', 'MasVnrType_BrkFace|GarageType_2Types', 'Electrical_FuseP|PoolArea', 'LandContour_Low|Functional_Min2', 'LandContour_Low|ExterCond_Fa', 'LandContour_Tencode|FireplaceQu_TA', 'BldgType_Twnhs|MasVnrType_Tencode', 'EnclosedPorch|BsmtFinType1_LwQ', 'HouseStyle_1Story|FireplaceQu_Po', 'MSZoning_FV|Utilities_AllPub', 'GarageCond_Gd|ExterCond_Tencode', 'Condition1_PosN|Functional_Min2', 'Alley_Grvl|Exterior2nd_AsphShn', 'HouseStyle_Tencode|GarageType_Attchd', 'Exterior2nd_AsbShng|Exterior2nd_BrkFace', 'RoofStyle_Flat|BsmtFinType1_GLQ', 'Neighborhood_Somerst|SaleCondition_Abnorml', 'Foundation_PConc|Exterior2nd_Tencode', 'BsmtQual_Ex|CentralAir_N', 'Neighborhood_Mitchel|BsmtFinSF1', 'Alley_Tencode|KitchenQual_TA', 'BsmtExposure_Tencode|MasVnrType_Tencode', 'Exterior1st_HdBoard|BsmtQual_Fa', 'SaleType_ConLw|BsmtQual_Tencode', 'FullBath|MiscFeature_Gar2', 'Neighborhood_SWISU|GarageFinish_RFn', 'Neighborhood_NoRidge|SaleCondition_Alloca', 'GarageCars|Exterior2nd_Brk Cmn', 'LotShape_IR1|BldgType_1Fam', 'PavedDrive_Y|GarageCond_Ex', 'HouseStyle_SFoyer|Foundation_Slab', 'BsmtFinType1_Tencode|MasVnrArea', 'FireplaceQu_Tencode|LotFrontage', 'RoofMatl_CompShg|WoodDeckSF', 'Exterior2nd_Stucco|MiscFeature_Othr', 'Exterior2nd_Stucco|Neighborhood_NoRidge', 'HeatingQC_TA|GarageQual_Tencode', 'Exterior2nd_VinylSd|GarageCond_Gd', 'Neighborhood_Blmngtn|Exterior1st_Plywood', 'Exterior1st_BrkFace|HouseStyle_1Story', 'MiscVal|Exterior1st_CemntBd', 'SaleType_ConLD|LandContour_Lvl', 'GarageType_BuiltIn|BsmtFinType2_LwQ', 'BsmtUnfSF|BsmtQual_Gd', 'Functional_Typ|Fireplaces', 'Electrical_FuseA|BsmtFinType1_GLQ', 'Functional_Typ|HeatingQC_Tencode', 'GarageQual_TA|MasVnrType_Tencode', 'BsmtFinType2_Rec|MSSubClass', 'LandContour_Tencode|Neighborhood_SWISU', 'GarageType_Detchd|Neighborhood_Sawyer', 'SaleType_ConLw|PavedDrive_P', 'Functional_Min1|BldgType_1Fam', 'BsmtFinType2_Tencode|CentralAir_Tencode', 'Functional_Mod|GarageType_2Types', 'Condition2_Tencode|RoofMatl_WdShngl', 'Condition2_Artery|Exterior1st_WdShing', 'Alley_Tencode|SaleType_CWD', 'BsmtFinType1_Tencode|FireplaceQu_Ex', 'BsmtExposure_Av|Neighborhood_SawyerW', 'HeatingQC_TA|GarageCond_TA', 'Foundation_Stone|Exterior1st_Tencode', 'GarageCond_Ex|MSZoning_Tencode', 'FireplaceQu_Tencode|BsmtQual_Tencode', 'SaleCondition_Partial|Utilities_AllPub', 'Fence_GdWo|BsmtExposure_Mn', 'YearRemodAdd|BsmtFinType1_Rec', 'HouseStyle_SFoyer|Functional_Min2', 'HouseStyle_Tencode|SaleType_COD', 'Neighborhood_Blmngtn|RoofStyle_Gambrel', 'BsmtExposure_Tencode|GarageType_BuiltIn', 'Alley_Tencode|Exterior2nd_Plywood', 'LotShape_Reg|GarageQual_Fa', 'BsmtFinType2_GLQ|Neighborhood_MeadowV', 'Neighborhood_NridgHt|Street_Grvl', 'Neighborhood_Timber|WoodDeckSF', 'BldgType_2fmCon|BsmtFinType2_GLQ', 'BsmtUnfSF|MSZoning_RH', 'PavedDrive_N|SaleCondition_Family', 'Exterior2nd_CmentBd|CentralAir_Tencode', 'Exterior1st_AsbShng|Functional_Min1', 'GarageCond_Fa|Condition1_Feedr', 'HeatingQC_TA|MasVnrType_BrkFace', 'LotShape_Tencode|MasVnrType_BrkCmn', 'LotShape_Reg|Fence_MnWw', 'RoofMatl_Tar&Grv|Exterior1st_BrkComm', 'Neighborhood_NoRidge|GarageYrBlt', 'Condition2_Artery|Exterior2nd_Wd Shng', '2ndFlrSF|GarageYrBlt', 'MiscFeature_Othr|SaleCondition_Alloca', 'BsmtHalfBath|Street_Pave', 'LandContour_HLS|Condition1_RRAn', 'LotConfig_CulDSac|FireplaceQu_TA', 'Electrical_FuseA|MasVnrArea', 'GarageType_Basment|Functional_Min2', 'KitchenQual_Gd|HouseStyle_Tencode', 'ExterQual_TA|ExterQual_Gd', 'Neighborhood_OldTown|Neighborhood_Edwards', 'Neighborhood_NPkVill|Foundation_BrkTil', 'RoofStyle_Hip|Neighborhood_CollgCr', 'GarageCond_Tencode|Neighborhood_Edwards', 'HalfBath|Neighborhood_NWAmes', 'GarageFinish_Tencode|BsmtFinType2_Unf', 'SaleType_ConLD|BldgType_1Fam', 'BsmtFinType2_GLQ|BsmtFinType2_Rec', 'SaleType_WD|ExterQual_Gd', 'LotConfig_FR2|Neighborhood_Timber', 'MasVnrArea|WoodDeckSF', 'BsmtExposure_Gd|ExterQual_Tencode', 'KitchenQual_TA|Neighborhood_Timber', 'ExterCond_TA|LandContour_Bnk', 'BedroomAbvGr|KitchenQual_TA', 'SaleType_Tencode|BsmtExposure_No', 'HeatingQC_Tencode|Fence_MnPrv', 'FireplaceQu_Ex|Neighborhood_BrkSide', 'Alley_Pave|BsmtExposure_Av', 'BsmtFinType1_BLQ|2ndFlrSF', 'ExterQual_TA|Alley_Tencode', 'MiscFeature_Gar2|RoofMatl_WdShngl', 'HeatingQC_Fa|Exterior1st_WdShing', 'ExterQual_Ex|OverallCond', 'Fence_Tencode|MasVnrType_None', 'Functional_Maj1|MasVnrArea', 'LotShape_Reg|BsmtFinType2_LwQ', 'BsmtQual_Tencode|Neighborhood_MeadowV', 'Condition2_Artery|MasVnrArea', 'Fence_Tencode|GarageQual_Po', 'GrLivArea|KitchenQual_TA', 'Neighborhood_Somerst|LandSlope_Sev', 'Exterior1st_CemntBd|GarageQual_Tencode', 'Condition1_RRAe|BldgType_1Fam', 'Neighborhood_OldTown|MasVnrType_BrkFace', 'BsmtFinType1_BLQ|SaleType_New', 'Neighborhood_NPkVill|MasVnrArea', 'Alley_Tencode|KitchenQual_Fa', 'SaleType_Tencode|BsmtCond_Tencode', 'FullBath|BsmtExposure_Mn', 'MiscFeature_Shed|BsmtExposure_No', 'RoofMatl_Tencode|MSSubClass', 'Street_Tencode|GarageType_2Types', 'Neighborhood_SawyerW|BsmtCond_TA', 'Heating_GasA|Neighborhood_BrkSide', 'LotConfig_Tencode|Exterior1st_MetalSd', 'HouseStyle_1.5Fin|MasVnrType_Stone', 'BsmtFinType1_BLQ|MSZoning_C (all)', 'Utilities_Tencode|BldgType_Duplex', 'Fireplaces|Exterior1st_Stucco', 'GrLivArea|Neighborhood_BrkSide', 'PoolQC_Tencode|HouseStyle_2Story', 'Neighborhood_BrDale|Exterior1st_AsbShng', 'LandSlope_Tencode|BsmtUnfSF', 'GarageType_CarPort|BsmtFinSF1', 'Electrical_FuseP|BsmtFinType2_Rec', 'BsmtFinSF1|Utilities_AllPub', 'Street_Tencode|ExterQual_Tencode', 'Exterior1st_HdBoard|Functional_Min2', 'Neighborhood_Somerst|LandContour_Lvl', 'BsmtFinType1_Rec|BsmtExposure_Gd', 'BsmtCond_Gd|MasVnrType_Tencode', 'Utilities_AllPub|Neighborhood_MeadowV', 'EnclosedPorch|Street_Grvl', 'FireplaceQu_Gd|BsmtCond_TA', 'BsmtExposure_Av|BsmtExposure_Mn', 'Functional_Tencode|LandContour_HLS', 'LotConfig_FR2|Exterior1st_VinylSd', 'BsmtCond_Po|Exterior2nd_AsphShn', 'PavedDrive_N|MasVnrType_BrkCmn', 'GarageFinish_RFn|Exterior1st_Wd Sdng', 'BsmtFinType2_LwQ|CentralAir_Y', 'Exterior2nd_BrkFace|Exterior1st_BrkComm', 'Exterior1st_VinylSd|Neighborhood_Gilbert', 'KitchenQual_Ex|HouseStyle_2Story', 'Alley_Pave|GarageQual_Tencode', 'Foundation_BrkTil|BsmtFinType2_LwQ', 'Functional_Maj2|GarageType_Attchd', 'SaleCondition_Tencode|BsmtFinType1_LwQ', '3SsnPorch|GarageType_Basment', 'HeatingQC_TA|Exterior2nd_MetalSd', 'PavedDrive_N|Heating_Tencode', 'SaleType_Tencode|BsmtFinType2_LwQ', 'Neighborhood_NAmes|Condition1_RRAn', 'RoofStyle_Hip|MasVnrType_None', 'GarageArea|KitchenQual_Fa', 'Neighborhood_Crawfor|Neighborhood_SawyerW', 'Neighborhood_StoneBr|BsmtFinType1_LwQ', 'Neighborhood_Blmngtn|Electrical_FuseA', 'LotArea|MiscFeature_Gar2', 'OverallQual|Foundation_Stone', 'SaleCondition_Tencode|Neighborhood_Somerst', 'RoofStyle_Flat|Exterior2nd_Plywood', 'KitchenQual_Gd|BsmtExposure_No', 'Heating_GasW|Neighborhood_Edwards', 'Heating_GasA|ExterQual_Fa', 'ExterCond_TA|MSZoning_RM', 'GarageFinish_Fin|BsmtFinType2_ALQ', 'Alley_Tencode|SaleCondition_Abnorml', 'YearBuilt|Condition1_RRAe', 'Exterior1st_Stucco|Condition1_Feedr', 'FireplaceQu_TA|ExterCond_Fa', 'HeatingQC_Tencode|BsmtFinSF1', 'Utilities_AllPub|MasVnrType_Tencode', 'GarageCond_Fa|SaleType_Oth', 'BsmtHalfBath|BsmtCond_Po', 'GarageArea|BsmtFinType1_LwQ', 'BsmtUnfSF|CentralAir_N', 'Neighborhood_NPkVill|WoodDeckSF', 'Neighborhood_Somerst|KitchenQual_TA', 'Heating_Grav|PoolArea', 'GarageCond_Fa|Neighborhood_BrkSide', 'Neighborhood_NridgHt|LowQualFinSF', 'BsmtFinType2_ALQ|KitchenQual_Ex', 'LotConfig_Tencode|BsmtCond_Fa', 'Functional_Tencode|CentralAir_Y', 'LotConfig_Corner|BsmtFinType1_GLQ', 'Neighborhood_OldTown|BsmtCond_Gd', 'Exterior1st_AsbShng|WoodDeckSF', 'Condition1_Tencode|RoofMatl_WdShngl', 'Neighborhood_Blmngtn|HouseStyle_Tencode', 'BsmtExposure_No|Fence_MnPrv', 'FullBath|Exterior1st_BrkComm', 'LandContour_Low|Alley_Grvl', 'LowQualFinSF|Exterior1st_Tencode', 'MiscVal|BsmtFinSF1', 'KitchenAbvGr|Street_Tencode', 'SaleCondition_Tencode', 'GarageQual_TA|Neighborhood_Timber', 'RoofMatl_Tar&Grv|Neighborhood_IDOTRR', 'Foundation_Tencode|ExterCond_Gd', 'GarageCond_TA|Neighborhood_OldTown', 'Electrical_FuseA|LotShape_IR3', 'BsmtExposure_Tencode|RoofStyle_Tencode', 'Alley_Tencode|BsmtUnfSF', 'Heating_Grav|ExterCond_Fa', 'GarageQual_TA|BsmtFinType1_LwQ', 'Condition2_Artery|Neighborhood_MeadowV', 'LotConfig_Corner|Neighborhood_Sawyer', 'TotalBsmtSF|LandContour_Lvl', 'BsmtFinType1_ALQ|Street_Grvl', 'Alley_Pave|MSZoning_RL', 'BsmtQual_Tencode|PoolQC_Tencode', 'Functional_Tencode|BsmtUnfSF', 'Condition1_Artery|HouseStyle_SFoyer', 'LandSlope_Sev|Exterior1st_Plywood', 'Electrical_FuseA|MSZoning_RL', 'ExterQual_Gd|Exterior1st_MetalSd', 'RoofMatl_Tencode|LandContour_Low', 'Foundation_Stone|BsmtFinType2_Unf', 'MiscFeature_Othr|LandSlope_Sev', 'Neighborhood_Somerst|Exterior1st_CemntBd', 'GarageType_Detchd|OpenPorchSF', 'SaleType_ConLw|GarageQual_Po', 'KitchenAbvGr|Functional_Min1', 'ExterQual_TA|BsmtFinType1_GLQ', 'GarageType_Detchd|CentralAir_Tencode', 'MSZoning_Tencode|Fence_MnWw', 'FireplaceQu_Po|RoofMatl_CompShg', 'Neighborhood_Sawyer|Functional_Min2', 'TotalBsmtSF|GarageYrBlt', 'Neighborhood_Blmngtn|MasVnrArea', 'Electrical_FuseP|Heating_Tencode', 'GarageType_CarPort|BsmtCond_Gd', 'LandSlope_Sev|SaleCondition_Normal', 'Neighborhood_Blmngtn|RoofMatl_CompShg', 'Neighborhood_Blmngtn|KitchenQual_Tencode', 'BldgType_Twnhs|MasVnrType_BrkCmn', 'CentralAir_Y|BsmtExposure_No', 'Neighborhood_ClearCr|GarageType_Basment', 'PavedDrive_N|Electrical_FuseP', 'Exterior1st_HdBoard|1stFlrSF', 'RoofMatl_Tencode|BsmtFinType1_BLQ', 'BsmtFinType1_ALQ|ScreenPorch', 'RoofStyle_Hip|MSSubClass', 'FireplaceQu_Fa|MSSubClass', 'SaleType_ConLD|Neighborhood_NWAmes', 'BldgType_Twnhs|BsmtFinSF2', 'HouseStyle_SFoyer|Exterior1st_MetalSd', 'Condition1_PosA|BsmtCond_TA', 'Heating_Grav|BsmtUnfSF', 'Exterior2nd_Tencode|LotConfig_Inside', 'MSZoning_C (all)|Exterior2nd_MetalSd', 'Condition2_Tencode|ExterQual_Tencode', 'ExterQual_Gd|Functional_Min2', 'Electrical_FuseA|Exterior2nd_VinylSd', 'YearRemodAdd|EnclosedPorch', 'PoolArea|GarageType_2Types', 'LandSlope_Gtl|ExterQual_Fa', 'Utilities_Tencode|MSSubClass', 'Functional_Typ|GarageType_Tencode', 'FireplaceQu_Po|Alley_Grvl', 'HouseStyle_1Story|Exterior1st_BrkComm', 'Exterior2nd_Stucco|MSZoning_FV', 'BldgType_Twnhs|RoofMatl_Tar&Grv', '2ndFlrSF|MSZoning_Tencode', 'MiscFeature_Othr|BsmtFinType1_ALQ', 'SaleCondition_Tencode|Exterior1st_Stucco', 'BsmtHalfBath|HeatingQC_Tencode', 'MSZoning_RM|CentralAir_Y', 'Exterior2nd_Stone|GarageType_Basment', 'RoofStyle_Hip|BsmtFinType1_LwQ', 'Functional_Min1|SaleType_COD', 'PavedDrive_Y|LotConfig_Tencode', 'BsmtQual_Fa|BsmtFinType1_GLQ', 'HouseStyle_SFoyer|MasVnrArea', 'SaleCondition_Partial|Street_Pave', 'SaleCondition_Family|GarageCond_Gd', 'Neighborhood_Tencode|MSSubClass', 'HeatingQC_Fa|CentralAir_N', 'Neighborhood_NridgHt|Heating_GasA', 'RoofMatl_Tar&Grv|1stFlrSF', 'Functional_Maj2|Functional_Min1', 'Utilities_Tencode|Neighborhood_SawyerW', 'Neighborhood_NridgHt|MSSubClass', 'GarageType_Basment|MasVnrType_BrkFace', 'PavedDrive_P|Fence_MnPrv', 'Neighborhood_NPkVill|GarageArea', 'SaleType_WD|BsmtExposure_Mn', 'BsmtExposure_Tencode|LotConfig_Corner', 'BldgType_Twnhs|RoofMatl_CompShg', 'BldgType_Duplex|PoolArea', 'PoolQC_Tencode|PoolArea', 'PavedDrive_N|Condition1_Tencode', 'BsmtFinType2_GLQ|MSZoning_FV', 'BsmtQual_Tencode|PavedDrive_Tencode', 'BldgType_Twnhs|Neighborhood_NWAmes', 'Functional_Maj2|BsmtExposure_Mn', 'GarageCond_Tencode|BsmtQual_Fa', 'FullBath|Neighborhood_Gilbert', 'SaleType_COD|BsmtCond_TA', 'BsmtQual_Ex|Condition1_PosA', 'SaleType_Tencode|PavedDrive_Tencode', 'BldgType_2fmCon|GarageQual_Tencode', 'ExterCond_Gd|MSZoning_RM', 'HeatingQC_Tencode|Exterior1st_MetalSd', 'MasVnrType_None|Functional_Min2', 'Electrical_SBrkr|GarageYrBlt', 'LotConfig_CulDSac|Condition1_Feedr', 'Heating_Grav|OpenPorchSF', 'TotalBsmtSF|BsmtFinType1_Rec', 'Neighborhood_NoRidge|SaleType_CWD', 'BsmtFinType2_Tencode|BsmtQual_Fa', 'Neighborhood_BrDale|Functional_Tencode', 'Neighborhood_SWISU|Neighborhood_SawyerW', 'MiscFeature_Othr|Exterior1st_BrkComm', 'Neighborhood_Edwards|RoofStyle_Shed', 'Exterior2nd_AsbShng|Street_Grvl', 'BsmtFinSF2|Heating_Tencode', 'SaleType_WD|BsmtCond_Po', 'Heating_Grav|Exterior1st_MetalSd', 'HeatingQC_Ex|Foundation_CBlock', 'GarageFinish_Unf|HouseStyle_Tencode', 'HeatingQC_TA|LandContour_Tencode', 'Street_Tencode|LowQualFinSF', 'Neighborhood_Gilbert|Fence_MnPrv', 'LotConfig_CulDSac|Fence_MnWw', 'Exterior2nd_VinylSd|KitchenQual_Fa', 'Neighborhood_NoRidge|BsmtFinType2_BLQ', 'MiscFeature_Othr|HouseStyle_Tencode', 'FireplaceQu_Ex|MSZoning_FV', 'OpenPorchSF|SaleCondition_Partial', 'Alley_Tencode|LotConfig_Tencode', 'LandContour_Low|GarageCars', 'FullBath|Neighborhood_IDOTRR', 'BldgType_Tencode|Exterior2nd_HdBoard', 'FireplaceQu_Tencode|Neighborhood_Crawfor', 'Neighborhood_NPkVill|FireplaceQu_Po', 'Foundation_PConc|SaleType_ConLI', 'BsmtFinType2_Unf|Alley_Grvl', 'GarageFinish_Unf|Condition1_RRAe', 'Foundation_BrkTil|BsmtExposure_Mn', 'ExterQual_Ex|ScreenPorch', 'MiscFeature_Tencode|SaleType_CWD', 'LandContour_Bnk|MSZoning_C (all)', 'KitchenAbvGr|RoofMatl_WdShngl', 'Heating_GasW|Fence_GdWo', 'TotalBsmtSF|MSZoning_RL', 'LotShape_IR1|BsmtFinType1_ALQ', 'ExterQual_Gd|Exterior1st_Wd Sdng', 'Exterior1st_HdBoard|SaleCondition_Abnorml', 'MiscFeature_Tencode|BsmtFinSF1', 'LandContour_Low|Functional_Min1', 'Electrical_FuseP|GarageCond_Ex', 'HouseStyle_SFoyer|Exterior2nd_Wd Sdng', 'BsmtHalfBath|LandSlope_Gtl', 'RoofMatl_Tar&Grv', 'Functional_Tencode|BsmtExposure_Mn', 'BsmtFinType1_ALQ|Neighborhood_Sawyer', 'GarageQual_Gd|Neighborhood_NoRidge', 'Utilities_Tencode|Foundation_PConc', 'RoofStyle_Hip|ExterCond_Tencode', 'ExterCond_TA|Functional_Min1', 'Heating_GasA|Neighborhood_Edwards', 'Exterior2nd_AsbShng|BsmtQual_Ex', 'GrLivArea|PavedDrive_Y', 'SaleType_ConLI|BsmtQual_Gd', 'BsmtQual_Tencode|SaleType_Oth', 'BldgType_2fmCon|Electrical_FuseA', 'GarageFinish_Unf|PoolQC_Tencode', 'GarageQual_Fa|GarageQual_Po', 'BsmtExposure_Av|MasVnrType_Stone', 'Neighborhood_NoRidge|SaleCondition_Normal', 'Heating_GasA|BsmtCond_Po', 'KitchenAbvGr|GarageCond_Fa', 'PoolQC_Tencode|GarageQual_Tencode', 'Neighborhood_NridgHt|RoofStyle_Gable', 'YrSold|BsmtCond_Tencode', 'BldgType_Duplex|MasVnrArea', 'Neighborhood_Tencode|BsmtExposure_Mn', 'EnclosedPorch|LotShape_IR1', 'ExterQual_TA|Fence_MnPrv', 'BedroomAbvGr|HouseStyle_1.5Unf', 'SaleType_ConLw|FireplaceQu_Ex', 'KitchenQual_Gd|3SsnPorch', 'PavedDrive_Y|GarageArea', 'BsmtFinType1_LwQ|Fence_MnPrv', 'YearRemodAdd|Neighborhood_NAmes', 'BsmtHalfBath|BsmtQual_Fa', 'RoofStyle_Tencode|BsmtExposure_Mn', 'MiscVal|Functional_Mod', 'LotFrontage|3SsnPorch', 'Exterior2nd_AsbShng|Neighborhood_NAmes', 'GarageFinish_Unf|KitchenQual_Fa', 'KitchenAbvGr|RoofMatl_CompShg', 'Neighborhood_NPkVill|Neighborhood_NWAmes', 'BsmtExposure_Av', 'ExterQual_TA|TotRmsAbvGrd', 'Foundation_BrkTil|BsmtFinType1_ALQ', 'Fireplaces|FireplaceQu_Fa', 'FireplaceQu_Po|Foundation_BrkTil', 'LotConfig_CulDSac|MasVnrType_Tencode', 'SaleType_ConLw|MSZoning_C (all)', 'GarageCond_TA|Exterior1st_VinylSd', 'MSSubClass|MasVnrArea', 'YrSold|Exterior1st_VinylSd', 'BsmtFinSF2|HalfBath', 'BsmtExposure_Av|MSZoning_RL', 'Neighborhood_ClearCr|Foundation_BrkTil', 'GarageType_Detchd|RoofStyle_Gambrel', 'SaleType_New|MasVnrType_BrkCmn', 'SaleType_ConLw|BsmtQual_Gd', 'Alley_Pave|LotArea', 'SaleCondition_Family|Foundation_Slab', 'Heating_GasW|SaleCondition_Abnorml', 'RoofStyle_Shed|KitchenQual_TA', 'GarageType_BuiltIn|HouseStyle_2Story', 'HouseStyle_SFoyer|LotConfig_Tencode', 'Condition1_Norm|Exterior1st_Plywood', 'GarageType_CarPort|BldgType_Tencode', 'Functional_Tencode|Neighborhood_Sawyer', 'FullBath|BsmtFinType2_ALQ', 'Neighborhood_Blmngtn|Heating_Grav', 'LotShape_Tencode|RoofStyle_Hip', 'LotArea|SaleType_ConLI', 'Exterior2nd_Stone|BldgType_Tencode', 'SaleType_Oth|KitchenQual_TA', 'MoSold|MSZoning_RH', 'Neighborhood_OldTown|BsmtFinType1_Rec', 'Condition1_RRAe|PavedDrive_P', 'Condition2_Artery|Neighborhood_Timber', 'Exterior1st_HdBoard|BsmtExposure_No', 'Exterior1st_AsbShng|LotConfig_FR2', 'MasVnrType_BrkCmn|OpenPorchSF', 'Electrical_FuseF|Exterior1st_WdShing', 'Alley_Grvl|HouseStyle_2Story', 'Neighborhood_Blmngtn|MSZoning_Tencode', 'HouseStyle_SFoyer|Exterior1st_AsbShng', 'Foundation_Tencode|Condition1_PosA', 'GarageQual_Gd|BsmtQual_Ex', 'Fence_Tencode|MoSold', 'GarageCond_Ex|FireplaceQu_TA', 'LowQualFinSF|Fence_GdWo', 'GarageArea|OpenPorchSF', 'BsmtFinType1_Tencode|Electrical_FuseP', 'PavedDrive_Tencode|MasVnrType_BrkFace', 'ExterCond_TA|MiscFeature_Tencode', 'Neighborhood_NridgHt|RoofStyle_Shed', 'MasVnrType_BrkCmn|Utilities_AllPub', 'BsmtExposure_Tencode|Functional_Min2', 'BsmtUnfSF|Fence_MnWw', 'Exterior2nd_Stone|OverallCond', 'RoofStyle_Shed|BldgType_Tencode', 'LandContour_Tencode|KitchenQual_Tencode', 'YearRemodAdd|Exterior2nd_HdBoard', 'LotConfig_FR2|MSZoning_FV', 'PoolArea', 'Foundation_Stone|BsmtFinType2_LwQ', 'LandContour_Lvl|MasVnrType_Stone', 'BldgType_Duplex|BsmtQual_Ex', 'GarageYrBlt|CentralAir_N', 'Functional_Typ|BsmtQual_TA', 'BsmtExposure_Av|FireplaceQu_Ex', 'Neighborhood_NWAmes|Condition1_RRAn', 'GarageCond_TA|Street_Pave', 'OverallQual|LotArea', 'Condition1_PosA|GarageType_2Types', 'Functional_Typ|FullBath', 'PavedDrive_Tencode|Neighborhood_StoneBr', 'LandSlope_Gtl|Neighborhood_SawyerW', 'RoofMatl_WdShngl|BsmtCond_Fa', 'Neighborhood_Edwards|SaleType_WD', 'GarageCond_Po|BsmtUnfSF', 'HeatingQC_Gd|CentralAir_Tencode', 'YrSold|Neighborhood_NWAmes', 'Functional_Typ|Functional_Mod', 'Neighborhood_ClearCr|Functional_Mod', 'SaleCondition_Tencode|MSZoning_Tencode', 'BldgType_Duplex|Fireplaces', 'Street_Tencode|BsmtFinSF2', 'BsmtExposure_Av|Street_Grvl', 'Neighborhood_ClearCr|HeatingQC_Ex', 'Utilities_Tencode|GarageType_BuiltIn', 'LotShape_IR1|HeatingQC_Gd', 'OverallQual|Neighborhood_Crawfor', 'MiscFeature_Shed|LandSlope_Gtl', 'GarageCond_TA|GarageQual_Gd', 'BsmtFinType2_Tencode|RoofStyle_Shed', 'HouseStyle_SFoyer|Foundation_Tencode', 'Electrical_Tencode|Exterior1st_VinylSd', 'GarageType_Detchd|Exterior2nd_Tencode', 'KitchenAbvGr|BsmtFinType1_ALQ', 'Exterior2nd_Tencode|GarageType_Basment', 'Exterior1st_HdBoard|GarageCond_Tencode', 'ExterQual_Gd|Neighborhood_Gilbert', 'KitchenQual_Ex|ScreenPorch', 'Neighborhood_NWAmes|HouseStyle_2.5Unf', 'BsmtFinType1_Tencode|GarageCars', 'TotalBsmtSF|HalfBath', 'GarageFinish_Tencode|RoofMatl_WdShngl', 'FireplaceQu_Gd|Electrical_FuseP', 'LowQualFinSF|Exterior2nd_AsphShn', 'BsmtFinSF1|ExterCond_Fa', 'SaleCondition_Alloca|BldgType_1Fam', 'Exterior1st_HdBoard|LandContour_HLS', 'Fence_GdPrv|BsmtFinType1_GLQ', 'Utilities_Tencode|YearBuilt', 'SaleType_ConLw|Neighborhood_Gilbert', 'TotalBsmtSF|Exterior1st_AsbShng', 'MiscFeature_Othr|BsmtExposure_Av', 'Fence_Tencode|ScreenPorch', 'KitchenAbvGr|GarageType_Attchd', 'Utilities_Tencode|LandContour_Low', 'HouseStyle_1.5Unf|Exterior2nd_CmentBd', 'Neighborhood_Mitchel|FireplaceQu_TA', 'SaleType_ConLI|RoofMatl_WdShngl', 'GrLivArea|Heating_Tencode', 'Electrical_SBrkr|Neighborhood_IDOTRR', 'LotShape_IR2|Alley_Tencode', 'SaleCondition_Tencode|LotConfig_CulDSac', 'TotalBsmtSF|SaleType_WD', 'Condition1_Artery|GarageQual_TA', 'MoSold|FireplaceQu_Ex', 'Neighborhood_NWAmes|Exterior1st_MetalSd', 'ExterQual_Ex|HouseStyle_SLvl', 'Exterior1st_BrkComm|Exterior2nd_AsphShn', 'HouseStyle_SFoyer|SaleCondition_Abnorml', 'GarageCond_Fa|Condition2_Norm', 'RoofStyle_Shed|GarageType_2Types', 'ExterCond_TA|Exterior1st_VinylSd', 'ScreenPorch|MSZoning_FV', 'GarageCond_Ex|Utilities_AllPub', 'EnclosedPorch|CentralAir_N', 'Electrical_SBrkr|Neighborhood_Timber', 'LotArea|Exterior2nd_AsphShn', 'GarageCond_Po|GarageQual_Gd', 'LandSlope_Gtl|Exterior2nd_Wd Shng', 'Utilities_Tencode|PavedDrive_Y', 'BsmtExposure_Av|Exterior1st_Tencode', 'Functional_Min1|BsmtExposure_Mn', 'Exterior2nd_BrkFace|WoodDeckSF', 'Foundation_Tencode|ExterQual_Gd', 'SaleCondition_Abnorml|Exterior2nd_AsphShn', 'RoofMatl_Tar&Grv|RoofStyle_Gable', 'MiscFeature_Othr|PoolArea', 'GarageType_Tencode|Street_Grvl', 'MSZoning_C (all)|Exterior2nd_Brk Cmn', 'Exterior1st_HdBoard|Neighborhood_Mitchel', 'HouseStyle_SFoyer|GarageArea', 'MiscVal|BsmtFinType2_Rec', 'Exterior2nd_Stone|Condition2_Artery', 'BsmtQual_Tencode|Exterior2nd_VinylSd', 'OverallQual|HeatingQC_Ex', 'GarageCond_Tencode|GarageArea', 'BedroomAbvGr|Exterior1st_Wd Sdng', 'HeatingQC_Tencode|BsmtFinType1_GLQ', 'GarageFinish_Unf|GarageFinish_RFn', '2ndFlrSF|MasVnrType_BrkFace', 'Condition1_RRAe|MasVnrArea', 'HeatingQC_Fa|ScreenPorch', 'Heating_Grav|Neighborhood_Tencode', 'LotShape_Reg|RoofMatl_WdShngl', 'SaleCondition_Partial|OverallCond', 'LotShape_Tencode|Neighborhood_ClearCr', 'GarageQual_TA|HouseStyle_1.5Fin', 'HouseStyle_Tencode|BsmtFinType1_GLQ', 'BsmtExposure_Tencode|GarageQual_Tencode', 'Foundation_Stone|HouseStyle_Tencode', 'GarageFinish_Fin|SaleCondition_Alloca', 'GarageQual_TA|BsmtCond_Po', 'SaleCondition_Tencode|Exterior2nd_Wd Shng', 'Neighborhood_NridgHt|BldgType_2fmCon', 'BsmtCond_Fa|Fence_MnWw', 'Heating_GasW|Condition2_Artery', 'FireplaceQu_Tencode|RoofStyle_Hip', 'FireplaceQu_Gd|LotConfig_Corner', 'BldgType_TwnhsE|CentralAir_N', 'MiscFeature_Othr|LotArea', 'HalfBath|MasVnrType_Stone', 'Condition1_Feedr|Functional_Mod', 'BsmtExposure_Tencode|Condition1_RRAn', 'Exterior2nd_MetalSd|BsmtCond_TA', 'BldgType_2fmCon|Heating_GasW', 'GarageFinish_Unf|Electrical_Tencode', 'GarageCars|BsmtFinType1_GLQ', 'GarageType_CarPort|SaleType_Oth', 'Foundation_Stone|MasVnrType_Stone', 'GarageFinish_RFn|GarageQual_Tencode', 'LandContour_Bnk|MasVnrType_Tencode', 'KitchenQual_Tencode|GarageFinish_Tencode', 'GarageQual_Fa|BsmtExposure_Av', 'LandSlope_Sev|Exterior1st_Tencode', 'GarageCond_TA|Street_Grvl', 'HalfBath|GarageCond_Ex', 'MiscVal|MSZoning_C (all)', 'Neighborhood_ClearCr|Functional_Maj2', 'Neighborhood_Tencode|Neighborhood_Edwards', 'GarageQual_Po|MasVnrType_None', 'Neighborhood_Blmngtn|LotConfig_Tencode', 'Heating_GasA|SaleCondition_Partial', 'FireplaceQu_Po|MiscVal', 'Neighborhood_NWAmes|Functional_Mod', 'Electrical_FuseF|BsmtFinType2_Rec', 'Neighborhood_SWISU|Exterior2nd_CmentBd', 'RoofMatl_Tencode|ExterCond_Tencode', 'GarageType_Tencode|BsmtFinType2_Unf', 'BsmtFinType2_BLQ|SaleCondition_Alloca', 'Neighborhood_ClearCr|Electrical_SBrkr', 'GarageCond_TA|LotConfig_FR2', 'RoofStyle_Flat|Exterior1st_Wd Sdng', 'ExterCond_Gd|BsmtFinType2_Rec', 'OverallCond|BsmtFinType1_GLQ', 'Neighborhood_Blmngtn|Street_Pave', 'Foundation_Tencode|ScreenPorch', 'RoofStyle_Flat|1stFlrSF', 'BldgType_Twnhs|Street_Pave', 'BsmtFinType2_LwQ|GarageQual_Po', 'GarageFinish_Fin|BsmtExposure_Av', 'Foundation_Stone|MiscFeature_Shed', 'RoofStyle_Flat|Fence_MnWw', 'BldgType_2fmCon|Condition2_Tencode', 'HouseStyle_1.5Unf|Exterior1st_Wd Sdng', 'GarageFinish_Unf|ExterQual_TA', 'EnclosedPorch|MasVnrType_Stone', 'BsmtFinType1_Rec|BsmtFinType1_Unf', 'MasVnrType_None|MSZoning_Tencode', 'Alley_Tencode|BldgType_1Fam', 'YearRemodAdd|GarageQual_Po', 'Utilities_Tencode|Neighborhood_BrkSide', 'Functional_Mod|ExterQual_Gd', 'Neighborhood_Mitchel|GarageQual_TA', 'Fence_GdPrv|HouseStyle_SLvl', 'Neighborhood_StoneBr|SaleType_CWD', 'SaleCondition_Normal|KitchenQual_Fa', 'LotShape_IR1|Neighborhood_Gilbert', 'MiscFeature_Othr|HeatingQC_Ex', 'HouseStyle_Tencode|Utilities_AllPub', 'KitchenQual_Gd|GarageFinish_RFn', '2ndFlrSF|Fence_MnWw', 'YearRemodAdd|ExterQual_Gd', 'Foundation_Stone|LowQualFinSF', 'SaleType_Tencode|Electrical_SBrkr', 'Electrical_FuseP|Neighborhood_NoRidge', 'KitchenQual_Gd|Electrical_SBrkr', 'BsmtFinType2_ALQ|Neighborhood_StoneBr', 'BsmtFinType2_Unf|SaleCondition_Abnorml', 'KitchenQual_TA|Condition2_Norm', 'SaleType_ConLI|BsmtFinType1_LwQ', 'Exterior1st_HdBoard|Neighborhood_Gilbert', 'Exterior2nd_Stone|Fence_Tencode', 'LotShape_IR2|Condition1_Feedr', 'ExterQual_TA|HeatingQC_Gd', 'MoSold|GarageType_Basment', 'LotShape_Reg|Exterior2nd_Wd Sdng', 'Functional_Min1|FireplaceQu_TA', 'FireplaceQu_TA|Foundation_Slab', 'PavedDrive_Tencode|ExterCond_Tencode', 'Fence_Tencode|MasVnrType_BrkCmn', 'Foundation_BrkTil|LotShape_IR3', 'YrSold|Neighborhood_StoneBr', 'GarageCond_Tencode|LandSlope_Tencode', 'Foundation_Stone|OpenPorchSF', 'PavedDrive_Y|Exterior2nd_Wd Shng', 'Neighborhood_NridgHt|LotShape_IR3', 'KitchenQual_Gd|SaleCondition_Partial', 'BsmtQual_Ex|SaleCondition_Abnorml', 'LandContour_Bnk|MasVnrArea', 'BsmtExposure_No|Exterior1st_WdShing', 'Alley_Pave|ExterCond_Gd', '3SsnPorch|Fence_GdPrv', 'SaleType_WD|Condition1_RRAe', 'BldgType_2fmCon|Neighborhood_NoRidge', 'Exterior2nd_Wd Shng|MasVnrType_Tencode', 'Exterior2nd_VinylSd|MasVnrType_Tencode', 'Exterior1st_WdShing|ExterCond_Fa', 'BsmtFinType1_LwQ|MiscFeature_Gar2', 'BsmtFinType2_LwQ|LandSlope_Gtl', 'GarageQual_Gd|CentralAir_N', 'GarageType_Detchd|GarageCond_Ex', 'GarageCond_Tencode|LotConfig_Tencode', 'YearRemodAdd|HouseStyle_SLvl', 'HeatingQC_Gd|RoofStyle_Shed', 'Neighborhood_Crawfor|BsmtCond_Fa', 'Exterior1st_BrkFace|Fence_GdWo', 'Neighborhood_NoRidge|Neighborhood_NWAmes', 'Utilities_Tencode|YearRemodAdd', 'PavedDrive_N|Heating_GasW', 'Fireplaces|SaleType_CWD', 'ExterCond_TA|LandSlope_Mod', 'BsmtQual_Ex|MSZoning_FV', 'Fence_GdPrv|MSZoning_RM', 'HalfBath', 'Neighborhood_CollgCr|MSSubClass', 'Fireplaces|LotConfig_FR2', 'HeatingQC_Ex|BsmtCond_Po', 'LandContour_HLS|GarageType_BuiltIn', 'PavedDrive_Y|KitchenQual_Fa', 'BsmtFinType2_Tencode|Neighborhood_BrkSide', 'GarageQual_Tencode|MSZoning_RH', 'ExterCond_TA|Neighborhood_BrkSide', 'ExterCond_Gd|MasVnrType_None', 'Functional_Typ|KitchenQual_Tencode', 'Condition1_PosN|OverallCond', 'LotFrontage|Utilities_AllPub', 'Functional_Mod|MSZoning_RM', 'BsmtFinType1_ALQ|BsmtCond_TA', 'BldgType_Duplex|GarageFinish_Tencode', 'Neighborhood_Gilbert|ScreenPorch', 'BldgType_1Fam|Exterior2nd_Wd Shng', 'BsmtExposure_Av|CentralAir_Tencode', 'KitchenQual_Ex|BsmtExposure_Mn', 'PoolQC_Tencode|2ndFlrSF', 'Heating_Grav|BldgType_Tencode', 'ExterQual_Ex|BsmtCond_Fa', 'PavedDrive_Tencode|Exterior2nd_MetalSd', 'FireplaceQu_Tencode|BsmtFinType1_ALQ', 'Neighborhood_NridgHt|LotConfig_Corner', 'MiscFeature_Tencode|BsmtFinType2_Unf', 'Electrical_FuseP|Exterior2nd_CmentBd', 'Electrical_Tencode|BsmtHalfBath', 'PoolQC_Tencode|SaleCondition_Alloca', 'Condition1_Artery|BsmtFinType1_Rec', 'RoofStyle_Gable', 'GarageCond_Gd|BsmtQual_Gd', 'PavedDrive_Tencode|RoofStyle_Shed', 'Neighborhood_Edwards|Foundation_CBlock', 'GarageQual_Gd|HouseStyle_Tencode', 'ExterCond_TA|BldgType_Tencode', 'HalfBath|BldgType_TwnhsE', 'ExterQual_Gd|Neighborhood_Timber', 'Exterior2nd_BrkFace|HouseStyle_1.5Unf', 'RoofStyle_Gambrel|SaleType_CWD', 'TotalBsmtSF|Functional_Min1', 'LandContour_Lvl|Neighborhood_SWISU', 'Heating_GasA|GarageType_2Types', 'Neighborhood_NridgHt|OpenPorchSF', 'Exterior2nd_Tencode|GarageQual_Fa', 'GarageQual_Tencode|CentralAir_N', 'Alley_Tencode|GarageQual_Gd', '2ndFlrSF|Exterior1st_WdShing', 'Neighborhood_NPkVill|KitchenQual_Ex', 'GarageType_Attchd', 'Neighborhood_Mitchel|Foundation_CBlock', 'TotalBsmtSF|Condition1_Norm', 'Functional_Tencode|Functional_Maj2', 'GarageQual_Gd|MoSold', 'Condition1_Feedr|HouseStyle_1.5Fin', 'Exterior2nd_AsbShng|BsmtExposure_No', 'MiscFeature_Shed|MasVnrType_Tencode', 'Neighborhood_Veenker|BldgType_1Fam', 'BsmtFinType1_BLQ|ExterQual_Fa', 'BsmtQual_Tencode|GarageCond_Ex', 'ExterCond_TA|GarageType_Tencode', 'LandContour_Bnk|KitchenQual_TA', 'MasVnrType_BrkCmn|SaleCondition_Abnorml', 'ExterQual_Gd|BsmtFinType1_LwQ', 'MoSold|HouseStyle_2Story', 'BsmtFinType2_Tencode|BsmtCond_TA', 'Exterior1st_AsbShng|Neighborhood_Gilbert', 'MiscFeature_Othr|Neighborhood_Timber', 'GrLivArea|GarageType_BuiltIn', 'Alley_Tencode|KitchenQual_Tencode', 'LotConfig_Corner|BsmtCond_Tencode', 'Heating_GasW|BsmtQual_Fa', 'RoofStyle_Hip|GarageCond_Ex', 'Neighborhood_BrDale|Neighborhood_Edwards', 'Utilities_Tencode|BsmtHalfBath', 'Functional_Maj1|Functional_Mod', 'Exterior2nd_Brk Cmn|ExterQual_Fa', 'HouseStyle_1Story|BsmtUnfSF', 'BsmtQual_TA|KitchenQual_TA', 'RoofStyle_Gable|BsmtExposure_Av', 'BsmtExposure_Gd|KitchenQual_TA', 'BsmtFinType2_BLQ|BsmtFinType1_ALQ', 'PavedDrive_P|GarageCond_Ex', 'Exterior2nd_AsbShng|Neighborhood_Blmngtn', 'PavedDrive_N|Neighborhood_OldTown', 'RoofMatl_Tar&Grv|ExterCond_Tencode', 'Exterior1st_Stucco|LowQualFinSF', 'YrSold|BedroomAbvGr', 'Foundation_Stone|PavedDrive_Tencode', 'HalfBath|HouseStyle_2.5Unf', 'Condition1_PosN|MSZoning_Tencode', '3SsnPorch|KitchenQual_Fa', 'EnclosedPorch|LandSlope_Mod', 'MSZoning_FV|Exterior2nd_Wd Shng', 'GarageFinish_Tencode|MasVnrArea', 'KitchenAbvGr|Exterior2nd_Wd Shng', 'Neighborhood_NPkVill|LotConfig_Tencode', 'Neighborhood_Crawfor|GarageCond_Ex', 'Neighborhood_NoRidge|HouseStyle_SLvl', 'SaleCondition_Tencode|LotConfig_FR2', 'GarageCond_Tencode|3SsnPorch', 'Alley_Pave|Condition1_Norm', 'MiscVal|HouseStyle_SLvl', 'Exterior2nd_CmentBd|MasVnrType_BrkFace', 'RoofStyle_Flat|Functional_Mod', 'Electrical_FuseP|GarageType_2Types', 'LotShape_IR1|SaleCondition_Partial', 'BsmtFinSF2|BsmtExposure_Mn', 'Functional_Tencode|Neighborhood_BrkSide', 'BsmtFullBath|Functional_Min2', 'GarageCond_Po|LotConfig_CulDSac', 'HouseStyle_1Story|Street_Grvl', 'CentralAir_N|MasVnrType_Tencode', 'LotShape_Tencode|LotConfig_Corner', 'BsmtFinType2_GLQ|Condition1_Norm', 'MoSold|Exterior2nd_CmentBd', 'YrSold|Neighborhood_NAmes', 'ExterCond_TA|GarageCond_Fa', 'GarageArea', 'TotRmsAbvGrd|ScreenPorch', 'BsmtExposure_Av|Fence_MnWw', 'HeatingQC_TA|GarageFinish_Tencode', 'GarageType_Tencode|BsmtCond_Fa', 'YearRemodAdd|Utilities_AllPub', 'BsmtExposure_Mn|MasVnrType_Tencode', 'BsmtFullBath|BsmtFinType1_Rec', 'BsmtFinType1_Tencode|ExterQual_Tencode', 'Exterior2nd_AsbShng|Foundation_BrkTil', 'Exterior2nd_BrkFace|MSZoning_RM', 'Exterior2nd_Tencode|ExterQual_Fa', 'GarageCond_Po|LandSlope_Sev', 'BsmtFinType1_Tencode|GarageType_2Types', 'GarageFinish_Fin|LandContour_Lvl', 'Neighborhood_BrDale|MiscFeature_Tencode', 'GarageFinish_Fin|Neighborhood_SawyerW', 'Condition1_PosA|Condition1_PosN', 'RoofStyle_Flat|Neighborhood_NAmes', 'LandSlope_Gtl|Neighborhood_MeadowV', 'Heating_Grav|LandSlope_Sev', 'BsmtQual_TA|Condition1_Norm', 'BsmtFinType2_Unf|Exterior2nd_Wd Shng', 'Neighborhood_Edwards|PoolQC_Tencode', 'Utilities_Tencode|LotConfig_Inside', 'BsmtUnfSF|OverallCond', 'Exterior1st_AsbShng|SaleType_ConLw', 'BsmtFinType2_Unf|Neighborhood_IDOTRR', 'SaleType_Tencode|LotShape_IR3', 'HeatingQC_TA|GarageQual_TA', 'Exterior2nd_Stucco|SaleType_ConLI', 'GarageYrBlt|Exterior1st_Plywood', 'PavedDrive_Y|BsmtFullBath', 'Functional_Tencode|MiscVal', 'BedroomAbvGr|MiscFeature_Shed', 'GrLivArea|ExterQual_Fa', 'Electrical_SBrkr|Neighborhood_BrkSide', 'LotConfig_CulDSac|Exterior1st_VinylSd', 'Utilities_Tencode|PoolArea', 'BsmtFinType2_GLQ|Fireplaces', 'HouseStyle_SFoyer|GarageCond_Gd', 'RoofStyle_Tencode|BsmtCond_Po', 'Exterior2nd_AsbShng|HouseStyle_2Story', 'GarageType_Tencode|BldgType_TwnhsE', 'LotConfig_Corner|Neighborhood_NWAmes', 'GrLivArea|MasVnrType_BrkCmn', 'Neighborhood_BrDale|SaleCondition_Normal', 'OpenPorchSF|Neighborhood_Crawfor', 'HalfBath|ScreenPorch', 'YearBuilt|MasVnrType_BrkCmn', 'LotShape_IR2|ExterCond_Fa', 'MiscVal|BldgType_1Fam', 'YrSold|Electrical_FuseF', 'Exterior1st_BrkFace|Electrical_FuseP', 'Exterior2nd_BrkFace|HouseStyle_1.5Fin', 'Electrical_FuseA|SaleType_ConLI', 'BldgType_Duplex|Heating_GasA', 'HeatingQC_TA|Exterior1st_MetalSd', 'SaleType_ConLw|HouseStyle_1.5Unf', 'GarageFinish_Unf|ExterCond_Gd', 'BsmtFinType2_Tencode|Exterior2nd_Tencode', 'Electrical_FuseP|KitchenQual_Tencode', 'Exterior1st_Wd Sdng|Neighborhood_MeadowV', 'Foundation_Stone|Exterior2nd_Wd Sdng', 'Exterior2nd_Tencode|RoofMatl_WdShngl', 'Condition1_PosN|Street_Grvl', 'Exterior1st_Wd Sdng', 'LandContour_Bnk|PavedDrive_P', 'Exterior2nd_CmentBd|WoodDeckSF', 'Condition1_Tencode|Fence_MnPrv', 'LotShape_IR1|Electrical_Tencode', 'FireplaceQu_TA|BsmtCond_TA', 'MasVnrType_BrkCmn|Neighborhood_BrkSide', 'Heating_GasA|YearBuilt', 'LandContour_Tencode|MSZoning_FV', 'Electrical_FuseA|RoofMatl_WdShngl', 'MiscVal|BsmtQual_TA', 'LotShape_Tencode|WoodDeckSF', 'BsmtExposure_Av|Exterior2nd_HdBoard', 'Neighborhood_NoRidge|SaleType_ConLD', 'LandSlope_Tencode|3SsnPorch', 'Fence_GdPrv|BsmtCond_Tencode', 'SaleType_Tencode|HouseStyle_2Story', 'BsmtFinType1_Rec|HouseStyle_2Story', 'Alley_Tencode|GarageType_Tencode', 'BsmtQual_Tencode|LotArea', 'GarageCond_Tencode|Exterior1st_Tencode', 'Neighborhood_BrDale|Electrical_FuseP', 'Heating_GasW|MSZoning_RM', 'GarageCond_Tencode|PavedDrive_P', 'RoofMatl_Tar&Grv|Exterior1st_Wd Sdng', 'BsmtFinType1_Rec|BsmtCond_Fa', 'BsmtFinType2_Tencode|BsmtExposure_Av', 'RoofMatl_Tencode|Neighborhood_IDOTRR', 'SaleType_WD|GarageArea', 'Exterior2nd_Stone|LandSlope_Gtl', 'SaleCondition_Abnorml|Exterior2nd_Plywood', 'Exterior2nd_AsbShng|Neighborhood_Veenker', 'Exterior1st_BrkFace|Street_Pave', 'GarageCond_Po|KitchenQual_Fa', 'Condition1_Artery|RoofStyle_Hip', 'Foundation_Slab|GarageType_2Types', 'RoofStyle_Gable|Functional_Maj1', 'BsmtHalfBath|MSZoning_RM', 'RoofMatl_CompShg|GarageCond_Ex', 'LotArea|MasVnrType_BrkCmn', 'KitchenAbvGr|BsmtExposure_Mn', 'HouseStyle_1Story|Exterior1st_VinylSd', 'Exterior1st_HdBoard|HouseStyle_1.5Fin', 'Neighborhood_SawyerW|Exterior1st_Tencode', 'GarageType_Detchd|Exterior2nd_Brk Cmn', 'TotalBsmtSF|FireplaceQu_Po', 'BsmtFullBath|FireplaceQu_Ex', 'BsmtExposure_Av|BldgType_Tencode', 'Neighborhood_Timber|Utilities_AllPub', 'LotShape_IR2|MSZoning_C (all)', 'RoofMatl_Tar&Grv|BsmtFinType2_LwQ', 'PavedDrive_Tencode|GarageQual_Fa', 'LowQualFinSF|Neighborhood_NWAmes', 'Electrical_FuseF|1stFlrSF', 'BsmtExposure_Tencode|Exterior1st_Plywood', 'FireplaceQu_Po|Functional_Mod', 'RoofMatl_Tencode|BsmtCond_Fa', 'Exterior1st_AsbShng|Condition1_RRAn', 'Neighborhood_Sawyer|Neighborhood_IDOTRR', 'OpenPorchSF|ExterCond_Fa', 'GarageQual_Gd|Exterior2nd_VinylSd', 'LotShape_Tencode|GarageYrBlt', 'HalfBath|RoofStyle_Gable', 'FireplaceQu_Gd|MiscFeature_Gar2', 'Heating_Grav|Neighborhood_NAmes', 'Neighborhood_NridgHt|GarageQual_Po', 'Foundation_PConc|LotConfig_Corner', 'RoofStyle_Shed|BsmtFinType1_Unf', 'Neighborhood_Gilbert|RoofMatl_WdShngl', 'GarageFinish_Tencode|Exterior1st_Plywood', 'HeatingQC_TA|KitchenQual_Fa', 'SaleType_COD|MSZoning_Tencode', 'LandSlope_Mod|BsmtHalfBath', 'BsmtQual_Ex|HouseStyle_SLvl', 'Neighborhood_Tencode|HouseStyle_2Story', 'Exterior2nd_Tencode|GarageCond_Fa', 'OpenPorchSF|Foundation_Slab', 'BsmtCond_Fa|Exterior2nd_AsphShn', 'Fence_GdPrv|2ndFlrSF', 'LandContour_Bnk|Alley_Grvl', 'Neighborhood_CollgCr|Exterior1st_Tencode', 'LotShape_IR2|KitchenQual_Gd', 'BsmtQual_Fa|RoofStyle_Gable', 'RoofMatl_Tencode|GarageQual_TA', 'HouseStyle_SFoyer|RoofStyle_Shed', 'CentralAir_Y|PavedDrive_P', 'BsmtFinType1_Tencode|BsmtFinType1_BLQ', 'SaleType_ConLw|RoofMatl_CompShg', 'RoofStyle_Gambrel|Functional_Min1', 'Fireplaces|Neighborhood_Timber', 'RoofStyle_Gable|Condition1_Feedr', 'HouseStyle_2Story|LotConfig_Inside', 'Neighborhood_Mitchel|BsmtCond_Tencode', 'LandContour_Low|Foundation_Slab', 'Neighborhood_SWISU|BsmtCond_Gd', 'Exterior1st_HdBoard|GarageQual_Po', 'Exterior1st_HdBoard|MiscFeature_Othr', 'GarageCond_TA|MiscFeature_Shed', 'BsmtExposure_No|BsmtQual_Gd', '1stFlrSF|SaleCondition_Normal', 'ExterQual_Tencode|Utilities_AllPub', 'BldgType_Twnhs|Electrical_FuseA', 'Fence_Tencode|SaleType_WD', 'Condition1_Norm|Exterior2nd_Wd Shng', 'BsmtFinType1_Tencode|Electrical_FuseF', 'PavedDrive_Y|FireplaceQu_Ex', 'Alley_Pave|Neighborhood_StoneBr', 'Exterior1st_BrkComm|BsmtExposure_Gd', 'LotFrontage|GarageQual_Gd', 'SaleCondition_Tencode|GarageQual_Po', 'Neighborhood_NoRidge|KitchenQual_Fa', 'HeatingQC_TA|Exterior1st_VinylSd', 'MoSold|LotConfig_Inside', 'Neighborhood_Tencode|WoodDeckSF', 'BsmtQual_Ex|SaleCondition_Family', 'GarageType_Basment|SaleType_Oth', 'LotFrontage|BsmtCond_Fa', 'HouseStyle_Tencode|BsmtCond_TA', 'Neighborhood_CollgCr|GarageYrBlt', 'Neighborhood_BrDale|GarageQual_TA', 'KitchenQual_Ex|RoofMatl_Tar&Grv', 'Street_Tencode|LandContour_Lvl', 'Foundation_CBlock|HouseStyle_1.5Fin', 'TotRmsAbvGrd|BsmtExposure_No', 'BedroomAbvGr|Functional_Mod', 'Exterior1st_HdBoard|Neighborhood_NAmes', 'Functional_Mod|Exterior1st_BrkComm', 'SaleType_ConLI|MasVnrArea', 'LotConfig_FR2|GarageType_BuiltIn', 'LotShape_IR1|Condition1_PosN', 'YearRemodAdd|MSZoning_RM', 'LotShape_IR2|BsmtHalfBath', 'HeatingQC_Tencode|Condition1_RRAe', 'CentralAir_Y|ExterCond_Fa', 'Neighborhood_SWISU|ScreenPorch', 'Exterior1st_VinylSd|HouseStyle_1.5Fin', 'FireplaceQu_Tencode|Functional_Min1', 'MSZoning_FV|Exterior2nd_Plywood', 'BldgType_Twnhs|PavedDrive_Y', 'Neighborhood_Crawfor|HouseStyle_2Story', 'MiscFeature_Othr|GarageType_2Types', 'BsmtFinSF1|MSZoning_RL', 'Fireplaces|CentralAir_N', 'Exterior1st_AsbShng|Fence_GdPrv', 'Fence_GdPrv|BsmtExposure_Gd', 'SaleType_New|SaleCondition_Abnorml', 'LotArea|BsmtUnfSF', 'BsmtFinType1_BLQ|MoSold', 'LotShape_IR2|RoofStyle_Flat', 'Electrical_SBrkr|MasVnrType_BrkFace', 'BldgType_1Fam|Exterior1st_BrkComm', 'GarageQual_Po|BsmtExposure_Gd', 'RoofStyle_Gable|Fence_GdWo', 'Heating_GasW|Exterior2nd_CmentBd', 'GarageQual_TA|Condition1_RRAe', 'Exterior1st_AsbShng|BldgType_TwnhsE', 'Neighborhood_Blmngtn|Fence_GdWo', '3SsnPorch|GarageFinish_Tencode', 'BldgType_Duplex|Functional_Min1', 'GarageType_BuiltIn|MasVnrType_BrkCmn', 'BsmtFinType2_BLQ|3SsnPorch', 'Neighborhood_Veenker|BedroomAbvGr', 'BsmtExposure_Gd|BldgType_Tencode', 'Functional_Maj2|WoodDeckSF', 'Heating_GasA|LandSlope_Gtl', 'MiscFeature_Othr|BsmtCond_TA', 'BsmtQual_Fa|Exterior2nd_Wd Sdng', 'GarageCond_Tencode|Foundation_BrkTil', 'Exterior1st_BrkFace|Neighborhood_BrkSide', 'BsmtHalfBath|2ndFlrSF', 'LotShape_IR2|LandContour_Tencode', 'HeatingQC_Ex|Fence_GdWo', 'Neighborhood_NridgHt|Exterior2nd_Tencode', 'OverallQual|Exterior2nd_AsphShn', 'Exterior2nd_VinylSd|BsmtCond_Gd', 'BldgType_TwnhsE|Condition2_Norm', 'BsmtQual_TA|Exterior2nd_HdBoard', 'Electrical_Tencode|Neighborhood_Mitchel', 'YearRemodAdd|LotFrontage', 'RoofStyle_Hip|BsmtExposure_Gd', 'HeatingQC_Fa|Foundation_Tencode', 'MasVnrType_BrkCmn|Functional_Mod', 'YearBuilt|GarageQual_Po', 'BsmtFinType2_GLQ|Neighborhood_StoneBr', 'Exterior2nd_Plywood|Exterior1st_MetalSd', 'Exterior2nd_BrkFace|SaleCondition_Normal', 'LotShape_IR1|Condition1_RRAn', 'Neighborhood_SWISU|BsmtCond_TA', 'Neighborhood_NoRidge|OverallCond', 'Electrical_FuseA|PoolArea', 'Heating_GasW|PavedDrive_Y', 'OverallQual|HouseStyle_Tencode', 'Neighborhood_NoRidge|Exterior2nd_CmentBd', 'Functional_Typ|HouseStyle_1.5Unf', 'Fence_GdPrv|ExterQual_Ex', 'BsmtFinSF2|MiscFeature_Shed', 'Neighborhood_StoneBr|Exterior1st_Wd Sdng', 'CentralAir_Y|HouseStyle_SLvl', 'GarageType_Detchd|Electrical_Tencode', 'Heating_GasW|Fence_MnWw', 'Neighborhood_Gilbert|PoolArea', 'Alley_Pave|BsmtQual_Ex', 'KitchenQual_Ex|Neighborhood_NAmes', 'GarageQual_TA|PoolArea', 'HeatingQC_TA|Neighborhood_SawyerW', 'KitchenAbvGr|Neighborhood_BrDale', 'LandSlope_Sev|Neighborhood_Edwards', 'Utilities_Tencode|BsmtQual_Tencode', 'Fireplaces|Neighborhood_OldTown', 'LandContour_Low|BsmtFinType1_LwQ', 'Foundation_CBlock|GarageCond_Ex', 'ExterCond_Gd|Condition1_Norm', 'Neighborhood_NWAmes|GarageFinish_RFn', 'Neighborhood_Blmngtn|BsmtFinType2_Rec', 'YrSold|Condition1_Tencode', 'ExterCond_Tencode|SaleType_CWD', 'RoofStyle_Tencode|Fence_GdWo', 'GarageType_Detchd|Electrical_FuseA', 'LandContour_Tencode|Fence_GdWo', 'FireplaceQu_Ex|Exterior1st_Plywood', 'Functional_Typ|ExterCond_Tencode', 'BsmtUnfSF|Exterior2nd_Wd Sdng', 'PavedDrive_N|Exterior2nd_VinylSd', '3SsnPorch|WoodDeckSF', 'HouseStyle_1Story|LandContour_HLS', 'MasVnrType_BrkCmn|GarageFinish_RFn', 'HeatingQC_Fa|Heating_GasW', 'Fence_GdPrv|LotConfig_Inside', 'SaleType_Tencode|GarageType_2Types', 'KitchenAbvGr|HalfBath', 'GrLivArea|RoofMatl_CompShg', 'GarageCond_Po|GarageFinish_Tencode', 'LandContour_Low|LandSlope_Gtl', 'RoofMatl_Tencode|ExterQual_Ex', 'LotFrontage|SaleType_Tencode', 'TotalBsmtSF|PavedDrive_Tencode', 'BsmtFinType1_Rec|Foundation_CBlock', 'Condition1_PosN|TotRmsAbvGrd', 'BsmtHalfBath|Exterior2nd_VinylSd', 'BsmtFinType2_LwQ|OpenPorchSF', 'EnclosedPorch|GarageCond_Gd', 'Heating_GasA|Foundation_BrkTil', 'LotFrontage|HeatingQC_Ex', 'BldgType_Twnhs|KitchenQual_Fa', 'GarageQual_TA|BsmtFinType1_Unf', 'GarageCond_Po|MiscVal', 'ScreenPorch|ExterCond_Fa', 'Electrical_FuseA|CentralAir_Y', 'FullBath|Condition1_Tencode', 'BsmtFinSF2|GarageType_Tencode', 'BsmtCond_Tencode|BsmtFinType1_Unf', 'GarageQual_TA|FireplaceQu_TA', 'Exterior2nd_Wd Sdng|Street_Grvl', 'GarageCars|HouseStyle_1.5Fin', 'SaleCondition_Normal|HouseStyle_2Story', 'Neighborhood_NridgHt|Exterior2nd_VinylSd', 'YearRemodAdd|SaleType_WD', 'TotalBsmtSF|MSZoning_RH', 'LotFrontage|GarageType_2Types', '2ndFlrSF|Neighborhood_Gilbert', 'Exterior1st_AsbShng|GarageCond_Gd', 'Neighborhood_Edwards|3SsnPorch', 'RoofMatl_Tar&Grv|Condition1_Norm', 'GarageCond_Tencode|Exterior1st_WdShing', 'Exterior2nd_BrkFace|LandSlope_Tencode', 'Condition2_Tencode|BsmtCond_Tencode', 'HouseStyle_Tencode|SaleCondition_Abnorml', 'HeatingQC_TA|Electrical_SBrkr', 'FullBath|BsmtCond_Gd', 'GarageCond_Tencode|BsmtExposure_Mn', 'GarageType_Detchd|Neighborhood_Gilbert', 'Neighborhood_Blmngtn|Exterior1st_Stucco', 'GarageType_CarPort|ExterCond_Fa', 'OverallQual|MiscFeature_Shed', 'YrSold|BsmtFinType2_Unf', 'RoofStyle_Tencode|GarageFinish_RFn', 'LotArea|Fence_MnPrv', '2ndFlrSF|CentralAir_N', 'HeatingQC_Fa|SaleType_COD', 'MiscFeature_Othr|Functional_Mod', 'ExterCond_Gd|CentralAir_Tencode', 'ExterCond_TA|SaleCondition_Family', 'PavedDrive_N|HalfBath', 'GarageQual_Po|KitchenQual_TA', 'Electrical_FuseP|FullBath', 'RoofStyle_Tencode|GarageQual_Tencode', 'RoofStyle_Hip|RoofStyle_Tencode', 'Heating_GasA|LandSlope_Mod', 'Condition2_Artery|ScreenPorch', 'HeatingQC_Ex|BsmtCond_Fa', 'BsmtCond_Tencode|SaleType_CWD', 'SaleCondition_Alloca|MasVnrType_BrkCmn', 'Neighborhood_Gilbert|Exterior1st_WdShing', 'ExterCond_Tencode|ScreenPorch', 'Neighborhood_NoRidge|BsmtFinType2_Unf', 'GrLivArea|HeatingQC_Ex', 'Condition2_Norm|Utilities_AllPub', 'MSZoning_RH', 'BsmtExposure_Av|Utilities_AllPub', 'HouseStyle_SFoyer|BsmtFinType1_Rec', 'FireplaceQu_Gd|MiscFeature_Tencode', 'Exterior1st_HdBoard|BsmtCond_Tencode', 'HeatingQC_Ex|GarageQual_Fa', 'LotShape_IR2|BsmtFinType2_BLQ', 'LandContour_Tencode|Exterior2nd_Wd Shng', 'BsmtUnfSF|GarageFinish_RFn', 'Neighborhood_CollgCr|BsmtQual_Fa', 'Neighborhood_OldTown|Exterior2nd_Wd Sdng', 'HalfBath|Neighborhood_Gilbert', 'BsmtFinSF2|MasVnrType_Stone', 'KitchenQual_Gd|MasVnrArea', '3SsnPorch|Condition1_Feedr', 'MiscFeature_Othr|Exterior1st_Plywood', 'RoofStyle_Shed|BsmtFinType1_GLQ', 'BsmtFinType1_BLQ|GarageArea', 'KitchenQual_Fa|Neighborhood_SawyerW', 'ExterCond_TA|Foundation_Tencode', 'BsmtQual_Ex|OpenPorchSF', 'PavedDrive_N|RoofStyle_Hip', 'BsmtQual_Fa|SaleType_New', 'LotArea|Foundation_Tencode', 'HeatingQC_TA|KitchenQual_TA', 'Foundation_Tencode|Street_Grvl', 'Condition1_RRAe|MSZoning_Tencode', 'LotShape_Reg|2ndFlrSF', 'LandContour_Low|SaleType_Tencode', 'EnclosedPorch|BsmtCond_Fa', 'RoofStyle_Gambrel|Neighborhood_StoneBr', 'Foundation_Slab|Exterior1st_Wd Sdng', 'HouseStyle_1Story|BsmtFinType1_LwQ', 'Neighborhood_Somerst|ExterCond_Gd', 'LandSlope_Mod|KitchenQual_TA', 'BsmtHalfBath|Exterior1st_CemntBd', 'LotShape_IR1|Neighborhood_Veenker', 'LotShape_Tencode|ExterCond_Tencode', 'TotalBsmtSF|MiscFeature_Shed', 'Neighborhood_Veenker|GarageQual_Po', 'GarageType_Tencode|SaleCondition_Alloca', 'Street_Tencode|Exterior2nd_BrkFace', 'BsmtFinType1_ALQ|Neighborhood_Timber', 'Exterior1st_Stucco|Exterior2nd_Brk Cmn', 'HeatingQC_Ex|ExterQual_Ex', 'Exterior1st_BrkComm|Exterior2nd_Brk Cmn', 'HeatingQC_Ex|Neighborhood_Crawfor', 'BsmtQual_Fa|Street_Pave', 'LotShape_Tencode|Foundation_CBlock', 'BsmtExposure_Tencode|GarageFinish_RFn', 'SaleCondition_Family|PoolArea', 'GarageFinish_Unf|Electrical_FuseA', 'PoolArea|ExterQual_Tencode', 'Electrical_FuseA|Condition1_Tencode', 'HeatingQC_Ex|Exterior1st_Tencode', 'Electrical_FuseA|Heating_Tencode', 'FullBath|BsmtFinType1_LwQ', 'LotShape_IR2|Neighborhood_NAmes', 'GarageCond_Gd|HouseStyle_SLvl', 'LandContour_Lvl|SaleType_Oth', 'Foundation_CBlock|Condition1_RRAn', 'HeatingQC_Fa|Neighborhood_NAmes', 'PavedDrive_Y|BsmtFinType2_Unf', 'Heating_GasW|MSZoning_Tencode', 'MSZoning_C (all)|ExterQual_Tencode', 'LotShape_IR1|Condition2_Tencode', 'Foundation_PConc|Exterior1st_HdBoard', 'GarageQual_Gd|GarageFinish_RFn', 'GarageCond_Tencode|BsmtQual_Ex', 'MSZoning_RM|MSZoning_RL', 'Heating_Grav|SaleCondition_Abnorml', 'Exterior1st_BrkFace|ExterQual_Fa', 'BsmtFinType2_LwQ|MSSubClass', 'PavedDrive_Y|GarageCond_Fa', 'Neighborhood_ClearCr|SaleType_CWD', 'KitchenAbvGr|LotShape_IR1', 'Condition1_PosN|MSZoning_RM', 'RoofMatl_Tencode|Neighborhood_Edwards', 'Neighborhood_Gilbert|Foundation_Slab', 'GarageFinish_Fin|Exterior1st_CemntBd', '3SsnPorch|GarageQual_TA', 'SaleCondition_Alloca|ExterQual_Tencode', 'Exterior2nd_Tencode|Neighborhood_MeadowV', 'SaleType_New|ExterCond_Fa', 'BsmtFinType1_Rec|SaleType_CWD', 'Alley_Tencode|HalfBath', 'BldgType_Duplex|LandContour_Low', 'YearRemodAdd|Exterior1st_Stucco', 'MasVnrArea|Exterior2nd_AsphShn', 'Exterior1st_BrkComm|Neighborhood_IDOTRR', 'Neighborhood_BrkSide|Fence_MnPrv', 'GarageCond_Po|Fence_MnWw', 'Neighborhood_SawyerW|MSZoning_RL', 'HouseStyle_1Story|HouseStyle_2.5Unf', 'Foundation_Stone|SaleType_CWD', 'BsmtQual_TA|Exterior2nd_Plywood', 'SaleType_Tencode|GarageCond_Fa', 'WoodDeckSF|LotConfig_Inside', 'BsmtFinType2_LwQ|MasVnrType_Stone', 'LandContour_HLS|RoofMatl_WdShngl', 'Neighborhood_Mitchel', 'BsmtFinType2_Rec|MSZoning_RH', 'RoofMatl_WdShngl|MSZoning_RH', 'YearRemodAdd|GarageType_2Types', 'LotConfig_FR2|Condition1_PosN', 'Heating_Tencode|Neighborhood_NWAmes', 'GarageCond_Fa|Neighborhood_Timber', 'Foundation_Stone|KitchenQual_TA', 'GarageYrBlt|BldgType_Tencode', 'YrSold|Neighborhood_Edwards', 'BldgType_Tencode|BsmtExposure_No', 'BsmtFinType2_GLQ|BsmtCond_TA', 'BsmtHalfBath|MasVnrType_BrkCmn', 'GarageCars|Heating_GasW', 'FireplaceQu_Po|GarageArea', 'FireplaceQu_Fa|PoolArea', 'LandSlope_Tencode|BsmtCond_TA', 'LotShape_IR2|HouseStyle_2.5Unf', 'HeatingQC_Ex|CentralAir_Tencode', 'Exterior1st_HdBoard|GarageCond_Ex', 'Exterior2nd_CmentBd|MSZoning_FV', 'PavedDrive_Y|GarageYrBlt', 'Heating_Tencode|BsmtCond_Fa', 'FireplaceQu_Ex|Condition2_Norm', 'Exterior1st_BrkFace|GrLivArea', 'Neighborhood_NPkVill|RoofStyle_Gambrel', 'Neighborhood_StoneBr|BsmtExposure_Mn', 'GarageCond_TA|BedroomAbvGr', 'HeatingQC_Ex|ScreenPorch', 'LotConfig_CulDSac|RoofMatl_WdShngl', 'Exterior1st_BrkFace|Exterior2nd_Plywood', 'Exterior1st_CemntBd|Fence_MnPrv', 'FireplaceQu_Gd|BsmtFinSF1', 'Neighborhood_NAmes|Neighborhood_Gilbert', 'ExterCond_Gd|RoofStyle_Tencode', 'SaleType_ConLD|Functional_Min1', 'Alley_Pave|Functional_Maj1', 'SaleType_Tencode|SaleType_CWD', 'ExterCond_Gd|CentralAir_Y', 'LotShape_Tencode|Neighborhood_BrkSide', 'Foundation_Stone|HouseStyle_1.5Fin', 'LotShape_Reg|BldgType_1Fam', 'LotArea|LandContour_HLS', 'HeatingQC_TA|BsmtExposure_Mn', 'BsmtQual_Gd|ExterCond_Fa', 'SaleType_ConLI|Exterior1st_CemntBd', 'MSZoning_C (all)|LandSlope_Gtl', 'FireplaceQu_Tencode|Electrical_SBrkr', 'PavedDrive_N|BsmtFinSF2', 'Condition1_Feedr|Exterior2nd_AsphShn', 'SaleType_ConLw|Condition1_RRAe', 'ExterQual_Gd|SaleCondition_Partial', 'YearBuilt|MSZoning_RL', 'HeatingQC_Ex|HouseStyle_SLvl', 'LotShape_Tencode|EnclosedPorch', 'KitchenQual_Gd|LandSlope_Tencode', 'Condition1_Artery|RoofStyle_Shed', 'GarageQual_Po|Fence_MnWw', 'Exterior2nd_Stucco|Condition2_Artery', 'Exterior2nd_VinylSd|ScreenPorch', 'YrSold|Condition1_Feedr', 'RoofStyle_Shed|ExterQual_Tencode', 'RoofMatl_Tar&Grv|GarageCond_Ex', '3SsnPorch', 'SaleType_WD|MiscFeature_Tencode', 'Fence_Tencode|Condition1_Tencode', 'Neighborhood_SWISU|BsmtFinType1_LwQ', 'SaleType_WD|ExterCond_Tencode', 'Fireplaces|MSZoning_RL', 'FireplaceQu_TA|Exterior1st_Plywood', 'SaleType_ConLw|SaleCondition_Alloca', 'LandContour_Bnk|BsmtFullBath', 'RoofMatl_Tencode|LandSlope_Tencode', 'MiscFeature_Shed|2ndFlrSF', 'Neighborhood_ClearCr|BsmtFinSF2', 'Exterior1st_AsbShng|LowQualFinSF', 'GarageQual_TA|SaleCondition_Abnorml', 'RoofStyle_Hip|LotFrontage', 'Functional_Min1|SaleCondition_Partial', 'BsmtFinType2_Tencode|HouseStyle_SLvl', 'GarageCond_TA|Fence_Tencode', 'GarageFinish_Unf|RoofStyle_Flat', 'LandContour_Bnk|LandContour_Lvl', 'GarageFinish_Tencode|LotConfig_Inside', 'KitchenAbvGr|CentralAir_N', 'Exterior2nd_Stone|Neighborhood_CollgCr', 'Neighborhood_NAmes|ExterQual_Tencode', 'YearBuilt|LotConfig_Inside', 'GarageCond_Fa|Condition1_RRAn', 'GrLivArea|SaleType_New', 'FullBath|Foundation_Slab', 'BsmtFinType1_Rec|GarageArea', 'GarageCond_Tencode|SaleType_WD', 'Neighborhood_Blmngtn|BsmtFinSF1', 'ExterQual_TA|Neighborhood_NridgHt', 'GarageArea|Exterior1st_VinylSd', 'YearRemodAdd|FullBath', 'HouseStyle_Tencode|Condition1_RRAe', 'Exterior2nd_VinylSd|FireplaceQu_TA', 'BsmtFinType1_Rec|Neighborhood_Sawyer', 'PavedDrive_Tencode|RoofMatl_Tar&Grv', 'BldgType_Duplex|Fence_Tencode', 'Fence_GdPrv|Condition1_RRAe', 'Neighborhood_CollgCr|HouseStyle_SLvl', 'BsmtFinType2_ALQ|BsmtFinType1_GLQ', 'BsmtQual_Fa|LowQualFinSF', 'RoofStyle_Gable|Condition1_RRAe', 'GrLivArea|RoofStyle_Shed', 'YearBuilt|GarageCond_Gd', 'HeatingQC_Gd|SaleCondition_Normal', 'LotShape_Reg|GarageCond_Tencode', 'GarageQual_Fa|GarageFinish_RFn', 'Neighborhood_BrkSide|Foundation_Slab', 'GrLivArea|Neighborhood_Crawfor', 'Neighborhood_Somerst|Electrical_FuseP', 'HeatingQC_Gd|BsmtFinType1_ALQ', 'Neighborhood_Edwards|BsmtExposure_Av', 'Exterior2nd_Tencode|BsmtCond_Po', 'Neighborhood_ClearCr|BldgType_Tencode', 'Neighborhood_Somerst|GarageYrBlt', 'FireplaceQu_Po|GarageType_CarPort', 'SaleCondition_Tencode|Heating_Grav', 'LotShape_Reg|MSZoning_RM', 'KitchenQual_Gd|BsmtCond_Gd', 'BsmtQual_Fa|CentralAir_Y', 'HouseStyle_SFoyer|MSZoning_FV', 'BsmtFinType1_BLQ|LandContour_HLS', 'Electrical_SBrkr|Fence_GdPrv', 'PavedDrive_Y|LowQualFinSF', 'LandContour_Bnk|GarageCond_Gd', 'Exterior2nd_AsbShng|GarageCond_Gd', 'Condition2_Norm|RoofMatl_WdShngl', 'Functional_Maj2|ExterCond_Tencode', 'GarageType_Tencode|Neighborhood_Crawfor', 'Fireplaces|Neighborhood_StoneBr', 'LandContour_Tencode|SaleType_New', 'Condition2_Tencode|Neighborhood_IDOTRR', 'BldgType_1Fam', 'EnclosedPorch|PoolQC_Tencode', 'LandSlope_Mod|Foundation_Slab', 'BsmtExposure_Tencode|BldgType_Tencode', 'Functional_Typ|OpenPorchSF', 'BsmtFinType2_GLQ|Neighborhood_Tencode', 'BsmtFinType2_LwQ|BsmtCond_Tencode', 'Neighborhood_BrDale|GarageType_BuiltIn', 'GarageType_Detchd|Neighborhood_Crawfor', 'Exterior2nd_Tencode|BsmtCond_TA', 'BedroomAbvGr|GarageType_2Types', 'Exterior1st_BrkComm|Exterior1st_WdShing', 'RoofStyle_Gable|MasVnrType_BrkCmn', 'Exterior1st_WdShing|MasVnrType_Stone', 'LotConfig_Tencode|FireplaceQu_TA', 'MiscVal|LandContour_Bnk', 'LotConfig_FR2|LandContour_Bnk', 'Neighborhood_NridgHt|HouseStyle_2Story', 'Heating_Grav|MSZoning_RM', 'SaleCondition_Tencode|BsmtHalfBath', 'GarageCond_Tencode|ExterQual_Gd', 'Electrical_FuseA|SaleType_CWD', 'BsmtFinSF2|PavedDrive_P', 'FireplaceQu_TA|Exterior2nd_AsphShn', 'GrLivArea|1stFlrSF', 'FireplaceQu_Gd|Condition1_Feedr', 'Exterior2nd_Stone|OpenPorchSF', 'ExterCond_Gd|Condition1_RRAe', 'Exterior1st_CemntBd|BldgType_1Fam', 'Exterior2nd_AsbShng|Condition1_Tencode', 'YrSold|GarageCond_Gd', 'Alley_Tencode|Fence_GdPrv', 'YrSold|GarageCond_Tencode', 'HeatingQC_TA|CentralAir_Tencode', 'RoofMatl_CompShg|Neighborhood_SWISU', 'Heating_Grav|SaleCondition_Partial', 'Exterior2nd_Tencode|SaleCondition_Partial', 'GarageType_Detchd|GarageQual_Po', 'Neighborhood_BrDale|GarageType_2Types', 'Condition1_Artery|Heating_Tencode', 'SaleType_New|PavedDrive_P', 'BsmtQual_Fa|LotConfig_CulDSac', 'Exterior2nd_AsbShng|Exterior2nd_HdBoard', 'LotShape_IR1|BsmtFinType2_Rec', 'Foundation_CBlock|Neighborhood_IDOTRR', 'Neighborhood_OldTown|PoolQC_Tencode', 'BsmtQual_Tencode|ExterQual_Tencode', 'GarageFinish_Unf|GarageFinish_Fin', 'BsmtFinType2_ALQ|SaleType_Oth', 'Functional_Maj2|Condition1_RRAe', 'FireplaceQu_Fa|Exterior1st_CemntBd', 'Condition1_Artery|YearBuilt', 'Electrical_FuseA|Street_Pave', 'MiscVal|BsmtExposure_Gd', 'BsmtFinType1_Tencode|FireplaceQu_Fa', 'GarageQual_TA|BsmtExposure_Gd', 'BsmtFinType1_BLQ|Alley_Grvl', 'LotConfig_CulDSac|Fence_MnPrv', 'HeatingQC_Tencode|GarageType_CarPort', 'Utilities_Tencode|Utilities_AllPub', 'BsmtExposure_Tencode|Exterior1st_BrkFace', 'BedroomAbvGr|KitchenQual_Fa', 'GrLivArea|Condition1_Tencode', 'MiscFeature_Shed|ExterQual_Gd', 'PavedDrive_N|CentralAir_Y', 'BldgType_2fmCon|SaleCondition_Alloca', 'Neighborhood_ClearCr|Neighborhood_SawyerW', 'GarageCond_Gd|BsmtFinType2_Unf', 'BsmtFullBath|Functional_Mod', 'BsmtHalfBath|BsmtCond_Tencode', 'YearRemodAdd|Neighborhood_Gilbert', 'LotFrontage|HouseStyle_1.5Fin', 'LotConfig_Tencode|ExterQual_Tencode', 'SaleType_New|Exterior2nd_HdBoard', 'Exterior2nd_AsbShng|BldgType_1Fam', 'ExterQual_Fa|ExterCond_Fa', 'Heating_GasA|LandSlope_Sev', 'RoofStyle_Gable|Neighborhood_NWAmes', 'Exterior2nd_AsbShng|Neighborhood_CollgCr', 'MiscFeature_Othr|Neighborhood_Sawyer', 'Condition1_RRAe|Neighborhood_BrkSide', 'Exterior1st_CemntBd|Neighborhood_BrkSide', 'Neighborhood_Sawyer|CentralAir_Tencode', 'CentralAir_Tencode|Exterior1st_BrkComm', 'MSZoning_RM|BsmtFinType1_Unf', 'LotShape_IR1|BsmtCond_Fa', 'BsmtFinType2_Unf|HouseStyle_2Story', 'Neighborhood_StoneBr|BsmtFinSF1', 'LotShape_IR2|Functional_Tencode', 'BsmtFinType2_Tencode|GarageQual_Fa', 'Condition1_RRAe|SaleCondition_Partial', 'LotShape_IR1|HouseStyle_SLvl', 'Neighborhood_Veenker|GarageType_Basment', 'LotShape_IR2|FireplaceQu_TA', 'RoofStyle_Hip|LotConfig_Tencode', 'OpenPorchSF|Exterior2nd_HdBoard', 'Electrical_FuseA|Fence_Tencode', '2ndFlrSF|Exterior1st_Tencode', 'Condition1_RRAe|MSZoning_RH', 'LotConfig_Corner|BsmtCond_Gd', 'HouseStyle_SFoyer|Condition1_Feedr', 'HalfBath|BsmtExposure_Av', 'RoofStyle_Gable|BsmtCond_Po', 'BsmtQual_Ex|Neighborhood_Crawfor', 'FireplaceQu_Gd|HalfBath', 'Condition1_Artery|SaleType_Tencode', 'LandSlope_Sev|BsmtCond_Gd', 'Electrical_FuseP|Exterior2nd_MetalSd', 'GarageQual_TA|MiscFeature_Tencode', 'Neighborhood_BrDale|Neighborhood_Gilbert', '2ndFlrSF|SaleCondition_Partial', 'Neighborhood_NPkVill|Heating_GasA', 'Exterior2nd_AsbShng|RoofStyle_Gambrel', 'Alley_Tencode|GarageQual_Po', 'Neighborhood_NridgHt|Exterior2nd_MetalSd', 'Electrical_Tencode|SaleType_Tencode', 'MoSold|Neighborhood_StoneBr', 'GarageFinish_Fin|Foundation_Tencode', 'Electrical_SBrkr|Exterior2nd_AsphShn', 'BsmtUnfSF|BsmtCond_Fa', 'GarageFinish_Tencode|HouseStyle_2Story', 'LandContour_Bnk|Foundation_CBlock', 'Neighborhood_SawyerW|MasVnrType_BrkFace', 'Functional_Mod|Exterior2nd_AsphShn', 'BsmtFullBath|BsmtFinType1_LwQ', 'Neighborhood_ClearCr|BsmtFinType2_Rec', 'BsmtFinType1_LwQ|SaleCondition_Partial', 'PoolQC_Tencode|MasVnrType_BrkCmn', 'HeatingQC_Ex|Exterior2nd_CmentBd', 'BldgType_Twnhs|Exterior1st_Tencode', 'OverallQual|Exterior2nd_BrkFace', 'EnclosedPorch|Exterior1st_Plywood', 'RoofMatl_Tencode|MSZoning_Tencode', 'HeatingQC_Fa|LandSlope_Tencode', 'PavedDrive_N|Neighborhood_NoRidge', 'Fireplaces|Utilities_AllPub', 'YrSold|Alley_Pave', 'BsmtQual_Fa|LotConfig_Tencode', 'BldgType_2fmCon|MasVnrType_Tencode', 'SaleCondition_Family|BsmtExposure_No', 'GarageCond_TA|GarageCond_Tencode', 'YearRemodAdd|Neighborhood_Edwards', 'Exterior1st_HdBoard', 'Neighborhood_NoRidge|BsmtExposure_Av', 'LotConfig_Corner|CentralAir_Y', 'Exterior2nd_Stone|BsmtQual_Tencode', 'BsmtQual_Ex|Condition1_PosN', 'Neighborhood_Tencode|FireplaceQu_Ex', 'HeatingQC_Ex|Condition2_Norm', 'LotShape_IR1|MasVnrType_None', 'MiscVal|Neighborhood_Tencode', 'Foundation_BrkTil|LotConfig_Inside', 'Neighborhood_Crawfor|SaleCondition_Abnorml', 'EnclosedPorch|SaleType_ConLD', 'Exterior1st_CemntBd|LandSlope_Gtl', 'Neighborhood_Tencode|BsmtCond_TA', 'HeatingQC_Ex|GarageType_BuiltIn', 'Alley_Pave|YearBuilt', 'Neighborhood_OldTown|Utilities_AllPub', 'Neighborhood_NridgHt|BsmtExposure_Gd', 'Foundation_BrkTil|GarageCond_Gd', 'BldgType_2fmCon|Foundation_Stone', 'ExterCond_TA|PoolArea', 'LowQualFinSF|GarageYrBlt', 'HalfBath|SaleCondition_Abnorml', 'BedroomAbvGr|SaleCondition_Normal', 'Exterior2nd_Wd Sdng|MSZoning_RH', 'GarageCond_Ex|Neighborhood_Gilbert', 'Electrical_FuseF|Functional_Maj1', 'Neighborhood_NPkVill|RoofStyle_Flat', 'BsmtFinType2_GLQ|MoSold', 'GarageCond_Gd|Functional_Maj1', 'LotFrontage|MiscVal', 'SaleCondition_Alloca|Condition1_PosN', 'Exterior2nd_Brk Cmn|ExterCond_Fa', 'LotShape_Tencode|BsmtFinType1_LwQ', 'Exterior2nd_Tencode|CentralAir_Y', 'Condition1_Artery|MiscFeature_Gar2', 'GarageCond_Tencode|ExterCond_Gd', 'Neighborhood_Gilbert|HouseStyle_1.5Fin', 'BsmtFinType2_BLQ|Neighborhood_NWAmes', 'Foundation_BrkTil|HouseStyle_1.5Unf', 'BsmtQual_Fa|RoofStyle_Shed', 'Exterior2nd_Stone|LotShape_IR3', 'BldgType_2fmCon|BsmtCond_Fa', 'Neighborhood_NridgHt|FireplaceQu_Gd', 'BsmtFinSF2|BsmtFinType2_BLQ', 'SaleType_COD|Exterior2nd_Brk Cmn', 'Neighborhood_CollgCr|GarageType_Attchd', 'KitchenQual_Ex|HouseStyle_1.5Unf', 'RoofMatl_CompShg|Electrical_SBrkr', 'CentralAir_Y|BsmtQual_Gd', 'YearRemodAdd|YearBuilt', 'BsmtFinType1_BLQ|HalfBath', 'LandContour_Tencode|LandContour_Lvl', 'Fireplaces|Condition1_Feedr', 'Heating_Grav|RoofStyle_Shed', 'Heating_Tencode|ExterCond_Gd', 'BsmtFinType2_GLQ|Neighborhood_Edwards', 'GarageCond_Gd|FireplaceQu_Fa', 'MasVnrType_BrkCmn|BsmtUnfSF', 'Fence_Tencode|SaleType_New', 'Neighborhood_Sawyer|SaleType_COD', 'GarageCond_Po|PavedDrive_Y', 'YearRemodAdd|LandContour_Bnk', 'FireplaceQu_Fa|BldgType_TwnhsE', 'LotFrontage|Exterior2nd_AsphShn', '1stFlrSF|OpenPorchSF', 'FireplaceQu_Tencode|LotShape_IR2', 'TotalBsmtSF|GarageFinish_RFn', 'SaleCondition_Partial|GarageYrBlt', 'LandContour_Tencode|RoofStyle_Gable', 'Foundation_PConc|Neighborhood_Edwards', 'Condition1_RRAe|Exterior1st_Tencode', 'BsmtQual_Fa|Functional_Min1', 'Electrical_FuseP|Exterior1st_VinylSd', 'LotShape_IR2|SaleType_ConLD', 'LotShape_Tencode|RoofMatl_Tencode', 'Exterior2nd_BrkFace|SaleType_COD', 'SaleType_Oth|ExterCond_Fa', 'MiscFeature_Gar2|Utilities_AllPub', 'Neighborhood_NAmes|OverallCond', 'Condition1_PosA|RoofStyle_Gable', 'Foundation_BrkTil|Neighborhood_NWAmes', 'MSZoning_RM|BsmtCond_Fa', 'BsmtExposure_Gd|Neighborhood_BrkSide', 'RoofMatl_CompShg|Exterior2nd_VinylSd', 'Alley_Pave|SaleCondition_Abnorml', 'BsmtFinType1_Tencode|BsmtFinType1_ALQ', 'LotFrontage|LotConfig_FR2', 'BldgType_2fmCon|BsmtHalfBath', '3SsnPorch|Neighborhood_Sawyer', 'Exterior1st_Stucco|Neighborhood_Timber', 'Exterior2nd_Stone|MasVnrType_BrkCmn', 'KitchenQual_Tencode|MiscFeature_Shed', 'GrLivArea|Exterior1st_Wd Sdng', 'BsmtFinType1_BLQ|GarageQual_Gd', 'FireplaceQu_Tencode|Exterior1st_CemntBd', 'Street_Grvl|Alley_Grvl', 'Exterior2nd_Stone|Street_Grvl', 'Utilities_Tencode|GarageType_Attchd', 'PavedDrive_Y|GarageType_BuiltIn', 'Exterior1st_WdShing|Exterior1st_MetalSd', 'Exterior2nd_MetalSd|SaleType_CWD', 'LotFrontage|MSSubClass', 'Functional_Tencode|HeatingQC_Gd', 'Exterior1st_AsbShng|LandContour_Lvl', 'GarageType_Detchd|MasVnrType_BrkFace', 'BldgType_Tencode|SaleType_CWD', 'Fireplaces|MSZoning_FV', 'ExterQual_TA|Neighborhood_StoneBr', 'BsmtFinSF2|SaleCondition_Family', 'BsmtQual_Gd|WoodDeckSF', 'Street_Tencode|Exterior2nd_Plywood', 'MasVnrType_BrkCmn|Exterior1st_MetalSd', 'PavedDrive_N|BsmtCond_Fa', 'BsmtFinType1_Rec|HouseStyle_2.5Unf', 'Exterior1st_HdBoard|Exterior1st_MetalSd', 'GarageCars|Neighborhood_Mitchel', 'RoofMatl_Tar&Grv|Exterior2nd_CmentBd', 'BsmtCond_Po|ExterQual_Gd', 'BsmtFinType2_ALQ|Exterior2nd_Wd Sdng', 'LotConfig_Tencode|Neighborhood_StoneBr', 'Fireplaces|BsmtHalfBath', 'BsmtFinType1_BLQ|ScreenPorch', 'RoofStyle_Shed|RoofMatl_WdShngl', 'GarageQual_Gd|BsmtCond_TA', 'LandSlope_Mod|OpenPorchSF', 'Condition1_Artery|Fence_MnPrv', 'GarageCond_Tencode|BedroomAbvGr', 'KitchenQual_Gd|HouseStyle_1.5Unf', 'Exterior2nd_Stucco|BldgType_1Fam', 'Exterior1st_BrkFace|BsmtExposure_Gd', 'Exterior2nd_AsbShng|Exterior2nd_Wd Sdng', 'Utilities_Tencode|Neighborhood_NridgHt', 'KitchenQual_Gd|FireplaceQu_Fa', 'Neighborhood_Edwards|BsmtCond_Po', 'BsmtFinType1_Rec|Exterior2nd_Plywood', 'Neighborhood_Somerst|Condition2_Norm', 'LandContour_Lvl|BsmtFullBath', 'YrSold|RoofMatl_Tar&Grv', 'Neighborhood_OldTown|SaleCondition_Alloca', 'SaleCondition_Tencode|GarageType_CarPort', 'Alley_Tencode|MasVnrType_Tencode', 'BsmtQual_Tencode|YearBuilt', 'LotShape_IR1|BldgType_TwnhsE', 'Exterior2nd_Wd Sdng|WoodDeckSF', 'BsmtFinType1_Tencode|Exterior2nd_CmentBd', 'GarageFinish_Unf|Neighborhood_NPkVill', 'BldgType_Duplex|BsmtCond_TA', 'BsmtFinType1_Tencode|HalfBath', 'LandContour_HLS|HouseStyle_2.5Unf', 'HouseStyle_1.5Unf|BsmtFinType1_GLQ', 'LotArea|Condition2_Artery', 'GarageType_Detchd|LotConfig_Corner', 'BsmtUnfSF|PoolArea', 'HeatingQC_Fa|SaleCondition_Normal', 'Heating_Grav|BsmtFinType1_LwQ', 'Foundation_Tencode|GarageType_Basment', 'Exterior1st_AsbShng|PoolQC_Tencode', 'BsmtHalfBath|BsmtFinSF1', 'BldgType_Twnhs|LotShape_IR3', 'MiscVal|BsmtQual_Ex', 'GarageQual_Po|Neighborhood_Sawyer', 'GrLivArea|Utilities_AllPub', 'RoofMatl_Tencode|SaleCondition_Normal', 'PavedDrive_Tencode|HouseStyle_SLvl', 'HouseStyle_SFoyer|RoofStyle_Gambrel', 'Heating_Grav|LotArea', 'FireplaceQu_Fa|GarageArea', 'Exterior2nd_Stucco|LandContour_Tencode', 'KitchenAbvGr|BsmtFinType2_ALQ', 'Neighborhood_Edwards|PoolArea', 'Neighborhood_NridgHt|BsmtFinType2_Rec', '2ndFlrSF', 'Neighborhood_Tencode|LotConfig_CulDSac', 'SaleType_ConLI|MSZoning_RL', 'Neighborhood_Somerst|MoSold', 'BsmtHalfBath|FireplaceQu_TA', 'Neighborhood_Edwards|BsmtFullBath', 'Street_Tencode|FireplaceQu_Fa', 'Heating_Tencode|MSSubClass', 'Fence_GdPrv|GarageQual_Po', 'Neighborhood_IDOTRR|Fence_MnWw', 'Neighborhood_IDOTRR|Exterior2nd_Plywood', 'GarageType_BuiltIn|Exterior2nd_Brk Cmn', 'BsmtExposure_Gd|HouseStyle_1.5Fin', 'FireplaceQu_Tencode|Exterior2nd_MetalSd', 'Exterior1st_BrkFace|Neighborhood_BrDale', 'Neighborhood_ClearCr|BsmtUnfSF', 'Neighborhood_Mitchel|Exterior2nd_MetalSd', 'BsmtQual_Ex|ScreenPorch', 'Exterior2nd_BrkFace|GarageCond_Tencode', 'YrSold|Condition2_Norm', 'Neighborhood_CollgCr|LandSlope_Gtl', 'Exterior1st_VinylSd|MasVnrType_Stone', 'YearBuilt|Condition1_PosN', 'BsmtFinType1_Tencode|BsmtFinSF1', 'MasVnrType_BrkFace|Exterior2nd_Wd Shng', 'LandContour_Tencode|Foundation_Slab', 'Functional_Typ|Fence_Tencode', '3SsnPorch|Neighborhood_BrkSide', 'RoofStyle_Shed|ExterQual_Gd', 'Functional_Typ|GarageQual_TA', 'PoolArea|LotShape_IR3', 'Alley_Tencode|WoodDeckSF', 'SaleType_COD|Condition2_Norm', 'Electrical_FuseP|BsmtFinType1_ALQ', 'FireplaceQu_Ex|BsmtCond_Po', 'RoofMatl_Tencode|Functional_Tencode', 'GarageType_BuiltIn|Neighborhood_IDOTRR', 'GarageQual_Fa|ExterQual_Ex', 'OpenPorchSF|Neighborhood_IDOTRR', 'Fireplaces|ExterCond_Gd', 'Neighborhood_CollgCr|BsmtQual_Ex', 'Fireplaces|BsmtUnfSF', 'ExterQual_Ex|GarageCond_Ex', 'TotRmsAbvGrd|BsmtFinType1_GLQ', 'BsmtFinType2_Tencode|ScreenPorch', 'Exterior2nd_BrkFace|Neighborhood_Edwards', 'GarageFinish_Tencode|GarageQual_Po', 'Heating_Tencode|GarageQual_Fa', 'HalfBath|MiscFeature_Shed', 'BsmtFinType1_BLQ|Exterior1st_VinylSd', 'KitchenQual_Gd|RoofMatl_WdShngl', 'BsmtFinType2_Tencode|GarageFinish_Fin', 'SaleType_New|Functional_Min2', 'Heating_GasA|BsmtExposure_Gd', 'BsmtFinType1_Rec|Neighborhood_IDOTRR', 'RoofStyle_Shed|BsmtCond_Gd', 'Neighborhood_IDOTRR|GarageType_2Types', 'BsmtQual_Tencode|Exterior2nd_Brk Cmn', 'Neighborhood_Blmngtn|BsmtCond_Gd', 'BsmtFullBath|2ndFlrSF', 'Alley_Pave|GarageFinish_Fin', 'SaleCondition_Family|LotConfig_Tencode', 'Neighborhood_CollgCr|LotConfig_FR2', 'Electrical_FuseP|Neighborhood_Crawfor', 'Exterior1st_Tencode|LotConfig_Inside', 'SaleCondition_Family|MSZoning_C (all)', 'LandContour_Tencode|BsmtCond_TA', 'FireplaceQu_Fa|KitchenQual_Fa', 'BsmtFinSF2|Neighborhood_StoneBr', 'HouseStyle_1Story|RoofStyle_Gable', 'OverallQual|BsmtHalfBath', 'RoofStyle_Flat|SaleType_ConLI', 'LandContour_HLS|GarageQual_Fa', 'RoofStyle_Gable|GarageFinish_RFn', 'Condition2_Norm|Fence_MnWw', 'Exterior1st_HdBoard|LotConfig_Tencode', 'SaleType_COD|BldgType_1Fam', 'Exterior1st_BrkFace|Exterior2nd_AsphShn', 'KitchenQual_Tencode|GarageArea', 'BedroomAbvGr|BsmtFinType2_Unf', 'RoofMatl_WdShngl|HouseStyle_2Story', 'PavedDrive_Tencode|BsmtFinType2_Rec', 'Neighborhood_SWISU|Alley_Grvl', 'Neighborhood_Mitchel|BsmtCond_TA', 'Neighborhood_CollgCr|MasVnrType_Tencode', 'HouseStyle_1.5Unf|BsmtFullBath', 'CentralAir_Y|FireplaceQu_TA', 'HeatingQC_Fa|KitchenQual_TA', 'BldgType_1Fam|MSZoning_RH', 'ExterCond_TA|Neighborhood_NoRidge', 'Exterior1st_HdBoard|OpenPorchSF', 'Neighborhood_Mitchel|Exterior1st_WdShing', 'SaleCondition_Family|TotRmsAbvGrd', 'BsmtQual_Ex|RoofMatl_Tar&Grv', 'Neighborhood_CollgCr|Exterior1st_VinylSd', 'RoofMatl_Tar&Grv|Street_Grvl', 'MSZoning_RM|SaleType_COD', 'FireplaceQu_Gd|Exterior2nd_MetalSd', 'Electrical_FuseA|MasVnrType_Tencode', 'GarageQual_Gd|Exterior2nd_Plywood', 'Neighborhood_NridgHt|Fence_Tencode', 'SaleType_COD|ExterQual_Fa', 'BsmtExposure_Tencode|ExterQual_Tencode', 'Exterior1st_HdBoard|LotConfig_Inside', 'FireplaceQu_Gd|2ndFlrSF', 'HouseStyle_1Story|Neighborhood_StoneBr', 'RoofStyle_Flat|Heating_Tencode', 'Foundation_Stone|Electrical_FuseF', 'Neighborhood_Veenker|GarageQual_Fa', 'YearBuilt|Neighborhood_SawyerW', 'LandContour_HLS|MSZoning_FV', 'Utilities_Tencode|MSZoning_FV', 'Neighborhood_NridgHt|LandSlope_Sev', 'YearBuilt|Neighborhood_Gilbert', 'Fireplaces|Exterior1st_Tencode', 'LotShape_IR2|MasVnrType_BrkCmn', 'Electrical_FuseA|Neighborhood_SWISU', 'Heating_GasW|FireplaceQu_TA', 'Condition1_Tencode|BsmtExposure_No', 'Neighborhood_Edwards|OpenPorchSF', 'RoofMatl_WdShngl|Exterior2nd_HdBoard', 'HeatingQC_Ex|ExterQual_Gd', 'Condition1_PosN|HouseStyle_2.5Unf', 'BldgType_Twnhs|GarageFinish_Fin', 'SaleType_Tencode|Condition1_Norm', 'Neighborhood_SWISU|HalfBath', 'EnclosedPorch|Foundation_PConc', 'OverallQual|HalfBath', 'PoolQC_Tencode|Exterior2nd_Wd Shng', 'LotShape_IR2', 'MoSold|BsmtExposure_Mn', 'Alley_Tencode|LotConfig_Corner', 'BsmtUnfSF|LotConfig_Inside', 'MasVnrType_BrkCmn|MSZoning_RL', 'BsmtFinType2_BLQ|MasVnrType_None', 'OverallCond|Exterior1st_WdShing', 'OverallQual|BsmtExposure_Mn', 'Exterior2nd_MetalSd|BsmtExposure_Mn', 'BsmtExposure_Tencode|BsmtFinType1_LwQ', 'BsmtFinSF2|RoofStyle_Tencode', 'SaleType_ConLD|Condition1_Norm', 'Fence_Tencode|Foundation_Slab', 'LotConfig_Corner|LandSlope_Mod', 'LandContour_HLS|Neighborhood_Sawyer', 'RoofStyle_Hip|SaleType_Tencode', 'BsmtFinType1_Tencode|SaleType_ConLw', 'OverallQual|KitchenQual_Tencode', 'BsmtFinType2_GLQ|RoofMatl_WdShngl', 'LotShape_IR1|Exterior2nd_Tencode', 'Neighborhood_BrDale|BsmtFinType1_Tencode', 'LotFrontage|BsmtCond_TA', 'LandContour_HLS|Functional_Mod', 'BsmtExposure_Tencode|HalfBath', 'Exterior2nd_VinylSd|Exterior1st_CemntBd', 'ExterQual_TA|RoofMatl_WdShngl', 'Functional_Tencode|Exterior1st_MetalSd', 'MiscFeature_Othr|CentralAir_N', 'TotRmsAbvGrd|PoolArea', 'Neighborhood_NAmes|LotConfig_Inside', 'LandContour_HLS|Condition2_Tencode', 'Neighborhood_Crawfor|Exterior2nd_Brk Cmn', 'Condition2_Tencode|MSZoning_RH', 'Neighborhood_BrkSide|ExterCond_Fa', 'Fence_GdPrv|GarageQual_Fa', 'HeatingQC_Tencode|Exterior2nd_HdBoard', 'Functional_Typ|WoodDeckSF', 'BsmtFinType2_Tencode|Functional_Maj2', 'CentralAir_Y|Exterior1st_BrkComm', 'HouseStyle_SFoyer|PavedDrive_P', 'SaleType_Tencode|Condition1_PosA', 'Neighborhood_NWAmes|MiscFeature_Tencode', 'Exterior2nd_CmentBd|BsmtFinType2_Unf', 'Exterior2nd_Wd Shng|Exterior2nd_AsphShn', 'FireplaceQu_Ex|CentralAir_Y', 'Exterior2nd_Stone|GarageFinish_RFn', 'LotShape_Tencode|MSZoning_RL', 'MSZoning_RH|GarageType_2Types', 'BldgType_Twnhs|Exterior2nd_Wd Shng', 'FireplaceQu_Tencode|BsmtFinType2_ALQ', 'RoofMatl_Tencode|GarageCond_Ex', 'Heating_GasA|Neighborhood_OldTown', 'GarageType_BuiltIn|BsmtUnfSF', 'BsmtFinType2_LwQ|BldgType_TwnhsE', 'Foundation_PConc|BsmtFinType2_BLQ', 'LotConfig_Corner|Electrical_SBrkr', 'LotArea|Exterior2nd_MetalSd', 'Neighborhood_ClearCr|Fence_Tencode', 'EnclosedPorch|GarageType_Attchd', 'LandContour_Low|BsmtFinType2_Unf', 'KitchenQual_Ex|MSZoning_RL', 'HouseStyle_1Story|Heating_Tencode', 'MSZoning_RM|HouseStyle_2.5Unf', 'Exterior1st_BrkFace|YearBuilt', 'BsmtFullBath|LotConfig_Inside', 'SaleType_ConLD|OverallCond', 'Street_Grvl|Neighborhood_MeadowV', 'LandContour_Lvl|Condition1_PosN', 'KitchenQual_Gd|HouseStyle_1.5Fin', 'Alley_Pave|Exterior2nd_VinylSd', 'Electrical_FuseP|MiscVal', 'Exterior1st_Stucco|MasVnrArea', 'LotShape_Reg|Exterior2nd_HdBoard', 'LotShape_IR3|Street_Pave', 'Electrical_FuseP|SaleType_ConLD', 'Alley_Pave|Electrical_SBrkr', 'BsmtFinType1_Rec|MasVnrType_Stone', 'PavedDrive_N|KitchenQual_Ex', 'BldgType_2fmCon|Exterior1st_Stucco', 'GarageCond_Fa|MSZoning_RL', 'Exterior2nd_Tencode|BsmtQual_Ex', 'BsmtFinType2_ALQ|PoolArea', 'KitchenQual_Gd|Heating_Tencode', 'Alley_Pave|SaleCondition_Normal', 'Condition1_Norm|Fence_MnPrv', 'FireplaceQu_Tencode|Fence_MnWw', 'Neighborhood_NWAmes|MasVnrArea', 'Foundation_CBlock|Alley_Grvl', 'ExterCond_Gd|Neighborhood_Crawfor', 'Neighborhood_NridgHt|ExterQual_Tencode', 'Neighborhood_Blmngtn|GarageQual_Gd', 'MoSold|ExterQual_Ex', 'HouseStyle_Tencode|SaleCondition_Alloca', 'CentralAir_Tencode|Foundation_Slab', 'HeatingQC_Fa|MiscFeature_Gar2', 'FullBath|WoodDeckSF', 'GarageType_BuiltIn|Functional_Min1', 'BsmtFinType1_Rec|MasVnrType_None', 'LotShape_Reg|ExterCond_TA', 'Electrical_SBrkr|GarageQual_Tencode', 'Fence_GdPrv|HouseStyle_2Story', 'RoofStyle_Gable|RoofMatl_WdShngl', 'Exterior2nd_VinylSd', 'LandSlope_Sev|BsmtExposure_Av', 'Foundation_BrkTil|HouseStyle_2Story', 'EnclosedPorch|MSZoning_RM', 'LotFrontage|ExterQual_Tencode', 'SaleType_ConLD|Fence_GdWo', 'Neighborhood_ClearCr|LandContour_HLS', 'BsmtFullBath|Functional_Maj1', 'Condition1_Tencode|Exterior2nd_HdBoard', 'BsmtQual_TA|Functional_Maj1', 'LotConfig_Corner|1stFlrSF', 'Heating_Grav|GarageYrBlt', 'FireplaceQu_Gd|BldgType_1Fam', 'BsmtFinType1_Tencode|SaleType_ConLD', 'FireplaceQu_Tencode|KitchenQual_TA', 'SaleCondition_Partial|Condition1_RRAn', 'LandContour_Lvl|BsmtFinSF1', 'GarageCond_Po|HouseStyle_SFoyer', 'LotConfig_FR2|Exterior1st_BrkComm', 'Neighborhood_Blmngtn|RoofStyle_Shed', 'LandContour_HLS|MiscFeature_Tencode', 'SaleType_ConLD|Fence_MnPrv', 'Heating_Tencode|RoofStyle_Tencode', 'GarageFinish_Unf|RoofStyle_Gable', 'Exterior2nd_BrkFace|BsmtQual_Gd', 'ExterQual_TA|MiscVal', 'LandSlope_Tencode|1stFlrSF', 'SaleCondition_Tencode|HeatingQC_Tencode', 'BsmtFinType2_GLQ|CentralAir_Tencode', 'Exterior1st_WdShing|MasVnrType_Tencode', 'Street_Tencode|PoolQC_Tencode', 'BsmtExposure_Tencode|GarageQual_Gd', 'RoofMatl_CompShg|SaleType_COD', 'GrLivArea|BsmtFinType1_Rec', 'RoofStyle_Gable|BldgType_TwnhsE', 'FireplaceQu_TA|MSZoning_RL', 'Exterior1st_AsbShng|HouseStyle_1.5Unf', 'Heating_GasA|BsmtHalfBath', 'BldgType_2fmCon|MiscFeature_Othr', 'YearRemodAdd|GarageCond_TA', 'BldgType_Duplex|LowQualFinSF', 'Alley_Pave|OverallCond', 'Exterior2nd_Stone|RoofMatl_CompShg', 'Neighborhood_Edwards|MasVnrType_None', 'HouseStyle_Tencode|BsmtFinType1_ALQ', 'BsmtFinType2_GLQ|Neighborhood_BrkSide', 'BedroomAbvGr|BsmtUnfSF', 'HeatingQC_Gd|Fence_MnWw', 'Neighborhood_BrDale|LandContour_HLS', 'Exterior2nd_Wd Sdng|CentralAir_Tencode', 'LotShape_Tencode|Neighborhood_SWISU', 'PavedDrive_Y|BsmtFinType1_Unf', 'Foundation_BrkTil|Heating_Tencode', 'LotShape_IR2|MSZoning_RM', 'BsmtFinType1_BLQ|GarageQual_Po', 'Neighborhood_NoRidge|SaleType_Tencode', '1stFlrSF|GarageType_2Types', 'GarageYrBlt|Functional_Min2', 'GarageCond_Po|Neighborhood_NAmes', 'GarageQual_Gd|SaleType_ConLD', 'Neighborhood_Blmngtn|LotArea', 'LandSlope_Mod|CentralAir_Y', 'Exterior2nd_MetalSd|Fence_MnPrv', 'Alley_Tencode|BsmtFinType2_Unf', 'BsmtFinType2_GLQ|KitchenQual_Tencode', 'BldgType_Duplex|HouseStyle_SLvl', 'Neighborhood_NridgHt|Exterior1st_VinylSd', 'HeatingQC_TA|OpenPorchSF', 'LandContour_Tencode|Exterior2nd_HdBoard', 'Foundation_BrkTil|Functional_Maj2', 'Neighborhood_BrDale|MSZoning_RM', 'RoofMatl_WdShngl|Street_Pave', 'SaleCondition_Alloca|SaleType_COD', 'Neighborhood_SWISU|BsmtFinType2_Rec', 'Condition1_PosA|Fence_MnWw', 'GarageQual_TA|LotConfig_Tencode', 'BsmtFinType1_ALQ|ExterQual_Gd', 'Fence_Tencode|BsmtCond_TA', 'HouseStyle_SFoyer|Street_Pave', 'ScreenPorch|KitchenQual_TA', 'Functional_Maj2|Neighborhood_StoneBr', 'GarageType_Attchd|BsmtExposure_No', 'Alley_Pave|Exterior2nd_HdBoard', 'Neighborhood_NoRidge|Neighborhood_OldTown', 'BsmtFinType2_Tencode|Heating_GasW', 'BsmtFullBath|Utilities_AllPub', 'BldgType_Duplex|Condition1_Tencode', 'LotShape_Reg|LotConfig_Tencode', 'Neighborhood_Crawfor|LotShape_IR3', 'GarageType_Tencode|Fence_GdPrv', 'SaleCondition_Normal|Neighborhood_MeadowV', 'Electrical_FuseF|LowQualFinSF', 'Neighborhood_ClearCr|Neighborhood_SWISU', 'BsmtExposure_Av|PoolArea', 'Condition1_Artery|CentralAir_Y', 'MiscFeature_Othr|BsmtFinType2_BLQ', 'Condition1_PosN|BsmtCond_TA', 'YearRemodAdd|Alley_Grvl', 'Neighborhood_NridgHt|RoofMatl_Tar&Grv', 'GarageCond_Fa|GarageType_Attchd', 'BsmtFinSF1|Fence_MnWw', 'LotConfig_CulDSac|ExterQual_Ex', 'Alley_Tencode|Foundation_BrkTil', 'Neighborhood_StoneBr|BsmtCond_Fa', 'BsmtFinType1_BLQ|MasVnrType_Stone', 'OverallQual|ExterQual_Tencode', 'YrSold|Neighborhood_Mitchel', 'BsmtFinType2_Rec|Exterior1st_BrkComm', 'LotArea|BsmtFinType1_LwQ', 'BsmtQual_Fa|BsmtFinType2_Unf', 'GarageType_Basment|ExterQual_Tencode', 'BsmtFinType1_Rec|RoofStyle_Gable', 'Neighborhood_ClearCr|Condition1_PosN', 'BsmtFinType2_GLQ|Street_Pave', 'EnclosedPorch|GarageFinish_Tencode', 'Electrical_FuseP|Condition1_Feedr', 'BsmtFullBath|CentralAir_Y', 'Exterior2nd_CmentBd|Neighborhood_IDOTRR', 'Neighborhood_NridgHt|Neighborhood_Blmngtn', 'SaleType_WD|BldgType_TwnhsE', 'MiscFeature_Othr|BsmtUnfSF', 'Condition2_Tencode|RoofStyle_Tencode', 'HalfBath|BsmtFinType1_Unf', 'YrSold|HouseStyle_1.5Fin', 'BsmtUnfSF|Functional_Min2', 'GarageCars|Neighborhood_Veenker', 'HalfBath|TotRmsAbvGrd', 'YrSold|Functional_Maj2', 'HouseStyle_Tencode|Neighborhood_SawyerW', 'Neighborhood_SWISU|Condition1_PosN', 'ExterQual_TA|GarageType_CarPort', 'Exterior1st_BrkFace|GarageType_2Types', 'Functional_Tencode|Neighborhood_SWISU', 'BsmtQual_TA|SaleCondition_Alloca', 'Functional_Min1|Neighborhood_StoneBr', 'PavedDrive_Tencode|SaleType_Oth', 'BsmtUnfSF|BsmtExposure_Gd', 'Exterior2nd_Stucco|BsmtFullBath', 'RoofStyle_Hip|HouseStyle_2.5Unf', 'TotalBsmtSF|Condition1_Tencode', 'GarageCond_Po|LandContour_Bnk', 'GarageType_CarPort|2ndFlrSF', 'HouseStyle_Tencode|Exterior1st_WdShing', 'BsmtFinType1_Rec|RoofStyle_Gambrel', 'HouseStyle_SFoyer|ExterCond_Tencode', 'RoofMatl_Tar&Grv|GarageYrBlt', 'FireplaceQu_Po|ExterQual_Gd', 'BsmtFinType2_Tencode|BsmtFinType1_LwQ', 'BsmtHalfBath|Neighborhood_StoneBr', 'Neighborhood_NridgHt|HeatingQC_Fa', 'Foundation_BrkTil|SaleType_Tencode', 'BsmtUnfSF|Neighborhood_BrkSide', 'GrLivArea|SaleType_ConLI', 'Neighborhood_NAmes|OpenPorchSF', 'Condition2_Tencode|Condition1_RRAe', 'ExterCond_Fa|LotConfig_Inside', 'SaleCondition_Tencode|Electrical_FuseP', 'BsmtFinType2_GLQ|Exterior2nd_CmentBd', 'ScreenPorch|BsmtCond_TA', 'BldgType_Duplex|BsmtFinType1_ALQ', 'GarageFinish_Fin|Exterior1st_WdShing', 'FullBath|Exterior1st_Stucco', 'Neighborhood_Gilbert|GarageYrBlt', 'BsmtExposure_Av|Exterior2nd_Plywood', 'Exterior1st_CemntBd|Neighborhood_StoneBr', 'LandContour_HLS|Neighborhood_Crawfor', 'PoolQC_Tencode|LotConfig_Inside', 'LandContour_HLS|GarageFinish_Tencode', 'BsmtFinType1_Rec|Fence_GdWo', 'BsmtFinType2_ALQ|BsmtFinType2_Unf', 'Foundation_PConc|Neighborhood_OldTown', 'Exterior1st_BrkFace|Neighborhood_NridgHt', 'FullBath|Street_Pave', 'BsmtHalfBath|GarageYrBlt', 'KitchenQual_Tencode|Functional_Maj1', 'Utilities_Tencode|Electrical_Tencode', 'Neighborhood_NWAmes|Exterior1st_VinylSd', 'Neighborhood_NoRidge|RoofStyle_Shed', 'HouseStyle_Tencode|Condition1_Tencode', 'RoofMatl_Tar&Grv|SaleCondition_Normal', 'YearRemodAdd|SaleCondition_Abnorml', 'MSZoning_RL|Foundation_Slab', 'RoofStyle_Flat|MSZoning_RL', 'BsmtCond_Tencode|Exterior1st_WdShing', 'BsmtFinType2_Tencode|Exterior1st_MetalSd', 'Neighborhood_BrDale|BedroomAbvGr', 'BsmtFinType1_Rec|ExterQual_Tencode', 'Foundation_Stone|BsmtFinType2_ALQ', 'BsmtFinType2_ALQ|HouseStyle_1.5Fin', 'GarageQual_TA|Condition2_Norm', 'KitchenQual_Tencode|SaleCondition_Normal', 'GarageFinish_RFn|Neighborhood_IDOTRR', 'GarageType_Detchd|HeatingQC_Tencode', 'Condition1_Artery|Utilities_AllPub', 'FireplaceQu_Ex|BldgType_1Fam', 'Neighborhood_CollgCr|SaleType_ConLw', 'Condition1_Artery|Alley_Tencode', 'ExterQual_Tencode|Condition2_Norm', 'HeatingQC_Ex|Exterior2nd_Wd Sdng', 'ExterQual_TA|ExterCond_Tencode', 'GarageQual_TA|Functional_Maj1', 'Condition1_PosA|BldgType_TwnhsE', 'GarageFinish_Unf|Electrical_FuseP', 'Neighborhood_NridgHt|Exterior2nd_Wd Sdng', 'BsmtFinType2_ALQ|BsmtCond_Po', 'Neighborhood_Blmngtn|Functional_Maj2', 'BsmtUnfSF|BsmtExposure_Mn', 'GrLivArea|Functional_Typ', 'BsmtExposure_Gd|Street_Pave', 'Neighborhood_Somerst|BldgType_TwnhsE', 'HeatingQC_Fa|BsmtFinType1_GLQ', 'BsmtFinType2_Tencode|GarageYrBlt', 'BedroomAbvGr|BsmtCond_Gd', 'Exterior1st_BrkFace|Street_Tencode', 'LandContour_Bnk|GarageFinish_Tencode', 'GarageQual_Fa|WoodDeckSF', 'CentralAir_Y|KitchenQual_TA', 'YearBuilt|Condition1_RRAn', 'BsmtFinType2_ALQ|ExterQual_Gd', 'Foundation_Tencode|Neighborhood_Crawfor', 'KitchenQual_Gd|GarageFinish_Tencode', 'Exterior2nd_AsbShng|SaleType_WD', 'GarageCars|Exterior2nd_CmentBd', 'BldgType_TwnhsE|Utilities_AllPub', 'Exterior2nd_Tencode|LandSlope_Gtl', 'BsmtFinType2_GLQ|HouseStyle_Tencode', 'Neighborhood_Mitchel|GarageType_Attchd', 'ExterCond_TA|Exterior2nd_Brk Cmn', 'GarageFinish_Unf|ExterCond_Fa', 'Neighborhood_Gilbert|MasVnrType_Tencode', 'Exterior1st_Stucco|PavedDrive_Y', 'BsmtHalfBath|Neighborhood_SawyerW', 'LotShape_IR2|SaleCondition_Abnorml', 'FireplaceQu_Po|LandContour_Tencode', 'BsmtQual_Ex|OverallCond', 'Neighborhood_BrkSide|Street_Pave', 'BsmtHalfBath|Electrical_FuseF', 'BsmtQual_Tencode|Neighborhood_SWISU', 'BsmtFinType2_GLQ|LandContour_Bnk', 'Heating_Grav|LandContour_HLS', 'BsmtFinType2_ALQ|Neighborhood_Crawfor', 'Electrical_FuseA|Street_Grvl', 'SaleType_New|RoofStyle_Shed', 'GarageFinish_Unf|Neighborhood_ClearCr', 'HeatingQC_Fa|Neighborhood_CollgCr', 'GarageFinish_Fin|Foundation_BrkTil', 'YearRemodAdd|Fence_GdWo', 'HeatingQC_TA|HeatingQC_Ex', 'BldgType_2fmCon|Neighborhood_Blmngtn', 'KitchenQual_Ex|SaleCondition_Alloca', 'BsmtFinType2_Unf|OverallCond', 'ExterQual_Gd|Neighborhood_Crawfor', 'FireplaceQu_Gd|CentralAir_N', 'LandContour_Low|BsmtQual_Ex', 'LandSlope_Sev|BsmtUnfSF', 'RoofStyle_Shed|GarageYrBlt', 'LotShape_Tencode|MiscVal', 'Exterior2nd_AsbShng|RoofStyle_Gable', 'LotConfig_FR2|RoofStyle_Gambrel', 'GarageYrBlt|ExterCond_Fa', 'Heating_Tencode|Exterior2nd_Brk Cmn', 'Exterior2nd_AsbShng|Exterior1st_MetalSd', 'Neighborhood_Tencode|LandSlope_Tencode', 'KitchenQual_TA|BsmtFinType1_GLQ', 'Exterior2nd_Stone|GarageCond_Tencode', 'BsmtFullBath|GarageCond_Ex', 'LotShape_IR1|Exterior2nd_AsphShn', 'Exterior2nd_Tencode|Condition2_Artery', 'LandSlope_Mod|SaleType_COD', 'HouseStyle_1Story|LandContour_Tencode', 'Fence_GdWo|BsmtCond_Fa', 'Utilities_Tencode|BsmtFinType1_LwQ', 'HouseStyle_1Story|GarageCond_TA', 'Electrical_Tencode|Functional_Min1', 'LotShape_IR2|HouseStyle_1.5Fin', 'RoofStyle_Hip|Condition2_Norm', 'MSZoning_C (all)|Neighborhood_MeadowV', 'Neighborhood_Mitchel|Utilities_AllPub', 'Exterior1st_AsbShng', 'Electrical_FuseP|BsmtFinType2_ALQ', 'KitchenQual_Fa|BsmtFinType2_Unf', 'RoofMatl_Tar&Grv|GarageCond_Fa', 'TotalBsmtSF|Condition2_Tencode', 'Exterior2nd_CmentBd|OverallCond', 'Functional_Tencode|HeatingQC_Tencode', 'Neighborhood_Tencode|SaleType_WD', 'OverallQual|Condition2_Tencode', 'Neighborhood_BrDale|Neighborhood_NridgHt', 'LandSlope_Mod|BsmtFinType1_LwQ', 'Exterior1st_CemntBd|Exterior2nd_Wd Sdng', 'Exterior1st_HdBoard|TotRmsAbvGrd', 'BsmtHalfBath', 'Condition1_PosN|1stFlrSF', 'MSZoning_C (all)|Exterior2nd_Wd Shng', 'Utilities_Tencode|BsmtFinType2_Tencode', 'BsmtFinType1_Tencode|Neighborhood_Veenker', 'Exterior2nd_VinylSd|Neighborhood_BrkSide', 'SaleCondition_Tencode|FireplaceQu_Fa', 'CentralAir_Y|GarageYrBlt', 'PavedDrive_Tencode|Neighborhood_Crawfor', 'LandContour_Lvl|SaleCondition_Abnorml', 'Neighborhood_Somerst|GarageCond_Fa', 'Heating_GasA|PoolArea', 'LandSlope_Sev|SaleType_CWD', 'BsmtQual_Tencode|GarageFinish_Tencode', 'BedroomAbvGr|SaleCondition_Family', 'BsmtExposure_Tencode|Neighborhood_SWISU', 'FireplaceQu_Fa|GarageYrBlt', 'FireplaceQu_Fa|RoofStyle_Tencode', 'Functional_Mod|FireplaceQu_Ex', 'RoofStyle_Flat|Heating_Grav', 'BsmtExposure_Av|KitchenQual_Fa', 'BedroomAbvGr|MSZoning_RL', 'Functional_Mod|MasVnrArea', 'Electrical_SBrkr|Exterior1st_WdShing', 'RoofStyle_Hip|LotShape_IR1', 'BsmtFinType1_LwQ|Condition2_Norm', 'LandContour_Low|LotConfig_CulDSac', 'FireplaceQu_Tencode|SaleType_New', 'GarageCond_Gd|BsmtFinType1_GLQ', 'RoofStyle_Gable|ExterQual_Fa', 'Neighborhood_NAmes|KitchenQual_Fa', 'Neighborhood_Veenker|Condition1_RRAn', 'BsmtFinType2_Unf|Exterior1st_BrkComm', 'Neighborhood_NPkVill|CentralAir_Tencode', 'HeatingQC_Ex|BsmtQual_TA', 'SaleType_ConLD|HeatingQC_Ex', 'Exterior1st_Plywood|Exterior2nd_AsphShn', 'Exterior1st_Stucco|Neighborhood_StoneBr', 'Neighborhood_Blmngtn|SaleType_CWD', 'GarageCond_TA|HouseStyle_Tencode', 'Foundation_BrkTil|Exterior2nd_HdBoard', 'MSZoning_Tencode|Exterior1st_WdShing', 'Neighborhood_ClearCr|MiscFeature_Gar2', 'Condition1_PosA|Condition1_RRAn', 'GarageType_Basment|ExterCond_Fa', 'BldgType_Twnhs|Condition2_Tencode', 'HeatingQC_Ex|MSZoning_C (all)', 'HeatingQC_Fa|Utilities_AllPub', 'ExterCond_TA|BsmtFinType2_Rec', 'Neighborhood_BrDale|RoofStyle_Gable', 'ExterCond_Fa|Exterior2nd_AsphShn', 'Neighborhood_NAmes|BsmtCond_Tencode', 'Condition2_Tencode|MasVnrType_Stone', 'SaleType_New|Exterior1st_MetalSd', 'Condition1_RRAe|KitchenQual_Fa', 'Foundation_PConc|Exterior1st_MetalSd', 'LotConfig_Tencode|MSZoning_Tencode', 'MSZoning_RL|HouseStyle_2Story', 'LotFrontage|Functional_Tencode', 'Neighborhood_ClearCr|1stFlrSF', 'Neighborhood_BrkSide|Fence_MnWw', 'BsmtFinType1_Tencode|Neighborhood_Crawfor', 'MSSubClass|MSZoning_RH', 'BsmtFinType2_GLQ|MiscFeature_Othr', 'Neighborhood_BrDale|Exterior2nd_CmentBd', 'GarageType_BuiltIn|MasVnrType_None', 'RoofStyle_Hip|BsmtFinType2_LwQ', 'GarageFinish_Unf|Condition1_RRAn', 'LotShape_Tencode|BsmtHalfBath', 'Exterior2nd_CmentBd|BsmtCond_Tencode', 'Neighborhood_NPkVill|LandContour_Lvl', 'Electrical_FuseF|LandSlope_Gtl', 'Exterior1st_BrkComm|BsmtExposure_Mn', 'Neighborhood_Blmngtn|Exterior1st_VinylSd', 'Foundation_Tencode|Neighborhood_NWAmes', 'HouseStyle_1.5Unf|Functional_Min2', 'GarageFinish_RFn|BldgType_1Fam', 'Condition1_Artery|Neighborhood_BrDale', 'BsmtFinType2_ALQ|BsmtExposure_Mn', 'Utilities_Tencode|RoofStyle_Shed', 'LotConfig_FR2|ExterCond_Tencode', 'Exterior1st_Stucco|Exterior1st_BrkComm', 'LotShape_IR2|Condition1_Norm', 'Neighborhood_NPkVill|Exterior2nd_Plywood', 'GarageCond_Ex|BsmtExposure_No', 'LandContour_Lvl|BsmtExposure_Mn', 'Heating_GasA|CentralAir_N', 'Electrical_FuseA|BldgType_TwnhsE', 'Functional_Mod|Exterior2nd_Plywood', 'GarageCond_Gd|Neighborhood_StoneBr', 'BsmtFinType1_ALQ|LandSlope_Gtl', 'Fireplaces|ExterQual_Tencode', 'Alley_Pave|LandContour_Tencode', 'BsmtFinType1_Tencode|BsmtExposure_Av', 'GarageType_Detchd|BsmtFinType1_GLQ', 'Neighborhood_CollgCr|Neighborhood_NWAmes', 'BsmtExposure_No|BsmtFinType1_GLQ', 'YrSold|Functional_Min2', 'Exterior1st_Stucco|Foundation_Slab', 'Electrical_SBrkr|RoofStyle_Gable', 'Exterior2nd_VinylSd|BsmtExposure_No', 'YrSold|LotFrontage', 'HouseStyle_1Story|HalfBath', 'Condition1_Artery|BsmtQual_Gd', 'BsmtQual_Fa|HouseStyle_2Story', 'PavedDrive_N|Exterior1st_VinylSd', 'BsmtCond_Tencode|Neighborhood_MeadowV', 'BsmtFinType1_LwQ|CentralAir_Y', 'LandContour_Low|HouseStyle_1.5Fin', 'Exterior1st_MetalSd|Functional_Min2', 'KitchenQual_Gd|PoolQC_Tencode', 'GarageCond_Gd|BsmtFinType1_Rec', 'HouseStyle_1Story|Foundation_PConc', 'Neighborhood_Tencode|GarageFinish_Tencode', 'Condition1_RRAe|Foundation_CBlock', 'Condition1_Artery|BsmtQual_Tencode', 'Fireplaces|ExterQual_Gd', 'Neighborhood_BrDale|Functional_Typ', 'ExterQual_Tencode|Exterior2nd_AsphShn', 'Exterior1st_HdBoard|LandContour_Tencode', 'Foundation_Stone|Exterior2nd_Brk Cmn', 'YearBuilt|SaleType_WD', 'Functional_Maj2|GarageCond_Fa', 'KitchenQual_Gd|Alley_Grvl', 'BsmtQual_Tencode|KitchenQual_Tencode', 'LandSlope_Mod|Functional_Mod', 'BsmtQual_Fa|Exterior1st_Plywood', 'RoofStyle_Flat|SaleType_ConLD', 'MiscFeature_Shed|KitchenQual_TA', 'Neighborhood_CollgCr|GarageType_Tencode', 'KitchenAbvGr|MiscFeature_Tencode', 'MSSubClass|BsmtFinType1_GLQ', 'Foundation_Stone|BsmtFinType1_Unf', 'LotShape_Tencode|BsmtUnfSF', 'GarageFinish_Fin|GarageType_Tencode', 'MSSubClass|Exterior1st_VinylSd', 'Neighborhood_NridgHt|EnclosedPorch', 'Alley_Pave|Neighborhood_SWISU', 'BsmtHalfBath|Fence_MnPrv', 'SaleCondition_Normal|BsmtCond_TA', 'HouseStyle_1Story|LotConfig_Inside', 'TotalBsmtSF|Foundation_BrkTil', 'SaleCondition_Normal|Exterior2nd_HdBoard', 'Neighborhood_NridgHt|GarageCond_Po', 'KitchenQual_Fa', 'HeatingQC_Gd|Exterior1st_Stucco', 'Utilities_Tencode|Functional_Maj2', 'BldgType_Duplex|Foundation_BrkTil', 'BsmtExposure_Tencode|Exterior2nd_AsphShn', 'BsmtFinType1_BLQ|Exterior1st_WdShing', 'EnclosedPorch|Condition2_Artery', 'Electrical_FuseF|Neighborhood_SawyerW', 'Functional_Tencode|RoofStyle_Gambrel', 'KitchenQual_Fa|GarageType_Basment', 'FireplaceQu_Po|BsmtFinType2_BLQ', 'Neighborhood_NPkVill|Neighborhood_CollgCr', 'Neighborhood_NWAmes|BldgType_Tencode', 'Exterior2nd_MetalSd|ScreenPorch', 'BsmtFinType2_GLQ|Exterior1st_WdShing', 'BsmtCond_Tencode|Exterior1st_Tencode', 'MSZoning_RH|Exterior1st_MetalSd', 'Condition1_PosN|SaleCondition_Normal', 'Exterior2nd_Stone|BsmtCond_Gd', 'BsmtCond_Po|Functional_Min2', 'BsmtFinType2_Tencode|Neighborhood_NoRidge', 'Neighborhood_BrDale|BsmtFinType1_Rec', 'BldgType_2fmCon|Neighborhood_Tencode', 'Foundation_PConc|Neighborhood_IDOTRR', 'Exterior2nd_Stucco|BsmtQual_Gd', 'Neighborhood_NoRidge|MoSold', 'LandSlope_Tencode|ScreenPorch', 'GarageCond_TA|Neighborhood_NoRidge', 'LandSlope_Gtl|Neighborhood_Sawyer', 'ScreenPorch|MasVnrType_Tencode', 'SaleType_Oth', 'LotShape_IR1|1stFlrSF', 'GarageQual_Gd|HouseStyle_1.5Unf', 'Neighborhood_SawyerW|Exterior2nd_Wd Shng', 'Exterior2nd_BrkFace|RoofMatl_Tar&Grv', 'KitchenQual_Tencode|RoofStyle_Tencode', 'HeatingQC_Ex|MSZoning_FV', 'GarageCond_Tencode|SaleCondition_Partial', 'PoolArea|GarageYrBlt', 'Condition1_PosN|Neighborhood_SawyerW', 'Foundation_PConc|Neighborhood_NoRidge', 'SaleType_ConLD|RoofStyle_Gable', 'RoofMatl_CompShg|Functional_Min1', 'BsmtFinType1_BLQ|Condition2_Tencode', 'Heating_Grav|Neighborhood_Mitchel', 'Neighborhood_NridgHt|LandContour_Lvl', 'HeatingQC_Tencode|Exterior2nd_Wd Sdng', 'BsmtFinType1_BLQ|Foundation_Stone', 'HalfBath|Condition1_Feedr', 'LotShape_IR1|BsmtExposure_Gd', 'Neighborhood_Crawfor|SaleCondition_Partial', 'RoofMatl_Tencode|Exterior2nd_CmentBd', 'Exterior2nd_AsbShng|BsmtCond_Tencode', 'Heating_Tencode|RoofStyle_Gable', 'GarageArea|BsmtFinType1_Unf', 'BsmtCond_Tencode|KitchenQual_TA', 'Exterior1st_HdBoard|BldgType_1Fam', 'GarageQual_Gd|KitchenQual_Ex', 'GarageCond_TA|Condition1_RRAn', 'BsmtQual_Fa|GarageCond_Ex', 'GarageFinish_Tencode|Exterior1st_CemntBd', 'Heating_Tencode|Exterior2nd_Wd Shng', 'Electrical_Tencode|Heating_Grav', 'BsmtExposure_Tencode|Fence_MnPrv', 'ExterCond_TA|MSZoning_C (all)', 'BsmtFinType2_GLQ|Neighborhood_IDOTRR', 'Neighborhood_CollgCr|Electrical_FuseA', 'Exterior1st_BrkFace|HeatingQC_Gd', 'HouseStyle_Tencode|KitchenQual_Fa', 'Electrical_Tencode|ExterQual_Gd', 'Exterior2nd_BrkFace|Exterior2nd_Brk Cmn', 'BsmtQual_Ex|Functional_Maj2', 'FireplaceQu_Po|ExterCond_Fa', 'GarageCond_Gd|Exterior1st_WdShing', 'RoofStyle_Shed|Neighborhood_BrkSide', 'LotShape_Reg|TotRmsAbvGrd', 'RoofMatl_Tar&Grv|HouseStyle_1.5Fin', 'HouseStyle_SLvl|MasVnrArea', 'FireplaceQu_Fa|Electrical_FuseF', 'CentralAir_Y|LotShape_IR3', 'Exterior1st_CemntBd|GarageType_BuiltIn', 'Street_Grvl|HouseStyle_SLvl', 'Neighborhood_NAmes|Fence_MnPrv', 'LandSlope_Sev|BsmtFullBath', 'MSZoning_C (all)|MiscFeature_Gar2', 'Exterior2nd_Stucco|BsmtExposure_Av', 'GarageQual_Gd|Electrical_FuseA', 'BsmtQual_Tencode|ExterCond_Tencode', 'FireplaceQu_Gd|GarageCond_Fa', 'BldgType_Twnhs|Neighborhood_Sawyer', 'LotFrontage|MiscFeature_Gar2', 'HeatingQC_Gd|Fence_Tencode', 'GrLivArea|BsmtHalfBath', 'BsmtFinType2_Tencode|Exterior2nd_Wd Sdng', 'HouseStyle_2.5Unf|KitchenQual_TA', 'Neighborhood_Mitchel|RoofMatl_CompShg', 'Neighborhood_NridgHt|KitchenQual_Fa', 'Exterior1st_WdShing|Utilities_AllPub', 'YrSold', 'Exterior1st_BrkFace|SaleCondition_Normal', 'BsmtExposure_Av|BsmtCond_Gd', 'Condition1_Feedr|BsmtCond_Fa', 'BsmtFinType1_LwQ|ExterQual_Tencode', 'GarageFinish_Tencode|BsmtCond_TA', 'HouseStyle_1Story|MiscFeature_Shed', 'KitchenQual_Gd|RoofStyle_Gambrel', 'KitchenQual_TA|Street_Pave', 'BldgType_TwnhsE|BsmtCond_Tencode', 'MiscFeature_Tencode|MSSubClass', 'Neighborhood_NPkVill|Electrical_FuseF', 'RoofStyle_Tencode|MSZoning_Tencode', 'Exterior1st_AsbShng|BsmtHalfBath', 'BldgType_2fmCon|MasVnrType_Stone', 'HouseStyle_Tencode|FireplaceQu_Fa', 'Neighborhood_SawyerW|Fence_MnWw', 'LandSlope_Sev|ExterQual_Tencode', 'Neighborhood_Blmngtn|BsmtFinType1_Rec', 'LotShape_Tencode|GarageCond_Fa', 'FireplaceQu_Gd|Utilities_AllPub', 'BsmtQual_Ex|RoofStyle_Shed', 'BldgType_Twnhs|Fence_MnWw', 'Electrical_Tencode|MasVnrType_BrkCmn', 'ExterQual_TA|Functional_Tencode', 'SaleType_WD|Condition1_PosA', 'GarageQual_TA|Utilities_AllPub', 'Exterior2nd_AsbShng|GarageArea', 'SaleCondition_Normal|Exterior2nd_Brk Cmn', 'Foundation_Slab|ExterQual_Fa', 'Neighborhood_Somerst|GarageType_2Types', 'BsmtQual_Tencode|Exterior1st_BrkComm', 'LotShape_Reg|BsmtFinType1_LwQ', 'Functional_Maj1|Utilities_AllPub', 'Exterior2nd_Stucco|Neighborhood_Gilbert', 'LandSlope_Mod|ExterQual_Tencode', 'Condition1_Artery|Fence_MnWw', 'ExterQual_TA|Condition1_Feedr', 'GarageQual_Po|Exterior1st_Plywood', 'BldgType_2fmCon|LandSlope_Sev', 'LandSlope_Sev|BsmtCond_Tencode', 'Exterior1st_BrkFace|Neighborhood_MeadowV', 'MiscFeature_Othr|Neighborhood_Edwards', 'Exterior1st_AsbShng|LotShape_IR3', 'LandSlope_Gtl|MiscFeature_Tencode', 'Neighborhood_Somerst|MasVnrType_BrkCmn', 'BldgType_2fmCon|HeatingQC_Gd', 'ExterQual_Ex|Condition2_Norm', 'BsmtFinType1_BLQ|MSZoning_RM', 'TotRmsAbvGrd|Exterior2nd_Wd Shng', 'YearRemodAdd|BsmtFinSF2', 'Alley_Tencode|MasVnrType_BrkCmn', 'LotArea|ScreenPorch', 'GarageCond_TA|BsmtExposure_No', 'Neighborhood_BrDale|HeatingQC_Gd', 'FullBath|Neighborhood_Edwards', 'SaleCondition_Tencode|ExterCond_TA', 'HeatingQC_Tencode|SaleType_Oth', 'Exterior1st_HdBoard|Street_Grvl', 'HouseStyle_1.5Unf|SaleType_Oth', 'BsmtFinType1_BLQ|BsmtFinType2_GLQ', 'Alley_Pave|CentralAir_Y', 'LotArea|Condition1_RRAn', 'FireplaceQu_Po|MSZoning_C (all)', 'SaleType_COD|Utilities_AllPub', 'Condition1_PosA|1stFlrSF', 'GarageQual_Po|MSZoning_RL', 'HouseStyle_1Story|GarageCond_Gd', 'GarageCond_Tencode|PoolQC_Tencode', 'Foundation_Stone|MoSold', 'BsmtFinType2_Tencode|LotShape_IR3', 'RoofStyle_Hip|HeatingQC_Tencode', 'YrSold|FullBath', 'BsmtCond_Gd|Neighborhood_BrkSide', 'LandContour_Low|ExterCond_Tencode', 'FireplaceQu_Gd|MSZoning_RM', 'BsmtCond_Gd|BsmtExposure_No', 'Neighborhood_NoRidge|Functional_Mod', 'Neighborhood_Mitchel|HouseStyle_2.5Unf', 'CentralAir_Y|HouseStyle_2Story', 'PoolQC_Tencode|BsmtFinType1_ALQ', 'Functional_Maj1|MasVnrType_None', 'GarageQual_Fa|LotConfig_Inside', 'Utilities_Tencode|Foundation_Tencode', 'LandSlope_Tencode|PoolArea', 'Exterior1st_BrkFace|BldgType_1Fam', 'LandContour_Low|Neighborhood_SawyerW', 'BsmtFullBath|BsmtExposure_Gd', 'Exterior2nd_AsbShng|PavedDrive_Tencode', 'ScreenPorch|Exterior2nd_Plywood', 'YearBuilt|BsmtFinSF1', 'Heating_Tencode|BsmtExposure_Gd', 'GarageCond_TA|Condition1_Feedr', 'HouseStyle_SFoyer|KitchenQual_Fa', 'Alley_Grvl|MSZoning_FV', 'Fence_GdWo|Neighborhood_Gilbert', 'Foundation_BrkTil|TotRmsAbvGrd', 'Exterior1st_WdShing|Exterior1st_Wd Sdng', 'BsmtFinType2_BLQ|CentralAir_Y', 'FireplaceQu_Tencode|LandSlope_Gtl', 'ExterCond_TA|BsmtFullBath', 'Exterior2nd_Wd Sdng|Foundation_CBlock', 'GarageQual_TA|Exterior2nd_Plywood', 'YearRemodAdd|BsmtFinType1_BLQ', 'GarageType_Detchd|Functional_Mod', 'Neighborhood_BrDale|GarageType_Tencode', 'HeatingQC_TA|1stFlrSF', 'Alley_Pave|PoolQC_Tencode', 'GarageType_Detchd|Neighborhood_Timber', 'ExterQual_Tencode|SaleType_CWD', 'Exterior1st_HdBoard|PavedDrive_Y', 'Foundation_Tencode|MoSold', 'HeatingQC_TA|HouseStyle_Tencode', 'GarageFinish_Fin|Exterior2nd_MetalSd', 'LandSlope_Tencode|KitchenQual_TA', 'HeatingQC_TA|Condition1_Norm', 'Electrical_FuseA|BsmtExposure_Gd', 'ScreenPorch|Neighborhood_MeadowV', 'RoofMatl_CompShg|GarageQual_TA', 'Utilities_Tencode|BsmtFinType1_ALQ', 'Neighborhood_BrDale|BsmtCond_Po', 'BldgType_Duplex|Exterior2nd_Wd Shng', 'FireplaceQu_Tencode|Exterior1st_Wd Sdng', 'BldgType_2fmCon|BsmtFinType2_Tencode', 'HouseStyle_1Story|FireplaceQu_Fa', 'GarageQual_Po|ScreenPorch', 'Condition1_RRAe|Exterior1st_VinylSd', 'GarageCond_Tencode|WoodDeckSF', 'Condition1_Artery|LotConfig_CulDSac', 'BsmtQual_Ex|MasVnrArea', 'HeatingQC_TA|BsmtFinType1_ALQ', 'KitchenQual_TA|Exterior1st_MetalSd', 'SaleType_ConLI|Heating_GasW', 'MiscFeature_Tencode|HouseStyle_2Story', 'GarageArea|MasVnrType_Tencode', 'BldgType_Duplex|Neighborhood_Mitchel', 'HouseStyle_1.5Fin|Exterior1st_MetalSd', 'Neighborhood_Somerst|RoofMatl_CompShg', 'SaleType_ConLw|ExterQual_Tencode', 'BsmtFinType2_GLQ|SaleCondition_Partial', 'Street_Grvl|HouseStyle_1.5Fin', 'GarageCond_Tencode|OverallCond', 'BldgType_Twnhs|BsmtFinType2_Unf', 'GarageQual_TA|OpenPorchSF', 'MasVnrType_BrkCmn|Street_Pave', 'Neighborhood_NPkVill|HouseStyle_1.5Unf', 'RoofMatl_Tencode|BsmtQual_Tencode', 'Exterior2nd_Stone|GarageQual_Gd', 'BsmtUnfSF|Foundation_CBlock', 'Street_Grvl|SaleType_Oth', 'Functional_Typ|BsmtQual_Ex', 'Foundation_PConc|Condition2_Tencode', 'Neighborhood_NPkVill|FireplaceQu_Ex', 'GarageFinish_Unf|BsmtFinType1_Tencode', 'Exterior2nd_Stucco|HouseStyle_SLvl', 'LotShape_Tencode|MSZoning_RH', 'MSZoning_C (all)|Functional_Min1', 'Neighborhood_NridgHt|SaleType_WD', 'RoofStyle_Hip|SaleCondition_Normal', 'SaleCondition_Tencode|Exterior1st_MetalSd', 'Neighborhood_NWAmes|BsmtExposure_Mn', 'LotShape_Tencode|Condition2_Norm', 'HeatingQC_Gd|FullBath', 'Neighborhood_Somerst|BsmtFinType1_ALQ', 'EnclosedPorch|Neighborhood_CollgCr', 'LotShape_Tencode|HalfBath', 'MSZoning_RH|Exterior1st_Wd Sdng', 'GarageFinish_Unf|PavedDrive_Tencode', 'LotArea|BsmtFinType1_Rec', 'BsmtFinType2_BLQ|LotConfig_Tencode', 'BsmtFullBath|RoofStyle_Tencode', 'HeatingQC_Gd|HouseStyle_1.5Fin', 'HouseStyle_SFoyer|MSZoning_RL', 'Neighborhood_NoRidge|Exterior1st_Plywood', 'BldgType_Duplex|Neighborhood_Timber', 'HeatingQC_TA|KitchenQual_Ex', 'Condition1_Artery|SaleCondition_Alloca', 'BsmtExposure_Mn|MasVnrType_Stone', 'Foundation_Stone|Fence_GdWo', 'ExterQual_TA|Exterior1st_VinylSd', 'Neighborhood_Mitchel|Fence_MnWw', 'SaleType_ConLw|GarageYrBlt', 'Foundation_Stone|Neighborhood_OldTown', 'RoofMatl_Tencode|FullBath', 'FireplaceQu_Tencode|HouseStyle_Tencode', 'Exterior1st_CemntBd|GarageArea', 'LotConfig_Corner|SaleType_CWD', 'MiscFeature_Shed|LotConfig_Tencode', 'GarageFinish_Fin|MiscFeature_Tencode', 'RoofMatl_CompShg|Foundation_Tencode', 'HouseStyle_2.5Unf|ExterQual_Fa', 'TotalBsmtSF|GarageFinish_Tencode', 'SaleType_WD|Fence_MnPrv', 'BsmtQual_Gd|Exterior2nd_Plywood', 'KitchenQual_Gd|LandContour_Bnk', 'LandContour_Lvl|Fence_MnWw', 'GarageCond_Tencode|YearBuilt', 'BldgType_2fmCon|Condition1_PosA', 'HalfBath|Exterior1st_Plywood', 'BldgType_2fmCon|Exterior2nd_Wd Shng', 'Heating_GasA|ExterCond_Gd', 'HouseStyle_SFoyer|HouseStyle_2Story', 'GarageQual_TA|SaleType_CWD', 'LotConfig_FR2|WoodDeckSF', 'Neighborhood_NWAmes|WoodDeckSF', 'GarageQual_Po|Exterior2nd_Brk Cmn', 'GrLivArea|GarageType_2Types', 'MiscFeature_Shed|MSZoning_RM', 'RoofMatl_CompShg|HouseStyle_Tencode', 'BsmtQual_Tencode|BsmtQual_Fa', 'GarageCars|HouseStyle_SLvl', 'Neighborhood_MeadowV|LotConfig_Inside', 'BsmtExposure_Tencode|SaleType_Tencode', 'GarageQual_Tencode|Exterior2nd_HdBoard', 'RoofMatl_Tar&Grv|Functional_Min2', 'Neighborhood_Sawyer|MSZoning_FV', 'PavedDrive_Tencode|Exterior2nd_AsphShn', 'YrSold|BsmtFinType2_Tencode', 'Neighborhood_Gilbert|WoodDeckSF', 'Foundation_Tencode|Neighborhood_SawyerW', 'BldgType_Duplex|MSZoning_FV', 'RoofStyle_Hip|BldgType_Tencode', 'CentralAir_N|MSZoning_Tencode', 'GarageCond_TA|BsmtFinType2_GLQ', 'TotalBsmtSF|Neighborhood_NPkVill', 'GarageCond_TA|Neighborhood_SawyerW', 'KitchenAbvGr|OverallCond', 'BsmtQual_Fa|GarageCond_Fa', 'Exterior2nd_Tencode|OpenPorchSF', 'MiscFeature_Shed|OverallCond', 'LandSlope_Mod|GarageFinish_RFn', 'KitchenQual_TA|SaleType_CWD', 'GarageCars|Neighborhood_Sawyer', 'YrSold|GarageType_2Types', 'GarageQual_TA|2ndFlrSF', 'MiscVal|Neighborhood_IDOTRR', 'BsmtFinType2_Tencode|PavedDrive_P', 'BsmtExposure_Tencode|BldgType_TwnhsE', 'RoofMatl_WdShngl|GarageType_2Types', 'MasVnrType_BrkCmn|BsmtFinType1_Unf', 'Foundation_Tencode|Exterior2nd_Brk Cmn', 'OverallQual|GarageFinish_Unf', 'BsmtQual_Ex|Foundation_Slab', 'LandContour_Low|LowQualFinSF', 'Street_Grvl|CentralAir_Tencode', 'BsmtFinType2_BLQ|PavedDrive_Y', 'GarageFinish_Tencode|ScreenPorch', 'PavedDrive_N|Exterior2nd_Stone', 'RoofStyle_Flat|ExterQual_Gd', 'BsmtQual_Fa|RoofMatl_WdShngl', 'BldgType_2fmCon|RoofMatl_Tar&Grv', 'OverallQual|GarageCond_Gd', 'SaleType_Oth|MSZoning_RH', 'Foundation_PConc|GarageFinish_Tencode', 'EnclosedPorch|LandSlope_Sev', 'LotShape_Reg|BsmtExposure_Mn', 'BsmtFinType2_GLQ|Electrical_FuseF', 'FireplaceQu_Tencode|ExterQual_Fa', 'GarageCond_TA|BsmtHalfBath', 'ScreenPorch|SaleType_CWD', 'Neighborhood_OldTown|ExterQual_Fa', 'LandSlope_Sev|ExterCond_Fa', 'Neighborhood_NoRidge|MSZoning_Tencode', 'BldgType_Duplex|RoofStyle_Gambrel', 'PoolQC_Tencode|Exterior2nd_AsphShn', 'Condition1_Tencode|PavedDrive_P', 'Neighborhood_NoRidge|Exterior2nd_HdBoard', 'OverallCond|Fence_MnWw', 'LandContour_Lvl|MSZoning_RL', 'Heating_GasW|Foundation_CBlock', 'Fence_Tencode|Exterior1st_VinylSd', 'BsmtExposure_Tencode|Street_Pave', 'Fence_MnWw|Exterior2nd_AsphShn', 'Condition1_PosN|Neighborhood_Sawyer', 'Neighborhood_Sawyer|SaleCondition_Abnorml', 'Functional_Maj2|RoofMatl_WdShngl', 'Electrical_FuseA|MasVnrType_BrkFace', 'BsmtFinSF2|BldgType_Tencode', 'Exterior1st_HdBoard|ScreenPorch', 'Functional_Tencode|LandSlope_Mod', 'GarageCond_TA|SaleCondition_Family', 'Neighborhood_CollgCr|Heating_GasW', 'GarageFinish_Tencode|CentralAir_N', 'BsmtFinType1_BLQ|SaleType_COD', 'LandSlope_Mod|Fence_Tencode', 'PavedDrive_Tencode|Fence_MnPrv', 'BsmtFinType2_GLQ|Condition1_PosN', 'Condition1_PosN|Neighborhood_Timber', 'Electrical_FuseF|Condition2_Norm', 'Neighborhood_Mitchel|ExterCond_Gd', 'Condition1_PosA|LandSlope_Gtl', 'RoofStyle_Flat|BsmtFinType2_Rec', 'BsmtCond_Fa|Neighborhood_MeadowV', 'YearRemodAdd|SaleCondition_Family', 'Exterior2nd_Stucco|LotConfig_Tencode', 'MSZoning_RM|BsmtExposure_Gd', 'ExterCond_Gd|RoofStyle_Gambrel', 'LotShape_Tencode|Electrical_SBrkr', 'CentralAir_Tencode|FireplaceQu_TA', 'PavedDrive_Y|ExterQual_Tencode', 'SaleType_WD|Fence_GdWo', 'Condition1_Tencode|MSZoning_FV', 'SaleCondition_Tencode|HouseStyle_SFoyer', 'Exterior1st_CemntBd|SaleType_COD', 'RoofMatl_Tar&Grv|GarageQual_TA', 'LandContour_Low|MoSold', 'Neighborhood_NAmes|SaleType_COD', 'ExterCond_Gd|BsmtCond_TA', 'Neighborhood_NridgHt|Condition1_PosA', 'LotShape_IR2|Exterior2nd_CmentBd', 'Condition1_Norm|ExterQual_Tencode', 'HeatingQC_Gd|Neighborhood_OldTown', 'GarageCond_TA|ExterQual_Gd', 'HalfBath|Neighborhood_Timber', 'KitchenQual_Gd|MSZoning_RH', 'GarageQual_Fa|LotShape_IR3', 'Neighborhood_NridgHt|GarageCars', 'Electrical_FuseF|2ndFlrSF', 'HeatingQC_Ex|GarageQual_Tencode', 'GarageQual_Tencode|BsmtCond_TA', 'RoofStyle_Flat|BsmtQual_Gd', 'YearBuilt|BsmtFullBath', 'HouseStyle_1Story|HouseStyle_Tencode', 'GarageFinish_Fin|BldgType_1Fam', 'Neighborhood_CollgCr|MSZoning_RH', 'Exterior1st_BrkFace|Functional_Maj1', 'Exterior2nd_BrkFace|GarageType_CarPort', 'SaleType_WD|LotConfig_Tencode', 'HouseStyle_1Story|Neighborhood_Gilbert', 'LotFrontage|GarageCars', 'BldgType_2fmCon|SaleType_ConLw', 'SaleType_CWD|BsmtCond_Fa', 'RoofMatl_CompShg|2ndFlrSF', 'SaleCondition_Family|RoofStyle_Gambrel', 'Foundation_CBlock|Neighborhood_Timber', 'GarageType_Detchd|ExterCond_Gd', 'Neighborhood_Blmngtn|BldgType_1Fam', 'LotConfig_CulDSac|BsmtCond_Fa', 'LotConfig_Corner|HouseStyle_2Story', 'LandContour_HLS|CentralAir_Y', 'SaleType_ConLI|GarageYrBlt', '3SsnPorch|Functional_Maj2', 'SaleCondition_Normal|PoolArea', '1stFlrSF|GarageYrBlt', 'GrLivArea|RoofStyle_Gambrel', 'HeatingQC_Gd|Neighborhood_NAmes', 'RoofStyle_Flat|MasVnrType_Stone', 'Functional_Min1|SaleCondition_Abnorml', 'Exterior2nd_Stucco|Functional_Min2', 'RoofStyle_Flat|Neighborhood_Edwards', 'GrLivArea', 'Exterior2nd_Stucco|HeatingQC_Gd', '2ndFlrSF|BsmtCond_Tencode', 'MSZoning_C (all)|ScreenPorch', 'Functional_Tencode|KitchenQual_Ex', 'FullBath|Exterior1st_AsbShng', 'GarageFinish_Fin|PavedDrive_Tencode', 'Neighborhood_Somerst|LotConfig_Tencode', 'LandContour_Lvl|2ndFlrSF', 'Functional_Typ|ExterQual_Gd', 'LandSlope_Mod|Exterior1st_BrkComm', 'LotShape_Tencode|MasVnrType_None', 'KitchenQual_Ex|Functional_Min2', 'PavedDrive_Tencode|KitchenQual_Fa', 'Exterior2nd_VinylSd|Electrical_FuseF', 'Neighborhood_BrDale|ExterCond_Gd', 'LotShape_Reg|LandSlope_Mod', 'FullBath|ExterQual_Ex', 'BldgType_2fmCon|RoofStyle_Flat', 'BsmtFinType2_Rec|MiscFeature_Tencode', 'PavedDrive_N|LotFrontage', 'BldgType_2fmCon|HouseStyle_2Story', 'FullBath|BsmtFinSF2', 'TotalBsmtSF|Exterior2nd_Brk Cmn', 'BsmtFinType2_GLQ|Exterior2nd_Wd Sdng', 'Foundation_Tencode|Condition1_Norm', 'Electrical_Tencode|Heating_Tencode', 'BldgType_1Fam|MasVnrType_Tencode', 'Street_Tencode|LandSlope_Mod', 'BsmtExposure_Tencode|ExterCond_Tencode', 'LotConfig_Corner|MiscFeature_Tencode', 'LandContour_HLS|Exterior2nd_HdBoard', 'Condition1_Tencode|BsmtExposure_Gd', 'GarageFinish_Fin|BsmtCond_Fa', '3SsnPorch|GarageType_BuiltIn', 'LotShape_Reg|GarageFinish_Tencode', 'Neighborhood_Blmngtn|PavedDrive_P', 'GarageCars|ScreenPorch', 'Heating_GasA|Exterior1st_MetalSd', 'Alley_Pave|BsmtExposure_No', 'BsmtFinType1_BLQ|KitchenQual_Fa', 'OverallQual|BsmtFinSF1', 'LotShape_IR2|HeatingQC_Gd', 'MSZoning_C (all)|Foundation_Slab', 'PavedDrive_Tencode|PavedDrive_P', 'Neighborhood_OldTown|Foundation_Tencode', '3SsnPorch|MoSold', 'RoofStyle_Shed|BsmtExposure_Av', 'HouseStyle_1.5Fin|Fence_MnPrv', 'GarageCond_TA|Functional_Min2', 'TotalBsmtSF|SaleCondition_Partial', 'HouseStyle_SFoyer|LandSlope_Gtl', 'GarageCars|MasVnrType_BrkFace', 'Foundation_PConc|Exterior1st_BrkComm', 'GarageCond_Fa|OpenPorchSF', 'Condition1_PosN|Exterior2nd_Plywood', 'BldgType_Tencode|BsmtExposure_Mn', 'LotConfig_Corner|Foundation_BrkTil', 'KitchenAbvGr|RoofStyle_Tencode', 'PavedDrive_Tencode|BsmtFinType1_Unf', 'Fence_Tencode|BsmtExposure_Gd', 'BsmtFinType2_Tencode|Neighborhood_Gilbert', 'KitchenAbvGr|HeatingQC_Gd', 'LandContour_Tencode|Exterior2nd_MetalSd', 'SaleType_ConLw|Condition1_PosN', 'HouseStyle_1Story|Neighborhood_OldTown', 'Neighborhood_NridgHt|KitchenQual_Gd', 'BldgType_Twnhs|PavedDrive_P', 'TotRmsAbvGrd|Neighborhood_BrkSide', 'Street_Grvl|Exterior2nd_Plywood', 'HeatingQC_Tencode|GarageArea', 'RoofStyle_Hip|GarageQual_Po', 'Exterior2nd_HdBoard|ExterQual_Fa', 'HouseStyle_Tencode|Neighborhood_IDOTRR', 'MasVnrType_BrkCmn|ExterQual_Fa', 'OverallQual|Neighborhood_ClearCr', 'Fence_MnPrv|Exterior2nd_AsphShn', 'ExterCond_Tencode|Neighborhood_Crawfor', 'TotalBsmtSF|YearRemodAdd', 'LandSlope_Tencode|TotRmsAbvGrd', 'Neighborhood_Edwards|SaleCondition_Partial', 'BsmtQual_Ex|Condition1_Feedr', 'YrSold|Electrical_Tencode', 'Heating_Tencode|BsmtQual_Gd', 'SaleType_ConLD|Street_Pave', 'BsmtFinType2_Tencode|Electrical_FuseA', 'KitchenAbvGr|Utilities_Tencode', 'Functional_Maj2|Neighborhood_Timber', 'LotShape_IR3|ExterCond_Fa', 'Neighborhood_NridgHt|BsmtFinType2_ALQ', 'FireplaceQu_Po|Neighborhood_OldTown', 'Electrical_FuseP|LowQualFinSF', 'KitchenQual_Ex|TotRmsAbvGrd', 'Fireplaces|RoofMatl_WdShngl', 'Condition1_Norm|Fence_GdWo', 'GarageCond_Ex|BsmtQual_Gd', 'Exterior1st_Stucco|FireplaceQu_Ex', 'Exterior1st_HdBoard|BldgType_Twnhs', 'BsmtFinType1_LwQ|MSZoning_RL', 'LotFrontage|HouseStyle_2Story', 'LotArea|Neighborhood_OldTown', 'LandContour_Tencode|Neighborhood_BrkSide', 'GarageType_Tencode|Neighborhood_IDOTRR', 'GarageQual_Fa|Neighborhood_Sawyer', 'SaleType_ConLw|PoolQC_Tencode', 'Fence_GdPrv|SaleType_COD', 'BsmtQual_Gd|Utilities_AllPub', 'Heating_GasA|GarageType_Basment', 'SaleType_Tencode|1stFlrSF', 'BsmtFinType2_LwQ|BsmtCond_Po', 'ExterQual_Ex|HouseStyle_2Story', 'GarageArea|BsmtExposure_No', 'Exterior2nd_MetalSd|ExterQual_Fa', 'Electrical_FuseP|Neighborhood_CollgCr', 'Neighborhood_NAmes|SaleCondition_Partial', 'GrLivArea|WoodDeckSF', 'Functional_Typ|Foundation_Stone', 'SaleType_New|BsmtQual_Gd', 'Exterior1st_BrkFace|BsmtExposure_Av', 'Neighborhood_Crawfor|KitchenQual_TA', 'LotConfig_FR2|3SsnPorch', 'KitchenQual_Fa|MSZoning_FV', 'BedroomAbvGr|ScreenPorch', 'Functional_Min1|FireplaceQu_Ex', 'RoofStyle_Hip|Fence_MnWw', 'ExterQual_Ex|HouseStyle_1.5Fin', 'Exterior2nd_Stone|BldgType_Twnhs', 'BldgType_Twnhs|CentralAir_Y', 'Exterior2nd_Wd Shng|MasVnrType_Stone', 'LotShape_IR1|Fence_GdWo', 'LotShape_Tencode|Neighborhood_Somerst', 'KitchenAbvGr|MSZoning_C (all)', 'LotShape_Tencode|Electrical_FuseF', 'Exterior2nd_VinylSd|MasVnrType_BrkCmn', 'FireplaceQu_Po|Neighborhood_Gilbert', 'BedroomAbvGr|PavedDrive_P', '2ndFlrSF|SaleType_CWD', 'Condition1_Artery|LotConfig_Tencode', 'BsmtFinType2_GLQ|HeatingQC_Ex', 'Functional_Min1|PoolArea', 'BsmtFinType1_GLQ|ExterCond_Fa', 'LandContour_HLS|Exterior1st_Wd Sdng', 'HeatingQC_Tencode|BsmtQual_Gd', 'Heating_GasA|SaleCondition_Normal', 'LotConfig_Corner|Exterior1st_VinylSd', 'YearBuilt|SaleType_CWD', 'Neighborhood_Crawfor|Exterior1st_Plywood', 'RoofStyle_Gambrel|GarageCond_Ex', 'HouseStyle_SFoyer|BsmtQual_TA', 'BsmtCond_Gd|Exterior2nd_Brk Cmn', 'TotalBsmtSF|SaleCondition_Alloca', 'YrSold|Foundation_Tencode', 'Condition2_Tencode|Functional_Mod', 'HeatingQC_TA|GarageType_2Types', 'BsmtQual_TA|BldgType_TwnhsE', 'GarageQual_Gd|Exterior2nd_MetalSd', 'Neighborhood_BrDale|Condition1_Feedr', 'Heating_GasA|Condition2_Artery', 'Functional_Tencode|Fence_GdPrv', 'GarageFinish_Tencode|Exterior1st_VinylSd', '3SsnPorch|Neighborhood_SawyerW', 'RoofMatl_Tencode|BsmtExposure_Av', 'LotConfig_CulDSac|BsmtFinType1_LwQ', 'GarageCond_Po|LandContour_Lvl', 'Condition2_Norm|Exterior2nd_Wd Shng', 'OverallCond|Street_Pave', 'SaleType_New|MiscFeature_Shed', 'Functional_Tencode|KitchenQual_TA', 'RoofStyle_Hip|GarageType_Attchd', 'Utilities_Tencode|Foundation_BrkTil', 'Functional_Maj1', 'Foundation_Tencode|Condition1_PosN', 'KitchenQual_Gd|MSZoning_C (all)', 'Fence_Tencode|Exterior1st_CemntBd', 'Neighborhood_OldTown|LandContour_Bnk', 'RoofMatl_CompShg|BldgType_Tencode', 'MasVnrType_BrkCmn', 'SaleCondition_Normal|HouseStyle_SLvl', 'BsmtFinType1_LwQ|MSZoning_RH', 'Street_Tencode|Neighborhood_SWISU', 'Exterior2nd_Stucco|GarageCond_Tencode', 'KitchenQual_Ex|MasVnrType_BrkCmn', 'GarageCond_Po|PoolArea', 'FireplaceQu_TA|BldgType_Tencode', 'Neighborhood_ClearCr|PoolQC_Tencode', 'Neighborhood_BrDale|BsmtQual_Tencode', 'Exterior2nd_Wd Sdng|CentralAir_N', 'Exterior1st_HdBoard|Condition1_PosN', 'Exterior2nd_Stone|CentralAir_Y', 'GarageType_BuiltIn|HouseStyle_2.5Unf', 'Exterior1st_BrkFace|WoodDeckSF', 'BsmtExposure_Av|BsmtCond_Po', 'RoofMatl_Tar&Grv|BsmtCond_Tencode', 'YrSold|1stFlrSF', 'Neighborhood_NoRidge|GarageFinish_RFn', 'GarageYrBlt|BsmtCond_TA', 'Fireplaces|MasVnrType_Stone', 'LandContour_Bnk|Neighborhood_SWISU', 'MiscFeature_Othr|GarageQual_Tencode', 'FireplaceQu_Tencode|MiscFeature_Shed', 'Electrical_FuseP|BsmtUnfSF', 'Neighborhood_Somerst|MiscFeature_Shed', 'LotShape_Tencode|HeatingQC_Ex', 'LotConfig_Corner|BsmtQual_Fa', 'BsmtFinType2_ALQ|RoofMatl_Tar&Grv', 'Functional_Typ|LotShape_IR3', 'ExterCond_Tencode|BldgType_1Fam', 'Foundation_Tencode|Neighborhood_Gilbert', 'HouseStyle_Tencode|HeatingQC_Ex', 'FireplaceQu_Tencode|KitchenQual_Gd', 'FireplaceQu_Po|GarageQual_Fa', 'LotConfig_Corner|Condition1_RRAn', 'GarageType_2Types|Exterior2nd_AsphShn', 'Heating_Tencode|Condition2_Artery', 'Neighborhood_Edwards|BsmtFinType2_LwQ', 'SaleType_ConLw|SaleType_CWD', 'Condition1_Feedr|Fence_MnPrv', 'Condition1_Artery|BedroomAbvGr', 'Street_Tencode|BsmtFinType2_Tencode', 'BsmtExposure_No|Exterior2nd_Plywood', 'MiscVal', 'TotalBsmtSF|TotRmsAbvGrd', 'RoofStyle_Flat|Neighborhood_Sawyer', 'Condition1_Artery|RoofStyle_Flat', 'BsmtFullBath|FireplaceQu_TA', 'BsmtCond_Gd|Foundation_Slab', 'BsmtCond_Tencode|OverallCond', 'BsmtHalfBath|Neighborhood_Edwards', 'LotConfig_CulDSac|Neighborhood_SawyerW', 'Neighborhood_Veenker|Functional_Min1', 'HeatingQC_TA|Functional_Tencode', 'Alley_Grvl|BsmtCond_TA', 'FireplaceQu_Ex|BsmtExposure_No', 'FireplaceQu_Gd|KitchenQual_Fa', 'MiscFeature_Othr|Neighborhood_Tencode', 'BsmtFinType1_Tencode|BsmtFinType2_BLQ', 'Foundation_BrkTil|KitchenQual_TA', 'LotConfig_Corner|PoolQC_Tencode', 'Neighborhood_NoRidge|Condition1_PosA', 'MiscFeature_Tencode|Exterior1st_WdShing', 'ExterQual_Tencode|MasVnrArea', 'Exterior1st_HdBoard|GarageType_2Types', 'GarageType_CarPort|FireplaceQu_TA', 'RoofStyle_Gable|BsmtFinType2_Rec', 'Fence_Tencode|Exterior2nd_Wd Sdng', 'SaleType_WD|LotShape_IR3', 'GarageType_BuiltIn|OverallCond', 'LotShape_Tencode|SaleType_ConLD', 'Foundation_Stone|MiscVal', 'LotConfig_FR2|GarageCond_Gd', 'BsmtFinSF1|BsmtExposure_No', 'KitchenQual_Ex|BsmtFinType1_LwQ', 'KitchenQual_Gd|BsmtFinType1_LwQ', 'CentralAir_Y|Utilities_AllPub', 'Heating_GasA|Heating_GasW', 'Exterior2nd_Tencode|Functional_Min2', 'Foundation_Stone|Condition2_Artery', 'Electrical_Tencode|FullBath', 'FireplaceQu_Tencode|ExterQual_TA', 'MiscFeature_Shed|MasVnrArea', 'Exterior1st_Stucco|WoodDeckSF', 'Street_Grvl|Fence_MnPrv', 'Exterior1st_BrkFace|Foundation_Stone', 'GarageCond_TA|GarageFinish_RFn', 'BsmtFinSF2|GarageYrBlt', 'GarageFinish_Fin|SaleType_Tencode', 'HouseStyle_1.5Unf|RoofMatl_WdShngl', 'HouseStyle_Tencode|Exterior2nd_MetalSd', 'OpenPorchSF|MiscFeature_Gar2', 'Heating_Grav|CentralAir_Tencode', 'SaleType_ConLw|Fence_GdPrv', 'Street_Grvl|Exterior2nd_Brk Cmn', 'Electrical_FuseA|KitchenQual_Fa', 'LandContour_HLS|GarageQual_Po', 'Exterior2nd_BrkFace|Exterior1st_Stucco', 'Functional_Typ|GarageArea', 'GarageType_Detchd|SaleCondition_Normal', 'HouseStyle_1Story|HeatingQC_TA', 'RoofStyle_Hip|Exterior2nd_MetalSd', 'GarageQual_Gd|Functional_Mod', 'Foundation_BrkTil|Neighborhood_Tencode', 'BsmtExposure_Tencode|GrLivArea', 'BsmtFullBath|Street_Pave', 'LandSlope_Mod|Foundation_CBlock', 'LotShape_IR1|GarageArea', 'BldgType_Duplex|HouseStyle_1.5Fin', 'RoofStyle_Tencode|GarageYrBlt', 'MiscVal|BsmtCond_Gd', 'FireplaceQu_Ex|Fence_MnPrv', 'RoofMatl_CompShg|GarageCond_Gd', 'BsmtFinType2_Tencode|Electrical_FuseP', 'BsmtFinType1_BLQ|BsmtFinType1_Unf', 'Neighborhood_NAmes|Exterior2nd_Wd Sdng', 'BsmtHalfBath|Neighborhood_OldTown', 'MSZoning_RM|BsmtFinType2_Unf', 'FireplaceQu_Tencode|LotArea', 'Utilities_Tencode|TotRmsAbvGrd', 'SaleCondition_Alloca|MasVnrType_BrkFace', 'Neighborhood_NWAmes|BsmtCond_Gd', 'BsmtFinType2_ALQ|SaleCondition_Abnorml', 'Neighborhood_Tencode|Exterior2nd_CmentBd', 'GarageFinish_Unf|MiscVal', 'LotConfig_Corner|Exterior1st_WdShing', 'YearBuilt|3SsnPorch', 'LotFrontage|Neighborhood_Edwards', 'FireplaceQu_Gd|GarageType_Basment', 'YearBuilt|ExterCond_Gd', 'Condition2_Tencode|MiscFeature_Shed', 'Exterior2nd_Tencode|LotConfig_FR2', 'LandContour_Low|FireplaceQu_Fa', 'HouseStyle_SFoyer|BsmtExposure_No', 'Exterior1st_HdBoard|MasVnrType_Tencode', 'BsmtFinType2_ALQ|HouseStyle_SLvl', 'BsmtQual_Fa|BsmtFinType2_Rec', 'Functional_Tencode|SaleType_ConLw', 'Neighborhood_Blmngtn|GarageFinish_RFn', 'GarageQual_Gd|Neighborhood_SawyerW', 'LotConfig_FR2|ExterQual_Gd', 'LotShape_Reg|Condition2_Norm', 'BsmtFinType2_ALQ|BsmtFinType1_Rec', 'BsmtFinType2_BLQ|SaleType_New', 'LotShape_IR2|Foundation_BrkTil', 'RoofMatl_Tencode|BsmtCond_Tencode', 'Exterior2nd_MetalSd|TotRmsAbvGrd', 'LotShape_IR2|Condition1_Tencode', 'OpenPorchSF|BsmtExposure_Gd', 'GarageArea|LotShape_IR3', 'HeatingQC_Tencode|GarageCond_Fa', 'HeatingQC_TA|LotConfig_CulDSac', 'ExterCond_TA|Exterior2nd_Wd Shng', 'BsmtQual_TA|ScreenPorch', 'Street_Tencode|CentralAir_N', 'Alley_Pave|Neighborhood_Veenker', 'Neighborhood_CollgCr|BldgType_Tencode', 'LotConfig_Corner|MSSubClass', 'Utilities_Tencode|Condition2_Artery', 'Fireplaces|Neighborhood_IDOTRR', 'Neighborhood_Blmngtn|RoofStyle_Tencode', 'GarageArea|Exterior1st_WdShing', 'FireplaceQu_Po|Functional_Maj1', 'Exterior2nd_Stone|BsmtFinSF1', 'HeatingQC_Fa|BsmtFinType2_Unf', 'GarageArea|RoofMatl_WdShngl', 'SaleType_Tencode|Functional_Maj1', 'SaleCondition_Normal|Condition1_Tencode', 'Exterior1st_BrkFace|GarageType_Basment', 'BsmtFinType2_Rec|BsmtFinType2_Unf', 'TotRmsAbvGrd|Exterior2nd_Wd Sdng', 'LotConfig_Tencode|CentralAir_Tencode', 'SaleCondition_Tencode|SaleType_CWD', 'SaleType_WD|BsmtFinType2_Unf', 'HeatingQC_Tencode|MSSubClass', 'HeatingQC_Fa|MasVnrArea', 'HouseStyle_1Story|BsmtFinType2_ALQ', 'Functional_Tencode|GarageArea', 'FireplaceQu_TA|MSZoning_FV', 'LotConfig_Corner|MasVnrType_BrkFace', 'TotRmsAbvGrd|Neighborhood_NAmes', 'BsmtFinType2_Tencode|FireplaceQu_TA', 'Condition1_Feedr|Street_Grvl', 'Functional_Tencode|WoodDeckSF', 'ExterCond_Tencode|RoofStyle_Shed', 'Exterior2nd_MetalSd|Alley_Grvl', 'HeatingQC_TA|Neighborhood_NWAmes', 'BsmtFinType1_ALQ|SaleType_CWD', 'Exterior1st_Stucco|Neighborhood_NAmes', '2ndFlrSF|Exterior2nd_Wd Shng', 'Electrical_Tencode|MSZoning_RH', 'Exterior1st_HdBoard|KitchenQual_Fa', 'RoofStyle_Gable|Foundation_CBlock', 'BsmtFinType2_GLQ|HouseStyle_1.5Unf', 'BldgType_2fmCon|MSZoning_Tencode', 'ExterQual_TA|BsmtCond_TA', 'Heating_Tencode|SaleCondition_Family', 'Exterior2nd_Tencode|BsmtFinSF1', 'BsmtFinType1_ALQ|BsmtCond_Fa', 'YrSold|Condition1_RRAn', 'Exterior1st_CemntBd|BsmtCond_Gd', 'KitchenAbvGr|MiscFeature_Othr', 'KitchenAbvGr|BldgType_Twnhs', 'Alley_Pave|KitchenQual_TA', 'GarageQual_Po|SaleType_COD', 'Functional_Typ|KitchenQual_TA', 'LotShape_IR2|LotConfig_Corner', 'BsmtFinType1_BLQ|Exterior1st_Stucco', 'GarageYrBlt|MasVnrType_Stone', 'FireplaceQu_Po|Foundation_CBlock', 'Exterior2nd_VinylSd|BsmtFinType2_LwQ', 'RoofStyle_Gambrel|LowQualFinSF', 'TotalBsmtSF|BsmtQual_Tencode', 'LotConfig_CulDSac|Exterior1st_WdShing', 'GarageFinish_RFn|BsmtCond_TA', 'CentralAir_Tencode|Alley_Grvl', 'BsmtCond_Po|SaleType_COD', 'Exterior2nd_HdBoard|Functional_Min2', 'Heating_GasA|KitchenQual_Ex', 'LotShape_Reg|Fence_GdWo', 'Neighborhood_NAmes|Exterior1st_Wd Sdng', 'PavedDrive_N|PoolQC_Tencode', 'SaleCondition_Normal|WoodDeckSF', 'Neighborhood_NoRidge|GarageType_BuiltIn', 'Neighborhood_Edwards|Exterior2nd_Wd Sdng', 'RoofMatl_Tar&Grv|Exterior2nd_Brk Cmn', 'Fireplaces|GarageArea', 'FireplaceQu_Tencode|HouseStyle_1Story', 'Foundation_Stone|Exterior1st_MetalSd', 'Neighborhood_Tencode|SaleCondition_Family', 'Electrical_FuseP|Alley_Grvl', 'Alley_Grvl|MasVnrType_Stone', 'Foundation_PConc|CentralAir_N', 'Heating_GasW|BsmtFinType2_Rec', 'Alley_Pave|Exterior2nd_MetalSd', 'LotFrontage|BsmtQual_Tencode', 'Alley_Pave|Foundation_BrkTil', 'Street_Tencode|MSZoning_RH', 'SaleCondition_Family|Electrical_FuseF', 'GarageCond_Tencode|RoofStyle_Gable', 'Utilities_Tencode|Foundation_Slab', 'GarageFinish_Unf|LotFrontage', 'Neighborhood_NridgHt|Condition1_Tencode', 'FireplaceQu_Tencode|Street_Grvl', 'Condition1_RRAe|Neighborhood_Sawyer', 'GarageCond_Po|BsmtFinType2_ALQ', 'GarageQual_Gd|Heating_GasW', 'BsmtFinType2_ALQ|BldgType_Tencode', 'Neighborhood_ClearCr|LandContour_Lvl', 'LandContour_Low|GarageQual_Gd', 'GarageCond_Ex|KitchenQual_TA', 'Electrical_FuseP|Neighborhood_SawyerW', 'Exterior1st_BrkComm|MasVnrType_BrkFace', 'RoofStyle_Hip|BsmtQual_Gd', 'Heating_GasW|BldgType_Tencode', 'Alley_Tencode|RoofMatl_Tar&Grv', 'Exterior2nd_BrkFace|BsmtHalfBath', 'GarageType_Detchd|SaleCondition_Alloca', 'GarageQual_TA|Foundation_CBlock', 'GrLivArea|Condition1_PosA', 'MiscFeature_Othr|BsmtCond_Gd', 'GarageCars|SaleType_CWD', 'ExterCond_Gd|LandSlope_Gtl', 'GarageFinish_Fin|Condition2_Tencode', 'Exterior2nd_Stone|BsmtFinSF2', 'HeatingQC_TA|BsmtFinType1_BLQ', 'PoolQC_Tencode|MoSold', 'GarageCond_Ex|Condition2_Norm', 'TotRmsAbvGrd|HouseStyle_1.5Fin', 'KitchenAbvGr|GrLivArea', 'BsmtFinSF2|LotShape_IR3', 'YearBuilt|HeatingQC_Tencode', 'MiscFeature_Shed|Exterior1st_Plywood', 'Neighborhood_OldTown|FireplaceQu_Fa', 'Exterior1st_BrkFace|3SsnPorch', 'GarageQual_Fa|Foundation_CBlock', 'LotFrontage|MiscFeature_Tencode', 'Fence_GdPrv|GarageCond_Fa', 'Heating_Grav|WoodDeckSF', 'HalfBath|HouseStyle_1.5Fin', 'SaleCondition_Tencode|MSZoning_RL', 'RoofStyle_Flat|Alley_Tencode', 'MasVnrType_BrkCmn|BsmtFinSF1', 'Heating_Tencode|KitchenQual_Fa', 'BldgType_Duplex|BsmtCond_Fa', 'Foundation_PConc|ExterQual_Fa', 'TotalBsmtSF|HouseStyle_1.5Unf', 'RoofStyle_Gable|Neighborhood_MeadowV', 'YearRemodAdd|MasVnrArea', 'BsmtQual_TA|Condition1_Feedr', 'CentralAir_Tencode|Exterior1st_Wd Sdng', 'Exterior2nd_Stucco|LotShape_IR2', 'SaleCondition_Family|Exterior1st_Plywood', 'Exterior2nd_VinylSd|OverallCond', 'Condition2_Artery|BsmtQual_Gd', 'LandSlope_Gtl|Functional_Min2', 'BsmtCond_Po|PoolArea', 'Neighborhood_NPkVill|Condition1_PosA', 'Electrical_FuseA|Condition2_Artery', 'GarageQual_Gd|MasVnrArea', 'GarageQual_Tencode|MasVnrType_BrkFace', 'BsmtFinType2_GLQ|MSZoning_RM', 'GarageCond_TA|SaleType_New', 'LotConfig_FR2|YearBuilt', 'KitchenQual_Gd|ExterQual_Fa', 'Neighborhood_BrDale|Neighborhood_Timber', 'KitchenQual_TA|Condition1_RRAn', 'RoofStyle_Flat|Electrical_FuseF', 'LotShape_IR2|Fence_GdWo', 'BsmtFinSF1|Exterior2nd_Wd Shng', 'YearRemodAdd|Fence_Tencode', 'GarageFinish_Unf|FireplaceQu_Fa', 'YearBuilt|Neighborhood_Timber', 'Condition2_Norm|Exterior1st_MetalSd', 'HouseStyle_2.5Unf|MasVnrType_Tencode', 'SaleType_ConLw|Exterior2nd_AsphShn', 'GarageCond_TA|MSZoning_RH', 'Neighborhood_Blmngtn|Exterior2nd_Wd Shng', 'GarageCond_TA|LotShape_IR1', 'HouseStyle_Tencode|PavedDrive_Y', 'BsmtFinSF2|BsmtQual_Gd', 'LotFrontage|GarageCond_Tencode', 'GarageCond_Gd|BsmtCond_Po', 'Neighborhood_CollgCr|Exterior1st_Wd Sdng', 'GarageQual_TA|SaleCondition_Partial', 'SaleCondition_Family|Exterior1st_Wd Sdng', 'OverallQual|BsmtFinType2_BLQ', 'GarageFinish_Tencode|HouseStyle_2.5Unf', 'RoofStyle_Gambrel|2ndFlrSF', 'LandContour_HLS|Street_Pave', 'EnclosedPorch|Neighborhood_Sawyer', 'Neighborhood_SawyerW|Exterior1st_MetalSd', 'Heating_GasA|Electrical_Tencode', 'HouseStyle_2.5Unf|Neighborhood_IDOTRR', 'PavedDrive_Y|Neighborhood_SawyerW', 'LandContour_Low|Neighborhood_Blmngtn', 'Exterior2nd_MetalSd|Exterior1st_Plywood', 'Street_Tencode|Exterior2nd_VinylSd', 'GarageCond_TA|CentralAir_Y', 'Foundation_Stone|BsmtCond_Gd', 'LandSlope_Mod|Functional_Maj1', 'BsmtFinType2_ALQ|Electrical_FuseF', 'KitchenAbvGr|BsmtQual_Tencode', 'HeatingQC_Fa|GarageFinish_Tencode', 'MiscVal|Electrical_SBrkr', 'TotalBsmtSF|BsmtQual_Fa', 'Neighborhood_SWISU|SaleType_Oth', 'Functional_Min1|HouseStyle_2Story', 'HouseStyle_1Story|BsmtQual_Gd', 'Neighborhood_Veenker|1stFlrSF', 'Foundation_Tencode|KitchenQual_TA', 'SaleType_ConLw|KitchenQual_Tencode', 'Utilities_AllPub|WoodDeckSF', 'HeatingQC_TA|PavedDrive_P', 'BldgType_Twnhs|LandContour_Tencode', 'BldgType_2fmCon|PavedDrive_P', 'LotShape_Tencode|GarageQual_Fa', 'GarageType_Tencode|MSZoning_FV', 'Neighborhood_BrDale|Fence_Tencode', 'Foundation_Tencode|BsmtQual_Ex', 'BsmtQual_Fa|Exterior1st_Wd Sdng', 'OverallQual|Functional_Maj1', 'HouseStyle_Tencode|BsmtExposure_Mn', 'Functional_Typ|Exterior1st_WdShing', 'KitchenAbvGr|PavedDrive_Tencode', 'Alley_Pave|PoolArea', 'BedroomAbvGr|Utilities_AllPub', 'GarageCond_Tencode|GarageType_Basment', 'LandSlope_Mod|BsmtFinSF1', 'FireplaceQu_Tencode|1stFlrSF', 'MasVnrType_BrkCmn|MasVnrType_Stone', 'Exterior1st_BrkFace|SaleType_Tencode', 'GarageQual_Fa|GarageType_Attchd', 'GarageCond_Gd|Functional_Min2', 'GarageCars|HalfBath', 'HouseStyle_1Story|BsmtQual_Ex', 'Heating_GasA|GarageType_BuiltIn', 'MasVnrType_Stone|Exterior1st_Wd Sdng', 'Exterior1st_Stucco|MSZoning_C (all)', 'Condition1_Norm|MasVnrType_Tencode', 'Electrical_FuseP|Neighborhood_Gilbert', 'Neighborhood_NridgHt|Exterior1st_Tencode', 'FireplaceQu_Gd|GarageQual_Tencode', 'Condition1_Tencode|BldgType_1Fam', 'LotShape_IR1|HouseStyle_2.5Unf', 'Functional_Tencode|BedroomAbvGr', 'BsmtFinType1_Tencode|Exterior1st_Wd Sdng', 'Foundation_Stone|BsmtFinType1_Rec', 'Exterior2nd_BrkFace|LandSlope_Sev', 'Condition1_PosA|Exterior1st_WdShing', 'LotConfig_Corner|MasVnrType_Stone', 'SaleType_ConLI|HeatingQC_Ex', 'LotShape_Tencode|RoofMatl_CompShg', 'SaleType_ConLI|PavedDrive_P', 'Condition1_Norm|BsmtQual_Gd', 'Exterior1st_VinylSd|BsmtCond_Fa', 'RoofMatl_Tencode|SaleType_ConLw', 'KitchenAbvGr|HouseStyle_Tencode', 'BsmtFinType1_Tencode|SaleType_COD', 'SaleType_WD|TotRmsAbvGrd', 'Fireplaces|Foundation_Slab', 'ExterQual_TA|SaleType_COD', 'LandSlope_Mod|SaleCondition_Alloca', 'Electrical_FuseP|BldgType_1Fam', 'GarageYrBlt|MiscFeature_Gar2', 'Neighborhood_NPkVill|LotShape_Reg', 'BsmtFinType2_GLQ|Neighborhood_Timber', 'Fence_Tencode|Condition1_RRAe', 'Exterior2nd_Stucco|Alley_Grvl', 'RoofStyle_Flat|BsmtFinSF1', 'Neighborhood_Sawyer|Fence_MnPrv', 'Neighborhood_BrDale|LowQualFinSF', 'GarageCond_TA|BsmtCond_Po', 'LotConfig_Corner|GarageQual_Po', 'KitchenQual_Gd|Foundation_CBlock', 'Neighborhood_Edwards|SaleCondition_Abnorml', 'BsmtQual_Tencode|Foundation_Tencode', 'HouseStyle_1Story|BsmtFinType2_LwQ', 'Neighborhood_Tencode|Heating_Tencode', 'GarageType_Tencode|GarageType_Basment', 'OverallCond|Functional_Min2', 'KitchenAbvGr|Condition2_Tencode', 'RoofStyle_Flat|BedroomAbvGr', 'SaleType_WD|CentralAir_Tencode', 'RoofStyle_Gable|Neighborhood_Timber', 'RoofMatl_Tencode|Electrical_FuseP', 'BsmtFinType2_BLQ|BsmtQual_Gd', 'LowQualFinSF|BsmtFinType2_Rec', 'Exterior1st_AsbShng|SaleType_ConLI', 'KitchenQual_Tencode|BsmtExposure_Gd', 'Exterior1st_BrkFace|PavedDrive_P', 'BsmtFinSF2|CentralAir_Y', 'LandSlope_Mod|GarageType_Attchd', '3SsnPorch|Fence_MnPrv', 'HeatingQC_TA|HeatingQC_Tencode', 'Exterior2nd_VinylSd|FireplaceQu_Fa', 'Foundation_Stone|Functional_Min1', 'BsmtExposure_Tencode|Neighborhood_BrkSide', 'BsmtFinType2_GLQ|GarageType_BuiltIn', 'Neighborhood_CollgCr|LotConfig_Tencode', 'Foundation_Tencode|ExterCond_Tencode', 'Exterior2nd_Stone|Exterior1st_Wd Sdng', 'Foundation_PConc|Condition1_RRAe', 'LotShape_Reg|Exterior2nd_Tencode', 'LotShape_Tencode|FireplaceQu_TA', 'BsmtFinType2_GLQ|MSZoning_Tencode', 'RoofMatl_CompShg|KitchenQual_Ex', 'RoofMatl_Tencode|MiscFeature_Othr', 'YearBuilt|BsmtCond_Gd', 'TotalBsmtSF', 'Utilities_Tencode|SaleType_ConLw', 'Alley_Tencode|Neighborhood_StoneBr', 'LotShape_Reg|GarageCars', 'ExterCond_Gd|KitchenQual_Tencode', 'Neighborhood_NoRidge|1stFlrSF', 'Street_Tencode|Fence_GdPrv', 'Heating_Grav|SaleType_CWD', 'FireplaceQu_Tencode|MSZoning_RH', 'LandContour_Low|Foundation_BrkTil', 'Neighborhood_NPkVill|Foundation_Slab', 'Fireplaces|BsmtCond_Fa', 'GarageType_Detchd|HouseStyle_1Story', 'LandContour_Low|Neighborhood_Timber', 'LandContour_Low|RoofStyle_Gambrel', 'RoofMatl_Tencode|SaleType_ConLI', 'Neighborhood_OldTown|RoofMatl_WdShngl', 'Exterior2nd_Stucco|Exterior1st_CemntBd', 'Exterior2nd_BrkFace|ExterCond_Tencode', 'LandSlope_Mod|ExterQual_Fa', 'Heating_GasW|Condition2_Tencode', 'ExterCond_TA|Alley_Grvl', 'Fence_Tencode|BsmtCond_Po', 'GarageArea|Fence_GdWo', 'YearRemodAdd|HeatingQC_Gd', 'RoofMatl_Tencode|MiscFeature_Tencode', 'GarageCond_Po|HouseStyle_2Story', 'RoofMatl_Tencode|LandSlope_Mod', 'Functional_Maj2|BsmtCond_Tencode', 'KitchenQual_Gd|BsmtCond_Po', 'Exterior1st_Stucco|KitchenQual_Fa', 'Neighborhood_SawyerW|Exterior1st_Plywood', 'YearRemodAdd|Alley_Tencode', 'OverallQual|OpenPorchSF', 'Exterior1st_CemntBd|Functional_Mod', 'Neighborhood_NoRidge|HouseStyle_1.5Unf', 'Exterior2nd_VinylSd|RoofStyle_Shed', 'KitchenQual_Gd|HalfBath', 'Electrical_FuseF|BsmtQual_Gd', 'Neighborhood_Edwards|Functional_Min1', 'GarageCond_Tencode|SaleCondition_Normal', 'HeatingQC_Gd|LotConfig_Corner', 'FireplaceQu_Tencode|PoolQC_Tencode', 'Fence_Tencode|Neighborhood_StoneBr', '3SsnPorch|ExterQual_Tencode', 'Exterior1st_BrkComm|MSZoning_RH', 'Electrical_FuseP|Exterior1st_MetalSd', 'Exterior2nd_Stucco|Neighborhood_SWISU', 'TotalBsmtSF|Functional_Typ', 'Foundation_BrkTil|HalfBath', 'LotShape_IR2|LotConfig_Tencode', 'GarageCond_TA|Electrical_FuseF', 'Exterior1st_VinylSd|BsmtExposure_No', 'BsmtCond_Po|Foundation_CBlock', 'Electrical_FuseP|BsmtQual_Fa', 'Electrical_FuseP|MasVnrType_Stone', 'Functional_Tencode|Functional_Mod', 'Neighborhood_NPkVill|Exterior2nd_AsphShn', 'KitchenAbvGr|Fence_GdWo', 'BsmtFinType2_GLQ|Exterior1st_Wd Sdng', 'RoofMatl_Tencode|LotConfig_FR2', 'BldgType_Tencode|CentralAir_N', 'Utilities_AllPub|LotConfig_Inside', 'SaleCondition_Family|Exterior1st_VinylSd', 'Exterior1st_Plywood|LotConfig_Inside', 'HouseStyle_1Story|PavedDrive_Y', 'Fence_Tencode|Exterior2nd_CmentBd', 'Neighborhood_NPkVill|KitchenQual_Gd', 'Foundation_BrkTil|Heating_GasW', '2ndFlrSF|Exterior1st_Wd Sdng', 'Neighborhood_BrDale|Foundation_Stone', 'BldgType_TwnhsE|CentralAir_Tencode', 'GarageFinish_Unf|SaleType_COD', 'LandSlope_Gtl|RoofMatl_WdShngl', 'GarageFinish_Tencode|Exterior2nd_Plywood', 'LotConfig_FR2|Neighborhood_Veenker', 'HouseStyle_Tencode|BsmtUnfSF', 'BsmtFinType1_ALQ|Neighborhood_IDOTRR', 'BldgType_Duplex|Exterior2nd_VinylSd', 'GarageCars|RoofStyle_Gable', 'Electrical_FuseP|RoofStyle_Gable', 'Neighborhood_NridgHt|BsmtFinType1_LwQ', 'Neighborhood_Mitchel|Neighborhood_StoneBr', 'Exterior2nd_AsbShng|Electrical_FuseF', 'BsmtFinType2_GLQ|Exterior2nd_BrkFace', 'HeatingQC_TA|BsmtExposure_No', 'GarageCond_TA|Exterior2nd_Plywood', 'Exterior2nd_MetalSd|WoodDeckSF', 'FireplaceQu_Po|PoolArea', 'RoofMatl_Tencode|Neighborhood_Sawyer', 'Neighborhood_CollgCr|MiscFeature_Othr', 'GarageArea|SaleType_Oth', 'EnclosedPorch|TotRmsAbvGrd', 'Electrical_Tencode|GarageCond_Tencode', 'LotConfig_FR2|Exterior1st_Tencode', 'PavedDrive_Y|LotConfig_CulDSac', 'BsmtHalfBath|GarageType_BuiltIn', 'HeatingQC_Ex|Condition1_Feedr', 'MiscVal|KitchenQual_Tencode', 'LotConfig_FR2|KitchenQual_TA', 'Exterior1st_CemntBd|CentralAir_Y', 'Street_Tencode|Neighborhood_Tencode', 'HouseStyle_Tencode|LotConfig_CulDSac', 'LandContour_Low|Functional_Typ', 'Alley_Tencode|Heating_GasW', 'GarageType_Basment|KitchenQual_TA', 'Condition1_Tencode|Neighborhood_Timber', 'Neighborhood_CollgCr|Neighborhood_Timber', 'Functional_Typ|Condition1_RRAe', 'GarageType_Attchd|2ndFlrSF', 'GarageType_Detchd|MasVnrType_Stone', 'Neighborhood_Somerst|Foundation_Tencode', 'Heating_Grav', 'BsmtFinType2_GLQ|Fence_GdWo', 'BsmtQual_TA|SaleCondition_Partial', 'Heating_GasA|Exterior1st_CemntBd', 'PoolQC_Tencode|MiscFeature_Shed', 'Alley_Tencode|BsmtHalfBath', 'Condition1_PosN|ExterQual_Ex', 'GarageCond_Fa|Fence_MnPrv', 'MSZoning_C (all)|Exterior1st_BrkComm', 'Alley_Pave|TotRmsAbvGrd', 'GarageType_BuiltIn|LowQualFinSF', 'BsmtQual_Fa|MiscFeature_Gar2', 'EnclosedPorch|BsmtFinType2_BLQ', 'MiscVal|PavedDrive_P', 'Fence_GdPrv|BsmtFinType2_Unf', 'GarageFinish_Fin|SaleCondition_Family', 'LotConfig_Corner|HouseStyle_2.5Unf', 'Electrical_FuseP|Exterior2nd_Wd Sdng', 'GarageFinish_Unf|Neighborhood_Somerst', 'RoofStyle_Hip|Neighborhood_Edwards', 'BsmtFinType2_Unf|RoofMatl_WdShngl', 'HalfBath|Exterior2nd_Plywood', 'SaleCondition_Abnorml|HouseStyle_2Story', 'YrSold|Functional_Typ', 'Functional_Mod|WoodDeckSF', 'GarageQual_Gd|LandContour_HLS', 'Utilities_Tencode|HeatingQC_Tencode', 'RoofMatl_Tencode|FireplaceQu_Fa', 'PavedDrive_P|LotConfig_Inside', 'FullBath|Foundation_Tencode', 'Exterior1st_Stucco|CentralAir_N', 'Street_Tencode|LandSlope_Tencode', 'TotalBsmtSF|BsmtFinType1_ALQ', 'Exterior2nd_AsbShng|ExterQual_Tencode', 'SaleType_Tencode|FireplaceQu_Fa', 'Exterior2nd_BrkFace|LowQualFinSF', 'GarageCars|Heating_Grav', 'Functional_Tencode|Electrical_FuseA', 'Fence_GdPrv|1stFlrSF', 'PoolQC_Tencode|Condition2_Norm', 'Foundation_BrkTil|Neighborhood_Veenker', 'SaleCondition_Alloca|Exterior2nd_HdBoard', 'Utilities_Tencode|Exterior2nd_HdBoard', 'KitchenQual_Tencode|BsmtCond_Gd', 'BsmtFinType1_BLQ|WoodDeckSF', 'GarageCond_Gd|GarageQual_TA', 'Exterior2nd_BrkFace|SaleCondition_Family', 'GarageCond_TA|Utilities_AllPub', 'Neighborhood_Somerst|SaleCondition_Family', 'FireplaceQu_Tencode|Exterior2nd_Brk Cmn', 'BsmtFinType1_Tencode|Neighborhood_Sawyer', 'RoofStyle_Tencode|MSZoning_RH', 'HeatingQC_Ex|Exterior1st_VinylSd', 'KitchenAbvGr|Exterior1st_HdBoard', '1stFlrSF|BldgType_TwnhsE', 'SaleType_WD|ExterCond_Fa', 'MiscFeature_Othr|BsmtFullBath', 'GarageFinish_Unf|Exterior2nd_Wd Shng', 'HalfBath|Foundation_CBlock', 'Functional_Tencode|GarageType_Attchd', 'BsmtQual_Ex|GarageQual_Tencode', 'TotalBsmtSF|Exterior1st_Stucco', 'Exterior1st_Stucco|GarageFinish_RFn', 'KitchenAbvGr|MSSubClass', 'Alley_Pave|HouseStyle_1.5Fin', 'HouseStyle_SLvl|GarageType_2Types', 'FireplaceQu_Gd|BsmtFinType2_LwQ', 'BldgType_2fmCon|Electrical_Tencode', 'HouseStyle_SFoyer|LandContour_HLS', 'FireplaceQu_Po|GarageFinish_Tencode', 'EnclosedPorch|Condition1_RRAn', 'LandSlope_Mod|Condition1_Tencode', 'RoofStyle_Gambrel|BldgType_Tencode', 'MasVnrType_None|BsmtFinType1_GLQ', 'LandSlope_Sev|Exterior2nd_Wd Shng', 'Neighborhood_Edwards|ExterQual_Gd', 'Electrical_SBrkr|ScreenPorch', 'HeatingQC_Fa|Street_Grvl', 'Exterior2nd_BrkFace|LotConfig_FR2', 'GarageCars|KitchenQual_Tencode', 'HeatingQC_Fa|Neighborhood_Edwards', 'GarageType_BuiltIn|BldgType_TwnhsE', 'SaleCondition_Tencode|GarageType_Tencode', 'Functional_Mod', 'LandContour_Low|Exterior2nd_CmentBd', 'Heating_Grav|MSSubClass', 'Exterior2nd_Stone|GarageCond_Po', 'SaleType_COD|Neighborhood_MeadowV', 'BldgType_Duplex|SaleCondition_Abnorml', 'RoofStyle_Hip|HouseStyle_Tencode', 'BsmtFinType2_GLQ|Neighborhood_Crawfor', 'RoofMatl_Tar&Grv|BsmtFullBath', 'FireplaceQu_Gd|FullBath', 'BsmtFinType2_Rec|HouseStyle_1.5Fin', 'BsmtHalfBath|Neighborhood_SWISU', 'ExterQual_TA|Neighborhood_CollgCr', 'Fence_Tencode|GarageFinish_Tencode', 'Foundation_BrkTil|LandContour_HLS', 'BsmtExposure_Av|MSZoning_Tencode', 'Neighborhood_Blmngtn|BsmtFinType1_BLQ', 'Foundation_Tencode|RoofMatl_WdShngl', 'Neighborhood_OldTown|Functional_Maj2', 'Electrical_FuseP|Foundation_Tencode', 'Neighborhood_Mitchel|SaleType_COD', 'GarageCond_Gd|RoofStyle_Gable', 'LandContour_HLS|ScreenPorch', 'GarageCars|FireplaceQu_Ex', 'EnclosedPorch|OverallCond', 'Electrical_SBrkr|BsmtCond_Gd', 'Exterior2nd_Tencode|FireplaceQu_Fa', 'BedroomAbvGr|Exterior1st_WdShing', 'Exterior2nd_Stucco|Exterior1st_WdShing', 'MSZoning_RM|SaleType_Oth', 'HeatingQC_TA|Neighborhood_Blmngtn', 'YearRemodAdd|Functional_Typ', 'Neighborhood_Blmngtn|ExterCond_Tencode', 'MSZoning_RL|Exterior1st_MetalSd', 'Neighborhood_BrDale|Exterior1st_WdShing', 'GarageFinish_Unf|Exterior2nd_MetalSd', 'YearRemodAdd|LotShape_IR1', 'LandContour_Low|Exterior2nd_Tencode', 'Fireplaces|Functional_Maj1', 'Neighborhood_CollgCr|ExterQual_Fa', 'Exterior1st_CemntBd|MasVnrType_Stone', 'BsmtFinType2_GLQ|CentralAir_Y', 'Neighborhood_ClearCr|Exterior1st_Plywood', 'GarageType_Detchd|ExterCond_TA', 'OverallQual|BsmtCond_Fa', 'BsmtFinType2_ALQ|Condition1_PosN', 'GarageCond_Po|SaleType_ConLD', 'Exterior2nd_Tencode|PavedDrive_Tencode', 'SaleCondition_Normal|FireplaceQu_Ex', 'Exterior2nd_AsbShng|LotConfig_Corner', 'Condition1_Feedr|MSZoning_RH', 'ExterCond_TA|ExterCond_Tencode', 'LotShape_IR2|BsmtFinSF1', 'BsmtFinSF1|MSZoning_Tencode', 'GarageQual_Gd|LotConfig_Inside', 'OverallQual|BsmtCond_Po', 'LandContour_Lvl|Exterior2nd_Wd Shng', 'Electrical_FuseP|1stFlrSF', 'YrSold|Exterior2nd_Wd Shng', 'YearRemodAdd|LowQualFinSF', 'GarageQual_Fa|Street_Pave', 'GarageFinish_Tencode|BsmtFinType2_LwQ', 'RoofStyle_Shed|FireplaceQu_TA', 'LandContour_HLS|MoSold', 'Neighborhood_NAmes|BsmtFinType1_LwQ', 'SaleType_ConLw|Exterior1st_BrkComm', 'GarageQual_Po|RoofMatl_WdShngl', 'PavedDrive_N|ExterQual_Ex', 'Neighborhood_ClearCr|Exterior1st_MetalSd', 'Functional_Tencode|Foundation_Stone', 'GarageYrBlt|MasVnrType_BrkFace', 'EnclosedPorch|Functional_Min1', 'RoofMatl_Tencode|LowQualFinSF', 'GarageFinish_Fin|Neighborhood_StoneBr', 'EnclosedPorch|GarageArea', 'LotShape_IR1|LotConfig_FR2', 'HeatingQC_Fa|Heating_GasA', 'FireplaceQu_Tencode|FireplaceQu_Fa', 'SaleType_ConLw|GarageQual_TA', 'Electrical_FuseF|GarageFinish_RFn', 'OverallQual|GarageQual_Tencode', 'Exterior2nd_Wd Sdng|BsmtCond_Tencode', 'Exterior1st_BrkFace|LandSlope_Tencode', 'SaleType_Oth|MSZoning_FV', 'BsmtFinType2_GLQ|Condition1_PosA', 'ExterCond_Gd|Exterior1st_WdShing', 'LotShape_Tencode|SaleType_COD', 'GarageFinish_Fin|LotConfig_Tencode', 'BsmtFinType2_BLQ|LotShape_IR3', 'SaleType_Tencode|BsmtExposure_Av', 'HouseStyle_1.5Unf|MSZoning_RM', 'Exterior2nd_VinylSd|BsmtExposure_Mn', 'Neighborhood_ClearCr|Exterior2nd_HdBoard', 'GarageFinish_Unf|Functional_Min2', 'BedroomAbvGr|Condition1_Feedr', 'GarageCond_Fa|OverallCond', 'GarageQual_Tencode|Exterior2nd_Wd Shng', 'BsmtExposure_Tencode|SaleCondition_Abnorml', 'LandSlope_Mod|Neighborhood_NAmes', 'BsmtQual_TA|Exterior2nd_Wd Shng', 'FireplaceQu_Po|SaleType_ConLD', 'Foundation_CBlock|HouseStyle_SLvl', 'Neighborhood_Mitchel|BsmtFinType1_Unf', 'BsmtFinType2_Tencode|Exterior1st_Tencode', 'ExterQual_TA|GarageArea', 'LowQualFinSF|BsmtFinType1_LwQ', 'KitchenQual_Gd|Neighborhood_Timber', 'FireplaceQu_Gd|GarageType_BuiltIn', 'TotalBsmtSF|Heating_GasA', 'TotalBsmtSF|MasVnrType_Tencode', 'BldgType_Twnhs|Heating_Tencode', 'HeatingQC_Fa|Heating_Tencode', 'HeatingQC_Fa|Neighborhood_IDOTRR', 'Foundation_Stone|GarageQual_TA', 'HeatingQC_Tencode|BsmtCond_TA', 'BsmtFullBath|RoofMatl_WdShngl', 'LotShape_Reg|SaleType_New', 'Electrical_FuseP|KitchenQual_Fa', 'FireplaceQu_Po|LandContour_Lvl', 'RoofMatl_Tencode|LandSlope_Gtl', 'Electrical_FuseA|GarageCond_Tencode', 'Street_Tencode|BsmtFinType1_ALQ', 'HouseStyle_1Story|Neighborhood_SWISU', 'LandContour_Bnk|Fence_MnWw', 'Neighborhood_CollgCr|BsmtFullBath', 'Neighborhood_Blmngtn|Neighborhood_Sawyer', 'OverallQual|Neighborhood_Somerst', 'ExterQual_Ex|BsmtFinType2_Unf', 'Neighborhood_OldTown|GarageCond_Fa', 'SaleCondition_Partial|BsmtFinSF1', 'Exterior2nd_MetalSd|KitchenQual_TA', 'Fence_Tencode|Electrical_SBrkr', 'Neighborhood_Veenker|Neighborhood_NWAmes', 'Fence_Tencode|SaleCondition_Family', 'Neighborhood_Veenker|BsmtFinType1_ALQ', 'HeatingQC_Ex|Exterior1st_MetalSd', 'LandContour_HLS|BldgType_Tencode', 'Neighborhood_BrDale|Neighborhood_NoRidge', 'Condition1_Artery|GarageCond_Fa', 'GarageFinish_Fin|GarageType_BuiltIn', 'BsmtCond_Fa|Street_Pave', 'Neighborhood_Tencode|RoofMatl_WdShngl', 'Exterior1st_BrkComm|ExterQual_Tencode', 'RoofStyle_Gambrel|Condition1_RRAn', 'GarageFinish_Unf|Neighborhood_Crawfor', 'BldgType_2fmCon|Alley_Grvl', 'GarageCond_Tencode|Exterior2nd_Plywood', 'Exterior1st_BrkFace|Fireplaces', 'SaleCondition_Tencode|Exterior2nd_Brk Cmn', 'BsmtFinType2_GLQ|BsmtQual_Fa', 'YrSold|OverallCond', 'Condition2_Tencode|RoofStyle_Gable', 'HouseStyle_1Story|Foundation_Stone', 'Neighborhood_NPkVill|LandContour_Bnk', 'GarageCond_Po|MiscFeature_Gar2', 'Electrical_FuseP|SaleType_Oth', 'BsmtFinType2_BLQ|BldgType_1Fam', 'BsmtFinType1_Rec|KitchenQual_TA', 'GarageQual_TA|Alley_Grvl', 'SaleCondition_Family|RoofStyle_Shed', 'Neighborhood_Mitchel|ExterQual_Fa', 'KitchenQual_Gd|Neighborhood_MeadowV', 'Utilities_Tencode|Exterior2nd_AsphShn', 'Neighborhood_NAmes|PavedDrive_P', 'BsmtFinType2_ALQ|Neighborhood_Veenker', 'SaleCondition_Family|Fence_GdWo', 'MSZoning_C (all)|Neighborhood_IDOTRR', 'TotRmsAbvGrd|MSZoning_Tencode', 'Fence_GdPrv|RoofStyle_Tencode', 'Foundation_BrkTil|Functional_Min1', 'BsmtFinType2_Tencode|MSZoning_RH', 'GarageType_Attchd|OpenPorchSF', 'GarageCars|Foundation_Slab', 'Alley_Pave|Neighborhood_SawyerW', 'Exterior1st_CemntBd|BsmtUnfSF', '1stFlrSF|GarageCond_Fa', 'KitchenAbvGr|Exterior2nd_AsphShn', 'Utilities_Tencode|WoodDeckSF', 'Exterior2nd_VinylSd|GarageType_2Types', 'BsmtFinSF1|Functional_Min2', 'GarageQual_Gd|MSZoning_C (all)', 'Neighborhood_NridgHt|BldgType_Tencode', 'HeatingQC_Tencode|LotConfig_CulDSac', 'KitchenQual_Gd|ScreenPorch', 'LowQualFinSF|MiscFeature_Shed', 'BsmtFinType2_Rec|Exterior1st_Tencode', 'MoSold|Street_Grvl', 'BldgType_1Fam|LotConfig_Inside', 'LotConfig_Tencode|Fence_GdWo', 'PavedDrive_N|Neighborhood_Sawyer', 'TotRmsAbvGrd|RoofStyle_Shed', 'BsmtFinType1_ALQ|GarageQual_Fa', 'TotalBsmtSF|LandContour_HLS', 'GarageCond_Po|Neighborhood_Veenker', 'BldgType_Twnhs|GarageCond_Ex', 'HeatingQC_TA|SaleCondition_Partial', 'FireplaceQu_Gd|Neighborhood_Somerst', 'SaleType_ConLw|Neighborhood_Crawfor', 'Heating_GasA|Condition2_Tencode', 'Exterior2nd_Stucco|Functional_Tencode', 'LandSlope_Gtl|Foundation_CBlock', 'GarageFinish_RFn|KitchenQual_TA', 'RoofStyle_Flat|Exterior1st_Stucco', 'Neighborhood_StoneBr|Condition1_Tencode', 'Heating_Tencode|3SsnPorch', 'MiscFeature_Othr|BldgType_Tencode', 'LandSlope_Mod|Exterior2nd_Wd Sdng', 'Neighborhood_Crawfor|Exterior1st_MetalSd', 'Foundation_Stone|BsmtFinType1_GLQ', 'LotFrontage|Condition2_Norm', 'GarageCond_TA|BsmtFinType2_LwQ', 'MiscFeature_Othr|Functional_Maj1', 'Exterior2nd_BrkFace|FireplaceQu_Fa', 'Neighborhood_Blmngtn|LandSlope_Tencode', 'GarageType_Detchd|BldgType_1Fam', 'LandContour_HLS|GarageArea', 'Neighborhood_StoneBr|LotConfig_Inside', 'GarageCond_Ex|Neighborhood_IDOTRR', 'SaleType_Tencode', 'YearRemodAdd|GarageFinish_Tencode', 'Condition1_RRAe|CentralAir_Y', 'MSZoning_RM|KitchenQual_Fa', 'Heating_Grav|Functional_Min2', 'KitchenQual_Gd|MSZoning_FV', 'Neighborhood_SWISU|Neighborhood_NWAmes', 'Neighborhood_NPkVill|Electrical_FuseP', 'BsmtFinType2_ALQ|MasVnrArea', 'HeatingQC_Fa|RoofMatl_CompShg', 'Functional_Typ|HouseStyle_2.5Unf', 'LowQualFinSF|MSZoning_RL', 'Alley_Tencode|BsmtFinType1_GLQ', 'GarageType_Detchd|BsmtExposure_No', 'FireplaceQu_Po|MSZoning_RL', '3SsnPorch|Exterior1st_Wd Sdng', 'BsmtFinType2_BLQ|ScreenPorch', 'BldgType_Duplex|Neighborhood_ClearCr', 'Electrical_SBrkr|MSZoning_C (all)', 'HouseStyle_Tencode|ExterCond_Gd', 'ExterQual_TA|RoofStyle_Hip', 'Exterior2nd_Tencode|SaleType_CWD', 'Electrical_FuseA|MSZoning_Tencode', 'Foundation_Stone|SaleType_Oth', 'Alley_Grvl|LotShape_IR3', 'Alley_Tencode|GarageQual_TA', 'BsmtFinType1_Rec|LandSlope_Gtl', 'Condition1_Artery|LotShape_Tencode', 'GarageCond_Tencode|1stFlrSF', 'CentralAir_Tencode|Fence_MnWw', 'BsmtFinType2_Rec|Neighborhood_Sawyer', 'HeatingQC_TA|RoofMatl_WdShngl', 'RoofMatl_Tencode|LotConfig_Tencode', 'BsmtExposure_Tencode|BsmtExposure_Gd', 'PoolQC_Tencode|LandSlope_Gtl', 'GarageQual_Po|GarageArea', 'HeatingQC_Gd|Heating_GasW', 'LandContour_Low|CentralAir_Tencode', 'BsmtHalfBath|BsmtFinType1_LwQ', 'FireplaceQu_Gd|BsmtFinType2_GLQ', 'BsmtQual_TA|Street_Grvl', 'HeatingQC_Gd|LandSlope_Gtl', 'GarageFinish_Tencode|Condition1_RRAe', 'SaleCondition_Tencode|Exterior2nd_CmentBd', 'Condition1_RRAe|HouseStyle_2.5Unf', 'Exterior1st_Tencode|Exterior2nd_AsphShn', 'Neighborhood_Mitchel|LotConfig_Tencode', 'HouseStyle_Tencode|BsmtFullBath', 'MiscVal|CentralAir_N', 'ExterQual_TA|Functional_Maj2', 'Neighborhood_ClearCr|Neighborhood_StoneBr', 'HouseStyle_Tencode|Condition1_PosA', 'ExterCond_TA|Neighborhood_Mitchel', 'HeatingQC_TA|SaleType_COD', 'BldgType_Twnhs|HeatingQC_Tencode', 'RoofStyle_Shed|Exterior1st_WdShing', 'LotConfig_CulDSac|Exterior2nd_CmentBd', 'PavedDrive_N|Electrical_FuseA', 'TotalBsmtSF|SaleType_ConLD', 'BsmtCond_Gd|Street_Grvl', 'BldgType_Twnhs|BsmtExposure_Av', 'Heating_GasA|HouseStyle_2Story', 'PavedDrive_N|LandContour_Lvl', 'Street_Tencode|SaleCondition_Normal', 'OpenPorchSF|Neighborhood_BrkSide', 'LotShape_IR1|BsmtFullBath', 'TotalBsmtSF|BldgType_TwnhsE', 'Condition2_Norm|MasVnrType_BrkFace', 'Neighborhood_Veenker|CentralAir_N', 'Electrical_FuseA|LandContour_Bnk', 'GarageCond_Fa|GarageQual_Po', 'Neighborhood_SWISU|HouseStyle_SLvl', 'Exterior1st_BrkComm|GarageType_2Types', 'SaleType_ConLI|Exterior2nd_Wd Sdng', 'Exterior1st_VinylSd|MasVnrArea', 'KitchenAbvGr|SaleType_WD', 'Neighborhood_NAmes|FireplaceQu_Ex', 'SaleType_ConLD|BsmtFinType2_Rec', 'SaleCondition_Tencode|FireplaceQu_Gd', 'Neighborhood_NridgHt|GarageQual_Gd', 'Exterior1st_HdBoard|Exterior2nd_AsphShn', 'Condition1_PosA|BsmtFinType1_Unf', 'Alley_Pave|MoSold', 'Neighborhood_NridgHt|Heating_Tencode', 'Fireplaces|Exterior1st_Wd Sdng', 'LowQualFinSF|MSZoning_Tencode', 'Foundation_Tencode|BsmtCond_Gd', 'Alley_Tencode|ExterCond_Fa', 'GarageFinish_Tencode|Exterior2nd_Wd Sdng', 'Electrical_FuseP|FireplaceQu_Po', 'OverallQual|GarageCars', 'FireplaceQu_Ex|GarageCond_Ex', 'GrLivArea|MiscFeature_Gar2', 'Electrical_SBrkr|PavedDrive_Tencode', 'LotConfig_Tencode|PoolArea', '1stFlrSF|MSZoning_Tencode', 'HouseStyle_SFoyer|BsmtFullBath', 'Condition2_Tencode|Street_Pave', 'GarageType_Detchd|MasVnrType_None', 'Exterior2nd_Tencode|HouseStyle_1.5Fin', 'Functional_Maj2|HouseStyle_2.5Unf', 'PavedDrive_Y|BsmtQual_Fa', 'BsmtFinType1_ALQ|Condition2_Artery', 'Neighborhood_NridgHt|RoofStyle_Flat', 'LotShape_Tencode|ScreenPorch', 'MiscFeature_Tencode|MiscFeature_Gar2', 'BsmtQual_Tencode|SaleCondition_Alloca', 'Exterior1st_HdBoard|BsmtFinType2_BLQ', 'SaleType_Tencode|MiscFeature_Tencode', 'SaleCondition_Alloca|KitchenQual_Fa', 'Exterior2nd_CmentBd|GarageYrBlt', 'TotalBsmtSF|MasVnrType_Stone', 'Utilities_Tencode|GarageFinish_Tencode', 'GarageQual_Gd|RoofStyle_Tencode', 'BsmtFinType2_LwQ|SaleType_Oth', 'GarageType_Detchd|FireplaceQu_Po', 'Condition1_RRAe|GarageYrBlt', 'YrSold|GarageFinish_Unf', 'LandContour_Low|Condition2_Artery', 'Exterior2nd_Stucco|Foundation_PConc', 'ExterCond_Tencode|MSZoning_C (all)', 'KitchenAbvGr|LotShape_IR3', 'Functional_Mod|GarageFinish_RFn', 'MSZoning_Tencode|Fence_MnPrv', 'MSSubClass|Condition2_Norm', 'HouseStyle_1Story|BsmtQual_TA', 'MSZoning_Tencode|MasVnrType_BrkFace', 'HouseStyle_Tencode|BsmtCond_Tencode', 'LotShape_IR1|ExterCond_TA', 'SaleType_WD|1stFlrSF', 'BsmtFinType2_Rec|Condition1_RRAn', 'GarageType_Basment', 'Condition1_Artery|Foundation_Stone', 'BldgType_Twnhs|Fence_MnPrv', 'FireplaceQu_Tencode|LandContour_Tencode', 'EnclosedPorch|Condition2_Tencode', 'SaleType_ConLw|GarageType_Attchd', 'Alley_Tencode|SaleType_ConLD', 'Condition1_Feedr|GarageType_Basment', 'KitchenQual_TA|BsmtExposure_Mn', 'GarageCond_Fa|LotConfig_Tencode', 'BsmtQual_Fa|Condition1_Feedr', 'HeatingQC_Gd|GarageType_Attchd', 'Condition1_Artery|SaleType_ConLI', 'Exterior1st_AsbShng|RoofMatl_CompShg', 'Functional_Maj2|MSZoning_FV', 'Exterior2nd_Stone|BsmtFinType2_Unf', 'LowQualFinSF|CentralAir_Tencode', 'BsmtExposure_Tencode|Fence_Tencode', 'ExterQual_Fa|MasVnrType_Tencode', 'LandContour_Tencode|Exterior1st_VinylSd', 'MiscVal|Exterior2nd_Brk Cmn', 'GarageCond_TA|Neighborhood_Mitchel', 'Neighborhood_Tencode|Neighborhood_OldTown', 'HeatingQC_Gd|SaleCondition_Partial', 'RoofMatl_Tar&Grv|Exterior1st_Plywood', 'Exterior1st_AsbShng|BsmtFinType1_LwQ', 'Street_Tencode|GarageType_Basment', 'Exterior2nd_Stucco|BsmtFinType2_LwQ', 'Neighborhood_Mitchel|YearBuilt', 'Foundation_CBlock|Exterior1st_Tencode', 'RoofStyle_Flat|LotConfig_Tencode', 'PavedDrive_Y|MiscFeature_Gar2', 'GarageFinish_Unf|BldgType_1Fam', 'Foundation_PConc|OverallCond', 'MiscFeature_Othr|Exterior2nd_Wd Shng', 'GarageYrBlt|ExterQual_Tencode', 'OpenPorchSF|Exterior1st_Plywood', 'LandSlope_Mod|ScreenPorch', 'CentralAir_N|HouseStyle_1.5Fin', 'Neighborhood_Sawyer|Fence_MnWw', 'Functional_Tencode|Neighborhood_Crawfor', 'Exterior2nd_VinylSd|BsmtFinType1_LwQ', 'RoofMatl_Tencode|CentralAir_Y', 'BsmtFinType1_GLQ|BsmtExposure_Mn', 'PavedDrive_N|Foundation_BrkTil', 'LandSlope_Mod|Neighborhood_NoRidge', 'HeatingQC_Fa|RoofMatl_WdShngl', 'LandSlope_Sev|PavedDrive_Y', 'SaleCondition_Alloca|2ndFlrSF', 'Utilities_Tencode|FireplaceQu_Gd', 'Neighborhood_NoRidge|BsmtFinType1_ALQ', 'BldgType_Duplex|BsmtFinType1_BLQ', 'Condition1_PosA|FireplaceQu_Fa', 'BsmtFinSF2|HeatingQC_Ex', 'SaleType_ConLI|HouseStyle_SLvl', 'Fence_Tencode|GarageYrBlt', 'Alley_Tencode|SaleCondition_Alloca', 'LowQualFinSF|Condition1_Norm', 'PavedDrive_Y|FireplaceQu_TA', 'GarageCond_Gd|RoofMatl_WdShngl', 'Neighborhood_NridgHt|BsmtFinType1_Unf', 'Condition1_RRAe|SaleType_COD', 'LandContour_Tencode|Fence_MnWw', 'FireplaceQu_TA|Fence_MnWw', 'SaleType_WD|MasVnrType_None', 'Condition2_Tencode|Exterior1st_VinylSd', 'BsmtFinType1_Tencode|LandSlope_Sev', 'Fence_Tencode|Condition1_PosA', 'Heating_GasA|Exterior2nd_Plywood', 'Functional_Typ|RoofStyle_Shed', 'KitchenQual_Ex|1stFlrSF', 'Foundation_BrkTil|SaleCondition_Normal', 'BldgType_Twnhs|Exterior2nd_MetalSd', 'MasVnrType_BrkCmn|MasVnrType_Tencode', 'RoofStyle_Flat|Condition2_Artery', 'HouseStyle_Tencode|Exterior2nd_AsphShn', 'BsmtFinType2_BLQ|Exterior2nd_Plywood', 'Exterior2nd_Stone|PoolArea', 'Functional_Min1|BsmtUnfSF', 'RoofStyle_Hip|BsmtFinType1_ALQ', 'HouseStyle_SFoyer|Foundation_Stone', 'Neighborhood_Veenker|Neighborhood_MeadowV', 'GarageCond_TA|GarageType_Basment', 'BsmtQual_Fa|Electrical_FuseF', 'ExterCond_TA|RoofStyle_Shed', 'GarageType_BuiltIn|MiscFeature_Gar2', 'Fence_GdPrv|Foundation_CBlock', 'LandContour_Low|PavedDrive_Y', 'Exterior2nd_VinylSd|GarageCond_Fa', 'PavedDrive_N|Fence_GdWo', 'GrLivArea|BsmtQual_Gd', 'LandContour_HLS|ExterCond_Tencode', 'MasVnrType_None|LotConfig_Inside', 'PavedDrive_N|BldgType_1Fam', 'Street_Tencode|LotShape_IR1', 'ExterQual_TA|Exterior1st_CemntBd', 'MoSold|GarageQual_Po', 'GarageType_CarPort|MasVnrType_None', 'HouseStyle_1Story|HouseStyle_1.5Fin', 'LotConfig_FR2|ScreenPorch', 'Exterior1st_VinylSd|Functional_Min2', 'RoofStyle_Flat|SaleCondition_Alloca', 'Neighborhood_Somerst|CentralAir_N', 'EnclosedPorch|HeatingQC_Fa', 'HouseStyle_2.5Unf|BsmtCond_TA', 'LowQualFinSF|MasVnrType_BrkFace', 'Exterior2nd_VinylSd|BsmtQual_Ex', 'EnclosedPorch|BsmtCond_Po', 'LandSlope_Sev|ExterQual_Gd', 'Neighborhood_Tencode|Exterior1st_MetalSd', 'Exterior2nd_Stucco|GarageArea', 'Electrical_FuseA|ExterCond_Gd', 'SaleCondition_Normal|BsmtExposure_No', 'RoofStyle_Gable|Functional_Min2', 'Heating_GasA|Electrical_FuseF', 'Neighborhood_BrDale|HeatingQC_Fa', 'Fence_GdPrv|BldgType_Tencode', 'KitchenAbvGr|Neighborhood_MeadowV', 'KitchenQual_TA|GarageType_2Types', 'SaleType_ConLD|LandContour_Bnk', 'BsmtFinType1_GLQ|Functional_Min2', 'RoofMatl_CompShg|Neighborhood_StoneBr', 'GarageCond_TA|WoodDeckSF', 'OverallCond|Condition1_RRAn', 'HouseStyle_1Story', 'Neighborhood_Edwards|Neighborhood_BrkSide', 'FireplaceQu_TA|CentralAir_N', 'Exterior1st_HdBoard|Exterior1st_WdShing', 'Exterior1st_Stucco|LandContour_Lvl', 'PavedDrive_Tencode|Electrical_FuseF', 'Heating_GasA|GarageType_CarPort', 'GarageCond_Po|Exterior1st_Tencode', 'Neighborhood_NridgHt|TotalBsmtSF', 'RoofMatl_Tar&Grv|BsmtExposure_No', 'Functional_Maj1|MSZoning_RM', 'Functional_Maj2|Condition1_PosN', 'MiscFeature_Othr|BldgType_1Fam', 'BsmtFinType1_Tencode|LandSlope_Mod', 'FireplaceQu_Tencode|RoofMatl_Tencode', 'MSZoning_RL|MasVnrType_BrkFace', 'SaleType_WD|SaleType_New', 'LotShape_IR2|LotConfig_CulDSac', 'KitchenQual_Ex|FireplaceQu_TA', 'Utilities_Tencode|Neighborhood_Mitchel', 'Exterior1st_CemntBd|LotConfig_Tencode', 'Functional_Typ|LotArea', 'GarageQual_Fa|BsmtCond_Po', 'Neighborhood_Crawfor|ExterQual_Tencode', 'BedroomAbvGr|ExterQual_Fa', 'KitchenAbvGr|HeatingQC_TA', 'KitchenQual_Gd|KitchenQual_Tencode', 'Functional_Min2|ExterQual_Fa', 'BldgType_Tencode|Exterior2nd_AsphShn', 'Exterior2nd_MetalSd|HouseStyle_2Story', 'Neighborhood_CollgCr|MiscFeature_Tencode', 'Neighborhood_Tencode|Condition2_Tencode', 'HouseStyle_1Story|ScreenPorch', 'BsmtFinType2_Unf|MSZoning_RL', 'RoofStyle_Flat|Heating_GasW', 'PoolArea|HouseStyle_SLvl', 'HouseStyle_Tencode|Condition2_Norm', 'MasVnrArea|HouseStyle_2Story', 'LandSlope_Sev|MSZoning_FV', 'Condition1_PosN|Exterior2nd_Wd Shng', 'Exterior2nd_MetalSd|GarageFinish_RFn', 'Fence_GdWo|GarageCond_Ex', 'Neighborhood_Mitchel|Exterior1st_VinylSd', 'Functional_Tencode|BsmtFinType2_BLQ', '1stFlrSF|Street_Grvl', 'FireplaceQu_Tencode|Foundation_Tencode', 'Exterior2nd_AsbShng|Neighborhood_StoneBr', 'Street_Tencode|BsmtFinType1_GLQ', 'BsmtCond_Tencode|BsmtExposure_No', 'Exterior2nd_AsbShng|Neighborhood_Gilbert', 'SaleCondition_Alloca|Functional_Min1', 'BldgType_2fmCon|Heating_GasA', 'Fireplaces|Neighborhood_Gilbert', 'GarageType_Detchd|MiscVal', 'CentralAir_Tencode|GarageQual_Tencode', 'Neighborhood_CollgCr|MasVnrType_BrkFace', 'Neighborhood_Edwards|CentralAir_Tencode', 'RoofMatl_Tencode|BsmtFinType1_GLQ', 'Fireplaces|KitchenQual_Tencode', 'GarageQual_Tencode|Exterior1st_MetalSd', 'SaleType_ConLw|OpenPorchSF', 'SaleType_New|MSZoning_RM', 'LandContour_Bnk|ExterCond_Tencode', 'LotConfig_FR2|BsmtFinType1_Rec', 'GarageFinish_Tencode|HouseStyle_1.5Fin', 'YearBuilt|MasVnrType_Stone', 'MiscFeature_Othr|Neighborhood_MeadowV', 'Condition1_Tencode|HouseStyle_2Story', 'Exterior1st_BrkComm|Neighborhood_MeadowV', 'Neighborhood_Somerst|Neighborhood_NAmes', 'KitchenQual_Ex|ExterCond_Gd', 'BsmtExposure_Tencode|Exterior1st_BrkComm', 'LandContour_Lvl|Neighborhood_NWAmes', 'Neighborhood_NridgHt|Exterior1st_CemntBd', 'LandContour_Tencode|PavedDrive_Tencode', 'Foundation_Tencode|FireplaceQu_Ex', 'RoofMatl_CompShg|Exterior1st_Wd Sdng', 'Functional_Maj1|BsmtExposure_Av', 'Exterior2nd_Tencode|Heating_Tencode', 'LotArea|Street_Grvl', 'MasVnrArea|MasVnrType_BrkFace', 'BsmtFinSF2|LandContour_Bnk', 'GarageType_Detchd|FullBath', 'Functional_Typ|GarageQual_Tencode', 'LotShape_IR2|Neighborhood_Edwards', 'Neighborhood_Edwards|GarageYrBlt', 'Functional_Typ|SaleType_Oth', 'Alley_Pave|Condition2_Artery', 'BsmtCond_Tencode|BsmtExposure_Mn', 'Neighborhood_NridgHt|HouseStyle_1.5Fin', 'GarageType_Tencode|LandContour_Tencode', 'GarageYrBlt|GarageType_2Types', 'HeatingQC_Ex|Exterior1st_Plywood', 'FireplaceQu_Po|Functional_Maj2', 'RoofMatl_Tencode|GarageCond_TA', 'GarageQual_Gd|FireplaceQu_TA', 'TotalBsmtSF|MiscFeature_Gar2', 'BldgType_2fmCon|ExterQual_Gd', 'Exterior2nd_Stone|BsmtQual_Fa', 'EnclosedPorch|ExterCond_Fa', 'Electrical_FuseF|ExterQual_Ex', 'Exterior1st_BrkFace|Condition2_Artery', 'ExterQual_Ex|MasVnrType_BrkFace', 'BldgType_2fmCon|Electrical_FuseP', 'LandSlope_Tencode|RoofStyle_Gambrel', 'BsmtQual_Tencode|BsmtCond_Gd', 'GarageCond_Tencode|Fence_MnPrv', 'RoofMatl_CompShg|GarageType_2Types', 'LandSlope_Mod|Neighborhood_Crawfor', 'BsmtFinType2_ALQ|Street_Pave', 'GarageType_Basment|FireplaceQu_TA', 'Neighborhood_NoRidge|SaleCondition_Partial', 'Neighborhood_Blmngtn|Neighborhood_Mitchel', 'GarageType_Attchd|MasVnrType_BrkFace', 'LotConfig_CulDSac|BsmtFinType1_Rec', 'BsmtFinType2_Rec|GarageArea', 'GarageType_Detchd|MiscFeature_Othr', 'BldgType_Twnhs|GarageQual_Fa', 'Heating_Tencode|PavedDrive_Tencode', 'GarageCond_Po|ExterCond_Tencode', 'LotConfig_FR2|MSZoning_Tencode', 'BsmtQual_Tencode|Neighborhood_BrkSide', 'BsmtFinType2_BLQ|GarageFinish_RFn', 'HeatingQC_Ex|MasVnrType_None', 'RoofStyle_Flat|HeatingQC_TA', 'KitchenQual_TA|Exterior2nd_Wd Shng', 'BsmtFinType2_Rec|LandSlope_Gtl', 'Electrical_FuseF|RoofStyle_Shed', 'GarageType_BuiltIn|BsmtCond_Po', 'BsmtCond_Fa|Exterior1st_Plywood', 'Fireplaces|Exterior2nd_Plywood', 'RoofMatl_CompShg|Foundation_Slab', 'SaleCondition_Family|SaleType_CWD', 'ExterQual_Gd|MasVnrType_Stone', 'Neighborhood_Crawfor|Fence_MnWw', 'LandContour_Low|CentralAir_N', 'LotConfig_CulDSac|Exterior1st_Plywood', 'OpenPorchSF|CentralAir_N', 'HeatingQC_Fa|SaleType_ConLI', 'RoofStyle_Tencode|Exterior1st_BrkComm', 'GrLivArea|Neighborhood_ClearCr', 'Heating_GasA|MasVnrType_Stone', 'RoofStyle_Hip|Functional_Mod', 'GarageFinish_Fin|HouseStyle_SLvl', 'Exterior2nd_AsbShng|Exterior2nd_Brk Cmn', 'LotShape_Reg|GarageQual_Gd', 'RoofStyle_Shed', 'CentralAir_N|ExterQual_Fa', 'BsmtCond_Po|Exterior2nd_Brk Cmn', 'Neighborhood_Edwards|ExterCond_Tencode', 'BsmtFinType2_GLQ|MasVnrType_Stone', 'OverallQual|BsmtFinType1_GLQ', 'FireplaceQu_Tencode|Exterior2nd_VinylSd', 'GrLivArea|CentralAir_N', 'Electrical_Tencode|Neighborhood_Sawyer', 'LotShape_IR1|ExterQual_Ex', 'Exterior1st_AsbShng|Fence_MnWw', 'HeatingQC_Gd|LandSlope_Mod', 'LotFrontage|LotConfig_Inside', 'GarageQual_Fa|Functional_Min2', 'FireplaceQu_Po|BsmtFinType2_Unf', 'MiscVal|MSZoning_RM', 'SaleCondition_Family|2ndFlrSF', 'Exterior2nd_BrkFace|BsmtExposure_Mn', 'PavedDrive_Y|HalfBath', 'EnclosedPorch|Exterior2nd_MetalSd', 'GarageArea|Condition2_Norm', 'Street_Grvl|Exterior1st_MetalSd', 'Exterior2nd_Stone|MSZoning_C (all)', 'PoolQC_Tencode|Neighborhood_NAmes', 'Exterior1st_AsbShng|Utilities_AllPub', 'Neighborhood_Mitchel|SaleType_ConLI', 'MSSubClass|Neighborhood_MeadowV', 'BsmtFinType2_ALQ|ExterCond_Tencode', 'SaleType_WD|Exterior2nd_Brk Cmn', 'Heating_GasA|LotConfig_CulDSac', 'SaleType_ConLI|BsmtQual_Ex', 'BldgType_Twnhs|BsmtQual_Fa', 'FullBath|BsmtHalfBath', 'Exterior1st_CemntBd|HouseStyle_2.5Unf', 'GarageArea|BldgType_TwnhsE', 'LandContour_Lvl|HouseStyle_SLvl', 'Exterior2nd_Stone|Neighborhood_MeadowV', 'GarageQual_TA|OverallCond', 'Exterior1st_BrkFace|Neighborhood_Gilbert', 'MiscFeature_Shed|Foundation_CBlock', 'Neighborhood_NoRidge|MSZoning_RM', 'Neighborhood_ClearCr|BsmtHalfBath', 'RoofStyle_Gable|FireplaceQu_Ex', 'LotShape_IR1|Foundation_Tencode', 'CentralAir_Tencode|ExterQual_Fa', 'Neighborhood_CollgCr|RoofStyle_Tencode', 'ExterQual_TA|Condition1_PosN', 'LotConfig_Corner|ExterCond_Tencode', 'Neighborhood_NPkVill|RoofStyle_Shed', 'Neighborhood_Veenker|HalfBath', 'RoofStyle_Flat|Exterior2nd_CmentBd', 'Neighborhood_NPkVill|Fence_GdPrv', 'HeatingQC_Tencode|ExterQual_Ex', 'Neighborhood_Veenker|ExterCond_Fa', 'Utilities_Tencode|Neighborhood_NWAmes', 'RoofMatl_CompShg|SaleCondition_Abnorml', 'Electrical_SBrkr|2ndFlrSF', 'BsmtHalfBath|Neighborhood_NoRidge', 'Exterior2nd_Tencode|Neighborhood_Sawyer', 'HeatingQC_Ex|RoofStyle_Gambrel', 'Foundation_Tencode|CentralAir_N', 'RoofStyle_Gambrel|GarageFinish_RFn', 'MiscVal|Neighborhood_Veenker', 'RoofStyle_Tencode|ExterQual_Gd', 'YrSold|ExterQual_TA', 'FireplaceQu_Gd|SaleCondition_Alloca', 'FireplaceQu_Fa|ExterCond_Fa', 'LotConfig_FR2|Condition1_Tencode', 'GarageArea|Alley_Grvl', 'Neighborhood_ClearCr|BedroomAbvGr', 'HeatingQC_TA|Neighborhood_StoneBr', 'RoofStyle_Flat|Street_Grvl', 'MiscFeature_Othr|Electrical_FuseA', 'LotConfig_Corner|SaleCondition_Partial', 'BsmtFinType1_ALQ|BsmtCond_Po', 'SaleCondition_Normal|Functional_Min2', 'Condition2_Tencode|Condition1_RRAn', 'PoolQC_Tencode|HalfBath', 'GarageQual_TA|Condition1_Tencode', 'SaleType_CWD|Exterior2nd_HdBoard', 'GarageQual_Gd|GarageCond_Gd', 'ScreenPorch|GarageType_2Types', 'LandSlope_Tencode|Exterior1st_Tencode', 'Foundation_Tencode|Neighborhood_Timber', 'BldgType_Tencode|WoodDeckSF', 'SaleType_WD|LandSlope_Gtl', 'Utilities_Tencode|GarageCond_Ex', 'LandSlope_Gtl|Exterior2nd_AsphShn', 'HouseStyle_SFoyer|HouseStyle_1.5Fin', 'MSZoning_RM|2ndFlrSF', 'Exterior1st_AsbShng|LandContour_HLS', 'BsmtFinType1_Tencode|Exterior2nd_BrkFace', 'LandSlope_Sev|RoofMatl_Tar&Grv', 'GrLivArea|MSZoning_C (all)', 'Electrical_FuseP|Condition1_RRAe', 'BsmtFinType1_Tencode|Exterior1st_Tencode', 'LotShape_IR1|Fence_Tencode', 'BsmtFinType2_GLQ|Heating_Tencode', 'LandSlope_Sev|Functional_Maj1', 'EnclosedPorch|Exterior2nd_Brk Cmn', 'Electrical_Tencode|BsmtExposure_Mn', 'Exterior2nd_BrkFace|FireplaceQu_Ex', 'Exterior2nd_Stucco|Neighborhood_Sawyer', 'BsmtQual_Ex|SaleType_Oth', 'BsmtFinSF2|Condition1_RRAn', 'ExterQual_Ex|BsmtFinSF1', 'HeatingQC_Tencode|Functional_Min2', 'YrSold|BsmtExposure_Av', 'Exterior2nd_Wd Sdng|SaleType_Oth', 'LandContour_Tencode|OverallCond', 'LandContour_Tencode|BsmtExposure_Mn', 'Exterior2nd_Stucco|Exterior1st_MetalSd', 'Condition1_RRAn', 'FireplaceQu_Po|HalfBath', 'BsmtFinType2_ALQ|SaleType_ConLD', 'LandContour_HLS|KitchenQual_Tencode', 'BsmtFinType2_Tencode|PoolQC_Tencode', 'RoofStyle_Gable|PoolArea', 'Alley_Tencode|GarageCars', 'Exterior2nd_BrkFace|SaleType_WD', 'BldgType_Duplex|WoodDeckSF', 'MSZoning_RM|Exterior2nd_Plywood', 'Condition1_Artery|HeatingQC_TA', 'Foundation_Tencode|BsmtFinType1_LwQ', 'Exterior2nd_Stone|BsmtHalfBath', 'Exterior2nd_Tencode|LandContour_Lvl', 'GarageArea|Street_Pave', 'LandContour_Low|HouseStyle_1Story', 'Functional_Tencode|BsmtCond_Tencode', 'BsmtFinType2_Tencode|SaleType_Tencode', 'Alley_Pave|2ndFlrSF', 'GarageQual_Fa|MSZoning_C (all)', 'LandContour_Low|KitchenQual_Tencode', 'LotConfig_Corner|LotConfig_CulDSac', 'GarageFinish_Unf|Exterior2nd_AsphShn', 'Condition1_RRAe|OverallCond', 'Condition1_Feedr|Condition1_RRAn', 'Fireplaces|Exterior2nd_BrkFace', 'BsmtQual_Fa|LandContour_Lvl', 'ExterCond_Tencode|PoolArea', 'Exterior2nd_CmentBd|Exterior1st_MetalSd', 'Heating_Grav|SaleType_Oth', 'LandSlope_Sev|HouseStyle_2Story', 'Fence_GdPrv|LotConfig_CulDSac', 'Exterior2nd_HdBoard|HouseStyle_1.5Fin', 'OverallQual|GarageArea', 'HouseStyle_1Story|Condition1_PosA', 'Electrical_Tencode|CentralAir_Tencode', 'BsmtCond_Po|Neighborhood_BrkSide', 'Utilities_Tencode|BsmtQual_Ex', 'MiscFeature_Shed|Street_Grvl', 'KitchenQual_Fa|Exterior1st_BrkComm', 'BsmtQual_TA|Exterior1st_VinylSd', 'Exterior1st_CemntBd|BsmtExposure_Mn', 'HouseStyle_1Story|BldgType_1Fam', 'GarageQual_Tencode|ScreenPorch', 'SaleCondition_Alloca|Exterior1st_VinylSd', 'BldgType_2fmCon|HouseStyle_1.5Unf', 'BsmtHalfBath|RoofStyle_Tencode', 'LandContour_Lvl|MSZoning_C (all)', 'Alley_Pave|SaleType_WD', 'BldgType_Twnhs|LotConfig_Tencode', 'Exterior1st_Plywood|Functional_Min2', 'HouseStyle_Tencode|LandSlope_Sev', 'KitchenAbvGr|OpenPorchSF', 'HouseStyle_1Story|SaleType_COD', 'Exterior1st_BrkFace|TotRmsAbvGrd', 'LotConfig_FR2|ExterQual_Tencode', 'BsmtExposure_Av|Neighborhood_StoneBr', 'GarageType_Tencode|SaleCondition_Normal', 'BldgType_1Fam|HouseStyle_1.5Fin', 'BsmtFinType1_Tencode|BsmtFinType2_ALQ', 'Foundation_PConc|Foundation_Stone', 'Functional_Min1|BsmtCond_Gd', 'LotShape_Tencode|HouseStyle_SFoyer', 'BsmtFinType1_ALQ|Condition2_Tencode', 'MSZoning_FV|Exterior1st_Wd Sdng', 'BldgType_Twnhs|MSZoning_RL', 'BldgType_2fmCon|GarageCond_Tencode', 'ExterQual_TA|FireplaceQu_Po', 'Foundation_CBlock|BsmtExposure_Gd', 'Functional_Tencode|Electrical_FuseP', 'Electrical_FuseA|Fence_GdPrv', 'BsmtHalfBath|CentralAir_N', 'Foundation_PConc|LandSlope_Tencode', 'Functional_Min1|RoofMatl_WdShngl', 'BsmtFullBath|Condition2_Tencode', 'LotConfig_Tencode|HouseStyle_SLvl', 'Exterior1st_BrkFace|LandContour_HLS', 'HalfBath|MasVnrType_Tencode', 'LotFrontage|BsmtCond_Tencode', 'OverallQual|Utilities_Tencode', 'BsmtExposure_Tencode|LandContour_Low', 'Condition1_PosN|ScreenPorch', 'RoofMatl_Tar&Grv|GarageType_BuiltIn', 'TotalBsmtSF|BsmtCond_Tencode', 'Utilities_Tencode|Exterior1st_Stucco', 'CentralAir_Tencode|OverallCond', 'PavedDrive_N|RoofMatl_Tar&Grv', 'Exterior1st_BrkFace|Neighborhood_NWAmes', 'SaleType_ConLw|BsmtFinType1_GLQ', 'BldgType_2fmCon|LotArea', 'GarageQual_Gd|LotConfig_FR2', 'BsmtFinType2_BLQ|KitchenQual_TA', 'Neighborhood_Veenker|MiscFeature_Tencode', 'EnclosedPorch|MSZoning_RL', 'Neighborhood_Somerst|MiscFeature_Othr', 'Neighborhood_Somerst|2ndFlrSF', 'ExterQual_Ex|MasVnrArea', 'Electrical_SBrkr|BsmtFinType2_LwQ', 'PavedDrive_N|Electrical_Tencode', 'LotConfig_FR2|Heating_GasW', 'BsmtFinType1_Tencode|BsmtFinType1_LwQ', 'LotShape_IR2|GarageType_Basment', 'LotConfig_Corner|BsmtUnfSF', 'MSZoning_C (all)|BsmtCond_Tencode', 'Neighborhood_CollgCr|LowQualFinSF', 'GarageCond_Po|FireplaceQu_Fa', 'LandContour_HLS|BsmtFinType1_LwQ', 'Heating_Tencode|BsmtQual_TA', 'YearBuilt|RoofMatl_Tar&Grv', 'Functional_Typ|LotConfig_Inside', 'SaleType_Tencode|HouseStyle_1.5Unf', 'LotConfig_FR2|Exterior2nd_AsphShn', 'BsmtFinType2_Rec|Functional_Mod', 'Heating_GasA|KitchenQual_TA', 'GarageType_Detchd|LandContour_Low', 'BsmtFinSF1|BsmtFinType1_Unf', 'BsmtQual_Ex|PoolQC_Tencode', 'KitchenQual_Ex|Neighborhood_NWAmes', 'HouseStyle_1Story|MiscFeature_Othr', 'RoofStyle_Tencode|PoolArea', 'Exterior2nd_Tencode|Fence_MnPrv', 'Exterior1st_HdBoard|KitchenQual_TA', 'EnclosedPorch|GarageFinish_Fin', 'RoofStyle_Flat|BsmtFinType1_BLQ', 'Neighborhood_Timber|BsmtCond_TA', 'HouseStyle_1Story|GarageQual_Fa', 'Neighborhood_BrDale|MSZoning_Tencode', 'Exterior1st_HdBoard|Fence_MnPrv', 'Neighborhood_NPkVill|BsmtFullBath', 'Neighborhood_ClearCr|HouseStyle_SLvl', 'BsmtFinType2_Tencode|Exterior1st_HdBoard', 'LandSlope_Sev|MSZoning_Tencode', 'Exterior2nd_AsbShng|HeatingQC_TA', 'Utilities_Tencode|Heating_GasA', 'LotShape_IR1|CentralAir_Y', 'GarageQual_Fa|GarageFinish_Tencode', 'BsmtFinType1_Tencode|Exterior2nd_Tencode', 'ExterQual_TA|FireplaceQu_Ex', 'Exterior2nd_CmentBd|BsmtFinType1_LwQ', 'MiscVal|LotConfig_Inside', 'Neighborhood_Veenker|Street_Grvl', 'Heating_GasA|GarageArea', 'RoofStyle_Gambrel|LotConfig_Tencode', 'LotShape_Reg|3SsnPorch', 'SaleCondition_Abnorml|BsmtCond_TA', 'Neighborhood_Tencode|GarageQual_TA', 'GarageFinish_Unf|Exterior2nd_Tencode', 'Neighborhood_Veenker|SaleCondition_Alloca', 'RoofStyle_Hip|BsmtExposure_No', 'Exterior2nd_Tencode|KitchenQual_TA', 'Condition1_Artery|MSZoning_RM', 'Alley_Pave|LandSlope_Sev', 'RoofMatl_CompShg|RoofStyle_Gable', 'Exterior2nd_BrkFace|GarageArea', 'BsmtFinType1_BLQ|Neighborhood_Sawyer', 'Exterior1st_AsbShng|Exterior1st_Stucco', 'GarageQual_Fa|BsmtCond_Fa', 'BsmtFinType1_Rec|Neighborhood_NAmes', 'Neighborhood_Veenker|BsmtFullBath', 'MiscFeature_Othr|RoofMatl_WdShngl', 'Neighborhood_NridgHt|ExterCond_Fa', 'BldgType_Twnhs|Neighborhood_StoneBr', 'LotFrontage|Neighborhood_Gilbert', 'Neighborhood_Edwards|OverallCond', 'Neighborhood_Edwards|Condition1_RRAe', 'BsmtQual_Ex|GarageFinish_Tencode', 'Foundation_BrkTil|Neighborhood_BrkSide', 'CentralAir_Tencode|LotShape_IR3', 'EnclosedPorch|SaleCondition_Alloca', 'GrLivArea|Foundation_Tencode', 'MasVnrType_None|SaleType_Oth', 'MiscVal|GarageArea', 'Exterior1st_HdBoard|BsmtCond_Gd', 'Neighborhood_Somerst|Alley_Grvl', 'FireplaceQu_Po|Condition1_RRAe', 'Exterior1st_BrkFace|EnclosedPorch', 'Foundation_PConc|Neighborhood_Timber', 'Exterior1st_Stucco|LandSlope_Sev', 'LotShape_IR2|FireplaceQu_Gd', 'HouseStyle_1Story|GarageType_Basment', 'Fence_Tencode|Neighborhood_BrkSide', 'Heating_Grav|GarageCond_Gd', 'MSZoning_C (all)|Condition2_Norm', 'LandSlope_Mod|MSZoning_Tencode', 'GarageQual_Gd|Exterior1st_WdShing', 'TotalBsmtSF|BsmtExposure_Av', 'LotConfig_CulDSac|Neighborhood_StoneBr', 'BsmtFinType2_ALQ|BsmtFinType2_LwQ', 'Electrical_SBrkr|GarageCond_Ex', 'PavedDrive_N|Neighborhood_Edwards', 'FireplaceQu_Gd|Neighborhood_Gilbert', 'PavedDrive_N|BsmtExposure_Mn', 'Neighborhood_Tencode|Condition1_PosN', 'YrSold|Exterior1st_Plywood', 'Neighborhood_Crawfor|Exterior1st_Tencode', 'OpenPorchSF|GarageCond_Ex', 'HeatingQC_Gd|GarageYrBlt', 'Neighborhood_Blmngtn|Electrical_SBrkr', 'Heating_Grav|KitchenQual_Fa', 'RoofStyle_Flat|ExterQual_Fa', 'RoofStyle_Hip|GarageYrBlt', 'LandContour_Lvl|GarageType_Attchd', 'MSZoning_FV|Functional_Min2', 'LotFrontage|LandContour_Lvl', 'BsmtFinType2_GLQ|Condition1_Tencode', 'ExterQual_TA|GarageType_2Types', 'FullBath|MasVnrType_Tencode', 'Neighborhood_Blmngtn|CentralAir_Y', 'LandSlope_Sev|BsmtFinType1_Unf', 'BsmtQual_Ex|BsmtQual_TA', 'Neighborhood_CollgCr|GarageFinish_Fin', 'SaleType_ConLD|Condition2_Norm', 'LotShape_Tencode|Condition1_Feedr', 'Neighborhood_NAmes|GarageFinish_RFn', 'RoofStyle_Hip|BldgType_1Fam', 'BsmtFinSF2|BsmtFullBath', 'Electrical_SBrkr|ExterCond_Gd', 'Foundation_Tencode|Neighborhood_StoneBr', 'RoofStyle_Gambrel|Condition2_Artery', 'OverallQual|Neighborhood_BrkSide', 'RoofStyle_Shed|BsmtFinType2_Rec', 'SaleType_ConLD|GarageType_Basment', 'BsmtUnfSF|GarageCond_Ex', 'GarageCars|BsmtFinType2_Rec', 'SaleType_ConLD|FireplaceQu_Ex', 'BsmtCond_Gd|BsmtFinType1_Unf', 'Functional_Mod|SaleType_CWD', 'Neighborhood_Blmngtn|GarageCond_Gd', 'ExterQual_TA|SaleType_Tencode', 'BsmtHalfBath|BsmtFinType2_Unf', 'Foundation_BrkTil|Exterior2nd_AsphShn', 'HeatingQC_TA|HouseStyle_1.5Fin', 'RoofStyle_Gambrel|Condition1_Feedr', 'Neighborhood_Gilbert|Neighborhood_SawyerW', 'LandContour_HLS|Exterior1st_MetalSd', 'KitchenAbvGr|GarageCond_Gd', 'YearRemodAdd|SaleType_ConLD', 'LandSlope_Gtl|HouseStyle_2.5Unf', 'FireplaceQu_TA|WoodDeckSF', 'SaleType_ConLw|FireplaceQu_Po', 'ExterQual_Gd|MSZoning_FV', 'SaleCondition_Normal|Neighborhood_Sawyer', 'GarageCond_TA|RoofMatl_Tar&Grv', 'LandContour_HLS|Foundation_Slab', 'BedroomAbvGr|MSZoning_RH', 'Exterior2nd_Stone|Condition1_PosA', 'RoofStyle_Hip|Fence_MnPrv', 'Exterior1st_BrkFace|HouseStyle_SLvl', 'BldgType_Duplex|RoofStyle_Shed', 'Exterior1st_AsbShng|Electrical_FuseF', 'YrSold|BsmtFinType1_ALQ', 'LandContour_Bnk|Condition2_Norm', 'PoolQC_Tencode|BsmtCond_Tencode', 'BsmtFullBath|ExterCond_Tencode', 'BldgType_Twnhs|Exterior1st_Wd Sdng', 'Electrical_FuseA|3SsnPorch', 'FireplaceQu_Fa|RoofMatl_WdShngl', 'LotConfig_Corner|Electrical_FuseF', 'LandSlope_Sev|PoolArea', 'Neighborhood_Blmngtn|BsmtExposure_Av', 'GarageFinish_Fin|BsmtFinType1_GLQ', 'LotConfig_CulDSac|TotRmsAbvGrd', 'BldgType_Twnhs|Electrical_FuseP', 'Exterior2nd_AsbShng|Fence_GdPrv', 'KitchenQual_Tencode|GarageYrBlt', 'BsmtQual_Tencode|BsmtFinType1_ALQ', 'BldgType_2fmCon|LandSlope_Gtl', 'RoofStyle_Shed|MiscFeature_Shed', 'Neighborhood_CollgCr|HeatingQC_Tencode', 'CentralAir_Tencode|HouseStyle_1.5Fin', 'BldgType_Twnhs|BsmtFinType2_BLQ', 'MiscVal|KitchenQual_Fa', 'PavedDrive_N|Exterior2nd_Wd Shng', 'GarageFinish_Tencode|Exterior2nd_AsphShn', 'HouseStyle_1.5Unf|Exterior1st_Tencode', 'LandContour_HLS|BsmtExposure_No', 'BsmtExposure_Tencode|Neighborhood_NPkVill', 'GarageFinish_Unf|BldgType_2fmCon', 'LandContour_Tencode|BsmtFinType2_Unf', 'LotConfig_FR2|RoofStyle_Shed', 'MiscFeature_Othr|Neighborhood_BrkSide', 'BldgType_2fmCon|Neighborhood_NWAmes', 'HouseStyle_1.5Unf|MiscFeature_Shed', 'Condition1_Artery|BsmtCond_Gd', 'Electrical_FuseA|MasVnrType_None', 'MasVnrType_BrkCmn|GarageCond_Fa', 'SaleType_Tencode|Exterior2nd_Plywood', 'BldgType_Twnhs|LandSlope_Gtl', 'SaleCondition_Tencode|BsmtCond_Po', 'GarageType_BuiltIn|Fence_GdWo', 'Foundation_BrkTil|LandContour_Bnk', 'Neighborhood_NPkVill|MasVnrType_BrkFace', 'Exterior2nd_BrkFace|MSSubClass', 'MasVnrType_None|BsmtCond_TA', 'Exterior2nd_CmentBd|Neighborhood_Crawfor', 'RoofStyle_Hip|BsmtFinType2_ALQ', 'Electrical_SBrkr|MSZoning_RH', 'CentralAir_N|BsmtExposure_Mn', 'Neighborhood_Blmngtn|Condition1_PosA', 'Foundation_BrkTil|MSZoning_RH', 'Neighborhood_NoRidge|GarageCond_Tencode', 'ExterQual_Gd|Alley_Grvl', 'GarageCars|Neighborhood_NWAmes', 'FullBath|OpenPorchSF', 'Neighborhood_BrDale|LotConfig_Corner', 'Neighborhood_NAmes|BsmtExposure_No', 'BldgType_Twnhs|RoofMatl_WdShngl', 'LandSlope_Gtl|BldgType_1Fam', 'Exterior2nd_BrkFace|BedroomAbvGr', 'Neighborhood_SWISU|MasVnrType_Stone', 'Neighborhood_BrkSide|BsmtCond_Fa', 'Exterior2nd_CmentBd|MiscFeature_Shed', 'YearBuilt|Heating_Tencode', 'Utilities_Tencode|Exterior2nd_CmentBd', 'FireplaceQu_Gd|SaleType_ConLD', 'HeatingQC_Tencode|SaleType_COD', 'BldgType_Tencode', 'FireplaceQu_Po|PoolQC_Tencode', 'Neighborhood_Crawfor|MasVnrArea', 'SaleType_ConLw|Neighborhood_MeadowV', 'SaleType_ConLD|Exterior2nd_AsphShn', 'LotShape_Tencode|ExterQual_TA', 'Neighborhood_BrDale|Foundation_CBlock', 'RoofStyle_Gable|BsmtExposure_Gd', 'Neighborhood_Gilbert|ExterCond_Fa', 'Neighborhood_BrDale|SaleType_ConLw', 'GarageType_Tencode|Condition2_Tencode', 'OverallQual|Foundation_Slab', 'Utilities_Tencode|OpenPorchSF', 'HouseStyle_1Story|MSZoning_RM', 'GarageCond_Tencode|BsmtFullBath', 'Neighborhood_Blmngtn|SaleType_Oth', 'BsmtQual_TA|BsmtFinType2_Unf', 'LotShape_IR2|Functional_Maj1', '3SsnPorch|2ndFlrSF', 'SaleCondition_Family|GarageQual_Tencode', 'Electrical_FuseP|BsmtFinType2_BLQ', 'EnclosedPorch|HouseStyle_SFoyer', 'YearRemodAdd|Condition2_Norm', 'KitchenQual_Ex|Neighborhood_Timber', 'FireplaceQu_TA|Condition1_RRAn', 'MiscVal|Fence_MnPrv', 'BsmtHalfBath|SaleType_Tencode', 'SaleType_ConLw|GarageQual_Fa', 'BldgType_Duplex|KitchenQual_Gd', 'GarageFinish_Fin|Exterior2nd_BrkFace', 'Condition1_Feedr|Utilities_AllPub', 'YearBuilt|Exterior1st_Plywood', 'Heating_GasW|MiscFeature_Shed', 'TotalBsmtSF|LandSlope_Mod', 'Exterior1st_Stucco|CentralAir_Y', 'BsmtFinType2_Tencode|ExterQual_Tencode', 'Exterior1st_Stucco|Neighborhood_Sawyer', 'Utilities_Tencode|Neighborhood_IDOTRR', 'RoofStyle_Gambrel|SaleCondition_Normal', 'ScreenPorch|Exterior1st_MetalSd', 'Foundation_PConc|HouseStyle_SLvl', 'Functional_Typ|MasVnrType_None', 'Exterior2nd_Wd Sdng|MSSubClass', 'Foundation_PConc|BsmtFinSF1', 'GarageCond_TA|BsmtCond_TA', 'CentralAir_Y|Exterior1st_Wd Sdng', 'KitchenAbvGr|Condition2_Norm', 'HalfBath|Exterior1st_CemntBd', 'HouseStyle_SFoyer|Functional_Mod', 'Functional_Maj2|Exterior2nd_CmentBd', 'Alley_Tencode|LandContour_Lvl', 'RoofMatl_Tar&Grv|GarageType_Basment', 'FireplaceQu_Tencode|Functional_Min2', 'PavedDrive_P|FireplaceQu_TA', 'Condition1_Norm|BsmtFinType1_LwQ', 'RoofStyle_Gable|Neighborhood_IDOTRR', 'Condition1_Feedr|MSZoning_Tencode', 'SaleCondition_Tencode|GarageType_2Types', 'LandContour_HLS|PavedDrive_Tencode', 'GarageType_CarPort|MasVnrArea', 'SaleType_Tencode|Neighborhood_NWAmes', 'Neighborhood_Edwards|RoofStyle_Tencode', 'Exterior1st_BrkComm|Neighborhood_SawyerW', 'FireplaceQu_Gd|BsmtFinSF2', 'KitchenQual_Ex|SaleCondition_Abnorml', 'SaleCondition_Normal|Utilities_AllPub', 'SaleType_WD|Functional_Min1', 'KitchenAbvGr|Condition1_Tencode', 'GarageCond_Po|Functional_Mod', 'Exterior1st_BrkFace|MiscFeature_Tencode', 'YearBuilt|BsmtFinType1_LwQ', 'GarageQual_Fa|KitchenQual_TA', 'FireplaceQu_Gd|RoofStyle_Tencode', 'Fence_Tencode|GarageFinish_RFn', 'GarageArea|CentralAir_Y', 'HouseStyle_SFoyer|Neighborhood_Tencode', 'Exterior2nd_Stucco|MiscVal', 'Utilities_Tencode|MSZoning_Tencode', 'SaleType_ConLI|KitchenQual_TA', 'MoSold|Foundation_Slab', 'BsmtFinType2_BLQ|MSZoning_C (all)', 'Foundation_PConc|MasVnrType_None', 'GarageQual_Tencode|SaleType_Oth', 'SaleType_ConLD|GarageQual_Fa', 'Exterior1st_Tencode|Exterior2nd_HdBoard', 'Heating_GasA|SaleType_ConLI', 'Neighborhood_NWAmes|BsmtFinSF1', 'HeatingQC_Gd|HouseStyle_2Story', 'LotFrontage|Heating_Grav', 'Neighborhood_SawyerW|Functional_Min2', 'Condition1_PosA|GarageFinish_Tencode', 'Exterior1st_AsbShng|MSZoning_RL', 'Neighborhood_Gilbert|BsmtQual_Gd', 'Neighborhood_Sawyer|Foundation_CBlock', 'SaleCondition_Partial|PoolArea', 'Functional_Maj1|Neighborhood_NWAmes', 'Exterior2nd_Stone|Heating_Grav', 'LandSlope_Sev|MasVnrType_BrkFace', 'Neighborhood_Edwards|GarageType_CarPort', 'CentralAir_Tencode|MasVnrType_Stone', 'MiscFeature_Othr|FireplaceQu_TA', 'LandContour_Lvl|MiscFeature_Tencode', 'HeatingQC_TA|Exterior2nd_Plywood', 'PoolQC_Tencode|LandContour_Lvl', 'BsmtExposure_Av|BsmtQual_Gd', 'RoofStyle_Tencode|HouseStyle_2Story', 'LotShape_IR2|LandContour_Lvl', 'OpenPorchSF|Exterior1st_BrkComm', '1stFlrSF|MiscFeature_Tencode', 'MasVnrType_BrkCmn|FireplaceQu_TA', 'SaleType_Oth|BsmtCond_Fa', 'BsmtHalfBath|SaleType_Oth', 'BsmtFinType2_BLQ|RoofStyle_Gable', 'Foundation_Tencode|SaleCondition_Partial', 'Neighborhood_Edwards|Exterior2nd_HdBoard', 'Functional_Mod|Utilities_AllPub', 'OverallQual|BsmtExposure_Av', 'BsmtExposure_No|LotConfig_Inside', 'LotShape_Reg|Neighborhood_StoneBr', 'HouseStyle_SLvl|Exterior1st_WdShing', 'BsmtFinType2_ALQ|MiscFeature_Shed', 'LotConfig_FR2|Exterior2nd_Plywood', 'HouseStyle_2.5Unf|BsmtFinType1_GLQ', 'HeatingQC_Fa|BsmtFinType2_GLQ', 'Neighborhood_BrDale|GarageCond_Gd', 'Utilities_Tencode|BsmtCond_Gd', 'Exterior2nd_Stucco|BsmtCond_Po', 'GarageType_Detchd|HouseStyle_Tencode', 'HeatingQC_Gd|YearBuilt', 'Exterior2nd_Stucco|Neighborhood_NridgHt', 'Exterior1st_VinylSd|SaleType_CWD', 'BsmtUnfSF|SaleType_COD', 'Functional_Typ|SaleType_CWD', 'HeatingQC_Ex|KitchenQual_Fa', 'BsmtExposure_Av|Alley_Grvl', 'BsmtFinType2_Tencode|LandSlope_Mod', 'EnclosedPorch|GarageCars', 'GarageFinish_Unf|LotShape_IR3', 'ExterCond_TA|KitchenQual_TA', 'Exterior2nd_AsbShng|ExterCond_Fa', 'TotalBsmtSF|GarageType_2Types', 'MoSold|Foundation_CBlock', 'HouseStyle_Tencode|PavedDrive_P', 'LotShape_IR1|BsmtFinSF2', 'RoofMatl_Tencode|RoofStyle_Tencode', 'Neighborhood_Mitchel|RoofStyle_Tencode', 'Exterior2nd_BrkFace|BsmtCond_TA', 'Alley_Pave|FireplaceQu_Ex', 'Neighborhood_Veenker|KitchenQual_TA', 'SaleType_ConLD|ExterCond_Fa', 'HeatingQC_Fa|FireplaceQu_TA', 'Electrical_FuseF|PoolArea', 'LotConfig_Tencode|Condition2_Norm', 'OverallQual|Fence_Tencode', 'BsmtFinType1_Tencode|Neighborhood_Edwards', 'Neighborhood_Blmngtn|Foundation_CBlock', 'BldgType_Twnhs|Street_Grvl', 'LotFrontage|LandSlope_Gtl', 'Exterior1st_HdBoard|GarageQual_Gd', 'Condition1_RRAe|Exterior1st_MetalSd', 'KitchenQual_Ex', 'LotShape_IR2|GarageType_CarPort', 'SaleType_WD|Exterior2nd_Wd Shng', 'GarageQual_TA|ScreenPorch', 'Functional_Maj1|MSZoning_FV', 'Electrical_FuseP|BsmtFinType2_Unf', 'BldgType_2fmCon|BsmtFinType1_Unf', 'Exterior1st_BrkFace|RoofStyle_Gambrel', 'Neighborhood_NPkVill|SaleCondition_Abnorml', 'RoofStyle_Tencode|2ndFlrSF', 'Exterior2nd_MetalSd|Condition1_Feedr', 'BldgType_Twnhs|GarageQual_Po', 'YrSold|Exterior2nd_CmentBd', 'Foundation_Stone|WoodDeckSF', 'Foundation_Stone|LandSlope_Tencode', 'Foundation_Tencode|Condition2_Tencode', 'BsmtQual_Fa|GarageType_Attchd', 'GarageCond_Gd|Exterior1st_Plywood', 'KitchenQual_Tencode|BldgType_1Fam', 'RoofMatl_Tencode|GarageType_Attchd', 'EnclosedPorch|BsmtQual_TA', 'HouseStyle_1.5Unf|BldgType_TwnhsE', 'Exterior2nd_MetalSd|SaleCondition_Abnorml', 'BsmtQual_Tencode|SaleCondition_Normal', 'BedroomAbvGr|MasVnrType_None', 'HouseStyle_1.5Unf|RoofStyle_Gambrel', 'BldgType_Twnhs|Condition1_RRAe', 'GarageType_Tencode|PavedDrive_P', 'FireplaceQu_Fa|LowQualFinSF', 'BsmtFinType2_Tencode|LandContour_HLS', 'Condition2_Tencode|GarageCond_Fa', 'Neighborhood_Somerst|Condition1_RRAe', 'BsmtExposure_Av|BsmtFinType1_Unf', 'Exterior2nd_Stone|Exterior2nd_Tencode', 'RoofStyle_Shed|MSZoning_RL', 'GarageCond_Po|ExterCond_TA', 'PavedDrive_N|FireplaceQu_Gd', 'SaleType_COD|BsmtExposure_Gd', 'CentralAir_N|BsmtFinType1_Unf', 'GarageArea|Neighborhood_IDOTRR', 'KitchenQual_TA|MSZoning_FV', 'RoofMatl_CompShg|GarageCond_Fa', 'Street_Grvl|LotShape_IR3', 'BsmtFinType2_Rec|2ndFlrSF', 'HouseStyle_1Story|BsmtQual_Fa', 'SaleType_ConLI|GarageType_Attchd', 'PavedDrive_Y|MasVnrType_None', 'GarageCars|Neighborhood_Gilbert', 'Neighborhood_Gilbert|Neighborhood_IDOTRR', 'LandContour_Lvl|BsmtCond_Fa', 'BsmtExposure_Tencode|MSSubClass', 'BsmtExposure_Av|SaleCondition_Abnorml', 'Fireplaces|OpenPorchSF', 'BldgType_Duplex|HouseStyle_1Story', 'GarageCond_Po|Condition1_Feedr', 'Foundation_PConc|Functional_Maj2', 'BsmtFinType1_ALQ|GarageCond_Ex', 'Foundation_PConc|Neighborhood_Mitchel', 'Neighborhood_StoneBr|MSZoning_RL', 'Condition1_RRAe|MasVnrType_Stone', 'Heating_GasA|Exterior2nd_BrkFace', 'Alley_Pave|Foundation_Slab', 'YrSold|BldgType_TwnhsE', 'LandContour_HLS|SaleType_COD', 'GarageFinish_Unf|SaleCondition_Alloca', 'Exterior1st_BrkFace|SaleCondition_Family', 'GarageCond_Po|CentralAir_Y', 'HeatingQC_TA|Exterior2nd_BrkFace', 'Condition1_RRAe|BsmtFinType2_LwQ', 'SaleCondition_Partial|Neighborhood_Timber', 'FireplaceQu_Po|PavedDrive_P', 'Heating_GasA|Exterior1st_Tencode', 'Exterior2nd_Stone|HeatingQC_Gd', 'Electrical_Tencode|GarageFinish_Fin', 'PavedDrive_Tencode|MSZoning_Tencode', 'Neighborhood_Blmngtn|LandSlope_Gtl', 'Neighborhood_Blmngtn|Functional_Tencode', 'GarageType_Attchd|MiscFeature_Tencode', 'Exterior1st_BrkFace|2ndFlrSF', 'Exterior2nd_MetalSd|Exterior2nd_CmentBd', 'GarageCond_Ex|BsmtCond_TA', 'YearBuilt|GarageCond_Fa', 'BsmtFinType2_Tencode|GarageQual_Tencode', 'Condition1_RRAe|Exterior1st_WdShing', 'Exterior2nd_VinylSd|Neighborhood_Crawfor', 'MiscVal|BsmtFinSF2', 'Exterior1st_AsbShng|GarageType_2Types', 'Foundation_Stone|GarageFinish_Fin', 'Foundation_BrkTil|PoolArea', 'Street_Tencode|FireplaceQu_Gd', 'HeatingQC_TA|BsmtQual_Tencode', 'FireplaceQu_Gd|GarageCond_Gd', 'Neighborhood_Crawfor|BsmtExposure_Gd', 'MoSold|PoolArea', 'KitchenQual_Ex|SaleType_COD', 'Neighborhood_NAmes|MSZoning_RL', 'GarageCond_Fa|MSZoning_RM', 'SaleType_Tencode|Neighborhood_MeadowV', 'SaleType_WD|Neighborhood_SWISU', 'GarageCond_TA|ExterCond_Fa', 'PoolQC_Tencode|Condition2_Artery', 'Fireplaces|HouseStyle_1.5Fin', 'BsmtFinType2_Tencode|BsmtFinType2_Rec', 'FireplaceQu_Gd|LotConfig_CulDSac', 'HouseStyle_2.5Unf|WoodDeckSF', 'Utilities_Tencode|RoofStyle_Gable', 'Neighborhood_BrDale|Condition2_Norm', 'Neighborhood_Veenker|BsmtCond_Fa', 'Exterior2nd_Tencode|GarageFinish_Tencode', 'BldgType_Twnhs|Functional_Maj2', 'Neighborhood_Somerst|Fireplaces', 'Neighborhood_Blmngtn|MasVnrType_Tencode', 'Exterior1st_Stucco|SaleType_ConLI', 'PavedDrive_Tencode|Condition1_RRAe', 'Condition2_Norm|MasVnrType_Stone', 'BsmtQual_Tencode|CentralAir_Tencode', 'LandSlope_Gtl|HouseStyle_2Story', 'Neighborhood_Sawyer', 'LotShape_IR1|Heating_Tencode', 'LandSlope_Gtl|MasVnrType_None', 'BsmtFinType1_Tencode|MasVnrType_None', 'LandSlope_Sev|FireplaceQu_TA', 'BsmtFinSF2|SaleType_WD', 'Neighborhood_Veenker|LandSlope_Tencode', 'GarageQual_TA|Neighborhood_BrkSide', 'MasVnrType_None|BldgType_1Fam', 'HeatingQC_Gd|MoSold', 'FireplaceQu_Po|MasVnrType_None', 'GarageType_BuiltIn|GarageType_CarPort', 'Exterior2nd_Stucco|LandContour_Low', 'Foundation_PConc|ExterCond_TA', 'LotConfig_Tencode|RoofStyle_Tencode', 'Neighborhood_NAmes|Exterior1st_MetalSd', 'BsmtCond_Tencode|ScreenPorch', 'LotConfig_Corner|BsmtFinType2_ALQ', 'SaleType_WD|Foundation_Slab', 'HeatingQC_Fa|CentralAir_Tencode', 'FireplaceQu_Fa|HouseStyle_2Story', 'Fireplaces|FireplaceQu_Po', 'LandContour_Bnk|BsmtUnfSF', 'GarageQual_TA|Exterior2nd_Wd Sdng', 'Neighborhood_CollgCr|Fence_GdWo', 'FireplaceQu_Tencode|SaleType_Tencode', 'Neighborhood_Sawyer|SaleCondition_Partial', 'KitchenQual_Tencode|MiscFeature_Tencode', 'Neighborhood_BrDale|Condition1_PosN', 'SaleCondition_Tencode|ExterQual_TA', 'Electrical_SBrkr|HouseStyle_2.5Unf', 'GarageCond_Tencode|BsmtFinType2_LwQ', 'Neighborhood_Somerst|MSZoning_Tencode', 'LotFrontage|Neighborhood_OldTown', 'FullBath|BsmtQual_Gd', 'Exterior1st_AsbShng|ExterCond_Gd', 'Condition1_Artery|LowQualFinSF', 'GarageType_CarPort|HouseStyle_2.5Unf', 'Functional_Maj1|MSZoning_RH', 'ExterCond_TA|RoofStyle_Gambrel', 'YrSold|MasVnrType_Tencode', 'Exterior2nd_AsbShng|BsmtFinType2_BLQ', 'Electrical_FuseA|HouseStyle_1.5Fin', 'LotShape_Reg|RoofStyle_Gable', 'BsmtFinType1_BLQ|GarageQual_Fa', 'GarageFinish_Unf|Exterior2nd_Stucco', 'Neighborhood_ClearCr|SaleType_ConLI', 'KitchenQual_Tencode|Neighborhood_IDOTRR', 'FireplaceQu_Gd|FireplaceQu_Po', 'Foundation_CBlock|CentralAir_Y', 'GarageQual_Gd|Electrical_FuseF', 'Alley_Tencode|LandSlope_Gtl', 'FireplaceQu_Gd|MSSubClass', 'LotShape_Reg|BldgType_Twnhs', 'Exterior1st_Stucco|Condition1_RRAn', 'LotShape_IR2|CentralAir_Y', 'TotalBsmtSF|Neighborhood_SawyerW', 'YrSold|Neighborhood_Crawfor', 'SaleCondition_Alloca|HouseStyle_2Story', 'RoofStyle_Shed|BsmtCond_Fa', 'Fireplaces|MoSold', 'MiscFeature_Othr|SaleType_Tencode', 'Heating_Tencode|BsmtFinType2_LwQ', 'GarageType_Tencode|ExterQual_Ex', 'HouseStyle_1Story|LandContour_Lvl', 'PavedDrive_N|ExterQual_Tencode', 'LandContour_Low|Fence_MnWw', 'MSZoning_C (all)|Street_Pave', 'Condition1_Feedr|Exterior2nd_Wd Shng', 'Exterior2nd_Wd Sdng|Condition2_Artery', 'BsmtFinType2_Rec|Street_Pave', 'SaleCondition_Tencode|MiscFeature_Shed', 'Electrical_Tencode|SaleCondition_Alloca', 'Neighborhood_NoRidge|MSZoning_FV', 'ExterCond_TA|Condition1_PosN', 'PavedDrive_Y|Neighborhood_SWISU', 'BsmtFinType1_BLQ|Exterior1st_MetalSd', 'BsmtFinType2_GLQ|BsmtFinSF1', 'Foundation_CBlock|Foundation_Slab', 'ExterCond_Gd|GarageType_Attchd', 'Neighborhood_BrDale|Neighborhood_Crawfor', 'Exterior1st_BrkComm|MasVnrType_Stone', 'HouseStyle_2.5Unf|SaleType_COD', 'GarageQual_TA|BsmtUnfSF', 'LotShape_IR2|BsmtQual_TA', 'Heating_Grav|RoofMatl_CompShg', 'GarageCond_TA|PavedDrive_Y', 'LotConfig_Tencode|BsmtExposure_Gd', 'LandContour_Lvl|Neighborhood_Crawfor', 'LotShape_Tencode|Neighborhood_NridgHt', '3SsnPorch|BsmtFinType1_Unf', 'Functional_Typ|KitchenQual_Ex', 'Condition1_Artery|MiscVal', 'BldgType_Twnhs|BsmtQual_Gd', 'GarageCars|ExterQual_Tencode', 'LandContour_Tencode|GarageFinish_RFn', 'TotRmsAbvGrd|ExterQual_Tencode', 'Electrical_Tencode|LandSlope_Tencode', 'HouseStyle_SFoyer|Condition1_Norm', 'GarageCond_Tencode|SaleType_CWD', 'GarageCars|Exterior2nd_Wd Sdng', 'BedroomAbvGr|GarageCond_Gd', 'GarageCars|Neighborhood_Edwards', 'MiscFeature_Othr|Condition1_PosN', 'BsmtFinType1_Tencode|LandSlope_Tencode', 'Condition2_Tencode|CentralAir_Tencode', 'LotConfig_FR2|BsmtExposure_Mn', 'Foundation_BrkTil|Functional_Mod', 'BsmtQual_Fa|MasVnrType_Stone', 'HouseStyle_1Story|YearRemodAdd', 'SaleType_ConLw|GarageArea', 'BsmtFinType2_GLQ|BsmtQual_Gd', 'ExterCond_Gd|ScreenPorch', 'Neighborhood_NPkVill|Exterior1st_HdBoard', 'BsmtQual_Fa|LotShape_IR3', 'MoSold|KitchenQual_Fa', 'Exterior1st_BrkFace|GarageQual_Gd', 'FullBath|MSZoning_RM', 'BldgType_Duplex|Neighborhood_BrDale', 'Alley_Tencode|Neighborhood_SawyerW', 'Exterior2nd_CmentBd|GarageCond_Fa', 'GarageCond_Po|Neighborhood_OldTown', 'FireplaceQu_Tencode|HeatingQC_TA', 'Condition1_Norm|KitchenQual_Fa', 'Electrical_FuseA|BsmtUnfSF', 'Neighborhood_NridgHt|Functional_Maj1', 'RoofMatl_CompShg|Neighborhood_Sawyer', 'PavedDrive_Y|CentralAir_Tencode', 'RoofStyle_Gambrel|GarageType_Attchd', 'BsmtExposure_Tencode|SaleCondition_Partial', 'BsmtQual_Ex|SaleCondition_Normal', 'Exterior2nd_Stucco|LandContour_Lvl', 'ExterQual_TA|MSZoning_C (all)', 'GrLivArea|Exterior1st_HdBoard', 'Neighborhood_Tencode|MiscFeature_Shed', 'GarageQual_Gd|MSSubClass', 'Condition1_RRAe|RoofMatl_WdShngl', 'LotShape_IR2|Electrical_FuseF', 'LotConfig_Corner|KitchenQual_Ex', 'Utilities_Tencode|KitchenQual_Tencode', '3SsnPorch|BsmtExposure_No', 'Neighborhood_NPkVill|Neighborhood_OldTown', 'BsmtQual_Ex|BldgType_TwnhsE', 'BsmtFinType2_LwQ|BsmtExposure_Gd', 'BldgType_Duplex|LotArea', 'Neighborhood_Somerst|Foundation_Slab', 'Electrical_SBrkr|Neighborhood_SWISU', 'Exterior2nd_Stone|HouseStyle_2.5Unf', 'LotConfig_CulDSac|BsmtFinType2_LwQ', 'BsmtExposure_Gd|GarageType_2Types', 'CentralAir_Tencode|BsmtExposure_Gd', 'SaleType_New|BsmtFinType1_LwQ', 'OverallQual|Condition1_PosA', '1stFlrSF|Condition1_Norm', 'Neighborhood_CollgCr|SaleType_Tencode', 'RoofStyle_Flat|BsmtFinSF2', 'RoofMatl_Tencode|ExterCond_Gd', 'LandSlope_Mod|GarageCond_Ex', 'LotArea|ExterQual_Fa', 'HeatingQC_Gd|Alley_Grvl', 'LotShape_Reg|SaleCondition_Partial', 'PavedDrive_Tencode|GarageQual_Tencode', 'FireplaceQu_Ex|GarageQual_Tencode', 'MSZoning_RM|BldgType_TwnhsE', 'OverallQual|LandSlope_Mod', 'BldgType_2fmCon|Alley_Pave', 'Condition1_PosA|BldgType_Tencode', 'Condition1_PosA|Neighborhood_NAmes', 'Alley_Pave|Functional_Min1', 'BldgType_TwnhsE|Foundation_Slab', 'MSZoning_C (all)|ExterQual_Ex', 'HouseStyle_SFoyer|BsmtFinType1_LwQ', 'EnclosedPorch|BsmtExposure_No', 'LotShape_IR1|Neighborhood_OldTown', 'GarageCond_TA|Heating_Grav', 'KitchenQual_Fa|Utilities_AllPub', 'Neighborhood_OldTown|BsmtCond_Fa', 'Neighborhood_BrDale|GarageCond_TA', 'RoofMatl_Tencode|MasVnrType_BrkFace', 'Condition1_Tencode|BsmtFinType2_Unf', 'LandContour_Low|GarageQual_Tencode', 'Neighborhood_Somerst|HeatingQC_Gd', 'LotConfig_CulDSac|SaleType_Oth', 'FireplaceQu_Fa|Neighborhood_Gilbert', 'Electrical_SBrkr|CentralAir_N', 'PavedDrive_Tencode|Condition1_PosA', 'BsmtFinType2_GLQ|Neighborhood_OldTown', 'TotRmsAbvGrd|SaleCondition_Partial', 'BsmtFinType1_ALQ|HouseStyle_SLvl', 'MSZoning_RM|HouseStyle_2Story', 'Foundation_Stone|MasVnrArea', 'Exterior2nd_Stucco|BsmtFinType2_Rec', 'Exterior2nd_AsbShng|Exterior1st_HdBoard', 'SaleType_ConLI|SaleType_COD', 'FullBath|BsmtFinType1_Unf', 'LotShape_IR1|MiscVal', 'LotConfig_FR2|Functional_Min1', 'BsmtFullBath|ExterQual_Fa', 'Exterior1st_Stucco|Neighborhood_Tencode', 'LandContour_Low|LandSlope_Mod', 'LotConfig_Corner|BldgType_Tencode', 'LotShape_IR2|GarageQual_Gd', 'KitchenQual_Gd|GarageType_Basment', 'LotConfig_Corner|BsmtFinType1_LwQ', 'GarageCond_Po|BsmtFinType2_BLQ', 'LotConfig_CulDSac|CentralAir_Tencode', 'Functional_Tencode|Fence_MnWw', 'EnclosedPorch|HouseStyle_Tencode', 'Neighborhood_SWISU|LotShape_IR3', 'SaleCondition_Normal|ExterCond_Fa', 'HeatingQC_TA|BsmtQual_Fa', 'ScreenPorch|Functional_Min2', 'BsmtFinType2_ALQ|GarageCond_Tencode', 'Condition1_RRAe|SaleType_Oth', 'LotConfig_FR2|BldgType_Tencode', 'LandSlope_Sev|PoolQC_Tencode', 'MiscFeature_Gar2|Exterior1st_Wd Sdng', 'SaleType_COD|Functional_Min2', 'PavedDrive_Y|TotRmsAbvGrd', 'GarageFinish_Unf|LotConfig_Tencode', 'SaleCondition_Partial|Exterior2nd_Brk Cmn', 'LandContour_Bnk|Neighborhood_SawyerW', 'FireplaceQu_Tencode|GarageQual_Fa', 'Condition1_Norm|Street_Grvl', 'GarageQual_Fa|BsmtFinType2_Unf', 'Exterior2nd_Stucco|MSZoning_RL', 'SaleType_ConLw|Exterior2nd_Wd Sdng', 'Exterior2nd_Stone|Condition2_Norm', 'GarageCars|BsmtHalfBath', 'GarageFinish_Fin|GarageFinish_RFn', 'GrLivArea|BsmtExposure_No', 'Neighborhood_Mitchel|KitchenQual_Tencode', 'Electrical_FuseF|Foundation_CBlock', 'FullBath|KitchenQual_Tencode', 'LandSlope_Tencode|BsmtCond_Fa', 'Heating_GasW|Functional_Min1', 'Exterior1st_BrkFace|SaleType_New', 'Condition2_Tencode|Neighborhood_Gilbert', 'Exterior2nd_CmentBd|GarageType_Basment', 'Neighborhood_Crawfor|BsmtFinType1_LwQ', 'RoofMatl_WdShngl|ExterCond_Fa', 'HouseStyle_SFoyer|GarageQual_Tencode', 'Functional_Min1|Street_Pave', 'Foundation_Stone|Exterior2nd_HdBoard', 'BsmtHalfBath|PavedDrive_Y', 'Exterior2nd_BrkFace|ExterQual_Ex', 'BsmtFullBath|BsmtFinType2_Unf', 'GarageFinish_Fin|BsmtFullBath', 'Neighborhood_NAmes|BsmtExposure_Mn', 'GrLivArea|Neighborhood_Edwards', 'Exterior1st_WdShing|Foundation_Slab', 'LotConfig_CulDSac|2ndFlrSF', 'BsmtExposure_Tencode|SaleCondition_Family', 'Alley_Tencode|Neighborhood_Veenker', 'Exterior2nd_Tencode|MoSold', 'PavedDrive_Y|BldgType_TwnhsE', 'BsmtCond_Tencode|LotShape_IR3', 'Neighborhood_NPkVill|MasVnrType_None', 'Exterior2nd_AsbShng|MiscVal', 'FireplaceQu_Fa|Fence_MnPrv', 'Condition1_Norm|MasVnrArea', 'ExterQual_TA|CentralAir_Y', 'ExterQual_Gd|Street_Grvl', 'LotConfig_FR2|GarageCond_Fa', 'KitchenQual_Ex|BsmtExposure_Gd', 'Neighborhood_NAmes|KitchenQual_TA', 'EnclosedPorch|Heating_GasA', 'BsmtFullBath|Exterior2nd_Wd Sdng', 'FireplaceQu_Ex|ExterQual_Gd', 'KitchenAbvGr|HeatingQC_Tencode', 'Neighborhood_Edwards|WoodDeckSF', 'Condition1_PosN|HouseStyle_SLvl', 'Heating_GasW|HouseStyle_1.5Unf', 'SaleType_Tencode|BsmtFinType1_Rec', 'PavedDrive_P|GarageFinish_RFn', 'Neighborhood_Somerst|FireplaceQu_TA', 'ScreenPorch|HouseStyle_2Story', 'YrSold|Fence_MnWw', 'Utilities_Tencode|Street_Grvl', 'PoolQC_Tencode|GarageQual_Fa', 'Functional_Maj1|Exterior1st_Wd Sdng', 'Electrical_SBrkr|ExterQual_Gd', 'Condition2_Tencode|BsmtExposure_Mn', 'Exterior2nd_Stone|2ndFlrSF', 'GarageQual_Po|SaleType_CWD', 'GarageCond_TA|BsmtFinSF2', 'YearBuilt|OpenPorchSF', 'HeatingQC_Ex|SaleType_New', 'BldgType_Twnhs|PoolQC_Tencode', 'FireplaceQu_Po|BsmtFinType2_ALQ', 'Neighborhood_ClearCr|LotConfig_FR2', 'Electrical_Tencode|Neighborhood_StoneBr', 'Neighborhood_CollgCr|PavedDrive_P', 'Electrical_FuseA|PavedDrive_Y', 'GarageType_Attchd|PavedDrive_P', 'GarageArea|Street_Grvl', 'Exterior2nd_Stone|HeatingQC_Tencode', 'FireplaceQu_Gd|ExterCond_Gd', 'MiscFeature_Tencode|Exterior2nd_Plywood', 'HeatingQC_Tencode|Exterior1st_Plywood', 'Street_Tencode|Electrical_SBrkr', 'PoolQC_Tencode|ExterQual_Fa', 'Neighborhood_Veenker|Condition2_Tencode', 'Functional_Typ|BsmtFinType1_Rec', 'Street_Tencode|HalfBath', 'Condition1_RRAn|MasVnrArea', 'Exterior2nd_Wd Shng|ExterCond_Fa', 'SaleType_ConLD|ExterQual_Tencode', 'BsmtCond_Gd|BsmtExposure_Gd', 'GarageType_Detchd|ExterCond_Fa', 'BsmtFinType2_Rec|ExterQual_Tencode', 'BsmtFinType2_ALQ|Neighborhood_SawyerW', 'MiscFeature_Othr|Exterior1st_Stucco', 'MiscVal|MasVnrType_Tencode', 'MiscVal|SaleType_Oth', 'SaleType_Tencode|MasVnrType_BrkCmn', 'Exterior2nd_Stucco|Functional_Typ', 'SaleType_WD|BsmtExposure_Gd', 'Functional_Tencode|BsmtCond_TA', 'Neighborhood_BrDale|BsmtQual_TA', 'KitchenQual_Ex|Electrical_FuseF', 'Exterior2nd_AsbShng|LowQualFinSF', 'Neighborhood_Veenker|HouseStyle_2Story', 'Exterior2nd_Wd Sdng|PavedDrive_P', 'SaleType_ConLD|HalfBath', 'MSZoning_RM|Street_Pave', 'Exterior2nd_AsbShng|Street_Pave', 'PavedDrive_Tencode|SaleCondition_Partial', 'RoofStyle_Shed|MSZoning_RM', 'Exterior1st_CemntBd|SaleType_Oth', 'GarageFinish_Unf|Neighborhood_Edwards', 'SaleCondition_Partial|Exterior1st_BrkComm', 'LotShape_IR2|Neighborhood_Timber', 'KitchenAbvGr|FireplaceQu_Gd', 'PoolQC_Tencode|FireplaceQu_Fa', 'LotConfig_Corner|MoSold', 'GarageType_Tencode|Condition2_Artery', 'GarageFinish_Unf|1stFlrSF', 'Heating_Grav|Exterior2nd_Brk Cmn', 'Neighborhood_Blmngtn|Neighborhood_NoRidge', 'GarageQual_TA|SaleCondition_Normal', 'Exterior2nd_Tencode|SaleType_New', 'HouseStyle_SFoyer|ExterQual_Gd', 'Condition2_Artery|SaleCondition_Abnorml', 'LotShape_Reg|LotConfig_CulDSac', 'OpenPorchSF|GarageFinish_RFn', 'HouseStyle_1.5Unf|BsmtExposure_Gd', 'LandContour_Lvl|BsmtFinType2_Unf', 'YearBuilt|MSZoning_FV', 'Functional_Maj2|Neighborhood_BrkSide', 'FullBath|Exterior2nd_MetalSd', 'SaleCondition_Normal|GarageYrBlt', 'KitchenQual_Ex|PavedDrive_P', 'BsmtHalfBath|LandContour_Bnk', 'BsmtFinSF2|OverallCond', 'Neighborhood_Blmngtn|Exterior2nd_CmentBd', 'Exterior1st_Stucco|LandContour_Tencode', 'RoofMatl_Tencode|Exterior1st_Plywood', 'Alley_Tencode|3SsnPorch', 'FullBath|LandSlope_Gtl', 'Exterior2nd_MetalSd|ExterCond_Fa', 'Heating_GasW|HouseStyle_2.5Unf', 'FireplaceQu_TA', 'MSZoning_Tencode|LotShape_IR3', 'GarageQual_TA|BsmtExposure_Mn', 'SaleCondition_Partial|BldgType_Tencode', 'GarageType_Tencode|Exterior2nd_Brk Cmn', 'Exterior1st_HdBoard|SaleType_WD', 'HeatingQC_TA|BsmtCond_Gd', 'GarageFinish_Tencode|MSZoning_C (all)', 'BsmtFullBath|Condition1_PosN', 'GarageCond_Po|Neighborhood_Somerst', 'KitchenQual_Tencode|MSZoning_RH', 'Functional_Tencode|BsmtExposure_No', 'LotConfig_Corner|PoolArea', 'Neighborhood_Edwards|ExterQual_Ex', 'LandSlope_Tencode|GarageQual_TA', 'Neighborhood_Gilbert|Condition1_RRAn', 'OpenPorchSF|Condition1_RRAn', 'GarageQual_Fa|PoolArea', 'LotShape_IR2|CentralAir_N', 'Foundation_Stone|BsmtHalfBath', 'LotFrontage|ExterCond_Fa', 'ExterQual_TA|OpenPorchSF', 'HeatingQC_Gd|SaleCondition_Abnorml', 'Neighborhood_Blmngtn|Fence_MnPrv', 'Street_Tencode|FullBath', 'GarageFinish_Unf|GarageType_BuiltIn', 'RoofStyle_Tencode|Condition2_Norm', 'Exterior1st_BrkFace|BldgType_Twnhs', 'Foundation_PConc|GarageType_CarPort', 'SaleCondition_Normal|CentralAir_N', 'BsmtQual_Tencode|BldgType_1Fam', 'LowQualFinSF|SaleType_CWD', 'FireplaceQu_Tencode|HeatingQC_Tencode', 'Neighborhood_Veenker|ExterCond_Tencode', 'Condition2_Tencode|HouseStyle_1.5Fin', 'LotShape_Reg|BsmtUnfSF', 'Exterior2nd_MetalSd|Neighborhood_Gilbert', 'BldgType_Twnhs|BsmtCond_TA', 'LotConfig_FR2|BsmtQual_Ex', 'FullBath|MoSold', 'Condition1_Artery|BsmtQual_TA', 'EnclosedPorch|Functional_Maj1', 'Electrical_FuseP|Foundation_CBlock', 'Exterior2nd_Stucco|Exterior1st_Stucco', 'BsmtQual_Fa|ExterQual_Gd', 'Exterior1st_BrkFace|Exterior2nd_Stone', 'Foundation_Stone|Condition2_Norm', 'Condition1_Norm|BsmtUnfSF', 'LotShape_IR2|Fireplaces', 'RoofMatl_CompShg|GarageType_Attchd', 'LandContour_Bnk|SaleCondition_Partial', 'ExterQual_Ex|Neighborhood_StoneBr', 'BsmtQual_Fa|Exterior2nd_CmentBd', 'FullBath|Fence_GdPrv', 'KitchenQual_Ex|GarageQual_Tencode', 'KitchenAbvGr|TotRmsAbvGrd', 'GarageFinish_Fin|Fence_MnPrv', 'CentralAir_Tencode|BsmtFinType1_GLQ', 'LotArea|MiscVal', 'Street_Tencode|PavedDrive_Tencode', 'RoofStyle_Gable|Neighborhood_Crawfor', 'BsmtExposure_Tencode|Condition1_RRAe', 'Exterior2nd_Stone|LandSlope_Mod', 'GarageQual_Fa|Fence_MnWw', 'RoofMatl_CompShg|HeatingQC_Tencode', 'LotShape_IR2|MSZoning_RL', 'BsmtFinType1_ALQ|BsmtQual_Fa', 'HeatingQC_Fa|Neighborhood_OldTown', 'Neighborhood_Mitchel|PavedDrive_Tencode', 'BldgType_2fmCon|Neighborhood_Gilbert', 'GarageFinish_Unf|OverallCond', 'Street_Tencode|YearBuilt', 'BldgType_2fmCon|PoolQC_Tencode', 'BldgType_Duplex|LotConfig_Tencode', 'SaleCondition_Alloca|ExterCond_Fa', 'RoofStyle_Hip|Exterior2nd_Brk Cmn', 'HeatingQC_Tencode|Neighborhood_Crawfor', 'HeatingQC_Gd|Neighborhood_NoRidge', 'Neighborhood_Tencode|HouseStyle_1.5Fin', 'SaleType_Tencode|GarageQual_Tencode', 'BsmtFinType2_BLQ|RoofMatl_Tar&Grv', 'Neighborhood_NPkVill|Neighborhood_Tencode', 'RoofMatl_Tencode|MasVnrType_Tencode', 'Heating_GasW|Neighborhood_Sawyer', 'BsmtExposure_Tencode|GarageQual_Fa', 'YearBuilt|MoSold', 'BldgType_Duplex|Exterior2nd_BrkFace', 'PavedDrive_P|Neighborhood_MeadowV', 'BsmtFullBath|HouseStyle_SLvl', 'Exterior1st_Stucco|GarageType_2Types', 'Condition2_Tencode|CentralAir_Y', 'GarageCars|FullBath', 'MiscFeature_Othr|Exterior1st_WdShing', 'SaleType_New|ExterQual_Gd', 'BsmtExposure_Tencode|LotShape_IR1', 'BldgType_Tencode|LotShape_IR3', 'LotConfig_Tencode|LandSlope_Gtl', 'ExterQual_Ex|SaleType_CWD', 'Fence_GdPrv|Condition1_Norm', 'BsmtFinType1_Tencode|Neighborhood_Somerst', 'Functional_Maj1|Fence_MnWw', 'Exterior2nd_BrkFace|BsmtFinType1_LwQ', 'Electrical_FuseF|BsmtExposure_Av', 'GarageFinish_Tencode|Exterior1st_WdShing', 'Neighborhood_SWISU|HeatingQC_Tencode', 'GarageType_Basment|GarageCond_Ex', 'GarageFinish_Tencode|ExterQual_Ex', 'LotShape_Reg|LotShape_IR3', 'HeatingQC_Gd|Foundation_Tencode', 'GarageCars|BldgType_1Fam', 'ExterQual_TA|Fence_Tencode', 'BsmtFinType1_Tencode|FullBath', 'Exterior2nd_VinylSd|MSSubClass', 'Heating_Grav|ScreenPorch', 'BldgType_Tencode|HouseStyle_SLvl', 'GarageType_CarPort|Exterior2nd_AsphShn', 'RoofStyle_Tencode|BsmtCond_TA', 'LandSlope_Mod|Exterior2nd_Brk Cmn', 'SaleType_ConLD|Foundation_Tencode', 'Exterior1st_AsbShng|BsmtFullBath', 'GarageCond_Po|GarageType_Basment', 'HouseStyle_1.5Unf|GarageCond_Ex', 'HeatingQC_Tencode|BsmtFinType1_Rec', 'Exterior1st_BrkFace|GarageCars', 'Fence_GdWo|BsmtQual_Gd', 'Functional_Maj1|GarageYrBlt', 'GarageType_BuiltIn|SaleType_Oth', 'BedroomAbvGr|Exterior1st_Plywood', 'SaleType_ConLw|MasVnrType_Tencode', 'MoSold|Alley_Grvl', 'SaleType_WD|HouseStyle_2.5Unf', 'Exterior1st_BrkComm|LotConfig_Inside', 'MiscFeature_Tencode|Neighborhood_SawyerW', 'ExterCond_TA|GarageType_BuiltIn', 'Exterior1st_BrkFace|GarageFinish_Fin', 'Alley_Pave|Condition1_RRAn', 'FullBath', 'GarageQual_TA|CentralAir_N', 'HeatingQC_Fa|MSZoning_C (all)', 'SaleCondition_Tencode|BsmtExposure_Mn', 'Exterior2nd_Stone|GarageQual_TA', 'GarageCond_Po|MSZoning_RL', 'BsmtFinType2_Tencode|GarageType_2Types', 'GarageCond_Gd|MasVnrType_Stone', 'BsmtQual_TA|Condition1_RRAe', 'Foundation_PConc|Foundation_CBlock', 'Condition1_PosN|BsmtExposure_Av', 'Functional_Min1|Neighborhood_BrkSide', 'FireplaceQu_Tencode|ExterQual_Ex', 'Exterior2nd_AsbShng|GarageCond_TA', 'Neighborhood_Blmngtn|BsmtQual_TA', 'MiscVal|LandSlope_Sev', 'HouseStyle_Tencode|Neighborhood_StoneBr', 'RoofStyle_Flat|SaleCondition_Normal', 'GrLivArea|LandContour_HLS', 'Electrical_Tencode|Functional_Maj2', 'MasVnrArea|LotConfig_Inside', 'Electrical_Tencode|FireplaceQu_Ex', 'Neighborhood_BrDale|LotConfig_Tencode', 'HouseStyle_1Story|Exterior1st_Stucco', 'Electrical_FuseP|Neighborhood_IDOTRR', 'Foundation_BrkTil', 'Heating_GasA|LandContour_Bnk', 'BsmtFinType2_GLQ|Functional_Min1', 'HeatingQC_Ex|ExterCond_Gd', 'HouseStyle_SLvl|Exterior1st_Plywood', 'YearBuilt|BsmtQual_Ex', 'HeatingQC_TA|GarageArea', 'LandSlope_Gtl|GarageYrBlt', 'LotConfig_Corner|ScreenPorch', 'HeatingQC_Gd|Condition2_Artery', 'MSZoning_C (all)|GarageType_Attchd', 'Neighborhood_Veenker|Electrical_SBrkr', 'HeatingQC_TA|LotFrontage', 'Electrical_Tencode|FireplaceQu_Fa', 'RoofMatl_Tencode|Fence_MnPrv', 'SaleType_New|GarageArea', 'BsmtFinType1_BLQ|HeatingQC_Ex', 'BsmtQual_Fa|Neighborhood_NAmes', 'PoolQC_Tencode|BsmtQual_Fa', 'GarageCond_TA|MoSold', 'Foundation_BrkTil|Exterior2nd_Brk Cmn', 'Alley_Pave|MiscFeature_Tencode', 'Exterior1st_AsbShng|Neighborhood_Tencode', 'BsmtFinType1_Rec|LowQualFinSF', 'RoofStyle_Hip|Exterior2nd_Wd Sdng', 'Street_Tencode|Street_Pave', 'LandSlope_Gtl|KitchenQual_TA', 'BsmtCond_Tencode|Fence_GdWo', 'Exterior2nd_Stone|Fireplaces', 'RoofStyle_Gable|MasVnrType_Tencode', 'GarageCond_Fa|CentralAir_Tencode', 'LandContour_HLS|SaleType_ConLI', 'MiscFeature_Tencode|Fence_MnWw', 'BsmtFinType2_ALQ|FireplaceQu_Ex', 'BsmtFinSF2|Fence_MnWw', 'Utilities_Tencode|Neighborhood_Somerst', 'FullBath|BsmtFullBath', 'GarageQual_Gd|ExterQual_Gd', 'Neighborhood_Mitchel|Foundation_BrkTil', 'Condition2_Norm|MSZoning_RH', 'Neighborhood_NoRidge|BsmtFinSF1', 'Heating_Grav|Neighborhood_Crawfor', 'HouseStyle_1Story|LotConfig_FR2', 'GarageType_Detchd|Neighborhood_OldTown', 'Fence_GdWo|BsmtFinType2_Unf', 'Exterior2nd_AsbShng|Exterior1st_AsbShng', 'Neighborhood_Mitchel|RoofStyle_Shed', 'BsmtExposure_Tencode|Street_Grvl', 'Functional_Maj2|BsmtCond_Po', 'BsmtFinType2_GLQ|CentralAir_N', 'BsmtCond_Tencode|MasVnrType_Stone', 'HeatingQC_Gd|MasVnrType_Stone', 'Condition2_Tencode|HouseStyle_2Story', 'FullBath|PavedDrive_Y', 'Exterior2nd_Stone|WoodDeckSF', 'GarageCond_Gd|Condition1_Feedr', 'SaleCondition_Tencode|Condition1_RRAe', 'Heating_Tencode|BsmtExposure_Mn', 'FireplaceQu_Po|Neighborhood_SWISU', 'YrSold|SaleType_ConLw', 'GarageQual_Fa|BsmtFinType2_Rec', 'PoolQC_Tencode|KitchenQual_Fa', 'LandContour_Tencode|LandSlope_Gtl', 'SaleCondition_Tencode|LandContour_Tencode', 'Functional_Typ|BsmtExposure_Gd', 'Exterior1st_BrkFace|MSZoning_FV', 'BsmtHalfBath|BldgType_TwnhsE', 'LotConfig_CulDSac|BldgType_TwnhsE', 'HouseStyle_SFoyer|SaleType_Tencode', 'BsmtExposure_Tencode|GarageType_Tencode', 'BldgType_2fmCon|YearBuilt', 'PavedDrive_Y|Neighborhood_StoneBr', 'RoofStyle_Flat|Condition1_PosA', 'RoofStyle_Gambrel|BsmtCond_TA', 'LandContour_Low|MSZoning_RM', 'SaleType_ConLD|HouseStyle_SLvl', 'Neighborhood_CollgCr|GarageArea', 'PavedDrive_Y|RoofMatl_WdShngl', 'Condition1_Feedr|CentralAir_N', 'Neighborhood_Tencode|Neighborhood_Timber', 'RoofStyle_Flat|PoolArea', 'GarageCond_Tencode|HouseStyle_1.5Unf', 'Neighborhood_StoneBr|GarageQual_Tencode', 'SaleType_ConLw|Neighborhood_StoneBr', '1stFlrSF|GarageQual_Po', 'BldgType_2fmCon|BldgType_Tencode', 'Neighborhood_Blmngtn|FireplaceQu_Fa', 'Heating_GasA|LotArea', 'BsmtFinType1_Rec|FireplaceQu_TA', 'KitchenQual_Gd|FullBath', 'Neighborhood_NPkVill|Electrical_SBrkr', 'Heating_GasA|OverallCond', 'PoolArea|GarageQual_Tencode', 'BsmtHalfBath|Condition1_Norm', 'GarageCars|PoolQC_Tencode', 'Neighborhood_Somerst|GarageFinish_RFn', 'GarageCars|MiscFeature_Othr', 'Fence_GdPrv|GarageFinish_RFn', 'LotShape_Reg|BldgType_Tencode', 'BsmtHalfBath|LotShape_IR3', 'LotConfig_CulDSac|GarageFinish_RFn', 'EnclosedPorch|BsmtCond_Tencode', 'BsmtFinType2_BLQ|LotConfig_Inside', 'GrLivArea|Fence_GdWo', 'GarageQual_TA|Exterior1st_MetalSd', 'Condition1_Tencode|SaleType_Oth', 'GarageCars|GarageCond_Gd', 'Exterior2nd_AsbShng|SaleCondition_Family', 'OpenPorchSF', 'BldgType_2fmCon|LandSlope_Tencode', 'GarageQual_Fa|TotRmsAbvGrd', 'BldgType_Duplex|MSZoning_RM', 'FireplaceQu_Po|3SsnPorch', 'GarageCars|GarageFinish_Tencode', 'Condition1_Norm|Foundation_Slab', 'Exterior2nd_Stone|MasVnrArea', 'GarageCars|LandContour_Lvl', 'SaleCondition_Tencode|Exterior2nd_Stucco', 'LotShape_Tencode|OpenPorchSF', 'BedroomAbvGr|GarageType_CarPort', 'Fireplaces|BsmtFinType1_Unf', 'Exterior1st_BrkFace|BsmtFinType2_Tencode', 'SaleType_Tencode|GarageType_Basment', 'PavedDrive_Y|Exterior1st_CemntBd', 'Electrical_FuseA|Condition1_RRAe', 'Neighborhood_Edwards|BsmtQual_Ex', 'SaleType_Tencode|Electrical_FuseF', 'Electrical_FuseP|Exterior2nd_Plywood', 'GarageQual_Gd|Heating_Tencode', 'RoofStyle_Shed|GarageCond_Ex', 'Street_Grvl|ExterCond_Fa', 'Exterior1st_HdBoard|ExterCond_Gd', 'Neighborhood_NridgHt|Exterior1st_BrkComm', 'Neighborhood_ClearCr|Neighborhood_Veenker', 'Foundation_Tencode|Exterior1st_Plywood', 'LotShape_Tencode|MSZoning_RM', 'Fireplaces|Condition1_RRAe', '3SsnPorch|BsmtCond_Gd', 'BsmtFinType1_LwQ|Exterior1st_Tencode', 'BsmtFinType2_Tencode|KitchenQual_Gd', 'FullBath|Condition2_Norm', 'OpenPorchSF|BsmtUnfSF', 'MoSold|BsmtCond_Tencode', 'BsmtFinType1_Tencode|MiscFeature_Othr', 'GarageType_Detchd|LotShape_IR1', 'Functional_Typ|BsmtFullBath', 'TotalBsmtSF|Exterior2nd_Wd Shng', 'MoSold|CentralAir_Tencode', 'MiscFeature_Shed|CentralAir_Y', 'RoofStyle_Shed|Foundation_Slab', 'GarageQual_Gd|Exterior1st_MetalSd', 'Condition1_PosA|MasVnrType_Tencode', 'Exterior2nd_AsbShng|BsmtFinType2_Rec', 'Electrical_Tencode|Functional_Maj1', 'BsmtFinType2_Tencode|Functional_Min1', 'Electrical_FuseP|SaleType_CWD', 'LandSlope_Tencode|BldgType_1Fam', 'LandContour_Bnk|SaleType_New', 'LandContour_Bnk|TotRmsAbvGrd', 'SaleType_New|BldgType_Tencode', 'Alley_Pave|GarageQual_TA', 'OverallQual|LotShape_IR2', 'YrSold|LandContour_Tencode', 'LowQualFinSF|MSZoning_FV', 'HalfBath|Functional_Maj1', 'BldgType_Twnhs|BsmtQual_Ex', 'Neighborhood_Veenker|PavedDrive_Y', 'HouseStyle_1.5Unf|Functional_Maj1', 'Functional_Tencode|GarageCond_Ex', 'YrSold|Exterior1st_HdBoard', 'ExterQual_TA|Condition1_Tencode', 'Fence_GdPrv|LandSlope_Gtl', 'KitchenQual_Ex|Fence_MnPrv', 'BldgType_Twnhs|Neighborhood_NoRidge', 'GarageFinish_Tencode|Neighborhood_Gilbert', 'HeatingQC_Gd|Condition1_RRAe', 'PavedDrive_Y|BsmtCond_Tencode', 'LandSlope_Mod|Condition1_Norm', 'BsmtFinType1_Tencode|MasVnrType_BrkCmn', 'Condition1_Norm|Condition2_Artery', 'Neighborhood_NridgHt|FireplaceQu_TA', 'TotalBsmtSF|Fence_GdWo', 'HeatingQC_Tencode|Electrical_FuseF', 'Exterior2nd_Stucco|LowQualFinSF', 'Condition1_Artery|FireplaceQu_TA', 'Fence_GdPrv|Exterior1st_WdShing', 'HeatingQC_Fa|PavedDrive_Y', 'GarageType_BuiltIn|MoSold', 'HeatingQC_Fa|BsmtFinType1_ALQ', 'KitchenAbvGr|MSZoning_RL', 'PavedDrive_N|Fence_MnWw', 'BsmtFinType1_Tencode|MiscFeature_Shed', 'RoofMatl_Tar&Grv|BsmtCond_Gd', 'BsmtFinType2_Rec|Fence_MnWw', 'BsmtFinType1_Rec|Condition1_RRAn', 'Heating_GasA|LotConfig_FR2', 'MiscFeature_Tencode|Street_Grvl', 'BedroomAbvGr|BsmtFullBath', 'BldgType_Twnhs|CentralAir_Tencode', 'OverallQual|Exterior1st_MetalSd', 'LotShape_IR1|Electrical_SBrkr', 'Neighborhood_SWISU|Neighborhood_Gilbert', 'Functional_Maj2|Neighborhood_NWAmes', 'ExterCond_TA|Neighborhood_OldTown', 'BldgType_2fmCon|GarageQual_Po', 'ExterQual_TA|Heating_GasW', 'Functional_Maj2|SaleType_COD', 'BsmtQual_Fa|BsmtExposure_Mn', 'BsmtFinType2_Tencode|RoofStyle_Gambrel', 'GarageFinish_Tencode|2ndFlrSF', 'YrSold|MiscVal', 'ExterQual_Gd|Fence_MnPrv', 'LotShape_Tencode|PavedDrive_P', 'GarageFinish_Fin|SaleType_WD', 'Neighborhood_NridgHt|HalfBath', 'GarageCond_Gd|GarageCond_Ex', 'Neighborhood_NPkVill|LowQualFinSF', 'BsmtFullBath|MasVnrType_BrkFace', 'Utilities_Tencode|Neighborhood_SWISU', 'BsmtFinSF2|KitchenQual_Tencode', 'BsmtCond_Fa|LotConfig_Inside', 'BsmtFullBath|RoofStyle_Gambrel', 'Exterior1st_VinylSd|Neighborhood_BrkSide', 'BsmtFinType2_GLQ|Neighborhood_NoRidge', 'Neighborhood_BrDale|Neighborhood_ClearCr', 'LandContour_Lvl|HouseStyle_1.5Unf', 'Neighborhood_NWAmes|GarageType_Attchd', 'FireplaceQu_Gd|Heating_GasW', 'Heating_Tencode|SaleType_Oth', 'Exterior1st_BrkFace|SaleType_ConLI', 'Neighborhood_NAmes|GarageArea', 'TotRmsAbvGrd|BldgType_1Fam', 'BsmtFinSF2|BldgType_1Fam', 'Exterior1st_Stucco|GarageFinish_Tencode', 'MSZoning_C (all)|Exterior2nd_AsphShn', 'Fence_Tencode|LandSlope_Gtl', 'Exterior2nd_Stucco|Exterior1st_Plywood', 'SaleType_Tencode|Condition2_Tencode', 'GarageCond_TA|SaleType_Tencode', 'Neighborhood_NridgHt|SaleCondition_Partial', 'LotFrontage|HeatingQC_Gd', 'Condition2_Tencode|Functional_Min1', 'BsmtFinSF2|BsmtCond_Tencode', 'Neighborhood_NoRidge|Functional_Maj2', 'RoofStyle_Gambrel|Functional_Maj1', 'FireplaceQu_Tencode|Condition1_Tencode', 'Neighborhood_NridgHt|MSZoning_RH', 'SaleCondition_Tencode|BsmtFinSF1', 'BsmtFinType2_BLQ|BsmtCond_Tencode', 'EnclosedPorch|ExterQual_Ex', 'LotConfig_Tencode|MSZoning_RM', 'Functional_Maj2|Exterior2nd_Brk Cmn', 'PavedDrive_Y|Neighborhood_NWAmes', 'RoofStyle_Hip|Neighborhood_NAmes', 'TotalBsmtSF|LotConfig_CulDSac', 'BsmtFinType2_BLQ|Neighborhood_BrkSide', 'PoolArea|MSZoning_RH', 'Exterior1st_VinylSd|GarageYrBlt', 'Alley_Pave|BsmtFinSF2', 'SaleType_ConLD|GarageType_BuiltIn', 'Neighborhood_Mitchel|Neighborhood_OldTown', 'BsmtQual_Tencode|RoofMatl_WdShngl', 'Exterior1st_CemntBd|SaleCondition_Abnorml', 'BldgType_2fmCon|HouseStyle_2.5Unf', 'BsmtFullBath|BsmtCond_Fa', 'BldgType_Twnhs|HeatingQC_Gd', 'GarageCond_Po|Electrical_Tencode', 'Condition1_PosA|Neighborhood_StoneBr', 'Utilities_Tencode|BsmtFinType1_Tencode', 'YrSold|GarageCond_TA', 'Exterior1st_AsbShng|Neighborhood_IDOTRR', 'LotConfig_CulDSac|HouseStyle_1.5Fin', 'Fireplaces|RoofStyle_Gambrel', 'KitchenQual_Gd|WoodDeckSF', 'Neighborhood_CollgCr|BsmtFinSF2', '2ndFlrSF|Utilities_AllPub', 'Neighborhood_ClearCr|Exterior2nd_VinylSd', 'Exterior2nd_AsbShng|YearRemodAdd', 'MoSold|GarageYrBlt', 'BldgType_1Fam|BsmtFinType1_GLQ', 'LandSlope_Tencode|MSZoning_C (all)', 'GarageCond_TA|GarageType_Attchd', 'FireplaceQu_Fa|GarageFinish_RFn', 'BsmtExposure_Av|SaleType_Oth', 'LandSlope_Sev|MasVnrType_BrkCmn', 'GarageFinish_Fin|SaleType_CWD', 'ExterCond_TA|BsmtQual_Fa', 'GarageCond_Gd|BsmtExposure_Av', 'Heating_Tencode|GarageQual_TA', 'Neighborhood_Blmngtn|MSSubClass', 'Heating_GasA|LowQualFinSF', 'BsmtFinType2_LwQ|Street_Grvl', 'LotShape_Tencode|MoSold', 'FireplaceQu_Tencode|Fence_GdWo', 'GarageQual_Gd|Functional_Min2', 'RoofStyle_Hip|GarageFinish_Tencode', 'Exterior1st_Stucco|HouseStyle_1.5Fin', 'BsmtFinType2_Unf|Neighborhood_SawyerW', 'BsmtExposure_Tencode|Neighborhood_Blmngtn', 'Condition1_RRAn|Utilities_AllPub', 'GarageCars|Heating_Tencode', 'Neighborhood_Veenker|BsmtFinType1_Unf', 'Neighborhood_BrDale|Functional_Min2', 'LotArea|MSZoning_RH', 'Alley_Tencode|SaleType_ConLw', 'Neighborhood_NWAmes|BsmtFinType2_Rec', 'MiscVal|HouseStyle_1.5Fin', 'Neighborhood_ClearCr|Fence_GdPrv', 'Exterior2nd_Tencode|GarageYrBlt', 'Condition1_Artery|GarageType_Detchd', 'Alley_Pave|Condition1_Tencode', 'Neighborhood_OldTown|Condition2_Tencode', 'Exterior1st_Stucco|Exterior1st_Tencode', 'PavedDrive_N|GarageType_2Types', 'Neighborhood_Mitchel|MasVnrType_Tencode', 'ExterCond_Gd|BldgType_TwnhsE', 'Exterior2nd_VinylSd|GarageArea', 'Electrical_Tencode|PavedDrive_Tencode', 'YearRemodAdd|BsmtFinType2_BLQ', 'SaleType_Tencode|Neighborhood_StoneBr', 'GarageCond_Po|Condition2_Norm', 'BsmtFinType2_Rec|Neighborhood_SawyerW', 'BsmtHalfBath|PoolArea', 'LotShape_IR1|KitchenQual_Tencode', 'GarageFinish_Fin|Exterior2nd_Plywood', 'Neighborhood_NoRidge|ExterQual_Fa', 'HeatingQC_Gd|Neighborhood_StoneBr', 'Exterior2nd_CmentBd|Fence_GdWo', '2ndFlrSF|BsmtExposure_Gd', 'YearBuilt|TotRmsAbvGrd', 'PavedDrive_Tencode|LotConfig_Tencode', 'FullBath|HouseStyle_2Story', 'GarageCars|KitchenQual_Ex', 'TotalBsmtSF|Exterior2nd_VinylSd', 'Neighborhood_Sawyer|ExterQual_Fa', 'Exterior2nd_Stucco|KitchenQual_TA', 'ScreenPorch|Condition2_Norm', 'Neighborhood_Mitchel|PavedDrive_Y', 'HouseStyle_Tencode|GarageCond_Ex', 'Exterior1st_VinylSd|MSZoning_FV', 'BsmtQual_Tencode|Fence_Tencode', 'HouseStyle_1Story|MSZoning_C (all)', 'Condition1_RRAe|CentralAir_N', 'PavedDrive_N|BsmtFullBath', 'Neighborhood_StoneBr|BsmtCond_TA', 'Heating_Grav|Condition1_RRAe', 'YrSold|Exterior1st_CemntBd', 'GrLivArea|LotConfig_Corner', 'LandContour_Tencode|PavedDrive_P', 'Neighborhood_ClearCr|MiscVal', 'PoolQC_Tencode|Neighborhood_Crawfor', 'EnclosedPorch|HeatingQC_Ex', 'RoofMatl_Tencode|FireplaceQu_Ex', 'SaleType_WD', 'GarageType_Basment|Neighborhood_SawyerW', 'SaleCondition_Partial|Street_Grvl', 'KitchenQual_Fa|LotShape_IR3', 'RoofStyle_Hip|Condition1_Norm', 'Foundation_Stone|Foundation_Slab', 'RoofStyle_Shed|Functional_Min2', 'Electrical_Tencode|LandContour_Bnk', 'Neighborhood_OldTown|MSSubClass', 'Exterior1st_BrkFace|BsmtFinType1_ALQ', 'SaleType_ConLw|1stFlrSF', 'BsmtFinType2_Tencode|MasVnrType_BrkFace', 'LotArea|LotShape_IR3', 'Fireplaces|Electrical_SBrkr', 'ExterQual_TA|Fence_MnWw', 'Exterior1st_BrkFace|BsmtFinType1_LwQ', 'Neighborhood_Tencode|RoofStyle_Gable', 'GarageCond_TA|GarageQual_Fa', 'HouseStyle_SFoyer|SaleType_ConLD', 'Neighborhood_NridgHt|SaleCondition_Abnorml', 'RoofMatl_Tar&Grv|Neighborhood_MeadowV', 'BsmtFinType2_LwQ|KitchenQual_TA', 'MiscFeature_Othr|ExterQual_Tencode', 'LotArea|MasVnrType_Tencode', 'Foundation_BrkTil|BsmtFinType1_Unf', 'BldgType_Twnhs|LandContour_Lvl', 'KitchenQual_Tencode|OpenPorchSF', 'YrSold|Street_Grvl', 'BldgType_Duplex|SaleType_Oth', 'SaleType_New|BsmtCond_Fa', 'BsmtFinType2_BLQ|HalfBath', 'FireplaceQu_Po|Neighborhood_Edwards', 'Heating_Tencode|Functional_Maj1', 'LotShape_Tencode|FireplaceQu_Po', 'HouseStyle_Tencode|Exterior1st_Plywood', 'RoofMatl_Tar&Grv|Functional_Maj1', 'Fence_Tencode|RoofStyle_Tencode', 'Condition1_Artery|MSZoning_RL', 'Functional_Typ|GarageType_BuiltIn', 'HeatingQC_Ex|Condition1_Norm', 'Heating_Grav|ExterQual_Gd', 'BsmtCond_Po|ExterCond_Fa', 'BsmtFinType1_Rec|GarageCond_Fa', 'GarageCond_TA|PavedDrive_Tencode', 'LandContour_Bnk|Neighborhood_MeadowV', 'Neighborhood_Somerst|Neighborhood_Tencode', 'SaleCondition_Partial|Neighborhood_SawyerW', 'LotConfig_CulDSac|ExterQual_Gd', 'Fence_GdPrv|ExterCond_Tencode', 'FireplaceQu_Po|OverallCond', 'Exterior1st_Stucco|LandContour_HLS', 'Exterior1st_Stucco|1stFlrSF', 'BsmtFinType1_ALQ|ExterCond_Fa', 'BsmtFinType2_Tencode|RoofStyle_Tencode', 'HeatingQC_Fa|Exterior2nd_BrkFace', 'BsmtFinType1_Unf|MSZoning_RH', 'SaleType_ConLI|RoofStyle_Shed', 'ExterQual_TA|Foundation_PConc', 'LandSlope_Mod|GarageArea', 'BsmtQual_Fa|SaleType_CWD', 'GrLivArea|KitchenQual_Gd', 'Neighborhood_ClearCr|BsmtFinType1_LwQ', 'Exterior2nd_Stone|3SsnPorch', 'HouseStyle_1.5Unf|Exterior2nd_AsphShn', 'Foundation_PConc|Exterior1st_VinylSd', 'Neighborhood_Blmngtn|ExterQual_Fa', 'HouseStyle_1Story|ExterCond_Gd', 'BsmtExposure_Tencode|CentralAir_Tencode', 'LotArea|Electrical_SBrkr', 'BsmtFinType1_Rec|CentralAir_N', 'ExterCond_TA|MasVnrType_Tencode', 'Neighborhood_CollgCr|BedroomAbvGr', 'Street_Tencode|Foundation_PConc', 'LotShape_IR1|PoolArea', 'RoofMatl_Tencode|BsmtQual_TA', 'Foundation_Stone|RoofStyle_Gable', 'FireplaceQu_Tencode|Exterior1st_MetalSd', 'HouseStyle_2.5Unf|HouseStyle_1.5Fin', 'MasVnrType_BrkCmn|2ndFlrSF', 'LotShape_Tencode|HeatingQC_Tencode', 'Foundation_PConc|BsmtFinType2_GLQ', 'Exterior1st_BrkComm|MSZoning_Tencode', 'LandSlope_Mod|HouseStyle_1.5Unf', 'Functional_Mod|PoolArea', 'BsmtQual_Fa|Condition1_RRAe', 'Electrical_FuseP|Fence_Tencode', 'ExterCond_Tencode|Street_Pave', 'Neighborhood_Gilbert|Fence_MnWw', 'Exterior2nd_MetalSd|BldgType_1Fam', 'BsmtCond_Gd|SaleType_COD', 'PavedDrive_N|FireplaceQu_Ex', 'Neighborhood_Crawfor|GarageQual_Tencode', 'KitchenQual_Tencode|2ndFlrSF', 'GarageCond_TA|GarageQual_Tencode', 'GarageCond_Tencode|Functional_Maj2', 'BsmtExposure_Tencode|Condition2_Tencode', 'Neighborhood_NoRidge|Neighborhood_Sawyer', 'BldgType_2fmCon|BsmtFinType2_LwQ', 'YearBuilt|Neighborhood_BrkSide', 'KitchenQual_Gd|Street_Pave', 'GarageType_BuiltIn|Neighborhood_BrkSide', 'BsmtQual_Gd|MSZoning_RH', 'Neighborhood_OldTown|MSZoning_RL', 'RoofStyle_Shed|MoSold', 'LandContour_HLS|Foundation_Tencode', 'RoofMatl_Tar&Grv|Exterior1st_Tencode', 'Exterior1st_VinylSd|Exterior1st_BrkComm', 'PavedDrive_N|BsmtQual_Ex', 'Exterior2nd_Stucco|Foundation_Slab', 'Fence_MnPrv|ExterQual_Fa', 'BsmtQual_Fa|BsmtExposure_Gd', 'GarageCond_Fa|Alley_Grvl', 'Electrical_FuseA|ExterQual_Ex', 'BsmtExposure_Av|BsmtFinType1_GLQ', 'LotShape_IR2|ExterQual_Tencode', 'PavedDrive_Tencode|Fence_GdPrv', 'SaleType_ConLD|MasVnrType_Tencode', 'Exterior1st_BrkComm|GarageYrBlt', 'TotalBsmtSF|BsmtFinType2_BLQ', 'BsmtFinType1_Tencode|MiscVal', 'BsmtFullBath|CentralAir_Tencode', 'BldgType_TwnhsE|ScreenPorch', 'GarageCond_Ex|HouseStyle_2.5Unf', 'HouseStyle_Tencode|Condition1_RRAn', 'Street_Tencode|ExterCond_Fa', 'BsmtQual_Tencode|Exterior2nd_BrkFace', 'HeatingQC_Fa|BsmtQual_Ex', '3SsnPorch|SaleCondition_Partial', 'Neighborhood_Mitchel|BsmtQual_TA', 'Neighborhood_CollgCr|TotRmsAbvGrd', 'BsmtQual_Ex|BsmtFinType1_Rec', 'MiscFeature_Gar2|Exterior1st_WdShing', 'GarageFinish_Unf|Condition1_Feedr', 'Neighborhood_NoRidge|GarageQual_Po', 'ExterQual_Ex|MasVnrType_None', 'Fence_Tencode|Neighborhood_Sawyer', 'HouseStyle_Tencode|Neighborhood_NAmes', 'GarageFinish_Fin|Neighborhood_NWAmes', 'KitchenAbvGr|MSZoning_RH', 'Exterior2nd_AsbShng|Exterior2nd_Wd Shng', 'GarageFinish_RFn|Exterior2nd_AsphShn', 'Exterior2nd_CmentBd|Exterior1st_Tencode', 'MiscFeature_Shed|BsmtExposure_Av', '2ndFlrSF|Condition2_Norm', 'Neighborhood_Blmngtn|Neighborhood_IDOTRR', 'HouseStyle_1Story|ExterCond_TA', 'YearRemodAdd|GarageType_CarPort', 'Fireplaces|PavedDrive_P', 'SaleType_COD|HouseStyle_2Story', 'Neighborhood_NWAmes|SaleCondition_Partial', 'BsmtCond_Po|MSZoning_RH', 'LotShape_IR1|RoofStyle_Gambrel', 'Functional_Min1|Neighborhood_Sawyer', 'GarageFinish_RFn|Condition1_RRAn', 'Condition1_Artery|MoSold', 'Exterior2nd_MetalSd|GarageCond_Ex', 'Exterior2nd_AsbShng|GarageCond_Fa', 'HeatingQC_Fa|Neighborhood_NoRidge', 'KitchenQual_Fa|BldgType_1Fam', 'Neighborhood_NWAmes|HouseStyle_1.5Fin', 'Neighborhood_StoneBr|CentralAir_Y', 'Heating_Grav|Condition2_Tencode', 'Foundation_Tencode|BldgType_1Fam', 'GarageQual_Gd|Exterior1st_Tencode', 'Neighborhood_CollgCr|GarageType_BuiltIn', 'LandContour_Low|BldgType_TwnhsE', 'GarageType_Tencode|Exterior1st_VinylSd', 'LotFrontage|LotConfig_CulDSac', 'BsmtCond_Gd|Neighborhood_Gilbert', 'SaleCondition_Alloca|MSZoning_FV', 'RoofStyle_Shed|BsmtExposure_Gd', 'Neighborhood_ClearCr|RoofMatl_CompShg', 'Exterior2nd_BrkFace|ExterQual_Fa', 'GarageCond_TA|GarageCond_Fa', 'Foundation_Stone|LotConfig_Corner', 'SaleCondition_Abnorml|Exterior2nd_Wd Shng', 'Functional_Tencode|Exterior1st_Tencode', 'Neighborhood_NridgHt|Exterior2nd_Brk Cmn', 'LandContour_HLS|RoofStyle_Gable', 'Exterior2nd_Brk Cmn|LotShape_IR3', 'LotShape_IR2|GarageFinish_RFn', 'GarageCond_Tencode|Neighborhood_Timber', 'Neighborhood_NoRidge|GarageQual_TA', 'Condition2_Artery|Neighborhood_Gilbert', 'Fireplaces|Heating_Tencode', 'Exterior2nd_Stone|GarageCond_Ex', 'SaleCondition_Alloca|Street_Grvl', 'Condition1_Tencode|MiscFeature_Gar2', 'Exterior1st_BrkFace|Exterior2nd_BrkFace', 'TotRmsAbvGrd|GarageQual_Po', 'Exterior2nd_Tencode|Neighborhood_StoneBr', 'FireplaceQu_Ex|Functional_Min2', 'YrSold|Electrical_FuseP', 'Neighborhood_OldTown|ExterCond_Fa', 'BsmtQual_Ex|PavedDrive_Tencode', 'YrSold|LotConfig_CulDSac', 'Exterior1st_AsbShng|BsmtFinType2_Unf', 'Functional_Min1|MasVnrType_Tencode', 'Exterior2nd_AsbShng|BldgType_Tencode', 'Neighborhood_Somerst|Neighborhood_NoRidge', 'Alley_Tencode|Condition1_Tencode', 'Functional_Maj2|RoofStyle_Gable', 'Functional_Maj1|ScreenPorch', 'Exterior2nd_AsbShng|FireplaceQu_Po', 'BldgType_TwnhsE|MasVnrType_Stone', 'Neighborhood_Somerst|MSZoning_FV', 'BedroomAbvGr|ExterQual_Tencode', 'Condition1_RRAe|RoofStyle_Shed', 'BedroomAbvGr|BsmtFinType1_Rec', 'GarageType_CarPort|HouseStyle_SLvl', 'RoofMatl_CompShg|HalfBath', 'Condition1_RRAe|Condition1_RRAn', 'KitchenQual_Gd|BsmtFinType1_GLQ', 'PavedDrive_P|BsmtCond_TA', 'RoofStyle_Tencode|Exterior1st_MetalSd', 'MoSold|MSZoning_RL', 'BsmtExposure_Tencode|HouseStyle_SLvl', 'BsmtFinType1_BLQ|CentralAir_N', 'GarageType_BuiltIn|PoolArea', 'Neighborhood_Blmngtn|Foundation_Slab', 'HeatingQC_Gd|Exterior1st_AsbShng', 'FireplaceQu_Tencode|MiscFeature_Gar2', 'RoofMatl_Tar&Grv|Condition1_RRAe', 'SaleType_ConLw|MiscFeature_Gar2', 'MSZoning_RM|BsmtExposure_Mn', 'BsmtFinType2_BLQ|GarageType_Basment', 'Utilities_Tencode|Neighborhood_CollgCr', 'BsmtFinType2_LwQ|Condition1_RRAn', 'Alley_Tencode|HeatingQC_Ex', '3SsnPorch|RoofMatl_WdShngl', 'LotFrontage|GarageType_Tencode', 'ExterCond_Gd|HouseStyle_2.5Unf', 'Heating_GasA|Neighborhood_MeadowV', 'RoofStyle_Tencode|Neighborhood_SawyerW', 'SaleType_WD|Functional_Min2', 'ExterQual_TA|HeatingQC_Tencode', 'KitchenQual_Tencode|BsmtFinType2_Unf', 'Electrical_FuseA|Neighborhood_Gilbert', 'Neighborhood_Blmngtn|GarageType_Tencode', 'OpenPorchSF|Functional_Min2', 'BsmtExposure_Gd|Neighborhood_IDOTRR', 'BsmtFinType2_GLQ|YearBuilt', 'Foundation_Stone|Heating_Grav', 'YearRemodAdd|Neighborhood_Veenker', 'BsmtFinType2_LwQ|HouseStyle_SLvl', 'LotShape_IR2|Electrical_SBrkr', 'Electrical_FuseA', 'BsmtFinType1_BLQ|GarageCars', 'KitchenAbvGr|GarageQual_TA', 'RoofStyle_Hip|LandSlope_Gtl', 'BsmtFinType2_GLQ|SaleType_Oth', 'BedroomAbvGr|BsmtFinType2_Rec', 'Condition1_PosA|BsmtFinType1_LwQ', 'KitchenAbvGr|Fence_MnPrv', 'LotConfig_FR2|TotRmsAbvGrd', 'Exterior2nd_Tencode|LandSlope_Tencode', 'Condition1_RRAe|MSZoning_FV', 'SaleType_COD|SaleType_Oth', 'HouseStyle_1Story|3SsnPorch', 'YrSold|Neighborhood_Veenker', 'GarageCond_TA|Exterior2nd_BrkFace', 'GarageFinish_Unf|Functional_Min1', 'Functional_Typ|GarageCond_Tencode', 'LandContour_Bnk|GarageCond_Fa', 'Exterior2nd_AsbShng|KitchenQual_Fa', 'FireplaceQu_Gd|LowQualFinSF', 'BldgType_2fmCon|LotShape_IR3', 'Heating_Grav|BsmtCond_Gd', 'KitchenQual_TA|Exterior1st_Wd Sdng', '2ndFlrSF|OverallCond', 'KitchenQual_Fa|Exterior2nd_AsphShn', 'BsmtFinType1_LwQ|Exterior2nd_Wd Shng', 'BedroomAbvGr|Exterior2nd_Wd Sdng', 'LotFrontage|ScreenPorch', 'EnclosedPorch|BldgType_TwnhsE', 'LotConfig_Corner|Neighborhood_MeadowV', 'HeatingQC_Ex|BsmtExposure_Mn', 'HouseStyle_2.5Unf|SaleCondition_Abnorml', 'Electrical_FuseF|Condition1_Norm', 'Neighborhood_BrkSide|Exterior1st_MetalSd', 'HeatingQC_TA|BsmtFinSF1', 'BsmtCond_Gd|SaleCondition_Abnorml', 'Exterior2nd_CmentBd|BsmtFinType1_GLQ', '2ndFlrSF|GarageQual_Tencode', 'Exterior2nd_Brk Cmn|MSZoning_RH', 'BldgType_2fmCon|SaleType_Oth', 'YearRemodAdd|BldgType_1Fam', 'LandContour_Lvl|OpenPorchSF', 'Street_Tencode|MiscFeature_Othr', 'GarageType_Detchd|Heating_Tencode', '1stFlrSF|Condition1_RRAn', 'BsmtFinSF2|Exterior1st_Tencode', 'GarageType_Detchd|Exterior1st_Tencode', 'GarageType_CarPort|SaleCondition_Abnorml', 'BsmtFinType2_GLQ|BsmtQual_Tencode', 'Foundation_Stone|HouseStyle_2Story', 'FullBath|GarageArea', 'GarageCond_Po|2ndFlrSF', 'Neighborhood_Blmngtn|SaleType_ConLw', 'GarageQual_Fa|SaleCondition_Normal', 'Functional_Tencode|MiscFeature_Gar2', 'Neighborhood_BrDale|MiscFeature_Gar2', 'BsmtFinType2_ALQ|1stFlrSF', 'Foundation_BrkTil|Alley_Grvl', 'Neighborhood_BrDale|ExterCond_TA', 'Neighborhood_CollgCr|SaleCondition_Partial', 'Heating_GasW|Electrical_FuseF', 'Exterior1st_VinylSd|Exterior2nd_Plywood', 'Exterior2nd_VinylSd|ExterQual_Tencode', 'Electrical_FuseA|Exterior1st_AsbShng', 'LotShape_Reg|PoolQC_Tencode', 'Functional_Typ|BsmtExposure_Av', 'BsmtFinSF2|PavedDrive_Y', 'MSZoning_C (all)|Exterior1st_Plywood', 'RoofStyle_Flat|HeatingQC_Gd', 'Foundation_BrkTil|BsmtCond_Tencode', 'BsmtCond_Po|BsmtExposure_Gd', 'Functional_Min1|SaleType_Oth', 'RoofStyle_Tencode|MasVnrType_None', 'SaleType_Oth|BsmtQual_Gd', 'RoofStyle_Shed|Exterior1st_MetalSd', 'GarageType_CarPort|BsmtFinType1_GLQ', 'Alley_Pave|Neighborhood_IDOTRR', 'HouseStyle_1.5Unf|KitchenQual_TA', 'BsmtQual_TA', 'BsmtExposure_Tencode|Exterior2nd_Tencode', 'GarageFinish_Unf|Electrical_FuseF', 'GarageCond_Ex|BsmtCond_Fa', 'Utilities_Tencode|Exterior2nd_AsbShng', 'MSZoning_RM|BsmtCond_Tencode', 'GarageCond_Tencode|MasVnrType_Stone', 'Neighborhood_Blmngtn|Exterior2nd_MetalSd', 'LandSlope_Gtl|Neighborhood_BrkSide', 'Electrical_FuseF|Exterior2nd_HdBoard', 'Exterior2nd_Stucco|Street_Grvl', 'GarageArea|BsmtCond_TA', 'ExterQual_Ex|BsmtExposure_Mn', 'GarageType_BuiltIn|2ndFlrSF', 'SaleCondition_Alloca|OpenPorchSF', 'Exterior2nd_Stucco|BsmtFinType2_Unf', 'GarageType_BuiltIn|ScreenPorch', 'LotConfig_Corner|KitchenQual_Tencode', 'Condition1_PosA|HouseStyle_1.5Fin', 'FullBath|Neighborhood_Crawfor', 'GarageCond_Po|Exterior1st_Stucco', 'BldgType_Twnhs|HalfBath', 'GarageQual_Gd|Alley_Grvl', 'Heating_GasW|FireplaceQu_Fa', 'GrLivArea|HeatingQC_Gd', 'SaleType_WD|MasVnrArea', 'MiscFeature_Othr|TotRmsAbvGrd', 'Neighborhood_Mitchel|MasVnrType_None', 'Electrical_FuseA|Fence_MnWw', 'Street_Tencode|2ndFlrSF', 'Exterior1st_AsbShng|RoofMatl_Tar&Grv', 'HeatingQC_Gd|BsmtQual_Gd', 'BsmtFinSF2|ScreenPorch', 'BsmtFinType2_LwQ|ScreenPorch', 'GarageCond_Gd|Fence_MnWw', 'ExterQual_Ex|MSSubClass', 'Functional_Maj1|ExterQual_Fa', 'BsmtCond_Po|SaleType_Oth', 'HouseStyle_SFoyer|LotShape_IR1', 'YearRemodAdd|Neighborhood_BrkSide', 'LandContour_Tencode|BedroomAbvGr', 'Street_Tencode|Neighborhood_NoRidge', 'YrSold|Foundation_CBlock', '3SsnPorch|Street_Grvl', 'GarageType_Tencode|SaleType_WD', 'EnclosedPorch|Alley_Tencode', 'RoofStyle_Gable|BsmtFinType1_Unf', 'GarageCars|SaleType_Oth', 'EnclosedPorch|Foundation_Slab', 'GarageFinish_Unf|Electrical_SBrkr', 'ExterCond_Gd|SaleType_Oth', 'Fence_GdPrv|Exterior2nd_MetalSd', 'Functional_Maj1|Exterior2nd_CmentBd', 'BsmtFinType2_Rec|GarageType_Basment', 'GarageYrBlt|Exterior2nd_AsphShn', 'Foundation_Stone|SaleCondition_Normal', 'FullBath|LotArea', 'Neighborhood_NAmes|ExterQual_Gd', 'Neighborhood_NWAmes|SaleCondition_Abnorml', 'Street_Grvl|ExterQual_Fa', 'HeatingQC_TA|PoolArea', 'SaleType_Oth|BsmtExposure_Mn', 'Foundation_Stone|Condition1_RRAe', 'Heating_Tencode|BsmtCond_Po', 'BsmtFullBath|Alley_Grvl', 'BsmtFinType1_BLQ|BsmtFinType1_LwQ', 'FireplaceQu_Tencode|GarageCars', 'Exterior2nd_Wd Sdng|GarageFinish_RFn', 'Fireplaces|Neighborhood_MeadowV', 'Fence_GdWo|MSZoning_FV', 'Alley_Pave|GarageFinish_RFn', 'YrSold|ExterQual_Gd', 'Neighborhood_Edwards|GarageQual_Fa', 'ExterCond_Tencode|Neighborhood_NWAmes', 'GarageCond_Tencode|MasVnrType_BrkCmn', 'Neighborhood_Veenker|Fence_MnWw', 'SaleType_COD|Street_Pave', 'GarageCond_Po|Exterior2nd_VinylSd', 'BsmtFullBath|CentralAir_N', 'MSSubClass|CentralAir_Y', 'TotRmsAbvGrd|Neighborhood_MeadowV', 'PavedDrive_N|FireplaceQu_Po', 'Electrical_FuseA|SaleType_Tencode', 'GarageCond_Tencode|RoofStyle_Shed', 'MiscFeature_Shed|MasVnrType_Stone', 'Alley_Tencode|Neighborhood_Crawfor', 'GarageCars', 'Condition2_Tencode|BsmtExposure_Av', 'GarageType_Attchd|BldgType_1Fam', 'ExterQual_Gd', 'Functional_Maj2|MSZoning_RH', 'LotArea|Electrical_FuseF', 'Exterior1st_AsbShng|FireplaceQu_TA', 'Exterior2nd_BrkFace|Exterior1st_CemntBd', 'LowQualFinSF|HouseStyle_1.5Fin', 'BsmtQual_Ex|GarageQual_TA', 'BsmtFinType1_Unf|Exterior1st_MetalSd', 'RoofStyle_Flat|BsmtQual_Tencode', 'Neighborhood_Somerst|LandContour_Tencode', 'BsmtFinType1_LwQ|SaleType_COD', 'RoofMatl_CompShg|LandSlope_Gtl', 'LandContour_HLS|Electrical_FuseF', 'Street_Tencode|BldgType_2fmCon', 'LotFrontage|BsmtExposure_Mn', 'HouseStyle_Tencode|SaleCondition_Partial', 'HalfBath|Neighborhood_BrkSide', 'Exterior2nd_AsbShng|Foundation_Stone', 'Functional_Mod|GarageType_Basment', 'HouseStyle_2.5Unf|Exterior1st_MetalSd', 'HeatingQC_Tencode|Fence_GdPrv', 'RoofMatl_WdShngl|BsmtQual_Gd', 'Condition1_Artery|Exterior2nd_Stone', 'PavedDrive_N|BsmtFinType2_BLQ', 'FireplaceQu_Po|PavedDrive_Y', 'Neighborhood_Somerst|MasVnrType_BrkFace', 'Functional_Maj2|Condition1_PosA', 'TotRmsAbvGrd|1stFlrSF', 'BsmtFinType1_ALQ|3SsnPorch', 'Electrical_FuseP|RoofStyle_Shed', 'MSZoning_RL|ExterQual_Fa', 'Exterior2nd_Wd Sdng|ExterQual_Fa', 'Heating_Grav|ExterQual_Fa', 'RoofStyle_Gambrel|ExterQual_Tencode', 'Exterior2nd_Stucco|MasVnrType_BrkCmn', 'BldgType_2fmCon|ScreenPorch', 'BldgType_Duplex|Exterior2nd_AsphShn', 'SaleType_ConLI|Condition2_Norm', 'Condition1_Norm|Neighborhood_Gilbert', 'Condition2_Artery|Alley_Grvl', 'BsmtFinType2_GLQ|MasVnrType_Tencode', 'GarageCond_TA|Foundation_CBlock', 'LotShape_Tencode|Neighborhood_NWAmes', 'RoofMatl_Tencode|BsmtExposure_Mn', 'BsmtFinType2_Tencode|Neighborhood_Timber', 'Heating_GasA|WoodDeckSF', 'MasVnrType_BrkCmn|Street_Grvl', 'ExterQual_TA|Neighborhood_Veenker', 'FireplaceQu_Tencode|BsmtFinType2_BLQ', 'LotFrontage|MasVnrType_BrkCmn', 'Condition1_Norm|RoofStyle_Tencode', 'RoofStyle_Flat|GarageQual_TA', 'LandContour_HLS|Exterior1st_CemntBd', 'LandContour_HLS|GarageYrBlt', 'BldgType_Twnhs|Exterior1st_VinylSd', 'LotShape_IR2|HouseStyle_SLvl', 'BldgType_TwnhsE|GarageCond_Ex', 'GarageQual_Fa|SaleType_New', 'MasVnrType_BrkFace|Fence_MnWw', '3SsnPorch|GarageType_2Types', 'Exterior2nd_CmentBd|Condition1_Tencode', 'GarageCond_Po|LotShape_Reg', 'BsmtFinType1_GLQ|Fence_MnWw', 'BsmtFinType2_GLQ|LandSlope_Mod', 'Street_Tencode|GarageFinish_Fin', 'BsmtFinSF2|BsmtQual_TA', 'Neighborhood_Mitchel|BsmtUnfSF', 'KitchenQual_Ex|OverallCond', 'MiscFeature_Tencode|Neighborhood_MeadowV', 'Alley_Tencode|MasVnrArea', 'Exterior1st_Stucco|SaleCondition_Family', 'Foundation_PConc|HouseStyle_SFoyer', 'Condition1_PosA|GarageType_CarPort', 'GarageType_Detchd|Neighborhood_MeadowV', 'Condition2_Norm|Fence_MnPrv', 'Neighborhood_NridgHt|Foundation_CBlock', 'TotalBsmtSF|GarageCond_Fa', 'HouseStyle_Tencode|MSZoning_FV', 'GarageQual_Po|CentralAir_N', 'BsmtExposure_Mn|Foundation_Slab', 'GarageCond_Po|FullBath', 'LandSlope_Sev|MiscFeature_Shed', 'BsmtFinType2_Tencode|MSZoning_RM', 'Fireplaces|LotConfig_CulDSac', 'MasVnrType_Stone|Utilities_AllPub', 'GarageCond_Tencode|BsmtFinSF2', 'Neighborhood_Blmngtn|MiscVal', 'LandContour_Lvl|GarageType_CarPort', 'GarageQual_Gd', 'GarageType_Detchd|Electrical_FuseF', 'MoSold|BsmtCond_Fa', 'HeatingQC_Gd|LandContour_Bnk', 'Exterior2nd_AsbShng|BsmtFinSF1', 'Foundation_Slab|Functional_Min2', 'Exterior2nd_AsbShng|ExterQual_Fa', 'Neighborhood_NPkVill|GarageCond_Ex', 'SaleType_WD|3SsnPorch', 'CentralAir_Tencode|WoodDeckSF', 'GarageQual_Gd|Fence_Tencode', 'SaleCondition_Tencode|EnclosedPorch', 'GrLivArea|BsmtQual_Fa', 'Condition1_RRAn|BsmtExposure_Mn', 'FireplaceQu_Tencode|Fence_MnPrv', 'LotConfig_CulDSac|Neighborhood_Crawfor', 'Condition1_Artery|Neighborhood_Blmngtn', 'BldgType_Twnhs|BsmtFinType1_Unf', 'Foundation_Tencode|PoolQC_Tencode', 'LandSlope_Tencode|BsmtFinSF1', 'HeatingQC_Ex|Utilities_AllPub', 'Fireplaces|Exterior1st_MetalSd', 'Exterior2nd_Tencode|Exterior1st_MetalSd', 'SaleType_ConLw|BsmtFinType1_Rec', 'SaleCondition_Abnorml|GarageYrBlt', 'LandSlope_Gtl|CentralAir_Y', 'Exterior2nd_BrkFace|CentralAir_N', 'BsmtFinType2_GLQ|HouseStyle_1.5Fin', 'Neighborhood_NoRidge|PavedDrive_P', 'RoofStyle_Flat|Electrical_FuseP', 'Neighborhood_StoneBr|Exterior2nd_AsphShn', 'LotShape_Reg|Exterior2nd_MetalSd', 'BsmtFinType1_LwQ|Exterior2nd_Plywood', 'Electrical_FuseA|GarageCond_Fa', 'BsmtQual_Tencode|Exterior2nd_Wd Shng', 'HouseStyle_Tencode|Neighborhood_NoRidge', 'MiscVal|CentralAir_Y', 'LandContour_Low|MasVnrType_BrkFace', 'Condition1_PosN|GarageType_2Types', 'GarageFinish_Tencode|Neighborhood_NAmes', 'RoofStyle_Hip|Neighborhood_Sawyer', 'GarageQual_Fa|BsmtCond_Gd', 'KitchenQual_Tencode|Neighborhood_Sawyer', 'Heating_Tencode|ScreenPorch', 'Street_Grvl|SaleType_COD', 'LotFrontage|Neighborhood_MeadowV', 'Electrical_SBrkr|KitchenQual_Tencode', 'GarageCond_Fa|Exterior2nd_Wd Shng', 'LandSlope_Sev|HouseStyle_1.5Fin', 'LandSlope_Mod|Exterior2nd_MetalSd', 'LotConfig_Corner|LandSlope_Sev', 'SaleType_New|BsmtFinType1_GLQ', 'RoofStyle_Hip|GrLivArea', 'Exterior1st_Stucco|LotConfig_Tencode', 'Utilities_Tencode|GarageQual_Tencode', 'GarageCond_Tencode|CentralAir_Y', 'Exterior2nd_Stone|Condition2_Tencode', 'GarageType_Tencode|BsmtFinType1_Unf', 'LotConfig_FR2|Exterior2nd_VinylSd', 'BsmtFinSF2|BsmtFinType1_Unf', 'FireplaceQu_Fa|BsmtCond_Tencode', 'LotConfig_Corner|GarageQual_Fa', 'GarageFinish_Fin|SaleCondition_Abnorml', 'HalfBath|HouseStyle_SLvl', 'GarageType_CarPort|BsmtCond_TA', 'Alley_Tencode|BsmtQual_Ex', 'SaleCondition_Tencode|Neighborhood_SWISU', 'RoofStyle_Hip|Neighborhood_SWISU', 'EnclosedPorch|Functional_Mod', 'OverallQual|Neighborhood_SawyerW', 'BsmtFinSF2|MSZoning_RM', 'BldgType_Duplex|LotFrontage', 'FireplaceQu_Po|FireplaceQu_TA', 'SaleCondition_Tencode|Exterior1st_CemntBd', 'Exterior1st_AsbShng|RoofStyle_Gambrel', 'GarageQual_Gd|ExterQual_Ex', 'OverallQual|3SsnPorch', 'BldgType_Tencode|Neighborhood_SawyerW', 'ExterCond_Tencode|Exterior2nd_Brk Cmn', 'PoolQC_Tencode|Neighborhood_Sawyer', 'Neighborhood_SWISU|OpenPorchSF', 'Heating_GasA|PoolQC_Tencode', 'Condition2_Tencode|BsmtCond_Po', 'CentralAir_Tencode|CentralAir_N', 'LotConfig_CulDSac|Exterior2nd_Wd Sdng', 'RoofStyle_Shed|LotConfig_Tencode', 'GarageCond_Po|Alley_Tencode', 'PavedDrive_Tencode|Neighborhood_MeadowV', 'HeatingQC_Tencode|BldgType_Tencode', 'Utilities_Tencode|GarageQual_Po', 'BsmtQual_Tencode|Neighborhood_Veenker', 'Exterior2nd_HdBoard|Exterior2nd_AsphShn', 'SaleType_ConLD|MSSubClass', 'Condition1_Artery|ScreenPorch', 'MasVnrType_BrkCmn|1stFlrSF', 'Neighborhood_NWAmes|ScreenPorch', 'HouseStyle_1Story|BsmtFinType2_Rec', 'LandSlope_Tencode|BsmtQual_Fa', 'Fireplaces|GarageYrBlt', 'TotRmsAbvGrd|Neighborhood_Timber', 'Utilities_Tencode|BsmtCond_TA', 'KitchenQual_Gd|Electrical_FuseA', 'Alley_Pave|SaleType_ConLI', '2ndFlrSF|Alley_Grvl', 'Exterior2nd_Tencode|SaleType_Oth', 'BsmtFinType2_ALQ|ScreenPorch', 'SaleType_Oth|Exterior2nd_HdBoard', 'SaleCondition_Alloca|ExterQual_Fa', 'Condition1_Artery|GarageType_Basment', 'LotShape_Tencode|BsmtExposure_No', 'PavedDrive_Y|Condition1_Tencode', 'LotConfig_Tencode|SaleCondition_Abnorml', 'Foundation_BrkTil|HouseStyle_1.5Fin', 'LandSlope_Tencode|HeatingQC_Tencode', 'Neighborhood_SawyerW|HouseStyle_2Story', 'BsmtCond_Tencode|SaleCondition_Partial', 'LandSlope_Tencode|Condition2_Tencode', 'KitchenQual_Ex|Exterior2nd_CmentBd', 'Exterior1st_AsbShng|GarageQual_Fa', 'RoofStyle_Tencode|CentralAir_Y', 'SaleCondition_Tencode|BsmtQual_Tencode', 'SaleType_COD|Exterior1st_MetalSd', 'GarageFinish_Unf|HouseStyle_2.5Unf', 'Functional_Typ|Condition1_PosA', 'LotShape_IR1|ExterCond_Tencode', 'Neighborhood_NWAmes|CentralAir_N', 'LotShape_Tencode|CentralAir_N', 'Fence_MnWw|Functional_Min2', 'Heating_Grav|Condition1_RRAn', 'OverallQual|FireplaceQu_Gd', 'Functional_Typ|HalfBath', 'HeatingQC_Fa|ExterCond_Fa', 'Heating_Tencode|Neighborhood_OldTown', 'MiscFeature_Gar2|ExterCond_Fa', 'BsmtQual_Fa|Condition1_Tencode', 'GarageArea|RoofStyle_Tencode', 'Heating_Grav|SaleType_ConLw', 'BsmtFinType1_BLQ|Fence_MnWw', 'LandSlope_Tencode|Exterior1st_WdShing', 'OpenPorchSF|BsmtFinType2_Unf', 'Foundation_BrkTil|Neighborhood_IDOTRR', 'Foundation_Tencode|Street_Pave', 'ExterCond_TA|HeatingQC_Tencode', 'Neighborhood_OldTown|HalfBath', 'Electrical_FuseA|Alley_Grvl', 'SaleType_ConLD|Neighborhood_StoneBr', 'Condition1_RRAe|HouseStyle_1.5Fin', 'ExterQual_TA|MiscFeature_Tencode', 'GarageType_Tencode|Electrical_FuseF', 'GarageQual_Gd|Exterior2nd_HdBoard', 'Neighborhood_Somerst|SaleType_CWD', 'LotConfig_FR2|GarageQual_Po', 'BldgType_Twnhs|OpenPorchSF', 'SaleCondition_Tencode|ExterQual_Tencode', 'OpenPorchSF|HouseStyle_2.5Unf', 'BsmtFinType2_Unf|Fence_MnPrv', 'LotShape_IR2|Exterior2nd_VinylSd', '1stFlrSF|GarageArea', 'BsmtQual_Tencode|1stFlrSF', 'Heating_Tencode|BsmtFullBath', 'LandSlope_Gtl|MSSubClass', 'BsmtFinType1_BLQ|PoolQC_Tencode', 'GarageQual_TA|Exterior2nd_MetalSd', 'SaleType_Tencode|Neighborhood_Sawyer', 'Street_Tencode|Neighborhood_Sawyer', 'Condition1_PosN|LandSlope_Gtl', '1stFlrSF|Exterior2nd_AsphShn', 'BsmtFinType1_Rec|LotConfig_Inside', 'BsmtExposure_No|Exterior1st_Tencode', 'Neighborhood_SWISU|Condition1_Feedr', 'BsmtCond_Gd|GarageCond_Ex', 'HalfBath|BsmtCond_Tencode', 'ExterCond_Tencode|MasVnrArea', 'Neighborhood_NPkVill|Exterior1st_Tencode', 'GarageQual_TA|Neighborhood_MeadowV', 'Exterior2nd_MetalSd|BsmtCond_Po', 'Exterior1st_AsbShng|GarageFinish_RFn', 'MiscFeature_Othr|MiscFeature_Gar2', 'Heating_Tencode|Exterior2nd_VinylSd', 'BsmtFinType1_Tencode|Condition2_Tencode', 'SaleType_New|Functional_Maj1', 'OverallQual|Neighborhood_NoRidge', 'Functional_Maj1|Functional_Min1', 'BldgType_Duplex|SaleType_ConLD', 'BsmtQual_TA|Fence_GdWo', 'Exterior2nd_CmentBd|MSZoning_RH', 'ExterCond_Tencode|Exterior2nd_Plywood', 'Fireplaces|BsmtCond_Tencode', 'MasVnrType_BrkCmn|BsmtFinType2_Unf', 'Exterior2nd_BrkFace|MiscFeature_Shed', 'Exterior2nd_VinylSd|Neighborhood_Edwards', 'GarageCond_Po|FireplaceQu_Po', 'SaleCondition_Abnorml|MSZoning_RL', 'Condition1_RRAe|PoolArea', 'GarageCond_Po|Neighborhood_Gilbert', 'Exterior1st_CemntBd|Functional_Min2', 'ExterCond_TA|HouseStyle_2.5Unf', 'OverallQual|KitchenAbvGr', 'GarageCond_Po|SaleCondition_Normal', 'Neighborhood_ClearCr|FullBath', 'YearRemodAdd|Neighborhood_Somerst', 'Condition1_RRAe|Neighborhood_Timber', 'Exterior2nd_AsbShng|Heating_Tencode', 'Neighborhood_OldTown|GarageQual_TA', 'RoofStyle_Flat|MiscVal', 'GarageType_Tencode|BldgType_Tencode', 'Neighborhood_Blmngtn|Neighborhood_Gilbert', 'HeatingQC_Gd|BsmtQual_Fa', 'GarageCond_Gd|BsmtFinType1_Unf', 'HeatingQC_Fa|LandSlope_Mod', 'BsmtFinType1_Tencode|ExterCond_Tencode', 'KitchenQual_Tencode|LotConfig_Tencode', 'Foundation_Stone|BsmtExposure_No', 'Exterior2nd_Tencode|MSZoning_RH', 'ExterCond_TA|MSZoning_RL', 'Neighborhood_NridgHt|Neighborhood_Tencode', 'HeatingQC_Tencode|Neighborhood_Sawyer', 'Fence_Tencode|RoofStyle_Shed', 'FireplaceQu_Gd|GarageFinish_Fin', 'ExterCond_TA|Exterior1st_Tencode', 'Neighborhood_Tencode|RoofStyle_Shed', 'Heating_Grav|GarageQual_Fa', 'Neighborhood_Blmngtn|Foundation_BrkTil', 'FireplaceQu_Po|Foundation_Slab', 'Neighborhood_NPkVill|BsmtExposure_Av', 'GarageYrBlt|Exterior2nd_Wd Shng', 'LotShape_Reg|HeatingQC_Ex', 'GarageType_Tencode|Condition2_Norm', 'BsmtFinType2_BLQ|GarageCond_Gd', 'Foundation_Tencode|RoofMatl_Tar&Grv', 'RoofStyle_Flat|Exterior2nd_HdBoard', 'TotalBsmtSF|LotConfig_Inside', 'LandContour_Lvl|GarageType_Basment', 'Foundation_BrkTil|ExterQual_Tencode', 'Street_Grvl|Exterior1st_Tencode', 'Neighborhood_CollgCr|1stFlrSF', 'LandContour_Tencode|Functional_Maj1', 'Exterior1st_BrkFace|ExterCond_TA', 'Exterior2nd_Plywood|MasVnrType_BrkFace', 'GarageFinish_Unf|GarageType_Tencode', 'LandContour_Tencode|GarageType_CarPort', 'BsmtQual_TA|Functional_Maj2', 'EnclosedPorch|MasVnrType_BrkFace', 'Heating_GasA|RoofStyle_Gable', 'BsmtQual_Tencode|MoSold', 'Functional_Maj1|Street_Grvl', 'GarageCond_Ex|LotConfig_Inside', 'BsmtFinSF2|Exterior2nd_AsphShn', 'HouseStyle_Tencode|Fence_Tencode', 'LotShape_IR2|KitchenQual_Fa', 'MasVnrType_BrkCmn|Exterior1st_WdShing', 'LotConfig_Corner|Exterior2nd_VinylSd', 'GarageQual_Gd|SaleType_WD', 'FireplaceQu_Gd|GarageQual_Fa', 'Condition1_PosN|GarageFinish_RFn', 'LotShape_IR2|Condition1_PosN', 'BsmtFullBath|Exterior1st_BrkComm', 'Functional_Tencode|LandContour_Bnk', 'Neighborhood_Tencode|BsmtFinType2_Rec', 'SaleCondition_Alloca|HouseStyle_SLvl', 'BsmtQual_TA|BsmtQual_Gd', 'BldgType_TwnhsE|Exterior1st_Tencode', 'Exterior2nd_Tencode|BsmtExposure_Av', 'PavedDrive_P|MasVnrType_Tencode', 'Exterior2nd_Tencode|Fence_GdWo', 'Street_Tencode|LotShape_IR3', 'Exterior1st_AsbShng|Neighborhood_BrkSide', 'HeatingQC_TA|MasVnrArea', 'RoofStyle_Flat|MSZoning_RM', 'SaleType_ConLw|Exterior1st_CemntBd', 'ExterCond_Gd|BsmtExposure_Gd', 'LandContour_Bnk|BsmtCond_Po', 'Utilities_Tencode|BsmtFinType2_BLQ', 'Foundation_Tencode|GarageFinish_RFn', 'PavedDrive_N|BldgType_Tencode', 'Condition1_PosA|MasVnrArea', 'KitchenQual_Gd|SaleType_New', 'LandContour_Bnk|BsmtFinType2_Rec', 'GarageCond_Po|LandSlope_Gtl', 'Electrical_SBrkr|LandContour_Bnk', 'GarageQual_Gd|GarageType_Tencode', 'GarageType_BuiltIn|Fence_MnPrv', 'GarageQual_Tencode|MSZoning_FV', 'Heating_GasA|Street_Grvl', 'LotShape_IR2|Functional_Maj2', 'LandSlope_Tencode|Condition2_Artery', 'Electrical_Tencode|Neighborhood_CollgCr', 'RoofStyle_Gambrel|GarageArea', 'GarageQual_TA|ExterQual_Fa', 'BldgType_Tencode|Exterior1st_Tencode', 'Street_Tencode|Condition1_PosA', 'TotRmsAbvGrd|HouseStyle_2Story', 'GarageQual_Po|MSSubClass', 'BsmtFinType2_ALQ|Functional_Maj1', 'RoofStyle_Shed|GarageCond_Fa', 'Exterior1st_AsbShng|MSZoning_C (all)', 'HouseStyle_SFoyer|SaleCondition_Partial', 'BsmtFinType1_Rec|ExterQual_Ex', 'Fence_GdPrv|Exterior1st_BrkComm', 'BedroomAbvGr|KitchenQual_Tencode', 'PavedDrive_N|SaleType_Oth', 'MSZoning_RM|Condition1_Tencode', 'Foundation_Tencode|LandSlope_Gtl', 'PoolQC_Tencode|BsmtExposure_Mn', 'Exterior2nd_CmentBd|CentralAir_Y', 'Utilities_Tencode|Functional_Typ', 'GarageCond_Po|Neighborhood_Tencode', 'LotConfig_CulDSac|ExterQual_Tencode', 'BldgType_2fmCon|Exterior2nd_HdBoard', 'RoofMatl_CompShg|GarageQual_Fa', 'HeatingQC_Ex|GarageType_Basment', 'LandContour_Low|LotConfig_Corner', 'LandContour_Tencode|GarageCond_Fa', 'GarageType_Detchd|Condition2_Tencode', 'LotShape_Tencode|Exterior2nd_CmentBd', 'SaleCondition_Tencode|Exterior2nd_Tencode', 'LotShape_Reg|GarageType_Basment', 'LotFrontage|LowQualFinSF', 'BsmtFinType2_GLQ|BsmtFinSF2', 'BsmtFinType1_BLQ|Electrical_FuseA', 'PavedDrive_P|Exterior1st_Tencode', 'FireplaceQu_Tencode|LotConfig_Inside', 'BldgType_2fmCon|HeatingQC_Tencode', 'Neighborhood_CollgCr|Functional_Min2', 'BsmtFinSF2|Condition1_RRAe', 'RoofStyle_Tencode|PavedDrive_P', 'HeatingQC_TA|YearBuilt', 'ExterQual_TA|Exterior1st_AsbShng', 'Heating_Grav|Exterior2nd_CmentBd', 'YrSold|Neighborhood_Somerst', 'PavedDrive_N|GarageFinish_Unf', 'GarageCars|Neighborhood_SWISU', 'GarageType_CarPort|Condition2_Norm', 'Exterior1st_BrkFace|LandSlope_Mod', 'BsmtFinSF2|Exterior2nd_HdBoard', 'Street_Pave', 'RoofMatl_Tencode|Condition1_RRAe', 'MSZoning_RM|WoodDeckSF', 'Neighborhood_NAmes|Alley_Grvl', 'GarageFinish_Unf|GarageCond_TA', 'EnclosedPorch|HouseStyle_SLvl', 'Alley_Pave|CentralAir_Tencode', 'Heating_GasA|ExterCond_Fa', 'GarageFinish_Fin|GarageYrBlt', 'Functional_Maj2|GarageQual_TA', 'SaleCondition_Normal|ExterQual_Ex', 'Neighborhood_Mitchel|BsmtExposure_Av', 'LotFrontage|SaleCondition_Alloca', 'Heating_GasA|SaleType_WD', 'Functional_Typ|LotShape_IR1', 'GarageQual_Gd|Electrical_SBrkr', 'Exterior1st_HdBoard|Neighborhood_NoRidge', 'Alley_Tencode|Street_Pave', 'LotShape_IR1|Heating_GasW', 'Condition1_RRAe|MSSubClass', 'KitchenQual_Gd|MSSubClass', 'GarageCond_Gd|Exterior1st_VinylSd', 'GarageFinish_Fin', 'MiscFeature_Tencode|Exterior1st_BrkComm', 'LotShape_Tencode|SaleType_Tencode', 'Fence_GdPrv|ScreenPorch', 'Electrical_SBrkr|Electrical_FuseF', 'Electrical_SBrkr|SaleType_CWD', 'ExterQual_TA|Fireplaces', 'Alley_Pave|PavedDrive_Y', 'BsmtFinType1_Tencode|Condition1_PosN', 'LotShape_IR1|BsmtFinType1_Rec', 'Exterior2nd_Plywood|Exterior2nd_Wd Shng', 'OverallQual|LandContour_HLS', 'Foundation_BrkTil|RoofMatl_Tar&Grv', 'EnclosedPorch|Neighborhood_Crawfor', 'GarageCond_Tencode|BsmtQual_TA', 'GarageCond_Tencode|BsmtFinType1_LwQ', 'Utilities_Tencode|LotShape_IR2', 'BsmtFinType2_Tencode|Exterior1st_Stucco', 'Neighborhood_Veenker|SaleType_CWD', 'Exterior2nd_Stucco|FullBath', 'GarageType_Basment|Fence_GdWo', 'Exterior2nd_AsbShng|Condition1_Feedr', 'LotConfig_Corner|MSZoning_RM', 'Exterior1st_AsbShng|Foundation_Tencode', 'BsmtFinType1_BLQ|Functional_Maj1', 'LotConfig_CulDSac|Exterior1st_Tencode', 'BsmtQual_TA|LandSlope_Gtl', 'FireplaceQu_Tencode|Condition2_Norm', 'LandContour_Tencode|MasVnrType_Stone', 'BsmtQual_TA|LowQualFinSF', 'Street_Tencode|ExterCond_Gd', 'BldgType_Twnhs|RoofStyle_Shed', 'Neighborhood_OldTown|Foundation_CBlock', 'Heating_GasA', 'Condition1_Artery|Exterior1st_Tencode', 'BsmtFinType2_Rec|BsmtFinType1_Unf', 'GarageCond_Fa|Neighborhood_Sawyer', 'PoolArea|BsmtCond_Fa', 'LotShape_IR1|Condition1_Feedr', 'SaleCondition_Normal|GarageType_Basment', 'GarageQual_Gd|BsmtFinType2_BLQ', 'MoSold|HouseStyle_SLvl', 'LotShape_Reg|Fence_MnPrv', 'RoofStyle_Gambrel|Exterior2nd_Brk Cmn', 'SaleType_New|BldgType_TwnhsE', 'GarageFinish_Fin|LandSlope_Tencode', 'Condition1_PosA|Neighborhood_NWAmes', 'Electrical_FuseP|MSZoning_FV', 'GarageCond_Fa|Neighborhood_IDOTRR', 'Neighborhood_Veenker|SaleType_WD', 'Condition1_Feedr|BsmtExposure_Gd', 'Electrical_SBrkr|Functional_Min2', 'Fireplaces|Exterior2nd_Wd Shng', 'Neighborhood_StoneBr|Fence_MnWw', 'Neighborhood_NPkVill|BsmtFinType1_BLQ', 'BsmtFinType1_ALQ|Fence_GdWo', 'LotConfig_Corner', 'Electrical_FuseP|MSSubClass', 'BldgType_Twnhs|SaleCondition_Alloca', 'Utilities_Tencode|SaleCondition_Abnorml', 'GarageCond_Tencode|GarageType_Tencode', 'Fireplaces|Exterior1st_Plywood', 'FireplaceQu_Tencode|HeatingQC_Ex', 'OpenPorchSF|Condition1_Tencode', 'GarageCond_Po|Exterior1st_Wd Sdng', 'FireplaceQu_Gd|Neighborhood_Sawyer', 'RoofStyle_Gambrel|Condition1_Tencode', 'Condition1_Artery|RoofStyle_Gable', 'GarageType_Attchd|Exterior2nd_Wd Sdng', 'Exterior2nd_CmentBd|LotConfig_Tencode', 'BsmtFinType2_Tencode|BsmtUnfSF', 'LotArea|Exterior2nd_Tencode', 'GrLivArea|Neighborhood_NPkVill', 'SaleType_ConLw|KitchenQual_TA', 'BldgType_2fmCon|BsmtFinSF1', 'LotFrontage|GarageArea', 'BsmtExposure_Tencode|BsmtFinSF2', 'RoofStyle_Flat|FireplaceQu_Ex', 'LowQualFinSF|Neighborhood_StoneBr', 'LandSlope_Sev|Neighborhood_Veenker', 'GarageType_CarPort|MSZoning_RL', 'ExterCond_TA|TotRmsAbvGrd', 'GarageType_Tencode|BsmtFinType1_LwQ', 'FireplaceQu_Po|Neighborhood_StoneBr', 'GarageFinish_Unf|BsmtExposure_No', 'Exterior2nd_Tencode|HeatingQC_Tencode', 'Exterior1st_AsbShng|BsmtFinSF1', 'MoSold|GarageCond_Ex', 'GarageType_BuiltIn|Condition1_Norm', 'GarageCond_Fa|RoofStyle_Tencode', 'KitchenAbvGr|MasVnrType_Stone', 'BldgType_2fmCon|LowQualFinSF', 'HeatingQC_Fa|BsmtQual_TA', 'Functional_Typ|Condition1_PosN', 'Electrical_FuseA|BsmtFinType1_Unf', 'Functional_Typ|MSSubClass', 'Exterior2nd_Brk Cmn|Condition2_Norm', 'Exterior2nd_BrkFace|GarageQual_TA', '2ndFlrSF|CentralAir_Y', 'Fence_Tencode|Fence_GdWo', 'Exterior1st_Stucco|SaleCondition_Partial', 'GarageType_Detchd|HouseStyle_2.5Unf', 'GarageCars|Fence_MnWw', 'LandContour_HLS', 'MiscFeature_Tencode|Condition1_Tencode', 'Foundation_PConc|LandSlope_Mod', 'TotalBsmtSF|LotArea', 'Electrical_FuseP|Neighborhood_Veenker', 'SaleCondition_Normal|KitchenQual_TA', 'HeatingQC_Fa|BldgType_Tencode', 'LotConfig_Corner|BsmtQual_Ex', 'Exterior1st_HdBoard|Exterior2nd_Tencode', 'Neighborhood_OldTown|Neighborhood_IDOTRR', 'HouseStyle_SFoyer|Utilities_AllPub', 'Heating_GasA|BsmtFinType1_LwQ', 'BsmtCond_Po|PavedDrive_P', 'HalfBath|WoodDeckSF', 'Exterior1st_Tencode|HouseStyle_1.5Fin', 'GarageCond_Po|Exterior1st_VinylSd', 'BsmtFinType1_Tencode|MasVnrType_Tencode', 'BsmtFinType2_ALQ|MSZoning_RL', 'Neighborhood_Veenker|Functional_Maj1', 'BsmtFinSF2|RoofStyle_Gambrel', 'Neighborhood_Timber|ExterQual_Fa', 'Exterior1st_BrkFace|KitchenQual_Tencode', 'MSZoning_C (all)|Neighborhood_SawyerW', 'BsmtFinSF2|LandContour_HLS', 'SaleType_CWD|HouseStyle_2Story', 'LotShape_IR1|SaleType_ConLD', 'Exterior1st_HdBoard|HouseStyle_Tencode', 'BsmtFinType1_LwQ|BsmtQual_Gd', 'BsmtExposure_Tencode|ExterQual_Ex', 'MiscVal|Condition2_Norm', 'BsmtFinType2_Rec|BldgType_1Fam', 'RoofStyle_Shed|Functional_Maj1', 'RoofStyle_Shed|BsmtFinType2_Unf', 'MiscVal|LotConfig_CulDSac', 'BsmtFinType2_Rec|GarageCond_Ex', 'Electrical_Tencode|Street_Grvl', 'Heating_Grav|BsmtFinType2_Unf', 'Foundation_BrkTil|LowQualFinSF', 'Electrical_FuseA|FullBath', 'LotShape_IR2|TotRmsAbvGrd', 'Functional_Typ|Neighborhood_StoneBr', 'LotConfig_FR2|Neighborhood_OldTown', 'LotArea|HeatingQC_Ex', 'MSZoning_RH|Exterior1st_Plywood', 'KitchenQual_Gd|LandSlope_Gtl', 'BsmtQual_Tencode|Condition1_RRAn', 'KitchenQual_Gd|Neighborhood_Veenker', 'KitchenQual_Tencode|Exterior2nd_Wd Shng', 'Neighborhood_Blmngtn|Exterior1st_HdBoard', 'Condition2_Tencode|KitchenQual_Fa', 'MSZoning_RL|Neighborhood_Timber', 'HouseStyle_Tencode|2ndFlrSF', 'GarageQual_Gd|BsmtFinType1_GLQ', 'SaleCondition_Tencode|RoofMatl_Tar&Grv', 'Alley_Pave|Street_Grvl', 'KitchenAbvGr|Exterior2nd_BrkFace', 'GarageFinish_Fin|GarageQual_TA', 'HouseStyle_1Story|SaleCondition_Family', 'RoofMatl_Tar&Grv|MSZoning_RM', 'FireplaceQu_Gd|GarageCars', 'Alley_Tencode|Exterior1st_Plywood', 'BsmtFinType2_Tencode|GarageQual_Po', 'GarageCars|GarageArea', 'BsmtFinType2_Unf|BsmtQual_Gd', 'KitchenQual_Tencode|MSZoning_FV', 'SaleCondition_Normal|Neighborhood_Gilbert', 'Exterior1st_HdBoard|GarageQual_TA', 'BsmtFinType2_Tencode|Fence_Tencode', 'BldgType_Twnhs|HouseStyle_2.5Unf', 'Functional_Maj2|GarageType_Basment', 'Neighborhood_CollgCr|YearBuilt', 'Electrical_FuseA|GarageFinish_Tencode', 'Condition1_Artery|Functional_Maj1', 'OverallQual|Alley_Grvl', 'Neighborhood_Blmngtn|PoolArea', 'LotArea|BsmtQual_Fa', 'BsmtFinType2_Tencode|CentralAir_N', 'Neighborhood_ClearCr|BsmtCond_Po', 'BedroomAbvGr|Functional_Maj1', 'BsmtFinType2_GLQ|Foundation_BrkTil', 'SaleType_ConLI|BsmtFinType1_Unf', 'Exterior2nd_Brk Cmn|MSZoning_RL', 'HeatingQC_Ex|CentralAir_N', 'BsmtExposure_Tencode|HouseStyle_Tencode', 'GarageCond_Po|YearRemodAdd', 'GarageFinish_RFn|Street_Pave', 'MiscFeature_Othr|Foundation_BrkTil', 'MiscFeature_Othr|HouseStyle_2Story', 'LotShape_IR2|Exterior1st_BrkComm', 'GarageArea|SaleType_CWD', 'BsmtFinType2_ALQ|BsmtExposure_Av', 'RoofStyle_Hip|Functional_Tencode', 'GarageQual_TA|LandSlope_Gtl', 'Neighborhood_Tencode|MSZoning_RH', 'BsmtFinType2_GLQ|FireplaceQu_Po', 'BsmtFinType2_GLQ|ExterCond_Tencode', 'Neighborhood_NPkVill|Neighborhood_MeadowV', 'ExterCond_TA|Functional_Maj2', 'Alley_Tencode|GarageCond_Ex', 'EnclosedPorch|RoofMatl_WdShngl', 'Neighborhood_Somerst|FireplaceQu_Ex', 'BldgType_Twnhs|GarageType_Tencode', 'SaleCondition_Alloca|Condition2_Artery', 'KitchenAbvGr|BsmtFinType2_BLQ', 'ExterQual_Gd|Street_Pave', 'FireplaceQu_Tencode|FireplaceQu_Po', 'ExterQual_TA|Neighborhood_Tencode', 'Condition1_PosN|BsmtExposure_No', 'Condition1_RRAn|LotShape_IR3', 'PavedDrive_N|Neighborhood_Veenker', 'GarageQual_Fa|Condition2_Tencode', 'Functional_Mod|ScreenPorch', 'BsmtFinType2_Unf|BsmtExposure_No', 'BldgType_1Fam|HouseStyle_2Story', 'YearRemodAdd|RoofMatl_CompShg', 'GarageFinish_Unf|Street_Grvl', 'RoofStyle_Flat|BsmtHalfBath', 'Neighborhood_NoRidge|LandSlope_Tencode', 'Exterior1st_CemntBd|Neighborhood_NAmes', 'GarageCond_Po|KitchenQual_Ex', 'Neighborhood_Edwards|Neighborhood_SawyerW', 'LandSlope_Gtl|SaleCondition_Abnorml', 'HouseStyle_SFoyer|KitchenQual_TA', 'Neighborhood_Somerst|Functional_Min1', 'KitchenQual_Ex|Condition2_Tencode', 'Condition1_Feedr|LotConfig_Inside', 'Electrical_Tencode|Condition2_Norm', 'GarageQual_TA|Exterior1st_BrkComm', 'LandSlope_Tencode|Functional_Maj2', 'Exterior2nd_VinylSd|BsmtCond_Tencode', 'BsmtQual_TA|MoSold', 'Heating_Grav|Foundation_CBlock', 'RoofMatl_Tencode|HouseStyle_2Story', 'OpenPorchSF|HouseStyle_1.5Fin', 'BsmtFinType2_Tencode|KitchenQual_Fa', 'Neighborhood_ClearCr|LotConfig_Inside', 'KitchenQual_Ex|Electrical_SBrkr', 'ScreenPorch|Exterior2nd_Wd Shng', 'GarageCond_Gd|Utilities_AllPub', 'BsmtFinType2_GLQ|ExterCond_Gd', 'Functional_Typ|Alley_Grvl', 'Exterior2nd_Stucco|BsmtFinSF2', 'SaleType_ConLI|SaleType_Oth', 'FullBath|HouseStyle_2.5Unf', 'Electrical_FuseA|BsmtExposure_Mn', 'LotShape_Reg|MiscFeature_Othr', 'GarageCond_Fa|BldgType_Tencode', 'Neighborhood_Edwards|LotConfig_Inside', 'ExterCond_Tencode|RoofStyle_Tencode', 'GarageQual_Gd|CentralAir_Y', 'MSSubClass|Alley_Grvl', 'Exterior2nd_Tencode|BsmtFinType1_Rec', 'GarageType_CarPort|SaleType_COD', 'LandContour_Bnk|Condition1_Tencode', 'GarageFinish_RFn|GarageYrBlt', '3SsnPorch|HouseStyle_2Story', 'Electrical_Tencode|RoofStyle_Tencode', 'PoolArea|Utilities_AllPub', 'OpenPorchSF|RoofMatl_WdShngl', 'GarageCond_Fa|Exterior1st_Tencode', 'KitchenQual_Ex|LotConfig_Inside', 'PavedDrive_N|Functional_Mod', 'BsmtUnfSF|GarageType_CarPort', 'Functional_Min1|Fence_MnPrv', 'Foundation_Tencode|Fence_GdWo', 'Utilities_Tencode|MiscFeature_Othr', 'ExterQual_Ex|Neighborhood_BrkSide', 'Exterior1st_CemntBd|Exterior1st_Plywood', 'ExterQual_Ex|BsmtExposure_No', 'Neighborhood_BrDale|BsmtQual_Gd', 'BsmtFinSF2|ExterQual_Tencode', 'BsmtFinType1_Unf|Neighborhood_MeadowV', 'Electrical_FuseA|HeatingQC_Tencode', 'HeatingQC_Ex|BldgType_TwnhsE', 'GrLivArea|Exterior1st_CemntBd', 'Neighborhood_ClearCr|BsmtExposure_Mn', 'MiscFeature_Tencode|BsmtCond_Tencode', 'BldgType_2fmCon|Foundation_Tencode', 'LotShape_Reg|BsmtQual_Fa', 'Functional_Typ|LandContour_Tencode', 'GrLivArea|HouseStyle_SFoyer', 'GarageType_BuiltIn|MasVnrType_Tencode', 'RoofMatl_CompShg|LandContour_Lvl', 'GarageArea|Condition1_Tencode', 'Alley_Pave|GarageCond_Ex', 'HeatingQC_Fa|MSZoning_RL', 'SaleCondition_Normal|RoofMatl_WdShngl', 'FireplaceQu_Po|BsmtQual_Ex', 'BldgType_2fmCon|Neighborhood_SWISU', 'MSZoning_C (all)|LotConfig_Inside', 'KitchenQual_Ex|ExterQual_Gd', 'Exterior2nd_AsbShng|Exterior1st_Tencode', 'Neighborhood_ClearCr|Condition1_RRAe', 'Utilities_Tencode|SaleCondition_Normal', 'Exterior2nd_Stucco|CentralAir_N', 'Neighborhood_NWAmes|BsmtCond_TA', 'HeatingQC_Fa|SaleType_Tencode', 'ExterCond_Tencode|HouseStyle_2Story', 'LandSlope_Sev|GarageYrBlt', 'FireplaceQu_Gd|Exterior2nd_Tencode', 'OverallQual|GarageType_Attchd', 'OverallCond|MasVnrType_Tencode', 'Neighborhood_Veenker|CentralAir_Tencode', 'YearBuilt|SaleCondition_Family', 'LandSlope_Sev|ExterQual_Fa', 'BsmtFinType1_Rec|MSZoning_FV', 'Neighborhood_Sawyer|BsmtExposure_Gd', 'GarageFinish_Unf|Neighborhood_Tencode', 'LotShape_IR2|RoofStyle_Gambrel', 'Functional_Typ|LotConfig_Tencode', 'MSZoning_C (all)|GarageType_2Types', 'LotConfig_Corner|BsmtCond_TA', 'BldgType_2fmCon|Exterior2nd_MetalSd', 'Neighborhood_OldTown|GarageType_2Types', 'LandSlope_Gtl|Fence_MnPrv', 'LotShape_IR2|Exterior2nd_Wd Shng', 'Functional_Typ|BsmtHalfBath', 'Exterior1st_Stucco|Functional_Min2', 'Neighborhood_Edwards|Condition1_PosA', 'ExterQual_TA|Exterior2nd_MetalSd', 'YearBuilt|CentralAir_Y', 'GarageFinish_RFn|LotShape_IR3', 'Exterior1st_BrkComm|Neighborhood_Timber', 'Neighborhood_Veenker|BsmtFinType1_GLQ', 'BsmtFinType2_GLQ|Electrical_FuseA', 'SaleCondition_Normal|MSZoning_RL', 'Exterior1st_Tencode|HouseStyle_2Story', 'Functional_Typ|SaleCondition_Family', 'Exterior2nd_HdBoard|Street_Pave', 'ExterQual_TA|LotConfig_Corner', 'RoofStyle_Gambrel|GarageType_CarPort', 'GarageCond_Po|LowQualFinSF', 'KitchenAbvGr|YearRemodAdd', 'GarageQual_TA|Exterior2nd_AsphShn', 'SaleCondition_Alloca|Alley_Grvl', 'Exterior1st_HdBoard|PavedDrive_P', 'Foundation_BrkTil|RoofStyle_Shed', 'TotalBsmtSF|Neighborhood_OldTown', 'BedroomAbvGr|FireplaceQu_Ex', 'BsmtQual_Tencode|Foundation_BrkTil', 'Heating_GasA|Foundation_Tencode', 'GarageType_BuiltIn|Condition1_Tencode', 'YrSold|Neighborhood_MeadowV', 'Electrical_Tencode|Electrical_SBrkr', 'Condition1_PosN|Fence_GdWo', 'KitchenQual_Gd|ExterCond_Tencode', 'HeatingQC_Fa|Electrical_FuseA', 'GarageCond_Fa|BsmtFinType2_Rec', 'RoofStyle_Gable|Fence_MnPrv', 'BsmtExposure_Tencode|MSZoning_C (all)', 'Electrical_FuseP|Exterior2nd_BrkFace', 'ExterQual_Gd|Neighborhood_SawyerW', 'BsmtQual_Tencode|MasVnrType_BrkCmn', 'Condition1_RRAn|HouseStyle_SLvl', 'GarageType_CarPort|MiscFeature_Tencode', 'SaleType_ConLD|Street_Grvl', 'Exterior2nd_CmentBd|KitchenQual_Fa', 'Street_Tencode|BsmtQual_TA', 'Neighborhood_NoRidge|GarageType_Attchd', 'GarageCond_Tencode|Exterior1st_Wd Sdng', 'GarageCars|Electrical_FuseF', 'Foundation_BrkTil|Exterior2nd_CmentBd', 'Neighborhood_Blmngtn|Functional_Min2', 'HouseStyle_SFoyer|MSZoning_C (all)', 'KitchenQual_Tencode|Condition2_Tencode', 'Fireplaces|SaleCondition_Family', 'LotShape_IR1|Condition1_Norm', 'Condition1_Feedr|BsmtCond_TA', 'SaleCondition_Tencode|Alley_Pave', 'Neighborhood_Somerst|PoolQC_Tencode', 'LandSlope_Mod|HouseStyle_2.5Unf', 'Exterior1st_CemntBd|MSZoning_C (all)', 'Exterior1st_BrkFace|Functional_Min1', 'Neighborhood_Somerst|Condition1_PosN', 'Utilities_Tencode|GarageCond_Tencode', 'GarageType_Tencode|MasVnrType_Tencode', 'BldgType_Duplex|GarageArea', 'Foundation_PConc|GarageQual_Fa', 'BsmtFinSF2|Exterior1st_Plywood', 'Condition1_Feedr|GarageQual_Tencode', 'HouseStyle_1Story|Heating_GasW', 'Alley_Grvl|BsmtQual_Gd', 'RoofStyle_Hip|LandSlope_Tencode', 'KitchenQual_Tencode|ScreenPorch', 'LotShape_Tencode|Condition1_RRAe', 'RoofStyle_Flat|RoofStyle_Tencode', 'Exterior1st_HdBoard|Exterior1st_Stucco', 'HeatingQC_Ex|SaleCondition_Alloca', 'Functional_Maj2|PoolArea', 'HouseStyle_1.5Fin|Exterior1st_Wd Sdng', 'Utilities_Tencode|MasVnrType_Stone', 'SaleType_ConLw|RoofMatl_WdShngl', 'SaleCondition_Tencode|Electrical_Tencode', 'HouseStyle_1.5Unf|Exterior1st_BrkComm', 'BsmtQual_Tencode|HouseStyle_SLvl', 'Fireplaces|Exterior2nd_HdBoard', 'CentralAir_Y|BsmtCond_TA', 'ExterQual_Tencode|Exterior1st_Tencode', 'TotalBsmtSF|GarageType_BuiltIn', 'HeatingQC_Ex|WoodDeckSF', 'EnclosedPorch|ExterCond_TA', 'BsmtFinSF2|Exterior2nd_MetalSd', 'LotConfig_FR2|Fence_GdPrv', 'HeatingQC_Tencode|GarageType_Attchd', 'RoofMatl_CompShg|ExterQual_Fa', 'SaleType_ConLI|GarageQual_Tencode', 'Neighborhood_BrDale|MiscFeature_Othr', 'YearBuilt|PoolQC_Tencode', 'Functional_Typ|PavedDrive_P', 'HouseStyle_SLvl|MSZoning_RL', 'GarageFinish_Tencode|SaleCondition_Abnorml', 'Neighborhood_Somerst|GarageQual_Fa', 'GarageCond_Gd|Condition1_Norm', 'HalfBath|SaleCondition_Partial', 'RoofStyle_Hip|HalfBath', 'BsmtFinSF2|GarageType_Basment', 'BldgType_Duplex|MSSubClass', 'MiscFeature_Tencode|CentralAir_Y', 'GarageType_Attchd|Fence_GdWo', 'Neighborhood_NridgHt|MasVnrType_None', 'GarageQual_Po|GarageType_Basment', '1stFlrSF|Neighborhood_SawyerW', 'Exterior1st_HdBoard|FireplaceQu_Ex', 'BsmtQual_Tencode|MSZoning_RM', 'GrLivArea|MoSold', 'BsmtFinType2_BLQ|Condition2_Tencode', 'RoofStyle_Hip|GarageType_BuiltIn', 'Neighborhood_Tencode|Heating_GasW', 'Exterior1st_BrkComm|Exterior2nd_Plywood', 'LandContour_Lvl|LotConfig_Inside', 'FireplaceQu_Fa|PavedDrive_P', 'Heating_GasW|RoofMatl_WdShngl', 'Exterior2nd_Stucco|BsmtHalfBath', 'GarageType_Detchd|Exterior1st_BrkComm', 'GarageFinish_Unf|GarageType_Basment', 'Functional_Typ|HouseStyle_2Story', 'BldgType_Twnhs|MiscFeature_Tencode', 'YearRemodAdd|BsmtFullBath', 'Exterior2nd_AsbShng|PavedDrive_P', 'FullBath|HeatingQC_Ex', 'ExterQual_TA|RoofMatl_Tencode', 'SaleType_WD|ExterQual_Ex', 'BsmtHalfBath|BsmtFinType2_BLQ', 'LotShape_Tencode|GarageQual_Gd', 'LotShape_Reg|Condition1_Tencode', 'Heating_Grav|Neighborhood_Veenker', 'Electrical_FuseA|GarageQual_TA', 'LotArea|BsmtCond_Po', 'LotShape_Tencode|MasVnrType_Stone', 'Condition2_Artery|Exterior2nd_AsphShn', 'SaleCondition_Partial|Exterior1st_VinylSd', 'LotConfig_Corner|LotConfig_Tencode', 'OverallQual|Exterior2nd_Plywood', 'ExterQual_Tencode|Condition1_RRAn', 'Neighborhood_Mitchel|SaleType_Tencode', 'BsmtFinType1_Rec|MSZoning_C (all)', 'Functional_Maj1|WoodDeckSF', 'Neighborhood_Mitchel|Fence_GdWo', 'Foundation_Stone|BsmtFinSF1', 'LotShape_IR2|Fence_MnWw', 'GarageFinish_RFn|BsmtQual_Gd', 'LotShape_IR1|LotConfig_CulDSac', 'MSZoning_C (all)|KitchenQual_TA', 'Electrical_FuseP|MasVnrType_Tencode', 'TotalBsmtSF|Heating_Grav', 'BsmtFinType1_BLQ|BsmtFinType1_ALQ', 'RoofStyle_Gambrel|MSSubClass', 'Neighborhood_OldTown|Neighborhood_Sawyer', 'Condition2_Artery|Fence_MnPrv', 'Electrical_FuseA|Functional_Maj1', 'GarageCond_TA|LotShape_IR3', 'BsmtFinType1_Rec|KitchenQual_Fa', 'LotShape_IR1|BsmtFinType1_GLQ', 'ExterCond_Gd|GarageQual_Po', 'Functional_Tencode|BsmtQual_Ex', 'RoofMatl_Tencode|GarageType_2Types', 'BldgType_2fmCon|BsmtFinType2_Unf', 'Foundation_BrkTil|GarageType_BuiltIn', 'Neighborhood_Edwards|SaleType_CWD', '2ndFlrSF|MasVnrArea', 'PoolQC_Tencode|RoofStyle_Gable', 'LandContour_Tencode|BsmtCond_Fa', 'BsmtExposure_Tencode|Foundation_Slab', 'YearRemodAdd|BsmtQual_TA', 'GarageFinish_Fin|Condition2_Norm', 'PavedDrive_Tencode|Neighborhood_SawyerW', 'Alley_Pave|Condition2_Tencode', 'BldgType_2fmCon|Neighborhood_Crawfor', 'FireplaceQu_Tencode|Functional_Typ', 'BsmtFinType2_ALQ|Condition2_Artery', 'BsmtFinType1_ALQ|Exterior1st_BrkComm', 'SaleType_Tencode|Functional_Min1', 'Exterior1st_AsbShng|Functional_Maj2', 'OverallQual|FireplaceQu_Po', 'Functional_Mod|LotShape_IR3', 'Condition1_Artery|LandSlope_Mod', 'Functional_Tencode|Neighborhood_Mitchel', 'SaleType_Tencode|Neighborhood_Edwards', 'FullBath|FireplaceQu_Po', 'BldgType_2fmCon|YearRemodAdd', 'GarageQual_Po|GarageType_2Types', 'Condition1_Artery|BsmtCond_Tencode', 'Electrical_SBrkr|BsmtFinType1_Rec', 'Exterior1st_AsbShng|Foundation_Slab', 'KitchenQual_Tencode|Neighborhood_Crawfor', 'HouseStyle_1Story|ExterCond_Fa', 'LotShape_IR2|LowQualFinSF', 'MiscFeature_Shed|Exterior1st_Wd Sdng', 'FireplaceQu_Fa|MasVnrType_Stone', 'YrSold|LotConfig_Corner', 'Condition2_Tencode|KitchenQual_TA', 'Neighborhood_StoneBr|Exterior1st_WdShing', 'Condition1_Artery|BsmtUnfSF', 'BldgType_Duplex|CentralAir_Tencode', 'Foundation_BrkTil|ExterCond_Tencode', 'Heating_GasW|Condition1_PosN', 'BsmtCond_Gd|BsmtCond_Po', 'HeatingQC_Gd|BsmtExposure_No', 'Neighborhood_ClearCr|GarageType_Tencode', 'Heating_Grav|KitchenQual_TA', 'Functional_Tencode|Condition1_Feedr', 'MSZoning_Tencode|BsmtFinType1_Unf', 'Alley_Tencode|Functional_Min2', 'Neighborhood_NoRidge|FireplaceQu_TA', 'SaleCondition_Alloca|Neighborhood_SawyerW', 'PavedDrive_N|MasVnrType_None', 'LotShape_IR1|SaleType_COD', 'Foundation_BrkTil|LotConfig_FR2', 'MSZoning_RM|Exterior1st_Tencode', 'Condition2_Tencode|Functional_Maj1', 'Alley_Grvl|BsmtExposure_Mn', 'FireplaceQu_Po|CentralAir_Tencode', 'GarageType_Basment|Exterior2nd_Plywood', 'YearBuilt|Fence_GdPrv', 'BldgType_TwnhsE|ExterQual_Fa', 'LotShape_Tencode|LandSlope_Sev', 'Heating_GasW|MSZoning_FV', 'Condition1_Artery|Neighborhood_ClearCr', 'LotShape_Tencode|Neighborhood_Sawyer', 'YearRemodAdd|FireplaceQu_Ex', 'PoolQC_Tencode|FireplaceQu_Ex', 'Exterior1st_AsbShng|Condition2_Tencode', 'OverallCond|MiscFeature_Gar2', 'RoofMatl_Tar&Grv|FireplaceQu_Ex', 'Condition1_RRAe|Condition1_Tencode', 'HouseStyle_Tencode|Condition1_PosN', 'YrSold|MSZoning_RL', 'MSZoning_RH|Exterior2nd_Wd Shng', 'SaleType_New|MoSold', 'BsmtFinType2_Unf|GarageYrBlt', 'LandSlope_Mod|Exterior1st_WdShing', 'OverallQual|BsmtQual_Fa', 'HouseStyle_1.5Unf|Neighborhood_BrkSide', 'BsmtFinType1_BLQ|GarageType_BuiltIn', 'RoofStyle_Flat|SaleType_COD', 'MiscFeature_Tencode|BsmtExposure_Gd', 'YearBuilt|Exterior1st_Wd Sdng', 'Neighborhood_NoRidge|Exterior2nd_Tencode', 'SaleType_Oth|BsmtFinType1_GLQ', 'ExterCond_Gd|Functional_Min1', 'BsmtHalfBath|Functional_Maj1', 'MiscFeature_Othr|Fence_GdPrv', 'Neighborhood_BrDale|Functional_Min1', 'BsmtFullBath|Exterior1st_WdShing', 'BsmtQual_Ex|FireplaceQu_TA', 'HouseStyle_SFoyer|KitchenQual_Gd', 'YearBuilt|ExterQual_Gd', 'BedroomAbvGr|TotRmsAbvGrd', 'SaleCondition_Partial|Exterior1st_Plywood', 'GarageCond_Po|MiscFeature_Tencode', 'Functional_Maj1|GarageArea', 'Neighborhood_Edwards|Condition1_Feedr', 'LotConfig_Tencode|Exterior1st_WdShing', 'BsmtCond_Fa|Fence_MnPrv', 'PavedDrive_N|Exterior1st_HdBoard', 'HouseStyle_Tencode|Alley_Grvl', 'HeatingQC_Ex|BsmtExposure_No', 'TotRmsAbvGrd|MasVnrType_None', 'Neighborhood_Blmngtn|ScreenPorch', 'PoolArea|BsmtQual_Gd', 'Fence_GdWo|Neighborhood_SawyerW', 'SaleType_COD|Alley_Grvl', 'LandSlope_Mod|BsmtCond_Gd', 'BldgType_2fmCon|MiscFeature_Shed', 'Neighborhood_Blmngtn|Neighborhood_Timber', 'HouseStyle_1.5Unf|Exterior1st_MetalSd', 'Neighborhood_BrDale|Street_Tencode', 'Foundation_Tencode|HouseStyle_1.5Unf', 'ExterCond_Tencode|CentralAir_Y', 'Exterior2nd_Wd Sdng|Fence_GdWo', 'MSZoning_C (all)|BsmtCond_Po', 'RoofStyle_Flat|Neighborhood_OldTown', 'Exterior2nd_Tencode|SaleCondition_Abnorml', 'GarageFinish_Unf|BldgType_Duplex', 'KitchenQual_Gd|BldgType_TwnhsE', 'GarageQual_Gd|MasVnrType_BrkCmn', 'KitchenQual_Gd|OverallCond', 'Functional_Maj2|Neighborhood_SawyerW', 'SaleType_ConLI|OverallCond', 'TotalBsmtSF|HouseStyle_2.5Unf', 'ExterCond_TA|ScreenPorch', 'MiscFeature_Othr|MSZoning_FV', '1stFlrSF|MSZoning_FV', 'BsmtQual_TA|Condition2_Tencode', 'RoofStyle_Flat|Condition2_Tencode', 'LotConfig_Tencode|MSZoning_RH', 'GarageFinish_Fin|GarageCond_Gd', 'RoofStyle_Gambrel|ExterQual_Ex', 'ExterQual_Ex|MasVnrType_Tencode', 'Exterior2nd_Stucco|SaleType_ConLw', 'Condition1_Artery|GarageType_Attchd', 'Neighborhood_SWISU|Fence_MnWw', 'GarageCond_TA|Alley_Grvl', 'BsmtQual_Gd|MasVnrType_BrkFace', 'SaleType_ConLw|PavedDrive_Y', 'Condition1_Tencode|Fence_MnWw', 'MSZoning_C (all)|GarageArea', 'FireplaceQu_Ex|OverallCond', 'GarageType_Detchd|PavedDrive_Y', 'HeatingQC_TA|HouseStyle_1.5Unf', 'RoofStyle_Gambrel|Exterior2nd_MetalSd', 'GarageType_Detchd|KitchenQual_Fa', 'Neighborhood_Mitchel|HalfBath', 'Electrical_FuseA|LandSlope_Tencode', 'RoofMatl_CompShg|Exterior2nd_CmentBd', 'Neighborhood_ClearCr|GarageType_BuiltIn', 'LotShape_Reg|Condition1_RRAn', 'BldgType_1Fam|BsmtQual_Gd', 'BsmtQual_Fa|Exterior2nd_AsphShn', 'BsmtExposure_No|GarageType_2Types', 'Functional_Tencode|SaleType_ConLI', 'Condition1_PosN|BldgType_Tencode', 'CentralAir_Y|ScreenPorch', 'RoofStyle_Hip|KitchenQual_Fa', 'Electrical_SBrkr|BsmtFinType1_ALQ', 'Exterior2nd_VinylSd|ExterQual_Ex', 'GarageArea|Functional_Min2', 'Electrical_FuseA|Foundation_CBlock', 'SaleType_CWD|Exterior1st_Plywood', 'Fireplaces|Exterior1st_WdShing', 'Exterior2nd_AsbShng|FireplaceQu_Fa', 'Condition1_PosN|Exterior2nd_Wd Sdng', 'BsmtFinType1_BLQ|GarageQual_TA', 'BsmtQual_Ex|LotConfig_Inside', 'Electrical_FuseF|Neighborhood_IDOTRR', 'Neighborhood_IDOTRR|Fence_MnPrv', 'BldgType_Duplex|GarageQual_Po', 'MiscFeature_Shed|Neighborhood_NAmes', 'Fence_MnPrv|LotConfig_Inside', 'LotShape_Reg|Foundation_CBlock', 'Functional_Maj2|Neighborhood_Crawfor', 'LotArea|GarageCond_Tencode', 'BsmtUnfSF|Exterior1st_Wd Sdng', 'OverallQual|Exterior1st_WdShing', 'BsmtFinType1_BLQ|BsmtExposure_Gd', 'Foundation_Stone|BsmtExposure_Mn', 'Foundation_Stone|RoofStyle_Tencode', 'Neighborhood_StoneBr|KitchenQual_Fa', 'RoofStyle_Flat|LotConfig_Corner', 'MiscFeature_Tencode|KitchenQual_TA', 'Fence_Tencode|SaleType_ConLD', 'Condition1_Feedr|BsmtFinType2_Unf', 'GarageCond_TA|FireplaceQu_Fa', 'Alley_Tencode|Condition2_Artery', 'Heating_GasW|BsmtFinType2_BLQ', 'GarageType_BuiltIn|Neighborhood_SawyerW', 'BsmtHalfBath|MSZoning_RL', 'Condition2_Artery|BsmtExposure_No', 'BsmtExposure_Tencode|SaleType_CWD', 'Exterior1st_Stucco|OpenPorchSF', 'RoofMatl_CompShg|LandContour_Bnk', 'LotShape_IR1|Exterior2nd_MetalSd', 'PoolQC_Tencode|SaleType_Oth', 'PavedDrive_N|Neighborhood_Blmngtn', 'OpenPorchSF|Fence_GdWo', 'Alley_Pave|Neighborhood_Edwards', 'Exterior2nd_AsbShng|BsmtCond_Po', 'SaleCondition_Alloca|MiscFeature_Tencode', 'Neighborhood_Blmngtn|SaleType_ConLI', 'RoofMatl_WdShngl|Fence_MnWw', 'GarageFinish_Tencode|GarageCond_Fa', 'GarageFinish_Fin|BsmtFinType1_Rec', 'Alley_Tencode|BsmtQual_Fa', 'GarageCond_Ex|ExterCond_Fa', 'ExterQual_Ex|BldgType_Tencode', 'BedroomAbvGr|1stFlrSF', 'KitchenQual_TA|MasVnrType_BrkFace', 'HeatingQC_Fa|Fence_GdPrv', 'FireplaceQu_Fa|LotShape_IR3', 'Functional_Maj1|Neighborhood_NAmes', 'Condition1_Tencode|BsmtFinType1_Unf', 'LandContour_Lvl|Condition1_RRAn', 'LotConfig_CulDSac|HouseStyle_1.5Unf', 'RoofMatl_Tar&Grv|SaleCondition_Partial', 'LotArea|Fence_MnWw', 'Foundation_PConc|Neighborhood_Sawyer', 'BldgType_Duplex|Exterior1st_MetalSd', 'GarageQual_Po|HouseStyle_2.5Unf', 'LandSlope_Tencode|ExterQual_Tencode', 'Neighborhood_NoRidge|Neighborhood_Edwards', 'GrLivArea|BsmtExposure_Gd', 'FullBath|FireplaceQu_Ex', 'RoofStyle_Hip|OverallCond', 'Neighborhood_Tencode|GarageYrBlt', 'FullBath|ExterQual_Gd', 'RoofMatl_Tencode|1stFlrSF', 'Neighborhood_Somerst|ScreenPorch', 'GarageCond_TA|Fence_MnPrv', 'Alley_Tencode|BsmtCond_Fa', 'TotalBsmtSF|Exterior1st_Wd Sdng', 'GarageQual_Gd|KitchenQual_Gd', 'Condition1_Feedr|Alley_Grvl', 'TotRmsAbvGrd|MiscFeature_Gar2', 'Neighborhood_BrDale|MSZoning_RH', 'Neighborhood_Blmngtn|MasVnrType_None', 'FullBath|BsmtFinType1_ALQ', 'HalfBath|Neighborhood_Crawfor', 'SaleCondition_Tencode|HouseStyle_2.5Unf', 'SaleCondition_Tencode|SaleCondition_Partial', 'Exterior1st_Stucco|Neighborhood_Edwards', 'FireplaceQu_Po|Exterior2nd_CmentBd', 'RoofMatl_Tencode|HalfBath', 'GarageCond_TA|Fence_GdPrv', 'MoSold|CentralAir_Y', 'LotShape_IR1|FullBath', 'GarageCond_Tencode|SaleCondition_Alloca', 'BsmtQual_Ex|MasVnrType_Stone', 'GarageType_Detchd|BsmtFinType2_GLQ', 'LandContour_Bnk|BsmtFinType1_GLQ', 'YearRemodAdd|LandContour_Tencode', 'BsmtHalfBath|GarageType_Basment', 'FireplaceQu_Fa|GarageCond_Ex', 'Neighborhood_NridgHt|Neighborhood_NAmes', 'Condition2_Artery|HouseStyle_1.5Fin', 'Fence_GdWo|LotConfig_Inside', 'LotShape_IR1|2ndFlrSF', 'Neighborhood_Crawfor|BsmtFinType2_Unf', 'LowQualFinSF|ExterQual_Tencode', 'SaleType_New|Exterior2nd_Wd Shng', '3SsnPorch|Functional_Maj1', 'Foundation_PConc|GarageQual_Po', 'TotalBsmtSF|GarageCars', 'Heating_Grav|HeatingQC_Ex', 'EnclosedPorch|1stFlrSF', 'SaleType_Tencode|ScreenPorch', 'HeatingQC_Ex|GarageQual_Po', 'BsmtFinType2_ALQ|HouseStyle_2.5Unf', 'Foundation_Tencode|BsmtFinType2_Unf', 'Neighborhood_NridgHt|BedroomAbvGr', 'YrSold|LowQualFinSF', 'Electrical_FuseP|SaleType_New', 'Foundation_Stone|ExterCond_Gd', 'GarageFinish_RFn|HouseStyle_SLvl', '1stFlrSF|GarageType_Basment', 'LotConfig_Corner|RoofStyle_Gambrel', 'Exterior1st_Stucco', 'OverallQual|Heating_GasW', 'LandContour_Lvl|Condition2_Norm', 'LotFrontage|SaleType_COD', 'GarageFinish_Tencode|Foundation_Slab', 'Exterior2nd_Wd Sdng|BsmtFinType1_LwQ', 'Fireplaces|SaleCondition_Abnorml', 'GarageType_Detchd|BsmtFinType2_Unf', 'Fence_Tencode|BsmtExposure_Av', 'Neighborhood_NPkVill|MiscFeature_Gar2', 'Functional_Min2|Exterior1st_Wd Sdng', 'MSZoning_C (all)|BsmtFinType1_Unf', 'GarageQual_TA|BsmtQual_Gd', 'BsmtFinType2_ALQ|Heating_GasW', 'GarageArea|SaleCondition_Abnorml', 'Heating_GasA|BsmtFinType2_GLQ', 'Condition1_Feedr|SaleType_Oth', 'FireplaceQu_Tencode|ExterQual_Tencode', 'PavedDrive_Y|Neighborhood_MeadowV', 'Heating_GasW|Neighborhood_IDOTRR', 'RoofStyle_Flat|LandSlope_Tencode', 'SaleType_WD|Functional_Maj1', '2ndFlrSF|BsmtExposure_Mn', 'Alley_Tencode|GarageCond_Fa', 'OverallQual|Exterior1st_Stucco', 'Neighborhood_Gilbert|BsmtCond_TA', 'Neighborhood_NoRidge|Condition2_Tencode', 'SaleType_New|Exterior2nd_AsphShn', 'Electrical_Tencode|MSZoning_C (all)', 'LotConfig_CulDSac|BsmtFinType1_GLQ', 'LotFrontage|BsmtFinType2_Rec', 'SaleType_ConLI|MSZoning_RH', 'LandSlope_Tencode|Street_Grvl', 'HouseStyle_1Story|BsmtCond_Tencode', 'HouseStyle_1.5Unf|GarageType_2Types', 'YearRemodAdd|FireplaceQu_Fa', 'Street_Tencode|BsmtFinType2_Unf', '3SsnPorch|LowQualFinSF', 'ExterQual_TA|LandSlope_Tencode', 'SaleType_Tencode|BsmtCond_Gd', 'BldgType_1Fam|SaleType_Oth', 'MiscFeature_Shed|LotShape_IR3', 'MiscFeature_Othr|3SsnPorch', 'MiscFeature_Gar2|HouseStyle_2Story', 'RoofStyle_Hip|MasVnrType_BrkFace', 'FullBath|Condition1_PosA', 'Condition1_Norm|HouseStyle_1.5Fin', 'LotFrontage|Neighborhood_SawyerW', 'Electrical_Tencode|MiscFeature_Shed', 'KitchenQual_Gd|Foundation_BrkTil', 'MSZoning_C (all)|MSZoning_RL', 'BsmtFinType2_BLQ|Street_Grvl', 'GarageQual_TA|RoofMatl_WdShngl', 'GarageType_BuiltIn|MSZoning_Tencode', 'KitchenAbvGr|BsmtCond_TA', 'BsmtCond_Tencode|CentralAir_N', 'FireplaceQu_Tencode|Exterior2nd_Plywood', 'ExterCond_TA|Heating_Grav', 'BedroomAbvGr|MasVnrType_Tencode', 'Neighborhood_Mitchel|GarageType_Basment', 'BsmtExposure_Tencode|GarageYrBlt', 'Functional_Maj2|LotConfig_Inside', 'Exterior2nd_Stucco|CentralAir_Tencode', 'GarageType_BuiltIn|Neighborhood_Timber', 'Exterior2nd_CmentBd|RoofStyle_Tencode', 'MiscFeature_Othr|HalfBath', 'KitchenQual_Tencode|GarageCond_Fa', 'GarageYrBlt|BsmtExposure_No', 'MoSold|LotShape_IR3', 'HouseStyle_1.5Unf|Foundation_Slab', 'BldgType_2fmCon|KitchenQual_Gd', 'LandContour_Low|GarageCond_TA', 'PavedDrive_Tencode|Neighborhood_BrkSide', 'GarageType_Tencode|LotConfig_Tencode', 'YrSold|BldgType_Twnhs', 'BsmtCond_Gd|BldgType_TwnhsE', 'EnclosedPorch|Condition1_Tencode', 'SaleType_WD|KitchenQual_TA', 'Electrical_Tencode|MasVnrType_BrkFace', 'Heating_Grav|PavedDrive_P', 'BsmtFinType1_Unf|BsmtExposure_No', 'GarageFinish_Unf|Street_Tencode', 'MSZoning_RM|MiscFeature_Gar2', 'FireplaceQu_Ex|RoofMatl_WdShngl', 'BsmtCond_Po|Condition1_RRAn', 'Exterior1st_VinylSd|Utilities_AllPub', 'FireplaceQu_Tencode|PavedDrive_P', 'SaleType_ConLI|WoodDeckSF', 'GarageFinish_Tencode|Exterior1st_Tencode', 'LandSlope_Gtl|Exterior1st_MetalSd', 'Neighborhood_Edwards|HalfBath', 'LotArea|BsmtFinType2_LwQ', 'BldgType_Duplex|Exterior1st_CemntBd', 'PavedDrive_Tencode|LowQualFinSF', 'BsmtQual_Tencode|LotConfig_Tencode', 'BsmtFinType1_Rec|MSZoning_RL', 'SaleType_ConLD|Neighborhood_BrkSide', 'Exterior2nd_Stone|MiscFeature_Gar2', 'BsmtExposure_Av|BsmtFinType2_LwQ', 'SaleType_ConLD|GarageType_Tencode', 'Electrical_FuseA|Neighborhood_StoneBr', 'HeatingQC_Fa|MasVnrType_BrkFace', 'Functional_Typ|ExterCond_Fa', 'Heating_Grav|Neighborhood_Edwards', 'LandSlope_Sev|Exterior1st_WdShing', 'Neighborhood_NPkVill|LotArea', 'GarageType_Detchd|Condition1_Feedr', 'Neighborhood_CollgCr|GarageCond_Fa', 'KitchenAbvGr|MasVnrArea', 'LandSlope_Tencode|Neighborhood_NWAmes', 'Neighborhood_NridgHt|SaleType_Tencode', 'HeatingQC_Fa|BsmtFinSF2', 'KitchenAbvGr|SaleCondition_Normal', 'LotArea|Condition1_RRAe', 'RoofMatl_Tencode|Foundation_Slab', 'MiscFeature_Othr|GarageCond_Tencode', 'BldgType_TwnhsE|Condition1_RRAn', 'SaleType_ConLI|KitchenQual_Tencode', 'MasVnrType_BrkCmn|BsmtFinType2_Rec', 'Neighborhood_Mitchel|Exterior1st_BrkComm', 'BsmtExposure_Tencode|GarageCars', 'Functional_Maj2|Condition2_Norm', 'LotShape_IR2|ExterQual_Fa', 'ExterCond_Gd|SaleType_COD', 'Exterior2nd_Stone|BsmtFinType2_GLQ', 'GarageCond_Po|BsmtFinType1_ALQ', 'LotConfig_FR2|BsmtFinType1_LwQ', 'SaleCondition_Tencode|Foundation_PConc', 'Neighborhood_BrDale|Exterior2nd_Brk Cmn', 'MasVnrType_None|CentralAir_Tencode', 'ExterQual_TA|BsmtFinType2_Rec', 'BsmtFinType2_Tencode|BsmtExposure_No', 'Neighborhood_NPkVill|GarageQual_Fa', 'GarageCond_Po|Exterior2nd_AsphShn', 'FireplaceQu_Po|Fence_MnWw', 'ExterQual_TA|LotConfig_Inside', 'LandContour_HLS|BsmtFinType1_GLQ', 'RoofStyle_Flat|Exterior1st_MetalSd', 'RoofMatl_Tencode|SaleCondition_Partial', 'Foundation_PConc|Neighborhood_Veenker', 'Alley_Pave|BsmtFinType1_GLQ', 'YearRemodAdd|Exterior2nd_Wd Shng', 'Neighborhood_NridgHt|OverallCond', 'SaleCondition_Family|HeatingQC_Tencode', 'Neighborhood_CollgCr|MiscVal', 'FullBath|BsmtUnfSF', 'BsmtFinType1_Tencode|GarageQual_Tencode', 'PavedDrive_Tencode|SaleType_COD', 'Neighborhood_ClearCr|SaleType_WD', 'BedroomAbvGr|Fence_MnWw', 'Neighborhood_NPkVill|MSZoning_RH', 'KitchenQual_Tencode|KitchenQual_TA', 'LandContour_Lvl|Neighborhood_MeadowV', 'LotConfig_CulDSac|ExterQual_Fa', 'LotShape_Tencode|Street_Tencode', 'GarageType_Detchd|Condition1_Tencode', 'Exterior2nd_Stucco|Neighborhood_Blmngtn', 'BsmtQual_Gd|GarageType_2Types', 'Neighborhood_NPkVill|BldgType_Twnhs', 'PavedDrive_N|HouseStyle_SLvl', 'LotArea|BsmtFinSF2', 'Neighborhood_BrDale|Heating_Grav', 'Neighborhood_OldTown|SaleType_ConLI', 'RoofStyle_Flat|Neighborhood_Mitchel', 'LandContour_HLS|2ndFlrSF', 'LandContour_Tencode|HouseStyle_1.5Unf', 'SaleCondition_Tencode|SaleType_WD', 'Heating_GasA|TotRmsAbvGrd', 'Neighborhood_NridgHt|SaleType_CWD', 'RoofMatl_Tencode|Neighborhood_NridgHt', 'Condition1_Artery|Alley_Grvl', 'Exterior2nd_BrkFace|KitchenQual_Fa', 'PavedDrive_N|BsmtFinType1_ALQ', 'Alley_Grvl', 'Condition1_PosA|MiscFeature_Tencode', 'Functional_Tencode|LandSlope_Sev', 'BsmtQual_Ex|BsmtFinType2_Rec', 'MiscFeature_Othr|PavedDrive_Y', 'BldgType_Duplex|Condition1_PosN', 'HeatingQC_Fa|Exterior1st_MetalSd', 'ScreenPorch|Neighborhood_Timber', 'Neighborhood_Tencode|Exterior2nd_Wd Shng', 'OverallQual|BldgType_Tencode', 'MSZoning_RM|Neighborhood_IDOTRR', 'Foundation_CBlock|Condition2_Norm', 'HeatingQC_Gd|HouseStyle_1.5Unf', 'SaleCondition_Alloca|SaleType_New', 'SaleCondition_Partial|HouseStyle_2.5Unf', 'Neighborhood_NWAmes|Exterior2nd_Wd Shng', 'BldgType_Duplex|HouseStyle_2Story', 'MasVnrType_None|Exterior1st_WdShing', 'BsmtQual_TA|BsmtFinType1_Unf', 'RoofStyle_Gambrel|HouseStyle_1.5Fin', 'HouseStyle_1.5Unf|HouseStyle_2.5Unf', 'HeatingQC_Gd|Exterior2nd_HdBoard', 'Foundation_Tencode|Condition2_Norm', 'BsmtFinType2_Tencode|Functional_Maj1', 'RoofStyle_Gable|Utilities_AllPub', 'GarageFinish_Tencode|GarageFinish_RFn', 'Exterior2nd_Stucco|EnclosedPorch', 'HouseStyle_1.5Unf|Condition1_Tencode', 'HouseStyle_1.5Unf|MSZoning_FV', 'RoofStyle_Shed|Neighborhood_Gilbert', 'HalfBath|Utilities_AllPub', 'Neighborhood_NPkVill|Condition1_RRAn', 'MiscFeature_Shed|PoolArea', 'GarageFinish_Tencode|GarageArea', 'KitchenQual_Tencode|Functional_Min2', 'GarageFinish_RFn|HouseStyle_1.5Fin', 'MasVnrType_BrkCmn|GarageArea', 'Functional_Tencode|MiscFeature_Tencode', 'Neighborhood_Crawfor|Neighborhood_Timber', 'BldgType_Twnhs|KitchenQual_TA', 'Foundation_BrkTil|Neighborhood_SWISU', 'BsmtQual_TA|MiscFeature_Tencode', '3SsnPorch|ExterCond_Fa', 'Neighborhood_Edwards|MoSold', 'Neighborhood_BrDale|BsmtFinType2_Tencode', 'Exterior2nd_Stucco|ExterQual_Ex', 'LotShape_Reg|GarageCond_Gd', 'ExterCond_Gd|Fence_MnPrv', 'LotFrontage|MSZoning_RH', 'Exterior2nd_Stucco|YearBuilt', 'OpenPorchSF|2ndFlrSF', 'GarageType_Attchd|Neighborhood_BrkSide', 'Neighborhood_SawyerW|BsmtExposure_Mn', 'TotalBsmtSF|BsmtFinType2_ALQ', 'BsmtQual_Ex|ExterQual_Fa', 'LotShape_IR3|HouseStyle_1.5Fin', 'Exterior2nd_AsbShng|LotConfig_CulDSac', 'Functional_Maj2|Alley_Grvl', 'GarageType_Attchd|GarageFinish_RFn', 'Neighborhood_Blmngtn|Neighborhood_SawyerW', 'YrSold|Foundation_Stone', 'BsmtFinType2_GLQ|Neighborhood_SWISU', 'PavedDrive_Y|MSZoning_C (all)', 'LandSlope_Mod|YearBuilt', 'Utilities_AllPub|Exterior2nd_AsphShn', 'Functional_Typ|GarageType_2Types', 'Neighborhood_NoRidge|BldgType_TwnhsE', 'GarageCond_Tencode|Fence_GdWo', 'GarageQual_Tencode|BsmtFinType1_GLQ', 'Exterior1st_Stucco|GarageQual_Po', 'Exterior2nd_AsbShng|Heating_GasA', 'Neighborhood_NridgHt|BsmtFinType1_GLQ', 'Exterior2nd_Stone|SaleType_Tencode', 'Exterior1st_HdBoard|BsmtExposure_Av', 'RoofStyle_Gambrel|SaleType_Oth', 'BedroomAbvGr|ExterQual_Gd', 'LandContour_Tencode|HouseStyle_2Story', 'Neighborhood_Mitchel|GarageCond_Fa', 'Electrical_FuseF|MSZoning_RM', 'LotShape_IR1|MSZoning_FV', 'BldgType_2fmCon|HouseStyle_SLvl', 'BsmtFinType1_LwQ|BsmtCond_Fa', 'MSZoning_RM|Fence_GdWo', 'ExterQual_Ex|Fence_MnPrv', 'Foundation_PConc|Electrical_FuseP', 'HeatingQC_Ex|BsmtFullBath', 'Condition1_Norm|GarageQual_Po', 'Exterior1st_Stucco|LandSlope_Tencode', 'HeatingQC_TA', 'FireplaceQu_Tencode|Neighborhood_CollgCr', 'OverallCond|ExterQual_Tencode', 'BsmtFinType1_Tencode|Neighborhood_NoRidge', 'BsmtFinType1_BLQ|BldgType_TwnhsE', 'BldgType_Twnhs|BsmtFinType1_LwQ', 'FireplaceQu_Ex|GarageYrBlt', 'Exterior2nd_BrkFace|OverallCond', 'GarageArea|PoolArea', 'HalfBath|Neighborhood_IDOTRR', 'TotRmsAbvGrd|SaleCondition_Normal', 'Exterior2nd_Wd Sdng|Utilities_AllPub', 'KitchenQual_Fa|Exterior2nd_HdBoard', 'BsmtQual_Tencode|SaleCondition_Abnorml', 'Heating_Grav|Neighborhood_OldTown', 'FireplaceQu_Fa|Exterior2nd_Plywood', 'Exterior2nd_Tencode|HouseStyle_2Story', 'LotArea|Exterior1st_Wd Sdng', 'Neighborhood_IDOTRR|Exterior1st_Tencode', 'LandContour_Tencode|Condition2_Artery', 'FireplaceQu_Po|1stFlrSF', 'Fence_Tencode|Neighborhood_NAmes', 'Electrical_FuseF|Alley_Grvl', 'LotShape_Tencode|Neighborhood_Mitchel', 'BsmtFinType1_ALQ|MSZoning_RL', 'ExterQual_Ex|RoofStyle_Tencode', 'GarageType_Basment|Exterior1st_MetalSd', 'LandContour_Low|MiscFeature_Othr', 'GarageCond_Po|LotConfig_Corner', 'BsmtQual_TA|MasVnrArea', 'GarageCond_TA|MasVnrType_Tencode', 'Foundation_Tencode|Foundation_Slab', 'MiscVal|BsmtFinType1_LwQ', 'LandSlope_Mod|Exterior2nd_Tencode', 'Neighborhood_NWAmes|BsmtExposure_Gd', 'HouseStyle_1Story|GarageQual_Tencode', 'Electrical_Tencode|BsmtFinType1_LwQ', 'Neighborhood_Mitchel|Condition1_RRAe', 'SaleType_WD|Utilities_AllPub', 'YrSold|Condition1_Norm', 'SaleType_ConLI|MasVnrType_Stone', 'SaleCondition_Alloca|Neighborhood_MeadowV', 'BsmtQual_Fa|Neighborhood_SawyerW', 'SaleType_WD|GarageQual_Fa', 'KitchenQual_Fa|MasVnrType_Stone', 'GarageType_Basment|MSZoning_RH', 'RoofStyle_Gambrel|Exterior1st_BrkComm', 'YearBuilt|SaleCondition_Partial', 'HouseStyle_Tencode|SaleType_Tencode', 'Neighborhood_Somerst|SaleType_WD', 'Neighborhood_Veenker|BsmtQual_Gd', 'HeatingQC_TA|BsmtCond_TA', 'GarageFinish_Fin|ExterQual_Tencode', 'Electrical_FuseP|PavedDrive_Tencode', 'Neighborhood_StoneBr|BsmtQual_Gd', 'SaleType_New|Exterior1st_WdShing', 'Exterior1st_AsbShng|BsmtExposure_Gd', 'LotShape_IR3|Utilities_AllPub', 'ExterCond_Gd|Exterior1st_CemntBd', 'LotFrontage|GarageCond_Ex', 'LandSlope_Sev|Alley_Grvl', 'LotShape_IR1|OverallCond', 'BsmtUnfSF|2ndFlrSF', 'Heating_GasW|Condition1_Feedr', 'KitchenQual_TA|Exterior2nd_HdBoard', 'Functional_Typ|Fence_GdPrv', 'BldgType_2fmCon|EnclosedPorch', 'MiscFeature_Othr|PavedDrive_P', 'Street_Tencode|LandContour_Bnk', 'Neighborhood_BrDale|Heating_GasW', 'Exterior1st_HdBoard|BsmtFinType1_Rec', 'KitchenQual_Ex|Functional_Maj2', 'LotShape_Reg|GarageYrBlt', 'Alley_Pave|Exterior2nd_AsphShn', 'Foundation_BrkTil|BsmtFinType2_Unf', 'KitchenQual_Tencode|Fence_GdWo', 'Condition1_PosA|BsmtFinType2_Rec', 'BsmtFinType1_Rec|Exterior2nd_Wd Shng', 'GarageType_Basment|GarageYrBlt', 'HalfBath|RoofStyle_Gambrel', 'Functional_Typ|BsmtQual_Fa', 'Foundation_Tencode|Exterior2nd_CmentBd', 'LotArea|HalfBath', 'BsmtFinType2_ALQ|LandContour_Bnk', 'Neighborhood_NridgHt|BsmtQual_Fa', 'BsmtFinType2_ALQ|Condition1_Norm', 'LandContour_Bnk|Condition1_Feedr', 'KitchenAbvGr|LandContour_Lvl', 'RoofStyle_Hip|Electrical_SBrkr', 'Fence_GdWo|MasVnrType_BrkFace', 'HeatingQC_TA|BsmtExposure_Gd', 'Neighborhood_BrDale|BldgType_2fmCon', 'Neighborhood_NAmes|Functional_Min2', 'BsmtFinType2_ALQ|RoofStyle_Gambrel', 'BsmtFinType1_ALQ|Exterior1st_CemntBd', 'PavedDrive_P|HouseStyle_2.5Unf', 'HalfBath|GarageCond_Fa', 'MiscFeature_Gar2|BsmtExposure_No', 'Utilities_Tencode|MiscFeature_Tencode', 'Condition1_Artery|GarageQual_Tencode', 'LandSlope_Gtl|SaleType_CWD', 'Electrical_FuseP|HeatingQC_Tencode', 'BsmtFinType2_Unf|SaleType_COD', 'HalfBath|Fence_GdWo', 'BsmtFinType1_Rec|Condition1_RRAe', 'Condition1_Norm|2ndFlrSF', 'KitchenQual_Ex|Exterior2nd_Plywood', 'BsmtFinSF2|RoofStyle_Gable', 'Condition1_PosA', 'BsmtFinType2_GLQ|FireplaceQu_Fa', 'LotShape_IR2|LotArea', 'LandContour_Low|PoolArea', 'Functional_Tencode|BsmtQual_Tencode', 'BsmtExposure_Tencode|BsmtQual_Ex', 'EnclosedPorch|LotConfig_Corner', 'SaleType_ConLw|Exterior2nd_VinylSd', 'ExterQual_TA|SaleCondition_Family', 'GarageFinish_Fin|SaleCondition_Normal', 'LandContour_Low|LandContour_Bnk', 'TotalBsmtSF|BsmtCond_TA', 'GarageFinish_Unf|Neighborhood_NoRidge', 'BldgType_Twnhs|FireplaceQu_Ex', 'RoofMatl_CompShg|Neighborhood_Gilbert', 'Exterior2nd_Wd Shng|Exterior1st_MetalSd', 'GarageType_CarPort|Fence_GdWo', 'Condition1_PosA|GarageCond_Ex', 'RoofStyle_Flat|ExterCond_Gd', 'RoofMatl_CompShg|Exterior1st_VinylSd', 'Neighborhood_Somerst|GarageQual_TA', 'Condition1_Artery|RoofMatl_Tar&Grv', 'GarageCars|SaleType_New', 'RoofStyle_Hip|Exterior1st_Tencode', 'LotArea|Heating_Tencode', 'Neighborhood_Mitchel|Street_Pave', 'Neighborhood_NWAmes|Neighborhood_Sawyer', 'SaleType_WD|Exterior2nd_Plywood', 'BsmtFinType1_Tencode|MiscFeature_Gar2', 'GarageCars|Neighborhood_NoRidge', 'RoofStyle_Hip|Condition1_RRAn', 'Exterior1st_CemntBd|RoofStyle_Tencode', 'SaleCondition_Normal|Neighborhood_SawyerW', 'Utilities_Tencode|BsmtFinType2_ALQ', 'Exterior2nd_Stone|MasVnrType_Tencode', 'LotShape_IR2|Exterior1st_VinylSd', 'TotalBsmtSF|HouseStyle_SLvl', 'Condition1_RRAn|HouseStyle_1.5Fin', 'RoofStyle_Gable|Condition2_Norm', 'BsmtQual_TA|Exterior1st_CemntBd', 'Exterior1st_BrkFace|SaleType_ConLw', 'SaleCondition_Tencode|Functional_Maj2', 'Exterior2nd_Stucco|Neighborhood_Somerst', 'SaleType_WD|MSZoning_RM', 'LandContour_Tencode|BsmtQual_Gd', 'Heating_GasW|LandSlope_Gtl', 'BsmtCond_Po|BsmtFinType1_GLQ', 'FireplaceQu_TA|MiscFeature_Gar2', 'BldgType_Duplex|MiscVal', 'Exterior2nd_BrkFace|Fence_MnWw', 'Alley_Tencode|Neighborhood_NWAmes', 'Neighborhood_Mitchel|BsmtQual_Gd', 'ExterCond_Gd|SaleType_CWD', 'Condition1_Norm|Functional_Min2', 'Neighborhood_Blmngtn|LandSlope_Mod', 'KitchenAbvGr|Utilities_AllPub', 'BsmtUnfSF|BldgType_TwnhsE', 'LandSlope_Mod|BsmtCond_Tencode', 'Condition2_Artery|ExterQual_Tencode', 'Neighborhood_Tencode|Fence_MnPrv', 'Foundation_CBlock|GarageQual_Tencode', 'Foundation_Tencode|HouseStyle_SLvl', 'Exterior2nd_AsbShng|PavedDrive_Y', 'GrLivArea|Alley_Tencode', 'PoolArea|BldgType_1Fam', 'GarageQual_Tencode|Exterior1st_Tencode', 'Exterior1st_AsbShng|SaleType_Oth', 'BldgType_2fmCon|Neighborhood_BrkSide', 'Foundation_BrkTil|BsmtFullBath', 'BsmtFinType1_GLQ|Exterior1st_Plywood', 'BsmtCond_Tencode|Utilities_AllPub', 'RoofStyle_Shed|MasVnrType_None', 'Exterior2nd_HdBoard|Exterior2nd_Plywood', 'RoofMatl_Tencode|Neighborhood_Timber', 'FireplaceQu_Po|BsmtExposure_No', 'ExterCond_Gd|Condition1_RRAn', 'HouseStyle_1Story|BldgType_2fmCon', 'HeatingQC_Ex|LotShape_IR3', 'PavedDrive_N|Neighborhood_NWAmes', 'SaleType_ConLI|PavedDrive_Y', 'GarageCond_Tencode|Neighborhood_Veenker', 'MiscFeature_Othr|Exterior2nd_VinylSd', 'Foundation_Stone|LotConfig_Inside', 'LowQualFinSF|BsmtFinType1_Unf', 'LotConfig_FR2|Neighborhood_Tencode', 'RoofStyle_Shed|Foundation_CBlock', 'OverallCond|HouseStyle_1.5Fin', 'LotShape_Tencode|GarageArea', 'SaleCondition_Alloca|CentralAir_Tencode', 'HalfBath|BsmtQual_Gd', 'LotShape_IR2|KitchenQual_TA', 'LotShape_IR2|Exterior1st_Tencode', 'BldgType_Duplex|EnclosedPorch', 'Heating_Tencode|LandContour_Bnk', 'LotConfig_Tencode|BsmtFinType1_Unf', 'FireplaceQu_Gd|MiscFeature_Othr', 'SaleType_ConLD|GarageFinish_Tencode', 'BsmtExposure_Tencode|TotalBsmtSF', 'BsmtExposure_Tencode|BsmtFinType2_GLQ', 'PoolQC_Tencode|Condition1_PosA', 'MiscFeature_Othr|OpenPorchSF', 'HouseStyle_Tencode|BsmtFinType2_Rec', 'LandContour_Low|KitchenQual_Ex', 'Exterior1st_AsbShng|FireplaceQu_Fa', 'HouseStyle_1.5Fin|GarageType_2Types', 'GrLivArea|2ndFlrSF', 'HouseStyle_2.5Unf|CentralAir_Tencode', 'Neighborhood_NoRidge|KitchenQual_Tencode', 'YearBuilt|Exterior2nd_Wd Sdng', 'Heating_GasA|BsmtCond_Gd', 'LandContour_Bnk|Condition1_PosN', 'LotFrontage|FireplaceQu_Po', 'BldgType_Twnhs|MSZoning_RM', 'Heating_Tencode|2ndFlrSF', 'GarageQual_Gd|MiscFeature_Othr', 'Neighborhood_NWAmes|Foundation_Slab', 'ExterCond_Gd|BsmtCond_Po', 'BsmtFinType1_Tencode|BsmtQual_Gd', 'Neighborhood_Mitchel|Condition2_Tencode', 'MasVnrType_None|Neighborhood_Timber', 'BsmtFinType1_Rec|Neighborhood_NWAmes', 'GarageType_Attchd|MSSubClass', 'GarageCars|BsmtFinType2_LwQ', 'SaleCondition_Tencode|BldgType_TwnhsE', 'LotFrontage|SaleType_Oth', 'ExterCond_TA|Neighborhood_Sawyer', 'LandSlope_Tencode|FireplaceQu_TA', 'KitchenQual_Tencode|Exterior2nd_AsphShn', '3SsnPorch|BsmtUnfSF', 'OverallQual|BsmtFinType2_Unf', 'SaleType_COD|BsmtExposure_No', 'Neighborhood_CollgCr|Functional_Maj2', 'LandContour_Low|ScreenPorch', 'FireplaceQu_Ex|BsmtCond_TA', 'Neighborhood_Crawfor|Fence_MnPrv', 'KitchenQual_Gd|Exterior2nd_Plywood', 'PavedDrive_Tencode|BsmtExposure_No', 'LotShape_Reg|HouseStyle_2.5Unf', 'ExterCond_Tencode|Condition2_Artery', 'Electrical_SBrkr|HouseStyle_2Story', 'BsmtFinType1_GLQ|MasVnrType_BrkFace', 'KitchenAbvGr|HeatingQC_Fa', 'PoolArea|MSZoning_RL', 'LotShape_IR1|Exterior1st_Wd Sdng', 'RoofStyle_Shed|BsmtExposure_Mn', 'Exterior1st_HdBoard|FireplaceQu_Fa', 'LandContour_HLS|BsmtFinType2_BLQ', 'SaleType_ConLw|ExterQual_Gd', 'BsmtExposure_Tencode|MSZoning_FV', 'Neighborhood_Mitchel|Condition1_Norm', 'Electrical_FuseA|LandSlope_Sev', 'LotShape_Reg|FireplaceQu_TA', 'LandContour_HLS|GarageCond_Fa', 'ExterQual_TA|1stFlrSF', 'GarageCond_Po|GarageQual_Po', 'FireplaceQu_Po|Electrical_FuseF', 'FireplaceQu_Gd|BsmtFinType2_Rec', 'HouseStyle_SFoyer|Street_Grvl', 'SaleCondition_Tencode|YrSold', 'GarageType_Detchd|BsmtExposure_Gd', 'Neighborhood_NAmes|Condition1_Feedr', 'GarageCars|Electrical_SBrkr', 'ExterQual_TA|LandSlope_Mod', 'KitchenAbvGr|CentralAir_Tencode', 'Utilities_Tencode|BsmtFinType1_BLQ', 'HouseStyle_SFoyer|RoofMatl_Tar&Grv', 'SaleType_WD|BsmtCond_TA', 'Exterior2nd_Stucco|GarageType_Attchd', 'OpenPorchSF|MasVnrType_Tencode', 'BsmtFinType2_BLQ|SaleType_COD', 'BedroomAbvGr|Condition1_PosN', 'LotShape_IR2|Condition1_PosA', 'Functional_Min1|OverallCond', 'LandSlope_Tencode|Exterior2nd_CmentBd', 'Condition1_Artery|GarageFinish_Tencode', 'Foundation_PConc|BldgType_TwnhsE', 'BsmtFinType2_LwQ|Condition1_Feedr', 'BsmtHalfBath|MiscFeature_Shed', 'SaleType_ConLw|LandContour_Tencode', 'BsmtQual_Tencode|RoofStyle_Tencode', 'RoofStyle_Gable|MSZoning_RL', 'YearRemodAdd|BsmtHalfBath', 'PavedDrive_N|BsmtFinType1_GLQ', 'RoofStyle_Shed|MasVnrType_Stone', 'LotConfig_Tencode|Neighborhood_SawyerW', 'ExterCond_Gd|GarageType_2Types', 'TotalBsmtSF|BldgType_1Fam', 'OverallQual|MSZoning_FV', 'TotalBsmtSF|WoodDeckSF', 'HeatingQC_Gd|PavedDrive_Y', 'Exterior1st_VinylSd|WoodDeckSF', 'ExterCond_TA|Exterior1st_AsbShng', 'ExterCond_TA|BsmtFinSF1', 'Neighborhood_Veenker|GarageType_BuiltIn', 'HeatingQC_Gd|Electrical_SBrkr', 'KitchenAbvGr|SaleCondition_Tencode', 'FullBath|SaleType_CWD', 'PavedDrive_N|Street_Pave', 'GarageCond_Po|GarageQual_Fa', 'BedroomAbvGr|GarageType_Basment', 'HouseStyle_SFoyer|MoSold', 'Exterior2nd_AsbShng|FullBath', 'RoofStyle_Hip|Condition1_PosA', 'BsmtFinType1_ALQ|PavedDrive_Tencode', 'BsmtHalfBath|Fence_Tencode', 'HouseStyle_1.5Unf|GarageType_CarPort', 'Exterior2nd_Stucco|Exterior2nd_MetalSd', 'PoolQC_Tencode|Condition1_RRAn', 'Heating_GasA|LotConfig_Inside', 'YrSold|ExterCond_Fa', 'LotConfig_CulDSac|CentralAir_N', 'GarageArea|MSZoning_FV', 'KitchenQual_Ex|Exterior2nd_Brk Cmn', 'HalfBath|MSSubClass', 'Condition1_Tencode|Exterior1st_Plywood', 'Exterior1st_BrkComm|LotShape_IR3', 'BsmtFinType2_GLQ|Electrical_SBrkr', 'LotShape_Tencode|BsmtFinType2_Tencode', 'BsmtFinType2_GLQ|SaleCondition_Alloca', 'LotFrontage|MSZoning_RL', 'YearBuilt|Neighborhood_OldTown', 'LotConfig_FR2|RoofMatl_WdShngl', 'GarageType_Attchd|Foundation_Slab', 'BldgType_Duplex|Heating_Grav', 'Heating_GasA|Condition1_RRAe', 'CentralAir_Y|ExterQual_Fa', 'BsmtQual_Tencode|Condition2_Norm', 'LandContour_HLS|BsmtCond_Po', 'Foundation_Tencode|GarageYrBlt', 'HeatingQC_TA|SaleCondition_Abnorml', 'Exterior2nd_Stone|BsmtCond_TA', 'Foundation_PConc|LandContour_HLS', 'Street_Tencode|Condition2_Artery', 'Neighborhood_IDOTRR|LotConfig_Inside', 'SaleCondition_Alloca|BsmtExposure_Av', 'RoofStyle_Hip|Exterior2nd_HdBoard', 'LotShape_Tencode|Exterior2nd_Tencode', 'ExterCond_TA|Exterior2nd_Tencode', 'KitchenQual_Ex|Neighborhood_Gilbert', 'GarageFinish_RFn|BsmtFinType1_GLQ', 'Neighborhood_IDOTRR|Exterior1st_MetalSd', 'GarageQual_Fa|RoofStyle_Shed', 'BsmtFinType2_GLQ|HalfBath', 'Functional_Maj1|LotConfig_Inside', 'Neighborhood_Tencode|GarageQual_Fa', 'Street_Tencode|BldgType_1Fam', 'Neighborhood_Timber|Exterior1st_MetalSd', 'Exterior2nd_Stucco|OpenPorchSF', 'FullBath|SaleType_COD', 'Exterior2nd_BrkFace|ExterQual_Gd', 'BsmtFinType2_GLQ|MiscFeature_Shed', 'KitchenQual_Gd|BsmtQual_Ex', 'Exterior2nd_Tencode|BldgType_TwnhsE', 'Exterior2nd_AsbShng|GrLivArea', 'Neighborhood_SWISU|Exterior2nd_AsphShn', 'Functional_Typ|Fence_MnWw', 'ExterCond_Gd|RoofMatl_WdShngl', 'ExterCond_TA|MiscFeature_Gar2', 'Neighborhood_Crawfor|MSZoning_RL', 'GarageType_Tencode|KitchenQual_Fa', 'BsmtQual_Ex|BsmtCond_Po', 'Street_Tencode|LotConfig_Tencode', 'Foundation_PConc|MiscFeature_Shed', 'GrLivArea|LotShape_Reg', 'KitchenAbvGr|BldgType_1Fam', 'Neighborhood_NPkVill|BsmtFinType2_Unf', 'LandSlope_Tencode|Electrical_FuseF', 'HalfBath|LowQualFinSF', 'LotShape_IR1|KitchenQual_TA', 'HouseStyle_Tencode|LandContour_HLS', 'LotShape_Tencode|Street_Pave', 'Street_Tencode|Functional_Min1', 'Street_Tencode|Foundation_Stone', 'GarageType_Attchd|Condition2_Norm', 'BsmtQual_Tencode|BsmtExposure_Av', 'LotArea|GarageCond_Ex', 'BsmtFinType1_ALQ|BsmtExposure_Mn', 'BsmtFullBath|ExterQual_Gd', 'Condition1_Artery|Street_Grvl', 'Neighborhood_Veenker|Neighborhood_Edwards', 'YearRemodAdd|BsmtFinType1_Unf', '2ndFlrSF|Fence_MnPrv', 'Foundation_PConc|Neighborhood_Crawfor', 'Exterior2nd_Stone|ExterQual_Fa', 'GrLivArea|Foundation_Stone', 'LotConfig_FR2|Exterior2nd_CmentBd', 'Neighborhood_Edwards|Exterior1st_VinylSd', 'Foundation_BrkTil|MiscVal', 'GarageType_BuiltIn|Neighborhood_Crawfor', 'Exterior2nd_BrkFace|Exterior1st_VinylSd', 'RoofMatl_Tencode|Exterior1st_Stucco', 'KitchenAbvGr|Neighborhood_NridgHt', 'HeatingQC_Fa|Condition1_Tencode', 'LotShape_IR2|RoofMatl_Tar&Grv', 'HouseStyle_SLvl|Functional_Min2', 'RoofStyle_Gable|Exterior2nd_CmentBd', 'HouseStyle_1Story|Condition1_Tencode', 'BldgType_2fmCon|ExterCond_Tencode', 'FireplaceQu_Fa|Neighborhood_NWAmes', 'BsmtFinType1_LwQ|GarageYrBlt', 'Neighborhood_Crawfor|GarageType_2Types', 'YearRemodAdd|GarageQual_Gd', 'Alley_Grvl|WoodDeckSF', 'BsmtExposure_Mn|Fence_MnPrv', 'Exterior1st_AsbShng|HouseStyle_Tencode', 'BsmtFinType2_LwQ|GarageCond_Ex', 'Heating_GasW', 'Exterior2nd_BrkFace|Neighborhood_MeadowV', 'FireplaceQu_Tencode|Foundation_PConc', 'BsmtFinType2_Tencode|Exterior2nd_Wd Shng', 'HouseStyle_1Story|BsmtQual_Tencode', 'LandContour_Low|Fireplaces', 'Utilities_Tencode|Condition1_Tencode', 'Exterior2nd_Tencode', 'Neighborhood_NoRidge|MiscFeature_Gar2', 'Alley_Tencode|MiscFeature_Shed', 'SaleCondition_Family|Neighborhood_SawyerW', 'GarageType_Tencode|BsmtFullBath', 'SaleCondition_Tencode|Condition1_PosA', 'SaleCondition_Alloca|Condition1_RRAe', 'ExterQual_Tencode|BsmtCond_TA', 'LotShape_Tencode|Electrical_Tencode', 'YearRemodAdd|Neighborhood_NoRidge', 'BsmtQual_Fa|Neighborhood_NWAmes', 'LandSlope_Mod|Exterior1st_MetalSd', 'Foundation_BrkTil|Exterior1st_WdShing', 'BsmtQual_Fa|MSZoning_RM', 'GrLivArea|TotRmsAbvGrd', 'PavedDrive_Tencode|LotShape_IR3', 'BldgType_2fmCon|Neighborhood_ClearCr', 'HeatingQC_Fa|RoofStyle_Shed', 'Neighborhood_ClearCr|Fence_MnWw', 'Exterior2nd_BrkFace|Exterior1st_MetalSd', 'LandSlope_Sev|GarageType_Tencode', 'GarageFinish_Fin|Condition2_Artery', 'Exterior2nd_BrkFace|Fence_Tencode', 'KitchenAbvGr|MSZoning_Tencode', 'LandContour_HLS|LandSlope_Gtl', 'BsmtFinType2_BLQ|PavedDrive_Tencode', 'Electrical_FuseA|LandSlope_Gtl', 'BsmtFinType1_Tencode|Heating_GasA', 'BsmtFinType1_Tencode|MasVnrType_Stone', 'LotShape_IR1|PavedDrive_P', 'FireplaceQu_Gd|Fence_Tencode', 'KitchenQual_Tencode|PavedDrive_P', 'Electrical_Tencode|Exterior1st_Stucco', 'Condition1_Artery|SaleType_New', 'HeatingQC_Tencode|LotConfig_Tencode', 'Electrical_Tencode|BsmtFinType2_Rec', 'LandContour_HLS|HalfBath', 'Utilities_Tencode|GarageArea', 'Exterior2nd_CmentBd|Neighborhood_NAmes', 'Exterior1st_Stucco|BsmtQual_Fa', 'BsmtFinType2_ALQ|GarageYrBlt', 'YearBuilt|HouseStyle_SLvl', 'Neighborhood_Blmngtn|BsmtCond_Fa', 'BldgType_2fmCon|RoofMatl_CompShg', 'Alley_Pave|Neighborhood_NoRidge', 'EnclosedPorch|MSZoning_C (all)', 'HeatingQC_TA|GarageCond_Gd', 'LotFrontage|Exterior1st_VinylSd', 'RoofStyle_Tencode|SaleCondition_Partial', 'HeatingQC_Gd|Condition1_Feedr', 'GarageType_Attchd|GarageCond_Ex', 'Functional_Maj2|Exterior2nd_Wd Sdng', 'BsmtHalfBath|ExterCond_Tencode', 'EnclosedPorch|BsmtFinType2_ALQ', 'HouseStyle_1Story|Alley_Pave', 'EnclosedPorch|Exterior1st_CemntBd', '1stFlrSF|BsmtCond_Po', 'BsmtFinType1_Unf|Utilities_AllPub', 'BldgType_Duplex|BsmtFinType1_Rec', 'Exterior2nd_MetalSd|Electrical_FuseF', 'MiscVal|Exterior2nd_AsphShn', 'HeatingQC_TA|Condition1_Tencode', 'Functional_Tencode|BsmtFinSF2', 'ExterCond_Gd|LotShape_IR3', 'ExterCond_Gd|GarageQual_TA', 'ExterQual_TA|EnclosedPorch', '1stFlrSF|WoodDeckSF', 'Neighborhood_NPkVill|Foundation_CBlock', 'LotArea|OpenPorchSF', 'FireplaceQu_Fa|MoSold', 'BsmtFullBath|MSZoning_C (all)', 'Condition1_Artery|RoofMatl_WdShngl', 'SaleCondition_Family|Neighborhood_Crawfor', 'LotShape_IR2|Heating_Grav', 'LandContour_Low|LotShape_IR3', 'BedroomAbvGr|MSZoning_RM', 'YearRemodAdd|RoofStyle_Flat', 'BldgType_Twnhs|ExterCond_Fa', 'BsmtQual_TA|WoodDeckSF', 'GarageQual_Fa|BldgType_1Fam', '2ndFlrSF|BsmtExposure_No', 'HeatingQC_Tencode|BsmtExposure_Mn', 'BldgType_2fmCon|GarageCond_TA', 'SaleType_ConLw', 'BsmtFinType1_ALQ|HouseStyle_2Story', 'BsmtFinType2_Tencode|FullBath', 'RoofStyle_Hip|GarageFinish_Fin', 'Exterior2nd_CmentBd|GarageArea', 'GarageCond_TA|Functional_Maj2', 'BsmtFinType1_Tencode|BsmtFinType2_LwQ', 'MiscVal|SaleType_COD', 'Utilities_Tencode|Functional_Maj1', 'Functional_Tencode|HouseStyle_2.5Unf', 'BsmtFinType1_BLQ|CentralAir_Y', 'Exterior1st_HdBoard|HouseStyle_SFoyer', 'LandSlope_Tencode|Condition1_PosN', 'LandContour_Bnk|Neighborhood_NWAmes', 'BldgType_1Fam|Exterior1st_WdShing', 'GarageType_Attchd|SaleType_Oth', 'HouseStyle_Tencode|Condition2_Tencode', 'ExterCond_TA|Condition1_RRAe', 'RoofMatl_CompShg|GarageQual_Po', 'BsmtFullBath|BsmtCond_TA', 'FireplaceQu_Gd|BsmtFullBath', 'SaleCondition_Normal|HouseStyle_2.5Unf', 'LotFrontage|Exterior1st_MetalSd', 'KitchenQual_TA|MSZoning_RH', 'Functional_Tencode|ExterCond_Fa', 'Functional_Min1|BsmtCond_TA', 'Electrical_SBrkr|SaleCondition_Normal', 'HeatingQC_Gd|BsmtQual_TA', 'Heating_GasW|HeatingQC_Tencode', 'BldgType_TwnhsE|Alley_Grvl', 'RoofStyle_Tencode|BsmtFinSF1', 'Functional_Tencode|BsmtFinType1_GLQ', 'Electrical_FuseA|GarageQual_Tencode', 'Alley_Tencode|LotShape_IR1', 'Exterior2nd_Stucco|GarageQual_TA', 'Condition2_Artery|Exterior2nd_Brk Cmn', 'ScreenPorch|Exterior2nd_AsphShn', 'LandContour_Tencode|MSZoning_RM', 'HeatingQC_Ex|Exterior2nd_Brk Cmn', 'BldgType_2fmCon|MiscFeature_Gar2', 'SaleType_Tencode|Neighborhood_SWISU', 'PavedDrive_N|HeatingQC_Tencode', 'Neighborhood_Sawyer|PavedDrive_P', 'GarageCars|SaleCondition_Partial', 'GrLivArea|RoofStyle_Tencode', 'Exterior2nd_Stucco|GarageFinish_Tencode', 'PavedDrive_Tencode|ExterQual_Gd', 'Condition1_RRAe|Functional_Maj1', 'BedroomAbvGr|Exterior1st_MetalSd', 'GarageQual_Fa|RoofMatl_WdShngl', 'HouseStyle_SFoyer|TotRmsAbvGrd', 'LotConfig_FR2|Neighborhood_NAmes', 'Condition1_PosA|SaleType_Oth', 'Neighborhood_Veenker|WoodDeckSF', 'Neighborhood_Blmngtn|SaleType_New', 'Condition1_Norm|HouseStyle_2.5Unf', 'LotConfig_Tencode|Utilities_AllPub', 'Neighborhood_SWISU|BsmtQual_Gd', 'MasVnrType_BrkCmn|MasVnrArea', 'MSZoning_C (all)|LotShape_IR3', 'PavedDrive_N|MiscVal', 'GarageQual_Po|GarageType_CarPort', 'Alley_Tencode|PoolQC_Tencode', 'BsmtFinType2_ALQ|BsmtCond_TA', 'GarageFinish_Tencode|BsmtQual_Gd', 'PoolArea|MasVnrType_Tencode', 'HouseStyle_Tencode|Fence_GdPrv', 'Neighborhood_ClearCr|BsmtQual_Ex', 'LotArea|GarageQual_Po', 'BsmtExposure_No|WoodDeckSF', 'Neighborhood_Tencode|Neighborhood_Sawyer', 'KitchenQual_Tencode|MSZoning_C (all)', '3SsnPorch|GarageFinish_RFn', 'RoofStyle_Flat|ExterCond_Fa', 'KitchenQual_Fa|BsmtFinType1_Unf', 'GarageFinish_Tencode|FireplaceQu_TA', 'Electrical_Tencode|WoodDeckSF', 'Foundation_CBlock|Condition1_Tencode', 'Fence_GdPrv|Utilities_AllPub', 'Condition1_RRAe|BsmtFinType2_Rec', 'HouseStyle_2.5Unf|Exterior2nd_Wd Shng', 'Fireplaces|SaleType_New', 'Heating_Tencode|CentralAir_Tencode', 'LandContour_Lvl|BsmtCond_Po', 'BldgType_Twnhs|PavedDrive_Tencode', 'SaleType_Tencode|Utilities_AllPub', 'Foundation_BrkTil|GarageType_Attchd', 'Electrical_FuseP|Exterior2nd_Wd Shng', 'ExterQual_TA|MoSold', 'LotFrontage|ExterQual_Fa', 'Exterior2nd_Stone|TotRmsAbvGrd', 'LotConfig_Corner|Exterior1st_CemntBd', 'LandContour_Lvl|Condition2_Artery', 'LotConfig_CulDSac|SaleType_CWD', 'PavedDrive_Tencode|BldgType_Tencode', 'BsmtFinType2_Rec|ExterQual_Ex', 'ExterCond_TA|Exterior2nd_AsphShn', 'LandSlope_Mod|BsmtFinType2_ALQ', 'TotRmsAbvGrd|Functional_Min2', 'GarageArea|MSZoning_RM', '2ndFlrSF|SaleCondition_Abnorml', 'OpenPorchSF|Exterior2nd_Plywood', 'Condition1_PosN|MasVnrType_Stone', 'RoofStyle_Hip|MoSold', 'Neighborhood_SWISU|GarageType_Attchd', 'BldgType_Duplex|KitchenQual_Ex', 'Functional_Mod|BldgType_TwnhsE', 'GarageCond_Po|Foundation_BrkTil', 'HeatingQC_Fa|Neighborhood_MeadowV', 'BldgType_Duplex|BsmtExposure_Gd', 'PavedDrive_N|MiscFeature_Gar2', 'ExterCond_TA|BsmtFinType1_LwQ', 'Exterior2nd_Wd Sdng|HouseStyle_1.5Fin', 'Electrical_Tencode|RoofStyle_Shed', 'LowQualFinSF|OpenPorchSF', 'BsmtFinType1_ALQ|SaleType_Oth', 'LowQualFinSF|LotShape_IR3', 'BsmtFinType1_BLQ|HouseStyle_2Story', 'PavedDrive_N|Electrical_SBrkr', 'BsmtFinType2_LwQ|Exterior1st_Plywood', 'GarageType_Tencode|SaleType_Oth', 'RoofMatl_Tar&Grv|GarageQual_Po', 'Neighborhood_Tencode|Exterior2nd_MetalSd', 'SaleType_ConLI|LotConfig_Inside', 'Exterior1st_HdBoard|SaleType_Oth', 'BsmtFinType1_ALQ|MSZoning_C (all)', 'Electrical_SBrkr|Neighborhood_NAmes', 'GarageFinish_RFn|HouseStyle_2Story', 'Neighborhood_Veenker|MSSubClass', 'GarageQual_Tencode|GarageType_2Types', 'SaleCondition_Abnorml|Exterior1st_Wd Sdng', 'BsmtCond_Fa|WoodDeckSF', 'LandContour_Tencode|BsmtFinType1_GLQ', 'ExterCond_Tencode|MSZoning_RH', '1stFlrSF|Fence_MnWw', 'Exterior1st_Stucco|Exterior1st_MetalSd', 'GarageCond_Tencode|Neighborhood_OldTown', 'Neighborhood_NPkVill|GarageType_CarPort', 'Neighborhood_StoneBr|ExterQual_Fa', 'MasVnrType_BrkCmn|GarageType_CarPort', 'Electrical_Tencode|Fence_GdPrv', 'BsmtFinSF1|WoodDeckSF', 'Exterior2nd_BrkFace|ExterQual_Tencode', 'Neighborhood_BrDale|Foundation_Tencode', 'GrLivArea|Neighborhood_Somerst', 'Functional_Maj1|BsmtCond_Tencode', 'GarageFinish_Unf|LandSlope_Tencode', 'LandContour_Bnk|LotConfig_Inside', 'KitchenQual_TA|Foundation_Slab', 'GarageType_Detchd|Exterior2nd_AsphShn', 'LandContour_Tencode|GarageCond_Ex', 'Exterior2nd_BrkFace|Heating_GasW', 'RoofMatl_Tencode|Exterior1st_HdBoard', 'YrSold|Heating_Grav', 'LotShape_Reg|Neighborhood_BrkSide', 'Utilities_Tencode|Electrical_FuseP', 'Street_Tencode|BsmtUnfSF', 'MiscVal|ExterCond_Fa', 'FireplaceQu_Ex|Neighborhood_Sawyer', 'BsmtFinType2_BLQ|ExterQual_Fa', 'Fireplaces|CentralAir_Y', 'FireplaceQu_Ex|Fence_MnWw', 'Electrical_SBrkr|BsmtExposure_No', 'Neighborhood_Blmngtn|LotConfig_CulDSac', 'SaleType_ConLD|GarageFinish_RFn', 'MasVnrType_BrkCmn|Exterior2nd_HdBoard', 'GarageQual_Gd|GarageArea', 'ExterCond_Tencode|HouseStyle_SLvl', 'Fence_GdPrv|Exterior2nd_CmentBd', 'Foundation_Stone|Exterior1st_Wd Sdng', 'LotFrontage|Electrical_FuseP', 'Neighborhood_Blmngtn|Neighborhood_ClearCr', 'BsmtFinType2_ALQ|GarageType_Attchd', 'RoofStyle_Tencode|Exterior1st_Plywood', 'BsmtFinType2_LwQ|CentralAir_N', 'BsmtFinType1_ALQ|HouseStyle_2.5Unf', 'PavedDrive_N|MiscFeature_Othr', 'LotArea|Neighborhood_Gilbert', 'LowQualFinSF|Neighborhood_Sawyer', 'Neighborhood_Blmngtn|Heating_Tencode', 'BsmtFinType2_Tencode', 'GarageQual_Gd|LotShape_IR1', 'BsmtCond_TA|Functional_Min2', 'LotShape_Reg', 'Alley_Pave|GarageArea', 'Foundation_Stone|Exterior2nd_Plywood', 'Neighborhood_Mitchel|HeatingQC_Ex', 'HeatingQC_Fa|SaleType_New', 'Electrical_FuseP|RoofMatl_CompShg', 'HeatingQC_Gd|KitchenQual_TA', 'Utilities_Tencode|Alley_Tencode', 'Neighborhood_NWAmes|LotShape_IR3', 'Alley_Pave|Fence_MnPrv', 'Exterior2nd_Stucco|Heating_GasW', 'Exterior2nd_Stone|GarageType_Attchd', 'BsmtFinType1_Rec|SaleCondition_Partial', 'RoofStyle_Gable|CentralAir_Y', 'KitchenAbvGr|Exterior2nd_Wd Sdng', 'Foundation_Tencode|GarageCond_Fa', 'ScreenPorch|BsmtExposure_No', 'EnclosedPorch|Condition1_Feedr', 'BsmtFinType1_Rec|Neighborhood_Crawfor', 'OverallQual|HeatingQC_Gd', 'Alley_Grvl|Foundation_Slab', 'PavedDrive_P|BsmtFinType1_Unf', 'KitchenQual_Tencode|Condition1_Norm', 'Condition1_Feedr|Condition2_Norm', 'BsmtExposure_Av|Condition2_Artery', 'Neighborhood_Blmngtn|HalfBath', 'GarageCond_TA|GarageQual_Po', 'Electrical_Tencode|FireplaceQu_TA', 'BsmtFinType1_LwQ|OverallCond', 'Neighborhood_BrDale|GarageQual_Po', 'Condition1_Artery|Neighborhood_OldTown', 'Condition1_Artery|RoofStyle_Tencode', 'Functional_Maj2|BsmtFinSF1', 'LotShape_IR2|TotalBsmtSF', 'Exterior1st_CemntBd|Neighborhood_Gilbert', 'GarageFinish_Unf|LotArea', 'BsmtFinType2_GLQ|LotConfig_Inside', 'PoolQC_Tencode|MSSubClass', 'MiscFeature_Othr|HouseStyle_2.5Unf', 'GarageCond_Gd|GarageFinish_Tencode', 'EnclosedPorch|BsmtFinSF2', 'BsmtFinSF2|PavedDrive_Tencode', 'GarageCond_Ex|MSZoning_RH', 'SaleType_WD|HeatingQC_Ex', 'ExterCond_Gd|Neighborhood_MeadowV', 'SaleType_ConLI|LandSlope_Tencode', 'Neighborhood_Blmngtn|SaleType_Tencode', 'PavedDrive_N|BsmtQual_Fa', 'SaleCondition_Alloca|MoSold', 'BsmtFinType2_ALQ|ExterCond_Gd', 'Functional_Tencode|Foundation_Tencode', 'BsmtFinSF1|Foundation_Slab', 'LandSlope_Mod|Neighborhood_SawyerW', 'Electrical_FuseP|GarageQual_Fa', 'Neighborhood_Mitchel|Exterior1st_CemntBd', 'GarageCond_TA|LandSlope_Sev', 'LandContour_HLS|Condition1_PosA', 'BsmtExposure_Tencode|Alley_Pave', 'GarageType_Detchd|MSZoning_FV', 'YrSold|Electrical_SBrkr', 'BsmtQual_Ex|1stFlrSF', 'KitchenQual_Ex|Street_Pave', 'TotalBsmtSF|Exterior1st_BrkComm', 'ExterCond_TA|Street_Pave', 'GarageFinish_Unf|GarageQual_Fa', 'Exterior2nd_AsbShng|HouseStyle_SLvl', '3SsnPorch|HouseStyle_2.5Unf', 'GarageType_Tencode|MasVnrType_BrkFace', 'Heating_GasW|Foundation_Tencode', 'LotConfig_Corner|Foundation_CBlock', 'GarageFinish_Fin|KitchenQual_Ex', 'Electrical_FuseA|SaleType_ConLD', 'Foundation_PConc|HouseStyle_2.5Unf', 'ExterQual_TA|LandContour_Tencode', 'BldgType_TwnhsE|MasVnrType_BrkFace', 'GarageCond_Tencode|Neighborhood_Tencode', 'HeatingQC_Tencode|RoofMatl_Tar&Grv', 'BsmtFinType2_BLQ|SaleCondition_Abnorml', 'MiscFeature_Shed|BsmtExposure_Mn', 'OverallQual|GarageFinish_RFn', '3SsnPorch|Neighborhood_NWAmes', 'Foundation_BrkTil|BsmtCond_TA', 'GarageQual_Fa|OverallCond', 'KitchenAbvGr|CentralAir_Y', 'Exterior2nd_AsbShng|MoSold', 'GarageCond_Fa|Functional_Min1', 'GarageCond_Gd|Electrical_FuseF', 'SaleType_ConLw|ExterCond_Gd', 'BldgType_Duplex|SaleType_ConLI', 'PavedDrive_N|PavedDrive_Y', 'GarageFinish_Tencode|SaleCondition_Normal', 'Functional_Maj1|OverallCond', 'GarageCond_TA|GarageQual_TA', 'LotShape_Reg|Alley_Tencode', 'Condition1_PosA|MSZoning_C (all)', 'LandSlope_Sev|SaleType_New', 'ExterCond_TA|RoofMatl_CompShg', 'Electrical_Tencode|2ndFlrSF', 'BsmtFinType2_Rec|Neighborhood_StoneBr', 'MSZoning_RH|HouseStyle_2Story', 'Exterior2nd_VinylSd|Neighborhood_NAmes', 'LotArea|ExterCond_Tencode', 'GarageFinish_Unf|HouseStyle_SFoyer', 'BsmtFinType2_ALQ|Neighborhood_Gilbert', 'GarageQual_Tencode|BsmtExposure_Gd', 'BsmtCond_Po|Exterior1st_VinylSd', 'BsmtFinType2_LwQ|Neighborhood_StoneBr', 'Condition1_Norm|RoofMatl_WdShngl', 'LandSlope_Tencode|Exterior2nd_MetalSd', 'GarageType_CarPort|Exterior1st_WdShing', 'FireplaceQu_Gd|Electrical_FuseA', 'Neighborhood_Mitchel|BsmtHalfBath', 'Neighborhood_Crawfor|GarageYrBlt', 'Fence_GdPrv|Exterior2nd_AsphShn', 'GarageCond_Ex|Exterior1st_BrkComm', 'LotArea|FireplaceQu_Fa', 'BsmtFinType1_BLQ|MasVnrType_None', 'HouseStyle_SFoyer|3SsnPorch', 'GarageQual_Fa|Condition1_RRAn', 'Functional_Min1|Functional_Mod', 'BedroomAbvGr|HalfBath', 'Alley_Pave|1stFlrSF', 'LotShape_IR2|Neighborhood_NWAmes', 'KitchenQual_Ex|CentralAir_Y', 'BsmtFinType2_BLQ|BsmtExposure_No', 'Exterior1st_BrkFace|HalfBath', 'KitchenQual_Ex|FireplaceQu_Ex', 'Exterior1st_BrkFace|HouseStyle_1.5Fin', 'Fence_Tencode|MSZoning_RM', 'BsmtFinType1_LwQ|MSZoning_FV', 'HouseStyle_Tencode|LandContour_Bnk', 'FireplaceQu_Gd|GarageType_CarPort', 'BsmtFinType2_ALQ|LandContour_HLS', 'HouseStyle_1Story|BsmtFinType2_BLQ', 'Alley_Tencode|BsmtFinType1_Unf', 'Electrical_Tencode|HalfBath', 'LandContour_Bnk|Exterior1st_Tencode', 'SaleType_ConLI|BsmtFinType2_Rec', 'ExterCond_Gd|Neighborhood_BrkSide', 'Neighborhood_CollgCr|PavedDrive_Tencode', 'Neighborhood_CollgCr|SaleCondition_Abnorml', 'BsmtFinType1_LwQ|PoolArea', 'SaleType_ConLI|LandSlope_Gtl', 'KitchenQual_Fa|BsmtFinType1_LwQ', 'BsmtExposure_Tencode|FullBath', 'FireplaceQu_TA|BsmtFinType1_Unf', 'HouseStyle_2Story|MasVnrType_Tencode', 'Functional_Mod|BsmtCond_Gd', 'LotShape_IR2|BsmtFinType1_Unf', 'BldgType_Twnhs|Neighborhood_Crawfor', 'Neighborhood_Tencode|BsmtQual_Fa', 'Neighborhood_OldTown|RoofStyle_Gable', 'LandSlope_Gtl|MasVnrArea', 'ScreenPorch|BsmtExposure_Gd', 'Utilities_Tencode|SaleCondition_Family', 'GarageFinish_Tencode|Street_Pave', 'HouseStyle_SFoyer|BldgType_Tencode', 'HeatingQC_Fa|MasVnrType_Tencode', 'BsmtFinType2_BLQ|Condition1_PosN', 'LotConfig_FR2|ExterQual_Fa', 'HouseStyle_SFoyer|KitchenQual_Ex', 'ExterQual_TA|GarageCond_Fa', 'Condition1_Artery|Street_Pave', 'GarageType_Tencode|LotConfig_Inside', 'GarageType_Basment|HouseStyle_1.5Fin', 'BsmtFinType2_ALQ|Functional_Mod', 'FireplaceQu_Gd|LotConfig_Inside', 'Neighborhood_Mitchel|BsmtCond_Gd', 'PavedDrive_Y|Exterior2nd_AsphShn', 'Heating_Grav|FireplaceQu_TA', 'LotConfig_FR2|MasVnrType_BrkCmn', 'ExterQual_Gd|Exterior1st_VinylSd', 'Exterior2nd_Stucco|GarageCond_TA', 'Neighborhood_Tencode|BsmtFinType1_LwQ', 'RoofMatl_Tencode|GarageYrBlt', 'OverallQual|Foundation_CBlock', 'HeatingQC_Gd|GarageType_Tencode', 'Neighborhood_Blmngtn|Heating_GasA', 'SaleCondition_Tencode|BldgType_Duplex', 'MasVnrType_None|Exterior2nd_Wd Shng', 'Condition2_Tencode|ExterQual_Ex', 'LandContour_Bnk|ExterCond_Gd', 'RoofStyle_Flat|Fence_GdWo', 'ExterQual_TA|Exterior2nd_HdBoard', 'HeatingQC_Ex|BsmtExposure_Av', 'BsmtFinType2_Tencode|MiscFeature_Gar2', 'KitchenQual_Gd|Condition2_Artery', 'PoolArea|BsmtFinType1_Unf', 'GarageCond_Po|Exterior1st_HdBoard', 'MSZoning_C (all)|PavedDrive_P', 'MSSubClass|Fence_MnWw', 'BsmtFinType1_Tencode|GarageCond_Gd', 'GarageCars|Condition1_PosA', 'Exterior2nd_AsbShng|FireplaceQu_Ex', 'SaleType_ConLD|Exterior2nd_Brk Cmn', 'Neighborhood_BrDale|FireplaceQu_Po', 'Neighborhood_BrDale', 'OverallQual|LandSlope_Sev', 'Neighborhood_OldTown|Electrical_FuseF', 'BsmtFinType2_Tencode|FireplaceQu_Po', 'GarageCond_Tencode|LandContour_Tencode', 'Exterior2nd_Wd Sdng|Neighborhood_IDOTRR', 'Street_Tencode|ExterCond_Tencode', 'RoofStyle_Gable|Foundation_Slab', 'Neighborhood_Blmngtn|ExterCond_TA', 'BldgType_Duplex|Exterior2nd_CmentBd', 'RoofStyle_Flat|RoofMatl_CompShg', 'YrSold|Fence_Tencode', 'Neighborhood_Crawfor|BsmtCond_TA', 'LotShape_Reg|HouseStyle_SFoyer', 'HeatingQC_Gd|BldgType_1Fam', 'Neighborhood_ClearCr|MasVnrType_BrkFace', 'Neighborhood_NPkVill|ExterCond_TA', 'OverallCond|CentralAir_N', 'SaleType_WD|BsmtFinType1_GLQ', 'MSSubClass|Exterior1st_Tencode', 'Neighborhood_NWAmes|Neighborhood_Gilbert', 'Neighborhood_NWAmes|LandSlope_Gtl', 'BsmtFinType1_Tencode|Neighborhood_Tencode', 'YearBuilt|RoofStyle_Shed', 'BsmtFinType2_Tencode|BsmtExposure_Gd', 'GarageArea|ExterQual_Fa', 'LandSlope_Mod|Exterior2nd_VinylSd', 'GarageFinish_Fin|FireplaceQu_Fa', 'FireplaceQu_Po|YearBuilt', 'FireplaceQu_Fa|BsmtFinType1_LwQ', 'BldgType_2fmCon|LotConfig_Tencode', 'HouseStyle_SFoyer|Exterior2nd_Tencode', 'LotFrontage|HeatingQC_Tencode', 'PoolArea|BsmtExposure_Mn', 'BsmtFinType2_Tencode|BldgType_Tencode', 'SaleType_ConLI|Neighborhood_SawyerW', 'LotConfig_FR2|HeatingQC_Ex', 'LotConfig_Tencode|BsmtExposure_No', 'KitchenAbvGr|ExterQual_Gd', 'MoSold|Exterior1st_Plywood', 'BsmtFinType2_BLQ|KitchenQual_Fa', 'LotShape_IR2|MSZoning_Tencode', 'LotFrontage|MSZoning_RM', 'BsmtUnfSF|Fence_MnPrv', 'GarageCond_Gd|MasVnrType_BrkFace', 'Exterior1st_HdBoard|Electrical_Tencode', 'FireplaceQu_Po|BsmtCond_Gd', 'YearRemodAdd|Exterior1st_HdBoard', 'MiscFeature_Gar2|Exterior2nd_HdBoard', 'MiscFeature_Othr|Utilities_AllPub', 'PavedDrive_P|Utilities_AllPub', 'GarageType_Detchd|BsmtFinType2_LwQ', 'BsmtFinType1_ALQ|GarageYrBlt', 'BsmtFinSF1|BsmtQual_Gd', 'GarageCond_TA|LandSlope_Tencode', 'Neighborhood_NoRidge|3SsnPorch', 'PoolQC_Tencode|Fence_MnWw', 'Neighborhood_ClearCr|Exterior2nd_CmentBd', 'GarageType_Tencode|ExterCond_Fa', 'LotShape_Reg|Exterior2nd_BrkFace', 'GarageType_Tencode|Exterior2nd_Wd Sdng', 'Exterior1st_BrkFace|ExterCond_Tencode', 'RoofMatl_Tar&Grv|Condition1_PosA', 'MiscFeature_Othr|RoofStyle_Gambrel', 'SaleCondition_Tencode|YearBuilt', 'BsmtFinType1_BLQ|Exterior2nd_AsphShn', 'YearBuilt|BsmtFinType2_Unf', 'SaleCondition_Abnorml|MasVnrArea', 'FireplaceQu_TA|Street_Pave', 'Neighborhood_Edwards|Neighborhood_StoneBr', 'GarageFinish_Unf|BsmtFinType1_Rec', 'Exterior1st_CemntBd|ExterQual_Ex', 'SaleCondition_Family|HouseStyle_2Story', 'LotShape_Reg|LandSlope_Gtl', 'LandSlope_Sev|HeatingQC_Tencode', 'OpenPorchSF|MSSubClass', 'BsmtExposure_Av|MiscFeature_Gar2', 'SaleCondition_Family|Condition1_PosN', 'GarageType_Detchd|Exterior2nd_Plywood', 'HeatingQC_Tencode|BsmtFinType1_Unf', 'ExterCond_Tencode|GarageType_BuiltIn', 'RoofStyle_Hip|BsmtExposure_Av', 'BldgType_Twnhs|BsmtFinType2_LwQ', 'LandContour_Low|GarageType_Basment', 'ExterCond_TA|BsmtCond_TA', 'CentralAir_Tencode|ScreenPorch', 'LotFrontage|MSZoning_Tencode', 'SaleType_ConLD|Utilities_AllPub', 'RoofStyle_Tencode|SaleType_COD', 'Heating_GasA|BsmtUnfSF', 'LotShape_Tencode|BsmtFinType1_Rec', 'TotalBsmtSF|LotShape_IR1', 'Neighborhood_Somerst|Exterior2nd_Wd Sdng', 'Exterior1st_HdBoard|GarageType_Attchd', 'Neighborhood_Mitchel|BsmtCond_Fa', 'ExterCond_TA|PavedDrive_Y', 'LandContour_Tencode|MSSubClass', 'Neighborhood_Gilbert|BsmtExposure_No', 'BsmtFinSF2|KitchenQual_TA', 'PavedDrive_Tencode|BsmtCond_Fa', 'KitchenQual_Gd|GarageQual_Tencode', 'Electrical_Tencode|MiscVal', 'ExterQual_Ex|MiscFeature_Gar2', 'Exterior2nd_Stucco|Electrical_SBrkr', 'KitchenQual_Fa|PoolArea', 'HouseStyle_Tencode|Condition1_Feedr', 'Heating_GasW|1stFlrSF', 'LandContour_Tencode|GarageQual_Tencode', 'KitchenAbvGr|Exterior1st_CemntBd', 'BsmtFinType2_Rec|Neighborhood_Gilbert', 'SaleType_ConLI|OpenPorchSF', 'LotShape_Reg|GarageType_Attchd', 'MiscVal|LotConfig_FR2', 'GarageQual_Fa|RoofStyle_Gable', 'SaleType_WD|MiscFeature_Shed', 'ExterCond_Tencode|ExterQual_Tencode', 'PoolArea|Fence_MnPrv', 'Neighborhood_NridgHt|LotConfig_CulDSac', 'SaleType_Tencode|GarageQual_Fa', 'BsmtFinType2_Unf|Functional_Min2', 'Functional_Maj2|GarageQual_Tencode', 'Neighborhood_SawyerW|HouseStyle_1.5Fin', 'EnclosedPorch|CentralAir_Y', 'HeatingQC_Fa|Exterior2nd_Plywood', 'ExterQual_TA|GarageQual_Tencode', 'HeatingQC_Gd|BsmtQual_Ex', 'BsmtExposure_Av|FireplaceQu_TA', 'GarageFinish_Unf|SaleCondition_Abnorml', 'Functional_Typ|LandSlope_Gtl', 'KitchenQual_Ex|Condition1_PosN', 'BldgType_Twnhs|KitchenQual_Ex', 'GarageQual_Fa|KitchenQual_Tencode', 'Condition1_Artery|Exterior2nd_AsphShn', 'Neighborhood_Blmngtn', 'BsmtFinType2_LwQ|Foundation_CBlock', 'BsmtFinType2_GLQ|Exterior2nd_AsphShn', 'Fireplaces|BsmtExposure_Gd', 'LotShape_Reg|SaleType_ConLw', 'Neighborhood_Veenker|MSZoning_RH', 'RoofStyle_Hip|Neighborhood_ClearCr', 'Exterior2nd_AsbShng|Condition1_RRAn', 'Fireplaces|GarageType_CarPort', 'HeatingQC_Fa|Exterior2nd_Wd Sdng', 'HeatingQC_TA|LotConfig_Corner', 'Electrical_FuseA|Condition1_Feedr', 'BsmtFinType1_Tencode|BldgType_2fmCon', 'MasVnrType_Stone|Exterior2nd_AsphShn', 'PavedDrive_N|Exterior2nd_BrkFace', 'Condition2_Artery|BsmtCond_TA', 'HeatingQC_Fa|GarageCond_Tencode', 'Foundation_PConc|Neighborhood_Blmngtn', 'KitchenQual_Ex|GarageType_BuiltIn', 'LotShape_Reg|Condition1_Norm', 'BsmtCond_Tencode|SaleCondition_Abnorml', 'Heating_GasA|Exterior2nd_CmentBd', 'GarageFinish_Tencode|BldgType_1Fam', 'SaleCondition_Family|BldgType_Tencode', 'SaleType_Tencode|MoSold', 'LotShape_Tencode|HeatingQC_TA', 'Exterior2nd_Stucco|TotRmsAbvGrd', 'BsmtExposure_Tencode|BsmtFinType2_ALQ', 'Alley_Pave|GarageCond_TA', 'Condition2_Norm|Street_Pave', 'Alley_Tencode|BsmtFinType2_BLQ', 'LandContour_Tencode|RoofMatl_Tar&Grv', 'LandSlope_Sev|MSZoning_C (all)', 'HeatingQC_Gd|FireplaceQu_Fa', 'BldgType_TwnhsE|Exterior2nd_AsphShn', 'BsmtQual_Tencode|GarageCond_Fa', 'BsmtFinSF1|LotConfig_Inside', 'BsmtFinType1_BLQ|BsmtExposure_No', 'LotConfig_Corner|RoofMatl_WdShngl', 'GarageFinish_Unf|Exterior2nd_VinylSd', 'Neighborhood_Blmngtn|BsmtExposure_Mn', 'BsmtHalfBath|BsmtCond_Fa', 'Exterior2nd_Brk Cmn|MasVnrType_Stone', 'Exterior2nd_Tencode|HeatingQC_Ex', 'ScreenPorch|Utilities_AllPub', 'Neighborhood_NoRidge|GarageType_Tencode', 'Street_Tencode|LotConfig_Corner', 'GarageCond_Tencode|Exterior1st_VinylSd', 'MiscVal|GarageType_Basment', 'Neighborhood_Mitchel|Exterior1st_MetalSd', 'PavedDrive_N|BldgType_TwnhsE', 'SaleCondition_Tencode|BsmtFinType2_LwQ', 'Neighborhood_NoRidge|Heating_Tencode', 'ExterCond_TA|Condition2_Artery', 'LotShape_Reg|GarageFinish_Fin', 'GarageCond_TA|SaleType_ConLD', 'Condition1_Artery|MSZoning_RH', 'MSZoning_C (all)|WoodDeckSF', 'HeatingQC_Tencode|BsmtCond_Tencode', 'ExterCond_Gd|FireplaceQu_TA', 'Functional_Typ|Condition1_Feedr', 'GarageCond_Po|Heating_GasA', 'Neighborhood_Edwards|1stFlrSF', 'LotShape_Reg|Neighborhood_Veenker', 'PoolQC_Tencode|Condition1_Feedr', 'LotShape_IR2|LandContour_Low', 'Exterior1st_WdShing|MasVnrArea', 'LotShape_IR1|BsmtQual_Ex', 'Neighborhood_ClearCr|BldgType_1Fam', 'BsmtCond_Gd|Foundation_CBlock', 'BsmtQual_Tencode|GarageType_BuiltIn', 'Neighborhood_BrDale|Neighborhood_CollgCr', 'FireplaceQu_Po|FireplaceQu_Ex', 'Neighborhood_NPkVill|BsmtFinType2_Tencode', 'FireplaceQu_Tencode|SaleType_ConLw', 'BsmtQual_Tencode|KitchenQual_Fa', 'RoofStyle_Shed|Condition1_RRAn', 'RoofMatl_Tar&Grv|MSSubClass', 'Exterior2nd_BrkFace|LandContour_HLS', 'KitchenAbvGr|GarageQual_Fa', 'Electrical_SBrkr|MasVnrType_None', 'PavedDrive_Tencode|Fence_MnWw', 'KitchenQual_Ex|Neighborhood_Crawfor', 'KitchenQual_Ex|GarageType_2Types', 'EnclosedPorch|MasVnrArea', 'BsmtQual_Tencode|WoodDeckSF', 'Neighborhood_NridgHt|Exterior2nd_Wd Shng', 'LandContour_Tencode|Condition1_PosN', 'GarageQual_Tencode|Foundation_Slab', 'Electrical_Tencode|Exterior2nd_VinylSd', 'Exterior1st_AsbShng|Functional_Min2', 'Neighborhood_NridgHt|BsmtQual_Gd', 'FullBath|SaleCondition_Alloca', 'Exterior1st_BrkFace|BldgType_Tencode', 'SaleType_New|RoofMatl_WdShngl', 'YearBuilt|Neighborhood_NWAmes', 'OverallQual|ExterQual_TA', 'BldgType_2fmCon|Fence_MnWw', 'LotArea|Neighborhood_BrkSide', 'FireplaceQu_Gd|BsmtQual_Fa', 'MSZoning_RM|PavedDrive_P', 'ExterCond_TA|Exterior1st_Wd Sdng', 'ExterCond_Gd|BsmtCond_Gd', 'Condition1_Feedr|SaleCondition_Partial', 'LotShape_IR1|Electrical_FuseA', 'GarageFinish_Unf|GarageCond_Gd', 'YearRemodAdd|Foundation_CBlock', 'Condition1_Feedr|SaleCondition_Abnorml', 'Exterior2nd_BrkFace|PoolArea', 'KitchenQual_Gd|Exterior1st_CemntBd', 'Condition1_PosN|Exterior1st_WdShing', 'RoofStyle_Shed|FireplaceQu_Ex', 'ExterCond_Gd|Neighborhood_IDOTRR', 'Exterior2nd_MetalSd|Street_Pave', 'BsmtFullBath|ExterQual_Ex', 'BldgType_2fmCon|LotConfig_CulDSac', 'LotArea|PoolQC_Tencode', 'FireplaceQu_Gd|Neighborhood_NWAmes', 'GarageQual_Fa|GarageCond_Gd', 'SaleCondition_Normal|Foundation_Slab', 'Neighborhood_OldTown|BsmtFinType2_Unf', 'Exterior2nd_BrkFace|BsmtCond_Tencode', 'ExterCond_TA|GarageCond_Ex', 'FireplaceQu_Gd|MiscFeature_Shed', 'Heating_Grav|Exterior2nd_HdBoard', 'BsmtFinType1_BLQ|BsmtCond_Gd', 'KitchenQual_Ex|MasVnrType_Stone', 'Exterior2nd_Stucco|LandContour_HLS', 'HouseStyle_SFoyer|BedroomAbvGr', 'OverallCond|MSZoning_RH', 'Exterior1st_Stucco|Neighborhood_SWISU', 'Street_Tencode|KitchenQual_Tencode', 'Condition1_RRAn|ExterQual_Fa', 'Alley_Pave|GarageType_Basment', 'GarageType_BuiltIn|OpenPorchSF', 'BsmtExposure_Av|GarageType_Basment', 'RoofStyle_Flat|OpenPorchSF', 'LotShape_IR1|SaleType_Oth', 'GarageType_BuiltIn|ExterQual_Gd', 'BsmtExposure_Tencode|BsmtFinType1_Rec', 'Neighborhood_NoRidge|Heating_GasW', 'Exterior1st_VinylSd|Fence_MnPrv', 'LandSlope_Mod|Neighborhood_OldTown', 'BsmtFinType2_Tencode|Exterior1st_WdShing', 'PavedDrive_Tencode|Condition2_Artery', 'RoofStyle_Hip|Neighborhood_BrkSide', 'LotShape_IR2|Alley_Pave', 'Heating_Tencode|MSZoning_RM', 'Functional_Typ|MasVnrType_Stone', 'Neighborhood_Somerst|LotShape_IR1', 'Functional_Typ|MiscVal', 'MiscFeature_Othr|LotConfig_CulDSac', 'MiscFeature_Shed|MasVnrType_None', 'LotConfig_FR2|Electrical_FuseF', 'Heating_Tencode|Exterior1st_CemntBd', 'GarageQual_Po|Street_Pave', 'BsmtExposure_Tencode|ExterCond_Fa', 'Neighborhood_Veenker|HeatingQC_Ex', 'HeatingQC_TA|Neighborhood_Edwards', 'HeatingQC_TA|PavedDrive_Tencode', 'Neighborhood_OldTown|GarageQual_Po', 'LowQualFinSF|ScreenPorch', 'Fireplaces|1stFlrSF', 'Neighborhood_NridgHt|LotConfig_FR2', 'LandContour_Tencode|BsmtExposure_No', 'Neighborhood_CollgCr|Condition1_Feedr', 'Fence_Tencode|BsmtQual_TA', 'BsmtFinType1_Tencode|Exterior1st_VinylSd', 'Neighborhood_ClearCr|LowQualFinSF', 'LandSlope_Gtl|Condition2_Norm', 'Neighborhood_NPkVill|Fence_MnPrv', 'BsmtUnfSF|Neighborhood_MeadowV', 'Neighborhood_NPkVill|3SsnPorch', 'EnclosedPorch|BsmtExposure_Av', 'Condition2_Tencode|GarageArea', 'OverallCond|MasVnrType_BrkFace', 'PoolQC_Tencode|CentralAir_N', 'Neighborhood_Mitchel|Exterior2nd_Tencode', 'BsmtExposure_Tencode|Condition1_Tencode', 'Condition1_Artery|Functional_Tencode', 'Neighborhood_NPkVill|MiscFeature_Tencode', 'LotConfig_CulDSac|SaleCondition_Partial', 'Heating_Tencode|CentralAir_N', 'SaleCondition_Abnorml|Exterior2nd_Brk Cmn', 'Heating_Grav|HouseStyle_1.5Unf', 'BedroomAbvGr|BsmtFinSF1', 'Exterior2nd_BrkFace|LotConfig_CulDSac', 'HouseStyle_SLvl|MasVnrType_Stone', 'FireplaceQu_Fa|BsmtFinType2_Unf', 'HeatingQC_Tencode|Condition1_Norm', 'Neighborhood_OldTown|MasVnrArea', 'BldgType_2fmCon|RoofStyle_Gable', 'GarageType_Attchd|Condition2_Artery', 'RoofStyle_Tencode', 'RoofMatl_CompShg|BldgType_1Fam', 'BsmtFinType2_GLQ|GarageYrBlt', 'ExterQual_Gd|BsmtExposure_No', 'GarageQual_TA|Exterior1st_Tencode', 'Neighborhood_IDOTRR|RoofMatl_WdShngl', 'Exterior2nd_Wd Sdng|ScreenPorch', 'BsmtExposure_Av|Functional_Min1', 'RoofStyle_Flat|GarageType_BuiltIn', 'SaleCondition_Alloca|BsmtExposure_Mn', 'GrLivArea|MasVnrType_None', '1stFlrSF|OverallCond', 'Neighborhood_Crawfor|Foundation_Slab', 'YearRemodAdd|KitchenQual_Ex', 'Condition1_Tencode|Utilities_AllPub', 'Exterior2nd_Tencode|SaleType_ConLI', 'Neighborhood_Tencode|Exterior2nd_Brk Cmn', 'Exterior1st_HdBoard|2ndFlrSF', 'Neighborhood_BrDale|Exterior2nd_AsphShn', 'RoofStyle_Gable|SaleCondition_Normal', 'BsmtExposure_Av|GarageFinish_RFn', 'RoofMatl_Tencode|KitchenQual_Tencode', 'LandSlope_Mod|GarageType_Tencode', 'Neighborhood_IDOTRR|Neighborhood_Timber', 'FireplaceQu_Tencode|MSZoning_RL', 'HeatingQC_Gd|BsmtFinType1_Unf', 'LotShape_IR2|Neighborhood_Tencode', 'GarageCond_Tencode|Neighborhood_NWAmes', 'GarageCond_TA|Neighborhood_Gilbert', 'Neighborhood_Crawfor|PoolArea', 'BsmtFinType1_Tencode|Condition1_RRAe', '3SsnPorch|PoolArea', 'LandSlope_Sev|Condition1_RRAe', 'Neighborhood_SWISU|SaleCondition_Alloca', 'FireplaceQu_Po|KitchenQual_Ex', 'LandContour_Tencode|Functional_Mod', 'MSZoning_Tencode|MSZoning_RH', 'GarageFinish_Unf|Condition1_PosN', 'RoofMatl_CompShg|RoofMatl_Tar&Grv', 'BldgType_2fmCon|BsmtFinType2_Rec', 'Neighborhood_BrDale|LandSlope_Mod', 'Neighborhood_Veenker|Exterior2nd_HdBoard', 'SaleType_WD|Neighborhood_Timber', 'BldgType_Duplex|BsmtFinType2_Tencode', 'HeatingQC_TA|GarageCond_Ex', 'GrLivArea|GarageType_Tencode', 'LandSlope_Mod|LandSlope_Gtl', 'KitchenQual_Ex|HalfBath', 'Heating_Grav|HouseStyle_1.5Fin', 'Street_Tencode|Functional_Min2', 'RoofMatl_Tar&Grv|Condition2_Artery', 'Condition1_Artery|BsmtFinType2_Rec', 'MiscFeature_Othr|Condition1_PosA', 'LotShape_Reg|LandSlope_Sev', 'BsmtFinType2_LwQ|Exterior2nd_AsphShn', 'BldgType_2fmCon|Exterior1st_WdShing', 'ExterCond_Tencode|Exterior1st_WdShing', 'Utilities_Tencode|GarageCars', 'HeatingQC_Ex|HouseStyle_2.5Unf', 'GarageQual_Fa|BsmtUnfSF', 'GarageType_Basment|Condition1_RRAn', 'Exterior1st_AsbShng|GarageQual_TA', 'MSSubClass|Exterior1st_Plywood', 'HouseStyle_1Story|Condition1_PosN', 'GarageType_Tencode|2ndFlrSF', 'LotConfig_CulDSac|Condition2_Artery', 'BsmtCond_Po|Neighborhood_Timber', 'BsmtExposure_Tencode|MSZoning_RM', 'EnclosedPorch|ExterQual_Tencode', 'FireplaceQu_Fa|GarageQual_Po', 'BsmtQual_Tencode|GarageQual_Tencode', 'SaleCondition_Family|Exterior1st_WdShing', 'SaleCondition_Normal|Condition1_Norm', 'GarageQual_Gd|BldgType_Tencode', 'Exterior2nd_Stone|MSSubClass', 'LotConfig_Corner|BsmtFinType2_LwQ', 'LandContour_Low|CentralAir_Y', 'HouseStyle_SFoyer|GarageQual_TA', 'Condition1_PosA|GarageCond_Gd', 'GarageType_Detchd|Exterior1st_HdBoard', 'Electrical_FuseP|MiscFeature_Othr', 'LotShape_Tencode|BsmtCond_Tencode', 'Neighborhood_CollgCr|HouseStyle_2Story', 'BedroomAbvGr|Condition1_RRAe', 'LotShape_Reg|MasVnrType_None', 'BsmtFinType2_Rec|Neighborhood_NAmes', 'SaleCondition_Normal|SaleCondition_Partial', 'Exterior2nd_CmentBd|Condition1_Feedr', 'ExterQual_Ex|Exterior1st_BrkComm', 'PavedDrive_N|GarageCond_TA', 'PavedDrive_Y|MSZoning_FV', 'Electrical_Tencode|Neighborhood_Edwards', 'Fence_Tencode|MiscFeature_Tencode', 'Condition1_Artery|Exterior1st_AsbShng', 'LandSlope_Mod|LotArea', 'BsmtFinType1_BLQ|Heating_Tencode', 'Street_Tencode|Neighborhood_Edwards', 'Neighborhood_OldTown|CentralAir_Tencode', 'MasVnrType_BrkCmn|SaleType_COD', 'BsmtFinType2_Tencode|Neighborhood_ClearCr', 'GarageArea|Utilities_AllPub', '1stFlrSF|Functional_Min2', 'RoofMatl_CompShg|RoofStyle_Shed', 'SaleType_ConLw|BsmtFinType2_ALQ', 'RoofStyle_Hip|HouseStyle_2Story', 'MiscFeature_Othr|Street_Pave', 'HeatingQC_Fa|GarageCond_Fa', 'MSZoning_RM|MSZoning_Tencode', 'Alley_Tencode|Functional_Min1', 'HouseStyle_1.5Unf|Foundation_CBlock', 'SaleCondition_Normal|HouseStyle_1.5Fin', 'Utilities_Tencode|KitchenQual_Gd', 'LotFrontage|LotShape_IR1', 'RoofStyle_Flat|PavedDrive_P', 'Neighborhood_Sawyer|OverallCond', 'KitchenAbvGr|Neighborhood_ClearCr', 'Neighborhood_ClearCr|Condition2_Norm', 'LandSlope_Tencode|BsmtQual_TA', 'SaleType_ConLD|BsmtFinType2_LwQ', 'GarageFinish_RFn|BsmtFinType1_Unf', 'LandSlope_Mod|Alley_Grvl', 'Functional_Typ|BsmtFinSF1', 'Neighborhood_Somerst|MasVnrType_Stone', 'HeatingQC_Fa|Functional_Min1', 'FireplaceQu_Gd|Exterior1st_AsbShng', 'GarageCond_Gd|BsmtFinType2_Rec', 'MSZoning_FV|ExterQual_Fa', 'LotShape_Reg|Foundation_BrkTil', 'RoofMatl_Tar&Grv|ExterQual_Fa', 'GarageType_Detchd|SaleType_New', 'BsmtFinType2_Tencode|BsmtFinType2_Unf', 'Neighborhood_BrDale|BsmtFinType1_GLQ', 'FireplaceQu_Gd|PavedDrive_P', 'SaleType_ConLD|RoofStyle_Tencode', 'PavedDrive_Tencode|PoolArea', 'PavedDrive_Tencode|MSSubClass', 'BsmtQual_Ex|MiscFeature_Gar2', 'Exterior2nd_AsbShng|LotArea', 'SaleType_ConLw|BsmtFinType2_Unf', 'Exterior2nd_AsbShng|LotShape_IR2', 'LotConfig_Corner|Exterior1st_Tencode', 'EnclosedPorch|PoolArea', 'Neighborhood_NridgHt|Condition2_Norm', 'MiscFeature_Othr|GarageQual_Po', 'LotShape_Reg|Street_Grvl', 'Foundation_Stone|BsmtFinSF2', 'LandContour_Low|Neighborhood_CollgCr', 'Neighborhood_OldTown|Functional_Min2', 'Electrical_FuseF|Exterior1st_Wd Sdng', 'Heating_GasA|GarageFinish_RFn', 'SaleType_WD|MSZoning_Tencode', 'LotShape_Tencode|Fence_MnPrv', 'FireplaceQu_Gd|LandSlope_Sev', 'Electrical_Tencode', 'BsmtFinType2_Rec|LotConfig_Inside', 'OpenPorchSF|OverallCond', 'HalfBath|Fence_MnWw', 'SaleType_WD|Neighborhood_BrkSide', 'Neighborhood_OldTown|FireplaceQu_Ex', 'Foundation_Tencode|Functional_Maj2', 'BsmtFinType1_ALQ|Exterior2nd_Wd Shng', 'Exterior2nd_VinylSd|GarageFinish_Tencode', 'KitchenQual_Gd|Exterior1st_AsbShng', 'PavedDrive_N|Neighborhood_CollgCr', 'LandContour_Lvl|FireplaceQu_Fa', 'BsmtFullBath|LotConfig_Tencode', 'GarageQual_Tencode|Utilities_AllPub', 'MSZoning_RM|Street_Grvl', 'Neighborhood_SWISU|SaleCondition_Abnorml', 'Exterior2nd_BrkFace|Exterior1st_Plywood', 'Electrical_FuseP|BldgType_Tencode', 'RoofMatl_Tencode|Heating_GasA', 'LandSlope_Mod|FireplaceQu_Ex', 'FireplaceQu_Po|Fence_Tencode', 'Neighborhood_Somerst|BsmtFinType2_Rec', 'LotConfig_Corner|Condition1_Feedr', 'OverallCond|BsmtExposure_Gd', 'Foundation_Stone|Exterior2nd_Wd Shng', 'Functional_Typ|BsmtFinType1_ALQ', 'MasVnrArea|Exterior2nd_HdBoard', 'GarageType_BuiltIn|Exterior1st_WdShing', 'Functional_Maj2|Exterior1st_Wd Sdng', 'KitchenAbvGr|BsmtCond_Tencode', 'LandContour_Lvl|Neighborhood_IDOTRR', 'TotalBsmtSF|Exterior2nd_AsphShn', 'LotFrontage|MasVnrArea', 'TotalBsmtSF|Street_Grvl', 'GarageQual_Tencode|Neighborhood_IDOTRR', 'Alley_Pave|PavedDrive_Tencode', 'BsmtExposure_No|MasVnrType_Stone', 'GarageCars|SaleType_ConLw', 'FullBath|Heating_GasW', 'LotShape_Reg|Exterior1st_WdShing', 'BsmtExposure_Gd|SaleType_CWD', 'Neighborhood_StoneBr|Exterior2nd_Wd Shng', 'BsmtFinSF2|Heating_GasW', 'Functional_Typ|ExterQual_Fa', 'YrSold|Exterior1st_BrkComm', 'PoolQC_Tencode|Condition1_Tencode', 'Heating_Grav|MSZoning_Tencode', 'FireplaceQu_Tencode|FullBath', 'LotArea|Fence_GdWo', 'LotFrontage|RoofStyle_Shed', 'RoofMatl_Tar&Grv|OpenPorchSF', 'HalfBath|ExterQual_Tencode', 'HeatingQC_Gd|SaleType_Oth', 'BsmtFinType1_BLQ|RoofMatl_Tar&Grv', 'MSZoning_RL|Exterior1st_Wd Sdng', 'MasVnrType_BrkCmn|LotConfig_Inside', 'ExterQual_TA|KitchenQual_TA', 'Exterior1st_Stucco|HalfBath', 'Exterior2nd_Tencode|Street_Grvl', 'BsmtCond_Gd|Utilities_AllPub', 'Exterior1st_CemntBd|RoofStyle_Gable', 'Neighborhood_NPkVill|Exterior1st_CemntBd', 'Electrical_FuseA|MSZoning_RM', 'GarageType_Detchd|Exterior1st_VinylSd', 'CentralAir_N|Neighborhood_IDOTRR', 'LandSlope_Mod|KitchenQual_Fa', 'TotalBsmtSF|GarageCond_Tencode', 'BsmtFinType2_Rec|KitchenQual_Fa', 'FireplaceQu_Gd|Exterior2nd_Plywood', 'MiscVal|Exterior1st_Plywood', 'Electrical_FuseP|HouseStyle_Tencode', 'Functional_Min1|Condition2_Norm', 'HouseStyle_SLvl|WoodDeckSF', 'TotalBsmtSF|Street_Pave', 'Street_Tencode|Neighborhood_Veenker', 'Utilities_Tencode|GarageType_Tencode', 'LandSlope_Mod|BsmtFinType1_Unf', 'Exterior1st_CemntBd|SaleCondition_Normal', 'LotShape_Tencode|BsmtFinType1_ALQ', 'Street_Grvl|BsmtExposure_Gd', 'Electrical_Tencode|SaleCondition_Normal', 'RoofStyle_Flat|BsmtFinType1_Unf', 'Electrical_SBrkr|BsmtQual_Gd', 'HeatingQC_Tencode|HouseStyle_2Story', 'FireplaceQu_Po|MSZoning_Tencode', 'GarageFinish_Fin|GarageCond_Tencode', 'FireplaceQu_Fa|Condition1_Feedr', 'LotArea|MasVnrType_None', 'YrSold|HouseStyle_SLvl', 'RoofMatl_Tencode|MSZoning_RM', 'OverallQual|BldgType_Duplex', 'KitchenQual_Tencode|Neighborhood_StoneBr', 'LotShape_Reg|Heating_GasW', 'GarageType_Detchd|Exterior2nd_VinylSd', 'Fence_GdWo|OverallCond', 'PoolArea|Neighborhood_IDOTRR', 'ExterQual_TA|Neighborhood_NWAmes', 'Foundation_Tencode|BsmtCond_Tencode', 'Exterior2nd_Stucco|SaleType_CWD', 'LandContour_Lvl|MSZoning_FV', 'Foundation_Tencode|Exterior1st_Tencode', 'Heating_GasA|FireplaceQu_Po', 'Exterior2nd_Stone|HeatingQC_Fa', 'Exterior1st_VinylSd|GarageFinish_RFn', 'BsmtQual_Tencode|LotConfig_Inside', 'GarageArea|Exterior2nd_Wd Sdng', 'GarageCars|CentralAir_Y', 'GarageCond_Tencode|Exterior2nd_VinylSd', 'PavedDrive_Y|Condition1_RRAe', 'KitchenQual_Gd|MasVnrType_None', 'Neighborhood_SWISU|Exterior1st_Tencode', 'GarageCond_Gd|MasVnrType_BrkCmn', 'LotShape_Tencode|LotShape_IR2', 'ExterQual_Ex|Foundation_CBlock', 'KitchenQual_Tencode|CentralAir_N', 'Condition1_PosN|BsmtFinType1_Unf', 'Fireplaces|SaleType_ConLI', 'ExterQual_TA|PavedDrive_Tencode', 'Condition1_Feedr|WoodDeckSF', 'GarageType_Attchd|GarageYrBlt', 'BsmtFinType1_Tencode|MSZoning_RH', 'Functional_Mod|Exterior2nd_HdBoard', 'GarageQual_Gd|WoodDeckSF', 'RoofMatl_CompShg|MasVnrType_BrkCmn', 'GarageQual_Po|CentralAir_Y', 'RoofMatl_Tencode|Alley_Tencode', 'Electrical_FuseA|BsmtCond_TA', 'SaleCondition_Tencode|ExterQual_Ex', 'GarageType_Basment|Exterior1st_Wd Sdng', 'LotShape_Tencode|SaleType_WD', 'GarageCond_Tencode|Condition1_Norm', 'Neighborhood_OldTown|SaleType_New', 'LandContour_Bnk', 'BedroomAbvGr|Neighborhood_MeadowV', 'GarageCars|Neighborhood_IDOTRR', 'BldgType_Duplex|MasVnrType_None', 'Functional_Tencode|Fence_GdWo', 'Condition1_Norm|SaleType_Oth', 'HouseStyle_Tencode|Functional_Min1', 'BsmtFinType2_BLQ|BsmtFinType2_LwQ', 'LotShape_IR1|BsmtFinType2_LwQ', 'HeatingQC_TA|Fence_GdWo', 'SaleType_ConLI|Foundation_Tencode', 'Neighborhood_Blmngtn|BedroomAbvGr', 'Exterior1st_AsbShng|Condition1_PosN', 'HouseStyle_SFoyer|HeatingQC_Gd', 'KitchenQual_Ex|BsmtQual_Gd', 'PoolArea|KitchenQual_TA', 'ExterQual_Gd|PoolArea', 'Alley_Pave|Electrical_FuseF', 'Neighborhood_Blmngtn|MasVnrType_BrkFace', 'BsmtFinType2_GLQ|BsmtExposure_No', 'Neighborhood_Mitchel|BsmtFinType2_BLQ', 'BsmtQual_Gd|Exterior2nd_Wd Shng', 'Condition1_Artery|Neighborhood_NAmes', 'MiscFeature_Gar2|Exterior2nd_Wd Shng', 'MiscFeature_Shed|Neighborhood_SawyerW', 'ExterCond_TA|MSZoning_FV', 'GarageCond_Gd|BsmtCond_TA', 'Condition1_RRAe|ExterQual_Fa', 'LowQualFinSF|LandSlope_Gtl', 'KitchenQual_TA|BsmtExposure_No', 'OverallQual|MSSubClass', 'ExterQual_Ex|BldgType_1Fam', 'GarageCond_Tencode|BsmtFinType2_Unf', 'BsmtQual_Fa|Exterior1st_WdShing', 'GarageCond_TA|LotConfig_Inside', 'Exterior1st_CemntBd|1stFlrSF', 'Fence_GdPrv|Condition2_Norm', 'BsmtQual_Fa|GarageArea', 'SaleType_Tencode|Functional_Mod', 'Neighborhood_NridgHt|GarageType_BuiltIn', 'BldgType_Twnhs|MSSubClass', 'Neighborhood_Somerst|BsmtQual_Fa', 'LotShape_IR2|ExterCond_Gd', 'HouseStyle_1.5Unf|SaleCondition_Alloca', 'Exterior1st_Tencode|Neighborhood_Timber', 'Neighborhood_Veenker|Exterior2nd_AsphShn', 'BsmtCond_Po|Exterior1st_Plywood', 'RoofStyle_Tencode|Exterior2nd_Wd Sdng', 'ExterCond_Tencode|BsmtCond_TA', 'SaleType_ConLD|FireplaceQu_Fa', 'MSZoning_C (all)|MasVnrType_BrkCmn', 'HouseStyle_1Story|Neighborhood_NWAmes', 'GrLivArea|Neighborhood_StoneBr', 'SaleType_New|1stFlrSF', 'Exterior1st_CemntBd|GarageType_CarPort', 'BsmtFinSF2|ExterCond_Gd', 'HouseStyle_1Story|Exterior2nd_Plywood', 'Heating_Tencode|Fence_GdWo', 'Functional_Tencode|BsmtFinSF1', 'Exterior1st_BrkFace|Exterior2nd_CmentBd', 'LotConfig_CulDSac|MasVnrType_BrkCmn', 'KitchenQual_Gd|MiscFeature_Gar2', 'Electrical_FuseA|2ndFlrSF', 'Condition1_RRAn|Exterior2nd_Wd Shng', 'HouseStyle_1Story|Neighborhood_MeadowV', 'RoofMatl_CompShg|BsmtFinType1_Unf', 'Exterior2nd_MetalSd|BldgType_Tencode', 'Exterior1st_HdBoard|GarageCond_TA', 'KitchenQual_Gd|Electrical_Tencode', 'YearRemodAdd|HouseStyle_2.5Unf', 'BsmtQual_Tencode|HalfBath', 'Exterior1st_HdBoard|Condition1_RRAn', 'Condition1_PosA|Foundation_CBlock', 'LotConfig_FR2|CentralAir_Y', 'Exterior1st_BrkFace|RoofStyle_Flat', 'GarageCond_Tencode|MoSold', 'Exterior1st_HdBoard|LotConfig_Corner', 'BsmtQual_TA|Exterior1st_Tencode', 'GarageQual_Fa|GarageType_Basment', 'SaleType_Tencode|GarageYrBlt', 'YearBuilt|PavedDrive_Tencode', 'Exterior2nd_Wd Shng|GarageType_2Types', 'Functional_Min1|GarageCond_Ex', 'GarageType_BuiltIn|MiscFeature_Tencode', 'YearBuilt|GarageType_Basment', 'ExterCond_Gd|Exterior2nd_HdBoard', 'LotShape_IR1|SaleCondition_Family', '2ndFlrSF|ExterQual_Gd', 'SaleType_ConLI|Fence_MnPrv', 'TotalBsmtSF|MasVnrType_BrkFace', 'LotFrontage|Electrical_FuseA', 'Functional_Min1|CentralAir_Y', 'ExterQual_Ex|BldgType_TwnhsE', 'Foundation_BrkTil|Neighborhood_MeadowV', 'HouseStyle_SFoyer|SaleType_CWD', 'BedroomAbvGr|Neighborhood_NWAmes', 'BldgType_Duplex|LandSlope_Tencode', 'LotFrontage|CentralAir_Y', 'Electrical_Tencode|MasVnrType_None', 'PoolQC_Tencode|BldgType_TwnhsE', 'BsmtFinType1_Unf|Condition2_Norm', 'Condition1_PosN|PavedDrive_P', 'Functional_Maj1|Neighborhood_Timber', 'Neighborhood_NPkVill|BsmtCond_TA', 'HalfBath|BsmtFullBath', 'RoofMatl_Tar&Grv|SaleCondition_Abnorml', 'SaleCondition_Alloca|Functional_Min2', '3SsnPorch|Condition1_Norm', 'Condition2_Norm|Exterior2nd_Plywood', 'Exterior1st_AsbShng|Fence_MnPrv', 'HeatingQC_Gd|Neighborhood_Gilbert', 'BldgType_Twnhs|GarageType_CarPort', 'Electrical_Tencode|Exterior1st_Wd Sdng', 'BldgType_1Fam|BsmtFinType1_Unf', 'BldgType_2fmCon|GarageYrBlt', 'GarageQual_Po|BsmtFinType2_Unf', 'Neighborhood_OldTown|Foundation_Slab', 'Condition1_Norm|Exterior1st_WdShing', 'Functional_Typ|OverallCond', 'SaleCondition_Family|BsmtUnfSF', 'RoofStyle_Gambrel|ExterQual_Gd', 'RoofMatl_WdShngl|MasVnrArea', 'GarageFinish_Unf|Fence_GdPrv', 'SaleType_ConLI|RoofStyle_Tencode', 'Heating_Tencode|MSZoning_FV', 'Street_Grvl|Exterior1st_Wd Sdng', 'Neighborhood_NPkVill|Functional_Maj1', 'Exterior2nd_AsbShng|BsmtFinType1_LwQ', 'Neighborhood_Tencode|Electrical_FuseF', 'BldgType_1Fam|BsmtExposure_Gd', 'SaleType_New|Exterior2nd_Brk Cmn', 'Alley_Pave|Neighborhood_NWAmes', 'Neighborhood_SawyerW|MasVnrType_Stone', 'Exterior1st_AsbShng|MiscVal', 'GarageFinish_Unf|BsmtExposure_Gd', 'RoofMatl_Tencode|Neighborhood_ClearCr', 'Neighborhood_BrDale|HeatingQC_Ex', 'BsmtFinType1_Rec|Condition1_Feedr', 'PavedDrive_Y|MiscFeature_Tencode', 'SaleType_ConLD|BsmtFinType1_ALQ', 'LandSlope_Tencode|Exterior1st_VinylSd', 'BsmtExposure_No|MSZoning_RL', 'BsmtHalfBath|WoodDeckSF', 'Electrical_Tencode|SaleType_ConLw', 'KitchenQual_Tencode|Exterior1st_Plywood', 'ExterCond_TA|Neighborhood_Veenker', 'Neighborhood_OldTown|2ndFlrSF', 'FireplaceQu_Fa|MSZoning_C (all)', 'FireplaceQu_Ex|BsmtExposure_Mn', 'MoSold|Street_Pave', 'Neighborhood_Crawfor|ScreenPorch', 'SaleType_COD|MSZoning_FV', 'Condition2_Artery|Condition2_Norm', 'Alley_Pave|MSZoning_RH', 'LandContour_Tencode|PoolArea', 'SaleCondition_Partial|BldgType_1Fam', 'LotFrontage|GarageCond_Fa', 'GarageQual_Fa|Condition1_PosA', 'Neighborhood_Veenker|KitchenQual_Fa', 'GarageCars|GarageType_CarPort', 'GrLivArea|BldgType_TwnhsE', 'BsmtFullBath|BsmtExposure_Mn', 'Condition1_Artery|LandContour_HLS', 'LotShape_Tencode|BldgType_Twnhs', 'Neighborhood_BrDale|Exterior2nd_HdBoard', 'RoofMatl_Tencode|KitchenQual_Ex', 'Street_Tencode|BsmtFinType2_Rec', 'Neighborhood_NridgHt|ExterCond_Tencode', 'EnclosedPorch|LotConfig_CulDSac', 'Street_Grvl|Exterior1st_Plywood', '3SsnPorch|Foundation_Slab', 'GarageCond_Tencode|MSZoning_FV', 'Electrical_Tencode|LotConfig_Inside', 'HeatingQC_Tencode|GarageFinish_Tencode', 'MasVnrType_None|HouseStyle_1.5Fin', 'LandContour_Low|Functional_Mod', 'HeatingQC_Tencode|ExterQual_Gd', 'Heating_GasA|GarageCars', 'Exterior2nd_BrkFace|HouseStyle_Tencode', '3SsnPorch|Utilities_AllPub', 'YearBuilt|Neighborhood_Crawfor', 'LotShape_IR1|Neighborhood_Crawfor', 'Heating_Grav|BsmtQual_TA', 'Street_Tencode|Neighborhood_Blmngtn', 'Exterior1st_HdBoard|LandSlope_Mod', 'GarageQual_TA|1stFlrSF', 'GrLivArea|MiscFeature_Tencode', 'LowQualFinSF|MSZoning_RH', 'BsmtHalfBath|Exterior1st_Stucco', 'BsmtUnfSF|GarageYrBlt', 'GarageCars|Street_Pave', 'ExterQual_TA|Foundation_CBlock', 'RoofMatl_Tencode|SaleType_ConLD', 'LotConfig_FR2|2ndFlrSF', 'PavedDrive_N|Functional_Typ', 'LandSlope_Sev|RoofStyle_Gambrel', 'ExterCond_Gd|Exterior2nd_Plywood', 'RoofMatl_Tar&Grv|GarageQual_Fa', 'Neighborhood_Edwards|Electrical_SBrkr', 'Neighborhood_Tencode|GarageQual_Tencode', 'HouseStyle_Tencode', 'GarageType_Tencode|Functional_Maj1', 'BsmtFinType1_ALQ|BsmtCond_Gd', 'SaleType_ConLw|HouseStyle_2Story', 'Functional_Typ|Exterior2nd_Brk Cmn', 'BsmtQual_Fa|BsmtCond_Po', 'Fence_MnWw|Neighborhood_MeadowV', 'Condition1_PosA|LotConfig_Tencode', 'RoofStyle_Flat|Exterior1st_Plywood', 'Neighborhood_NAmes|BsmtQual_Gd', 'LandContour_Lvl|Condition1_Feedr', 'Neighborhood_Gilbert|MSZoning_FV', 'KitchenQual_Tencode|ExterQual_Tencode', 'RoofStyle_Shed|MSZoning_RH', 'BsmtFinSF2|Condition2_Norm', 'YearRemodAdd|ExterQual_Tencode', 'KitchenQual_Ex|BsmtCond_Fa', 'Functional_Min1|MSZoning_RL', 'SaleType_ConLw|BsmtCond_Po', 'Neighborhood_OldTown|BldgType_1Fam', 'Functional_Typ|MasVnrType_BrkCmn', 'FireplaceQu_TA|BsmtFinType1_GLQ', 'BsmtFinType2_BLQ|MSZoning_Tencode', 'LotConfig_Tencode|BsmtFinType2_Unf', 'BsmtCond_Tencode|ExterCond_Fa', 'PavedDrive_N|GarageQual_Tencode', 'GarageCond_Fa|BldgType_1Fam', 'RoofStyle_Hip|PavedDrive_Y', 'SaleType_WD|PoolArea', 'Foundation_Stone|Exterior2nd_BrkFace', 'FireplaceQu_Ex|MSZoning_RL', 'Neighborhood_NPkVill|PavedDrive_Y', 'YearBuilt|LandContour_HLS', 'Neighborhood_BrDale|SaleType_ConLI', 'YearRemodAdd|Exterior1st_WdShing', 'PavedDrive_Y|Condition2_Norm', 'BldgType_Duplex|LandContour_Tencode', 'BsmtFinType1_Rec|ExterCond_Fa', 'Exterior2nd_AsbShng|FireplaceQu_TA', 'Neighborhood_NridgHt|Foundation_PConc', 'GarageCars|1stFlrSF', '3SsnPorch|Condition2_Tencode', 'Electrical_SBrkr|LowQualFinSF', 'BsmtQual_Fa|GarageType_2Types', 'BldgType_2fmCon|Neighborhood_CollgCr', 'Neighborhood_BrkSide|HouseStyle_2Story', 'GarageCars|ExterQual_Fa', 'LotConfig_Corner|Heating_Tencode', 'Exterior1st_BrkFace|Condition1_RRAn', 'Exterior1st_BrkFace|FireplaceQu_Gd', 'Neighborhood_Tencode|Neighborhood_IDOTRR', 'Heating_GasW|SaleType_WD', 'Heating_Grav|Neighborhood_Sawyer', 'LotConfig_Corner|SaleType_Tencode', 'BsmtFinType2_Tencode|FireplaceQu_Ex', 'Alley_Tencode|BsmtExposure_No', 'BldgType_Twnhs|RoofStyle_Gambrel', 'YrSold|Foundation_PConc', 'LotShape_IR2|Electrical_FuseA', 'BldgType_Duplex|Neighborhood_NWAmes', 'Neighborhood_NoRidge|RoofStyle_Tencode', 'HeatingQC_TA|GarageQual_Po', 'BedroomAbvGr|OverallCond', 'LotConfig_Corner|FireplaceQu_Fa', 'BedroomAbvGr|BsmtExposure_No', 'TotRmsAbvGrd|Neighborhood_IDOTRR', 'HeatingQC_Tencode|RoofStyle_Tencode', 'WoodDeckSF|Neighborhood_MeadowV', 'Neighborhood_Mitchel|MSZoning_RM', 'OpenPorchSF|Neighborhood_SawyerW', 'Foundation_PConc|SaleType_Tencode', 'Electrical_FuseP|Functional_Min2', 'KitchenQual_Fa|Neighborhood_Gilbert', 'HeatingQC_Gd|BsmtFinType1_LwQ', 'MiscFeature_Othr|SaleType_New', 'MiscVal|GarageCond_Gd', 'Neighborhood_NPkVill|Condition1_Tencode', 'GarageCond_Po|BldgType_Tencode', 'Neighborhood_IDOTRR|MasVnrType_Stone', 'Functional_Tencode|BsmtExposure_Gd', 'BsmtFinType2_Tencode|Functional_Tencode', 'RoofStyle_Hip|BedroomAbvGr', 'BsmtExposure_Tencode|MSZoning_Tencode', 'Neighborhood_NPkVill|KitchenQual_Tencode', 'ExterCond_TA|SaleType_ConLw', 'HeatingQC_Fa|BsmtFinSF1', 'PavedDrive_N|MSZoning_FV', 'KitchenQual_Ex|MiscFeature_Gar2', 'Heating_Tencode|Street_Pave', 'FireplaceQu_Ex|Exterior1st_WdShing', 'BsmtFinType1_LwQ|GarageQual_Tencode', 'SaleType_New|Street_Pave', 'YrSold|Exterior1st_BrkFace', 'LotConfig_CulDSac|ExterCond_Tencode', 'BsmtCond_Tencode|Condition1_Tencode', 'GarageType_BuiltIn|Exterior1st_Plywood', 'TotRmsAbvGrd|PavedDrive_P', 'Exterior1st_BrkFace|MSSubClass', 'GarageQual_Po|ExterQual_Gd', 'GarageType_CarPort|Neighborhood_Timber', 'Functional_Typ|BsmtFinType2_Unf', 'LotShape_IR1|RoofStyle_Shed', 'HeatingQC_Ex|BsmtQual_Gd', 'LotConfig_CulDSac|Condition1_Norm', 'MasVnrType_None|Utilities_AllPub', 'BsmtQual_TA|GarageType_BuiltIn', 'RoofMatl_CompShg|BsmtFinType1_Rec', 'RoofMatl_CompShg|ExterQual_Ex', 'GarageFinish_Unf|Heating_Tencode', 'YrSold|Functional_Maj1', 'Alley_Tencode|Neighborhood_Sawyer', 'GarageQual_Gd|FullBath', 'LandContour_Low|BsmtExposure_Av', 'BldgType_Twnhs|GarageYrBlt', 'Condition1_PosA|SaleType_New', 'Heating_GasA|MiscFeature_Othr', 'GarageCond_Fa|Functional_Min2', 'BsmtExposure_Gd|Exterior2nd_HdBoard', 'LowQualFinSF|KitchenQual_TA', 'GarageType_Detchd|LotShape_IR2', 'Heating_GasW|Condition1_Norm', 'MSZoning_Tencode|Exterior1st_Plywood', 'Neighborhood_Mitchel|FireplaceQu_Ex', 'KitchenQual_Fa|MiscFeature_Gar2', 'GarageCond_Tencode|HouseStyle_2Story', '1stFlrSF|BsmtFinType2_Unf', 'Exterior1st_BrkFace|BsmtFinType2_GLQ', 'GarageFinish_RFn|WoodDeckSF', 'LandContour_Low|BsmtFinType2_BLQ', 'SaleCondition_Alloca|Exterior1st_Wd Sdng', 'TotRmsAbvGrd|Condition1_RRAn', 'Exterior2nd_Tencode|BsmtQual_TA', 'Exterior1st_BrkFace|Fence_MnWw', 'BsmtFinType2_Tencode|Exterior1st_BrkComm', 'RoofStyle_Shed|Neighborhood_SawyerW', 'LotShape_Reg|HouseStyle_2Story', 'LandContour_Tencode|SaleCondition_Abnorml', 'BsmtFinType1_GLQ|HouseStyle_1.5Fin', 'BsmtFullBath|BsmtUnfSF', 'BsmtFinType2_Tencode|Exterior1st_VinylSd', 'Exterior2nd_BrkFace|Neighborhood_NAmes', 'LotArea|1stFlrSF', 'Exterior1st_HdBoard|ExterQual_Tencode', 'Street_Tencode|Electrical_FuseF', 'GarageCond_Gd|RoofStyle_Shed', 'GarageType_Detchd|Fence_MnWw', 'MoSold|GarageType_2Types', 'BsmtFinType1_ALQ|LandContour_Bnk', 'GarageCars|MasVnrType_Tencode', 'SaleType_ConLD|HouseStyle_2Story', 'Foundation_Stone|HeatingQC_Ex', 'RoofMatl_Tencode|BsmtFinType1_LwQ', 'Neighborhood_BrDale|SaleType_CWD', 'LotShape_Tencode|Exterior1st_Stucco', 'LotShape_IR2|Neighborhood_Veenker', 'TotalBsmtSF|EnclosedPorch', 'GarageType_CarPort|WoodDeckSF', 'HouseStyle_1.5Unf|SaleCondition_Normal', 'Heating_Grav|KitchenQual_Ex', 'FireplaceQu_Gd|CentralAir_Tencode', 'GarageQual_TA|Street_Pave', 'SaleCondition_Tencode|BsmtCond_Fa', 'GarageArea|Fence_MnWw', 'Exterior2nd_Tencode|BsmtExposure_Gd', 'MSZoning_Tencode|Exterior2nd_Wd Shng', 'Neighborhood_OldTown|MoSold', 'SaleType_WD|BldgType_Tencode', 'Heating_GasW|Condition2_Norm', 'HouseStyle_1Story|LandSlope_Sev', 'HeatingQC_Ex|GarageType_2Types', 'ExterCond_Gd|GarageYrBlt', 'Exterior1st_AsbShng|HouseStyle_1.5Fin', 'Neighborhood_NPkVill|Exterior1st_AsbShng', 'RoofStyle_Gable|HouseStyle_1.5Fin', 'BsmtFinType2_GLQ|BsmtUnfSF', 'OverallQual|RoofStyle_Gable', 'GarageType_CarPort|Exterior1st_Wd Sdng', 'LotShape_IR2|SaleCondition_Partial', 'Heating_GasW|Exterior2nd_Plywood', 'BsmtQual_Ex|Foundation_CBlock', 'Neighborhood_SWISU|CentralAir_N', 'BsmtFinType1_Unf', 'Alley_Grvl|Utilities_AllPub', 'GarageFinish_Tencode|BsmtCond_Tencode', 'HeatingQC_Tencode|PavedDrive_P', 'Foundation_Stone|MSZoning_C (all)', 'Electrical_FuseF|Condition1_Feedr', 'YrSold|KitchenQual_Tencode', 'LotShape_IR1|GarageType_BuiltIn', 'HeatingQC_Fa|GarageYrBlt', 'HalfBath|Exterior2nd_Brk Cmn', 'Condition2_Artery|Exterior1st_Wd Sdng', 'LandSlope_Mod|KitchenQual_Tencode', 'MSZoning_C (all)|MSZoning_RM', 'BsmtQual_TA|BsmtExposure_No', 'Foundation_Slab|Fence_MnWw', 'GarageQual_Gd|SaleType_New', 'LotShape_IR3|GarageType_2Types', 'MSZoning_FV|MSZoning_RL', 'Exterior2nd_MetalSd|Condition2_Norm', 'SaleType_ConLD|SaleCondition_Alloca', 'SaleType_WD|Exterior2nd_AsphShn', 'RoofStyle_Flat|LotFrontage', 'EnclosedPorch|LotShape_Reg', 'Condition1_Artery|GarageType_2Types', 'Neighborhood_IDOTRR|BsmtCond_Fa', 'Neighborhood_Edwards|Electrical_FuseF', 'Electrical_SBrkr|GarageFinish_RFn', 'Exterior2nd_Stucco|Neighborhood_Timber', 'RoofMatl_Tar&Grv|GarageCond_Gd', 'BsmtFinType1_ALQ|Neighborhood_BrkSide', 'Condition1_PosA|ExterCond_Tencode', 'SaleType_ConLw|BsmtFinType1_Unf', 'LotConfig_FR2|RoofStyle_Gable', 'OverallQual|PavedDrive_Tencode', 'BsmtFinType1_Tencode|GarageType_Attchd', 'RoofStyle_Gable|RoofStyle_Shed', 'LandSlope_Tencode|LandContour_Lvl', 'MSZoning_RM|BsmtFinType1_GLQ', 'LandContour_Tencode|MSZoning_RL', 'GarageCond_Tencode|Functional_Min1', 'Fireplaces|GarageQual_TA', 'BsmtFinType2_Tencode|Neighborhood_Sawyer', 'KitchenQual_Tencode|MSZoning_RL', 'SaleType_Tencode|TotRmsAbvGrd', 'GarageQual_Fa|BsmtCond_Tencode', 'Exterior1st_HdBoard|ExterQual_Gd', 'LotConfig_Corner|GarageQual_Tencode', 'Exterior1st_MetalSd|Exterior1st_Plywood', 'Foundation_CBlock|Functional_Min2', 'BsmtFinSF2|MiscFeature_Gar2', 'BsmtFinType2_BLQ|BsmtExposure_Av', 'RoofMatl_CompShg|MiscFeature_Tencode', 'Exterior1st_BrkComm|RoofMatl_WdShngl', 'KitchenQual_Ex|BsmtFullBath', 'Neighborhood_BrDale|MasVnrType_None', 'SaleType_Oth|BsmtExposure_Gd', 'Neighborhood_Gilbert|LotConfig_Inside', 'SaleType_CWD|Functional_Min2', 'KitchenQual_Gd|Condition1_RRAe', 'Condition2_Tencode|1stFlrSF', 'LotConfig_FR2|GarageFinish_Tencode', 'HouseStyle_Tencode|Exterior1st_VinylSd', 'HouseStyle_Tencode|BsmtExposure_No', 'GarageCond_Ex|HouseStyle_SLvl', 'GarageType_Tencode|OverallCond', 'FullBath|Exterior1st_MetalSd', 'Neighborhood_CollgCr|BsmtCond_TA', 'Exterior2nd_Stucco|Exterior2nd_VinylSd', 'PavedDrive_P|Exterior1st_BrkComm', 'SaleType_Tencode|Exterior1st_Plywood', 'GarageArea|GarageYrBlt', 'BldgType_2fmCon|BldgType_1Fam', 'GrLivArea|HouseStyle_Tencode', 'Street_Tencode|Exterior1st_BrkComm', 'BedroomAbvGr|ExterQual_Ex', 'GarageFinish_RFn|MasVnrArea', 'GarageFinish_Fin|Exterior1st_VinylSd', 'Neighborhood_Veenker|MSZoning_C (all)', 'Heating_Tencode|SaleCondition_Alloca', 'PavedDrive_Y|GarageType_Attchd', 'SaleType_Oth|Fence_MnWw', 'Exterior2nd_VinylSd|SaleType_CWD', 'Electrical_Tencode|Neighborhood_SWISU', 'KitchenQual_Tencode|Exterior1st_VinylSd', 'TotalBsmtSF|Neighborhood_IDOTRR', 'HouseStyle_1.5Unf|RoofStyle_Gable', 'BldgType_2fmCon|GarageQual_TA', 'Electrical_FuseP|Exterior2nd_HdBoard', 'GarageCond_Gd|GarageArea', 'SaleType_ConLD|PavedDrive_Tencode', 'BedroomAbvGr|MasVnrType_BrkCmn', 'LandContour_Low|SaleType_WD', 'LandSlope_Mod|BsmtQual_Fa', 'GarageQual_Gd|HouseStyle_2.5Unf', 'BsmtFinType1_Rec|GarageType_BuiltIn', 'LandSlope_Mod|Condition1_RRAn', 'GarageQual_TA|ExterCond_Fa', 'LandSlope_Mod|PavedDrive_P', 'GarageYrBlt|Exterior1st_Tencode', 'Exterior2nd_Tencode|CentralAir_N', 'SaleType_ConLw|BsmtQual_Fa', 'ExterCond_TA|1stFlrSF', 'LandContour_Bnk|Exterior1st_WdShing', 'GarageFinish_RFn|Exterior2nd_Plywood', 'CentralAir_Tencode|BldgType_Tencode', 'Neighborhood_NoRidge|LandContour_Bnk', 'Heating_GasW|MoSold', 'Exterior2nd_BrkFace|FireplaceQu_TA', 'LandContour_Lvl|MasVnrType_None', 'GarageQual_TA|SaleType_COD', 'FireplaceQu_Tencode|SaleType_CWD', 'TotRmsAbvGrd|LowQualFinSF', 'Heating_GasA|CentralAir_Tencode', 'LandContour_Tencode|Neighborhood_Crawfor', '1stFlrSF|SaleCondition_Partial', 'LotShape_IR2|BsmtCond_Fa', 'GarageCars|GarageType_Attchd', 'SaleCondition_Abnorml|Exterior1st_Tencode', 'HeatingQC_Fa|GarageQual_Po', 'FireplaceQu_Tencode|Foundation_CBlock', 'Neighborhood_Tencode|BsmtFinSF1', 'LotArea|MSZoning_RL', 'MoSold|Exterior2nd_HdBoard', 'Street_Tencode|Neighborhood_MeadowV', 'BldgType_Twnhs|GarageType_Basment', 'FireplaceQu_Ex|2ndFlrSF', 'EnclosedPorch|LotArea', 'HouseStyle_SFoyer|BsmtFinType2_Unf', 'MiscFeature_Othr|MSZoning_Tencode', 'Electrical_FuseP|CentralAir_N', 'Condition1_Tencode|BldgType_Tencode', 'Neighborhood_Edwards|SaleCondition_Alloca', 'LandContour_Lvl|BsmtCond_Gd', 'LowQualFinSF|PoolArea', 'Neighborhood_NoRidge|BsmtUnfSF', 'HeatingQC_TA|RoofMatl_Tar&Grv', 'HouseStyle_2.5Unf|GarageType_2Types', 'Heating_Grav|ExterCond_Gd', 'MiscFeature_Shed|RoofStyle_Tencode', 'Neighborhood_Somerst|FireplaceQu_Po', 'BsmtFinType2_BLQ|WoodDeckSF', 'Exterior1st_Stucco|HeatingQC_Tencode', 'MasVnrType_Stone|ExterCond_Fa', 'FireplaceQu_Tencode|SaleCondition_Alloca', 'SaleType_New|BsmtUnfSF', 'OverallQual|Neighborhood_Mitchel', 'SaleCondition_Tencode|3SsnPorch', 'YearRemodAdd|Condition1_PosA', 'PavedDrive_N|ExterQual_TA', 'Neighborhood_CollgCr|Exterior2nd_CmentBd', 'LotShape_Reg|GarageCond_Fa', 'Exterior2nd_AsbShng|GarageCars', 'Neighborhood_ClearCr|Street_Pave', 'HeatingQC_Ex|MSZoning_Tencode', 'OpenPorchSF|LotConfig_Inside', 'GarageQual_Fa|Exterior1st_VinylSd', 'LotShape_Tencode|Exterior1st_HdBoard', 'HeatingQC_TA|Exterior1st_WdShing', 'Electrical_FuseA|Neighborhood_IDOTRR', 'Foundation_BrkTil|LandSlope_Gtl', 'BldgType_Tencode|ExterCond_Fa', 'SaleCondition_Abnorml|Exterior1st_WdShing', 'SaleType_ConLw|MiscFeature_Shed', 'Foundation_PConc|FireplaceQu_Gd', 'PavedDrive_N|Neighborhood_IDOTRR', 'SaleType_ConLw|GarageType_CarPort', 'GarageQual_Po|MiscFeature_Gar2', 'Electrical_FuseA|BsmtFinSF1', 'LandContour_HLS|BsmtFinType2_Rec', 'MiscVal|Neighborhood_Sawyer', 'SaleType_New|MSSubClass', 'LotShape_Tencode|LotShape_IR1', 'GarageCond_Po|BsmtFinSF1', 'BsmtCond_Tencode|Exterior2nd_Plywood', 'PavedDrive_Y|Exterior2nd_Brk Cmn', 'Alley_Pave|BldgType_TwnhsE', 'MiscFeature_Othr|Exterior1st_AsbShng', 'Functional_Typ|SaleType_ConLI', 'FireplaceQu_Gd|BedroomAbvGr', 'RoofMatl_CompShg|ExterQual_Gd', 'ExterCond_Tencode|Exterior2nd_HdBoard', 'RoofMatl_WdShngl|MSZoning_FV', 'HouseStyle_1.5Unf|LandSlope_Gtl', 'HouseStyle_1Story|BldgType_Twnhs', 'Condition2_Artery|HouseStyle_SLvl', 'KitchenQual_Tencode|KitchenQual_Fa', 'Exterior1st_VinylSd|GarageCond_Ex', 'BsmtFullBath|SaleCondition_Partial', 'GarageType_BuiltIn|GarageType_2Types', 'ExterQual_Gd|CentralAir_Y', 'BsmtFinType1_BLQ|HouseStyle_1.5Fin', 'SaleType_ConLI|BsmtFullBath', 'BldgType_Duplex|Street_Grvl', 'Neighborhood_StoneBr', 'GarageType_BuiltIn|RoofStyle_Tencode', 'YearBuilt|LandContour_Tencode', 'BsmtFinType2_BLQ|BsmtFinType2_Unf', 'BsmtFinType1_Tencode|HouseStyle_SLvl', 'BldgType_Duplex|LotShape_IR1', 'SaleType_ConLI|CentralAir_Y', 'MiscFeature_Tencode|HouseStyle_1.5Fin', 'Neighborhood_NridgHt|HeatingQC_Gd', 'BsmtFinType1_Tencode|SaleCondition_Family', 'RoofMatl_Tar&Grv|Functional_Min1', 'ScreenPorch|Exterior2nd_Brk Cmn', 'GarageCond_Tencode|ScreenPorch', 'RoofStyle_Flat|GarageCond_Tencode', 'Functional_Typ|BsmtFinType2_BLQ', 'Exterior2nd_MetalSd|BsmtFinType2_Unf', 'HouseStyle_2.5Unf|RoofMatl_WdShngl', 'LandContour_Low|Utilities_AllPub', 'Exterior2nd_Stucco|Heating_GasA', 'KitchenQual_Ex|Neighborhood_OldTown', 'FireplaceQu_Fa|HouseStyle_SLvl', 'Fence_GdPrv|SaleCondition_Normal', 'BsmtFinType1_BLQ|BldgType_Tencode', 'BldgType_TwnhsE|Exterior1st_Plywood', 'GarageCond_Po|ExterQual_Gd', 'LandSlope_Mod|Neighborhood_Tencode', 'BsmtFinSF2|Utilities_AllPub', 'Exterior2nd_VinylSd|CentralAir_Tencode', 'BsmtFinType1_ALQ|GarageQual_TA', 'BsmtFinType2_BLQ|Condition1_RRAe', 'BsmtCond_Po|HouseStyle_2Story', 'GarageType_Detchd|Exterior1st_Plywood', 'LotShape_IR2|MiscFeature_Tencode', 'Neighborhood_ClearCr|3SsnPorch', 'SaleCondition_Tencode|SaleCondition_Family', 'BsmtCond_Tencode|ExterQual_Fa', 'HeatingQC_Ex|Condition1_RRAn', 'GarageQual_TA|Exterior1st_WdShing', 'LandSlope_Mod|Functional_Min1', 'GarageCond_TA|GarageType_BuiltIn', 'LandContour_Bnk|1stFlrSF', 'BsmtFinType1_BLQ|GarageCond_Tencode', 'ExterCond_Gd|Condition1_PosA', 'MSZoning_Tencode|RoofMatl_WdShngl', 'LandContour_Low|Electrical_FuseP', 'MiscFeature_Othr|BsmtFinType2_Unf', 'HouseStyle_1.5Fin|ExterQual_Fa', 'MiscFeature_Othr|MSZoning_RH', 'Fireplaces|FireplaceQu_TA', 'Condition2_Artery|GarageQual_Tencode', 'Foundation_PConc|HeatingQC_Gd', 'Condition2_Tencode|MSZoning_RM', 'Exterior1st_BrkFace|BsmtFinType1_Unf', 'FireplaceQu_Tencode|Condition2_Tencode', 'LotConfig_Corner|GarageType_CarPort', 'MiscFeature_Shed|BsmtCond_Fa', 'BsmtQual_Fa|Exterior2nd_Brk Cmn', 'Functional_Mod|BsmtCond_Fa', 'Electrical_Tencode|LandContour_Tencode', 'RoofMatl_CompShg|LotConfig_Tencode', 'HeatingQC_Ex|SaleType_Oth', 'Electrical_FuseF|Neighborhood_MeadowV', 'Exterior1st_AsbShng|Exterior2nd_VinylSd', 'Fireplaces|BsmtFinType1_GLQ', 'YearRemodAdd|MoSold', 'RoofStyle_Gambrel|RoofMatl_WdShngl', 'SaleType_New|BsmtCond_TA', 'KitchenQual_Fa|OverallCond', 'Electrical_FuseA|Exterior2nd_Wd Shng', 'FullBath|Condition2_Artery', 'BsmtQual_Tencode|BsmtFinType1_GLQ', 'Neighborhood_IDOTRR|Utilities_AllPub', 'BsmtFinSF1|Fence_MnPrv', 'HouseStyle_1Story|BsmtFinType1_BLQ', 'EnclosedPorch|FireplaceQu_Po', 'BsmtFinType1_ALQ|KitchenQual_TA', 'FireplaceQu_Fa|SaleCondition_Abnorml', 'Alley_Pave|HalfBath', 'SaleCondition_Tencode|GarageYrBlt', 'GarageCond_Po|Functional_Maj2', 'Foundation_Stone|GarageType_Attchd', 'Exterior2nd_CmentBd|SaleCondition_Normal', 'BsmtFinType2_Unf|Foundation_Slab', 'Exterior2nd_Stone|Alley_Grvl', 'Condition1_Artery|BldgType_TwnhsE', 'PavedDrive_N|BsmtFinType1_Rec', 'TotalBsmtSF|Exterior2nd_Plywood', 'Neighborhood_Tencode|Neighborhood_MeadowV', 'SaleCondition_Normal|MiscFeature_Tencode', 'LotShape_Tencode|Neighborhood_BrDale', 'LandContour_Tencode|MiscFeature_Gar2', 'FireplaceQu_Fa|Condition1_RRAe', 'BsmtFullBath|BldgType_TwnhsE', 'LandContour_HLS|GarageType_Attchd', 'BldgType_Twnhs|Utilities_AllPub', 'YrSold|Heating_Tencode', 'MasVnrType_None', 'Neighborhood_Edwards|SaleCondition_Family', 'Alley_Pave|BsmtFinType2_BLQ', 'LotArea|GarageType_Attchd', 'GarageType_BuiltIn|HouseStyle_SLvl', 'BsmtFinType2_Rec|BsmtFinType1_GLQ', 'Exterior1st_HdBoard|Exterior2nd_CmentBd', 'ExterCond_Tencode|Exterior2nd_Wd Sdng', 'Alley_Tencode|Exterior2nd_Tencode', 'FireplaceQu_Gd|PoolArea', 'LotShape_Reg|ExterCond_Fa', 'Condition1_RRAe|MasVnrType_BrkFace', 'Functional_Maj2|OpenPorchSF', 'BsmtFinType2_GLQ|Exterior2nd_Plywood', 'GarageType_Detchd|BldgType_Tencode', 'Foundation_CBlock|SaleCondition_Abnorml', 'Functional_Typ|GarageFinish_Fin', 'GarageCond_Gd|FireplaceQu_TA', 'LotFrontage|BsmtFinType1_LwQ', 'Functional_Tencode|LotConfig_CulDSac', 'HouseStyle_1Story|Neighborhood_CollgCr', 'PavedDrive_Y|CentralAir_N', 'Neighborhood_NridgHt|KitchenQual_TA', 'PavedDrive_Y|Exterior2nd_Plywood', 'ExterCond_Gd|Functional_Min2', 'RoofMatl_CompShg|3SsnPorch', 'Neighborhood_NWAmes|Utilities_AllPub', 'Neighborhood_NridgHt|Exterior2nd_BrkFace', 'RoofStyle_Hip|Foundation_Tencode', 'Neighborhood_NridgHt|GarageCond_Ex', 'PavedDrive_Y|GarageCond_Gd', 'BsmtHalfBath|Exterior1st_Plywood', 'Exterior2nd_AsbShng|MasVnrType_None', 'Electrical_FuseP|LotArea', 'MiscVal|Condition1_RRAn', 'ExterQual_TA|LotShape_IR1', 'Neighborhood_NridgHt|YearRemodAdd', 'Neighborhood_StoneBr|SaleCondition_Abnorml', '1stFlrSF|Condition1_Tencode', 'BsmtFinType2_BLQ|BsmtCond_Gd', 'HouseStyle_SFoyer|Neighborhood_IDOTRR', 'MiscFeature_Othr|BsmtQual_Tencode', 'MasVnrType_BrkCmn|Condition2_Norm', 'FireplaceQu_Tencode|BsmtUnfSF', 'HouseStyle_2Story|WoodDeckSF', 'FullBath|PoolQC_Tencode', 'BsmtFinType2_LwQ|Fence_GdWo', 'Exterior2nd_Stone|RoofMatl_Tar&Grv', 'Condition2_Tencode|LotConfig_Tencode', 'Functional_Tencode|Fence_Tencode', 'Functional_Mod|Alley_Grvl', 'Neighborhood_SWISU|Street_Pave', 'BsmtFinType1_ALQ|Functional_Mod', 'BsmtFinType1_BLQ|SaleCondition_Abnorml', 'Neighborhood_CollgCr|Neighborhood_Veenker', 'Fireplaces|Condition1_Tencode', 'LotFrontage|KitchenQual_Fa', 'Neighborhood_Crawfor|Alley_Grvl', 'Heating_GasA|SaleCondition_Family', 'KitchenAbvGr|RoofMatl_Tar&Grv', 'FireplaceQu_Tencode|MiscVal', 'Exterior1st_HdBoard|BsmtFinType2_ALQ', 'HalfBath|2ndFlrSF', 'Exterior2nd_VinylSd|Exterior1st_MetalSd', 'BsmtFinType2_ALQ|BsmtFinType1_ALQ', 'OverallQual|Functional_Maj2', 'BsmtQual_TA|Condition1_PosA', 'Exterior2nd_Stucco|Exterior1st_VinylSd', 'BldgType_Duplex|Exterior2nd_HdBoard', 'HalfBath|RoofStyle_Shed', 'Street_Tencode|Neighborhood_Somerst', 'HeatingQC_Gd|Electrical_Tencode', 'GarageCond_Tencode|Condition1_PosN', '1stFlrSF|MSZoning_RH', 'GarageCond_Po|LotConfig_FR2', 'Heating_Grav|Condition2_Artery', 'PoolArea|OverallCond', 'BsmtFinType2_Unf|BsmtFinType1_GLQ', 'BsmtCond_Po|HouseStyle_1.5Fin', 'HouseStyle_Tencode|MSZoning_RM', 'SaleCondition_Partial|Condition1_Tencode', 'FireplaceQu_Po|Neighborhood_Tencode', 'Exterior1st_Plywood', 'LotShape_Reg|BsmtFinType2_Unf', 'Functional_Maj2|BsmtFinType2_Rec', 'ExterQual_Ex|SaleCondition_Partial', 'Exterior1st_Stucco|KitchenQual_TA', 'Fence_Tencode|Neighborhood_Tencode', 'LandContour_Low|MSZoning_Tencode', 'Electrical_FuseP|MiscFeature_Gar2', 'GarageFinish_Unf|FireplaceQu_Gd', 'MasVnrType_None|MSSubClass', 'LandContour_Lvl|GarageType_BuiltIn', 'BsmtCond_Po|ScreenPorch', 'YearRemodAdd|Alley_Pave', 'Exterior2nd_CmentBd|LandSlope_Gtl', 'MSZoning_C (all)|Exterior1st_WdShing', 'RoofMatl_Tar&Grv|MasVnrType_None', 'HouseStyle_1.5Unf|Neighborhood_NWAmes', 'LotFrontage|Exterior2nd_CmentBd', 'FireplaceQu_Ex|ExterQual_Tencode', 'BsmtQual_Tencode|MasVnrType_None', 'Alley_Grvl|Neighborhood_MeadowV', 'ExterCond_TA|ExterQual_Tencode', 'LandSlope_Tencode|Neighborhood_IDOTRR', 'Foundation_CBlock|MasVnrType_BrkFace', 'MasVnrArea|Exterior2nd_Wd Shng', 'Neighborhood_NridgHt|PoolArea', 'BsmtFinType1_Tencode|ExterCond_Gd', 'ExterCond_TA|SaleCondition_Partial', 'BsmtFinSF2|BsmtFinType2_Unf', 'Condition2_Artery|Exterior1st_Tencode', 'MiscVal|MasVnrType_BrkFace', 'LotArea|Exterior1st_CemntBd', 'BsmtFullBath|Electrical_FuseF', 'FireplaceQu_Gd|Exterior1st_HdBoard', 'TotRmsAbvGrd|GarageArea', 'HouseStyle_SFoyer|Neighborhood_SawyerW', 'Fence_GdWo|WoodDeckSF', 'Neighborhood_Sawyer|BsmtFinType1_GLQ', 'SaleCondition_Normal|Street_Grvl', 'LotFrontage|1stFlrSF', 'RoofStyle_Tencode|BldgType_TwnhsE', 'Street_Grvl|Neighborhood_BrkSide', 'BsmtQual_Ex|RoofStyle_Gable', 'SaleType_Oth|LotConfig_Inside', 'LotConfig_Tencode|KitchenQual_TA', 'Condition1_PosA|MasVnrType_BrkFace', 'Neighborhood_BrkSide|Neighborhood_MeadowV', 'Street_Grvl|GarageQual_Tencode', 'Neighborhood_Tencode|KitchenQual_Fa', 'Alley_Pave', 'LotConfig_FR2|BldgType_1Fam', 'LotShape_Reg|RoofMatl_Tar&Grv', 'KitchenQual_Ex|PavedDrive_Tencode', 'BsmtQual_Tencode|Exterior2nd_Wd Sdng', 'Heating_Grav|Foundation_Slab', 'RoofStyle_Gambrel|MiscFeature_Shed', 'RoofStyle_Hip|BsmtQual_Ex', 'BsmtFinType1_LwQ|GarageFinish_RFn', 'SaleType_ConLI|Neighborhood_SWISU', 'YrSold|BsmtQual_TA', 'Heating_Grav|Condition1_Norm', '1stFlrSF|ExterQual_Ex', 'LandSlope_Sev|Fence_GdWo', 'MasVnrType_BrkFace|BsmtCond_TA', 'EnclosedPorch|BsmtCond_TA', 'ExterQual_TA|Functional_Mod', 'Fence_MnPrv|Neighborhood_MeadowV', 'OverallQual|Neighborhood_StoneBr', 'BsmtFinType1_ALQ|HouseStyle_1.5Fin', 'BldgType_TwnhsE|Condition2_Artery', 'MasVnrType_BrkCmn|Neighborhood_Crawfor', 'ExterCond_Gd|Fence_GdWo', 'MiscFeature_Shed|ExterQual_Tencode', 'Neighborhood_BrDale|HeatingQC_Tencode', 'Heating_Tencode|BldgType_TwnhsE', 'RoofStyle_Gable|SaleType_CWD', 'SaleType_New|Neighborhood_Timber', 'SaleCondition_Family|HouseStyle_1.5Unf', 'LotShape_IR1|Condition1_RRAe', 'BsmtFinType1_Tencode|BsmtFinType1_Unf', 'BsmtQual_Tencode|OpenPorchSF', 'GarageQual_Gd|HouseStyle_SLvl', 'MSZoning_FV|LotConfig_Inside', 'Neighborhood_Somerst|OverallCond', 'Exterior1st_Stucco|ExterCond_Gd', 'PoolArea|SaleType_COD', 'MoSold|BsmtQual_Gd', 'Functional_Maj2|SaleCondition_Normal', 'YearRemodAdd|GarageQual_Fa', 'SaleType_WD|GarageCond_Fa', 'BsmtFinType1_Tencode|OverallCond', 'Neighborhood_CollgCr|PoolQC_Tencode', 'HeatingQC_TA|FireplaceQu_Po', 'BsmtFinType1_Rec|Exterior2nd_Brk Cmn', 'GarageType_Tencode|GarageType_2Types', 'Neighborhood_Blmngtn|SaleType_WD', 'Functional_Min1|GarageQual_Tencode', 'Electrical_SBrkr|BsmtFinSF1', 'HouseStyle_1Story|LotShape_IR3', 'MiscFeature_Tencode|MSZoning_RH', 'GarageQual_TA|BsmtCond_Tencode', 'Neighborhood_CollgCr|LandSlope_Sev', '1stFlrSF|Condition1_Feedr', 'Exterior1st_VinylSd|SaleType_Oth', 'Foundation_PConc|Condition2_Artery', 'Condition1_PosA|SaleType_CWD', 'FireplaceQu_Fa|GarageType_2Types', 'ExterQual_TA|Neighborhood_Crawfor', 'ExterQual_Gd|SaleType_Oth', 'LotArea|Foundation_BrkTil', 'LandContour_HLS|BsmtQual_Gd', 'RoofStyle_Hip|Condition1_Feedr', 'ScreenPorch|MSZoning_Tencode', 'Exterior1st_BrkFace|MSZoning_Tencode', 'Electrical_FuseP|Exterior1st_Tencode', 'MiscFeature_Gar2|Neighborhood_MeadowV', 'LotArea|GarageFinish_Tencode', 'PavedDrive_N|Exterior1st_AsbShng', 'Functional_Tencode|BsmtFullBath', 'Exterior1st_Stucco|Condition1_PosN', 'OverallQual|Exterior1st_Plywood', 'GarageFinish_Tencode|Exterior2nd_HdBoard', 'Functional_Min1|BsmtQual_Gd', 'HouseStyle_Tencode|ExterQual_Fa', 'Functional_Typ|Neighborhood_Veenker', 'Fence_Tencode|Functional_Min2', 'SaleCondition_Family|Fence_MnPrv', 'LotConfig_FR2|MSZoning_RM', 'Alley_Grvl|Neighborhood_IDOTRR', 'Condition1_Norm|GarageType_2Types', 'GarageType_CarPort|Neighborhood_BrkSide', 'Neighborhood_Blmngtn|Condition1_RRAe', 'RoofStyle_Gable|Exterior1st_Wd Sdng', 'GarageType_BuiltIn|BsmtFinType1_Unf', 'BsmtFinType1_LwQ|Exterior1st_VinylSd', 'SaleCondition_Tencode|BsmtQual_TA', 'CentralAir_N|MiscFeature_Gar2', 'BsmtCond_Po|Exterior1st_MetalSd', 'Exterior2nd_HdBoard|MSZoning_RH', 'BsmtFinType1_LwQ|SaleType_CWD', 'Exterior2nd_VinylSd|Fence_MnWw', 'MiscFeature_Shed|GarageQual_Po', 'LotShape_Reg|Condition1_Feedr', 'LotShape_IR1|TotRmsAbvGrd', 'BedroomAbvGr', 'ExterQual_Ex|SaleType_Oth', 'EnclosedPorch|Fence_GdWo', 'BldgType_2fmCon|Neighborhood_NAmes', 'SaleCondition_Tencode|Street_Grvl', 'BsmtFinType2_LwQ|BsmtUnfSF', 'MiscFeature_Tencode|BsmtCond_Fa', 'GarageArea|BsmtFinSF1', 'Condition2_Tencode|MasVnrType_None', 'BldgType_Duplex|Street_Tencode', 'Neighborhood_NPkVill|Neighborhood_Gilbert', 'LotConfig_FR2|LotConfig_CulDSac', 'BldgType_2fmCon|SaleCondition_Partial', 'BsmtQual_Fa|Condition1_PosA', 'BsmtQual_Tencode|BsmtCond_Tencode', 'FireplaceQu_Fa|HouseStyle_1.5Fin', 'HeatingQC_Fa|Exterior2nd_Brk Cmn', 'SaleCondition_Family|BsmtExposure_Av', 'Fence_GdWo|SaleCondition_Partial', 'LotConfig_Corner|Functional_Min1', 'BldgType_Duplex|GarageYrBlt', 'Street_Grvl|Exterior1st_WdShing', 'HouseStyle_SFoyer|BsmtCond_Fa', 'BsmtQual_Tencode|GarageType_2Types', 'Neighborhood_OldTown|HouseStyle_1.5Fin', 'BsmtHalfBath|OpenPorchSF', 'FireplaceQu_Ex|HouseStyle_2.5Unf', 'HouseStyle_SFoyer|HouseStyle_SLvl', 'MSZoning_RH|ExterQual_Fa', 'Condition1_RRAe|Neighborhood_IDOTRR', 'LotArea|RoofMatl_WdShngl', 'SaleCondition_Family|HouseStyle_1.5Fin', 'ExterQual_TA|BsmtFinType2_Tencode', 'GarageFinish_Fin|BsmtFinType2_Rec', 'LotShape_Reg|Neighborhood_MeadowV', 'GarageArea|GarageType_CarPort', 'HouseStyle_SFoyer|Condition1_PosN', 'RoofStyle_Gambrel|GarageType_2Types', 'LotFrontage|Condition1_RRAe', 'BldgType_Duplex|1stFlrSF', 'Exterior1st_CemntBd|KitchenQual_TA', 'Street_Tencode|SaleType_ConLD', 'MSZoning_RM|Exterior2nd_AsphShn', 'RoofStyle_Flat|ScreenPorch', 'CentralAir_Y|BsmtFinType2_Unf', 'OverallCond|MasVnrType_Stone', 'Electrical_SBrkr|Fence_GdWo', 'BsmtFinType1_BLQ|GarageFinish_Fin', 'LotConfig_FR2|SaleType_New', 'SaleCondition_Partial|HouseStyle_2Story', 'Fence_GdWo|HouseStyle_2.5Unf', 'Neighborhood_Blmngtn|Fence_MnWw', 'YearRemodAdd|PavedDrive_P', 'FireplaceQu_Tencode|Alley_Grvl', 'MiscFeature_Othr|LotConfig_FR2', 'Exterior1st_AsbShng|LotConfig_Tencode', 'Neighborhood_StoneBr|Utilities_AllPub', 'LotFrontage|GarageFinish_Tencode', 'Alley_Tencode|Neighborhood_Edwards', 'SaleType_New|BsmtFinSF1', 'BsmtFinSF2|FireplaceQu_Ex', 'OverallQual|BsmtFinType2_LwQ', 'PavedDrive_P|ExterQual_Tencode', 'BldgType_Tencode|Exterior1st_Plywood', 'Street_Tencode|BsmtExposure_No', 'HeatingQC_Fa|OpenPorchSF', 'BedroomAbvGr|Condition1_PosA', 'SaleCondition_Tencode|Exterior2nd_AsbShng', 'BsmtFinType1_ALQ|RoofStyle_Gable', 'Foundation_Stone|KitchenQual_Tencode', 'HouseStyle_1.5Unf|Exterior2nd_Wd Sdng', 'GarageFinish_Unf|BsmtUnfSF', 'Exterior1st_HdBoard|Fireplaces', 'HeatingQC_Tencode|HouseStyle_SLvl', 'LotConfig_FR2|HalfBath', 'ExterCond_TA|RoofStyle_Gable', 'GarageQual_Gd|PavedDrive_Tencode', 'Neighborhood_OldTown|FireplaceQu_TA', '3SsnPorch|CentralAir_Tencode', 'FullBath|GarageQual_Po', 'GarageFinish_Fin|BsmtQual_Gd', 'GarageCond_Fa|Street_Grvl', 'Electrical_FuseA|MSZoning_RH', 'TotRmsAbvGrd|2ndFlrSF', 'EnclosedPorch|BsmtFinType1_ALQ', 'Neighborhood_Veenker|GarageArea', 'BldgType_TwnhsE|MSZoning_FV', 'CentralAir_Y|MSZoning_RH', 'GarageCond_TA|Heating_GasW', 'RoofMatl_CompShg|Exterior2nd_Tencode', 'SaleType_ConLD|Fence_MnWw', 'BsmtUnfSF|BsmtFinType1_LwQ', 'YrSold|BsmtFinType1_LwQ', 'Utilities_Tencode|GarageQual_TA', 'CentralAir_Tencode|Neighborhood_MeadowV', 'Condition1_Tencode|PoolArea', 'Neighborhood_Mitchel|HouseStyle_2Story', 'Functional_Maj2|SaleType_New', 'Fence_GdPrv|SaleCondition_Abnorml', 'BsmtCond_Tencode|BsmtCond_Fa', 'SaleType_ConLI|SaleCondition_Partial', 'LotConfig_CulDSac|BsmtQual_TA', 'MasVnrType_BrkFace|MasVnrType_Tencode', 'Exterior2nd_BrkFace|GarageQual_Po', 'SaleCondition_Alloca|MSZoning_Tencode', 'LandContour_Tencode|CentralAir_Tencode', 'Exterior1st_AsbShng|GarageYrBlt', 'YrSold|FireplaceQu_TA', 'BsmtQual_Tencode|ExterQual_Fa', 'GarageCars|Neighborhood_StoneBr', 'BldgType_Twnhs|MiscFeature_Gar2', 'Neighborhood_BrkSide|Exterior2nd_HdBoard', 'FireplaceQu_TA|Exterior2nd_Wd Shng', 'FireplaceQu_Po|ExterCond_Gd', 'HeatingQC_Tencode|MSZoning_RH', 'MiscVal|LandContour_Lvl', 'GarageQual_Fa|GarageCond_Fa', 'GarageType_Tencode|MasVnrArea', 'RoofMatl_CompShg|Exterior2nd_HdBoard', '3SsnPorch|KitchenQual_Tencode', 'ExterCond_Tencode|BsmtCond_Gd', 'BsmtQual_Tencode|MSZoning_C (all)', 'BsmtFinType2_ALQ|Exterior1st_MetalSd', 'BsmtFinType1_ALQ|LotConfig_Inside', 'RoofMatl_CompShg|BsmtCond_TA', 'ExterQual_Gd|PavedDrive_P', 'Neighborhood_Somerst|BsmtExposure_Av', 'FireplaceQu_Po|GarageYrBlt', 'Heating_Grav|SaleType_Tencode', 'GarageCars|GarageCond_Tencode', 'SaleType_ConLw|LowQualFinSF', 'SaleCondition_Family|SaleCondition_Alloca', 'OpenPorchSF|BsmtCond_Fa', 'EnclosedPorch|Exterior2nd_HdBoard', 'SaleCondition_Partial|Neighborhood_BrkSide', 'Alley_Pave|BldgType_Tencode', 'BldgType_Duplex|Neighborhood_Sawyer', 'Neighborhood_Tencode|Exterior1st_VinylSd', 'Alley_Pave|GarageType_BuiltIn', 'YearRemodAdd|Exterior1st_VinylSd', 'BsmtFinType2_ALQ|Condition1_Tencode', 'Exterior1st_VinylSd|PavedDrive_P', 'TotRmsAbvGrd|GarageYrBlt', 'Neighborhood_Mitchel|KitchenQual_Ex', 'Neighborhood_OldTown|ExterQual_Tencode', 'Neighborhood_NPkVill|BsmtFinType2_Rec', 'Alley_Pave|KitchenQual_Tencode', 'YearRemodAdd|Exterior1st_MetalSd', 'KitchenQual_Fa|CentralAir_Y', 'TotalBsmtSF|MSZoning_Tencode', 'FireplaceQu_Fa|MiscFeature_Gar2', '1stFlrSF|SaleCondition_Abnorml', 'PavedDrive_Y|PavedDrive_Tencode', 'ExterQual_TA|SaleType_ConLD', 'KitchenAbvGr|GarageYrBlt', 'Neighborhood_Sawyer|Condition2_Norm', 'MSZoning_C (all)|Functional_Mod', 'LandSlope_Gtl|Alley_Grvl', 'Neighborhood_NAmes|Condition2_Norm', 'LotShape_IR1|Exterior2nd_HdBoard', 'KitchenQual_Tencode|BldgType_TwnhsE', 'GrLivArea|Heating_GasA', 'HeatingQC_TA|BldgType_TwnhsE', 'Electrical_FuseP|Neighborhood_BrkSide', 'SaleCondition_Tencode|Neighborhood_NoRidge', 'Condition1_RRAe|GarageType_CarPort', 'LotShape_IR2|SaleType_CWD', 'FireplaceQu_Tencode|Neighborhood_IDOTRR', 'Neighborhood_Blmngtn|BsmtQual_Fa', 'BsmtFinType1_Tencode|OpenPorchSF', 'GarageQual_Gd|Exterior1st_Stucco', 'MasVnrType_BrkCmn|BsmtExposure_Gd', 'MSZoning_RL|Fence_MnPrv', 'HouseStyle_SFoyer|BldgType_Twnhs', 'LowQualFinSF|PavedDrive_P', 'GarageQual_Fa|Utilities_AllPub', 'GarageType_BuiltIn|Exterior2nd_Wd Sdng', 'BsmtExposure_Av|Neighborhood_MeadowV', 'LotArea|FireplaceQu_TA', 'GarageQual_Tencode|Neighborhood_BrkSide', 'LotFrontage|PavedDrive_P', 'Exterior2nd_Tencode|MasVnrType_Stone', 'LotArea|Exterior1st_Plywood', 'HeatingQC_Fa|LotShape_IR1', 'BsmtFinType1_Tencode|Neighborhood_Mitchel', 'BedroomAbvGr|Street_Pave', 'RoofStyle_Gambrel|Functional_Mod', 'BsmtFinSF2|CentralAir_Tencode', 'YearRemodAdd|Exterior1st_Wd Sdng', 'BldgType_1Fam|Exterior2nd_Brk Cmn', 'HouseStyle_1.5Unf|Functional_Mod', 'OverallQual|Neighborhood_MeadowV', 'Condition1_Artery|LotShape_IR2', 'Functional_Typ|RoofMatl_CompShg', 'MiscVal|Heating_Tencode', 'Electrical_Tencode|Neighborhood_OldTown', 'MiscFeature_Shed|Condition1_Tencode', 'BsmtQual_Tencode|LotConfig_CulDSac', 'BsmtQual_TA|Street_Pave', 'RoofStyle_Shed|Functional_Min1', 'Neighborhood_OldTown|HouseStyle_2.5Unf', 'GarageType_Attchd|MiscFeature_Shed', 'BldgType_2fmCon|Condition1_PosN', 'Condition1_Norm|Condition1_RRAn', 'Exterior2nd_Stucco|SaleCondition_Normal', 'Exterior2nd_Stone|Exterior2nd_Wd Shng', 'GarageQual_Gd|FireplaceQu_Fa', 'Condition1_RRAn|Exterior1st_MetalSd', 'Exterior2nd_VinylSd|BsmtFinType1_GLQ', 'TotalBsmtSF|SaleCondition_Normal', 'GarageArea|Neighborhood_Crawfor', 'Fence_Tencode|KitchenQual_Tencode', 'BsmtFinType2_Tencode|Neighborhood_Edwards', 'GarageFinish_Tencode|BsmtFinType2_Rec', 'Electrical_Tencode|SaleCondition_Partial', 'RoofStyle_Hip|LotArea', 'LotConfig_CulDSac|Fence_GdWo', 'Exterior1st_AsbShng|Exterior2nd_MetalSd', 'Condition1_Tencode|LotConfig_Inside', 'MiscFeature_Shed|Exterior2nd_HdBoard', 'RoofMatl_CompShg|Exterior1st_CemntBd', 'ExterCond_TA|Fence_GdWo', 'RoofStyle_Hip|GarageQual_Tencode', 'BsmtFinType1_Rec|GarageType_2Types', 'BsmtHalfBath|SaleType_WD', 'BldgType_TwnhsE|BsmtFinType1_LwQ', 'Neighborhood_CollgCr|BsmtFinType2_BLQ', 'GarageCond_Ex|MSZoning_RL', 'BsmtFinType1_Rec|MSZoning_Tencode', 'Exterior2nd_Plywood|MasVnrType_Tencode', 'HeatingQC_Tencode|OpenPorchSF', 'LotArea|HouseStyle_1.5Unf', 'Electrical_SBrkr|BldgType_Tencode', 'BsmtFinType2_BLQ|OverallCond', 'Functional_Min1|BsmtFinType2_Unf', 'HeatingQC_TA|RoofStyle_Gambrel', 'RoofStyle_Tencode|BsmtExposure_No', 'BsmtQual_TA|SaleType_Oth', 'Heating_GasA|Exterior1st_VinylSd', 'Condition2_Artery|OverallCond', 'GarageCond_TA|Exterior2nd_Brk Cmn', 'RoofStyle_Flat|BsmtQual_Ex', 'Heating_Tencode|Neighborhood_SWISU', 'FireplaceQu_Po|LandSlope_Gtl', 'Functional_Tencode|Exterior2nd_Wd Shng', 'FireplaceQu_Gd|BsmtFinType1_Rec', 'ExterCond_Gd|BldgType_Tencode', 'Heating_Grav|Electrical_SBrkr', 'BsmtCond_Tencode|PoolArea', 'KitchenQual_Gd|BsmtFullBath', 'Condition1_PosA|BsmtCond_Tencode', 'KitchenAbvGr|SaleType_COD', 'Heating_Grav|Fence_MnPrv', 'Functional_Min1|BsmtFinSF1', 'Exterior2nd_VinylSd|MiscFeature_Tencode', 'SaleCondition_Normal|LotConfig_Inside', 'LandContour_HLS|Neighborhood_Gilbert', 'KitchenAbvGr|SaleCondition_Alloca', 'BsmtQual_Tencode|HeatingQC_Tencode', 'Neighborhood_ClearCr|Functional_Min2', 'Fence_GdWo|BldgType_Tencode', 'Condition1_Tencode|Functional_Min2', 'OverallQual|LandContour_Low', 'BsmtFinType2_Tencode|Alley_Tencode', 'HeatingQC_Gd|HouseStyle_2.5Unf', 'FireplaceQu_Fa|Neighborhood_MeadowV', 'GarageFinish_Tencode|LandSlope_Gtl', 'GarageFinish_Unf|TotRmsAbvGrd', 'FireplaceQu_Gd|BldgType_Twnhs', 'Exterior1st_AsbShng|Neighborhood_Veenker', 'GarageFinish_Tencode|ExterQual_Tencode', 'MasVnrType_None|KitchenQual_Fa', 'KitchenAbvGr|Foundation_PConc', 'Functional_Tencode|OpenPorchSF', 'GarageCars|BsmtCond_Gd', 'Heating_Grav|ExterQual_Ex', 'RoofStyle_Shed|Condition2_Norm', 'Foundation_Stone|BsmtQual_TA', 'SaleType_New|Fence_MnWw', 'Neighborhood_Mitchel|Fence_MnPrv', 'Exterior2nd_VinylSd|MasVnrType_BrkFace', 'SaleType_ConLI', 'GarageType_Detchd|Electrical_SBrkr', 'Alley_Tencode|PavedDrive_Y', 'Functional_Typ|Street_Pave', 'BsmtFinType1_BLQ|PoolArea', 'HeatingQC_TA|SaleType_ConLD', 'Street_Tencode|HeatingQC_Fa', 'Condition2_Norm|Foundation_Slab', 'Neighborhood_StoneBr|SaleCondition_Partial', 'KitchenQual_Fa|Neighborhood_Timber', 'BsmtCond_Gd|SaleType_CWD', 'Street_Tencode|GarageCond_Fa', 'FireplaceQu_TA|Neighborhood_BrkSide', 'Condition2_Tencode|LandSlope_Gtl', 'PoolQC_Tencode|BsmtCond_Gd', 'BsmtQual_Ex|Condition2_Artery', 'ExterCond_Tencode|BsmtFinType2_LwQ', 'GarageFinish_Fin|FireplaceQu_Po', 'FullBath|RoofStyle_Gambrel', 'BsmtFinType2_LwQ|Fence_MnWw', 'BsmtExposure_Tencode|MasVnrType_None', 'LotConfig_FR2|SaleType_WD', 'LotConfig_Corner|Exterior2nd_BrkFace', 'Exterior1st_HdBoard|BsmtFinType1_LwQ', 'HouseStyle_1.5Unf|BsmtCond_Gd', 'TotRmsAbvGrd|Condition1_Tencode', 'CentralAir_Tencode|Exterior2nd_Plywood', 'Street_Tencode|OpenPorchSF', 'Alley_Tencode|1stFlrSF', 'BsmtCond_Gd|ExterCond_Fa', 'Foundation_PConc|Exterior1st_CemntBd', 'Heating_Tencode|LandContour_HLS', '3SsnPorch|HouseStyle_1.5Unf', 'SaleType_ConLI|GarageType_BuiltIn', 'BldgType_Twnhs|Neighborhood_NAmes', 'BsmtQual_Fa|Exterior2nd_Plywood', 'Functional_Tencode|Neighborhood_NoRidge', 'RoofMatl_Tencode|GarageFinish_Fin', 'HouseStyle_SLvl|Utilities_AllPub', 'Exterior1st_AsbShng|LandSlope_Sev', 'BsmtFinType2_Rec|SaleType_CWD', 'GrLivArea|SaleCondition_Family', 'BsmtCond_Gd|Exterior1st_Plywood', 'Neighborhood_NPkVill|Electrical_Tencode', 'HeatingQC_TA|Fence_MnPrv', 'GarageArea|MiscFeature_Tencode', 'LandContour_Lvl|ExterCond_Fa', 'RoofStyle_Gambrel|BsmtExposure_No', 'Fireplaces|GarageQual_Fa', 'ExterQual_TA|GarageCond_Gd', 'BsmtFinType2_LwQ|LotShape_IR3', 'CentralAir_Tencode|MiscFeature_Gar2', 'Neighborhood_CollgCr|FireplaceQu_TA', 'EnclosedPorch|LotShape_IR3', 'Neighborhood_NoRidge|Exterior1st_Stucco', 'SaleType_CWD|Exterior1st_MetalSd', 'GarageQual_TA|Exterior2nd_CmentBd', 'Alley_Pave|SaleCondition_Partial', 'YearBuilt|Exterior1st_CemntBd', 'Functional_Typ|ExterCond_TA', 'LandContour_HLS|BsmtExposure_Gd', 'Condition1_PosN|Street_Pave', 'Neighborhood_NoRidge|Exterior1st_VinylSd', 'Neighborhood_Mitchel|MasVnrArea', 'Electrical_Tencode|GarageQual_Fa', 'PoolQC_Tencode|HouseStyle_1.5Unf', 'SaleType_New|Foundation_Slab', 'Condition1_RRAn|MasVnrType_Tencode', 'YearRemodAdd|KitchenQual_TA', 'Condition1_Feedr|Functional_Min2', 'RoofMatl_Tencode|Functional_Mod', 'HeatingQC_Fa|Electrical_SBrkr', 'EnclosedPorch|GarageType_Basment', 'BsmtFinType2_GLQ|BsmtCond_Gd', 'ExterCond_Gd|GarageCond_Ex', 'KitchenQual_Ex|LotConfig_CulDSac', 'FireplaceQu_Gd|Neighborhood_OldTown', 'FireplaceQu_Ex|Neighborhood_StoneBr', 'Heating_Grav|BsmtHalfBath', 'ExterQual_TA|LotConfig_FR2', 'MiscFeature_Shed|RoofMatl_WdShngl', 'BsmtCond_Tencode|BsmtFinType2_Unf', 'PavedDrive_N|SaleType_ConLD', 'Exterior2nd_MetalSd|Utilities_AllPub', 'Exterior1st_HdBoard|LandContour_Lvl', 'BsmtFinType2_ALQ|SaleCondition_Alloca', 'RoofStyle_Hip|BsmtCond_Po', 'SaleType_COD|LotConfig_Inside', 'Condition1_Feedr|MSSubClass', 'Alley_Tencode|Exterior2nd_Wd Sdng', 'ExterQual_Gd|MSSubClass', 'SaleType_Tencode|Neighborhood_IDOTRR', 'Alley_Pave|Electrical_FuseP', '1stFlrSF|Exterior1st_MetalSd', 'FireplaceQu_Po|BsmtQual_Gd', 'Exterior2nd_Stucco|BsmtFinType2_GLQ', 'BsmtUnfSF|BsmtCond_Gd', 'SaleType_ConLI|Exterior1st_WdShing', 'Condition1_PosN|SaleType_New', 'Electrical_FuseA|Condition2_Norm', 'SaleType_Oth|MSZoning_Tencode', 'LandContour_HLS|RoofStyle_Tencode', 'GarageQual_Fa|Condition1_Norm', 'BldgType_Duplex|Alley_Grvl', 'Exterior2nd_BrkFace|GarageFinish_Tencode', 'Condition1_Feedr|CentralAir_Y', 'HeatingQC_Gd|Exterior2nd_Wd Shng', 'EnclosedPorch|Foundation_Tencode', 'FireplaceQu_Gd|Fence_MnWw', 'PavedDrive_Tencode|MasVnrType_Stone', 'RoofStyle_Hip|2ndFlrSF', 'BsmtFinType1_ALQ|GarageFinish_RFn', 'EnclosedPorch|SaleType_New', 'Neighborhood_Veenker|BsmtFinType2_BLQ', 'BsmtFullBath|KitchenQual_Tencode', 'BsmtFinType2_GLQ|ExterQual_Tencode', 'LowQualFinSF|1stFlrSF', 'Neighborhood_NridgHt|Exterior1st_Stucco', 'OverallQual|BsmtFinType2_ALQ', 'Fireplaces|PoolArea', 'PavedDrive_N|ExterQual_Gd', 'Fence_Tencode|BsmtCond_Gd', 'KitchenQual_Tencode|Exterior1st_Wd Sdng', 'Neighborhood_CollgCr|ExterCond_Gd', 'GarageFinish_Unf|CentralAir_Y', 'GarageQual_Fa|Fence_GdWo', 'CentralAir_Y|BsmtExposure_Gd', 'BsmtFinType2_BLQ|Exterior2nd_Wd Shng', 'FireplaceQu_TA|BsmtExposure_Gd', 'KitchenQual_Tencode|Foundation_CBlock', 'Fireplaces|Fence_GdWo', 'Neighborhood_BrDale|FireplaceQu_TA', 'FireplaceQu_Po|Condition2_Norm', 'YearRemodAdd|MiscFeature_Shed', 'LandContour_Low|FullBath', 'GarageType_Detchd|Fence_GdWo', 'Foundation_BrkTil|Neighborhood_Crawfor', 'Fence_Tencode|BsmtFinType2_Unf', 'GarageCond_Tencode|Fence_MnWw', 'RoofStyle_Gable|MiscFeature_Tencode', 'YearBuilt|LowQualFinSF', 'Neighborhood_Blmngtn|TotRmsAbvGrd', 'ExterCond_TA|Fence_Tencode', 'FireplaceQu_Fa|GarageType_Attchd', 'Exterior2nd_Stucco|Condition2_Tencode', 'Exterior2nd_BrkFace|Condition1_PosN', 'BsmtFinType2_ALQ|KitchenQual_Fa', 'MasVnrType_BrkCmn|ExterQual_Ex', 'Exterior2nd_VinylSd|LandContour_Tencode', 'OpenPorchSF|WoodDeckSF', 'BsmtExposure_Av|Condition1_Tencode', 'Foundation_Tencode|MasVnrArea', 'LotConfig_FR2|MasVnrType_Tencode', 'Neighborhood_Timber|Exterior2nd_AsphShn', 'FireplaceQu_Fa|OpenPorchSF', 'BsmtFinType2_Rec|GarageQual_Po', 'Condition1_Feedr|Exterior2nd_Plywood', 'Condition1_PosA|Street_Grvl', 'LandSlope_Sev|BsmtExposure_Mn', 'Alley_Tencode|Exterior2nd_AsphShn', 'Street_Tencode|BsmtCond_Fa', 'RoofStyle_Hip|ExterCond_Fa', 'Street_Tencode|Exterior1st_Plywood', 'Neighborhood_NridgHt|BsmtExposure_Mn', 'BedroomAbvGr|FireplaceQu_Fa', '1stFlrSF|MasVnrArea', 'Fence_Tencode|HouseStyle_SLvl', 'FireplaceQu_Ex|Fence_GdWo', 'BsmtExposure_Gd|Neighborhood_SawyerW', 'GarageQual_Gd|Fence_MnPrv', 'ExterCond_Gd|Condition2_Norm', 'OverallQual|RoofMatl_Tar&Grv', 'MiscVal|SaleType_New', 'ExterCond_Tencode|Neighborhood_SawyerW', 'LandContour_HLS|Exterior1st_Tencode', 'LotConfig_Corner|HouseStyle_Tencode', 'Exterior2nd_AsbShng|LotShape_IR3', 'BldgType_Tencode|MasVnrType_Stone', 'Neighborhood_Sawyer|Exterior2nd_Plywood', 'BsmtQual_Fa|ExterQual_Tencode', 'BsmtCond_Fa|HouseStyle_2Story', 'Foundation_Stone|Condition1_PosN', 'LandSlope_Mod|Fence_GdPrv', 'Neighborhood_Blmngtn|LandContour_Lvl', 'FireplaceQu_Tencode|SaleCondition_Abnorml', 'Electrical_FuseA|Functional_Mod', 'FireplaceQu_Ex|Exterior2nd_Plywood', 'BldgType_Twnhs|GarageCond_Tencode', 'Foundation_Stone|Street_Grvl', 'LotShape_Tencode|HeatingQC_Gd', 'Condition1_PosA|Exterior2nd_Plywood', 'BsmtExposure_Tencode|Condition1_Feedr', 'Electrical_SBrkr|FireplaceQu_Ex', 'Exterior1st_Stucco|BsmtCond_Po', 'RoofStyle_Flat|Functional_Tencode', 'LotConfig_CulDSac|HouseStyle_2.5Unf', 'GarageType_Detchd|Condition1_PosN', 'GarageCond_Fa|LandSlope_Gtl', 'BsmtCond_Tencode|Neighborhood_SawyerW', 'Heating_GasA|GarageCond_TA', 'Exterior2nd_Tencode|LandContour_Bnk', 'YearBuilt|Functional_Mod', 'LotConfig_FR2|GarageYrBlt', 'SaleCondition_Partial|LotShape_IR3', 'BedroomAbvGr|HouseStyle_2Story', 'Exterior1st_Stucco|BsmtFinType1_LwQ', 'LandContour_Low|Fence_GdPrv', 'ExterQual_Tencode|ExterQual_Fa', '1stFlrSF|Fence_MnPrv', 'Alley_Pave|RoofMatl_Tar&Grv', 'LandSlope_Gtl|ExterQual_Gd', 'Neighborhood_NoRidge|BsmtFinType2_LwQ', 'Neighborhood_NPkVill|GarageCond_Gd', 'BsmtFinType1_Tencode|Fence_GdWo', 'Neighborhood_NridgHt|YearBuilt', 'Condition1_PosA|Utilities_AllPub', 'BsmtQual_TA|BldgType_Tencode', 'LandSlope_Mod|Condition2_Artery', 'RoofMatl_CompShg|GarageType_Basment', 'SaleCondition_Tencode|YearRemodAdd', 'LotShape_IR1|Foundation_BrkTil', 'GarageFinish_Tencode|Fence_MnPrv', 'RoofMatl_Tencode|ExterQual_Tencode', 'Exterior2nd_Stucco|Neighborhood_NPkVill', 'GrLivArea|HouseStyle_1.5Unf', 'LandSlope_Tencode|LandSlope_Gtl', 'HeatingQC_Tencode|SaleType_CWD', 'SaleCondition_Tencode|Foundation_BrkTil', 'Fence_GdPrv|Electrical_FuseF', 'BsmtFullBath|GarageArea', 'LotConfig_Tencode|PavedDrive_P', 'Exterior1st_MetalSd', 'BsmtFinSF1|FireplaceQu_TA', 'LotFrontage|LandSlope_Sev', 'HouseStyle_1Story|GarageArea', 'OpenPorchSF|BldgType_Tencode', 'BsmtHalfBath|Condition1_PosN', 'BsmtFinType2_GLQ|FullBath', 'Exterior2nd_Stone|Exterior1st_HdBoard', 'RoofMatl_Tar&Grv|Exterior2nd_Plywood', 'BsmtFinSF2|Electrical_SBrkr', 'Neighborhood_Somerst|LandSlope_Mod', 'YrSold|ExterCond_TA', 'Exterior2nd_Tencode|OverallCond', 'Fireplaces|LandSlope_Gtl', 'Fence_GdPrv|BsmtQual_TA', 'Exterior2nd_BrkFace|SaleType_Oth', 'GarageQual_Po|FireplaceQu_TA', 'Condition1_PosN|MiscFeature_Tencode', 'Foundation_BrkTil|Foundation_CBlock', 'Street_Grvl|Exterior2nd_Wd Shng', 'Neighborhood_Gilbert|BsmtCond_Fa', 'Alley_Tencode|Neighborhood_CollgCr', 'GarageType_Attchd|MSZoning_Tencode', 'SaleType_ConLD|OpenPorchSF', 'BsmtQual_TA|SaleType_New', 'ExterQual_Gd|BsmtCond_Tencode', 'BldgType_Duplex|GarageCars', 'CentralAir_Y|Exterior2nd_Wd Shng', 'BldgType_Twnhs|HouseStyle_1.5Unf', 'ExterCond_Gd|MiscFeature_Tencode', 'LotShape_IR2|GarageQual_TA', 'GarageCond_TA|KitchenQual_Tencode', 'GarageType_Attchd|GarageQual_Po', 'Heating_GasW|MasVnrType_BrkFace', 'RoofStyle_Gambrel|Exterior2nd_AsphShn', 'MiscVal|Foundation_CBlock', 'LotShape_IR1|Neighborhood_NoRidge', 'Heating_Tencode|Fence_MnPrv', 'Exterior2nd_Stone|Exterior2nd_MetalSd', 'Fence_Tencode|SaleCondition_Partial', 'Functional_Maj1|SaleType_COD', 'Heating_GasA|ExterQual_Ex', 'RoofStyle_Tencode|Exterior2nd_Brk Cmn', 'LotConfig_FR2|BldgType_TwnhsE', 'HouseStyle_1.5Fin|Neighborhood_MeadowV', 'LotShape_IR2|RoofMatl_CompShg', 'LowQualFinSF|Condition1_Tencode', 'Heating_GasW|Functional_Maj2', 'Neighborhood_NAmes|Neighborhood_StoneBr', 'ExterQual_Ex|Condition1_Tencode', 'LotConfig_CulDSac|MiscFeature_Shed', 'BsmtFinType1_ALQ|FireplaceQu_Ex', 'GarageQual_TA|MiscFeature_Gar2', 'LotConfig_Tencode|BldgType_TwnhsE', 'KitchenQual_Ex|SaleType_ConLD', 'YearBuilt|Foundation_Slab', 'Fence_GdWo|Exterior1st_WdShing', 'MiscFeature_Gar2|BsmtCond_Fa', 'HeatingQC_TA|Neighborhood_Gilbert', 'HeatingQC_Gd|Street_Pave', 'Neighborhood_Mitchel|Functional_Mod', 'BsmtFinType2_Tencode|Neighborhood_Tencode', 'Street_Tencode|Neighborhood_Timber', 'HeatingQC_Tencode|RoofStyle_Gambrel', 'Exterior1st_AsbShng|SaleCondition_Abnorml', 'LandContour_HLS|BsmtCond_Fa', 'LandContour_HLS|HeatingQC_Tencode', 'LotConfig_Corner|Functional_Mod', 'BsmtExposure_Av|LotShape_IR3', 'MiscVal|MSZoning_RH', 'BsmtFinType2_Tencode|BsmtFinType2_GLQ', 'BsmtQual_Tencode|GarageFinish_RFn', 'TotalBsmtSF|MasVnrType_BrkCmn', 'Exterior2nd_AsbShng|BsmtUnfSF', 'Street_Tencode|Exterior2nd_Wd Shng', 'LandSlope_Mod|HouseStyle_Tencode', 'SaleCondition_Family|GarageType_BuiltIn', 'LotShape_Tencode|SaleCondition_Family', 'RoofStyle_Tencode|ExterQual_Tencode', 'ExterCond_Tencode|Exterior1st_BrkComm', 'HouseStyle_2.5Unf|Neighborhood_Gilbert', 'GarageType_Basment|BsmtExposure_Mn', 'FireplaceQu_Tencode|Heating_Grav', 'SaleType_ConLw|RoofStyle_Tencode', 'HouseStyle_1Story|Exterior2nd_Wd Sdng', 'Functional_Maj1|BsmtCond_Gd', 'LandSlope_Tencode|Condition1_Tencode', 'Exterior2nd_Stone|FireplaceQu_Po', 'LandContour_HLS|BsmtFinType1_Unf', 'BsmtFinType2_BLQ|Condition2_Artery', 'Condition1_PosA|Exterior2nd_Brk Cmn', 'HeatingQC_Tencode|Exterior1st_VinylSd', 'Functional_Tencode|Exterior2nd_Brk Cmn', 'FireplaceQu_Gd|BsmtFinType1_ALQ', 'Exterior2nd_BrkFace|BsmtFinType1_GLQ', 'BsmtFinType2_ALQ|LandSlope_Gtl', 'GarageCond_Gd|OpenPorchSF', 'HeatingQC_Tencode|MasVnrType_Stone', 'Exterior2nd_AsbShng', 'Condition1_PosN|Neighborhood_MeadowV', 'HeatingQC_Gd|Exterior1st_BrkComm', 'PavedDrive_N|RoofMatl_Tencode', 'LotShape_IR1|LowQualFinSF', 'Exterior1st_BrkFace|Exterior1st_Wd Sdng', 'GrLivArea|MasVnrType_Stone', 'BsmtCond_Gd|ScreenPorch', 'Exterior2nd_CmentBd|Condition1_RRAn', 'GarageCond_Gd|SaleType_COD', 'Exterior1st_Tencode|Fence_MnPrv', 'Neighborhood_Somerst|GarageCars', 'BsmtFinType2_Unf|MasVnrType_Stone', 'Fence_Tencode|PoolArea', 'BsmtFinType2_Rec|Exterior2nd_AsphShn', 'BsmtFinType1_ALQ|BsmtFinType1_GLQ', 'TotalBsmtSF|Foundation_Slab', 'Neighborhood_Somerst|HouseStyle_1.5Fin', 'SaleType_ConLw|BsmtFinType2_Rec', 'Exterior2nd_CmentBd|Condition2_Artery', 'BsmtExposure_Tencode|HouseStyle_1Story', 'CentralAir_N|Exterior1st_Plywood', 'HouseStyle_1Story|MasVnrType_BrkFace', 'Heating_GasA|GarageQual_Gd', 'LotShape_IR1|BsmtFinType1_Unf', 'Functional_Typ|MasVnrType_BrkFace', 'KitchenQual_Gd|HouseStyle_2Story', 'GarageCond_Tencode', 'Neighborhood_Tencode|ExterQual_Fa', 'Exterior2nd_MetalSd|SaleCondition_Partial', 'BldgType_TwnhsE|MasVnrType_Tencode', 'Neighborhood_Edwards|BsmtFinType2_Unf', 'Exterior1st_HdBoard|SaleType_COD', 'RoofMatl_Tencode|Exterior1st_AsbShng', 'ExterCond_Gd|LotConfig_Inside', 'Neighborhood_Tencode|SaleType_ConLI', 'Street_Tencode|BsmtFinType2_GLQ', 'Neighborhood_NWAmes|Exterior1st_Tencode', 'Electrical_SBrkr|FireplaceQu_TA', 'OverallQual|BsmtCond_TA', 'Neighborhood_CollgCr|BsmtUnfSF', 'RoofStyle_Tencode|BsmtCond_Fa', 'Exterior1st_BrkFace|Alley_Tencode', 'RoofStyle_Shed|SaleType_COD', 'Fence_Tencode|1stFlrSF', '3SsnPorch|Exterior1st_Tencode', 'SaleType_ConLI|Condition2_Tencode', 'BldgType_Twnhs|Exterior1st_WdShing', 'ExterQual_Ex|HouseStyle_2.5Unf', 'BsmtQual_TA|RoofStyle_Gambrel', 'BsmtFinSF1|Exterior2nd_Plywood', 'PoolArea|Neighborhood_MeadowV', 'Condition1_Norm|MSZoning_RH', 'RoofStyle_Tencode|Condition1_Tencode', 'FireplaceQu_Po|BsmtExposure_Gd', 'Condition1_Norm|Exterior2nd_HdBoard', 'SaleType_WD|GarageFinish_RFn', 'Foundation_BrkTil|Exterior1st_MetalSd', 'GarageCond_Ex|MasVnrType_BrkFace', 'Exterior2nd_Wd Sdng|Neighborhood_Timber', 'SaleCondition_Family|GarageFinish_RFn', 'HouseStyle_1Story|GrLivArea', 'Heating_Tencode|Condition1_PosN', 'Neighborhood_StoneBr|Exterior1st_MetalSd', 'HouseStyle_1.5Unf|ScreenPorch', 'GarageType_BuiltIn|HouseStyle_1.5Fin', 'GarageFinish_Unf|LandSlope_Mod', 'KitchenAbvGr|Neighborhood_Blmngtn', 'Foundation_PConc|Condition1_Tencode', 'YearBuilt|Exterior1st_Tencode', 'GarageType_Detchd|Foundation_Slab', 'LotFrontage|SaleType_WD', 'Foundation_Tencode|BsmtFinType1_ALQ', 'Exterior1st_Stucco|LandSlope_Gtl', 'LandContour_Low|Functional_Maj2', 'BsmtExposure_Tencode|HouseStyle_2.5Unf', 'Alley_Grvl|LotConfig_Inside', 'Alley_Tencode|Exterior2nd_VinylSd', 'CentralAir_Y|Exterior2nd_HdBoard', 'YearBuilt|MSZoning_RM', 'HouseStyle_1.5Fin|WoodDeckSF', 'OpenPorchSF|Neighborhood_Sawyer', 'SaleType_ConLI|Condition1_Tencode', 'SaleCondition_Tencode|Condition1_RRAn', 'LotShape_IR1|RoofMatl_CompShg', 'HouseStyle_Tencode|LandSlope_Tencode', 'Exterior2nd_AsbShng|Neighborhood_BrDale', 'BsmtFinType1_BLQ|SaleType_Oth', 'KitchenAbvGr|ExterCond_Fa', 'Fireplaces|BsmtExposure_No', 'ExterCond_Gd|MasVnrType_BrkCmn', 'Neighborhood_ClearCr|HalfBath', 'LandContour_Lvl|HouseStyle_2.5Unf', 'GarageType_Detchd|HouseStyle_SFoyer', 'LotShape_IR2|Condition2_Tencode', 'Neighborhood_SWISU|Exterior1st_MetalSd', 'SaleCondition_Alloca|BsmtFinType1_LwQ', 'GarageQual_Po|Condition1_Feedr', 'BsmtHalfBath|Exterior1st_Wd Sdng', 'Exterior1st_Stucco|BsmtCond_Fa', 'Exterior1st_AsbShng|GarageArea', 'LotConfig_Tencode|2ndFlrSF', 'MSZoning_RL|BsmtCond_Fa', 'Neighborhood_Crawfor|Exterior2nd_AsphShn', 'Functional_Typ|Exterior2nd_MetalSd', 'LotConfig_CulDSac|WoodDeckSF', 'Foundation_BrkTil|MasVnrType_Tencode', 'RoofStyle_Gambrel|Exterior1st_MetalSd', 'GrLivArea|ExterCond_Gd', 'Alley_Tencode|ExterCond_Tencode', 'BsmtFinType2_LwQ|Exterior1st_Tencode', 'PavedDrive_Y|Street_Grvl', 'Fence_Tencode|GarageType_CarPort', 'Neighborhood_SWISU|FireplaceQu_Ex', 'RoofMatl_Tar&Grv|Exterior2nd_MetalSd', 'SaleType_CWD|RoofMatl_WdShngl', 'YrSold|Exterior2nd_VinylSd', 'Neighborhood_Veenker|GarageType_Attchd', 'GarageType_CarPort|MSZoning_Tencode', 'Exterior2nd_Stucco|Neighborhood_CollgCr', 'SaleType_Tencode|CentralAir_N', 'BsmtQual_Ex|PavedDrive_Y', 'BsmtQual_Fa|OverallCond', 'MiscFeature_Shed|CentralAir_N', 'Neighborhood_Edwards|RoofMatl_WdShngl', 'LandContour_Lvl|Foundation_Slab', 'LotShape_Tencode|Foundation_Stone', 'BsmtHalfBath|Neighborhood_MeadowV', 'GarageArea|Foundation_CBlock', 'GarageFinish_RFn|Neighborhood_MeadowV', 'FireplaceQu_Gd|Alley_Pave', 'GarageQual_Tencode|Condition1_RRAn', 'RoofStyle_Gambrel|ExterQual_Fa', 'GarageCond_Ex|Neighborhood_SawyerW', 'GarageCars|MSZoning_FV', 'Neighborhood_Somerst|LotArea', 'LandSlope_Mod|PoolArea', 'FireplaceQu_Po|ExterQual_Tencode', 'OpenPorchSF|ExterQual_Fa', 'BsmtCond_Gd|Fence_GdWo', 'KitchenQual_Fa|Exterior1st_Tencode', 'LotShape_Reg|Functional_Tencode', 'Neighborhood_NridgHt|HouseStyle_SFoyer', 'Exterior1st_VinylSd|MasVnrType_Tencode', 'Exterior2nd_BrkFace|BsmtCond_Fa', 'Functional_Maj2|BsmtFinType1_Unf', 'Fence_GdPrv|Neighborhood_Gilbert', 'Neighborhood_Tencode|SaleCondition_Abnorml', 'SaleCondition_Partial|ExterCond_Fa', 'Heating_Grav|BsmtFinType1_GLQ', 'Neighborhood_NoRidge|MasVnrType_Tencode', 'BsmtFinType1_Rec|WoodDeckSF', 'LowQualFinSF|Neighborhood_IDOTRR', 'LandSlope_Sev|LandContour_HLS', 'Exterior2nd_Wd Sdng|Exterior1st_VinylSd', 'RoofStyle_Hip|MiscFeature_Othr', 'Exterior1st_AsbShng|PoolArea', 'YrSold|Exterior1st_Stucco', 'MSZoning_C (all)|RoofStyle_Gable', 'MiscFeature_Shed|ExterCond_Fa', 'Neighborhood_ClearCr|BsmtFinType2_ALQ', 'GarageCond_Po|Functional_Min2', 'BsmtFinType1_ALQ|SaleCondition_Abnorml', 'MiscFeature_Tencode|Exterior1st_VinylSd', 'GarageQual_Gd|Condition2_Norm', 'GarageFinish_Fin|Functional_Mod', 'BldgType_2fmCon|GarageCars', 'BldgType_Duplex|GarageQual_Tencode', 'RoofStyle_Hip|LandContour_Lvl', '2ndFlrSF|Neighborhood_BrkSide', 'MiscFeature_Tencode|MasVnrType_Stone', 'Heating_Grav|LotConfig_CulDSac', 'LotArea|MasVnrType_BrkFace', 'YearRemodAdd|Neighborhood_Blmngtn', 'RoofStyle_Hip|Electrical_FuseP', 'BldgType_Duplex|GarageCond_Po', 'Neighborhood_Mitchel|LandContour_HLS', 'Foundation_PConc|Neighborhood_Tencode', 'ExterCond_TA|Exterior1st_MetalSd', 'Heating_GasW|RoofMatl_Tar&Grv', 'SaleType_ConLI|Condition1_Norm', 'Condition1_Artery|Fence_GdPrv', 'FireplaceQu_Po|RoofStyle_Shed', 'YearBuilt|FireplaceQu_Ex', 'Neighborhood_Sawyer|BsmtCond_Tencode', 'BsmtExposure_Av|Exterior1st_MetalSd', 'KitchenQual_Fa|CentralAir_N', 'MasVnrType_BrkCmn|Exterior2nd_Wd Shng', 'BldgType_Twnhs|Electrical_SBrkr', 'BsmtQual_Tencode|GarageQual_TA', 'Functional_Min1|MSSubClass', 'Electrical_FuseF|Utilities_AllPub', 'Exterior2nd_BrkFace|Condition1_PosA', 'SaleType_ConLw|GarageType_Basment', 'LandContour_Low|GarageCond_Tencode', 'HouseStyle_1Story|FireplaceQu_Gd', 'Exterior2nd_Stucco|BsmtFinType1_GLQ', 'GarageFinish_RFn|MSZoning_FV', 'GarageFinish_Tencode|Condition2_Norm', 'LandSlope_Gtl|Exterior1st_Wd Sdng', 'GarageCond_Fa|PavedDrive_P', 'RoofStyle_Flat|Neighborhood_Crawfor', 'MoSold|Fence_GdWo', 'YrSold|RoofStyle_Tencode', 'BsmtFinType1_Tencode|Utilities_AllPub', 'SaleType_WD|GarageQual_Tencode', 'GarageCond_TA|LotConfig_Corner', 'ExterCond_Tencode|TotRmsAbvGrd', 'Neighborhood_StoneBr|Neighborhood_IDOTRR', 'RoofMatl_Tencode|Functional_Min1', 'MSZoning_C (all)|BsmtCond_TA', 'Functional_Min1|Exterior1st_BrkComm', 'BsmtFinType2_Tencode|SaleType_ConLw', 'SaleType_Tencode|Heating_GasW', 'Neighborhood_NAmes|2ndFlrSF', 'OpenPorchSF|SaleType_COD', 'Street_Grvl|WoodDeckSF', 'MasVnrType_None|Condition1_Tencode', 'SaleType_Tencode|ExterQual_Fa', 'HouseStyle_1Story|YearBuilt', 'Exterior1st_HdBoard|BsmtFinType2_LwQ', 'Exterior1st_AsbShng|SaleCondition_Normal', 'LowQualFinSF|Exterior1st_VinylSd', 'PavedDrive_N|BldgType_Duplex', 'HeatingQC_Gd|BsmtFinType2_Unf', 'HeatingQC_Fa|GarageType_CarPort', 'BsmtFinSF2|BedroomAbvGr', 'BsmtFinType2_ALQ|Neighborhood_Tencode', 'ExterQual_TA|Condition1_RRAn', 'GarageCond_Fa|BsmtCond_Gd', 'SaleType_WD|RoofMatl_Tar&Grv', 'Neighborhood_CollgCr|MSZoning_RM', 'LowQualFinSF|Exterior2nd_CmentBd', 'BsmtExposure_Tencode|Heating_GasA', 'FireplaceQu_Ex|Foundation_Slab', 'TotalBsmtSF|Foundation_Tencode', 'GarageQual_TA|LotConfig_Inside', 'LotConfig_Corner|RoofMatl_CompShg', 'ExterQual_Gd|GarageType_2Types', 'HeatingQC_Gd|LandContour_HLS', 'ExterCond_TA|MiscFeature_Othr', 'BedroomAbvGr|GarageCond_Fa', 'Exterior1st_VinylSd|Exterior2nd_Wd Shng', 'Neighborhood_NridgHt|GarageYrBlt', 'Neighborhood_BrkSide|HouseStyle_1.5Fin', 'BsmtFinType2_Tencode|BsmtFinType1_Rec', 'GarageQual_Tencode|Exterior2nd_Plywood', 'KitchenQual_Gd|MasVnrType_Stone', 'SaleCondition_Abnorml|MasVnrType_Stone', 'LandSlope_Mod|LandSlope_Tencode', 'LotShape_Reg|Neighborhood_Tencode', 'YearRemodAdd|BsmtQual_Fa', 'Condition1_PosA|Fence_MnPrv', 'LotShape_Tencode|BsmtExposure_Av', 'Fence_MnPrv', 'SaleType_ConLD|3SsnPorch', 'CentralAir_Y|Exterior1st_Plywood', 'YearRemodAdd|Neighborhood_Tencode', 'BsmtFinType1_Tencode|Neighborhood_ClearCr', '3SsnPorch|Neighborhood_StoneBr', 'BsmtFinType1_BLQ|GarageCond_Ex', 'Neighborhood_NridgHt|RoofStyle_Hip', 'Condition1_Artery|PavedDrive_N', 'Neighborhood_Edwards|Exterior1st_WdShing', 'Foundation_PConc|FullBath', 'BldgType_Duplex|GarageCond_Ex', 'Neighborhood_Veenker|Neighborhood_SawyerW', 'Heating_GasW|HouseStyle_SLvl', 'RoofMatl_Tar&Grv|SaleCondition_Alloca', 'Electrical_FuseF|BsmtExposure_Gd', 'BsmtFinType2_Tencode|BsmtQual_Ex', 'GarageType_Detchd|Alley_Grvl', 'FireplaceQu_Tencode|Neighborhood_Tencode', 'Neighborhood_Edwards|GarageType_2Types', 'ExterQual_Fa|WoodDeckSF', 'Functional_Min1|GarageType_CarPort', 'Condition1_PosA|Functional_Mod', 'RoofMatl_CompShg|Fence_GdPrv', 'LotShape_IR1|Exterior1st_CemntBd', 'GarageQual_Po|Functional_Min1', 'BldgType_Duplex|Condition2_Norm', 'MSZoning_FV|LotShape_IR3', 'Alley_Pave|MasVnrType_BrkCmn', 'MSZoning_RM|GarageType_2Types', 'FireplaceQu_Tencode|Condition1_PosA', 'KitchenAbvGr|LotShape_IR2', 'Functional_Typ|Fence_GdWo', 'Exterior1st_AsbShng|Street_Pave', 'Condition1_RRAe|KitchenQual_TA', 'MoSold|1stFlrSF', 'ExterCond_Fa|MasVnrType_Tencode', 'GarageQual_Fa|ExterCond_Tencode', 'Neighborhood_BrDale|Exterior2nd_Stone', 'Neighborhood_Veenker|BsmtFinType1_LwQ', 'Exterior1st_VinylSd|MiscFeature_Gar2', 'GarageType_Detchd|HeatingQC_Gd', 'BsmtQual_Tencode|Fence_GdPrv', 'LotShape_Reg|BsmtQual_TA', 'BsmtQual_Fa|MSZoning_C (all)', 'TotalBsmtSF|HeatingQC_Gd', 'RoofStyle_Hip|Electrical_FuseA', 'Exterior2nd_Stone|TotalBsmtSF', 'Utilities_Tencode|MasVnrType_None', 'KitchenQual_Tencode|Neighborhood_Timber', 'BsmtFinSF1|MiscFeature_Gar2', 'LotShape_IR2|Exterior2nd_AsphShn', 'SaleCondition_Abnorml|BsmtExposure_No', 'MSZoning_RH|BsmtCond_Fa', 'BsmtFinType2_Tencode|Neighborhood_Mitchel', 'Neighborhood_NridgHt|BsmtUnfSF', 'Neighborhood_ClearCr|GarageCond_Tencode', 'SaleCondition_Tencode|LotShape_Reg', 'BldgType_Duplex|LandContour_Bnk', 'LotFrontage|Neighborhood_Crawfor', 'Electrical_FuseA|BedroomAbvGr', 'PavedDrive_Y|GarageQual_Fa', 'Exterior2nd_AsbShng|Exterior2nd_Stucco', 'LandContour_Low|Condition1_PosA', 'HalfBath|GarageType_Basment', 'Utilities_Tencode|LotShape_Reg', 'OverallQual|EnclosedPorch', 'Alley_Tencode|Alley_Grvl', 'PavedDrive_P|CentralAir_Tencode', 'SaleType_COD|MasVnrArea', 'Neighborhood_Crawfor|HouseStyle_1.5Fin', 'Condition1_RRAe|MasVnrType_BrkCmn', 'MasVnrType_BrkCmn|Neighborhood_NAmes', 'Exterior1st_HdBoard|HeatingQC_Ex', 'Neighborhood_Somerst|Neighborhood_Edwards', 'LotShape_IR2|ScreenPorch', 'GarageCars|MiscFeature_Gar2', 'Electrical_Tencode|GarageType_Basment', 'OpenPorchSF|Neighborhood_Timber', 'GarageArea|MasVnrArea', 'Neighborhood_Blmngtn|Alley_Grvl', 'ExterCond_TA|SaleType_New', 'Neighborhood_ClearCr|Neighborhood_Mitchel', 'LandContour_HLS|CentralAir_N', 'BsmtFinType2_Tencode|GarageType_Basment', 'Neighborhood_Somerst|BsmtUnfSF', 'SaleCondition_Partial|Foundation_Slab', 'Condition1_Feedr|2ndFlrSF', 'Neighborhood_OldTown|Exterior2nd_HdBoard', 'HeatingQC_Gd|MasVnrType_None', 'Functional_Mod|Fence_MnWw', 'MiscFeature_Othr|BsmtExposure_Gd', 'Exterior2nd_VinylSd|MSZoning_Tencode', 'Foundation_BrkTil|1stFlrSF', 'Fence_Tencode|SaleType_Oth', 'BldgType_Duplex|ExterCond_Fa', 'BsmtExposure_Av|Exterior1st_WdShing', 'GarageFinish_Unf|Exterior1st_AsbShng', 'Electrical_FuseP|Functional_Maj2', 'LotConfig_Tencode|KitchenQual_Fa', 'LotFrontage|Exterior2nd_Wd Sdng', 'HeatingQC_TA|Foundation_Stone', 'GarageCond_Tencode|Heating_GasW', 'SaleType_ConLD|BsmtQual_Fa', 'RoofStyle_Hip|BsmtFinType1_BLQ', 'FireplaceQu_Tencode|BldgType_TwnhsE', 'HouseStyle_1Story|MSZoning_RH', 'BsmtFinType1_ALQ|GarageQual_Tencode', 'Exterior1st_BrkFace|Street_Grvl', 'SaleCondition_Abnorml|Fence_MnWw', 'FullBath|MSZoning_Tencode', 'HouseStyle_1Story|Heating_Grav', 'YrSold|PavedDrive_Y', 'LandContour_Low|SaleType_COD', 'OpenPorchSF|Exterior1st_VinylSd', 'LotShape_IR1|BsmtFinType2_ALQ', 'MasVnrType_Tencode|WoodDeckSF', 'GarageFinish_Unf|Exterior2nd_HdBoard', 'Exterior2nd_VinylSd|Neighborhood_NWAmes', 'GarageCond_Ex|ExterQual_Tencode', 'Neighborhood_Somerst|Exterior1st_AsbShng', 'RoofMatl_CompShg|Street_Grvl', 'Neighborhood_NAmes|Fence_GdWo', 'Exterior2nd_MetalSd|KitchenQual_Fa', 'RoofStyle_Hip|3SsnPorch', 'Neighborhood_Blmngtn|BsmtQual_Ex', 'FullBath|Neighborhood_OldTown', 'GarageFinish_Fin|LandSlope_Sev', 'LotShape_Tencode|RoofStyle_Gable', 'Functional_Typ|Condition1_Tencode', 'LotFrontage|SaleCondition_Partial', 'GarageType_Detchd|LotFrontage', 'Neighborhood_Blmngtn|GarageFinish_Tencode', 'MiscVal|LandSlope_Gtl', 'GarageArea|BsmtCond_Po', 'SaleType_New|Exterior2nd_Plywood', 'LandSlope_Sev|Exterior2nd_AsphShn', 'SaleCondition_Family|MoSold', 'HeatingQC_Gd|BldgType_TwnhsE', 'ExterQual_Ex|CentralAir_Tencode', 'FireplaceQu_Tencode|BsmtExposure_Tencode', 'GarageType_Attchd|BsmtUnfSF', 'Foundation_PConc|WoodDeckSF', 'GarageCars|SaleType_COD', 'ExterCond_Tencode|LotShape_IR3', 'Street_Tencode|BsmtFinType2_BLQ', 'HouseStyle_SFoyer|BsmtFinType1_GLQ', 'Street_Tencode|Foundation_Tencode', 'BsmtExposure_Mn|BsmtCond_Fa', 'Neighborhood_Edwards|MasVnrType_BrkFace', 'HeatingQC_Fa|MoSold', 'BsmtFinType2_Tencode|MiscFeature_Tencode', 'MSSubClass|MasVnrType_Stone', 'Exterior1st_AsbShng|Neighborhood_Edwards', 'Fireplaces|ExterCond_Fa', 'Neighborhood_SawyerW|Exterior2nd_AsphShn', 'LandContour_Tencode|MasVnrArea', 'BsmtExposure_Tencode|Neighborhood_ClearCr', 'MasVnrType_BrkCmn|HouseStyle_2Story', 'LandSlope_Mod|BedroomAbvGr', 'Fence_GdPrv|MasVnrType_Stone', 'Neighborhood_Edwards', 'MasVnrArea|Exterior1st_Plywood', 'CentralAir_Tencode|Fence_MnPrv', 'Neighborhood_NPkVill|LandContour_HLS', 'RoofMatl_Tar&Grv|MoSold', 'BsmtFinType2_GLQ|GarageType_Tencode', 'BsmtFinType1_Tencode|ExterQual_Ex', 'Electrical_FuseA|ExterCond_Tencode', 'LotConfig_FR2|Fence_MnPrv', 'KitchenQual_Ex|MasVnrType_None', 'GarageCond_Tencode|SaleCondition_Family', 'GarageFinish_Unf|GarageCond_Po', 'Exterior1st_CemntBd|BsmtFinType2_Rec', 'YearRemodAdd|Condition2_Tencode', 'Electrical_FuseA|Neighborhood_Sawyer', 'GarageQual_Gd|Exterior1st_AsbShng', 'FireplaceQu_Gd|Fence_GdWo', 'Foundation_PConc|Fence_MnWw', 'Neighborhood_Blmngtn|LotShape_IR3', 'LandContour_Low|Exterior2nd_VinylSd', 'GarageQual_Po|BsmtFinSF1', 'BsmtFullBath|Exterior1st_Tencode', 'GarageFinish_Unf|Exterior2nd_BrkFace', 'Neighborhood_OldTown|LotShape_IR3', 'GarageQual_Po|BsmtExposure_Mn', 'Electrical_Tencode|HouseStyle_1.5Unf', 'MSZoning_RM|Exterior1st_VinylSd', 'PavedDrive_N|LandContour_Bnk', 'BsmtCond_Gd|Exterior2nd_Plywood', 'BsmtFinType2_ALQ|Fence_GdWo', 'Neighborhood_Blmngtn|BldgType_TwnhsE', 'BsmtFinType1_Tencode|Electrical_SBrkr', 'BsmtFinType2_BLQ|1stFlrSF', 'Foundation_Stone|Fence_Tencode', 'FireplaceQu_Fa|BsmtFinType1_GLQ', 'PavedDrive_Y|BsmtFinType1_GLQ', 'Exterior1st_AsbShng|Exterior1st_Plywood', 'Neighborhood_Tencode|MSZoning_Tencode', 'Alley_Tencode|GarageQual_Fa', 'RoofStyle_Flat|BsmtQual_Fa', 'Electrical_SBrkr|MSZoning_Tencode', 'BsmtExposure_Av|Functional_Min2', 'Alley_Tencode|LotArea', 'KitchenQual_Tencode|BsmtFinSF1', 'GarageCond_Tencode|Fence_Tencode', 'HalfBath|SaleType_COD', 'MiscVal|FireplaceQu_Ex', 'YearRemodAdd|HouseStyle_1.5Unf', 'GarageFinish_Tencode|OverallCond', 'Condition1_RRAe|Exterior2nd_CmentBd', 'HeatingQC_TA|Exterior2nd_CmentBd', 'LandContour_Bnk|GarageType_BuiltIn', 'Alley_Tencode|GarageType_Basment', 'YearRemodAdd|Heating_Tencode', 'LandContour_Lvl|Neighborhood_NAmes', 'GarageFinish_Unf|RoofMatl_CompShg', 'Functional_Tencode|RoofMatl_Tar&Grv', 'OverallQual|Condition1_Artery', 'GarageCars|LotShape_IR3', 'BldgType_2fmCon|HeatingQC_TA', 'FullBath|MSZoning_RL', 'Exterior1st_CemntBd|Functional_Maj1', 'Neighborhood_NPkVill|HouseStyle_2.5Unf', 'GrLivArea|MSSubClass', 'Exterior2nd_Wd Sdng|BsmtFinType1_GLQ', 'Exterior2nd_BrkFace|YearBuilt', 'Exterior2nd_CmentBd|BsmtQual_Gd', 'FireplaceQu_Tencode|BsmtFinType1_LwQ', 'Exterior1st_HdBoard|MoSold', 'LandContour_Bnk|BsmtCond_Tencode', 'GarageFinish_Unf|Exterior1st_HdBoard', 'Functional_Mod|BsmtFinType1_Unf', 'RoofStyle_Shed|Neighborhood_MeadowV', 'GrLivArea|GarageCond_TA', 'PavedDrive_P|BldgType_Tencode', 'GarageType_BuiltIn|MSZoning_RH', 'Exterior2nd_Stone|BsmtExposure_Gd', 'GarageType_CarPort|GarageFinish_RFn', 'SaleType_Oth|Neighborhood_SawyerW', 'RoofMatl_Tencode|ExterCond_TA', 'Neighborhood_CollgCr|LotConfig_CulDSac', 'Exterior2nd_Stucco|MasVnrType_BrkFace', 'YearBuilt|GarageType_Tencode', 'PoolArea|Exterior1st_Tencode', 'SaleCondition_Normal|Exterior2nd_Plywood', 'GarageType_Detchd|BsmtFinType1_Unf', 'FireplaceQu_Gd|FireplaceQu_Ex', 'GarageType_BuiltIn|BldgType_1Fam', 'BsmtFinType2_LwQ|WoodDeckSF', 'Exterior1st_AsbShng|Condition1_Feedr', 'PavedDrive_Tencode|RoofStyle_Gable', 'Exterior2nd_Tencode|GarageType_CarPort', 'ExterCond_TA|Fence_MnWw', 'BsmtCond_Tencode|Foundation_Slab', 'Heating_GasA|MSZoning_Tencode', 'Functional_Min1|Neighborhood_Gilbert', 'BsmtQual_Fa|Fence_MnPrv', 'Neighborhood_NridgHt|RoofStyle_Gambrel', 'BldgType_Twnhs|ExterQual_Tencode', 'GarageCond_Ex|BldgType_1Fam', 'BsmtExposure_Tencode|PavedDrive_Tencode', 'Exterior2nd_CmentBd|1stFlrSF', 'GarageType_Basment|HouseStyle_2Story', 'Neighborhood_NridgHt|BsmtQual_Tencode', 'SaleType_WD|Foundation_CBlock', 'RoofStyle_Flat|HouseStyle_1.5Fin', 'LotFrontage|RoofMatl_Tar&Grv', 'TotalBsmtSF|CentralAir_Tencode', 'KitchenQual_Gd|Exterior2nd_Brk Cmn', 'GarageFinish_Tencode|BsmtFinType1_LwQ', 'Heating_Grav|GarageType_Tencode', 'Street_Grvl|MSZoning_RL', 'GarageCond_Fa|BsmtExposure_Av', 'SaleCondition_Family|Exterior2nd_CmentBd', 'HouseStyle_1.5Unf|Condition1_Feedr', 'GarageQual_Gd|GarageCond_Ex', 'Neighborhood_Veenker|TotRmsAbvGrd', 'Utilities_Tencode|SaleCondition_Alloca', 'Exterior1st_CemntBd|HouseStyle_SLvl', 'Neighborhood_Tencode|YearBuilt', 'SaleCondition_Family|Exterior2nd_Brk Cmn', 'KitchenQual_Ex|BsmtQual_Fa', 'BsmtFinType2_ALQ|BsmtFinSF2', 'KitchenAbvGr|Street_Grvl', 'LandSlope_Sev|GarageCond_Gd', 'SaleType_ConLI|Condition1_RRAe', 'RoofStyle_Shed|BsmtUnfSF', 'EnclosedPorch|Heating_Tencode', 'LowQualFinSF|BsmtExposure_Mn', 'RoofStyle_Flat|Foundation_Stone', 'LotConfig_Corner|MiscFeature_Gar2', 'Exterior1st_BrkComm|Fence_MnPrv', 'GarageType_Detchd|RoofStyle_Shed', 'Foundation_PConc|CentralAir_Y', 'Neighborhood_ClearCr|Condition1_Feedr', 'LotArea|GarageQual_Fa', 'HeatingQC_Ex|Condition2_Artery', 'LotConfig_CulDSac|MasVnrType_None', 'LotConfig_FR2|GarageType_CarPort', 'LandContour_Tencode|SaleCondition_Alloca', 'YrSold|HouseStyle_1.5Unf', 'SaleCondition_Partial|SaleType_Oth', '2ndFlrSF|LotConfig_Inside', 'GarageCars|LandSlope_Mod', 'BsmtFinType2_Unf|Exterior2nd_AsphShn', 'OverallQual|BsmtFullBath', 'HeatingQC_TA|Exterior1st_CemntBd', 'HouseStyle_1Story|Condition1_Norm', 'BsmtFullBath|LotShape_IR3', 'Heating_GasA|SaleType_New', 'YearBuilt|BsmtFinType1_ALQ', 'Neighborhood_Tencode|MiscFeature_Tencode', 'Neighborhood_SWISU|BsmtExposure_Av', 'Neighborhood_NridgHt|Exterior1st_MetalSd', 'HalfBath|Exterior2nd_Wd Shng', 'Condition2_Tencode|MoSold', 'Fence_GdWo|BsmtFinSF1', 'BsmtFinType2_BLQ|GarageType_CarPort', 'Exterior1st_BrkFace|BsmtExposure_No', 'Electrical_FuseA|BldgType_Tencode', 'RoofStyle_Gable|2ndFlrSF', 'Neighborhood_OldTown|WoodDeckSF', 'Exterior1st_Stucco|OverallCond', 'Functional_Maj2|MasVnrArea', 'LandSlope_Tencode|BsmtFinType2_Rec', 'KitchenQual_Fa|Exterior1st_WdShing', 'LandContour_Tencode|MasVnrType_BrkCmn', 'MiscVal|GarageType_Attchd', 'Heating_GasW|BsmtFinType1_LwQ', 'Condition2_Tencode|SaleCondition_Partial', 'RoofStyle_Flat|BsmtUnfSF', 'BsmtCond_Tencode|MiscFeature_Gar2', 'HouseStyle_Tencode|HalfBath', 'PavedDrive_Tencode|GarageFinish_RFn', 'Neighborhood_Tencode|MasVnrType_BrkFace', 'Exterior2nd_Tencode|Neighborhood_Veenker', 'Condition1_PosN|KitchenQual_Fa', 'GarageCond_Po|HouseStyle_1.5Unf', 'KitchenQual_Gd|Exterior1st_Wd Sdng', 'MiscFeature_Othr|MiscFeature_Tencode', 'Neighborhood_StoneBr|GarageYrBlt', 'PavedDrive_N|GarageType_Attchd', 'KitchenAbvGr|MasVnrType_None', 'Fireplaces|ScreenPorch', 'Heating_GasA|Neighborhood_Tencode', 'Foundation_Tencode|GarageQual_Po', 'GarageType_BuiltIn|FireplaceQu_TA', 'LandContour_Bnk|Exterior2nd_CmentBd', 'PavedDrive_N|Exterior1st_Stucco', 'Fence_Tencode|Exterior2nd_HdBoard', 'BldgType_Duplex|Functional_Tencode', 'LandContour_Lvl|Exterior2nd_MetalSd', 'BsmtFinType1_LwQ|Exterior2nd_AsphShn', 'SaleCondition_Tencode|RoofStyle_Gambrel', 'HouseStyle_SFoyer|RoofMatl_WdShngl', 'GarageFinish_Unf|PoolArea', 'Foundation_Tencode|BsmtExposure_Gd', 'BldgType_2fmCon|OpenPorchSF', 'Neighborhood_MeadowV', 'BsmtHalfBath|SaleType_COD', 'KitchenQual_Gd|LotConfig_Inside', 'HouseStyle_Tencode|Fence_MnPrv', 'Neighborhood_OldTown|MiscFeature_Tencode', 'ExterCond_TA|LotConfig_Inside', 'BsmtExposure_Tencode|Exterior2nd_Brk Cmn', 'GarageType_BuiltIn|Exterior1st_Tencode', 'RoofStyle_Gambrel|MasVnrType_Stone', 'LotShape_IR2|HeatingQC_TA', 'RoofStyle_Shed|Condition2_Artery', 'Neighborhood_OldTown|SaleType_COD', 'ScreenPorch|LotConfig_Inside', 'RoofStyle_Hip|RoofStyle_Gambrel', 'Neighborhood_Tencode|Neighborhood_Crawfor', 'Neighborhood_BrDale|Electrical_FuseA', 'LandContour_Tencode|CentralAir_N', 'ExterQual_TA|ExterQual_Tencode', 'LotShape_IR1|Exterior1st_VinylSd', 'Exterior1st_Stucco|MSSubClass', 'BsmtFinType2_Tencode|GarageQual_Gd', 'ExterCond_TA|GarageType_Attchd', 'GarageType_Detchd|Neighborhood_Mitchel', 'Neighborhood_StoneBr|Functional_Min2', 'Utilities_Tencode|BsmtFinType2_LwQ', 'Neighborhood_CollgCr|LotConfig_Inside', 'Foundation_Stone|SaleCondition_Partial', 'BsmtExposure_Av|BsmtUnfSF', 'Condition1_Artery|Neighborhood_NridgHt', 'KitchenQual_Gd|BsmtCond_Tencode', 'HouseStyle_2.5Unf|Foundation_Slab', 'BsmtFinType1_Tencode|Foundation_Slab', 'RoofStyle_Tencode|Exterior1st_WdShing', 'Exterior2nd_VinylSd|RoofStyle_Gambrel', 'BsmtFinType1_BLQ|HouseStyle_Tencode', 'Neighborhood_NoRidge|Foundation_CBlock', 'ExterCond_Gd|ExterQual_Ex', 'YrSold|Exterior2nd_HdBoard', 'KitchenQual_Ex|Foundation_CBlock', 'GarageFinish_Unf|PavedDrive_Y', 'GarageCars|GarageYrBlt', 'SaleType_ConLD|BsmtQual_TA', 'Neighborhood_Tencode|SaleType_ConLD', 'MSZoning_C (all)|LotConfig_Tencode', 'GarageType_Basment|Condition2_Artery', 'Exterior2nd_VinylSd|1stFlrSF', 'Exterior2nd_VinylSd|Exterior2nd_Wd Shng', 'HouseStyle_SFoyer|SaleCondition_Alloca', 'Condition2_Tencode|FireplaceQu_TA', 'Exterior1st_BrkFace|Neighborhood_Crawfor', 'HeatingQC_Fa|BsmtFinType1_LwQ', 'GarageCars|BsmtFinSF1', 'Fence_Tencode|Condition1_Feedr', 'Functional_Min1|MSZoning_RM', 'MasVnrArea|ExterQual_Fa', 'Heating_GasA|Neighborhood_ClearCr', 'BsmtQual_Fa|Neighborhood_Sawyer', 'ExterQual_Tencode|BsmtQual_Gd', 'Heating_Grav|BsmtFinType2_ALQ', 'GarageCond_Fa|SaleType_CWD', 'YrSold|Utilities_AllPub', 'GarageFinish_Tencode|BsmtExposure_Av', 'FireplaceQu_Tencode|BsmtCond_Po', 'Exterior1st_BrkComm|Condition1_RRAn', 'Exterior2nd_AsbShng|GarageFinish_Fin', 'Functional_Maj1|SaleCondition_Abnorml', 'Alley_Tencode|BsmtCond_Tencode', 'Electrical_SBrkr|OverallCond', 'Neighborhood_Tencode|Foundation_CBlock', 'BldgType_Duplex|SaleType_COD', 'Neighborhood_NPkVill|HeatingQC_TA', 'Alley_Pave|LotConfig_Tencode', 'BsmtFinType2_Tencode|LotConfig_CulDSac', 'Exterior2nd_Brk Cmn|BsmtExposure_Mn', 'SaleCondition_Normal|BsmtFinType1_Unf', 'BsmtQual_Ex|LandContour_Bnk', 'OverallQual|PavedDrive_P', 'YearRemodAdd|ScreenPorch', 'Neighborhood_BrDale|Fireplaces', 'BsmtExposure_Av|BsmtFinSF1', 'Neighborhood_Blmngtn|Foundation_Stone', 'OverallQual|Exterior1st_VinylSd', 'PavedDrive_N|SaleType_CWD', 'BsmtFullBath|Neighborhood_Gilbert', 'Exterior2nd_MetalSd|Exterior2nd_Plywood', 'LandContour_Low|Neighborhood_NridgHt', 'Alley_Tencode|Exterior1st_AsbShng', 'LandContour_Lvl|MSZoning_Tencode', 'KitchenQual_Ex|BsmtFinType2_LwQ', 'RoofStyle_Tencode|CentralAir_N', 'GarageType_Detchd|MSSubClass', 'GarageFinish_Unf|Exterior2nd_Plywood', 'Fence_Tencode|MasVnrType_Tencode', 'Exterior1st_VinylSd|ScreenPorch', 'Heating_Grav|GarageFinish_RFn', 'YearRemodAdd|GarageCond_Ex', 'LandContour_HLS|MSSubClass', 'RoofStyle_Flat|Neighborhood_BrkSide', 'HouseStyle_Tencode|Exterior2nd_HdBoard', 'Neighborhood_StoneBr|Condition2_Artery', 'Condition1_RRAn|Exterior1st_Tencode', 'RoofStyle_Tencode|ScreenPorch', 'Exterior1st_Stucco|GarageType_Attchd', 'YrSold|GarageType_Attchd', 'Neighborhood_Sawyer|MasVnrType_BrkFace', 'GrLivArea|GarageYrBlt', 'Exterior1st_BrkFace|ExterCond_Gd', 'BsmtFinType2_LwQ|Alley_Grvl', 'HalfBath|Neighborhood_Sawyer', 'Exterior1st_VinylSd|LotConfig_Inside', 'Heating_Tencode|SaleType_ConLI', 'Electrical_FuseF|HouseStyle_1.5Fin', 'BldgType_2fmCon|Electrical_SBrkr', 'SaleType_New|Condition2_Artery', 'Condition1_Norm|ExterQual_Fa', 'PoolArea|LotConfig_Inside', 'Neighborhood_NPkVill|BldgType_Tencode', 'BsmtQual_Ex|SaleType_WD', 'HeatingQC_TA|Fence_Tencode', 'Neighborhood_BrDale|GarageCars', 'LotConfig_CulDSac|Neighborhood_Gilbert', 'LandContour_Low|Heating_Grav', 'HouseStyle_1Story|Neighborhood_Tencode', 'FullBath|Exterior1st_VinylSd', 'HeatingQC_Tencode|GarageType_2Types', 'TotalBsmtSF|Electrical_Tencode', 'GarageType_Attchd|MasVnrArea', 'BsmtFinType2_BLQ|Functional_Min1', 'PavedDrive_P|BsmtFinType1_GLQ', 'Exterior1st_BrkFace|Condition1_Norm', 'Functional_Maj2|TotRmsAbvGrd', 'FullBath|BsmtCond_Fa', 'FullBath|BsmtFinType2_LwQ', 'Condition1_Tencode|MasVnrType_Tencode', 'GarageFinish_Unf|GarageCond_Fa', 'PavedDrive_Tencode|BsmtFinSF1', 'LotConfig_Corner|SaleType_Oth', 'BsmtFinType1_Unf|ExterQual_Fa', 'OverallQual|HouseStyle_SFoyer', 'RoofMatl_CompShg|GarageQual_Tencode', 'BsmtExposure_Tencode|Functional_Min1', 'BldgType_Duplex|SaleCondition_Normal', 'Neighborhood_NAmes|GarageCond_Ex', 'MoSold|Fence_MnPrv', 'BsmtFinSF2|Neighborhood_Veenker', 'BsmtQual_TA|MasVnrType_Stone', 'GarageFinish_RFn|BsmtExposure_Gd', 'BsmtFinType1_LwQ|Functional_Min2', 'BsmtQual_Fa|Functional_Min2', 'BsmtCond_Gd|PoolArea', 'Functional_Maj2|Neighborhood_NAmes', 'Exterior1st_AsbShng|LandSlope_Tencode', 'BsmtQual_TA|MSZoning_RM', 'KitchenAbvGr|MSZoning_RM', 'GarageCond_Po|Exterior2nd_Wd Sdng', 'MiscFeature_Othr|HouseStyle_SLvl', 'LandSlope_Sev|Fence_MnPrv', 'BsmtCond_Gd|MSSubClass', 'YearBuilt|Condition2_Norm', 'LotShape_IR1|Foundation_Stone', 'Utilities_Tencode|RoofMatl_WdShngl', 'Neighborhood_StoneBr|RoofMatl_WdShngl', 'HeatingQC_Ex|MoSold', 'Electrical_FuseA|CentralAir_N', 'LotConfig_FR2|GarageCond_Ex', 'Exterior1st_BrkFace|Exterior1st_Plywood', 'Neighborhood_BrkSide|Functional_Min2', 'BsmtFinType2_ALQ|KitchenQual_TA', 'BldgType_Twnhs|Exterior2nd_Tencode', 'Foundation_BrkTil|RoofStyle_Gambrel', 'Heating_GasA|KitchenQual_Gd', 'HouseStyle_1Story|Neighborhood_Crawfor', 'SaleCondition_Normal|MSZoning_Tencode', 'LotShape_IR2|EnclosedPorch', 'Neighborhood_OldTown|CentralAir_N', 'Neighborhood_BrDale|SaleType_New', 'YearBuilt|BsmtFinType1_Rec', 'FireplaceQu_Gd|3SsnPorch', 'MiscFeature_Shed|KitchenQual_Fa', 'Neighborhood_BrDale|Exterior2nd_Wd Sdng', 'Neighborhood_BrDale|Neighborhood_BrkSide', 'TotalBsmtSF|HouseStyle_1.5Fin', 'MSSubClass|HouseStyle_2.5Unf', 'Neighborhood_ClearCr|CentralAir_Tencode', 'Neighborhood_Gilbert|MSZoning_RH', 'Exterior2nd_VinylSd|PoolQC_Tencode', 'GarageCond_Fa|GarageCond_Ex', 'RoofStyle_Gable|Exterior2nd_Wd Shng', 'Neighborhood_BrDale|Neighborhood_NWAmes', 'Electrical_FuseF|BsmtCond_Po', 'EnclosedPorch|RoofStyle_Shed', 'HalfBath|BsmtCond_Po', 'HouseStyle_1.5Unf|BldgType_1Fam', 'PoolQC_Tencode|RoofMatl_Tar&Grv', 'SaleCondition_Family|GarageType_Attchd', 'LotConfig_Corner|BsmtFinType1_Rec', 'RoofStyle_Shed|GarageType_Basment', 'PavedDrive_Tencode|GarageType_CarPort', 'Exterior1st_Stucco|HeatingQC_Ex', 'Heating_Grav|Street_Grvl', 'LandSlope_Mod|Fence_GdWo', 'Exterior1st_Plywood|ExterCond_Fa', 'BsmtFinType1_BLQ|Electrical_FuseF', 'Fence_GdPrv|BsmtFinType1_LwQ', 'FireplaceQu_Gd|HouseStyle_1.5Fin', 'BsmtFinType2_BLQ|MoSold', 'ExterQual_TA|Utilities_AllPub', 'BldgType_Twnhs|MSZoning_RH', 'YrSold|GarageQual_TA', 'PoolQC_Tencode|Neighborhood_SWISU', 'MSZoning_Tencode|BsmtQual_Gd', 'Exterior2nd_Plywood|ExterCond_Fa', 'GarageQual_Tencode|BldgType_Tencode', 'ExterCond_TA|ExterQual_Ex', 'Foundation_Tencode|Exterior2nd_Wd Sdng', 'Neighborhood_Tencode|LotShape_IR3', 'Street_Tencode|Fence_MnPrv', 'GarageQual_Gd|GarageQual_Po', 'BsmtFinType2_ALQ|BedroomAbvGr', 'Neighborhood_NridgHt|Condition1_RRAn', 'LotShape_IR1|Neighborhood_StoneBr', 'Street_Grvl|OverallCond', 'ExterCond_TA|GarageFinish_RFn', 'Neighborhood_NridgHt|Neighborhood_SawyerW', 'LandSlope_Sev|Exterior2nd_HdBoard', 'Neighborhood_Somerst|Exterior1st_Plywood', 'RoofStyle_Gambrel|HouseStyle_2.5Unf', 'Exterior1st_BrkFace|SaleCondition_Alloca', 'LandContour_HLS|LowQualFinSF', 'Neighborhood_Edwards|CentralAir_Y', 'Neighborhood_CollgCr|MasVnrType_Stone', '2ndFlrSF|CentralAir_Tencode', 'SaleCondition_Tencode|Neighborhood_NAmes', 'Neighborhood_Sawyer|Condition2_Artery', 'Heating_GasA|Exterior1st_Plywood', 'Condition1_RRAn|ExterCond_Fa', 'ExterCond_Gd|CentralAir_N', 'LandContour_Low|LotFrontage', 'LotShape_Reg|MiscVal', 'FireplaceQu_Po|BsmtQual_Fa', 'KitchenQual_Tencode|Condition1_Feedr', 'KitchenAbvGr|BsmtFinType1_Unf', 'BedroomAbvGr|Neighborhood_NAmes', 'BsmtExposure_Tencode|CentralAir_N', 'BldgType_2fmCon|Condition1_RRAn', 'SaleCondition_Tencode|Street_Pave', 'KitchenAbvGr|PavedDrive_N', 'FireplaceQu_TA|Utilities_AllPub', 'LandSlope_Sev|Heating_GasW', 'ExterQual_Ex|GarageFinish_RFn', 'Neighborhood_OldTown|LowQualFinSF', 'Fence_GdPrv|BsmtFinSF1', 'Electrical_SBrkr|GarageCond_Fa', 'YearRemodAdd|BsmtExposure_Gd', 'RoofStyle_Flat|Condition1_RRAn', 'MiscFeature_Shed|BsmtQual_Gd', 'BsmtExposure_Tencode|Exterior2nd_Stone', 'SaleType_WD|GarageQual_Po', 'Exterior2nd_VinylSd|KitchenQual_TA', 'Exterior1st_Stucco|SaleType_New', 'Condition1_RRAe|OpenPorchSF', 'Electrical_SBrkr|Exterior2nd_MetalSd', 'Heating_GasA|Foundation_Slab', 'Neighborhood_CollgCr|BldgType_1Fam', 'SaleType_ConLw|FireplaceQu_TA', 'SaleCondition_Tencode|BsmtFinType1_Unf', 'GarageType_Attchd|ExterQual_Ex', 'RoofStyle_Tencode|Alley_Grvl', 'BldgType_1Fam|MSZoning_FV', 'ExterQual_TA|LotShape_IR2', 'GarageType_Detchd|YearBuilt', 'LandContour_HLS|BldgType_TwnhsE', 'SaleType_Oth|Neighborhood_BrkSide', 'GarageCond_Po|GarageType_Tencode', 'BsmtQual_Fa|GarageFinish_Tencode', 'SaleType_ConLw|GarageCond_Tencode', 'Foundation_Tencode|GarageArea', 'Exterior1st_AsbShng|BsmtFinSF2', 'Fence_Tencode|BsmtFinSF1', 'Neighborhood_NWAmes|GarageType_CarPort', 'RoofMatl_CompShg|BsmtUnfSF', 'MasVnrType_None|Street_Grvl', 'BldgType_Twnhs|GarageArea', 'BsmtQual_Gd|Exterior1st_Wd Sdng', 'Fence_Tencode|GarageType_BuiltIn', 'HeatingQC_Tencode|GarageType_BuiltIn', 'Exterior2nd_Brk Cmn|MasVnrArea', 'TotalBsmtSF|Alley_Tencode', 'HouseStyle_SFoyer|Neighborhood_Gilbert', 'Foundation_CBlock|MSSubClass', 'OverallQual|GarageQual_Po', 'BsmtFullBath|MSZoning_FV', 'Neighborhood_Gilbert|Utilities_AllPub', 'BsmtFinType2_Rec|Exterior1st_VinylSd', 'BsmtFinType2_LwQ|FireplaceQu_Ex', 'Electrical_SBrkr|Exterior1st_MetalSd', 'MSZoning_RH|ExterCond_Fa', 'GarageCond_Ex|GarageFinish_RFn', 'HouseStyle_Tencode|Foundation_BrkTil', 'BsmtFinSF2|FireplaceQu_Fa', 'YearBuilt|KitchenQual_Tencode', 'Neighborhood_NWAmes|Fence_MnPrv', 'Exterior1st_AsbShng|Neighborhood_OldTown', 'HeatingQC_Tencode|Condition2_Artery', 'Electrical_FuseP|GarageFinish_Tencode', 'BsmtFinType2_Rec|BsmtFinType2_LwQ', 'Heating_Tencode|ExterQual_Tencode', 'FireplaceQu_Tencode|GarageQual_Tencode', 'KitchenQual_Fa|Foundation_Slab', 'HeatingQC_TA|3SsnPorch', 'BsmtFinType1_Tencode|Exterior2nd_HdBoard', 'Neighborhood_OldTown|HouseStyle_1.5Unf', 'MasVnrType_None|Neighborhood_MeadowV', 'FireplaceQu_Fa|MiscFeature_Shed', 'PoolQC_Tencode|Functional_Maj2', 'GarageFinish_Unf|2ndFlrSF', 'Electrical_FuseP|LotConfig_CulDSac', 'BsmtFinType1_ALQ|SaleCondition_Alloca', 'Exterior1st_BrkFace|Neighborhood_NAmes', 'SaleCondition_Tencode|BsmtQual_Fa', 'OverallQual', 'Neighborhood_Crawfor|MSZoning_FV', 'BsmtExposure_Tencode|GarageFinish_Unf', 'Neighborhood_NAmes|PoolArea', 'SaleType_ConLw|Condition2_Norm', 'BsmtExposure_Av|MiscFeature_Tencode', 'Neighborhood_ClearCr|BsmtExposure_No', 'Neighborhood_Blmngtn|GarageQual_Tencode', 'GarageType_Detchd|BsmtFinType2_ALQ', 'LotShape_IR2|YearRemodAdd', 'Exterior2nd_Stone|RoofMatl_WdShngl', 'Exterior1st_CemntBd|Neighborhood_IDOTRR', 'Functional_Maj2|LotConfig_Tencode', 'GarageFinish_Fin|Exterior1st_BrkComm', 'BldgType_1Fam|Exterior1st_Plywood', 'SaleType_ConLD|ExterQual_Ex', 'FireplaceQu_Ex|BldgType_Tencode', 'Fence_Tencode|Exterior1st_Wd Sdng', 'HouseStyle_Tencode|1stFlrSF', 'SaleCondition_Alloca|GarageType_Basment', 'Neighborhood_Mitchel|CentralAir_N', 'SaleCondition_Normal|BsmtQual_Gd', 'BsmtCond_Gd|BsmtCond_Fa', 'Neighborhood_CollgCr|Exterior2nd_Wd Sdng', 'GarageFinish_Fin|PavedDrive_P', 'Neighborhood_Veenker|PavedDrive_P', 'Condition1_Artery|GarageType_Tencode', 'Neighborhood_NridgHt|Fence_MnPrv', 'Exterior2nd_Stucco|RoofMatl_WdShngl', 'PavedDrive_N|Neighborhood_BrDale', 'BsmtFinType2_BLQ|HouseStyle_1.5Fin', 'GarageFinish_Unf|SaleType_ConLw', 'GrLivArea|Electrical_FuseP', 'Foundation_PConc|ExterCond_Tencode', 'MSZoning_RL|Fence_MnWw', 'Neighborhood_ClearCr|Exterior2nd_Plywood', 'GarageCond_Po|Neighborhood_CollgCr', 'Exterior1st_Stucco|Functional_Maj1', 'GarageCond_Tencode|Exterior1st_Stucco', 'Electrical_SBrkr|PoolQC_Tencode', 'Heating_Tencode|Neighborhood_Sawyer', 'Condition2_Tencode|BsmtFinType2_LwQ', 'Foundation_Tencode|Exterior2nd_Plywood', 'BldgType_2fmCon|GarageQual_Gd', 'LotShape_Tencode|ExterCond_Fa', 'Electrical_FuseF|BldgType_1Fam', 'BsmtFinType1_Tencode|Exterior1st_Plywood', 'Electrical_FuseF|Neighborhood_BrkSide', 'HeatingQC_TA|MSZoning_RL', 'LotShape_IR1|BsmtExposure_Av', 'LotFrontage|GarageQual_Tencode', 'GarageFinish_Fin|RoofStyle_Gable', 'GrLivArea|Electrical_SBrkr', 'Utilities_Tencode|LotFrontage', 'LandSlope_Tencode|HalfBath', 'Neighborhood_Tencode|Electrical_SBrkr', 'HouseStyle_SFoyer|GarageType_BuiltIn', 'Exterior2nd_Stone|MiscFeature_Shed', 'BsmtCond_Tencode|Exterior1st_Wd Sdng', 'SaleType_ConLw|Foundation_BrkTil', 'FireplaceQu_Gd|Functional_Mod', 'GarageCond_Po|ExterCond_Gd', 'MSZoning_C (all)|BsmtFinType1_LwQ', 'BsmtCond_Po|GarageType_Basment', 'SaleCondition_Family|GarageFinish_Tencode', 'RoofStyle_Gambrel|1stFlrSF', 'Neighborhood_NoRidge|2ndFlrSF', 'RoofStyle_Flat|SaleCondition_Partial', 'Functional_Min1|MSZoning_RH', 'LandSlope_Sev|Exterior2nd_VinylSd', 'SaleCondition_Family|Fence_MnWw', 'SaleType_WD|WoodDeckSF', 'BldgType_2fmCon|BsmtQual_Tencode', 'BsmtExposure_Tencode|BsmtFinType1_Tencode', 'Heating_Grav|LotConfig_FR2', 'Exterior1st_BrkFace|RoofStyle_Tencode', 'Exterior2nd_Stucco|ExterCond_Tencode', 'Electrical_FuseF|PavedDrive_P', 'SaleType_ConLD|RoofStyle_Shed', 'Neighborhood_SawyerW|Foundation_Slab', 'KitchenAbvGr|Condition1_Feedr', 'FullBath|ExterQual_Tencode', 'RoofStyle_Tencode|Neighborhood_Gilbert', 'GrLivArea|BsmtExposure_Mn', 'Condition1_Feedr|Exterior2nd_Brk Cmn', 'FireplaceQu_Po|LotShape_IR3', 'RoofStyle_Hip|GarageQual_Fa', 'KitchenQual_Gd|Neighborhood_NoRidge', 'GarageCond_Po|Electrical_FuseP', 'Exterior1st_Stucco|PavedDrive_Tencode', 'LandSlope_Mod|Neighborhood_Gilbert', 'BsmtFinType2_ALQ|FireplaceQu_TA', 'BldgType_Duplex|Condition1_PosA', 'GarageType_Attchd|Exterior1st_Plywood', 'BldgType_Twnhs|GarageFinish_Tencode', 'GarageArea|SaleType_COD', 'LotConfig_Corner|Electrical_FuseA', 'BsmtFinType2_Tencode|LandContour_Tencode', 'BsmtFinType2_Rec|Utilities_AllPub', 'OverallCond|WoodDeckSF', 'LandSlope_Tencode|GarageYrBlt', 'Exterior2nd_Stone|MSZoning_RM', 'TotalBsmtSF|BldgType_Tencode', 'RoofStyle_Hip|ExterQual_Tencode', 'GarageFinish_Unf|GarageCars', 'Heating_Grav|BedroomAbvGr', 'BldgType_2fmCon|RoofStyle_Shed', 'Heating_Grav|MasVnrType_BrkFace', 'Neighborhood_OldTown|Exterior1st_Wd Sdng', 'Exterior2nd_AsbShng|BsmtHalfBath', 'Exterior2nd_Stucco|LandSlope_Gtl', 'Functional_Mod|Condition2_Norm', 'Exterior1st_Tencode|MasVnrType_BrkFace', 'GarageQual_Tencode|Neighborhood_MeadowV', 'HouseStyle_Tencode|FireplaceQu_TA', 'Heating_Tencode|GarageFinish_Tencode', 'SaleType_ConLI|Exterior1st_MetalSd', 'Neighborhood_Somerst|HouseStyle_1.5Unf', 'BsmtFinSF1|GarageType_2Types', 'BsmtFinType1_LwQ|Neighborhood_SawyerW', 'HouseStyle_SFoyer|MiscFeature_Shed', 'Functional_Tencode|PavedDrive_Tencode', 'LandContour_Low|Neighborhood_Veenker', 'BsmtFinType1_ALQ|HeatingQC_Ex', 'Neighborhood_Edwards|BsmtCond_Gd', 'LotShape_IR1|Exterior2nd_Wd Sdng', 'Neighborhood_CollgCr|BsmtFinSF1', 'Foundation_PConc|BsmtQual_Tencode', 'Heating_GasW|MiscFeature_Tencode', 'Exterior1st_Stucco|SaleCondition_Abnorml', 'Neighborhood_Sawyer|Street_Grvl', 'Exterior1st_Stucco|ScreenPorch', 'LandContour_HLS|TotRmsAbvGrd', 'Exterior1st_AsbShng|Condition1_PosA', 'HouseStyle_SFoyer|SaleType_New', 'Neighborhood_Blmngtn|SaleCondition_Normal', 'Neighborhood_Edwards|BsmtCond_Fa', 'GarageCond_Gd|BldgType_Tencode', 'ExterQual_Ex|SaleCondition_Abnorml', 'SaleType_ConLD|PavedDrive_P', 'Neighborhood_Tencode|GarageType_Attchd', 'BsmtExposure_Tencode|SaleType_New', 'Functional_Tencode|MasVnrArea', 'LandContour_Lvl|Exterior1st_WdShing', 'HeatingQC_Ex|Foundation_Slab', 'SaleType_New|Neighborhood_Gilbert', 'Neighborhood_BrDale|Electrical_Tencode', 'Exterior1st_AsbShng|MSZoning_RM', 'YrSold|GarageFinish_Fin', 'Foundation_Stone|CentralAir_Tencode', 'BsmtFinType2_BLQ|Neighborhood_SWISU', 'Neighborhood_Sawyer|KitchenQual_Fa', 'Heating_Grav|BsmtQual_Fa', 'GarageType_Attchd|FireplaceQu_TA', 'SaleCondition_Family|Exterior2nd_Wd Sdng', 'Neighborhood_CollgCr|MiscFeature_Shed', 'Foundation_Stone|LotConfig_CulDSac', 'BsmtFinType2_Tencode|HeatingQC_Gd', 'LotFrontage|Alley_Grvl', 'Exterior1st_WdShing|Neighborhood_Timber', 'Functional_Min1|MasVnrType_None', 'Heating_Tencode|BsmtFinType2_Rec', 'Neighborhood_NWAmes|KitchenQual_TA', 'Functional_Maj2|Neighborhood_Sawyer', 'LotShape_IR1|LandSlope_Gtl', 'ExterQual_TA|BsmtFullBath', 'LandContour_Low|BsmtFinSF2', 'RoofMatl_Tencode|Neighborhood_CollgCr', 'BldgType_Tencode|Exterior1st_MetalSd', 'LandContour_Tencode|RoofMatl_WdShngl', 'Condition1_Tencode|GarageType_2Types', 'BsmtExposure_Tencode|PavedDrive_Y', 'HeatingQC_Fa|Functional_Mod', 'ExterQual_Ex|Neighborhood_Gilbert', 'RoofMatl_Tar&Grv|LotConfig_Inside', 'Exterior2nd_MetalSd|Foundation_CBlock', 'Electrical_FuseP|BsmtHalfBath', 'Neighborhood_CollgCr|Neighborhood_NAmes', 'GarageCond_TA|Fence_GdWo', 'Condition1_RRAe|LowQualFinSF', 'Neighborhood_StoneBr|Street_Grvl', 'TotalBsmtSF|BsmtFinSF1', 'RoofStyle_Gambrel|Functional_Min2', 'LotConfig_Corner|LotArea', 'LotShape_Tencode|Functional_Min2', 'BsmtFinType1_Rec|SaleCondition_Normal', 'Foundation_PConc|LotShape_IR3', 'MiscVal|Exterior1st_Wd Sdng', 'BsmtExposure_Tencode|Exterior2nd_MetalSd', 'Fence_GdWo|BsmtFinType1_LwQ', 'Neighborhood_Timber|Fence_MnPrv', 'LandContour_Bnk|ExterQual_Gd', 'BsmtExposure_Tencode|Neighborhood_Crawfor', 'FireplaceQu_Ex|PoolArea', 'FireplaceQu_Tencode|Neighborhood_OldTown', 'Exterior1st_MetalSd|Utilities_AllPub', 'Heating_Grav|RoofMatl_Tar&Grv', 'BldgType_TwnhsE|MSZoning_RH', 'BsmtFinType2_BLQ|Condition1_PosA', 'HouseStyle_SFoyer|Neighborhood_Mitchel', 'Neighborhood_BrDale|FullBath', 'HeatingQC_Ex|GarageCond_Fa', 'Heating_Tencode|KitchenQual_TA', 'BsmtFinType1_BLQ|LandSlope_Gtl', 'LandContour_Tencode|LandContour_Bnk', 'BsmtExposure_Av|BsmtFinType2_Unf', 'SaleCondition_Alloca|ScreenPorch', 'FireplaceQu_Po|BsmtCond_Fa', 'Foundation_Stone|LotArea', 'GarageFinish_Unf|MiscFeature_Othr', 'Neighborhood_StoneBr|Exterior2nd_Brk Cmn', 'Neighborhood_Somerst|PavedDrive_Tencode', 'Functional_Typ|FireplaceQu_Po', 'FireplaceQu_TA|Functional_Min2', 'LandContour_Low|KitchenQual_Gd', 'MiscFeature_Tencode|LotConfig_Inside', 'RoofStyle_Gambrel|TotRmsAbvGrd', 'LotConfig_Tencode|Neighborhood_Sawyer', 'TotalBsmtSF|LotConfig_Corner', 'ScreenPorch|MasVnrType_BrkFace', 'Alley_Pave|GarageType_CarPort', 'LotArea|BsmtCond_Gd', 'LowQualFinSF|KitchenQual_Fa', 'Alley_Pave|Exterior1st_Plywood', 'HouseStyle_Tencode|FireplaceQu_Ex', 'GarageYrBlt|BsmtFinType1_Unf', 'LandContour_Tencode|Functional_Maj2', 'YearRemodAdd|Condition1_PosN', 'LotConfig_CulDSac|HouseStyle_SLvl', 'BsmtHalfBath|Neighborhood_Gilbert', 'FireplaceQu_Gd|MSZoning_RL', 'Neighborhood_Veenker|Fence_GdWo', '3SsnPorch|LandSlope_Gtl', 'BsmtCond_Fa|MasVnrType_Stone', 'LandContour_Tencode|SaleCondition_Family', 'GarageQual_Gd|Neighborhood_BrkSide', 'Neighborhood_Gilbert|MiscFeature_Gar2', 'GarageFinish_Unf|BsmtFinType1_GLQ', 'GarageType_Tencode|HouseStyle_1.5Fin', 'LotShape_Reg|LandContour_Bnk', 'HeatingQC_Fa|BsmtQual_Fa', 'BsmtFinType1_GLQ|Street_Pave', 'OverallQual|LandContour_Tencode', 'FireplaceQu_Ex|GarageFinish_RFn', 'RoofStyle_Flat|Neighborhood_SawyerW', 'Condition1_PosA|Functional_Min2', 'SaleType_WD|ExterQual_Fa', '3SsnPorch|CentralAir_Y', 'Exterior2nd_VinylSd|2ndFlrSF', 'MiscVal|GarageCond_Fa', 'Exterior2nd_VinylSd|Neighborhood_Timber', 'MoSold|Neighborhood_NWAmes', 'PavedDrive_Y|Neighborhood_NAmes', 'Exterior2nd_Stucco|HouseStyle_1Story', 'BsmtFinType2_GLQ|1stFlrSF', 'BsmtQual_Tencode|MiscFeature_Gar2', 'Exterior2nd_Stone|MSZoning_Tencode', 'Exterior2nd_AsbShng|GarageFinish_RFn', 'BldgType_Twnhs|FullBath', 'EnclosedPorch|BsmtFinSF1', 'LandSlope_Sev|FireplaceQu_Fa', 'ExterQual_Ex|Exterior1st_WdShing', 'LandContour_Tencode|ExterCond_Tencode', 'RoofStyle_Gambrel|Street_Grvl', 'Exterior1st_Stucco|RoofStyle_Gable', 'Neighborhood_Edwards|FireplaceQu_Ex', 'Electrical_FuseA|BsmtCond_Gd', 'FireplaceQu_Po|RoofStyle_Gable', 'KitchenQual_Gd|BsmtFinType1_Rec', 'SaleType_ConLD|SaleType_WD', 'ExterCond_TA|Functional_Mod', 'LotConfig_FR2|GarageQual_Fa', 'LotShape_IR1|BsmtCond_Tencode', 'KitchenAbvGr|Heating_GasA', 'LandSlope_Sev|Exterior1st_CemntBd', 'ExterCond_TA|ExterQual_Fa', 'Exterior2nd_Stone|BsmtUnfSF', 'ExterQual_Gd|CentralAir_N', 'Foundation_PConc|ExterQual_Gd', 'Exterior2nd_AsbShng|BsmtCond_Fa', 'Heating_GasA|BsmtFinSF1', 'Neighborhood_Edwards|Functional_Min2', 'BsmtExposure_Gd', 'Exterior2nd_AsbShng|Neighborhood_NoRidge', 'BldgType_Duplex|Fence_GdPrv', 'BsmtFinSF2|Neighborhood_OldTown', 'LandContour_Bnk|Condition1_Norm', 'BsmtQual_Ex|Fence_MnWw', 'TotRmsAbvGrd|Condition1_Feedr', 'SaleType_ConLw|Heating_GasW', 'KitchenAbvGr|SaleType_ConLw', 'RoofMatl_Tencode|Neighborhood_NAmes', 'Exterior1st_Stucco|LotShape_IR3', 'HouseStyle_1Story|Functional_Min1', 'Foundation_Stone|LandSlope_Mod', 'BsmtFinType1_Rec|MiscFeature_Tencode', 'LotShape_IR1|ExterQual_Fa', 'LotConfig_Corner|Neighborhood_SawyerW', 'HalfBath|Exterior2nd_HdBoard', 'Heating_Tencode|Fence_MnWw', 'BsmtHalfBath|KitchenQual_Ex', 'BldgType_Twnhs|Foundation_Stone', 'RoofStyle_Gambrel|Condition2_Norm', 'Foundation_PConc|BsmtFinType1_ALQ', 'GarageFinish_Tencode|Functional_Min2', 'LotShape_IR3|HouseStyle_2Story', 'Neighborhood_Blmngtn|MasVnrType_Stone', 'Neighborhood_ClearCr|GarageArea', 'BsmtQual_TA|BsmtFinType1_GLQ', 'Alley_Tencode|Exterior2nd_HdBoard', 'PavedDrive_N|CentralAir_Tencode', 'GarageFinish_Tencode|Neighborhood_StoneBr', 'Electrical_FuseF|Functional_Mod', 'Fence_Tencode|LowQualFinSF', 'LotShape_IR2|KitchenQual_Tencode', 'Heating_Tencode|Foundation_CBlock', 'Exterior2nd_BrkFace|HalfBath', 'GarageCond_Po|BsmtCond_Gd', 'Neighborhood_NridgHt|Condition1_PosN', 'BsmtCond_Po|Neighborhood_Crawfor', 'SaleType_Tencode|Foundation_CBlock', 'Exterior1st_Stucco|Condition2_Tencode', 'Exterior1st_MetalSd|WoodDeckSF', 'Exterior2nd_BrkFace|Condition2_Artery', 'LowQualFinSF|Exterior2nd_Wd Sdng', 'GarageFinish_Tencode|BldgType_Tencode', 'GarageQual_Po|GarageFinish_RFn', 'GarageQual_Fa|HouseStyle_SLvl', 'GrLivArea|MSZoning_FV', 'ExterCond_TA|Fence_MnPrv', 'PavedDrive_N|Fence_Tencode', 'BldgType_Duplex|SaleCondition_Alloca', 'KitchenQual_Ex|GarageType_CarPort', 'Condition2_Tencode|MSZoning_C (all)', 'KitchenAbvGr|3SsnPorch', 'HouseStyle_1.5Fin', 'GarageType_Detchd|Foundation_BrkTil', 'HeatingQC_Ex|ExterQual_Tencode', 'Neighborhood_BrDale|Neighborhood_SWISU', 'RoofMatl_Tencode|HouseStyle_SFoyer', 'SaleType_ConLw|Neighborhood_SWISU', 'BsmtFinType2_GLQ|Neighborhood_Gilbert', 'PavedDrive_Y|SaleType_CWD', 'Electrical_Tencode|BsmtFinType2_GLQ', 'RoofStyle_Gable|BsmtCond_Tencode', 'BsmtFinSF2|BsmtCond_Po', 'LotConfig_FR2|PavedDrive_Y', 'Condition1_Feedr|MiscFeature_Gar2', 'GarageCond_Po|Exterior2nd_Wd Shng', 'LotShape_IR1|GarageCond_Ex', 'LandContour_Lvl|Exterior1st_Tencode', 'KitchenAbvGr|Exterior1st_VinylSd', 'Functional_Typ|Exterior2nd_CmentBd', 'BsmtExposure_Av|MasVnrType_Tencode', 'LandSlope_Mod|RoofMatl_Tar&Grv', 'BedroomAbvGr|Fence_MnPrv', 'PavedDrive_N|Foundation_PConc', 'BsmtFinType1_Tencode|Condition1_Feedr', 'LandSlope_Sev|Neighborhood_IDOTRR', 'HouseStyle_1.5Unf|MasVnrType_Tencode', 'FireplaceQu_Gd|Exterior2nd_BrkFace', 'LotConfig_Corner|Condition2_Tencode', 'SaleType_Tencode|SaleCondition_Normal', 'HeatingQC_Gd|SaleType_CWD', 'TotalBsmtSF|LotShape_Reg', 'HeatingQC_Fa|Exterior2nd_VinylSd', 'Exterior1st_HdBoard|Functional_Min1', 'Neighborhood_NridgHt|RoofMatl_WdShngl', 'ExterQual_TA|SaleType_Oth', 'PoolQC_Tencode|Neighborhood_SawyerW', 'SaleType_ConLD|MSZoning_FV', 'GarageCond_Po|RoofStyle_Gable', 'Neighborhood_NPkVill|BldgType_1Fam', 'BldgType_TwnhsE|HouseStyle_2Story', 'BsmtFinType1_ALQ|WoodDeckSF', 'Exterior2nd_Stucco|LotArea', 'Exterior2nd_VinylSd|SaleType_ConLD', 'FireplaceQu_Gd|LotConfig_Tencode', 'GarageFinish_Tencode|LotConfig_Tencode', 'Exterior1st_BrkFace|GarageType_Attchd', 'MoSold|ScreenPorch', 'BsmtHalfBath|MasVnrType_None', 'ExterQual_TA|Exterior2nd_CmentBd', 'BsmtQual_Tencode|BedroomAbvGr', 'Fence_MnWw', 'SaleCondition_Abnorml|Foundation_Slab', 'BsmtFinType2_Tencode|Electrical_FuseF', 'Heating_GasW|MasVnrArea', 'GarageFinish_RFn|Alley_Grvl', 'Exterior1st_WdShing|MSZoning_RL', 'Neighborhood_OldTown|SaleCondition_Abnorml', 'Heating_Grav|RoofStyle_Gambrel', 'FireplaceQu_Po|BsmtCond_TA', 'Foundation_Stone|Heating_Tencode', 'LotConfig_Tencode|BsmtCond_Gd', 'KitchenQual_Gd|PoolArea', 'RoofMatl_Tencode|SaleCondition_Alloca', 'Neighborhood_ClearCr|SaleCondition_Normal', 'BsmtExposure_Tencode|GarageType_Attchd', 'GarageCars|MSZoning_C (all)', 'GarageCond_TA|Exterior2nd_Wd Shng', 'BsmtQual_Gd|HouseStyle_1.5Fin', 'RoofStyle_Gambrel|FireplaceQu_Ex', 'Functional_Tencode|RoofMatl_WdShngl', 'BsmtQual_Tencode|BsmtCond_Po', '1stFlrSF|BsmtFinType1_LwQ', 'Street_Tencode|YearRemodAdd', 'SaleType_New|RoofStyle_Tencode', 'BsmtQual_Ex|GarageCond_Fa', 'Foundation_Slab|HouseStyle_2Story', 'KitchenQual_Gd|GarageCond_Fa', 'BsmtFinType2_LwQ|BsmtCond_Fa', 'MSZoning_C (all)|Street_Grvl', 'Exterior1st_HdBoard|Neighborhood_Timber', 'LowQualFinSF|RoofStyle_Shed', 'MSZoning_Tencode|BsmtCond_Fa', 'LotArea|CentralAir_Y', 'FullBath|Alley_Grvl', 'Exterior2nd_Stone|CentralAir_Tencode', 'GarageFinish_Unf|RoofStyle_Tencode', 'Utilities_Tencode|SaleType_New', 'Alley_Pave|BsmtCond_Fa', 'Exterior2nd_BrkFace|BldgType_Tencode', 'HouseStyle_SFoyer|Exterior2nd_HdBoard', 'Neighborhood_BrDale|BsmtUnfSF', 'Exterior2nd_Tencode|Exterior2nd_VinylSd', 'BsmtFinType2_GLQ|SaleType_ConLI', 'Exterior2nd_BrkFace|Condition1_RRAn', 'Neighborhood_NoRidge|Fence_GdPrv', 'Neighborhood_Tencode|Functional_Min2', 'MSZoning_RM|Functional_Min2', 'Neighborhood_NWAmes|BsmtFinType1_Unf', 'SaleType_Tencode|HeatingQC_Tencode', 'Neighborhood_Veenker|Exterior2nd_MetalSd', 'Neighborhood_NPkVill|BsmtFinType2_LwQ', 'LandSlope_Mod|RoofStyle_Tencode', 'BsmtFinType2_Tencode|SaleType_ConLD', 'HeatingQC_Gd|MiscFeature_Tencode', 'ExterQual_TA|SaleCondition_Normal', 'TotalBsmtSF|PoolQC_Tencode', 'Neighborhood_OldTown|BldgType_Tencode', 'BsmtExposure_Gd|Exterior2nd_Plywood', 'Foundation_PConc|BsmtFinType1_Rec', 'PoolQC_Tencode|Condition2_Tencode', 'SaleCondition_Alloca|ExterCond_Tencode', 'BsmtCond_Gd|CentralAir_N', 'Neighborhood_CollgCr|BsmtCond_Gd', 'SaleType_ConLw|Neighborhood_NoRidge', 'PavedDrive_Y|Neighborhood_IDOTRR', 'LotShape_IR3|ExterQual_Fa', 'ExterQual_Gd|HouseStyle_2Story', 'RoofStyle_Tencode|Neighborhood_BrkSide', 'BldgType_Tencode|Foundation_Slab', 'RoofStyle_Tencode|LotShape_IR3', 'FireplaceQu_TA|Alley_Grvl', 'TotRmsAbvGrd|Street_Pave', 'FireplaceQu_Ex|LotShape_IR3', 'LotShape_IR1|GarageQual_TA', 'SaleType_ConLI|FireplaceQu_TA', 'EnclosedPorch|Neighborhood_StoneBr', 'LotConfig_FR2|BsmtExposure_Av', 'KitchenQual_Ex|LandContour_HLS', 'PavedDrive_Tencode|ExterQual_Fa', 'BsmtHalfBath|RoofMatl_Tar&Grv', 'FireplaceQu_Tencode|BldgType_Duplex', 'SaleType_Tencode|Neighborhood_Crawfor', 'BsmtQual_Tencode|LandSlope_Sev', 'LotFrontage|Neighborhood_CollgCr', 'SaleType_ConLD|MasVnrType_BrkFace', 'Exterior1st_Stucco|BsmtFinType1_Unf', 'Street_Tencode|LandContour_HLS', 'Electrical_FuseA|HouseStyle_1.5Unf', 'Neighborhood_NoRidge|Condition1_Norm', 'BsmtExposure_Tencode|FireplaceQu_Po', 'Electrical_Tencode|BsmtCond_Po', 'MiscFeature_Othr|MSZoning_C (all)', 'Neighborhood_CollgCr|Neighborhood_BrkSide', 'KitchenAbvGr|GarageFinish_Unf', 'BldgType_Duplex|GarageQual_TA', 'GarageQual_Po|MasVnrType_Stone', 'SaleType_New|OverallCond', 'BsmtExposure_Tencode|Electrical_FuseP', 'GarageCars|Exterior1st_Plywood', 'LowQualFinSF|MasVnrType_BrkCmn', 'BsmtCond_Gd|Exterior2nd_HdBoard', 'ExterCond_Tencode|Exterior2nd_AsphShn', 'Neighborhood_OldTown|GarageType_Tencode', 'Foundation_BrkTil|HeatingQC_Tencode', 'GarageFinish_Fin|BsmtQual_Fa', 'SaleCondition_Abnorml|MSZoning_FV', 'Foundation_Stone|MiscFeature_Tencode', 'Exterior2nd_MetalSd|BsmtQual_Gd', 'GarageFinish_Tencode|MiscFeature_Shed', 'TotalBsmtSF|Neighborhood_CollgCr', 'Neighborhood_CollgCr|Neighborhood_Crawfor', 'LotShape_Tencode|KitchenQual_Fa', 'BldgType_Duplex|BsmtFinType2_Unf', 'Exterior2nd_Stucco|Neighborhood_Edwards', 'GarageQual_Gd|LotConfig_Corner', 'HalfBath|MasVnrType_BrkFace', 'LotShape_IR2|Fence_Tencode', 'GarageCond_Po|TotRmsAbvGrd', 'Functional_Typ|2ndFlrSF', 'ExterQual_TA|BsmtFinType2_BLQ', 'Functional_Maj2|BsmtFinType1_LwQ', 'PavedDrive_N|Neighborhood_Crawfor', 'Utilities_Tencode|Neighborhood_Gilbert', 'GarageQual_Gd|Condition1_PosA', 'BsmtFinSF2|ExterQual_Fa', 'GarageCond_TA|HeatingQC_Tencode', 'HouseStyle_1Story|BsmtFinSF1', 'HouseStyle_SFoyer|Fence_GdWo', 'Electrical_FuseA|HalfBath', 'GarageCars|Exterior2nd_Plywood', 'SaleType_COD|ScreenPorch', 'LotShape_IR3|Exterior2nd_Wd Shng', 'GarageFinish_Fin|GarageQual_Tencode', 'RoofMatl_Tar&Grv|Exterior1st_MetalSd', 'Exterior2nd_Wd Sdng|Neighborhood_StoneBr', 'Electrical_SBrkr|Neighborhood_Sawyer', 'Foundation_Tencode|ExterQual_Fa', 'Exterior1st_Stucco|Neighborhood_OldTown', 'Exterior1st_BrkFace|ExterQual_Tencode', 'LotFrontage|GarageType_CarPort', 'Exterior1st_AsbShng|LandContour_Tencode', 'OverallQual|BsmtFinType1_Rec', 'Exterior2nd_AsbShng|Neighborhood_NridgHt', 'Alley_Tencode|Foundation_CBlock', 'KitchenQual_Fa|ExterCond_Fa', 'TotalBsmtSF|BsmtUnfSF', 'MiscFeature_Othr|BsmtHalfBath', 'MasVnrType_BrkCmn|Fence_MnWw', 'BldgType_Duplex|OverallCond', 'SaleType_Tencode|BsmtQual_Fa', 'Exterior2nd_Tencode|BsmtFinType1_GLQ', 'Exterior2nd_MetalSd|Exterior1st_Tencode', 'BsmtFinType2_BLQ|PavedDrive_P', 'Functional_Maj2|MSSubClass', 'Exterior1st_HdBoard|FireplaceQu_Po', 'MasVnrType_BrkCmn|BsmtFinType1_GLQ', 'SaleType_ConLD|BsmtExposure_No', 'Exterior2nd_AsbShng|BsmtExposure_Av', 'Exterior2nd_MetalSd|Neighborhood_StoneBr', 'RoofMatl_Tencode|Electrical_FuseA', 'MSZoning_C (all)|KitchenQual_Fa', 'GarageCond_Tencode|HouseStyle_1.5Fin', 'SaleCondition_Family|CentralAir_N', 'MasVnrType_BrkCmn|Functional_Min2', 'Electrical_FuseA|Exterior2nd_Brk Cmn', 'SaleCondition_Abnorml|ExterQual_Fa', 'BedroomAbvGr|RoofStyle_Tencode', 'BsmtFinType2_BLQ|Neighborhood_MeadowV', 'BsmtFinType1_ALQ|Neighborhood_Gilbert', 'GarageFinish_Tencode|Exterior2nd_MetalSd', 'Exterior2nd_BrkFace|GarageType_Tencode', 'MSZoning_RM|Condition1_RRAn', 'BsmtFinType1_Tencode|PavedDrive_Y', 'YrSold|Exterior1st_WdShing', 'BsmtFinType2_Unf|BsmtExposure_Mn', 'Exterior1st_AsbShng|RoofStyle_Gable', 'Functional_Typ|FireplaceQu_Fa', 'Exterior2nd_MetalSd|MiscFeature_Shed', 'HouseStyle_SFoyer|Heating_Grav', 'Heating_Tencode|ExterQual_Gd', 'GarageQual_Fa|BldgType_Tencode', 'GarageQual_Gd|GarageQual_Fa', 'Electrical_Tencode|BsmtFinType1_Rec', 'HeatingQC_Tencode|2ndFlrSF', 'PavedDrive_N|Neighborhood_Timber', 'Exterior1st_BrkFace|GarageQual_Fa', 'GarageCond_Po|Neighborhood_SWISU', 'Neighborhood_OldTown|GarageType_Attchd', 'Electrical_SBrkr|WoodDeckSF', 'SaleType_ConLD|Electrical_SBrkr', 'BsmtFinType2_GLQ|Condition2_Norm', 'Exterior1st_HdBoard|Exterior2nd_Wd Sdng', 'PavedDrive_N|1stFlrSF', 'Fence_Tencode|SaleCondition_Normal', 'Neighborhood_Tencode|FireplaceQu_Fa', 'BldgType_2fmCon|Condition1_RRAe', 'Neighborhood_NPkVill|Exterior2nd_CmentBd', 'LandContour_Bnk|Neighborhood_Timber', 'Exterior2nd_Stone|HeatingQC_Ex', 'Exterior2nd_Wd Sdng|MiscFeature_Tencode', 'GarageCond_Gd|SaleType_CWD', 'FullBath|Condition1_Feedr', 'FireplaceQu_Fa|Exterior1st_MetalSd', 'RoofStyle_Gable|MSZoning_RM', 'FireplaceQu_Gd|LandContour_HLS', 'Condition1_Tencode|MasVnrArea', 'SaleCondition_Family|BsmtCond_Gd', 'LotConfig_FR2|ExterQual_Ex', 'SaleType_CWD|LotShape_IR3', 'GarageCond_Po|Foundation_Stone', 'MSZoning_C (all)|HouseStyle_2.5Unf', 'Electrical_FuseF|Condition2_Artery', 'SaleType_ConLI|SaleCondition_Alloca', 'Exterior2nd_AsbShng|BsmtExposure_Mn', 'Street_Grvl|FireplaceQu_TA', 'MiscFeature_Shed|GarageType_CarPort', 'Condition2_Tencode|GarageQual_Tencode', 'Neighborhood_IDOTRR|Condition2_Norm', 'ExterQual_Tencode|ExterCond_Fa', 'SaleCondition_Alloca|GarageType_CarPort', 'GarageType_Detchd|ExterQual_Tencode', 'Foundation_PConc|MSZoning_RM', 'SaleCondition_Abnorml|Exterior1st_MetalSd', 'FireplaceQu_Tencode|Neighborhood_BrDale', 'BsmtExposure_Tencode|KitchenQual_Ex', 'Foundation_CBlock', 'HouseStyle_1Story|LotShape_IR1', 'GarageFinish_Fin|MasVnrType_BrkFace', 'Neighborhood_NridgHt|Electrical_FuseA', 'BldgType_Twnhs|Neighborhood_Veenker', 'YearRemodAdd|WoodDeckSF', 'SaleCondition_Tencode|ScreenPorch', 'Neighborhood_Sawyer|BldgType_1Fam', 'GrLivArea|MiscFeature_Othr', 'Neighborhood_IDOTRR|ExterQual_Fa', 'Alley_Pave|BsmtFinType2_LwQ', 'LotShape_Tencode|Exterior2nd_BrkFace', 'BsmtFinType2_Tencode|Condition2_Tencode', 'ExterCond_TA|GarageQual_Fa', 'GarageType_Attchd|KitchenQual_Fa', 'Fireplaces|SaleCondition_Normal', 'Electrical_FuseA|SaleType_ConLw', 'Heating_GasA|ScreenPorch', 'GarageType_Tencode|Neighborhood_Timber', 'SaleCondition_Family|MSZoning_RM', 'SaleCondition_Tencode|PavedDrive_Y', 'Fireplaces|GarageCond_Tencode', 'Neighborhood_NoRidge|GarageCond_Fa', 'FullBath|GarageFinish_Tencode', 'ExterQual_Fa|Neighborhood_MeadowV', 'LandSlope_Sev|KitchenQual_Fa', 'LotShape_Reg|HouseStyle_1.5Fin', 'BldgType_Tencode|MasVnrType_Tencode', 'RoofMatl_Tencode|BsmtFullBath', 'Fence_GdPrv|BsmtFinType1_Rec', 'Street_Tencode|Condition2_Norm', 'Functional_Maj2|BsmtFinType1_GLQ', 'Neighborhood_NWAmes|1stFlrSF', 'Exterior1st_BrkComm|Neighborhood_BrkSide', 'BldgType_TwnhsE|GarageType_Basment', 'LotFrontage|MiscFeature_Othr', 'BsmtFinSF2|RoofStyle_Shed', 'Neighborhood_NAmes|Neighborhood_IDOTRR', 'Condition1_RRAe|Neighborhood_NAmes', 'BsmtQual_Ex|BsmtFinType1_LwQ', 'Neighborhood_NPkVill|Neighborhood_NAmes', 'Foundation_CBlock|Neighborhood_MeadowV', 'GarageQual_Gd|ExterCond_Tencode', 'FireplaceQu_Ex|FireplaceQu_TA', 'GarageType_Basment|MasVnrType_Tencode', 'LotShape_Reg|LotShape_IR1', 'BsmtExposure_Tencode|Foundation_Stone', 'BsmtExposure_Tencode|Fireplaces', 'Exterior1st_WdShing|HouseStyle_1.5Fin', 'Heating_Grav|BldgType_1Fam', 'HalfBath|Fence_MnPrv', 'LandContour_Low|Exterior1st_WdShing', 'OverallQual|Neighborhood_CollgCr', 'BsmtFinType1_BLQ|BsmtCond_Po', 'HeatingQC_Tencode|Condition1_Feedr', 'MiscFeature_Shed|Condition2_Norm', 'Alley_Tencode|Foundation_Tencode', 'BsmtFinType2_Unf|BsmtCond_TA', 'BsmtFinType2_GLQ|MiscVal', 'Functional_Min1|ExterCond_Fa', 'Exterior2nd_Wd Sdng|KitchenQual_Fa', 'MiscFeature_Othr|BsmtFinSF1', 'KitchenQual_Gd|SaleType_ConLI', 'Exterior2nd_BrkFace|BsmtQual_TA', 'LotShape_Reg|GarageFinish_RFn', 'Electrical_Tencode|KitchenQual_Fa', 'FireplaceQu_Gd|LotShape_IR1', 'MSZoning_RL', 'SaleType_ConLI|Exterior2nd_Brk Cmn', 'BsmtQual_TA|Exterior2nd_AsphShn', 'GarageQual_Po|KitchenQual_Fa', 'MSZoning_RH|Fence_MnPrv', 'SaleCondition_Normal|Condition2_Artery', 'LandContour_HLS|ExterQual_Ex', 'Neighborhood_IDOTRR|Street_Pave', 'GarageFinish_Fin|Foundation_CBlock', 'BsmtFinType2_Rec|BldgType_TwnhsE', 'Street_Tencode|MiscVal', 'Functional_Mod|Exterior1st_Tencode', 'Neighborhood_Tencode|LandContour_Tencode', 'BsmtFinType2_ALQ|Neighborhood_BrkSide', 'HouseStyle_SLvl|MSZoning_RH', 'BedroomAbvGr|BsmtFinType2_BLQ', 'SaleCondition_Partial|Functional_Min2', 'SaleCondition_Alloca|MasVnrType_Stone', 'Neighborhood_BrDale|HouseStyle_SFoyer', 'Condition1_PosN|SaleType_COD', 'BsmtFinType2_GLQ|SaleType_New', 'SaleCondition_Tencode|MasVnrType_BrkCmn', 'HouseStyle_2.5Unf|BsmtExposure_Mn', 'LowQualFinSF|Neighborhood_SawyerW', 'Neighborhood_Sawyer|CentralAir_Y', 'BsmtQual_Tencode|Electrical_FuseF', 'HeatingQC_Fa|GarageCond_Gd', 'Neighborhood_NridgHt|Neighborhood_Crawfor', 'PavedDrive_Y|Street_Pave', 'HeatingQC_TA|BldgType_Twnhs', 'LotConfig_CulDSac|PoolArea', 'GarageCond_Gd|2ndFlrSF', 'RoofMatl_Tencode|Foundation_PConc', 'BsmtQual_Ex|MasVnrType_Tencode', 'GarageCond_Po|KitchenQual_TA', 'FireplaceQu_Ex|Street_Pave', 'Neighborhood_OldTown|MSZoning_C (all)', 'BsmtFinType2_Tencode|Condition2_Artery', 'Electrical_FuseA|CentralAir_Tencode', 'Neighborhood_Mitchel|ScreenPorch', 'LotShape_IR2|Alley_Grvl', 'Heating_Tencode|BsmtExposure_Av', 'Exterior2nd_VinylSd|Utilities_AllPub', 'BldgType_Twnhs|Exterior2nd_AsphShn', 'ExterCond_Gd|Neighborhood_Gilbert', 'Alley_Pave|ExterCond_Fa', 'GarageCond_Gd|CentralAir_Tencode', 'Fireplaces|HouseStyle_SLvl', 'RoofStyle_Hip|RoofMatl_WdShngl', 'RoofMatl_WdShngl|Exterior1st_Tencode', 'KitchenQual_Ex|MasVnrType_Tencode', 'Exterior1st_BrkFace|Neighborhood_Sawyer', 'BsmtExposure_Gd|HouseStyle_SLvl', 'Electrical_Tencode|SaleType_COD', 'ExterQual_TA|Neighborhood_SawyerW', 'Exterior2nd_Stucco|Street_Tencode', 'Functional_Min1|SaleType_CWD', 'LandSlope_Gtl|BsmtCond_Tencode', 'Neighborhood_ClearCr|GarageCond_Ex', 'LotConfig_FR2|BsmtFullBath', 'Electrical_Tencode|TotRmsAbvGrd', 'BsmtQual_Gd|BsmtExposure_Mn', 'Electrical_FuseF|MoSold', 'Electrical_Tencode|HouseStyle_2Story', 'Condition1_Norm|Alley_Grvl', 'RoofMatl_CompShg|CentralAir_Y', 'Neighborhood_Somerst|BsmtFinType1_GLQ', 'PavedDrive_P|HouseStyle_1.5Fin', 'Neighborhood_NoRidge|BsmtFinType1_Rec', 'BsmtQual_TA|Alley_Grvl', 'GarageFinish_Unf|KitchenQual_TA', 'GarageArea|HouseStyle_1.5Fin', 'LandSlope_Mod|Neighborhood_Timber', 'MiscFeature_Shed|ScreenPorch', 'Electrical_Tencode|SaleType_Oth', 'Alley_Tencode|GarageFinish_Fin', 'LotConfig_Corner|BldgType_TwnhsE', 'LotConfig_Corner|Exterior2nd_AsphShn', 'RoofStyle_Tencode|Neighborhood_Crawfor', 'Utilities_Tencode|Neighborhood_BrDale', 'KitchenQual_Gd|GarageQual_Po', 'HouseStyle_1.5Fin|Exterior2nd_AsphShn', 'ExterQual_Gd|Condition2_Artery', 'HeatingQC_TA|LowQualFinSF', 'ExterQual_TA|HouseStyle_2.5Unf', 'GrLivArea|BsmtCond_Po', 'ExterCond_TA|Condition2_Norm', 'KitchenQual_Tencode|GarageType_BuiltIn', 'Neighborhood_Edwards|Fence_MnWw', 'SaleType_ConLw|CentralAir_N', 'Heating_GasW|Exterior1st_Tencode', 'GarageQual_Po|Exterior1st_MetalSd', 'ExterCond_Tencode|MiscFeature_Tencode', 'BsmtHalfBath|TotRmsAbvGrd', 'Condition2_Artery|BsmtFinType2_Unf', 'MSZoning_RM|BsmtCond_TA', 'GarageQual_Po|Functional_Mod', 'SaleType_ConLI|Neighborhood_Crawfor', 'BldgType_Twnhs|BsmtQual_Tencode', 'Functional_Mod|Condition1_Tencode', 'Alley_Pave|LandContour_HLS', 'SaleType_ConLD|MasVnrType_BrkCmn', 'HouseStyle_SFoyer|MSZoning_RH', 'Neighborhood_ClearCr|Exterior1st_VinylSd', 'Neighborhood_Somerst|GarageType_Attchd', 'KitchenQual_Gd|LotConfig_Corner', 'LotConfig_Corner|Neighborhood_Edwards', 'RoofStyle_Tencode|BldgType_Tencode', 'EnclosedPorch|LowQualFinSF', 'PavedDrive_Y|Exterior1st_VinylSd', 'KitchenAbvGr|Neighborhood_Crawfor', 'HouseStyle_Tencode|BsmtFinType2_LwQ', 'Condition2_Artery|PavedDrive_P', 'Alley_Pave|Neighborhood_Tencode', 'Exterior1st_CemntBd|2ndFlrSF', 'BsmtQual_Fa|ExterCond_Tencode', 'Exterior2nd_Stone|Neighborhood_NAmes', 'MSZoning_RM|ScreenPorch', 'Neighborhood_SWISU|Neighborhood_IDOTRR', 'HouseStyle_1.5Fin|Functional_Min2', 'Exterior2nd_Stone|Neighborhood_Edwards', 'Neighborhood_NWAmes|MSZoning_RH', 'BsmtFinType2_BLQ|ExterCond_Tencode', 'Neighborhood_Blmngtn|MoSold', 'MSZoning_Tencode|Exterior1st_Tencode', 'Condition2_Tencode|Exterior2nd_AsphShn', '2ndFlrSF|Foundation_Slab', 'BsmtQual_Tencode|HouseStyle_2Story', 'GarageType_CarPort|Exterior2nd_HdBoard', 'LandSlope_Mod|Neighborhood_NWAmes', 'BsmtCond_Gd|GarageFinish_RFn', 'LandSlope_Tencode|MiscFeature_Tencode', 'HeatingQC_Fa|BsmtFinType2_BLQ', 'LandContour_HLS|Exterior2nd_AsphShn', 'BsmtFinSF2|Neighborhood_SawyerW', 'BsmtFinType1_Rec|BldgType_1Fam', 'BsmtFinType1_Tencode|KitchenQual_TA', 'Functional_Maj1|FireplaceQu_TA', 'SaleCondition_Abnorml|Condition1_RRAn', 'Heating_GasA|GarageCond_Fa', 'BsmtFinType2_LwQ|MasVnrType_None', 'MiscFeature_Gar2|Neighborhood_BrkSide', 'Neighborhood_NPkVill|BsmtCond_Po', 'LandContour_HLS|Electrical_SBrkr', 'BedroomAbvGr|MoSold', 'ExterCond_Gd|Condition1_PosN', 'BldgType_Twnhs|ScreenPorch', 'SaleCondition_Tencode|BedroomAbvGr', 'Neighborhood_Edwards|HouseStyle_1.5Fin', 'Exterior2nd_Stucco|Street_Pave', 'LotShape_IR2|BsmtFinSF2', 'BldgType_Twnhs|BsmtHalfBath', 'SaleCondition_Tencode|CentralAir_Tencode', 'Condition1_Artery|HouseStyle_2.5Unf', 'KitchenQual_Gd|LandContour_Tencode', 'LandSlope_Tencode|Exterior1st_CemntBd', 'Neighborhood_SawyerW|Neighborhood_IDOTRR', 'Electrical_FuseA|Exterior2nd_BrkFace', 'Heating_Grav|MiscFeature_Shed', 'SaleCondition_Tencode|GarageFinish_Tencode', 'LandContour_Tencode|FireplaceQu_Ex', 'ScreenPorch|Foundation_Slab', 'SaleType_ConLI|Functional_Mod', 'LotConfig_CulDSac|BsmtFinType2_Rec', 'LotConfig_FR2|BsmtFinType2_Rec', 'MiscFeature_Othr|KitchenQual_Tencode', 'FireplaceQu_Gd|MasVnrType_None', 'Neighborhood_NWAmes|Condition2_Norm', 'LotFrontage|Street_Grvl', 'MasVnrType_BrkCmn|Foundation_Slab', 'LotShape_IR3|Exterior1st_Wd Sdng', 'LotShape_Tencode|LandSlope_Gtl', 'HouseStyle_SLvl|Neighborhood_MeadowV', 'GarageCond_Tencode|Foundation_Slab', 'Heating_Tencode|LotShape_IR3', 'Functional_Tencode|Exterior1st_Wd Sdng', 'Condition1_PosN|GarageQual_Tencode', 'FireplaceQu_Po|SaleType_WD', 'Neighborhood_Timber|GarageType_2Types', 'Exterior2nd_Stucco|HeatingQC_Tencode', 'RoofStyle_Hip|Neighborhood_IDOTRR', 'HeatingQC_Fa|Condition1_PosA', 'Functional_Tencode|Heating_GasW', 'MSZoning_RM|ExterCond_Fa', 'Heating_Grav|2ndFlrSF', 'GarageCond_Tencode|LotShape_IR3', 'LotShape_Tencode|GarageFinish_RFn', 'Neighborhood_ClearCr|GarageType_CarPort', 'RoofMatl_Tencode|Condition2_Tencode', 'BsmtExposure_Tencode|BsmtCond_Fa', 'BedroomAbvGr|GarageArea', 'LandSlope_Mod|BsmtFullBath', 'OpenPorchSF|BsmtFinSF1', 'GarageYrBlt|Condition1_RRAn', 'RoofMatl_CompShg|Neighborhood_BrkSide', 'OverallQual|Functional_Mod', 'EnclosedPorch|Electrical_Tencode', 'Exterior2nd_Stone|Functional_Tencode', 'PavedDrive_N|HouseStyle_1Story', 'HeatingQC_Gd|GarageFinish_RFn', 'Neighborhood_Tencode|Condition1_RRAn', 'OpenPorchSF|MSZoning_RM', 'SaleCondition_Normal|BsmtCond_Gd', 'GarageQual_Po|Exterior2nd_AsphShn', 'LandSlope_Tencode|ExterQual_Ex', 'GarageType_Basment|ScreenPorch', 'Neighborhood_ClearCr|RoofStyle_Gable', 'CentralAir_Y|Neighborhood_MeadowV', 'GarageQual_Po|BsmtFinType1_LwQ', 'HouseStyle_2.5Unf|Street_Pave', 'GarageCond_Fa|MasVnrArea', 'Condition1_PosA|Condition1_Feedr', 'Foundation_Tencode|Exterior1st_WdShing', 'SaleType_Tencode|Exterior2nd_AsphShn', 'Foundation_Stone|ExterQual_Ex', 'GarageType_Detchd|GarageFinish_Fin', 'FireplaceQu_Gd|Exterior1st_Stucco', 'Exterior1st_BrkFace|LandSlope_Gtl', 'SaleType_ConLI|FireplaceQu_Fa', 'Electrical_FuseP|GarageType_Basment', 'Neighborhood_Somerst|MiscFeature_Gar2', 'Neighborhood_CollgCr|Street_Grvl', 'Fence_Tencode|Functional_Mod', 'LotShape_Reg|BsmtExposure_No', 'Heating_GasW|ExterCond_Gd', 'BsmtUnfSF|Condition2_Artery', 'HeatingQC_TA|BsmtCond_Fa', 'Foundation_Tencode|RoofStyle_Shed', 'MoSold|BsmtCond_TA', 'Fireplaces|MasVnrArea', 'Alley_Tencode|Neighborhood_Timber', 'Neighborhood_NPkVill|LandSlope_Tencode', 'BsmtFinType1_BLQ|Exterior2nd_CmentBd', 'ExterQual_Gd|GarageCond_Ex', 'PavedDrive_Y|SaleCondition_Alloca', 'GrLivArea|Condition1_Feedr', 'MSZoning_FV|Foundation_Slab', 'Utilities_Tencode|Neighborhood_StoneBr', 'Neighborhood_Sawyer|Neighborhood_SawyerW', 'PavedDrive_N|SaleType_ConLw', 'Neighborhood_NPkVill|GarageFinish_Tencode', 'Heating_Grav|Neighborhood_BrkSide', 'LotShape_Reg|Foundation_Tencode', 'GarageQual_Fa|Exterior2nd_AsphShn', 'GarageCars|SaleCondition_Family', 'LotFrontage|Neighborhood_BrkSide', 'Neighborhood_Tencode|Exterior1st_Tencode', 'ExterCond_TA|GarageQual_Po', 'Utilities_Tencode|KitchenQual_Fa', 'Electrical_FuseP|Utilities_AllPub', 'MiscFeature_Othr|ExterCond_Tencode', 'HeatingQC_Ex|Electrical_FuseF', 'LotShape_Reg|LandContour_Tencode', 'Neighborhood_NPkVill|LotConfig_Corner', 'RoofMatl_Tencode|PoolQC_Tencode', 'Heating_GasA|BldgType_Tencode', 'KitchenQual_Gd|BsmtHalfBath', 'RoofStyle_Hip|BsmtFinType2_GLQ', 'PavedDrive_Tencode|1stFlrSF', 'Neighborhood_Somerst|BsmtFinType2_ALQ', 'Neighborhood_OldTown|Neighborhood_Gilbert', 'GarageType_Tencode|SaleType_CWD', 'LotShape_Reg|FireplaceQu_Ex', 'FullBath|HouseStyle_SLvl', 'Neighborhood_Gilbert|Exterior2nd_AsphShn', 'KitchenQual_TA|BsmtFinType1_Unf', 'Condition1_Artery|GarageCond_TA', 'Condition1_Artery|KitchenQual_Fa', 'GarageArea|Functional_Min1', 'Foundation_Stone|ExterCond_Fa', 'BldgType_Duplex|KitchenQual_Fa', 'FireplaceQu_Tencode|Electrical_FuseP', 'Alley_Tencode|BsmtFullBath', 'Heating_Tencode|BsmtExposure_No', 'FireplaceQu_Gd|SaleCondition_Abnorml', 'MoSold|Neighborhood_SawyerW', 'Exterior1st_HdBoard|Neighborhood_ClearCr', 'RoofStyle_Flat|Exterior1st_BrkComm', 'BsmtFinType2_Rec|ExterQual_Gd', 'YearRemodAdd|Exterior2nd_CmentBd', 'BsmtCond_TA|ExterQual_Fa', 'Functional_Mod|Exterior1st_Plywood', 'GarageCond_Ex|Street_Pave', 'MSZoning_RM|BsmtCond_Po', 'Exterior2nd_AsbShng|Neighborhood_IDOTRR', 'BsmtFinType1_Rec|MasVnrType_Tencode', 'LotShape_IR2|GarageFinish_Tencode', 'Neighborhood_StoneBr|Exterior1st_Plywood', 'Exterior1st_Stucco|GarageQual_Tencode', 'SaleType_ConLw|Condition1_RRAn', 'SaleType_ConLD|GarageQual_Tencode', 'SaleCondition_Tencode|Exterior2nd_MetalSd', 'Functional_Tencode|Exterior1st_AsbShng', 'Foundation_Tencode|Exterior2nd_HdBoard', 'Neighborhood_SWISU|MasVnrType_BrkFace', 'Heating_GasA|Fence_MnPrv', 'Alley_Pave|BsmtFinType2_Rec', 'LotShape_IR1|RoofMatl_WdShngl', 'BsmtFinType1_Tencode|Neighborhood_Timber', 'Foundation_BrkTil|BsmtFinType1_Rec', 'Condition2_Artery|MSSubClass', 'MSZoning_C (all)|RoofMatl_WdShngl', 'HeatingQC_TA|BsmtFinType1_Unf', 'RoofMatl_CompShg|Neighborhood_SawyerW', 'Condition1_RRAe|BsmtFinSF1', 'BsmtQual_Ex|BedroomAbvGr', 'LotArea|GarageType_2Types', 'Functional_Maj1|ExterQual_Tencode', 'BsmtExposure_Tencode|LotShape_Tencode', 'BsmtQual_Ex|KitchenQual_Tencode', 'MiscVal|ScreenPorch', 'BsmtFinType2_ALQ|HouseStyle_1.5Unf', 'Exterior2nd_Stucco|Electrical_FuseP', 'BsmtFinType1_BLQ|Neighborhood_NWAmes', 'KitchenQual_Tencode|WoodDeckSF', 'BsmtQual_TA|Exterior1st_Wd Sdng', 'MiscVal|LotConfig_Tencode', 'LowQualFinSF|MSZoning_RM', 'Foundation_CBlock|Exterior1st_BrkComm', 'Exterior2nd_BrkFace|OpenPorchSF', 'GarageCond_TA|Exterior1st_Tencode', 'Condition1_Artery|LotConfig_Corner', 'LandContour_HLS|Exterior2nd_Wd Sdng', 'Condition1_Feedr|Neighborhood_MeadowV', 'LotShape_Reg|Exterior1st_CemntBd', 'PavedDrive_N|Exterior2nd_AsphShn', 'GarageCond_Po|BsmtExposure_No', 'Neighborhood_Tencode|3SsnPorch', 'Exterior1st_Stucco|Condition2_Artery', 'PoolQC_Tencode|Exterior2nd_Plywood', 'MasVnrType_None|FireplaceQu_TA', 'SaleType_WD|BsmtExposure_No', 'RoofMatl_Tar&Grv|PavedDrive_P', 'GarageCond_Tencode|Exterior2nd_Brk Cmn', 'HeatingQC_TA|BsmtFinType2_Unf', 'Functional_Tencode|GarageQual_Fa', 'GarageFinish_Unf|Exterior1st_Stucco', 'BsmtFinType1_BLQ|BsmtQual_Tencode', 'ExterCond_Gd|MasVnrType_Stone', 'RoofStyle_Gable|GarageCond_Ex', 'RoofMatl_Tencode|MasVnrArea', 'Heating_GasW|Exterior1st_BrkComm', 'PavedDrive_P|Exterior1st_WdShing', 'FireplaceQu_Po|Condition1_Feedr', 'MoSold|Condition1_Feedr', 'RoofMatl_Tencode|Foundation_CBlock', 'GarageCars|Neighborhood_OldTown', 'Neighborhood_Mitchel|GarageQual_Po', 'HouseStyle_Tencode|GarageArea', 'GarageArea|Exterior2nd_HdBoard', 'SaleType_ConLI|SaleType_New', 'SaleType_ConLI|ExterCond_Gd', 'KitchenQual_Fa|Condition1_Tencode', 'SaleCondition_Alloca|LotConfig_Inside', 'BsmtQual_TA|Functional_Min2', 'ExterCond_TA|LandSlope_Tencode', 'LotArea|Exterior1st_WdShing', 'BsmtFinType1_Rec|RoofMatl_WdShngl', 'FireplaceQu_TA|RoofMatl_WdShngl', 'BsmtFinType2_LwQ|MiscFeature_Gar2', 'LotShape_IR1|LandContour_Bnk', 'LandContour_Lvl|HouseStyle_1.5Fin', 'HouseStyle_Tencode|ScreenPorch', 'HouseStyle_2.5Unf|MSZoning_RL', 'Electrical_Tencode|Neighborhood_Veenker', 'LandSlope_Sev|MasVnrType_None', 'TotRmsAbvGrd|MasVnrType_BrkCmn', 'GarageCond_Tencode|SaleType_Tencode', '3SsnPorch|GarageQual_Fa', 'LandSlope_Sev|BldgType_1Fam', 'RoofStyle_Gambrel|BsmtFinType1_LwQ', 'Exterior1st_HdBoard|Exterior1st_VinylSd', 'GarageCond_Tencode|Exterior1st_MetalSd', 'Fireplaces|SaleCondition_Partial', 'GarageCond_Fa|ExterQual_Ex', 'Foundation_PConc|GarageType_Basment', 'SaleType_New|Utilities_AllPub', 'GarageQual_Gd|Exterior2nd_CmentBd', 'RoofMatl_CompShg|Neighborhood_NoRidge', 'TotRmsAbvGrd|FireplaceQu_TA', 'HouseStyle_Tencode|SaleType_CWD', 'ExterCond_TA|Street_Grvl', 'LandContour_Tencode|KitchenQual_Fa', 'BsmtQual_TA|Functional_Mod', 'Fence_Tencode|LotConfig_Inside', 'BldgType_Tencode|Neighborhood_Timber', 'Exterior2nd_VinylSd|Condition2_Artery', 'BldgType_Duplex|ExterQual_Gd', 'Foundation_Stone|2ndFlrSF', 'SaleType_ConLI|BedroomAbvGr', 'Neighborhood_NPkVill|Exterior2nd_HdBoard', 'FireplaceQu_Po|Exterior2nd_AsphShn', 'Utilities_Tencode|LotShape_Tencode', 'Neighborhood_CollgCr|Exterior1st_MetalSd', 'SaleCondition_Tencode|PoolQC_Tencode', 'Electrical_FuseA|MSZoning_FV', 'HalfBath|Condition1_RRAn', 'SaleType_ConLI|MiscFeature_Gar2', 'LotShape_Reg|Neighborhood_SWISU', '3SsnPorch|Condition2_Artery', 'ExterQual_Ex|ExterQual_Fa', 'BsmtFinType1_LwQ|Fence_MnWw', 'LandContour_Low|TotalBsmtSF', 'FireplaceQu_Gd|MasVnrType_BrkCmn', 'Fireplaces|Neighborhood_Tencode', 'MSSubClass|FireplaceQu_TA', 'Functional_Mod|Exterior1st_MetalSd', 'Functional_Typ|KitchenQual_Gd', 'LandSlope_Mod|GarageQual_TA', 'LotShape_IR1|GarageType_Basment', 'GarageFinish_Unf|BsmtFinSF2', 'Foundation_PConc|BldgType_1Fam', 'SaleCondition_Alloca|BldgType_Tencode', 'HouseStyle_1Story|RoofMatl_Tar&Grv', 'Neighborhood_BrDale|BldgType_1Fam', 'HouseStyle_SLvl|RoofMatl_WdShngl', 'RoofStyle_Shed|Neighborhood_NWAmes', 'BsmtQual_TA|SaleCondition_Abnorml', 'Neighborhood_BrDale|Foundation_BrkTil', 'Alley_Tencode|Neighborhood_NoRidge', 'LandSlope_Tencode|Neighborhood_SWISU', 'MiscFeature_Othr|RoofMatl_CompShg', 'LandSlope_Gtl|GarageCond_Ex', 'Functional_Min1|ExterQual_Gd', 'LotConfig_FR2|Neighborhood_SawyerW', 'LotConfig_FR2|Fence_MnWw', 'BsmtFinType1_Rec|Condition2_Artery', 'Electrical_Tencode|MSZoning_FV', 'Foundation_PConc|HeatingQC_Fa', 'SaleType_Tencode|MSSubClass', 'SaleCondition_Alloca|HouseStyle_1.5Fin', 'LandSlope_Mod|HeatingQC_Tencode', '3SsnPorch|Exterior2nd_Wd Shng', 'LotConfig_Tencode|MasVnrType_BrkFace', 'HouseStyle_SFoyer|ExterQual_Fa', 'CentralAir_N|Exterior2nd_Wd Shng', 'LandContour_HLS|MasVnrType_BrkFace', 'LotShape_Reg|Condition1_RRAe', 'Alley_Pave|Neighborhood_CollgCr', 'SaleCondition_Tencode|BsmtFinSF2', 'Neighborhood_NWAmes|Neighborhood_Crawfor', 'Neighborhood_CollgCr|SaleType_New', 'PavedDrive_Tencode|2ndFlrSF', 'GarageType_CarPort|Neighborhood_Crawfor', 'GarageFinish_Tencode|MSZoning_Tencode', 'Exterior1st_CemntBd|Exterior2nd_Plywood', 'Neighborhood_NPkVill|BsmtQual_Ex', 'Electrical_FuseP|ExterCond_Fa', 'PoolQC_Tencode|MSZoning_RL', 'KitchenQual_Gd|Exterior2nd_Tencode', 'SaleType_COD|Neighborhood_SawyerW', 'Neighborhood_Blmngtn|SaleType_ConLD', 'SaleType_Oth|Exterior1st_MetalSd', 'RoofMatl_CompShg|Fence_MnPrv', 'CentralAir_Tencode|Exterior2nd_HdBoard', 'BsmtFinType2_Tencode|BsmtFinType1_BLQ', 'Exterior1st_BrkFace|OverallCond', 'GarageQual_Gd|ExterCond_Gd', 'Neighborhood_Gilbert|Exterior1st_MetalSd', 'RoofMatl_Tencode|MoSold', 'LotFrontage|GarageFinish_RFn', 'FireplaceQu_Tencode|YrSold', 'BsmtExposure_Tencode|LowQualFinSF', 'Neighborhood_NridgHt|GarageCond_Gd', 'SaleType_WD|Condition2_Norm', 'Neighborhood_CollgCr|ExterQual_Ex', 'SaleCondition_Normal|SaleType_Oth', 'BldgType_Duplex|GarageType_Basment', 'FireplaceQu_Po|SaleType_CWD', 'Neighborhood_BrDale|BsmtFinType2_LwQ', 'LotFrontage|HouseStyle_SLvl', 'Neighborhood_BrDale|Neighborhood_StoneBr', 'RoofMatl_CompShg|HeatingQC_Ex', '3SsnPorch|HouseStyle_1.5Fin', 'Fence_Tencode|BsmtQual_Ex', 'GarageCond_Tencode|RoofMatl_WdShngl', 'Neighborhood_ClearCr|Condition2_Artery', 'GarageCond_Fa|KitchenQual_TA', 'HeatingQC_TA|BsmtFinType1_GLQ', 'GarageCond_Gd|GarageFinish_RFn', 'Condition1_Feedr|SaleType_CWD', 'LandContour_Lvl|RoofMatl_WdShngl', 'BsmtExposure_Tencode|Neighborhood_IDOTRR', 'Neighborhood_Tencode|BsmtFinType2_LwQ', 'Neighborhood_NridgHt|GarageQual_Fa', 'SaleType_CWD|Exterior1st_WdShing', 'KitchenAbvGr|SaleCondition_Partial', 'MSSubClass|BsmtCond_Fa', 'Neighborhood_Veenker|Exterior1st_VinylSd', 'Heating_Tencode|Neighborhood_BrkSide', 'BsmtFinType2_Rec|BsmtExposure_Gd', 'RoofStyle_Gambrel|MSZoning_C (all)', 'GarageCond_Gd|Exterior2nd_Brk Cmn', 'PoolQC_Tencode|HeatingQC_Tencode', 'BldgType_Duplex|BsmtExposure_No', 'SaleCondition_Tencode|Fence_GdWo', 'Exterior1st_BrkFace|BsmtFullBath', 'GarageCond_Fa|MSZoning_FV', 'LandContour_Bnk|BldgType_1Fam', 'GarageFinish_Unf|OpenPorchSF', 'HouseStyle_1Story|SaleType_ConLI', 'Neighborhood_Gilbert|LotShape_IR3', 'Foundation_Slab|WoodDeckSF', 'Foundation_BrkTil|BsmtCond_Fa', 'BsmtQual_Tencode|PavedDrive_P', 'BsmtQual_TA|GarageQual_Tencode', 'ExterQual_Ex|Neighborhood_IDOTRR', 'RoofStyle_Shed|Functional_Mod', 'Neighborhood_Somerst|RoofMatl_WdShngl', 'LotShape_IR1|Neighborhood_BrkSide', 'Neighborhood_Tencode|Functional_Min1', 'MoSold|PavedDrive_P', 'Electrical_Tencode|BsmtFinType1_Unf', 'BsmtUnfSF|Neighborhood_IDOTRR', 'OverallQual|Exterior1st_HdBoard', 'Condition1_PosN|MiscFeature_Gar2', 'OverallQual|RoofStyle_Hip', 'Utilities_Tencode|Fence_GdWo', 'HeatingQC_Gd|LotConfig_CulDSac', 'MasVnrArea|Street_Pave', 'MiscFeature_Tencode|GarageYrBlt', 'SaleType_ConLD|GarageCond_Fa', 'PavedDrive_N|Foundation_Slab', 'Functional_Tencode|Neighborhood_OldTown', 'Exterior2nd_Tencode|Exterior2nd_CmentBd', 'KitchenQual_Tencode|Exterior1st_MetalSd', 'LandSlope_Sev|BsmtFinType1_ALQ', 'RoofMatl_Tencode|Neighborhood_Somerst', 'Exterior2nd_Brk Cmn|Street_Pave', 'Electrical_FuseF|OverallCond', 'LotArea|Neighborhood_Edwards', 'Exterior2nd_Tencode|MSZoning_Tencode', 'Condition2_Artery|CentralAir_Tencode', 'Condition1_Tencode|MSZoning_RL', 'Electrical_FuseF|SaleType_COD', 'GarageQual_TA|MSZoning_FV', 'YearRemodAdd|Neighborhood_Crawfor', 'LotConfig_CulDSac|Functional_Min2', 'SaleCondition_Tencode|KitchenQual_TA', 'YearRemodAdd|BsmtFinType1_LwQ', 'GarageCond_Gd|Neighborhood_Timber', 'ExterCond_Tencode|GarageFinish_Tencode', 'BsmtQual_Tencode|GarageType_Tencode', 'SaleType_ConLw|BsmtFinType1_LwQ', 'Neighborhood_OldTown|GarageYrBlt', 'ExterCond_Gd|MSSubClass', 'GarageCond_Gd|Neighborhood_SawyerW', 'GarageCond_Gd|BsmtUnfSF', 'RoofStyle_Gambrel|RoofStyle_Gable', 'MiscVal|BsmtCond_TA', 'Exterior2nd_Tencode|Alley_Grvl', 'Fence_Tencode|BsmtFinType2_BLQ', 'Foundation_BrkTil|Exterior2nd_VinylSd', 'OverallQual|BsmtFinType1_ALQ', 'Electrical_SBrkr|MSSubClass', 'FireplaceQu_Tencode|Fence_Tencode', 'Heating_GasW|PavedDrive_P', 'SaleType_ConLw|2ndFlrSF', 'PavedDrive_Tencode|BsmtQual_TA', 'Fence_GdPrv|BsmtFullBath', 'GarageType_Tencode|Neighborhood_StoneBr', 'RoofStyle_Hip|Heating_Grav', 'BldgType_Duplex|ExterQual_Fa', 'Neighborhood_Mitchel|Exterior2nd_BrkFace', 'HouseStyle_SLvl|Fence_MnWw', 'Exterior2nd_BrkFace|Street_Pave', 'BsmtQual_Fa|ExterCond_Fa', 'Neighborhood_NPkVill|Exterior2nd_Wd Shng', 'HouseStyle_1Story|Neighborhood_Timber', 'GarageQual_Gd|RoofMatl_Tar&Grv', 'KitchenQual_Ex|Neighborhood_Tencode', 'BsmtCond_Gd|Exterior1st_MetalSd', 'GarageCond_Ex|MasVnrType_Tencode', 'Neighborhood_Edwards|Exterior2nd_Plywood', 'SaleType_ConLI|FireplaceQu_Ex', 'TotalBsmtSF|Neighborhood_NAmes', 'LotConfig_FR2|SaleCondition_Normal', 'RoofStyle_Hip|Neighborhood_NPkVill', 'Neighborhood_NWAmes|Neighborhood_IDOTRR', 'BsmtCond_Po|BsmtExposure_Mn', 'HeatingQC_TA|MiscFeature_Othr', 'RoofStyle_Gambrel|Neighborhood_Gilbert', 'HeatingQC_Gd|RoofStyle_Tencode', 'Electrical_FuseP|GarageCond_Gd', 'BsmtFinType1_ALQ|Neighborhood_Crawfor', 'MoSold|Fence_MnWw', 'HeatingQC_Gd|Neighborhood_MeadowV', 'Exterior2nd_Stucco|BsmtQual_TA', 'Exterior1st_BrkFace|Neighborhood_Blmngtn', 'Exterior2nd_CmentBd|BldgType_TwnhsE', 'GarageFinish_Unf|SaleCondition_Partial', 'Exterior1st_Tencode|MasVnrType_Tencode', 'MSZoning_RM|MSZoning_FV', 'GarageQual_Po|Alley_Grvl', 'HouseStyle_1Story|LowQualFinSF', 'Utilities_Tencode|ExterQual_TA', 'RoofMatl_Tencode|HouseStyle_1.5Fin', 'LotConfig_FR2|SaleCondition_Abnorml', 'LotArea|BsmtFinType2_Unf', 'SaleType_Tencode|SaleType_Oth', 'Exterior2nd_VinylSd|GarageQual_Fa', 'MSZoning_Tencode|HouseStyle_2Story', 'LotConfig_CulDSac|SaleType_COD', 'SaleCondition_Normal|Neighborhood_Timber', 'MiscFeature_Shed|Neighborhood_Gilbert', 'FullBath|Neighborhood_SawyerW', 'Fence_Tencode|Neighborhood_Edwards', 'GarageFinish_Unf|Fireplaces', 'Neighborhood_NAmes|MasVnrType_Stone', 'Foundation_PConc|HouseStyle_1.5Unf', 'HeatingQC_Gd|HalfBath', 'MSZoning_C (all)|MSSubClass', 'Fireplaces|TotRmsAbvGrd', 'BsmtFinType2_ALQ|Neighborhood_MeadowV', 'Neighborhood_BrDale|KitchenQual_Tencode', 'Functional_Tencode|Fireplaces', 'Heating_GasW|BldgType_TwnhsE', 'Alley_Tencode|FireplaceQu_Fa', 'Exterior2nd_VinylSd|GarageCond_Ex', 'OpenPorchSF|HouseStyle_2Story', 'ExterQual_TA|GarageCond_Po', 'BsmtExposure_No|MasVnrArea', 'BsmtFinType1_ALQ|Utilities_AllPub', 'RoofStyle_Flat|MSZoning_Tencode', 'LandSlope_Mod|BsmtFinType1_GLQ', 'BldgType_Duplex|FireplaceQu_TA', 'Condition1_Norm|Exterior1st_Wd Sdng', 'MiscFeature_Othr|Neighborhood_SWISU', 'Functional_Mod|Exterior2nd_Wd Shng', 'Condition1_Tencode', 'GarageType_Tencode|Street_Pave', 'LotFrontage|PavedDrive_Tencode', 'BsmtFinType2_Unf', 'GarageArea|Neighborhood_BrkSide', 'SaleCondition_Alloca|WoodDeckSF', 'LandSlope_Tencode|MasVnrType_None', 'Neighborhood_NPkVill|BsmtFinType1_GLQ', 'MiscFeature_Othr|BsmtFinType1_GLQ', 'KitchenQual_Ex|Neighborhood_MeadowV', 'HouseStyle_2.5Unf|GarageFinish_RFn', 'LotConfig_Corner|Exterior2nd_HdBoard', 'FireplaceQu_Ex|Street_Grvl', 'Exterior1st_AsbShng|ExterQual_Tencode', 'GarageCond_Po|Exterior2nd_MetalSd', 'BsmtFinType2_Rec|CentralAir_Y', 'Functional_Min1|BsmtCond_Po', 'Neighborhood_NPkVill|MSZoning_RM', 'RoofMatl_CompShg|LandContour_Tencode', 'YearRemodAdd|OpenPorchSF', 'LotConfig_CulDSac|BsmtExposure_Av', 'Exterior1st_HdBoard|BsmtFinType1_BLQ', 'FireplaceQu_Tencode|Exterior2nd_Tencode', 'BsmtFinType2_Rec|WoodDeckSF', 'Electrical_FuseP|HouseStyle_1.5Unf', 'YearRemodAdd|3SsnPorch', 'Utilities_Tencode|KitchenQual_Ex', 'LandContour_Tencode|BsmtCond_Gd', 'Foundation_Stone|BsmtUnfSF', 'Neighborhood_Veenker|CentralAir_Y', 'ExterCond_Tencode|FireplaceQu_Ex', 'YrSold|Exterior2nd_MetalSd', '2ndFlrSF|LotShape_IR3', 'Foundation_PConc|Electrical_FuseF', 'Utilities_AllPub|GarageType_2Types', 'Neighborhood_Tencode|LandContour_HLS', 'Neighborhood_OldTown|GarageFinish_RFn', 'Exterior1st_BrkComm|BsmtExposure_No', 'Neighborhood_Blmngtn|MiscFeature_Tencode', 'BsmtHalfBath|GarageQual_Tencode', 'GarageType_BuiltIn|LotConfig_Inside', 'Exterior2nd_AsbShng|MasVnrType_Tencode', 'RoofStyle_Gable|BsmtFinType2_LwQ', 'LotFrontage|GarageCond_TA', 'BsmtFinType1_BLQ|Electrical_Tencode', 'GarageCond_Fa|SaleCondition_Abnorml', 'BsmtFinSF2|Exterior1st_WdShing', 'Neighborhood_NoRidge|ExterQual_Ex', 'Exterior1st_BrkFace|Functional_Maj2', 'SaleType_WD|Neighborhood_NWAmes', 'FullBath|Exterior2nd_Tencode', 'MiscFeature_Othr|Neighborhood_Veenker', 'HeatingQC_Tencode|BldgType_1Fam', 'LotConfig_CulDSac|Exterior2nd_Plywood', 'HouseStyle_SFoyer|MasVnrType_None', 'Electrical_FuseF|Fence_MnWw', 'Electrical_FuseF|GarageType_Attchd', 'Neighborhood_Mitchel|1stFlrSF', 'PoolQC_Tencode|Functional_Mod', 'PavedDrive_N|Alley_Tencode', 'GarageCond_Tencode|HeatingQC_Tencode', 'GarageQual_Gd|Neighborhood_Mitchel', 'FireplaceQu_Tencode|Neighborhood_Mitchel', 'GarageCars|PoolArea', 'BsmtQual_Fa|GarageQual_Fa', 'YrSold|LandContour_Low', 'Neighborhood_OldTown|ExterCond_Gd', 'OverallCond|BsmtCond_Fa', 'Alley_Grvl|ExterCond_Fa', 'LandContour_HLS|GarageType_CarPort', 'GarageYrBlt|Exterior1st_WdShing', 'LotConfig_CulDSac|Exterior1st_Wd Sdng', 'Exterior2nd_Plywood|Neighborhood_MeadowV', 'YearBuilt|ExterCond_Fa', 'Electrical_FuseP|PavedDrive_P', 'Neighborhood_NPkVill|BsmtCond_Gd', 'Alley_Grvl|Exterior1st_WdShing', 'LandContour_HLS|Alley_Grvl', 'GrLivArea|Fence_MnPrv', 'FireplaceQu_Tencode', 'KitchenAbvGr|Exterior2nd_CmentBd', 'Exterior1st_CemntBd|MSSubClass', 'PavedDrive_Y|Condition1_PosA', 'BsmtCond_Tencode|MSSubClass', 'Neighborhood_Tencode|Neighborhood_NWAmes', 'RoofMatl_Tencode|RoofStyle_Gambrel', 'HouseStyle_SFoyer|ExterCond_Gd', 'ExterCond_Tencode|SaleCondition_Partial', 'LotShape_Tencode|Foundation_PConc', 'LotConfig_Corner|SaleType_WD', 'BsmtExposure_No|MasVnrType_BrkFace', 'LotShape_Reg|Functional_Typ', 'KitchenQual_Fa|BsmtExposure_Mn', 'BldgType_Duplex|LandContour_HLS', 'Functional_Min1|MSZoning_Tencode', 'Alley_Tencode|ExterQual_Ex', 'KitchenQual_Tencode|SaleType_COD', 'FullBath|Neighborhood_Veenker', 'Electrical_FuseF|BsmtFinType2_Unf', 'GarageCars|FireplaceQu_Po', 'Fence_GdWo|GarageFinish_RFn', 'GarageQual_Fa|Exterior1st_WdShing', 'BsmtFinType2_ALQ|BldgType_TwnhsE', 'Neighborhood_NWAmes|Functional_Min2', 'EnclosedPorch|MSZoning_Tencode', 'BldgType_1Fam|BsmtExposure_No', 'SaleCondition_Normal|Exterior2nd_AsphShn', 'Exterior2nd_AsbShng|LotShape_Reg', 'Neighborhood_SWISU|BsmtExposure_Mn', 'Condition1_Artery|ExterQual_Tencode', 'HeatingQC_Fa|WoodDeckSF', 'Neighborhood_ClearCr|MSZoning_RM', 'Exterior2nd_CmentBd|BsmtFinType2_LwQ', 'Neighborhood_SawyerW|Neighborhood_MeadowV', 'SaleType_ConLw|SaleType_Tencode', 'GarageQual_Po|GarageQual_Tencode', 'GarageType_CarPort|ScreenPorch', 'KitchenQual_Gd|2ndFlrSF', 'BsmtUnfSF|RoofMatl_WdShngl', 'GarageQual_Fa|Functional_Min1', 'MasVnrType_None|SaleCondition_Partial', 'Utilities_Tencode|Neighborhood_Edwards', 'Electrical_FuseA|PoolQC_Tencode', 'BsmtFinSF2|Exterior2nd_Wd Sdng', 'Functional_Typ|TotRmsAbvGrd', 'RoofMatl_Tencode|GrLivArea', 'BsmtFinType1_BLQ|BsmtFinType2_Unf', 'BsmtFinType1_Unf|BsmtQual_Gd', 'Neighborhood_NPkVill|GarageCond_Fa', 'KitchenQual_Ex|Neighborhood_Veenker', 'Exterior2nd_BrkFace|RoofStyle_Shed', 'TotRmsAbvGrd|OverallCond', 'GarageType_Detchd|GarageQual_Tencode', 'Condition2_Artery|Functional_Min2', 'Heating_Tencode|Exterior2nd_MetalSd', 'BsmtFullBath|BsmtFinType2_Rec', 'Electrical_Tencode|BsmtQual_TA', 'HouseStyle_1.5Unf|ExterCond_Tencode', 'HeatingQC_Gd|Condition1_PosN', 'GarageCond_Fa|BsmtQual_Gd', 'OverallQual|Electrical_FuseA', 'GarageYrBlt|Exterior2nd_HdBoard', 'HeatingQC_Gd|RoofStyle_Gable', 'RoofStyle_Flat|HeatingQC_Fa', 'Exterior2nd_AsbShng|MasVnrType_Stone', 'SaleType_ConLw|Street_Grvl', 'BldgType_2fmCon|FireplaceQu_Po', 'Neighborhood_Somerst|KitchenQual_Ex', 'HeatingQC_Gd|Exterior1st_Tencode', 'BsmtFinType2_Tencode|HalfBath', 'Exterior2nd_Stone|Exterior2nd_CmentBd', 'FireplaceQu_Tencode|LandContour_Bnk', 'HeatingQC_Tencode|BsmtExposure_Av', 'Condition1_Artery|Neighborhood_Gilbert', 'YrSold|KitchenQual_Ex', 'BldgType_2fmCon|GarageFinish_Tencode', 'BsmtFinType2_Tencode|LotFrontage', 'Exterior2nd_CmentBd|MasVnrArea', 'Condition1_Artery|Electrical_FuseP', 'Condition2_Tencode|Condition1_Tencode', 'MiscFeature_Othr|RoofMatl_Tar&Grv', 'MiscFeature_Othr|ExterQual_Ex', 'BsmtCond_Po|Neighborhood_Gilbert', 'PavedDrive_Tencode|MiscFeature_Tencode', 'KitchenQual_Ex|Neighborhood_StoneBr', 'LotShape_Reg|Functional_Mod', 'MSZoning_RM|RoofStyle_Tencode', 'Utilities_Tencode|Neighborhood_Veenker', 'Condition2_Artery|Foundation_Slab', 'LotShape_IR1|MiscFeature_Tencode', 'Exterior1st_Stucco|BsmtUnfSF', 'Condition1_Tencode|Exterior2nd_AsphShn', 'Exterior1st_AsbShng|GarageType_BuiltIn', 'LotArea|Functional_Maj1', 'FireplaceQu_Fa|CentralAir_N', 'EnclosedPorch|Fence_GdPrv', 'Condition1_PosA|BsmtFinType2_Unf', 'GarageFinish_Unf|Exterior2nd_Brk Cmn', 'BldgType_Duplex|HouseStyle_SFoyer', 'HouseStyle_Tencode|GarageType_BuiltIn', 'GarageQual_TA|Street_Grvl', 'Alley_Pave|HouseStyle_1.5Unf', 'Exterior1st_HdBoard|GarageCond_Gd', 'PoolQC_Tencode|PavedDrive_P', 'Foundation_Tencode|Exterior1st_VinylSd', 'Neighborhood_ClearCr|MasVnrType_None', 'Exterior2nd_AsbShng|LandContour_Low', 'SaleType_Tencode|Neighborhood_SawyerW', 'Neighborhood_ClearCr|CentralAir_N', 'YearRemodAdd|BedroomAbvGr', 'KitchenQual_Tencode|Neighborhood_MeadowV', 'SaleCondition_Alloca|BsmtFinType2_LwQ', 'BsmtFinType2_Unf|Exterior1st_Tencode', 'MasVnrType_None|WoodDeckSF', 'LotArea|BsmtFinType2_ALQ', 'RoofMatl_Tencode|LandContour_Tencode', 'GarageCond_Po|BsmtHalfBath', 'LandSlope_Mod|BsmtFinType2_LwQ', 'Exterior2nd_Tencode|BsmtQual_Gd', 'GarageType_BuiltIn|ExterQual_Fa', 'GarageCond_Tencode|ExterQual_Fa', 'Condition2_Tencode|MSSubClass', 'Alley_Pave|Neighborhood_ClearCr', 'BsmtFinType1_Tencode|HouseStyle_2.5Unf', 'BsmtFinSF2|BsmtFinType1_LwQ', 'Street_Tencode|BsmtExposure_Gd', 'Neighborhood_Somerst|Condition1_Tencode', 'BsmtFinSF1|Neighborhood_MeadowV', 'Neighborhood_NWAmes|Neighborhood_MeadowV', '1stFlrSF|Exterior2nd_Wd Shng', 'CentralAir_Tencode|BsmtExposure_Mn', 'Condition2_Norm|MiscFeature_Gar2', 'Neighborhood_BrDale|Exterior2nd_MetalSd', 'RoofMatl_Tar&Grv|GarageFinish_Tencode', 'LandSlope_Tencode|ExterCond_Gd', 'LandSlope_Mod|LandContour_HLS', 'KitchenAbvGr|Condition2_Artery', 'BldgType_Twnhs|Condition2_Artery', 'GarageType_Basment|Exterior1st_Plywood', 'Exterior1st_VinylSd|BsmtFinType1_GLQ', 'LotConfig_CulDSac|Functional_Mod', 'Exterior1st_BrkFace|LotShape_IR1', 'TotRmsAbvGrd|Exterior2nd_Plywood', 'RoofStyle_Shed|RoofStyle_Tencode', 'FireplaceQu_TA|Fence_MnPrv', 'BsmtFullBath|Condition2_Norm', 'BsmtFinType1_Tencode|RoofMatl_CompShg', 'GarageQual_Po|Neighborhood_SawyerW', 'GarageYrBlt|Neighborhood_MeadowV', 'MasVnrType_BrkCmn|OverallCond', 'LotConfig_Corner|BsmtFinType2_BLQ', 'LotConfig_Tencode|Exterior2nd_Wd Sdng', 'Electrical_FuseA|MiscFeature_Gar2', 'GarageCond_Po|BsmtQual_Tencode', 'Foundation_PConc|LandSlope_Sev', 'Street_Tencode|MSSubClass', 'ExterQual_TA|BsmtFinType2_ALQ', 'TotRmsAbvGrd|BsmtFinSF1', 'KitchenQual_Ex|GarageCond_Gd', 'Alley_Pave|BldgType_1Fam', 'Street_Tencode|CentralAir_Tencode', 'PavedDrive_N|Condition1_Norm', 'EnclosedPorch|Alley_Pave', 'GarageType_BuiltIn|Street_Pave', 'HouseStyle_SLvl|BsmtExposure_No', 'FireplaceQu_Ex|Exterior1st_Wd Sdng', 'RoofMatl_CompShg|Heating_Tencode', 'Exterior2nd_CmentBd|MiscFeature_Gar2', 'HouseStyle_1Story|HouseStyle_SLvl', 'LotConfig_CulDSac', 'MoSold|Functional_Min2', 'Electrical_FuseP|SaleCondition_Alloca', 'FireplaceQu_Tencode|CentralAir_Tencode', 'BsmtFinSF1|BsmtExposure_Gd', 'Neighborhood_SWISU|MasVnrType_None', 'HeatingQC_Gd|Condition2_Tencode', 'Electrical_Tencode|Foundation_Slab', 'Neighborhood_CollgCr|BsmtQual_Gd', 'RoofStyle_Hip|HeatingQC_Fa', 'GarageCond_Po|LotArea', 'Neighborhood_NPkVill|BsmtQual_TA', 'GarageQual_Gd|Exterior2nd_BrkFace', 'BsmtFinType2_BLQ|GarageYrBlt', 'GarageFinish_Unf|BsmtFinSF1', 'Condition1_PosN|SaleCondition_Abnorml', 'LandSlope_Sev|LotConfig_Tencode', 'MoSold|2ndFlrSF', 'MasVnrType_None|BsmtCond_Tencode', 'LandContour_HLS|SaleType_Tencode', 'Exterior1st_BrkFace|Neighborhood_Timber', 'BldgType_2fmCon|SaleType_COD', 'LotShape_IR2|HeatingQC_Ex', 'Street_Tencode|ExterQual_Gd', 'Heating_Tencode|LandSlope_Tencode', 'Alley_Tencode|MiscFeature_Tencode', 'Foundation_Tencode|BsmtCond_TA', 'BldgType_1Fam|ExterCond_Fa', 'MasVnrType_BrkCmn|GarageType_2Types', 'ExterQual_TA|Fence_GdWo', 'Neighborhood_ClearCr|GarageYrBlt', 'PoolArea|Exterior1st_MetalSd', 'Foundation_PConc|LotConfig_CulDSac', '3SsnPorch|GarageArea', 'HeatingQC_Fa|Neighborhood_SawyerW', 'LandSlope_Tencode|BsmtFinType2_BLQ', 'Condition1_RRAe|BsmtFinType1_Unf', 'PavedDrive_N|FireplaceQu_TA', 'Neighborhood_NPkVill|LotShape_IR1', 'HeatingQC_TA|ExterCond_Fa', 'Neighborhood_Mitchel|GarageType_2Types', 'HeatingQC_Tencode|Neighborhood_StoneBr', 'BsmtFinType1_Unf|Exterior2nd_HdBoard', 'GarageCond_Po|Exterior1st_AsbShng', 'Electrical_FuseF|MSZoning_RH', 'BsmtUnfSF', 'Heating_GasA|Functional_Min2', 'RoofStyle_Tencode|MasVnrType_Tencode', 'Condition1_PosA|GarageArea', 'LotConfig_Tencode|Street_Pave', 'Electrical_Tencode|KitchenQual_Tencode', 'FireplaceQu_Tencode|Functional_Maj1', 'Heating_GasA|HouseStyle_1.5Unf', 'RoofMatl_CompShg|BsmtCond_Po', 'BsmtQual_Fa|Alley_Grvl', '3SsnPorch|BldgType_TwnhsE', 'EnclosedPorch|2ndFlrSF', 'SaleType_WD|RoofMatl_WdShngl', 'Heating_GasA|BsmtQual_Gd', 'Neighborhood_NridgHt|Exterior2nd_Plywood', 'SaleCondition_Normal|Neighborhood_StoneBr', 'Condition1_PosA|Street_Pave', 'Electrical_FuseA|GarageType_Attchd', 'MoSold|MSSubClass', 'MSZoning_C (all)|MasVnrArea', 'FullBath|GarageType_Basment', 'LotShape_IR2|BsmtCond_TA', 'ExterCond_TA|ExterCond_Fa', 'KitchenQual_Gd|Utilities_AllPub', 'GarageCond_Ex|CentralAir_N', 'Exterior2nd_Tencode|LotConfig_Tencode', 'BsmtFinType1_Unf|MasVnrType_Tencode', 'BsmtFinType2_ALQ|Fence_GdPrv', 'BsmtHalfBath|Neighborhood_Crawfor', 'Condition1_Tencode|Exterior1st_BrkComm', 'OverallQual|2ndFlrSF', 'PavedDrive_Tencode|Foundation_CBlock', 'SaleType_New|Fence_GdWo', 'SaleType_WD|BsmtFinType2_LwQ', 'BsmtExposure_Av|ExterCond_Fa', 'BsmtFinType1_GLQ|BsmtCond_Fa', 'OverallQual|SaleType_CWD', 'RoofStyle_Hip|ExterCond_Gd', 'BldgType_Duplex|LotShape_IR3', 'Neighborhood_OldTown|Exterior1st_VinylSd', 'LandSlope_Sev|MasVnrType_Stone', 'FireplaceQu_Po|RoofStyle_Tencode', 'LotConfig_Tencode|ExterQual_Ex', 'GarageFinish_Unf|MasVnrArea', 'Fence_Tencode|ExterCond_Tencode', 'ExterQual_TA|LowQualFinSF', 'YearBuilt|LandContour_Lvl', 'BsmtFinType1_Tencode|HeatingQC_Gd', 'Condition2_Tencode|SaleCondition_Abnorml', 'Condition1_RRAn|RoofMatl_WdShngl', 'RoofMatl_CompShg|Neighborhood_Timber', 'HouseStyle_1Story|Exterior2nd_CmentBd', 'Condition1_PosN|BsmtUnfSF', 'Electrical_Tencode|BsmtFinType1_ALQ', 'Exterior1st_BrkFace|Functional_Typ', 'Fence_Tencode|ExterCond_Fa', 'Exterior2nd_BrkFace|GarageCond_Gd', 'PoolQC_Tencode|OpenPorchSF', 'GarageQual_Fa|Exterior1st_CemntBd', 'LotConfig_Corner|Street_Pave', 'LandContour_Bnk|Exterior2nd_Plywood', 'Condition1_RRAe|LandSlope_Gtl', 'Exterior2nd_BrkFace|PavedDrive_P', 'RoofStyle_Hip|BsmtQual_TA', 'GarageFinish_Unf|BsmtCond_Po', 'Foundation_BrkTil|GarageQual_Po', 'LotShape_Tencode|Functional_Tencode', 'BldgType_1Fam|Condition1_RRAn', 'GarageCond_Gd|Exterior2nd_Plywood', 'Neighborhood_BrDale|Foundation_PConc', 'BsmtCond_Gd|GarageType_2Types', 'Foundation_BrkTil|FireplaceQu_Fa', 'Neighborhood_NWAmes|ExterQual_Ex', 'HeatingQC_Gd|GarageType_CarPort', 'GarageCond_Gd|Neighborhood_Sawyer', 'Foundation_BrkTil|FireplaceQu_Ex', 'Condition1_Norm|GarageType_CarPort', 'Foundation_Tencode|BsmtFinSF1', 'GarageQual_Fa|HouseStyle_1.5Fin', 'Heating_GasW|MasVnrType_BrkCmn', 'OverallQual|GarageCond_Po', 'BsmtFinType1_Tencode|BsmtExposure_No', 'BsmtFinType2_ALQ|2ndFlrSF', 'CentralAir_Tencode|Exterior2nd_AsphShn', 'LandContour_Low|BldgType_Twnhs', 'BsmtFinType1_BLQ|Neighborhood_Crawfor', 'LandSlope_Sev|LandContour_Lvl', 'RoofStyle_Gambrel|BsmtExposure_Mn', 'Condition1_Feedr|BldgType_1Fam', 'Neighborhood_NWAmes|SaleType_CWD', 'Exterior2nd_AsbShng|SaleType_ConLI', 'Electrical_FuseA|FireplaceQu_TA', 'BedroomAbvGr|LandContour_Bnk', 'GarageType_Detchd|GarageFinish_Tencode', 'HeatingQC_Fa|BsmtFinType2_Rec', 'GarageFinish_Unf|Exterior1st_MetalSd', 'LandContour_Bnk|GarageQual_Po', 'HeatingQC_Fa|Electrical_FuseP', 'ExterQual_TA|HouseStyle_2Story', 'HeatingQC_Gd|KitchenQual_Gd', 'RoofStyle_Gable|BsmtFinSF1', 'BsmtFinType2_BLQ|ExterCond_Fa', 'ExterQual_Gd|Neighborhood_IDOTRR', 'Neighborhood_Gilbert|BsmtFinType1_Unf', 'BsmtFinType2_Rec|BsmtExposure_No', 'BsmtFinType2_GLQ|Fence_GdPrv', 'Neighborhood_BrDale|Electrical_FuseF', 'BsmtFinType2_Unf|HouseStyle_SLvl', 'GarageQual_Gd|2ndFlrSF', 'Neighborhood_Edwards|BsmtFinType1_GLQ', 'Heating_GasA|Exterior1st_AsbShng', 'SaleCondition_Tencode|MSZoning_RM', 'BsmtHalfBath|PavedDrive_P', 'LotShape_IR2|BldgType_2fmCon', 'MoSold|BldgType_Tencode', 'YearRemodAdd|Electrical_FuseP', 'BsmtExposure_No|Exterior2nd_HdBoard', 'BldgType_Duplex|BsmtFinType1_LwQ', 'BsmtExposure_Gd|Neighborhood_Timber', 'LandContour_Lvl|Exterior2nd_CmentBd', 'Condition1_Artery|LandContour_Bnk', 'KitchenQual_Tencode|RoofStyle_Shed', 'OverallQual|Neighborhood_BrDale', 'LandContour_HLS|LandSlope_Tencode', 'FireplaceQu_Gd|YearBuilt', 'LandContour_Tencode|ScreenPorch', 'Foundation_BrkTil|MiscFeature_Gar2', 'ExterQual_Gd|HouseStyle_1.5Fin', 'LotShape_IR1|SaleType_WD', 'BsmtFinType1_ALQ|ExterCond_Tencode', 'BsmtFinType2_GLQ|GarageCond_Ex', 'SaleCondition_Tencode|GarageType_BuiltIn', 'Exterior2nd_MetalSd|Neighborhood_NWAmes', 'GrLivArea|BsmtFinType1_Unf', 'RoofMatl_Tencode|TotRmsAbvGrd', 'YrSold|BsmtFinType1_Tencode', 'FullBath|GarageQual_Tencode', 'MSZoning_RM|Exterior2nd_Wd Sdng', '1stFlrSF|Exterior2nd_Plywood', 'SaleCondition_Tencode|FullBath', 'GarageFinish_Unf|Condition2_Norm', 'Neighborhood_NridgHt|Exterior1st_AsbShng', 'LandSlope_Tencode|MSZoning_Tencode', 'YearBuilt|Functional_Min1', 'BldgType_2fmCon|Street_Pave', 'Neighborhood_NPkVill|BsmtQual_Fa', 'Neighborhood_Mitchel|WoodDeckSF', 'LotConfig_CulDSac|MSZoning_RH', 'GarageQual_Tencode|MSZoning_RL', 'FireplaceQu_Tencode|RoofMatl_WdShngl', 'Exterior1st_HdBoard|MSZoning_RH', 'GarageCond_Fa|BsmtExposure_No', 'Functional_Min1|LandSlope_Gtl', 'Exterior2nd_Stucco|Condition1_RRAn', 'ExterQual_Tencode|BsmtFinType1_GLQ', 'KitchenAbvGr|KitchenQual_TA', 'Condition1_RRAe|MoSold', 'Functional_Typ|Neighborhood_Mitchel', 'Condition1_Feedr|Exterior1st_WdShing', 'Alley_Pave|MasVnrType_Stone', 'Neighborhood_Somerst|Neighborhood_Timber', 'HouseStyle_1Story|SaleType_CWD', 'Fence_GdPrv|Functional_Min2', 'LandSlope_Mod|MasVnrType_Tencode', 'OverallQual|Exterior2nd_Stucco', 'GarageCond_Po|LandContour_Tencode', 'Condition2_Artery|CentralAir_Y', 'HeatingQC_TA|GarageCars', 'GrLivArea|GarageType_Basment', 'LotFrontage|GarageQual_TA', 'Condition1_Tencode|Neighborhood_IDOTRR', 'SaleType_New|ExterQual_Tencode', 'BsmtFinType1_GLQ|Utilities_AllPub', 'Neighborhood_NoRidge|BsmtCond_Tencode', 'Neighborhood_Mitchel|3SsnPorch', 'Exterior2nd_BrkFace|Exterior2nd_VinylSd', 'Electrical_Tencode|BsmtFullBath', 'LandContour_HLS|Functional_Maj1', 'BsmtFinType2_Unf|Exterior2nd_Brk Cmn', 'SaleCondition_Family|BsmtQual_Fa', 'HouseStyle_SFoyer|Neighborhood_NoRidge', 'Condition1_PosN|SaleCondition_Partial', 'KitchenQual_Tencode|LotShape_IR3', 'MSZoning_C (all)|OpenPorchSF', 'GarageCars|KitchenQual_Fa', 'SaleCondition_Normal|Neighborhood_Crawfor', 'LotFrontage|BsmtCond_Gd', 'PavedDrive_Y|RoofStyle_Gable', 'MoSold|MSZoning_RM', 'Neighborhood_BrDale|Neighborhood_Mitchel', 'GarageQual_Fa|FireplaceQu_Fa', 'BldgType_Twnhs', 'Exterior2nd_Stone|LotShape_IR1', 'Neighborhood_Sawyer|Street_Pave', 'Exterior2nd_Stone|Electrical_SBrkr', 'Neighborhood_Tencode|MasVnrType_Stone', 'LandSlope_Sev|Neighborhood_Sawyer', 'RoofStyle_Shed|MasVnrType_Tencode', 'OverallQual|HouseStyle_2Story', 'Condition1_Feedr|FireplaceQu_TA', 'LandContour_Lvl|GarageFinish_RFn', 'Heating_GasW|Condition1_Tencode', 'HouseStyle_1Story|GarageCond_Fa', 'KitchenQual_Ex|RoofMatl_WdShngl', 'Neighborhood_ClearCr|Exterior2nd_Wd Sdng', 'Neighborhood_ClearCr|BsmtQual_Gd', 'GarageQual_Po|BsmtQual_Gd', 'BsmtFinSF2|MasVnrType_BrkFace', 'BedroomAbvGr|Condition1_Tencode', 'BsmtQual_TA|Exterior1st_BrkComm', 'MiscFeature_Tencode|OverallCond', 'Fence_GdPrv|Exterior2nd_Plywood', 'GrLivArea|GarageCond_Ex', 'ExterQual_Gd|BsmtFinSF1', 'LotConfig_Tencode|GarageYrBlt', 'LotFrontage|LandContour_HLS', 'MoSold|BsmtFinSF1', 'Electrical_FuseF|BsmtExposure_Mn', 'Functional_Min2|WoodDeckSF', 'MSZoning_Tencode|Exterior2nd_HdBoard', 'Electrical_FuseP|GarageType_Attchd', 'RoofStyle_Gable|SaleCondition_Abnorml', 'ExterCond_Gd|Condition2_Tencode', 'GarageCond_Gd|MSZoning_FV', 'FireplaceQu_Gd|BsmtFinType2_Unf', 'Exterior2nd_BrkFace|Exterior1st_Tencode', 'BsmtFinType2_BLQ|MasVnrType_Tencode', 'LandContour_Low|Neighborhood_Tencode', 'BsmtExposure_Tencode|LotConfig_CulDSac', 'Exterior2nd_Brk Cmn|Exterior2nd_HdBoard', 'GarageYrBlt|MasVnrType_Tencode', 'BsmtFinType2_ALQ|YearBuilt', 'Heating_Grav|1stFlrSF', 'BsmtFinType2_GLQ|Neighborhood_Sawyer', 'HouseStyle_1Story|SaleType_ConLw', 'RoofStyle_Shed|BsmtCond_TA', 'Electrical_FuseF|BsmtFinType1_Unf', 'HouseStyle_SLvl|BsmtCond_TA', 'SaleType_ConLD|LotConfig_Tencode', 'GrLivArea|BsmtFinType1_GLQ', 'LandContour_Tencode|Exterior2nd_CmentBd', 'Alley_Pave|Alley_Tencode', 'GrLivArea|Functional_Min2', 'BldgType_Duplex|MiscFeature_Othr', 'Electrical_FuseA|FireplaceQu_Fa', 'Neighborhood_Veenker|Neighborhood_Timber', 'LotShape_IR2|BsmtFinType2_Rec', 'BsmtExposure_Tencode|Neighborhood_NridgHt', 'Condition2_Norm|LotShape_IR3', 'Electrical_FuseF|BsmtFinType1_LwQ', 'LotShape_Tencode|MSZoning_C (all)', 'GrLivArea|Exterior2nd_Wd Sdng', 'ExterCond_TA|LotConfig_Tencode', 'Condition2_Artery|Exterior2nd_HdBoard', 'GarageCond_Tencode|Condition1_RRAe', 'SaleCondition_Normal|MSZoning_FV', 'Foundation_PConc|ScreenPorch', 'SaleCondition_Alloca|TotRmsAbvGrd', 'LandContour_HLS|WoodDeckSF', 'KitchenQual_Ex|GarageArea', 'FireplaceQu_Gd|GarageCond_TA', 'BsmtFinType2_Tencode|Functional_Min2', 'Exterior2nd_Wd Sdng|Exterior1st_WdShing', 'LotFrontage|HouseStyle_SFoyer', 'LotArea|Functional_Maj2', 'Utilities_Tencode|Neighborhood_MeadowV', 'Neighborhood_Somerst|MSZoning_C (all)', 'Street_Tencode|RoofStyle_Gambrel', 'Condition1_Artery|Neighborhood_SWISU', 'GarageCond_Po|Alley_Grvl', 'Exterior2nd_MetalSd|BsmtExposure_Gd', 'Foundation_Tencode|MiscFeature_Gar2', 'Functional_Typ|LotConfig_FR2', 'YearRemodAdd|BsmtFinType2_LwQ', 'KitchenAbvGr|Street_Pave', 'RoofMatl_Tencode|LotShape_IR3', 'GarageCars|SaleCondition_Abnorml', '2ndFlrSF|HouseStyle_SLvl', 'KitchenQual_Tencode|Exterior2nd_HdBoard', 'LandContour_Bnk|Condition1_PosA', 'LotShape_IR1|3SsnPorch', 'RoofStyle_Hip|GarageType_CarPort', 'Foundation_Tencode|Foundation_CBlock', 'BsmtExposure_Tencode|MiscFeature_Tencode', 'GrLivArea|SaleType_ConLD', 'LandContour_Low|MSZoning_C (all)', 'Exterior2nd_VinylSd|ExterCond_Fa', 'BsmtCond_Gd|Exterior1st_BrkComm', 'RoofStyle_Flat|GarageType_Basment', 'GarageType_CarPort|Utilities_AllPub', 'BsmtUnfSF|ExterQual_Gd', 'GarageCars|BsmtExposure_Mn', 'BsmtFinType2_ALQ|GarageQual_Tencode', 'Fence_Tencode|HeatingQC_Ex', 'SaleCondition_Abnorml', 'FireplaceQu_Tencode|Exterior2nd_Stucco', 'GarageType_CarPort|SaleType_CWD', 'Condition1_PosA|Neighborhood_Sawyer', 'PavedDrive_Y|3SsnPorch', 'RoofStyle_Tencode|CentralAir_Tencode', 'Foundation_PConc|ExterCond_Fa', 'LandSlope_Sev|Functional_Min2', 'BsmtFinType1_LwQ|BsmtExposure_Mn', 'Neighborhood_CollgCr|Exterior1st_WdShing', 'BsmtExposure_Gd|BsmtExposure_No', 'Fence_GdPrv|BsmtExposure_Av', 'BsmtHalfBath|SaleType_ConLI', 'ExterCond_TA|CentralAir_N', 'SaleType_Tencode|Street_Grvl', 'GarageCond_Gd|BsmtCond_Fa', 'PoolQC_Tencode|KitchenQual_Tencode', 'GarageFinish_Tencode', 'Functional_Typ|Neighborhood_CollgCr', '3SsnPorch|FireplaceQu_TA', 'Condition1_PosA|GarageQual_Po', 'SaleType_Tencode|Neighborhood_Gilbert', 'ExterCond_TA|Heating_GasW', 'BldgType_TwnhsE|BsmtFinType1_GLQ', 'GarageType_BuiltIn|RoofMatl_WdShngl', 'Neighborhood_Blmngtn|Exterior2nd_Wd Sdng', 'TotalBsmtSF|Condition2_Norm', 'Neighborhood_Edwards|MSSubClass', 'MoSold', 'PavedDrive_Tencode|BldgType_1Fam', 'BsmtFinSF2|SaleType_COD', 'FireplaceQu_Fa|LotConfig_Inside', 'Neighborhood_Crawfor|SaleType_Oth', 'LotShape_Tencode|Street_Grvl', 'Exterior1st_HdBoard|Exterior1st_AsbShng', 'BsmtFinType2_BLQ|GarageQual_TA', 'HouseStyle_1Story|GarageQual_Po', 'TotRmsAbvGrd|WoodDeckSF', 'RoofStyle_Hip|Exterior1st_Stucco', 'Fence_Tencode|PavedDrive_P', 'SaleCondition_Partial|MasVnrArea', 'Neighborhood_Mitchel|GarageType_CarPort', 'Electrical_SBrkr|ExterQual_Fa', 'LotArea|HouseStyle_1.5Fin', 'BsmtFinType2_GLQ|MasVnrType_BrkFace', 'Exterior2nd_BrkFace|MasVnrType_Stone', 'BsmtQual_Tencode|GarageQual_Fa', 'Fireplaces|BsmtExposure_Mn', 'LandContour_HLS|LandContour_Lvl', 'BsmtFinType1_Unf|BsmtCond_Fa', 'MasVnrArea|Utilities_AllPub', 'Exterior1st_Wd Sdng|ExterQual_Fa', 'GarageCond_Po|OpenPorchSF', 'BsmtExposure_Tencode|ExterCond_TA', 'GarageCond_Gd|SaleCondition_Abnorml', 'OverallCond|LotConfig_Inside', 'GarageCond_Po|GarageType_BuiltIn', 'SaleType_Oth|MasVnrType_BrkFace', 'Exterior1st_VinylSd|Neighborhood_MeadowV', 'Electrical_FuseP|BsmtFinType1_GLQ', 'YearRemodAdd|FireplaceQu_Po', 'BsmtQual_TA|GarageType_Attchd', 'LotArea|ExterQual_Tencode', 'GarageType_Tencode|PavedDrive_Tencode', 'BsmtFinType2_ALQ|MasVnrType_BrkFace', 'Exterior2nd_Stone|Exterior1st_BrkComm', 'TotRmsAbvGrd|BldgType_TwnhsE', 'Heating_GasA|MiscFeature_Gar2', 'TotalBsmtSF|BsmtFinType1_Unf', 'FireplaceQu_Gd|SaleType_Tencode', 'MiscFeature_Tencode|GarageCond_Ex', 'Fence_Tencode|CentralAir_N', 'LandContour_Low|BsmtQual_Gd', 'Neighborhood_NridgHt|FireplaceQu_Fa', 'Exterior1st_BrkComm|Functional_Min2', 'HeatingQC_TA|MasVnrType_None', 'SaleType_WD|SaleType_CWD', 'Exterior1st_BrkFace|BsmtFinType1_BLQ', 'FireplaceQu_Tencode|BsmtFinType2_Rec', 'SaleCondition_Tencode|OverallCond', 'RoofMatl_CompShg|LotShape_IR3', 'HeatingQC_Fa|BsmtFinType2_LwQ', 'YearBuilt|Functional_Maj2', 'BsmtExposure_Mn|MSZoning_RH', 'HeatingQC_Tencode|TotRmsAbvGrd', 'YearRemodAdd|LotShape_IR3', 'RoofStyle_Gambrel|Foundation_Slab', 'ExterQual_TA|Foundation_BrkTil', 'GarageFinish_Unf|LowQualFinSF', 'BsmtUnfSF|BsmtFinType1_Unf', 'LotFrontage|BsmtQual_Fa', 'BsmtQual_Gd|LotConfig_Inside', 'FireplaceQu_Tencode|KitchenQual_Fa', 'Neighborhood_Veenker|Exterior1st_Plywood', 'KitchenQual_Ex|ExterQual_Tencode', 'BsmtFinType1_GLQ|LotConfig_Inside', 'FireplaceQu_Fa|Exterior2nd_Brk Cmn', 'GrLivArea|SaleType_CWD', 'Neighborhood_SWISU|LotConfig_Inside', 'Exterior2nd_HdBoard|WoodDeckSF', 'MasVnrArea|HouseStyle_1.5Fin', 'Exterior2nd_BrkFace|BsmtUnfSF', 'Exterior1st_BrkComm|BsmtFinType1_Unf', 'LotFrontage|Neighborhood_StoneBr', 'LandContour_Tencode|HouseStyle_1.5Fin', 'Exterior1st_AsbShng|CentralAir_N', 'GarageType_CarPort|Condition2_Artery', 'RoofStyle_Gambrel|Exterior2nd_Wd Sdng', 'BldgType_Twnhs|SaleType_ConLI', 'LandSlope_Sev|Exterior2nd_MetalSd', 'Foundation_BrkTil|MasVnrType_BrkFace', 'Functional_Maj2|Fence_MnPrv', 'Electrical_FuseF|SaleType_CWD', 'LotShape_Tencode|HouseStyle_1.5Fin', 'Exterior1st_HdBoard|LandSlope_Tencode', 'HouseStyle_1Story|GarageFinish_Fin', 'MasVnrType_BrkCmn|HouseStyle_1.5Fin', 'GarageType_Attchd|Neighborhood_Gilbert', 'Street_Tencode|Alley_Grvl', 'FullBath|Functional_Maj2', 'YearBuilt|RoofMatl_WdShngl', 'BsmtQual_Tencode|Exterior1st_Plywood', 'LandSlope_Gtl|RoofStyle_Tencode', 'BsmtQual_Ex|Neighborhood_NWAmes', 'Condition1_PosN|FireplaceQu_Ex', 'SaleCondition_Normal|GarageFinish_RFn', 'ExterCond_TA|FireplaceQu_Ex', 'LotConfig_Tencode|MSSubClass', 'Heating_GasW|BsmtCond_Po', 'BldgType_Twnhs|Exterior2nd_BrkFace', 'YrSold|SaleType_New', 'Condition1_Norm|CentralAir_Y', 'BsmtCond_Po|HouseStyle_SLvl', 'HalfBath|Exterior2nd_AsphShn', 'TotalBsmtSF|Exterior2nd_BrkFace', 'GarageType_CarPort|Alley_Grvl', 'ExterCond_Tencode|BsmtFinType1_Unf', 'Neighborhood_Mitchel|SaleType_ConLw', 'GarageFinish_Unf|Exterior1st_VinylSd', 'RoofMatl_Tar&Grv|BsmtFinType1_Rec', 'BsmtExposure_Av|GarageType_2Types', 'KitchenAbvGr|GarageQual_Tencode', 'GarageCond_Gd|Neighborhood_NWAmes', 'Alley_Tencode|LotShape_IR3', 'HouseStyle_1Story|Exterior1st_Wd Sdng', 'ExterQual_Gd|GarageQual_Tencode', 'Heating_Tencode|MiscFeature_Tencode', 'HeatingQC_Ex|GarageType_Attchd', 'LandContour_Low|HalfBath', 'BldgType_Duplex|PoolQC_Tencode', 'HeatingQC_Gd|OverallCond', 'GarageCond_TA|GarageCars', 'Exterior2nd_BrkFace|Condition1_Tencode', 'LandContour_Bnk|Condition2_Tencode', 'FullBath|CentralAir_Tencode', 'RoofMatl_Tencode|Street_Tencode', 'GrLivArea|BsmtUnfSF', 'Neighborhood_Somerst|Neighborhood_NWAmes', 'GrLivArea|Condition2_Tencode', 'Fence_GdPrv|HeatingQC_Ex', 'Exterior2nd_Stucco|BsmtExposure_Gd', 'YearBuilt|Neighborhood_IDOTRR', 'Fireplaces|RoofMatl_Tar&Grv', 'RoofStyle_Shed|HouseStyle_2.5Unf', 'GarageType_BuiltIn|Functional_Maj1', 'BsmtFinType2_Tencode|Exterior1st_Plywood', 'Foundation_Slab', 'SaleType_ConLI|HalfBath', 'Exterior2nd_Stucco|HeatingQC_Fa', 'BldgType_Twnhs|SaleType_CWD', 'Exterior1st_VinylSd|ExterCond_Fa', 'CentralAir_Y', 'KitchenQual_Ex|PoolQC_Tencode', 'MasVnrArea|MSZoning_RH', 'BldgType_Duplex|Neighborhood_NoRidge', 'MiscFeature_Othr|WoodDeckSF', 'HouseStyle_1Story|LotShape_Reg', 'Electrical_SBrkr|BldgType_1Fam', 'MSZoning_FV|GarageType_2Types', 'Neighborhood_Somerst|MasVnrType_Tencode', 'BldgType_Duplex|RoofMatl_Tar&Grv', 'LotConfig_FR2|LandContour_Tencode', 'GarageCond_Ex|Neighborhood_BrkSide', 'HouseStyle_1.5Unf|Condition1_Norm', 'SaleType_Tencode|BsmtCond_Po', 'LandContour_Tencode|HouseStyle_SLvl', 'Fence_GdPrv|ExterCond_Fa', 'SaleCondition_Abnorml|HouseStyle_SLvl', 'SaleCondition_Family|Exterior2nd_AsphShn', 'FireplaceQu_Gd|MasVnrType_Tencode', 'ExterQual_Ex|BsmtUnfSF', 'RoofStyle_Flat|FireplaceQu_TA', 'BsmtQual_TA|KitchenQual_Tencode', 'BldgType_Duplex|BldgType_TwnhsE', 'Neighborhood_CollgCr|SaleCondition_Normal', 'GarageCond_Gd|BldgType_1Fam', 'FireplaceQu_Gd|KitchenQual_TA', 'ExterCond_Tencode|FireplaceQu_TA', 'BsmtFinType2_Tencode|Condition1_PosA', 'SaleCondition_Family|FireplaceQu_Fa', 'TotRmsAbvGrd|LandSlope_Gtl', 'BldgType_2fmCon|BsmtExposure_Mn', 'GarageType_Detchd|SaleType_Tencode', 'Electrical_SBrkr|Condition1_RRAe', 'Neighborhood_Veenker|HouseStyle_1.5Unf', 'RoofMatl_CompShg|OverallCond', 'GrLivArea|KitchenQual_Fa', 'Condition2_Tencode|SaleType_CWD', 'FullBath|LotConfig_FR2', 'SaleCondition_Tencode|HouseStyle_1Story', 'LotFrontage|Fence_MnWw', 'BsmtFinType1_ALQ|Electrical_FuseF', 'LandSlope_Tencode|BsmtFullBath', 'Neighborhood_Sawyer|ScreenPorch', 'Neighborhood_Mitchel|PoolArea', 'BldgType_1Fam|BsmtCond_TA', 'GrLivArea|Street_Grvl', 'SaleType_Tencode|BsmtFinType2_BLQ', 'BedroomAbvGr|BldgType_TwnhsE', 'GarageQual_Gd|BsmtFinType2_Unf', 'Neighborhood_Somerst|Neighborhood_Sawyer', 'MiscVal|ExterQual_Fa', 'Neighborhood_CollgCr|MasVnrArea', 'KitchenQual_Gd|BsmtCond_Fa', 'PavedDrive_N|MSZoning_Tencode', 'LotConfig_CulDSac|BsmtQual_Gd', 'BsmtFinType1_Tencode|RoofStyle_Flat', 'OverallCond|BsmtExposure_No', 'BsmtQual_Ex|Fence_GdWo', 'Alley_Pave|Exterior2nd_Plywood', 'Electrical_FuseF|Neighborhood_Crawfor', 'LowQualFinSF|GarageCond_Fa', 'PavedDrive_Tencode|Exterior1st_VinylSd', 'Fence_Tencode|LotShape_IR3', 'Exterior2nd_Stone|LotConfig_Tencode', 'BldgType_Duplex|LotConfig_Corner', 'Condition1_Norm|MSSubClass', 'Foundation_PConc|RoofStyle_Shed', 'Condition1_Tencode|Neighborhood_MeadowV', 'HeatingQC_Gd|GarageFinish_Fin', 'GarageFinish_Unf|MSZoning_RM', 'BldgType_2fmCon|MasVnrType_BrkCmn', 'GrLivArea|Exterior1st_VinylSd', 'Neighborhood_Timber|MasVnrType_Tencode', 'RoofStyle_Flat|BsmtExposure_Gd', 'TotalBsmtSF|MoSold', 'MasVnrType_Stone|MasVnrType_Tencode', 'Neighborhood_NridgHt|GarageCond_TA', 'FireplaceQu_Tencode|CentralAir_N', 'Heating_Tencode|Foundation_Tencode', 'BsmtFinType2_Rec|MiscFeature_Gar2', 'HeatingQC_TA|Condition1_PosA', 'GarageFinish_Unf|GarageCond_Ex', 'Electrical_FuseP|HalfBath', 'Neighborhood_CollgCr', 'HouseStyle_SFoyer|SaleType_ConLI', 'FireplaceQu_Gd|BsmtExposure_Av', 'Condition1_Artery|Exterior1st_BrkFace', 'LandContour_HLS|Exterior2nd_Plywood', 'Functional_Mod|Foundation_Slab', 'Street_Tencode|Condition1_RRAn', 'LotShape_Tencode|BsmtFinType1_BLQ', 'Exterior1st_BrkFace|Functional_Tencode', 'GarageCond_Tencode|MasVnrType_Tencode', 'LandContour_HLS|Functional_Min1', 'GarageCond_Tencode|CentralAir_Tencode', 'RoofStyle_Hip|OpenPorchSF', 'Exterior2nd_MetalSd|CentralAir_N', 'Neighborhood_Sawyer|MSZoning_Tencode', 'ExterCond_TA|Neighborhood_Edwards', 'MiscFeature_Shed|BsmtFinSF1', 'Heating_Tencode|PavedDrive_Y', 'HouseStyle_SLvl|Exterior2nd_Plywood', 'Foundation_Tencode|LowQualFinSF', 'GarageCond_Ex|ExterQual_Fa', 'YearBuilt|Exterior2nd_Wd Shng', 'BldgType_Tencode|MiscFeature_Gar2', 'GarageType_Detchd|HalfBath', 'BsmtFinType2_ALQ|HalfBath', 'Electrical_Tencode|Neighborhood_MeadowV', 'HeatingQC_Fa|ExterCond_Gd', 'PavedDrive_N|Functional_Maj2', 'Condition1_RRAe|FireplaceQu_TA', 'HeatingQC_Ex|Fence_MnPrv', 'GarageType_Tencode|GarageCond_Gd', 'Exterior1st_Stucco|MSZoning_RM', 'BldgType_Duplex|Exterior2nd_Tencode', 'FireplaceQu_Tencode|LandSlope_Tencode', 'Street_Tencode|LotFrontage', 'BsmtFullBath|MSZoning_RL', 'BsmtExposure_Mn|Utilities_AllPub', 'Alley_Tencode|ExterQual_Tencode', 'Exterior2nd_MetalSd|MSZoning_RL', 'SaleCondition_Abnorml|Exterior1st_Plywood', 'MasVnrType_BrkCmn|BsmtExposure_Mn', 'BsmtQual_TA|GarageType_CarPort', 'Exterior2nd_HdBoard|Neighborhood_Timber', 'BsmtCond_Po|BsmtFinType1_LwQ', 'Functional_Maj2|Fence_GdWo', 'HouseStyle_SFoyer|ExterCond_TA', 'Street_Tencode|GarageType_Attchd', 'LotShape_Reg|MSSubClass', 'HeatingQC_Gd|BsmtFinType2_ALQ', 'HeatingQC_Ex|SaleCondition_Normal', 'GrLivArea|Neighborhood_CollgCr', 'GrLivArea|GarageCond_Fa', 'SaleType_WD|Neighborhood_SawyerW', 'Heating_GasA|Alley_Grvl', 'Exterior2nd_AsbShng|HalfBath', 'RoofMatl_CompShg|BsmtQual_TA', 'Exterior1st_Stucco|GarageCond_Fa', 'GarageYrBlt|Foundation_Slab', 'YrSold|BsmtFinType2_LwQ', '2ndFlrSF|ExterCond_Fa', 'HalfBath|Exterior1st_MetalSd', 'GarageCond_Po|GarageCond_Gd', 'Exterior2nd_Stone|Exterior2nd_Plywood', 'MiscVal|SaleType_WD', 'BsmtFinSF2|GarageType_CarPort', 'Foundation_Slab|BsmtCond_Fa', 'BldgType_Duplex|MSZoning_RH', 'Exterior1st_AsbShng|LotConfig_Inside', 'BsmtCond_TA|Neighborhood_MeadowV', 'Alley_Pave|MSZoning_Tencode', 'Neighborhood_CollgCr|Condition1_PosA', 'MiscFeature_Othr|MasVnrType_Stone', 'Exterior2nd_AsbShng|RoofMatl_WdShngl', 'Electrical_Tencode|KitchenQual_Ex', 'Neighborhood_Veenker|Condition1_Feedr', 'HouseStyle_1Story|1stFlrSF', 'Neighborhood_SWISU|GarageCond_Gd', 'ExterCond_TA|Condition1_Tencode', 'BsmtQual_Ex|WoodDeckSF', 'Condition1_Norm|OpenPorchSF', 'BsmtUnfSF|MSZoning_FV', 'SaleType_Oth|MSZoning_RL', 'MiscFeature_Shed|Exterior1st_Tencode', 'Electrical_FuseA|Exterior2nd_HdBoard', 'Condition1_Artery|ExterCond_Fa', 'MiscVal|MasVnrType_None', 'Exterior2nd_VinylSd|SaleCondition_Family', 'LandSlope_Sev|CentralAir_Y', 'BsmtFinType1_Tencode|Street_Grvl', 'LandSlope_Mod|Condition1_Feedr', 'LandContour_Low|Neighborhood_Mitchel', 'FullBath|Exterior2nd_VinylSd', 'LotConfig_FR2|MasVnrArea', 'YearRemodAdd|BsmtQual_Gd', 'Exterior1st_AsbShng|BsmtExposure_Av', 'HeatingQC_Gd|BedroomAbvGr', 'Exterior1st_MetalSd|Neighborhood_MeadowV', 'MiscFeature_Othr|CentralAir_Y', 'Street_Tencode|RoofStyle_Shed', 'ExterCond_TA|BsmtQual_Tencode', 'LotArea|SaleType_New', 'FireplaceQu_Tencode|Alley_Tencode', 'RoofStyle_Hip|YearBuilt', 'YearBuilt|HouseStyle_2.5Unf', 'BsmtFinType1_BLQ|BedroomAbvGr', 'BsmtFullBath|Condition1_RRAn', 'LandContour_Lvl|GarageCond_Gd', 'Exterior2nd_VinylSd|Neighborhood_Gilbert', 'GarageType_BuiltIn|Condition2_Artery', 'LotShape_Tencode|Alley_Pave', 'OpenPorchSF|Exterior2nd_Brk Cmn', 'BedroomAbvGr|PavedDrive_Y', 'RoofStyle_Gable|Neighborhood_Gilbert', 'LotConfig_FR2|KitchenQual_Tencode', 'Exterior2nd_VinylSd|Functional_Maj2', 'SaleType_Oth|Functional_Min2', 'Neighborhood_NWAmes|Exterior1st_Wd Sdng', 'Functional_Tencode|RoofStyle_Tencode', 'KitchenQual_Ex|GarageCond_Ex', 'LotShape_IR2|BsmtExposure_Av', 'LandContour_Lvl|GarageQual_Po', 'Heating_GasW|MasVnrType_None', 'YearRemodAdd|Condition1_RRAn', 'Neighborhood_Crawfor|MSZoning_RH', 'PavedDrive_Y|Exterior1st_Plywood', 'Exterior2nd_Plywood|WoodDeckSF', 'ExterCond_Gd|BldgType_1Fam', 'GarageFinish_Tencode|Electrical_FuseF', 'Neighborhood_OldTown|Exterior1st_WdShing', 'Neighborhood_Edwards|FireplaceQu_Fa', 'CentralAir_Y|SaleType_CWD', 'LotFrontage|Exterior2nd_HdBoard', 'Neighborhood_NPkVill|Neighborhood_Timber', 'Exterior1st_HdBoard|Functional_Tencode', 'LandContour_Bnk|Fence_GdPrv', 'SaleCondition_Tencode|Fence_GdPrv', 'Functional_Maj1|LotConfig_Tencode', 'Neighborhood_NAmes|Functional_Mod', 'Neighborhood_NPkVill|SaleCondition_Family', 'MSZoning_RL|Exterior1st_Plywood', 'MiscFeature_Othr|Exterior2nd_CmentBd', 'Neighborhood_BrDale|MiscFeature_Shed', 'RoofStyle_Flat|Foundation_BrkTil', 'LandSlope_Sev|Condition1_PosN', 'Condition1_PosA|BsmtFinType1_GLQ', 'Exterior1st_AsbShng|BsmtExposure_Mn', 'GarageQual_Fa|Exterior2nd_Brk Cmn', 'GarageCond_Tencode|BldgType_1Fam', 'Foundation_Tencode|PavedDrive_P', 'Exterior2nd_VinylSd|Condition1_PosN', 'BsmtFinType1_Tencode|GarageQual_Po', 'HouseStyle_Tencode|Exterior1st_Wd Sdng', 'GarageType_BuiltIn|Fence_MnWw', 'Alley_Tencode|SaleCondition_Partial', 'LotShape_Tencode|LandContour_Low', 'Foundation_Stone|SaleType_Tencode', 'GarageQual_Gd|LandContour_Tencode', 'LandContour_HLS|Exterior2nd_MetalSd', 'Neighborhood_Blmngtn|RoofMatl_WdShngl', 'Exterior2nd_Stone|Neighborhood_Sawyer', 'BsmtFinType1_Unf|Foundation_Slab', 'Neighborhood_NridgHt|Foundation_Slab', 'HouseStyle_Tencode|MasVnrType_Tencode', 'KitchenQual_TA|Neighborhood_BrkSide', 'MasVnrType_BrkCmn|BsmtCond_Gd', 'GarageType_BuiltIn|CentralAir_Tencode', 'Exterior1st_BrkFace|GarageArea', 'Neighborhood_ClearCr|Foundation_Tencode', 'SaleType_ConLI|Neighborhood_BrkSide', 'GrLivArea|SaleType_Oth', 'BsmtFullBath|MasVnrType_BrkCmn', 'OpenPorchSF|RoofStyle_Tencode', 'SaleType_ConLI|Condition1_PosA', 'BsmtQual_TA|BsmtFinSF1', 'Functional_Typ|Exterior1st_MetalSd', 'BsmtFinType1_Tencode|Functional_Maj1', 'Functional_Mod|HouseStyle_SLvl', 'GrLivArea|YearBuilt', 'BldgType_TwnhsE|BsmtFinType2_Unf', 'MasVnrType_None|KitchenQual_TA', 'FireplaceQu_Gd|BsmtFinType1_LwQ', 'LandContour_Bnk|GarageQual_Fa', 'YearRemodAdd|Heating_GasW', 'HeatingQC_Ex|RoofStyle_Tencode', 'Electrical_SBrkr|CentralAir_Y', 'BsmtFinType2_BLQ|LandContour_Lvl', 'Fence_GdWo|MSZoning_Tencode', 'BedroomAbvGr|BsmtExposure_Gd', 'BsmtFinType1_Tencode|GarageFinish_Fin', 'ExterQual_Tencode|MSZoning_FV', 'LandSlope_Sev|Electrical_FuseF', 'Neighborhood_Mitchel|OpenPorchSF', 'BsmtFinType2_BLQ|Functional_Maj1', 'Functional_Mod|CentralAir_Y', 'GarageFinish_Unf|CentralAir_N', 'GarageQual_TA|MasVnrType_BrkCmn', 'Neighborhood_SWISU|HouseStyle_2Story', 'RoofMatl_Tencode|Functional_Maj1', 'Fireplaces|MasVnrType_BrkFace', 'OverallQual|BsmtCond_Gd', 'PavedDrive_P', 'OverallQual|SaleType_Oth', 'Exterior1st_Stucco|Electrical_FuseF', 'SaleCondition_Tencode|BsmtFinType2_BLQ', 'Condition1_Artery|MiscFeature_Shed', 'Exterior1st_BrkFace|GarageQual_TA', 'BsmtFinType1_Tencode|Foundation_Tencode', 'Functional_Typ|Heating_Tencode', 'Condition1_Artery|HeatingQC_Tencode', 'GrLivArea|Exterior1st_WdShing', 'LandContour_Lvl|BsmtQual_TA', 'RoofMatl_Tar&Grv|Exterior2nd_AsphShn', 'MoSold|Exterior1st_Wd Sdng', 'Exterior2nd_MetalSd|SaleType_COD', 'LotConfig_Corner|HouseStyle_SLvl', 'YearBuilt|WoodDeckSF', 'LandSlope_Mod|SaleCondition_Normal', 'Exterior1st_BrkComm|HouseStyle_2Story', 'LowQualFinSF|Neighborhood_Crawfor', 'GarageType_Attchd|LotConfig_Inside', 'OverallQual|ExterCond_Gd', 'BsmtExposure_Tencode|OpenPorchSF', 'PavedDrive_Tencode|ExterQual_Ex', 'SaleType_WD|MasVnrType_Stone', 'LandContour_Low|LotArea', 'ExterQual_Tencode|Exterior1st_Wd Sdng', 'GarageFinish_Fin|Condition1_PosN', 'BsmtFinType2_BLQ|Condition1_Tencode', 'Neighborhood_NWAmes|BsmtFinType1_LwQ', 'BldgType_1Fam|HouseStyle_SLvl', 'GarageQual_TA|BsmtCond_TA', 'Heating_GasW|Exterior1st_WdShing', 'Exterior1st_HdBoard|CentralAir_Y', 'Foundation_CBlock|Exterior2nd_Wd Shng', 'HouseStyle_Tencode|OpenPorchSF', 'Heating_GasW|GarageQual_Fa', 'Neighborhood_Mitchel|PavedDrive_P', 'Functional_Typ|Foundation_CBlock', 'BsmtExposure_Tencode|LotShape_IR3', 'Foundation_Stone|MSSubClass', 'Exterior1st_AsbShng|BsmtQual_Tencode', 'LandSlope_Tencode|Utilities_AllPub', 'GarageArea|MasVnrType_BrkFace', 'ExterCond_Tencode|BsmtExposure_No', 'BsmtFinType1_ALQ|PoolArea', '2ndFlrSF|ExterQual_Fa', 'GarageType_Detchd|Utilities_AllPub', 'MiscFeature_Gar2|Exterior2nd_Plywood', 'Foundation_Slab|HouseStyle_1.5Fin', 'GarageQual_TA|MasVnrType_None', 'TotalBsmtSF|LandSlope_Sev', 'BldgType_2fmCon|GarageType_Tencode', 'Exterior1st_Stucco|Condition2_Norm', 'FireplaceQu_Po|Exterior1st_Plywood', 'Fence_GdPrv|Condition2_Artery', 'BsmtFinType2_LwQ|Exterior2nd_Brk Cmn', 'Neighborhood_NridgHt|Neighborhood_Veenker', 'KitchenQual_Gd|BsmtFinType2_ALQ', 'RoofStyle_Hip|MasVnrType_Tencode', 'Exterior2nd_Stucco|Neighborhood_BrkSide', 'BsmtFinSF2|LandSlope_Tencode', 'Fence_MnWw|LotConfig_Inside', 'TotalBsmtSF|MSZoning_C (all)', 'Exterior2nd_AsbShng|WoodDeckSF', 'GrLivArea|BsmtFinType2_GLQ', 'FullBath|Exterior2nd_AsphShn', 'LotConfig_Corner|GarageArea', 'GrLivArea|EnclosedPorch', 'LandContour_HLS|SaleType_Oth', 'KitchenAbvGr|Functional_Min2', 'Condition2_Norm|MSZoning_RL', 'BldgType_Twnhs|PoolArea', 'BsmtFinType1_Rec|Exterior1st_CemntBd', 'KitchenQual_Fa|GarageType_2Types', 'MiscFeature_Shed|Fence_MnWw', 'Exterior2nd_Wd Shng|ExterQual_Fa', 'Alley_Grvl|MSZoning_Tencode', 'GarageFinish_Unf|Condition1_Tencode', 'Condition1_Tencode|SaleType_CWD', 'PoolArea|MasVnrArea', 'GarageFinish_Fin|Neighborhood_MeadowV', 'Exterior2nd_CmentBd|SaleType_Oth', 'MasVnrType_Stone|Functional_Min2', 'EnclosedPorch|Neighborhood_NoRidge', 'EnclosedPorch|Exterior1st_BrkComm', 'RoofMatl_Tencode|BldgType_2fmCon', 'Foundation_PConc|Exterior1st_Tencode', 'SaleCondition_Tencode|HeatingQC_TA', 'PoolArea|Exterior1st_WdShing', 'TotalBsmtSF|Neighborhood_SWISU', 'PavedDrive_N|SaleCondition_Normal', 'RoofMatl_CompShg|SaleType_ConLD', 'BsmtFinType2_Tencode|Neighborhood_Veenker', 'Neighborhood_Veenker|Fence_GdPrv', 'RoofMatl_Tencode|LotArea', 'YearRemodAdd|Functional_Min1', 'BsmtCond_Po|Exterior1st_Wd Sdng', 'SaleType_ConLI|TotRmsAbvGrd', 'Condition1_Feedr|BsmtExposure_Mn', 'BldgType_2fmCon|Heating_Grav', 'BsmtFinType2_BLQ|BsmtFullBath', 'LotFrontage|BsmtFinType1_Unf', 'MSZoning_FV|HouseStyle_1.5Fin', 'LotFrontage|LotConfig_Tencode', 'HouseStyle_SLvl|Exterior1st_MetalSd', 'LandContour_Low', 'GarageCond_Fa|BsmtExposure_Gd', 'GarageFinish_Fin|Condition1_Feedr', 'SaleType_COD|ExterCond_Fa', 'HouseStyle_2.5Unf|BsmtExposure_Gd', 'KitchenAbvGr|Foundation_Tencode', 'LotShape_Tencode|RoofMatl_WdShngl', 'HeatingQC_Gd|PavedDrive_Tencode', 'GarageCond_Ex|Neighborhood_MeadowV', 'SaleType_ConLI|RoofMatl_Tar&Grv', 'BldgType_Duplex|Foundation_PConc', 'Condition1_Tencode|FireplaceQu_TA', 'GarageFinish_Tencode|MSSubClass', 'HeatingQC_Tencode|CentralAir_N', 'GrLivArea|GarageCond_Gd', 'BsmtUnfSF|Neighborhood_Sawyer', 'Exterior1st_BrkFace|Exterior2nd_Wd Sdng', 'Exterior2nd_Stone|MasVnrType_BrkFace', 'MiscVal|GarageType_CarPort', 'Neighborhood_Veenker|BsmtExposure_Av', 'SaleType_ConLw|Foundation_Tencode', 'PoolQC_Tencode|BsmtFullBath', 'GarageType_Basment|Neighborhood_MeadowV', 'Street_Tencode|WoodDeckSF', 'MoSold|GarageQual_Tencode', 'RoofStyle_Flat|BsmtCond_Po', 'Neighborhood_NridgHt|LandContour_Tencode', '1stFlrSF|MiscFeature_Gar2', 'Foundation_PConc|Street_Grvl', 'LotShape_Tencode|Neighborhood_NPkVill', 'KitchenQual_Tencode|MasVnrType_None', 'Exterior2nd_Brk Cmn|WoodDeckSF', 'Neighborhood_NoRidge|CentralAir_Y', 'ExterQual_Ex|MSZoning_RM', 'Exterior2nd_Tencode|BsmtFinType1_ALQ', 'Street_Grvl|MasVnrType_BrkFace', 'LotConfig_FR2|HouseStyle_1.5Unf', 'RoofStyle_Flat|GarageArea', 'Exterior1st_HdBoard|LotConfig_CulDSac', 'RoofStyle_Shed|Exterior2nd_HdBoard', 'MSZoning_Tencode|Exterior2nd_AsphShn', 'Neighborhood_Somerst|Electrical_FuseF', 'Exterior1st_HdBoard|GarageType_BuiltIn', 'GarageFinish_Fin|LandContour_Bnk', 'SaleCondition_Family|BsmtFinType2_Rec', 'RoofStyle_Hip|Fireplaces', 'Neighborhood_OldTown|GarageType_CarPort', 'Exterior1st_AsbShng|HouseStyle_SLvl', 'Foundation_PConc|TotRmsAbvGrd', 'Heating_GasW|GarageType_Basment', 'HouseStyle_SFoyer|BsmtCond_Gd', 'Fireplaces|Neighborhood_SWISU', 'RoofStyle_Shed|BsmtCond_Po', 'LandSlope_Mod', 'GarageType_Basment|Exterior2nd_Brk Cmn', 'TotRmsAbvGrd|MiscFeature_Shed', 'SaleType_COD|OverallCond', 'BsmtFinType1_BLQ|ExterCond_Gd', 'LotFrontage|LotShape_IR3', 'ExterQual_TA|Foundation_Slab', 'Exterior1st_VinylSd|LotShape_IR3', 'BsmtQual_Tencode|RoofMatl_CompShg', 'Electrical_FuseP|BsmtExposure_Av', 'Functional_Tencode|YearBuilt', 'GarageCond_Tencode|BsmtFinType2_BLQ', 'KitchenAbvGr|SaleType_Oth', 'RoofMatl_CompShg|Exterior2nd_Brk Cmn', 'SaleType_WD|BsmtCond_Gd', 'Foundation_PConc|1stFlrSF', 'FireplaceQu_Fa|Neighborhood_IDOTRR', 'Street_Tencode|BsmtFinType2_LwQ', 'Fence_Tencode|WoodDeckSF', 'RoofMatl_CompShg|GarageCond_Tencode', 'Condition2_Artery|SaleType_Oth', 'HouseStyle_SFoyer|Exterior1st_Plywood', 'BsmtFinType2_ALQ|Exterior1st_Plywood', 'Electrical_FuseP|BsmtCond_Fa', 'LandContour_HLS|BsmtFinType1_ALQ', 'BsmtExposure_Av|ExterQual_Fa', 'Electrical_FuseA|RoofStyle_Gambrel', 'Functional_Tencode|Electrical_SBrkr', 'Neighborhood_Somerst|SaleType_Oth', 'BsmtExposure_Av|Neighborhood_Timber', 'Neighborhood_NridgHt|GarageType_Tencode', 'LandContour_HLS|HouseStyle_2Story', 'FullBath|Functional_Min1', 'RoofStyle_Shed|LandSlope_Gtl', 'YearRemodAdd|GarageType_Basment', 'HeatingQC_Tencode|BsmtCond_Po', 'Heating_GasA|LotConfig_Corner', 'BsmtCond_Gd|HouseStyle_SLvl', 'PoolQC_Tencode|MasVnrArea', 'GarageQual_Gd|MasVnrType_BrkFace', 'GrLivArea|LotConfig_CulDSac', 'EnclosedPorch|RoofStyle_Flat', 'LotArea|GarageType_Tencode', 'FireplaceQu_Tencode|LotShape_Tencode', 'SaleType_New|BsmtCond_Gd', 'RoofStyle_Hip|Heating_Tencode', 'HeatingQC_Fa|BsmtFullBath', 'HeatingQC_Tencode|GarageQual_Po', 'BsmtFinType2_GLQ|Functional_Maj1', 'RoofStyle_Gable|LotConfig_Inside', 'HouseStyle_2.5Unf|Utilities_AllPub', 'BsmtFinType1_Unf|Exterior2nd_AsphShn', 'GarageType_Detchd|GarageQual_Fa', 'LotFrontage|BldgType_Tencode', 'LandContour_HLS|Heating_GasW', 'ExterQual_Tencode|MasVnrType_Stone', 'BsmtExposure_Tencode|GarageCond_Ex', 'Fence_Tencode|BldgType_Tencode', 'Heating_Grav|Condition1_Tencode', '3SsnPorch|Exterior1st_BrkComm', 'LandSlope_Mod|ExterQual_Ex', 'BsmtFinType2_LwQ|GarageYrBlt', 'SaleType_ConLw|KitchenQual_Ex', 'LotConfig_Tencode|HouseStyle_2Story', 'LotShape_Tencode|GarageType_Basment', 'RoofMatl_Tencode|EnclosedPorch', 'Exterior1st_AsbShng|BsmtFinType2_Rec', 'BsmtFinType2_BLQ|Condition1_Feedr', 'OpenPorchSF|MasVnrType_Stone', 'SaleType_ConLD|MSZoning_Tencode', 'GarageCond_Gd|Neighborhood_NAmes', 'Condition1_RRAe|BsmtCond_Tencode', 'Functional_Mod|Exterior2nd_Wd Sdng', 'HouseStyle_SFoyer|Neighborhood_ClearCr', 'LandSlope_Mod|Condition2_Norm', 'LotConfig_FR2|LandContour_HLS', 'EnclosedPorch|Neighborhood_Mitchel', 'GarageCond_Fa|HouseStyle_2Story', 'GarageQual_TA|RoofStyle_Tencode', 'Neighborhood_NridgHt|LandSlope_Gtl', 'SaleCondition_Abnorml|RoofMatl_WdShngl', 'Functional_Mod|Fence_MnPrv', 'SaleType_Tencode|SaleType_ConLI', 'BldgType_Tencode|Fence_MnWw', 'HeatingQC_Gd|GarageQual_TA', 'RoofStyle_Gable|Condition1_RRAn', 'LotShape_Tencode|LandContour_Lvl', 'HeatingQC_Tencode|Street_Grvl', 'Neighborhood_OldTown|RoofStyle_Tencode', 'Neighborhood_NWAmes|Fence_MnWw', 'GrLivArea|Neighborhood_Timber', 'FireplaceQu_Gd|GarageQual_TA', 'Exterior1st_CemntBd|MSZoning_Tencode', 'RoofStyle_Tencode|Exterior1st_Wd Sdng', 'BsmtExposure_Av|KitchenQual_TA', 'RoofStyle_Flat|BsmtCond_TA', 'HalfBath|BsmtFinType2_Unf', 'Exterior2nd_AsbShng|KitchenQual_TA', 'BsmtQual_Ex|Exterior1st_Plywood', 'LandContour_HLS|LotShape_IR3', 'LandContour_Lvl|CentralAir_Y', 'LandContour_Low|BsmtFinType2_Rec', 'BsmtFinType2_BLQ|BsmtFinType1_GLQ', 'RoofStyle_Tencode|Street_Pave', 'FireplaceQu_Tencode|BldgType_1Fam', 'TotalBsmtSF|LandSlope_Gtl', 'Neighborhood_StoneBr|HouseStyle_2Story', 'Fence_GdWo|ExterQual_Fa', 'Electrical_FuseA|SaleCondition_Abnorml', 'RoofStyle_Hip|KitchenQual_Gd', 'Exterior2nd_Stone|Exterior1st_WdShing', 'RoofMatl_CompShg|KitchenQual_Tencode', 'SaleType_New|Functional_Min1', 'GarageType_Attchd|Neighborhood_MeadowV', 'SaleType_CWD|BsmtExposure_Mn', 'Neighborhood_Somerst|Heating_Grav', 'YearBuilt|Foundation_CBlock', 'BsmtFinSF2|Exterior2nd_Brk Cmn', 'SaleCondition_Family|BldgType_TwnhsE', 'Functional_Min1', 'Fence_GdPrv|SaleType_Oth', 'GarageCond_Tencode|BsmtExposure_No', 'GarageFinish_Unf|Exterior1st_Tencode', 'RoofMatl_CompShg|Neighborhood_MeadowV', 'Neighborhood_ClearCr|Neighborhood_NAmes', 'BsmtUnfSF|MasVnrType_None', 'LandContour_HLS|SaleCondition_Alloca', 'FireplaceQu_Po|MasVnrType_Stone', 'MasVnrType_Stone|ExterQual_Fa', 'SaleType_ConLD|MasVnrType_None', 'GarageCars|BsmtFinType2_BLQ', 'LandContour_Lvl|RoofMatl_Tar&Grv', 'Exterior1st_HdBoard|HouseStyle_2Story', 'HouseStyle_1.5Unf|Neighborhood_SawyerW', 'Neighborhood_BrDale|PavedDrive_Y', 'SaleType_WD|BsmtExposure_Av', 'LotShape_Tencode|Exterior1st_Tencode', 'MSZoning_RM', 'Exterior2nd_Stone|BsmtQual_TA', 'GarageQual_Gd|LandSlope_Sev', 'Condition1_RRAe|Exterior2nd_HdBoard', 'RoofMatl_Tencode|LotShape_IR1', 'HouseStyle_SLvl|BsmtFinType1_GLQ', 'BsmtQual_TA|OverallCond', 'Foundation_BrkTil|RoofStyle_Gable', 'SaleType_Tencode|BsmtExposure_Gd', 'BldgType_TwnhsE|BldgType_Tencode', 'YearBuilt|MSZoning_C (all)', 'MSZoning_RM|MasVnrType_Stone', 'Exterior1st_HdBoard|Neighborhood_Edwards', 'Heating_Tencode|OpenPorchSF', 'BsmtHalfBath|GarageCond_Gd', 'GarageFinish_Unf|BsmtFinType2_Rec', 'Electrical_FuseA|OpenPorchSF', 'Functional_Typ|Condition2_Norm', 'BsmtFinType1_BLQ|SaleType_Tencode', 'ExterQual_TA|RoofStyle_Flat', 'BsmtQual_Tencode|MiscVal', 'PavedDrive_Y|Neighborhood_Sawyer', 'Neighborhood_Tencode|SaleCondition_Partial', 'LandContour_Tencode|Utilities_AllPub', 'HouseStyle_1Story|MasVnrArea', 'Neighborhood_Somerst|Neighborhood_IDOTRR', 'MiscFeature_Othr|Neighborhood_Mitchel', 'Neighborhood_Somerst|MSZoning_RM', 'LandSlope_Mod|BsmtFinType1_ALQ', 'YrSold|MasVnrType_BrkCmn', 'GarageType_CarPort|SaleCondition_Partial', 'Neighborhood_NWAmes|MiscFeature_Gar2', 'BsmtFullBath|BsmtCond_Tencode', 'Neighborhood_Gilbert|BldgType_Tencode', 'LotArea|GarageType_CarPort', 'MSZoning_Tencode', 'RoofMatl_Tencode|BedroomAbvGr', 'MSZoning_C (all)|Condition1_Norm', 'Fence_GdPrv|MSZoning_FV', 'HouseStyle_1Story|Fence_MnPrv', 'HouseStyle_1Story|LandContour_Bnk', 'GarageType_Detchd|HeatingQC_TA', 'FireplaceQu_Gd|MasVnrArea', 'KitchenAbvGr|MiscFeature_Gar2', 'ExterQual_Tencode|Foundation_Slab', 'SaleCondition_Family|PavedDrive_P', 'ExterCond_Tencode|BldgType_Tencode', 'KitchenQual_TA', 'Alley_Tencode|PavedDrive_P', 'Heating_GasA|HouseStyle_1.5Fin', 'PavedDrive_N|LotConfig_FR2', 'BsmtFullBath|Functional_Min1', 'YrSold|LotConfig_Tencode', 'MiscFeature_Othr|BsmtCond_Fa', 'Alley_Grvl|CentralAir_N', 'GarageQual_Gd|SaleType_Tencode', 'BsmtFinType2_LwQ|MSZoning_FV', 'Functional_Min1|Fence_MnWw', 'OpenPorchSF|Street_Grvl', 'TotalBsmtSF|ExterQual_Ex', 'HouseStyle_1.5Unf|CentralAir_N', 'Neighborhood_Blmngtn|Exterior2nd_HdBoard', 'Condition1_PosA|MSZoning_RH', 'Fence_GdPrv|Exterior2nd_HdBoard', 'Functional_Tencode|LotShape_IR3', 'Alley_Pave|BldgType_Twnhs', 'HeatingQC_Fa|Neighborhood_ClearCr', 'Condition1_RRAn|SaleType_CWD', 'BldgType_Duplex|BsmtExposure_Av', 'Condition1_Artery|Neighborhood_CollgCr', 'Neighborhood_NPkVill|PavedDrive_Tencode', 'Condition1_RRAn|BsmtCond_TA', 'BsmtHalfBath|Exterior2nd_HdBoard', 'Condition1_PosA|GarageQual_TA', 'GarageCond_Fa|BsmtFinType1_GLQ', 'GarageType_Attchd|Functional_Min1', 'LandContour_Bnk|Exterior1st_Wd Sdng', 'LandContour_Low|YearRemodAdd', 'LandContour_Bnk|Condition1_RRAe', 'GarageQual_TA|TotRmsAbvGrd', 'FireplaceQu_Po|GarageType_Basment', 'Electrical_Tencode|Condition1_RRAn', 'Exterior2nd_MetalSd|RoofStyle_Tencode', 'ExterQual_Gd|BsmtFinType1_Unf', 'GarageCond_Gd|MSZoning_RM', '3SsnPorch|Electrical_FuseF', 'Functional_Maj1|Exterior2nd_Brk Cmn', 'Condition2_Tencode|HouseStyle_2.5Unf', 'BldgType_Duplex|FireplaceQu_Ex', 'BldgType_2fmCon|Neighborhood_StoneBr', 'Condition1_Artery|MasVnrType_BrkFace', 'LandSlope_Tencode|ExterQual_Fa', 'Exterior2nd_Wd Sdng|GarageCond_Ex', 'BsmtFinType1_Unf|Exterior1st_Plywood', 'RoofMatl_Tar&Grv|Fence_MnPrv', 'GarageQual_Fa|Exterior1st_MetalSd', 'Neighborhood_Sawyer|BsmtQual_Gd', 'BsmtQual_TA|Utilities_AllPub', 'Neighborhood_NAmes|BldgType_TwnhsE', 'HouseStyle_SFoyer|LandContour_Lvl', 'BsmtExposure_Av|Neighborhood_BrkSide', 'GarageFinish_Fin|BldgType_Tencode', 'LotFrontage|GarageYrBlt', 'MasVnrType_BrkCmn|BsmtQual_Gd', 'Exterior1st_Stucco|PoolQC_Tencode', 'PavedDrive_Y|Foundation_CBlock', 'GarageCond_Po|SaleType_New', 'RoofStyle_Flat|LotConfig_CulDSac', 'SaleType_Tencode|SaleType_COD', 'MiscFeature_Othr|LandSlope_Mod', 'SaleCondition_Alloca|GarageType_BuiltIn', 'Heating_Grav|GarageType_CarPort', 'Neighborhood_CollgCr|Foundation_Tencode', 'EnclosedPorch|KitchenQual_TA', 'BsmtFinSF1|ExterQual_Fa', 'Foundation_PConc|SaleType_WD', 'BsmtQual_Fa|GarageType_BuiltIn', 'Neighborhood_Edwards|BldgType_Tencode', 'PavedDrive_N', 'LotShape_Tencode', 'Neighborhood_NPkVill|CentralAir_N', 'Fence_Tencode|SaleType_ConLI', 'BsmtFinType1_BLQ|BsmtFinType2_Rec', 'SaleType_Tencode|GarageType_Attchd', 'TotRmsAbvGrd|LotConfig_Inside', 'BsmtExposure_Tencode|SaleType_ConLI', 'TotRmsAbvGrd|Functional_Min1', 'Neighborhood_ClearCr|MSZoning_RL', 'LotConfig_Corner|Neighborhood_Gilbert', 'SaleType_New|MiscFeature_Tencode', 'SaleType_ConLw|BsmtFinSF1', 'BsmtQual_Gd|Neighborhood_MeadowV', 'LandContour_Low|SaleType_ConLD', 'BsmtExposure_Tencode|HeatingQC_Ex', 'ExterCond_TA|BsmtFinSF2', 'LandContour_Bnk|KitchenQual_Tencode', 'RoofStyle_Hip|ExterQual_Fa', 'GarageCond_Po|Heating_Grav', 'SaleType_New|SaleCondition_Partial', 'ExterCond_Tencode', 'Neighborhood_Somerst|BsmtQual_Tencode', 'FireplaceQu_Tencode|GarageArea', 'GarageQual_Gd|MiscFeature_Tencode', 'GarageFinish_Fin|HeatingQC_Tencode', 'SaleType_WD|Neighborhood_Sawyer', 'Condition1_Feedr|Neighborhood_SawyerW', 'GarageCars|PavedDrive_Y', 'Neighborhood_BrDale|BsmtFinSF1', 'RoofMatl_Tar&Grv|CentralAir_N', 'LotShape_IR2|BsmtFinType2_ALQ', 'Neighborhood_NoRidge|GarageQual_Fa', 'HeatingQC_TA|RoofStyle_Tencode', 'Condition2_Tencode|Exterior1st_BrkComm', 'RoofStyle_Tencode|Exterior2nd_Wd Shng', 'Neighborhood_NridgHt|BsmtFullBath', 'GarageFinish_RFn|BldgType_Tencode', 'BsmtFinType1_BLQ|MSZoning_FV', 'Alley_Tencode|SaleType_ConLI', 'BsmtExposure_Tencode|Exterior1st_Tencode', 'SaleType_ConLD|BsmtCond_Gd', 'RoofStyle_Shed|SaleType_Oth', 'Alley_Tencode|HouseStyle_1.5Unf', 'BedroomAbvGr|Foundation_Slab', 'Condition1_Norm|GarageFinish_RFn', 'Exterior2nd_MetalSd|GarageType_2Types', 'HouseStyle_1.5Unf|2ndFlrSF', 'BedroomAbvGr|GarageFinish_Tencode', 'SaleType_WD|ExterCond_Gd', 'YrSold|ExterQual_Ex', 'GarageCars|Exterior1st_CemntBd', 'Neighborhood_NridgHt|Utilities_AllPub', 'LandContour_HLS|KitchenQual_TA', 'FireplaceQu_Tencode|Neighborhood_StoneBr', 'OpenPorchSF|ScreenPorch', 'SaleCondition_Tencode|BsmtExposure_Gd', 'Neighborhood_BrDale|RoofStyle_Hip', 'HouseStyle_1Story|Alley_Tencode', 'HeatingQC_Tencode|SaleCondition_Normal', 'Neighborhood_BrDale|Street_Grvl', 'Neighborhood_BrDale|MasVnrType_BrkFace', 'Condition1_Norm|Street_Pave', 'Neighborhood_BrkSide|BsmtCond_TA', 'SaleCondition_Family|KitchenQual_Fa', 'HouseStyle_1Story|Neighborhood_SawyerW', 'Neighborhood_ClearCr|KitchenQual_Fa', 'LotFrontage|TotRmsAbvGrd', 'Alley_Pave|BsmtQual_TA', 'Neighborhood_Somerst|FullBath', 'MiscFeature_Othr|Condition2_Tencode', 'Foundation_Tencode|Functional_Min1', 'Neighborhood_BrkSide|LotShape_IR3', 'Utilities_Tencode|GarageQual_Gd', 'LandContour_HLS|MSZoning_RL', 'Exterior1st_Stucco|Utilities_AllPub', 'ExterQual_Ex|Exterior2nd_HdBoard', 'FireplaceQu_Po|FireplaceQu_Fa', 'HeatingQC_Fa|HouseStyle_2Story', 'Neighborhood_BrDale|ExterQual_Tencode', 'FireplaceQu_Po|SaleCondition_Abnorml', 'Foundation_PConc|KitchenQual_Fa', 'BldgType_1Fam|MiscFeature_Gar2', 'Exterior2nd_VinylSd|SaleType_COD', 'RoofMatl_Tencode|Foundation_BrkTil', '3SsnPorch|Condition1_PosN', 'YearBuilt|OverallCond', 'Heating_Grav|MSZoning_C (all)', 'RoofStyle_Gable|GarageCond_Fa', 'LotShape_IR2|Functional_Min2', 'Functional_Tencode|Foundation_BrkTil', 'RoofMatl_Tar&Grv|LotConfig_Tencode', 'Foundation_Stone|BsmtCond_Po', 'BsmtFinType2_ALQ|MSZoning_RM', 'LotConfig_Tencode|ExterQual_Gd', 'Condition1_Artery|3SsnPorch', 'Condition1_Feedr|OverallCond', 'Condition1_Norm|ExterQual_Gd', 'Fence_Tencode|Foundation_CBlock', 'Exterior2nd_Wd Sdng|LotShape_IR3', 'Foundation_Slab|MasVnrType_Stone', 'BsmtFinType1_Tencode|GarageCond_Fa', 'Alley_Pave|Fence_Tencode', 'BldgType_Tencode|Neighborhood_BrkSide', 'BsmtFinSF2|LandSlope_Gtl', 'FireplaceQu_Tencode|ExterCond_Fa', 'Condition1_PosA|WoodDeckSF', 'Condition1_Artery|Exterior2nd_HdBoard', 'Functional_Maj2|Exterior1st_MetalSd', 'Exterior1st_BrkFace|BsmtQual_Gd', 'HeatingQC_TA|RoofStyle_Gable', 'MiscVal|BsmtCond_Fa', 'LotShape_Reg|Exterior1st_Tencode', 'MasVnrType_BrkCmn|BldgType_TwnhsE', 'Exterior1st_HdBoard|Neighborhood_Tencode', 'Exterior2nd_Tencode|Exterior1st_VinylSd', 'BsmtQual_Fa|Fence_GdPrv', 'Neighborhood_SWISU|Functional_Maj2', 'LotShape_IR1|Fireplaces', 'Heating_Grav|MasVnrType_BrkCmn', 'GarageArea|Foundation_Slab', 'Exterior2nd_CmentBd|MSZoning_RL', '3SsnPorch|MiscFeature_Shed', 'Exterior1st_HdBoard|Neighborhood_NWAmes', 'Fireplaces|BsmtFinType2_BLQ', 'BldgType_Twnhs|SaleCondition_Normal', 'LotShape_Reg|GarageQual_Po', 'GarageFinish_Unf|Functional_Mod', 'BsmtExposure_No|MasVnrType_Tencode', 'BldgType_Duplex|GarageType_Attchd', 'Foundation_Stone|GarageType_Basment', 'Alley_Tencode|Neighborhood_MeadowV', 'GarageQual_Po|Exterior2nd_HdBoard', 'BsmtQual_TA|MasVnrType_Tencode', 'FireplaceQu_Fa', 'Exterior1st_BrkFace|Electrical_Tencode', 'LotShape_Tencode|BsmtFinType1_Tencode', 'BldgType_TwnhsE|BsmtFinSF1', 'BsmtFinType1_LwQ|KitchenQual_TA', 'Fence_Tencode|TotRmsAbvGrd', 'LotConfig_CulDSac|GarageFinish_Tencode', 'HouseStyle_SFoyer|Exterior2nd_MetalSd', 'LotShape_Tencode|Fence_GdWo', 'LotConfig_Tencode|Functional_Mod', 'Electrical_SBrkr|HouseStyle_SLvl', 'MSZoning_RL|Exterior2nd_Wd Shng', 'Fence_GdPrv|BsmtCond_Fa', 'BsmtFinType1_BLQ|Condition1_RRAn', 'ExterQual_TA|Foundation_Tencode', 'LotFrontage|Condition1_Feedr', 'BsmtFinType1_LwQ|Exterior1st_Wd Sdng', 'Neighborhood_Crawfor|BsmtFinType1_Unf', 'BsmtFinType2_LwQ|Exterior1st_MetalSd', 'Exterior2nd_VinylSd|BsmtExposure_Av', 'Neighborhood_NoRidge|Foundation_Slab', 'LotConfig_Corner|Condition2_Artery', 'GarageCond_Po|SaleType_CWD', 'Condition2_Norm|Exterior2nd_AsphShn', 'RoofMatl_Tencode|HeatingQC_Tencode', 'Neighborhood_Tencode|Neighborhood_Gilbert', 'FireplaceQu_Ex|MiscFeature_Tencode', 'FireplaceQu_Ex|BsmtFinType1_Unf', 'KitchenQual_Gd|GarageYrBlt', 'Utilities_Tencode|HeatingQC_Ex', 'FullBath|GarageCond_Tencode', 'KitchenQual_Fa|BldgType_Tencode', 'Alley_Pave|Exterior2nd_Wd Sdng', 'BsmtFinType1_BLQ|Exterior1st_AsbShng', 'SaleCondition_Abnorml|ExterQual_Tencode', 'RoofMatl_Tencode|Condition1_PosN', 'ExterQual_TA|Street_Tencode', 'TotRmsAbvGrd|GarageType_2Types', 'HalfBath|PavedDrive_P', 'HouseStyle_SFoyer|HeatingQC_Tencode', 'BsmtFinType2_ALQ|Exterior2nd_Plywood', 'Functional_Typ|Functional_Min1', 'BsmtExposure_Tencode|Neighborhood_Edwards', 'BsmtExposure_Mn|WoodDeckSF', 'OpenPorchSF|SaleType_CWD', 'LotShape_Reg|SaleType_CWD', 'HeatingQC_Fa|LotConfig_Corner', 'Neighborhood_NoRidge|GarageType_Basment', 'Foundation_BrkTil|BsmtFinType2_BLQ', 'EnclosedPorch|CentralAir_Tencode', 'LandContour_Lvl|SaleCondition_Alloca', 'BedroomAbvGr|Fence_GdPrv', 'ExterCond_Gd|BsmtQual_Gd', 'Foundation_PConc|Neighborhood_StoneBr', 'SaleCondition_Alloca|Neighborhood_Crawfor', 'Condition1_Feedr|HouseStyle_SLvl', 'HouseStyle_SFoyer|BldgType_1Fam', 'PavedDrive_Tencode|ExterQual_Tencode', 'SaleCondition_Family|ScreenPorch', 'RoofStyle_Hip|BsmtExposure_Mn', 'Neighborhood_Somerst|LandContour_HLS', 'GarageFinish_RFn|MasVnrType_Tencode', 'ExterQual_Ex|Condition1_RRAn', 'Foundation_BrkTil|BedroomAbvGr', 'Heating_Grav|KitchenQual_Tencode', 'Exterior2nd_CmentBd|Street_Pave', 'HouseStyle_SFoyer|LandContour_Tencode', 'RoofStyle_Hip|BsmtHalfBath', 'MiscVal|PoolQC_Tencode', 'RoofStyle_Hip|CentralAir_Tencode', 'GarageCond_Tencode|Heating_Tencode', 'LandContour_Lvl|LotConfig_CulDSac', 'Street_Tencode|SaleType_ConLI', 'LotConfig_Tencode|Neighborhood_BrkSide', 'Neighborhood_BrDale|Neighborhood_MeadowV', 'LandContour_Low|BsmtFinType2_GLQ', 'Neighborhood_NPkVill|MSZoning_Tencode', 'Condition1_RRAe|Condition2_Norm', 'KitchenQual_Gd|Neighborhood_CollgCr', 'BsmtFullBath|BsmtQual_TA', 'GarageQual_Gd|SaleCondition_Partial', 'Neighborhood_NoRidge|Condition1_Tencode', 'Electrical_Tencode|MiscFeature_Tencode', 'GarageCond_Tencode|GarageFinish_Tencode', 'LotShape_Tencode|CentralAir_Y', 'Neighborhood_Blmngtn|Neighborhood_BrkSide', 'BldgType_2fmCon|GarageFinish_RFn', 'HouseStyle_1Story|Exterior2nd_Brk Cmn', 'RoofStyle_Flat|MSZoning_RH', 'GarageType_Detchd|HouseStyle_2Story', 'SaleCondition_Alloca|KitchenQual_Tencode', 'HouseStyle_Tencode|Neighborhood_Tencode', 'GarageFinish_Fin|MiscFeature_Gar2', 'GarageType_Detchd|PoolArea', 'GarageType_Attchd|Fence_MnPrv', 'Exterior2nd_Stucco|PavedDrive_Y', 'YrSold|Neighborhood_BrkSide', 'SaleType_ConLw|CentralAir_Y', 'Exterior2nd_CmentBd|LotShape_IR3', 'BsmtFinType1_ALQ|BldgType_Tencode', 'MiscFeature_Othr|MSSubClass', 'BsmtFullBath|HouseStyle_2.5Unf', 'BsmtFinType2_Tencode|BsmtFinType2_ALQ', 'Electrical_FuseF|Functional_Min2', 'TotalBsmtSF|MasVnrArea', 'GarageType_Detchd|RoofMatl_CompShg', 'Condition1_PosN|CentralAir_N', 'LotShape_IR2|LandSlope_Gtl', 'SaleType_COD|Neighborhood_Timber', 'BsmtFinType1_Unf|HouseStyle_1.5Fin', 'Exterior1st_CemntBd|MiscFeature_Gar2', 'GarageType_CarPort|BsmtQual_Gd', 'GarageType_Tencode|Foundation_Slab', 'Condition1_Norm|BsmtExposure_Mn', 'GarageFinish_Fin|MasVnrType_Stone', 'GarageFinish_Unf|LandSlope_Sev', 'Neighborhood_NAmes|BsmtCond_Gd', 'LotShape_IR2|RoofMatl_WdShngl', '3SsnPorch|MasVnrType_Stone', 'BldgType_2fmCon|SaleType_ConLI', 'GarageCond_Po|3SsnPorch', 'Functional_Min1|BsmtExposure_No', 'BldgType_Duplex|Condition1_Feedr', 'LotConfig_Tencode|Condition1_Tencode', 'BsmtFinType1_BLQ|BsmtQual_Ex', 'Condition1_PosN|Electrical_FuseF', 'HeatingQC_Fa|Foundation_CBlock', 'Electrical_FuseF|ExterQual_Tencode', 'MasVnrType_None|GarageYrBlt', 'Alley_Pave|Foundation_CBlock', 'LotArea|Neighborhood_SWISU', 'Neighborhood_BrkSide', 'HouseStyle_SFoyer|GarageFinish_Fin', 'Utilities_Tencode|SaleCondition_Partial', 'Neighborhood_OldTown|RoofMatl_Tar&Grv', 'BldgType_Duplex|Electrical_Tencode', 'LotShape_IR2|GarageType_BuiltIn', 'BsmtFinSF1|KitchenQual_TA', 'Street_Grvl|Exterior2nd_AsphShn', 'BldgType_2fmCon|Functional_Maj1', 'Exterior1st_CemntBd|Condition1_RRAe', 'GarageArea|CentralAir_N', 'OverallQual|MasVnrArea', 'Electrical_SBrkr|BsmtFinType2_BLQ', 'BsmtFinType1_ALQ|LotConfig_CulDSac', 'Neighborhood_SWISU|Exterior2nd_Plywood', 'KitchenAbvGr|GarageFinish_Tencode', 'Condition1_Artery|RoofMatl_CompShg', 'BsmtQual_Fa|TotRmsAbvGrd', 'Condition1_Norm|Condition1_Feedr', 'LotShape_IR3', 'Heating_GasW|Exterior2nd_AsphShn', 'BsmtFinType2_LwQ|Functional_Min1', 'Electrical_FuseP|Foundation_BrkTil', 'PavedDrive_Tencode|Functional_Maj2', 'Functional_Typ|BldgType_1Fam', 'BsmtFinType1_Tencode|LandContour_Bnk', 'BsmtFinType1_Unf|Neighborhood_BrkSide', 'Neighborhood_NridgHt|BsmtFinType2_Tencode', 'BedroomAbvGr|ExterCond_Tencode', 'Neighborhood_NPkVill|BsmtFinType1_Unf', 'OpenPorchSF|Neighborhood_Gilbert', 'MiscFeature_Shed|Exterior1st_WdShing', 'RoofStyle_Flat|BsmtQual_TA', 'Neighborhood_Gilbert|Exterior2nd_Brk Cmn', 'HouseStyle_1.5Unf|Alley_Grvl', 'Functional_Maj2|MiscFeature_Gar2', 'Neighborhood_NridgHt|MasVnrType_BrkFace', 'RoofMatl_Tencode|Exterior1st_WdShing', '2ndFlrSF|RoofMatl_WdShngl', 'BsmtFinType1_Tencode|Foundation_CBlock', 'BldgType_2fmCon|GarageQual_Fa', 'LotShape_IR2|Neighborhood_BrkSide', 'RoofMatl_CompShg|BsmtHalfBath', 'Neighborhood_OldTown|PavedDrive_P', 'BsmtCond_Tencode|Exterior2nd_Brk Cmn', 'Condition2_Norm|GarageType_2Types', 'RoofStyle_Flat|HouseStyle_2Story', 'RoofStyle_Flat|Exterior2nd_MetalSd', 'Exterior2nd_Stucco|LandContour_Bnk', 'GrLivArea|RoofMatl_WdShngl', 'BsmtFinType2_BLQ|Street_Pave', 'LandContour_Lvl|1stFlrSF', 'LotFrontage|Condition1_Norm', 'Condition1_RRAe|GarageType_Attchd', 'RoofMatl_CompShg|LotConfig_Inside', 'SaleType_Tencode|LotConfig_CulDSac', 'Condition1_Feedr|Exterior1st_MetalSd', 'HouseStyle_1Story|2ndFlrSF', 'Exterior1st_BrkFace|MasVnrType_Stone', 'EnclosedPorch|Exterior2nd_Wd Shng', 'BsmtFinType2_Unf|GarageType_2Types', 'SaleCondition_Family|Neighborhood_NAmes', 'Neighborhood_Blmngtn|BldgType_Twnhs', 'Condition1_RRAe|BsmtUnfSF', 'Street_Tencode|PavedDrive_Y', 'RoofStyle_Hip|BsmtFinType1_GLQ', 'BsmtFinType2_GLQ|LotConfig_FR2', 'LotShape_Tencode|SaleCondition_Normal', 'Alley_Pave|KitchenQual_Ex', 'BsmtCond_Po|MasVnrType_None', 'Exterior1st_Stucco|BsmtExposure_No', 'ExterQual_TA|WoodDeckSF', 'TotalBsmtSF|RoofStyle_Flat', 'Neighborhood_NPkVill|PoolArea', 'Condition2_Artery|BsmtFinType1_GLQ', 'KitchenQual_Ex|Heating_Tencode', 'FireplaceQu_Ex|Condition1_Tencode', 'SaleType_ConLI|SaleType_WD', 'GarageArea|BldgType_1Fam', 'Exterior2nd_MetalSd|Fence_GdWo', 'LandSlope_Mod|FireplaceQu_TA', 'Exterior1st_HdBoard|BsmtCond_TA', 'Exterior1st_AsbShng|HalfBath', 'BsmtFinType1_Rec|Neighborhood_StoneBr', 'GarageQual_Fa|SaleType_COD', 'KitchenAbvGr|GarageCars', 'Exterior2nd_MetalSd|ExterQual_Tencode', 'Heating_Tencode|Utilities_AllPub', 'ExterQual_TA|BsmtQual_Fa', 'RoofStyle_Hip|SaleType_Oth', 'GrLivArea|KitchenQual_Ex', 'MiscFeature_Tencode|ExterQual_Tencode', 'Neighborhood_NoRidge|WoodDeckSF', 'HeatingQC_Gd|LandSlope_Tencode', 'Exterior2nd_Stucco|BsmtFinSF1', 'Exterior1st_VinylSd|KitchenQual_TA', 'BsmtQual_Fa|ScreenPorch', 'Neighborhood_Gilbert|Condition2_Norm', 'GarageType_Tencode|Condition1_RRAe', 'Neighborhood_ClearCr|SaleCondition_Partial', 'KitchenQual_Fa|GarageQual_Tencode', 'MSSubClass|Neighborhood_Timber', 'Utilities_Tencode|Condition1_Feedr', 'HouseStyle_Tencode|SaleType_WD', 'Exterior2nd_VinylSd|ExterQual_Fa', 'FullBath|Fence_GdWo', 'RoofStyle_Gable|RoofStyle_Tencode', 'RoofStyle_Flat|Exterior1st_WdShing', 'Condition1_Artery|Foundation_CBlock', 'Neighborhood_NPkVill|GarageQual_Tencode', '2ndFlrSF|BsmtFinType1_GLQ', 'MiscFeature_Gar2|BsmtQual_Gd', 'GarageYrBlt|Alley_Grvl', 'BsmtFinSF2|BsmtUnfSF', 'Alley_Tencode|TotRmsAbvGrd', 'PavedDrive_N|PavedDrive_Tencode', 'GarageFinish_Unf|MiscFeature_Shed', 'MiscVal|MiscFeature_Tencode', 'RoofMatl_Tencode|Neighborhood_Veenker', 'Exterior2nd_BrkFace|Neighborhood_SawyerW', 'HouseStyle_1Story|Exterior1st_Tencode', 'Fence_Tencode|BsmtCond_Fa', 'BsmtFinType1_BLQ|GarageYrBlt', 'BsmtQual_Fa|2ndFlrSF', 'Fence_Tencode|Neighborhood_MeadowV', 'MoSold|GarageArea', 'Heating_Tencode|Condition1_PosA', 'HouseStyle_SFoyer|Electrical_FuseF', 'LotArea|HouseStyle_Tencode', 'LandContour_HLS|PavedDrive_P', 'PoolQC_Tencode|BsmtFinType1_GLQ', 'GarageQual_Tencode|BsmtExposure_No', 'HouseStyle_1Story|Neighborhood_NPkVill', 'HeatingQC_Gd|Foundation_BrkTil', 'HeatingQC_TA|Condition1_Feedr', 'TotalBsmtSF|Fence_MnWw', 'CentralAir_Y|BsmtFinType1_GLQ', 'Functional_Maj1|Exterior2nd_Wd Sdng', 'BldgType_1Fam|Neighborhood_BrkSide', 'Functional_Maj1|GarageType_CarPort', 'BsmtFinType2_GLQ|RoofMatl_CompShg', 'PavedDrive_Tencode|LotConfig_Inside', 'Functional_Maj2|Neighborhood_Gilbert', 'BsmtCond_Po|Exterior2nd_Plywood', 'Electrical_FuseP|Exterior2nd_VinylSd', 'Exterior2nd_Tencode|BsmtFinType2_Rec', 'GarageCond_Po|BldgType_Twnhs', 'OverallQual|Street_Tencode', 'Foundation_CBlock|BsmtFinType1_GLQ', 'HalfBath|BsmtCond_Gd', 'BsmtFinType1_BLQ|GarageQual_Tencode', 'LotConfig_Tencode|MasVnrType_None', 'BsmtCond_Gd|MiscFeature_Gar2', 'Neighborhood_Tencode|MSZoning_RL', 'PavedDrive_N|LotShape_IR3', 'FullBath|KitchenQual_Fa', 'BldgType_2fmCon|KitchenQual_Fa', 'Heating_Grav|Exterior1st_WdShing', 'BsmtFinType2_ALQ|Condition1_RRAn', 'RoofStyle_Hip|LowQualFinSF', 'Neighborhood_Crawfor|Fence_GdWo', 'BsmtFinType1_BLQ|GarageCond_TA', 'GarageType_Tencode|Exterior2nd_AsphShn', 'Foundation_PConc|FireplaceQu_Ex', 'RoofMatl_Tencode|Neighborhood_StoneBr', 'BldgType_Duplex|GarageType_2Types', 'LandContour_Bnk|OverallCond', 'BsmtExposure_Tencode|LandContour_HLS', 'KitchenQual_Fa|WoodDeckSF', 'Foundation_Stone|Exterior1st_CemntBd', 'Heating_Grav|Exterior1st_Wd Sdng', 'BsmtFinType1_BLQ|BsmtCond_Tencode', 'Condition1_Artery|Functional_Typ', 'BsmtFinType2_GLQ|MSZoning_RH', 'SaleCondition_Alloca|Electrical_FuseF', 'BsmtQual_Fa|SaleCondition_Alloca', 'Neighborhood_CollgCr|Fireplaces', 'Exterior2nd_Wd Sdng|GarageYrBlt', 'MoSold|BsmtCond_Po', 'RoofMatl_Tar&Grv|Alley_Grvl', 'RoofStyle_Hip|RoofStyle_Shed', 'Fireplaces|Functional_Min1', 'Alley_Grvl|ExterQual_Tencode', 'GarageFinish_RFn|Neighborhood_Timber', 'LotConfig_CulDSac|RoofStyle_Shed', 'Utilities_Tencode|Exterior2nd_Wd Sdng', 'PoolArea|ExterQual_Fa', 'GarageFinish_Unf|GrLivArea', 'PavedDrive_Tencode|Neighborhood_Timber', 'Neighborhood_SWISU|BsmtCond_Tencode', 'BsmtFinType2_ALQ|Electrical_SBrkr', 'Alley_Tencode|Fireplaces', 'ExterCond_Gd|Fence_MnWw', 'SaleCondition_Normal|MSZoning_RH', 'Neighborhood_NPkVill|MoSold', 'GarageQual_Fa|GarageQual_TA', 'Utilities_Tencode|Condition2_Norm', 'BsmtFinSF2|LandContour_Tencode', 'BldgType_Duplex|HouseStyle_Tencode', 'HeatingQC_Fa|Functional_Min2', 'HouseStyle_1.5Unf|ExterQual_Tencode', 'Neighborhood_NoRidge|OpenPorchSF', 'SaleCondition_Tencode|HalfBath', 'HeatingQC_Ex|Neighborhood_Sawyer', 'BsmtFinType1_Unf|MSZoning_RL', 'RoofMatl_Tencode|HeatingQC_Gd', 'MiscFeature_Tencode|Neighborhood_IDOTRR', 'GarageCars|BsmtFinType2_GLQ', 'HouseStyle_Tencode|MSZoning_Tencode', 'Neighborhood_NAmes|MasVnrArea', 'Neighborhood_BrkSide|Exterior1st_Wd Sdng', 'GarageFinish_Unf|LandContour_Tencode', 'LowQualFinSF|Exterior2nd_Plywood', 'Heating_Tencode|BsmtFinSF1', 'RoofStyle_Gambrel|ExterCond_Fa', 'GarageQual_Fa|BsmtExposure_No', 'GarageType_Detchd|BsmtQual_Fa', 'OverallQual|ExterQual_Fa', 'OverallCond|KitchenQual_TA', 'LotShape_IR2|LotShape_IR1', 'LotShape_Tencode|BldgType_Tencode', 'BsmtFinType1_LwQ|RoofMatl_WdShngl', 'Neighborhood_NoRidge|Exterior2nd_Wd Sdng', 'ExterQual_TA|Neighborhood_OldTown', 'BldgType_1Fam|BldgType_Tencode', 'Neighborhood_StoneBr|HouseStyle_1.5Fin', 'BsmtFinType1_BLQ|LotShape_IR1', 'BsmtFinType1_ALQ|Condition1_RRAn', 'BsmtFullBath|SaleType_CWD', 'Functional_Tencode|LandContour_Lvl', 'Condition1_PosA|Condition1_Tencode', 'HouseStyle_1Story|RoofMatl_WdShngl', 'Neighborhood_NPkVill|Neighborhood_Mitchel', 'GarageCond_Ex|GarageYrBlt', 'BsmtQual_Fa|ExterQual_Ex', 'LandSlope_Tencode|Functional_Maj1', 'Foundation_PConc|LotArea', '2ndFlrSF|Foundation_CBlock', 'GarageQual_TA|Exterior2nd_HdBoard', 'ExterQual_TA|BsmtFinType1_Rec', 'KitchenAbvGr|Neighborhood_Timber', 'RoofMatl_CompShg|ExterQual_Tencode', 'SaleType_ConLI|Exterior1st_Plywood', 'BsmtFinSF2|Foundation_CBlock', 'Exterior2nd_Stucco|Functional_Mod', 'Neighborhood_CollgCr|HouseStyle_1.5Unf', 'GarageType_Attchd|Foundation_CBlock', 'Heating_GasA|Neighborhood_Veenker', 'BsmtFinType1_Rec|SaleType_New', 'BldgType_Tencode|BsmtQual_Gd', 'LotShape_Reg|GarageType_CarPort', 'GarageQual_TA|CentralAir_Y', 'Condition1_Tencode|Neighborhood_Gilbert', 'BsmtFinType2_ALQ|Alley_Grvl', 'FireplaceQu_Po|Exterior2nd_Tencode', 'Alley_Pave|GarageCond_Gd', 'BedroomAbvGr|HeatingQC_Ex', 'Condition1_Artery|GarageYrBlt', 'Foundation_PConc|RoofMatl_WdShngl', 'SaleCondition_Alloca|MiscFeature_Shed', 'PavedDrive_Tencode|Exterior2nd_HdBoard', 'BldgType_Duplex|Electrical_SBrkr', 'HeatingQC_Tencode|Functional_Maj2', 'BsmtFinType2_Tencode|Condition1_Norm', 'BsmtExposure_Tencode|RoofStyle_Flat', 'Heating_GasA|Neighborhood_Timber', 'FireplaceQu_Po|LotConfig_Tencode', 'Fence_Tencode|LandContour_Tencode', 'Condition1_Artery|BsmtFinType2_GLQ', 'Exterior2nd_CmentBd|Condition1_Norm', 'Neighborhood_ClearCr|LandSlope_Tencode', 'MSZoning_FV|BsmtQual_Gd', 'Functional_Maj2|Functional_Min2', 'PavedDrive_Tencode|CentralAir_Y', 'LandContour_Tencode|Exterior1st_BrkComm', 'GarageType_Detchd|SaleType_CWD', 'BsmtUnfSF|CentralAir_Y', 'MiscFeature_Othr|Fence_MnWw', 'Neighborhood_CollgCr|Electrical_SBrkr', 'ExterQual_TA|Exterior2nd_Wd Sdng', 'LandContour_HLS|BsmtFinType2_LwQ', 'GarageCond_TA|BsmtExposure_Mn', 'BsmtFullBath|BsmtExposure_Av', 'BedroomAbvGr|FireplaceQu_TA', 'Alley_Tencode|MasVnrType_BrkFace', 'GarageFinish_Tencode|OpenPorchSF', 'ScreenPorch|LotShape_IR3', 'Utilities_Tencode|HeatingQC_Gd', 'Neighborhood_SWISU|SaleCondition_Partial', 'FireplaceQu_Tencode|HouseStyle_1.5Fin', 'HeatingQC_Ex|Exterior1st_CemntBd', 'Condition1_PosN|Functional_Maj1', 'Neighborhood_NWAmes|Exterior2nd_AsphShn', 'Condition2_Tencode|LotConfig_Inside', 'SaleType_Tencode|BsmtCond_TA', 'Exterior2nd_Stucco|BldgType_Duplex', 'RoofMatl_Tar&Grv|Neighborhood_Gilbert', 'LotConfig_Corner|MSZoning_C (all)', 'Foundation_BrkTil|MoSold', 'KitchenQual_Tencode|BsmtExposure_Av', 'Exterior1st_BrkFace|HouseStyle_SFoyer', 'Exterior2nd_AsbShng|Neighborhood_Mitchel', 'Heating_Grav|TotRmsAbvGrd', 'Functional_Min1|Exterior1st_Plywood', 'ExterQual_TA|Alley_Pave', 'HeatingQC_TA|CentralAir_Y', 'RoofMatl_CompShg|Exterior1st_Stucco', 'YearBuilt|Condition1_Norm', 'RoofStyle_Flat|FireplaceQu_Gd', 'SaleCondition_Tencode|Condition2_Artery', 'HouseStyle_SFoyer|MasVnrType_Tencode', 'BsmtFinType1_Tencode|MSZoning_RL', 'Foundation_Tencode|SaleType_Oth', 'Electrical_SBrkr|Exterior1st_Wd Sdng', 'BsmtHalfBath|ExterCond_Gd', 'HeatingQC_Fa|Condition1_Feedr', 'FireplaceQu_Tencode|EnclosedPorch', 'PavedDrive_N|BsmtFinSF1', 'PoolArea|HouseStyle_2Story', 'GarageFinish_Fin|LandSlope_Gtl', 'LandContour_Bnk|CentralAir_Tencode', 'SaleType_ConLw|LandContour_Lvl', 'Utilities_Tencode|GarageCond_TA', 'MasVnrType_None|MasVnrType_Stone', 'LotConfig_CulDSac|Neighborhood_Timber', 'Neighborhood_NWAmes|ExterCond_Fa', 'BldgType_TwnhsE|Neighborhood_BrkSide', 'Neighborhood_StoneBr|SaleType_COD', 'BldgType_1Fam|MasVnrArea', 'HeatingQC_Tencode|FireplaceQu_TA', 'BsmtExposure_Tencode|RoofMatl_WdShngl', 'Neighborhood_Edwards|Exterior1st_Wd Sdng', 'BsmtQual_Ex|Neighborhood_Timber', 'RoofMatl_Tar&Grv|BsmtExposure_Av', 'HouseStyle_1.5Unf|GarageType_Attchd', 'Foundation_Tencode|Alley_Grvl', 'YearRemodAdd|Condition2_Artery', 'Utilities_Tencode|BldgType_Twnhs', 'RoofStyle_Gable|TotRmsAbvGrd', 'Neighborhood_Tencode|RoofMatl_Tar&Grv', 'LotShape_Tencode|PavedDrive_Y', 'BldgType_Duplex|Neighborhood_Crawfor', 'GarageType_BuiltIn|Exterior1st_VinylSd', 'BsmtFinType1_BLQ|Exterior1st_BrkComm', 'Electrical_FuseA|Neighborhood_NoRidge', 'BsmtFinType2_Tencode|Heating_Tencode', 'MiscFeature_Tencode|Condition1_RRAn', 'BldgType_Duplex|Exterior1st_HdBoard', 'BsmtFinType1_Tencode|Functional_Min1', 'Heating_Grav|HouseStyle_2.5Unf', 'MiscVal|Street_Pave', 'GarageArea|GarageType_2Types', 'LotArea|SaleType_WD', 'Exterior2nd_AsbShng|HeatingQC_Tencode', 'BsmtFullBath|Exterior1st_Wd Sdng', 'Alley_Tencode|GarageFinish_Tencode', 'Electrical_Tencode|BsmtCond_Gd', 'RoofMatl_Tar&Grv|BsmtQual_Gd', 'Functional_Tencode|ExterQual_Ex', 'BldgType_Tencode|Condition1_RRAn', 'RoofStyle_Flat|YearBuilt', 'GarageCond_Po|LandSlope_Tencode', 'ScreenPorch|Exterior1st_Wd Sdng', 'HouseStyle_1Story|CentralAir_Tencode', 'Heating_Tencode|Neighborhood_IDOTRR', 'Neighborhood_SWISU|KitchenQual_Fa', 'RoofStyle_Shed|BsmtExposure_No', 'GarageCond_TA|CentralAir_Tencode', 'GarageCond_TA|MasVnrType_BrkFace', 'HeatingQC_Fa|GarageType_Attchd', 'LowQualFinSF|SaleType_COD', 'Neighborhood_Tencode|FireplaceQu_TA', 'YearBuilt|Fence_MnPrv', 'Alley_Tencode|LandSlope_Sev', 'Exterior2nd_AsbShng|Condition1_Norm', 'Electrical_FuseA|ExterQual_Tencode', 'ExterQual_Ex|BsmtQual_Gd', 'Exterior2nd_BrkFace|SaleCondition_Alloca', 'MasVnrType_BrkFace|Neighborhood_MeadowV', 'Neighborhood_Mitchel|Exterior2nd_Wd Shng', 'HeatingQC_Tencode|BsmtFinType1_LwQ', 'PavedDrive_Y|BsmtFinType1_LwQ', 'HalfBath|MiscFeature_Gar2', 'MSSubClass|Exterior1st_Wd Sdng', 'Condition2_Artery|Neighborhood_BrkSide', 'Neighborhood_NPkVill|MasVnrType_Stone', 'Condition1_PosN|Neighborhood_NAmes', 'FireplaceQu_Po|OpenPorchSF', 'MSZoning_C (all)|HouseStyle_2Story', 'Neighborhood_NridgHt|GarageQual_TA', 'Fence_GdWo|SaleType_COD', 'MasVnrType_BrkCmn|LandSlope_Gtl', 'BsmtFullBath|MiscFeature_Shed', 'Condition1_Artery|Neighborhood_NoRidge', 'SaleCondition_Tencode|LotConfig_Inside', 'BsmtFinType2_GLQ|Exterior2nd_MetalSd', 'Heating_GasW|RoofStyle_Gambrel', 'SaleCondition_Tencode|LotConfig_Corner', 'Fireplaces|GarageType_Attchd', 'ExterQual_TA|RoofMatl_CompShg', 'RoofStyle_Hip|BsmtCond_Tencode', 'RoofMatl_CompShg|BsmtExposure_Mn', 'Neighborhood_Mitchel|GarageCond_Ex', 'Heating_GasA|SaleType_ConLw', 'ExterCond_Tencode|BsmtUnfSF', 'Exterior2nd_MetalSd|Condition2_Artery', 'GrLivArea|Neighborhood_IDOTRR', 'BsmtFinType2_BLQ|BldgType_Tencode', 'BsmtFinType2_Rec|Neighborhood_IDOTRR', 'HeatingQC_Gd|Exterior2nd_AsphShn', 'GarageType_BuiltIn|Electrical_FuseF', 'Exterior2nd_Wd Sdng|OverallCond', 'Heating_Grav|MiscFeature_Tencode', 'BsmtFinType1_LwQ|HouseStyle_1.5Fin', 'ExterQual_TA|Heating_Tencode', 'Electrical_FuseA|MasVnrType_BrkCmn', 'KitchenQual_Gd|RoofStyle_Shed', 'ExterQual_Ex|Functional_Min2', 'LandSlope_Tencode|Condition1_Feedr', 'BsmtFinSF2|KitchenQual_Fa', 'LandSlope_Gtl|BsmtFinType1_LwQ', 'Exterior2nd_Stone|Exterior2nd_Wd Sdng', 'BldgType_2fmCon|GarageType_2Types', 'Foundation_Tencode|Neighborhood_IDOTRR', 'LotShape_Tencode|Neighborhood_Crawfor', 'GarageFinish_Fin|RoofStyle_Gambrel', 'BedroomAbvGr|RoofStyle_Gable', 'Exterior2nd_Plywood|Fence_MnPrv', 'Functional_Tencode|Utilities_AllPub', 'LotShape_IR2|GarageArea', 'GarageQual_Fa|ExterQual_Tencode', 'BsmtUnfSF|MasVnrArea', 'BldgType_Duplex|ExterCond_Tencode', 'Neighborhood_Tencode|MSZoning_RM', 'Neighborhood_NWAmes|Street_Grvl', 'Neighborhood_Blmngtn|Utilities_AllPub', 'YearRemodAdd|Functional_Mod', 'Condition1_Artery|HeatingQC_Gd', 'FireplaceQu_Gd|Electrical_SBrkr', 'SaleType_New|Neighborhood_Crawfor', 'Neighborhood_Edwards|GarageQual_Tencode', 'Functional_Mod|MSZoning_Tencode', 'BsmtFullBath|Exterior2nd_CmentBd', 'Functional_Maj2|LowQualFinSF', 'Alley_Tencode|Condition1_PosN', 'Electrical_Tencode|Foundation_BrkTil', 'HeatingQC_Ex|ExterCond_Tencode', 'BsmtFullBath|GarageYrBlt', 'Heating_GasW|Condition1_RRAn', 'BsmtExposure_Tencode|FireplaceQu_TA', 'Condition1_PosA|BsmtExposure_Mn', 'Foundation_Stone|LotConfig_FR2', 'GarageType_Detchd|GarageCond_Gd', 'GarageCond_Fa|BsmtExposure_Mn', 'LotShape_IR3|MasVnrType_Stone', 'GarageQual_Fa|BsmtQual_Gd', 'GarageQual_Gd|Fence_GdWo', 'OverallQual|Exterior2nd_CmentBd', 'SaleType_ConLI|GarageCond_Gd', 'Functional_Typ|HeatingQC_Gd', 'PoolQC_Tencode|MSZoning_RM', 'Foundation_Tencode|PoolArea', 'GarageCond_Po|Neighborhood_BrkSide', 'BsmtCond_Gd|Fence_MnPrv', 'Electrical_SBrkr|TotRmsAbvGrd', 'HeatingQC_Gd|SaleType_ConLw', 'BsmtFinType1_LwQ|ExterQual_Fa', 'RoofStyle_Flat|Functional_Maj1', 'TotalBsmtSF|Exterior1st_Plywood', 'OverallQual|Neighborhood_NWAmes', 'Functional_Typ|GarageType_Attchd', 'Neighborhood_NPkVill|Neighborhood_Blmngtn', 'RoofMatl_Tar&Grv|CentralAir_Y', 'MiscFeature_Gar2|MasVnrType_BrkFace', 'Fence_Tencode|Exterior2nd_Brk Cmn', 'Neighborhood_NoRidge|ScreenPorch', 'FireplaceQu_Po|Neighborhood_IDOTRR', 'Exterior2nd_Brk Cmn|MasVnrType_Tencode', 'Exterior2nd_Wd Sdng|MasVnrType_None', 'BldgType_Duplex|Neighborhood_Tencode', 'Street_Tencode|MasVnrType_BrkFace', 'GarageFinish_Unf|MasVnrType_BrkFace', 'OverallCond|Exterior1st_MetalSd', 'BsmtFinType2_ALQ|HeatingQC_Tencode', 'FireplaceQu_Po|BsmtCond_Po', 'LotShape_IR2|Heating_GasA', 'LotConfig_Corner|SaleCondition_Abnorml', 'Functional_Mod|Exterior1st_Wd Sdng', 'RoofMatl_CompShg|Condition1_Tencode', 'Foundation_BrkTil|BsmtFinSF1', 'BsmtQual_Tencode|Exterior1st_MetalSd', 'TotalBsmtSF|LotFrontage', 'BsmtQual_Ex|Exterior1st_VinylSd', 'MasVnrType_None|Alley_Grvl', 'RoofStyle_Hip|Condition2_Artery', 'HouseStyle_2.5Unf|Alley_Grvl', 'YrSold|HeatingQC_Fa', 'MasVnrType_BrkCmn|BsmtCond_Tencode', 'BsmtHalfBath|FireplaceQu_Ex', 'Electrical_FuseF|Fence_GdWo', '1stFlrSF|RoofStyle_Tencode', 'Exterior2nd_BrkFace|Neighborhood_OldTown', 'GarageCars|Neighborhood_CollgCr', 'BsmtFinSF2|Neighborhood_SWISU', 'RoofMatl_Tencode|MSZoning_FV', 'Neighborhood_NridgHt|BsmtFinSF1', 'Foundation_Stone|GarageFinish_Tencode', 'LotShape_Reg|Neighborhood_SawyerW', 'GarageYrBlt|KitchenQual_TA', 'Condition1_Tencode|GarageFinish_RFn', 'OverallQual|TotalBsmtSF', 'Condition1_Artery|Exterior1st_CemntBd', 'Heating_Grav|GarageType_Attchd', 'MasVnrType_Stone|HouseStyle_2Story', 'Street_Grvl|Utilities_AllPub', 'GrLivArea|BsmtFinType1_BLQ', 'SaleType_ConLw|CentralAir_Tencode', 'BsmtHalfBath|MSZoning_C (all)', 'HouseStyle_1.5Unf|Functional_Maj2', 'LandContour_HLS|Functional_Maj2', 'MoSold|Neighborhood_Gilbert', 'BsmtFinType1_ALQ|LotConfig_Tencode', 'BsmtFinType1_Rec|CentralAir_Y', 'RoofMatl_Tar&Grv|KitchenQual_Tencode', 'GarageCond_Ex|Alley_Grvl', 'Exterior2nd_VinylSd|Neighborhood_SawyerW', 'Heating_GasW|GarageQual_Po', 'GarageYrBlt|MasVnrArea', 'ExterCond_Tencode|SaleType_Oth', 'LotShape_IR1|Street_Pave', 'LandSlope_Sev|Condition2_Artery', 'BsmtFinType2_GLQ|Utilities_AllPub', 'Neighborhood_NPkVill|GarageType_Attchd', 'Exterior2nd_Tencode|Electrical_FuseF', 'FireplaceQu_Po|Exterior1st_Tencode', 'Neighborhood_NoRidge|MasVnrType_Stone', 'BsmtCond_TA|Exterior1st_MetalSd', 'Exterior2nd_AsbShng|Utilities_AllPub', 'KitchenQual_Tencode|ExterQual_Ex', 'Neighborhood_NoRidge|BldgType_1Fam', 'LotShape_IR2|YearBuilt', 'Neighborhood_NPkVill|Exterior1st_Stucco', 'MasVnrType_BrkCmn|Neighborhood_StoneBr', 'HeatingQC_TA|ExterQual_Tencode', 'SaleCondition_Normal|Exterior1st_BrkComm', 'Condition1_Tencode|CentralAir_Tencode', 'SaleCondition_Tencode|Electrical_FuseA', 'Electrical_Tencode|Exterior2nd_BrkFace', 'Neighborhood_NWAmes|Exterior2nd_Brk Cmn', 'GarageFinish_Tencode|SaleType_CWD', 'BsmtHalfBath|MasVnrArea', 'Exterior1st_AsbShng|MasVnrType_BrkFace', 'BsmtFinType1_BLQ|Condition2_Artery', 'BldgType_Twnhs|Neighborhood_BrkSide', 'Neighborhood_Blmngtn|Exterior2nd_VinylSd', 'BsmtQual_Gd|Functional_Min2', 'OverallQual|Functional_Tencode', 'Neighborhood_BrkSide|MSZoning_FV', 'Functional_Typ|ExterQual_Tencode', 'Heating_Grav|Neighborhood_Timber', 'Neighborhood_NoRidge|SaleType_New', 'BsmtQual_Ex|HouseStyle_1.5Unf', 'SaleType_New|Exterior1st_BrkComm', 'Neighborhood_NoRidge|PoolQC_Tencode', 'GrLivArea|BsmtCond_TA', 'Neighborhood_BrDale|CentralAir_Y', 'BsmtFinType2_Tencode|GarageCond_Fa', 'BsmtQual_Fa|MSSubClass', 'ExterQual_TA|Foundation_Stone', 'LandContour_Tencode|LotConfig_CulDSac', 'Street_Tencode|Condition1_PosN', 'BsmtFinType2_Unf|SaleType_Oth', 'LandSlope_Gtl|ExterQual_Tencode', 'Exterior2nd_Stone|RoofStyle_Gable', 'EnclosedPorch|MiscVal', 'BsmtFinType2_ALQ|SaleType_Tencode', 'BsmtFinType2_Tencode|Exterior2nd_AsphShn', '2ndFlrSF|Functional_Min2', 'BsmtFinType1_BLQ|ExterQual_Gd', 'Exterior1st_VinylSd|BsmtFinSF1', 'Neighborhood_ClearCr|ExterCond_TA', 'EnclosedPorch|BsmtQual_Gd', 'Neighborhood_NPkVill|Street_Grvl', 'PavedDrive_Y|BsmtUnfSF', 'BsmtFinType2_ALQ|Exterior2nd_Tencode', 'GarageCond_Gd|BldgType_TwnhsE', 'YrSold|FireplaceQu_Gd', 'Exterior2nd_MetalSd|RoofStyle_Gable', 'MiscVal|BsmtFinType1_Unf', 'BldgType_TwnhsE|LotConfig_Inside', 'RoofMatl_Tencode|PavedDrive_P', 'Neighborhood_ClearCr|BsmtFinType2_LwQ', 'Electrical_SBrkr|RoofStyle_Tencode', 'SaleType_Tencode|GarageType_BuiltIn', 'Heating_Tencode|Neighborhood_Crawfor', '2ndFlrSF|BsmtFinType2_Unf', 'KitchenQual_Tencode|ExterCond_Fa', 'BsmtFinType1_BLQ|RoofMatl_CompShg', 'BsmtQual_Gd|HouseStyle_2Story', 'BsmtFinType2_Unf|BldgType_1Fam', 'HeatingQC_Tencode|ExterCond_Fa', 'BsmtFinType1_Rec|ExterCond_Tencode', 'BsmtQual_Tencode|RoofStyle_Gambrel', 'GarageCond_Gd|LotShape_IR3', 'Electrical_SBrkr|Functional_Maj2', 'MSZoning_C (all)|Exterior1st_VinylSd', 'KitchenQual_Gd|Street_Grvl', 'SaleCondition_Tencode|BsmtCond_TA', 'LandContour_Tencode|Exterior2nd_Wd Sdng', 'MasVnrType_BrkCmn|SaleType_CWD', 'Condition1_Norm|BsmtFinType2_LwQ', 'Exterior1st_CemntBd|BsmtQual_Gd', 'Electrical_FuseF|GarageYrBlt', 'Exterior2nd_AsbShng|GarageType_Tencode', 'BedroomAbvGr|PoolArea', 'BsmtHalfBath|Neighborhood_NAmes', 'Utilities_Tencode|BsmtFinSF1', 'BsmtQual_Fa|Functional_Maj1', 'RoofMatl_Tencode|Exterior1st_Wd Sdng', 'LotShape_Tencode|Exterior2nd_AsbShng', 'GarageCond_Po|GarageQual_Tencode', 'BsmtFinSF2|LowQualFinSF', 'SaleType_ConLD|BsmtQual_Gd', 'RoofMatl_Tar&Grv|Neighborhood_NWAmes', 'ExterCond_Tencode|BsmtCond_Po', 'MiscFeature_Othr|Neighborhood_Gilbert', 'MiscFeature_Gar2|LotShape_IR3', 'Condition1_RRAe|GarageType_2Types', 'BsmtQual_TA|2ndFlrSF', 'Electrical_FuseF|MiscFeature_Shed', 'Utilities_Tencode|BldgType_1Fam', 'MasVnrType_BrkFace|ExterCond_Fa', 'FireplaceQu_Tencode|Exterior2nd_Stone', 'Heating_GasW|SaleCondition_Family', 'Functional_Min1|Exterior2nd_Plywood', 'PavedDrive_Tencode|SaleType_CWD', 'LotConfig_Corner|Exterior1st_AsbShng', 'GarageQual_Gd|BldgType_Twnhs', 'HouseStyle_Tencode|BsmtFinType1_LwQ', 'HouseStyle_Tencode|BldgType_1Fam', 'Heating_Grav|LotShape_IR3', 'Electrical_FuseF|BsmtFinType2_LwQ', 'BsmtCond_Po|GarageFinish_RFn', 'PavedDrive_P|BsmtExposure_Gd', 'BsmtQual_Tencode|MSZoning_RL', 'Exterior2nd_Stone|Condition1_Tencode', 'Neighborhood_SWISU|SaleCondition_Normal', 'Exterior1st_AsbShng|FireplaceQu_Po', 'GarageType_Detchd|Condition1_RRAe', 'Condition1_Artery|KitchenQual_Tencode', 'ExterQual_Tencode|MiscFeature_Gar2', 'Neighborhood_OldTown|Condition1_RRAe', 'Exterior2nd_Brk Cmn|HouseStyle_1.5Fin', 'LotConfig_CulDSac|Condition1_RRAn', 'HalfBath|Neighborhood_SawyerW', 'GarageCond_TA|Exterior1st_WdShing', 'HouseStyle_SFoyer|CentralAir_N', 'FireplaceQu_Ex|BsmtFinType1_LwQ', 'RoofMatl_Tencode|Foundation_Stone', 'SaleType_ConLD|Neighborhood_Sawyer', 'Foundation_PConc|Exterior1st_Stucco', 'LandContour_HLS|Neighborhood_NAmes', 'GarageFinish_Tencode|RoofStyle_Shed', 'SaleType_WD|SaleType_COD', 'Heating_Tencode|Condition2_Norm', 'LandSlope_Sev|Neighborhood_StoneBr', 'Neighborhood_NridgHt|Neighborhood_CollgCr', 'Fireplaces|Neighborhood_SawyerW', 'EnclosedPorch|Exterior1st_Tencode', 'KitchenQual_Gd|MSZoning_RM', 'Utilities_Tencode|Exterior1st_Plywood', 'BldgType_Twnhs|ExterQual_Gd', 'GarageFinish_Tencode|Neighborhood_IDOTRR', 'Neighborhood_NPkVill|ExterCond_Gd', 'Neighborhood_IDOTRR|Exterior2nd_HdBoard', 'Electrical_FuseA|Neighborhood_Mitchel', 'Condition2_Artery|GarageCond_Ex', 'YearRemodAdd|BldgType_Twnhs', 'BsmtFinSF1|MasVnrType_BrkFace', 'KitchenQual_Ex|Neighborhood_BrkSide', 'FireplaceQu_Gd|LandContour_Tencode', 'OverallQual|Condition2_Norm', 'Exterior2nd_Tencode|ExterQual_Gd', 'LotFrontage|Neighborhood_NWAmes', 'HeatingQC_Fa|ExterCond_Tencode', 'LandSlope_Tencode|Exterior2nd_Plywood', 'Electrical_SBrkr|MasVnrArea', 'GarageType_Attchd|BsmtFinType1_GLQ', 'Electrical_SBrkr|RoofStyle_Shed', 'BsmtFinType2_ALQ|LotConfig_Tencode', 'GarageType_Detchd|BldgType_TwnhsE', 'Neighborhood_IDOTRR|Exterior1st_Plywood', 'BldgType_Duplex|YearRemodAdd', 'BsmtFinType2_ALQ|MasVnrType_Tencode', 'Exterior2nd_VinylSd|SaleCondition_Partial', 'GarageQual_Gd|OpenPorchSF', 'Alley_Pave|Exterior1st_CemntBd', 'LotConfig_FR2|MasVnrType_BrkFace', 'GarageType_CarPort|LotConfig_Inside', 'MasVnrArea|ExterCond_Fa', 'Exterior2nd_Stucco|SaleType_WD', 'LowQualFinSF|BsmtFinType1_GLQ', 'HeatingQC_Ex|RoofMatl_WdShngl', 'TotalBsmtSF|OverallCond', 'BsmtFinType2_Unf|LotShape_IR3', 'SaleCondition_Family|SaleType_COD', 'Neighborhood_Edwards|Neighborhood_MeadowV', 'Neighborhood_NridgHt|GarageCond_Tencode', 'RoofStyle_Flat|Condition1_RRAe', 'Neighborhood_Somerst|LandSlope_Gtl', 'Exterior2nd_AsbShng|Fence_MnWw', 'FireplaceQu_Gd|ExterQual_Ex', 'KitchenAbvGr|ScreenPorch', 'RoofStyle_Gable|MSSubClass', 'GarageFinish_Unf|MasVnrType_Tencode', 'HouseStyle_1Story|HouseStyle_2Story', 'GarageQual_Tencode|ExterQual_Tencode', 'GarageCond_Tencode|GarageType_Attchd', 'LandContour_Lvl|SaleCondition_Partial', 'GarageCond_TA|RoofMatl_CompShg', 'Condition1_Artery|BsmtCond_TA', 'Alley_Pave|MasVnrType_Tencode', 'BldgType_2fmCon|CentralAir_Y', 'Neighborhood_Edwards|RoofStyle_Gable', 'GarageType_Attchd|Alley_Grvl', 'Electrical_FuseA|GarageType_CarPort', 'BsmtFinType2_Tencode|MSZoning_C (all)', 'YrSold|SaleCondition_Family', 'BsmtHalfBath|Condition1_RRAe', 'GrLivArea|Exterior2nd_CmentBd', 'Exterior2nd_Stucco|SaleType_Tencode', 'FireplaceQu_Tencode|BldgType_Twnhs', 'ExterQual_TA|BsmtFinType1_Tencode', 'EnclosedPorch|BsmtQual_Tencode', 'YearRemodAdd|Exterior2nd_Brk Cmn', 'BsmtQual_TA|Neighborhood_SawyerW', 'LandContour_Bnk|Fence_MnPrv', 'MiscVal|BldgType_Tencode', 'PavedDrive_Y|OverallCond', 'YrSold|BsmtFullBath', 'SaleCondition_Normal|Functional_Min1', 'Neighborhood_NoRidge|Neighborhood_MeadowV', 'Exterior2nd_AsbShng|Functional_Min1', 'Condition1_Norm|LotConfig_Inside', 'GarageType_Tencode|MiscFeature_Gar2', 'HeatingQC_TA|ExterQual_Ex', 'Neighborhood_NridgHt|BsmtFinType2_Unf', 'RoofStyle_Gambrel|Electrical_FuseF', 'Functional_Maj2|2ndFlrSF', 'Functional_Tencode|Exterior2nd_HdBoard', 'EnclosedPorch|SaleType_ConLw', 'BsmtQual_Ex|Functional_Min2', 'LotConfig_Tencode|WoodDeckSF', 'YearRemodAdd|PavedDrive_Y', 'RoofStyle_Gambrel|BsmtQual_Gd', 'Electrical_SBrkr|Foundation_CBlock', 'GarageFinish_Fin|ExterCond_Tencode', '1stFlrSF|2ndFlrSF', 'Functional_Tencode|BsmtFinType2_LwQ', 'KitchenAbvGr|HouseStyle_1.5Fin', 'SaleType_Oth|BsmtExposure_No', 'Heating_GasA|SaleType_COD', 'BsmtFinType2_Rec|SaleCondition_Normal', 'SaleCondition_Tencode|Neighborhood_MeadowV', 'MasVnrType_None|MSZoning_RL', 'LandContour_Lvl|Functional_Min1', 'LotArea|Exterior2nd_CmentBd', 'BsmtFinType1_Tencode|Neighborhood_MeadowV', 'MiscFeature_Tencode|Condition2_Artery', 'Heating_Grav|SaleType_ConLD', 'YearBuilt|ExterQual_Tencode', 'Fence_GdPrv|Fence_GdWo', 'FireplaceQu_Gd|MSZoning_FV', 'LotShape_IR1|MSZoning_RH', 'GarageArea|KitchenQual_TA', 'BsmtQual_Fa|HalfBath', 'PoolQC_Tencode|GarageType_Attchd', 'SaleCondition_Family|Exterior2nd_MetalSd', 'Foundation_BrkTil|MasVnrArea', 'RoofMatl_CompShg|BsmtFinType1_LwQ', 'Street_Tencode|Condition1_Norm', 'Neighborhood_NWAmes|GarageType_2Types', 'Foundation_Stone|RoofStyle_Gambrel', 'Exterior2nd_AsbShng|MiscFeature_Gar2', 'HeatingQC_Tencode|Condition2_Norm', 'LotConfig_Corner|CentralAir_Tencode', 'Utilities_Tencode|FireplaceQu_TA', 'Condition1_Artery|Electrical_Tencode', 'YrSold|HalfBath', 'HeatingQC_TA|LandContour_HLS', 'SaleCondition_Family|MiscFeature_Tencode', 'ExterQual_TA|BldgType_1Fam', 'EnclosedPorch|Neighborhood_Gilbert', 'PavedDrive_Tencode|HouseStyle_2.5Unf', 'LandSlope_Mod|LandContour_Lvl', 'GarageCond_TA|Neighborhood_Somerst', 'Neighborhood_Sawyer|LotShape_IR3', 'ExterCond_TA|Fireplaces', 'KitchenQual_Ex|FireplaceQu_Fa', 'Neighborhood_Veenker|Exterior1st_CemntBd', 'SaleType_New|KitchenQual_TA', 'FireplaceQu_Gd|Condition1_Tencode', 'HouseStyle_1.5Unf|GarageYrBlt', 'Neighborhood_SawyerW|MSZoning_RH', 'GarageQual_Fa|BsmtFinType2_LwQ', 'LowQualFinSF|RoofMatl_WdShngl', 'GarageFinish_Unf|Foundation_CBlock', 'Heating_Tencode|BsmtCond_TA', 'Neighborhood_BrDale|HalfBath', 'BsmtQual_Tencode|HouseStyle_2.5Unf', 'Foundation_Stone|BsmtCond_Tencode', 'BsmtExposure_Tencode|KitchenQual_Gd', 'SaleCondition_Partial|CentralAir_N', 'YrSold|Exterior1st_Tencode', 'GarageQual_Tencode|MasVnrType_Tencode', 'Exterior2nd_Stone|LotConfig_FR2', 'Exterior2nd_Tencode|Fence_Tencode', 'GarageCars|Exterior2nd_VinylSd', 'BsmtFinType2_ALQ|RoofStyle_Tencode', 'Exterior2nd_Stone|GarageCond_Gd', 'SaleCondition_Partial|MSZoning_Tencode', 'BldgType_Twnhs|MiscFeature_Shed', 'BedroomAbvGr|Condition2_Norm', 'BsmtExposure_Tencode|Exterior1st_Stucco', 'FireplaceQu_TA|MasVnrType_BrkFace', 'ScreenPorch|Exterior1st_Tencode', 'SaleType_CWD|Exterior2nd_Wd Shng', 'RoofMatl_Tencode|BsmtFinType2_ALQ', 'EnclosedPorch|MasVnrType_Tencode', 'Neighborhood_NPkVill|SaleCondition_Partial', 'GarageCond_Tencode|BldgType_Tencode', 'LotFrontage|CentralAir_Tencode', 'SaleType_ConLD|Neighborhood_Timber', 'GarageCond_TA|BsmtFinType2_BLQ', 'MSZoning_RM|Exterior2nd_Wd Shng', 'Foundation_CBlock|BsmtFinType2_Unf', 'BsmtQual_Fa|Neighborhood_Gilbert', 'HouseStyle_1Story|BsmtFinType2_GLQ', 'Neighborhood_Gilbert|FireplaceQu_TA', 'BsmtExposure_Tencode|Functional_Tencode', 'GarageFinish_Unf|Neighborhood_NWAmes', 'GarageCond_TA|PoolQC_Tencode', 'SaleType_Tencode|Fence_GdWo', 'ExterCond_Gd|OpenPorchSF', 'HouseStyle_1Story|SaleType_New', 'BsmtQual_Gd|ExterQual_Fa', 'LotShape_Reg|SaleCondition_Normal', 'GarageType_Detchd|HouseStyle_1.5Unf', 'Utilities_Tencode|MasVnrArea', 'BsmtFinType2_GLQ|PoolQC_Tencode', 'LotFrontage|Fireplaces', 'HeatingQC_TA|BsmtQual_TA', 'Exterior2nd_VinylSd|3SsnPorch', 'Neighborhood_CollgCr|Utilities_AllPub', 'Exterior1st_AsbShng|Condition1_Norm', 'GarageQual_Gd|Fence_GdPrv', 'GarageType_Attchd|Exterior1st_BrkComm', 'Exterior2nd_BrkFace|BsmtCond_Po', 'BsmtHalfBath|BsmtCond_TA', 'FireplaceQu_Gd|BsmtExposure_Mn', 'Condition2_Artery|MSZoning_Tencode', 'LandContour_Bnk|LotConfig_Tencode', 'GarageCond_Gd|RoofStyle_Gambrel', 'RoofStyle_Gambrel|ScreenPorch', 'TotalBsmtSF|Neighborhood_ClearCr', 'BsmtFinType1_LwQ|Exterior2nd_Brk Cmn', 'LotShape_Reg|BsmtFinSF2', 'Condition1_PosA|Exterior1st_CemntBd', 'Utilities_Tencode|Exterior1st_BrkComm', 'Functional_Typ|FireplaceQu_TA', 'Exterior2nd_MetalSd|MasVnrType_None', 'Fireplaces|BedroomAbvGr', 'RoofMatl_Tencode|GarageType_BuiltIn', 'HouseStyle_SFoyer|RoofMatl_CompShg', 'Foundation_CBlock|BsmtCond_Tencode', 'PavedDrive_P|BsmtFinSF1', 'LotFrontage|Foundation_Stone', 'GarageCond_TA|Alley_Tencode', 'BsmtFinType1_Rec|TotRmsAbvGrd', 'GarageFinish_Unf|ExterCond_Tencode', '1stFlrSF|ExterQual_Tencode', 'Electrical_Tencode|BsmtFinType2_Unf', 'KitchenAbvGr|Exterior2nd_HdBoard', 'GarageQual_TA|RoofStyle_Gambrel', 'Alley_Tencode|Heating_Grav', 'Exterior2nd_Stucco|LandSlope_Tencode', 'YearBuilt', 'MiscFeature_Shed|SaleCondition_Partial', 'Condition1_Feedr|SaleType_COD', 'Foundation_Slab|Exterior1st_Plywood', 'Functional_Typ|CentralAir_Tencode', '3SsnPorch|GarageQual_Po', 'BsmtCond_Tencode|Neighborhood_Gilbert', 'LotShape_Tencode|Neighborhood_SawyerW', 'Foundation_CBlock|Fence_MnPrv', 'BsmtQual_Tencode|GarageQual_Po', 'Alley_Grvl|Exterior1st_MetalSd', 'GarageFinish_RFn|Neighborhood_BrkSide', 'GarageType_BuiltIn|Street_Grvl', 'BldgType_TwnhsE|PoolArea', 'Neighborhood_SawyerW|Condition1_RRAn', 'RoofMatl_Tencode|GarageArea', 'Condition1_Artery|Exterior2nd_Tencode', 'ExterCond_Gd|BsmtExposure_Mn', 'MoSold|Exterior2nd_Brk Cmn', 'Condition1_PosN|GarageType_Attchd', 'SaleType_WD|BsmtFinType1_LwQ', 'HeatingQC_Tencode|GarageType_Basment', 'YearBuilt|Exterior1st_VinylSd', 'SaleCondition_Tencode|HouseStyle_2Story', 'Exterior2nd_BrkFace|MiscFeature_Gar2', 'GarageType_Tencode|Exterior1st_MetalSd', 'GarageType_Tencode|Condition1_RRAn', 'BsmtFinType1_BLQ|CentralAir_Tencode', 'BsmtExposure_Gd|WoodDeckSF', 'GarageFinish_Fin|RoofMatl_Tar&Grv', 'Condition1_Tencode|Foundation_Slab', 'Heating_GasW|Fence_GdPrv', 'OverallQual|BsmtFinType2_GLQ', 'SaleType_ConLD|PavedDrive_Y', 'Condition1_Norm|Neighborhood_Crawfor', '2ndFlrSF|MSSubClass', 'Electrical_Tencode|MoSold', 'SaleCondition_Tencode|Exterior2nd_AsphShn', 'Exterior2nd_CmentBd|HouseStyle_2.5Unf', 'Electrical_FuseP|GarageYrBlt', 'Fence_GdPrv|RoofStyle_Gambrel', 'Alley_Pave|Street_Pave', 'BldgType_2fmCon|PavedDrive_Tencode', 'ExterQual_Tencode|Exterior2nd_Wd Shng', 'RoofStyle_Hip|Neighborhood_SawyerW', 'Neighborhood_NridgHt|LotShape_IR1', 'Neighborhood_CollgCr|MasVnrType_None', 'MiscVal|RoofStyle_Gable', 'Exterior2nd_VinylSd|MiscFeature_Gar2', 'LotArea|Condition2_Tencode', 'BldgType_Duplex|BsmtFinType2_BLQ', 'Neighborhood_Veenker|Neighborhood_StoneBr', 'HeatingQC_Tencode|MSZoning_Tencode', 'GarageFinish_Unf|SaleType_WD', 'EnclosedPorch|LotConfig_Inside', 'SaleCondition_Tencode|LotShape_IR1', 'FireplaceQu_Ex|Condition2_Artery', 'BsmtFinType2_BLQ|LandSlope_Gtl', 'HeatingQC_Gd|Fence_GdPrv', 'BsmtFinType2_LwQ|MiscFeature_Tencode', 'BsmtExposure_Tencode|Fence_GdWo', 'LotFrontage|MasVnrType_BrkFace', 'Neighborhood_Somerst|Exterior1st_Tencode', 'LandContour_Lvl|SaleCondition_Normal', 'LotConfig_FR2|1stFlrSF', 'LandContour_HLS|MiscFeature_Gar2', 'KitchenAbvGr|LandContour_Tencode', 'GarageCond_Fa|BsmtFinType1_LwQ', 'Condition1_PosN|Alley_Grvl', 'Functional_Typ|Foundation_BrkTil', 'KitchenAbvGr|LotConfig_Corner', 'Functional_Typ|MSZoning_Tencode', 'OverallQual|Heating_Tencode', 'EnclosedPorch|SaleCondition_Partial', 'BsmtFinSF2|GarageType_BuiltIn', 'LotFrontage|Functional_Min2', 'Heating_Grav|CentralAir_N', 'HouseStyle_SFoyer|MSZoning_Tencode', 'Exterior2nd_VinylSd|Exterior1st_Plywood', 'Exterior2nd_Stone|BsmtFinType1_Tencode', 'GarageType_BuiltIn|GarageCond_Fa', 'Exterior1st_HdBoard|FullBath', 'LandContour_HLS|HouseStyle_SLvl', 'GarageType_CarPort|BldgType_TwnhsE', 'ExterQual_Ex|GarageType_CarPort', 'Neighborhood_BrDale|MasVnrType_Tencode', 'BsmtExposure_Av|BsmtExposure_Gd', 'Functional_Tencode|HouseStyle_SLvl', 'GrLivArea|HeatingQC_Fa', 'Exterior2nd_AsbShng|Alley_Tencode', 'Exterior2nd_AsbShng|Condition1_PosN', 'Exterior1st_BrkFace|Fence_MnPrv', 'CentralAir_Y|Exterior1st_Tencode', 'BsmtFinType1_Rec|Condition1_PosN', 'HeatingQC_Tencode|Alley_Grvl', 'Exterior2nd_HdBoard|MasVnrType_Tencode', 'Neighborhood_Somerst|Exterior2nd_Tencode', 'LotConfig_Tencode|MasVnrType_Tencode', 'Neighborhood_Gilbert|HouseStyle_2Story', 'Exterior2nd_AsbShng|SaleType_ConLw', 'Exterior1st_Tencode|MSZoning_RH', 'SaleType_Oth|MasVnrType_Stone', 'MSZoning_RL|BsmtExposure_Mn', 'Neighborhood_Blmngtn|GarageType_Basment', 'Alley_Tencode|HouseStyle_SLvl', 'HouseStyle_Tencode|MiscFeature_Gar2', 'YrSold|MasVnrType_Stone', 'Street_Tencode|BldgType_Tencode', 'Neighborhood_OldTown|BsmtExposure_No', 'SaleType_ConLI|1stFlrSF', 'Functional_Min1|Condition1_RRAn', 'ExterQual_Ex|Exterior2nd_AsphShn', 'RoofStyle_Hip|Exterior1st_BrkComm', 'LotConfig_Tencode|BldgType_1Fam', 'GarageType_Basment|RoofMatl_WdShngl', 'Electrical_Tencode|Neighborhood_Crawfor', 'LotFrontage|Electrical_FuseF', 'Heating_Tencode|Exterior1st_BrkComm', 'GarageFinish_Tencode|LowQualFinSF', 'RoofStyle_Hip|GarageCond_TA', 'OverallQual|Exterior1st_CemntBd', 'RoofMatl_Tar&Grv|Neighborhood_NAmes', 'RoofStyle_Hip|MasVnrType_BrkCmn', 'Neighborhood_Mitchel|BsmtQual_Fa', 'Alley_Tencode|Condition1_Feedr', 'Exterior1st_VinylSd|BldgType_1Fam', 'ExterCond_Tencode|ExterQual_Fa', 'HeatingQC_TA|Neighborhood_OldTown', 'PavedDrive_Y|Electrical_FuseF', 'MiscFeature_Shed|Alley_Grvl', 'GarageFinish_Fin|BsmtQual_Ex', 'GarageQual_Gd|BsmtHalfBath', 'Functional_Typ|Exterior2nd_VinylSd', 'FireplaceQu_Gd|HeatingQC_Fa', 'EnclosedPorch|Functional_Min2', 'Fence_Tencode|GarageType_2Types', 'SaleType_ConLD|Exterior1st_WdShing', 'FireplaceQu_Tencode|BsmtExposure_Gd', 'GarageQual_Fa|SaleCondition_Abnorml', 'Exterior2nd_Stucco|RoofMatl_CompShg', 'Exterior2nd_AsbShng|MiscFeature_Tencode', 'KitchenQual_Gd|MasVnrType_Tencode', 'BsmtFinType2_LwQ|Neighborhood_Crawfor', 'BsmtQual_TA|Fence_MnWw', 'Neighborhood_Edwards|MSZoning_Tencode', 'PoolQC_Tencode|SaleType_COD', 'LotConfig_CulDSac|MoSold', 'Functional_Mod|Fence_GdWo', 'RoofStyle_Flat|GarageCond_Gd', 'GarageCond_Gd|ExterQual_Fa', 'Foundation_PConc|BsmtCond_Tencode', 'GarageCond_Ex|BldgType_Tencode', 'LotShape_IR2|LotConfig_FR2', 'KitchenQual_Gd|PavedDrive_Y', 'ExterQual_TA|Functional_Min1', 'GarageCond_Fa|ExterQual_Gd', 'Exterior1st_MetalSd|MasVnrType_Stone', 'GarageType_BuiltIn|GarageType_Basment', 'Fence_MnWw|Utilities_AllPub', 'Exterior2nd_Tencode|KitchenQual_Fa', 'BldgType_Twnhs|HeatingQC_Ex', 'GarageCond_Gd|Exterior1st_Wd Sdng', 'MSZoning_RM|Exterior1st_WdShing', 'LandSlope_Tencode|MSZoning_RH', 'RoofStyle_Gable|BsmtCond_TA', 'SaleType_ConLD|LandContour_Tencode', 'LotShape_Reg|Heating_GasA', 'Foundation_BrkTil|ExterCond_Fa', 'GarageArea|Exterior1st_Wd Sdng', 'Neighborhood_Somerst|Neighborhood_Mitchel', 'LotConfig_FR2|Condition2_Tencode', 'Neighborhood_Tencode|Exterior2nd_AsphShn', 'MiscVal|GarageType_2Types', 'BsmtHalfBath|Functional_Mod', 'GarageCond_TA|SaleCondition_Normal', 'SaleType_ConLw|GarageFinish_RFn', 'Exterior2nd_Stone|GarageType_2Types', 'YrSold|WoodDeckSF', 'Exterior2nd_VinylSd|Condition1_Norm', 'Exterior1st_CemntBd|Exterior2nd_AsphShn', 'BldgType_Twnhs|Alley_Grvl', 'SaleType_ConLD|BsmtFinType1_LwQ', 'Neighborhood_OldTown|KitchenQual_Tencode', 'LotShape_IR2|Exterior1st_HdBoard', 'RoofStyle_Tencode|BldgType_1Fam', 'Condition1_RRAe|Exterior2nd_AsphShn', 'Utilities_Tencode|HouseStyle_Tencode', 'Neighborhood_OldTown|PavedDrive_Y', 'Neighborhood_Edwards|BsmtQual_Gd', 'MiscFeature_Othr|BldgType_TwnhsE', 'Foundation_PConc|Exterior1st_Plywood', 'RoofStyle_Tencode|Exterior2nd_HdBoard', 'HalfBath|ExterQual_Fa', 'LotConfig_CulDSac|Condition2_Tencode', 'BsmtFinType1_BLQ|MiscVal', 'TotalBsmtSF|Alley_Grvl', 'Neighborhood_NAmes|Exterior2nd_Wd Shng', 'ExterQual_TA|Neighborhood_Gilbert', 'Exterior2nd_AsbShng|ScreenPorch', 'FireplaceQu_Po|GarageQual_TA', 'SaleCondition_Alloca|BsmtCond_TA', 'HouseStyle_1.5Unf|Exterior1st_Plywood', 'HalfBath|1stFlrSF', 'Exterior2nd_AsbShng|SaleCondition_Alloca', 'BedroomAbvGr|BldgType_1Fam', 'LotArea|RoofStyle_Gable', 'Neighborhood_StoneBr|GarageType_2Types', 'Exterior1st_VinylSd|GarageType_2Types', 'Exterior2nd_Stone|SaleType_ConLI', 'Exterior1st_CemntBd|ExterQual_Fa', 'GarageQual_TA|Exterior1st_Plywood', 'Heating_GasW|ExterQual_Gd', 'Utilities_Tencode|CentralAir_Y', 'LotShape_Tencode|Condition2_Tencode', 'RoofMatl_Tar&Grv|Exterior1st_WdShing', 'Electrical_Tencode|Alley_Grvl', 'GarageType_Attchd|Neighborhood_SawyerW', 'SaleType_ConLw|LotConfig_FR2', 'SaleCondition_Family|MiscFeature_Gar2', 'BsmtFinType1_LwQ|Utilities_AllPub', 'GarageQual_TA|MSZoning_RM', 'BsmtFinType1_ALQ|MiscFeature_Tencode', 'LandSlope_Tencode|Alley_Grvl', 'SaleType_New|LotShape_IR3', 'RoofStyle_Flat|LandSlope_Sev', 'LandSlope_Sev|Exterior2nd_Brk Cmn', 'Fence_Tencode|BldgType_1Fam', 'Foundation_BrkTil|MasVnrType_BrkCmn', 'Neighborhood_Tencode|SaleType_Tencode', 'GrLivArea|HouseStyle_2Story', 'SaleCondition_Tencode|Fence_MnWw', 'GarageCond_Fa|LotShape_IR3', 'Exterior1st_BrkFace|KitchenQual_Ex', 'SaleCondition_Alloca|Condition1_RRAn', 'BsmtQual_TA|BsmtCond_Fa', 'LandContour_Lvl|Neighborhood_StoneBr', 'SaleCondition_Normal|OpenPorchSF', 'RoofMatl_Tar&Grv|GarageType_2Types', 'Condition1_Artery|KitchenQual_Ex', 'KitchenAbvGr|MasVnrType_BrkCmn', 'Foundation_BrkTil|SaleType_ConLI', 'GarageCond_Gd|Foundation_CBlock', 'RoofStyle_Gable|Neighborhood_NAmes', 'Condition1_RRAe|SaleType_New', 'Functional_Min1|MasVnrType_Stone', 'Neighborhood_CollgCr|GarageCond_Ex', 'Electrical_Tencode|Utilities_AllPub', 'GarageCond_Fa|Neighborhood_StoneBr', 'Condition1_RRAe|BsmtCond_Gd', 'LandContour_Bnk|MSSubClass', 'GarageQual_Gd|ExterQual_Tencode', 'Condition1_PosN|MasVnrType_Tencode', 'ExterQual_TA|Neighborhood_Mitchel', 'Alley_Grvl|Fence_MnWw', 'Functional_Maj2|Fence_MnWw', 'MasVnrType_None|BsmtFinType1_Unf', '1stFlrSF|RoofMatl_WdShngl', 'Foundation_Stone|LandContour_Bnk', 'KitchenQual_Fa|BsmtFinType1_GLQ', 'CentralAir_N|Neighborhood_SawyerW', 'MSZoning_C (all)|GarageQual_Tencode', 'Foundation_BrkTil|OpenPorchSF', 'BsmtFinType2_Tencode|Street_Pave', 'Neighborhood_NridgHt|Heating_Grav', 'Neighborhood_Tencode|Condition1_RRAe', 'Condition1_Artery|BsmtExposure_Gd', 'GarageCars|Exterior1st_BrkComm', 'BsmtHalfBath|Condition1_PosA', 'HeatingQC_Fa|BsmtHalfBath', 'Utilities_Tencode|Heating_GasW', 'Condition1_Artery|Exterior1st_Stucco', 'GarageType_Detchd|LotShape_IR3', 'RoofMatl_CompShg|HouseStyle_SLvl', 'GarageCond_Tencode|MiscFeature_Tencode', 'Exterior1st_AsbShng|Exterior2nd_Brk Cmn', 'BsmtFinType2_Tencode|Electrical_SBrkr', 'Neighborhood_NridgHt|Exterior1st_WdShing', 'FireplaceQu_Po|MasVnrArea', 'Neighborhood_NridgHt|LandContour_Bnk', 'GarageType_Tencode|ExterCond_Gd', 'KitchenAbvGr|ExterCond_TA', 'Exterior2nd_AsbShng|Neighborhood_NPkVill', 'PavedDrive_P|BsmtQual_Gd', 'PavedDrive_P|MSZoning_RL', 'Electrical_FuseA|BsmtExposure_No', 'Condition1_RRAe|GarageQual_Po', 'Neighborhood_SWISU|ExterQual_Tencode', 'HouseStyle_Tencode|Condition1_Norm', 'Neighborhood_BrDale|Neighborhood_Sawyer', 'KitchenAbvGr|FireplaceQu_Ex', 'HouseStyle_SFoyer|LotConfig_Corner', 'BsmtFinType1_Rec|Fence_MnWw', 'BsmtFinType2_Tencode|Heating_GasA', 'GarageCond_Po|PavedDrive_Tencode', 'SaleCondition_Alloca', 'Electrical_Tencode|Neighborhood_Tencode', 'FullBath|GarageType_BuiltIn', 'Condition1_Artery|Electrical_SBrkr', 'Neighborhood_Crawfor|Condition2_Norm', 'RoofStyle_Hip|Electrical_FuseF', 'BsmtCond_Tencode|Exterior2nd_Wd Shng', 'YearRemodAdd|LandContour_HLS', 'FireplaceQu_Tencode|GarageCond_Tencode', 'SaleCondition_Family|Neighborhood_Sawyer', 'Functional_Maj1|MSZoning_Tencode', 'Exterior1st_Stucco|BsmtCond_Tencode', 'HouseStyle_SFoyer|Functional_Typ', 'CentralAir_N|MSZoning_FV', 'BsmtQual_Tencode|Neighborhood_NWAmes', 'Neighborhood_CollgCr|Fence_MnPrv', 'LandSlope_Tencode|GarageQual_Fa', 'Functional_Tencode|ExterQual_Fa', 'HeatingQC_Gd|Exterior1st_VinylSd', 'GarageFinish_Fin|GarageCond_Ex', 'LotConfig_CulDSac|SaleType_New', 'GarageType_Tencode|GarageFinish_RFn', 'EnclosedPorch|MSZoning_RH', 'SaleType_COD|BsmtExposure_Mn', 'GarageCond_Po|MSZoning_FV', 'GarageType_Attchd|HouseStyle_SLvl', 'Exterior1st_WdShing|Fence_MnWw', 'BsmtFinSF1|Exterior2nd_AsphShn', 'HeatingQC_Fa|CentralAir_Y', 'Foundation_Tencode|Neighborhood_BrkSide', 'Condition1_PosN|MSSubClass', 'SaleType_Tencode|LandSlope_Tencode', 'KitchenQual_Gd|Exterior1st_Tencode', 'RoofStyle_Gable|BldgType_1Fam', 'GarageQual_Fa|Neighborhood_Gilbert', 'Functional_Mod|KitchenQual_Fa', 'LotConfig_CulDSac|Condition1_PosA', 'MiscFeature_Tencode|Fence_GdWo', 'Neighborhood_Gilbert|BsmtFinType1_GLQ', 'LotShape_IR2|MiscFeature_Shed', 'LotConfig_CulDSac|ScreenPorch', 'EnclosedPorch|GarageQual_Gd', 'Alley_Tencode|Neighborhood_NAmes', 'Neighborhood_NPkVill|Exterior2nd_MetalSd', 'LotConfig_CulDSac|Exterior2nd_Wd Shng', 'Exterior2nd_Tencode|Neighborhood_Edwards', 'MasVnrType_BrkCmn|GarageQual_Tencode', 'RoofMatl_CompShg|SaleCondition_Alloca', 'RoofMatl_Tencode|CentralAir_N', 'MasVnrArea|Fence_MnPrv', 'BsmtCond_Gd|HouseStyle_2Story', 'Exterior2nd_Stucco|RoofMatl_Tar&Grv', 'Heating_Tencode|Exterior1st_WdShing', 'HeatingQC_Ex|KitchenQual_TA', 'FireplaceQu_Ex|SaleCondition_Abnorml', 'Heating_Tencode|BldgType_1Fam', 'Foundation_CBlock|Exterior2nd_AsphShn', 'FireplaceQu_Fa|ExterCond_Tencode', 'BldgType_TwnhsE|MasVnrArea', 'Heating_GasW|BsmtFinSF1', 'Heating_GasW|MSSubClass', 'Neighborhood_Sawyer|Exterior1st_Plywood', 'Exterior1st_HdBoard|GarageCars', 'RoofStyle_Gambrel|Neighborhood_MeadowV', 'Neighborhood_SWISU|BldgType_TwnhsE', 'Neighborhood_SWISU|MSZoning_RH', 'CentralAir_Y|GarageCond_Ex', 'YrSold|HouseStyle_2Story', 'BldgType_2fmCon|FireplaceQu_TA', 'LandSlope_Mod|GarageType_2Types', 'GarageQual_Fa|Neighborhood_NWAmes', 'Neighborhood_NPkVill|BsmtQual_Tencode', 'Neighborhood_SWISU|WoodDeckSF', '2ndFlrSF|Exterior2nd_Wd Sdng', 'HeatingQC_Gd|SaleType_Tencode', 'LandSlope_Gtl|Foundation_Slab', 'KitchenQual_Ex|SaleCondition_Family', 'Exterior2nd_Stucco|PoolArea', 'Functional_Min1|GarageType_Basment', 'SaleCondition_Tencode|BsmtQual_Gd', 'BldgType_2fmCon|BsmtFinType1_LwQ', 'Exterior2nd_Stucco|Exterior2nd_Stone', 'SaleType_ConLD|1stFlrSF', 'Exterior1st_Tencode|Exterior1st_Plywood', 'KitchenQual_Gd|CentralAir_N', 'RoofMatl_Tar&Grv|BsmtFinType2_Rec', 'BsmtFinType1_Tencode|Heating_Grav', 'PavedDrive_Tencode|KitchenQual_TA', 'Exterior1st_HdBoard|BedroomAbvGr', 'Heating_Grav|BsmtCond_Fa', 'HouseStyle_SFoyer|Exterior2nd_Brk Cmn', 'Alley_Grvl|Functional_Min2', 'HouseStyle_2.5Unf|ExterQual_Tencode', 'Electrical_Tencode|Neighborhood_Timber', 'Neighborhood_Blmngtn|BsmtFinType2_Unf', 'SaleType_WD|PavedDrive_Tencode', 'BedroomAbvGr|BsmtQual_Fa', 'Exterior2nd_BrkFace|SaleType_ConLD', 'Neighborhood_BrDale|BsmtFinType1_ALQ', 'Exterior2nd_Brk Cmn', 'HalfBath|Condition1_RRAe', 'BsmtFinSF2|Condition1_PosN', 'SaleCondition_Alloca|Condition2_Norm', 'Heating_GasA|Neighborhood_NAmes', 'Street_Tencode|Utilities_AllPub', 'HeatingQC_Tencode|BsmtFinType2_Unf', 'PavedDrive_N|FireplaceQu_Fa', 'PavedDrive_Y|LandContour_Bnk', 'GarageCond_Fa|MasVnrType_Tencode', 'GarageQual_Fa|Functional_Maj1', 'LandContour_Low|HouseStyle_Tencode', 'Neighborhood_BrDale|Neighborhood_OldTown', 'Neighborhood_CollgCr|BsmtExposure_Mn', 'HouseStyle_1.5Unf|MasVnrType_BrkCmn', 'Neighborhood_NridgHt|GarageCond_Fa', 'Neighborhood_CollgCr|Fence_MnWw', 'ExterCond_TA|MasVnrType_Stone', 'Fireplaces|MasVnrType_None', 'HouseStyle_SLvl|BsmtExposure_Mn', 'HeatingQC_Gd|BsmtCond_Fa', 'Heating_GasA|FireplaceQu_Ex', 'Condition2_Tencode|ScreenPorch', 'FireplaceQu_Tencode|LotShape_Reg', 'Street_Tencode|RoofStyle_Hip', 'BsmtFinType2_GLQ|RoofStyle_Gambrel', 'LotShape_Reg|Neighborhood_Timber', 'Neighborhood_IDOTRR|Exterior2nd_Wd Shng', 'GarageCond_Po|BsmtCond_Fa', 'Exterior2nd_VinylSd|BsmtUnfSF', 'LotConfig_FR2|Electrical_SBrkr', 'Exterior1st_BrkFace|Condition1_PosN', 'HeatingQC_TA|Alley_Tencode', 'ExterQual_TA|OverallCond', 'Fence_GdPrv|MSZoning_C (all)', 'YearRemodAdd|SaleType_ConLI', 'Heating_Grav|LandContour_Bnk', 'GarageCond_Tencode|MSZoning_RL', 'MiscVal|BsmtFinType2_BLQ', 'FullBath|1stFlrSF', 'Exterior2nd_Wd Sdng|BsmtExposure_No', 'MiscVal|Neighborhood_SWISU', 'HouseStyle_SFoyer|Neighborhood_OldTown', 'Heating_Grav|Neighborhood_SWISU', 'Neighborhood_Somerst|LandSlope_Tencode', 'GarageType_BuiltIn|1stFlrSF', 'ExterCond_Gd|BsmtFinType1_Rec', 'BsmtFinType2_BLQ|SaleType_CWD', 'PavedDrive_P|Exterior2nd_HdBoard', 'Functional_Typ|Exterior1st_BrkComm', 'RoofStyle_Flat|PoolQC_Tencode', 'Functional_Maj1|OpenPorchSF', 'MasVnrType_BrkCmn|ExterCond_Fa', 'MiscVal|HalfBath', 'Heating_Tencode|FireplaceQu_Ex', 'LotConfig_CulDSac|Foundation_Slab', 'BsmtQual_Ex|Neighborhood_IDOTRR', 'Exterior2nd_Wd Sdng|SaleCondition_Partial', 'ExterCond_TA|BsmtCond_Fa', 'Neighborhood_NWAmes|BsmtFinType1_GLQ', 'YearRemodAdd|Exterior2nd_BrkFace', 'LandContour_HLS|BsmtQual_Fa', 'BsmtQual_Ex|SaleType_CWD', 'ExterQual_TA|Exterior1st_HdBoard', 'BsmtFinType1_BLQ|FireplaceQu_TA', 'Condition1_Norm|BsmtFinType1_Unf', 'Neighborhood_OldTown|BsmtExposure_Gd', 'HouseStyle_1.5Unf|Fence_MnPrv', 'Street_Tencode|BsmtFinType2_ALQ', 'Fence_Tencode|Neighborhood_Gilbert', 'Foundation_Stone|Electrical_FuseA', 'BsmtExposure_Tencode', 'BsmtFinType2_BLQ|PoolArea', 'Fireplaces|Exterior2nd_VinylSd', 'YearBuilt|MSSubClass', 'BedroomAbvGr|RoofMatl_Tar&Grv', 'YearBuilt|BsmtFinType2_Rec', 'LotShape_Tencode|Foundation_Tencode', 'Fireplaces|MSZoning_Tencode', 'GarageCond_Po|Fence_GdWo', 'BldgType_1Fam|Functional_Min2', 'Exterior2nd_Wd Sdng|ExterQual_Gd', 'Exterior2nd_VinylSd|GarageType_Attchd', 'Exterior2nd_VinylSd|HouseStyle_1.5Fin', 'BldgType_Duplex|Fence_GdWo', 'Neighborhood_CollgCr|GarageCond_Gd', 'Street_Tencode|GarageArea', 'GarageFinish_Unf|RoofStyle_Hip', 'Exterior2nd_Wd Sdng|BsmtCond_Gd', 'SaleCondition_Family|BsmtQual_TA', 'LotFrontage|KitchenQual_Tencode', 'MiscFeature_Shed|Exterior2nd_Wd Sdng', 'OverallQual|KitchenQual_Ex', 'HeatingQC_Tencode|Neighborhood_SawyerW', 'Exterior2nd_Wd Sdng|Exterior2nd_Brk Cmn', 'YearRemodAdd|KitchenQual_Tencode', 'BsmtQual_Ex|RoofMatl_WdShngl', 'Condition1_Artery|GarageCond_Ex', 'OverallCond|BsmtQual_Gd', 'Fireplaces|SaleType_Oth', 'HeatingQC_Gd|Exterior1st_Wd Sdng', 'ExterCond_Gd|PoolArea', 'LandContour_Bnk|BsmtExposure_Gd', 'LotShape_Tencode|MasVnrArea', 'BldgType_Duplex|RoofStyle_Flat', 'Exterior2nd_Wd Sdng|PoolArea', 'RoofStyle_Hip|GarageQual_Gd', '2ndFlrSF|GarageType_2Types', 'HeatingQC_TA|BsmtFinType2_BLQ', 'Neighborhood_NoRidge|Utilities_AllPub', 'RoofStyle_Hip|FireplaceQu_Fa', 'Neighborhood_Sawyer|ExterCond_Fa', 'Neighborhood_BrDale|Utilities_AllPub', 'SaleCondition_Abnorml|MSZoning_Tencode', 'PavedDrive_N|Exterior1st_BrkComm', 'Neighborhood_NAmes|Exterior2nd_AsphShn', 'Foundation_BrkTil|GarageType_2Types', 'HalfBath|BsmtUnfSF', 'SaleType_WD|RoofStyle_Gable', 'LotArea|LotConfig_Tencode', 'Alley_Pave|LotConfig_Inside', 'Alley_Pave|FireplaceQu_TA', 'HeatingQC_TA|LandSlope_Sev', 'Neighborhood_Crawfor|BsmtExposure_No', 'Alley_Grvl|MasVnrType_BrkFace', 'OverallQual|Functional_Min1', 'KitchenQual_Fa|Condition2_Norm', 'Electrical_FuseA|BsmtExposure_Av', 'BsmtFinType2_Tencode|BsmtCond_Po', 'LandContour_HLS|Fence_GdPrv', 'KitchenQual_Ex|LandContour_Bnk', 'GarageQual_Tencode|KitchenQual_TA', 'BsmtFinType1_Tencode|Condition1_PosA', 'SaleCondition_Family|SaleType_Oth', 'SaleCondition_Abnorml|Condition2_Norm', 'Functional_Maj2|SaleCondition_Partial', 'Exterior1st_HdBoard|GarageType_Basment', 'FireplaceQu_Ex|Exterior1st_BrkComm', 'HeatingQC_Fa|LowQualFinSF', 'Neighborhood_IDOTRR|WoodDeckSF', 'BldgType_Tencode|BsmtCond_TA', 'Heating_GasA|MoSold', 'BldgType_Twnhs|Foundation_CBlock', 'SaleType_COD|Neighborhood_BrkSide', 'KitchenQual_Ex|HouseStyle_2.5Unf', 'Neighborhood_StoneBr|HouseStyle_SLvl', 'Neighborhood_NPkVill|LotFrontage', 'LotConfig_CulDSac|Electrical_FuseF', 'Exterior2nd_AsbShng|MasVnrArea', 'Functional_Min1|Exterior2nd_Wd Sdng', 'BsmtFinType1_BLQ|Condition1_RRAe', 'Exterior2nd_Stucco|BsmtCond_Gd', 'ExterQual_TA|Condition2_Norm', 'Neighborhood_BrDale|GarageCond_Tencode', 'SaleType_ConLD|Neighborhood_NAmes', 'OpenPorchSF|LandSlope_Gtl', 'BsmtFinType1_ALQ|Condition1_RRAe', 'HouseStyle_Tencode|MasVnrType_Stone', 'Heating_GasA|Functional_Tencode', 'BldgType_Twnhs|FireplaceQu_TA', 'SaleType_ConLD|ExterQual_Gd', 'MSZoning_RM|PoolArea', 'SaleType_COD|Exterior2nd_AsphShn', 'BldgType_TwnhsE|Condition1_Tencode', 'GarageType_Detchd|BsmtCond_TA', 'SaleType_New|HouseStyle_1.5Fin', 'Condition1_Artery|Exterior1st_Plywood', 'FireplaceQu_Fa|RoofStyle_Gable', 'BsmtFinType1_BLQ|Neighborhood_Veenker', 'GarageType_Detchd|Neighborhood_Veenker', 'Electrical_FuseA|LotArea', 'HouseStyle_1Story|BsmtFinType1_ALQ', 'GarageCond_Tencode|BsmtQual_Gd', '3SsnPorch|BsmtFinType2_Rec', 'YearRemodAdd|HeatingQC_TA', 'Functional_Typ|BedroomAbvGr', 'TotRmsAbvGrd|Fence_GdWo', 'Street_Tencode|Neighborhood_BrkSide', 'LotConfig_CulDSac|KitchenQual_Fa', 'LandSlope_Mod|GarageCond_Fa', 'Functional_Maj1|GarageFinish_RFn', 'Fence_GdPrv|GarageType_Attchd', 'RoofStyle_Flat|ExterQual_Ex', 'Neighborhood_ClearCr|BsmtFullBath', 'GarageType_Detchd|Exterior1st_BrkFace', 'Exterior1st_BrkFace|Heating_GasW', 'Neighborhood_NridgHt|MSZoning_RM', 'Neighborhood_NAmes|BsmtUnfSF', 'Neighborhood_Veenker|BsmtExposure_Gd', 'YearBuilt|Condition1_Tencode', 'BsmtQual_Fa|SaleType_WD', 'Exterior2nd_BrkFace|KitchenQual_TA', 'HouseStyle_SFoyer|KitchenQual_Tencode', 'GarageCars|LowQualFinSF', 'Neighborhood_NPkVill|LandContour_Tencode', 'HouseStyle_1Story|KitchenQual_TA', 'HeatingQC_Ex|BsmtFinType1_Unf', 'Heating_Tencode|KitchenQual_Tencode', 'Foundation_CBlock|MSZoning_FV', 'Fireplaces|LotArea', 'Electrical_FuseP|Exterior1st_Wd Sdng', 'SaleType_ConLw|Exterior1st_Plywood', 'MiscVal|Exterior1st_WdShing', 'PavedDrive_Tencode|WoodDeckSF', 'Utilities_Tencode|GarageCond_Fa', 'MiscFeature_Othr|SaleType_COD', 'EnclosedPorch|MSSubClass', 'MSSubClass|BsmtExposure_No', 'YearBuilt|ExterCond_Tencode', 'TotRmsAbvGrd|Exterior1st_BrkComm', 'FireplaceQu_Ex|Utilities_AllPub', 'Neighborhood_Somerst|Condition2_Artery', 'FireplaceQu_Tencode|LowQualFinSF', 'MSZoning_RM|Fence_MnPrv', 'GarageType_Attchd|FireplaceQu_Ex', 'Neighborhood_Mitchel|BsmtFinType1_ALQ', 'Exterior2nd_Stucco|BldgType_Twnhs', 'BsmtHalfBath|BsmtFinType1_GLQ', 'HeatingQC_Gd|RoofStyle_Gambrel', 'Street_Tencode|TotalBsmtSF', 'LotConfig_Corner|RoofStyle_Gable', 'Neighborhood_Sawyer|CentralAir_N', 'BsmtQual_Tencode|RoofStyle_Shed', 'BsmtFinType2_Rec|RoofMatl_WdShngl', 'GarageCond_Tencode|Electrical_SBrkr', 'Heating_Tencode|BsmtFinType1_LwQ', 'GarageQual_TA|GarageType_Attchd', 'FireplaceQu_TA|Neighborhood_IDOTRR', 'Neighborhood_Somerst|Functional_Typ', 'MSZoning_RH|Street_Pave', 'Street_Grvl|SaleCondition_Abnorml', 'KitchenQual_Ex|MSZoning_RH', 'GarageYrBlt|BsmtCond_Fa', 'ExterCond_TA|MiscVal', 'Neighborhood_NPkVill|HouseStyle_SFoyer', 'Exterior1st_WdShing|Exterior1st_Tencode', 'Functional_Typ|Exterior1st_Wd Sdng', 'MoSold|LandSlope_Gtl', 'Fence_Tencode|Exterior2nd_VinylSd', 'LandContour_HLS|Exterior2nd_Wd Shng', 'LandSlope_Mod|RoofStyle_Gable', 'MoSold|SaleType_CWD', 'Electrical_FuseP|BsmtFinSF1', 'MSZoning_RM|Exterior1st_MetalSd', 'OverallQual|GarageFinish_Fin', 'Functional_Maj1|Neighborhood_BrkSide', 'RoofMatl_Tencode|RoofStyle_Flat', 'LandContour_Lvl|MoSold', 'Neighborhood_NPkVill|Functional_Min1', 'Condition2_Artery|MiscFeature_Gar2', 'Exterior1st_CemntBd|BsmtCond_Tencode', 'GarageCond_Po|GarageArea', 'BsmtFinType1_Rec|Functional_Mod', 'FireplaceQu_Gd|BsmtUnfSF', 'ExterQual_Tencode|Neighborhood_Timber', 'Electrical_SBrkr|ExterQual_Tencode', 'Neighborhood_Somerst|KitchenQual_Gd', 'BldgType_1Fam|Fence_MnPrv', 'GarageType_BuiltIn|SaleType_CWD', 'Electrical_FuseF|Exterior1st_VinylSd', 'KitchenQual_Fa|MSZoning_Tencode', '1stFlrSF|BldgType_Tencode', 'Utilities_AllPub|ExterQual_Fa', 'Exterior1st_WdShing|Exterior2nd_HdBoard', 'FireplaceQu_Gd|Functional_Min2', 'Exterior1st_HdBoard|BsmtHalfBath', 'MSZoning_Tencode|MasVnrType_Tencode', 'Exterior2nd_VinylSd|Foundation_Tencode', 'ExterQual_Gd|MasVnrType_Tencode', 'LotShape_IR1|Functional_Mod', 'Neighborhood_NoRidge|Alley_Grvl', 'FireplaceQu_Gd|BsmtCond_Tencode', 'Fence_GdPrv|CentralAir_Tencode', 'OverallCond|HouseStyle_SLvl', 'LandContour_Lvl|MiscFeature_Shed', 'GarageType_BuiltIn|MiscFeature_Shed', 'SaleCondition_Family|ExterCond_Fa', 'SaleCondition_Alloca|SaleCondition_Partial', 'SaleType_CWD|MSZoning_RH', 'BsmtFinType2_Rec|Neighborhood_Crawfor', 'Heating_Grav|HouseStyle_SLvl', 'Foundation_BrkTil|ExterQual_Ex', 'LandSlope_Sev|GarageFinish_RFn', 'BsmtFinType2_ALQ|Condition1_PosA', 'Exterior2nd_AsbShng|Electrical_FuseA', 'PoolQC_Tencode|ExterQual_Tencode', 'Functional_Typ|Condition1_RRAn', 'Electrical_SBrkr|Condition1_Norm', 'HouseStyle_2Story|ExterCond_Fa', 'KitchenQual_Tencode|BsmtCond_Po', 'Exterior2nd_Stone|GarageQual_Po', 'SaleType_New|SaleType_COD', 'SaleType_ConLD|BsmtUnfSF', 'Street_Tencode|HeatingQC_Gd', 'Alley_Pave|LotShape_IR1', 'GarageQual_Fa|CentralAir_Y', 'BsmtFinType1_ALQ|BsmtQual_TA', 'MSZoning_Tencode|GarageType_2Types', 'MiscVal|PavedDrive_Y', 'Neighborhood_Blmngtn|MSZoning_RM', 'YrSold|SaleType_ConLD', 'LandContour_Tencode|LotConfig_Tencode', 'Exterior2nd_Brk Cmn|KitchenQual_TA', 'Functional_Tencode|Neighborhood_NAmes', 'BsmtExposure_Tencode|SaleType_COD', 'Neighborhood_Blmngtn|GarageQual_Fa', 'Functional_Maj1|SaleCondition_Partial', 'KitchenAbvGr|BsmtFinType2_Unf', 'GarageType_Tencode|RoofStyle_Shed', 'LandSlope_Sev|CentralAir_N', 'LotShape_Tencode|BsmtFinType1_Unf', 'SaleType_WD|HalfBath', 'BsmtFullBath|MiscFeature_Gar2', 'GarageType_Tencode|Functional_Min2', 'FireplaceQu_Tencode|HouseStyle_2.5Unf', 'Condition1_Artery|ExterQual_Fa', 'LotConfig_FR2|LandSlope_Sev', '2ndFlrSF|Exterior2nd_Brk Cmn', 'Foundation_Stone|LandContour_Tencode', 'BldgType_2fmCon|Fence_GdWo', 'HeatingQC_Fa|PoolQC_Tencode', 'Heating_GasW|BsmtFinType2_LwQ', 'ExterQual_Gd|Exterior2nd_Plywood', 'EnclosedPorch|Exterior1st_MetalSd', 'SaleType_Oth|Fence_MnPrv', 'Fence_GdPrv|GarageQual_Tencode', 'SaleType_Tencode|GarageType_Tencode', 'SaleCondition_Normal|Alley_Grvl', 'FullBath|FireplaceQu_TA', 'PoolQC_Tencode|MSZoning_RH', 'ExterQual_Gd|OverallCond', 'Electrical_SBrkr|BsmtExposure_Mn', 'Fence_Tencode|Exterior1st_BrkComm', 'Foundation_Tencode|LandContour_Bnk', 'ExterQual_TA|GarageType_Attchd', 'TotRmsAbvGrd|BsmtCond_TA', 'ExterCond_Gd|BsmtFinType1_GLQ', 'HeatingQC_Tencode|BsmtFullBath', 'LandSlope_Mod|Electrical_FuseF', 'ExterQual_Tencode|LotConfig_Inside', 'BsmtExposure_Mn|LotConfig_Inside', 'GarageCond_Fa|FireplaceQu_Ex', 'FireplaceQu_Gd|Exterior2nd_Brk Cmn', 'BsmtFinType2_LwQ|LotConfig_Tencode', 'GarageCond_TA|KitchenQual_Fa', 'ExterCond_Tencode|BsmtExposure_Gd', 'Neighborhood_NPkVill|BldgType_TwnhsE', 'MiscFeature_Othr|Electrical_SBrkr', 'MiscFeature_Othr|Exterior1st_Wd Sdng', 'Functional_Typ|BsmtFinSF2', 'GarageCond_TA|KitchenQual_Gd', 'YearRemodAdd|MasVnrType_BrkFace', 'YrSold|Heating_GasW', 'LotShape_IR3|BsmtExposure_Mn', 'Electrical_SBrkr|Fence_MnWw', 'BsmtExposure_Tencode|BldgType_Duplex', 'Exterior2nd_Stone|Neighborhood_Gilbert', 'Neighborhood_Veenker|Exterior1st_Tencode', 'BsmtFinType1_BLQ|SaleType_CWD', 'Foundation_CBlock|BldgType_Tencode', 'RoofMatl_CompShg|Condition1_PosN', 'BsmtFinType2_BLQ|BsmtFinType2_Rec', 'Exterior1st_BrkFace|CentralAir_N', 'Fireplaces|SaleType_Tencode', 'MiscVal|LandSlope_Tencode', 'Exterior2nd_Stone|Neighborhood_BrkSide', 'Electrical_Tencode|GarageCond_Ex', 'Electrical_SBrkr|LotShape_IR3', 'MiscFeature_Shed|MSSubClass', 'Neighborhood_NWAmes|KitchenQual_Fa', 'PavedDrive_P|BsmtCond_Fa', 'Heating_GasW|KitchenQual_Fa', 'Electrical_SBrkr|BsmtCond_Tencode', 'RoofMatl_Tar&Grv|ExterQual_Ex', 'Foundation_Slab|Exterior1st_MetalSd', 'Neighborhood_Blmngtn|HouseStyle_1.5Fin', 'GarageCond_Po|GarageCond_Ex', 'Exterior1st_CemntBd|HouseStyle_2Story', 'Neighborhood_Blmngtn|Neighborhood_SWISU', 'Neighborhood_NAmes|BsmtCond_Fa', 'GarageQual_Gd|GarageQual_Tencode', 'Neighborhood_BrDale|MSZoning_FV', 'HouseStyle_2.5Unf|ExterCond_Fa', 'LandSlope_Gtl|MiscFeature_Gar2', 'GarageCond_Gd|BsmtFinType2_LwQ', 'Utilities_Tencode|Electrical_FuseA', 'GarageFinish_Tencode|Condition1_Norm', 'SaleCondition_Tencode|LandContour_Low', 'LandSlope_Tencode|GarageCond_Ex', 'GarageCond_Po|Neighborhood_Edwards', 'SaleType_ConLD|Exterior1st_Tencode', 'OverallQual|GrLivArea', 'SaleCondition_Family|GarageQual_Fa', 'MiscFeature_Othr|Condition1_RRAn', 'Neighborhood_Tencode|ExterCond_Tencode', 'Neighborhood_IDOTRR|BsmtExposure_No', 'LotShape_IR1|MiscFeature_Shed', 'MSSubClass|BsmtFinType1_LwQ', 'Functional_Typ|LandSlope_Sev', 'Exterior2nd_Brk Cmn|Functional_Min2', 'BsmtFullBath|Neighborhood_NWAmes', 'GarageQual_Po|Neighborhood_StoneBr', 'HalfBath|BsmtFinType2_Rec', 'BsmtFinType2_BLQ|Functional_Min2', 'HeatingQC_Gd|HouseStyle_SLvl', 'OverallQual|LotShape_Tencode', 'Functional_Typ|GarageFinish_Tencode', 'Heating_Grav|3SsnPorch', 'MasVnrType_BrkFace|Exterior1st_Plywood', 'Neighborhood_Gilbert|Neighborhood_BrkSide', 'Foundation_Stone|Exterior1st_BrkComm', 'BsmtFinType2_Tencode|GarageType_BuiltIn', 'Exterior1st_Stucco|GarageYrBlt', 'Foundation_Tencode|OpenPorchSF', 'ExterQual_TA|BsmtExposure_Gd', 'HeatingQC_Fa|YearBuilt', 'BsmtExposure_Av|RoofMatl_WdShngl', 'GarageType_Attchd|Neighborhood_IDOTRR', 'HalfBath|Condition1_PosN', 'GarageFinish_RFn|Exterior1st_MetalSd', 'BsmtExposure_Tencode|RoofStyle_Hip', 'YearRemodAdd|MasVnrType_BrkCmn', 'Exterior1st_Stucco|Exterior1st_VinylSd', 'RoofStyle_Shed|SaleType_CWD', 'FireplaceQu_Fa|MasVnrArea', 'Condition1_Norm|MSZoning_Tencode', 'Exterior1st_BrkComm|KitchenQual_TA', 'LotConfig_FR2|MiscFeature_Tencode', 'GarageCond_Fa|BsmtFinSF1', 'Electrical_FuseA|BsmtQual_Fa', 'LotShape_Tencode|GarageType_Tencode', 'EnclosedPorch|Exterior2nd_Wd Sdng', 'Neighborhood_Edwards|MSZoning_C (all)', 'YrSold|BsmtQual_Fa', 'Exterior2nd_MetalSd|BsmtFinSF1', 'LotArea|MiscFeature_Shed', 'PoolQC_Tencode|MSZoning_Tencode', 'Neighborhood_NridgHt|PavedDrive_Y', 'PoolQC_Tencode|ExterQual_Ex', 'SaleCondition_Normal|BsmtFinType2_LwQ', 'LandSlope_Gtl|MSZoning_RM', 'ExterCond_Gd|Exterior1st_MetalSd', 'LandSlope_Sev|Condition2_Tencode', 'BsmtHalfBath|HouseStyle_1.5Unf', 'Alley_Tencode|BsmtFinType1_ALQ', 'MiscVal|Neighborhood_OldTown', 'HeatingQC_TA|LandSlope_Gtl', 'Neighborhood_Blmngtn|SaleCondition_Family', 'Neighborhood_NWAmes|MSZoning_RL', 'BsmtQual_Gd|Fence_MnPrv', 'HouseStyle_SFoyer|Condition1_RRAn', 'HouseStyle_1.5Unf|BsmtCond_Po', 'Exterior1st_Stucco|Functional_Maj2', 'PavedDrive_Y|GarageQual_TA', 'HouseStyle_1Story|RoofStyle_Flat', 'Neighborhood_Edwards|Neighborhood_IDOTRR', 'GarageType_Tencode|SaleCondition_Family', 'Electrical_FuseP|OverallCond', 'FireplaceQu_Po|MasVnrType_Tencode', 'MasVnrType_BrkCmn|CentralAir_N', 'BsmtFinType2_ALQ|Foundation_Slab', 'Foundation_Stone|Exterior1st_WdShing', 'Alley_Pave|Exterior1st_Stucco', 'Exterior1st_AsbShng|2ndFlrSF', 'LandContour_HLS|MasVnrArea', 'LotConfig_Corner|YearBuilt', 'LotShape_Tencode|Neighborhood_IDOTRR', 'HeatingQC_Fa|Electrical_FuseF', 'SaleType_WD|Neighborhood_Crawfor', 'GarageFinish_Fin|GarageArea', 'LotConfig_CulDSac|KitchenQual_Tencode', 'Alley_Pave|BsmtCond_Po', 'Functional_Tencode|SaleType_CWD', 'LotShape_IR2|Exterior2nd_HdBoard', 'LotShape_Reg|Neighborhood_Gilbert', 'Heating_Tencode|BsmtFinType1_Rec', 'Condition1_RRAe|Exterior2nd_Wd Shng', 'Neighborhood_Veenker|BsmtFinType2_Unf', 'BldgType_TwnhsE|SaleCondition_Partial', 'FireplaceQu_Po|GarageType_2Types', 'LandSlope_Sev|Neighborhood_SawyerW', 'Exterior2nd_Stone|KitchenQual_Gd', 'HeatingQC_TA|Neighborhood_SWISU', 'GarageCond_Fa|SaleCondition_Normal', 'LandSlope_Sev|BsmtQual_Fa', 'Functional_Typ|Neighborhood_IDOTRR', 'RoofStyle_Gable|MasVnrType_BrkFace', 'Neighborhood_CollgCr|ScreenPorch', 'PavedDrive_N|Neighborhood_NAmes', 'BsmtQual_TA|FireplaceQu_Ex', 'Exterior1st_AsbShng|GarageType_Basment', 'ExterCond_Tencode|Foundation_Slab', 'GarageType_Basment|Street_Pave', 'LotShape_IR1|MasVnrType_Stone', 'ExterQual_TA|YearRemodAdd', 'Electrical_FuseA|BsmtFinType1_Rec', 'BsmtQual_Gd|Exterior2nd_AsphShn', 'LandSlope_Gtl|BsmtCond_Fa', 'Foundation_Stone|Exterior2nd_AsphShn', 'ExterQual_TA|Exterior1st_WdShing', 'PoolArea|BldgType_Tencode', 'BsmtExposure_Av|Exterior1st_Plywood', 'GarageFinish_Unf|MSSubClass', 'LotShape_IR2|Neighborhood_StoneBr', 'PavedDrive_Y|PavedDrive_P', 'SaleType_WD|GarageCond_Ex', 'GarageType_Tencode|BsmtExposure_Mn', 'Condition2_Norm|SaleType_CWD', 'Neighborhood_Sawyer|Foundation_Slab', 'Heating_GasA|GarageYrBlt', 'HouseStyle_Tencode|HeatingQC_Tencode', 'GarageFinish_Unf|Exterior1st_CemntBd', 'GarageCars|BsmtFullBath', 'Exterior1st_AsbShng|Exterior1st_MetalSd', 'YearBuilt|LotConfig_Tencode', 'BsmtFinType1_BLQ|BsmtExposure_Mn', 'HeatingQC_Ex|Functional_Min1', 'Functional_Maj2|BldgType_Tencode', 'FireplaceQu_Po|GarageFinish_RFn', 'GarageQual_Gd|ScreenPorch', 'HouseStyle_1Story|Exterior1st_Plywood', 'GarageType_Detchd|MiscFeature_Tencode', 'Alley_Tencode|BsmtFinType2_ALQ', 'Neighborhood_SWISU|Exterior1st_Wd Sdng', 'Functional_Maj2|GarageFinish_RFn', 'FireplaceQu_Po|BsmtCond_Tencode', 'BsmtExposure_Gd|Exterior1st_MetalSd', 'BsmtFinType1_ALQ|BsmtExposure_No', 'Fence_GdPrv|MasVnrType_BrkCmn', 'PavedDrive_N|Exterior1st_Wd Sdng', 'YearRemodAdd|HalfBath', 'Exterior1st_CemntBd|BldgType_TwnhsE', 'PavedDrive_N|Alley_Pave', 'HouseStyle_1.5Unf|GarageCond_Fa', 'Exterior2nd_MetalSd|OpenPorchSF', 'LotConfig_FR2|HouseStyle_2.5Unf', 'LandContour_Tencode|BsmtQual_Ex', 'Heating_Grav|PavedDrive_Y', 'Exterior2nd_Stucco|Heating_Grav', 'HouseStyle_Tencode|MasVnrType_None', 'PavedDrive_N|RoofStyle_Gable', 'Neighborhood_Blmngtn|GarageType_2Types', 'RoofMatl_Tencode|Heating_GasW', 'PavedDrive_N|GarageCond_Po', 'FullBath|BldgType_Tencode', 'SaleCondition_Tencode|SaleType_ConLI', 'MSZoning_RH|BsmtCond_TA', 'Exterior2nd_Stucco|GarageQual_Fa', 'SaleType_Oth|Exterior2nd_Plywood', 'GarageFinish_Unf|KitchenQual_Gd', 'LandContour_Tencode|Neighborhood_NAmes', 'SaleType_Oth|Neighborhood_MeadowV', 'LandSlope_Sev|BsmtFinType2_BLQ', 'Condition1_PosN|SaleType_CWD', 'FireplaceQu_TA|Exterior1st_Tencode', 'Neighborhood_NPkVill|Exterior1st_Wd Sdng', 'LotShape_Tencode|BsmtCond_Fa', 'Electrical_FuseF|FireplaceQu_Ex', 'BsmtFinType2_ALQ|Condition2_Norm', 'Exterior2nd_CmentBd|Exterior2nd_AsphShn', 'OpenPorchSF|MiscFeature_Tencode', 'RoofStyle_Gable|GarageType_2Types', 'Electrical_FuseA|LandContour_HLS', 'LandSlope_Sev|MasVnrArea', 'KitchenQual_Tencode|Condition1_PosN', 'Neighborhood_OldTown|BsmtFinType2_LwQ', 'Neighborhood_BrDale|SaleType_ConLD', 'ExterCond_Tencode|Neighborhood_NAmes', 'Exterior2nd_Stone|BsmtFinType2_Rec', 'OverallQual|BsmtUnfSF', 'BldgType_2fmCon|Exterior2nd_Brk Cmn', 'ExterCond_Tencode|Fence_GdWo', 'Condition2_Tencode|ExterQual_Fa', 'Electrical_FuseP|Heating_Grav', 'Exterior1st_BrkFace|BsmtQual_Ex', 'LandContour_Tencode|BsmtFinType2_BLQ', 'Exterior2nd_Stucco|Functional_Min1', 'LandSlope_Gtl|Exterior2nd_Brk Cmn', 'BsmtUnfSF|Neighborhood_StoneBr', 'GrLivArea|Condition2_Norm', 'Neighborhood_Veenker|MasVnrType_None', 'LandContour_HLS|LotConfig_Inside', 'Exterior1st_MetalSd|ExterQual_Fa', 'LotShape_Tencode|BsmtFinType2_ALQ', 'YrSold|RoofStyle_Gambrel', 'LandContour_Lvl|SaleType_CWD', 'Neighborhood_NPkVill|ExterQual_Fa', 'Exterior2nd_Stone|ExterQual_Ex', 'Functional_Maj1|HouseStyle_1.5Fin', 'BsmtQual_Ex|Neighborhood_StoneBr', 'SaleType_ConLI|Exterior2nd_CmentBd', 'LandSlope_Tencode|Neighborhood_MeadowV', 'YrSold|RoofStyle_Flat', 'KitchenQual_Gd|Neighborhood_OldTown', 'OpenPorchSF|MSZoning_RL', 'Alley_Pave|LandSlope_Tencode', '2ndFlrSF|MSZoning_RL', 'BldgType_Duplex|BldgType_1Fam', 'Foundation_Tencode|Exterior2nd_Wd Shng', 'KitchenQual_Gd|ExterCond_TA', 'LotConfig_Corner|Condition1_Tencode', 'CentralAir_Tencode|Exterior1st_Tencode', 'GarageQual_Po', 'Foundation_BrkTil|HouseStyle_2.5Unf', 'LotShape_Reg|BsmtCond_Gd', 'Foundation_PConc|BsmtCond_Gd', 'YrSold|MasVnrType_BrkFace', 'FullBath|LandSlope_Mod', 'Exterior1st_Stucco|MasVnrType_BrkCmn', 'Exterior2nd_Stucco|LotFrontage', 'Neighborhood_ClearCr|KitchenQual_Ex', 'FireplaceQu_Po|Neighborhood_Sawyer', 'Functional_Maj1|BsmtFinType2_Rec', 'FireplaceQu_Gd|MoSold', 'PavedDrive_P|OverallCond', 'PavedDrive_N|BsmtUnfSF', 'Exterior2nd_Stucco|SaleCondition_Alloca', 'MiscVal|Fence_GdPrv', 'LandSlope_Mod|Functional_Min2', 'Exterior2nd_BrkFace|RoofMatl_CompShg', 'FullBath|Fence_MnPrv', 'LotConfig_Corner|SaleCondition_Family', 'LotShape_Reg|Foundation_Slab', 'GarageQual_Fa|Neighborhood_Timber', 'OverallQual|HeatingQC_Fa', 'RoofMatl_WdShngl|Fence_MnPrv', 'Exterior1st_VinylSd|BsmtExposure_Mn', 'ExterQual_Tencode|CentralAir_N', 'Exterior2nd_Tencode|FireplaceQu_TA', 'HeatingQC_TA|Neighborhood_Somerst', 'GarageFinish_Tencode|MasVnrType_None', 'LotConfig_FR2|Foundation_CBlock', 'BsmtQual_Tencode|MasVnrType_BrkFace', 'GarageCond_TA|SaleType_COD', 'MiscFeature_Gar2|Exterior1st_MetalSd', 'BsmtFinType2_Tencode|Exterior2nd_HdBoard', 'Exterior2nd_AsbShng|LandSlope_Tencode', 'Neighborhood_Edwards|MasVnrArea', 'RoofMatl_Tar&Grv|Exterior2nd_Wd Sdng', 'LandContour_Bnk|SaleCondition_Abnorml', 'Exterior2nd_Wd Shng|HouseStyle_1.5Fin', 'BedroomAbvGr|BsmtQual_TA', 'GarageQual_TA|BsmtExposure_No', 'FireplaceQu_Tencode|Condition1_RRAn', 'RoofStyle_Flat|CentralAir_N', 'BsmtExposure_No|BsmtExposure_Mn', 'MasVnrType_BrkCmn|Neighborhood_IDOTRR', 'BsmtFinType1_BLQ|GarageType_Basment', 'Condition1_Artery|SaleType_ConLw', 'BsmtQual_Tencode|BsmtExposure_Gd', 'LowQualFinSF|Functional_Maj1', 'Condition1_Feedr|MasVnrType_BrkFace', 'LotShape_IR2|MiscVal', 'Neighborhood_BrDale|Alley_Grvl', 'RoofStyle_Shed|Neighborhood_Timber', 'BedroomAbvGr|SaleType_COD', 'GarageType_Detchd|BsmtFinType2_BLQ', 'Functional_Maj2|BsmtCond_Fa', 'EnclosedPorch|HouseStyle_1.5Fin', 'BedroomAbvGr|ExterCond_Gd', 'Foundation_Stone|SaleType_ConLI', 'ExterQual_TA|Neighborhood_NPkVill', 'Functional_Typ|SaleCondition_Abnorml', 'YearBuilt|SaleType_COD', 'Neighborhood_BrDale|BsmtCond_TA', 'Neighborhood_Somerst|LotConfig_Corner', 'LotFrontage|FireplaceQu_TA', 'Street_Grvl|Condition2_Norm', 'Neighborhood_NoRidge|HalfBath', 'Heating_GasW|Exterior1st_VinylSd', 'SaleType_ConLI|Neighborhood_Gilbert', 'Neighborhood_NridgHt|BsmtExposure_No', 'MiscFeature_Tencode|BsmtFinType1_Unf', 'Neighborhood_Mitchel|Neighborhood_NoRidge', 'GarageCars|GarageQual_Po', 'LandContour_HLS|BsmtFullBath', 'EnclosedPorch|BsmtUnfSF', 'HeatingQC_Fa|Alley_Grvl', 'Electrical_SBrkr|HalfBath', 'BsmtUnfSF|Street_Grvl', 'SaleType_WD|SaleCondition_Alloca', 'Exterior2nd_VinylSd|BsmtFinType1_Rec', 'BldgType_Tencode|MSZoning_Tencode', 'RoofStyle_Tencode|BsmtExposure_Gd', 'Functional_Maj2|GarageQual_Po', 'HouseStyle_1.5Unf|HouseStyle_2Story', 'LotShape_IR2|SaleCondition_Family', 'LandContour_Low|Heating_Tencode', 'GarageType_Detchd|CentralAir_Y', 'Exterior2nd_CmentBd|HouseStyle_1.5Fin', 'RoofMatl_Tencode|BsmtQual_Gd', 'SaleType_WD|Street_Pave', 'Alley_Pave|Exterior1st_Wd Sdng', 'MSZoning_C (all)|Exterior2nd_HdBoard', 'Exterior2nd_Stone|Exterior2nd_VinylSd', 'OverallQual|RoofMatl_Tencode', 'KitchenQual_Ex|SaleCondition_Partial', 'Heating_GasA|RoofMatl_Tar&Grv', 'RoofMatl_Tencode|SaleType_Tencode', 'Street_Tencode|MSZoning_RL', 'BsmtFinType1_GLQ|Exterior2nd_HdBoard', 'OpenPorchSF|CentralAir_Y', 'BsmtCond_Gd|FireplaceQu_TA', 'RoofStyle_Flat|Fence_GdPrv', 'FullBath|SaleType_Tencode', 'LotShape_IR2|BldgType_Tencode', 'SaleCondition_Normal|OverallCond', 'MSZoning_C (all)|BsmtExposure_No', 'Heating_GasA|Electrical_SBrkr', 'TotalBsmtSF|RoofStyle_Hip', 'LotConfig_Corner|GarageQual_TA', 'Neighborhood_NPkVill|Alley_Grvl', 'PavedDrive_Tencode|GarageQual_Po', 'FireplaceQu_Po|HeatingQC_Ex', 'CentralAir_Tencode|Neighborhood_BrkSide', 'Exterior2nd_Tencode|SaleCondition_Alloca', 'GarageType_CarPort|BsmtFinType2_Unf', 'LotArea|Exterior1st_Tencode', 'KitchenQual_Gd|BedroomAbvGr', 'GarageCond_Gd|LowQualFinSF', 'HouseStyle_1.5Unf|Street_Pave', 'Street_Tencode|Exterior2nd_Tencode', 'Neighborhood_Somerst|Exterior1st_BrkComm', 'BsmtExposure_Tencode|Functional_Maj2', 'MasVnrArea|Exterior1st_Tencode', 'SaleCondition_Abnorml|MiscFeature_Gar2', 'Exterior1st_CemntBd|ExterQual_Tencode', 'LotFrontage|RoofMatl_CompShg', 'BsmtCond_Po|Exterior1st_BrkComm', 'MiscVal|KitchenQual_TA', 'BsmtFinType1_BLQ|BsmtQual_Fa', 'GarageCars|Exterior2nd_AsphShn', 'HouseStyle_2.5Unf|Exterior1st_Wd Sdng', 'OverallQual|HeatingQC_Tencode', 'Foundation_BrkTil|Utilities_AllPub', 'LotConfig_CulDSac|LotShape_IR3', 'BldgType_2fmCon|Neighborhood_Mitchel', '1stFlrSF|MasVnrType_BrkFace', 'BldgType_Duplex|MiscFeature_Gar2', 'LandContour_Low|LotConfig_FR2', 'SaleCondition_Normal|LandSlope_Gtl', 'HeatingQC_Fa|Exterior2nd_MetalSd', 'OverallQual|BldgType_TwnhsE', 'Foundation_BrkTil|SaleCondition_Abnorml', 'Utilities_Tencode|RoofMatl_Tar&Grv', 'LandSlope_Gtl|ScreenPorch', 'BsmtUnfSF|HouseStyle_2Story', 'CentralAir_Tencode|Condition1_RRAn', 'BsmtFinType1_Tencode|Exterior1st_AsbShng', 'GarageFinish_Unf', 'Fireplaces|KitchenQual_TA', 'LandContour_Tencode|HouseStyle_2.5Unf', 'Alley_Pave|Exterior1st_VinylSd', '1stFlrSF|KitchenQual_Fa', 'LandContour_Low|Neighborhood_Sawyer', 'LotArea|BsmtFinType2_Rec', 'Neighborhood_Tencode|SaleType_New', 'HalfBath|Condition1_PosA', 'KitchenQual_Gd|Exterior1st_MetalSd', 'FireplaceQu_Tencode|HalfBath', 'HouseStyle_1Story|Fireplaces', 'Exterior1st_HdBoard|LandSlope_Sev', 'Functional_Tencode|BsmtCond_Po', 'BsmtFinType1_Rec|2ndFlrSF', 'Neighborhood_ClearCr|Condition1_PosA', 'Functional_Maj1|SaleCondition_Normal', 'Exterior2nd_AsbShng|BsmtFinType2_ALQ', 'Exterior1st_AsbShng|BsmtCond_Po', 'BsmtFinType2_GLQ|LandContour_Tencode', 'Neighborhood_BrDale|ExterQual_Ex', 'LandSlope_Tencode|HouseStyle_1.5Unf', 'BsmtQual_TA|LotConfig_Tencode', 'BsmtFinType2_LwQ|GarageArea', 'Condition1_Norm|GarageQual_Tencode', 'HouseStyle_1.5Fin|MasVnrType_Tencode', 'OverallQual|KitchenQual_Gd', 'LotShape_IR2|BsmtFinType1_Tencode', 'Alley_Tencode|Fence_MnPrv', 'YrSold|MSZoning_Tencode', 'SaleCondition_Abnorml|BsmtFinType1_GLQ', 'EnclosedPorch|SaleType_WD', 'Functional_Tencode|Neighborhood_Edwards', 'Exterior2nd_BrkFace|BsmtFullBath', 'Neighborhood_Tencode|BsmtFinType2_BLQ', 'LandContour_Low|LotShape_Reg', 'Neighborhood_Somerst|BsmtFinType2_GLQ', 'BsmtExposure_Tencode|GarageCond_Fa', 'Exterior2nd_CmentBd|Functional_Min1', 'Exterior2nd_AsbShng|HeatingQC_Fa', 'Condition1_Norm|SaleType_CWD', 'TotalBsmtSF|LandSlope_Tencode', 'HouseStyle_1.5Unf|GarageQual_Tencode', 'Functional_Min1|Utilities_AllPub', 'MasVnrType_None|GarageFinish_RFn', 'YrSold|Neighborhood_ClearCr', 'BsmtHalfBath|BsmtFinType1_Rec', 'BsmtFinType1_Unf|Exterior2nd_Wd Shng', 'Condition1_RRAn|Exterior2nd_Plywood', 'Heating_Grav|GarageType_2Types', 'Condition1_RRAn|Exterior1st_Wd Sdng', 'TotalBsmtSF|Exterior1st_VinylSd', 'RoofStyle_Gambrel|HouseStyle_SLvl', 'Neighborhood_NoRidge|SaleType_COD', 'Exterior2nd_Stone|Exterior1st_AsbShng', 'Electrical_FuseP|PavedDrive_Y', 'Exterior2nd_Stone|LandSlope_Sev', 'LandSlope_Mod|MasVnrArea', 'LotShape_Tencode|Functional_Maj2', 'PavedDrive_Tencode|BsmtFinType1_GLQ', 'LotConfig_Corner|BsmtExposure_No', 'Street_Tencode|MasVnrArea', 'BsmtQual_Fa|Neighborhood_StoneBr', 'RoofMatl_Tar&Grv|BsmtQual_TA', 'Exterior2nd_Stucco|SaleType_ConLD', 'HeatingQC_Ex|MasVnrType_Tencode', 'BsmtCond_Tencode|MSZoning_Tencode', 'GarageFinish_Tencode|PavedDrive_P', 'BsmtFullBath|SaleCondition_Alloca', 'TotRmsAbvGrd|BsmtCond_Fa', 'Functional_Maj1|GarageType_Basment', 'PavedDrive_Tencode|FireplaceQu_Fa', 'Fireplaces|SaleType_ConLD', 'MiscVal|Functional_Min2', 'BldgType_Duplex|Neighborhood_NPkVill', 'Neighborhood_NridgHt|Electrical_FuseP', 'MiscFeature_Shed|GarageType_2Types', 'Alley_Pave|LandSlope_Gtl', 'SaleType_Tencode|SaleType_ConLD', 'LandContour_Low|BldgType_Tencode', 'RoofMatl_Tar&Grv|HouseStyle_1.5Unf', 'MiscFeature_Tencode|BsmtCond_TA', 'GarageType_Attchd|Condition1_Feedr', 'Neighborhood_StoneBr|MiscFeature_Gar2', 'SaleType_ConLD|Condition1_PosA', 'LotArea|RoofStyle_Shed', 'LotConfig_CulDSac|BsmtCond_Tencode', 'KitchenQual_Ex|GarageFinish_Tencode', 'LandContour_Tencode|Condition2_Norm', 'FireplaceQu_TA|Neighborhood_SawyerW', 'RoofMatl_CompShg|Exterior1st_WdShing', 'Exterior1st_AsbShng|Exterior2nd_HdBoard', 'GarageCond_Tencode|KitchenQual_Tencode', 'BldgType_Tencode|Street_Pave', '3SsnPorch|Fence_GdWo', 'BsmtFinType2_Tencode|BsmtCond_Gd', 'SaleType_WD|MasVnrType_Tencode', 'LandContour_Bnk|SaleType_COD', 'LotConfig_FR2|GarageType_2Types', 'GarageType_CarPort|BsmtExposure_No', 'Electrical_SBrkr|BsmtFinType2_Unf', 'BsmtCond_Po|Fence_MnWw', 'Functional_Mod|Neighborhood_SawyerW', 'BsmtFinType2_BLQ|SaleCondition_Normal', 'Condition1_Norm|Functional_Min1', 'Fence_GdPrv|Neighborhood_Sawyer', 'Neighborhood_IDOTRR|Foundation_Slab', 'LotConfig_FR2|LandContour_Lvl', 'Electrical_FuseP|SaleType_ConLw', 'Foundation_Stone|LotShape_IR3', 'KitchenQual_TA|MSZoning_RL', 'RoofStyle_Gable|SaleCondition_Partial', 'YrSold|MiscFeature_Tencode', 'GarageYrBlt|BsmtQual_Gd', 'Condition1_PosA|Exterior1st_MetalSd', 'OverallCond|Neighborhood_Timber', 'CentralAir_N|MSZoning_RL', 'Neighborhood_NridgHt|SaleType_COD', 'TotRmsAbvGrd|SaleType_COD', 'BsmtHalfBath|BsmtFinType1_ALQ', 'GarageType_BuiltIn|LotConfig_Tencode', 'PoolQC_Tencode|BsmtQual_Gd', 'GarageCond_Tencode|Exterior1st_CemntBd', 'LandContour_Low|GarageQual_Fa', 'Electrical_FuseF|Fence_MnPrv', 'LotArea|Neighborhood_Tencode', 'BsmtExposure_Tencode|Exterior2nd_VinylSd', 'HeatingQC_TA|BldgType_Tencode', 'Foundation_BrkTil|CentralAir_N', 'Utilities_Tencode|Fireplaces', 'BsmtFinType1_Unf|WoodDeckSF', 'Exterior1st_HdBoard|Exterior2nd_VinylSd', 'GarageQual_TA|GarageType_CarPort', 'BsmtCond_TA|Utilities_AllPub', 'RoofStyle_Gambrel|Exterior1st_WdShing', 'Utilities_Tencode|Neighborhood_Blmngtn', 'GarageCars|GarageType_Tencode', 'Neighborhood_SawyerW|Neighborhood_Timber', 'MiscFeature_Othr|BsmtQual_Fa', 'Exterior2nd_Stone|Exterior1st_MetalSd', 'HeatingQC_Tencode|LotConfig_Inside', 'FireplaceQu_Po|MiscFeature_Shed', 'OpenPorchSF|ExterQual_Gd', 'Foundation_Tencode|BsmtExposure_No', 'FireplaceQu_TA|GarageType_2Types', 'LotShape_IR2|RoofStyle_Tencode', 'GarageCond_Fa|Neighborhood_NAmes', 'HouseStyle_2.5Unf|Fence_MnWw', '1stFlrSF|MSSubClass', 'TotRmsAbvGrd|GarageFinish_RFn', 'Exterior2nd_BrkFace|LotConfig_Tencode', 'Neighborhood_Tencode|BsmtFinType1_Rec', 'Foundation_BrkTil|Neighborhood_StoneBr', 'Exterior2nd_Brk Cmn|Exterior2nd_Plywood', 'BsmtFinSF2|Condition1_PosA', 'BldgType_Duplex|BsmtFinType1_Unf', 'BsmtFullBath|MiscFeature_Tencode', 'Exterior1st_Stucco|Functional_Min1', 'SaleType_ConLD|SaleCondition_Partial', 'GarageCond_Po|ScreenPorch', 'BsmtExposure_Mn|Neighborhood_MeadowV', 'Fence_GdPrv|BsmtExposure_No', 'HeatingQC_TA|Exterior1st_Plywood', 'BsmtExposure_Tencode|BsmtQual_Gd', 'BsmtQual_Tencode|Neighborhood_Edwards', 'Neighborhood_Tencode|Neighborhood_StoneBr', 'HeatingQC_Gd|BsmtFinSF2', 'GarageCond_Po|Foundation_PConc', 'BsmtFinType1_Tencode|SaleType_WD', 'LandSlope_Tencode|KitchenQual_Tencode', 'BedroomAbvGr|PoolQC_Tencode', 'Electrical_FuseA|HouseStyle_2Story', 'Fireplaces|Street_Grvl', 'HeatingQC_TA|Fence_GdPrv', 'KitchenQual_Fa|HouseStyle_2.5Unf', 'Exterior1st_AsbShng|ExterCond_Tencode', 'GrLivArea|Condition1_PosN', 'YearRemodAdd|Electrical_FuseF', 'LotConfig_FR2|Neighborhood_Crawfor', 'Neighborhood_ClearCr|Neighborhood_CollgCr', 'ExterCond_Gd|Exterior2nd_MetalSd', 'TotalBsmtSF|Fireplaces', 'Foundation_PConc|HouseStyle_2Story', 'OpenPorchSF|Exterior1st_WdShing', 'Alley_Tencode|FireplaceQu_Ex', 'Neighborhood_ClearCr|LandContour_Tencode', 'GarageQual_Gd|BsmtFinType1_Rec', 'SaleCondition_Tencode|PavedDrive_P', 'Neighborhood_CollgCr|Exterior1st_CemntBd', 'BsmtFullBath|MSZoning_Tencode', 'Functional_Tencode|Neighborhood_NWAmes', 'BsmtFinType1_Tencode|GrLivArea', 'Foundation_PConc|LotConfig_Tencode', 'BsmtQual_Fa|Foundation_CBlock', 'SaleCondition_Partial|MSZoning_RH', 'BsmtFinType2_ALQ|Neighborhood_OldTown', 'LotShape_IR2|HouseStyle_2Story', 'BsmtFinType2_Rec|Exterior2nd_Plywood', 'LotFrontage|ExterQual_Ex', 'LotArea|KitchenQual_Ex', 'SaleCondition_Alloca|MSZoning_RH', 'HeatingQC_TA|MoSold', 'Exterior2nd_Stucco|MSSubClass', 'Neighborhood_NAmes|BldgType_Tencode', 'LotConfig_FR2|PavedDrive_Tencode', 'BsmtFinType2_Unf|Condition2_Norm', 'GarageCars|HouseStyle_Tencode', 'Exterior2nd_BrkFace|Functional_Min2', 'RoofStyle_Flat|3SsnPorch', 'BsmtCond_Po|MSZoning_FV', 'RoofStyle_Hip|Alley_Tencode', 'Alley_Pave|ScreenPorch', '1stFlrSF|SaleType_Oth', 'LandContour_Lvl|Street_Grvl', 'LandSlope_Gtl|Condition1_RRAn', 'BldgType_Duplex|SaleCondition_Family', 'BsmtHalfBath|Exterior1st_Tencode', 'Functional_Maj1|RoofMatl_WdShngl', 'Neighborhood_Tencode|MasVnrType_BrkCmn', 'Neighborhood_NoRidge|LandContour_Tencode', 'Neighborhood_Sawyer|Neighborhood_Timber', 'BsmtFinType2_GLQ|Functional_Min2', 'Neighborhood_Somerst|Fence_GdPrv', 'FullBath|Exterior2nd_Wd Sdng', 'Neighborhood_ClearCr|Electrical_FuseF', 'LandSlope_Sev|Fence_MnWw', 'ExterCond_TA|HouseStyle_1.5Unf', 'HouseStyle_1Story|KitchenQual_Gd', 'BsmtFinType1_BLQ|Exterior2nd_Wd Shng', 'SaleCondition_Normal|Exterior1st_Tencode', 'KitchenQual_TA|LotShape_IR3', 'Functional_Typ|MSZoning_C (all)', 'ScreenPorch|BsmtCond_Fa', 'Neighborhood_ClearCr|Foundation_CBlock', 'Heating_Tencode|MasVnrType_Stone', 'FullBath|GarageFinish_RFn', 'Heating_Tencode|Exterior1st_Tencode', 'MSZoning_Tencode|ExterCond_Fa', 'Neighborhood_Tencode|Condition1_Tencode', 'SaleType_Tencode|RoofStyle_Shed', 'BldgType_Duplex|BsmtFinSF2', 'GarageCond_Fa|BsmtUnfSF', 'KitchenAbvGr|BsmtFinType1_GLQ', 'Condition2_Artery|Fence_GdWo', 'HeatingQC_Ex|Exterior1st_WdShing', 'MiscFeature_Othr|Exterior1st_CemntBd', 'SaleCondition_Tencode|GarageQual_Fa', 'GarageCond_Tencode|RoofMatl_Tar&Grv', 'HouseStyle_1Story|Fence_GdWo', 'LandContour_Bnk|GarageType_CarPort', 'BldgType_Duplex|MasVnrType_Tencode', 'ExterCond_Gd|ExterCond_Tencode', 'Foundation_Tencode|Electrical_FuseF', 'FireplaceQu_Ex|BsmtQual_Gd', 'GarageCars|LandContour_Bnk', 'Neighborhood_OldTown|3SsnPorch', 'LandContour_HLS|LotConfig_CulDSac', 'PavedDrive_N|Functional_Min1', 'GarageQual_Gd|Exterior2nd_Tencode', 'Neighborhood_Somerst|RoofStyle_Gambrel', 'Neighborhood_Sawyer|Neighborhood_Crawfor', 'Functional_Tencode|Condition2_Norm', '3SsnPorch|ExterQual_Ex', 'MiscFeature_Tencode|Neighborhood_Gilbert', 'Neighborhood_ClearCr|ExterCond_Gd', 'SaleType_WD|LotConfig_CulDSac', 'Exterior2nd_Tencode|MiscVal', 'HouseStyle_Tencode|LotConfig_Inside', 'BsmtFinSF2|OpenPorchSF', 'BsmtFinType1_BLQ|Neighborhood_Mitchel', 'BsmtFinType2_GLQ|PoolArea', 'Neighborhood_Somerst|HouseStyle_2.5Unf', 'KitchenAbvGr|Exterior1st_Wd Sdng', 'Condition2_Tencode|LotShape_IR3', 'TotalBsmtSF|BsmtFinType1_BLQ', 'LandContour_HLS|Neighborhood_StoneBr', 'SaleType_WD|MSSubClass', 'SaleCondition_Family|GarageCond_Ex', 'HeatingQC_Fa|Fireplaces', 'RoofMatl_Tencode|Exterior2nd_Wd Shng', 'BsmtFinSF2|MasVnrType_Tencode', 'MiscFeature_Shed|BldgType_Tencode', 'Neighborhood_Blmngtn|KitchenQual_Ex', 'HouseStyle_Tencode|BsmtCond_Gd', 'MasVnrType_None|Neighborhood_Crawfor', 'MasVnrType_None|BsmtFinSF1', 'HeatingQC_Tencode|Neighborhood_IDOTRR', 'Alley_Grvl|BsmtFinType1_Unf', 'BsmtFinSF2|ExterCond_Tencode', '3SsnPorch|Condition1_Tencode', 'HouseStyle_1.5Unf|Fence_MnWw', 'YearBuilt|MiscFeature_Tencode', 'YearBuilt|BsmtQual_Gd', 'RoofMatl_Tar&Grv|Exterior2nd_HdBoard', 'KitchenQual_TA|Exterior2nd_AsphShn', 'Foundation_CBlock|Street_Pave', 'GarageQual_Gd|RoofMatl_WdShngl', 'Exterior1st_AsbShng|BsmtUnfSF', 'Heating_GasW|Neighborhood_NWAmes', 'Neighborhood_BrDale|BsmtQual_Ex', 'Neighborhood_Crawfor|RoofMatl_WdShngl', 'Exterior2nd_Stone|EnclosedPorch', 'Condition1_Norm|SaleCondition_Partial', 'FireplaceQu_Tencode|GarageCond_Ex', 'MasVnrArea', 'Functional_Typ|Exterior2nd_Plywood', 'BsmtFullBath|BldgType_Tencode', 'LotConfig_Corner|HeatingQC_Ex', 'GarageCond_Po|Condition1_Tencode', 'CentralAir_Y|MasVnrType_Tencode', 'GarageFinish_RFn|SaleCondition_Abnorml', 'HeatingQC_Fa|Neighborhood_Timber', 'HouseStyle_SLvl|Exterior2nd_AsphShn', 'Street_Tencode|Exterior1st_WdShing', 'LandContour_Bnk|MasVnrType_None', 'BsmtFinType1_Tencode|BsmtQual_TA', 'BsmtFinType2_ALQ|Exterior2nd_Brk Cmn', 'Functional_Min1|GarageFinish_RFn', 'MSZoning_C (all)|Neighborhood_StoneBr', 'Exterior2nd_Brk Cmn|MSZoning_Tencode', 'Exterior2nd_VinylSd|LotShape_IR3', 'BsmtFinType1_ALQ|GarageType_2Types', 'BsmtFinSF2|BsmtFinType1_GLQ', 'Alley_Pave|LandContour_Lvl', 'Neighborhood_CollgCr|Neighborhood_Tencode', 'GarageCond_Tencode|BsmtCond_Po', 'KitchenQual_Fa|MSZoning_RL', 'FireplaceQu_Gd|LotShape_IR3', 'GarageType_CarPort|MasVnrType_BrkFace', 'Neighborhood_SWISU|BsmtFinType2_Unf', 'Condition2_Tencode|GarageType_Basment', 'Exterior2nd_Stucco|FireplaceQu_TA', 'GarageCond_TA|GarageFinish_Tencode', 'Neighborhood_NridgHt|Alley_Pave', 'KitchenQual_Fa|Exterior2nd_Plywood', 'SaleType_ConLI|GarageArea', 'BsmtQual_TA|MiscFeature_Gar2', 'Exterior1st_BrkFace|Alley_Pave', 'BsmtQual_Fa|Condition2_Artery', 'SaleType_ConLw|Functional_Min1', 'BldgType_Twnhs|BldgType_1Fam', '1stFlrSF|Functional_Min1', 'BedroomAbvGr|PavedDrive_Tencode', 'Neighborhood_Edwards|HouseStyle_2Story', 'SaleType_ConLw|ScreenPorch', 'Alley_Pave|HeatingQC_Tencode', 'BsmtFinType2_Rec|Exterior1st_MetalSd', 'Condition1_Norm|BsmtCond_Gd', 'GarageType_Detchd|SaleType_Oth', 'Foundation_Stone|Exterior2nd_VinylSd', 'OverallQual|MSZoning_C (all)', 'Exterior2nd_CmentBd|ExterQual_Ex', 'GarageCond_TA|BsmtFinType1_ALQ', 'Electrical_FuseP|LandContour_HLS', 'Neighborhood_NoRidge|MSZoning_RH', 'BldgType_Duplex|GarageType_BuiltIn', 'HeatingQC_Fa|Condition1_RRAe', 'Heating_Grav|Fence_MnWw', 'Neighborhood_Tencode|Exterior1st_CemntBd', 'Alley_Tencode', 'LotConfig_FR2|BsmtFinSF1', 'Exterior2nd_BrkFace|Exterior2nd_Plywood', 'Exterior2nd_Stucco', 'PavedDrive_Y|Exterior2nd_MetalSd', 'GarageType_Attchd|BsmtQual_Gd', 'BsmtFinType2_LwQ|Neighborhood_IDOTRR', 'SaleType_ConLD|Condition1_PosN', 'PavedDrive_Y|Foundation_Slab', 'LotConfig_CulDSac|Neighborhood_NAmes', 'BsmtFinType1_Rec|GarageType_CarPort', 'MoSold|MasVnrType_None', 'Neighborhood_Blmngtn|MSZoning_RL', 'Exterior1st_BrkFace|Exterior1st_WdShing', 'BsmtFinType1_BLQ|Neighborhood_StoneBr', 'BsmtQual_TA|BsmtFinType2_Rec', 'GarageQual_Tencode|LotConfig_Inside', 'Neighborhood_Mitchel|BsmtFinType2_LwQ', 'LandSlope_Sev|GarageType_2Types', 'HouseStyle_1.5Unf|TotRmsAbvGrd', 'Exterior2nd_CmentBd|Fence_MnPrv', 'GarageQual_Po|Exterior1st_BrkComm', 'Foundation_Tencode|Condition2_Artery', 'Neighborhood_StoneBr|MasVnrType_Stone', 'Exterior2nd_Stone|BsmtExposure_Mn', 'Exterior1st_BrkFace|MiscFeature_Othr', 'GarageQual_Gd|ExterCond_Fa', 'Fence_GdPrv|MasVnrArea', 'BsmtFullBath|Foundation_CBlock', 'Exterior1st_HdBoard|SaleType_CWD', 'BsmtExposure_Tencode|YearRemodAdd', 'Neighborhood_CollgCr|HouseStyle_Tencode', 'LandContour_Low|Neighborhood_SWISU', 'HouseStyle_SFoyer|Exterior1st_Stucco', 'Neighborhood_Veenker|Neighborhood_IDOTRR', 'GarageType_Detchd|Foundation_Stone', 'ScreenPorch|RoofMatl_WdShngl', 'Neighborhood_CollgCr|MSZoning_FV', 'GrLivArea|MiscFeature_Shed', 'Exterior1st_BrkFace|Exterior2nd_MetalSd', 'HouseStyle_SFoyer|Exterior2nd_CmentBd', 'BsmtQual_Tencode|GarageCond_Tencode', 'LandContour_Low|HeatingQC_Gd', 'GarageType_Basment|Fence_MnWw', 'MSZoning_FV|Fence_MnWw', 'Exterior2nd_AsbShng|Condition2_Artery', 'Exterior2nd_VinylSd|Street_Pave', 'HouseStyle_1.5Unf|MSZoning_RH', 'BsmtQual_TA|RoofMatl_WdShngl', 'MSZoning_RM|ExterQual_Tencode', 'BsmtQual_TA|LotShape_IR3', 'BsmtFullBath|Neighborhood_BrkSide', 'Neighborhood_NoRidge|BsmtCond_TA', 'GarageQual_TA|MSZoning_RL', 'LotShape_IR2|HouseStyle_SFoyer', 'SaleType_CWD|MSZoning_RL', 'MSZoning_RM|ExterQual_Fa', 'RoofMatl_Tar&Grv|SaleType_New', 'MasVnrType_BrkCmn|LotConfig_Tencode', 'ExterCond_Gd|Neighborhood_NAmes', 'TotRmsAbvGrd|BsmtExposure_Gd', 'LotShape_Tencode|MSSubClass', 'ExterCond_Gd|Neighborhood_Timber', 'Neighborhood_SWISU|GarageFinish_Tencode', 'KitchenQual_Ex|RoofStyle_Gable', 'HeatingQC_Fa|BsmtCond_TA', 'Condition1_Artery|PoolArea', 'GarageQual_Fa|BsmtFinSF1', 'Neighborhood_NPkVill|Exterior2nd_VinylSd', 'BsmtCond_Po|GarageCond_Ex', 'Neighborhood_Blmngtn|LandSlope_Sev', 'PavedDrive_N|BsmtFinType2_LwQ', 'LowQualFinSF|BsmtCond_Gd', 'YearRemodAdd|BsmtFinType2_Unf', 'Foundation_Tencode|ExterCond_Fa', 'Foundation_PConc|Fireplaces', 'Neighborhood_NWAmes|GarageQual_Tencode', 'Heating_Grav|BsmtCond_Po', 'RoofMatl_Tencode|Exterior2nd_MetalSd', 'TotRmsAbvGrd|HouseStyle_SLvl', 'Exterior2nd_HdBoard|MSZoning_RL', 'GarageCond_TA|LotConfig_CulDSac', 'Exterior1st_Stucco|Exterior2nd_Wd Sdng', 'Condition2_Tencode|BsmtFinType1_Unf', 'Electrical_Tencode|RoofMatl_Tar&Grv', 'GarageType_Detchd|LowQualFinSF', 'Foundation_PConc|Neighborhood_NPkVill', 'GarageType_Detchd|BsmtFinType1_LwQ', 'HeatingQC_Tencode|Foundation_Slab', 'GarageArea|BsmtUnfSF', 'Heating_Tencode|Exterior2nd_Wd Sdng', 'Neighborhood_BrDale|Neighborhood_IDOTRR', 'ExterQual_TA|HeatingQC_Fa', 'GarageCond_Gd|Condition1_RRAe', 'GarageCond_Fa|HouseStyle_2.5Unf', 'LandContour_Bnk|CentralAir_N', 'BsmtQual_Ex|Functional_Mod', 'BsmtFinType2_Tencode|SaleType_COD', 'Electrical_Tencode|BldgType_Tencode', 'GarageFinish_RFn|MSZoning_Tencode', 'BsmtFinType1_ALQ|BldgType_TwnhsE', 'Exterior1st_HdBoard|Condition1_Tencode', 'Exterior2nd_Stucco|LotShape_IR1', 'Fence_Tencode|KitchenQual_TA', 'YearBuilt|Condition2_Artery', 'BsmtFinType1_BLQ|Foundation_Tencode', 'BsmtQual_TA|MSZoning_Tencode', 'Neighborhood_ClearCr|MSSubClass', 'BsmtFinType1_BLQ|OpenPorchSF', 'RoofStyle_Gambrel|BsmtCond_Fa', 'Neighborhood_OldTown|Fence_GdPrv', 'LotFrontage|RoofStyle_Gable', 'Neighborhood_Veenker|Functional_Min2', 'ExterCond_Tencode|GarageCond_Ex', 'FullBath|SaleType_ConLI', 'Neighborhood_Blmngtn|LotShape_Reg', 'BsmtFinType1_Rec|GarageType_Basment', 'Neighborhood_ClearCr|GarageFinish_Fin', 'SaleType_ConLI|Exterior2nd_Wd Shng', 'BsmtQual_Ex|Neighborhood_NAmes', 'BldgType_Twnhs|GarageQual_Tencode', 'LowQualFinSF|BsmtQual_Gd', 'Neighborhood_SawyerW|BsmtExposure_No', 'GarageType_Attchd|Neighborhood_Timber', 'BsmtFinSF2|Exterior2nd_CmentBd', 'Foundation_BrkTil|Neighborhood_Sawyer', 'GarageCond_TA|GarageCond_Ex', 'Neighborhood_OldTown|HeatingQC_Ex', 'SaleType_ConLD|BsmtQual_Ex', 'YrSold|Alley_Grvl', 'GarageCond_TA|Neighborhood_Crawfor', 'Functional_Min1|HouseStyle_1.5Fin', 'Exterior2nd_AsbShng|Exterior1st_CemntBd', 'Exterior2nd_Stucco|Neighborhood_Tencode', 'Street_Tencode|LotArea', 'Electrical_FuseP|ExterQual_Gd', 'BsmtUnfSF|ExterQual_Fa', 'Foundation_CBlock|BsmtFinType1_Unf', 'Exterior2nd_Stucco|MSZoning_C (all)', 'Neighborhood_NWAmes', 'Exterior1st_CemntBd|SaleCondition_Partial', 'HeatingQC_Fa|LotShape_IR3', 'RoofStyle_Flat|Exterior1st_VinylSd', 'YearRemodAdd|LandContour_Lvl', 'Neighborhood_NridgHt|Neighborhood_Somerst', 'Street_Grvl|HouseStyle_2Story', 'Alley_Pave|CentralAir_N', 'KitchenQual_Fa|Alley_Grvl', 'Heating_Grav|Heating_Tencode', 'Exterior1st_HdBoard|Utilities_AllPub', 'Functional_Mod|MiscFeature_Gar2', 'GarageType_Detchd|LotArea', 'OverallCond|MSZoning_RL', 'GarageType_Basment|SaleCondition_Partial', 'HeatingQC_Tencode|Condition1_PosN', 'BsmtFinType2_Rec|BsmtCond_Gd', '1stFlrSF|Exterior1st_Wd Sdng', 'Fireplaces|Heating_GasW', 'RoofMatl_Tar&Grv|MSZoning_FV', 'SaleType_ConLD|Electrical_FuseF', 'GrLivArea|BsmtFinType2_ALQ', 'BsmtFinType1_Rec|Alley_Grvl', 'BsmtFinType1_LwQ|MasVnrType_BrkFace', 'GarageQual_Gd|MiscVal', 'YrSold|BsmtFinType2_Rec', 'Exterior1st_MetalSd|GarageType_2Types', '3SsnPorch|BsmtFinType1_LwQ', 'Heating_Grav|Functional_Maj2', 'LandContour_Bnk|Exterior2nd_AsphShn', 'LandSlope_Gtl|MSZoning_Tencode', 'BsmtQual_Tencode|BsmtCond_TA', 'LotConfig_CulDSac|GarageCond_Fa', 'OverallQual|GarageQual_TA', 'HeatingQC_Fa|BsmtQual_Tencode', 'Neighborhood_OldTown|Alley_Grvl', 'MiscFeature_Shed|WoodDeckSF', 'Utilities_Tencode|Exterior1st_MetalSd', 'SaleType_ConLD|GarageType_Attchd', 'BsmtQual_TA|Exterior2nd_Wd Sdng', 'GarageQual_Fa|HouseStyle_2.5Unf', 'BsmtCond_Tencode|GarageYrBlt', 'LotShape_Reg|LotArea', 'Fireplaces|Street_Pave', 'HeatingQC_Fa|HouseStyle_1.5Unf', 'KitchenAbvGr|GarageType_2Types', 'Foundation_PConc|Neighborhood_ClearCr', 'TotRmsAbvGrd|BldgType_Tencode', 'BsmtCond_Gd|Exterior1st_VinylSd', 'GarageCond_Po|BsmtCond_Po', 'Electrical_Tencode|PavedDrive_Y', 'CentralAir_Tencode|SaleType_COD', 'LandSlope_Tencode|BedroomAbvGr', 'BsmtFinType2_GLQ|Exterior1st_Plywood', 'GarageType_Basment|Foundation_Slab', 'Condition2_Norm|LotConfig_Inside', 'HeatingQC_Gd|GarageCond_Ex', 'FullBath|Electrical_FuseF', 'YearRemodAdd|Exterior2nd_VinylSd', 'EnclosedPorch|GarageYrBlt', 'BldgType_Twnhs|GarageCond_Fa', 'GarageArea|Functional_Mod', 'Alley_Pave|WoodDeckSF', 'BsmtQual_Tencode|PoolArea', 'BsmtFinType1_BLQ|PavedDrive_Y', 'LotShape_Tencode|BsmtFinType1_GLQ', 'BsmtFinType1_Tencode|SaleCondition_Partial', 'HouseStyle_SLvl|HouseStyle_2Story', 'BsmtFinType2_ALQ|PoolQC_Tencode', 'ExterQual_TA|BsmtCond_Gd', 'GarageCond_TA|ExterCond_TA', 'Neighborhood_BrDale|BsmtCond_Tencode', 'RoofStyle_Gambrel|Alley_Grvl', 'BsmtFinType2_Tencode|SaleCondition_Abnorml', 'GarageCond_Fa|Exterior2nd_Plywood', 'ExterCond_Gd|Exterior1st_Plywood', 'GarageCond_TA|BsmtCond_Gd', 'Neighborhood_Veenker|Alley_Grvl', '2ndFlrSF|BsmtCond_Po', 'Exterior1st_Stucco|MoSold', 'BsmtFinType2_LwQ|Condition1_Tencode', 'Foundation_Tencode|RoofStyle_Gambrel', 'Neighborhood_Mitchel|Exterior1st_AsbShng', 'HeatingQC_TA|BsmtFinType1_Rec', 'FireplaceQu_Tencode|Exterior1st_BrkFace', 'PoolQC_Tencode|LotConfig_Tencode', 'PavedDrive_Tencode|BsmtCond_TA', 'Functional_Min1|2ndFlrSF', 'LandContour_Bnk|CentralAir_Y', 'HeatingQC_Ex|BsmtFinType2_LwQ', 'MiscVal|Neighborhood_NWAmes', 'RoofMatl_Tar&Grv|Condition2_Norm', 'HeatingQC_TA|Functional_Min1', 'KitchenAbvGr|GarageType_Basment', 'LotShape_IR2|BsmtFinType2_Tencode', 'FullBath|SaleCondition_Partial', 'BsmtExposure_Tencode|BsmtFinType1_Unf', 'PavedDrive_P|Functional_Min2', 'ExterQual_Ex|Fence_GdWo', 'GarageCond_Ex|Exterior1st_Tencode', 'GarageCond_Gd|BsmtFinType1_LwQ', 'Foundation_Tencode|MSZoning_RM', 'FireplaceQu_Fa|BsmtCond_Po', 'BsmtQual_TA|HouseStyle_SLvl', 'GarageType_2Types|LotConfig_Inside', 'BsmtFinType2_Rec|SaleCondition_Abnorml', 'BsmtQual_Ex|MiscFeature_Tencode', 'BsmtFinType2_Unf|Street_Pave', 'HeatingQC_Fa|LandSlope_Gtl', 'Exterior2nd_Stone|FireplaceQu_Fa', 'ExterQual_Gd|Exterior2nd_Wd Shng', 'GarageQual_TA|Condition2_Tencode', 'RoofStyle_Gambrel|BldgType_TwnhsE', 'Exterior1st_Stucco|BsmtExposure_Mn', 'Heating_GasW|BsmtExposure_Av', 'Condition1_Artery|ExterQual_Ex', 'GarageQual_Fa|BsmtFinType1_GLQ', 'Exterior1st_CemntBd|FireplaceQu_TA', 'SaleType_ConLI|LowQualFinSF', 'FireplaceQu_Tencode|Exterior1st_BrkComm', 'GarageQual_Fa|CentralAir_N', 'BsmtCond_Po|CentralAir_N', 'BsmtFinType1_BLQ|RoofStyle_Gambrel', 'LandContour_Low|BsmtExposure_No', 'Condition1_Tencode|HouseStyle_1.5Fin', 'Exterior2nd_Wd Sdng|KitchenQual_TA', 'GarageQual_Fa|Street_Grvl', 'GarageFinish_RFn|CentralAir_N', 'FireplaceQu_TA|KitchenQual_TA', 'Electrical_Tencode|MSZoning_RL', 'YrSold|2ndFlrSF', 'Heating_Tencode|MiscFeature_Gar2', 'MiscFeature_Tencode|PoolArea', 'FireplaceQu_TA|LotConfig_Inside', 'Neighborhood_BrkSide|MasVnrType_Stone', 'MiscFeature_Othr|GarageFinish_Tencode', 'GarageCond_Gd|MasVnrType_Tencode', 'RoofMatl_Tencode|SaleCondition_Family', 'Exterior2nd_Stone|Exterior1st_VinylSd', 'Neighborhood_SWISU|BsmtFinType1_GLQ', 'LandSlope_Tencode|SaleCondition_Family', 'PavedDrive_Tencode|Exterior1st_CemntBd', 'SaleType_WD|Neighborhood_Gilbert', 'FireplaceQu_Fa|BsmtFinType2_LwQ', 'GarageCond_TA|BsmtCond_Tencode', 'LotShape_Reg|Exterior1st_AsbShng', 'Condition2_Tencode|Neighborhood_NWAmes', 'SaleCondition_Family|Condition1_RRAn', 'BldgType_Duplex|Neighborhood_SWISU', 'HouseStyle_1.5Unf|MSSubClass', 'Exterior2nd_Wd Sdng|Neighborhood_Crawfor', 'Exterior1st_BrkFace|Condition1_Tencode', 'GarageCond_Tencode|BsmtFinType1_Unf', 'CentralAir_Y|Neighborhood_BrkSide', 'MSZoning_RM|Exterior2nd_HdBoard', 'Neighborhood_OldTown|KitchenQual_Fa', 'HouseStyle_1Story|GarageQual_TA', 'GarageCond_TA|MasVnrType_Stone', 'BldgType_2fmCon|LandSlope_Mod', 'Exterior2nd_Stone|FireplaceQu_Ex', 'LandContour_HLS|LotConfig_Tencode', 'BsmtFinType1_Tencode|PavedDrive_P', 'Fence_GdWo|HouseStyle_1.5Fin', 'LotShape_IR1|Exterior1st_WdShing', 'HeatingQC_Ex|MSZoning_RH', 'Condition1_PosN|BsmtCond_Gd', 'OverallQual|SaleCondition_Normal', 'RoofStyle_Gambrel|BsmtCond_Gd', 'Utilities_Tencode|Functional_Tencode', 'GarageCond_Po|CentralAir_N', 'PavedDrive_Y|GarageType_2Types', 'Exterior1st_HdBoard|CentralAir_Tencode', 'BsmtFinSF2|Functional_Maj2', 'RoofMatl_CompShg|BsmtQual_Gd', 'Exterior2nd_Stone|HouseStyle_2Story', 'Neighborhood_Crawfor|WoodDeckSF', 'Street_Tencode|LandSlope_Sev', '3SsnPorch|ScreenPorch', 'ExterCond_Gd|MasVnrType_Tencode', 'Neighborhood_Edwards|PavedDrive_Y', 'LandContour_Lvl|FireplaceQu_TA', 'Functional_Tencode|Street_Pave', 'BsmtFinType2_ALQ|OverallCond', 'Utilities_Tencode|SaleType_COD', 'BsmtQual_Tencode|SaleType_WD', 'RoofMatl_Tar&Grv|GarageType_CarPort', 'MiscVal|BsmtQual_Fa', 'MSZoning_RM|Foundation_Slab', 'ExterQual_TA|Fence_GdPrv', 'MiscVal|FireplaceQu_Fa', 'RoofMatl_WdShngl|MSZoning_RL', 'BsmtExposure_Gd|Exterior1st_Plywood', 'SaleType_Tencode|Exterior2nd_MetalSd', 'SaleCondition_Tencode|Foundation_Tencode', 'BldgType_Duplex|Exterior2nd_Stone', 'Alley_Grvl|MasVnrArea', 'Neighborhood_SWISU|Condition1_Tencode', 'Exterior1st_BrkFace|Utilities_AllPub', 'GarageType_Detchd|Exterior1st_MetalSd', 'YearBuilt|Fence_MnWw', 'BldgType_Duplex|Condition2_Artery', 'LowQualFinSF|Functional_Min1', 'FireplaceQu_Po|KitchenQual_TA', 'Fireplaces|LandContour_HLS', 'SaleType_ConLw|GarageType_2Types', 'FullBath|GarageYrBlt', 'Foundation_BrkTil|Exterior1st_Wd Sdng', 'SaleType_Tencode|BsmtQual_Gd', 'Neighborhood_Tencode|GarageCond_Fa', 'Heating_Grav|LotConfig_Corner', 'KitchenQual_Ex|KitchenQual_Fa', 'HouseStyle_1.5Unf|BsmtCond_Fa', 'Neighborhood_SWISU|BsmtQual_TA', 'KitchenQual_Fa|Street_Pave', 'PavedDrive_N|BsmtQual_TA', 'BsmtExposure_Tencode|BsmtFinType1_GLQ', 'BsmtFinSF1|Exterior1st_MetalSd', 'GarageType_Attchd|BldgType_TwnhsE', 'Electrical_Tencode|MasVnrArea', 'Functional_Typ|Condition2_Tencode', 'LandContour_Lvl|MSSubClass', 'PoolQC_Tencode|GarageQual_Po', 'CentralAir_Y|BsmtExposure_Mn', 'RoofMatl_Tar&Grv|LotConfig_CulDSac', 'GarageQual_TA|GarageCond_Fa', 'Neighborhood_Timber|Exterior1st_Wd Sdng', 'MiscFeature_Othr|ExterCond_Gd', 'LotArea|Condition1_PosN', 'GarageType_Detchd|FireplaceQu_TA', 'MSZoning_RL|MSZoning_RH', 'BsmtFinSF1|BsmtExposure_Mn', 'Neighborhood_Edwards|Exterior1st_Plywood', 'Street_Tencode|Condition2_Tencode', 'BsmtExposure_Tencode|HouseStyle_1.5Fin', 'Neighborhood_Mitchel|LowQualFinSF', 'GarageType_Tencode|BsmtFinType1_Rec', 'FireplaceQu_Ex|Exterior2nd_Brk Cmn', 'HalfBath|Exterior1st_Wd Sdng', 'BsmtFinType1_LwQ|ExterCond_Fa', 'LotShape_IR1|ScreenPorch', 'SaleType_New|ExterQual_Ex', 'ExterQual_Gd|Foundation_Slab', 'Exterior2nd_BrkFace|BsmtExposure_Gd', 'Neighborhood_BrDale|SaleCondition_Abnorml', 'Neighborhood_Mitchel|LandSlope_Mod', 'Neighborhood_CollgCr|PoolArea', 'Neighborhood_SWISU|Functional_Maj1', 'Fence_GdWo|Exterior2nd_Brk Cmn', 'SaleType_Tencode|Neighborhood_BrkSide', 'PavedDrive_Tencode|RoofStyle_Gambrel', 'ExterCond_TA|SaleType_Oth', 'Electrical_FuseF|GarageType_Basment', 'EnclosedPorch|Exterior2nd_AsphShn', 'GarageType_CarPort|MSZoning_RH', 'SaleType_New|MSZoning_FV', 'OverallQual|LotConfig_CulDSac', 'KitchenQual_Ex|MSZoning_FV', 'LandSlope_Mod|Neighborhood_StoneBr', 'BsmtQual_Tencode|LandContour_Lvl', 'HeatingQC_Ex|FireplaceQu_Fa', 'Exterior2nd_MetalSd|Functional_Min1', 'HeatingQC_Tencode|ExterQual_Fa', 'GrLivArea|GarageCond_Tencode', 'PavedDrive_P|Foundation_Slab', 'Electrical_SBrkr|SaleCondition_Partial', 'LandContour_Tencode|Fence_GdPrv', 'HeatingQC_TA|GarageType_Basment', 'Fence_Tencode|Condition2_Artery', 'PavedDrive_Tencode|GarageType_Attchd', 'GrLivArea|MSZoning_RM', 'ScreenPorch|BsmtExposure_Mn', 'SaleType_ConLw|RoofMatl_Tar&Grv', 'Exterior2nd_VinylSd|TotRmsAbvGrd', 'Neighborhood_NridgHt|MSZoning_Tencode', 'YrSold|EnclosedPorch', 'LandSlope_Sev|Foundation_Tencode', 'HeatingQC_Tencode|MasVnrType_BrkCmn', 'LotConfig_Corner|LandSlope_Gtl', 'KitchenQual_Ex|Exterior2nd_Wd Shng', 'BsmtFinType1_Rec|RoofStyle_Tencode', 'Functional_Typ|RoofMatl_WdShngl', 'GarageCond_Tencode|Exterior2nd_HdBoard', 'BsmtHalfBath|GarageQual_Fa', 'LandSlope_Sev|Neighborhood_MeadowV', 'LandContour_Tencode|ExterQual_Fa', 'RoofStyle_Tencode|Fence_MnPrv', 'Exterior1st_Tencode|BsmtExposure_Mn', 'TotalBsmtSF|Neighborhood_NoRidge', 'Street_Tencode|Heating_GasA', 'HeatingQC_TA|Neighborhood_NoRidge', 'BsmtExposure_Av|Exterior2nd_Wd Shng', 'GarageCond_Gd|MasVnrType_None', 'Exterior2nd_Stone|LandSlope_Tencode', 'BsmtCond_Gd|LotConfig_Inside', 'SaleType_ConLD|Exterior1st_VinylSd', 'LotConfig_FR2|ExterCond_Fa', 'BsmtExposure_Tencode|Fence_GdPrv', 'Alley_Pave|OpenPorchSF', 'BsmtQual_Gd|MasVnrType_Stone', 'Condition1_Artery|Exterior2nd_BrkFace', 'Exterior1st_BrkComm|Condition2_Norm', 'KitchenAbvGr|PavedDrive_P', 'Electrical_FuseP|SaleType_COD', 'ExterQual_TA|HouseStyle_1Story', 'BsmtFinSF2|Exterior2nd_VinylSd', 'Neighborhood_Blmngtn|Neighborhood_StoneBr', 'Exterior2nd_VinylSd|MasVnrType_None', 'MasVnrType_None|SaleCondition_Abnorml', 'MoSold|HouseStyle_1.5Fin', 'Condition1_Feedr|Exterior2nd_Wd Sdng', 'SaleCondition_Family|BsmtQual_Gd', 'BsmtFinType2_BLQ|Fence_GdPrv', 'LandContour_Bnk|MasVnrType_Stone', 'BsmtFinType1_Unf|Exterior1st_Tencode', 'MiscFeature_Tencode|Street_Pave', 'Utilities_Tencode|TotalBsmtSF', 'ExterCond_TA|BedroomAbvGr', 'Neighborhood_ClearCr|ScreenPorch', 'BsmtFinType1_Tencode|BsmtFullBath', 'LandSlope_Mod|SaleType_New', 'ExterQual_TA|Condition2_Artery', 'FireplaceQu_Ex|Exterior2nd_AsphShn', 'ExterCond_Fa|GarageType_2Types', 'Condition1_Tencode|SaleCondition_Abnorml', 'Street_Grvl|Foundation_Slab', 'BsmtFinType1_ALQ|BsmtFullBath', 'LandContour_Bnk|MiscFeature_Gar2', 'BsmtCond_Tencode|BldgType_1Fam', 'Neighborhood_SWISU|Exterior1st_WdShing', 'BsmtExposure_Av|2ndFlrSF', 'OverallQual|Electrical_Tencode', 'LotShape_Reg|Neighborhood_NoRidge', 'Exterior2nd_Brk Cmn|Neighborhood_SawyerW', 'Neighborhood_NAmes|GarageType_Basment', 'LotConfig_CulDSac|MiscFeature_Tencode', 'LotFrontage|GarageType_Basment', 'Exterior2nd_MetalSd|HouseStyle_SLvl', 'GarageCond_Gd|Exterior2nd_CmentBd', 'SaleCondition_Partial|Exterior2nd_Plywood', 'Neighborhood_NWAmes|CentralAir_Tencode', 'HalfBath|Street_Grvl', 'RoofMatl_CompShg|CentralAir_N', 'EnclosedPorch|MasVnrType_None', 'MasVnrArea|BsmtQual_Gd', 'SaleType_New|GarageType_2Types', 'LandSlope_Mod|MSSubClass', 'PavedDrive_Tencode|KitchenQual_Tencode', 'SaleCondition_Alloca|Functional_Mod', 'BsmtQual_Tencode|Alley_Grvl', 'BldgType_Twnhs|BsmtFinSF1', 'BsmtFinSF1|OverallCond', 'BsmtFinType2_Tencode|Foundation_BrkTil', 'GarageFinish_Fin|Exterior2nd_AsphShn', 'LotConfig_CulDSac|Neighborhood_Sawyer', 'LotFrontage|Foundation_Slab', 'LotShape_IR2|SaleType_Tencode', 'KitchenQual_Gd|BsmtExposure_Gd', 'BsmtExposure_Tencode|RoofMatl_Tencode', 'HeatingQC_TA|Exterior1st_Tencode', 'LotShape_IR2|BsmtExposure_No', 'GarageType_Basment|Exterior1st_Tencode', 'TotRmsAbvGrd|BsmtUnfSF', 'GarageType_Detchd|Street_Grvl', 'BsmtQual_Ex|HeatingQC_Tencode', 'BsmtFinType1_Rec|Exterior1st_WdShing', 'RoofMatl_Tar&Grv|Neighborhood_StoneBr', 'Neighborhood_ClearCr|Alley_Tencode', 'BsmtQual_Gd|Fence_MnWw', 'FireplaceQu_Tencode|BsmtQual_Gd', 'RoofStyle_Tencode|Utilities_AllPub', 'Exterior2nd_VinylSd|ExterQual_Gd', 'RoofStyle_Gable|GarageType_BuiltIn', 'BsmtFinType2_GLQ|Exterior1st_Stucco', 'KitchenAbvGr|RoofStyle_Hip', 'Heating_Tencode|ExterCond_Tencode', 'Electrical_FuseP|FireplaceQu_Ex', 'Exterior2nd_Stucco|KitchenQual_Fa', 'Exterior2nd_AsbShng|BldgType_TwnhsE', 'YearRemodAdd|Neighborhood_MeadowV', 'Neighborhood_Somerst|LotConfig_Inside', 'FireplaceQu_Gd|LotFrontage', 'BsmtQual_Tencode|Functional_Mod', 'LowQualFinSF|BldgType_1Fam', 'RoofStyle_Flat|ExterCond_TA', 'SaleType_WD|GarageType_BuiltIn', 'FireplaceQu_Fa|CentralAir_Y', 'OverallQual|BedroomAbvGr', 'TotRmsAbvGrd|ExterQual_Gd', '1stFlrSF|Exterior1st_BrkComm', 'Functional_Min1|Alley_Grvl', 'CentralAir_Y|Fence_MnWw', 'Alley_Grvl|SaleType_CWD', 'SaleType_ConLI|Exterior1st_Tencode', 'GarageCond_TA|Exterior2nd_Wd Sdng', 'Exterior1st_Stucco|Functional_Mod', 'Neighborhood_OldTown|GarageCond_Ex', 'GarageCond_Po|Heating_GasW', 'KitchenAbvGr|BsmtFinType1_Tencode', 'GarageType_Detchd|Condition1_PosA', 'FullBath|Fireplaces', 'PavedDrive_Tencode|MasVnrType_None', 'BsmtQual_Ex|BsmtCond_TA', 'Fence_Tencode|ExterQual_Tencode', 'Heating_Grav|PavedDrive_Tencode', 'Exterior1st_WdShing|MasVnrType_BrkFace', 'Exterior1st_BrkFace|Foundation_Slab', 'FireplaceQu_Fa|Functional_Min2', 'LandSlope_Mod|PoolQC_Tencode', 'LotShape_Tencode|GarageCond_Tencode', 'GarageCond_Fa|Foundation_CBlock', 'Electrical_FuseF|LotConfig_Inside', 'BsmtHalfBath|SaleCondition_Family', 'Condition1_Norm|Exterior2nd_AsphShn', 'HeatingQC_Gd|SaleType_WD', 'Utilities_Tencode|BsmtExposure_No', 'Neighborhood_StoneBr|BsmtFinType1_Unf', 'GarageCond_Po|HouseStyle_Tencode', 'SaleType_COD|MasVnrType_Tencode', 'ExterCond_Gd|GarageQual_Tencode', 'BsmtFinType1_Unf|LotShape_IR3', 'LotShape_Reg|HouseStyle_1.5Unf', 'Functional_Maj2|HouseStyle_SLvl', 'ExterCond_Tencode|GarageType_Basment', '2ndFlrSF|Neighborhood_Crawfor', 'EnclosedPorch|Neighborhood_OldTown', 'Exterior2nd_Plywood|MasVnrType_Stone', 'EnclosedPorch|BsmtFullBath', 'Electrical_FuseP|HouseStyle_2Story', 'Exterior1st_Stucco|GarageCond_Gd', 'Electrical_FuseF|KitchenQual_TA', 'LotConfig_Corner|GarageYrBlt', 'BedroomAbvGr|BsmtCond_TA', 'LotConfig_Corner|BsmtFinType1_ALQ', 'Street_Tencode|Neighborhood_ClearCr', 'BldgType_2fmCon|3SsnPorch', 'LandSlope_Sev|Foundation_Slab', 'BsmtQual_Fa|BsmtFinType1_Rec', 'Street_Tencode|HouseStyle_Tencode', 'Neighborhood_Somerst|GarageFinish_Tencode', 'MSZoning_C (all)|ExterQual_Fa', 'TotRmsAbvGrd|ExterCond_Fa', 'PavedDrive_Tencode|Exterior1st_WdShing', 'Neighborhood_NPkVill|1stFlrSF', 'CentralAir_N|RoofMatl_WdShngl', 'Street_Pave|LotConfig_Inside', 'ExterCond_TA|FullBath', 'PoolQC_Tencode|MSZoning_FV', 'SaleType_WD|MiscFeature_Gar2', 'Exterior2nd_VinylSd|BsmtFinType1_ALQ', 'BsmtCond_Gd|CentralAir_Tencode', 'BldgType_Twnhs|BsmtCond_Gd', 'MSZoning_FV|Neighborhood_Timber', 'GrLivArea|GarageFinish_Fin', 'HeatingQC_TA|GarageType_BuiltIn', 'GarageArea|BsmtFinType2_Unf', 'BsmtFinType2_Unf|PoolArea', 'GarageCond_TA|HalfBath', 'SaleCondition_Partial|MiscFeature_Gar2', 'ExterCond_Tencode|MiscFeature_Gar2', 'TotRmsAbvGrd|Fence_MnWw', 'GarageType_Detchd|Foundation_Tencode', 'KitchenQual_Fa|Foundation_CBlock', 'LandContour_Bnk|HouseStyle_2Story', 'GarageFinish_Tencode|Condition2_Artery', 'BsmtExposure_Tencode|LandContour_Bnk', 'HeatingQC_Fa|BsmtExposure_Mn', 'HeatingQC_Gd|LandContour_Tencode', 'Fireplaces|LandContour_Lvl', 'BsmtFinType1_Unf|Exterior2nd_Plywood', 'Neighborhood_BrDale|BsmtFullBath', 'BsmtExposure_Av|HouseStyle_1.5Fin', 'Condition1_Artery|FireplaceQu_Po', 'MoSold|ExterQual_Gd', 'LotConfig_FR2|KitchenQual_Fa', 'BldgType_1Fam|RoofMatl_WdShngl', 'Neighborhood_Tencode|Foundation_Tencode', 'BldgType_Twnhs|BsmtFinType2_Rec', 'FireplaceQu_Po|SaleCondition_Alloca', 'GarageFinish_Fin|SaleCondition_Partial', 'Functional_Tencode|Neighborhood_Tencode', 'MiscFeature_Othr|GarageCond_Fa', 'Condition1_PosN|RoofStyle_Tencode', 'SaleCondition_Tencode|GarageCond_Po', 'Exterior1st_HdBoard|RoofMatl_Tar&Grv', 'BldgType_Twnhs|BsmtFinType1_GLQ', 'OpenPorchSF|CentralAir_Tencode', 'BsmtFinType1_LwQ|MasVnrArea', 'LotArea|Exterior2nd_Brk Cmn', 'SaleType_ConLw|BsmtExposure_No', 'Neighborhood_Veenker|Fence_MnPrv', 'SaleCondition_Family|Neighborhood_BrkSide', 'LandSlope_Mod|Neighborhood_IDOTRR', 'HeatingQC_Ex|Neighborhood_SawyerW', 'GarageCond_Ex|Exterior1st_MetalSd', 'Neighborhood_BrkSide|Exterior1st_Tencode', 'Fireplaces|Condition2_Norm', 'LandContour_Low|MasVnrType_BrkCmn', 'Exterior1st_Stucco|GarageType_CarPort', 'YrSold|GarageArea', 'LandContour_HLS|MasVnrType_Stone', 'SaleType_WD|SaleCondition_Normal', 'LandContour_Bnk|BldgType_TwnhsE', 'PoolQC_Tencode|BsmtCond_TA', 'FireplaceQu_Ex|SaleType_Oth', 'HouseStyle_1.5Unf|Utilities_AllPub', 'LandSlope_Sev|BsmtCond_Po', 'BsmtFinType2_Tencode|Neighborhood_OldTown', 'Condition1_Tencode|BsmtExposure_Mn', 'FireplaceQu_Fa|Exterior2nd_HdBoard', 'GarageQual_Po|Exterior2nd_Plywood', 'GarageQual_TA|ExterQual_Tencode', 'Alley_Tencode|Condition2_Norm', 'BsmtFinType2_GLQ|GarageFinish_Tencode', 'HeatingQC_Fa|GarageFinish_Fin', 'Foundation_CBlock|ExterQual_Tencode', 'Neighborhood_BrDale|SaleType_WD', 'BsmtHalfBath|Functional_Min1', 'GarageFinish_Fin|FireplaceQu_TA', 'Exterior2nd_Stucco|Exterior2nd_HdBoard', 'GarageCond_Gd|TotRmsAbvGrd', 'HouseStyle_Tencode|Functional_Maj2', 'KitchenQual_Fa|MSZoning_RH', 'Fence_GdPrv|SaleCondition_Partial', 'SaleType_WD|2ndFlrSF', 'Fence_Tencode|Neighborhood_Crawfor', 'HouseStyle_Tencode|SaleType_ConLD', 'PavedDrive_Y|ScreenPorch', 'LotShape_IR2|GarageCond_Tencode', 'ExterCond_TA|PoolQC_Tencode', 'Functional_Min1|GarageYrBlt', 'YrSold|Exterior2nd_Wd Sdng', 'Neighborhood_BrDale|Exterior1st_Wd Sdng', 'FireplaceQu_Gd|Neighborhood_NAmes', 'LandContour_Low|MasVnrType_Stone', 'BsmtUnfSF|SaleType_CWD', 'Neighborhood_NWAmes|BldgType_1Fam', 'GrLivArea|LotConfig_Inside', 'KitchenQual_Tencode|MSZoning_Tencode', 'SaleType_ConLI|PoolQC_Tencode', 'SaleCondition_Normal|Exterior2nd_Wd Shng', 'BsmtQual_TA|Neighborhood_NWAmes', 'HouseStyle_SFoyer|Exterior1st_BrkComm', 'Exterior1st_HdBoard|Condition2_Artery', 'Fireplaces|BsmtFinType2_ALQ', 'GarageFinish_Fin|LotConfig_CulDSac', 'MiscVal|WoodDeckSF', 'Condition1_Artery|Functional_Mod', 'Foundation_PConc|BsmtExposure_Av', 'ExterCond_TA|GarageQual_TA', 'LandSlope_Sev|BldgType_TwnhsE', 'Neighborhood_BrDale|Exterior1st_VinylSd', 'LandContour_Bnk|GarageCond_Ex', 'LotShape_Tencode|LowQualFinSF', 'KitchenQual_TA|Exterior2nd_Plywood', 'GarageType_CarPort|BsmtExposure_Gd', 'Functional_Maj1|KitchenQual_TA', 'RoofStyle_Hip|Exterior1st_MetalSd', 'GarageType_Attchd|Condition1_Norm', 'ExterQual_Gd|MSZoning_RL', 'Neighborhood_OldTown|Neighborhood_MeadowV', 'Neighborhood_ClearCr|GarageCars', 'Condition2_Tencode|SaleType_Oth', 'Fireplaces|ExterQual_Fa', 'Functional_Maj1|CentralAir_Tencode', 'Exterior2nd_VinylSd|MasVnrType_Stone', 'MiscFeature_Shed|Neighborhood_BrkSide', 'LowQualFinSF|GarageType_CarPort', 'LandContour_Low|ExterCond_Gd', 'HouseStyle_1Story|MSZoning_Tencode', 'ExterCond_TA|BsmtQual_Gd', 'SaleCondition_Family|Exterior1st_Tencode', 'HalfBath|HouseStyle_2Story', 'PoolQC_Tencode|SaleType_WD', 'LandContour_Low|Exterior2nd_Brk Cmn', 'HouseStyle_2.5Unf|Exterior1st_Plywood', 'CentralAir_Y|CentralAir_Tencode', 'RoofStyle_Flat|GarageFinish_Tencode', 'Neighborhood_NWAmes|Street_Pave', 'GarageType_Tencode|Foundation_CBlock', 'Neighborhood_OldTown|Neighborhood_SWISU', 'Neighborhood_ClearCr|Electrical_Tencode', 'Foundation_Stone|RoofMatl_CompShg', 'KitchenAbvGr|Exterior1st_AsbShng', 'Neighborhood_SWISU|MSSubClass', 'SaleType_COD|FireplaceQu_TA', 'BsmtQual_Fa|BsmtExposure_No', 'Condition1_Norm|ExterCond_Fa', 'KitchenQual_Tencode|HouseStyle_SLvl', 'FullBath|MSZoning_C (all)', 'Fireplaces|HouseStyle_1.5Unf', 'RoofMatl_Tencode|Functional_Maj2', 'BsmtUnfSF|Neighborhood_SawyerW', 'Exterior2nd_CmentBd|SaleType_COD', 'Neighborhood_BrDale|Condition2_Artery', 'Neighborhood_SawyerW|ExterQual_Fa', 'KitchenAbvGr|Neighborhood_NPkVill', 'GarageFinish_Fin|MSZoning_C (all)', 'Neighborhood_Edwards|Foundation_Slab', 'PavedDrive_Tencode|Neighborhood_NAmes', 'BsmtQual_TA|MiscFeature_Shed', 'BldgType_TwnhsE|BldgType_1Fam', 'BsmtExposure_Av|BldgType_TwnhsE', 'BsmtFinType1_Rec|Utilities_AllPub', 'KitchenQual_Tencode|BsmtExposure_Mn', 'Exterior1st_BrkFace|SaleType_COD', 'Heating_GasW|GarageType_Attchd', 'KitchenQual_Ex|Exterior2nd_HdBoard', 'Exterior2nd_Stone|Neighborhood_IDOTRR', 'Neighborhood_Crawfor|BsmtExposure_Mn', 'Condition1_Norm|Exterior2nd_Wd Sdng', 'GarageCars|MiscFeature_Shed', 'BsmtQual_Tencode|Neighborhood_Gilbert', 'Neighborhood_NoRidge', 'Neighborhood_NoRidge|Exterior2nd_Plywood', 'HeatingQC_Ex|GarageFinish_RFn', 'LandSlope_Mod|MSZoning_RH', 'Neighborhood_Sawyer|BsmtCond_TA', 'Neighborhood_ClearCr|FireplaceQu_Po', 'MiscVal|Neighborhood_StoneBr', 'LotConfig_Tencode|Exterior1st_Wd Sdng', 'SaleType_Tencode|MSZoning_C (all)', 'MiscVal|GarageFinish_RFn', 'GarageCond_Tencode|Street_Pave', 'Exterior2nd_AsbShng|TotalBsmtSF', 'Neighborhood_Somerst|Street_Pave', 'LotConfig_Tencode|MSZoning_FV', 'Exterior1st_BrkFace|GarageQual_Tencode', 'BsmtExposure_No|Neighborhood_Timber', 'MSZoning_C (all)|MSZoning_FV', 'LotConfig_CulDSac|BsmtUnfSF', 'BsmtFinType2_Rec|MasVnrType_Tencode', 'Neighborhood_NridgHt|Neighborhood_ClearCr', 'SaleType_COD|Exterior2nd_HdBoard', 'KitchenQual_Ex|LotShape_IR3', 'Alley_Tencode|GarageYrBlt', 'LotFrontage|MasVnrType_None', 'GarageType_Detchd|Neighborhood_Blmngtn', 'Heating_Grav|GarageQual_Tencode', 'Electrical_Tencode|Condition1_RRAe', 'Exterior1st_Stucco|Neighborhood_Veenker', 'MasVnrType_BrkCmn|SaleCondition_Normal', 'Neighborhood_OldTown|BsmtFinSF1', 'FireplaceQu_Gd|BsmtFinType1_Unf', 'RoofStyle_Flat|Neighborhood_NoRidge', 'Electrical_SBrkr|BsmtFinType1_LwQ', 'RoofMatl_Tencode|Neighborhood_MeadowV', 'BedroomAbvGr|Exterior2nd_Plywood', 'BedroomAbvGr|HouseStyle_SLvl', 'FullBath|HeatingQC_Tencode', 'LandContour_Lvl|Neighborhood_Sawyer', 'BedroomAbvGr|LandSlope_Gtl', 'Neighborhood_Veenker|Condition1_Norm', 'Exterior2nd_Stucco|Functional_Maj2', 'Exterior2nd_BrkFace|GarageType_BuiltIn', 'Functional_Typ|MiscFeature_Shed', 'Neighborhood_ClearCr|Condition1_RRAn', 'SaleType_Tencode|SaleType_WD', 'BsmtFinType2_BLQ|BldgType_TwnhsE', 'Fence_GdPrv|BsmtCond_TA', 'HalfBath|Exterior1st_VinylSd', 'GarageCond_Gd|BsmtExposure_No', 'LandSlope_Mod|Exterior1st_Wd Sdng', 'Fence_GdPrv|Neighborhood_IDOTRR', 'Functional_Maj1|BsmtExposure_No', 'Neighborhood_Sawyer|Neighborhood_BrkSide', 'PoolQC_Tencode|Exterior1st_Plywood', 'Condition1_PosA|BsmtFinType2_LwQ', 'HouseStyle_1Story|SaleType_Tencode', 'Utilities_Tencode|BsmtCond_Fa', 'BsmtQual_TA|PoolArea', 'SaleCondition_Tencode|Neighborhood_Veenker', 'HalfBath|ExterCond_Fa', 'Electrical_FuseA|BsmtFinType2_BLQ', 'Heating_Grav|SaleType_New', 'PavedDrive_Tencode|FireplaceQu_Ex', 'BsmtExposure_Tencode|Neighborhood_NWAmes', 'LotFrontage|LandSlope_Tencode', 'Neighborhood_ClearCr|BsmtExposure_Gd', 'Exterior1st_BrkFace|BsmtFinSF1', 'ExterCond_TA|Neighborhood_IDOTRR', 'GarageCond_TA|RoofStyle_Gambrel', 'Functional_Min2|GarageType_2Types', 'BsmtFinType2_BLQ|Neighborhood_Sawyer', 'GarageFinish_Unf|Neighborhood_Blmngtn', 'Neighborhood_ClearCr|Neighborhood_Gilbert', 'Neighborhood_Edwards|Exterior2nd_CmentBd', 'LotShape_IR2|CentralAir_Tencode', 'GarageCond_TA|Functional_Mod', 'BldgType_Twnhs|Condition1_Feedr', 'LandSlope_Mod|Fence_MnPrv', 'BsmtExposure_Av|Fence_MnPrv', 'HeatingQC_Ex|Exterior2nd_Plywood', 'HouseStyle_Tencode|LowQualFinSF', 'Exterior2nd_Stone|RoofStyle_Hip', 'ScreenPorch|Neighborhood_BrkSide', 'LandContour_Tencode|TotRmsAbvGrd', 'Fence_Tencode|OverallCond', 'PavedDrive_N|GarageQual_Po', 'Neighborhood_CollgCr|LandContour_HLS', 'Foundation_CBlock|LotConfig_Inside', 'SaleType_ConLD|GarageQual_TA', 'KitchenAbvGr|FireplaceQu_TA', 'BsmtFinType2_Rec|Functional_Min2', 'GarageType_Tencode|3SsnPorch', 'TotalBsmtSF|Neighborhood_Gilbert', 'BsmtFinType1_BLQ|Neighborhood_SawyerW', 'Exterior2nd_AsbShng|MSZoning_RH', 'Exterior2nd_MetalSd|MasVnrArea', 'FireplaceQu_Gd|PavedDrive_Y', 'BsmtFullBath|Street_Grvl', 'MiscFeature_Tencode|CentralAir_Tencode', '1stFlrSF|SaleType_CWD', 'Neighborhood_CollgCr|SaleCondition_Alloca', 'GarageArea|Condition2_Artery', 'RoofStyle_Hip|Exterior2nd_CmentBd', 'Neighborhood_Tencode|PoolQC_Tencode', 'FullBath|SaleType_New', '2ndFlrSF|BsmtCond_Gd', '2ndFlrSF|HouseStyle_2Story', 'BldgType_Twnhs|Foundation_Tencode', 'Exterior2nd_AsbShng|BedroomAbvGr', 'Alley_Pave|LotConfig_CulDSac', 'Electrical_SBrkr|GarageQual_Po', 'Electrical_FuseP|PoolQC_Tencode', 'Exterior2nd_MetalSd|MSZoning_RM', 'Electrical_SBrkr|BsmtQual_Fa', 'Condition1_Tencode|Street_Pave', 'OverallQual|Neighborhood_SWISU', 'GarageCond_TA|Neighborhood_CollgCr', 'BsmtExposure_Tencode|EnclosedPorch', '2ndFlrSF|MasVnrType_None', 'BsmtFinType2_GLQ|SaleType_Tencode', 'SaleCondition_Family|Neighborhood_StoneBr', 'SaleType_New|Neighborhood_MeadowV', 'Neighborhood_BrDale|SaleType_Oth', 'BsmtFullBath|Exterior2nd_HdBoard', 'Condition2_Norm|Exterior1st_Tencode', 'Fence_GdWo|Exterior1st_Tencode', 'Condition1_Artery|Neighborhood_NWAmes', 'Electrical_Tencode|Fence_Tencode', 'GarageQual_Po|MSZoning_Tencode', 'Exterior1st_VinylSd|Exterior1st_Wd Sdng', 'SaleCondition_Tencode|Functional_Tencode', 'BsmtFinType1_Rec|Street_Grvl', 'Heating_Tencode|ExterQual_Ex', 'FireplaceQu_Po|Condition1_PosN', 'Foundation_Tencode|Fence_MnPrv', 'GarageQual_TA|ExterCond_Tencode', 'MiscFeature_Othr|HeatingQC_Tencode', 'GarageType_BuiltIn|BsmtCond_TA', 'Exterior2nd_Stucco|RoofStyle_Shed', 'KitchenQual_Gd|LowQualFinSF', 'Exterior2nd_Tencode|BsmtExposure_Mn', 'Exterior1st_BrkFace|Foundation_CBlock', 'KitchenQual_TA|Fence_MnPrv', 'Condition1_RRAe|Neighborhood_NWAmes', 'Condition1_RRAe|Exterior2nd_Plywood', 'Electrical_FuseA|FireplaceQu_Ex', 'GarageType_BuiltIn|MSZoning_RM', 'SaleType_Oth|Alley_Grvl', 'LotShape_IR2|HouseStyle_Tencode', 'Functional_Tencode|FullBath', 'RoofStyle_Hip|HeatingQC_Gd', 'EnclosedPorch|FireplaceQu_Gd', 'Functional_Mod|MSZoning_FV', 'ExterQual_TA|BsmtFinSF2', 'Alley_Grvl|Neighborhood_Timber', 'Exterior1st_BrkFace|MiscFeature_Shed', 'Exterior1st_CemntBd|BsmtFinType1_GLQ', 'Alley_Grvl|Exterior1st_Plywood', 'Neighborhood_NoRidge|Neighborhood_Timber', 'Fence_GdWo|Exterior1st_MetalSd', 'Exterior2nd_MetalSd|Exterior1st_VinylSd', 'LandContour_HLS|Street_Grvl', 'Foundation_PConc|LotConfig_Inside', 'ExterCond_TA|BsmtFinType2_GLQ', 'TotalBsmtSF|RoofStyle_Tencode', 'Functional_Maj2|BsmtCond_TA', 'Exterior2nd_MetalSd|BsmtCond_Fa', 'BsmtExposure_Tencode|Electrical_SBrkr', 'Electrical_FuseP|LandContour_Lvl', 'BsmtHalfBath|KitchenQual_Tencode', 'GarageArea|Exterior2nd_Wd Shng', 'MiscFeature_Shed|BsmtFinType1_GLQ', 'Electrical_SBrkr|Condition2_Norm', 'MSZoning_RL|GarageType_2Types', 'LotConfig_Corner|MasVnrType_BrkCmn', 'Neighborhood_NridgHt|LotShape_Reg', 'Utilities_Tencode|Neighborhood_Sawyer', 'Foundation_Tencode|KitchenQual_Tencode', 'SaleType_ConLD|Exterior1st_Wd Sdng', 'SaleType_New|KitchenQual_Fa', 'KitchenQual_Ex|BldgType_TwnhsE', 'LandSlope_Tencode|GarageType_CarPort', 'KitchenAbvGr|HouseStyle_2.5Unf', 'RoofMatl_Tar&Grv|Foundation_Slab', 'Condition1_RRAn|Neighborhood_MeadowV', 'KitchenQual_Ex|BldgType_Tencode', 'Electrical_FuseF|GarageType_CarPort', 'Neighborhood_OldTown|BsmtQual_Fa', 'Exterior1st_Stucco|BsmtFinSF2', 'GarageCond_Gd|ExterQual_Tencode', 'Exterior1st_BrkFace|Exterior1st_VinylSd', 'Neighborhood_OldTown|MiscFeature_Gar2', 'Foundation_PConc|BsmtExposure_Gd', 'GarageCond_Tencode|GarageQual_Tencode', 'GarageType_Tencode|MiscFeature_Shed', 'BldgType_TwnhsE|BsmtExposure_Mn', '3SsnPorch|SaleType_New', 'Exterior1st_Plywood|GarageType_2Types', 'BsmtFullBath|FireplaceQu_Fa', 'Neighborhood_IDOTRR|HouseStyle_SLvl', 'GarageFinish_RFn|Fence_MnPrv', 'ExterQual_Gd|ExterQual_Fa', 'Neighborhood_NridgHt|Functional_Min1', 'Neighborhood_ClearCr|Neighborhood_BrkSide', 'Exterior2nd_Brk Cmn|Foundation_Slab', 'KitchenQual_Fa|ExterQual_Fa', 'LotShape_IR2|OverallCond', 'FireplaceQu_Tencode|RoofStyle_Shed', 'MiscFeature_Othr|Alley_Grvl', 'KitchenQual_Ex|HouseStyle_1.5Fin', 'GarageType_Detchd|KitchenQual_Tencode', 'FireplaceQu_Tencode|2ndFlrSF', 'ExterQual_TA|3SsnPorch', 'MSSubClass|BldgType_Tencode', 'MSZoning_Tencode|Functional_Min2', 'Exterior2nd_HdBoard|Exterior1st_MetalSd', 'BsmtQual_TA|Fence_MnPrv', 'YrSold|PavedDrive_P', 'KitchenQual_Tencode|LowQualFinSF', 'FireplaceQu_Tencode|GarageFinish_RFn', 'Utilities_AllPub|ExterCond_Fa', 'BldgType_Twnhs|Condition1_PosN', 'FireplaceQu_Gd|GarageType_Tencode', 'Exterior2nd_MetalSd|BldgType_TwnhsE', 'Utilities_Tencode|LandSlope_Tencode', 'KitchenQual_TA|RoofMatl_WdShngl', 'BsmtUnfSF|ScreenPorch', 'KitchenQual_Gd|GarageType_CarPort', 'Condition1_PosA|MSZoning_RM', '3SsnPorch|GarageType_CarPort', 'Neighborhood_BrDale|GarageType_Basment', 'Exterior2nd_AsbShng|Functional_Maj2', 'LotShape_Reg|Neighborhood_Edwards', 'Electrical_FuseA|Neighborhood_Tencode', 'BsmtFinType2_Tencode|BsmtFinType2_BLQ', 'PavedDrive_Y|BsmtExposure_Gd', 'LotShape_Tencode|RoofMatl_Tar&Grv', 'HouseStyle_Tencode|CentralAir_Y', 'Neighborhood_ClearCr|BsmtCond_Tencode', 'MiscFeature_Othr|Foundation_Tencode', 'LotArea|PavedDrive_Tencode', 'HouseStyle_1Story|Condition2_Tencode', 'Exterior2nd_MetalSd|RoofMatl_WdShngl', 'SaleType_WD|MasVnrType_BrkCmn', 'SaleCondition_Tencode|RoofStyle_Flat', 'ExterQual_Ex|Neighborhood_MeadowV', 'Exterior1st_Tencode|Street_Pave', 'BldgType_2fmCon|Functional_Mod', 'BsmtCond_Gd|SaleType_Oth', 'OverallQual|MSZoning_RL', 'SaleType_ConLD|LotShape_IR3', 'BsmtFinType2_Tencode|MiscFeature_Shed', 'Exterior2nd_BrkFace|CentralAir_Tencode', 'GarageFinish_Tencode|FireplaceQu_Ex', 'GarageCond_Gd|MSZoning_RH', 'BsmtFinType2_LwQ|BsmtExposure_No', 'SaleType_ConLD|Condition2_Tencode', 'Functional_Tencode|MasVnrType_None', 'Neighborhood_Mitchel|LotArea', 'RoofMatl_Tencode|SaleType_New', 'LandSlope_Sev|GarageQual_Tencode', 'ExterCond_TA|BsmtUnfSF', 'FireplaceQu_Fa|Condition1_Norm', 'GarageQual_Po|BsmtFinType1_GLQ', 'BedroomAbvGr|MasVnrArea', 'Foundation_PConc|MasVnrType_Tencode', 'SaleCondition_Family|MasVnrType_None', 'Alley_Tencode|BsmtQual_Gd', 'Condition1_Norm|CentralAir_N', 'Heating_GasA|PavedDrive_P', 'HeatingQC_Ex|LowQualFinSF', 'Neighborhood_Crawfor|Street_Pave', 'Exterior2nd_Stucco|BsmtFinType1_Rec', 'BsmtExposure_Tencode|GarageType_Basment', 'Neighborhood_StoneBr|Neighborhood_MeadowV', 'Exterior2nd_Wd Sdng|Condition1_Tencode', 'MiscVal|Neighborhood_NAmes', 'Condition2_Tencode|Street_Grvl', 'GarageCond_Po|SaleType_WD', 'PoolQC_Tencode|Exterior2nd_MetalSd', 'Functional_Mod|Foundation_CBlock', 'Neighborhood_Edwards|Functional_Mod', 'SaleType_COD|Exterior2nd_Plywood', 'FireplaceQu_Fa|BsmtUnfSF', 'MiscVal|YearBuilt', 'GarageCond_Po|Neighborhood_Crawfor', 'FireplaceQu_Tencode|Condition1_Feedr', 'GarageType_Tencode|Utilities_AllPub', 'KitchenAbvGr|ExterQual_Tencode', 'Exterior2nd_Stone|GarageCars', 'HouseStyle_Tencode|BsmtFinType1_Unf', 'GarageCond_Tencode|Alley_Grvl', 'HouseStyle_Tencode|MiscFeature_Tencode', 'Exterior2nd_Stone', 'Condition1_Artery|SaleCondition_Normal', 'FireplaceQu_Po|HouseStyle_1.5Fin', 'LandSlope_Mod|BldgType_1Fam', 'HouseStyle_2.5Unf|ScreenPorch', 'GarageFinish_Unf|Neighborhood_Veenker', 'GarageType_BuiltIn|RoofStyle_Shed', 'LotFrontage|LotConfig_Corner', 'GarageFinish_RFn|Exterior1st_BrkComm', 'GarageCond_Fa|MiscFeature_Shed', 'Neighborhood_Tencode|MiscFeature_Gar2', 'BldgType_Twnhs|3SsnPorch', 'GarageType_Tencode|BsmtQual_Ex', 'MoSold|MiscFeature_Tencode', 'Condition1_PosA|GarageType_Attchd', 'RoofStyle_Shed|Condition1_Feedr', 'Exterior2nd_CmentBd|HouseStyle_2Story', 'GarageQual_Fa|Alley_Grvl', 'Exterior1st_CemntBd|Functional_Min1', 'BsmtFinType2_GLQ|MSSubClass', 'BsmtFinType1_ALQ|Exterior2nd_CmentBd', 'HeatingQC_Gd|Functional_Maj1', 'LandContour_Low|Neighborhood_NPkVill', 'HouseStyle_1.5Unf|Electrical_FuseF', 'Street_Tencode|BsmtCond_Tencode', 'KitchenQual_Tencode|Fence_MnWw', 'BsmtQual_Tencode|ExterCond_Gd', 'GarageCond_TA', 'Heating_GasW|MSZoning_C (all)', 'Exterior2nd_AsbShng|GarageQual_Po', 'Condition2_Tencode|SaleCondition_Normal', 'HeatingQC_Gd|BsmtQual_Tencode', 'SaleCondition_Family|BsmtFinSF1', 'Foundation_Tencode|BsmtQual_TA', 'ExterCond_Tencode|Exterior1st_MetalSd', 'LotArea|SaleCondition_Family', 'Condition1_Artery|Neighborhood_Veenker', 'Functional_Maj2|Neighborhood_MeadowV', 'KitchenQual_Ex|2ndFlrSF', 'RoofStyle_Gable|Neighborhood_BrkSide', 'Exterior1st_CemntBd|Utilities_AllPub', 'GarageType_BuiltIn|Foundation_CBlock', 'Functional_Maj2|FireplaceQu_Fa', 'Exterior2nd_Stucco|GarageType_BuiltIn', 'GarageQual_Gd|LotArea', 'TotRmsAbvGrd|BsmtFinType1_Unf', 'Neighborhood_Mitchel|GarageFinish_Tencode', 'BsmtFinType2_Unf|MiscFeature_Gar2', 'Street_Grvl|BldgType_Tencode', 'Exterior2nd_Stucco|Exterior2nd_Brk Cmn', 'Neighborhood_NridgHt|Neighborhood_IDOTRR', 'FireplaceQu_Po|BsmtUnfSF', 'GarageCond_Gd|KitchenQual_Fa', 'SaleType_COD|HouseStyle_1.5Fin', 'GarageType_CarPort|BsmtFinType1_Unf', 'Exterior1st_Stucco|MasVnrType_Tencode', 'Exterior1st_VinylSd|FireplaceQu_TA', 'BldgType_Duplex|Exterior2nd_Plywood', 'Exterior1st_Stucco|RoofMatl_Tar&Grv', 'Functional_Maj1|Street_Pave', 'HeatingQC_Ex|OpenPorchSF', 'SaleCondition_Abnorml|KitchenQual_TA', 'Foundation_Stone|BldgType_TwnhsE', 'Neighborhood_CollgCr|ExterQual_Gd', 'GarageFinish_Fin|BsmtCond_Tencode', 'RoofStyle_Tencode|Exterior1st_Tencode', 'Exterior1st_HdBoard|BsmtFinSF2', 'RoofStyle_Shed|CentralAir_Y', 'BsmtFinType2_BLQ|Exterior2nd_Brk Cmn', 'BsmtCond_Po|MSZoning_RL', 'Exterior1st_BrkFace|BsmtFinType1_Tencode', 'Neighborhood_NoRidge|Exterior2nd_VinylSd', 'RoofStyle_Flat|MSSubClass', 'RoofStyle_Tencode|WoodDeckSF', 'Electrical_FuseF|LotConfig_Tencode', 'RoofMatl_Tencode|Street_Grvl', 'Functional_Min1|Fence_GdWo', 'Neighborhood_NWAmes|PoolArea', 'Neighborhood_NAmes|Exterior1st_Tencode', 'LotShape_Tencode|ExterQual_Ex', 'GarageType_Detchd|Condition2_Artery', 'Exterior2nd_CmentBd|BldgType_1Fam', 'BsmtCond_Tencode|Exterior2nd_AsphShn', 'Neighborhood_NridgHt|Street_Pave', 'Exterior1st_AsbShng|Exterior1st_VinylSd', 'BsmtUnfSF|Exterior1st_MetalSd', '3SsnPorch|BsmtCond_Tencode', 'GarageCond_Po|LandSlope_Mod', 'OverallQual|Neighborhood_Gilbert', 'Exterior1st_Stucco|GarageType_Tencode', 'HeatingQC_Tencode|SaleCondition_Alloca', 'SaleCondition_Family|MSSubClass', 'LandContour_Lvl|Neighborhood_SawyerW', 'Neighborhood_Gilbert|Functional_Min2', 'Heating_GasW|GarageType_2Types', 'ExterQual_TA|LandContour_Low', 'BsmtFinType2_BLQ|MSZoning_RL', 'LotShape_IR1|RoofStyle_Tencode', 'KitchenAbvGr|Exterior2nd_Brk Cmn', 'HouseStyle_2.5Unf|Neighborhood_MeadowV', 'ExterCond_Tencode|SaleCondition_Abnorml', 'Neighborhood_Veenker|MiscFeature_Shed', 'LotConfig_CulDSac|1stFlrSF', 'PavedDrive_Y|Exterior1st_Wd Sdng', 'BldgType_Duplex|HeatingQC_TA', '2ndFlrSF|BsmtFinType1_LwQ', 'CentralAir_Tencode|Utilities_AllPub', 'Heating_GasA|BsmtFinType2_ALQ', 'MSZoning_RL|LotConfig_Inside', 'GarageCond_Ex|MSZoning_FV', 'LotShape_Reg|Neighborhood_Mitchel', 'Exterior2nd_Brk Cmn|Neighborhood_BrkSide', 'Functional_Maj1|Foundation_Slab', 'Electrical_SBrkr|KitchenQual_Fa', 'Exterior1st_BrkFace|Foundation_BrkTil', 'LowQualFinSF|GarageFinish_RFn', 'BsmtCond_Po|Alley_Grvl', 'OverallQual|YearRemodAdd', 'Neighborhood_CollgCr|CentralAir_N', 'EnclosedPorch|SaleCondition_Abnorml', 'BsmtUnfSF|Exterior2nd_AsphShn', 'Condition1_Tencode|BsmtQual_Gd', 'Exterior2nd_Stone|HouseStyle_SFoyer', 'MiscVal|Foundation_Slab', 'PavedDrive_N|BsmtFinType2_Unf', 'Functional_Maj1|HouseStyle_SLvl', 'Exterior2nd_MetalSd|Functional_Maj1', 'BsmtQual_Ex|BsmtCond_Fa', 'BsmtFinType2_GLQ|BsmtFullBath', 'BsmtExposure_No|HouseStyle_1.5Fin', 'SaleCondition_Alloca|Exterior2nd_Wd Shng', 'Alley_Tencode|SaleType_New', 'BsmtFinType1_Rec|RoofStyle_Shed', 'Street_Tencode|CentralAir_Y', 'Condition2_Tencode|MasVnrArea', 'HeatingQC_TA|MSZoning_FV', 'HouseStyle_2Story|Exterior2nd_AsphShn', 'RoofStyle_Gable|ExterQual_Tencode', 'Alley_Tencode|Neighborhood_IDOTRR', 'HeatingQC_TA|BsmtCond_Po', 'YearBuilt|BsmtFinType2_BLQ', 'BsmtFinType1_Rec|HouseStyle_SLvl', 'GarageFinish_Unf|ExterQual_Ex', 'BsmtFinType1_Tencode|Neighborhood_SawyerW', 'TotalBsmtSF|Heating_Tencode', 'BsmtExposure_Tencode|Neighborhood_NAmes', 'GarageCond_TA|RoofStyle_Tencode', 'BldgType_TwnhsE|Exterior1st_WdShing', 'HouseStyle_SFoyer|Exterior2nd_Plywood', 'BsmtFinType2_Tencode|LotConfig_Tencode', 'GarageQual_Po|BsmtCond_TA', 'GarageType_Tencode|Neighborhood_SawyerW', 'BsmtQual_TA|GarageFinish_RFn', 'GarageType_Tencode|HouseStyle_SLvl', 'HouseStyle_SFoyer|BsmtCond_TA', 'Exterior2nd_AsbShng|HeatingQC_Gd', 'Functional_Min1|Neighborhood_IDOTRR', 'Condition1_Norm|MSZoning_RM', 'Condition1_PosN|LotShape_IR3', '1stFlrSF|PavedDrive_P', 'BsmtFullBath|Neighborhood_NAmes', 'Heating_GasW|Alley_Grvl', 'RoofStyle_Flat|Exterior2nd_AsphShn', 'LandSlope_Sev|Foundation_CBlock', 'MoSold|Neighborhood_BrkSide', 'BsmtQual_TA|CentralAir_Y', 'ExterQual_TA|Neighborhood_BrkSide', 'Exterior2nd_AsbShng|Foundation_PConc', 'SaleCondition_Alloca|Condition1_Feedr', 'Exterior2nd_AsbShng|MiscFeature_Shed', 'SaleCondition_Alloca|1stFlrSF', 'Neighborhood_StoneBr|LotShape_IR3', 'Exterior2nd_AsbShng|GarageCond_Ex', 'GarageCars|BsmtCond_Po', 'Functional_Maj1|Alley_Grvl', 'GarageType_Attchd|SaleType_CWD', 'BsmtFinType2_BLQ|Fence_GdWo', 'BsmtFinType2_ALQ|Street_Grvl', 'LotConfig_FR2|OverallCond', 'Exterior2nd_AsbShng|SaleType_Tencode', 'GarageQual_Po|MSZoning_RM', 'LowQualFinSF|GarageType_2Types', 'SaleCondition_Tencode|Neighborhood_Blmngtn', 'Neighborhood_NWAmes|2ndFlrSF', 'RoofMatl_Tar&Grv|Fence_MnWw', 'MiscVal|RoofStyle_Gambrel', 'Functional_Tencode|FireplaceQu_TA', 'SaleCondition_Normal|Street_Pave', 'Utilities_Tencode|LandContour_Lvl', 'HouseStyle_1.5Unf|LotConfig_Inside', 'Fireplaces|GarageType_2Types', 'Exterior2nd_CmentBd|Neighborhood_MeadowV', 'Neighborhood_Edwards|ExterCond_Fa', 'RoofStyle_Hip|MiscVal', 'LandSlope_Tencode|HouseStyle_2.5Unf', 'FullBath|LandContour_Lvl', 'BsmtFinType2_Tencode|Exterior2nd_VinylSd', 'Neighborhood_BrDale|YearRemodAdd', 'PavedDrive_Y|SaleType_Oth', '3SsnPorch|MasVnrType_None', 'BsmtExposure_Av|BsmtCond_Fa', 'ExterCond_Gd|BsmtFinType1_LwQ', 'KitchenQual_Fa|ScreenPorch', 'Exterior2nd_CmentBd|Neighborhood_SawyerW', 'Neighborhood_Tencode|PavedDrive_Tencode', 'Neighborhood_BrDale|MiscVal', 'Neighborhood_SWISU|Functional_Min1', 'HeatingQC_Gd|GarageCond_Tencode', 'GarageCars|RoofMatl_CompShg', 'PavedDrive_N|LotConfig_Tencode', 'KitchenAbvGr|GarageCond_Tencode', 'Neighborhood_CollgCr|BsmtHalfBath', 'BsmtFinType1_Unf|Exterior1st_WdShing', 'Alley_Pave|Condition1_Feedr', 'LowQualFinSF|BsmtFinSF1', 'Exterior1st_VinylSd|Street_Pave', 'Exterior2nd_Stone|BsmtFinType1_GLQ', 'KitchenQual_Fa|Neighborhood_MeadowV', 'LandContour_HLS|Fence_MnPrv', 'Electrical_FuseA|BsmtFinType2_Unf', 'FireplaceQu_Po|GarageType_Attchd', 'Functional_Maj2|MiscFeature_Tencode', 'GarageType_CarPort|Exterior2nd_Plywood', 'RoofMatl_Tencode|Exterior1st_CemntBd', 'PavedDrive_P|PoolArea', 'Neighborhood_BrDale|HouseStyle_Tencode', 'Foundation_Stone|FireplaceQu_Fa', 'SaleType_WD|GarageYrBlt', 'LotShape_IR2|BsmtFinType1_BLQ', 'MSZoning_RM|SaleCondition_Abnorml', 'MSZoning_C (all)|Condition1_PosN', 'Neighborhood_Somerst|Functional_Min2', 'BsmtQual_Fa|SaleType_COD', 'GarageQual_Fa|RoofStyle_Gambrel', 'Alley_Tencode|SaleCondition_Normal', 'Street_Tencode|HouseStyle_SLvl', 'FullBath|Functional_Maj1', 'Neighborhood_IDOTRR|MSZoning_RL', 'YearBuilt|BldgType_1Fam', 'Electrical_FuseF|Neighborhood_Timber', 'Street_Tencode|HouseStyle_2Story', 'Alley_Tencode|Condition1_RRAe', 'Foundation_PConc|BsmtUnfSF', 'Fence_MnWw|ExterQual_Fa', 'BsmtFinType2_Tencode|MasVnrType_Stone', 'Condition2_Tencode|Fence_GdWo', 'BsmtFinType2_BLQ|BsmtCond_Fa', 'CentralAir_Y|PoolArea', 'RoofStyle_Shed|Exterior1st_BrkComm', 'Exterior1st_AsbShng|Neighborhood_MeadowV', 'Neighborhood_BrDale|GarageArea', 'GarageQual_TA|Neighborhood_Gilbert', 'YearBuilt|BsmtQual_TA', 'BsmtCond_Gd|Neighborhood_Timber', 'HeatingQC_Fa|HouseStyle_SLvl', 'Fence_GdWo|MiscFeature_Gar2', 'LotShape_IR2|SaleType_WD', 'MasVnrType_BrkFace|Utilities_AllPub', 'HeatingQC_Ex|Neighborhood_Gilbert', 'FullBath|Neighborhood_NoRidge', 'GarageCars|BsmtQual_Tencode', 'Street_Tencode|Fireplaces', 'BsmtQual_TA|Neighborhood_MeadowV', 'Neighborhood_Somerst|TotRmsAbvGrd', 'SaleType_CWD', 'LandSlope_Tencode|LotConfig_Inside', 'GarageFinish_Unf|BsmtFinType2_GLQ', 'RoofStyle_Shed|SaleCondition_Partial', 'Condition1_RRAe|BsmtCond_Po', 'KitchenQual_Ex|SaleType_Tencode', 'BldgType_Duplex|Exterior1st_Plywood', 'LotShape_Reg|Condition1_PosA', 'Functional_Min1|BldgType_Tencode', 'GarageType_BuiltIn|BsmtExposure_Av', 'KitchenQual_Ex|BsmtQual_Ex', 'RoofMatl_Tencode|BldgType_TwnhsE', 'ExterCond_Gd|ExterQual_Fa', 'YrSold|GarageYrBlt', 'Neighborhood_Blmngtn|OverallCond', 'Condition2_Tencode|Neighborhood_Sawyer', 'Foundation_BrkTil|LandSlope_Tencode', 'PavedDrive_Tencode|MSZoning_RM', 'GrLivArea|Functional_Maj2', 'Exterior1st_AsbShng|PavedDrive_Tencode', 'OverallQual|Exterior1st_BrkFace', 'SaleCondition_Alloca|BsmtFinType1_Rec', 'BsmtFinType1_GLQ', 'BldgType_Duplex|BsmtUnfSF', 'OverallQual|Functional_Min2', 'Exterior2nd_MetalSd|OverallCond', 'LandContour_HLS|Exterior1st_Plywood', 'Exterior2nd_MetalSd|BsmtFinType1_Unf', 'Neighborhood_NPkVill|Neighborhood_StoneBr', 'Foundation_PConc|Neighborhood_Somerst', 'HouseStyle_Tencode|BsmtFinSF2', 'BsmtExposure_Gd|MasVnrType_Stone', 'FireplaceQu_Tencode|MasVnrType_None', 'KitchenQual_Fa|FireplaceQu_TA', 'Electrical_FuseP|SaleCondition_Partial', 'Neighborhood_OldTown|Exterior2nd_Wd Shng', 'OverallQual|Exterior2nd_Wd Sdng', 'Exterior1st_HdBoard|Fence_Tencode', 'Foundation_Stone|Neighborhood_Gilbert', 'BsmtQual_Tencode|KitchenQual_Ex', 'Exterior2nd_CmentBd|HouseStyle_SLvl', 'Neighborhood_Tencode|BsmtFinType1_GLQ', 'BsmtCond_Gd|GarageYrBlt', 'BsmtFinType1_Tencode|Functional_Tencode', 'Condition1_Tencode|MSZoning_Tencode', 'TotalBsmtSF|BsmtFinType1_GLQ', 'Electrical_SBrkr|SaleType_New', 'HouseStyle_Tencode|SaleType_Oth', 'ExterQual_Gd|BldgType_1Fam', 'Functional_Min1|PavedDrive_P', 'LotShape_Tencode|Functional_Maj1', 'Electrical_FuseA|BsmtQual_Ex', 'Neighborhood_NridgHt|Functional_Typ', 'Neighborhood_StoneBr|MSZoning_RH', 'Exterior1st_Stucco|Heating_Tencode', 'GarageCond_Tencode|BsmtExposure_Av', 'Condition1_PosN|Fence_MnPrv', 'Condition1_Artery|BsmtExposure_No', 'ExterQual_Gd|Condition1_Tencode', 'SaleCondition_Abnorml|BsmtExposure_Gd', 'Heating_Grav|GarageType_Basment', 'EnclosedPorch|SaleType_Oth', 'HalfBath|FireplaceQu_Fa', 'Functional_Typ|Foundation_Slab', 'GarageType_Attchd|Street_Grvl', 'BsmtFinType2_BLQ|SaleCondition_Partial', 'SaleType_ConLD|Neighborhood_Crawfor', 'Neighborhood_CollgCr|Exterior1st_Plywood', 'Foundation_PConc|BsmtFinType1_BLQ', 'BsmtFinType1_LwQ|GarageType_2Types', 'Utilities_Tencode|3SsnPorch', 'Exterior1st_AsbShng|Fence_GdWo', 'Exterior1st_CemntBd|Neighborhood_Timber', 'Neighborhood_Tencode|HouseStyle_1.5Unf', 'BsmtFinType2_ALQ|LandSlope_Sev', 'BsmtQual_Fa|Condition1_Norm', 'SaleType_Tencode|Condition1_Tencode', 'SaleType_ConLw|Street_Pave', 'Neighborhood_ClearCr|BsmtFinType1_GLQ', 'Neighborhood_Blmngtn|Alley_Tencode', 'LandContour_Bnk|GarageQual_Tencode', 'Utilities_Tencode|Exterior2nd_VinylSd', 'SaleType_ConLI|ExterQual_Ex', 'GarageCars|LotConfig_Corner', 'Foundation_PConc|HeatingQC_Tencode', 'Exterior2nd_Brk Cmn|Exterior1st_Plywood', 'LotShape_Tencode|BsmtQual_TA', 'SaleCondition_Family|MasVnrArea', 'Functional_Tencode|Foundation_Slab', 'BsmtFinType2_BLQ|ExterQual_Ex', 'SaleType_COD|CentralAir_N', 'Heating_Grav|ExterQual_Tencode', 'KitchenQual_TA|Exterior1st_WdShing', 'Neighborhood_NridgHt|Neighborhood_SWISU', 'LotConfig_Tencode|Neighborhood_MeadowV', 'LotConfig_Corner|BsmtFullBath', 'Functional_Maj1|Condition2_Norm', 'Neighborhood_NPkVill|GarageType_BuiltIn', 'SaleType_ConLw|GarageType_BuiltIn', 'Condition2_Tencode|Electrical_FuseF', 'Neighborhood_NridgHt|Neighborhood_BrkSide', 'Exterior2nd_VinylSd|RoofStyle_Gable', 'GarageCond_Tencode|KitchenQual_TA', 'SaleType_ConLD|MSZoning_C (all)', 'Fence_GdWo|MSZoning_RH', 'Alley_Pave|BsmtCond_TA', 'BldgType_Tencode|Exterior2nd_Plywood', 'Condition1_PosN|RoofStyle_Gable', 'Functional_Mod|ExterQual_Fa', 'TotalBsmtSF|GarageType_Attchd', 'HeatingQC_Gd|BsmtFinSF1', 'Exterior2nd_Brk Cmn|BsmtQual_Gd', 'HeatingQC_Tencode|Exterior2nd_MetalSd', 'Exterior1st_BrkFace|ExterQual_Gd', 'MSZoning_Tencode|Foundation_Slab', 'HouseStyle_1.5Unf|BsmtExposure_Mn', 'BsmtCond_TA|MasVnrType_Tencode', 'BedroomAbvGr|CentralAir_N', 'YearRemodAdd|OverallCond', 'MSSubClass|Condition1_Tencode', 'FullBath|BsmtQual_Tencode', 'Heating_GasA|Neighborhood_NWAmes', 'LandContour_HLS|RoofStyle_Shed', 'ExterCond_Tencode|Fence_MnWw', 'Neighborhood_NAmes|MSZoning_RH', 'GarageCond_Fa|BsmtCond_Tencode', 'MiscVal|MasVnrType_Stone', 'Exterior2nd_BrkFace|SaleCondition_Abnorml', 'BldgType_TwnhsE|BsmtCond_Fa', 'Fireplaces|Condition1_Norm', 'BsmtFullBath|BsmtCond_Gd', 'LotShape_Reg|Heating_Grav', 'BedroomAbvGr|SaleType_New', 'Foundation_Stone|Neighborhood_Crawfor', 'MSZoning_C (all)|MiscFeature_Shed', 'BsmtQual_TA|MasVnrType_BrkFace', 'Condition1_Norm|Neighborhood_BrkSide', 'Exterior2nd_BrkFace|GarageType_2Types', 'HalfBath|Functional_Maj2', 'FireplaceQu_Tencode|LandContour_Low', 'Exterior2nd_CmentBd|Fence_MnWw', 'Foundation_Tencode|GarageQual_Fa', 'Electrical_Tencode|Exterior1st_AsbShng', 'Neighborhood_Sawyer|Alley_Grvl', 'MiscVal|SaleCondition_Abnorml', 'GarageCond_TA|Condition1_Norm', 'GarageFinish_Fin|Exterior2nd_Wd Shng', 'Heating_GasA|GarageQual_Tencode', 'Neighborhood_SWISU|GarageYrBlt', 'GarageArea|GarageQual_Tencode', 'Exterior2nd_VinylSd|GarageType_Basment', 'HouseStyle_1.5Unf|Condition1_RRAe', 'KitchenQual_Ex|Neighborhood_SWISU', 'Neighborhood_NridgHt|GarageFinish_Tencode', 'Neighborhood_Crawfor|Condition2_Artery', 'Neighborhood_Mitchel|KitchenQual_TA', 'Fence_Tencode|BsmtQual_Fa', 'PavedDrive_P|Neighborhood_IDOTRR', 'SaleType_WD|GarageCond_Gd', 'Neighborhood_Somerst|BsmtFullBath', 'ExterQual_TA|CentralAir_N', 'Functional_Min1|Exterior1st_Tencode', 'GarageType_BuiltIn|SaleCondition_Abnorml', 'Neighborhood_Edwards|Exterior1st_BrkComm', 'Foundation_BrkTil|SaleType_WD', 'CentralAir_Y|Exterior1st_MetalSd', 'LotArea|MSZoning_C (all)', 'LandContour_HLS|MSZoning_Tencode', 'ExterQual_TA|HouseStyle_1.5Unf', 'BedroomAbvGr|BsmtCond_Fa', 'HeatingQC_Gd|Neighborhood_BrkSide', 'GarageType_CarPort|GarageType_Basment', 'Condition1_RRAn|MasVnrType_Stone', '2ndFlrSF|FireplaceQu_TA', 'MasVnrType_None|Neighborhood_BrkSide', 'Alley_Tencode|Electrical_FuseA', 'LandSlope_Tencode|Neighborhood_SawyerW', 'Alley_Tencode|SaleType_WD', 'OverallQual|LandContour_Lvl', 'Fence_GdWo|Condition1_RRAn', 'Neighborhood_Tencode|LandSlope_Gtl', 'GarageCars|Exterior1st_AsbShng', 'Foundation_Slab|Utilities_AllPub', 'Foundation_Tencode|MSZoning_RL', 'Exterior2nd_BrkFace|BsmtCond_Gd', 'Heating_GasA|MSZoning_FV', 'LotShape_IR1|Exterior2nd_Plywood', 'GarageType_Basment|Neighborhood_IDOTRR', 'KitchenQual_Tencode|GarageType_2Types', 'HeatingQC_Gd|MasVnrArea', 'FullBath|Neighborhood_NAmes', 'MSZoning_Tencode|SaleType_CWD', 'OverallQual|GarageCond_TA', 'Exterior1st_VinylSd|Neighborhood_IDOTRR', 'LandContour_Low|LotConfig_Tencode', 'Exterior2nd_VinylSd|GarageQual_Po', 'RoofStyle_Gambrel|BsmtFinType1_GLQ', 'Fence_Tencode|FireplaceQu_Fa', 'Neighborhood_ClearCr|MiscFeature_Shed', 'GarageYrBlt|Utilities_AllPub', 'Alley_Tencode|LotConfig_CulDSac', 'Condition1_Artery|LotConfig_Inside', 'Functional_Min1|Foundation_Slab', 'Electrical_FuseA|Exterior2nd_Plywood', 'Neighborhood_NridgHt|Neighborhood_StoneBr', 'BsmtFinType1_Unf|GarageType_2Types', 'HeatingQC_Tencode|MSZoning_FV', 'RoofStyle_Flat|LandContour_Bnk', 'FireplaceQu_Po|Exterior1st_Stucco', 'MSZoning_C (all)|MasVnrType_BrkFace', 'GarageQual_Gd|BsmtFinType1_ALQ', 'Exterior1st_HdBoard|Alley_Tencode', 'Exterior2nd_AsbShng|BsmtFinType1_Unf', 'Fence_Tencode|HeatingQC_Tencode', 'BsmtExposure_Gd|MiscFeature_Gar2', 'Exterior2nd_Stone|GarageQual_Tencode', 'BsmtFinType1_BLQ|BsmtFinType1_Rec', 'Electrical_FuseF|GarageCond_Ex', 'LandContour_Lvl|Exterior1st_Plywood', 'Foundation_CBlock|PavedDrive_P', 'GarageCond_Gd|HouseStyle_2.5Unf', 'LandContour_HLS|Condition1_Feedr', 'SaleType_ConLD|KitchenQual_Tencode', 'HeatingQC_Tencode|1stFlrSF', 'KitchenAbvGr|Condition1_RRAe', 'HouseStyle_1.5Unf|WoodDeckSF', 'Neighborhood_OldTown|SaleType_Tencode', 'BsmtFinType1_ALQ|Exterior2nd_Brk Cmn', 'BsmtFinType2_Tencode|ExterQual_Ex', 'GarageFinish_RFn|ExterQual_Fa', 'GarageQual_Fa|BldgType_TwnhsE', 'FireplaceQu_Fa|MSZoning_Tencode', 'Neighborhood_NoRidge|BsmtExposure_Gd', 'BldgType_2fmCon|LandContour_Tencode', 'OverallQual|HeatingQC_TA', 'ExterCond_TA|BsmtHalfBath', 'ExterCond_Gd|RoofStyle_Gable', 'SaleCondition_Alloca|Foundation_CBlock', 'LotShape_IR1|Functional_Min1', 'GarageType_Basment|Neighborhood_Gilbert', 'SaleType_ConLD|BsmtExposure_Av', 'MiscFeature_Shed|BsmtUnfSF', 'Foundation_PConc|Condition1_Feedr', 'EnclosedPorch|Condition2_Norm', 'BsmtCond_Po|MasVnrType_Stone', 'Exterior2nd_Stucco|Fence_MnWw', 'Neighborhood_CollgCr|CentralAir_Tencode', 'PavedDrive_Y|Fence_GdPrv', 'PavedDrive_N|GarageFinish_RFn', 'LotFrontage|LandSlope_Mod', 'Neighborhood_IDOTRR|SaleType_CWD', 'Electrical_FuseP|SaleType_WD', 'OverallCond|Fence_MnPrv', 'SaleCondition_Tencode|GarageQual_Gd', 'Exterior1st_HdBoard|HouseStyle_1.5Unf', 'HeatingQC_Tencode|GarageCond_Ex', 'LotShape_IR3|Exterior1st_MetalSd', 'Exterior2nd_BrkFace|Functional_Maj2', 'GarageFinish_RFn|Functional_Min2', 'HeatingQC_Fa|MSZoning_Tencode', 'Fence_MnWw|Fence_MnPrv', 'BldgType_Duplex|CentralAir_N', 'KitchenQual_Ex|MasVnrArea', 'LotConfig_Tencode|BsmtUnfSF', 'BsmtFinType1_BLQ|RoofStyle_Gable', 'GarageQual_Po|BsmtUnfSF', 'FireplaceQu_Fa|Alley_Grvl', 'GarageCond_Po|GarageCond_Tencode', 'Alley_Pave|Functional_Tencode', 'Utilities_Tencode|LandSlope_Gtl', 'Neighborhood_Edwards|BsmtFinType1_ALQ', 'MSZoning_C (all)|MasVnrType_Tencode', 'BsmtFinType2_GLQ|GarageFinish_Fin', 'HeatingQC_Ex|RoofStyle_Shed', 'BsmtFinType2_ALQ|LandSlope_Tencode', 'Foundation_Tencode|Exterior1st_CemntBd', 'FireplaceQu_Tencode|ExterCond_Gd', 'Functional_Tencode|MSZoning_RL', 'OverallQual|MasVnrType_BrkFace', 'BsmtExposure_Tencode|1stFlrSF', 'Neighborhood_BrkSide|Exterior2nd_Plywood', 'Alley_Tencode|Foundation_Stone', 'BsmtFinType2_BLQ|Condition1_RRAn', 'GarageCond_Tencode|Functional_Mod', 'BsmtFinType1_BLQ|ExterCond_TA', 'LandSlope_Mod|ExterCond_Gd', 'HeatingQC_Gd|BsmtFullBath', 'BsmtFinType1_ALQ|ExterQual_Fa', 'LotConfig_Corner|MasVnrType_None', 'Neighborhood_NridgHt|1stFlrSF', 'Neighborhood_BrDale|Exterior1st_CemntBd', 'SaleType_ConLw|MasVnrType_BrkFace', 'FireplaceQu_Po|ExterCond_Tencode', 'HalfBath|Functional_Min2', 'GarageType_CarPort|GarageYrBlt', 'SaleType_New|Exterior2nd_CmentBd', 'Foundation_BrkTil|Exterior1st_VinylSd', 'KitchenQual_Fa|SaleCondition_Abnorml', 'GarageArea|2ndFlrSF', 'HouseStyle_SFoyer|BsmtFinSF2', 'FireplaceQu_Ex|Neighborhood_IDOTRR', 'HeatingQC_Fa|HeatingQC_Ex', 'BsmtFinSF2|MSZoning_RH', 'Exterior1st_AsbShng|Exterior2nd_Tencode', 'TotalBsmtSF|HeatingQC_Tencode', 'Fence_Tencode|SaleCondition_Abnorml', 'Neighborhood_Blmngtn|Functional_Typ', 'RoofStyle_Hip|Electrical_Tencode', 'FireplaceQu_Tencode|BsmtFinType2_Tencode', 'HouseStyle_Tencode|Functional_Mod', 'LotShape_IR1|BedroomAbvGr', 'GarageType_Tencode|MSZoning_RL', 'BsmtExposure_Tencode|FireplaceQu_Fa', 'PavedDrive_Y|RoofStyle_Shed', 'BsmtExposure_Av|BldgType_1Fam', 'YearBuilt|LandSlope_Tencode', 'BldgType_Twnhs|LandSlope_Sev', 'Condition1_Artery|LotFrontage', 'HeatingQC_TA|BsmtQual_Ex', 'MasVnrType_None|Exterior2nd_Brk Cmn', 'RoofStyle_Flat|LotShape_IR3', 'Condition2_Artery|Exterior1st_MetalSd', 'LotFrontage|BsmtExposure_Gd', 'GarageCond_Tencode|GarageFinish_RFn', 'SaleCondition_Alloca|FireplaceQu_TA', 'BsmtExposure_Tencode|Neighborhood_Sawyer', 'Electrical_FuseA|YearBuilt', 'Neighborhood_Veenker|ScreenPorch', 'Foundation_Tencode|BsmtFinType2_LwQ', 'BsmtQual_TA|Exterior2nd_MetalSd', 'LotConfig_Corner|GarageCond_Gd', 'Exterior2nd_Plywood|MSZoning_RH', 'SaleType_New|OpenPorchSF', 'SaleType_ConLw|LotConfig_Tencode', 'Neighborhood_BrkSide|MSZoning_RL', 'SaleType_ConLw|BsmtQual_Ex', 'Functional_Typ|MiscFeature_Gar2', 'GarageType_Tencode|SaleType_COD', 'BsmtFinType1_Tencode|Neighborhood_StoneBr', 'BsmtQual_Fa|Utilities_AllPub', 'Functional_Maj2|Electrical_FuseF', '3SsnPorch|MasVnrType_Tencode', 'SaleType_ConLI|HeatingQC_Tencode', 'Alley_Pave|LotConfig_FR2', 'PavedDrive_Y|RoofStyle_Gambrel', 'BsmtQual_Fa|Fence_GdWo', 'Functional_Maj2|BsmtCond_Gd', 'Neighborhood_OldTown|Neighborhood_StoneBr', 'KitchenQual_Ex|BsmtExposure_No', 'Functional_Min2|ExterCond_Fa', 'BsmtExposure_Av|CentralAir_Y', 'BldgType_Twnhs|ExterQual_Ex', 'ExterCond_Tencode|BldgType_TwnhsE', 'Exterior1st_HdBoard|Foundation_Stone', 'LotConfig_Corner|GarageFinish_Tencode', 'PoolQC_Tencode|RoofStyle_Gambrel', 'YearRemodAdd|BsmtFinType2_Rec', 'SaleCondition_Tencode|MiscVal', 'GarageCars|Condition1_Tencode', 'BsmtQual_Fa|ExterCond_Gd', 'Neighborhood_Veenker|BsmtUnfSF', 'BsmtFullBath|Neighborhood_IDOTRR', 'Exterior1st_BrkFace|BsmtQual_TA', 'Condition2_Tencode|BsmtCond_Fa', 'TotalBsmtSF|Exterior2nd_HdBoard', 'RoofStyle_Tencode|MSSubClass', '3SsnPorch|ExterQual_Fa', 'GrLivArea|Fence_Tencode', 'Neighborhood_Sawyer|GarageQual_Tencode', 'Foundation_Tencode|Neighborhood_Sawyer', 'BldgType_TwnhsE|RoofMatl_WdShngl', 'ExterCond_Tencode|Exterior1st_Wd Sdng', 'LandSlope_Tencode|WoodDeckSF', 'Neighborhood_NWAmes|SaleType_COD', 'OverallCond|Exterior1st_Plywood', 'YearBuilt|Functional_Maj1', 'Condition2_Tencode|BsmtFinType2_Unf', 'Exterior1st_BrkFace|BsmtFinSF2', 'Functional_Tencode|Neighborhood_CollgCr', 'FullBath|LandContour_Bnk', 'ExterQual_Ex|Street_Pave', 'GrLivArea|Condition2_Artery', 'OpenPorchSF|SaleType_Oth', 'RoofMatl_CompShg|SaleCondition_Family', 'HeatingQC_Gd|Exterior2nd_MetalSd', 'LotConfig_Corner|OverallCond', 'LotShape_Reg|BsmtQual_Gd', 'KitchenQual_Tencode|Neighborhood_SawyerW', 'Neighborhood_NridgHt|Neighborhood_NWAmes', 'BsmtFinType2_Unf|HouseStyle_1.5Fin', 'BsmtExposure_Tencode|GarageType_2Types', 'Exterior1st_CemntBd|BsmtCond_TA', 'Condition1_Tencode|GarageQual_Tencode', 'LotConfig_Tencode|Fence_MnWw', 'LotFrontage|Neighborhood_SWISU', 'OverallQual|Heating_GasA', 'BsmtCond_Gd|MSZoning_Tencode', 'PavedDrive_Y|HouseStyle_SLvl', 'GarageFinish_Fin|OpenPorchSF', 'FireplaceQu_Fa|BsmtCond_Fa', 'Exterior1st_WdShing|BsmtQual_Gd', 'RoofStyle_Tencode|GarageType_2Types', 'Exterior2nd_MetalSd|Exterior2nd_Wd Sdng', 'SaleType_Tencode|PoolQC_Tencode', 'Electrical_FuseP|Functional_Min1', 'Exterior1st_Tencode|ExterCond_Fa', 'Neighborhood_NridgHt|Neighborhood_MeadowV', 'YearRemodAdd|BsmtExposure_Mn', 'RoofMatl_Tencode|Electrical_SBrkr', 'MSZoning_RM|FireplaceQu_TA', 'Exterior2nd_Plywood|BsmtCond_TA', 'BsmtFinSF2|Exterior1st_BrkComm', 'MiscVal|PavedDrive_Tencode', 'BsmtFullBath|Condition1_Tencode', 'Heating_GasW|BsmtFinType1_GLQ', 'MiscVal|BsmtFinType2_Unf', 'RoofMatl_CompShg|SaleCondition_Normal', 'HeatingQC_TA|HalfBath', 'GarageType_CarPort|Foundation_Slab', 'LandContour_Low|Exterior2nd_AsphShn', 'Exterior2nd_CmentBd|Street_Grvl', 'Foundation_BrkTil|RoofMatl_WdShngl', 'Electrical_Tencode|BsmtQual_Ex', 'GarageType_Attchd|MiscFeature_Gar2', 'KitchenQual_Tencode|BsmtCond_Tencode', 'Neighborhood_NPkVill|LotConfig_Inside', 'GarageCond_TA|MSZoning_FV', 'LandContour_Low|Heating_GasA', 'RoofStyle_Hip|PavedDrive_P', 'Heating_Tencode|MSZoning_RH', 'Utilities_Tencode|GarageFinish_RFn', 'KitchenQual_Gd|RoofMatl_Tar&Grv', 'GarageQual_Gd|HouseStyle_1.5Fin', 'GarageFinish_RFn|SaleType_CWD', 'Exterior2nd_BrkFace|MasVnrType_BrkCmn', 'Heating_GasA|Condition2_Norm', 'GarageCond_Po|BsmtFinType2_Tencode', 'GarageFinish_Unf|GarageQual_Po', 'Neighborhood_BrDale|HouseStyle_1.5Unf', 'RoofStyle_Hip|Fence_GdWo', 'Alley_Pave|Functional_Maj2', 'LotShape_Tencode|GarageCars', 'RoofStyle_Shed|Street_Pave', 'GarageCars|YearBuilt', 'Exterior2nd_CmentBd|BsmtFinSF1', 'BsmtFinType2_Tencode|Foundation_Slab', 'HeatingQC_Fa|GarageQual_Fa', 'GarageQual_TA|MSZoning_RH', 'BsmtFinSF1|HouseStyle_SLvl', 'HouseStyle_1.5Unf|MasVnrType_Stone', 'KitchenQual_Tencode|LotConfig_Inside', 'RoofMatl_CompShg|Condition1_Feedr', 'Exterior2nd_Stucco|Neighborhood_SawyerW', 'Fireplaces|BsmtCond_Po', 'Neighborhood_SWISU|Foundation_Slab', 'Neighborhood_Mitchel|Exterior1st_Wd Sdng', 'GarageCond_Po|Neighborhood_Timber', 'MSSubClass|Condition1_RRAn', 'BsmtHalfBath|ExterCond_Fa', 'MoSold|FireplaceQu_TA', 'MSZoning_FV|MasVnrType_Stone', 'Exterior2nd_AsbShng|LandContour_Lvl', 'TotRmsAbvGrd|LotShape_IR3', 'RoofStyle_Hip|MSZoning_RH', 'LotFrontage|Heating_GasA', 'BldgType_2fmCon|Neighborhood_NPkVill', 'BsmtFinType1_Tencode|SaleCondition_Abnorml', 'HeatingQC_Tencode|GarageCond_Gd', 'Neighborhood_Tencode|MSZoning_FV', 'LotShape_Reg|Exterior1st_VinylSd', 'GarageQual_Gd|BsmtFinType2_GLQ', 'MasVnrType_BrkCmn|BsmtCond_Po', 'PavedDrive_Tencode|BsmtFinType1_LwQ', 'GarageCond_Po|Alley_Pave', 'Condition1_Norm|FireplaceQu_TA', 'Foundation_PConc|BsmtFinType2_ALQ', 'BsmtFinType1_Tencode|LotFrontage', 'LandContour_Tencode|Foundation_Tencode', 'Exterior2nd_Wd Sdng|BsmtQual_Gd', 'ExterCond_Gd|BsmtFinType1_Unf', 'MiscFeature_Othr|YearBuilt', 'Condition1_Artery|Neighborhood_NPkVill', 'LotShape_IR1|HeatingQC_Tencode', 'GarageCond_Po|GarageFinish_RFn', 'SaleType_Tencode|GarageArea', 'GarageCond_Po|SaleCondition_Alloca', 'Street_Tencode|BsmtHalfBath', 'Functional_Maj1|Exterior1st_BrkComm', 'BsmtCond_Tencode|ExterQual_Tencode', 'Condition1_PosA|ExterQual_Gd', 'Fireplaces|GarageFinish_RFn', 'MSZoning_RM|BsmtExposure_No', 'LotArea|ExterQual_Gd', 'PavedDrive_N|LandSlope_Mod', 'EnclosedPorch|Exterior1st_HdBoard', 'GrLivArea|LandContour_Lvl', 'Functional_Maj2|KitchenQual_Fa', 'Alley_Pave|KitchenQual_Gd', 'Neighborhood_Sawyer|Exterior2nd_HdBoard', 'RoofMatl_WdShngl|WoodDeckSF', 'HouseStyle_2.5Unf|Neighborhood_Timber', 'Neighborhood_SWISU|BsmtExposure_No', 'Heating_Tencode|HalfBath', 'Exterior2nd_BrkFace|KitchenQual_Tencode', 'HouseStyle_SFoyer|LotConfig_FR2', 'GarageType_BuiltIn|Condition1_RRAe', 'Heating_Tencode|Neighborhood_NAmes', 'ExterQual_TA|BsmtFinType2_Unf', 'SaleType_Oth|Street_Pave', 'CentralAir_Tencode|HouseStyle_2Story', 'BsmtExposure_Av|Exterior1st_Wd Sdng', 'Neighborhood_NridgHt|ScreenPorch', 'TotalBsmtSF|Functional_Mod', 'Condition2_Tencode|Neighborhood_BrkSide', 'BsmtFinSF2|BsmtFinType2_Rec', 'Utilities_Tencode|BedroomAbvGr', 'Neighborhood_NPkVill|Exterior1st_VinylSd', 'Fireplaces|2ndFlrSF', 'SaleCondition_Abnorml|GarageType_2Types', 'FireplaceQu_Tencode|MSZoning_RM', 'HeatingQC_TA|Electrical_Tencode', 'BsmtCond_Tencode|RoofMatl_WdShngl', 'LandContour_Low|Neighborhood_OldTown', 'ExterCond_Gd|ExterQual_Tencode', 'Exterior2nd_CmentBd|2ndFlrSF', 'Exterior1st_HdBoard|MSZoning_FV', 'KitchenQual_Tencode|FireplaceQu_Ex', 'Street_Grvl|HouseStyle_2.5Unf', 'GarageFinish_Fin|Condition1_PosA', 'TotalBsmtSF|PoolArea', 'SaleCondition_Normal|BldgType_1Fam', 'SaleType_ConLD|SaleCondition_Normal', 'Condition1_Norm|Condition1_Tencode', 'Electrical_Tencode|ExterQual_Ex', 'Alley_Pave|FireplaceQu_Po', 'MasVnrType_BrkFace|ExterQual_Fa', 'ExterQual_TA|Alley_Grvl', 'PoolQC_Tencode|BsmtFinSF1', 'Exterior2nd_VinylSd|MSZoning_RM', 'YearBuilt|Exterior1st_MetalSd', 'HalfBath|PoolArea', 'LandContour_Tencode|Condition1_Tencode', 'Exterior2nd_Tencode|MasVnrType_None', 'Fireplaces|RoofMatl_CompShg', 'Heating_Tencode|GarageYrBlt', 'Condition1_Artery|Exterior2nd_VinylSd', 'Neighborhood_NAmes|ExterCond_Fa', 'EnclosedPorch|3SsnPorch', 'GarageQual_Tencode|HouseStyle_2Story', 'LandSlope_Sev|Exterior1st_VinylSd', 'BldgType_2fmCon|RoofMatl_WdShngl', 'RoofStyle_Flat|GarageType_Attchd', 'PoolQC_Tencode|HouseStyle_SLvl', 'LandContour_Tencode|Exterior1st_MetalSd', 'Functional_Min1|BsmtFinType1_Unf', 'YearRemodAdd|BsmtCond_Fa', 'Condition1_PosA|Neighborhood_SawyerW', 'Neighborhood_BrDale|Condition2_Tencode', 'BsmtExposure_Gd|MSZoning_Tencode', 'ExterCond_Gd|Electrical_FuseF', 'OverallQual|MSZoning_RM', 'GarageQual_Fa|Neighborhood_NAmes', 'PavedDrive_N|Exterior1st_MetalSd', 'Fence_Tencode|Exterior2nd_Plywood', 'Exterior2nd_Tencode|Condition2_Tencode', 'GarageQual_Tencode|MasVnrArea', 'PavedDrive_Y', 'LotConfig_Corner|Exterior1st_Wd Sdng', 'MasVnrType_BrkCmn|Exterior2nd_AsphShn', 'BldgType_Duplex|HeatingQC_Fa', 'SaleCondition_Alloca|BldgType_TwnhsE', 'GrLivArea|LotConfig_Tencode', 'PavedDrive_Tencode|BsmtFinType2_Unf', 'BldgType_Twnhs|Condition1_Norm', 'Exterior1st_WdShing|BsmtCond_Fa', 'Fireplaces|Neighborhood_Veenker', 'FireplaceQu_Ex|SaleType_COD', 'SaleCondition_Tencode|Fireplaces', 'GarageCond_Tencode|Exterior2nd_CmentBd', 'LotConfig_CulDSac|LotConfig_Tencode', 'BsmtFinType1_Rec|MasVnrType_BrkCmn', 'KitchenQual_Gd|MSZoning_Tencode', 'ExterQual_Gd|FireplaceQu_TA', 'Street_Tencode|Fence_MnWw', 'Street_Grvl|BsmtFinType1_Unf', 'Exterior1st_CemntBd|BsmtExposure_No', 'Functional_Maj2|GarageType_BuiltIn', 'BsmtFinType1_BLQ|FireplaceQu_Fa', 'Foundation_PConc|CentralAir_Tencode', 'TotRmsAbvGrd|MSZoning_RL', 'LotArea|LotConfig_FR2', 'GarageType_Detchd|LotConfig_CulDSac', 'Heating_Grav|Exterior2nd_Wd Shng', 'Foundation_PConc|GarageCond_Tencode', 'ExterQual_Fa|Exterior2nd_AsphShn', 'ExterCond_Gd|ExterQual_Gd', 'Foundation_Tencode|HouseStyle_2Story', 'LandSlope_Tencode|LowQualFinSF', 'Exterior1st_BrkComm|Exterior1st_Plywood', 'Neighborhood_ClearCr|LandSlope_Sev', 'HeatingQC_Ex|GarageCond_Gd', 'GarageQual_Po|SaleCondition_Abnorml', 'HouseStyle_SFoyer|Foundation_BrkTil', 'RoofStyle_Hip|RoofMatl_CompShg', 'Neighborhood_Crawfor|SaleType_COD', 'BsmtUnfSF|BsmtFinType1_GLQ', 'LandContour_Low|GarageType_BuiltIn', 'LandSlope_Gtl|BsmtQual_Gd', 'GarageCond_Gd|MiscFeature_Gar2', 'Condition1_RRAe', 'HouseStyle_1Story|Foundation_Tencode', 'Condition1_RRAe|MSZoning_RM', 'GrLivArea|RoofMatl_Tar&Grv', 'MSZoning_C (all)|BsmtFinType2_Rec', 'BsmtFinSF2|TotRmsAbvGrd', 'GarageYrBlt|BsmtFinType1_GLQ', 'Exterior1st_BrkComm|MSZoning_RL', 'LandSlope_Mod|SaleType_ConLI', 'BsmtQual_Tencode|SaleType_ConLI', 'CentralAir_Y|BldgType_Tencode', 'LotShape_IR2|MasVnrType_Tencode', 'Neighborhood_Tencode|Condition1_Norm', 'ExterQual_TA|BldgType_TwnhsE', 'BsmtFinType1_BLQ|Street_Pave', 'MSZoning_Tencode|Exterior2nd_Plywood', 'Foundation_PConc|MasVnrType_BrkCmn', 'LotShape_IR1|LandSlope_Sev', 'LandSlope_Mod|MSZoning_RL', 'GarageType_Detchd|Street_Pave', 'BsmtQual_TA|BsmtCond_Tencode', 'SaleCondition_Family|BldgType_1Fam', '1stFlrSF|BsmtCond_Tencode', 'GarageType_Tencode|SaleType_ConLI', 'Neighborhood_Somerst|HouseStyle_2Story', 'PoolQC_Tencode|SaleType_New', 'BsmtFinSF2|GarageType_Attchd', 'ExterCond_TA|BsmtFinType2_ALQ', 'Neighborhood_NridgHt|BsmtFinType1_Rec', 'PavedDrive_Y|BsmtCond_TA', 'LandSlope_Tencode|LotConfig_Tencode', 'Heating_Tencode|PoolQC_Tencode', 'BldgType_2fmCon|MSZoning_FV', 'Foundation_Stone|Neighborhood_MeadowV', 'Fireplaces|BldgType_TwnhsE', 'Electrical_FuseP|Exterior1st_WdShing', 'Foundation_CBlock|FireplaceQu_TA', 'HouseStyle_1.5Unf|BsmtFinType2_Unf', '3SsnPorch|Neighborhood_NAmes', 'Condition1_PosA|RoofMatl_WdShngl', 'BsmtCond_Gd|ExterQual_Gd', 'HouseStyle_2.5Unf|BsmtExposure_No', 'BldgType_TwnhsE|Foundation_CBlock', 'Neighborhood_Edwards|BldgType_1Fam', 'RoofStyle_Flat|Fireplaces', 'BsmtFinType1_Tencode|MasVnrType_BrkFace', 'MSSubClass|Exterior1st_BrkComm', 'ExterQual_Gd|MasVnrArea', 'BedroomAbvGr|Neighborhood_Gilbert', 'Foundation_Stone|Neighborhood_Timber', 'BsmtFinType1_Rec|Fence_MnPrv', 'Street_Tencode|PavedDrive_P', 'MoSold|BsmtExposure_Av', 'LandSlope_Mod|MiscVal', 'Street_Tencode|Street_Grvl', 'Functional_Maj1|Exterior2nd_Plywood', 'BsmtQual_Ex|Condition1_Norm', 'RoofMatl_Tar&Grv|RoofStyle_Gambrel', 'BldgType_TwnhsE|BsmtExposure_No', 'MasVnrType_BrkCmn|KitchenQual_TA', 'MSZoning_C (all)|SaleCondition_Partial', 'Exterior1st_AsbShng|ExterCond_Fa', 'GarageCond_Fa|Condition2_Artery', 'SaleCondition_Tencode|BldgType_1Fam', 'Fence_MnPrv|Utilities_AllPub', 'SaleType_Tencode|LandContour_Lvl', 'HeatingQC_Ex|Exterior2nd_MetalSd', 'SaleCondition_Tencode|SaleType_ConLD', 'GarageQual_Tencode|Neighborhood_SawyerW', '1stFlrSF|CentralAir_Tencode', 'LandSlope_Gtl|Neighborhood_Timber', 'Functional_Typ|Exterior2nd_Tencode', 'SaleType_Tencode|LotConfig_Tencode', 'BsmtFinType2_ALQ|ExterQual_Tencode', 'LandContour_Low|SaleType_ConLw', 'RoofStyle_Hip|BsmtFinType2_BLQ', '1stFlrSF|HouseStyle_1.5Fin', 'BsmtHalfBath|BsmtExposure_Gd', 'SaleCondition_Tencode|Condition1_Artery', 'BsmtFinType2_GLQ|FireplaceQu_TA', 'MSZoning_Tencode|ExterQual_Fa', 'SaleType_New|ExterQual_Fa', 'Exterior1st_AsbShng|Neighborhood_Timber', 'SaleType_CWD|BsmtFinType1_GLQ', 'Condition1_PosN|Functional_Mod', 'MiscFeature_Othr|ScreenPorch', 'BsmtQual_Fa|Condition1_PosN', 'GarageQual_Fa|Exterior2nd_Wd Sdng', 'LandSlope_Mod|GarageCond_Gd', 'GrLivArea|Heating_GasW', 'ExterCond_Tencode|Neighborhood_IDOTRR', 'BsmtFinType1_Rec|Exterior1st_VinylSd', 'GarageCond_Po|SaleCondition_Family', 'ExterQual_TA|Neighborhood_Somerst', 'GarageArea|Exterior2nd_Plywood', 'Exterior1st_Tencode|MasVnrType_Stone', 'LotShape_Reg|GarageArea', 'Neighborhood_SWISU|Foundation_CBlock', 'RoofStyle_Tencode|Condition1_RRAn', 'BsmtExposure_Gd|Neighborhood_MeadowV', 'MiscFeature_Othr|Neighborhood_NWAmes', 'Exterior2nd_MetalSd|PoolArea', 'Neighborhood_ClearCr|SaleType_ConLw', 'Exterior2nd_Stucco|Fence_GdWo', 'BsmtQual_Ex|BldgType_1Fam', 'Exterior1st_CemntBd|OverallCond', 'BsmtQual_Ex|BsmtFinType1_ALQ', 'Electrical_FuseP|LandContour_Bnk', 'Exterior1st_Tencode|GarageType_2Types', 'SaleCondition_Family|Condition1_RRAe', 'Heating_GasW|PavedDrive_Tencode', 'Neighborhood_SawyerW|Exterior1st_WdShing', 'SaleType_Tencode|ExterCond_Gd', 'RoofMatl_Tar&Grv|PoolArea', 'BldgType_Duplex|Exterior2nd_MetalSd', 'RoofStyle_Hip|SaleCondition_Abnorml', 'LotConfig_Corner|RoofMatl_Tar&Grv', 'Neighborhood_BrDale|Heating_GasA', 'GarageType_Tencode|HeatingQC_Ex', 'SaleCondition_Abnorml|MasVnrType_BrkFace', 'Neighborhood_CollgCr|Exterior2nd_MetalSd', 'BldgType_2fmCon|Exterior1st_AsbShng', 'BldgType_Twnhs|FireplaceQu_Po', 'PavedDrive_N|GarageArea', 'BsmtFinType2_LwQ|Exterior1st_Wd Sdng', 'MiscFeature_Shed|SaleCondition_Normal', 'KitchenAbvGr|Neighborhood_Sawyer', 'KitchenQual_Ex|BsmtCond_Gd', 'ExterQual_Ex|BsmtFinType1_LwQ', 'BsmtQual_Fa|Fence_MnWw', 'BsmtFinType2_BLQ|BsmtExposure_Gd', 'BsmtFinType2_Tencode|Alley_Grvl', 'LandContour_Low|SaleCondition_Partial', 'PoolQC_Tencode|BsmtFinType1_LwQ', 'Condition1_PosN|MasVnrArea', 'LotShape_IR1|MSSubClass', 'BsmtHalfBath|Foundation_Slab', 'LandSlope_Tencode|RoofStyle_Tencode', 'Foundation_Stone|SaleCondition_Abnorml', 'YrSold|HouseStyle_SFoyer', 'BsmtCond_Po|BsmtFinType1_Unf', 'LotConfig_Corner|LotConfig_Inside', 'LandSlope_Tencode|GarageFinish_Tencode', 'TotRmsAbvGrd|Functional_Maj1', 'MSZoning_C (all)|GarageQual_Po', 'Condition2_Tencode|Alley_Grvl', 'BsmtFinType2_BLQ|Condition1_Norm', 'LotFrontage|Fence_Tencode', 'MiscVal|OverallCond', 'Neighborhood_Blmngtn|Exterior1st_AsbShng', 'Street_Tencode|KitchenQual_TA', 'FullBath|BsmtExposure_No', 'RoofStyle_Flat|BsmtExposure_Mn', 'RoofStyle_Shed|Utilities_AllPub', 'FireplaceQu_Po|MiscFeature_Gar2', 'SaleType_New|SaleType_CWD', 'Neighborhood_Edwards|LotConfig_CulDSac', 'Exterior2nd_Wd Sdng|GarageType_Basment', 'Condition1_Artery|Neighborhood_Edwards', 'BsmtExposure_Av|MasVnrType_BrkFace', 'Functional_Tencode|SaleCondition_Abnorml', 'RoofStyle_Flat|Neighborhood_Somerst', 'PoolQC_Tencode|Neighborhood_MeadowV', 'LandContour_HLS|FireplaceQu_TA', 'Neighborhood_CollgCr|GarageQual_Fa', 'Fence_Tencode|RoofMatl_Tar&Grv', 'GarageType_BuiltIn|Neighborhood_Gilbert', 'Foundation_PConc', 'FireplaceQu_Tencode|Street_Tencode', 'HeatingQC_Ex|Street_Grvl', 'Exterior2nd_Wd Sdng|Exterior1st_MetalSd', 'MiscFeature_Tencode|HouseStyle_2.5Unf', 'Functional_Min1|BsmtFinType1_GLQ', 'BsmtFinType1_Tencode|Alley_Tencode', 'BsmtFinSF2|Neighborhood_Edwards', 'OverallQual|MiscFeature_Tencode', 'Fence_Tencode|Exterior1st_WdShing', 'BsmtFullBath|Exterior2nd_AsphShn', 'MasVnrType_BrkCmn|BsmtExposure_Av', 'MSSubClass|Neighborhood_Gilbert', 'GarageQual_Fa|Functional_Maj2', 'Heating_Tencode|TotRmsAbvGrd', 'FireplaceQu_Gd|RoofStyle_Gable', 'GarageQual_Tencode|SaleCondition_Abnorml', 'BsmtQual_Ex|BsmtFinType1_Unf', 'GarageType_Detchd|Functional_Min1', 'Heating_GasA|RoofMatl_CompShg', 'Neighborhood_Sawyer|Fence_GdWo', 'Exterior2nd_VinylSd|Fence_MnPrv', 'Functional_Tencode|GarageType_Basment', 'FireplaceQu_Tencode|FireplaceQu_Ex', 'LotFrontage|GarageQual_Po', 'GarageQual_Gd|Condition1_RRAn', 'Heating_GasA|MSZoning_RL', 'Neighborhood_SWISU|LotConfig_Tencode', 'Utilities_Tencode|MiscFeature_Gar2', 'Condition2_Artery|SaleType_COD', 'Exterior2nd_VinylSd|SaleCondition_Alloca', 'SaleType_ConLw|OverallCond', 'SaleType_Tencode|Exterior1st_WdShing', 'Electrical_Tencode|SaleType_WD', 'GarageFinish_Fin|HouseStyle_2Story', 'Functional_Min1|BsmtExposure_Gd', 'SaleCondition_Alloca|BsmtFinType2_Unf', 'HouseStyle_1.5Unf|ExterCond_Fa', 'Foundation_PConc|SaleCondition_Normal', 'Foundation_Stone|FireplaceQu_TA', 'MiscVal|Fence_GdWo', 'Exterior2nd_Brk Cmn|MasVnrType_BrkFace', 'BsmtFinType2_ALQ|GarageFinish_RFn', 'Neighborhood_BrDale|KitchenQual_Fa', 'BsmtFinType2_BLQ|Neighborhood_IDOTRR', 'MasVnrType_None|Neighborhood_IDOTRR', 'BsmtFullBath|SaleCondition_Normal', 'SaleType_ConLI|GarageQual_Fa', 'HalfBath|BldgType_1Fam', 'Alley_Grvl|Fence_MnPrv', 'BsmtFinType1_BLQ|Fence_GdWo', 'BsmtFinType2_Tencode|GarageCond_Ex', 'Neighborhood_OldTown|HeatingQC_Tencode', 'KitchenQual_Gd|BsmtExposure_Av', 'Street_Tencode|BsmtExposure_Mn', 'BsmtExposure_Av|ExterQual_Ex', 'FullBath|Condition1_RRAe', 'PavedDrive_N|HeatingQC_Gd', 'Exterior2nd_AsbShng|LandSlope_Gtl', 'GarageFinish_Fin|SaleType_ConLD', 'BsmtQual_Fa|ExterQual_Fa', 'GarageType_Tencode|CentralAir_Tencode', 'Neighborhood_StoneBr|Exterior2nd_HdBoard', 'HeatingQC_Ex|CentralAir_Y', 'MasVnrType_None|Neighborhood_SawyerW', 'BedroomAbvGr|MasVnrType_BrkFace', 'Neighborhood_Crawfor|Exterior2nd_Wd Shng', 'Exterior2nd_Stone|BsmtExposure_Av', 'PoolArea|ExterCond_Fa', 'Neighborhood_SWISU|BsmtFinType1_Unf', 'RoofStyle_Flat|GarageFinish_Fin', 'LotShape_Tencode|ExterCond_Gd', 'BldgType_Twnhs|Neighborhood_SWISU', 'PavedDrive_N|BsmtFinType2_GLQ', 'GarageQual_Fa|BsmtFinType1_LwQ', 'PavedDrive_N|LotConfig_Corner', 'LandSlope_Gtl|MasVnrType_BrkFace', 'Foundation_BrkTil|Condition1_RRAe', 'GarageFinish_Fin|BsmtExposure_Gd', 'GarageCond_Fa|Exterior1st_WdShing', 'GarageType_Tencode|LotConfig_CulDSac', 'LotShape_Tencode|BldgType_TwnhsE', 'LandSlope_Tencode|2ndFlrSF', 'BsmtQual_TA|GarageType_Basment', 'PoolQC_Tencode|Exterior1st_Tencode', 'LotConfig_Tencode|BsmtCond_TA', 'Foundation_CBlock|MSZoning_RH', 'KitchenQual_Ex|Condition1_RRAn', 'BldgType_1Fam|Neighborhood_MeadowV', 'Alley_Grvl|MiscFeature_Gar2', 'OverallQual|Neighborhood_Blmngtn', 'Heating_Grav|BsmtFinType2_Rec', 'BsmtCond_Tencode|GarageCond_Ex', 'HeatingQC_Gd|Neighborhood_Mitchel', 'Exterior2nd_CmentBd|PavedDrive_P', '3SsnPorch|MasVnrType_BrkCmn', 'RoofMatl_CompShg|GarageFinish_Tencode', 'CentralAir_N|Neighborhood_MeadowV', 'Alley_Pave|Neighborhood_MeadowV', 'Fireplaces|MSZoning_C (all)', 'BsmtQual_Gd|BsmtCond_TA', 'Heating_GasA|CentralAir_Y', '3SsnPorch|GarageCond_Gd', 'GarageCond_TA|MSZoning_C (all)', 'LotConfig_Corner|KitchenQual_TA', '3SsnPorch|CentralAir_N', 'LandSlope_Sev|PavedDrive_P', 'FireplaceQu_Gd|SaleCondition_Family', 'Exterior1st_CemntBd|SaleType_CWD', 'BsmtFinType2_BLQ|Exterior1st_CemntBd', 'Neighborhood_NridgHt|Fence_GdWo', 'Neighborhood_Sawyer|BsmtFinType2_Unf', 'RoofMatl_CompShg|ExterCond_Fa', 'Exterior1st_AsbShng|KitchenQual_TA', 'Fence_Tencode|HouseStyle_1.5Unf', 'Condition2_Tencode|ExterCond_Tencode', 'GarageFinish_Tencode|MasVnrType_Stone', 'GarageType_Basment|OverallCond', 'SaleCondition_Alloca|Fence_MnWw', 'Street_Tencode|LandSlope_Gtl', 'Fireplaces|CentralAir_Tencode', 'Foundation_PConc|GarageCond_TA', 'Electrical_FuseA|BsmtFinType1_ALQ', 'ExterCond_TA|MiscFeature_Shed', 'GarageType_Tencode|BsmtQual_Gd', 'Neighborhood_NoRidge|Functional_Min2', 'Neighborhood_BrDale|Exterior1st_Stucco', 'Functional_Maj2|MSZoning_RM', 'LandSlope_Mod|GarageType_BuiltIn', 'HouseStyle_1Story|HouseStyle_1.5Unf', 'Neighborhood_ClearCr|GarageQual_Po', 'SaleCondition_Partial|Fence_MnPrv', 'OpenPorchSF|BldgType_1Fam', '3SsnPorch|LotConfig_CulDSac', 'GarageQual_Po|Exterior1st_Tencode', 'BsmtFinType1_Tencode|GarageQual_TA', 'YearBuilt|Electrical_SBrkr', 'Neighborhood_NPkVill|Condition1_Feedr', 'BsmtCond_Po|CentralAir_Tencode', 'Neighborhood_Tencode|SaleType_COD', 'Street_Grvl|Neighborhood_IDOTRR', 'Neighborhood_Blmngtn|GarageCars', 'FireplaceQu_Gd|Exterior2nd_CmentBd', 'RoofStyle_Tencode|FireplaceQu_TA', 'GarageCond_Tencode|SaleType_Oth', 'BsmtFinType1_LwQ|Exterior1st_WdShing', 'HeatingQC_Ex|LotConfig_CulDSac', 'LotShape_Reg|BsmtFinType1_ALQ', 'LandSlope_Mod|GarageFinish_Tencode', 'BldgType_Tencode|MasVnrType_BrkFace', 'Foundation_Stone|Condition1_Norm', 'Exterior1st_HdBoard|BsmtFinType1_Unf', 'LandContour_Bnk|OpenPorchSF', 'HouseStyle_1.5Unf|BsmtCond_Tencode', 'Exterior2nd_Tencode|Neighborhood_Crawfor', 'Exterior2nd_Stucco|Electrical_Tencode', 'RoofMatl_Tar&Grv|RoofMatl_WdShngl', 'HouseStyle_1Story|Functional_Min2', 'GarageFinish_Fin|FireplaceQu_Ex', 'KitchenAbvGr|BsmtFinType1_Rec', 'RoofStyle_Tencode|Exterior1st_VinylSd', 'ExterQual_Ex|BsmtCond_Po', 'KitchenQual_Tencode|BsmtCond_Fa', 'GarageYrBlt|LotConfig_Inside', 'BsmtExposure_Av|Condition2_Norm', 'SaleType_CWD|ExterCond_Fa', 'HeatingQC_Fa|2ndFlrSF', 'BldgType_TwnhsE|CentralAir_Y', 'Neighborhood_NWAmes|MSZoning_Tencode', 'RoofMatl_CompShg|BsmtCond_Gd', 'GarageCond_TA|LotConfig_Tencode', 'BsmtCond_Tencode|GarageQual_Tencode', 'LotConfig_Corner|Functional_Min2', 'Neighborhood_Edwards|Exterior1st_MetalSd', 'BldgType_2fmCon|HeatingQC_Ex', 'Utilities_Tencode|LandContour_Bnk', 'Utilities_Tencode|MSZoning_C (all)', 'BsmtFinType2_ALQ|OpenPorchSF', 'GarageCond_Tencode|MiscFeature_Shed', 'OverallQual|MiscFeature_Gar2', 'LandContour_Tencode|MasVnrType_BrkFace', 'SaleCondition_Family|Fence_GdPrv', 'OverallQual|Functional_Typ', 'LandContour_HLS|GarageType_Basment', 'BldgType_Duplex|RoofMatl_Tencode', 'Foundation_Stone|Neighborhood_Sawyer', '1stFlrSF|Neighborhood_Gilbert', 'Electrical_FuseF|MasVnrType_BrkCmn', 'Condition2_Tencode|GarageFinish_RFn', 'Condition1_Norm|MiscFeature_Gar2', 'Exterior2nd_MetalSd|CentralAir_Tencode', 'ExterCond_Tencode|GarageFinish_RFn', 'Exterior2nd_AsbShng|SaleType_Oth', 'HouseStyle_SFoyer|GarageCond_Ex', 'LotConfig_Tencode|HouseStyle_2.5Unf', 'FireplaceQu_Fa|ExterQual_Ex', 'GrLivArea|BsmtFinType2_Tencode', 'Exterior2nd_Brk Cmn|GarageYrBlt', 'GarageQual_Tencode|RoofMatl_WdShngl', 'HouseStyle_1Story|TotRmsAbvGrd', 'LotShape_Tencode|BedroomAbvGr', 'TotalBsmtSF|Functional_Maj1', 'SaleType_ConLD|Condition1_RRAn', 'Exterior1st_VinylSd|Neighborhood_SawyerW', 'MSZoning_RM|Condition2_Artery', 'MiscVal|Exterior1st_BrkComm', 'HouseStyle_SFoyer|Functional_Tencode', 'Neighborhood_Mitchel|Exterior1st_Plywood', 'Functional_Maj1|Exterior2nd_AsphShn', 'HouseStyle_1Story|SaleCondition_Abnorml', 'GrLivArea|LotShape_IR3', 'KitchenQual_Ex|BsmtFinType2_BLQ', 'SaleType_New|LandSlope_Gtl', 'BsmtFinType1_ALQ|Condition2_Norm', 'BsmtQual_Ex|PavedDrive_P', 'Exterior2nd_AsbShng|BsmtQual_Gd', 'HouseStyle_SFoyer|FireplaceQu_Fa', 'SaleType_ConLD|2ndFlrSF', 'Exterior1st_CemntBd|Alley_Grvl', 'BsmtFullBath|GarageType_BuiltIn', 'EnclosedPorch|GarageQual_Po', 'GarageQual_TA|HouseStyle_SLvl', 'RoofStyle_Gambrel|GarageType_Basment', 'BsmtFinType1_ALQ|OpenPorchSF', 'MSZoning_FV|MasVnrType_BrkFace', 'BsmtFinType1_BLQ|BsmtFinSF1', 'BsmtCond_Tencode|Neighborhood_Timber', 'LotShape_IR1|Exterior2nd_Brk Cmn', 'GarageFinish_Unf|Foundation_Tencode', 'LotArea|FireplaceQu_Ex', 'ExterCond_Gd|ExterCond_Fa', 'ExterCond_Tencode|LotConfig_Tencode', 'Neighborhood_OldTown|Condition1_PosA', 'FireplaceQu_Gd|GarageCond_Tencode', 'KitchenAbvGr|MoSold', 'Condition1_RRAe|RoofStyle_Tencode', 'SaleCondition_Abnorml|Utilities_AllPub', 'Functional_Tencode|Exterior1st_Stucco', 'GarageCond_Tencode|MasVnrType_None', 'MasVnrArea|MasVnrType_Stone', 'Condition1_PosN|BldgType_TwnhsE', 'Neighborhood_NPkVill|Electrical_FuseA', 'BsmtFinType2_Rec|GarageYrBlt', 'BsmtExposure_Mn|Street_Pave', 'HouseStyle_SFoyer|SaleType_WD', 'Foundation_CBlock|CentralAir_Tencode', 'Exterior2nd_CmentBd|Exterior2nd_Wd Sdng', 'Neighborhood_ClearCr|Condition1_Tencode', 'Neighborhood_Tencode|Functional_Maj2', 'Foundation_BrkTil|Foundation_Slab', 'Exterior1st_HdBoard|Alley_Pave', 'GarageQual_Fa|OpenPorchSF', 'SaleType_WD|Exterior2nd_MetalSd', 'Electrical_SBrkr|BsmtQual_TA', 'BldgType_2fmCon|BsmtCond_Gd', 'ExterQual_TA|KitchenQual_Fa', 'LandContour_Low|Exterior2nd_Wd Sdng', 'Neighborhood_BrDale|Neighborhood_NAmes', 'Functional_Tencode|LandSlope_Gtl', 'Heating_GasW|MasVnrType_Stone', 'ExterQual_Tencode|KitchenQual_TA', 'Exterior1st_AsbShng|RoofStyle_Tencode', 'Exterior2nd_AsbShng|Neighborhood_Crawfor', 'Condition1_RRAe|Exterior1st_Wd Sdng', 'RoofStyle_Hip|RoofStyle_Gable', 'MSSubClass|Exterior2nd_HdBoard', 'GarageCars|ExterCond_TA', 'GrLivArea|Exterior1st_MetalSd', 'Alley_Tencode|GarageCond_Tencode', 'Heating_Tencode|Heating_GasW', 'BsmtFullBath|GarageType_CarPort', 'Heating_GasA|MSZoning_RH', 'LotConfig_Corner|ExterQual_Gd', 'BsmtFinType2_Unf|Exterior1st_Wd Sdng', 'HeatingQC_Gd|FireplaceQu_Po', 'Condition1_RRAe|CentralAir_Tencode', 'Neighborhood_NWAmes|LotConfig_Inside', 'BsmtFinSF2|Condition2_Tencode', 'GarageType_Basment|MSSubClass', 'BsmtQual_Tencode|SaleType_COD', 'Exterior2nd_Stone|SaleType_CWD', 'Condition1_Tencode|ScreenPorch', 'PavedDrive_Tencode|Functional_Min1', 'SaleCondition_Abnorml|LotConfig_Inside', 'GrLivArea|Foundation_BrkTil', 'LandSlope_Mod|BsmtFinType2_Rec', 'GarageFinish_Unf|Street_Pave', 'Street_Tencode|GarageQual_TA', 'GarageFinish_Unf|RoofMatl_WdShngl', 'Exterior1st_Stucco|Street_Grvl', 'BsmtExposure_Tencode|Exterior2nd_Wd Sdng', 'LandSlope_Tencode|CentralAir_N', 'BsmtFinType1_ALQ|RoofStyle_Shed', 'FireplaceQu_Gd|Neighborhood_SWISU', 'SaleType_ConLw|Neighborhood_Tencode', 'MSZoning_RM|Neighborhood_BrkSide', 'HalfBath|SaleType_New', '1stFlrSF|MSZoning_RM', 'BsmtFullBath|Condition1_Norm', 'Neighborhood_ClearCr|Heating_Tencode', 'Neighborhood_SWISU|HouseStyle_2.5Unf', 'BsmtCond_Fa|HouseStyle_1.5Fin', 'GarageFinish_Unf|MiscFeature_Tencode', 'EnclosedPorch|BsmtFinType2_Tencode', 'CentralAir_Y|Condition2_Norm', 'YrSold|BsmtHalfBath', 'HalfBath|GarageType_CarPort', 'ExterCond_TA|Foundation_Stone', 'HouseStyle_SFoyer|CentralAir_Y', 'HouseStyle_Tencode|Neighborhood_BrkSide', 'BsmtQual_Tencode|BsmtFinSF1', 'RoofStyle_Hip|Heating_GasA', 'Neighborhood_StoneBr|PavedDrive_P', 'Neighborhood_Tencode|BsmtFinType2_Unf', 'LotConfig_CulDSac|BsmtFinType1_Unf', 'Exterior1st_BrkFace|HeatingQC_Fa', 'Exterior2nd_VinylSd|MSZoning_RL', 'Functional_Tencode|3SsnPorch', 'Condition1_PosA|GarageFinish_RFn', 'Neighborhood_ClearCr|BsmtFinType2_GLQ', 'Heating_GasW|MiscFeature_Gar2', 'BldgType_2fmCon|Functional_Tencode', 'GrLivArea|Electrical_FuseF', 'Functional_Maj2|Condition1_Feedr', 'OverallQual|1stFlrSF', 'Neighborhood_StoneBr|Condition2_Norm', 'SaleType_COD|Exterior1st_BrkComm', 'Neighborhood_SawyerW|BsmtQual_Gd', 'BsmtFinType2_Tencode|LotShape_IR1', 'Heating_GasA|BsmtQual_Fa', '2ndFlrSF|BsmtFinSF1', 'OverallQual|GarageType_CarPort', 'LotFrontage|BsmtFinType2_Unf', 'KitchenQual_Tencode|RoofStyle_Gambrel', 'Neighborhood_BrDale|BsmtFinType2_GLQ', 'MiscVal|Neighborhood_BrkSide', 'GarageType_Detchd|Neighborhood_SWISU', 'Functional_Tencode|Functional_Min1', 'MiscFeature_Othr|Electrical_FuseF', 'MoSold|BsmtCond_Gd', 'RoofStyle_Gambrel|BsmtFinType1_Unf', 'Neighborhood_Tencode|LandContour_Lvl', 'Heating_Tencode|Functional_Mod', 'Foundation_PConc|Exterior1st_WdShing', 'Exterior2nd_MetalSd|GarageType_Basment', 'RoofStyle_Hip|Exterior2nd_BrkFace', 'Exterior1st_BrkFace|Exterior2nd_Wd Shng', 'Exterior1st_VinylSd|Condition2_Norm', 'LandContour_Low|Foundation_Stone', 'BsmtFullBath|Fence_MnWw', 'RoofStyle_Gable|FireplaceQu_TA', 'Exterior2nd_Tencode|ExterCond_Tencode', '1stFlrSF|BsmtExposure_Av', 'LotShape_IR2|BsmtQual_Gd', 'BsmtFinType1_ALQ|2ndFlrSF', 'YearBuilt|Street_Pave', 'Exterior2nd_VinylSd|Functional_Min2', 'RoofStyle_Hip|BsmtQual_Fa', 'Neighborhood_Tencode|GarageFinish_RFn', 'Condition2_Norm|Exterior1st_WdShing', 'HouseStyle_Tencode|GarageYrBlt', 'TotalBsmtSF|KitchenQual_Tencode', 'Utilities_Tencode|Exterior1st_Wd Sdng', 'SaleType_WD|BsmtCond_Tencode', 'EnclosedPorch|MoSold', 'BsmtFinType1_BLQ|1stFlrSF', 'LowQualFinSF|GarageType_Basment', 'KitchenQual_Fa|Exterior1st_MetalSd', 'ExterQual_TA|LandSlope_Gtl', 'HeatingQC_Fa|BsmtFinType1_BLQ', 'SaleCondition_Tencode|HouseStyle_SLvl', 'GarageCond_TA|Neighborhood_ClearCr', 'Exterior2nd_Stone|Street_Pave', 'BsmtFinSF2|BsmtCond_Fa', 'GarageFinish_Unf|MoSold', 'Fence_GdWo|SaleType_CWD', 'HeatingQC_Fa|Neighborhood_SWISU', 'LotShape_IR2|Exterior2nd_Tencode', 'Neighborhood_NWAmes|Fence_GdWo', 'Neighborhood_Somerst|BsmtFinType2_BLQ', 'Exterior2nd_Plywood|ExterQual_Fa', 'Neighborhood_BrDale|RoofMatl_Tencode', 'LandSlope_Gtl|GarageType_Basment', 'BsmtExposure_Tencode|Heating_GasW', 'OverallQual|Alley_Tencode', 'Electrical_FuseA|Foundation_Slab', 'Exterior2nd_Tencode|BldgType_Tencode', 'FireplaceQu_Tencode|LotConfig_Tencode', 'BldgType_2fmCon|HouseStyle_Tencode', 'BsmtFinType1_Rec|LotShape_IR3', 'GarageArea|ExterQual_Tencode', 'FireplaceQu_Tencode|BedroomAbvGr', 'Neighborhood_CollgCr|GarageFinish_Tencode', 'ExterCond_Tencode|LotConfig_Inside', 'Neighborhood_Tencode|ExterCond_Gd', 'KitchenQual_TA|MiscFeature_Gar2', 'GarageCond_TA|Neighborhood_Veenker', 'Neighborhood_Tencode|Neighborhood_BrkSide', 'ExterQual_TA|BsmtQual_Ex', 'LotFrontage|Exterior1st_BrkComm', 'BsmtFinType1_ALQ|MiscFeature_Gar2', 'LandContour_Lvl|BsmtFinType1_LwQ', 'Functional_Mod|GarageCond_Ex', 'Exterior2nd_BrkFace|Fence_GdPrv', 'MiscFeature_Othr|Heating_Tencode', 'BsmtFinType1_BLQ|GarageType_Attchd', 'Alley_Tencode|LandContour_Tencode', 'Street_Tencode|GarageCond_Gd', 'Condition1_Artery|Foundation_Tencode', 'PoolQC_Tencode|GarageQual_TA', 'HouseStyle_SFoyer|GarageType_Basment', 'Exterior1st_BrkFace|RoofMatl_Tencode', 'LotShape_IR2|ExterCond_Tencode', 'Exterior1st_BrkFace|KitchenQual_Gd', 'PavedDrive_N|HeatingQC_Ex', 'Neighborhood_NridgHt|Neighborhood_OldTown', 'LandContour_Bnk|GarageFinish_RFn', 'KitchenQual_Ex|SaleType_New', 'LandContour_Low|3SsnPorch', 'BldgType_Duplex|LotConfig_CulDSac', 'GarageFinish_Unf|HouseStyle_SLvl', 'Condition1_RRAe|BldgType_Tencode', 'MiscVal|HeatingQC_Tencode', 'MiscFeature_Shed|GarageType_Basment', 'EnclosedPorch|Functional_Typ', 'Exterior2nd_BrkFace|GarageCond_Fa', 'GarageType_Basment|HouseStyle_2.5Unf', 'PoolQC_Tencode|Neighborhood_Timber', 'FireplaceQu_Ex|Neighborhood_MeadowV', 'Neighborhood_Veenker|KitchenQual_Tencode', 'HeatingQC_Ex|LotConfig_Inside', 'Neighborhood_ClearCr|Fence_MnPrv', 'Condition1_RRAe|Condition1_Norm', 'LandContour_HLS|BsmtFinType2_Unf', 'Neighborhood_Blmngtn|BsmtQual_Tencode', 'LotShape_Reg|SaleCondition_Family', 'SaleCondition_Tencode|MiscFeature_Othr', 'BsmtExposure_Tencode|GarageFinish_Tencode', 'PavedDrive_P|Fence_MnWw', 'ExterQual_Ex|Exterior2nd_Brk Cmn', 'Neighborhood_Veenker|FireplaceQu_Ex', 'BldgType_2fmCon|Functional_Min2', 'KitchenQual_Ex|Exterior1st_Tencode', 'HeatingQC_Ex|GarageArea', 'KitchenAbvGr|Condition1_Norm', '3SsnPorch|RoofStyle_Shed', 'GarageCond_TA|HouseStyle_2.5Unf', 'YearBuilt|BsmtCond_Tencode', 'Exterior2nd_HdBoard|Fence_MnPrv', 'SaleCondition_Tencode|LotFrontage', 'BldgType_Duplex|BsmtFinSF1', 'LowQualFinSF|Foundation_CBlock', 'GarageQual_TA|Exterior1st_Wd Sdng', 'Condition1_PosN|BsmtFinType2_Unf', 'Exterior2nd_AsbShng|LandContour_Bnk', 'Foundation_Tencode|Utilities_AllPub', 'MiscFeature_Shed|Exterior1st_MetalSd', 'FullBath|Exterior1st_Plywood', 'YrSold|Exterior1st_AsbShng', 'Electrical_FuseA|Exterior1st_Wd Sdng', 'GarageCond_TA|HouseStyle_1.5Unf', 'BsmtFinType1_ALQ|BsmtFinSF1', 'Condition1_Norm|BsmtFinType2_Unf', 'YearRemodAdd|KitchenQual_Fa', 'Neighborhood_NoRidge|Exterior1st_Tencode', 'Exterior2nd_BrkFace|MasVnrType_None', 'LandSlope_Tencode|SaleType_COD', 'YearBuilt|GarageFinish_Tencode', 'Heating_Tencode|SaleType_WD', 'PavedDrive_N|Neighborhood_Tencode', 'GarageType_Detchd|Neighborhood_ClearCr', 'Condition1_Artery|PavedDrive_Tencode', 'BsmtQual_Tencode|Exterior1st_VinylSd', 'GarageType_BuiltIn|SaleCondition_Normal', 'Foundation_Tencode|Functional_Mod', 'Alley_Pave|Fence_MnWw', 'SaleType_New|Condition2_Norm', 'Functional_Maj1|Exterior1st_MetalSd', 'TotalBsmtSF|Heating_GasW', 'OverallQual|Neighborhood_Sawyer', 'Condition1_PosN|HouseStyle_1.5Fin', 'Fireplaces|GarageType_BuiltIn', 'KitchenQual_Fa|BsmtExposure_Gd', 'PoolQC_Tencode|MSZoning_C (all)', 'BsmtQual_TA|Neighborhood_Timber', 'GarageType_Detchd|GarageType_2Types', 'GarageFinish_RFn|MasVnrType_BrkFace', 'LandContour_HLS|1stFlrSF', 'Exterior2nd_Stucco|ExterQual_Tencode', 'GarageCond_Ex|SaleType_COD', 'HouseStyle_1Story|GarageType_BuiltIn', 'BsmtFinType2_ALQ|PavedDrive_Tencode', 'RoofMatl_CompShg|BsmtExposure_Gd', 'BsmtExposure_Mn|GarageType_2Types', 'Heating_GasW|GarageQual_TA', 'PoolQC_Tencode|ExterCond_Fa', 'BsmtHalfBath|Foundation_Tencode', 'RoofStyle_Gambrel|MSZoning_RH', 'KitchenQual_Gd|CentralAir_Tencode', 'GarageCars|Neighborhood_Tencode', 'HeatingQC_Gd|Functional_Maj2', 'Exterior2nd_Stone|GarageQual_Fa', 'GarageCond_Gd|MoSold', 'Fence_Tencode|GarageType_Attchd', 'LotShape_IR2|GarageCond_Fa', 'LotArea|SaleType_CWD', 'Exterior2nd_Stucco|Fence_GdPrv', 'PavedDrive_N|GarageFinish_Fin', 'MiscVal|Exterior2nd_Wd Shng', 'Exterior1st_CemntBd|Exterior1st_Tencode', 'Neighborhood_NAmes|BsmtFinType1_GLQ', 'FireplaceQu_Ex|SaleCondition_Partial', 'LandContour_Low|LotConfig_Inside', 'Electrical_SBrkr|BsmtCond_Fa', 'LandContour_Low|Exterior2nd_MetalSd', 'BldgType_TwnhsE|HouseStyle_1.5Fin', 'YrSold|YearRemodAdd', 'Exterior1st_Stucco|Exterior2nd_AsphShn', 'GarageType_Detchd|TotalBsmtSF', 'RoofStyle_Flat|CentralAir_Tencode', 'Alley_Pave|MSZoning_RM', 'LandContour_Low|BsmtCond_Gd', 'SaleCondition_Partial|Neighborhood_Gilbert', 'BsmtExposure_Tencode|HeatingQC_Fa', 'Foundation_BrkTil|BsmtCond_Gd', 'Condition1_Artery|Fireplaces', 'GarageCond_Tencode|SaleCondition_Abnorml', 'Exterior1st_BrkFace|LotShape_IR2', 'ScreenPorch|MSZoning_RL', 'Heating_GasA|Neighborhood_Somerst', 'ExterQual_TA|GarageCond_TA', 'KitchenAbvGr|Fence_Tencode', 'MiscVal|HouseStyle_2Story', 'Utilities_Tencode|CentralAir_Tencode', 'LandSlope_Gtl|OverallCond', 'BldgType_TwnhsE|Fence_GdWo', 'GarageQual_Po|MiscFeature_Tencode', 'BsmtHalfBath|HouseStyle_2Story', 'ScreenPorch|Exterior1st_WdShing', 'Exterior2nd_Wd Sdng|BsmtCond_Po', 'HouseStyle_1Story|Exterior1st_CemntBd', 'BsmtFinSF2|Exterior1st_CemntBd', 'BsmtQual_TA|RoofStyle_Shed', 'HeatingQC_Gd|Neighborhood_Edwards', 'Condition1_Artery|BsmtFinType1_GLQ', 'ExterCond_TA|MSSubClass', 'BsmtFinType2_ALQ|BsmtFinType2_BLQ', 'GarageCond_Fa|BsmtCond_Fa', 'BsmtFinType2_Unf|Neighborhood_Gilbert', 'SaleType_ConLw|PavedDrive_Tencode', 'MiscVal|Neighborhood_MeadowV', 'HeatingQC_Tencode|MSZoning_RM', 'YearBuilt|GarageQual_Tencode', 'GarageType_Detchd|MasVnrType_BrkCmn', 'GarageCars|Neighborhood_BrkSide', 'Exterior1st_AsbShng|BsmtQual_Ex', 'Foundation_Stone|MiscFeature_Othr', 'LandContour_Bnk|RoofStyle_Shed', 'HeatingQC_Ex|BsmtExposure_Gd', 'Neighborhood_NridgHt|Neighborhood_NoRidge', 'YrSold|ExterQual_Fa', 'BldgType_2fmCon|Fence_GdPrv', 'LotConfig_FR2|Condition2_Norm', 'Neighborhood_Veenker|SaleType_COD', 'BldgType_Tencode|MasVnrArea', 'MiscFeature_Othr|Functional_Maj2', 'BsmtExposure_Tencode|Exterior2nd_Wd Shng', 'BsmtFinType1_ALQ|GarageFinish_Tencode', 'Alley_Pave|MSZoning_FV', 'LotArea|HeatingQC_Tencode', 'Exterior2nd_Tencode|CentralAir_Tencode', 'Fireplaces|Neighborhood_Crawfor', 'MiscFeature_Othr|Neighborhood_OldTown', 'KitchenQual_Gd|Exterior1st_Stucco', 'YearRemodAdd|Exterior2nd_AsphShn', 'GarageType_Tencode|Exterior2nd_CmentBd', 'BsmtExposure_Tencode|Exterior1st_CemntBd', 'Foundation_Stone|KitchenQual_Ex', 'KitchenQual_Ex|BsmtExposure_Av', 'BsmtFinType2_BLQ|BsmtCond_TA', 'BsmtFinType1_Tencode|HouseStyle_SFoyer', 'HouseStyle_2.5Unf|MasVnrType_Stone', 'LotConfig_Corner|BsmtCond_Fa', 'Street_Grvl|BsmtFinType1_GLQ', 'Functional_Min1|HouseStyle_2.5Unf', 'HeatingQC_TA|GarageType_Tencode', 'GarageFinish_Unf|BsmtQual_Gd', 'HouseStyle_1Story|Exterior2nd_Tencode', 'MasVnrType_None|Exterior1st_MetalSd', 'BldgType_Duplex|SaleType_New', 'MiscFeature_Othr|Exterior2nd_Plywood', 'GarageType_Tencode|SaleCondition_Partial', 'Alley_Pave|ExterCond_Tencode', 'Exterior2nd_Stucco|BsmtFinType1_Tencode', 'GarageType_Detchd|BsmtFinType1_Tencode', 'BsmtCond_Tencode|PavedDrive_P', 'SaleCondition_Family|BsmtFinType1_LwQ', 'LotShape_IR1|BsmtExposure_No', 'Exterior2nd_Stone|BldgType_2fmCon', 'GarageCond_Fa|ExterQual_Tencode', 'Heating_Tencode|PavedDrive_P', 'MSZoning_RL|ExterCond_Fa', 'RoofStyle_Flat|Alley_Pave', 'RoofStyle_Flat|SaleType_Tencode', 'Exterior2nd_Tencode|Exterior2nd_Plywood', 'Neighborhood_NPkVill|GarageQual_TA', 'SaleCondition_Family|Exterior2nd_HdBoard', 'Neighborhood_Edwards|Neighborhood_Timber', 'BsmtFinType1_Tencode|BsmtFinType2_GLQ', 'SaleCondition_Normal|MSZoning_RM', 'LandSlope_Mod|BsmtFinType2_Unf', 'LotShape_Tencode|BsmtQual_Tencode', 'RoofMatl_Tar&Grv|BsmtCond_TA', 'KitchenAbvGr|Exterior2nd_AsbShng', 'Exterior2nd_AsbShng|Electrical_Tencode', 'GarageCond_Gd|LandSlope_Gtl', 'HouseStyle_SLvl|Exterior2nd_Wd Shng', 'RoofStyle_Shed|MSZoning_Tencode', 'KitchenQual_Ex|Exterior1st_MetalSd', 'LotShape_IR1|GarageQual_Tencode', 'BldgType_1Fam|LotShape_IR3', 'Exterior1st_BrkFace|Neighborhood_Mitchel', 'HouseStyle_1Story|GarageType_CarPort', 'Neighborhood_Mitchel|2ndFlrSF', 'Neighborhood_ClearCr|Exterior1st_AsbShng', 'Exterior2nd_VinylSd|KitchenQual_Tencode', 'GarageArea|Neighborhood_MeadowV', 'Neighborhood_CollgCr|GarageFinish_RFn', 'BsmtUnfSF|MSZoning_Tencode', 'BsmtFinType1_BLQ|BsmtExposure_Av', 'Exterior2nd_AsbShng|ExterQual_Gd', 'LotConfig_Corner|FullBath', 'OverallQual|LotConfig_Inside', 'Exterior2nd_VinylSd|HouseStyle_1.5Unf', 'Condition1_Artery|MSZoning_FV', 'Exterior1st_WdShing|GarageType_2Types', 'Neighborhood_Blmngtn|Exterior1st_BrkComm', 'FullBath|ExterCond_Gd', 'Exterior2nd_Stucco|BldgType_Tencode', 'Neighborhood_Sawyer|HouseStyle_SLvl', 'Neighborhood_Sawyer|MasVnrArea', 'GrLivArea|LotShape_IR1', 'HalfBath|ExterQual_Gd', 'HeatingQC_Gd|Fireplaces', 'SaleCondition_Family|OverallCond', 'GarageFinish_RFn|Exterior1st_Tencode', 'BsmtQual_Tencode|Street_Grvl', 'Neighborhood_NPkVill|RoofMatl_CompShg', 'HeatingQC_Tencode|BsmtUnfSF', 'Neighborhood_NoRidge|Electrical_FuseF', 'BsmtQual_Fa|KitchenQual_Tencode', 'BsmtFinType2_GLQ|PavedDrive_Y', 'YearRemodAdd|Street_Grvl', 'Foundation_Stone|HalfBath', 'Condition1_Artery|Exterior2nd_Brk Cmn', 'GarageQual_Gd|FireplaceQu_Ex', 'RoofStyle_Flat|MiscFeature_Shed', 'Neighborhood_NridgHt|Exterior1st_Plywood', 'BsmtFinSF2|Neighborhood_NAmes', 'GarageType_CarPort|ExterQual_Fa', 'Neighborhood_Somerst|GarageQual_Gd', 'Street_Grvl|BsmtCond_Fa', 'Exterior2nd_Wd Sdng|Exterior2nd_HdBoard', 'BldgType_TwnhsE|KitchenQual_TA', 'MSZoning_C (all)|BldgType_1Fam', 'MoSold|MSZoning_Tencode', 'Heating_GasW|LotConfig_Inside', 'PavedDrive_N|GarageCars', 'Exterior2nd_BrkFace|GarageType_Basment', 'Exterior1st_BrkFace|KitchenQual_Fa', 'SaleType_WD|OpenPorchSF', 'Fence_GdWo|Exterior2nd_Plywood', 'ExterCond_Gd|Exterior1st_VinylSd', 'KitchenQual_Ex|Condition1_Norm', 'Heating_Tencode|MSZoning_Tencode', 'Condition1_PosN|MSZoning_RH', 'Exterior1st_BrkComm|HouseStyle_SLvl', 'Heating_GasA|BldgType_TwnhsE', 'BsmtFinType1_Tencode|MSZoning_FV', 'RoofStyle_Tencode|MiscFeature_Gar2', 'Neighborhood_CollgCr|Condition2_Norm', 'ExterCond_TA|LandSlope_Sev', 'Exterior1st_WdShing|Neighborhood_MeadowV', 'PoolArea|Exterior2nd_HdBoard', 'BsmtFinType2_Rec|BldgType_Tencode', 'Foundation_PConc|Exterior2nd_BrkFace', 'LotConfig_CulDSac|Foundation_CBlock', 'Heating_Grav|Neighborhood_MeadowV', 'LotShape_IR2|RoofStyle_Shed', 'GarageFinish_Unf|BsmtQual_TA', 'BsmtFinType1_BLQ|SaleType_ConLw', 'TotalBsmtSF|BedroomAbvGr', 'Fence_Tencode|Fence_MnPrv', 'LowQualFinSF|Neighborhood_Timber', 'Foundation_PConc|Condition1_RRAn', 'BsmtFinType2_Tencode|MSZoning_FV', 'KitchenQual_Fa|HouseStyle_SLvl', 'ExterCond_Tencode|1stFlrSF', 'GrLivArea|Neighborhood_SWISU', 'Exterior1st_Stucco|MasVnrType_BrkFace', 'MiscFeature_Tencode|Functional_Min2', 'Foundation_Tencode|GarageCond_Ex', 'Neighborhood_ClearCr|Exterior2nd_AsphShn', 'Functional_Typ|MasVnrArea', 'Electrical_FuseP|BedroomAbvGr', 'Exterior2nd_Stone|SaleCondition_Family', 'SaleCondition_Tencode|RoofStyle_Tencode', 'Utilities_Tencode|RoofStyle_Gambrel', 'LotShape_IR1|GarageQual_Fa', 'FireplaceQu_Po|Neighborhood_MeadowV', 'BsmtQual_Ex|TotRmsAbvGrd', 'Electrical_FuseP|RoofStyle_Gambrel', 'BsmtFinType2_Tencode|MoSold', 'TotalBsmtSF|GarageQual_Gd', 'RoofMatl_Tencode|LotShape_Reg', 'LotConfig_FR2|BsmtExposure_Gd', 'RoofStyle_Flat|Exterior2nd_Brk Cmn', 'Exterior1st_BrkFace|Neighborhood_IDOTRR', 'YearBuilt|Exterior2nd_CmentBd', 'HouseStyle_SFoyer|GarageQual_Gd', 'BsmtFullBath|MSZoning_RH', 'RoofStyle_Gable|PavedDrive_P', 'GarageCond_Fa|BsmtCond_Po', 'PavedDrive_N|ExterCond_Fa', 'LandContour_Lvl|MSZoning_RH', 'GarageFinish_Fin|3SsnPorch', 'OverallQual|LotShape_Reg', 'Exterior2nd_VinylSd|Neighborhood_StoneBr', 'Exterior1st_HdBoard|3SsnPorch', 'LotConfig_Corner|Exterior2nd_Tencode', 'Fireplaces|BsmtFinSF1', 'Exterior1st_CemntBd|CentralAir_N', 'HouseStyle_1.5Unf|BsmtQual_Gd', 'GarageCond_Gd|KitchenQual_TA', 'Exterior2nd_AsbShng|BsmtFinType1_Rec', 'LotShape_Reg|GarageQual_Tencode', 'Condition1_Tencode|Neighborhood_SawyerW', 'LotConfig_Tencode|GarageFinish_RFn', 'Exterior2nd_BrkFace|2ndFlrSF', 'RoofStyle_Hip|FireplaceQu_Po', 'Neighborhood_NPkVill|Functional_Tencode', 'BsmtHalfBath|MSZoning_FV', 'RoofMatl_CompShg|MasVnrType_BrkFace', 'LotShape_Tencode|SaleType_Oth', 'BldgType_2fmCon|BsmtFinType2_ALQ', 'Neighborhood_ClearCr|MoSold', 'BsmtFinType1_Rec|BsmtExposure_No', 'Neighborhood_NoRidge|RoofStyle_Gambrel', 'Neighborhood_ClearCr|BsmtFinType2_BLQ', 'KitchenQual_Fa|Condition2_Artery', 'BsmtCond_Gd|Alley_Grvl', 'Fireplaces|ExterQual_Ex', 'GrLivArea|Neighborhood_NWAmes', 'ExterCond_Tencode|Exterior2nd_Wd Shng', 'TotRmsAbvGrd|FireplaceQu_Ex', 'CentralAir_Tencode|Exterior1st_WdShing', 'Fence_GdPrv|ExterQual_Fa', 'MiscFeature_Shed|BsmtFinType2_LwQ', 'Exterior1st_BrkFace|FireplaceQu_Po', 'Fence_GdPrv|BsmtFinType2_Rec', 'FireplaceQu_Po|MSZoning_FV', 'MiscFeature_Tencode|GarageType_Basment', 'BsmtFinType1_BLQ|MSZoning_RL', 'BsmtFinType1_LwQ|HouseStyle_SLvl', 'Electrical_FuseP|CentralAir_Y', 'ExterCond_TA|Condition1_Feedr', 'Street_Tencode|MSZoning_RM', 'Exterior1st_BrkComm|MiscFeature_Gar2', 'Neighborhood_Crawfor|Condition1_RRAn', 'SaleType_New|Neighborhood_SawyerW', 'BsmtQual_TA|BsmtCond_Po', 'MSZoning_RH|MasVnrType_Stone', 'LandContour_Bnk|MSZoning_Tencode', 'RoofMatl_CompShg|MSZoning_RH', 'BsmtExposure_No|Functional_Min2', 'Exterior1st_Stucco|MiscVal', 'HouseStyle_1Story|WoodDeckSF', 'BldgType_Duplex|Neighborhood_Gilbert', 'HeatingQC_Fa|Condition2_Tencode', 'LotShape_IR1|LandContour_HLS', 'PavedDrive_N|Fireplaces', 'Foundation_PConc|Functional_Maj1', 'SaleType_ConLw|Condition2_Artery', 'Condition1_PosN|PoolArea', 'Heating_GasA|BldgType_Twnhs', 'GarageCond_Gd|Condition2_Tencode', 'BldgType_Duplex|MSZoning_Tencode', 'BsmtFinType2_ALQ|ExterCond_Fa', 'BsmtFinType2_BLQ|FireplaceQu_Fa', 'GarageFinish_Unf|ExterQual_Fa', 'BldgType_Twnhs|MasVnrType_None', 'RoofMatl_CompShg|Neighborhood_Veenker', 'BedroomAbvGr|3SsnPorch', 'BldgType_Duplex|LandSlope_Sev', 'BsmtQual_Fa|MasVnrType_None', 'EnclosedPorch|LotConfig_FR2', 'LotShape_Tencode|CentralAir_Tencode', 'ExterCond_TA|BsmtExposure_Mn', 'LandContour_Bnk|SaleCondition_Normal', 'Foundation_PConc|Foundation_BrkTil', 'Neighborhood_Tencode|ExterQual_Ex', 'Neighborhood_Crawfor|Utilities_AllPub', 'LotArea|RoofMatl_Tar&Grv', 'LandSlope_Sev|BedroomAbvGr', 'BsmtFinSF2|MasVnrType_None', 'GarageCars|Foundation_BrkTil', 'GarageType_Detchd|GarageType_CarPort', 'GarageType_CarPort|FireplaceQu_Ex', 'Exterior2nd_AsbShng|GarageType_Attchd', 'Condition1_Artery|LandContour_Lvl', 'PavedDrive_P|ExterQual_Fa', 'GarageType_CarPort|GarageType_2Types', 'RoofStyle_Flat|SaleType_ConLw', 'LotShape_Tencode|Alley_Grvl', 'Neighborhood_Veenker|GarageFinish_RFn', 'LandSlope_Gtl|Exterior1st_Plywood', 'HeatingQC_TA|Exterior2nd_Wd Shng', 'GarageArea|Neighborhood_Sawyer', 'Condition1_Artery|MiscFeature_Tencode', 'SaleType_ConLw|Neighborhood_Sawyer', 'BsmtQual_Ex|ExterQual_Ex', 'Exterior2nd_AsbShng|LotConfig_Inside', 'FireplaceQu_Ex|BsmtCond_Fa', 'GarageType_BuiltIn|BldgType_Tencode', 'LandContour_Lvl|MasVnrType_BrkCmn', 'KitchenQual_Ex|LandSlope_Sev', 'Neighborhood_ClearCr|CentralAir_Y', 'LotShape_Reg|BsmtCond_Po', 'Electrical_FuseA|Exterior1st_CemntBd', 'BsmtExposure_No|Exterior1st_Wd Sdng', 'Fence_GdPrv|Fence_MnPrv', 'MSZoning_RM|Utilities_AllPub', 'GarageFinish_RFn|MSZoning_RL', 'Neighborhood_OldTown|RoofStyle_Shed', 'SaleType_ConLI|GarageType_2Types', 'Condition1_Norm|Neighborhood_IDOTRR', 'TotalBsmtSF|Neighborhood_NWAmes', 'YrSold|GarageFinish_RFn', 'ExterCond_TA|MasVnrType_BrkFace', 'GarageCars|HouseStyle_1.5Unf', 'FireplaceQu_Gd|LandSlope_Mod', 'ExterCond_Tencode|MoSold', 'Neighborhood_NWAmes|Neighborhood_SawyerW', 'GarageFinish_Unf|BsmtFinType1_LwQ', 'Neighborhood_CollgCr|Functional_Maj1', 'BsmtFinType2_Tencode|Exterior2nd_CmentBd', 'BldgType_Tencode|Condition2_Norm', 'TotalBsmtSF|OpenPorchSF', 'Neighborhood_Blmngtn|BsmtExposure_Gd', 'LandContour_Tencode|GarageFinish_Tencode', 'SaleType_New|MasVnrArea', 'SaleType_Oth|BsmtFinType1_Unf', 'BsmtFullBath|OverallCond', 'TotalBsmtSF|HeatingQC_TA', 'Heating_GasA|Exterior2nd_VinylSd', 'Neighborhood_NPkVill|SaleType_WD', 'FireplaceQu_Fa|Neighborhood_SawyerW', 'BsmtFinType2_Rec|ScreenPorch', 'BsmtFinType2_Tencode|SaleType_New', 'Neighborhood_NWAmes|Exterior1st_Plywood', 'Functional_Tencode|BsmtQual_Fa', 'Utilities_Tencode|BldgType_TwnhsE', 'SaleType_Tencode|Condition1_RRAe', 'Exterior1st_HdBoard|RoofStyle_Shed', 'FireplaceQu_Gd|WoodDeckSF', 'SaleCondition_Normal|BsmtCond_Po', 'Heating_Tencode|BsmtFinType2_Unf', 'RoofMatl_Tencode|RoofStyle_Shed', 'YrSold|LotArea', 'BsmtFinType1_BLQ|GarageType_Tencode', 'FireplaceQu_Gd|ExterQual_Tencode', 'LotShape_IR2|BldgType_Twnhs', 'BsmtExposure_Tencode|BsmtFinType1_BLQ', 'YearRemodAdd|GarageCond_Tencode', 'LotConfig_Tencode|Exterior2nd_Brk Cmn', 'Neighborhood_Tencode|MasVnrType_None', 'BsmtFinType1_Rec|FireplaceQu_Ex', 'MasVnrType_None|Exterior1st_Tencode', 'Exterior1st_AsbShng|Neighborhood_SawyerW', 'GarageType_Detchd|RoofMatl_Tar&Grv', 'Neighborhood_Somerst|Exterior2nd_CmentBd', 'Neighborhood_Blmngtn|BsmtCond_Po', 'Heating_GasA|GarageCond_Ex', 'Foundation_CBlock|GarageFinish_RFn', 'MSZoning_RM|MasVnrArea', 'Condition1_PosA|BsmtFinType1_Rec', 'Functional_Typ|MSZoning_RH', 'SaleType_ConLw|Exterior1st_Wd Sdng', 'BsmtFinType2_GLQ|BsmtQual_Ex', 'LotConfig_Corner|3SsnPorch', 'Fence_GdPrv|Functional_Maj2', 'BsmtFinType2_Tencode|Foundation_Tencode', 'SaleType_WD|Condition1_RRAn', 'BsmtExposure_Tencode|BldgType_1Fam', 'Exterior2nd_VinylSd|BsmtFinType2_Rec', 'Neighborhood_SWISU|Condition2_Tencode', 'BsmtQual_Fa|CentralAir_Tencode', 'BsmtExposure_Tencode|Neighborhood_SawyerW', 'YearRemodAdd|Neighborhood_ClearCr', 'Neighborhood_NWAmes|Condition2_Artery', 'LotFrontage|Fence_MnPrv', 'Foundation_Stone|LandContour_HLS', 'Electrical_FuseA|LowQualFinSF', 'Foundation_BrkTil|Electrical_FuseF', '1stFlrSF|Exterior1st_Tencode', 'Heating_Grav|Foundation_BrkTil', 'YrSold|GarageQual_Po', 'GarageCond_TA|Exterior1st_BrkComm', 'Neighborhood_Gilbert|Exterior2nd_Plywood', 'KitchenQual_Ex|GarageType_Attchd', 'GarageCond_TA|MSZoning_Tencode', 'LotShape_Tencode|SaleType_CWD', 'Neighborhood_Blmngtn|SaleType_COD', 'HeatingQC_TA|MSZoning_RM', 'KitchenQual_TA|HouseStyle_2Story', 'Neighborhood_Mitchel|BldgType_Tencode', 'YearBuilt|BsmtCond_TA', 'GarageCars|ExterQual_Gd', 'ExterCond_Gd|Street_Grvl', 'Exterior1st_VinylSd|BsmtExposure_Gd', 'LowQualFinSF|Foundation_Slab', 'Foundation_BrkTil|HouseStyle_SLvl', 'LotShape_Tencode|Utilities_AllPub', 'YearRemodAdd|Exterior1st_Tencode', 'SaleCondition_Tencode|KitchenQual_Fa', 'Exterior2nd_Tencode|Fence_GdPrv', 'BsmtQual_TA|GarageArea', 'BldgType_2fmCon|MSZoning_RM', 'RoofStyle_Hip|Exterior2nd_Wd Shng', 'OverallQual|TotRmsAbvGrd', 'EnclosedPorch|SaleType_COD', 'SaleType_ConLI|KitchenQual_Fa', 'YrSold|BsmtFinType1_GLQ', 'GarageCond_Gd|MSZoning_C (all)', 'OverallCond|Exterior2nd_HdBoard', 'CentralAir_Y|MasVnrType_Stone', 'Neighborhood_NWAmes|Alley_Grvl', 'KitchenAbvGr|TotalBsmtSF', 'FireplaceQu_Po|MSSubClass', 'PoolQC_Tencode|GarageCond_Gd', '3SsnPorch|FireplaceQu_Fa', 'BldgType_Twnhs|BsmtFinType2_GLQ', 'BsmtHalfBath|KitchenQual_TA', 'Foundation_BrkTil|BsmtCond_Po', 'PoolQC_Tencode|GarageCond_Fa', 'FireplaceQu_Gd|ExterQual_Fa', 'FireplaceQu_Gd|BsmtFinType1_GLQ', 'RoofStyle_Gable|MasVnrType_None', 'GarageQual_Po|LandSlope_Gtl', 'Exterior2nd_AsbShng|Neighborhood_NWAmes', 'BsmtQual_Ex|BsmtCond_Gd', 'ExterCond_TA|LandSlope_Gtl', 'PavedDrive_N|GarageType_CarPort', 'LotShape_IR2|Street_Tencode', 'ExterQual_TA|Exterior2nd_Stone', 'Exterior2nd_Stone|RoofStyle_Tencode', 'RoofStyle_Gambrel|KitchenQual_TA', 'MiscVal|MasVnrType_BrkCmn', 'Condition1_PosN|Condition1_Norm', 'RoofMatl_CompShg|PavedDrive_P', 'BsmtFinType2_Tencode|HeatingQC_Ex', 'Functional_Maj2|MasVnrType_BrkCmn', 'BedroomAbvGr|BldgType_Tencode', 'Heating_GasA|OpenPorchSF', 'BsmtFinType1_BLQ|BsmtCond_Fa', 'LotConfig_CulDSac|Neighborhood_MeadowV', 'Condition1_PosA|OpenPorchSF', 'GarageQual_Gd|Street_Pave', 'Foundation_PConc|Condition1_PosA', 'GarageFinish_Tencode|Condition1_RRAn', 'BsmtFinType1_Tencode|Neighborhood_NAmes', 'BsmtQual_Tencode|Neighborhood_StoneBr', 'Fence_GdPrv|Neighborhood_StoneBr', 'SaleCondition_Tencode|Neighborhood_Tencode', 'Exterior1st_CemntBd|ExterQual_Gd', 'BldgType_Twnhs|Exterior2nd_CmentBd', 'Neighborhood_NPkVill|HouseStyle_Tencode', 'Street_Grvl|Exterior1st_BrkComm', 'LandContour_Low|BsmtFinType1_Unf', 'HeatingQC_TA|GarageYrBlt', 'BsmtFinSF1|Exterior1st_WdShing', 'FireplaceQu_Po|KitchenQual_Tencode', 'BsmtQual_Fa|BsmtQual_Gd', 'HalfBath|Functional_Min1', 'BsmtFinSF2|SaleCondition_Abnorml', 'YearRemodAdd', 'YearBuilt|RoofStyle_Tencode', 'BsmtHalfBath|SaleType_New', 'BsmtFinType1_Tencode|Heating_GasW', 'GarageCond_Fa|Exterior1st_VinylSd', 'ExterQual_TA|Exterior1st_Stucco', 'Exterior1st_Stucco|HouseStyle_SLvl', 'BsmtCond_Tencode|WoodDeckSF', 'Neighborhood_NoRidge|Exterior2nd_Brk Cmn', 'Neighborhood_ClearCr|BsmtFinType1_Unf', 'Neighborhood_CollgCr|Neighborhood_SawyerW', 'Exterior1st_Stucco|Exterior1st_Wd Sdng', '3SsnPorch|BsmtFinType1_Rec', 'RoofMatl_CompShg|MSZoning_FV', 'Electrical_FuseF|Exterior2nd_Brk Cmn', 'HalfBath|GarageQual_Po', 'Heating_GasW|RoofStyle_Shed', 'Condition1_RRAe|BsmtFinType2_Unf', 'EnclosedPorch|RoofStyle_Gable', 'SaleType_Oth|GarageType_2Types', 'BldgType_Twnhs|BsmtQual_TA', 'Exterior2nd_Tencode|MSZoning_RM', 'SaleCondition_Alloca|RoofMatl_WdShngl', 'BsmtUnfSF|BsmtCond_Po', 'Functional_Typ|BldgType_Tencode', 'Utilities_Tencode|BsmtQual_Gd', 'GarageCars|BsmtFinType2_ALQ', 'RoofMatl_Tencode|MasVnrType_BrkCmn', 'Exterior2nd_Stone|LotArea', 'LotArea|BldgType_1Fam', 'Neighborhood_Somerst|Functional_Mod', 'Neighborhood_CollgCr|BsmtExposure_Av', 'BsmtFullBath|Exterior1st_VinylSd', 'SaleType_ConLD|Neighborhood_Edwards', 'BldgType_2fmCon|MSSubClass', 'PavedDrive_Tencode|HouseStyle_1.5Unf', 'BsmtFinType2_Rec|Exterior2nd_HdBoard', 'BldgType_Duplex|ExterCond_TA', 'Functional_Tencode|LotArea', 'BsmtFinType2_GLQ', 'Neighborhood_Tencode|BsmtCond_Gd', 'MSZoning_RM|GarageType_Basment', 'OverallQual|Street_Grvl', 'Functional_Tencode|RoofStyle_Shed', 'HouseStyle_1.5Unf|PoolArea', 'LandContour_Low|LandContour_HLS', 'MiscFeature_Gar2|MSZoning_RL', 'Exterior2nd_Wd Shng|BsmtCond_TA', 'BsmtHalfBath|Condition2_Tencode', 'BsmtFinType2_ALQ|Foundation_BrkTil', 'Exterior1st_Wd Sdng|HouseStyle_2Story', 'Heating_GasA|SaleType_Tencode', 'PavedDrive_Tencode|SaleType_New', 'HeatingQC_Fa|Exterior2nd_CmentBd', 'RoofStyle_Gable|Exterior1st_Tencode', 'LotConfig_Corner|RoofStyle_Tencode', 'HouseStyle_Tencode|KitchenQual_TA', 'GarageFinish_Fin|WoodDeckSF', 'Electrical_SBrkr|MasVnrType_BrkCmn', 'Neighborhood_Edwards|KitchenQual_Fa', 'HouseStyle_1.5Unf|BsmtExposure_Av', 'BsmtQual_Tencode|LandContour_Bnk', 'BsmtHalfBath|ExterQual_Fa', 'LotShape_IR1|MSZoning_RL', 'SaleType_Tencode|2ndFlrSF', 'BsmtFinType2_Rec|KitchenQual_TA', 'SaleType_ConLw|Functional_Maj2', 'Exterior2nd_Stucco|MSZoning_RH', 'Functional_Maj2|RoofStyle_Gambrel', 'GarageYrBlt|MSZoning_RL', 'BsmtExposure_Av|Exterior2nd_Brk Cmn', 'PavedDrive_N|EnclosedPorch', 'RoofStyle_Shed|Exterior2nd_AsphShn', 'SaleType_WD|KitchenQual_Fa', 'LotArea|MasVnrType_Stone', 'Neighborhood_BrDale|Exterior1st_BrkComm', 'GarageCars|HeatingQC_Ex', 'Electrical_Tencode|Exterior1st_BrkComm', 'Exterior1st_BrkComm|ExterQual_Fa', 'BsmtCond_Gd|KitchenQual_Fa', 'Neighborhood_NoRidge|FireplaceQu_Ex', 'LotArea|BsmtFinSF1', 'Electrical_SBrkr|Neighborhood_MeadowV', 'Exterior1st_HdBoard|ExterCond_TA', 'Functional_Tencode|GarageQual_Po', 'Neighborhood_SWISU|KitchenQual_TA', 'Neighborhood_Somerst|GarageQual_Tencode', 'ExterCond_TA|Exterior2nd_CmentBd', 'SaleType_ConLD|Foundation_CBlock', 'LandContour_Tencode|GarageType_Basment', 'Electrical_FuseA|SaleType_New', 'HeatingQC_TA|LotShape_IR1', 'FullBath|Neighborhood_BrkSide', 'Condition2_Tencode|Fence_MnWw', 'Exterior2nd_Stucco|Neighborhood_StoneBr', 'LotConfig_Corner|Exterior1st_Stucco', 'BldgType_2fmCon|LandContour_Bnk', 'HouseStyle_SFoyer|Neighborhood_Veenker', 'Functional_Mod|LotConfig_Inside', 'LotArea|Neighborhood_NAmes', 'ExterCond_Tencode|SaleType_New', '1stFlrSF|Condition2_Artery', 'BsmtFullBath|LandSlope_Gtl', 'Functional_Min1|Exterior2nd_HdBoard', 'GarageCond_Tencode|LotConfig_CulDSac', 'BldgType_Twnhs|LotConfig_FR2', 'LotShape_IR2|BsmtUnfSF', 'Exterior1st_BrkFace|FireplaceQu_Fa', 'Exterior1st_HdBoard|Exterior1st_Plywood', 'GarageCond_Po|RoofStyle_Gambrel', 'Exterior2nd_VinylSd|Exterior1st_BrkComm', 'OverallQual|LotShape_IR1', '2ndFlrSF|BldgType_TwnhsE', 'LandContour_Tencode|3SsnPorch', 'RoofStyle_Hip|Exterior1st_WdShing', 'ExterCond_TA|BsmtFinType1_GLQ', 'Alley_Tencode|Exterior1st_Tencode', 'RoofStyle_Flat|BsmtExposure_Av', 'SaleCondition_Alloca|CentralAir_N', 'Functional_Typ|BsmtCond_TA', 'Functional_Typ|Exterior1st_Plywood', '3SsnPorch|Foundation_CBlock', 'LandContour_HLS|3SsnPorch', 'SaleType_Tencode|MSZoning_RL', 'GarageCond_Po|Functional_Maj1', 'SaleCondition_Tencode|GarageType_Basment', 'RoofStyle_Flat|FullBath', 'PavedDrive_P|BsmtExposure_No', 'Heating_Grav|Exterior1st_VinylSd', 'LandSlope_Mod|SaleType_Oth', 'Exterior2nd_Stucco|ExterCond_TA', 'Neighborhood_NoRidge|BsmtQual_Ex', 'Neighborhood_ClearCr|FireplaceQu_Fa', 'Condition2_Artery|Street_Grvl', 'Neighborhood_BrDale|Neighborhood_Blmngtn', 'Fireplaces|BsmtFinType1_LwQ', 'Exterior2nd_CmentBd|BsmtExposure_Gd', 'LotShape_Tencode|BsmtExposure_Mn', 'RoofStyle_Gable|GarageType_Attchd', 'Exterior2nd_Tencode|BsmtCond_Fa', 'GarageFinish_Unf|Neighborhood_BrkSide', 'Foundation_BrkTil|Neighborhood_Gilbert', 'BldgType_1Fam|MSZoning_Tencode', '3SsnPorch|Street_Pave', 'LotFrontage|Heating_GasW', 'SaleType_ConLD|Exterior2nd_HdBoard', 'Neighborhood_Mitchel|Condition1_PosN', 'Exterior1st_BrkFace|BedroomAbvGr', 'Condition1_Artery|GarageQual_Gd', 'Street_Grvl|MSZoning_Tencode', 'Neighborhood_NAmes|CentralAir_Y', 'KitchenQual_Tencode|Exterior2nd_Brk Cmn', 'BsmtHalfBath|Functional_Maj2', 'Neighborhood_Somerst|BldgType_Tencode', 'MiscVal|BsmtUnfSF', 'BsmtQual_Ex|Exterior1st_BrkComm', 'RoofStyle_Hip|SaleCondition_Partial', 'BsmtExposure_Tencode|Condition1_PosA', 'FireplaceQu_Gd|BsmtFinType2_ALQ', 'Neighborhood_OldTown|Neighborhood_BrkSide', 'GarageQual_Gd|Foundation_Tencode', 'MiscFeature_Othr|GarageFinish_Fin', 'Functional_Maj2|SaleCondition_Alloca', 'RoofMatl_CompShg|BsmtFinType2_BLQ', 'Neighborhood_OldTown|Fence_MnWw', 'SaleType_ConLw|BsmtCond_Tencode', 'Electrical_FuseP|BldgType_TwnhsE', 'HeatingQC_Gd|ExterQual_Ex', 'ExterQual_TA|KitchenQual_Tencode', 'YrSold|BsmtExposure_Mn', 'RoofMatl_CompShg|RoofStyle_Tencode', 'BsmtExposure_Tencode|LotArea', 'Foundation_Stone|RoofMatl_WdShngl', 'ExterCond_TA|RoofStyle_Tencode', 'Alley_Grvl|Neighborhood_SawyerW', 'SaleCondition_Tencode|Exterior2nd_Wd Sdng', 'Neighborhood_Somerst|BsmtFinType1_Unf', 'GarageQual_Fa|Condition1_Tencode', 'BsmtQual_TA|Condition1_PosN', 'GarageType_Detchd|YearRemodAdd', 'Neighborhood_BrkSide|Utilities_AllPub', 'Condition1_Feedr|Exterior1st_Tencode', 'Foundation_CBlock|Exterior2nd_HdBoard', 'Neighborhood_BrDale|Exterior2nd_Tencode', 'Neighborhood_IDOTRR|BsmtFinType1_GLQ', 'BsmtQual_Tencode|FireplaceQu_Fa', 'Neighborhood_Edwards|Functional_Maj2', 'SaleCondition_Family|BsmtFinType1_Unf', 'BsmtFinType2_Tencode|BsmtQual_TA', 'HouseStyle_Tencode|Exterior2nd_Wd Sdng', 'Alley_Pave|GarageCond_Tencode', 'KitchenQual_Gd|SaleType_Tencode', 'LotShape_IR2|SaleType_New', 'FullBath|ScreenPorch', 'LotConfig_FR2|Neighborhood_Edwards', 'Fence_Tencode|ExterQual_Gd', 'RoofMatl_CompShg|BsmtFinSF2', 'Neighborhood_Timber|MSZoning_RH', 'BsmtFinType2_Tencode|GarageCond_Gd', 'LandContour_Low|BsmtFinType2_ALQ', 'LotShape_Reg|KitchenQual_Ex', 'FullBath|ExterCond_Tencode', 'GarageFinish_Fin|ExterCond_Gd', 'MoSold|Exterior1st_WdShing', 'GarageFinish_Unf|BsmtQual_Tencode', 'Exterior2nd_Wd Sdng|Neighborhood_MeadowV', 'HouseStyle_1Story|Exterior1st_AsbShng', 'BsmtFinType1_Tencode|Exterior1st_CemntBd', 'LotConfig_Corner|Fence_Tencode', 'SaleCondition_Partial|MasVnrType_BrkFace', 'GarageFinish_Unf|Neighborhood_SawyerW', 'FireplaceQu_Tencode|Exterior2nd_Wd Sdng', 'BldgType_Duplex|Neighborhood_MeadowV', 'BsmtFinType2_ALQ|MSZoning_RH', 'BsmtFinType2_GLQ|BsmtExposure_Gd', 'Neighborhood_Timber|Fence_MnWw', 'LotFrontage|Functional_Maj2', 'Exterior2nd_Brk Cmn|Alley_Grvl', 'LandContour_Low|BsmtHalfBath', 'LandSlope_Sev|FireplaceQu_Ex', 'Utilities_Tencode|Functional_Min1', 'GarageCond_TA|HouseStyle_1.5Fin', 'BsmtFinType1_Tencode|SaleType_ConLI', 'LandContour_Low|Electrical_FuseF', 'LotConfig_Tencode|Functional_Min2', 'Condition1_RRAe|BsmtCond_Fa', 'FireplaceQu_Fa|Condition2_Tencode', 'Neighborhood_BrDale|BsmtFinType2_ALQ', 'LotShape_Tencode|GarageType_Detchd', 'HeatingQC_Gd|GarageFinish_Tencode', 'BsmtFinType2_LwQ|BsmtFinType2_Unf', 'LandContour_Low|ExterQual_Gd', 'YearRemodAdd|BsmtCond_TA', 'BsmtFinType1_BLQ|MasVnrType_BrkFace', 'MiscFeature_Tencode|Fence_MnPrv', 'GarageCond_Tencode|Electrical_FuseF', 'Neighborhood_NPkVill|BsmtExposure_Mn', 'BsmtQual_Tencode|Exterior1st_Wd Sdng', 'GarageQual_Gd|BedroomAbvGr', 'BldgType_1Fam|Neighborhood_Timber', 'BsmtCond_Fa|Functional_Min2', 'GarageType_Basment|WoodDeckSF', 'SaleCondition_Partial|BsmtExposure_Mn', 'GarageCond_TA|Foundation_Slab', 'SaleType_ConLD|Functional_Maj2', 'LotShape_IR1|BldgType_Tencode', 'Neighborhood_NoRidge|RoofStyle_Gable', 'SaleCondition_Tencode|Neighborhood_Sawyer', 'BsmtFinType1_BLQ|Foundation_Slab', 'MSZoning_RH|Utilities_AllPub', 'Foundation_PConc|GarageType_BuiltIn', 'Electrical_FuseF|ScreenPorch', 'Neighborhood_BrDale|LotShape_IR2', 'BsmtExposure_Tencode|FireplaceQu_Ex', 'LandSlope_Mod|HeatingQC_Ex', 'PavedDrive_N|GarageCond_Fa', 'GarageCond_Tencode|MSZoning_RH', 'SaleType_Tencode|RoofMatl_Tar&Grv', 'GarageType_CarPort|MiscFeature_Gar2', 'Neighborhood_Mitchel|BsmtCond_Po', 'LotArea|BsmtExposure_Mn', 'SaleCondition_Tencode|BsmtExposure_Tencode', 'Heating_GasW|LotConfig_CulDSac', 'Exterior1st_VinylSd|MSZoning_RH', 'SaleType_Tencode|RoofMatl_WdShngl', 'FireplaceQu_Gd|SaleType_COD', 'Exterior2nd_Stucco|MiscFeature_Tencode', 'Electrical_FuseP|MoSold', 'HeatingQC_Fa|BsmtCond_Po', 'SaleType_Oth|MasVnrArea', 'Neighborhood_NoRidge|GarageType_CarPort', 'HouseStyle_2.5Unf|BldgType_1Fam', 'GarageFinish_Unf|KitchenQual_Tencode', 'Exterior2nd_BrkFace|GarageFinish_RFn', 'SaleCondition_Alloca|BsmtExposure_No', 'MSZoning_RL|Functional_Min2', 'Neighborhood_NPkVill|HeatingQC_Tencode', 'Foundation_Stone|Functional_Mod', 'Exterior2nd_Tencode|RoofStyle_Gable', 'LotShape_Reg|SaleType_COD', 'Foundation_BrkTil|SaleCondition_Alloca', 'Neighborhood_NoRidge|MiscVal', 'Utilities_Tencode|GarageQual_Fa', 'YrSold|BsmtQual_Gd', 'GarageType_BuiltIn|GarageType_Attchd', 'Exterior1st_CemntBd|Condition2_Norm', 'ExterQual_TA|SaleCondition_Alloca', 'GarageCond_Po|SaleCondition_Partial', 'BsmtQual_Ex|Exterior2nd_Wd Shng', 'Fence_Tencode|Exterior2nd_Wd Shng', 'BsmtFinType2_Rec|Condition2_Norm', 'LotShape_Tencode|RoofStyle_Tencode', 'GarageType_Detchd', 'OverallQual|HouseStyle_2.5Unf', 'FireplaceQu_Po|Exterior1st_BrkComm', 'Heating_GasA|SaleType_CWD', 'CentralAir_Y|Functional_Min2', 'EnclosedPorch|Street_Pave', 'PavedDrive_Tencode|Exterior2nd_Wd Shng', 'GarageQual_Fa|GarageType_2Types', 'BsmtFinSF1|Street_Pave', 'BldgType_2fmCon|BsmtQual_Ex', 'RoofStyle_Gambrel|GarageQual_Po', 'SaleCondition_Alloca|KitchenQual_TA', 'SaleType_WD|Functional_Maj2', 'Neighborhood_ClearCr|BsmtQual_Fa', 'PavedDrive_Tencode|BsmtExposure_Mn', 'Foundation_PConc|SaleType_ConLD', 'GarageType_Basment|GarageFinish_RFn', 'SaleCondition_Partial|CentralAir_Tencode', 'RoofStyle_Flat|Neighborhood_StoneBr', 'Alley_Grvl|BldgType_Tencode', 'BsmtFinType1_ALQ|MasVnrType_None', 'MiscFeature_Tencode|BsmtQual_Gd', 'Neighborhood_SWISU|LowQualFinSF', 'BsmtQual_Fa|Condition2_Tencode', 'GarageCars|BsmtFinType1_Rec', 'LandSlope_Gtl|MSZoning_RH', 'ExterCond_TA|BsmtExposure_Av', 'Neighborhood_Veenker|MasVnrType_Stone', 'Exterior2nd_AsbShng|Fence_Tencode', 'Neighborhood_NPkVill|Condition2_Artery', 'PavedDrive_Y|WoodDeckSF', 'GarageQual_TA|ExterQual_Gd', 'Functional_Tencode|Condition2_Tencode', 'PavedDrive_Tencode|MSZoning_FV', 'MasVnrType_BrkCmn|Exterior2nd_Wd Sdng', 'GrLivArea|MasVnrArea', 'LandSlope_Sev|KitchenQual_Tencode', 'HalfBath|LotConfig_Tencode', 'HouseStyle_SFoyer|HouseStyle_Tencode', 'Electrical_FuseP|SaleCondition_Abnorml', 'LandSlope_Sev|Exterior1st_BrkComm', 'Fireplaces|Condition1_RRAn', 'Exterior1st_Tencode|Exterior2nd_Plywood', 'LotShape_Reg|SaleType_Tencode', 'Condition1_PosN|ExterQual_Tencode', 'Neighborhood_BrDale|SaleCondition_Family', 'FireplaceQu_Ex|ScreenPorch', 'MiscVal|BsmtExposure_No', 'BldgType_2fmCon|GarageType_Attchd', 'BldgType_Duplex|ExterQual_TA', 'GarageType_BuiltIn|Neighborhood_StoneBr', 'GarageCond_Tencode|SaleType_ConLI', 'RoofMatl_CompShg|BsmtCond_Fa', 'KitchenQual_Fa|GarageCond_Ex', 'Electrical_FuseP|MSZoning_Tencode', 'LandSlope_Mod|LandSlope_Sev', 'Neighborhood_OldTown|GarageFinish_Tencode', 'Condition1_Artery|LotShape_Reg', 'YearRemodAdd|CentralAir_Y', 'FireplaceQu_Ex|Neighborhood_Crawfor', 'PavedDrive_Tencode|LotConfig_CulDSac', 'ExterCond_TA|2ndFlrSF', 'ExterQual_Gd|SaleType_COD', 'GarageCond_Po|MasVnrType_Tencode', 'Electrical_Tencode|GarageQual_Po', 'BsmtFinType1_Tencode|RoofStyle_Gambrel', 'RoofStyle_Flat|Exterior2nd_BrkFace', 'Foundation_Stone|SaleType_ConLD', 'YearRemodAdd|GarageArea', 'YrSold|Exterior2nd_AsphShn', 'Fence_GdWo|ScreenPorch', 'Electrical_FuseP|Neighborhood_Edwards', 'HouseStyle_Tencode|Neighborhood_Timber', 'Electrical_FuseP|Electrical_SBrkr', 'KitchenAbvGr|SaleType_New', 'KitchenQual_Tencode|OverallCond', 'Exterior1st_MetalSd|ExterCond_Fa', 'HouseStyle_1Story|PoolArea', 'Neighborhood_OldTown|ExterQual_Ex', 'Condition2_Tencode|Condition1_Norm', 'LandSlope_Mod|HouseStyle_1.5Fin', 'RoofStyle_Flat|MasVnrType_None', 'FireplaceQu_Tencode|GarageType_2Types', 'RoofMatl_Tencode|HeatingQC_Ex', 'GrLivArea|Neighborhood_Gilbert', 'BldgType_2fmCon|Exterior2nd_BrkFace', 'Neighborhood_OldTown|MasVnrType_Tencode', 'Exterior2nd_Stucco|RoofStyle_Tencode', 'SaleType_COD|BldgType_Tencode', 'GarageCond_Po|SaleType_Oth', 'Exterior2nd_VinylSd|Condition2_Tencode', 'GarageFinish_Tencode|Neighborhood_Sawyer', 'MiscFeature_Tencode|Neighborhood_Sawyer', 'KitchenQual_TA|CentralAir_N', 'HouseStyle_SFoyer|MSZoning_RM', 'GarageCond_Fa|Exterior2nd_AsphShn', 'RoofMatl_Tar&Grv|Condition2_Tencode', 'RoofStyle_Hip|CentralAir_N', 'LandSlope_Sev', 'Neighborhood_BrDale|GarageType_CarPort', 'LandContour_Bnk|BsmtQual_TA', 'FireplaceQu_Gd|Neighborhood_Veenker', 'BsmtFinType1_BLQ|Fence_Tencode', 'LotShape_IR1|Neighborhood_Sawyer', 'BsmtExposure_Gd|LotConfig_Inside', 'Heating_Grav|Condition1_PosN', 'Alley_Pave|HouseStyle_Tencode', 'Neighborhood_Edwards|MiscFeature_Shed', 'Heating_Grav|Neighborhood_Gilbert', 'OverallQual|FireplaceQu_Ex', 'KitchenQual_Gd|Functional_Min1', 'RoofStyle_Hip|SaleCondition_Alloca', 'BsmtFinSF2|ExterQual_Gd', 'BsmtFullBath|Condition1_PosA', 'LandSlope_Gtl|Neighborhood_Crawfor', 'RoofStyle_Tencode|Neighborhood_Timber', 'LotShape_Tencode|Exterior1st_BrkFace', 'GarageQual_Fa|MasVnrType_Tencode', 'BsmtFinType1_Tencode|WoodDeckSF', 'MSZoning_C (all)|Condition1_RRAn', 'YrSold|Condition2_Artery', 'BsmtFinType1_Tencode|Neighborhood_Gilbert', 'GarageFinish_Unf|LotConfig_Corner', 'Exterior1st_BrkFace|GarageCond_Gd', 'HouseStyle_1Story|BsmtFinType1_Unf', 'GarageFinish_Fin|Exterior2nd_VinylSd', 'ExterCond_TA|GarageCond_Tencode', 'GarageCond_Po|LandContour_HLS', 'BsmtExposure_Tencode|Street_Tencode', 'PavedDrive_Y|GarageQual_Po', 'Heating_GasW|RoofStyle_Gable', 'Alley_Pave|Exterior2nd_CmentBd', 'PavedDrive_N|Neighborhood_Mitchel', 'ExterQual_TA|Electrical_Tencode', 'Foundation_BrkTil|Exterior2nd_Tencode', 'Condition1_Feedr|Neighborhood_StoneBr', 'BsmtQual_Tencode|2ndFlrSF', 'Fence_GdWo|BsmtFinType1_Unf', 'GarageCars|HeatingQC_Tencode', 'Neighborhood_OldTown|Neighborhood_NAmes', 'YearRemodAdd|Foundation_BrkTil', 'LotShape_Tencode|GarageCond_Ex', 'BsmtFinType2_Tencode|HouseStyle_Tencode', 'Street_Tencode|Condition1_Tencode', 'Exterior2nd_Stucco|BsmtFinType2_Tencode', 'GarageCars|Condition1_Feedr', 'Exterior2nd_AsbShng|LandSlope_Sev', 'KitchenQual_Tencode|Condition2_Norm', 'LandContour_HLS|Neighborhood_MeadowV', 'Alley_Pave|Neighborhood_Timber', 'LandContour_Lvl|BsmtCond_TA', 'Condition1_Tencode|ExterCond_Fa', 'Street_Tencode|Condition1_RRAe', 'BsmtFinSF1|CentralAir_Tencode', 'BsmtFinType1_Tencode|PavedDrive_Tencode', 'KitchenQual_Gd|Functional_Min2', 'GarageQual_Gd|BsmtCond_Gd', 'LandSlope_Mod|GarageQual_Po', 'KitchenAbvGr|Neighborhood_StoneBr', 'BsmtQual_Ex|BsmtFinType2_LwQ', 'LandContour_Tencode|RoofStyle_Gambrel', 'Functional_Maj1|GarageType_Attchd', 'Heating_Tencode|MasVnrType_Tencode', 'Exterior2nd_Tencode|GarageCond_Ex', 'Alley_Grvl|BsmtCond_Fa', 'Exterior2nd_BrkFace|Exterior1st_WdShing', 'BsmtQual_Tencode|BsmtFinType2_Rec', 'Foundation_PConc|Fence_GdPrv', 'LotFrontage|FireplaceQu_Ex', 'Exterior2nd_CmentBd|GarageQual_Tencode', 'Functional_Tencode|SaleCondition_Partial', 'PavedDrive_Y|MasVnrType_BrkCmn', 'Heating_GasW|LandContour_Tencode', 'GarageCars|LotArea', 'RoofMatl_CompShg|LandSlope_Sev', 'KitchenAbvGr|Exterior1st_BrkFace', 'FullBath|HalfBath', 'Fence_GdPrv|Exterior1st_Plywood', 'Exterior1st_VinylSd|Exterior1st_Tencode', 'GarageFinish_Fin|Neighborhood_Edwards', 'BsmtHalfBath|GarageType_2Types', 'ExterQual_Ex|Exterior1st_Tencode', 'MoSold|BsmtFinType2_Unf', 'BsmtFinType1_BLQ|BsmtQual_Gd', 'GarageType_CarPort|MSZoning_FV', 'BsmtFinType1_ALQ|Exterior1st_VinylSd', 'MiscFeature_Shed', 'PavedDrive_N|GarageType_BuiltIn', 'FireplaceQu_Tencode|Foundation_Slab', 'LandContour_Tencode|RoofStyle_Shed', 'Heating_GasA|BsmtFullBath', 'MSZoning_C (all)|ExterCond_Fa', 'GarageType_CarPort|HouseStyle_1.5Fin', 'HeatingQC_TA|HouseStyle_2Story', 'LotArea|BsmtQual_Ex', 'GarageCond_Ex|MasVnrArea', 'BsmtFinType2_GLQ|Heating_Grav', 'GarageFinish_Tencode|Neighborhood_Timber', 'BsmtFinType1_BLQ|LandSlope_Sev', 'ExterCond_Gd|Condition1_Tencode', 'BsmtHalfBath|GarageType_Tencode', 'Exterior1st_VinylSd|Exterior2nd_AsphShn', 'BsmtFinSF2|BsmtExposure_No', 'GarageType_Tencode|KitchenQual_TA', 'Foundation_Stone|Exterior1st_Plywood', 'LandContour_Lvl|CentralAir_Tencode', 'PavedDrive_Tencode|Functional_Maj1', 'Heating_Tencode|Condition1_Feedr', 'SaleCondition_Partial|BsmtCond_Fa', 'LotShape_Reg|Electrical_SBrkr', 'FireplaceQu_Fa|BsmtExposure_Mn', 'LandSlope_Mod|Neighborhood_Sawyer', 'BsmtFinType1_Tencode|HouseStyle_2Story', 'LandContour_HLS|MasVnrType_None', 'LotConfig_CulDSac|FireplaceQu_Fa', 'MiscFeature_Othr|GarageQual_TA', 'Neighborhood_Blmngtn|Neighborhood_NAmes', 'Exterior2nd_Tencode|Condition1_RRAn', 'Exterior1st_HdBoard|SaleType_ConLw', 'LandContour_Low|TotRmsAbvGrd', 'Condition1_Artery|Utilities_Tencode', 'Neighborhood_Edwards|Street_Grvl', 'Exterior2nd_Stone|ExterQual_Gd', 'ExterCond_Tencode|BsmtFinSF1', 'GarageCond_Fa|Street_Pave', 'LotConfig_Corner|MSZoning_RL', 'PavedDrive_N|KitchenQual_TA', 'RoofStyle_Shed|KitchenQual_Fa', 'Exterior2nd_AsbShng|PoolArea', 'BsmtFinType2_GLQ|Neighborhood_Veenker', 'GarageCond_Tencode|MasVnrType_BrkFace', 'GarageCond_TA|YearBuilt', 'HouseStyle_1.5Unf|BsmtFinType1_Unf', 'GarageCond_TA|BldgType_1Fam', 'GarageFinish_Tencode|ExterQual_Fa', 'Exterior1st_Stucco|Exterior2nd_VinylSd', 'RoofMatl_Tencode|FireplaceQu_Po', 'SaleCondition_Alloca|FireplaceQu_Fa', 'EnclosedPorch|Neighborhood_IDOTRR', 'GarageQual_Gd|BsmtFinType1_LwQ', 'Exterior1st_AsbShng|MoSold', 'RoofStyle_Flat|ExterCond_Tencode', 'BsmtQual_Tencode|Neighborhood_Tencode', 'BldgType_Twnhs|SaleType_Oth', 'Electrical_FuseA|Condition1_PosN', 'Fence_Tencode|HalfBath', 'Electrical_SBrkr|SaleType_WD', 'RoofMatl_Tar&Grv|KitchenQual_TA', 'Functional_Typ|BsmtCond_Tencode', 'RoofMatl_Tencode|ExterCond_Fa', 'Neighborhood_BrkSide|WoodDeckSF', 'BsmtCond_Po|FireplaceQu_TA', 'Condition1_PosN|MasVnrType_None', 'Functional_Tencode|Heating_Grav', 'LotShape_Reg|PavedDrive_Tencode', 'RoofStyle_Gable|KitchenQual_Fa', 'CentralAir_N|ExterCond_Fa', 'Heating_GasA|1stFlrSF', '3SsnPorch|OverallCond', 'LandSlope_Mod|GarageType_CarPort', 'BldgType_Duplex|Fence_MnWw', 'RoofStyle_Gambrel|Foundation_CBlock', 'GrLivArea|MasVnrType_BrkFace', 'Heating_Grav|BsmtFinType1_Rec', 'LotShape_IR2|Condition1_RRAn', 'HeatingQC_Gd|Foundation_CBlock', 'HalfBath|GarageFinish_Tencode', 'LotShape_IR1|Functional_Min2', 'Exterior1st_AsbShng|HeatingQC_Ex', 'Condition1_Norm|Exterior1st_MetalSd', 'BldgType_Twnhs|Exterior2nd_Plywood', 'Electrical_FuseA|BsmtQual_TA', 'Neighborhood_NPkVill|MiscVal', 'BldgType_TwnhsE|HouseStyle_2.5Unf', 'BsmtFinType2_Rec|Street_Grvl', 'Foundation_BrkTil|Condition2_Artery', 'Fence_GdPrv|Neighborhood_BrkSide', 'KitchenQual_Tencode|SaleType_Oth', 'PavedDrive_P|HouseStyle_2Story', 'BldgType_1Fam|BsmtExposure_Mn', 'YearRemodAdd|GarageFinish_Fin', 'MoSold|Utilities_AllPub', 'Street_Tencode|Alley_Pave', 'RoofMatl_CompShg|Functional_Mod', 'HeatingQC_Gd|Exterior1st_Plywood', 'BsmtQual_Fa|BsmtQual_TA', 'HouseStyle_1.5Unf|MSZoning_RL', 'Exterior1st_BrkFace|MasVnrType_BrkCmn', 'Electrical_SBrkr|SaleCondition_Alloca', 'LotShape_Tencode|KitchenQual_Gd', 'Electrical_Tencode|LotConfig_CulDSac', 'SaleType_ConLI|MSZoning_RM', 'LandSlope_Tencode|Neighborhood_Timber', 'Functional_Maj1|Condition2_Artery', 'GarageCond_Po|BldgType_TwnhsE', 'PavedDrive_N|BldgType_2fmCon', 'Exterior1st_AsbShng|1stFlrSF', 'GarageType_CarPort|Neighborhood_Sawyer', 'LandSlope_Mod|Neighborhood_MeadowV', 'SaleType_ConLD|HeatingQC_Tencode', 'Neighborhood_StoneBr|ExterQual_Tencode', 'PavedDrive_N|BsmtCond_Gd', 'BsmtFinType1_Tencode|CentralAir_Y', 'RoofStyle_Gambrel|Neighborhood_BrkSide', 'BldgType_2fmCon|FireplaceQu_Ex', 'GarageFinish_Unf|Utilities_AllPub', 'LandSlope_Tencode|SaleType_CWD', 'BldgType_2fmCon|BldgType_Twnhs', 'Neighborhood_NridgHt|Fence_GdPrv', 'LandContour_Lvl|HeatingQC_Tencode', 'RoofStyle_Hip|Exterior2nd_AsphShn', 'BldgType_2fmCon|SaleType_ConLD', 'Electrical_FuseP|Exterior2nd_Brk Cmn', 'PoolQC_Tencode|BsmtQual_TA', 'Alley_Pave|Alley_Grvl', 'KitchenQual_Ex|Condition2_Artery', 'ExterCond_TA|Exterior1st_Stucco', 'GarageType_Attchd|RoofMatl_WdShngl', 'Exterior2nd_Stone|Heating_GasW', 'LotShape_Reg|Neighborhood_NAmes', 'PavedDrive_Tencode|HouseStyle_2Story', 'Condition1_Feedr|FireplaceQu_Ex', 'HouseStyle_1Story|ExterCond_Tencode', 'Electrical_FuseP|Condition1_RRAn', 'LandSlope_Gtl|Exterior2nd_Wd Sdng', 'BldgType_2fmCon|GarageType_CarPort', 'Exterior2nd_Wd Sdng|Neighborhood_SawyerW', 'MasVnrType_BrkCmn|Exterior2nd_CmentBd', 'GarageCond_Gd|Condition1_RRAn', 'Electrical_Tencode|ExterCond_Fa', 'LotShape_IR3|Foundation_Slab', 'MoSold|MasVnrArea', 'BldgType_2fmCon|LotFrontage', 'GarageYrBlt|Exterior1st_Wd Sdng', 'LandSlope_Sev|KitchenQual_TA', 'Condition1_Artery|LandSlope_Gtl', 'Exterior2nd_Stucco|BsmtQual_Tencode', 'HeatingQC_Gd|Neighborhood_Timber', 'BsmtFinType2_GLQ|BldgType_1Fam', 'HeatingQC_Gd|LandSlope_Sev', 'BsmtExposure_Tencode|Heating_Grav', 'Exterior2nd_Tencode|Neighborhood_NAmes', 'RoofMatl_Tencode|BsmtFinType2_Rec', 'LandContour_Tencode|SaleType_CWD', 'Heating_Grav|Exterior2nd_MetalSd', 'GarageQual_Po|HouseStyle_SLvl', 'Electrical_Tencode|SaleCondition_Abnorml', 'BldgType_Tencode|HouseStyle_2Story', 'LandContour_Lvl|PavedDrive_P', 'BsmtCond_Tencode|Street_Pave', 'LotShape_IR3|MasVnrType_Tencode', '3SsnPorch|Condition1_PosA', 'SaleCondition_Tencode|Heating_GasA', 'HouseStyle_2.5Unf|Exterior1st_BrkComm', 'Exterior1st_Stucco|BsmtFinType1_Rec', 'SaleType_Tencode|MiscFeature_Shed', 'BsmtFinType1_GLQ|BsmtCond_TA', 'HouseStyle_1Story|Exterior2nd_Wd Shng', 'Condition1_Norm', 'Foundation_PConc|LandContour_Tencode', 'LotConfig_Tencode|MiscFeature_Tencode', 'Neighborhood_StoneBr|GarageType_Basment', 'LandContour_Tencode|BsmtQual_Fa', 'Exterior2nd_BrkFace|BsmtFinType1_ALQ', 'BsmtCond_Tencode|MasVnrType_Tencode', 'FireplaceQu_Po|HouseStyle_SLvl', 'Exterior1st_VinylSd|Condition1_Tencode', 'ExterQual_TA|Electrical_SBrkr', 'FireplaceQu_Tencode|GarageCond_Po', 'Heating_Grav|BsmtQual_Tencode', 'Street_Tencode|BldgType_TwnhsE', 'Foundation_Tencode|Exterior1st_BrkComm', 'KitchenAbvGr|KitchenQual_Fa', 'Exterior2nd_Wd Sdng|Exterior2nd_AsphShn', 'Utilities_Tencode|Electrical_SBrkr', 'KitchenQual_Ex|SaleCondition_Normal', 'SaleType_Oth|WoodDeckSF', 'LandContour_Low|GarageCond_Po', 'Neighborhood_NoRidge|BsmtCond_Po', 'GarageType_Detchd|SaleType_ConLI', 'GarageCars|MiscFeature_Tencode', 'GarageFinish_Fin|BsmtQual_TA', 'ExterCond_TA|BsmtCond_Po', 'Foundation_BrkTil|PavedDrive_Tencode', 'Neighborhood_Crawfor|Exterior1st_WdShing', 'Foundation_Tencode|BsmtFinType2_BLQ', 'BsmtFinType2_Tencode|Fence_GdPrv', 'MSZoning_Tencode|Neighborhood_BrkSide', 'BsmtFinType2_Tencode|1stFlrSF', 'Exterior2nd_Stucco|Electrical_FuseF', 'GarageType_Detchd|GarageYrBlt', 'Condition2_Artery|ExterCond_Fa', 'GarageType_Basment|Exterior2nd_AsphShn', 'ExterQual_Ex|Neighborhood_Crawfor', 'ExterQual_TA|BsmtFinType2_LwQ', 'Exterior1st_BrkFace|GarageFinish_RFn', 'FullBath|SaleCondition_Abnorml', 'RoofStyle_Hip|LotConfig_Inside', 'PoolQC_Tencode|BsmtFinType2_Rec', 'BedroomAbvGr|WoodDeckSF', 'GarageFinish_Unf|HouseStyle_1.5Fin', 'Functional_Maj1|FireplaceQu_Ex', 'Heating_Tencode|Exterior1st_VinylSd', 'Heating_GasW|Neighborhood_SWISU', 'BsmtFinType1_Tencode|GarageFinish_RFn', 'Neighborhood_Blmngtn|BldgType_Tencode', 'Exterior1st_BrkComm|HouseStyle_1.5Fin', 'BsmtHalfBath|ExterQual_Ex', 'Utilities_Tencode|BsmtFullBath', 'GarageCond_Ex|GarageQual_Tencode', 'Neighborhood_NWAmes|HouseStyle_2Story', 'EnclosedPorch|Electrical_FuseP', 'SaleType_ConLw|BedroomAbvGr', 'RoofStyle_Hip|Neighborhood_StoneBr', 'GarageCond_Tencode|BsmtUnfSF', 'Condition2_Artery|KitchenQual_TA', '1stFlrSF|ExterQual_Fa', 'BsmtCond_Gd|ExterQual_Fa', 'BsmtFinType2_BLQ|BsmtExposure_Mn', 'LandSlope_Tencode|BsmtCond_Tencode', 'LandContour_HLS|Exterior2nd_Brk Cmn', 'Exterior1st_HdBoard|Exterior2nd_Wd Shng', 'Utilities_Tencode|PavedDrive_N', 'CentralAir_Tencode|MasVnrType_BrkFace', 'Functional_Min1|BldgType_TwnhsE', 'Exterior2nd_Stone|BsmtFinType2_ALQ', 'Neighborhood_Edwards|Exterior2nd_Wd Shng', 'YearRemodAdd|BsmtQual_Tencode', 'BsmtFinType1_Rec|ExterQual_Gd', 'BedroomAbvGr|Alley_Grvl', 'SaleType_WD|BsmtCond_Fa', 'MSZoning_RM|Neighborhood_Timber', 'Exterior1st_BrkFace|Condition2_Norm', 'BsmtFinType1_Unf|BsmtExposure_Mn', 'SaleType_ConLD|KitchenQual_TA', 'BsmtFinType1_BLQ|Neighborhood_IDOTRR', 'Neighborhood_CollgCr|2ndFlrSF', 'LotShape_Tencode|SaleType_New', 'ExterCond_TA|Condition1_PosA', 'RoofStyle_Gambrel|WoodDeckSF', 'BsmtFinType1_Tencode|1stFlrSF', 'Exterior1st_Stucco|BsmtFinType2_Unf', 'GarageCond_TA|HouseStyle_SFoyer', 'Exterior1st_BrkFace|LowQualFinSF', 'PavedDrive_N|SaleType_COD', 'LotFrontage|Alley_Tencode', 'LandSlope_Mod|LandContour_Tencode', 'BsmtFinType1_Tencode|Exterior2nd_Plywood', 'Exterior1st_HdBoard|Neighborhood_SawyerW', 'Neighborhood_Blmngtn|PoolQC_Tencode', 'FireplaceQu_Tencode|Exterior1st_WdShing', 'Neighborhood_Tencode|BsmtFullBath', 'RoofStyle_Gable|Exterior2nd_AsphShn', 'RoofMatl_Tencode|BsmtFinType2_BLQ', 'Neighborhood_Mitchel|Functional_Min1', 'GarageFinish_Unf|MiscFeature_Gar2', 'KitchenQual_Gd|GarageCond_Tencode', 'Heating_Grav|LotConfig_Tencode', 'Electrical_SBrkr|Exterior1st_CemntBd', 'Functional_Typ|Functional_Min2', 'LotArea|Condition2_Norm', 'Heating_Grav|Exterior2nd_Wd Sdng', 'LandSlope_Gtl|Exterior1st_WdShing', 'BsmtFinType2_GLQ|LandSlope_Sev', 'GarageCars|Exterior1st_Wd Sdng', 'RoofStyle_Hip|Neighborhood_Tencode', 'Exterior1st_BrkFace|Exterior1st_BrkComm', 'HouseStyle_SFoyer|HalfBath', 'BldgType_Duplex|MiscFeature_Shed', 'Functional_Typ|Neighborhood_MeadowV', 'GarageCond_Tencode|OpenPorchSF', 'GarageType_BuiltIn', 'Exterior2nd_Tencode|BsmtFinType2_LwQ', 'GarageCars|Functional_Mod', 'Exterior1st_CemntBd|RoofMatl_WdShngl', 'Exterior1st_Stucco|BsmtFinType2_Rec', 'BsmtFinType2_GLQ|SaleType_CWD', 'Heating_Grav|Neighborhood_SawyerW', 'BsmtHalfBath|Exterior1st_MetalSd', 'LotFrontage|RoofStyle_Gambrel', 'RoofStyle_Flat|Condition1_Norm', 'YearRemodAdd|Heating_Grav', 'Condition1_Artery|Condition1_PosN', 'GarageCars|FireplaceQu_TA', 'GarageCond_Tencode|FireplaceQu_Ex', 'Foundation_BrkTil|GarageQual_TA', 'GarageQual_Fa|Fence_MnPrv', 'Neighborhood_NoRidge|ExterCond_Tencode', 'LandContour_Tencode|Neighborhood_Edwards', 'Neighborhood_Somerst|RoofStyle_Tencode', 'BsmtHalfBath|HouseStyle_2.5Unf', 'MoSold|MiscFeature_Shed', 'KitchenQual_Fa|Fence_MnWw', 'CentralAir_Y|MasVnrType_BrkFace', 'Neighborhood_Edwards|BsmtQual_TA', 'FireplaceQu_Fa|BsmtExposure_Av', 'FireplaceQu_TA|Neighborhood_MeadowV', 'LotFrontage|Neighborhood_NAmes', 'Neighborhood_CollgCr|KitchenQual_Fa', 'CentralAir_Y|SaleCondition_Abnorml', 'Electrical_FuseP|Neighborhood_Timber', 'BsmtCond_TA|Fence_MnWw', 'MiscFeature_Tencode|WoodDeckSF', 'HouseStyle_1Story|MiscVal', 'Condition1_Artery|Condition2_Tencode', 'Foundation_Stone|Condition1_RRAn', 'Neighborhood_Mitchel|SaleType_WD', 'Electrical_SBrkr|ExterCond_Tencode', 'GarageCars|BsmtQual_TA', 'Heating_GasA|GarageQual_TA', 'BsmtCond_Tencode|Street_Grvl', 'PavedDrive_N|LotArea', 'Fireplaces|Foundation_CBlock', 'Neighborhood_NridgHt|BsmtQual_TA', 'Exterior1st_BrkFace|LandContour_Tencode', 'Electrical_Tencode|LandContour_Lvl', 'LandSlope_Tencode|Exterior1st_BrkComm', 'HeatingQC_Gd|BsmtCond_Tencode', 'RoofStyle_Flat|GarageCond_TA', 'ExterQual_Ex|MSZoning_RL', 'BsmtFinType2_GLQ|SaleCondition_Normal', 'Functional_Tencode|ExterCond_Gd', 'SaleType_Tencode|Functional_Min2', 'Exterior1st_Stucco|Neighborhood_IDOTRR', 'FireplaceQu_Tencode|LotConfig_FR2', 'SaleCondition_Tencode|RoofMatl_Tencode', 'MoSold|SaleCondition_Normal', 'LotConfig_FR2|LotShape_IR3', 'RoofMatl_Tencode|BsmtExposure_Gd', 'GarageQual_Po|Functional_Min2', 'BsmtQual_Tencode|Condition1_PosA', 'SaleType_ConLD|FireplaceQu_TA', 'Exterior1st_Stucco|GarageCond_Ex', 'LotShape_IR1|Neighborhood_SWISU', 'Alley_Tencode|Exterior1st_BrkComm', 'YearRemodAdd|FireplaceQu_TA', 'Fireplaces|Neighborhood_BrkSide', 'PavedDrive_N|BsmtFinType2_Tencode', 'BsmtUnfSF|ExterQual_Tencode', 'Neighborhood_Blmngtn|HouseStyle_2.5Unf', 'YearRemodAdd|Exterior1st_BrkComm', 'GrLivArea|Exterior2nd_Wd Shng', 'Condition2_Artery|Exterior1st_Plywood', 'LotConfig_CulDSac|Exterior1st_BrkComm', 'FullBath|MasVnrArea', 'Foundation_PConc|Exterior2nd_Brk Cmn', 'RoofMatl_CompShg|Neighborhood_Crawfor', 'Street_Tencode|MoSold', 'FireplaceQu_Tencode|HeatingQC_Fa', 'Functional_Tencode|CentralAir_N', 'LotShape_IR1|Neighborhood_Timber', 'Exterior2nd_BrkFace|MoSold', 'Electrical_FuseP|ExterCond_Tencode', 'Heating_GasA|HouseStyle_SFoyer', 'Exterior2nd_BrkFace|Functional_Min1', 'GarageQual_Gd|BsmtFinSF2', 'LandSlope_Mod|Condition2_Tencode', 'GarageYrBlt|Neighborhood_Timber', 'BsmtFinSF2|BsmtCond_Gd', 'Street_Tencode|KitchenQual_Gd', 'Functional_Maj2|LandSlope_Gtl', 'GarageCond_Fa|ScreenPorch', 'Exterior2nd_CmentBd|MSZoning_Tencode', 'SaleType_Tencode|BsmtFinType1_GLQ', 'GarageFinish_Fin|BsmtFinType2_BLQ', 'LandContour_Low|Exterior1st_Wd Sdng', 'LandSlope_Mod|LowQualFinSF', 'GrLivArea|HouseStyle_2.5Unf', 'Street_Tencode|SaleType_New', 'BsmtExposure_Tencode|PavedDrive_N', 'Functional_Mod|MSZoning_RL', 'LandContour_Bnk|Exterior1st_CemntBd', 'GarageCars|BedroomAbvGr', 'BsmtFinType2_GLQ|LotArea', 'Functional_Maj1|Exterior1st_Plywood', 'SaleCondition_Family|LandContour_Lvl', 'Functional_Typ|Neighborhood_Crawfor', 'YrSold|Fence_GdWo', 'Neighborhood_Veenker|Exterior2nd_CmentBd', 'BsmtFullBath|RoofStyle_Shed', 'Neighborhood_NridgHt|Foundation_Tencode', 'HouseStyle_SFoyer|BsmtFinType1_Unf', 'HouseStyle_2.5Unf|MSZoning_FV', 'GarageArea|OverallCond', 'Functional_Typ|RoofStyle_Gable', 'Exterior1st_WdShing', 'LotConfig_FR2|Utilities_AllPub', 'BsmtFinSF2|Exterior1st_MetalSd', 'BsmtExposure_Tencode|Condition2_Norm', 'Condition1_Feedr|MasVnrArea', 'BsmtFinType2_Tencode|HouseStyle_2.5Unf', 'LowQualFinSF|GarageCond_Ex', 'Neighborhood_Sawyer|BldgType_Tencode', 'HalfBath|MoSold', 'LotConfig_FR2|Foundation_Tencode', 'BsmtQual_Fa|Exterior1st_CemntBd', 'Condition1_PosN|Exterior1st_VinylSd', 'RoofMatl_CompShg|Foundation_BrkTil', 'BsmtQual_Ex|MSZoning_RH', 'MoSold|Exterior1st_MetalSd', 'BsmtFinType2_Rec|BsmtCond_Po', 'BsmtFinType2_LwQ|2ndFlrSF', 'Exterior1st_HdBoard|Exterior1st_BrkComm', 'BsmtFinType2_Rec|BsmtCond_TA', 'RoofMatl_CompShg|CentralAir_Tencode', 'LandSlope_Sev|SaleCondition_Abnorml', 'RoofMatl_Tencode|MSZoning_RH', 'GarageCond_Po|ExterQual_Tencode', 'SaleCondition_Abnorml|Fence_MnPrv', 'Heating_GasW|FireplaceQu_Ex', 'Fence_GdWo|PoolArea', 'Foundation_Tencode|LandContour_Lvl', 'LotArea|GarageType_Basment', 'Exterior2nd_Stucco|BsmtQual_Fa', 'TotalBsmtSF|Condition1_PosN', 'Neighborhood_Blmngtn|Heating_GasW', 'BsmtFinType2_BLQ|MasVnrType_BrkFace', 'Exterior1st_BrkFace|BsmtFinType1_Rec', 'BldgType_1Fam|SaleCondition_Abnorml', 'MiscFeature_Shed|Exterior1st_VinylSd', 'Condition1_RRAe|HouseStyle_2Story', 'LotConfig_Corner|Neighborhood_CollgCr', 'BsmtQual_Ex|FireplaceQu_Ex', 'HeatingQC_Tencode|Functional_Min1', 'GarageCond_TA|MSSubClass', 'Heating_Grav|MSZoning_RL', 'SaleCondition_Tencode|Alley_Tencode', 'GarageCars|SaleType_Tencode', 'Exterior2nd_VinylSd|HalfBath', 'KitchenAbvGr|Heating_Tencode', 'BsmtFinType1_Rec|BsmtCond_TA', 'HeatingQC_Gd|Exterior2nd_CmentBd', 'Neighborhood_Mitchel|Neighborhood_NWAmes', 'PoolArea|Exterior2nd_Plywood', 'LotConfig_FR2|SaleType_Oth', 'BsmtQual_TA|Condition1_RRAn', 'GarageCars|RoofMatl_Tar&Grv', 'LotFrontage|BsmtExposure_Av', 'HeatingQC_TA|MSZoning_Tencode', 'Alley_Pave|Exterior2nd_BrkFace', 'BldgType_TwnhsE|Neighborhood_MeadowV', 'Neighborhood_Mitchel|ExterQual_Tencode', 'LotShape_IR1|GarageCond_Gd', 'SaleCondition_Tencode|ExterQual_Gd', 'Condition1_Tencode|MasVnrType_Stone', 'Condition1_PosA|Alley_Grvl', 'Neighborhood_Timber|Exterior2nd_Wd Shng', 'LotShape_Tencode|GarageFinish_Fin', 'GarageType_BuiltIn|Neighborhood_Sawyer', 'KitchenQual_Ex|Condition1_Feedr', 'Functional_Maj1|MiscFeature_Gar2', 'Neighborhood_BrDale|RoofMatl_CompShg', 'YearRemodAdd|ExterCond_Fa', 'Neighborhood_NPkVill|BsmtFinType1_Rec', 'Condition1_Artery|BsmtFinType2_BLQ', 'LotFrontage|KitchenQual_Ex', 'HeatingQC_Gd|Condition2_Norm', 'TotRmsAbvGrd|MSZoning_RM', 'BldgType_1Fam|Alley_Grvl', 'FireplaceQu_Fa|BsmtQual_Gd', 'Functional_Maj2|Foundation_Slab', 'Condition1_Artery|WoodDeckSF', 'FireplaceQu_Tencode|HouseStyle_SFoyer', 'Condition1_Artery|BsmtHalfBath', 'KitchenQual_Tencode|MSZoning_RM', 'Neighborhood_Edwards|2ndFlrSF', 'CentralAir_N|Neighborhood_BrkSide', 'LotShape_Tencode|Heating_Grav', 'Functional_Maj2|RoofStyle_Shed', 'BsmtExposure_Av|ScreenPorch', 'Electrical_FuseF|GarageQual_Po', 'BsmtFullBath|1stFlrSF', 'SaleCondition_Alloca|BsmtFinSF1', 'LandSlope_Sev|ExterCond_Gd', 'YrSold|Heating_GasA', 'HouseStyle_Tencode|Exterior1st_Tencode', 'BsmtFinType1_Tencode|GarageCond_TA', 'Functional_Tencode|HouseStyle_1.5Unf', 'RoofMatl_CompShg|LandContour_HLS', 'YearRemodAdd|Neighborhood_NPkVill', 'Neighborhood_Blmngtn|MasVnrType_BrkCmn', 'GarageFinish_Fin|Fireplaces', 'Neighborhood_ClearCr|SaleType_Oth', 'Neighborhood_Edwards|ExterQual_Fa', 'RoofStyle_Flat|MSZoning_FV', 'RoofStyle_Gambrel|Exterior1st_CemntBd', 'BsmtFinType1_Tencode|GarageArea', 'Neighborhood_NAmes|GarageType_CarPort', 'Fence_GdPrv|Exterior2nd_Wd Shng', 'Condition1_PosA|HouseStyle_SLvl', 'GarageCond_Po|Neighborhood_StoneBr', 'BsmtFinType1_Rec|Electrical_FuseF', 'Exterior1st_Tencode|WoodDeckSF', 'Fireplaces|BsmtFullBath', 'Heating_GasA|Condition1_Feedr', '1stFlrSF|LandSlope_Gtl', 'TotRmsAbvGrd|ExterQual_Fa', 'SaleCondition_Tencode|BsmtFinType2_Tencode', 'BsmtQual_Ex|Exterior2nd_HdBoard', 'LotConfig_Tencode|MasVnrType_Stone', 'TotRmsAbvGrd|OpenPorchSF', 'BsmtQual_Tencode|Neighborhood_OldTown', 'LandContour_Low|SaleCondition_Normal', 'ExterQual_Gd|BsmtExposure_Mn', 'LotConfig_Corner|GarageCond_Fa', 'HouseStyle_1Story|SaleType_WD', 'PoolQC_Tencode|Exterior1st_VinylSd', 'RoofStyle_Gambrel|Exterior2nd_HdBoard', 'LotConfig_Corner|FireplaceQu_TA', 'BsmtFinType1_LwQ|BsmtFinType1_Unf', 'LowQualFinSF|MiscFeature_Gar2', 'BsmtFinType2_ALQ', 'Neighborhood_Sawyer|GarageYrBlt', 'Exterior2nd_VinylSd|BsmtFullBath', 'GrLivArea|MSZoning_Tencode', 'Electrical_SBrkr|LotConfig_Tencode', 'HalfBath|BsmtFinType2_LwQ', 'YrSold|Street_Tencode', 'BsmtFinType2_Rec|GarageType_CarPort', 'KitchenQual_TA|MasVnrType_Stone', 'BsmtFinType1_BLQ|KitchenQual_TA', 'BsmtExposure_Gd|BsmtCond_Fa', 'Electrical_Tencode|BsmtFinType2_BLQ', 'BsmtFinType1_BLQ|Condition1_Tencode', 'BsmtFinType1_Tencode|BsmtCond_Tencode', 'Exterior1st_BrkFace|GarageQual_Po', 'LandSlope_Sev|BsmtExposure_Gd', 'BsmtFinType2_LwQ|CentralAir_Tencode', 'Electrical_FuseA|BsmtFinType2_Rec', 'PavedDrive_Y|Exterior2nd_Wd Sdng', 'GarageCond_Po|Fence_MnPrv', 'HouseStyle_SFoyer|Fence_GdPrv', 'PavedDrive_P|KitchenQual_TA', 'RoofMatl_WdShngl|Exterior1st_Wd Sdng', 'SaleCondition_Partial|BsmtFinType1_Unf', 'Exterior2nd_VinylSd|WoodDeckSF', 'Neighborhood_OldTown|BsmtFinType1_ALQ', 'BsmtQual_Tencode|MSZoning_Tencode', 'EnclosedPorch|BedroomAbvGr', 'LandSlope_Mod|BsmtExposure_Gd', 'GarageCond_Fa|MasVnrType_BrkFace', 'Electrical_FuseA|BsmtQual_Gd', 'ExterQual_Ex|Exterior2nd_Wd Shng', 'LowQualFinSF|HouseStyle_2.5Unf', 'BsmtFinType2_Unf|BsmtFinSF1', 'FireplaceQu_Tencode|GarageCond_TA', 'BsmtFinSF2|Electrical_FuseF', '2ndFlrSF|Exterior1st_Plywood', 'Neighborhood_NPkVill|GarageQual_Gd', 'HouseStyle_1.5Unf|Condition2_Norm', 'Condition1_PosN|BldgType_1Fam', 'KitchenQual_Tencode|Condition1_RRAe', 'Neighborhood_ClearCr|Functional_Maj1', 'TotalBsmtSF|SaleType_ConLw', 'LandSlope_Tencode|Exterior1st_MetalSd', 'RoofStyle_Flat|Neighborhood_CollgCr', 'BsmtQual_Tencode|LandContour_HLS', 'Exterior1st_BrkFace|LotConfig_CulDSac', 'LandContour_Lvl|BsmtFinType2_LwQ', 'EnclosedPorch|HeatingQC_Tencode', 'RoofStyle_Hip|Condition1_RRAe', 'LandContour_Tencode|ExterQual_Gd', 'KitchenAbvGr|Foundation_Slab', 'Neighborhood_BrDale|LotConfig_CulDSac', 'LandSlope_Tencode|CentralAir_Tencode', 'Neighborhood_Blmngtn|GarageType_Attchd', 'GarageType_Detchd|RoofMatl_WdShngl', 'Utilities_Tencode|HouseStyle_2.5Unf', 'LandContour_Tencode|ExterCond_Gd', 'BsmtFinType2_ALQ|Heating_Tencode', 'LotShape_Tencode|Neighborhood_Edwards', 'LandSlope_Gtl|BsmtFinType1_Unf', 'SaleCondition_Tencode|1stFlrSF', 'KitchenAbvGr|LotFrontage', 'GarageQual_Po|FireplaceQu_Ex', 'Exterior1st_HdBoard|MasVnrType_BrkFace', 'Exterior1st_BrkFace|Neighborhood_StoneBr', 'Functional_Maj2', 'MSSubClass|MasVnrType_Tencode', 'Foundation_BrkTil|LandContour_Tencode', 'Exterior1st_HdBoard|MiscFeature_Gar2', 'Alley_Tencode|RoofMatl_CompShg', 'SaleType_ConLI|Condition1_RRAn', 'HeatingQC_Gd|3SsnPorch', 'Neighborhood_NWAmes|BsmtQual_Gd', 'Condition1_Artery|BldgType_1Fam', 'BldgType_2fmCon|GarageCond_Fa', 'Condition2_Tencode', 'GarageCars|MSZoning_RH', 'Exterior1st_BrkFace|MSZoning_RH', 'HeatingQC_Fa|GarageType_Tencode', 'RoofStyle_Gambrel', 'SaleType_New|Condition1_Norm', 'MiscFeature_Othr|2ndFlrSF', 'GarageType_Tencode|Neighborhood_BrkSide', 'MoSold|MasVnrType_Stone', 'BsmtFinType2_BLQ|BsmtFinType1_Rec', 'Exterior1st_Stucco|KitchenQual_Tencode', 'BsmtFinType2_Rec|BsmtFinSF1', 'SaleType_ConLw|Condition1_PosA', 'KitchenQual_Gd|Functional_Maj2', 'YearRemodAdd|MiscFeature_Tencode', 'Functional_Min1|LotConfig_Tencode', 'FireplaceQu_Ex|Condition1_RRAn', 'OverallQual|BsmtFinType1_Unf', 'BsmtQual_TA|Foundation_Slab', 'SaleType_New|PoolArea', 'Exterior2nd_Stucco|Foundation_BrkTil', 'GarageCond_Ex|Functional_Min2', 'Neighborhood_NridgHt|BsmtFinType2_LwQ', 'ExterCond_TA|SaleType_COD', 'BsmtQual_Ex|Street_Pave', 'SaleType_ConLw|MasVnrArea', 'LotShape_Tencode|HeatingQC_Fa', 'Fence_GdWo|PavedDrive_P', 'Street_Grvl|BsmtQual_Gd', 'LandContour_Low|RoofStyle_Hip', 'Neighborhood_Edwards|Condition1_PosN', 'BsmtCond_Po|HouseStyle_2.5Unf', 'BsmtFinType1_ALQ|LowQualFinSF', 'BsmtQual_TA|FireplaceQu_TA', 'Foundation_PConc|BsmtCond_TA', 'HouseStyle_1Story|Neighborhood_ClearCr', 'Exterior2nd_BrkFace|HouseStyle_SLvl', 'HouseStyle_SFoyer|Condition2_Norm', 'OverallQual|BsmtFinType1_Tencode', 'RoofMatl_Tencode|BsmtUnfSF', 'GarageQual_Fa|Exterior2nd_CmentBd', 'BsmtFinType1_ALQ|MasVnrType_BrkFace', 'Foundation_Tencode|FireplaceQu_TA', 'KitchenQual_Gd|SaleType_WD', 'Foundation_Stone|Neighborhood_BrkSide', 'YrSold|BsmtFinType2_ALQ', 'FireplaceQu_Fa|Exterior1st_VinylSd', 'BsmtFullBath|Neighborhood_MeadowV', 'BsmtQual_Fa|RoofStyle_Tencode', 'SaleType_New|Neighborhood_NAmes', 'LandContour_HLS|GarageFinish_RFn', 'FireplaceQu_TA|MSZoning_Tencode', 'PoolArea|MiscFeature_Gar2', 'Heating_GasA|SaleCondition_Alloca', 'GarageCond_Tencode|Foundation_CBlock', 'ExterQual_Gd|ScreenPorch', 'BldgType_Duplex|Exterior2nd_Wd Sdng', 'HouseStyle_1.5Unf|Exterior1st_WdShing', 'LotArea|WoodDeckSF', 'RoofStyle_Flat|Functional_Min1', 'BldgType_1Fam|Fence_MnWw', 'Heating_GasA|BsmtFinType2_Unf', 'OpenPorchSF|GarageQual_Tencode', 'GarageType_Detchd|Foundation_PConc', 'GarageType_Detchd|Neighborhood_NridgHt', 'CentralAir_Tencode|ExterCond_Fa', 'MasVnrType_None|GarageType_2Types', 'Condition1_Tencode|Exterior2nd_Brk Cmn', 'LandContour_Bnk|BsmtFinSF1', 'BsmtFinType2_BLQ|Exterior1st_Tencode', 'EnclosedPorch|MSZoning_FV', 'GarageType_Detchd|Exterior2nd_HdBoard', 'HouseStyle_2.5Unf|GarageQual_Tencode', 'KitchenQual_Gd|BsmtQual_TA', 'PoolArea|Exterior1st_Wd Sdng', 'BsmtFinSF2|BsmtFinType2_LwQ', 'Street_Tencode|HouseStyle_SFoyer', 'GarageQual_TA|Exterior1st_VinylSd', 'BsmtQual_Ex|SaleType_New', 'LotConfig_Corner|BsmtHalfBath', 'Foundation_CBlock|WoodDeckSF', 'LotConfig_Corner|WoodDeckSF', 'Utilities_Tencode|MasVnrType_Tencode', 'Exterior1st_CemntBd|BsmtFinType2_LwQ', 'GarageCars|Alley_Grvl', 'PoolQC_Tencode|Condition1_RRAe', 'Foundation_PConc|3SsnPorch', 'Neighborhood_OldTown|LotConfig_Tencode', 'GarageCond_Tencode|Exterior2nd_MetalSd', 'GarageCond_TA|BsmtFinType2_Rec', 'Condition1_Artery|MasVnrType_Stone', 'SaleType_WD|SaleCondition_Partial', 'LotShape_Tencode|GarageFinish_Unf', 'Exterior1st_AsbShng|SaleCondition_Family', 'PavedDrive_Tencode|GarageYrBlt', 'RoofStyle_Flat|Condition2_Norm', 'Street_Tencode|Exterior1st_Wd Sdng', 'LandSlope_Mod|Electrical_SBrkr', 'MiscVal|BsmtCond_Po', 'CentralAir_Tencode|Exterior2nd_Brk Cmn', 'Exterior1st_BrkFace|GarageType_Tencode', 'LotShape_Reg|MasVnrArea', 'BsmtQual_Ex|Exterior2nd_AsphShn', 'LotConfig_FR2|Exterior2nd_HdBoard', 'BsmtFinType1_Rec|Exterior2nd_Wd Sdng', 'Exterior2nd_Stucco|GarageYrBlt', 'BsmtFinSF2|Neighborhood_Tencode', 'Alley_Tencode|GarageType_BuiltIn', 'Exterior2nd_Stone|LandContour_Low', 'RoofMatl_CompShg|Exterior1st_Plywood', 'BsmtHalfBath|Exterior2nd_Tencode', 'RoofStyle_Hip|Foundation_Stone', 'RoofStyle_Flat|SaleType_New', 'SaleCondition_Tencode|KitchenQual_Ex', 'OverallQual|BsmtQual_Gd', 'Exterior2nd_Tencode|PavedDrive_Y', 'Neighborhood_OldTown|ExterQual_Gd', 'BldgType_Duplex|Exterior1st_VinylSd', 'Foundation_Tencode|GarageQual_Tencode', 'RoofMatl_Tencode|MSZoning_RL', 'BsmtFinType2_GLQ|BldgType_Tencode', 'LandSlope_Mod|LotConfig_Tencode', 'Condition1_PosN|LowQualFinSF', 'Exterior2nd_Stucco|MSZoning_RM', 'BsmtFinType2_GLQ|Exterior1st_AsbShng', 'GrLivArea|ExterQual_Gd', 'OverallCond|GarageYrBlt', 'RoofStyle_Hip|LandContour_Tencode', 'BsmtFinSF2|Functional_Mod', 'ExterCond_TA|LowQualFinSF', 'GarageCond_Gd|FireplaceQu_Ex', 'Neighborhood_NridgHt|BsmtCond_Fa', 'Street_Tencode|SaleType_WD', 'HouseStyle_1Story|GarageCond_Tencode', 'RoofStyle_Hip|Neighborhood_NoRidge', 'BsmtQual_Ex|GarageQual_Po', 'Electrical_Tencode|Neighborhood_IDOTRR', 'SaleCondition_Normal|Fence_MnPrv', 'LandContour_Lvl|BldgType_1Fam', 'YrSold|PoolArea', 'BsmtFinType1_ALQ|Neighborhood_SWISU', 'GarageQual_Gd|Neighborhood_NWAmes', 'Foundation_Stone|MasVnrType_BrkFace', 'GrLivArea|PoolQC_Tencode', 'YearRemodAdd|Electrical_Tencode', 'Exterior2nd_Stone|FireplaceQu_TA', 'Exterior1st_BrkFace|RoofMatl_Tar&Grv', 'Neighborhood_Tencode|MSZoning_C (all)', 'SaleCondition_Alloca|GarageFinish_RFn', 'SaleType_ConLw|Condition1_Norm', 'LotShape_Reg|Exterior1st_HdBoard', 'Heating_Grav|GarageFinish_Tencode', 'HeatingQC_Tencode|Condition2_Tencode', 'LandContour_Lvl|Neighborhood_BrkSide', 'LotShape_IR2|PoolArea', 'Fence_GdPrv|HouseStyle_1.5Fin', 'HouseStyle_SFoyer|Functional_Min1', 'BsmtExposure_Tencode|BsmtQual_TA', 'RoofMatl_Tencode|HouseStyle_2.5Unf', 'Neighborhood_NPkVill|KitchenQual_Fa', 'BsmtCond_TA|WoodDeckSF', 'SaleType_ConLw|BldgType_1Fam', 'LandContour_Lvl|Condition1_RRAe', 'RoofMatl_Tencode|BsmtCond_Po', 'Exterior2nd_CmentBd|BsmtFinType2_Rec', 'BsmtQual_Tencode|Fence_MnPrv', 'PavedDrive_N|Neighborhood_NPkVill', 'GarageCond_Po|Electrical_SBrkr', 'Exterior1st_AsbShng|Condition1_RRAe', 'Functional_Maj2|OverallCond', 'ExterQual_TA|MSZoning_Tencode', 'PavedDrive_Y|ExterQual_Fa', 'LandContour_Tencode|LotConfig_Inside', 'Neighborhood_NPkVill|BsmtCond_Tencode', 'GarageCond_Po|BsmtFinType1_GLQ', 'KitchenQual_Gd|Exterior1st_VinylSd', 'Exterior2nd_MetalSd|MSSubClass', 'LotConfig_Corner|LandContour_HLS', 'BsmtCond_Tencode|BsmtFinSF1', 'SaleCondition_Family|BsmtFinType1_ALQ', 'BsmtQual_Tencode|Exterior2nd_Tencode', 'GarageType_Detchd|MSZoning_RL', 'BsmtFinType1_Rec|SaleType_COD', 'HeatingQC_Fa|MSZoning_RH', 'Foundation_BrkTil|Neighborhood_Timber', 'BsmtFinType2_GLQ|GarageCond_Tencode', 'LandContour_Low|BedroomAbvGr', 'KitchenQual_Ex|HeatingQC_Tencode', 'Exterior2nd_Wd Sdng|MSZoning_Tencode', 'MiscFeature_Othr|FireplaceQu_Fa', 'HouseStyle_Tencode|GarageCond_Tencode', 'Neighborhood_Mitchel|Neighborhood_Edwards', 'TotalBsmtSF|Electrical_FuseF', 'BsmtFinType1_Tencode|GarageQual_Fa', 'RoofStyle_Shed|PavedDrive_P', 'SaleType_ConLI|Exterior2nd_MetalSd', 'Functional_Typ|Functional_Maj2', 'Fence_GdWo|LotShape_IR3', 'Alley_Tencode|HouseStyle_Tencode', 'GarageCars|GarageQual_Fa', 'BsmtFinType2_LwQ|Condition2_Norm', 'Exterior2nd_AsbShng|GarageCond_Po', 'HeatingQC_Gd|Fence_GdWo', 'RoofStyle_Hip|SaleType_New', 'BsmtQual_Fa|BsmtCond_Fa', 'Electrical_SBrkr|GarageQual_Fa', '2ndFlrSF|GarageFinish_RFn', 'ExterQual_TA|PavedDrive_Y', 'SaleType_COD|HouseStyle_SLvl', 'Exterior2nd_Tencode|PoolArea', 'RoofStyle_Flat|PavedDrive_Tencode', 'OverallCond|SaleType_Oth', 'Heating_Tencode|Condition1_RRAe', 'SaleType_Tencode|ExterCond_Tencode', 'OpenPorchSF|Neighborhood_StoneBr', 'RoofStyle_Gable|CentralAir_Tencode', 'BsmtFinSF2|HouseStyle_2Story', 'MSZoning_C (all)|SaleType_COD', 'GarageCond_Fa|Exterior1st_Plywood', 'Alley_Tencode|MSZoning_FV', 'KitchenAbvGr|Neighborhood_OldTown', 'LotConfig_Corner|BsmtFinSF2', 'Neighborhood_IDOTRR|HouseStyle_2Story', 'BsmtFinType2_ALQ|HouseStyle_2Story', 'Foundation_Stone|SaleType_COD', '3SsnPorch|Exterior1st_MetalSd', 'RoofMatl_Tencode|GarageType_CarPort', 'SaleType_ConLw|GarageCond_Fa', 'Foundation_Stone|RoofStyle_Shed', 'BsmtFinType2_Rec|Neighborhood_MeadowV', 'LotShape_Tencode|1stFlrSF', 'Alley_Tencode|Electrical_FuseP', 'Exterior2nd_AsbShng|RoofStyle_Flat', 'GarageType_Attchd|Neighborhood_Crawfor', 'RoofMatl_Tar&Grv|Utilities_AllPub', 'Foundation_PConc|Functional_Typ', 'Neighborhood_NoRidge|Neighborhood_Tencode', 'Foundation_CBlock|BsmtCond_TA', 'LandContour_Bnk|HeatingQC_Ex', 'GarageQual_TA|MSZoning_Tencode', 'YearRemodAdd|Street_Pave', 'MiscFeature_Shed|GarageQual_Tencode', 'Electrical_Tencode|ExterCond_Gd', 'SaleType_ConLI|Electrical_SBrkr', 'CentralAir_N|Fence_MnWw', 'HeatingQC_Fa|GarageType_BuiltIn', 'MasVnrType_BrkFace|Exterior1st_MetalSd', 'SaleCondition_Tencode|GarageType_Attchd', 'LandSlope_Sev|RoofMatl_WdShngl', 'ExterCond_TA|Exterior1st_WdShing', 'Utilities_Tencode|BsmtFinType2_Rec', 'SaleType_ConLI|Neighborhood_MeadowV', 'BsmtQual_TA|Neighborhood_Sawyer', 'YrSold|Fence_MnPrv', 'FireplaceQu_Fa|ExterQual_Gd', 'LotFrontage|MSZoning_C (all)', 'Neighborhood_Mitchel|Exterior2nd_CmentBd', 'Exterior2nd_Wd Shng|Fence_MnPrv', 'Heating_Tencode|BedroomAbvGr', 'Condition1_PosA|ScreenPorch', 'RoofStyle_Hip|BsmtQual_Tencode', 'RoofStyle_Flat|MiscFeature_Tencode', 'BsmtQual_Tencode|Condition1_Norm', 'LandSlope_Sev|Exterior1st_Wd Sdng', 'MiscFeature_Shed|HouseStyle_1.5Fin', 'SaleType_ConLw|Neighborhood_NWAmes', 'HouseStyle_1Story|SaleType_Oth', 'Heating_GasA|KitchenQual_Tencode', 'GarageCond_TA|BsmtFinType1_GLQ', 'FireplaceQu_Ex|HouseStyle_2Story', 'GarageCond_TA|MiscFeature_Gar2', 'Exterior1st_AsbShng|SaleType_ConLD', 'BsmtFinType1_BLQ|FireplaceQu_Ex', 'RoofStyle_Flat|HouseStyle_2.5Unf', 'Exterior1st_BrkFace|MSZoning_C (all)', 'Neighborhood_Mitchel|Fence_GdPrv', 'GarageCars|BsmtQual_Fa', 'Alley_Pave|HouseStyle_2.5Unf', 'KitchenQual_Gd|ExterQual_Gd', 'BsmtQual_Tencode|Exterior2nd_AsphShn', 'ExterCond_TA|KitchenQual_Ex', 'Exterior2nd_AsbShng|GarageFinish_Tencode', 'KitchenQual_Tencode|BsmtCond_TA', 'HalfBath|RoofStyle_Tencode', 'TotRmsAbvGrd|BsmtQual_Gd', 'LandContour_Tencode|BsmtCond_Tencode', 'BsmtQual_Ex|LotShape_IR3', 'Condition1_Feedr|Exterior1st_BrkComm', 'PavedDrive_Y|ExterCond_Tencode', 'FullBath|HouseStyle_1.5Unf', 'BsmtHalfBath|Foundation_CBlock', 'GarageQual_TA|BsmtFinType2_Rec', 'GarageQual_Fa|KitchenQual_Fa', 'Heating_GasA|GarageType_Attchd', 'BsmtFinSF2|3SsnPorch', 'BedroomAbvGr|HeatingQC_Tencode', 'MiscFeature_Othr|ExterCond_Fa', 'LandContour_HLS|MSZoning_RH', 'BsmtExposure_Tencode|MiscFeature_Gar2', 'BldgType_TwnhsE|Exterior1st_MetalSd', 'BldgType_TwnhsE|SaleType_CWD', 'PavedDrive_N|Fence_GdPrv', 'TotalBsmtSF|Exterior1st_CemntBd', 'Functional_Maj1|Neighborhood_IDOTRR', 'Exterior2nd_VinylSd|SaleType_Oth', 'SaleCondition_Family|ExterQual_Tencode', 'LotShape_Tencode|LandContour_Tencode', 'MiscFeature_Shed|BsmtFinType2_Unf', 'Neighborhood_IDOTRR|MasVnrType_Tencode', 'Neighborhood_Edwards|BldgType_TwnhsE', 'Electrical_Tencode|FireplaceQu_Po', 'SaleType_ConLI|MasVnrType_None', 'GarageQual_Gd|Condition1_RRAe', 'RoofStyle_Hip|Functional_Min1', 'Neighborhood_Mitchel|Heating_GasW', 'KitchenQual_Ex|BsmtFinType2_Rec', 'BsmtFinSF2|GarageQual_TA', 'KitchenQual_Tencode|MoSold', 'Street_Tencode|Exterior2nd_Wd Sdng', 'RoofMatl_Tencode|GarageQual_Tencode', 'Exterior1st_Stucco|ExterQual_Ex', 'EnclosedPorch|BsmtFinType1_GLQ', 'BsmtFinType1_BLQ|Neighborhood_Somerst', 'SaleCondition_Family|Neighborhood_Gilbert', 'GarageType_Tencode|HeatingQC_Tencode', 'LotConfig_Corner|Exterior2nd_Plywood', 'PavedDrive_P|MSZoning_Tencode', 'RoofStyle_Hip|ExterCond_TA', 'TotRmsAbvGrd|Exterior2nd_CmentBd', 'RoofStyle_Flat|Functional_Maj2', 'OpenPorchSF|Exterior2nd_Wd Shng', 'Neighborhood_Blmngtn|PavedDrive_Tencode', 'GarageCond_Fa|MSSubClass', 'ExterCond_Tencode|MasVnrType_Stone', 'RoofStyle_Hip|BsmtFinSF2', 'HouseStyle_Tencode|GarageQual_TA', 'Heating_Grav|MasVnrArea', 'YrSold|ExterQual_Tencode', 'MasVnrType_BrkCmn|Condition1_Norm', 'Electrical_SBrkr|MasVnrType_Tencode', 'RoofStyle_Gable|LotConfig_Tencode', 'LandContour_Bnk|Foundation_Slab', 'Electrical_SBrkr|Condition1_PosN', 'Neighborhood_BrDale|FireplaceQu_Ex', 'ExterQual_Ex|CentralAir_N', 'HouseStyle_1Story|MasVnrType_Tencode', 'KitchenQual_Gd|Condition1_RRAn', 'Neighborhood_BrDale|LandContour_Tencode', 'PavedDrive_Tencode|BsmtCond_Tencode', 'GarageType_Detchd|Neighborhood_BrDale', 'ExterCond_TA|Functional_Min2', 'FireplaceQu_Po|Foundation_Tencode', 'Street_Tencode|RoofStyle_Flat', 'Exterior1st_AsbShng|SaleCondition_Partial', 'GarageCond_Po|BsmtFullBath', 'MasVnrType_None|MiscFeature_Gar2', 'YearRemodAdd|ExterCond_TA', 'SaleCondition_Abnorml|MSZoning_RH', 'FireplaceQu_Gd|Alley_Tencode', 'KitchenAbvGr|GarageQual_Po', 'Exterior2nd_BrkFace|Condition2_Norm', 'Heating_GasA|BsmtFinType2_LwQ', 'Exterior1st_Stucco|MasVnrType_Stone', 'LotShape_IR1|PoolQC_Tencode', 'Heating_GasW|OverallCond', 'BsmtFinType2_BLQ|CentralAir_Tencode', 'MasVnrType_None|BsmtFinType1_LwQ', 'Alley_Pave|Heating_Grav', 'ExterQual_TA|GarageFinish_Fin', 'Neighborhood_NoRidge|MSSubClass', 'GarageCond_Ex|BsmtFinType1_Unf', 'Neighborhood_CollgCr|Exterior2nd_VinylSd', 'MiscFeature_Shed|Neighborhood_IDOTRR', 'LotShape_Reg|OverallCond', 'GarageCond_Ex|BsmtFinSF1', 'PavedDrive_N|Street_Grvl', 'LandContour_Bnk|BsmtExposure_Mn', 'GarageFinish_Tencode|MiscFeature_Tencode', 'Electrical_FuseP|Condition1_PosA', 'Neighborhood_OldTown|OverallCond', 'LandSlope_Tencode|Condition2_Norm', 'BsmtFinType2_LwQ|MSZoning_RL', 'GarageFinish_Unf|BsmtQual_Fa', 'BsmtFinType1_LwQ|Neighborhood_BrkSide', 'RoofMatl_Tencode|HeatingQC_TA', 'GarageCond_Po|Condition1_PosA', 'BsmtExposure_Av|HouseStyle_2Story', 'LotShape_IR1|MasVnrType_Tencode', 'GarageFinish_Fin|Condition1_RRAn', 'GarageFinish_RFn|GarageType_2Types', 'HeatingQC_TA|GarageQual_Fa', 'BsmtExposure_Tencode|BsmtFinType1_ALQ', 'Foundation_BrkTil|MSZoning_RM', 'Neighborhood_Veenker|ExterQual_Gd', 'Exterior2nd_Wd Sdng|Condition1_RRAn', 'Foundation_PConc|Exterior1st_Wd Sdng', 'ExterCond_TA|SaleType_WD', 'Neighborhood_Edwards|Neighborhood_NWAmes', 'Functional_Tencode|Neighborhood_Timber', 'ExterQual_Ex|ExterCond_Fa', 'LandContour_Lvl|GarageCond_Fa', 'Electrical_FuseA|LandContour_Tencode', 'Condition2_Artery|Fence_MnWw', 'BsmtCond_Po|BldgType_TwnhsE', 'MiscVal|CentralAir_Tencode', 'BsmtFinType1_Tencode|Condition2_Norm', 'EnclosedPorch|Alley_Grvl', 'FireplaceQu_Gd|SaleCondition_Normal', 'LotShape_IR2|MSZoning_RH', 'BsmtFinSF2|PoolQC_Tencode', 'Functional_Maj2|Exterior1st_WdShing', 'SaleType_ConLI|MoSold', 'BsmtFinType2_ALQ|Fence_MnWw', 'GarageFinish_Unf|BldgType_Twnhs', 'HeatingQC_TA|Foundation_BrkTil', 'Neighborhood_Mitchel|Condition2_Norm', 'Exterior2nd_Stucco|PavedDrive_Tencode', 'BsmtFinType2_ALQ|Functional_Min1', 'Neighborhood_BrDale|GarageFinish_Tencode', 'YearRemodAdd|GarageYrBlt', 'MiscFeature_Shed|BsmtCond_Tencode', 'BsmtCond_Tencode|Exterior1st_MetalSd', 'PavedDrive_Tencode|GarageCond_Gd', 'RoofStyle_Hip|BsmtFinSF1', 'BsmtExposure_Gd|RoofMatl_WdShngl', 'ExterCond_TA|GarageType_CarPort', 'Heating_Tencode|Exterior2nd_Plywood', 'Functional_Tencode|PoolQC_Tencode', 'ExterQual_Ex|Exterior1st_Wd Sdng', 'YearRemodAdd|Exterior2nd_Plywood', 'YearBuilt|SaleCondition_Normal', 'TotalBsmtSF|CentralAir_N', 'Functional_Tencode|SaleCondition_Alloca', 'Functional_Tencode|BsmtFinType1_Unf', 'BsmtFinType2_GLQ|KitchenQual_Ex', 'LandSlope_Tencode|LotShape_IR3', 'HeatingQC_Gd|ExterQual_Gd', 'YrSold|SaleCondition_Partial', 'Alley_Pave|RoofStyle_Gambrel', 'GarageQual_Gd|Exterior2nd_Wd Sdng', 'Street_Tencode|GarageFinish_Tencode', 'Neighborhood_Somerst|ExterCond_Fa', 'PoolArea|Fence_MnWw', 'LotShape_Reg|BsmtFinType2_ALQ', 'MiscFeature_Othr|GarageArea', 'Condition2_Tencode|Foundation_CBlock', 'BsmtFinType2_BLQ|RoofStyle_Shed', 'GarageCond_Tencode|GarageYrBlt', 'MasVnrType_BrkCmn|Neighborhood_Timber', 'Neighborhood_Blmngtn|HeatingQC_Tencode', 'GarageType_Detchd|Fence_GdPrv', 'LotShape_IR2|FireplaceQu_Fa', 'BsmtQual_Ex|HalfBath', 'Functional_Typ|GarageType_Basment', 'SaleType_ConLw|BsmtHalfBath', 'ExterQual_Ex|RoofMatl_WdShngl', 'Exterior2nd_AsbShng|Exterior1st_WdShing', 'ExterCond_Tencode|RoofStyle_Gambrel', 'BsmtFinType2_Rec|HouseStyle_SLvl', 'FireplaceQu_Tencode|OpenPorchSF', 'BsmtFinType2_Tencode|LandContour_Lvl', 'Exterior1st_HdBoard|Exterior2nd_Plywood', 'Condition1_Feedr|ExterQual_Ex', 'FireplaceQu_Ex|MSZoning_Tencode', 'Heating_GasW|KitchenQual_Tencode', 'Neighborhood_Blmngtn|FullBath', 'HeatingQC_Tencode|BsmtFinType2_LwQ', 'KitchenAbvGr|EnclosedPorch', 'YearBuilt|MasVnrArea', 'BsmtExposure_Tencode|BsmtCond_Po', 'RoofStyle_Tencode|MSZoning_RL', 'Foundation_BrkTil|SaleCondition_Partial', 'EnclosedPorch|ExterQual_Fa', 'FireplaceQu_Tencode|BsmtCond_TA', 'BsmtFinType2_GLQ|HouseStyle_SLvl', 'FireplaceQu_Po|BsmtFinSF1', 'BsmtFinType2_Tencode|BsmtCond_Fa', 'BldgType_2fmCon|SaleType_Tencode', 'Foundation_PConc|SaleType_COD', 'BldgType_Twnhs|MiscFeature_Othr', 'Alley_Pave|Fence_GdPrv', 'ExterQual_TA|Electrical_FuseF', 'GarageQual_Tencode|Exterior1st_BrkComm', 'EnclosedPorch|LandSlope_Gtl', 'LotShape_IR2|3SsnPorch', 'BsmtQual_Ex|BsmtQual_Gd', 'BldgType_Duplex|BsmtFinType2_Rec', 'BsmtQual_Ex|BsmtUnfSF', 'Neighborhood_Gilbert|Street_Pave', 'SaleType_ConLI|Alley_Grvl', 'Alley_Pave|HeatingQC_Ex', 'Electrical_FuseF|HouseStyle_2.5Unf', 'HouseStyle_Tencode|MSZoning_C (all)', 'LandSlope_Tencode|BsmtFinType1_Unf', 'ExterQual_TA|FullBath', 'ScreenPorch|Alley_Grvl', 'BldgType_Duplex|PavedDrive_Y', 'Exterior2nd_BrkFace|LotConfig_Inside', 'BsmtFinType2_Rec|SaleType_COD', 'SaleCondition_Family|BsmtCond_TA', 'Heating_Grav|Functional_Maj1', 'FullBath|BldgType_1Fam', 'Condition1_Artery|BldgType_2fmCon', 'LandSlope_Mod|BsmtCond_TA', 'Heating_GasA|Foundation_Stone', 'Exterior2nd_Plywood|HouseStyle_2Story', 'SaleType_ConLw|Neighborhood_Timber', 'ExterQual_Ex|CentralAir_Y', 'HouseStyle_1Story|FullBath', 'HouseStyle_2.5Unf|GarageYrBlt', 'SaleType_ConLw|TotRmsAbvGrd', 'Utilities_Tencode|Neighborhood_ClearCr', 'GarageType_Detchd|ExterCond_Tencode', 'Exterior1st_HdBoard|LandContour_Bnk', 'LandContour_Low|Condition1_Norm', 'Utilities_Tencode|ScreenPorch', 'LotConfig_FR2|Exterior1st_MetalSd', 'BsmtCond_Tencode|BsmtFinType1_GLQ', 'Functional_Typ|Neighborhood_NAmes', 'Foundation_Stone|Street_Pave', 'Exterior1st_CemntBd|GarageCond_Fa', 'MSSubClass|Street_Grvl', 'LandContour_HLS|RoofMatl_Tar&Grv', 'BsmtFinType1_Tencode|Neighborhood_NWAmes', 'Electrical_FuseF|Exterior2nd_Plywood', 'BsmtCond_Tencode|HouseStyle_SLvl', 'Neighborhood_Blmngtn|KitchenQual_TA', 'GarageQual_Gd|GarageCond_Fa', 'BsmtFinType2_Tencode|GarageType_Attchd', 'RoofMatl_Tar&Grv|RoofStyle_Shed', 'TotalBsmtSF|Neighborhood_Tencode', 'Exterior2nd_Tencode|BsmtCond_Gd', 'Neighborhood_Tencode|Functional_Maj1', 'Neighborhood_Somerst|BsmtQual_TA', 'LotConfig_FR2|SaleCondition_Alloca', 'Alley_Pave|Exterior2nd_Wd Shng', 'Neighborhood_ClearCr|2ndFlrSF', 'Alley_Pave|Condition1_PosA', 'YearBuilt|GarageFinish_RFn', 'KitchenQual_Ex|GarageYrBlt', 'GarageQual_TA|LotShape_IR3', 'GarageCond_TA|BsmtQual_Gd', 'GarageCond_Fa|Fence_GdWo', 'BsmtFinType2_Tencode|BsmtHalfBath', 'Electrical_FuseF|HouseStyle_2Story', 'FireplaceQu_Tencode|Exterior2nd_AsphShn', 'SaleType_WD|RoofStyle_Shed', 'GarageArea|PavedDrive_P', 'Fence_Tencode|LotConfig_Tencode', 'WoodDeckSF|GarageType_2Types', 'Heating_Grav|Exterior2nd_BrkFace', 'FullBath|Exterior1st_CemntBd', 'GarageQual_Gd|GarageCond_Tencode', 'BsmtFinType2_GLQ|OverallCond', 'ExterCond_TA|MoSold', 'ExterCond_Tencode|GarageCond_Fa', 'Fireplaces|Exterior2nd_MetalSd', 'SaleType_ConLI|Neighborhood_Sawyer', 'HouseStyle_Tencode|BsmtQual_Fa', 'RoofStyle_Gambrel|BsmtCond_Tencode', 'SaleCondition_Abnorml|CentralAir_N', 'YearRemodAdd|LotConfig_CulDSac', 'BsmtFinSF2|Foundation_Slab', 'TotalBsmtSF|HeatingQC_Fa', 'Condition1_PosN|ExterCond_Fa', 'GarageType_Basment|Neighborhood_BrkSide', 'Functional_Maj1|Neighborhood_Sawyer', 'Neighborhood_BrDale|1stFlrSF', 'SaleType_ConLD|MasVnrType_Stone', 'LotShape_IR1|Neighborhood_CollgCr', 'FullBath|Condition1_RRAn', 'RoofStyle_Hip|EnclosedPorch', 'Condition1_Artery|BsmtFinType1_ALQ', 'Heating_GasA|Fence_MnWw', 'Neighborhood_NridgHt|MSZoning_C (all)', 'FireplaceQu_Po|Neighborhood_Crawfor', 'BsmtHalfBath|BldgType_Tencode', 'GarageCond_TA|SaleType_ConLI', 'Alley_Tencode|Condition1_RRAn', 'MiscFeature_Othr|SaleCondition_Family', 'LandSlope_Tencode|Fence_GdPrv', 'ExterQual_TA|GarageFinish_RFn', 'ExterQual_TA|Neighborhood_IDOTRR', 'SaleType_ConLw|SaleCondition_Family', '2ndFlrSF|Exterior1st_VinylSd', 'Condition1_Tencode|Condition2_Norm', 'PavedDrive_Y|1stFlrSF', 'OverallQual|LowQualFinSF', 'HouseStyle_1Story|LotConfig_CulDSac', 'TotalBsmtSF|GarageQual_Tencode', 'BsmtFinType2_GLQ|MasVnrArea', 'YearRemodAdd|GarageCond_Gd', 'RoofStyle_Hip|CentralAir_Y', 'MasVnrType_None|Condition2_Norm', 'HouseStyle_SFoyer|PoolQC_Tencode', 'BsmtFinType1_ALQ|CentralAir_N', 'Condition1_Artery|BsmtFinSF2', 'Heating_GasW|BsmtCond_Gd', 'BedroomAbvGr|CentralAir_Tencode', 'Fireplaces', 'GarageQual_Fa', 'Exterior1st_AsbShng|BsmtQual_TA', 'LandContour_Tencode|PavedDrive_Y', 'BsmtFullBath|BsmtFinType2_LwQ', 'Functional_Mod|Neighborhood_MeadowV', 'Condition1_Tencode|BsmtCond_Fa', 'Neighborhood_NridgHt|HouseStyle_1.5Unf', 'SaleType_ConLw|Neighborhood_IDOTRR', 'Utilities_AllPub|Exterior1st_Wd Sdng', 'GrLivArea|HouseStyle_SLvl', 'KitchenQual_Fa|Exterior1st_Wd Sdng', 'YearRemodAdd|BldgType_Tencode', 'SaleCondition_Abnorml|BsmtFinType1_Unf', 'BldgType_2fmCon|GarageType_Basment', 'Utilities_Tencode|BsmtQual_Fa', 'LandContour_Low|ExterCond_TA', 'ExterQual_TA|Heating_GasA', 'MasVnrType_BrkCmn|BldgType_Tencode', 'Exterior1st_BrkFace|MiscVal', 'Exterior1st_HdBoard|SaleType_ConLI', 'Condition1_Artery|MSSubClass', 'PavedDrive_N|Exterior2nd_CmentBd', 'LandSlope_Tencode|PoolQC_Tencode', 'Exterior2nd_MetalSd|GarageQual_Tencode', 'HouseStyle_SFoyer|FireplaceQu_TA', 'KitchenAbvGr|LandSlope_Tencode', 'GarageQual_Fa|BsmtFinType1_Unf', 'GarageFinish_Tencode|MasVnrType_Tencode', 'GarageType_Detchd|OverallCond', 'BsmtExposure_Tencode|HouseStyle_2Story', 'LotConfig_Corner|SaleCondition_Alloca', 'Functional_Tencode|Condition1_Tencode', 'Neighborhood_Veenker|MSZoning_RL', 'Utilities_Tencode|RoofMatl_Tencode', 'YrSold|MSZoning_C (all)', 'Condition2_Tencode|Exterior2nd_Brk Cmn', 'BsmtFinType2_GLQ|BsmtQual_TA', 'PavedDrive_Y|PoolArea', 'LandSlope_Mod|ExterCond_Tencode', 'BsmtFinType2_GLQ|BldgType_TwnhsE', 'BsmtFinSF2|BsmtQual_Ex', 'Neighborhood_StoneBr|CentralAir_Tencode', 'Exterior1st_Stucco|MiscFeature_Tencode', 'GarageCond_Fa|BsmtFinType2_Unf', 'GrLivArea|BldgType_Twnhs', 'LotShape_Tencode|BsmtFullBath', 'GarageType_Tencode|Exterior1st_Wd Sdng', 'PavedDrive_N|ExterCond_TA', 'LandContour_HLS|BedroomAbvGr', 'LotConfig_Tencode', 'ExterQual_Gd|SaleCondition_Abnorml', 'Condition2_Artery|Exterior2nd_Plywood', 'FireplaceQu_Gd|Exterior1st_Plywood', 'HeatingQC_TA|SaleType_CWD', 'Functional_Min1|KitchenQual_TA', 'BsmtFinType1_BLQ|LotConfig_Tencode', 'FullBath|YearBuilt', 'SaleType_ConLw|Condition1_Tencode', 'OverallQual|Exterior2nd_MetalSd', 'BsmtExposure_Av|PavedDrive_P', 'Neighborhood_Tencode|2ndFlrSF', 'RoofMatl_CompShg|LotConfig_CulDSac', 'LotShape_Tencode|BsmtQual_Fa', 'Exterior1st_AsbShng|KitchenQual_Tencode', 'Foundation_PConc|BsmtQual_TA', 'HouseStyle_Tencode|GarageQual_Po', 'LandSlope_Sev|Condition1_PosA', 'Fence_Tencode|BsmtFinType1_LwQ', 'Condition1_RRAe|2ndFlrSF', 'Neighborhood_NAmes|LotShape_IR3', 'CentralAir_Y|Neighborhood_SawyerW', 'Electrical_FuseP|BsmtCond_TA', 'HouseStyle_1.5Unf|Neighborhood_Crawfor', 'GarageQual_Gd|SaleCondition_Alloca', 'Foundation_Stone|GarageCond_Tencode', 'Neighborhood_NPkVill|BsmtFinType2_BLQ', 'Exterior1st_WdShing|WoodDeckSF', 'BedroomAbvGr|Neighborhood_IDOTRR', 'FullBath|MSSubClass', 'MSZoning_RM|MasVnrType_Tencode', 'TotRmsAbvGrd|Exterior1st_Tencode', 'GarageFinish_Fin|SaleType_New', 'Fence_GdPrv|Condition1_PosA', 'Exterior1st_Plywood|WoodDeckSF', 'Exterior2nd_CmentBd|ScreenPorch', 'GarageType_Detchd|BsmtExposure_Mn', 'Exterior1st_BrkFace|FireplaceQu_TA', 'Exterior1st_HdBoard|RoofMatl_CompShg', 'GarageQual_TA|KitchenQual_Tencode', 'LotConfig_FR2|Condition1_PosA', 'RoofMatl_WdShngl|BsmtExposure_Mn', 'ExterQual_TA|HalfBath', 'Exterior2nd_Stone|Condition1_Feedr', 'BsmtQual_Tencode|ExterCond_Fa', 'Heating_Tencode|Functional_Min1', 'BsmtFinType1_BLQ|HouseStyle_1.5Unf', 'Foundation_PConc|KitchenQual_Tencode', 'Functional_Tencode|BsmtFinType2_Rec', 'BsmtFinSF2|Neighborhood_MeadowV', 'FireplaceQu_Gd|BsmtQual_Ex', 'Exterior2nd_CmentBd|MasVnrType_Stone', 'HouseStyle_SFoyer|ScreenPorch', 'FireplaceQu_Tencode|SaleType_Oth', 'Alley_Tencode|MiscFeature_Othr', 'GarageCars|Utilities_AllPub', 'ExterQual_Fa|LotConfig_Inside', 'LowQualFinSF|Exterior1st_BrkComm', 'GarageType_Detchd|Exterior1st_AsbShng', 'SaleType_ConLI|HouseStyle_1.5Fin', 'RoofMatl_Tencode|TotalBsmtSF', 'BldgType_Duplex|LandSlope_Gtl', 'ExterQual_TA|Exterior1st_MetalSd', 'YrSold|LandContour_HLS', 'LandSlope_Sev|MSZoning_RH', 'Street_Tencode|LotConfig_Inside', 'LandSlope_Sev|HalfBath', 'ExterQual_Tencode', 'BsmtQual_Ex|Functional_Maj1', 'RoofStyle_Hip|Neighborhood_NWAmes', 'GarageType_Attchd|SaleCondition_Partial', 'Exterior2nd_BrkFace|GarageQual_Tencode', 'PavedDrive_Y|BsmtCond_Gd', 'MiscVal|BsmtQual_Gd', 'LandSlope_Tencode|PavedDrive_P', 'BsmtExposure_Tencode|SaleType_WD', 'GarageCars|CentralAir_Tencode', 'BsmtQual_Fa|Neighborhood_BrkSide', 'LotShape_Reg|Functional_Maj2', 'LotShape_IR2|GarageCond_Ex', 'LotShape_IR2|MSZoning_FV', 'Neighborhood_NoRidge|PoolArea', 'RoofMatl_WdShngl', 'BsmtFinSF1|Neighborhood_SawyerW', 'Neighborhood_Crawfor|Neighborhood_MeadowV', 'MiscFeature_Othr|Fence_Tencode', 'KitchenQual_Tencode|GarageCond_Ex', 'LowQualFinSF|HouseStyle_SLvl', 'YrSold|PavedDrive_Tencode', 'Exterior2nd_Stone|MSZoning_RH', 'Fireplaces|Fence_MnPrv', 'GarageCond_Tencode|LandContour_Bnk', 'LotShape_IR1|WoodDeckSF', 'LandSlope_Sev|Neighborhood_NWAmes', 'LandSlope_Mod|Street_Grvl', 'LandContour_Low|FireplaceQu_TA', 'TotalBsmtSF|Condition1_Feedr', 'GarageType_Detchd|Exterior2nd_Stucco', 'Neighborhood_NPkVill|GarageCars', 'BsmtQual_Gd', 'Alley_Pave|Neighborhood_Crawfor', 'Neighborhood_NPkVill|GarageQual_Po', 'Electrical_FuseF|Exterior1st_MetalSd', 'Electrical_FuseP|BsmtFinType1_Rec', 'HouseStyle_SFoyer|ExterCond_Fa', 'RoofMatl_Tencode|Neighborhood_Mitchel', 'BsmtUnfSF|FireplaceQu_TA', 'Fence_Tencode|2ndFlrSF', 'GarageCond_Tencode|ExterQual_Ex', 'BsmtFinType2_Rec|PoolArea', 'Neighborhood_OldTown|BldgType_TwnhsE', 'GarageQual_Fa|GarageType_BuiltIn', 'CentralAir_Tencode|RoofMatl_WdShngl', 'LandSlope_Sev|BsmtFinType1_Rec', 'HeatingQC_TA|FireplaceQu_Fa', 'Neighborhood_Blmngtn|FireplaceQu_Ex', 'Neighborhood_NridgHt|MSZoning_FV', 'BsmtFinType1_BLQ|RoofStyle_Shed', 'BsmtExposure_Tencode|LotConfig_FR2', 'BsmtExposure_Gd|MasVnrType_BrkFace', 'LotShape_IR3|Exterior2nd_Plywood', 'Alley_Tencode|LandSlope_Mod', 'FireplaceQu_Po|GarageQual_Po', 'TotRmsAbvGrd|MasVnrType_BrkFace', 'SaleCondition_Partial|Exterior1st_Wd Sdng', 'Exterior2nd_BrkFace|BsmtQual_Fa', 'GarageType_Attchd|Fence_MnWw', 'BsmtFinType1_LwQ|LotConfig_Inside', 'Neighborhood_BrDale|Fence_MnPrv', 'Neighborhood_Blmngtn|2ndFlrSF', 'Heating_Tencode|GarageCond_Fa', 'LotShape_Tencode|BsmtFinType2_LwQ', 'BsmtFinType2_Rec|Exterior1st_Wd Sdng', 'GarageCond_Po|Functional_Typ', 'Electrical_Tencode|BsmtFinSF2', 'PoolQC_Tencode|SaleCondition_Partial', 'Neighborhood_NridgHt|HouseStyle_1Story', 'Fence_GdWo|Exterior1st_VinylSd', 'GarageFinish_Unf|Neighborhood_Sawyer', 'Neighborhood_SWISU|MiscFeature_Shed', 'Utilities_Tencode|LotConfig_Corner', 'RoofStyle_Hip|KitchenQual_Tencode', 'SaleType_Oth|HouseStyle_1.5Fin', 'RoofMatl_Tencode|3SsnPorch', 'Heating_Grav|BsmtExposure_No', 'LotFrontage|MasVnrType_Tencode', 'Neighborhood_Tencode|HeatingQC_Ex', 'Condition1_Artery|HeatingQC_Fa', 'BsmtFinType2_Unf|KitchenQual_TA', 'RoofMatl_Tencode|GarageFinish_RFn', 'BsmtFinType2_BLQ|BsmtUnfSF', 'YearRemodAdd|RoofMatl_WdShngl', 'Neighborhood_NAmes|Street_Grvl', 'SaleType_ConLD|CentralAir_Tencode', 'Electrical_FuseF|CentralAir_N', 'SaleCondition_Abnorml|HouseStyle_1.5Fin', 'EnclosedPorch|BsmtFinType2_Rec', 'HeatingQC_Ex|TotRmsAbvGrd', 'HouseStyle_SLvl|Exterior1st_Tencode', 'SaleCondition_Normal|Neighborhood_IDOTRR', 'Exterior2nd_Stucco|MSZoning_Tencode', 'PavedDrive_N|RoofMatl_CompShg', 'RoofStyle_Flat|PavedDrive_Y', 'LotConfig_FR2|GarageQual_Tencode', 'TotalBsmtSF|BsmtFinType2_LwQ', 'Fireplaces|GarageCond_Gd', 'FireplaceQu_Tencode|Neighborhood_ClearCr', 'Condition1_Feedr|LandSlope_Gtl', 'GarageFinish_Fin|RoofMatl_CompShg', 'Fireplaces|Neighborhood_Edwards', 'BldgType_Duplex|SaleType_Tencode', 'HouseStyle_SLvl|Foundation_Slab', 'Neighborhood_Tencode|ScreenPorch', 'Neighborhood_Mitchel|BsmtExposure_No', 'MSSubClass|CentralAir_Tencode', 'Neighborhood_Blmngtn|BsmtFinType2_Tencode', 'HeatingQC_Ex|KitchenQual_Tencode', 'Exterior2nd_Stucco|Condition1_Tencode', 'Electrical_FuseP|Functional_Mod', 'LandContour_Low|MiscFeature_Shed', 'Functional_Typ|BsmtFinType2_ALQ', 'Exterior1st_Stucco|LotConfig_CulDSac', 'HeatingQC_Gd', 'SaleType_ConLI|Neighborhood_StoneBr', 'GarageQual_TA|Neighborhood_Sawyer', 'HeatingQC_Fa|LandContour_Tencode', 'Exterior2nd_Tencode|HouseStyle_1.5Unf', 'Exterior1st_BrkFace|BsmtFinType2_Rec', 'Condition1_Artery|Condition2_Norm', 'Electrical_FuseA|KitchenQual_Ex', 'BldgType_Twnhs|Functional_Min1', 'Neighborhood_NPkVill|2ndFlrSF', 'RoofStyle_Hip|Neighborhood_Somerst', 'Functional_Tencode|Neighborhood_SawyerW', 'GarageCond_Gd|HouseStyle_1.5Fin', 'Functional_Mod|SaleType_Oth', 'BsmtFinType1_BLQ|MiscFeature_Othr', 'HouseStyle_1Story|GarageCars', 'GarageType_Basment|Street_Grvl', 'Exterior2nd_AsbShng|Exterior1st_Plywood', 'Alley_Pave|Exterior1st_MetalSd', 'BsmtQual_Tencode|GarageCond_Gd', 'Exterior1st_Stucco|MSZoning_RH', 'GarageType_CarPort|GarageQual_Tencode', 'FireplaceQu_Fa|SaleType_COD', 'YrSold|LandSlope_Tencode', 'Neighborhood_Veenker|Exterior2nd_Brk Cmn', 'Neighborhood_BrDale|HeatingQC_TA', 'GarageFinish_Fin|BsmtFinType1_ALQ', 'MSZoning_Tencode|MSZoning_FV', 'Heating_Grav|Exterior1st_Tencode', 'Functional_Maj2|MSZoning_RL', 'Exterior2nd_BrkFace|SaleType_Tencode', 'Electrical_FuseA|BsmtFullBath', 'BsmtExposure_Av|Neighborhood_Crawfor', 'GarageCond_Tencode|ExterQual_Tencode', 'HouseStyle_Tencode|Exterior2nd_Tencode', 'GarageFinish_RFn|MSZoning_RH', 'Neighborhood_Gilbert|Neighborhood_Timber', 'PoolArea|CentralAir_Tencode', 'MSZoning_Tencode|HouseStyle_1.5Fin', 'TotalBsmtSF|MiscVal', 'FireplaceQu_Ex|Exterior1st_MetalSd', 'GarageQual_Gd|Functional_Maj1', 'Condition2_Tencode|RoofStyle_Gambrel', 'BldgType_2fmCon|BsmtExposure_Gd', 'Condition1_RRAe|Functional_Min1', 'ExterQual_TA|GarageQual_Po', 'BsmtCond_Po|Utilities_AllPub', 'Fireplaces|Condition2_Tencode', 'Exterior1st_Stucco|SaleCondition_Alloca', 'Condition1_Artery|Neighborhood_Timber', 'Condition1_Feedr|PavedDrive_P', 'RoofStyle_Gable|BsmtCond_Fa', 'LotShape_IR1|MiscFeature_Othr', 'TotalBsmtSF|Alley_Pave', 'YearRemodAdd|GarageType_Tencode', 'Exterior2nd_Wd Shng|Street_Pave', 'Neighborhood_ClearCr|Neighborhood_Tencode', 'Heating_Grav|MSZoning_RH', 'Neighborhood_BrDale|BsmtExposure_Mn', 'GarageType_Attchd|BsmtCond_Po', 'FullBath|Neighborhood_StoneBr', 'FireplaceQu_Fa|MSZoning_FV', 'SaleType_New|GarageCond_Ex', 'HalfBath|Street_Pave', 'ExterCond_TA|Neighborhood_MeadowV', 'LandContour_HLS|ExterCond_Gd', 'BldgType_Tencode|Functional_Min2', 'GarageCars|SaleCondition_Normal', 'RoofStyle_Hip|Fence_Tencode', 'BsmtQual_Ex|Utilities_AllPub', 'Neighborhood_ClearCr|MasVnrType_BrkCmn', 'Neighborhood_Mitchel|HouseStyle_1.5Fin', 'BsmtCond_Gd|MSZoning_FV', 'Functional_Mod|MiscFeature_Tencode', 'RoofMatl_Tencode|Exterior2nd_Tencode', 'Exterior2nd_BrkFace|TotRmsAbvGrd', 'RoofStyle_Gambrel|Exterior2nd_CmentBd', 'Neighborhood_NPkVill|LotConfig_FR2', 'Electrical_FuseP|LotConfig_FR2', 'GarageCond_Gd|SaleCondition_Normal', 'Foundation_PConc|Neighborhood_SWISU', 'YearBuilt|SaleType_New', 'Neighborhood_StoneBr|ScreenPorch', 'SaleType_Tencode|BsmtFinType2_Unf', 'HouseStyle_1Story|GarageType_Tencode', 'HeatingQC_Tencode|Neighborhood_NWAmes', 'BsmtExposure_Tencode|BsmtExposure_No', 'Condition1_Artery|HouseStyle_2Story', 'GarageCond_TA|BsmtQual_Tencode', 'ExterCond_Tencode|WoodDeckSF', 'GarageCond_Gd', 'RoofStyle_Gambrel|PoolArea', 'Foundation_PConc|SaleType_CWD', 'Exterior2nd_Stone|SaleCondition_Abnorml', 'BsmtQual_Fa|GarageType_CarPort', 'KitchenQual_Gd|OpenPorchSF', 'Exterior1st_Stucco|LandContour_Bnk', 'Neighborhood_NridgHt|Exterior1st_Wd Sdng', 'LotConfig_FR2|Street_Grvl', 'LandContour_HLS|BsmtCond_Tencode', 'MiscFeature_Tencode|BsmtExposure_Mn', 'GarageQual_Fa|BsmtCond_TA', 'LotArea|LandContour_Lvl', 'YrSold|Neighborhood_IDOTRR', 'RoofStyle_Gable|HouseStyle_2Story', 'Neighborhood_CollgCr|Exterior2nd_BrkFace', 'Neighborhood_NAmes|Exterior1st_BrkComm', 'Functional_Typ|PoolQC_Tencode', 'PavedDrive_Tencode|MasVnrArea', 'GarageFinish_Fin|MSZoning_Tencode', 'Neighborhood_ClearCr|LandContour_Bnk', 'Condition1_RRAe|GarageQual_Tencode', 'SaleCondition_Normal|LotShape_IR3', 'MasVnrType_BrkFace|BsmtCond_Fa', 'GarageQual_Fa|MSZoning_RL', 'GarageCond_TA|LandContour_Bnk', 'Functional_Tencode|Exterior1st_VinylSd', 'GarageType_Attchd|BsmtExposure_Av', 'LotShape_IR2|BsmtQual_Tencode', 'Neighborhood_Crawfor|Street_Grvl', 'Alley_Pave|SaleCondition_Alloca', 'GarageQual_Po|BsmtCond_Gd', 'MSZoning_Tencode|HouseStyle_SLvl', 'Condition1_Feedr|ExterCond_Fa', 'Exterior2nd_BrkFace|Condition1_Feedr', 'Exterior1st_BrkFace|PoolQC_Tencode', 'HeatingQC_Tencode|PoolArea', 'LotArea|SaleType_COD', 'ExterQual_Tencode|Street_Pave', 'HeatingQC_Ex|SaleType_CWD', 'Neighborhood_Blmngtn|GarageCond_Fa', 'Condition1_RRAn|Neighborhood_BrkSide', 'ExterCond_TA|OverallCond', 'GarageCars|GarageType_BuiltIn', 'Electrical_SBrkr|OpenPorchSF', 'SaleType_WD|GarageType_2Types', 'BsmtFullBath|BsmtCond_Po', 'Heating_GasW|LotShape_IR3', 'FireplaceQu_Fa|Neighborhood_BrkSide', 'RoofStyle_Flat|KitchenQual_Gd', 'MasVnrType_BrkCmn|Neighborhood_MeadowV', 'Alley_Pave|BsmtCond_Tencode', 'RoofStyle_Gable|GarageYrBlt', 'FullBath|Electrical_SBrkr', 'PavedDrive_Tencode|BldgType_TwnhsE', 'GarageQual_Po|WoodDeckSF', 'SaleCondition_Abnorml|Neighborhood_BrkSide', 'FireplaceQu_Gd|Neighborhood_SawyerW', 'Neighborhood_SWISU|Condition2_Norm', 'LotFrontage|Electrical_Tencode', 'YrSold|Exterior2nd_Plywood', 'HeatingQC_Tencode|Foundation_CBlock', 'Exterior1st_Stucco|MSZoning_Tencode', 'LotShape_Reg|GarageCond_TA', 'Heating_GasA|BsmtFinType1_Rec', '3SsnPorch|LotConfig_Tencode', 'Exterior1st_BrkFace|Exterior2nd_Brk Cmn', 'BsmtExposure_Tencode|Exterior1st_Wd Sdng', 'Exterior1st_AsbShng|CentralAir_Tencode', 'GarageCond_Gd|CentralAir_Y', 'GarageQual_TA|GarageType_2Types', 'BsmtFinType2_Tencode|Functional_Typ', 'Foundation_PConc|Alley_Pave', 'ExterQual_TA|Exterior2nd_Wd Shng', 'Condition1_Artery|Neighborhood_IDOTRR', 'YrSold|BsmtFinSF2', 'CentralAir_Y|GarageType_2Types', 'YrSold|BsmtFinType1_Rec', 'GarageCond_Gd|Alley_Grvl', 'Exterior2nd_AsphShn|Neighborhood_MeadowV', 'Heating_GasW|Street_Pave', 'LotShape_IR1|Functional_Maj2', 'Condition1_RRAe|LotConfig_Tencode', 'Neighborhood_Veenker|Neighborhood_NAmes', 'Exterior1st_BrkFace|MoSold', 'MasVnrType_BrkFace|Foundation_Slab', 'Neighborhood_Gilbert|GarageQual_Tencode', 'Fireplaces|BsmtExposure_Av', 'PavedDrive_N|ExterCond_Gd', 'LandSlope_Tencode|FireplaceQu_Ex', 'KitchenQual_Ex|Fence_GdPrv', 'RoofMatl_CompShg|Neighborhood_Tencode', 'Condition1_PosA|Exterior1st_Tencode', 'PavedDrive_Y|CentralAir_Y', 'Neighborhood_Tencode|GarageType_CarPort', 'GarageFinish_Unf|SaleType_New', 'Exterior2nd_VinylSd|Heating_GasW', 'Street_Pave|Exterior2nd_AsphShn', 'Heating_Grav|Neighborhood_CollgCr', 'Electrical_Tencode|Exterior2nd_MetalSd', 'LandSlope_Gtl|Exterior1st_VinylSd', 'Electrical_FuseA|Fence_MnPrv', 'Neighborhood_SWISU|Condition2_Artery', 'MiscFeature_Othr|Exterior1st_Tencode', 'LowQualFinSF|SaleType_New', 'BsmtFinType2_Rec|MasVnrArea', 'Condition1_Norm|BldgType_1Fam', 'HouseStyle_SFoyer|Fireplaces', 'Heating_Tencode|MiscFeature_Shed', 'Fence_GdPrv|OverallCond', 'ExterQual_Ex|FireplaceQu_TA', 'RoofStyle_Flat|Foundation_CBlock', 'Fence_Tencode|ExterQual_Fa', 'BsmtFinType2_Rec|BsmtUnfSF', 'RoofMatl_Tar&Grv|HouseStyle_2.5Unf', 'BldgType_2fmCon|Neighborhood_OldTown', 'FullBath|HouseStyle_Tencode', 'BsmtFinSF1|Alley_Grvl', 'BldgType_2fmCon|GarageCond_Ex', 'Neighborhood_NridgHt|PavedDrive_Tencode', 'KitchenQual_Ex|RoofStyle_Gambrel', 'Exterior1st_CemntBd|Neighborhood_Crawfor', 'LotConfig_Corner|FireplaceQu_Po', 'HeatingQC_Tencode|Fence_MnWw', 'GarageType_Attchd|MasVnrType_Tencode', 'GarageType_Tencode|OpenPorchSF', 'BsmtFinType2_ALQ|Neighborhood_Edwards', 'Fence_GdWo|Exterior1st_BrkComm', 'GarageType_BuiltIn|Exterior1st_BrkComm', 'TotalBsmtSF|ScreenPorch', 'Exterior2nd_BrkFace|Condition2_Tencode', 'HouseStyle_1Story|PoolQC_Tencode', 'KitchenQual_Gd|MiscFeature_Shed', 'RoofMatl_Tencode|MSZoning_C (all)', 'BsmtFinType1_BLQ|Condition1_PosN', 'SaleCondition_Abnorml|Exterior2nd_HdBoard', 'Foundation_Stone|ExterQual_Gd', 'HeatingQC_Ex|BsmtFinType1_Rec', 'YearBuilt|BsmtFinType1_Unf', 'LotConfig_Corner|GarageType_2Types', 'GarageCond_Fa|Exterior2nd_HdBoard', 'LotShape_Reg|CentralAir_Y', 'GarageFinish_Fin|Neighborhood_Timber', 'BedroomAbvGr|BsmtFinType1_ALQ', 'Condition1_Artery|ExterQual_Gd', '3SsnPorch|MSZoning_RL', 'Neighborhood_NPkVill|SaleType_CWD', 'LotConfig_FR2|MiscFeature_Gar2', 'YrSold|SaleType_WD', '1stFlrSF|PoolArea', 'BsmtFinType2_ALQ|Exterior2nd_MetalSd', 'ExterQual_Ex|FireplaceQu_Ex', 'PavedDrive_N|Condition1_PosN', 'Fence_Tencode|BsmtUnfSF', 'Neighborhood_NoRidge|Exterior2nd_Wd Shng', 'Neighborhood_NridgHt|BsmtHalfBath', 'GarageType_BuiltIn|Condition1_Feedr', 'Electrical_FuseA|ScreenPorch', 'KitchenAbvGr|GarageCond_TA', 'Neighborhood_BrDale|FireplaceQu_Gd', 'LotShape_Reg|HouseStyle_Tencode', 'MiscFeature_Tencode|ExterQual_Gd', 'BsmtFullBath|Exterior2nd_MetalSd', 'BsmtCond_Gd|Exterior1st_Wd Sdng', 'MiscFeature_Othr|Condition1_Feedr', 'RoofStyle_Gambrel|SaleType_New', 'LotShape_Tencode|Exterior1st_Plywood', 'LandContour_Lvl|Utilities_AllPub', 'LotFrontage|BsmtFinType1_ALQ', 'LotConfig_Tencode|GarageCond_Ex', 'Electrical_Tencode|3SsnPorch', 'ExterQual_TA', 'RoofMatl_Tencode|LandContour_HLS', 'GarageFinish_Tencode|BsmtFinType1_Unf', 'Exterior2nd_AsbShng|FireplaceQu_Gd', 'EnclosedPorch|Neighborhood_ClearCr', 'HeatingQC_Fa|Condition2_Artery', 'RoofMatl_CompShg|BsmtQual_Ex', 'Condition2_Artery|LotShape_IR3', 'MSZoning_RM|HouseStyle_1.5Fin', 'HeatingQC_Gd|MiscVal', 'Fireplaces|GarageQual_Po', 'LotFrontage|BldgType_TwnhsE', 'BedroomAbvGr|Electrical_FuseF', 'PavedDrive_Y|Functional_Min1', 'Neighborhood_Mitchel|Electrical_SBrkr', 'MoSold|RoofStyle_Tencode', 'HeatingQC_Tencode|CentralAir_Tencode', 'LandSlope_Tencode|BsmtExposure_Av', 'PavedDrive_Tencode|Condition2_Tencode', 'LotConfig_Tencode|SaleType_Oth', 'Neighborhood_Blmngtn|BsmtFinType2_LwQ', 'BsmtExposure_Tencode|Neighborhood_OldTown', 'RoofStyle_Hip|LotConfig_CulDSac', 'Exterior1st_Stucco|MiscFeature_Shed', 'SaleType_ConLI|BsmtCond_Po', 'LotConfig_CulDSac|Condition2_Norm', 'Neighborhood_ClearCr|GarageQual_TA', 'BsmtFinType2_Tencode|Alley_Pave', 'PavedDrive_N|MasVnrType_Tencode', 'HouseStyle_SFoyer|YearBuilt', 'BsmtFinType1_Tencode|Electrical_FuseA', 'Functional_Typ|Exterior2nd_Wd Sdng', 'GarageCond_TA|Functional_Tencode', 'SaleType_Oth|RoofMatl_WdShngl', 'Exterior2nd_VinylSd|GarageQual_Tencode', 'Functional_Tencode|MasVnrType_BrkFace', 'SaleCondition_Family|SaleType_WD', 'FireplaceQu_TA|GarageYrBlt', 'Neighborhood_Somerst|Exterior2nd_Wd Shng', 'RoofStyle_Tencode|ExterQual_Fa', 'HeatingQC_Tencode|SaleType_New', 'Exterior2nd_HdBoard|Utilities_AllPub', 'HalfBath|MSZoning_FV', 'RoofStyle_Hip|SaleType_ConLw', 'MSZoning_C (all)|Condition1_RRAe', 'BsmtFinType2_Tencode|LotConfig_Inside', 'Street_Tencode|GarageQual_Fa', 'RoofStyle_Hip|Neighborhood_Crawfor', 'LandSlope_Sev|Street_Pave', 'BsmtExposure_Tencode|BsmtFinType2_LwQ', 'BldgType_TwnhsE|Exterior1st_VinylSd', 'EnclosedPorch|WoodDeckSF', 'Electrical_Tencode|SaleType_CWD', 'ExterQual_Tencode|Neighborhood_BrkSide', 'Exterior2nd_BrkFace|Functional_Mod', 'MSZoning_C (all)|MiscFeature_Tencode', 'GarageFinish_Fin|SaleType_COD', 'BedroomAbvGr|Exterior2nd_CmentBd', 'LotShape_IR2|Foundation_Slab', 'Condition1_Artery|GarageCond_Gd', 'Fence_GdPrv|Condition1_Tencode', '1stFlrSF|Utilities_AllPub', 'GarageCars|MasVnrType_BrkCmn', 'BsmtFinType1_BLQ|GarageCond_Fa', '3SsnPorch|MiscFeature_Tencode', 'Street_Tencode|Neighborhood_NAmes', 'HouseStyle_1.5Unf|Exterior1st_CemntBd', 'LandSlope_Sev|BsmtCond_Fa', 'RoofMatl_CompShg|Heating_GasW', 'BldgType_Twnhs|MSZoning_Tencode', 'GarageCars|Exterior1st_Stucco', 'GarageCond_Po|Street_Pave', 'LotShape_Tencode|LotFrontage', 'Exterior2nd_Stone|Neighborhood_Somerst', 'BsmtFinType1_BLQ|Functional_Min2', 'SaleCondition_Alloca|HouseStyle_2.5Unf', 'TotalBsmtSF|BsmtExposure_Gd', 'SaleType_ConLw|Exterior1st_VinylSd', 'GarageCond_Po|BsmtFinSF2', 'Electrical_FuseF|Neighborhood_Gilbert', 'Electrical_FuseP|BsmtExposure_Gd', 'Functional_Maj1|Condition1_RRAn', 'GarageCond_Fa|GarageType_Basment', 'FireplaceQu_Po|CentralAir_N', 'Functional_Tencode|BldgType_1Fam', 'BsmtCond_Gd|Neighborhood_SawyerW', 'SaleType_New|BsmtFinType1_Unf', 'BsmtFinSF2|SaleType_New', 'ExterCond_TA|Heating_Tencode', 'GarageQual_Fa|MSZoning_RM', 'LotArea|RoofStyle_Tencode', 'Heating_GasA|Alley_Tencode', 'SaleType_CWD|Foundation_Slab', 'BsmtFullBath|MasVnrType_Stone', '1stFlrSF|Fence_GdWo', 'Functional_Mod|SaleCondition_Partial', 'RoofMatl_CompShg|Neighborhood_Edwards', 'Exterior1st_BrkFace|Neighborhood_CollgCr', 'Foundation_Tencode|SaleType_WD', 'Exterior1st_BrkFace|1stFlrSF', 'Neighborhood_Veenker|PoolQC_Tencode', 'FireplaceQu_Fa|Foundation_Slab', 'Fence_GdPrv|KitchenQual_TA', 'LowQualFinSF|BsmtCond_TA', 'Functional_Maj1|Functional_Min2', 'GarageQual_Gd|Neighborhood_Crawfor', 'GarageType_Tencode|PavedDrive_Y', 'Electrical_FuseF|BsmtCond_Gd', 'RoofStyle_Tencode|SaleCondition_Abnorml', 'BsmtQual_Tencode|Functional_Min2', 'LotConfig_Corner|GarageType_Attchd', 'HeatingQC_TA|BsmtFinType2_Rec', 'ExterCond_Tencode|Utilities_AllPub', 'Neighborhood_ClearCr|YearBuilt', 'GarageQual_Tencode|Exterior1st_Plywood', 'HalfBath|ExterCond_Tencode', 'Neighborhood_NoRidge|Neighborhood_Veenker', 'Condition1_Feedr|KitchenQual_Fa', 'HeatingQC_TA|SaleType_WD', 'RoofMatl_Tencode|Exterior1st_BrkComm', 'Heating_GasA|Neighborhood_Gilbert', 'Exterior1st_BrkFace|RoofStyle_Hip', 'SaleType_WD|ExterQual_Tencode', 'LandSlope_Sev|BsmtQual_Ex', 'MiscFeature_Othr|SaleCondition_Partial', 'Electrical_FuseP|Foundation_Slab', 'MiscVal|Neighborhood_SawyerW', 'LotShape_IR2|Neighborhood_Mitchel', 'Condition1_Norm|MSZoning_RL', 'Neighborhood_Somerst|Exterior1st_VinylSd', 'SaleType_ConLD|Neighborhood_Veenker', 'Exterior1st_AsbShng|MasVnrType_None', 'MSZoning_FV|WoodDeckSF', 'Exterior2nd_CmentBd|Exterior1st_BrkComm', 'RoofStyle_Hip|GarageCond_Tencode', 'BsmtUnfSF|MasVnrType_BrkFace', 'Condition2_Artery|GarageFinish_RFn', 'EnclosedPorch|BldgType_Tencode', 'Condition1_Artery|Condition1_RRAe', 'BsmtQual_Fa|FireplaceQu_Fa', 'BsmtFinType1_Rec|MiscFeature_Shed', 'Neighborhood_Gilbert|CentralAir_N', 'Foundation_Stone|GarageYrBlt', 'GarageCond_Po|KitchenQual_Tencode', 'EnclosedPorch|Neighborhood_Tencode', 'LandSlope_Sev|Condition1_Tencode', 'EnclosedPorch|Neighborhood_Edwards', 'Exterior2nd_Tencode|RoofMatl_Tar&Grv', 'LotConfig_FR2|Foundation_Slab', 'SaleType_ConLI|BsmtCond_TA', 'SaleCondition_Alloca|RoofStyle_Tencode', 'GarageCars|SaleType_ConLD', 'MiscVal|1stFlrSF', 'GarageType_Detchd|Neighborhood_SawyerW', 'KitchenQual_Gd|SaleType_Oth', 'LandContour_Bnk|Neighborhood_Gilbert', 'Neighborhood_Somerst|CentralAir_Y', 'FullBath|Neighborhood_Tencode', 'Foundation_Stone|Neighborhood_NWAmes', 'Foundation_Stone|Fence_MnPrv', 'BsmtQual_Ex|HouseStyle_1.5Fin', '3SsnPorch|1stFlrSF', 'RoofMatl_Tencode|Condition1_Feedr', 'Foundation_Stone|GarageCond_Fa', 'TotalBsmtSF|BsmtQual_Gd', 'Functional_Maj1|BsmtExposure_Mn', 'LotConfig_Tencode|BsmtExposure_Mn', 'MiscFeature_Shed|FireplaceQu_Ex', 'SaleType_ConLw|Condition2_Tencode', 'YearRemodAdd|SaleCondition_Alloca', 'SaleCondition_Family|Functional_Min1', 'Utilities_Tencode|HouseStyle_1Story', 'FireplaceQu_Tencode|BldgType_2fmCon', 'HouseStyle_1.5Unf|GarageFinish_RFn', 'LowQualFinSF|MasVnrType_Stone', 'Street_Tencode|HouseStyle_1.5Fin', 'BsmtQual_Tencode|Condition2_Artery', 'GarageCond_TA|Foundation_Stone', 'BsmtFinType2_Tencode|ExterCond_TA', 'FireplaceQu_Ex|KitchenQual_Fa', 'Foundation_PConc|PoolQC_Tencode', 'MasVnrArea|BsmtExposure_Mn', 'RoofStyle_Hip|ExterQual_Gd', 'YrSold|RoofMatl_Tencode', 'LandContour_Tencode|Condition1_RRAe', 'YrSold|LotConfig_Inside', 'BldgType_Tencode|MSZoning_RH', 'BsmtFinType2_GLQ|Foundation_Tencode', 'FireplaceQu_Tencode|BsmtFinType1_Tencode', 'YearRemodAdd|Condition1_RRAe', 'Exterior1st_HdBoard|Condition2_Tencode', 'RoofMatl_Tar&Grv|BsmtCond_Fa', 'Neighborhood_CollgCr|GarageQual_Tencode', 'LotConfig_Tencode|OverallCond', 'LandSlope_Mod|MSZoning_FV', 'MSZoning_RH|Exterior2nd_AsphShn', 'LotShape_Tencode|BsmtFinSF2', 'KitchenQual_Ex|Exterior2nd_VinylSd', 'RoofStyle_Hip|MiscFeature_Shed', 'LandSlope_Sev|LandContour_Tencode', 'GarageQual_TA|Condition1_RRAn', '3SsnPorch|Alley_Grvl', 'BsmtCond_Po', '2ndFlrSF|Exterior1st_BrkComm', 'BsmtExposure_Tencode|HeatingQC_Tencode', 'Alley_Tencode|FireplaceQu_Po', 'Neighborhood_CollgCr|BsmtCond_Po', 'BsmtFinType2_GLQ|FireplaceQu_Ex', 'BsmtFinSF1|HouseStyle_1.5Fin', 'GarageFinish_Fin|Exterior2nd_HdBoard', 'Exterior2nd_AsbShng|CentralAir_Tencode', 'BsmtFinType1_ALQ|Functional_Min2', 'GarageType_Basment|HouseStyle_SLvl', 'Exterior2nd_BrkFace|Functional_Maj1', 'EnclosedPorch|Neighborhood_NWAmes', 'Foundation_PConc|BsmtQual_Gd', 'Neighborhood_Blmngtn|FireplaceQu_TA', 'GarageCond_Tencode|LowQualFinSF', 'HouseStyle_SFoyer|LowQualFinSF', 'BedroomAbvGr|BsmtFinType2_LwQ', 'Street_Tencode|BsmtCond_Gd', 'Condition1_Artery|OverallCond', 'BldgType_2fmCon|FireplaceQu_Fa', 'HouseStyle_1Story|KitchenQual_Ex', '1stFlrSF|Exterior1st_Plywood', 'Alley_Tencode|BsmtFinSF2', 'YearBuilt|Street_Grvl', 'ExterCond_TA|LotConfig_CulDSac', 'BldgType_Duplex|YearBuilt', 'Neighborhood_Tencode|Exterior1st_Wd Sdng', 'FireplaceQu_Fa|Functional_Maj1', 'LandContour_Low|BsmtCond_Po', 'BsmtFinType1_BLQ|Exterior2nd_Tencode', 'BsmtFinType2_BLQ|Exterior1st_WdShing', 'BldgType_Duplex|Functional_Mod', 'Functional_Tencode|KitchenQual_Fa', 'LotShape_IR2|Exterior2nd_Wd Sdng', 'Neighborhood_BrDale|PoolArea', 'GarageType_Detchd|Exterior2nd_MetalSd', 'Functional_Mod|Neighborhood_Timber', 'ExterCond_TA|RoofMatl_Tar&Grv', 'GarageQual_Po|Exterior2nd_Wd Shng', 'GrLivArea|LandSlope_Tencode', 'PavedDrive_Y|Alley_Grvl', 'Exterior1st_BrkFace|BsmtFinType2_BLQ', 'LotFrontage|BsmtFinType1_Rec', 'CentralAir_Tencode|Functional_Min2', 'BsmtFinType1_Rec|MSZoning_RH', 'GarageCond_Po|Neighborhood_Blmngtn', 'Functional_Maj2|BsmtExposure_Av', 'GarageType_Detchd|KitchenQual_Gd', 'ExterCond_Tencode|Fence_MnPrv', 'OverallCond|Neighborhood_SawyerW', 'Neighborhood_BrkSide|BsmtExposure_No', 'BldgType_Twnhs|Exterior1st_Plywood', 'PavedDrive_N|HouseStyle_1.5Fin', 'BsmtFinType2_LwQ|Functional_Min2', 'KitchenQual_Tencode|BsmtFinType2_LwQ', 'MSZoning_FV', 'GarageQual_Gd|MasVnrType_None', 'Condition2_Norm|Functional_Min2', 'HouseStyle_SFoyer|MSSubClass', 'GarageType_Detchd|Heating_Grav', 'PavedDrive_N|Exterior1st_WdShing', 'Fireplaces|LotConfig_Inside', 'BldgType_1Fam|Exterior1st_MetalSd', 'CentralAir_N|Exterior1st_Tencode', 'BsmtExposure_Gd|BsmtFinType1_Unf', 'BsmtHalfBath|RoofStyle_Shed', 'KitchenQual_Tencode|Exterior2nd_CmentBd', 'KitchenQual_Gd|SaleCondition_Normal', 'Neighborhood_Mitchel|Condition1_PosA', 'BsmtExposure_Mn', 'BsmtFullBath|GarageType_2Types', 'Heating_GasA|GarageType_Tencode', 'Electrical_FuseP|3SsnPorch', 'MiscFeature_Othr|OverallCond', 'BsmtFinType2_GLQ|BsmtFinType2_LwQ', 'GarageType_Detchd|BsmtFinType1_BLQ', 'Exterior2nd_Stucco|PavedDrive_P', 'Neighborhood_Blmngtn|BsmtHalfBath', 'Condition2_Artery|HouseStyle_2.5Unf', 'BldgType_Twnhs|Exterior1st_Stucco', 'Condition1_Artery|2ndFlrSF', 'ExterQual_TA|BsmtFinType2_GLQ', 'MSZoning_FV|ExterCond_Fa', 'Functional_Tencode|HouseStyle_2Story', 'GarageCond_Po|Exterior2nd_Brk Cmn', 'Exterior1st_HdBoard|SaleCondition_Normal', 'Neighborhood_Tencode|Alley_Grvl', 'Neighborhood_Somerst|BsmtCond_Gd', 'FireplaceQu_TA|ScreenPorch', 'Electrical_FuseA|Exterior1st_Tencode', 'KitchenQual_Gd|BsmtFinType2_LwQ', 'Neighborhood_NridgHt|SaleType_Oth', 'MSSubClass|GarageType_2Types', 'ExterQual_Tencode|MasVnrType_BrkFace', 'SaleType_WD|Condition1_PosN', 'EnclosedPorch|OpenPorchSF', 'Neighborhood_ClearCr|MiscFeature_Tencode', 'LandSlope_Gtl|BsmtCond_Po', 'GarageFinish_Unf|Functional_Tencode', 'Condition1_Norm|Exterior1st_BrkComm', 'SaleType_ConLw|HouseStyle_1.5Fin', 'Neighborhood_Somerst|Condition1_Norm', 'HouseStyle_Tencode|BsmtQual_Gd', 'Neighborhood_Blmngtn|MSZoning_RH', 'Condition1_Norm|BsmtCond_Fa', 'LotShape_IR3|Neighborhood_MeadowV', 'Foundation_PConc|FireplaceQu_Po', 'BsmtHalfBath|BsmtCond_Gd', 'ExterCond_TA|BsmtFinType1_Rec', 'Neighborhood_NoRidge|SaleType_ConLI', 'BsmtQual_Ex|PoolArea', 'BsmtUnfSF|BsmtCond_Tencode', 'LotConfig_Corner|HalfBath', 'LotShape_Tencode|Alley_Tencode', 'GarageCond_TA|ScreenPorch', 'BsmtExposure_Tencode|ExterQual_Gd', 'BldgType_Duplex|Exterior1st_Wd Sdng', 'HeatingQC_Ex|2ndFlrSF', 'YearRemodAdd|Condition1_Feedr', 'BsmtFinSF2|MSZoning_RL', 'SaleCondition_Family|CentralAir_Y', 'GarageType_BuiltIn|MasVnrArea', 'HeatingQC_Fa|Exterior1st_BrkComm', 'LandSlope_Mod|FireplaceQu_Fa', 'Neighborhood_Crawfor|OverallCond', 'Functional_Tencode|ExterCond_Tencode', 'BsmtExposure_Gd|BsmtExposure_Mn', 'HouseStyle_1.5Fin|LotConfig_Inside', 'Neighborhood_NWAmes|RoofStyle_Tencode', 'YrSold|Foundation_Slab', 'TotRmsAbvGrd|GarageType_Attchd', 'YearBuilt|GarageType_2Types', 'SaleType_Tencode|RoofStyle_Tencode', 'GarageType_Tencode|ScreenPorch', 'SaleCondition_Family|RoofStyle_Gable', 'FullBath|GarageCond_Gd', 'HeatingQC_TA|MasVnrType_Tencode', 'Foundation_PConc|SaleCondition_Family', 'Foundation_PConc|GarageCond_Fa', 'PavedDrive_N|Alley_Grvl', 'BsmtFullBath|Exterior2nd_Brk Cmn', 'HeatingQC_TA|Electrical_FuseA', 'Neighborhood_SWISU|GarageType_BuiltIn', 'HouseStyle_1Story|Condition1_Feedr', 'Neighborhood_Veenker|Condition1_RRAe', 'BsmtFinType2_Rec|GarageQual_Tencode', 'Neighborhood_Tencode|LandContour_Bnk', 'BsmtFinType1_GLQ|Exterior1st_Tencode', 'Foundation_BrkTil|BsmtQual_TA', 'LotConfig_CulDSac|Neighborhood_BrkSide', 'OverallQual|FireplaceQu_Fa', 'LotShape_Reg|Neighborhood_CollgCr', 'GarageType_Attchd|HouseStyle_1.5Fin', 'Exterior1st_HdBoard|Neighborhood_IDOTRR', 'GarageCars|Exterior2nd_Tencode', 'BsmtFinType1_BLQ|Utilities_AllPub', 'Utilities_Tencode|MSZoning_RH', 'LandContour_Bnk|ScreenPorch', 'LandContour_HLS|LandContour_Tencode', 'LandSlope_Tencode|SaleCondition_Partial', 'Condition2_Artery|WoodDeckSF', 'Neighborhood_Crawfor|BldgType_1Fam', 'LotConfig_Corner|Condition1_RRAe', 'GarageQual_Tencode|ExterQual_Fa', 'BldgType_2fmCon|Exterior1st_HdBoard', 'MiscFeature_Othr|LandContour_HLS', 'Neighborhood_NPkVill|ExterQual_Ex', 'MSSubClass|BldgType_1Fam', 'LandSlope_Mod|BsmtFinSF2', 'HeatingQC_Ex|BsmtFinType2_Unf', 'Exterior2nd_Stone|Neighborhood_Crawfor', 'LandSlope_Mod|Exterior2nd_BrkFace', 'BsmtFinType1_Tencode|FireplaceQu_TA', 'GarageCond_Fa|SaleCondition_Partial', 'MiscVal|Exterior1st_Tencode', 'GarageQual_TA|Neighborhood_SawyerW', 'YearRemodAdd|Foundation_Tencode', 'Exterior2nd_Plywood|BsmtCond_Fa', 'HeatingQC_TA|LandSlope_Tencode', '3SsnPorch|Neighborhood_Gilbert', 'MasVnrType_Stone|GarageType_2Types', 'HouseStyle_1Story|GarageCond_Po', 'Functional_Min2|LotConfig_Inside', 'Utilities_Tencode|Exterior1st_Tencode', 'Functional_Mod|SaleCondition_Abnorml', 'LotShape_Reg|Fence_Tencode', 'Condition1_PosA|LotShape_IR3', 'GarageType_Attchd|Exterior1st_VinylSd', 'Foundation_PConc|BsmtFinType1_Unf', 'FireplaceQu_Gd|LandContour_Bnk', 'Condition1_PosA|HouseStyle_2Story', 'BsmtFinType1_ALQ|Exterior1st_MetalSd', 'HouseStyle_2.5Unf|FireplaceQu_TA', 'GarageQual_Po|Exterior1st_VinylSd', 'FireplaceQu_Ex|MasVnrType_Tencode', 'Exterior2nd_HdBoard|Exterior2nd_Wd Shng', 'LandContour_Low|Condition2_Norm', 'Neighborhood_Mitchel|GarageArea', 'BsmtCond_Po|BsmtCond_TA', 'RoofStyle_Gable|GarageArea', 'SaleType_ConLw|YearBuilt', 'OverallQual|Utilities_AllPub', 'OverallQual|CentralAir_N', 'Exterior1st_AsbShng|SaleType_Tencode', 'GarageQual_Po|BsmtFinType1_Unf', 'Neighborhood_StoneBr|Neighborhood_SawyerW', 'LandContour_Bnk|LowQualFinSF', 'Fence_Tencode|Heating_Tencode', 'GarageType_Detchd|Alley_Tencode', 'MoSold|GarageFinish_RFn', 'Neighborhood_BrDale|LotConfig_FR2', 'Functional_Tencode|RoofMatl_CompShg', 'SaleCondition_Alloca|Exterior1st_Tencode', 'SaleType_ConLw|Functional_Mod', 'BldgType_2fmCon|BsmtFinType1_BLQ', 'Exterior2nd_Tencode|Functional_Maj1', 'BsmtFinType1_BLQ|Exterior1st_Tencode', 'KitchenQual_Gd|FireplaceQu_Po', 'BldgType_Duplex|Neighborhood_Veenker', 'Foundation_Stone|PavedDrive_P', 'BsmtFullBath|GarageType_Attchd', 'LandSlope_Sev|MiscFeature_Gar2', 'BsmtFinType2_LwQ|PoolArea', 'Neighborhood_ClearCr|ExterQual_Gd', 'BldgType_Twnhs|MSZoning_C (all)', 'Fence_Tencode|MiscFeature_Shed', 'BsmtExposure_Tencode|Neighborhood_Gilbert', 'YearRemodAdd|Neighborhood_Sawyer', 'Exterior2nd_Stucco|Heating_Tencode', 'RoofStyle_Flat|Exterior2nd_VinylSd', 'SaleCondition_Abnorml|BsmtExposure_Mn', 'Neighborhood_CollgCr|Fence_Tencode', 'GarageFinish_Fin|GarageType_2Types', 'LotShape_Reg|ExterQual_Gd', 'OverallQual|MasVnrType_Tencode', 'BldgType_Twnhs|Exterior2nd_HdBoard', 'BsmtFinType2_GLQ|Condition1_RRAn', 'KitchenQual_Tencode|BsmtFinType1_LwQ', 'LandSlope_Mod|Street_Pave', 'HalfBath|BldgType_Tencode', 'Utilities_Tencode|FullBath', 'BsmtFinType2_Unf|MasVnrType_Tencode', 'YrSold|Fireplaces', 'Neighborhood_NWAmes|MSZoning_FV', 'MiscFeature_Othr|Functional_Min1', 'Electrical_FuseA|Condition1_RRAn', 'Neighborhood_Mitchel|Street_Grvl', 'RoofMatl_CompShg|BedroomAbvGr', 'GarageType_Tencode|FireplaceQu_Ex', 'GarageType_Detchd|FireplaceQu_Gd', 'Exterior2nd_Tencode|Exterior1st_Tencode', 'Condition1_PosN|GarageCond_Ex', 'LandContour_Bnk|RoofStyle_Tencode', 'Street_Pave|MasVnrType_Tencode', 'Fence_GdWo|GarageType_2Types', 'BldgType_Tencode|Neighborhood_MeadowV', 'BsmtQual_Ex|Neighborhood_SawyerW', 'BsmtFinType1_Tencode|LandContour_HLS', 'LandContour_HLS|GarageCond_Gd', 'LandContour_Bnk|BsmtCond_Fa', 'Neighborhood_Veenker|BsmtFinType2_Rec', 'LandSlope_Tencode|FireplaceQu_Fa', 'KitchenQual_Gd|BsmtExposure_Mn', 'OpenPorchSF|Foundation_CBlock', '1stFlrSF|BsmtExposure_Mn', 'OverallQual|Foundation_BrkTil', 'LandContour_HLS|MasVnrType_Tencode', 'LotShape_Reg|LotConfig_Corner', 'GarageCars|Fence_GdWo', 'GarageQual_Gd|GarageQual_TA', 'GarageCond_Tencode|Neighborhood_MeadowV', 'GarageCond_Tencode|KitchenQual_Ex', 'OverallQual|KitchenQual_TA', 'HeatingQC_Gd|SaleType_ConLI', 'Exterior1st_Stucco|HouseStyle_1.5Unf', 'LotConfig_FR2|Neighborhood_SWISU', 'HeatingQC_TA|Condition2_Tencode', 'KitchenQual_Gd|Electrical_FuseP', 'Neighborhood_Mitchel|Condition1_Tencode', 'GarageType_Tencode|MSZoning_RH', 'Neighborhood_IDOTRR|Functional_Min2', 'BsmtQual_Tencode|Condition1_Feedr', 'Neighborhood_NWAmes|Condition1_Feedr', 'LotShape_IR1|Electrical_FuseF', 'LandContour_HLS|GarageQual_Tencode', 'Exterior2nd_Stucco|ExterQual_TA', 'HeatingQC_TA|Neighborhood_Mitchel', 'Condition2_Tencode|CentralAir_N', 'Neighborhood_StoneBr|GarageCond_Ex', 'BsmtExposure_Av|WoodDeckSF', 'BsmtFinType1_Tencode|ExterQual_Fa', 'Neighborhood_Veenker|Neighborhood_SWISU', 'BsmtQual_TA|GarageYrBlt', 'Heating_Tencode|GarageQual_Po', 'Heating_Tencode|MasVnrType_BrkCmn', 'Foundation_BrkTil|KitchenQual_Ex', 'GarageCond_Po|LotShape_IR3', 'HouseStyle_SFoyer|LotConfig_Inside', 'MiscVal|Exterior2nd_HdBoard', 'Fireplaces|Exterior1st_CemntBd', 'RoofMatl_Tencode|GarageCond_Tencode', 'HouseStyle_1.5Unf|LotConfig_Tencode', 'Neighborhood_NridgHt|Functional_Tencode', 'Condition1_RRAe|Exterior1st_BrkComm', 'Foundation_PConc|MasVnrArea', 'LowQualFinSF|MiscFeature_Tencode', 'GarageFinish_Tencode|ExterQual_Gd', 'RoofStyle_Hip|Neighborhood_OldTown', 'LowQualFinSF|CentralAir_Y', 'GarageQual_Fa|GarageArea', 'Neighborhood_Tencode|TotRmsAbvGrd', 'PavedDrive_N|HouseStyle_1.5Unf', 'ExterQual_TA|Exterior2nd_Plywood', 'GrLivArea|Neighborhood_NoRidge', 'GarageQual_Tencode|GarageYrBlt', '2ndFlrSF|WoodDeckSF', 'GarageCond_TA|ExterQual_Ex', 'ExterQual_Gd|KitchenQual_TA', 'LandSlope_Tencode|Neighborhood_Edwards', 'FireplaceQu_Po|RoofMatl_WdShngl', 'Foundation_BrkTil|Functional_Min2', 'BsmtUnfSF|BldgType_1Fam', 'HeatingQC_Tencode|BsmtExposure_No', 'BsmtQual_Ex|GarageFinish_RFn', 'EnclosedPorch|Neighborhood_BrkSide', 'TotalBsmtSF|BsmtQual_Ex', 'Functional_Typ|Exterior2nd_HdBoard', 'GarageFinish_Unf|BldgType_TwnhsE', 'LandSlope_Mod|MasVnrType_None', 'SaleCondition_Family|RoofMatl_Tar&Grv', 'SaleType_New|BsmtFinType2_Unf', 'KitchenQual_Ex|Exterior2nd_Wd Sdng', 'FireplaceQu_Tencode|SaleType_COD', 'Electrical_FuseA|RoofStyle_Shed', 'LotShape_IR1|Exterior2nd_BrkFace', 'BsmtFinType1_BLQ|LotArea', 'Electrical_SBrkr|GarageFinish_Tencode', 'KitchenQual_TA|WoodDeckSF', 'Foundation_Stone|BsmtQual_Fa', 'Exterior1st_AsbShng|Neighborhood_Crawfor', 'Neighborhood_BrkSide|MasVnrType_BrkFace', 'TotalBsmtSF|Functional_Tencode', 'LotArea|OverallCond', 'MiscVal|Exterior2nd_Plywood', '1stFlrSF|KitchenQual_TA', 'YearRemodAdd|Neighborhood_Timber', 'HouseStyle_Tencode|BsmtExposure_Gd', 'Fence_GdPrv|CentralAir_Y', 'PavedDrive_P|BldgType_1Fam', 'GarageType_Detchd|GarageType_BuiltIn', 'GarageType_Tencode|LandContour_Lvl', 'EnclosedPorch|PavedDrive_Y', 'BsmtCond_Po|RoofMatl_WdShngl', 'Exterior1st_AsbShng|BsmtFinType2_LwQ', 'RoofStyle_Flat|Electrical_FuseA', 'YearBuilt|BsmtExposure_Mn', 'SaleCondition_Tencode|Exterior1st_BrkComm', 'Neighborhood_Somerst|BsmtCond_Po', 'LotShape_Tencode|KitchenQual_Ex', 'ExterQual_TA|Functional_Typ', 'BsmtFinType1_BLQ|SaleType_WD', 'BsmtExposure_No|MSZoning_FV', 'PavedDrive_N|LotShape_IR1', 'LandSlope_Gtl|2ndFlrSF', 'Alley_Tencode|Exterior1st_Stucco', 'FireplaceQu_Fa|Foundation_CBlock', 'BsmtCond_Gd|CentralAir_Y', 'GarageFinish_Fin|Exterior1st_Plywood', 'Foundation_Tencode|SaleCondition_Family', 'BsmtFinType1_ALQ|Exterior1st_WdShing', 'Neighborhood_Mitchel|Foundation_Tencode', 'Foundation_Tencode|HeatingQC_Ex', 'Fence_GdWo|BsmtExposure_Gd', 'HalfBath|RoofMatl_WdShngl', 'GarageCond_TA|GarageType_2Types', 'Electrical_FuseA|Neighborhood_Timber', 'BsmtFinType2_Tencode|BsmtCond_Tencode', 'SaleCondition_Alloca|SaleCondition_Normal', 'MasVnrType_BrkCmn|Condition1_Tencode', 'BedroomAbvGr|BsmtExposure_Av', 'SaleCondition_Normal|Neighborhood_NAmes', 'SaleType_ConLw|KitchenQual_Fa', 'MSZoning_Tencode|MasVnrType_Stone', 'Functional_Typ|BsmtFinType1_GLQ', 'Heating_Tencode|MoSold', 'Alley_Tencode|LowQualFinSF', 'Heating_Tencode|LandContour_Tencode', 'CentralAir_Tencode|GarageType_2Types', 'Exterior1st_CemntBd|MSZoning_RH', 'Neighborhood_NPkVill|ExterCond_Tencode', 'ExterCond_Tencode|GarageType_CarPort', 'RoofStyle_Flat|Fence_MnPrv', 'BsmtCond_Po|Neighborhood_Sawyer', 'HalfBath|KitchenQual_TA', 'Electrical_FuseA|LotConfig_CulDSac', 'Condition2_Norm|BsmtExposure_Mn', 'HeatingQC_Gd|KitchenQual_Tencode', 'GarageCond_TA|Condition1_PosN', 'Heating_Tencode|BldgType_Tencode', 'FullBath|GarageQual_TA', 'PavedDrive_Y|SaleType_COD', 'Condition1_PosA|OverallCond', 'MiscFeature_Othr|BsmtQual_TA', 'LotShape_IR1|Fence_MnPrv', 'Electrical_Tencode|Functional_Min2', 'Neighborhood_NoRidge|YearBuilt', 'Utilities_Tencode|BsmtExposure_Mn', 'Neighborhood_Blmngtn|BsmtQual_Gd', 'RoofMatl_Tencode|YearRemodAdd', 'LotFrontage|Neighborhood_Tencode', 'BsmtFinType1_Tencode|EnclosedPorch', 'LandContour_Bnk|Exterior1st_BrkComm', 'RoofMatl_Tencode|Neighborhood_NWAmes', 'BsmtFinType2_GLQ|Condition1_Feedr', 'BsmtQual_Fa|Exterior1st_Tencode', 'RoofMatl_Tencode|Fireplaces', 'Foundation_Stone|SaleCondition_Family', 'GarageFinish_Unf|GarageType_2Types', 'Exterior1st_BrkFace|Neighborhood_NoRidge', 'Functional_Maj2|ExterQual_Tencode', 'LotFrontage|BsmtQual_Ex', 'BsmtExposure_Tencode|Fence_MnWw', 'Exterior1st_HdBoard|LotShape_IR1', 'GarageCond_Tencode|Exterior2nd_Wd Sdng', 'Street_Tencode|Neighborhood_NridgHt', 'GarageCond_Po|Foundation_CBlock', 'Neighborhood_CollgCr|BsmtExposure_Gd', 'Electrical_FuseP|Fence_GdWo', 'BsmtHalfBath|CentralAir_Tencode', 'MiscVal|HeatingQC_Ex', 'RoofStyle_Tencode|Neighborhood_IDOTRR', 'Neighborhood_NWAmes|MSSubClass', 'Alley_Pave|BsmtCond_Gd', 'SaleCondition_Family|BsmtExposure_Gd', 'HeatingQC_Fa|Neighborhood_BrkSide', 'Exterior1st_CemntBd|Exterior2nd_Wd Shng', 'RoofStyle_Gable|LandSlope_Gtl', 'LandContour_Low|Condition1_RRAn', 'Neighborhood_CollgCr|BsmtExposure_No', 'BldgType_Twnhs|OverallCond', 'HouseStyle_1Story|Foundation_CBlock', 'RoofStyle_Flat|BsmtFinType2_ALQ', 'TotRmsAbvGrd|KitchenQual_TA', 'KitchenQual_Gd|BsmtFinType2_Rec', 'Alley_Pave|GarageQual_Gd', 'Exterior2nd_AsbShng|SaleCondition_Normal', 'MiscFeature_Othr|SaleCondition_Normal', 'MoSold|Functional_Mod', 'BsmtFinType2_Tencode|RoofMatl_CompShg', 'HouseStyle_1Story|PavedDrive_P', 'Condition1_RRAe|MiscFeature_Gar2', 'KitchenAbvGr|BldgType_Duplex', 'GarageCond_TA|MiscFeature_Othr', 'Neighborhood_Veenker|GarageCond_Gd', 'BsmtExposure_Gd|MasVnrType_Tencode', 'Exterior1st_AsbShng|Exterior1st_Wd Sdng', 'SaleCondition_Alloca|Exterior2nd_Plywood', 'BsmtExposure_Gd|ExterCond_Fa', 'MasVnrType_None|BsmtExposure_Mn', 'SaleCondition_Normal|BsmtExposure_Mn', 'Foundation_Tencode|MiscFeature_Tencode', 'GarageCond_Gd|GarageType_CarPort', 'BldgType_Duplex|Fence_MnPrv', 'HouseStyle_1Story|Functional_Tencode', 'HeatingQC_Ex|Exterior2nd_HdBoard', 'Alley_Pave|LandSlope_Mod', 'Heating_GasA|GarageCond_Tencode', 'SaleCondition_Tencode|Neighborhood_BrkSide', 'FireplaceQu_Fa|GarageType_BuiltIn', 'Exterior2nd_Stone|Foundation_BrkTil', 'Neighborhood_Tencode|BsmtQual_TA', 'GarageQual_Po|Condition2_Artery', 'MasVnrType_BrkCmn|MasVnrType_None', 'Neighborhood_BrDale|GarageYrBlt', 'ExterCond_Tencode|GarageQual_Tencode', 'EnclosedPorch', 'HouseStyle_SLvl|BsmtCond_Fa', 'Condition1_Artery|Street_Tencode', 'RoofStyle_Flat|SaleType_CWD', 'CentralAir_N|Neighborhood_Timber', 'HeatingQC_Tencode|GarageYrBlt', 'LandContour_Low|RoofStyle_Tencode', 'Condition1_PosA|Neighborhood_IDOTRR', '3SsnPorch|ExterCond_Gd', 'Foundation_Stone|3SsnPorch', 'BsmtFinType2_ALQ|BsmtCond_Fa', 'ExterQual_Tencode|GarageType_2Types', 'Neighborhood_SawyerW|Exterior2nd_Plywood', 'Condition1_Norm|LotShape_IR3', 'BsmtFinSF2|Neighborhood_Crawfor', 'Exterior2nd_Stucco|BedroomAbvGr', 'SaleType_ConLw|GarageQual_Tencode', 'HeatingQC_Ex|MiscFeature_Shed', 'BldgType_TwnhsE|Exterior2nd_Brk Cmn', 'MasVnrType_BrkCmn|BldgType_1Fam', 'MasVnrType_BrkCmn|Exterior1st_Plywood', 'Neighborhood_Mitchel|HouseStyle_SLvl', 'LandContour_Tencode|BsmtUnfSF', 'PavedDrive_Tencode|CentralAir_Tencode', 'LandSlope_Tencode|GarageQual_Po', 'Exterior2nd_MetalSd|GarageType_Attchd', 'GarageCond_Gd|Condition1_PosN', 'Neighborhood_Somerst|KitchenQual_Tencode', 'BsmtFinType2_ALQ|MSZoning_Tencode', 'Utilities_Tencode|HeatingQC_Fa', 'HalfBath|Electrical_FuseF', 'GarageType_CarPort|Exterior1st_Tencode', 'GarageType_CarPort|CentralAir_Y', 'Electrical_FuseP|HouseStyle_SLvl', 'LandSlope_Tencode|MiscFeature_Gar2', 'Exterior2nd_AsbShng|BsmtFinType2_LwQ', 'YrSold|Exterior2nd_BrkFace', 'GarageCond_Gd|Neighborhood_Gilbert', 'Neighborhood_Edwards|BsmtFinType2_Rec', 'BsmtQual_Tencode|SaleType_New', 'Functional_Typ|SaleCondition_Normal', 'RoofMatl_WdShngl|Neighborhood_Timber', 'Exterior1st_BrkFace|Neighborhood_SWISU', 'Exterior1st_BrkFace|GarageYrBlt', 'Neighborhood_NoRidge|Neighborhood_Crawfor', 'TotalBsmtSF|YearBuilt', 'TotalBsmtSF|Neighborhood_Sawyer', 'Exterior2nd_Stucco|LotConfig_CulDSac', 'BsmtQual_Tencode|MSZoning_RH', 'OverallQual|FireplaceQu_TA', 'Neighborhood_NoRidge|BsmtFinType1_LwQ', 'HeatingQC_Gd|Functional_Mod', 'GarageQual_Fa|Foundation_Slab', 'GarageFinish_Fin|LandContour_Tencode', '3SsnPorch|Functional_Mod', 'Heating_GasA|Neighborhood_NoRidge', 'GarageFinish_Fin|Neighborhood_NAmes', 'ExterCond_TA|Condition1_RRAn', 'YrSold|BsmtCond_TA', 'Condition1_Artery|PoolQC_Tencode', 'LotShape_Tencode|MiscFeature_Tencode', 'MoSold|BldgType_TwnhsE', 'Exterior1st_BrkFace|RoofMatl_WdShngl', 'TotalBsmtSF|BsmtFinType1_Tencode', 'SaleCondition_Tencode|BsmtExposure_Av', 'FireplaceQu_Po|SaleCondition_Family', 'Exterior1st_Wd Sdng|GarageType_2Types', '2ndFlrSF|MSZoning_FV', 'BsmtFinType2_ALQ|BsmtFinSF1', 'FireplaceQu_Tencode|GarageCond_Gd', 'Exterior1st_AsbShng|MasVnrArea', 'Functional_Typ|MiscFeature_Othr', 'GarageQual_Tencode|BsmtExposure_Mn', 'MasVnrType_BrkCmn|HouseStyle_SLvl', 'SaleCondition_Alloca|SaleCondition_Abnorml', 'EnclosedPorch|BsmtFinType2_LwQ', 'TotalBsmtSF|BsmtCond_Fa', 'SaleType_Tencode|CentralAir_Tencode', 'GrLivArea|Fence_MnWw', 'BsmtFinType2_Tencode|MSZoning_RL', 'RoofStyle_Gambrel|Neighborhood_Crawfor', 'HouseStyle_SFoyer|Neighborhood_Edwards', 'KitchenAbvGr|Functional_Maj1', 'Heating_Grav|BsmtCond_TA', 'Neighborhood_Edwards|Exterior2nd_AsphShn', 'Electrical_Tencode|LotArea', 'Functional_Mod|BsmtFinType1_GLQ', 'HeatingQC_TA|Heating_GasW', 'Exterior2nd_Wd Sdng|BsmtFinType2_Unf', 'SaleType_ConLD', 'Neighborhood_CollgCr|Neighborhood_OldTown', 'Functional_Maj2|BsmtUnfSF', 'BldgType_Twnhs|BsmtFinType1_Rec', 'MasVnrType_None|GarageCond_Ex', 'Foundation_BrkTil|BsmtExposure_No', 'Neighborhood_NPkVill|SaleType_ConLD', 'Functional_Maj2|MasVnrType_Stone', 'Exterior2nd_Stucco|GarageQual_Po', 'ExterQual_TA|MSZoning_RH', 'GarageCars|HeatingQC_Gd', 'OverallQual|Neighborhood_NAmes', 'BsmtFinType2_Unf|ExterCond_Fa', 'SaleType_ConLw|Exterior2nd_Tencode', 'Neighborhood_OldTown|Functional_Mod', 'GarageCond_Tencode|FireplaceQu_Fa', 'Condition1_Norm|Exterior1st_Tencode', 'Neighborhood_Somerst|Exterior1st_WdShing', 'Alley_Tencode|Electrical_FuseF', 'HalfBath|MasVnrType_None', 'KitchenQual_Fa|SaleType_COD', 'Foundation_BrkTil|BsmtQual_Ex', 'LotShape_IR3|Neighborhood_Timber', 'TotalBsmtSF|BsmtCond_Po', 'ExterQual_TA|Exterior1st_Tencode', 'Neighborhood_Mitchel|GarageCond_Gd', 'Foundation_Tencode|LotConfig_Inside', 'HeatingQC_Ex|MasVnrArea', 'Functional_Tencode|Exterior2nd_MetalSd', 'GarageQual_Fa|LandSlope_Gtl', 'LotArea|LandSlope_Sev', 'MSZoning_C (all)|Neighborhood_NAmes', 'Electrical_FuseP|Fence_MnPrv', 'Foundation_PConc|LowQualFinSF', 'Exterior1st_CemntBd|WoodDeckSF', 'YearBuilt|Exterior2nd_HdBoard', 'GarageCond_Po|Neighborhood_MeadowV', 'BldgType_2fmCon|Exterior1st_Tencode', 'RoofStyle_Flat|GarageCond_Fa', 'Neighborhood_Veenker|PoolArea', '2ndFlrSF|BsmtQual_Gd', 'YrSold|Condition1_PosN', 'BsmtQual_TA|BsmtFinType1_Rec', 'Functional_Tencode|BsmtFinType1_LwQ', 'KitchenAbvGr|BldgType_TwnhsE', 'Street_Tencode|Functional_Typ', 'HeatingQC_Fa|Heating_Grav', 'Foundation_BrkTil|LotConfig_CulDSac', '3SsnPorch|Exterior2nd_AsphShn', 'BedroomAbvGr|HouseStyle_2.5Unf', 'Electrical_Tencode|HouseStyle_2.5Unf', 'Functional_Typ|3SsnPorch', 'BsmtFinType1_ALQ|MoSold', 'Neighborhood_NoRidge|Functional_Min1', 'YrSold|Neighborhood_BrDale', 'RoofStyle_Hip|1stFlrSF', 'LotShape_IR1|Exterior1st_Stucco', 'Condition1_Tencode|MSZoning_RH', 'Electrical_SBrkr|MasVnrType_Stone', 'Condition1_PosA|ExterQual_Fa', 'BsmtQual_Tencode|MiscFeature_Shed', 'GarageType_Basment|MasVnrType_Stone', 'Condition1_Artery|GarageQual_Fa', 'BsmtFullBath|Exterior2nd_Plywood', 'PoolQC_Tencode|FireplaceQu_TA', 'Exterior2nd_Stucco|ExterCond_Gd', 'Neighborhood_StoneBr|MSSubClass', 'LandContour_Low|BsmtQual_TA', 'MiscFeature_Shed|Condition1_Feedr', 'YrSold|BsmtCond_Fa', 'BldgType_2fmCon|BsmtUnfSF', 'Neighborhood_Crawfor|Neighborhood_Gilbert', 'Condition1_PosA|SaleCondition_Normal', 'Neighborhood_NPkVill|SaleCondition_Normal', 'Foundation_Tencode', 'Alley_Pave|Exterior1st_BrkComm', 'GarageQual_Gd|PoolQC_Tencode', 'BsmtQual_TA|MasVnrType_BrkCmn', 'KitchenQual_Fa|Functional_Min2', 'GrLivArea|Exterior1st_AsbShng', 'MiscFeature_Othr|Foundation_CBlock', 'HouseStyle_1.5Fin|Street_Pave', 'Exterior2nd_Stucco|Foundation_CBlock', 'GarageCond_TA|Neighborhood_Sawyer', 'LotShape_Tencode|Neighborhood_Blmngtn', 'BsmtExposure_Gd|BsmtQual_Gd', 'Fence_Tencode|SaleType_CWD', 'SaleCondition_Normal|Neighborhood_BrkSide', 'MasVnrType_BrkCmn|RoofMatl_WdShngl', 'ExterCond_Gd|BsmtCond_Tencode', 'Electrical_FuseF|Street_Pave', 'FireplaceQu_Fa|MasVnrType_None', 'Neighborhood_Tencode|BsmtUnfSF', 'Heating_Tencode|WoodDeckSF', 'Neighborhood_CollgCr|Fence_GdPrv', 'HalfBath|BsmtExposure_Mn', 'Street_Tencode|Exterior1st_Tencode', 'MSZoning_Tencode|MiscFeature_Gar2', 'Neighborhood_SWISU|Exterior2nd_Brk Cmn', 'LandSlope_Gtl|Exterior2nd_HdBoard', 'Exterior1st_AsbShng|MSZoning_RH', 'RoofStyle_Gable|Exterior1st_VinylSd', 'Functional_Min1|Exterior1st_Wd Sdng', 'Condition1_Norm|Utilities_AllPub', 'GarageType_Tencode|MasVnrType_BrkCmn', 'SaleCondition_Normal|MasVnrType_None', 'GarageType_Tencode|Neighborhood_MeadowV', 'PoolQC_Tencode|ExterCond_Tencode', 'BsmtFinType2_Rec|MiscFeature_Shed', 'BsmtFinSF1|BldgType_Tencode', 'LandContour_Low|Neighborhood_MeadowV', 'GarageCond_Gd|Condition2_Artery', 'SaleType_ConLD|Condition1_RRAe', 'Exterior2nd_Wd Shng|HouseStyle_2Story', 'Condition1_Norm|BldgType_Tencode', 'BsmtHalfBath|BsmtExposure_Av', 'HouseStyle_1.5Unf|GarageQual_Fa', 'Electrical_Tencode|MSZoning_RM', 'CentralAir_N|GarageType_2Types', 'GarageCond_Po|GarageType_2Types', 'Exterior2nd_Wd Sdng|MSZoning_FV', 'LandSlope_Mod|Foundation_BrkTil', 'HouseStyle_Tencode|Street_Pave', 'SaleCondition_Tencode|Functional_Min2', 'HouseStyle_Tencode|RoofStyle_Gambrel', 'LandSlope_Tencode|GarageType_BuiltIn', 'Foundation_CBlock|ExterCond_Fa', 'GarageQual_Tencode|HouseStyle_1.5Fin', 'Condition1_Artery|LandSlope_Tencode', 'Neighborhood_Tencode|Foundation_Slab', 'Exterior1st_AsbShng|GarageType_CarPort', 'Functional_Typ|CentralAir_Y', 'Electrical_Tencode|BsmtQual_Gd', 'Neighborhood_Edwards|SaleCondition_Normal', 'BsmtHalfBath|MiscFeature_Gar2', 'MasVnrType_None|RoofMatl_WdShngl', 'BsmtQual_TA|BldgType_1Fam', 'Fence_GdWo', 'BsmtFinType1_BLQ|Neighborhood_ClearCr', 'Electrical_FuseA|Exterior2nd_Wd Sdng', 'Neighborhood_NPkVill|BsmtExposure_Gd', 'BsmtCond_Po|Fence_GdWo', 'Foundation_Stone|Fireplaces', 'ExterQual_TA|TotalBsmtSF', 'Street_Grvl|ExterQual_Tencode', 'BsmtFinType1_Rec|BsmtFinType2_Unf', 'Fence_Tencode|Fence_GdPrv', 'LotFrontage|Exterior1st_CemntBd', 'FireplaceQu_Ex|Alley_Grvl', 'LotConfig_Corner|Condition1_PosN', 'FireplaceQu_Tencode|MoSold', 'GarageFinish_Fin|MasVnrType_BrkCmn', 'BsmtFinType1_LwQ|BsmtFinSF1', 'SaleType_ConLI|LotConfig_CulDSac', 'LotShape_Tencode|RoofStyle_Shed', 'CentralAir_Y|Street_Grvl', 'BsmtFinType1_LwQ|GarageCond_Ex', 'BldgType_Twnhs|SaleCondition_Family', 'ExterQual_TA|HeatingQC_TA', 'BsmtFinType2_BLQ|GarageCond_Fa', 'Heating_GasA|BsmtQual_Tencode', 'SaleType_WD|Exterior1st_MetalSd', 'LotShape_Reg|KitchenQual_Tencode', 'OpenPorchSF|Utilities_AllPub', 'HouseStyle_Tencode|BsmtExposure_Av', 'HeatingQC_Fa|HeatingQC_Gd', 'Neighborhood_Veenker|HeatingQC_Tencode', 'Heating_Grav|Neighborhood_StoneBr', 'FireplaceQu_Po|Street_Grvl', 'Condition1_Artery|MiscFeature_Othr', 'SaleType_WD|Alley_Grvl', 'Condition1_RRAe|LotShape_IR3', 'BsmtFinType2_GLQ|Heating_GasW', 'Utilities_Tencode|Neighborhood_NAmes', 'CentralAir_Y|LotConfig_Inside', 'Fireplaces|LandSlope_Mod', 'PoolQC_Tencode|1stFlrSF', 'Functional_Maj2|BsmtExposure_No', 'Foundation_Tencode|MasVnrType_None', 'RoofStyle_Hip|RoofMatl_Tar&Grv', 'FireplaceQu_Po|LandContour_Bnk', 'LandContour_HLS|SaleType_CWD', 'Heating_Tencode|BsmtFinType1_GLQ', 'Exterior1st_AsbShng|Neighborhood_NoRidge', 'MasVnrType_None|Neighborhood_Gilbert', 'GarageArea|BsmtExposure_Mn', 'Neighborhood_Somerst|GarageArea', 'Exterior1st_BrkComm|MSZoning_FV', 'Exterior2nd_Stucco|Neighborhood_IDOTRR', 'BsmtFinSF1|Neighborhood_IDOTRR', 'Exterior2nd_VinylSd|SaleType_WD', 'BldgType_2fmCon|Foundation_Slab', 'PavedDrive_Tencode|BsmtUnfSF', 'SaleCondition_Tencode|SaleType_ConLw', 'LotConfig_FR2|Exterior2nd_Wd Sdng', 'BsmtFinType2_GLQ|Exterior2nd_VinylSd', 'YearRemodAdd|SaleType_ConLw', 'Condition2_Artery|SaleType_CWD', 'SaleCondition_Family|LandContour_Bnk', 'BsmtFinSF2|LotConfig_Inside', 'LandContour_Lvl|Fence_GdWo', 'Fireplaces|HouseStyle_Tencode', 'HeatingQC_Tencode|SaleCondition_Partial', 'Exterior2nd_HdBoard|MasVnrType_BrkFace', 'RoofStyle_Hip|BsmtUnfSF', 'KitchenAbvGr|Exterior2nd_Tencode', 'SaleType_ConLD|BsmtCond_Po', 'Exterior1st_VinylSd|MSZoning_Tencode', 'Exterior2nd_Tencode|Exterior1st_Stucco', 'BsmtFinSF2|Foundation_Tencode', 'HouseStyle_SFoyer|BsmtQual_Gd', 'SaleCondition_Alloca|Neighborhood_Sawyer', 'SaleType_ConLD|Heating_GasW', 'LotShape_IR1|GarageType_Tencode', 'LandContour_Low|BsmtExposure_Gd', 'HeatingQC_TA|Neighborhood_ClearCr', 'MiscFeature_Shed|SaleType_Oth', 'Foundation_Tencode|Neighborhood_NAmes', 'Condition1_PosN|BsmtCond_Fa', 'KitchenQual_Tencode|MasVnrType_Stone', 'Neighborhood_IDOTRR|BsmtQual_Gd', 'Condition2_Tencode|Foundation_Slab', 'ExterQual_Ex|BsmtFinType1_Unf', 'BsmtFinType1_BLQ|KitchenQual_Gd', 'BsmtQual_Fa|HouseStyle_1.5Unf', 'Neighborhood_NridgHt|Neighborhood_Sawyer', 'ExterQual_TA|GarageQual_Gd', 'GarageType_Tencode|Exterior1st_BrkComm', 'Functional_Typ|BsmtCond_Po', 'MSSubClass|OverallCond', 'RoofStyle_Shed|ScreenPorch', 'Exterior2nd_MetalSd|Neighborhood_NAmes', 'RoofStyle_Hip|SaleType_ConLI', 'ExterCond_TA|Exterior2nd_MetalSd', 'GarageCond_Ex|MasVnrType_Stone', 'Condition2_Norm|Neighborhood_MeadowV', 'FireplaceQu_TA|BsmtExposure_Mn', 'GarageType_Tencode|RoofStyle_Tencode', 'LowQualFinSF|BsmtUnfSF', 'SaleType_ConLw|BsmtFinSF2', 'Fireplaces|Neighborhood_Sawyer', 'PoolQC_Tencode|Neighborhood_BrkSide', 'Exterior2nd_Stucco|GarageCond_Gd', 'Functional_Mod|Exterior1st_WdShing', 'GarageType_CarPort|Neighborhood_StoneBr', 'Condition1_Norm|ScreenPorch', 'BsmtFinType1_Rec|MasVnrType_BrkFace', 'Electrical_FuseF|Exterior2nd_Wd Sdng', 'Exterior2nd_Stone|MiscFeature_Othr', 'BsmtFinType1_Rec|GarageFinish_Tencode', 'GarageQual_Tencode|MiscFeature_Gar2', 'BsmtQual_TA|BsmtCond_Gd', 'BsmtFinType1_ALQ|Condition1_Norm', 'Electrical_FuseA|Fence_GdWo', 'Neighborhood_NoRidge|BsmtFullBath', 'LotShape_IR1|BsmtCond_Gd', 'Exterior2nd_Wd Sdng|GarageQual_Tencode', 'SaleType_Tencode|MiscFeature_Gar2', 'Exterior1st_CemntBd|Exterior1st_MetalSd', 'Condition1_Feedr|Fence_MnWw', 'Exterior2nd_CmentBd|GarageType_2Types', 'KitchenQual_Tencode|MSSubClass', 'SaleType_New|BsmtFinType2_Rec', 'Fireplaces|GarageCond_Ex', 'ExterCond_Tencode|Foundation_CBlock', 'HeatingQC_Gd|Exterior2nd_Tencode', 'Functional_Tencode|Condition1_Norm', 'Exterior1st_Plywood|Utilities_AllPub', 'Neighborhood_Somerst|GarageType_Basment', 'Functional_Maj2|Condition1_RRAn', 'YearBuilt|LandSlope_Sev', 'Heating_GasA|Condition1_PosA', 'BsmtFinType2_Tencode|LowQualFinSF', 'LotShape_Tencode|ExterQual_Fa', 'LowQualFinSF|Neighborhood_MeadowV', 'RoofMatl_CompShg|RoofMatl_WdShngl', 'BldgType_1Fam|Exterior1st_Wd Sdng', 'LandContour_Low|RoofStyle_Shed', 'RoofMatl_Tar&Grv|Fence_GdWo', 'Exterior1st_Stucco|TotRmsAbvGrd', 'HeatingQC_TA|SaleType_Tencode', 'Condition2_Tencode|Exterior2nd_MetalSd', 'HouseStyle_1Story|Neighborhood_Blmngtn', 'ExterQual_TA|BsmtUnfSF', 'SaleCondition_Family|Exterior1st_CemntBd', 'BldgType_Twnhs|Exterior2nd_Wd Sdng', 'ExterCond_TA|Neighborhood_Tencode', 'Neighborhood_OldTown|BsmtFinType2_Rec', 'ExterCond_Tencode|Functional_Min1', 'LandSlope_Gtl|LotConfig_Inside', 'Neighborhood_CollgCr|BsmtQual_TA', 'Neighborhood_BrDale|CentralAir_Tencode', 'LotConfig_FR2|BsmtQual_Fa', 'BsmtFinType1_GLQ|LotShape_IR3', 'HeatingQC_Gd|BsmtCond_Gd', 'BsmtExposure_Tencode|LotFrontage', 'LotFrontage|Condition1_RRAn', 'Exterior1st_Stucco|LotConfig_FR2', 'YearBuilt|SaleCondition_Alloca', 'ExterCond_TA|MSZoning_RH', 'Foundation_BrkTil|BsmtExposure_Av', 'LotShape_IR1|HalfBath', 'MiscFeature_Gar2|Fence_MnPrv', 'Foundation_PConc|Electrical_FuseA', 'SaleCondition_Tencode|BldgType_Twnhs', 'Exterior2nd_Brk Cmn|Fence_MnPrv', 'GarageType_Tencode|BedroomAbvGr', 'Exterior2nd_CmentBd|Exterior1st_Wd Sdng', 'Electrical_FuseP|BsmtFinType1_LwQ', 'GarageCond_TA|Exterior1st_Plywood', 'Fence_GdPrv|GarageYrBlt', 'BsmtExposure_Tencode|BsmtCond_TA', 'BsmtFinType2_Unf|BsmtCond_Fa', 'Neighborhood_BrDale|KitchenQual_Gd', 'LotArea|Heating_GasW', 'LandSlope_Tencode|Neighborhood_BrkSide', 'GarageType_Attchd|Neighborhood_NAmes', 'RoofStyle_Hip|BsmtCond_TA', 'KitchenAbvGr|2ndFlrSF', 'GarageType_BuiltIn|SaleCondition_Partial', 'Neighborhood_Somerst|Foundation_Stone', 'Street_Tencode|MiscFeature_Gar2', 'Foundation_BrkTil|WoodDeckSF', 'Neighborhood_NoRidge|MasVnrType_BrkCmn', 'BsmtFinType2_LwQ|PavedDrive_P', 'Foundation_Tencode|GarageType_BuiltIn', 'Neighborhood_NoRidge|MasVnrType_None', 'BsmtFinType2_GLQ|GarageCond_Gd', 'Alley_Tencode|RoofMatl_WdShngl', 'MSZoning_C (all)|Neighborhood_NWAmes', 'BsmtFinType2_ALQ|BsmtFinType1_Unf', 'LotShape_Reg|BsmtFinType1_Rec', 'GarageCond_Fa|MSZoning_RH', 'BsmtQual_Tencode|SaleCondition_Family', 'BsmtFinType1_Rec|GarageQual_Tencode', 'Foundation_Stone|PoolQC_Tencode', 'BsmtExposure_Av|Neighborhood_Gilbert', 'LandSlope_Gtl|CentralAir_Tencode', 'BsmtExposure_Av|OpenPorchSF', 'KitchenQual_Gd|MiscFeature_Othr', 'Neighborhood_Mitchel|PoolQC_Tencode', 'Heating_GasA|Neighborhood_SawyerW', 'PoolArea|Exterior2nd_AsphShn', 'GarageFinish_Tencode|GarageType_Basment', 'BsmtFinType1_Rec|BsmtFinSF1', 'LotShape_Tencode|Functional_Typ', 'Neighborhood_NAmes|GarageYrBlt', 'Neighborhood_Edwards|GarageType_Basment', 'Foundation_CBlock|GarageType_Basment', 'Foundation_Tencode|GarageType_Attchd', 'Alley_Grvl|ExterQual_Fa', 'Foundation_CBlock|BsmtCond_Fa', 'PoolQC_Tencode|Exterior1st_WdShing', 'MasVnrType_BrkCmn|Condition2_Artery', 'BldgType_2fmCon|Fence_MnPrv', 'BsmtFinType2_Tencode|BsmtFinType1_ALQ', 'Condition1_PosA|MoSold', 'LotShape_IR2|MasVnrArea', 'LandContour_Low|Exterior2nd_BrkFace', 'BsmtCond_Tencode|MSZoning_RL', 'Neighborhood_Tencode|RoofStyle_Tencode', 'GarageQual_Gd|BsmtCond_Fa', 'MSZoning_FV|Exterior1st_MetalSd', 'Neighborhood_ClearCr|BldgType_TwnhsE', 'CentralAir_N|BsmtExposure_No', 'RoofMatl_Tencode|Condition2_Artery', 'Electrical_Tencode|MiscFeature_Othr', 'BsmtFinType2_BLQ|CentralAir_N', 'GarageFinish_Fin|BsmtExposure_Mn', 'Condition1_RRAn|BsmtCond_Fa', 'Exterior1st_MetalSd|LotConfig_Inside', 'SaleCondition_Family|Neighborhood_IDOTRR', 'BsmtFinType1_ALQ|Condition1_Feedr', 'HouseStyle_Tencode|KitchenQual_Tencode', 'Neighborhood_ClearCr|KitchenQual_Gd', 'LotShape_IR1|Fence_GdPrv', 'BsmtFinType1_Tencode|BsmtFinType2_Unf', 'Exterior2nd_Stone|BedroomAbvGr', 'SaleType_Tencode|FireplaceQu_Ex', 'RoofStyle_Shed|Neighborhood_IDOTRR', 'TotRmsAbvGrd|Street_Grvl', 'FireplaceQu_Ex|MSZoning_RM', 'BsmtFinType1_ALQ|MiscFeature_Shed', 'Neighborhood_ClearCr|GarageCond_Fa', 'RoofMatl_WdShngl|MasVnrType_BrkFace', 'ExterQual_TA|MasVnrType_None', 'Exterior1st_AsbShng|TotRmsAbvGrd', 'BsmtFinType1_LwQ|CentralAir_Tencode', 'BsmtFinType2_BLQ|BsmtQual_Fa', 'HeatingQC_Gd|BsmtFinType2_Rec', 'GarageCond_TA|Functional_Maj1', 'GarageCond_Po|BsmtQual_TA', 'FireplaceQu_Fa|Functional_Min1', 'Electrical_FuseP|SaleType_Tencode', 'Exterior2nd_Tencode|MasVnrType_Tencode', 'SaleCondition_Tencode|RoofMatl_WdShngl', 'Neighborhood_BrkSide|Exterior1st_Plywood', 'PavedDrive_Y|Functional_Mod', 'TotalBsmtSF|ExterCond_Tencode', 'Alley_Pave|BsmtFinType2_GLQ', 'HeatingQC_Gd|ExterCond_TA', 'Foundation_BrkTil|MiscFeature_Shed', 'MiscVal|BsmtFullBath', 'SaleType_ConLw|Neighborhood_OldTown', 'LandContour_Low|FireplaceQu_Gd', 'KitchenQual_Gd|BsmtQual_Tencode', 'LotShape_Reg|Street_Pave', 'BsmtFinType2_ALQ|LotConfig_FR2', 'Exterior2nd_AsbShng|SaleType_ConLD', 'Neighborhood_Blmngtn|Exterior2nd_Plywood', 'EnclosedPorch|BsmtExposure_Gd', 'LotShape_Tencode|Neighborhood_Gilbert', 'MSZoning_RM|LotShape_IR3', 'Fence_GdWo|MasVnrType_Stone', 'GarageCars|Foundation_CBlock', 'GarageCond_Gd|GarageType_Attchd', 'Exterior2nd_Stone|1stFlrSF', 'TotRmsAbvGrd|Alley_Grvl', 'Alley_Tencode|BsmtExposure_Av', 'Electrical_SBrkr|Exterior1st_VinylSd', 'BldgType_Duplex|Heating_GasW', 'RoofMatl_Tencode|BsmtFinSF1', 'PavedDrive_Y|MSSubClass', 'Condition1_PosN|BsmtFinType2_Rec', 'FireplaceQu_Tencode|GarageFinish_Unf', 'GrLivArea|BsmtFinType2_BLQ', 'SaleCondition_Tencode|Neighborhood_Mitchel', 'SaleType_ConLw|PoolArea', 'Neighborhood_ClearCr|GarageQual_Gd', 'Neighborhood_Tencode|CentralAir_Y', 'LotArea|BsmtExposure_No', 'BsmtFinType1_BLQ|HouseStyle_2.5Unf', 'Electrical_FuseA|Electrical_FuseF', 'GarageQual_Po|BldgType_1Fam', 'Functional_Typ|BsmtFinType2_Rec', 'Exterior1st_BrkFace|LandContour_Lvl', 'GrLivArea|HalfBath', 'Functional_Mod|Street_Grvl', 'MiscFeature_Othr|Exterior2nd_AsphShn', 'Functional_Maj2|BldgType_TwnhsE', 'LandSlope_Mod|SaleCondition_Partial', 'ExterQual_TA|SaleType_ConLw', 'PavedDrive_N|Functional_Tencode', 'RoofStyle_Hip|Neighborhood_Timber', 'Exterior2nd_MetalSd|GarageArea', 'Heating_GasW|BsmtFinType1_Unf', 'GarageQual_Gd|OverallCond', 'MiscFeature_Othr|PavedDrive_Tencode', 'ExterCond_TA|BldgType_1Fam', 'LotConfig_Tencode|Neighborhood_Gilbert', 'ExterQual_TA|HeatingQC_Ex', 'Exterior2nd_Stone|GarageCond_TA', 'LotFrontage|Functional_Typ', 'HouseStyle_1Story|RoofStyle_Gambrel', 'LotShape_IR2|Exterior2nd_Brk Cmn', 'LandContour_Low|GarageCond_Ex', 'BsmtQual_Fa|FireplaceQu_Ex', 'HeatingQC_Ex|MSZoning_RL', 'LotConfig_Corner|Neighborhood_Veenker', 'ExterQual_TA|LotConfig_CulDSac', 'HouseStyle_2.5Unf', 'CentralAir_N|BsmtFinType1_GLQ', 'Exterior1st_AsbShng|SaleCondition_Alloca', 'LotArea|BsmtCond_Tencode', 'SaleCondition_Family|Neighborhood_Timber', 'GarageCond_Po|Functional_Min1', 'PavedDrive_Y|Neighborhood_Gilbert', 'Alley_Grvl|Exterior2nd_Plywood', 'Heating_GasA|BsmtFinType2_Rec', 'RoofMatl_CompShg|Exterior2nd_AsphShn', 'FireplaceQu_Po|Neighborhood_Timber', 'SaleCondition_Tencode|Neighborhood_IDOTRR', 'Exterior2nd_Stone|MiscFeature_Tencode', 'GarageQual_Fa|MoSold', 'BsmtQual_Tencode|LandSlope_Gtl', 'BldgType_Duplex|Functional_Typ', 'BsmtExposure_Tencode|Exterior2nd_CmentBd', '3SsnPorch|BsmtExposure_Mn', '1stFlrSF|Street_Pave', 'RoofStyle_Flat|BsmtCond_Fa', 'Exterior2nd_Tencode|BsmtUnfSF', 'Exterior2nd_CmentBd|MasVnrType_Tencode', 'BsmtFinSF1|Condition1_RRAn', 'GarageType_Tencode|WoodDeckSF', 'EnclosedPorch|Neighborhood_SawyerW', 'SaleType_ConLI|BsmtQual_Fa', 'GarageCars|TotRmsAbvGrd', 'RoofMatl_Tencode|BsmtCond_Gd', 'Functional_Tencode|SaleType_ConLD', 'HeatingQC_TA|OverallCond', 'SaleType_New|CentralAir_Tencode', 'Exterior2nd_Stone|Foundation_Tencode', 'Exterior2nd_BrkFace|Neighborhood_IDOTRR', 'Condition1_Artery|HouseStyle_1.5Fin', 'GarageQual_Gd|MiscFeature_Shed', 'BldgType_TwnhsE|Neighborhood_IDOTRR', 'Neighborhood_Somerst|RoofStyle_Gable', 'RoofStyle_Flat|TotRmsAbvGrd', 'BldgType_Twnhs|MasVnrType_Stone', 'Neighborhood_Edwards|ExterQual_Tencode', 'GarageType_Tencode|HalfBath', 'MSSubClass|HouseStyle_2Story', 'SaleCondition_Family|LandSlope_Gtl', 'BldgType_Twnhs|MasVnrType_BrkFace', 'LotFrontage|RoofMatl_WdShngl', 'BsmtFinType2_ALQ|CentralAir_Tencode', 'YearRemodAdd|Neighborhood_NWAmes', 'Exterior2nd_Tencode|ExterQual_Ex', 'SaleCondition_Family|BsmtFinType1_GLQ', 'LandContour_Bnk|GarageType_2Types', 'BedroomAbvGr|BsmtQual_Gd', 'Exterior2nd_Brk Cmn|Exterior2nd_Wd Shng', 'Neighborhood_NPkVill|GarageFinish_RFn', 'BsmtFinType2_ALQ|MiscVal', 'BsmtFinType2_Tencode|MSZoning_Tencode', 'Neighborhood_Mitchel|MiscFeature_Tencode', 'ExterCond_Gd|GarageFinish_RFn', 'SaleCondition_Alloca|BsmtCond_Fa', 'LotConfig_Tencode|Exterior1st_VinylSd', 'GarageFinish_Fin|ExterQual_Gd', 'Exterior1st_AsbShng|MasVnrType_BrkCmn', 'Exterior2nd_MetalSd|Exterior1st_WdShing', 'MSZoning_RM|GarageFinish_RFn', 'Exterior2nd_VinylSd|BsmtQual_Gd', 'GarageType_Tencode|BsmtFinSF1', 'LotShape_IR1|Alley_Grvl', 'GrLivArea|GarageQual_Tencode', 'EnclosedPorch|GarageCond_Fa', 'GarageCond_Po|GarageCond_TA', 'LowQualFinSF|Exterior2nd_HdBoard', 'Exterior2nd_MetalSd|BsmtUnfSF', 'LotShape_IR2|HeatingQC_Tencode', 'BsmtExposure_Tencode|SaleType_ConLw', 'GarageType_Tencode|Fence_GdWo', 'MSZoning_FV|Exterior1st_Tencode', 'Fireplaces|Exterior2nd_Wd Sdng', 'Exterior1st_Stucco|Neighborhood_MeadowV', '3SsnPorch|Fence_MnWw', 'Exterior2nd_Stone|GarageType_CarPort', 'RoofMatl_CompShg|BsmtFinSF1', 'LotArea|GarageArea', 'Alley_Pave|LotFrontage', 'BsmtFinType2_Tencode|Neighborhood_NWAmes', 'PoolQC_Tencode|RoofStyle_Tencode', 'ExterQual_TA|CentralAir_Tencode', 'Fence_GdPrv|Neighborhood_MeadowV', 'SaleType_ConLw|GarageCond_Ex', 'Neighborhood_ClearCr|SaleType_New', 'Functional_Typ|Condition2_Artery', 'LotShape_Reg|Alley_Pave', 'OverallQual|MSZoning_RH', 'Exterior1st_Stucco|Exterior2nd_CmentBd', 'Exterior2nd_Tencode|HouseStyle_SLvl', 'Neighborhood_NoRidge|KitchenQual_Ex', 'RoofStyle_Hip|KitchenQual_Ex', 'Condition1_Artery|GarageQual_Po', 'FireplaceQu_Tencode|PavedDrive_Y', 'SaleType_ConLI|BsmtFinType1_GLQ', 'GarageFinish_Tencode|Exterior1st_Wd Sdng', 'FireplaceQu_Tencode|GarageQual_TA', 'Electrical_FuseP|FireplaceQu_TA', 'LotShape_IR1|PavedDrive_Tencode', 'FullBath|BsmtFinType2_BLQ', 'LandContour_Tencode|Neighborhood_StoneBr', 'Exterior2nd_AsbShng|Condition2_Norm', 'SaleType_ConLw|MSZoning_RL', 'Functional_Typ|SaleType_ConLw', 'RoofStyle_Gable|LotShape_IR3', 'Neighborhood_ClearCr|Fireplaces', 'KitchenAbvGr|Foundation_CBlock', 'GarageType_Detchd|BldgType_Duplex', 'BsmtFinType1_Unf|MasVnrArea', 'SaleType_ConLI|RoofStyle_Gable', 'BsmtFinType1_Rec|OverallCond', 'Exterior2nd_Wd Sdng|ExterCond_Fa', 'HeatingQC_TA|KitchenQual_Tencode', 'BldgType_2fmCon|KitchenQual_Tencode', 'KitchenQual_Gd|Neighborhood_StoneBr', 'Neighborhood_SWISU|Condition1_RRAe', 'Neighborhood_OldTown|Exterior2nd_AsphShn', 'Functional_Tencode|Electrical_Tencode', 'RoofMatl_Tar&Grv|MasVnrType_Stone', 'Neighborhood_Veenker|Condition1_PosA', 'Neighborhood_Edwards|Alley_Grvl', 'MiscVal|Condition1_Feedr', 'Neighborhood_Somerst|ExterQual_Ex', 'Neighborhood_NPkVill|GarageType_Tencode', 'Heating_GasA|Foundation_CBlock', 'TotalBsmtSF|Foundation_CBlock', 'PavedDrive_N|GarageQual_Fa', 'Heating_GasW|Exterior2nd_Wd Shng', 'LotFrontage|SaleCondition_Family', 'PavedDrive_Y|Condition1_Feedr', 'Functional_Tencode|SaleType_New', 'OverallQual|SaleType_WD', 'LotFrontage|BsmtFinType2_GLQ', 'LowQualFinSF|GarageType_Attchd', 'LotConfig_FR2|LowQualFinSF', 'GarageQual_Gd|MasVnrType_Tencode', 'LotConfig_FR2|MSSubClass', 'Foundation_Stone|GarageType_CarPort', 'LotFrontage|Exterior1st_Plywood', 'SaleType_Tencode|BsmtFinType1_Unf', 'Functional_Tencode|Heating_Tencode', 'Condition1_PosN|Exterior1st_Wd Sdng', 'Exterior2nd_Stucco|GrLivArea', 'OpenPorchSF|MSZoning_FV', 'RoofStyle_Flat|HalfBath', 'Street_Tencode|MSZoning_C (all)', 'FireplaceQu_Gd|Condition1_RRAe', 'HouseStyle_SFoyer|BsmtQual_Fa', 'RoofStyle_Flat|GarageQual_Fa', 'PoolArea|Exterior2nd_Brk Cmn', 'Functional_Typ|Exterior1st_CemntBd', '3SsnPorch|Condition2_Norm', 'BsmtFinType2_LwQ|Exterior2nd_HdBoard', 'HeatingQC_TA|ExterQual_Gd', 'Functional_Tencode|PavedDrive_Y', 'BsmtQual_Tencode', 'BsmtFinType1_Tencode|BedroomAbvGr', 'EnclosedPorch|PavedDrive_P', 'HalfBath|BsmtFinType1_Rec', 'GarageType_BuiltIn|SaleType_COD', 'FireplaceQu_Po|Neighborhood_BrkSide', 'SaleType_New|BsmtExposure_No', 'GarageCond_TA|Neighborhood_MeadowV', 'Functional_Typ|Neighborhood_Sawyer', 'SaleType_ConLD|Neighborhood_SWISU', 'YearBuilt|Neighborhood_Edwards', 'RoofMatl_CompShg|MSZoning_RM', 'GarageType_Tencode|Exterior2nd_Plywood', 'BsmtQual_TA|GarageCond_Fa', 'Exterior2nd_Wd Sdng|SaleType_CWD', 'TotalBsmtSF|Exterior1st_MetalSd', 'TotalBsmtSF|HeatingQC_Ex', 'Foundation_Stone|MSZoning_RM', 'BsmtExposure_Mn|Functional_Min2', 'PavedDrive_Tencode|Exterior1st_Plywood', 'GarageFinish_Fin|LotConfig_FR2', 'KitchenAbvGr|Condition1_Artery', 'Foundation_PConc|BsmtFinType2_Rec', 'LandContour_Low|LotShape_IR1', 'BsmtFinType1_Tencode|GarageType_Basment', 'LotShape_IR2|LandContour_Bnk', 'BsmtFinType1_Unf|MasVnrType_BrkFace', 'GarageQual_TA|GarageQual_Po', 'Heating_Tencode|Neighborhood_SawyerW', 'Exterior2nd_AsbShng|BsmtFinType2_GLQ', 'HeatingQC_Tencode|Neighborhood_MeadowV', 'MSZoning_RM|Neighborhood_StoneBr', 'Neighborhood_Sawyer|HouseStyle_1.5Fin', 'ExterCond_TA|Exterior2nd_VinylSd', 'BsmtFinType1_BLQ|BsmtUnfSF', 'GarageFinish_Fin|RoofMatl_WdShngl', 'ExterQual_TA|Exterior1st_Wd Sdng', 'LandContour_Low|MSZoning_RL', 'GarageFinish_Fin|2ndFlrSF', 'BsmtFinSF1|GarageYrBlt', 'Condition1_Feedr|PoolArea', 'Neighborhood_SWISU|Exterior1st_Plywood', '1stFlrSF|BsmtFinType2_Rec', 'BsmtFinType2_Tencode|BsmtFullBath', 'BsmtQual_Tencode|Electrical_SBrkr', 'PavedDrive_Tencode|Neighborhood_NWAmes', 'Fence_GdPrv|PoolArea', 'GarageArea|ExterQual_Gd', 'OverallQual|LotConfig_FR2', 'Exterior2nd_BrkFace|Neighborhood_NWAmes', 'BsmtHalfBath|MSZoning_Tencode', 'LandContour_Tencode|WoodDeckSF', 'EnclosedPorch|Functional_Maj2', 'Exterior1st_BrkFace|Foundation_Tencode', 'KitchenQual_Ex|LandContour_Tencode', 'LotShape_IR2|MiscFeature_Othr', 'GarageQual_Gd|GarageFinish_Fin', 'RoofStyle_Gambrel|Fence_MnWw', 'LotFrontage|Functional_Mod', 'Neighborhood_Crawfor|BsmtFinSF1', 'ExterQual_TA|MasVnrType_Stone', 'Neighborhood_Blmngtn|Condition1_PosN', 'PavedDrive_N|ScreenPorch', 'Foundation_PConc|Neighborhood_BrkSide', 'Condition1_Artery|Exterior1st_VinylSd', 'Neighborhood_Mitchel|BsmtFinType2_ALQ', 'BsmtFinType2_Unf|LotConfig_Inside', 'LandContour_HLS|RoofStyle_Gambrel', 'GarageQual_Gd|LandSlope_Gtl', 'SaleType_New|GarageType_CarPort', 'Alley_Pave|Fireplaces', 'PavedDrive_N|BsmtFinType1_Tencode', 'Condition1_Feedr|BsmtCond_Tencode', 'KitchenQual_Gd|MasVnrType_BrkFace', 'BsmtExposure_Av|MSZoning_FV', 'BsmtFinType1_Tencode|Exterior1st_BrkComm', 'Neighborhood_BrDale|MoSold', 'LotShape_IR2|MoSold', 'HouseStyle_SFoyer|LandSlope_Mod', 'RoofMatl_CompShg|Fence_GdWo', 'RoofStyle_Gable|1stFlrSF', 'YrSold|CentralAir_Tencode', 'Fence_GdWo|Fence_MnPrv', 'HouseStyle_Tencode|Heating_GasW', 'OverallQual|Fence_MnPrv', 'BsmtQual_TA|HouseStyle_1.5Fin', 'RoofStyle_Flat|Neighborhood_Tencode', 'Condition1_Feedr|KitchenQual_TA', 'Alley_Tencode|Functional_Typ', 'HouseStyle_1Story|BldgType_TwnhsE', 'GarageType_BuiltIn|ExterQual_Tencode', 'Neighborhood_Veenker|ExterQual_Tencode', 'KitchenAbvGr|Foundation_Stone', 'LotShape_IR2|Exterior1st_MetalSd', 'MiscFeature_Othr|SaleType_ConLD', 'Neighborhood_StoneBr|Foundation_Slab', 'Neighborhood_OldTown|RoofStyle_Gambrel', 'HouseStyle_SLvl|ExterQual_Fa', 'LowQualFinSF|Condition1_RRAn', 'SaleCondition_Normal|GarageArea', 'Functional_Maj2|Functional_Mod', 'BsmtFinType2_Tencode|MasVnrArea', 'HouseStyle_1Story|BsmtExposure_No', 'Foundation_Tencode|MSZoning_FV', 'Exterior1st_HdBoard|SaleCondition_Alloca', 'Fence_GdPrv|FireplaceQu_Ex', 'Condition1_PosN|Condition1_RRAn', 'Exterior2nd_VinylSd|BsmtCond_Fa', 'Neighborhood_Edwards|RoofMatl_Tar&Grv', 'BsmtFinType2_ALQ|BsmtExposure_No', 'Exterior2nd_AsbShng|Fireplaces', 'Neighborhood_Crawfor|PavedDrive_P', 'GarageCond_TA|ExterQual_Fa', 'Heating_GasW|BsmtFullBath', 'LowQualFinSF|Functional_Min2', 'Fence_Tencode|Fence_MnWw', 'Electrical_FuseF|Condition1_RRAn', 'Exterior2nd_CmentBd|BsmtFinType1_Unf', 'Foundation_Stone|1stFlrSF', 'LotShape_IR2|PavedDrive_P', 'HeatingQC_Fa|MasVnrType_Stone', 'ExterQual_Ex|PavedDrive_P', 'BsmtFinType1_BLQ|Exterior2nd_BrkFace', 'BsmtQual_Tencode|Condition1_PosN', 'LandContour_Bnk|Street_Grvl', 'Neighborhood_NridgHt|ExterQual_Gd', 'HeatingQC_Gd|BsmtFinType1_GLQ', 'Functional_Tencode|Exterior2nd_Wd Sdng', 'Functional_Typ|GarageCond_Ex', 'OpenPorchSF|GarageType_2Types', 'Foundation_Tencode|MSZoning_RH', 'GarageFinish_Unf|Exterior2nd_CmentBd', 'LandContour_Bnk|Exterior2nd_Wd Sdng', 'SaleType_ConLD|GarageCond_Gd', 'Functional_Maj1|LotShape_IR3', 'Electrical_FuseF|BsmtFinType1_GLQ', 'Condition1_PosN|SaleType_Oth', 'Functional_Tencode|GarageQual_Gd', 'HouseStyle_Tencode|LandContour_Tencode', 'Foundation_PConc|PoolArea', 'Exterior1st_BrkComm|Alley_Grvl', 'BsmtFinType1_Tencode|YearRemodAdd', 'BsmtExposure_Tencode|GarageType_CarPort', 'GarageType_Detchd|GarageType_Basment', 'LandSlope_Tencode|GarageFinish_RFn', 'Neighborhood_OldTown|LotConfig_Inside', 'Electrical_Tencode|LandSlope_Mod', 'FireplaceQu_Gd|Foundation_Tencode', 'MasVnrType_BrkCmn|PavedDrive_P', 'GarageCond_Po|Street_Grvl', 'Neighborhood_Crawfor|MasVnrType_BrkFace', 'Fence_GdPrv|WoodDeckSF', 'KitchenQual_Gd|BldgType_1Fam', 'BldgType_TwnhsE|GarageType_2Types', 'BsmtQual_Tencode|MiscFeature_Tencode', 'RoofStyle_Flat|MasVnrArea', 'SaleCondition_Alloca|LandSlope_Gtl', 'Neighborhood_StoneBr|Neighborhood_Sawyer', 'EnclosedPorch|Exterior1st_WdShing', 'YearBuilt|Utilities_AllPub', 'ExterQual_TA|GarageCond_Ex', 'Exterior2nd_BrkFace|1stFlrSF', 'Fence_GdPrv|BsmtCond_Po', 'Exterior1st_BrkComm', 'Heating_GasW|GarageYrBlt', 'LandContour_Low|Exterior2nd_Wd Shng', 'FireplaceQu_Tencode|OverallCond', 'FireplaceQu_Gd|KitchenQual_Tencode', 'BsmtQual_Ex|Neighborhood_SWISU', 'Exterior2nd_AsbShng|Foundation_CBlock', 'GarageType_BuiltIn|FireplaceQu_Ex', 'GarageType_Tencode|1stFlrSF', 'LandSlope_Mod|SaleType_WD', 'HouseStyle_1Story|Heating_GasA', 'Neighborhood_NoRidge|Neighborhood_BrkSide', 'CentralAir_Y|WoodDeckSF', 'LandContour_Tencode|RoofStyle_Tencode', 'OverallQual|Fence_GdPrv', 'GarageQual_Gd|GarageYrBlt', 'BsmtFinType2_GLQ|LandSlope_Gtl', 'MoSold|Exterior2nd_Wd Sdng', 'OverallCond|Exterior2nd_Brk Cmn', 'FireplaceQu_Gd|BsmtFinType2_Tencode', 'BsmtFinType1_Unf|HouseStyle_SLvl', 'Electrical_SBrkr|BsmtCond_Po', 'Functional_Tencode|SaleType_Tencode', 'GarageQual_Gd|SaleType_ConLI', 'SaleCondition_Tencode|Condition1_PosN', 'SaleCondition_Alloca|Neighborhood_Gilbert', 'SaleType_ConLI|ExterQual_Fa', 'Fence_MnWw|HouseStyle_2Story', 'Exterior2nd_Wd Sdng|MasVnrType_Stone', 'LotConfig_Corner|MiscFeature_Othr', 'SaleCondition_Family|BsmtFullBath', 'KitchenQual_Gd|LandSlope_Mod', 'EnclosedPorch|BsmtFinType1_BLQ', 'SaleCondition_Tencode|Neighborhood_NPkVill', 'BsmtQual_Ex|FireplaceQu_Fa', 'SaleType_ConLw|Foundation_Slab', 'Neighborhood_ClearCr|Neighborhood_Crawfor', 'LotConfig_Corner|PavedDrive_Y', 'MoSold|Condition1_Tencode', 'Neighborhood_Somerst|Exterior2nd_Brk Cmn', 'Foundation_Stone|Heating_GasW', 'GarageArea|Condition1_Feedr', 'GarageFinish_Fin|KitchenQual_Tencode', 'GarageType_Detchd|LandContour_HLS', 'MSSubClass|GarageCond_Ex', 'BldgType_2fmCon|MiscVal', 'LandContour_Low|LandSlope_Tencode', 'Neighborhood_Somerst|KitchenQual_Fa', 'BsmtFinType2_BLQ|GarageType_2Types', 'BsmtFullBath|KitchenQual_Fa', 'FireplaceQu_Tencode|Exterior2nd_BrkFace', 'KitchenAbvGr|HouseStyle_2Story', 'OpenPorchSF|Condition2_Norm', 'Neighborhood_Edwards|MasVnrType_Stone', 'FullBath|Neighborhood_SWISU', 'Foundation_BrkTil|SaleType_CWD', 'HalfBath|Foundation_Slab', 'BsmtFinType2_Unf|Neighborhood_MeadowV', 'KitchenQual_Gd|Fence_MnWw', 'HouseStyle_Tencode|KitchenQual_Ex', 'Electrical_FuseA|MasVnrType_Stone', 'Neighborhood_Sawyer|BsmtFinType1_Unf', 'Exterior2nd_VinylSd|BsmtFinType1_Unf', 'GrLivArea|Condition1_Norm', 'MiscFeature_Shed|ExterQual_Ex', 'BsmtFinType2_ALQ|TotRmsAbvGrd', 'Neighborhood_NridgHt|SaleType_ConLD', 'Electrical_FuseA|Neighborhood_Veenker', 'BldgType_Duplex|SaleType_CWD', 'Heating_GasW|Street_Grvl', 'Alley_Tencode|Functional_Maj2', 'RoofStyle_Hip|LandContour_Bnk', 'LotShape_IR1|LandContour_Lvl', 'KitchenQual_Ex|Fence_GdWo', 'HouseStyle_SFoyer|BsmtQual_Tencode', 'Neighborhood_CollgCr|MasVnrType_BrkCmn', 'RoofMatl_Tencode|Exterior1st_Tencode', 'GarageQual_Fa|Electrical_FuseF', 'Fence_GdPrv|MSZoning_RL', 'Fence_GdPrv|Exterior1st_Tencode', 'ExterCond_TA|LotArea', 'PavedDrive_Y|MiscFeature_Shed', 'RoofMatl_CompShg|MSSubClass', 'FireplaceQu_Gd|SaleType_CWD', 'HeatingQC_TA|LotConfig_Inside', 'BldgType_2fmCon|BsmtCond_Tencode', 'Neighborhood_Mitchel|LotConfig_FR2', 'KitchenAbvGr|Condition1_PosA', 'BsmtFullBath|ExterCond_Fa', 'HouseStyle_SFoyer|Exterior1st_Tencode', 'LotShape_Reg|Neighborhood_OldTown', 'Neighborhood_Blmngtn|GarageFinish_Fin', 'FireplaceQu_Fa|ScreenPorch', 'ExterQual_Ex|MSZoning_RH', 'BldgType_2fmCon', 'BsmtFinType2_ALQ|RoofMatl_WdShngl', 'Exterior2nd_AsbShng|ExterCond_Tencode', 'YearRemodAdd|MiscVal', 'Foundation_Stone|BsmtFinType1_ALQ', 'RoofStyle_Gable|Neighborhood_Sawyer', 'Alley_Tencode|GarageType_CarPort', 'RoofStyle_Flat|ExterQual_Tencode', 'GrLivArea|Exterior2nd_Tencode', 'LandSlope_Sev|BsmtFinType1_GLQ', 'BldgType_Duplex|Exterior1st_Stucco', 'FireplaceQu_Po|Exterior2nd_VinylSd', 'LandContour_Tencode|LotShape_IR3', 'GarageFinish_Tencode|Neighborhood_NWAmes', 'SaleType_ConLI|BsmtExposure_No', 'Neighborhood_StoneBr|MasVnrType_Tencode', 'Foundation_PConc|MasVnrType_Stone', 'YearBuilt|GarageQual_Fa', 'BsmtFullBath|GarageType_Basment', 'BsmtFinType1_Rec|BsmtExposure_Mn', 'Neighborhood_SawyerW|WoodDeckSF', 'BldgType_Twnhs|Neighborhood_Gilbert', 'PavedDrive_Y|BsmtCond_Fa', 'OverallQual|Condition1_Feedr', 'LotShape_Reg|PavedDrive_Y', 'FireplaceQu_Po|BsmtQual_Tencode', 'HeatingQC_Ex|ExterCond_Fa', 'Exterior1st_BrkFace|PavedDrive_Tencode', 'HouseStyle_1.5Unf|Condition1_PosN', 'Electrical_FuseF|ExterCond_Fa', 'LotShape_IR2|MasVnrType_Stone', '2ndFlrSF|KitchenQual_Fa', 'BsmtExposure_Gd|LotShape_IR3', 'Heating_Grav|Fireplaces', 'Exterior2nd_Brk Cmn|Exterior1st_Tencode', 'GarageType_Basment|PavedDrive_P', 'GarageQual_Fa|Exterior2nd_MetalSd', 'Electrical_FuseA|BsmtFinType2_LwQ', 'Electrical_FuseF|Exterior2nd_Wd Shng', 'SaleType_ConLD|BsmtFinType1_GLQ', 'Neighborhood_Somerst|RoofStyle_Shed', 'Neighborhood_Veenker|Neighborhood_BrkSide', 'Neighborhood_NWAmes|BsmtFinType2_Unf', 'Exterior2nd_BrkFace|Condition1_RRAe', 'HouseStyle_2.5Unf|Exterior1st_WdShing', 'MSZoning_FV|MSZoning_RH', 'SaleCondition_Tencode|OpenPorchSF', 'RoofMatl_Tencode|GarageQual_Fa', 'LandSlope_Sev|HeatingQC_Ex', '1stFlrSF|ExterQual_Gd', 'Functional_Tencode|1stFlrSF', 'LandContour_Bnk|2ndFlrSF', 'KitchenQual_Ex|LandSlope_Gtl', 'Street_Grvl|MasVnrType_Stone', 'Fireplaces|GarageCond_Fa', 'Neighborhood_Edwards|BsmtFinSF1', 'PoolQC_Tencode|Neighborhood_StoneBr', 'GarageType_Tencode|Condition1_PosN', 'MiscVal|Utilities_AllPub', 'GarageType_Detchd|MSZoning_Tencode', 'HeatingQC_Fa|Foundation_Stone', 'Neighborhood_Edwards|Exterior2nd_MetalSd', 'FireplaceQu_Po|PavedDrive_Tencode', 'BsmtFinType1_Rec|Exterior2nd_HdBoard', 'GarageType_BuiltIn|CentralAir_Y', 'Condition1_Feedr|Exterior1st_Wd Sdng', 'ExterCond_Tencode|Exterior2nd_MetalSd', 'Electrical_SBrkr|Utilities_AllPub', 'GarageCond_TA|Neighborhood_StoneBr', 'BsmtFinType2_Unf|BsmtExposure_Gd', 'MiscVal|BldgType_TwnhsE', 'LotShape_Reg|MiscFeature_Gar2', 'Neighborhood_OldTown|MSZoning_RM', 'MiscFeature_Gar2|WoodDeckSF', 'GarageType_CarPort|BsmtCond_Fa', 'Heating_Grav|Exterior1st_Plywood', 'GarageType_Detchd|TotRmsAbvGrd', 'GarageQual_Po|SaleCondition_Partial', 'Foundation_Tencode|TotRmsAbvGrd', 'PavedDrive_Tencode|Exterior1st_BrkComm', 'Neighborhood_SWISU|PavedDrive_P', 'Neighborhood_Edwards|Condition1_Tencode', 'Condition1_RRAe|Alley_Grvl', 'LotShape_Reg|PavedDrive_P', 'HouseStyle_Tencode|BldgType_Tencode', 'HouseStyle_SLvl|LotShape_IR3', 'BldgType_Duplex|Exterior2nd_Brk Cmn', 'PoolQC_Tencode|MiscFeature_Tencode', 'Neighborhood_ClearCr|MSZoning_C (all)', 'LotShape_Reg|Neighborhood_Sawyer', 'LotConfig_Corner|SaleType_ConLI', 'Fence_GdPrv|Functional_Mod', 'Neighborhood_Gilbert|BsmtExposure_Gd', 'Functional_Tencode|BldgType_Twnhs', 'Exterior1st_BrkFace|Exterior1st_HdBoard', 'Neighborhood_NridgHt|BsmtCond_Tencode', 'BedroomAbvGr|Foundation_CBlock', 'BsmtFullBath|LowQualFinSF', 'GarageFinish_RFn|Exterior1st_WdShing', 'GarageType_CarPort|MasVnrType_Tencode', 'BsmtFinType2_LwQ|OverallCond', 'GarageCond_Ex|HouseStyle_2Story', 'RoofMatl_Tencode|YearBuilt', 'LandContour_Low|2ndFlrSF', 'GarageCond_Po|RoofStyle_Tencode', 'LotFrontage|PoolQC_Tencode', 'HouseStyle_SFoyer|Neighborhood_StoneBr', 'BsmtQual_Ex|MasVnrType_BrkFace', 'TotalBsmtSF|Condition1_RRAn', 'BldgType_1Fam|Foundation_Slab', 'GarageCond_Tencode|HouseStyle_SLvl', 'KitchenQual_Gd|Neighborhood_SWISU', 'Condition1_PosA|BsmtCond_Po', 'BsmtUnfSF|Exterior1st_Tencode', 'BsmtFinType1_BLQ|Functional_Mod', 'PoolArea|GarageFinish_RFn', 'FireplaceQu_Po|SaleType_COD', 'BedroomAbvGr|MSZoning_Tencode', 'Neighborhood_Veenker|BldgType_Tencode', 'Exterior1st_HdBoard|LotFrontage', 'Exterior2nd_Stone|SaleType_ConLD', 'ExterCond_Tencode|CentralAir_N', 'Condition1_Artery|HeatingQC_Ex', 'GarageCars|LotConfig_Inside', 'Utilities_Tencode|LotShape_IR1', 'RoofMatl_Tencode|CentralAir_Tencode', 'BsmtQual_Tencode|BsmtExposure_Mn', 'Electrical_Tencode|BsmtFinType2_ALQ', 'Neighborhood_Sawyer|MSZoning_RH', 'SaleType_Oth|Condition2_Norm', 'Fence_GdPrv|BsmtUnfSF', 'Functional_Typ|KitchenQual_Fa', 'Alley_Pave|Foundation_Stone', 'Exterior1st_CemntBd|Exterior1st_WdShing', 'HeatingQC_Ex|BldgType_1Fam', 'Electrical_Tencode|HouseStyle_Tencode', 'LandSlope_Sev|LotShape_IR3', '3SsnPorch|BsmtFinType2_Unf', 'Condition1_RRAe|MiscFeature_Tencode', 'Neighborhood_ClearCr|Exterior1st_Stucco', 'TotalBsmtSF|GarageCond_TA', 'ExterQual_TA|LotArea', 'KitchenAbvGr|ExterQual_TA', 'BsmtUnfSF|Neighborhood_Timber', 'Electrical_FuseA|PavedDrive_P', 'LandSlope_Mod|BsmtExposure_No', 'Exterior1st_BrkFace|BsmtFinType2_Unf', 'TotRmsAbvGrd|Exterior1st_Wd Sdng', 'Heating_GasA|LandSlope_Tencode', 'SaleCondition_Family|Condition2_Artery', 'MasVnrType_BrkCmn|MiscFeature_Gar2', 'FullBath|MasVnrType_BrkCmn', 'Electrical_FuseA|GarageFinish_RFn', 'FireplaceQu_Tencode|BsmtFinType2_Unf', 'LowQualFinSF', 'SaleType_New', 'GarageCond_Tencode|GarageCond_Fa', 'BsmtQual_Ex|Functional_Min1', 'Exterior2nd_AsbShng|MSZoning_RM', 'BldgType_Twnhs|Fence_GdPrv', 'ExterCond_Gd|Foundation_CBlock', 'Electrical_FuseP|BsmtFinType2_LwQ', 'Exterior2nd_Stone|Neighborhood_SWISU', 'Exterior2nd_VinylSd|Exterior2nd_CmentBd', 'PavedDrive_N|Exterior2nd_Tencode', 'Alley_Tencode|ExterCond_TA', 'Exterior1st_BrkFace|Exterior1st_Stucco', 'SaleType_WD|Condition2_Tencode', 'BsmtFinType1_GLQ|Neighborhood_MeadowV', 'BsmtExposure_Tencode|HeatingQC_Gd', 'TotRmsAbvGrd|Neighborhood_NWAmes', 'GarageCond_Ex|SaleType_CWD', 'RoofStyle_Hip|Foundation_Slab', 'HalfBath|SaleType_CWD', 'Alley_Pave|SaleType_COD', 'GarageType_Detchd|MiscFeature_Gar2', 'RoofMatl_CompShg|MasVnrType_None', 'LotShape_IR1|GarageType_CarPort', 'Neighborhood_SawyerW|LotShape_IR3', 'GarageFinish_Tencode|CentralAir_Y', 'Neighborhood_SWISU|BsmtCond_Fa', 'GarageType_Tencode|BsmtCond_Po', 'Exterior2nd_AsbShng|Exterior2nd_AsphShn', 'TotalBsmtSF|ExterCond_Gd', 'BsmtQual_Fa|MasVnrType_BrkFace', 'GarageFinish_Unf|SaleType_ConLD', 'Electrical_FuseP|GarageFinish_RFn', 'SaleType_COD', 'BsmtFinType1_LwQ|Neighborhood_IDOTRR', 'GarageQual_Po|BsmtExposure_No', 'MSSubClass|Foundation_Slab', 'Fireplaces|Exterior1st_VinylSd', 'GarageCond_Fa|FireplaceQu_TA', 'LandContour_Low|Neighborhood_ClearCr', 'Neighborhood_StoneBr|OverallCond', 'SaleType_WD|BsmtFullBath', 'BsmtFinType2_Tencode|SaleType_ConLI', 'LotConfig_Tencode|Exterior2nd_Plywood', 'TotRmsAbvGrd|MasVnrArea', 'GarageType_Basment|CentralAir_Y', 'PavedDrive_Tencode|GarageCond_Fa', 'BsmtFinType1_Tencode|SaleType_Tencode', 'GarageCond_TA|Exterior2nd_MetalSd', 'SaleType_Tencode|Foundation_Tencode', 'RoofMatl_Tencode|RoofStyle_Gable', 'Neighborhood_NoRidge|Exterior1st_Wd Sdng', 'Foundation_Stone|Functional_Maj1', 'KitchenQual_Gd|LotConfig_FR2', 'FireplaceQu_Gd|BsmtQual_TA', 'LotShape_IR1|ExterCond_Fa', 'YearBuilt|SaleType_Tencode', 'MiscFeature_Tencode', 'Heating_GasA|MSSubClass', 'Neighborhood_Tencode|ExterQual_Tencode', 'Exterior1st_HdBoard|GarageType_Tencode', 'GarageType_Basment|GarageType_2Types', 'RoofMatl_Tencode|BsmtFinType2_LwQ', 'HouseStyle_1Story|Foundation_Slab', 'BsmtFinType2_GLQ|RoofStyle_Gable', 'BsmtExposure_Gd|MasVnrArea', 'BsmtExposure_Av|Neighborhood_Sawyer', 'ExterQual_Tencode|HouseStyle_2Story', 'Condition1_PosA|MSSubClass', 'HouseStyle_Tencode|PavedDrive_Tencode', 'SaleCondition_Family|Functional_Min2', 'PavedDrive_N|YearRemodAdd', 'BsmtQual_Fa|OpenPorchSF', 'MSZoning_FV|BsmtFinType1_GLQ', 'HeatingQC_Gd|LandContour_Lvl', 'FullBath|SaleType_ConLw', 'GarageCond_Gd|Exterior2nd_Wd Shng', 'Heating_GasW|ExterQual_Ex', 'Neighborhood_Crawfor|ExterQual_Fa', 'Heating_Tencode|Foundation_Slab', 'HalfBath|FireplaceQu_Ex', 'PavedDrive_N|Electrical_FuseF', 'HouseStyle_SFoyer|SaleType_COD', 'Neighborhood_CollgCr|Functional_Min1', 'Neighborhood_NPkVill|BsmtFinType1_ALQ', 'HeatingQC_TA|Exterior2nd_Wd Sdng', 'Fireplaces|MSZoning_RH', 'GarageType_Attchd|GarageArea', 'CentralAir_Y|MSZoning_RL', 'EnclosedPorch|PavedDrive_Tencode', 'Foundation_Stone|MSZoning_Tencode', 'BsmtFinType1_Unf|Exterior1st_Wd Sdng', 'GarageType_Detchd|Street_Tencode', 'GarageType_CarPort|Exterior1st_Plywood', 'OverallCond', 'BsmtFinType2_BLQ|Neighborhood_NAmes', 'Exterior2nd_AsbShng|Neighborhood_Tencode', 'Neighborhood_Veenker|PavedDrive_Tencode', 'BsmtFinType1_BLQ|KitchenQual_Tencode', 'FireplaceQu_Gd|TotRmsAbvGrd', 'GrLivArea|RoofStyle_Flat', 'FireplaceQu_Tencode|3SsnPorch', 'Condition2_Tencode|Exterior2nd_CmentBd', 'GarageFinish_Fin|ScreenPorch', 'LandContour_Bnk|GarageYrBlt', 'MiscFeature_Othr|BsmtCond_Tencode', 'GarageType_Detchd|Neighborhood_NoRidge', 'Fence_MnPrv|HouseStyle_2Story', 'MSZoning_RM|SaleType_CWD', 'Exterior2nd_VinylSd|RoofMatl_Tar&Grv', 'BsmtFinType1_BLQ|SaleCondition_Alloca', 'LotShape_IR2|FullBath', 'Electrical_FuseP|WoodDeckSF', 'SaleType_WD|HouseStyle_SLvl', 'MasVnrType_BrkFace|HouseStyle_2Story', 'HouseStyle_1Story|Functional_Typ', 'FireplaceQu_Po|Exterior2nd_Plywood', 'FireplaceQu_Po|BsmtExposure_Av', 'BsmtHalfBath|Condition2_Artery', 'KitchenQual_Ex|Neighborhood_Edwards', 'TotRmsAbvGrd|Foundation_Slab', 'BsmtFinType1_Tencode|GarageType_CarPort', 'HouseStyle_2.5Unf|Exterior2nd_HdBoard', 'TotalBsmtSF|Condition1_PosA', 'GarageQual_Fa|2ndFlrSF', 'FireplaceQu_Gd|PavedDrive_Tencode', 'PavedDrive_P|Neighborhood_SawyerW', 'BsmtFinType1_Tencode|BsmtCond_Gd', 'Heating_GasA|MasVnrType_Tencode', 'BsmtHalfBath|CentralAir_Y', 'LandContour_HLS|KitchenQual_Fa', 'GarageCond_TA|Neighborhood_SWISU', 'RoofStyle_Flat|GarageQual_Po', 'Functional_Maj1|Foundation_CBlock', 'Alley_Tencode|RoofStyle_Shed', 'BsmtFinSF1|MSZoning_FV', 'LotConfig_CulDSac|Condition1_Tencode', 'Exterior2nd_VinylSd|Condition1_PosA', 'LowQualFinSF|Exterior1st_WdShing', 'BsmtExposure_Av|CentralAir_N', 'HeatingQC_Fa|HouseStyle_2.5Unf', 'KitchenAbvGr|Exterior1st_Tencode', 'Neighborhood_SWISU|Neighborhood_MeadowV', 'Exterior2nd_CmentBd|ExterCond_Fa', 'Exterior1st_AsbShng|MSSubClass', 'BsmtQual_Tencode|Exterior2nd_MetalSd', 'BsmtFinSF1|SaleCondition_Abnorml', 'Condition1_Norm|Functional_Mod', 'LotConfig_Corner|LotShape_IR3', 'GarageType_CarPort|Street_Pave', 'Exterior1st_BrkFace|PoolArea', 'BsmtFinType1_BLQ|Alley_Tencode', 'OverallQual|GarageYrBlt', 'LandContour_Bnk|SaleCondition_Alloca', 'SaleType_CWD|Exterior2nd_AsphShn', 'HeatingQC_TA|KitchenQual_Gd', 'Electrical_FuseP|LandSlope_Gtl', 'GarageFinish_Fin|Functional_Maj1', 'GarageCond_Gd|ExterQual_Ex', 'PoolQC_Tencode|3SsnPorch', 'YearRemodAdd|Neighborhood_SWISU', 'BsmtFinType1_BLQ|Exterior2nd_MetalSd', 'Exterior2nd_AsbShng|BsmtFinType2_Tencode', 'HeatingQC_Tencode|KitchenQual_Tencode', 'BldgType_TwnhsE|Functional_Min2', 'LandSlope_Tencode|SaleCondition_Normal', 'KitchenAbvGr|BsmtQual_Fa', 'BsmtFinType2_Unf|Exterior2nd_Plywood', 'Heating_Grav|SaleType_ConLI', 'BsmtFinType2_Tencode|LandSlope_Sev', 'PoolArea|Condition2_Norm', 'Foundation_PConc|Electrical_SBrkr', 'Neighborhood_Veenker|HouseStyle_1.5Fin', 'Neighborhood_BrkSide|Exterior2nd_AsphShn', 'MiscFeature_Othr|LandContour_Tencode', 'BsmtCond_Gd|Neighborhood_StoneBr', 'PavedDrive_N|Condition1_RRAn', 'BsmtQual_Ex|Condition1_Tencode', 'BsmtExposure_Gd|ExterQual_Fa', 'MasVnrType_BrkCmn|CentralAir_Tencode', 'Neighborhood_Somerst|MiscFeature_Tencode', 'BsmtFinType2_GLQ|ExterCond_Fa', 'Electrical_FuseA|Foundation_Tencode', 'MoSold|MSZoning_FV', 'Exterior2nd_VinylSd|BsmtFinType2_BLQ', 'Exterior2nd_Wd Shng|Exterior1st_Wd Sdng', 'Street_Tencode|BsmtQual_Gd', 'Neighborhood_CollgCr|LotArea', 'BsmtFinType1_ALQ|Foundation_Slab', 'BsmtUnfSF|HouseStyle_2.5Unf', 'GarageCond_Po|SaleType_ConLI', 'BsmtFinSF2|Fence_GdPrv', 'LandContour_Low|RoofMatl_CompShg', 'Exterior2nd_Stucco|Exterior2nd_AsphShn', 'Exterior1st_AsbShng|BsmtCond_TA', 'MSZoning_RM|GarageYrBlt', 'HouseStyle_1Story|SaleCondition_Alloca', 'Neighborhood_Edwards|BsmtCond_TA', 'Neighborhood_NoRidge|Street_Grvl', 'Exterior2nd_Wd Sdng|Foundation_Slab', 'FireplaceQu_Tencode|GarageType_BuiltIn', 'Foundation_Tencode|KitchenQual_Fa', 'RoofStyle_Hip|FireplaceQu_Gd', 'HeatingQC_TA|Condition2_Norm', 'RoofStyle_Hip|BldgType_2fmCon', 'BsmtQual_Fa|BldgType_1Fam', 'Heating_Grav|HouseStyle_2Story', 'Exterior2nd_Stucco|Electrical_FuseA', 'GarageCond_Gd|Condition1_Tencode', 'Condition1_PosN|Foundation_Slab', 'LotShape_Reg|Foundation_Stone', 'BldgType_2fmCon|ExterQual_Ex', 'LandSlope_Sev|BsmtQual_Gd', 'Neighborhood_ClearCr', 'Functional_Typ|Foundation_Tencode', 'Neighborhood_CollgCr|BsmtFinType1_GLQ', 'ExterCond_TA|OpenPorchSF', 'LotArea|Exterior2nd_Plywood', 'GarageCond_TA|Exterior1st_CemntBd', 'Street_Tencode|Exterior2nd_CmentBd', 'Neighborhood_Edwards|CentralAir_N', 'BsmtCond_Po|Neighborhood_SawyerW', 'BsmtFinType2_ALQ|Condition1_Feedr', 'Foundation_BrkTil|MiscFeature_Tencode', 'YearRemodAdd|Functional_Tencode', 'GrLivArea|LandSlope_Sev', 'HouseStyle_1.5Unf|Exterior1st_VinylSd', 'BsmtFinType2_Rec|Exterior1st_Plywood', 'Street_Tencode|BsmtFinType1_Tencode', 'GarageFinish_Fin|Heating_Tencode', 'Neighborhood_ClearCr|SaleCondition_Family', 'Foundation_Stone|BsmtQual_Gd', 'SaleType_WD|Neighborhood_NAmes', 'GarageFinish_Unf|BsmtExposure_Av', 'Functional_Maj2|Exterior2nd_Plywood', 'Neighborhood_NridgHt|Exterior1st_HdBoard', 'BsmtQual_Tencode|ExterQual_Gd', 'Neighborhood_ClearCr|Neighborhood_Edwards', 'MSZoning_RM|Neighborhood_SawyerW', 'Functional_Typ|Neighborhood_BrkSide', 'LotShape_Reg|Condition2_Tencode', 'LotShape_Tencode|YearBuilt', 'MSSubClass|HouseStyle_SLvl', 'EnclosedPorch|Neighborhood_NPkVill', 'FireplaceQu_Ex|Neighborhood_Gilbert', 'Neighborhood_Sawyer|GarageFinish_RFn', 'HeatingQC_Fa|Exterior1st_Wd Sdng', 'Neighborhood_NAmes|ScreenPorch', 'HeatingQC_Tencode|LandSlope_Gtl', 'HouseStyle_Tencode|Exterior1st_BrkComm', 'LandContour_HLS|BsmtCond_Gd', 'ExterQual_TA|MasVnrType_BrkCmn', 'KitchenQual_Gd|Fireplaces', 'Neighborhood_Mitchel|SaleType_Oth', 'LandContour_HLS|Neighborhood_BrkSide', 'HouseStyle_1Story|MSSubClass', 'Exterior1st_Stucco|GarageType_BuiltIn', 'BsmtQual_Ex|GarageType_2Types', 'BsmtCond_Fa|Exterior1st_MetalSd', 'Electrical_FuseA|LandSlope_Mod', 'Street_Tencode|SaleCondition_Alloca', '3SsnPorch|BsmtExposure_Av', 'LotConfig_FR2|BsmtFinType2_Unf', 'FireplaceQu_Po|MoSold', 'KitchenQual_Tencode|CentralAir_Y', 'LandContour_Lvl|HouseStyle_2Story', 'SaleType_ConLD|Exterior2nd_Plywood', 'Condition1_PosN|Exterior2nd_CmentBd', 'Neighborhood_BrDale|Functional_Maj2', 'GarageType_CarPort|GarageCond_Ex', 'Neighborhood_Mitchel|BsmtFinType1_Rec', 'RoofStyle_Flat|Functional_Typ', 'Neighborhood_Somerst|Street_Grvl', 'SaleCondition_Family|GarageType_CarPort', 'Neighborhood_Edwards|GarageFinish_RFn', 'Alley_Tencode|Exterior1st_MetalSd', 'GarageType_Detchd|KitchenQual_TA', 'Neighborhood_Somerst|SaleType_ConLw', 'Foundation_PConc|Exterior2nd_VinylSd', 'Foundation_PConc|BsmtFinType2_Unf', 'BsmtFinType2_Unf|Fence_MnWw', 'Neighborhood_Gilbert|GarageType_2Types', 'BsmtFinType1_BLQ|GarageFinish_RFn', 'HeatingQC_Gd|TotRmsAbvGrd', 'Utilities_Tencode|GarageType_CarPort', 'OverallQual|BsmtExposure_Gd', 'ExterCond_TA|LotConfig_Corner', 'Street_Tencode|Foundation_Slab', 'PavedDrive_Tencode|BsmtQual_Gd', 'Condition1_Artery|Electrical_FuseF', 'BsmtFinType2_Rec|GarageType_2Types', 'BsmtQual_Tencode|Neighborhood_Crawfor', 'BldgType_TwnhsE|Neighborhood_Crawfor', 'Exterior1st_Stucco|LotConfig_Inside', 'YrSold|HeatingQC_Ex', 'Exterior2nd_BrkFace|LandSlope_Gtl', 'Neighborhood_CollgCr|Condition1_Tencode', 'LotShape_Tencode|Exterior2nd_Wd Sdng', 'Condition2_Tencode|PavedDrive_P', 'HeatingQC_Fa|MiscVal', 'YrSold|Exterior1st_Wd Sdng', 'Neighborhood_BrDale|BsmtExposure_Gd', 'HeatingQC_TA|Neighborhood_BrkSide', 'SaleType_WD|GarageType_Basment', 'Foundation_PConc|OpenPorchSF', 'BsmtExposure_Tencode|Alley_Grvl', 'GarageFinish_Unf|GarageQual_TA', 'Foundation_CBlock|Exterior1st_MetalSd', 'Exterior2nd_AsbShng|RoofMatl_Tar&Grv', 'GarageQual_Po|OverallCond', 'BsmtFinType1_Rec|Neighborhood_Timber', 'BsmtFinType2_GLQ|MiscFeature_Gar2', 'RoofMatl_CompShg|Foundation_CBlock', 'Neighborhood_NridgHt|HouseStyle_2.5Unf', 'Condition1_RRAe|MiscFeature_Shed', 'Heating_Grav|Fence_GdWo', 'BsmtExposure_Gd|Foundation_Slab', 'Alley_Tencode|MasVnrType_Stone', 'Neighborhood_CollgCr|PavedDrive_Y', 'Neighborhood_Somerst|SaleCondition_Alloca', 'KitchenQual_Gd|Exterior2nd_VinylSd', 'BsmtFinSF1|GarageQual_Tencode', 'Fence_Tencode|Exterior1st_Tencode', 'Foundation_PConc|Neighborhood_NWAmes', 'GarageType_Detchd|Heating_GasW', 'Electrical_FuseA|GarageYrBlt', 'FireplaceQu_Gd|Exterior2nd_AsphShn', 'ExterQual_TA|GarageCond_Tencode', 'LandContour_Bnk|LotConfig_CulDSac', 'BldgType_Tencode|BsmtFinType1_GLQ', 'SaleCondition_Family|Condition1_Feedr', 'Neighborhood_NoRidge|Electrical_SBrkr', 'BsmtFinType2_GLQ|MasVnrType_None', 'BldgType_2fmCon|Exterior2nd_Tencode', 'Utilities_Tencode|Exterior2nd_Brk Cmn', 'BsmtQual_TA|RoofStyle_Tencode', 'LandContour_Lvl|GarageType_2Types', 'Electrical_FuseF|SaleCondition_Partial', 'GarageQual_Fa|Functional_Mod', 'LotArea|MasVnrArea', 'Neighborhood_Blmngtn|BsmtFinType1_GLQ', 'BsmtFinType2_Tencode|ExterCond_Fa', 'SaleCondition_Family|MSZoning_RL', 'LandSlope_Tencode|GarageType_Attchd', 'LandContour_Low|BsmtQual_Fa', 'GarageFinish_Tencode|GarageType_2Types', 'FireplaceQu_Gd|LotConfig_FR2', 'Exterior2nd_Stucco|MiscFeature_Shed', 'GarageQual_TA|Neighborhood_IDOTRR', 'Neighborhood_Somerst|BsmtFinSF1', 'Heating_GasW|BedroomAbvGr', 'GarageQual_Gd|SaleType_Oth', 'Condition1_Artery|Functional_Maj2', 'YearRemodAdd|LandSlope_Gtl', 'LotConfig_Tencode|BsmtFinSF1', 'LandSlope_Mod|PavedDrive_Tencode', 'FullBath|OverallCond', 'Foundation_PConc|RoofStyle_Gambrel', 'HouseStyle_1Story|SaleType_ConLD', 'GarageFinish_Fin|LandContour_HLS', 'BsmtFinType1_BLQ|Neighborhood_Edwards', 'Condition2_Artery|MSZoning_RH', 'Exterior2nd_AsbShng|HouseStyle_1Story', 'BldgType_Twnhs|Foundation_BrkTil', 'GarageFinish_Fin|MasVnrArea', 'LotFrontage|GarageType_BuiltIn', 'Exterior1st_BrkFace|SaleCondition_Abnorml', 'SaleType_Tencode|GarageFinish_RFn', 'Exterior1st_BrkComm|BsmtCond_Fa', 'Fence_GdWo|Exterior2nd_AsphShn', 'TotalBsmtSF|RoofMatl_Tar&Grv', 'GarageCars|LandSlope_Sev', 'GarageQual_Gd|Condition1_Norm', 'LotShape_IR1|ExterQual_Tencode', 'Street_Tencode|SaleCondition_Partial', 'GarageCond_Po|BsmtQual_Fa', 'Neighborhood_NPkVill|MSSubClass', 'FireplaceQu_Tencode|GarageType_Attchd', 'SaleType_New|BsmtExposure_Mn', 'GarageCond_Fa|CentralAir_Y', 'LotShape_Reg|MasVnrType_Stone', '3SsnPorch|BsmtQual_TA', '3SsnPorch|BsmtFullBath', 'HeatingQC_Ex|SaleCondition_Abnorml', 'Foundation_Stone|Condition1_PosA', 'Foundation_PConc|Neighborhood_NAmes', 'PavedDrive_Tencode|MiscFeature_Shed', 'LandContour_Low|HouseStyle_2Story', 'Condition2_Artery|MSZoning_FV', 'ExterCond_TA|RoofMatl_WdShngl', 'Exterior2nd_Stucco|Neighborhood_BrDale', 'MiscFeature_Shed|SaleType_COD', 'GarageType_Detchd|BsmtCond_Fa', 'Exterior1st_HdBoard|BldgType_Tencode', 'HeatingQC_Ex|MiscFeature_Gar2', 'Neighborhood_Blmngtn|Condition1_Norm', 'OverallQual|MasVnrType_BrkCmn', 'GarageQual_TA|GarageFinish_RFn', 'OverallQual|GarageCond_Ex', 'Condition2_Tencode|SaleType_New', 'BsmtExposure_Tencode|BsmtExposure_Mn', 'BsmtFinType2_BLQ|Functional_Maj2', 'BsmtCond_Po|Condition1_Tencode', 'GrLivArea|Neighborhood_Mitchel', 'Exterior2nd_Tencode|Neighborhood_Gilbert', 'SaleType_WD|GarageType_CarPort', 'FireplaceQu_Tencode|Electrical_Tencode', 'Fireplaces|BsmtFinSF2', 'Foundation_Tencode|LotConfig_Tencode', 'Heating_GasW|2ndFlrSF', 'Neighborhood_BrDale|Neighborhood_SawyerW', 'MSSubClass|Exterior1st_WdShing', 'GarageFinish_Fin|MiscVal', 'Exterior2nd_Wd Shng|BsmtCond_Fa', 'Neighborhood_ClearCr|MasVnrType_Tencode', 'MiscFeature_Othr|LandSlope_Tencode', 'MoSold|BsmtUnfSF', 'LotShape_Tencode|HouseStyle_Tencode', 'Exterior1st_Stucco|MSZoning_RL', 'HeatingQC_Gd|PavedDrive_P', 'TotalBsmtSF|Exterior1st_Tencode', 'BsmtCond_Po|MasVnrType_BrkFace', 'FullBath|PoolArea', 'ExterCond_TA|BldgType_TwnhsE', 'LotShape_IR2|Condition2_Artery', 'GrLivArea|BsmtCond_Tencode', 'RoofMatl_CompShg|Electrical_FuseF', 'Exterior1st_Stucco|2ndFlrSF', 'SaleCondition_Tencode|SaleCondition_Alloca', 'GarageFinish_Fin|BsmtCond_TA', 'BsmtUnfSF|Exterior1st_WdShing', 'RoofMatl_Tar&Grv|MiscFeature_Gar2', 'Neighborhood_Sawyer|BsmtFinSF1', 'BsmtCond_TA|GarageType_2Types', 'Neighborhood_OldTown|MasVnrType_BrkCmn', 'Condition1_Feedr|BsmtExposure_No', 'BldgType_2fmCon|Condition1_Norm', 'EnclosedPorch|Neighborhood_Somerst', 'Neighborhood_CollgCr|Exterior1st_Stucco', 'RoofMatl_CompShg|MSZoning_Tencode', 'MasVnrType_BrkFace', 'FireplaceQu_Fa|Condition1_RRAn', 'MiscFeature_Tencode|PavedDrive_P', 'Fence_GdPrv|MasVnrType_BrkFace', 'PavedDrive_P|SaleType_CWD', 'BsmtHalfBath|Condition1_RRAn', 'MSZoning_RM|KitchenQual_TA', 'Condition1_PosA|KitchenQual_TA', 'HouseStyle_1Story|Neighborhood_Somerst', 'Neighborhood_NoRidge|Fence_MnWw', 'Heating_GasW|Exterior2nd_Brk Cmn', 'Condition2_Tencode|Exterior2nd_Wd Shng', 'LandContour_Tencode|Condition1_PosA', 'RoofMatl_Tar&Grv|Neighborhood_BrkSide', 'HouseStyle_Tencode|Exterior1st_Stucco', 'Foundation_Tencode|LandSlope_Tencode', 'GarageFinish_Unf|SaleType_ConLI', 'GarageType_Detchd|BsmtFinType1_ALQ', 'BldgType_Duplex|Neighborhood_Blmngtn', 'BsmtUnfSF|Condition1_RRAn', 'MSZoning_C (all)|GarageCond_Fa', 'PavedDrive_Tencode|RoofMatl_WdShngl', 'RoofStyle_Flat|SaleType_Oth', 'Exterior2nd_Stucco|TotalBsmtSF', 'SaleCondition_Alloca|MSZoning_RL', 'BsmtFinType1_Tencode|BldgType_Twnhs', 'Neighborhood_Blmngtn|Condition1_Tencode', 'GarageCond_Tencode|BsmtFinType1_GLQ', 'Condition1_PosA|ExterQual_Ex', 'Electrical_FuseP|MSZoning_RH', 'PoolQC_Tencode|Exterior2nd_Wd Sdng', 'Neighborhood_Mitchel|OverallCond', 'EnclosedPorch|Exterior2nd_VinylSd', 'BsmtExposure_Tencode|RoofMatl_CompShg', 'BsmtQual_TA|SaleType_COD', 'BsmtQual_Tencode|Foundation_Slab', 'Fence_GdWo|Exterior1st_Wd Sdng', 'LandSlope_Tencode|BsmtExposure_Mn', 'BsmtFinType1_BLQ|LotConfig_CulDSac', 'Exterior1st_BrkFace|LotConfig_FR2', 'TotRmsAbvGrd|MoSold', 'Neighborhood_Edwards|HouseStyle_1.5Unf', 'FireplaceQu_Po|GarageType_BuiltIn', 'YrSold|GarageQual_Gd', 'BldgType_2fmCon|HeatingQC_Fa', 'RoofMatl_CompShg|GarageArea', 'SaleType_ConLw|BsmtCond_Fa', 'Heating_GasA|Neighborhood_Mitchel', 'YearBuilt|Exterior2nd_AsphShn', 'GarageCond_TA|SaleType_ConLw', 'GarageFinish_Tencode|RoofStyle_Gambrel', 'LandContour_HLS|Condition1_Tencode', 'BsmtFinType1_Tencode|Exterior2nd_Brk Cmn', 'SaleType_WD|GarageFinish_Tencode', 'Fireplaces|BsmtFinType2_Rec', 'Neighborhood_IDOTRR|HouseStyle_1.5Fin', 'FullBath|BsmtExposure_Av', 'Electrical_Tencode|Condition2_Tencode', 'Neighborhood_NAmes|BsmtExposure_Gd', 'FireplaceQu_Po|Exterior2nd_Wd Sdng', 'MSZoning_RM|BldgType_Tencode', 'LotShape_Reg|BsmtFinType1_GLQ', 'Alley_Tencode|CentralAir_N', 'BldgType_Twnhs|Functional_Mod', 'Foundation_PConc|Neighborhood_CollgCr', 'Exterior1st_HdBoard|RoofStyle_Gambrel', 'Fence_GdPrv|GarageType_Basment', 'Exterior2nd_Stone|MoSold', 'KitchenQual_Gd|HeatingQC_Ex', 'Exterior2nd_Stucco|Exterior1st_Wd Sdng', 'BedroomAbvGr|GarageFinish_RFn', 'Utilities_Tencode|GarageCond_Po', 'HeatingQC_Ex|Alley_Grvl', 'HouseStyle_Tencode|MasVnrType_BrkFace', 'Condition1_RRAn|BsmtFinType1_GLQ', 'FireplaceQu_Gd|GarageFinish_RFn', 'BsmtFinType2_Tencode|BldgType_TwnhsE', 'SaleType_ConLw|MSZoning_RM', 'RoofStyle_Flat|Exterior2nd_Wd Shng', 'Electrical_FuseF|GarageCond_Fa', 'SaleType_New|Fence_MnPrv', 'Neighborhood_Tencode|GarageType_Basment', 'LandContour_Low|LandSlope_Sev', 'MiscFeature_Othr|RoofStyle_Tencode', 'ExterCond_Tencode|HouseStyle_1.5Fin', 'Neighborhood_BrDale|Neighborhood_Veenker', 'HeatingQC_Fa|Condition1_Norm', 'BldgType_Duplex|HouseStyle_2.5Unf', 'SaleType_ConLw|Functional_Maj1', 'BsmtFinType1_Rec|SaleType_Oth', 'Neighborhood_NWAmes|Exterior2nd_Plywood', 'MiscFeature_Othr|Exterior2nd_HdBoard', 'BsmtFinType2_ALQ|GarageArea', 'MiscFeature_Tencode|Exterior1st_MetalSd', 'BsmtFinType1_GLQ|Neighborhood_Timber', 'HeatingQC_Fa|ExterQual_Ex', 'LotShape_IR2|Condition1_RRAe', 'ExterCond_Tencode|BsmtCond_Fa', 'TotRmsAbvGrd|BsmtExposure_Av', 'Functional_Maj2|GarageYrBlt', 'ExterQual_Tencode|Fence_MnPrv', 'Foundation_Tencode|Exterior1st_Wd Sdng', 'KitchenQual_Gd|RoofMatl_CompShg', 'BsmtFinType2_GLQ|Street_Grvl', 'Exterior2nd_BrkFace|LotShape_IR3', 'Neighborhood_Veenker|Exterior1st_MetalSd', 'Neighborhood_BrDale|WoodDeckSF', 'Condition1_Feedr|CentralAir_Tencode', 'Utilities_Tencode|SaleType_CWD', 'OverallQual|MiscFeature_Othr', 'MiscFeature_Othr|MSZoning_RM', 'SaleType_ConLD|HouseStyle_1.5Unf', 'FireplaceQu_Po|MiscFeature_Tencode', 'Heating_Grav|BsmtExposure_Mn', 'Condition1_RRAe|Neighborhood_MeadowV', 'GarageCars|GarageType_Basment', 'FireplaceQu_Tencode|FireplaceQu_Gd', 'Neighborhood_Somerst|BsmtExposure_Mn', 'GarageQual_Gd|Functional_Maj2', 'LotConfig_Corner|BsmtFinType1_Unf', 'HouseStyle_Tencode|Neighborhood_SWISU', 'KitchenQual_Ex|SaleType_ConLI', 'PavedDrive_N|BsmtCond_TA', 'BsmtFinSF2|LandContour_Lvl', 'KitchenQual_Ex|YearBuilt', 'Exterior2nd_Tencode|BsmtFinType2_Unf', 'MoSold|ExterQual_Fa', 'SaleCondition_Partial|BsmtExposure_No', 'HeatingQC_Fa|Exterior2nd_AsphShn', 'Heating_GasW|WoodDeckSF', 'Exterior1st_AsbShng|SaleType_CWD', 'HeatingQC_Gd|BsmtCond_Po', 'Exterior2nd_Tencode|Electrical_SBrkr', 'Exterior2nd_Brk Cmn|Condition1_RRAn', 'GarageCond_Gd|BsmtCond_Tencode', 'Neighborhood_Somerst|GarageCond_Tencode', 'MiscFeature_Shed|CentralAir_Tencode', 'Heating_Grav|Alley_Grvl', 'LandSlope_Tencode', 'BsmtFinType1_GLQ|Exterior2nd_Plywood', 'BsmtFinType1_ALQ|MSZoning_RM', 'RoofStyle_Tencode|Functional_Min2', 'Alley_Tencode|MSZoning_RM', 'LandContour_Lvl|Exterior2nd_HdBoard', 'Electrical_SBrkr', 'Exterior1st_BrkFace|MSZoning_RL', 'LotConfig_Corner|Neighborhood_Timber', 'PavedDrive_N|Exterior1st_CemntBd', 'Condition1_Artery|HouseStyle_1Story', 'BsmtQual_TA|Condition1_Tencode', 'Alley_Tencode|HeatingQC_Tencode', 'Street_Tencode|Foundation_CBlock', 'PavedDrive_Y|MasVnrType_BrkFace', 'GarageQual_Tencode|Fence_MnPrv', 'LandContour_HLS|HeatingQC_Ex', 'YrSold|BsmtFinType2_BLQ', 'LotConfig_CulDSac|GarageQual_Fa', 'BsmtFinType2_GLQ|GarageType_2Types', 'Foundation_PConc|Functional_Min2', 'LotArea|TotRmsAbvGrd', 'Street_Tencode|MiscFeature_Shed', 'Functional_Typ|Neighborhood_SWISU', 'LotConfig_Corner|Utilities_AllPub', 'Electrical_Tencode|BldgType_TwnhsE', 'ExterCond_TA|GarageCond_Gd', 'BsmtExposure_Tencode|Condition2_Artery', 'BsmtFinType2_Rec|BsmtCond_Tencode', 'HeatingQC_Fa|Neighborhood_Sawyer', 'LandSlope_Mod|BsmtExposure_Av', 'Foundation_PConc|GarageArea', 'Exterior1st_AsbShng|FireplaceQu_Ex', 'PavedDrive_N|BsmtFinType1_BLQ', 'Heating_Grav|RoofStyle_Gable', 'MiscVal|Fence_MnWw', 'PavedDrive_N|MiscFeature_Tencode', 'SaleCondition_Tencode|Electrical_SBrkr', 'BsmtFinType2_Rec|MasVnrType_BrkFace', 'SaleCondition_Family|BsmtFinType2_LwQ', 'Neighborhood_Sawyer|KitchenQual_TA', 'Electrical_FuseA|BsmtFinSF2', 'HouseStyle_1.5Unf|Neighborhood_Timber', 'GarageType_Detchd|GarageCars', 'Fence_Tencode|Neighborhood_OldTown', 'BedroomAbvGr|GarageCond_Ex', 'HeatingQC_Ex|1stFlrSF', 'RoofStyle_Flat|WoodDeckSF', 'Fence_GdPrv|GarageQual_TA', 'GarageType_Detchd|BldgType_2fmCon', 'GarageCond_Po|GarageQual_TA', 'Foundation_Stone|Neighborhood_SawyerW', 'LotFrontage|OpenPorchSF', 'BsmtUnfSF|MSZoning_RL', 'HalfBath|Alley_Grvl', 'Electrical_FuseA|HouseStyle_SLvl', 'Alley_Pave|ExterQual_Fa', 'HeatingQC_TA|FireplaceQu_TA', 'SaleType_WD|ScreenPorch', 'Heating_GasA|Heating_Tencode', 'Utilities_Tencode|LotConfig_CulDSac', 'ExterCond_TA|Exterior1st_Plywood', 'Foundation_PConc|BedroomAbvGr', 'ExterQual_Tencode|HouseStyle_SLvl', 'BsmtExposure_Gd|MSZoning_RL', 'Exterior2nd_Stucco|KitchenQual_Gd', 'Electrical_SBrkr|ExterCond_Fa', 'Neighborhood_Somerst|MasVnrArea', 'Exterior1st_AsbShng|HeatingQC_Tencode', 'GarageType_Attchd|Condition1_RRAn', 'LandContour_Tencode|HalfBath', 'BsmtExposure_Av|Exterior1st_BrkComm', 'Condition1_PosN|Condition2_Norm', 'BldgType_2fmCon|SaleType_WD', 'BldgType_Tencode|BsmtFinType1_Unf', 'LotFrontage|SaleType_New', 'BsmtFinType1_BLQ|SaleType_ConLI', 'Condition1_PosA|Exterior2nd_HdBoard', 'HeatingQC_Fa|Functional_Maj1', 'FireplaceQu_Tencode|GarageType_Detchd', 'RoofMatl_Tar&Grv|Neighborhood_Sawyer', 'Condition1_PosN|ExterQual_Gd', 'Neighborhood_Mitchel|MasVnrType_Stone', 'KitchenAbvGr|LandSlope_Gtl', 'Exterior1st_BrkFace|MasVnrType_Tencode', 'Exterior1st_BrkFace|BsmtQual_Tencode', 'MiscFeature_Shed|Exterior1st_BrkComm', 'GarageCond_Gd|Exterior1st_BrkComm', 'Alley_Pave|Heating_GasW', 'Functional_Tencode|Exterior2nd_AsphShn', 'SaleCondition_Tencode|Exterior2nd_VinylSd', 'Exterior1st_BrkFace|GarageType_CarPort', 'FireplaceQu_Gd|SaleType_ConLw', 'Heating_GasW|LandSlope_Tencode', 'GarageCond_TA|Fence_MnWw', 'LotShape_Reg|RoofStyle_Shed', 'Street_Tencode|Alley_Tencode', 'RoofStyle_Shed|Exterior1st_VinylSd', 'Neighborhood_NoRidge|Condition2_Artery', 'MiscFeature_Gar2|BsmtCond_TA', 'HouseStyle_SFoyer|ExterQual_Tencode', 'BsmtUnfSF|KitchenQual_Fa', 'Exterior1st_BrkFace|Neighborhood_Edwards', 'BsmtHalfBath|SaleType_ConLD', 'FireplaceQu_Po|RoofMatl_Tar&Grv', 'Neighborhood_Edwards|TotRmsAbvGrd', 'Exterior2nd_Wd Sdng|Exterior1st_BrkComm', 'BsmtFinType1_ALQ|MSZoning_Tencode', 'GarageQual_TA|SaleType_Oth', 'Utilities_Tencode|Condition1_PosA', 'TotRmsAbvGrd|MSSubClass', 'BsmtFinType2_GLQ|SaleType_ConLw', 'Neighborhood_NridgHt|Condition1_Norm', 'BsmtFinType1_BLQ|LotConfig_Corner', 'Heating_Tencode|Alley_Grvl', 'SaleCondition_Normal|BsmtCond_Tencode', 'GarageQual_Gd|MSZoning_Tencode', 'GarageCond_Fa|Neighborhood_Crawfor', 'MiscVal|BsmtFinType1_ALQ', 'BsmtCond_Gd|BsmtQual_Gd', 'Condition1_RRAe|Fence_MnPrv', 'ScreenPorch|MiscFeature_Gar2', 'HeatingQC_Gd|Exterior2nd_BrkFace', 'LandContour_Tencode|Exterior1st_CemntBd', 'BsmtExposure_No|LotShape_IR3', 'BsmtFinType2_Unf|CentralAir_N', 'Functional_Maj2|MiscFeature_Shed', 'BsmtFinType2_Rec|Condition1_Tencode', 'CentralAir_Tencode', 'ExterQual_TA|LotShape_IR3', 'LandSlope_Tencode|Neighborhood_Gilbert', 'PavedDrive_N|BsmtFinType2_ALQ', 'Exterior2nd_Plywood|Foundation_Slab', 'BsmtFinType1_LwQ|BsmtExposure_No', 'Neighborhood_ClearCr|SaleType_ConLD', 'LandContour_Lvl|Exterior2nd_Plywood', 'BldgType_Twnhs|HouseStyle_Tencode', '1stFlrSF|Exterior2nd_Wd Sdng', 'YearBuilt|Alley_Grvl', 'BsmtFinType2_Unf|GarageQual_Tencode', 'ExterQual_Gd|Exterior1st_Tencode', 'Electrical_SBrkr|RoofStyle_Gambrel', 'HeatingQC_Fa|Neighborhood_Tencode', 'GarageCond_Fa|Condition1_Norm', 'HeatingQC_Gd|BsmtUnfSF', 'LotConfig_FR2|Condition1_RRAe', 'KitchenQual_Ex|Alley_Grvl', 'FireplaceQu_Tencode|Neighborhood_NoRidge', 'GarageType_Detchd|PavedDrive_Tencode', 'GarageType_Detchd|BsmtCond_Tencode', 'Neighborhood_NridgHt|BsmtFinType1_Tencode', 'Fence_Tencode|Exterior1st_Plywood', 'Condition1_Feedr|BldgType_Tencode', 'BedroomAbvGr|MSZoning_FV', 'RoofMatl_Tencode|SaleType_WD', 'BldgType_2fmCon|Condition1_Feedr', 'GarageCond_TA|BsmtCond_Fa', 'FireplaceQu_Gd|Exterior2nd_HdBoard', 'BsmtExposure_Tencode|Exterior1st_MetalSd', 'Condition2_Tencode|Neighborhood_Timber', 'Neighborhood_Blmngtn|Neighborhood_CollgCr', 'EnclosedPorch|FireplaceQu_TA', 'BsmtQual_Fa|Exterior1st_BrkComm', 'HeatingQC_Gd|Functional_Min1', 'BsmtQual_Fa|BsmtCond_TA', 'TotalBsmtSF|SaleType_Oth', 'Functional_Typ|SaleType_COD', 'Alley_Grvl|Neighborhood_BrkSide', 'BsmtFinType2_ALQ|MasVnrType_Stone', 'Foundation_BrkTil|Condition1_PosA', 'KitchenAbvGr|Alley_Tencode', 'Exterior2nd_Stone|RoofMatl_Tencode', 'GarageCond_TA|BsmtFinType2_Unf', 'RoofStyle_Flat|Electrical_SBrkr', 'FireplaceQu_Po|Exterior1st_VinylSd', 'Electrical_FuseP|GarageQual_TA', 'FireplaceQu_Po|LandSlope_Tencode', 'RoofMatl_Tencode|SaleType_COD', 'BldgType_Twnhs|BsmtCond_Fa', 'Neighborhood_NridgHt|Exterior2nd_AsphShn', 'YearBuilt|GarageCond_Ex', 'RoofStyle_Gambrel|Fence_MnPrv', 'GarageFinish_Tencode|HouseStyle_SLvl', 'Alley_Pave|HeatingQC_Gd', 'GarageFinish_Fin|GarageCond_Fa', 'Heating_Grav|GarageQual_TA', 'Neighborhood_Mitchel|MSZoning_FV', 'Functional_Min1|LotConfig_Inside', 'Foundation_PConc|Street_Pave', 'Neighborhood_Edwards|BsmtFinType1_LwQ', 'Foundation_BrkTil|GarageCond_Fa', 'Exterior2nd_Stone|Street_Tencode', 'Exterior2nd_MetalSd|BsmtFinType1_GLQ', 'Neighborhood_Edwards|Fence_MnPrv', 'HouseStyle_1Story|CentralAir_N', 'Neighborhood_NridgHt|Functional_Mod', 'Neighborhood_NPkVill|TotRmsAbvGrd', 'GarageCond_Tencode|Fence_GdPrv', 'OverallCond|MasVnrArea', 'Foundation_CBlock|Exterior1st_WdShing', 'MiscFeature_Othr|Condition1_Norm', 'LotArea|PavedDrive_P', 'SaleCondition_Family|GarageQual_Po', 'LotShape_IR2|BsmtFinType1_LwQ', 'Street_Grvl|Exterior2nd_HdBoard', 'RoofStyle_Tencode|KitchenQual_Fa', 'PavedDrive_Tencode|MoSold', 'HeatingQC_Tencode|HouseStyle_1.5Fin', 'Neighborhood_CollgCr|Electrical_FuseF', 'SaleType_New|GarageCond_Fa', 'YrSold|SaleType_Oth', 'MiscVal|GarageType_BuiltIn', 'BsmtCond_Po|BsmtFinSF1', 'Functional_Mod|Neighborhood_Sawyer', 'Exterior2nd_Tencode|TotRmsAbvGrd', 'Exterior2nd_Stucco|Condition2_Norm', 'YearRemodAdd|BsmtFinType2_Tencode', 'FireplaceQu_Tencode|Exterior1st_Tencode', 'BsmtExposure_Gd|Exterior1st_WdShing', 'Exterior2nd_AsbShng|RoofMatl_CompShg', 'Fence_GdPrv|BsmtQual_Gd', 'Foundation_BrkTil|BsmtQual_Gd', 'Alley_Pave|BsmtQual_Tencode', 'HeatingQC_Fa|BsmtFinType2_ALQ', 'GarageCond_Po|Neighborhood_Sawyer', 'BsmtFinType2_GLQ|BsmtFinType1_LwQ', 'FireplaceQu_Gd|Neighborhood_BrkSide', 'BsmtQual_Fa|GarageCond_Gd', 'Neighborhood_Somerst|LandContour_Bnk', 'HouseStyle_1Story|Exterior1st_WdShing', 'Condition1_Norm|PavedDrive_P', 'Street_Tencode|Neighborhood_Mitchel', 'RoofStyle_Hip|FireplaceQu_TA', 'PavedDrive_N|MasVnrType_Stone', 'BldgType_Duplex|LotConfig_FR2', 'PoolQC_Tencode|Foundation_CBlock', 'Condition1_RRAe|1stFlrSF', 'BsmtFinType2_ALQ|BsmtFullBath', 'EnclosedPorch|GarageType_2Types', 'GarageCars|Fence_MnPrv', 'Neighborhood_OldTown|BsmtFinType1_LwQ', 'HeatingQC_Fa|GarageQual_Gd', 'EnclosedPorch|GarageCond_Ex', 'Neighborhood_SawyerW|GarageType_2Types', 'Heating_GasW|ExterCond_Tencode', 'BsmtFinType1_Tencode|RoofStyle_Shed', 'CentralAir_Y|Exterior1st_WdShing', 'BsmtFinType2_Tencode|Fireplaces', 'HouseStyle_Tencode|RoofMatl_Tar&Grv', 'GarageType_CarPort|BsmtFinType1_LwQ', 'Exterior2nd_AsbShng|Exterior2nd_Plywood', 'MSZoning_RM|MiscFeature_Tencode', 'GarageCond_Tencode|GarageCond_Gd', 'Exterior1st_BrkFace|RoofMatl_CompShg', 'BsmtFinType1_ALQ|BsmtExposure_Gd', 'RoofMatl_Tar&Grv|MSZoning_Tencode', 'HouseStyle_1Story|Foundation_BrkTil', 'SaleCondition_Tencode|Exterior1st_WdShing', 'GarageCond_Gd|KitchenQual_Tencode', 'RoofMatl_Tencode|PoolArea', 'HouseStyle_Tencode|MSZoning_RL', 'BsmtFinType1_BLQ|Exterior2nd_VinylSd', 'FireplaceQu_Po|Functional_Min2', 'RoofMatl_Tencode|LotConfig_Inside', 'LandSlope_Sev|RoofStyle_Tencode', 'Condition1_RRAn|HouseStyle_2Story', 'GarageQual_Gd|1stFlrSF', 'LotShape_Tencode|TotRmsAbvGrd', 'Alley_Grvl|HouseStyle_1.5Fin', 'Heating_Grav|GarageCond_Fa', 'SaleType_New|SaleType_Oth', 'Neighborhood_NWAmes|Neighborhood_NAmes', 'Heating_Grav|Utilities_AllPub', 'HeatingQC_Tencode|Exterior2nd_Wd Shng', 'BldgType_Twnhs|GarageType_2Types', 'YearRemodAdd|Exterior1st_AsbShng', 'SaleType_ConLI|BsmtFinSF1', 'LandContour_Tencode|BsmtFullBath', 'LandContour_Bnk|RoofStyle_Gable', 'GarageType_Detchd|GarageCond_TA', 'Neighborhood_Crawfor|Condition1_Tencode', 'LandContour_HLS|MiscFeature_Shed', 'LotConfig_Corner|MSZoning_FV', 'HeatingQC_Fa|Condition2_Norm', 'Electrical_Tencode|Electrical_FuseA', 'TotalBsmtSF|Exterior2nd_MetalSd', 'LandSlope_Mod|RoofMatl_WdShngl', 'Electrical_SBrkr|GarageType_BuiltIn', 'LotFrontage|BldgType_Twnhs', 'FireplaceQu_Po|LotConfig_CulDSac', 'Neighborhood_Somerst|HeatingQC_Tencode', 'TotRmsAbvGrd|Neighborhood_StoneBr', 'GarageCond_Tencode|Neighborhood_Gilbert', 'Neighborhood_BrkSide|BsmtQual_Gd', 'TotRmsAbvGrd|SaleType_New', 'GarageFinish_Tencode|BsmtCond_Po', 'GarageCond_Gd|SaleCondition_Partial', 'HouseStyle_1.5Unf|KitchenQual_Tencode', 'MSZoning_Tencode|WoodDeckSF', 'ExterCond_Tencode|BsmtFinType2_Rec', 'Fireplaces|Neighborhood_NoRidge', 'Neighborhood_Veenker|Exterior1st_BrkComm', 'BsmtFinType1_ALQ|GarageType_BuiltIn', 'BsmtExposure_Av|Foundation_CBlock', 'Fence_MnWw|Exterior1st_Wd Sdng', 'MiscFeature_Shed|MiscFeature_Gar2', 'BsmtHalfBath|Electrical_SBrkr', 'BsmtFinType1_Rec|CentralAir_Tencode', 'LotShape_Reg|BsmtExposure_Av', 'BldgType_Duplex|ScreenPorch', 'Neighborhood_Somerst|Exterior2nd_VinylSd', 'LotShape_Tencode|Heating_GasA', 'Heating_GasA|RoofStyle_Shed', 'Condition1_Artery|CentralAir_Tencode', 'Exterior2nd_Brk Cmn|BsmtFinType1_GLQ', 'YearRemodAdd|Electrical_SBrkr', 'RoofMatl_CompShg|SaleType_Tencode', 'GarageFinish_Unf|WoodDeckSF', 'HeatingQC_Gd|FireplaceQu_Ex', 'BsmtFinType1_Tencode|Condition2_Artery', 'BsmtQual_Tencode|BsmtUnfSF', 'Neighborhood_NoRidge|FireplaceQu_Fa', 'FireplaceQu_Fa|Street_Grvl', 'FullBath|BsmtQual_Fa', 'Heating_Grav|BsmtQual_Gd', 'Functional_Mod|BldgType_1Fam', 'LotConfig_CulDSac|Exterior2nd_MetalSd', 'RoofStyle_Hip|MSZoning_FV', 'BldgType_1Fam|Utilities_AllPub', 'EnclosedPorch|KitchenQual_Gd', 'YearRemodAdd|MasVnrType_None', 'Exterior1st_BrkFace|HeatingQC_TA', 'Neighborhood_Edwards|Condition2_Artery', 'HeatingQC_Ex|Neighborhood_BrkSide', 'LandContour_Low|Neighborhood_IDOTRR', 'BsmtFinType2_LwQ|ExterQual_Fa', 'Alley_Pave|MasVnrType_None', 'OpenPorchSF|BsmtExposure_Mn', 'GarageType_Attchd|GarageType_2Types', 'CentralAir_Y|CentralAir_N', 'SaleType_COD|MSZoning_RL', 'RoofStyle_Gambrel|BsmtFinSF1', 'FireplaceQu_Ex|Exterior2nd_Wd Shng', 'LotShape_Tencode|OverallCond', 'RoofMatl_Tar&Grv|BsmtFinSF1', 'BsmtFinSF2|LotConfig_CulDSac', 'RoofStyle_Hip|GarageType_Tencode', 'Exterior1st_AsbShng|SaleType_COD', 'Neighborhood_BrDale|ScreenPorch', 'BsmtCond_Gd|Neighborhood_Sawyer', 'Electrical_SBrkr|PoolArea', 'Fence_GdWo|MasVnrArea', 'LotShape_IR2|Functional_Mod', 'LandContour_Low|PavedDrive_P', 'Utilities_Tencode|RoofMatl_CompShg', 'GarageType_Attchd|WoodDeckSF', 'BsmtQual_Tencode|Functional_Maj2', 'HalfBath|BsmtExposure_No', 'GarageCond_Gd|ExterCond_Fa', 'BsmtFinType1_BLQ|MasVnrType_BrkCmn', 'HeatingQC_Tencode|MoSold', 'Neighborhood_NPkVill|Neighborhood_NoRidge', 'RoofMatl_Tar&Grv|GarageFinish_RFn', 'HouseStyle_SFoyer|Fence_MnPrv', 'HeatingQC_Gd|ExterCond_Tencode', 'FireplaceQu_Gd|GarageCond_Ex', 'LotShape_IR2|Neighborhood_SawyerW', 'Neighborhood_Sawyer|GarageType_Basment', 'MiscVal|ExterCond_Tencode', 'Neighborhood_Blmngtn|Exterior2nd_BrkFace', 'Neighborhood_Somerst|SaleType_ConLI', 'GarageType_Detchd|GarageQual_Gd', 'ExterCond_Gd|BsmtExposure_Av', 'MSZoning_RL|BsmtQual_Gd', 'ExterQual_Tencode|BsmtExposure_No', 'GarageFinish_Unf|Exterior2nd_Stone', 'Exterior1st_HdBoard|Electrical_FuseA', 'Neighborhood_CollgCr|CentralAir_Y', 'Utilities_Tencode|LotArea', 'BsmtFinType2_Tencode|SaleType_WD', 'Electrical_FuseF|Neighborhood_NWAmes', 'GarageFinish_Fin|Condition1_Norm', 'Foundation_BrkTil|BsmtQual_Fa', 'KitchenQual_Gd|MiscVal', 'Functional_Tencode|MSZoning_C (all)', 'Foundation_CBlock|Street_Grvl', 'PavedDrive_N|Street_Tencode', 'Neighborhood_BrkSide|BsmtExposure_Mn', 'Exterior2nd_Tencode|MSZoning_RL', 'CentralAir_Y|GarageFinish_RFn', 'HeatingQC_TA|HeatingQC_Gd', 'Fence_GdPrv|MasVnrType_None', 'Electrical_FuseF|RoofMatl_WdShngl', 'Electrical_FuseA|Foundation_BrkTil', 'Neighborhood_Timber|HouseStyle_1.5Fin', 'OverallQual|RoofStyle_Gambrel', 'KitchenQual_Gd|Neighborhood_Gilbert', 'LotShape_Tencode|MasVnrType_Tencode', 'GarageType_Detchd|GarageType_Tencode', 'LotConfig_Tencode|Condition2_Artery', 'Neighborhood_ClearCr|HouseStyle_2.5Unf', 'Fireplaces|MiscFeature_Tencode', 'BsmtFinType1_ALQ|Fence_MnPrv', 'Foundation_BrkTil|MSZoning_Tencode', 'Neighborhood_Sawyer|BsmtFinType1_LwQ', 'KitchenAbvGr|BsmtFinType2_GLQ', 'Exterior2nd_VinylSd|Exterior2nd_Brk Cmn', 'SaleCondition_Tencode|ExterCond_Gd', 'BsmtUnfSF|MasVnrType_Stone', 'RoofMatl_CompShg|Neighborhood_OldTown', 'Neighborhood_ClearCr|FireplaceQu_Ex', 'GarageType_Detchd|Exterior2nd_BrkFace', 'Electrical_FuseA|Exterior1st_Plywood', 'GarageCond_Tencode|ExterCond_Fa', 'Alley_Tencode|Neighborhood_OldTown', 'TotRmsAbvGrd|Functional_Mod', 'Fireplaces|BldgType_1Fam', 'Exterior2nd_AsbShng|Neighborhood_SawyerW', 'Neighborhood_Somerst|SaleType_COD', 'SaleCondition_Tencode|HeatingQC_Fa', 'GarageCond_Po|Exterior1st_Plywood', 'HeatingQC_Gd|MasVnrType_Tencode', 'LandSlope_Mod|Exterior1st_Tencode', 'GarageCond_Fa|BldgType_TwnhsE', 'GarageType_Detchd|GarageArea', 'Utilities_Tencode|MiscFeature_Shed', 'LandContour_Tencode|SaleType_COD', 'BsmtFinType1_LwQ|BldgType_Tencode', 'BsmtFinType2_BLQ|BsmtFinType1_Unf', 'Neighborhood_NridgHt|MoSold', 'Neighborhood_Mitchel|FireplaceQu_Fa', 'LotShape_Tencode|MiscFeature_Othr', 'Heating_Tencode|CentralAir_Y', 'MiscVal|Condition1_PosA', 'MSZoning_RL|MasVnrType_Tencode', 'GarageCond_Tencode|LandContour_HLS', 'BsmtQual_Fa|LandContour_Bnk', 'Condition2_Tencode|BsmtFinType1_Rec', 'LotShape_Tencode|HouseStyle_SLvl', 'BsmtFullBath|Exterior1st_Plywood', 'MiscFeature_Othr|LotShape_IR3', 'FireplaceQu_Tencode|SaleType_WD', 'MSZoning_C (all)|BsmtExposure_Mn', 'GarageType_Basment|BldgType_1Fam', 'LotShape_IR1|BsmtCond_Po', 'HeatingQC_Fa|Fence_GdWo', 'LotFrontage|Exterior1st_WdShing', 'KitchenQual_Gd|Condition1_PosA', 'Condition1_Artery|MasVnrArea', 'Utilities_Tencode|BsmtFinType2_GLQ', 'Heating_Grav|SaleType_WD', 'Exterior2nd_Stucco|Foundation_Tencode', 'Street_Tencode|BsmtFinType1_Rec', 'GarageCond_Ex|Exterior2nd_AsphShn', 'Neighborhood_NPkVill|MSZoning_C (all)', 'KitchenQual_Fa|Condition1_RRAn', 'HouseStyle_2.5Unf|BldgType_Tencode', 'BsmtFinSF2|Functional_Min1', 'LotConfig_Corner|ExterCond_Fa', 'LandContour_Tencode|GarageType_2Types', 'BsmtQual_TA|MasVnrType_None', 'Electrical_FuseP|Fence_MnWw', 'YrSold|ScreenPorch', 'Utilities_Tencode|Fence_GdPrv', 'Exterior2nd_AsbShng|Neighborhood_Somerst', 'RoofMatl_CompShg|Alley_Grvl', 'Foundation_Stone|Fence_GdPrv', 'GarageQual_Po|Exterior1st_Wd Sdng', 'Neighborhood_CollgCr|GarageType_Basment', 'FireplaceQu_Fa|Exterior1st_Tencode', 'GarageQual_Fa|Exterior2nd_HdBoard', 'MasVnrType_BrkCmn|Neighborhood_Sawyer', 'Neighborhood_NWAmes|CentralAir_Y', 'FireplaceQu_Gd|Fence_GdPrv', 'RoofStyle_Gambrel|MSZoning_RL', 'LotFrontage|Functional_Min1', 'Neighborhood_NPkVill|HeatingQC_Gd', 'Functional_Maj1|Exterior1st_VinylSd', 'Condition2_Artery|HouseStyle_2Story', 'RoofMatl_Tencode|BsmtFinType1_Tencode', 'Exterior2nd_AsbShng|Foundation_Slab', 'Exterior2nd_MetalSd|MSZoning_Tencode', 'SaleType_New|GarageType_Attchd', 'SaleType_ConLw|BsmtFinType1_ALQ', 'Electrical_FuseP|BsmtQual_Tencode', 'Exterior2nd_Stucco|LotShape_IR3', 'Condition1_Feedr|BsmtCond_Gd', 'KitchenAbvGr|BsmtQual_Ex', 'LandContour_Lvl|Condition1_Norm', 'GarageType_Tencode|HouseStyle_2.5Unf', 'MSZoning_RM|GarageCond_Ex', 'FireplaceQu_Tencode|Functional_Tencode', 'Neighborhood_StoneBr|MasVnrArea', 'MasVnrType_Tencode|Exterior2nd_AsphShn', 'Electrical_SBrkr|LotConfig_CulDSac', 'GrLivArea|Foundation_CBlock', 'Exterior2nd_CmentBd|RoofMatl_WdShngl', 'LotArea|LotConfig_Inside', 'Fireplaces|HouseStyle_2Story', 'BsmtFinType1_ALQ|TotRmsAbvGrd', 'BsmtFinType2_Tencode|PavedDrive_Tencode', 'BedroomAbvGr|GarageYrBlt', 'RoofMatl_Tar&Grv|BsmtFinType1_Unf', 'Neighborhood_BrDale|BldgType_Twnhs', 'SaleType_ConLD|Functional_Min2', 'OverallQual|Electrical_SBrkr', 'Neighborhood_ClearCr|Neighborhood_OldTown', 'HeatingQC_Ex|BsmtCond_TA', 'Heating_Tencode|Condition1_RRAn', 'BsmtFinType1_Tencode|RoofMatl_Tar&Grv', 'HeatingQC_TA|GarageType_Attchd', 'Foundation_PConc|LandSlope_Gtl', 'GarageQual_Po|MasVnrType_Tencode', '3SsnPorch|Functional_Min1', 'Exterior2nd_Stone|Functional_Maj1', 'YearRemodAdd|BsmtCond_Gd', 'LotConfig_FR2|Functional_Maj2', 'LandContour_Tencode|Condition1_Norm', 'KitchenQual_Ex|MiscFeature_Tencode', 'Condition1_Norm|HouseStyle_SLvl', 'LotShape_Reg|GarageType_Tencode', 'KitchenAbvGr|SaleType_ConLI', 'Neighborhood_NAmes|RoofStyle_Tencode', 'Electrical_FuseF|ExterQual_Gd', 'ExterQual_Gd|SaleType_CWD', 'BsmtFinType2_LwQ|SaleType_COD', 'Condition1_PosN|BsmtFinType2_LwQ', 'BsmtFinType2_Unf|BldgType_Tencode', '1stFlrSF|Neighborhood_StoneBr', 'BsmtQual_Ex|ExterCond_Gd', 'YearBuilt|LotShape_IR3', 'GarageQual_Gd|HalfBath', 'HouseStyle_1.5Unf|LowQualFinSF', 'GarageCond_Po|Foundation_Tencode', 'Street_Tencode|HeatingQC_Ex', 'Exterior2nd_BrkFace|HeatingQC_Tencode', 'Condition1_Norm|OverallCond', 'RoofMatl_Tar&Grv|BsmtExposure_Gd', 'Street_Tencode|Neighborhood_Gilbert', 'BsmtFinType2_BLQ|2ndFlrSF', 'BsmtQual_Tencode|BsmtQual_TA', 'PavedDrive_N|ExterQual_Fa', 'ScreenPorch|BldgType_Tencode', 'Electrical_SBrkr|1stFlrSF', 'SaleType_ConLI|LotConfig_Tencode', 'SaleType_ConLD|CentralAir_Y', 'Heating_GasA|BsmtCond_Fa', 'BsmtFinType2_GLQ|GarageFinish_RFn', 'TotalBsmtSF|HouseStyle_2Story', 'Exterior2nd_AsbShng|Exterior1st_Stucco', 'HouseStyle_1Story|Condition2_Norm', 'Exterior1st_Stucco|Exterior2nd_Wd Shng', 'MiscFeature_Othr|Condition1_Tencode', 'BsmtExposure_Tencode|SaleType_Oth', 'Exterior1st_CemntBd|Exterior2nd_Brk Cmn', 'GarageType_BuiltIn|Neighborhood_NWAmes', 'GarageType_Detchd|MasVnrArea', 'Electrical_FuseA|Exterior1st_MetalSd', 'HeatingQC_Gd|Foundation_Stone', 'Exterior2nd_Tencode|Exterior2nd_AsphShn', 'SaleCondition_Alloca|Condition1_PosA', 'Functional_Maj1|Exterior1st_Tencode', 'Neighborhood_Crawfor|BsmtFinType1_GLQ', 'Exterior2nd_Tencode|KitchenQual_Ex', 'YearBuilt|BsmtExposure_No', 'BsmtFinType1_BLQ|LandContour_Lvl', 'MiscFeature_Othr|LotConfig_Inside', 'Exterior1st_BrkFace|GarageType_BuiltIn', 'OverallCond|HouseStyle_2Story', 'KitchenQual_Ex|Exterior1st_VinylSd', 'LotConfig_Corner|FireplaceQu_Ex', 'BldgType_Twnhs|GarageCond_Gd', 'Alley_Grvl|RoofMatl_WdShngl', '3SsnPorch|SaleCondition_Abnorml', 'Functional_Mod|BsmtCond_Po', 'LotShape_IR1|Exterior1st_Plywood', 'LotConfig_Tencode|MiscFeature_Gar2', 'CentralAir_Tencode|BsmtExposure_No', 'BsmtFinType2_Tencode|Neighborhood_SawyerW', 'HeatingQC_TA|ScreenPorch', 'BldgType_2fmCon|Exterior1st_MetalSd', 'LandContour_HLS|GarageType_2Types', 'SaleCondition_Normal|RoofStyle_Tencode', 'SaleCondition_Tencode|Foundation_Slab', 'Exterior2nd_CmentBd|BsmtCond_Fa', 'Neighborhood_NridgHt|ExterQual_Fa', 'EnclosedPorch|GarageCond_TA', 'Neighborhood_Somerst|GarageCond_Gd', 'GarageCond_Gd|1stFlrSF', 'BsmtFinType1_LwQ|CentralAir_N', 'SaleType_Tencode|PavedDrive_P', 'YrSold|LandSlope_Gtl', 'Neighborhood_ClearCr|LotArea', 'SaleType_ConLD|BsmtFinSF1', 'ExterQual_TA|Street_Grvl', 'GarageQual_Gd|Foundation_Stone', 'Electrical_FuseF|BsmtCond_Fa', 'SaleType_Oth|BldgType_Tencode', 'KitchenQual_Ex|SaleType_Oth', 'KitchenAbvGr|MiscFeature_Shed', 'Neighborhood_ClearCr|KitchenQual_TA', 'GarageCars|MSSubClass', 'YrSold|Alley_Tencode', 'Electrical_SBrkr|Condition2_Artery', 'RoofStyle_Flat|BsmtCond_Gd', 'GarageType_Attchd|Street_Pave', 'Exterior1st_Tencode|Exterior2nd_Wd Shng', 'BldgType_Twnhs|ExterQual_Fa', 'Electrical_SBrkr|BldgType_TwnhsE', 'Neighborhood_OldTown|GarageType_Basment', 'ExterQual_TA|BsmtCond_Po', 'Neighborhood_NWAmes|LotConfig_Tencode', 'PoolQC_Tencode|Exterior2nd_Brk Cmn', 'Foundation_Stone|Exterior1st_AsbShng', 'BsmtExposure_Tencode|BsmtHalfBath', 'GarageCond_Tencode|GarageType_2Types', 'Functional_Tencode|ExterCond_TA', 'Functional_Tencode|Neighborhood_MeadowV', 'PavedDrive_P|GarageQual_Tencode', 'GarageType_Tencode|BsmtCond_TA', 'HouseStyle_Tencode|ExterCond_Fa', 'LotConfig_FR2|RoofStyle_Tencode', 'Alley_Pave|Condition1_PosN', 'MiscFeature_Shed|BsmtExposure_Gd', 'Neighborhood_Somerst|BsmtFinType2_LwQ', 'RoofMatl_Tar&Grv|Functional_Maj2', 'Foundation_BrkTil|FireplaceQu_TA', 'HouseStyle_1Story|GarageFinish_Tencode', 'BsmtFinType2_Tencode|GarageCond_TA', 'YearRemodAdd|MSZoning_FV', 'Exterior2nd_AsbShng|Exterior2nd_CmentBd', 'Fence_GdPrv|SaleCondition_Alloca', 'GarageType_CarPort|Functional_Min2', 'Electrical_Tencode|Fence_MnPrv', 'Functional_Typ|1stFlrSF', 'RoofStyle_Gable|MSZoning_Tencode', 'GrLivArea|GarageCars', 'Neighborhood_Timber|MasVnrType_Stone', 'Neighborhood_NridgHt|Neighborhood_Mitchel', 'HeatingQC_Fa|GarageType_2Types', 'MSZoning_C (all)|GarageType_CarPort', 'Fence_Tencode|GarageQual_TA', 'Neighborhood_NPkVill|Condition1_Norm', 'PavedDrive_N|Exterior2nd_MetalSd', 'GarageQual_Gd|MSZoning_RM', 'LandSlope_Tencode|Neighborhood_Crawfor', 'FireplaceQu_Fa|BsmtFinSF1', 'RoofStyle_Hip|ScreenPorch', 'MiscFeature_Othr|MasVnrType_Tencode', 'Condition2_Norm|Neighborhood_Timber', 'Electrical_Tencode|LotConfig_FR2', 'BsmtQual_Ex|CentralAir_Y', 'BsmtCond_Gd|MSZoning_RL', 'Exterior1st_Plywood|ExterQual_Fa', 'Neighborhood_Somerst|Neighborhood_Gilbert', 'KitchenAbvGr|BsmtFinType1_BLQ', 'SaleType_ConLw|Exterior2nd_CmentBd', 'SaleCondition_Tencode|BsmtCond_Tencode', 'ExterCond_TA|SaleType_ConLI', 'Exterior2nd_BrkFace|Neighborhood_Crawfor', 'BsmtFinType2_Unf|ExterQual_Fa', 'Neighborhood_Veenker|BsmtQual_Ex', 'LandSlope_Gtl|BsmtExposure_Gd', 'PavedDrive_N|SaleType_Tencode', 'GarageYrBlt|MSZoning_Tencode', 'GarageCars|LotShape_IR1', 'Heating_GasW|BsmtCond_Fa', 'GarageQual_TA|Functional_Min1', 'LotShape_Reg|Condition2_Artery', 'CentralAir_Y|Street_Pave', 'RoofMatl_CompShg|BsmtFinType2_Unf', 'Street_Grvl|MasVnrType_Tencode', 'BsmtFinType1_BLQ|MSSubClass', 'Heating_GasA|FireplaceQu_TA', 'HalfBath|Neighborhood_NAmes', 'Electrical_Tencode|GarageType_CarPort', 'BsmtFinType2_LwQ|BldgType_Tencode', 'RoofStyle_Flat|LandSlope_Gtl', 'RoofMatl_Tar&Grv|MiscFeature_Shed', 'GarageQual_Gd|KitchenQual_Fa', 'Heating_GasA|LandContour_Tencode', 'Street_Tencode|SaleType_ConLw', 'LotShape_Reg|Functional_Min1', 'GarageFinish_Unf|LotConfig_FR2', 'MiscFeature_Othr|BedroomAbvGr', 'Electrical_FuseF', 'MiscFeature_Othr|Condition2_Artery', 'GarageCond_TA|HouseStyle_2Story', 'LandSlope_Sev|LandContour_Bnk', 'KitchenAbvGr|GarageArea', 'TotalBsmtSF|BsmtFinType2_GLQ', 'HouseStyle_1Story|Condition1_RRAe', 'GarageCond_Tencode|LandSlope_Sev', 'Neighborhood_NPkVill|Neighborhood_Edwards', 'LotFrontage|BsmtFinType1_GLQ', 'RoofMatl_CompShg|TotRmsAbvGrd', 'Exterior1st_AsbShng|Exterior2nd_AsphShn', 'GarageCond_Po|BsmtCond_TA', 'GarageType_Detchd|Exterior1st_CemntBd', 'Neighborhood_ClearCr|PavedDrive_P', 'BsmtFinType2_LwQ|Neighborhood_MeadowV', 'BsmtFinType2_ALQ|MasVnrType_None', 'MiscFeature_Tencode|HouseStyle_SLvl', 'HeatingQC_Tencode|MasVnrType_None', 'BldgType_Twnhs|LandContour_Bnk', 'HouseStyle_Tencode|Exterior2nd_VinylSd', 'GarageFinish_Fin|Neighborhood_BrkSide', 'RoofStyle_Shed|GarageType_CarPort', 'Exterior1st_Stucco|RoofStyle_Shed', 'Foundation_Tencode|MasVnrType_BrkCmn', 'FullBath|KitchenQual_TA', 'RoofStyle_Gable|SaleType_COD', 'PavedDrive_Y|HeatingQC_Tencode', 'ExterQual_TA|ExterCond_Gd', 'Neighborhood_Sawyer|BldgType_TwnhsE', 'MiscVal|BsmtFinType2_LwQ', 'GarageType_Tencode|GarageArea', 'Foundation_PConc|RoofStyle_Gable', 'Heating_GasA|BsmtFinType1_ALQ', 'YrSold|Neighborhood_NPkVill', 'Exterior1st_AsbShng|Fence_Tencode', 'GarageCars|RoofStyle_Tencode', 'YrSold|ExterCond_Tencode', 'RoofMatl_Tencode|RoofMatl_WdShngl', 'BldgType_TwnhsE|Neighborhood_Gilbert', 'SaleType_WD|FireplaceQu_TA', 'Foundation_PConc|Heating_Tencode', 'BldgType_Duplex|Functional_Maj1', 'FireplaceQu_TA|BsmtExposure_No', 'GrLivArea|RoofStyle_Gable', 'FireplaceQu_Tencode|Neighborhood_Edwards', 'SaleType_WD|SaleCondition_Abnorml', 'Neighborhood_NridgHt|BsmtFinType2_GLQ', 'Functional_Tencode|CentralAir_Tencode', 'BsmtExposure_Tencode|Neighborhood_Veenker', 'Neighborhood_Veenker|FireplaceQu_TA', 'Neighborhood_BrDale|KitchenQual_Ex', 'HeatingQC_Fa|SaleType_ConLw', 'HouseStyle_1Story|Exterior2nd_AsphShn', 'GarageType_CarPort|LotShape_IR3', 'SaleType_COD|SaleType_CWD', 'Heating_Grav|GarageArea', 'Heating_GasA|RoofMatl_WdShngl', 'Functional_Tencode|Exterior1st_BrkComm', 'BsmtFinType2_Rec|Condition1_Feedr', 'Exterior2nd_CmentBd|Exterior2nd_Plywood', 'BsmtQual_Fa|BsmtCond_Gd', 'GrLivArea|Neighborhood_OldTown', '2ndFlrSF|Exterior2nd_Plywood', 'Exterior1st_AsbShng|Neighborhood_Sawyer', 'KitchenQual_Ex|GarageType_Tencode', 'SaleType_Oth|HouseStyle_SLvl', 'SaleCondition_Family|Functional_Maj1', 'Fence_GdPrv|TotRmsAbvGrd', 'BsmtFinType1_LwQ|MasVnrType_Tencode', 'Exterior2nd_AsbShng|MSZoning_RL', 'Neighborhood_NoRidge|HouseStyle_2.5Unf', 'LotShape_IR1|MSZoning_C (all)', 'GarageType_Tencode|RoofStyle_Gable', 'LotConfig_Corner|MSZoning_RH', 'GarageType_Tencode|Exterior2nd_Wd Shng', 'GarageCond_Tencode|LotConfig_Inside', 'SaleType_Tencode|ExterQual_Tencode', 'MoSold|Exterior2nd_Plywood', 'SaleCondition_Abnorml|Alley_Grvl', 'EnclosedPorch|Neighborhood_SWISU', 'TotRmsAbvGrd|BsmtFinType2_LwQ', 'Utilities_Tencode|ExterQual_Gd', 'KitchenAbvGr|Functional_Typ', 'MiscFeature_Tencode|MSZoning_Tencode', 'KitchenQual_Gd|Functional_Maj1', 'Exterior2nd_Brk Cmn|BsmtExposure_No', 'YearRemodAdd|SaleType_CWD', 'GarageCond_TA|Condition1_Tencode', 'LandSlope_Mod|BsmtFinType2_BLQ', 'Fence_Tencode|BsmtFullBath', 'BsmtFinType1_Rec|ExterQual_Fa', 'GarageCond_Gd|BsmtExposure_Gd', 'GarageType_Tencode|GarageQual_Fa', 'BsmtFinType2_Tencode|BsmtExposure_Mn', 'ExterQual_TA|Exterior2nd_Brk Cmn', 'HouseStyle_1Story|GarageYrBlt', 'LotShape_IR2|Fence_GdPrv', 'SaleType_COD|Neighborhood_IDOTRR', 'BsmtFullBath', 'BsmtQual_Tencode|GarageYrBlt', 'Fence_GdWo|MSSubClass', 'Neighborhood_Veenker|Exterior2nd_Plywood', 'PavedDrive_Y|Condition2_Artery', 'BldgType_2fmCon|Exterior1st_CemntBd', 'Condition1_RRAe|GarageCond_Fa', 'KitchenAbvGr|Electrical_SBrkr', 'GarageFinish_Tencode|Neighborhood_SawyerW', 'Neighborhood_NWAmes|HouseStyle_SLvl', 'LotConfig_FR2|MasVnrType_None', 'ExterCond_Gd|Exterior1st_BrkComm', 'SaleType_ConLw|Exterior2nd_BrkFace', 'Exterior1st_BrkFace|LotConfig_Inside', 'Neighborhood_StoneBr|FireplaceQu_TA', 'MSZoning_Tencode|MasVnrArea', 'BsmtHalfBath|MoSold', 'LotConfig_FR2|PoolQC_Tencode', 'LotConfig_CulDSac|ExterCond_Gd', 'Neighborhood_Gilbert|GarageFinish_RFn', 'BedroomAbvGr|LotShape_IR3', 'Neighborhood_BrDale|Fence_GdWo', 'BsmtQual_Tencode|3SsnPorch', 'HeatingQC_Fa|MSZoning_RM', 'Fireplaces|BsmtFinType2_Unf', 'PavedDrive_Tencode|BsmtFinType1_Rec', 'BsmtFinType2_BLQ|HeatingQC_Ex', 'MiscVal|Exterior2nd_Wd Sdng', 'BsmtUnfSF|LandSlope_Gtl', 'OverallQual|SaleCondition_Tencode', 'YrSold|Exterior2nd_Brk Cmn', 'BsmtFinType1_ALQ|MasVnrType_Tencode', 'Condition2_Tencode|Neighborhood_NAmes', 'Alley_Tencode|MoSold', 'GarageFinish_Fin|RoofStyle_Shed', 'Alley_Tencode|BsmtFinSF1', 'FireplaceQu_Fa|SaleCondition_Normal', 'LandContour_Low|Condition1_Feedr', 'Exterior2nd_VinylSd|SaleCondition_Abnorml', 'BsmtFinType1_Tencode|LotConfig_FR2', 'Neighborhood_CollgCr|BsmtFinType2_Rec', 'LandContour_Bnk|BsmtFinType1_Unf', 'Exterior2nd_Stone|SaleType_Oth', 'Exterior2nd_Tencode|MSZoning_FV', 'RoofMatl_CompShg|FireplaceQu_Fa', 'Condition2_Tencode|Exterior1st_CemntBd', 'KitchenQual_Gd|MasVnrType_BrkCmn', 'Exterior2nd_AsbShng|MSZoning_C (all)', 'ExterQual_TA|Electrical_FuseP', 'PavedDrive_Y|BsmtCond_Po', 'Functional_Maj1|2ndFlrSF', 'BsmtFullBath|Foundation_Slab', 'SaleType_ConLD|MSZoning_RH', 'Street_Tencode|BsmtQual_Fa', 'Neighborhood_OldTown|Street_Pave', 'MasVnrType_BrkCmn|Neighborhood_Gilbert', 'GarageCond_Gd|MSZoning_RL', 'BsmtFinType2_GLQ|ExterQual_Gd', 'Street_Tencode|Neighborhood_IDOTRR', 'GarageCond_TA|BsmtUnfSF', 'Foundation_BrkTil|Condition1_RRAn', 'FireplaceQu_Tencode|BsmtFinType2_GLQ', 'RoofMatl_CompShg|KitchenQual_TA', 'SaleType_WD|Exterior1st_CemntBd', 'Neighborhood_NoRidge|Exterior1st_MetalSd', 'BsmtQual_TA|Condition2_Norm', 'LotShape_Tencode|Functional_Min1', 'RoofMatl_CompShg|Exterior1st_Tencode', 'BldgType_Duplex|3SsnPorch', 'BldgType_Twnhs|Exterior1st_MetalSd', 'ExterQual_TA|GarageType_BuiltIn', 'LotFrontage|SaleCondition_Abnorml', 'GarageCond_TA|BsmtExposure_Av', 'BsmtFinSF1|Neighborhood_BrkSide', 'FireplaceQu_Tencode|SaleCondition_Family', 'SaleCondition_Normal|BsmtFinType1_GLQ', 'Neighborhood_Mitchel|GarageCond_Tencode', 'TotalBsmtSF|LandContour_Bnk', 'KitchenAbvGr|PavedDrive_Y', 'BsmtQual_Fa|MasVnrType_BrkCmn', 'Neighborhood_Sawyer|Neighborhood_MeadowV', 'GrLivArea|Alley_Grvl', 'Neighborhood_Mitchel|BsmtExposure_Gd', 'FireplaceQu_TA|Exterior2nd_HdBoard', 'KitchenQual_Gd|Condition2_Norm', 'Street_Tencode|HouseStyle_1Story', 'LotFrontage|Neighborhood_Mitchel', 'Neighborhood_Blmngtn|Functional_Mod', 'BsmtQual_Ex|MasVnrType_None', 'Fireplaces|SaleType_COD', 'GarageQual_Fa|MSSubClass', 'HouseStyle_1Story|BldgType_Tencode', 'KitchenQual_Fa|Fence_MnPrv', 'Condition1_Artery|SaleType_Oth', 'LotShape_IR2|Heating_GasW', 'GarageCond_Tencode|Foundation_Tencode', 'Electrical_Tencode|GarageYrBlt', 'LotFrontage|BedroomAbvGr', 'Exterior2nd_MetalSd|RoofStyle_Shed', 'Functional_Min1|BsmtCond_Fa', 'TotRmsAbvGrd|HouseStyle_2.5Unf', 'Exterior1st_VinylSd|Exterior1st_Plywood', 'YearRemodAdd|GarageType_BuiltIn', 'RoofStyle_Flat|Exterior1st_HdBoard', 'LotArea|Condition1_Tencode', 'KitchenAbvGr|LotConfig_Inside', 'RoofStyle_Hip', 'Functional_Min2|Exterior2nd_AsphShn', 'ExterCond_TA|PavedDrive_Tencode', 'GarageQual_Gd|BsmtExposure_Av', 'Electrical_FuseP|BsmtExposure_No', 'Alley_Tencode|MSZoning_C (all)', 'Functional_Maj2|Utilities_AllPub', 'ExterCond_TA|GarageType_Basment', 'CentralAir_Y|MSZoning_Tencode', 'RoofMatl_CompShg|Fence_Tencode', 'Exterior1st_HdBoard|BsmtUnfSF', 'GarageCond_TA|LandContour_Lvl', 'SaleType_CWD|MasVnrArea', 'Neighborhood_Mitchel|SaleType_ConLD', 'SaleCondition_Tencode|HeatingQC_Gd', 'LandContour_Low|FireplaceQu_Po', 'Functional_Min1|Exterior1st_MetalSd', 'BldgType_Duplex|FireplaceQu_Po', 'BsmtFinType2_LwQ|BsmtFinType1_LwQ', 'Condition1_Artery|TotRmsAbvGrd', 'Heating_Tencode|Exterior1st_Plywood', 'SaleType_Tencode|Foundation_Slab', 'Exterior2nd_AsbShng|LotConfig_Tencode', 'GarageType_Tencode|HouseStyle_1.5Unf', 'BsmtFinType1_Rec|Street_Pave', 'LandContour_Bnk|Neighborhood_BrkSide', 'LandContour_Low|SaleType_Oth', 'LandContour_Lvl|Exterior1st_MetalSd', 'GarageType_CarPort|KitchenQual_Fa', 'Condition1_Artery|Heating_Grav', 'BldgType_1Fam|ExterQual_Tencode', 'YrSold|MiscFeature_Shed', 'SaleType_ConLw|Exterior2nd_Wd Shng', 'Neighborhood_ClearCr|Exterior2nd_Tencode', 'SaleCondition_Alloca|GarageQual_Po', 'Exterior2nd_Stone|YearBuilt', 'Condition1_RRAe|Functional_Mod', 'Exterior1st_AsbShng|Exterior2nd_BrkFace', 'LotShape_IR1|BsmtFinType1_LwQ', 'MSZoning_C (all)|BsmtFinType2_Unf', 'BldgType_Duplex|Foundation_Slab', 'BldgType_2fmCon|LotConfig_FR2', 'LandContour_Low|BsmtUnfSF', 'RoofStyle_Hip|RoofStyle_Flat', '3SsnPorch|KitchenQual_TA', 'FireplaceQu_Po|Neighborhood_Veenker', 'BldgType_2fmCon|Exterior2nd_VinylSd', 'Fence_Tencode|OpenPorchSF', 'BldgType_Duplex|HeatingQC_Tencode', 'LandContour_Lvl|Functional_Maj2', 'KitchenAbvGr|BedroomAbvGr', 'Neighborhood_OldTown|SaleType_Oth', 'LotShape_IR2|HeatingQC_Fa', 'Neighborhood_OldTown|Functional_Maj1', 'GarageFinish_Unf|GarageFinish_Tencode', 'Neighborhood_NAmes|HouseStyle_1.5Fin', 'Neighborhood_Somerst|Utilities_AllPub', 'LandSlope_Mod|Exterior2nd_Plywood', 'GarageQual_Fa|GarageYrBlt', 'Exterior2nd_Stucco|Exterior1st_BrkComm', 'Exterior1st_Stucco|Heating_GasW', 'Neighborhood_Veenker|Foundation_Slab', 'GarageFinish_Fin|BsmtFinType2_LwQ', 'Fence_GdPrv|Alley_Grvl', 'SaleType_ConLI|SaleCondition_Family', 'LotFrontage|Exterior2nd_Brk Cmn', 'LotArea|Condition1_PosA', 'MiscFeature_Gar2|SaleType_CWD', 'Exterior2nd_Stucco|Condition1_Norm', 'LandContour_Tencode|BldgType_Tencode', 'YrSold|GarageCond_Po', 'MiscFeature_Gar2|GarageType_2Types', 'HeatingQC_Tencode', 'YrSold|BsmtCond_Po', 'EnclosedPorch|Exterior2nd_CmentBd', 'YearBuilt|SaleType_ConLI', 'LandSlope_Mod|LotConfig_Inside', 'SaleCondition_Tencode|Exterior1st_BrkFace', 'KitchenAbvGr|Heating_Grav', 'LandContour_Tencode|GarageType_Attchd', 'Utilities_Tencode|Neighborhood_Crawfor', 'ExterQual_TA|BsmtCond_Fa', 'GarageYrBlt|Neighborhood_IDOTRR', 'Exterior2nd_AsbShng|GarageQual_Gd', 'OpenPorchSF|MasVnrArea', 'SaleType_Tencode|CentralAir_Y', 'BsmtFinType1_Unf|SaleType_CWD', 'ExterCond_Gd|HouseStyle_1.5Fin', 'Neighborhood_NridgHt|Heating_GasW', 'BsmtQual_Ex|MiscFeature_Shed', 'HouseStyle_1Story|BsmtFinSF2', 'LandSlope_Mod|GarageQual_Tencode', 'Fence_GdPrv|Exterior1st_MetalSd', 'HeatingQC_Gd|SaleType_COD', 'BsmtFinType2_Unf|SaleType_CWD', 'GrLivArea|ExterCond_TA', 'Exterior2nd_Stone|Alley_Pave', 'PoolQC_Tencode|KitchenQual_TA', 'GarageFinish_RFn|BsmtExposure_Mn', 'Exterior2nd_MetalSd|MasVnrType_Stone', 'Utilities_Tencode|ExterCond_Tencode', 'SaleCondition_Alloca|ExterQual_Gd', 'FullBath|2ndFlrSF', 'MSZoning_C (all)', 'LotShape_IR2|Fence_MnPrv', 'Functional_Typ|Utilities_AllPub', 'Neighborhood_Blmngtn|Neighborhood_Edwards', 'LandSlope_Sev|Condition1_Feedr', 'KitchenQual_Gd|LandContour_HLS', 'Condition1_Artery|LotShape_IR1', 'HouseStyle_SFoyer|WoodDeckSF', 'Exterior1st_BrkFace|Condition1_Feedr', 'Exterior1st_CemntBd|MSZoning_RM', 'GarageFinish_Unf|Heating_GasA', 'GarageType_BuiltIn|MSZoning_FV', 'Exterior2nd_BrkFace|Neighborhood_Sawyer', 'Neighborhood_Blmngtn|LotConfig_FR2', 'Exterior2nd_AsbShng|GarageCond_Tencode', '1stFlrSF', 'HeatingQC_Gd|Neighborhood_CollgCr', 'BsmtExposure_Gd|Alley_Grvl', 'BsmtFinType1_Tencode|GarageYrBlt', 'Heating_GasW|Exterior2nd_Wd Sdng', 'BsmtFinSF2|2ndFlrSF', '1stFlrSF|GarageCond_Ex', 'Heating_Tencode|Neighborhood_Veenker', 'LandContour_Lvl|Neighborhood_Timber', 'RoofStyle_Hip|HouseStyle_SLvl', 'HeatingQC_TA|Exterior1st_BrkComm', 'GarageCond_TA|BldgType_Tencode', 'BsmtFinType1_Rec|PoolArea', 'SaleType_ConLD|BsmtCond_Fa', 'Exterior1st_Stucco|ExterQual_Gd', 'Exterior1st_BrkFace|GarageCond_Ex', 'RoofMatl_CompShg|BsmtCond_Tencode', 'BsmtExposure_Gd|BsmtCond_TA', 'MiscFeature_Tencode|MasVnrType_BrkFace', 'Fence_MnPrv|GarageType_2Types', 'BsmtCond_Po|SaleCondition_Abnorml', 'ExterQual_Tencode|WoodDeckSF', 'LotShape_IR2|GarageYrBlt', 'SaleType_WD|Exterior1st_Plywood', 'OverallQual|CentralAir_Y', 'BsmtExposure_No|Exterior1st_Plywood', 'RoofMatl_Tencode|SaleType_Oth', 'GarageCond_Tencode|RoofStyle_Gambrel', 'HouseStyle_1.5Unf|Exterior2nd_MetalSd', 'Heating_Grav|OverallCond', 'SaleType_ConLI|PoolArea', 'Functional_Tencode|BsmtQual_Gd', 'Condition2_Artery|MSZoning_RL', 'BsmtExposure_Tencode|Foundation_CBlock', 'Heating_Grav|Exterior1st_BrkComm', 'Electrical_FuseA|Neighborhood_BrkSide', 'GarageType_Detchd|RoofStyle_Hip', 'FireplaceQu_Gd|Neighborhood_Timber', 'Exterior1st_AsbShng|Heating_Tencode', 'GarageFinish_Fin|MSZoning_RH', 'ExterCond_TA|Foundation_CBlock', 'BldgType_2fmCon|RoofStyle_Tencode', 'SaleCondition_Alloca|Exterior1st_BrkComm', 'LotShape_Reg|BsmtCond_Fa', 'KitchenQual_Fa|BsmtQual_Gd', 'YearRemodAdd|GarageFinish_RFn', 'CentralAir_Tencode|KitchenQual_TA', 'Neighborhood_NAmes|ExterQual_Ex', 'LotShape_IR2|SaleType_Oth', 'FireplaceQu_Tencode|Exterior2nd_HdBoard', 'Foundation_BrkTil|Exterior1st_BrkComm', 'BsmtCond_Tencode', 'BsmtCond_Tencode|Fence_MnWw', 'Exterior2nd_AsbShng|GarageQual_Fa', 'Electrical_FuseF|BsmtCond_Tencode', 'ExterCond_Gd|MSZoning_C (all)', 'Foundation_Stone|Functional_Min2', 'Condition1_Artery|Foundation_PConc', 'HeatingQC_Fa|SaleCondition_Alloca', 'HeatingQC_TA|HouseStyle_SFoyer', 'Neighborhood_CollgCr|WoodDeckSF', 'BsmtFinSF2|Exterior2nd_Wd Shng', 'LandContour_Bnk|3SsnPorch', 'Exterior2nd_Stucco|BsmtUnfSF', 'Fence_GdWo|Street_Pave', 'YrSold|FireplaceQu_Fa', 'LotShape_Tencode|SaleType_ConLI', 'LotShape_IR2|Neighborhood_Somerst', 'Alley_Pave|Exterior2nd_Tencode', 'SaleCondition_Tencode|BsmtFinType2_ALQ', 'BsmtFinType1_BLQ|BsmtHalfBath', 'Exterior1st_BrkFace|LotConfig_Corner', 'Functional_Tencode|LotConfig_Inside', 'Neighborhood_NridgHt|PavedDrive_P', 'BsmtFinType2_Tencode|SaleCondition_Normal', 'Exterior2nd_VinylSd|BldgType_1Fam', 'Functional_Tencode|Exterior2nd_CmentBd', 'GarageCond_Po|CentralAir_Tencode', 'BldgType_1Fam|BsmtCond_Fa', 'HeatingQC_Gd|HouseStyle_Tencode', 'Exterior2nd_AsbShng|Neighborhood_Timber', 'LandSlope_Tencode|GarageType_2Types', 'GarageCond_Tencode|Functional_Min2', 'RoofStyle_Hip|GarageArea', 'HeatingQC_TA|SaleType_ConLw', 'Neighborhood_Veenker|RoofStyle_Shed', 'HeatingQC_TA|Exterior2nd_Brk Cmn', 'YearRemodAdd|BsmtCond_Po', 'Exterior2nd_HdBoard|Exterior1st_Wd Sdng', 'SaleCondition_Tencode|BsmtFinType2_GLQ', 'Electrical_FuseP|SaleCondition_Normal', 'Exterior1st_Stucco|GarageQual_Fa', 'Exterior2nd_AsbShng|Condition2_Tencode', 'LotFrontage|Street_Pave', 'Exterior2nd_Tencode|BsmtFinType2_BLQ', 'Exterior1st_CemntBd|PavedDrive_P', 'HeatingQC_TA|Street_Grvl', 'Electrical_Tencode|Condition2_Artery', 'YrSold|RoofMatl_WdShngl', 'Neighborhood_Somerst|Condition2_Tencode', 'HeatingQC_TA|Neighborhood_CollgCr', 'HouseStyle_2.5Unf|HouseStyle_2Story', 'Condition2_Tencode|Exterior2nd_Plywood', 'GarageCond_Gd|BsmtCond_Gd', 'Exterior1st_Stucco|Foundation_Tencode', 'Foundation_Stone|BsmtFinType2_BLQ', 'KitchenQual_Gd|BsmtFinType1_Unf', 'Condition1_Artery|Neighborhood_Somerst', 'Functional_Mod|HouseStyle_2Story', 'Neighborhood_ClearCr|MiscFeature_Othr', 'HouseStyle_1.5Unf|BsmtFinSF1', 'LotArea|LandSlope_Tencode', 'PavedDrive_N|KitchenQual_Fa', 'Neighborhood_CollgCr|KitchenQual_Ex', 'MasVnrType_BrkCmn|FireplaceQu_Ex', 'KitchenQual_Gd|RoofStyle_Gable', 'YearRemodAdd|ExterCond_Tencode', 'Condition1_Artery|SaleType_ConLD', 'YearBuilt|Electrical_FuseF', 'KitchenQual_Gd|Fence_GdWo', 'Neighborhood_SWISU|ExterCond_Tencode', 'HeatingQC_TA|SaleCondition_Alloca', 'LotConfig_Corner|HouseStyle_1.5Fin', 'MiscVal|RoofStyle_Shed', 'LowQualFinSF|CentralAir_N', 'BsmtFinType2_Tencode|ExterQual_Gd', 'BsmtFinType2_ALQ|ExterQual_Ex', 'Functional_Tencode|HalfBath', 'SaleCondition_Normal|Exterior1st_MetalSd', 'KitchenAbvGr|Exterior2nd_Plywood', 'GarageFinish_Unf|Exterior1st_Wd Sdng', 'Condition2_Tencode|Exterior2nd_HdBoard', 'MiscFeature_Othr|MasVnrArea', 'GarageCond_Tencode|ExterCond_Tencode', 'Functional_Maj2|Exterior1st_CemntBd', 'LandSlope_Sev|HouseStyle_SLvl', 'SaleType_ConLw|SaleType_New', 'GarageCond_Po|HeatingQC_Tencode', 'Exterior1st_CemntBd|Exterior1st_VinylSd', 'Neighborhood_SWISU|ExterQual_Fa', 'LandContour_Low|BldgType_1Fam', 'LotShape_Tencode|LotConfig_Inside', 'MasVnrType_BrkFace|Functional_Min2', 'OpenPorchSF|ExterQual_Tencode', 'Exterior2nd_AsbShng|HouseStyle_SFoyer', 'GarageType_Detchd|Neighborhood_NPkVill', 'Foundation_PConc|MSZoning_C (all)', 'Electrical_FuseA|KitchenQual_TA', 'GarageType_CarPort|RoofStyle_Tencode', 'Heating_GasA|Condition1_Tencode', 'FireplaceQu_Po|Condition1_Norm', 'MiscVal|MSZoning_FV', 'Neighborhood_Tencode|GarageArea', 'ExterQual_TA|HouseStyle_SLvl', 'Neighborhood_NridgHt|Fireplaces', 'RoofStyle_Gambrel|GarageType_BuiltIn', 'LotShape_IR1|HouseStyle_1.5Fin', 'LotShape_IR1|SaleCondition_Abnorml', 'ExterCond_Gd|SaleCondition_Abnorml', 'YearRemodAdd|BsmtQual_Ex', 'Exterior1st_WdShing|Exterior2nd_AsphShn', 'BldgType_2fmCon|BedroomAbvGr', 'Street_Tencode|SaleCondition_Family', 'Neighborhood_Mitchel|TotRmsAbvGrd', 'Street_Tencode|GarageCond_Tencode', 'Neighborhood_NridgHt|KitchenQual_Ex', 'GarageCond_Gd|Street_Pave', 'Foundation_BrkTil|2ndFlrSF', 'RoofMatl_Tencode|BsmtHalfBath', 'Utilities_Tencode|HalfBath', 'SaleCondition_Alloca|Exterior1st_MetalSd', 'Neighborhood_Blmngtn|CentralAir_Tencode', 'MSZoning_C (all)|Neighborhood_BrkSide', 'BedroomAbvGr|Condition1_Norm', 'Condition1_PosA|BsmtCond_Gd', 'SaleCondition_Normal|BsmtFinType2_Unf', 'LandContour_HLS|Neighborhood_NWAmes', 'KitchenQual_Tencode|GarageQual_Po', 'Neighborhood_SWISU|BsmtFinSF1', 'Exterior2nd_Stone|BsmtFinType2_BLQ', 'Functional_Tencode|RoofStyle_Gable', 'MasVnrType_Stone|Fence_MnPrv', 'Neighborhood_Blmngtn|BsmtFinSF2', 'Foundation_BrkTil|Fence_MnWw', 'GarageType_Tencode|BsmtQual_Fa', 'GarageCond_Ex|BsmtFinType1_GLQ', 'BsmtFullBath|MasVnrArea', 'GarageFinish_Tencode|Neighborhood_Crawfor', 'GarageCond_Po|HeatingQC_TA', 'SaleCondition_Tencode|GarageCond_TA', 'BldgType_Duplex|BedroomAbvGr', 'Exterior1st_HdBoard|LowQualFinSF', 'GarageFinish_RFn|BsmtExposure_No', 'RoofMatl_CompShg|BsmtFinType1_GLQ', 'GarageCond_TA|HeatingQC_Ex', 'FireplaceQu_Tencode|BsmtQual_Ex', 'ExterCond_Gd|SaleCondition_Alloca', 'Exterior2nd_AsphShn|LotConfig_Inside', 'RoofStyle_Shed|Alley_Grvl', 'Exterior2nd_BrkFace|Neighborhood_Tencode', 'Exterior2nd_Stucco|MasVnrType_Stone', 'LotShape_IR2|Exterior2nd_MetalSd', 'Condition1_RRAe|MasVnrType_None', 'Utilities_Tencode|Condition1_PosN', 'HouseStyle_SFoyer|MiscVal', 'Alley_Pave|Electrical_FuseA', 'BsmtFinType2_Tencode|GarageType_Tencode', 'BsmtFinType2_BLQ|LandContour_Bnk', 'ScreenPorch|Neighborhood_IDOTRR', 'GarageFinish_Unf|HeatingQC_Gd', 'GarageQual_Po|BsmtCond_Tencode', 'BsmtExposure_Mn|Fence_MnWw', 'Exterior1st_BrkFace|Exterior1st_AsbShng', 'HeatingQC_Ex|MiscFeature_Tencode', 'RoofMatl_Tencode|BsmtQual_Fa', 'Heating_Grav|LandContour_Lvl', 'LandSlope_Tencode|MSZoning_FV', 'Street_Tencode|Neighborhood_CollgCr', 'PavedDrive_P|Condition2_Norm', 'Exterior2nd_AsbShng|Functional_Maj1', 'BsmtFinType1_LwQ|Neighborhood_MeadowV', 'PoolArea|MSZoning_FV', 'HeatingQC_TA|Neighborhood_Veenker', 'Electrical_FuseP|ScreenPorch', 'PoolArea|Exterior1st_Plywood', 'MSZoning_C (all)|HouseStyle_SLvl', 'Exterior2nd_CmentBd|BsmtUnfSF', 'LotShape_IR1|BsmtFinSF1', 'Fence_Tencode|Street_Pave', 'GrLivArea|PoolArea', 'Exterior1st_Stucco|ExterCond_Fa', 'TotalBsmtSF|Electrical_SBrkr', 'RoofMatl_Tencode|HouseStyle_Tencode', 'MSZoning_C (all)|Functional_Maj1', 'BldgType_Twnhs|Functional_Min2', 'GarageType_BuiltIn|BsmtCond_Gd', 'KitchenAbvGr|FullBath', 'Exterior2nd_BrkFace|Neighborhood_BrkSide', 'Fence_Tencode|SaleType_Tencode', 'GarageCond_Po|HeatingQC_Gd', 'SaleCondition_Tencode|Street_Tencode', 'BsmtFinType1_Tencode|BsmtCond_Fa', 'HeatingQC_Tencode|MSZoning_RL', 'ExterCond_TA|Exterior1st_CemntBd', 'Foundation_Stone|SaleType_New', 'KitchenQual_Tencode|Neighborhood_Gilbert', 'FullBath|SaleCondition_Normal', 'Condition2_Tencode|GarageQual_Po', 'Exterior1st_HdBoard|Exterior2nd_HdBoard', 'TotalBsmtSF|FireplaceQu_Ex', 'BsmtCond_Po|WoodDeckSF', 'MasVnrType_BrkCmn|GarageCond_Ex', 'Neighborhood_Crawfor', 'BsmtFinType2_LwQ|BsmtCond_TA', 'Exterior2nd_BrkFace|LandContour_Tencode', 'EnclosedPorch|FullBath', 'Neighborhood_NridgHt|CentralAir_Tencode', 'FireplaceQu_Tencode|Exterior2nd_Wd Shng', 'BsmtExposure_Tencode|GarageCond_TA', 'HouseStyle_SFoyer|GarageYrBlt', 'Condition1_Feedr|GarageFinish_RFn', 'Exterior2nd_Brk Cmn|Utilities_AllPub', 'BsmtFinType1_BLQ|LotShape_IR3', 'HouseStyle_2.5Unf|Fence_MnPrv', 'SaleType_Tencode|HouseStyle_SLvl', 'Exterior1st_WdShing|LotShape_IR3', 'BldgType_Duplex|Exterior1st_AsbShng', 'MSSubClass|Exterior2nd_Brk Cmn', 'LandSlope_Tencode|HouseStyle_SLvl', 'GarageCond_Po|BsmtFinType1_BLQ', 'Electrical_SBrkr|Exterior2nd_CmentBd', 'Condition1_Norm|LandSlope_Gtl', 'YrSold|GarageType_BuiltIn', 'BsmtExposure_Tencode|HeatingQC_TA', 'Electrical_Tencode|Electrical_FuseP', 'GarageCars|ExterQual_Ex', 'Neighborhood_NPkVill|MiscFeature_Shed', 'Alley_Pave|BsmtFinType1_LwQ', 'KitchenQual_TA|BsmtQual_Gd', 'BsmtExposure_Av|Street_Pave', 'Exterior2nd_AsbShng|LotFrontage', 'OverallQual|BsmtFinType1_BLQ', 'Exterior2nd_Wd Sdng|BsmtCond_Fa', 'BsmtFinType2_GLQ|Exterior1st_MetalSd', 'RoofMatl_Tar&Grv|HouseStyle_SLvl', 'Fence_GdWo|GarageYrBlt', 'Neighborhood_BrDale|ExterQual_TA', 'Street_Grvl|BsmtCond_TA', 'PavedDrive_N|MSZoning_RH', 'MasVnrType_None|Condition2_Artery', 'SaleCondition_Partial|FireplaceQu_TA', 'BedroomAbvGr|SaleType_Oth', 'LandSlope_Tencode|Functional_Min2', 'Condition1_Artery|BsmtExposure_Tencode', 'Condition1_Norm|BsmtCond_TA', 'KitchenQual_Gd|BsmtFinType2_Unf', 'FireplaceQu_Gd|FireplaceQu_TA', 'BsmtExposure_Tencode|MiscFeature_Othr', 'MasVnrArea|BsmtCond_TA', 'YearRemodAdd|Neighborhood_CollgCr', 'GarageType_Detchd|LotConfig_Tencode', 'BsmtUnfSF|Condition1_Tencode', 'ExterCond_Fa|WoodDeckSF', 'Foundation_BrkTil|MSSubClass', 'ExterQual_Tencode|RoofMatl_WdShngl', 'HeatingQC_TA|Neighborhood_NAmes', 'Utilities_Tencode|Exterior1st_CemntBd', 'PavedDrive_N|HouseStyle_Tencode', 'BsmtQual_Fa|CentralAir_N', 'TotalBsmtSF|3SsnPorch', 'LotConfig_Corner|OpenPorchSF', 'Neighborhood_NAmes|MSSubClass', 'LotArea|Exterior2nd_Wd Shng', 'GrLivArea|BsmtFinType2_Rec', 'PavedDrive_Y|ExterQual_Ex', 'Exterior1st_Tencode|Exterior1st_Wd Sdng', 'Exterior1st_VinylSd|SaleType_COD', 'GarageFinish_Unf|Exterior2nd_Wd Sdng', 'GarageType_BuiltIn|Alley_Grvl', 'LotArea|Condition1_Norm', 'MSZoning_C (all)|MasVnrType_Stone', 'LotConfig_Corner|GarageType_Basment', 'GarageQual_Gd|LandContour_Lvl', 'LotArea|PavedDrive_Y', 'BsmtUnfSF|Functional_Mod', 'LandContour_Tencode|Neighborhood_Sawyer', 'BldgType_Duplex|2ndFlrSF', 'Neighborhood_Blmngtn|LotConfig_Corner', 'Exterior2nd_Stucco|Exterior2nd_Tencode', 'MiscFeature_Tencode|Exterior2nd_Brk Cmn', 'LandContour_Tencode|GarageType_BuiltIn', 'BsmtExposure_Tencode|BsmtExposure_Av', 'BsmtUnfSF|GarageType_Basment', 'TotRmsAbvGrd|MiscFeature_Tencode', 'Exterior1st_WdShing|Exterior2nd_Wd Shng', 'RoofStyle_Gable|ExterQual_Ex', 'CentralAir_N|Exterior1st_Wd Sdng', 'BsmtQual_Fa|3SsnPorch', 'Foundation_BrkTil|GarageFinish_RFn', 'Functional_Tencode|BsmtExposure_Av', 'LandContour_Bnk|Utilities_AllPub', 'BldgType_Duplex|LandContour_Lvl', 'LotShape_IR2|ExterQual_Gd', 'FireplaceQu_Gd|Neighborhood_ClearCr', 'FireplaceQu_Tencode|ExterCond_TA', 'HeatingQC_TA|SaleType_Oth', 'GarageQual_Gd|SaleType_ConLw', 'GarageFinish_Fin|LotArea', 'Exterior2nd_Wd Sdng|FireplaceQu_TA', 'Neighborhood_Tencode|SaleCondition_Normal', 'LotShape_Tencode|Condition1_RRAn', 'Heating_GasA|LandContour_Lvl', 'BsmtFinType1_BLQ|Functional_Maj2', 'Foundation_PConc|SaleType_New', 'GarageCond_Po|BsmtFinType2_Unf', 'Neighborhood_SawyerW|MSZoning_FV', 'BedroomAbvGr|BsmtFinType1_GLQ', 'GarageCond_TA|SaleCondition_Alloca', 'Exterior2nd_VinylSd|SaleType_ConLI', 'Neighborhood_Blmngtn|LandContour_Bnk', 'GarageQual_Tencode|Fence_MnWw', 'GarageQual_Gd|Condition1_Feedr', 'ExterCond_Gd|MSZoning_RH', 'BsmtFinType2_BLQ|GarageType_BuiltIn', 'BsmtFinType2_GLQ|Neighborhood_NAmes', 'YearRemodAdd|HouseStyle_2Story', 'Neighborhood_OldTown|SaleType_CWD', 'Exterior1st_BrkFace|GarageFinish_Tencode', 'YearBuilt|SaleType_Oth', 'Functional_Mod|MSZoning_RH', 'PavedDrive_P|SaleCondition_Abnorml', 'Alley_Grvl|Exterior1st_Wd Sdng', 'FireplaceQu_Gd|CentralAir_Y', 'Foundation_Tencode|BsmtFinType2_Rec', 'GarageType_BuiltIn|BsmtFinType2_Unf', 'FullBath|GarageType_Attchd', 'OverallCond|BsmtFinType1_Unf', 'BldgType_TwnhsE|LotShape_IR3', 'BsmtQual_Ex|Exterior1st_CemntBd', 'LotConfig_CulDSac|Utilities_AllPub', 'HouseStyle_1Story|Neighborhood_Veenker', 'GarageCars|Electrical_Tencode', 'BsmtHalfBath|ExterQual_Gd', 'BsmtExposure_Mn|Exterior1st_Wd Sdng', 'BsmtFinType2_Tencode|GarageType_CarPort', 'BsmtQual_Ex|GarageType_Attchd', 'Condition1_Artery|KitchenQual_TA', 'BsmtQual_Tencode|Heating_Tencode', 'GarageType_BuiltIn|GarageQual_Po', 'BsmtQual_Fa|BsmtCond_Tencode', 'MiscFeature_Shed|Fence_MnPrv', 'LotArea|GarageCond_Fa', 'LotShape_Tencode|Condition1_Tencode', 'Functional_Min1|Condition2_Artery', 'Foundation_Stone|CentralAir_Y', 'LandContour_Low|SaleCondition_Family', 'BsmtFinType1_Tencode|Neighborhood_NPkVill', 'Exterior1st_BrkFace|BsmtCond_TA', 'GarageQual_Gd|Neighborhood_Gilbert', 'FullBath|LandSlope_Tencode', 'Condition2_Artery|Condition1_RRAn', 'Exterior2nd_Stucco|LotConfig_Corner', 'BsmtUnfSF|MasVnrType_Tencode', 'Exterior2nd_Tencode|BsmtExposure_No', 'HeatingQC_Ex|Exterior2nd_AsphShn', 'MiscFeature_Othr|MasVnrType_None', 'PavedDrive_N|MasVnrType_BrkFace', 'Neighborhood_NAmes|Neighborhood_MeadowV', 'PoolQC_Tencode|CentralAir_Y', 'BsmtExposure_Tencode|TotRmsAbvGrd', 'BldgType_Tencode|BsmtCond_Fa', 'Electrical_FuseP|RoofMatl_Tar&Grv', 'BedroomAbvGr|Functional_Maj2', 'BedroomAbvGr|Exterior2nd_HdBoard', 'Condition1_PosA|MasVnrType_BrkCmn', 'Heating_GasA|Exterior1st_Stucco', 'LandContour_Lvl|BsmtExposure_Gd', 'Exterior2nd_Stone|Neighborhood_Blmngtn', 'Neighborhood_Mitchel|SaleCondition_Family', 'HalfBath|Exterior2nd_Wd Sdng', 'Neighborhood_NridgHt|MiscFeature_Othr', 'Neighborhood_Tencode|Exterior1st_BrkComm', 'Condition1_Norm|Neighborhood_SawyerW', 'OverallQual|SaleCondition_Partial', 'FullBath|Neighborhood_Sawyer', 'ExterQual_TA|BsmtFinType1_LwQ', 'Functional_Typ|SaleCondition_Alloca', 'FireplaceQu_Ex|ExterQual_Fa', 'GarageCond_Gd|Condition2_Norm', 'PavedDrive_N|MSZoning_RM', 'LowQualFinSF|Exterior2nd_Wd Shng', 'LotShape_IR2|HalfBath', 'Heating_GasA|Street_Pave', 'GarageType_Tencode|Exterior1st_WdShing', 'ExterCond_TA|HeatingQC_Ex', 'KitchenQual_Gd|RoofStyle_Tencode', 'HouseStyle_SFoyer|OpenPorchSF', 'HouseStyle_1Story|EnclosedPorch', 'Neighborhood_Sawyer|WoodDeckSF', 'GarageType_Attchd|Exterior1st_WdShing', 'GarageQual_Fa|ExterQual_Fa', 'KitchenQual_Ex|GarageQual_Po', 'ExterCond_Tencode|MSZoning_FV', 'Exterior2nd_Tencode|Foundation_CBlock', 'GarageCond_Tencode|Neighborhood_SWISU', 'SaleCondition_Normal|ExterQual_Tencode', 'Electrical_FuseP|Functional_Maj1', 'LandContour_Low|BsmtExposure_Mn', 'Exterior2nd_Stucco|YearRemodAdd', 'LotShape_Tencode|GarageType_2Types', 'Neighborhood_Blmngtn|ExterQual_Ex', 'HeatingQC_TA|Electrical_FuseP', 'FireplaceQu_Tencode|Exterior1st_AsbShng', 'Exterior2nd_CmentBd|BsmtCond_TA', 'HeatingQC_Gd|KitchenQual_Ex', 'Alley_Pave|Neighborhood_Sawyer', 'Electrical_FuseA|MiscFeature_Shed', 'Street_Tencode|RoofStyle_Gable', 'Exterior2nd_Stone|PavedDrive_P', 'RoofStyle_Flat|Foundation_Slab', 'Exterior2nd_AsbShng|BsmtFinType1_ALQ', 'Foundation_BrkTil|Fence_GdWo', 'GarageQual_TA|MasVnrType_BrkFace', 'Exterior2nd_AsbShng|CentralAir_Y', 'GarageType_Tencode|GarageType_CarPort', 'Neighborhood_Veenker|Condition2_Artery', 'KitchenQual_Gd|Exterior2nd_CmentBd', 'BsmtFinType2_Tencode|Neighborhood_NAmes', 'Exterior1st_BrkComm|Exterior1st_Wd Sdng', 'HeatingQC_Ex|MasVnrType_BrkFace', 'GarageQual_TA|MSSubClass', 'EnclosedPorch|BsmtFinType1_Rec', 'Alley_Pave|BsmtFinType2_Unf', 'Functional_Maj1|SaleType_CWD', 'Exterior1st_CemntBd|FireplaceQu_Ex', 'Neighborhood_NoRidge|Exterior1st_BrkComm', 'KitchenQual_Tencode|GarageQual_Tencode', 'MiscVal|LowQualFinSF', 'RoofMatl_Tencode|Street_Pave', 'PoolQC_Tencode|OverallCond', 'LotConfig_FR2|MSZoning_RL', 'Neighborhood_StoneBr|BldgType_1Fam', 'SaleCondition_Normal|Condition1_RRAn', 'Heating_Tencode|HouseStyle_1.5Unf', 'Electrical_FuseP|GarageCond_Fa', 'LotConfig_Corner|BsmtExposure_Gd', 'Heating_Tencode|LowQualFinSF', 'FireplaceQu_Tencode|MiscFeature_Othr', 'Heating_GasA|Functional_Maj2', 'Neighborhood_Gilbert|BldgType_1Fam', 'Neighborhood_Blmngtn|Exterior1st_MetalSd', 'Condition1_PosN|Condition1_Tencode', 'Exterior1st_CemntBd', 'MSSubClass|SaleType_CWD', 'GarageQual_Gd|LandSlope_Tencode', 'BsmtExposure_Tencode|BsmtFinType2_Unf', 'HalfBath|BsmtCond_TA', 'HouseStyle_SFoyer|GarageCond_Tencode', 'GarageType_BuiltIn|BsmtExposure_Mn', 'LotShape_IR2|BldgType_1Fam', 'LotShape_IR1|BsmtExposure_Mn', 'Exterior2nd_AsbShng|SaleType_CWD', 'LotArea|SaleType_Oth', 'PavedDrive_N|BsmtExposure_Av', 'GarageType_Detchd|LandContour_Lvl', 'Exterior1st_BrkFace|Fence_GdPrv', 'Exterior1st_HdBoard|MasVnrType_Stone', 'SaleCondition_Alloca|RoofStyle_Gable', 'LotShape_Reg|Electrical_Tencode', 'KitchenQual_Fa|RoofMatl_WdShngl', 'Condition2_Tencode|WoodDeckSF', 'Condition1_Artery|SaleCondition_Family', 'ExterCond_TA|MasVnrType_BrkCmn', 'Fence_Tencode|GarageType_Basment', 'GarageFinish_Tencode|Functional_Mod', 'FireplaceQu_Tencode|Fireplaces', 'Exterior2nd_Stucco|KitchenQual_Tencode', 'Neighborhood_OldTown|MSZoning_RH', 'Functional_Tencode|GarageFinish_RFn', 'Fence_GdPrv|HouseStyle_1.5Unf', 'Exterior2nd_Stucco|Fence_Tencode', 'EnclosedPorch|GarageQual_Fa', 'Neighborhood_Somerst|HouseStyle_Tencode', 'LowQualFinSF|MoSold', 'GarageQual_Gd|MSZoning_FV', 'HeatingQC_Fa|Exterior1st_AsbShng', 'LotShape_IR1|GarageType_Attchd', 'Exterior2nd_VinylSd|SaleType_New', 'Condition1_Artery|Fence_Tencode', 'MSZoning_RM|Neighborhood_MeadowV', 'MiscFeature_Othr|Exterior2nd_BrkFace', 'BldgType_Duplex|MasVnrType_BrkCmn', 'Condition2_Tencode|BsmtFinType1_GLQ', 'Foundation_PConc|FireplaceQu_TA', 'LandContour_HLS|Neighborhood_Veenker', 'Neighborhood_NPkVill|ExterQual_Tencode', 'BsmtUnfSF|MSSubClass', 'SaleCondition_Tencode|Exterior2nd_Stone', 'MasVnrType_BrkCmn|ExterQual_Gd', 'BsmtFinType2_BLQ|HouseStyle_2Story', 'BedroomAbvGr|LandContour_Lvl', 'SaleCondition_Normal|BsmtCond_Fa', 'RoofMatl_Tencode|OpenPorchSF', 'RoofMatl_Tar&Grv|ScreenPorch', 'Neighborhood_SWISU|BsmtFullBath', 'SaleCondition_Normal|Condition2_Norm', 'BsmtFinType1_Tencode|Neighborhood_CollgCr', 'FullBath|BedroomAbvGr', 'SaleType_New|FireplaceQu_Ex', 'RoofStyle_Flat|LowQualFinSF', 'HeatingQC_Ex|LandSlope_Gtl', 'BsmtFinSF2|SaleCondition_Alloca', 'Foundation_Tencode|BsmtFinType1_Unf', 'Neighborhood_Mitchel|Neighborhood_NAmes', 'RoofStyle_Gambrel|Fence_GdWo', 'Exterior2nd_VinylSd|LotConfig_Inside', 'Exterior2nd_Stucco|Neighborhood_MeadowV', 'GarageType_Attchd|MSZoning_RH', 'LotConfig_CulDSac|Street_Grvl', 'BsmtQual_Tencode|BsmtFinType2_ALQ', 'BedroomAbvGr|MiscFeature_Tencode', 'SaleCondition_Family|MSZoning_Tencode', 'LotConfig_Tencode|GarageType_2Types', 'PavedDrive_P|Exterior2nd_Wd Shng', 'TotRmsAbvGrd|Exterior2nd_AsphShn', 'LotShape_IR1|MasVnrArea', 'Condition1_Norm|GarageCond_Ex', 'Condition1_PosN|Exterior2nd_MetalSd', 'KitchenAbvGr|LandSlope_Mod', 'GarageQual_Gd|LotConfig_CulDSac', 'Condition1_RRAe|TotRmsAbvGrd', 'SaleCondition_Normal|BsmtFinSF1', 'LotArea|GarageCond_Gd', 'BsmtQual_Ex|Electrical_FuseF', 'BsmtFinType2_GLQ|Alley_Grvl', 'LandContour_Low|GarageFinish_Tencode', 'Exterior1st_BrkFace|HeatingQC_Tencode', 'LandSlope_Tencode|SaleCondition_Abnorml', 'SaleCondition_Tencode|Condition1_Tencode', 'Neighborhood_BrDale|GarageCond_Po', 'Fence_Tencode|HouseStyle_2Story', 'GarageYrBlt|BsmtExposure_Mn', 'FireplaceQu_Gd|OpenPorchSF', 'YearRemodAdd|RoofMatl_Tar&Grv', 'ExterCond_TA|Neighborhood_Timber', 'GarageFinish_Fin|MiscFeature_Shed', 'Neighborhood_Somerst|MSSubClass', 'HeatingQC_TA|Neighborhood_Tencode', 'Exterior2nd_CmentBd|MiscFeature_Tencode', 'Neighborhood_StoneBr|Foundation_CBlock', 'BldgType_Twnhs|HouseStyle_1.5Fin', 'Neighborhood_NoRidge|SaleCondition_Abnorml', 'Condition1_RRAe|Fence_GdWo', 'TotalBsmtSF|BsmtExposure_No', 'GarageCond_TA|SaleType_WD', 'MasVnrType_None|CentralAir_Y', 'Exterior2nd_MetalSd|MiscFeature_Tencode', 'FireplaceQu_Gd|MSZoning_Tencode', 'RoofMatl_Tencode|BsmtFinType1_ALQ', 'Condition2_Tencode|Functional_Min2', 'Neighborhood_Somerst|ExterQual_Tencode', 'HouseStyle_1.5Unf|KitchenQual_Fa', 'Foundation_PConc|ExterCond_Gd', 'Fence_GdPrv', 'Condition1_PosN|HouseStyle_2Story', 'Utilities_Tencode|BsmtFinType1_Unf', 'Exterior1st_HdBoard|PoolQC_Tencode', 'ExterQual_TA|PavedDrive_P', 'LotArea|LotConfig_CulDSac', 'MasVnrType_None|Exterior2nd_HdBoard', 'GarageType_Detchd|BsmtFinSF1', 'BsmtExposure_Mn|Neighborhood_Timber', 'LotConfig_FR2|BsmtExposure_No', 'SaleCondition_Normal|SaleType_CWD', 'GarageFinish_Tencode|WoodDeckSF', 'Foundation_PConc|HeatingQC_TA', 'KitchenAbvGr|HouseStyle_1Story', 'BsmtFinType2_LwQ|Exterior2nd_Plywood', 'Exterior1st_BrkFace|RoofStyle_Shed', 'KitchenQual_Ex|Condition1_RRAe', 'BsmtFinType2_ALQ|Condition1_RRAe', 'TotRmsAbvGrd|Condition2_Norm', 'PavedDrive_N|BedroomAbvGr', 'BsmtFinType1_LwQ|SaleType_Oth', 'GarageFinish_Unf|ExterCond_TA', 'SaleType_Tencode|Exterior1st_BrkComm', 'LowQualFinSF|Street_Pave', 'OverallQual|SaleType_ConLI', '2ndFlrSF|SaleType_Oth', 'LotConfig_Tencode|MasVnrArea', 'Heating_Tencode|BsmtQual_Fa', 'RoofStyle_Hip|SaleType_CWD', 'BsmtExposure_Tencode|BedroomAbvGr', 'YearRemodAdd|BsmtFinType1_ALQ', 'GarageCond_TA|BsmtQual_Ex', 'BsmtExposure_Tencode|Functional_Maj1', 'HeatingQC_Gd|Utilities_AllPub', 'SaleCondition_Family|GarageType_2Types', 'HouseStyle_Tencode|Fence_GdWo', 'MasVnrArea|MSZoning_RL', 'GarageCars|LandSlope_Tencode', 'OverallQual|RoofStyle_Flat', 'Exterior1st_Stucco|MiscFeature_Gar2', 'GarageCars|RoofStyle_Shed', 'MSZoning_C (all)|Condition1_Feedr', 'BsmtFinType1_ALQ|RoofStyle_Gambrel', 'SaleCondition_Tencode|LandContour_HLS', 'HeatingQC_TA|Utilities_AllPub', 'Foundation_Stone|GarageCond_Gd', 'Exterior2nd_Stucco|Fence_MnPrv', 'RoofMatl_Tar&Grv|ExterCond_Fa', 'Utilities_Tencode|MoSold', 'BldgType_TwnhsE|MSZoning_RL', 'BsmtFinType2_GLQ|BsmtCond_Tencode', 'LotShape_IR3|Exterior2nd_AsphShn', 'LotShape_Tencode|Neighborhood_Tencode', 'LandContour_Low|SaleType_New', 'Functional_Tencode|ScreenPorch', 'Fireplaces|Fence_Tencode', 'BsmtFinType1_GLQ|Exterior1st_WdShing', 'Exterior2nd_Tencode|ExterCond_Gd', 'GarageQual_Gd|Electrical_FuseP', 'Foundation_Stone|Neighborhood_Veenker', 'Exterior1st_CemntBd|BsmtExposure_Av', 'HeatingQC_TA|MiscFeature_Shed', 'Neighborhood_SWISU|Fence_GdPrv', 'HeatingQC_Tencode|MasVnrType_Tencode', 'Neighborhood_CollgCr|Alley_Grvl', 'GarageCond_Ex|Fence_MnWw', 'Alley_Tencode|Condition1_Norm', 'Neighborhood_Edwards|BsmtFinType1_Rec', 'Foundation_Stone|Neighborhood_NoRidge', 'GrLivArea|SaleType_COD', 'MasVnrType_BrkFace|LotConfig_Inside', 'HeatingQC_Fa|Exterior2nd_Wd Shng', 'BsmtFinSF2|MSZoning_FV', 'BsmtCond_Po|Exterior1st_WdShing', 'Fence_GdPrv|SaleType_CWD', 'BsmtExposure_No|ExterQual_Fa', 'Utilities_Tencode|MasVnrType_BrkFace', 'BsmtFinType2_LwQ|LotConfig_Inside', 'LandContour_HLS|FireplaceQu_Ex', 'RoofMatl_Tencode|BsmtFinType2_Tencode', 'SaleType_ConLI|ScreenPorch', 'BldgType_2fmCon|MasVnrType_BrkFace', 'MasVnrArea|GarageType_2Types', 'HouseStyle_Tencode|BsmtCond_Po', 'PavedDrive_Tencode|Condition1_Tencode', 'ExterQual_TA|HouseStyle_1.5Fin', 'Fence_Tencode|Neighborhood_Veenker', 'Condition1_Artery|Condition2_Artery', 'FireplaceQu_Po|BsmtFinType1_ALQ', 'Neighborhood_Mitchel|RoofMatl_Tar&Grv', 'BsmtUnfSF|MiscFeature_Gar2', 'SaleType_Tencode|LotConfig_Inside', 'Foundation_Stone|FireplaceQu_Ex', 'Foundation_BrkTil|GarageFinish_Tencode', 'BsmtUnfSF|SaleCondition_Partial', 'Alley_Pave|SaleType_Oth', 'Neighborhood_NAmes', 'KitchenQual_Tencode|PoolArea', 'BsmtExposure_Tencode|Functional_Typ', 'KitchenQual_Gd|BsmtFinType1_ALQ', 'BsmtFinType1_Rec|Foundation_Slab', 'GarageFinish_Fin|Exterior1st_Wd Sdng', 'GarageYrBlt|WoodDeckSF', 'HalfBath|BsmtCond_Fa', 'MiscFeature_Tencode|Neighborhood_Crawfor', 'Electrical_FuseA|MSSubClass', 'HouseStyle_1Story|FireplaceQu_TA', 'TotalBsmtSF|FireplaceQu_TA', 'Utilities_Tencode|Exterior1st_VinylSd', 'LotConfig_CulDSac|BsmtCond_TA', 'RoofMatl_Tar&Grv|LandSlope_Gtl', 'Heating_Tencode|MasVnrType_None', 'Foundation_BrkTil|PavedDrive_P', 'SaleType_COD|GarageFinish_RFn', 'BsmtCond_Gd|Neighborhood_IDOTRR', 'BldgType_Tencode|Exterior1st_WdShing', 'Electrical_FuseA|GarageArea', 'BsmtFullBath|HouseStyle_1.5Fin', 'Street_Tencode|Exterior2nd_Brk Cmn', 'GarageQual_Gd|Foundation_BrkTil', '1stFlrSF|Exterior2nd_Brk Cmn', 'BldgType_Twnhs|RoofStyle_Tencode', 'Functional_Typ|BsmtFinType1_Unf', 'LandContour_Tencode|Neighborhood_Veenker', 'Functional_Maj2|PavedDrive_P', 'BsmtFinType2_ALQ|Exterior1st_Wd Sdng', 'ExterQual_Ex|Utilities_AllPub', 'Heating_Tencode|LandSlope_Gtl', 'Neighborhood_Tencode|PoolArea', 'LotShape_IR2|Foundation_Tencode', 'BsmtFullBath|Condition1_RRAe', 'Electrical_Tencode|Neighborhood_SawyerW', 'Neighborhood_SWISU|HouseStyle_1.5Fin', 'BsmtFinType1_BLQ|Neighborhood_OldTown', 'BedroomAbvGr|SaleCondition_Alloca', 'RoofStyle_Shed|Exterior1st_Plywood', 'Neighborhood_Edwards|BsmtExposure_No', 'BldgType_1Fam|Exterior2nd_HdBoard', 'Foundation_Slab|MSZoning_RH', 'Neighborhood_ClearCr|Alley_Grvl', 'SaleCondition_Alloca|Utilities_AllPub', 'KitchenQual_Tencode|BsmtFinType1_Rec', 'Neighborhood_Edwards|Functional_Maj1', 'EnclosedPorch|Foundation_CBlock', 'Exterior1st_AsbShng|MiscFeature_Gar2', 'BsmtHalfBath|BsmtQual_Ex', 'SaleCondition_Partial|Exterior2nd_HdBoard', 'MSSubClass|Neighborhood_IDOTRR', 'Exterior2nd_CmentBd|PoolArea', 'LotArea|MSZoning_Tencode', 'BldgType_2fmCon|Exterior1st_BrkComm', 'LotFrontage|ExterQual_Gd', 'TotalBsmtSF|Utilities_AllPub', 'ExterQual_TA|GarageFinish_Tencode', 'Fence_Tencode|PavedDrive_Tencode', 'FireplaceQu_Gd|BldgType_Tencode', 'Foundation_BrkTil|LandContour_Lvl', 'BsmtExposure_Tencode|Condition1_PosN', 'RoofStyle_Gambrel|MasVnrType_None', 'Exterior1st_CemntBd|MasVnrType_BrkCmn', 'RoofStyle_Gambrel|BsmtFinType2_Unf', 'Electrical_Tencode|Exterior2nd_Wd Sdng', 'EnclosedPorch|KitchenQual_Fa', 'PoolQC_Tencode|GarageType_CarPort', 'YearBuilt|HouseStyle_1.5Fin', 'Neighborhood_BrDale|Heating_Tencode', 'Condition1_PosA|ExterCond_Fa', 'FireplaceQu_Gd|Street_Pave', 'GarageCond_TA|Neighborhood_Tencode', 'Foundation_BrkTil|Exterior2nd_Plywood', 'Functional_Maj1|GarageCond_Ex', 'HouseStyle_1.5Unf|ExterCond_Gd', 'Functional_Maj2|LotShape_IR3', 'LotConfig_Corner|PavedDrive_Tencode', 'Functional_Typ|MiscFeature_Tencode', 'Neighborhood_Somerst|Functional_Maj1', 'BsmtFinType2_ALQ|Utilities_AllPub', 'Electrical_FuseP|GarageType_Tencode', 'GarageCond_Po|BsmtExposure_Av', 'HeatingQC_Fa|LotConfig_FR2', 'KitchenQual_Gd|Heating_GasW', 'HeatingQC_Fa|Condition1_RRAn', 'BsmtQual_Ex|Electrical_SBrkr', 'HeatingQC_Fa|BsmtCond_Gd', 'GarageType_Tencode|Neighborhood_NWAmes', 'RoofStyle_Flat|Exterior1st_Tencode', 'GarageFinish_Fin|Electrical_FuseF', 'BldgType_Duplex|Exterior1st_Tencode', 'Electrical_Tencode|GarageCond_Fa', 'SaleType_ConLD|SaleCondition_Family', '3SsnPorch|BldgType_Tencode', 'Neighborhood_BrDale|LotShape_Reg', 'SaleType_ConLI|Fence_GdPrv', 'Condition1_PosA|Exterior2nd_CmentBd', 'Electrical_FuseA|Condition2_Tencode', 'Functional_Typ|GarageCars', 'BsmtFinType1_Tencode|BsmtCond_TA', '1stFlrSF|BsmtFinType1_Unf', 'RoofMatl_Tencode|Exterior2nd_AsphShn', 'GarageCond_Po|SaleCondition_Abnorml', 'LotConfig_FR2|BsmtCond_Tencode', 'RoofMatl_CompShg|BsmtQual_Fa', 'Neighborhood_NPkVill|Neighborhood_ClearCr', 'Foundation_Slab|Fence_MnPrv', 'RoofMatl_Tar&Grv|ExterQual_Gd', 'GarageQual_TA|Neighborhood_NAmes', 'Functional_Typ|RoofStyle_Tencode', 'GarageType_Attchd|PoolArea', 'BsmtFinType2_Unf|MSZoning_RH', 'BsmtFinSF1|Exterior1st_Wd Sdng', 'GarageFinish_Unf|Fence_GdWo', 'GarageFinish_RFn|ScreenPorch', 'KitchenQual_Ex|LandSlope_Tencode', 'LotShape_IR1|BsmtQual_Tencode', 'Foundation_Stone|Utilities_AllPub', 'Neighborhood_Blmngtn|BsmtFinType2_BLQ', 'BldgType_Twnhs|BldgType_TwnhsE', 'Heating_Grav|BsmtExposure_Gd', 'BsmtFinType2_BLQ|Exterior1st_Plywood', 'BsmtFinType2_Tencode|Neighborhood_SWISU', 'GarageCars|GarageQual_Tencode', 'BldgType_1Fam|CentralAir_N', 'RoofStyle_Gable|MoSold', 'Neighborhood_Mitchel|GarageType_BuiltIn', 'HeatingQC_Fa|FireplaceQu_Ex', 'Heating_GasW|RoofStyle_Tencode', 'Heating_GasW|Exterior1st_CemntBd', 'SaleCondition_Normal|Condition1_Feedr', 'Heating_GasA|Exterior2nd_Brk Cmn', 'Exterior2nd_AsbShng|BsmtFullBath', 'Condition1_PosN|KitchenQual_TA', 'Condition1_Artery|Condition1_RRAn', 'BedroomAbvGr|GarageQual_Fa', 'BsmtFinSF2|SaleType_ConLD', 'SaleType_WD|HeatingQC_Tencode', 'BldgType_TwnhsE|Exterior1st_BrkComm', 'FireplaceQu_Fa|Exterior2nd_MetalSd', 'Alley_Tencode|SaleCondition_Family', 'BsmtQual_TA|Neighborhood_Gilbert', 'GarageArea|Exterior1st_BrkComm', 'GarageCond_Po|FireplaceQu_TA', 'LotShape_Tencode|Exterior1st_Wd Sdng', 'LotShape_Tencode|Exterior2nd_Plywood', 'LotConfig_CulDSac|BsmtCond_Gd', 'Functional_Maj1|BsmtFinType2_Unf', 'Condition1_Artery|BsmtCond_Fa', 'GarageType_CarPort|Foundation_CBlock', 'Heating_GasA|Neighborhood_StoneBr', 'Foundation_PConc|BsmtFinSF2', 'EnclosedPorch|HouseStyle_1.5Unf', 'MasVnrType_BrkCmn|WoodDeckSF', 'BsmtFinType1_Rec|BsmtExposure_Av', 'Foundation_PConc|BsmtFinType2_Tencode', 'Fence_Tencode|Neighborhood_Timber', 'LandContour_Tencode|Exterior1st_Wd Sdng', 'Functional_Typ|HouseStyle_Tencode', 'BsmtExposure_Mn|Exterior2nd_Wd Shng', 'ExterQual_TA|Neighborhood_Sawyer', 'Condition1_PosA|GarageType_Basment', 'LandContour_Lvl|SaleType_COD', 'Electrical_SBrkr|GarageArea', 'HouseStyle_1.5Unf|Neighborhood_MeadowV', 'SaleType_Oth|MiscFeature_Gar2', 'SaleType_New|BsmtCond_Po', 'BsmtFinType2_GLQ|ScreenPorch', 'OverallCond|BsmtExposure_Mn', 'Neighborhood_SWISU|Exterior1st_CemntBd', 'KitchenQual_TA|MasVnrArea', 'Functional_Typ|Exterior2nd_Wd Shng', 'RoofStyle_Gambrel|MiscFeature_Gar2', 'GarageCond_TA|ExterCond_Gd', 'LotConfig_FR2|CentralAir_Tencode', 'LandContour_Bnk|MasVnrType_BrkFace', 'MiscFeature_Tencode|MasVnrType_None', 'LandSlope_Gtl|Exterior1st_BrkComm', 'FireplaceQu_Gd|BsmtCond_Po', 'YearBuilt|GarageQual_TA', 'SaleCondition_Tencode|Exterior1st_AsbShng', 'Exterior2nd_BrkFace|3SsnPorch', 'YearRemodAdd|GarageCars', 'FullBath|Neighborhood_Mitchel', 'Exterior2nd_VinylSd|BsmtQual_Fa', 'Utilities_Tencode|LandContour_Tencode', 'Condition1_Artery|BsmtExposure_Av', 'YearRemodAdd|MSZoning_RH', 'BsmtFinType2_Rec|MSZoning_RL', 'HouseStyle_1Story|Alley_Grvl', 'Neighborhood_ClearCr|Exterior1st_BrkComm', 'GarageFinish_Tencode|Foundation_CBlock', 'Exterior2nd_Stone|Neighborhood_NridgHt', 'RoofStyle_Gambrel|LandSlope_Gtl', 'BsmtExposure_Tencode|Neighborhood_BrDale', 'BsmtQual_Tencode|BsmtQual_Ex', 'Electrical_Tencode|Condition1_Tencode', 'HeatingQC_Fa|GarageFinish_RFn', 'Condition1_PosA|BsmtExposure_Av', 'Exterior1st_Stucco|PavedDrive_P', 'GarageFinish_Fin|CentralAir_Y', 'Neighborhood_Mitchel|Exterior2nd_VinylSd', 'LotConfig_Corner|Exterior1st_BrkComm', 'Exterior1st_AsbShng|BsmtFinType1_Unf', 'HouseStyle_2.5Unf|CentralAir_N', 'SaleType_Tencode|Exterior1st_CemntBd', 'Functional_Min1|LotShape_IR3', 'GarageQual_Fa|Neighborhood_SawyerW', 'LandContour_Lvl|ExterQual_Tencode', 'Utilities_Tencode|BsmtFinType1_GLQ', 'OpenPorchSF|SaleCondition_Abnorml', 'Fence_GdWo|BsmtExposure_No', 'Neighborhood_OldTown|Exterior2nd_Brk Cmn', 'HeatingQC_Gd|Neighborhood_Crawfor', 'BsmtFinSF2|Street_Grvl', 'FireplaceQu_Tencode|PavedDrive_Tencode', 'BldgType_2fmCon|KitchenQual_TA', 'LotFrontage|Exterior1st_Wd Sdng', 'BsmtFinType1_Rec|Exterior1st_Plywood', 'SaleType_COD|KitchenQual_TA', 'RoofMatl_Tar&Grv|FireplaceQu_Fa', 'LandContour_Low|HouseStyle_SFoyer', 'GarageCars|Neighborhood_SawyerW', 'Exterior1st_AsbShng|OverallCond', 'KitchenAbvGr|BsmtQual_Gd', 'HeatingQC_Gd|HeatingQC_Ex', 'FullBath|Exterior2nd_Wd Shng', 'HeatingQC_Fa|RoofStyle_Tencode', 'Heating_GasA|Exterior2nd_MetalSd', 'SaleType_Tencode|HouseStyle_2.5Unf', 'BldgType_TwnhsE|PavedDrive_P', 'Fence_GdWo|GarageQual_Tencode', 'KitchenQual_Tencode|HouseStyle_2Story', 'ExterQual_TA|Exterior2nd_AsphShn', 'SaleCondition_Partial|ExterQual_Fa', 'KitchenQual_Gd|SaleType_ConLw', 'BldgType_Duplex|Exterior1st_BrkComm', 'Exterior2nd_VinylSd|HeatingQC_Tencode', 'Utilities_Tencode|GarageType_2Types', 'SaleCondition_Tencode|BsmtFinType1_GLQ', 'GarageCond_TA|LowQualFinSF', 'PavedDrive_Tencode', 'SaleType_New|MasVnrType_Stone', 'SaleType_COD|Exterior2nd_Wd Shng', 'Exterior1st_CemntBd|Condition2_Artery', 'BsmtQual_Tencode|BldgType_Tencode', 'GarageCond_Po|MSZoning_RH', 'Neighborhood_NoRidge|Neighborhood_IDOTRR', 'RoofMatl_CompShg|PavedDrive_Tencode', 'KitchenQual_Tencode|Functional_Min1', 'Functional_Maj2|SaleType_Oth', 'RoofStyle_Hip|BsmtFinType2_Rec', 'Exterior2nd_Stone|RoofStyle_Gambrel', 'ExterCond_Gd|SaleType_New', 'LotShape_IR2|Exterior1st_Plywood', 'Street_Pave|Exterior1st_Wd Sdng', 'HalfBath|ExterCond_Gd', 'LotConfig_Corner|BsmtFinSF1', 'RoofStyle_Flat|LandContour_Lvl', 'Exterior1st_VinylSd|PoolArea', 'Neighborhood_Blmngtn|BsmtCond_TA', 'KitchenQual_Ex|Neighborhood_SawyerW', 'Neighborhood_SawyerW|MasVnrArea', 'Exterior2nd_AsbShng|GarageQual_Tencode', 'BsmtUnfSF|KitchenQual_TA', 'RoofStyle_Tencode|Neighborhood_Sawyer', 'BsmtFinType2_ALQ|SaleCondition_Partial', 'Neighborhood_Gilbert|BsmtExposure_Mn', 'HouseStyle_Tencode|SaleCondition_Normal', 'GarageFinish_Unf|GarageQual_Gd', 'LandSlope_Sev|SaleCondition_Alloca', 'RoofMatl_Tar&Grv|MSZoning_RL', 'Neighborhood_NoRidge|LotConfig_Tencode', 'Neighborhood_Blmngtn|Condition2_Norm', 'HouseStyle_1Story|LandSlope_Mod', 'YearBuilt|BldgType_Tencode', 'HouseStyle_2.5Unf|LotConfig_Inside', 'TotRmsAbvGrd', 'KitchenAbvGr|Exterior2nd_Stucco', 'HeatingQC_Gd|CentralAir_Y', '3SsnPorch|Functional_Min2', 'Exterior1st_Stucco|SaleType_ConLD', 'GarageFinish_Fin|Exterior2nd_CmentBd', 'BsmtFinType2_LwQ|MasVnrType_Tencode', 'FireplaceQu_Tencode|Exterior2nd_AsbShng', 'Exterior1st_VinylSd|BsmtFinType1_Unf', 'Foundation_Stone|ScreenPorch', 'BsmtFinSF1|Exterior1st_Tencode', 'Neighborhood_Tencode|ExterCond_Fa', 'Exterior2nd_Tencode|GarageArea', 'ExterQual_TA|GarageType_Basment', 'HouseStyle_1.5Unf|Exterior2nd_HdBoard', 'Foundation_Tencode|Exterior2nd_AsphShn', 'Exterior1st_HdBoard|BsmtFinType2_Unf', 'RoofStyle_Shed|GarageFinish_RFn', 'SaleType_ConLw|GarageType_Tencode', 'LotConfig_CulDSac|OverallCond', 'LandContour_Lvl|BsmtFinType1_GLQ', 'Condition1_Artery|Fence_GdWo', 'Exterior2nd_Wd Shng|Functional_Min2', 'GarageType_Detchd|ScreenPorch', '3SsnPorch|BsmtCond_TA', 'Exterior2nd_Stone|BsmtFinType1_Rec', 'Functional_Maj1|Fence_MnPrv', 'LotFrontage|MasVnrType_Stone', 'BsmtFinType2_GLQ|PavedDrive_P', 'HeatingQC_Gd|BldgType_Tencode', 'Heating_GasA|HeatingQC_Tencode', 'Neighborhood_CollgCr|OpenPorchSF', 'YearRemodAdd|HouseStyle_Tencode', 'BsmtExposure_Tencode|PoolArea', 'HeatingQC_TA|ExterCond_TA', 'FireplaceQu_Fa|GarageType_Basment', 'SaleType_ConLw|MasVnrType_Stone', 'BldgType_Duplex|HeatingQC_Ex', 'Electrical_SBrkr|GarageType_2Types', 'GarageFinish_Tencode|MSZoning_RM', 'HouseStyle_1Story|BedroomAbvGr', 'BsmtFinType2_Tencode|Neighborhood_Crawfor', 'SaleCondition_Partial|Alley_Grvl', 'LotArea|Exterior2nd_VinylSd', 'CentralAir_N|Functional_Min2', 'SaleCondition_Tencode|Functional_Mod', 'Exterior1st_WdShing|Street_Pave', 'LotShape_IR3|Fence_MnWw', 'Exterior1st_HdBoard|Exterior1st_CemntBd', 'Foundation_Tencode|SaleCondition_Abnorml', 'BsmtExposure_Av|RoofStyle_Tencode', 'BldgType_2fmCon|ExterQual_Tencode', 'BsmtExposure_Tencode|Neighborhood_Mitchel', 'Neighborhood_NridgHt|BldgType_TwnhsE', 'Neighborhood_Blmngtn|Fence_Tencode', 'HouseStyle_2Story|Neighborhood_MeadowV', 'BsmtExposure_Av|GarageYrBlt', 'BsmtCond_Gd|Neighborhood_MeadowV', 'LotConfig_Tencode|BsmtCond_Tencode', 'CentralAir_Y|Alley_Grvl', 'LandSlope_Tencode|SaleType_Oth', 'YearRemodAdd|Heating_GasA', 'Neighborhood_NridgHt|Neighborhood_NPkVill', 'LandContour_Tencode|Foundation_CBlock', 'Exterior2nd_VinylSd|HeatingQC_Ex', 'LandContour_Low|Functional_Tencode', 'Exterior1st_AsbShng|GarageType_Tencode', 'Fence_Tencode|PoolQC_Tencode', 'SaleCondition_Tencode|LandContour_Lvl', 'EnclosedPorch|Functional_Tencode', 'LotFrontage|BldgType_1Fam', 'GarageFinish_Fin|Exterior2nd_Wd Sdng', 'LandSlope_Sev|GarageType_Basment', 'MasVnrType_BrkCmn|ExterQual_Tencode', 'GrLivArea|BsmtFinSF2', 'Heating_Tencode|GarageCond_Gd', 'BsmtCond_Gd|MasVnrType_None', 'Functional_Maj1|MasVnrType_BrkFace', 'HeatingQC_TA|MiscFeature_Gar2', 'Neighborhood_Tencode|Street_Pave', 'BsmtFinType2_Tencode|Condition1_RRAn', 'ExterCond_Gd|LowQualFinSF', 'Alley_Pave|MiscFeature_Gar2', 'GarageFinish_Unf|Heating_GasW', 'Electrical_FuseP|BsmtFullBath', 'LowQualFinSF|WoodDeckSF', 'KitchenQual_Tencode|Exterior2nd_Wd Sdng', 'LandSlope_Tencode|ExterQual_Gd', 'BsmtCond_Po|MSZoning_Tencode', 'GarageYrBlt', 'Exterior1st_HdBoard|Electrical_FuseF', 'MasVnrType_Stone|Street_Pave', 'CentralAir_Y|SaleType_COD', 'LandContour_HLS|SaleCondition_Normal', 'LotShape_IR3|MasVnrType_BrkFace', 'PavedDrive_Tencode|Exterior2nd_Brk Cmn', 'BsmtUnfSF|Exterior2nd_HdBoard', 'KitchenQual_TA|MasVnrType_Tencode', 'Neighborhood_Somerst|Electrical_SBrkr', 'RoofMatl_CompShg|Exterior2nd_Wd Shng', '3SsnPorch|BsmtFinType1_GLQ', 'LandSlope_Tencode|MasVnrType_BrkFace', 'RoofStyle_Hip|LandSlope_Sev', 'RoofMatl_Tar&Grv|Foundation_CBlock', 'Condition1_Artery|GarageCars', 'MSSubClass|ScreenPorch', 'GarageCond_TA|FireplaceQu_TA', 'Fireplaces|SaleCondition_Alloca', 'LandContour_Lvl|HeatingQC_Ex', 'Exterior1st_HdBoard|Condition1_RRAe', 'LotShape_IR2|BsmtExposure_Gd', 'PoolQC_Tencode|BsmtUnfSF', 'Condition1_PosA|Exterior1st_Plywood', 'LotFrontage|Neighborhood_Somerst', 'FireplaceQu_Tencode|GarageQual_Gd', 'BsmtFinType2_ALQ|HeatingQC_Ex', 'GarageQual_Fa|Exterior2nd_Wd Shng', 'HeatingQC_Ex|Neighborhood_NAmes', 'Utilities_Tencode|EnclosedPorch', 'Condition1_Artery|HalfBath', 'BsmtQual_Ex|BsmtFinType2_Unf', 'Exterior1st_CemntBd|BsmtFinType1_LwQ', 'OverallQual|KitchenQual_Fa', 'OverallQual|Foundation_PConc', 'Condition1_Feedr|BsmtFinSF1', 'SaleCondition_Tencode|MasVnrType_Tencode', 'MiscFeature_Shed|Fence_GdWo', 'Neighborhood_NPkVill|Exterior1st_WdShing', 'SaleType_Tencode|Exterior2nd_CmentBd', 'GarageFinish_Fin|GarageType_CarPort', 'LotConfig_CulDSac|GarageQual_Po', 'BsmtCond_TA|Exterior1st_Plywood', 'BsmtExposure_Tencode|BldgType_Twnhs', 'Fence_GdPrv|MSZoning_Tencode', 'GarageType_Attchd|ExterQual_Tencode', 'GarageType_CarPort|Exterior2nd_Brk Cmn', 'Exterior1st_AsbShng|Exterior2nd_Wd Shng', 'BsmtQual_Ex|BsmtFinType1_GLQ', 'Functional_Min1|Condition1_Tencode', 'SaleType_New|LotConfig_Tencode', 'Exterior2nd_HdBoard|HouseStyle_2Story', 'LotFrontage|YearBuilt', 'CentralAir_Tencode|LotConfig_Inside', 'YearRemodAdd|MasVnrType_Stone', 'KitchenQual_Fa|Street_Grvl', 'SaleType_Tencode|MasVnrType_Stone', 'Functional_Typ|Neighborhood_Edwards', 'Exterior2nd_Stone|SaleCondition_Normal', 'FireplaceQu_Po|Exterior1st_CemntBd', 'GarageType_Attchd|BsmtFinType2_Unf', 'SaleCondition_Partial|LotConfig_Inside', 'RoofMatl_Tar&Grv|GarageQual_Tencode', 'BsmtFinType2_LwQ|HouseStyle_2Story', 'LotShape_Tencode|Condition1_PosA', 'SaleType_ConLw|Neighborhood_Veenker', 'KitchenQual_Gd|Neighborhood_NAmes', 'HouseStyle_1.5Unf|BsmtFinType2_Rec', 'MiscFeature_Othr|LandContour_Lvl', 'Functional_Tencode|Alley_Grvl', 'LandSlope_Mod|Neighborhood_SWISU', 'Neighborhood_SWISU|MoSold', 'LotShape_Tencode|TotalBsmtSF', 'Exterior1st_AsbShng|GarageType_Attchd', 'LotConfig_Corner|GarageType_Tencode', 'ExterQual_TA|MSZoning_FV', 'FireplaceQu_Po|LotConfig_Inside', 'GarageCond_Fa|Exterior1st_BrkComm', 'Neighborhood_Somerst|BsmtQual_Gd', 'HeatingQC_TA|HeatingQC_Fa', 'BsmtFinType2_BLQ|Fence_MnWw', 'HouseStyle_SFoyer|Exterior1st_Wd Sdng', 'KitchenAbvGr|HouseStyle_SFoyer', 'YearBuilt|Exterior1st_WdShing', 'GarageType_Detchd|GarageCond_Fa', 'YrSold|Electrical_FuseA', 'BsmtFinType1_Tencode|Exterior2nd_AsphShn', 'Exterior1st_BrkFace|FireplaceQu_Ex', 'RoofMatl_CompShg|Condition2_Norm', 'LandSlope_Tencode|RoofStyle_Gable', 'MSZoning_C (all)|MSZoning_Tencode', 'HeatingQC_Gd|Neighborhood_Sawyer', 'KitchenAbvGr|ExterQual_Ex', 'MSZoning_RL|BsmtCond_TA', 'Neighborhood_Mitchel|HeatingQC_Tencode', 'ExterQual_TA|ExterQual_Ex', 'Alley_Tencode|BedroomAbvGr', 'BldgType_Duplex|SaleType_ConLw', 'LotFrontage|Condition2_Tencode', 'LotShape_IR2|BsmtCond_Po', 'GarageQual_Fa|MasVnrType_Stone', 'TotalBsmtSF|GarageQual_TA', 'GarageCond_Fa|MSZoning_Tencode', 'Neighborhood_NridgHt|PoolQC_Tencode', 'GarageType_Tencode|CentralAir_N', 'LandSlope_Sev|Heating_Tencode', 'Neighborhood_NWAmes|BsmtCond_Po', 'KitchenQual_Gd|BsmtCond_TA', 'Condition1_PosA|CentralAir_N', 'MiscFeature_Othr|Functional_Min2', 'Neighborhood_BrDale|LotShape_IR3', 'BsmtQual_Tencode|LotShape_IR3', 'HouseStyle_SFoyer|OverallCond', 'BsmtQual_Tencode|Condition1_Tencode', 'BsmtFinSF2|ExterCond_Fa', 'MiscFeature_Othr|Neighborhood_NoRidge', 'BsmtExposure_Tencode|Exterior1st_WdShing', 'Condition1_Artery|YearRemodAdd', 'OverallQual|GarageQual_Fa', '2ndFlrSF|Neighborhood_MeadowV', 'SaleType_Tencode|HalfBath', 'BsmtFinType1_Tencode|BsmtQual_Tencode', 'SaleCondition_Tencode|Exterior1st_Plywood', 'SaleCondition_Family|LotConfig_CulDSac', 'LotShape_IR1|SaleType_New', 'Exterior1st_BrkFace|BsmtUnfSF', 'YrSold|Condition2_Tencode', 'PavedDrive_Y|LandSlope_Gtl', 'CentralAir_Tencode|MSZoning_RH', 'GarageCond_Tencode|MiscFeature_Gar2', 'Electrical_Tencode|GarageCond_Gd', 'Street_Tencode|KitchenQual_Ex', 'LotConfig_CulDSac|MiscFeature_Gar2', 'YearBuilt|ScreenPorch', 'RoofStyle_Shed|Street_Grvl', 'Foundation_Tencode|Condition1_Tencode', 'GarageType_Basment|MasVnrArea', 'BldgType_Tencode|Utilities_AllPub', 'Fence_MnWw|MasVnrType_Stone', 'BsmtQual_Tencode|Condition1_RRAe', 'Exterior1st_HdBoard|MSZoning_Tencode', 'FireplaceQu_Tencode|SaleCondition_Normal', 'GarageType_Attchd|ScreenPorch', 'Electrical_FuseA|GarageQual_Fa', 'BsmtFinType2_GLQ|KitchenQual_Fa', 'Electrical_FuseA|Neighborhood_OldTown', 'BsmtFinType1_ALQ|ExterQual_Tencode', 'Exterior2nd_Tencode|RoofStyle_Gambrel', 'GarageType_Tencode|SaleCondition_Abnorml', 'Exterior1st_BrkFace|Foundation_PConc', 'BsmtFinSF2|1stFlrSF', 'LotArea|2ndFlrSF', 'Neighborhood_BrDale|GrLivArea', 'LotConfig_FR2', 'Fence_Tencode|MSSubClass', 'SaleCondition_Partial|GarageCond_Ex', 'HouseStyle_Tencode|RoofStyle_Tencode', 'GarageCars|Exterior1st_VinylSd', 'BsmtFinType2_Tencode|BsmtFinSF2', 'Exterior1st_AsbShng|BedroomAbvGr', 'Alley_Tencode|Exterior2nd_Wd Shng', 'BsmtFinType2_GLQ|Neighborhood_NWAmes', 'GarageCond_Tencode|MSZoning_Tencode', 'SaleType_ConLD|MSZoning_RM', 'LotArea|MSZoning_RM', 'BsmtFinType2_ALQ|GarageType_2Types', 'BsmtCond_Po|KitchenQual_Fa', 'YrSold|MasVnrType_None', 'GarageFinish_Unf|Exterior1st_Plywood', 'OverallQual|Condition1_Tencode', 'LandSlope_Sev|GarageArea', 'Condition1_PosA|Condition1_RRAe', 'BsmtFinType2_BLQ|Foundation_Slab', 'OverallQual|Heating_Grav', 'GarageFinish_Fin|MSZoning_RL', 'HeatingQC_Gd|LotShape_IR3', 'RoofMatl_Tencode|Exterior2nd_Plywood', 'GarageQual_Fa|1stFlrSF', 'Exterior2nd_CmentBd|Foundation_CBlock', 'Electrical_SBrkr|Functional_Min1', 'SaleType_WD|MoSold', 'GarageQual_Fa|Exterior1st_Wd Sdng', 'GarageQual_Gd|Foundation_Slab', 'BsmtFinType1_BLQ|Heating_GasA', 'OverallQual|RoofStyle_Shed', 'Condition1_PosN|BsmtFinType1_LwQ', 'BldgType_2fmCon|BsmtQual_TA', 'Condition1_RRAe|GarageFinish_RFn', 'MoSold|BsmtFinType2_Rec', 'HouseStyle_1.5Unf|MasVnrArea', 'Exterior1st_BrkFace|HouseStyle_Tencode', 'TotalBsmtSF|GarageCond_Po', 'BsmtFinType1_Tencode|GarageType_Tencode', 'HouseStyle_SFoyer|1stFlrSF', 'Exterior1st_CemntBd|BsmtFinType2_Unf', 'SaleCondition_Family|BsmtCond_Fa', 'FireplaceQu_Fa|Condition1_PosN', 'BsmtFinType1_LwQ|BsmtFinType1_GLQ', 'Neighborhood_NridgHt|LotFrontage', 'GarageQual_Tencode|Functional_Min2', 'Neighborhood_SWISU|LotConfig_CulDSac', 'Neighborhood_SWISU|GarageQual_TA', 'Neighborhood_Tencode|Exterior1st_Plywood', 'FireplaceQu_Tencode|GarageFinish_Tencode', 'GarageType_BuiltIn|TotRmsAbvGrd', 'LotShape_IR1|Heating_Grav', 'SaleType_CWD|Utilities_AllPub', 'BsmtCond_Tencode|GarageType_2Types', 'Alley_Pave|GarageQual_Po', 'BsmtFullBath|KitchenQual_TA', 'SaleCondition_Partial|MSZoning_FV', 'RoofStyle_Gambrel|MasVnrType_BrkFace', 'SaleCondition_Alloca|ExterQual_Ex', 'MSZoning_C (all)|BldgType_Tencode', 'TotalBsmtSF|LandContour_Tencode', 'LandContour_HLS|BsmtExposure_Av', 'BsmtFinType2_ALQ|Fence_MnPrv', 'BsmtCond_Po|MasVnrArea', 'LandContour_Bnk|Electrical_FuseF', 'MasVnrType_BrkCmn|CentralAir_Y', 'Neighborhood_Edwards|LandSlope_Gtl', 'PoolArea|BsmtExposure_No', 'RoofMatl_Tencode|BsmtQual_Ex', 'Neighborhood_Somerst|Neighborhood_Veenker', 'LandSlope_Tencode|ExterCond_Tencode', 'BsmtFinType2_GLQ|Exterior1st_CemntBd', 'Condition2_Artery|Exterior1st_BrkComm', 'Exterior2nd_BrkFace|BsmtFinType2_LwQ', 'GrLivArea|CentralAir_Y', 'HeatingQC_Tencode|GarageQual_Fa', 'Functional_Tencode|MiscFeature_Shed', 'BldgType_2fmCon|Electrical_FuseF', 'Exterior2nd_BrkFace|Street_Grvl', 'BldgType_2fmCon|Condition1_Tencode', 'Heating_Grav|MasVnrType_None', 'GarageCars|GarageQual_TA', 'Foundation_Stone|Functional_Maj2', 'BedroomAbvGr|CentralAir_Y', 'GarageFinish_Unf|SaleType_CWD', 'LotFrontage|MoSold', 'Street_Grvl|SaleType_CWD', 'HeatingQC_Ex|Condition1_RRAe', 'Alley_Pave|MiscFeature_Shed', 'LandContour_Bnk|Functional_Mod', 'YearRemodAdd|BsmtUnfSF', 'Neighborhood_Sawyer|Exterior2nd_AsphShn', '2ndFlrSF|Neighborhood_Timber', 'Exterior2nd_Wd Sdng|Exterior1st_Wd Sdng', 'GarageCond_Tencode|Exterior2nd_AsphShn', 'GarageFinish_Unf|Functional_Maj2', 'GarageQual_Tencode|Alley_Grvl', 'KitchenQual_Gd|Neighborhood_Edwards', 'FireplaceQu_TA|MasVnrType_Stone', 'GarageType_Detchd|BsmtCond_Gd', 'LotConfig_CulDSac|GarageYrBlt', 'CentralAir_Y|Exterior2nd_AsphShn', 'Exterior2nd_Wd Sdng|BldgType_Tencode', 'LotShape_IR2|FireplaceQu_Po', 'Exterior2nd_AsbShng|ExterQual_Ex', 'OpenPorchSF|MasVnrType_None', 'Foundation_PConc|Foundation_Slab', 'MSZoning_FV|MasVnrType_Tencode', 'BsmtQual_Tencode|MasVnrType_Stone', 'Neighborhood_CollgCr|Condition1_Norm', 'Neighborhood_NPkVill|BsmtUnfSF', 'SaleType_WD|Street_Grvl', 'FireplaceQu_Ex|BsmtCond_Gd', 'SaleType_ConLD|LandSlope_Tencode', 'MoSold|BldgType_1Fam', 'BsmtFinType1_Tencode|RoofMatl_WdShngl', 'YearBuilt|Neighborhood_NAmes', 'MasVnrType_None|SaleType_CWD', 'LotShape_Tencode|LandSlope_Mod', 'FireplaceQu_Gd|LandContour_Lvl', 'GarageFinish_Fin|Exterior1st_Stucco', 'SaleCondition_Normal|Foundation_CBlock', 'KitchenAbvGr|Fence_MnWw', 'LotArea|ExterQual_Ex', 'Neighborhood_ClearCr|GarageQual_Tencode', 'GarageCond_TA|Condition2_Norm', 'LotShape_Tencode|LotConfig_CulDSac', 'Alley_Grvl|MasVnrType_Tencode', 'SaleCondition_Tencode|RoofStyle_Gable', 'MasVnrType_Tencode|GarageType_2Types', 'ExterQual_Tencode|Neighborhood_SawyerW', 'LowQualFinSF|GarageArea', 'RoofStyle_Shed|MiscFeature_Gar2', 'Neighborhood_ClearCr|Exterior1st_Wd Sdng', 'BsmtQual_Fa|MSZoning_RL', 'GarageCond_TA|MasVnrType_None', 'Heating_Tencode|BsmtFinType1_Unf', 'SaleType_ConLI|BsmtCond_Gd', 'MSSubClass|Fence_MnPrv', '2ndFlrSF|BldgType_Tencode', 'Neighborhood_NoRidge|BsmtQual_Gd', 'Heating_GasA|BedroomAbvGr', 'KitchenAbvGr|Exterior2nd_MetalSd', 'ExterCond_Gd|Exterior2nd_Brk Cmn', 'BsmtFinType2_ALQ|Exterior1st_CemntBd', 'Neighborhood_Sawyer|SaleType_CWD', 'RoofStyle_Gambrel|BsmtUnfSF', 'Fence_GdPrv|GarageType_2Types', 'LotShape_Reg|BsmtQual_Tencode', 'BsmtFullBath|ExterQual_Tencode', 'GarageFinish_Fin|Street_Pave', 'ExterCond_Gd|WoodDeckSF', 'KitchenQual_Tencode|LandSlope_Gtl', 'BsmtExposure_Av|SaleType_CWD', 'LotFrontage|Neighborhood_ClearCr', 'LotArea|KitchenQual_Fa', 'SaleType_ConLw|Exterior1st_WdShing', 'BsmtFinType1_BLQ|YearBuilt', 'SaleType_ConLw|LandContour_Bnk', 'BsmtFinType2_GLQ|Exterior2nd_Wd Shng', 'Foundation_Stone|GarageQual_Po', 'BldgType_2fmCon|Exterior1st_Wd Sdng', 'MasVnrType_BrkCmn|GarageType_Basment', 'GarageFinish_Fin|OverallCond', 'ExterCond_Gd|OverallCond', 'Neighborhood_ClearCr|SaleCondition_Abnorml', 'CentralAir_N', 'Neighborhood_NoRidge|Neighborhood_Gilbert', 'BsmtHalfBath|MasVnrType_Stone', 'GarageCond_Po|Utilities_AllPub', 'GarageCond_TA|SaleCondition_Abnorml', 'FireplaceQu_Tencode|BldgType_Tencode', 'YrSold|GarageCond_Fa', 'OpenPorchSF|BsmtFinType1_GLQ', 'Exterior1st_BrkFace|ExterQual_TA', 'PavedDrive_N|Neighborhood_NridgHt', 'Condition1_PosN|GarageYrBlt', 'ExterQual_Gd|ExterQual_Tencode', 'FullBath|Utilities_AllPub', 'Exterior2nd_Stone|HouseStyle_1.5Fin', 'GarageType_Detchd|Fence_MnPrv', 'Neighborhood_NPkVill|BsmtExposure_No', 'Condition1_Norm|BsmtCond_Po', 'RoofMatl_CompShg|SaleType_WD', 'OverallQual|Street_Pave', 'Neighborhood_Blmngtn|GarageType_CarPort', 'GarageCond_Tencode|BsmtFinType2_Rec', 'EnclosedPorch|KitchenQual_Ex', 'BsmtQual_TA|LotConfig_Inside', 'Exterior2nd_Wd Sdng|Exterior1st_Plywood', 'Condition2_Norm|BsmtCond_Fa', 'ExterCond_Tencode|Functional_Maj1', 'GarageFinish_Fin|Neighborhood_Tencode', 'GarageQual_TA|GarageType_Basment', 'Condition1_Tencode|ExterQual_Tencode', 'SaleType_Oth|HouseStyle_2Story', 'BsmtFinType2_LwQ|GarageType_2Types', 'LotConfig_FR2|LandSlope_Gtl', 'Utilities_Tencode|Condition1_RRAn', 'BsmtQual_Fa|KitchenQual_TA', 'Exterior2nd_Stone|FullBath', 'HouseStyle_2.5Unf|LotShape_IR3', 'BsmtFinType2_Rec|ExterQual_Fa', 'Exterior1st_BrkFace|Exterior2nd_VinylSd', 'SaleType_CWD|BsmtExposure_No', 'Exterior1st_CemntBd|Street_Pave', 'Exterior2nd_AsbShng|GarageType_2Types', 'YearBuilt|2ndFlrSF', 'BsmtFinSF1|Neighborhood_Timber', 'MiscVal|SaleType_ConLI', 'GarageType_BuiltIn|WoodDeckSF', 'FireplaceQu_Fa|Condition2_Artery', 'BsmtFinType2_LwQ|BsmtQual_Gd', 'GarageQual_Gd|Condition2_Tencode', 'Alley_Pave|Neighborhood_NAmes', 'LotArea|Foundation_Slab', 'SaleType_COD|WoodDeckSF', 'Condition1_Norm|Neighborhood_Timber', 'LotConfig_Corner|Neighborhood_OldTown', 'GarageCond_Po|BsmtExposure_Gd', 'EnclosedPorch|Exterior1st_AsbShng', 'Exterior2nd_Stucco|Condition1_PosN', 'Exterior2nd_VinylSd|RoofMatl_WdShngl', 'YearRemodAdd|SaleType_Tencode', 'CentralAir_N|WoodDeckSF', 'RoofStyle_Flat|MasVnrType_BrkFace', 'BsmtFinType1_BLQ|FireplaceQu_Po', 'GarageQual_Gd|BsmtFinType2_ALQ', 'GarageArea|MSZoning_RH', 'Neighborhood_Veenker|MasVnrType_Tencode', 'Utilities_Tencode|LandContour_HLS', 'PavedDrive_Tencode|Exterior2nd_Plywood', 'SaleCondition_Tencode|GarageFinish_Fin', 'Neighborhood_NPkVill|RoofMatl_WdShngl', 'GarageFinish_Fin|MasVnrType_None', 'FireplaceQu_Gd|ExterCond_TA', 'RoofMatl_Tar&Grv|SaleType_CWD', 'GarageCars|KitchenQual_Gd', 'SaleType_ConLI|BldgType_TwnhsE', 'Electrical_FuseF|GarageQual_Tencode', 'BsmtFinType2_Rec|Fence_GdWo', 'BsmtFinType2_Unf|Neighborhood_Timber', 'Condition1_PosA|PoolArea', 'SaleCondition_Alloca|BsmtFinType1_GLQ', 'Functional_Mod|SaleType_COD', 'OverallQual|GarageType_Basment', 'RoofStyle_Flat|Street_Pave', 'LotConfig_FR2|GarageType_Tencode', 'RoofStyle_Tencode|GarageCond_Ex', 'Exterior2nd_Stucco|HouseStyle_Tencode', 'Neighborhood_BrDale|3SsnPorch', 'HouseStyle_2.5Unf|Functional_Min2', 'LotArea|CentralAir_Tencode', 'RoofStyle_Shed|GarageQual_Tencode', 'Neighborhood_OldTown|LandSlope_Tencode', 'Neighborhood_NoRidge|HouseStyle_2Story', 'Foundation_BrkTil|Neighborhood_SawyerW', 'BsmtFinSF2|Fence_Tencode', 'BsmtQual_Tencode|MSZoning_FV', 'SaleType_Tencode|MSZoning_Tencode', 'TotRmsAbvGrd|BsmtCond_Tencode', 'GarageQual_Po|Neighborhood_MeadowV', 'LandSlope_Sev|OpenPorchSF', 'FireplaceQu_Gd|HeatingQC_Tencode', 'PavedDrive_N|Neighborhood_StoneBr', 'BldgType_Twnhs|Heating_GasW', 'ScreenPorch|WoodDeckSF', 'MasVnrType_BrkCmn|Exterior1st_BrkComm', 'LandSlope_Gtl|Exterior1st_Tencode', 'Heating_Tencode|LandContour_Lvl', 'Heating_GasW|BsmtFinType1_Rec', 'LotFrontage', 'ExterQual_Gd|RoofMatl_WdShngl', 'BsmtFinType2_ALQ|SaleType_COD', 'Heating_Tencode|LotConfig_Tencode', 'BsmtExposure_Av|GarageArea', 'BsmtFinType1_Tencode|Condition1_Norm', 'PoolArea|Exterior1st_BrkComm', 'Functional_Tencode|KitchenQual_Gd', 'Neighborhood_NoRidge|Condition1_PosN', 'LandSlope_Mod|SaleCondition_Family', 'Exterior2nd_AsbShng|LandContour_Tencode', 'Fence_GdWo|BsmtCond_TA', 'MiscFeature_Tencode|KitchenQual_Fa', '3SsnPorch|PavedDrive_P', 'BsmtFinSF1|Exterior2nd_Brk Cmn', 'BsmtFinType2_Tencode|HeatingQC_Tencode', 'BldgType_TwnhsE|WoodDeckSF', 'LotShape_Reg|SaleType_WD', 'BsmtFinType2_LwQ|Neighborhood_Gilbert', 'BsmtFinType2_Tencode|Heating_Grav', 'BsmtCond_Gd|Condition1_RRAn', 'BsmtQual_Ex|MSZoning_RM', 'RoofStyle_Hip|GarageType_2Types', '1stFlrSF|BsmtFinSF1', 'YrSold|FireplaceQu_Po', 'Heating_GasA|BsmtExposure_No', 'FireplaceQu_Gd|HeatingQC_Ex', 'Alley_Pave|RoofStyle_Gable', 'HeatingQC_Tencode|Street_Pave', 'GrLivArea|BsmtQual_TA', 'Heating_GasW|HalfBath', 'SaleType_ConLw|LotConfig_CulDSac', 'RoofStyle_Flat|GarageCond_Ex', 'Heating_GasA|BsmtFinType2_BLQ', 'GarageFinish_Unf|Exterior1st_BrkComm', 'BsmtFinType1_Tencode|Exterior1st_MetalSd', 'LotConfig_Tencode|SaleType_CWD', 'GarageCond_Gd|Neighborhood_Crawfor', 'Exterior2nd_MetalSd|MasVnrType_BrkCmn', 'Fence_GdWo|Foundation_Slab', 'SaleCondition_Tencode|SaleType_Oth', 'Fireplaces|WoodDeckSF', 'GarageType_Tencode|Condition1_Norm', 'MSZoning_RM|Condition2_Norm', 'Foundation_PConc|BsmtQual_Ex', 'BsmtFinSF2|MSZoning_Tencode', 'FireplaceQu_Po|BsmtFinType2_Rec', 'Exterior1st_BrkComm|Foundation_Slab', 'LandSlope_Mod|BsmtQual_Tencode', 'MiscFeature_Shed|Neighborhood_Sawyer', 'LandSlope_Mod|BsmtCond_Po', 'BsmtFinType1_ALQ|Foundation_CBlock', 'Neighborhood_Blmngtn|WoodDeckSF', 'BsmtFinType1_Tencode|Condition1_RRAn', 'BldgType_Duplex|BsmtQual_Gd', 'MiscFeature_Tencode|Exterior1st_Plywood', 'BsmtQual_Fa|Functional_Maj2', 'BsmtFinType2_Unf|ExterQual_Tencode', 'OpenPorchSF|Street_Pave', 'Functional_Tencode|FireplaceQu_Ex', 'FireplaceQu_Fa|BsmtCond_TA', 'LotShape_Reg|BsmtFinType1_Unf', 'SaleCondition_Tencode|GarageCond_Gd', 'Condition1_Artery|BldgType_Duplex', 'YearBuilt|Condition1_PosA', 'Alley_Tencode|BsmtQual_TA', 'PoolQC_Tencode|MiscFeature_Gar2', 'Electrical_SBrkr|MSZoning_FV', 'RoofStyle_Shed|SaleCondition_Normal', 'BsmtQual_Fa|Exterior2nd_MetalSd', 'Utilities_Tencode|PoolQC_Tencode', 'Condition1_Tencode|Exterior1st_Wd Sdng', 'Exterior1st_HdBoard|Condition1_Feedr', 'GarageFinish_Unf|BsmtFinType2_LwQ', 'LotArea|BsmtFinType1_GLQ', 'Neighborhood_CollgCr|MSZoning_RL', 'Foundation_PConc|BsmtHalfBath', 'RoofMatl_CompShg|MasVnrType_Stone', 'Street_Tencode|BedroomAbvGr', 'MSZoning_C (all)|MasVnrType_None', 'Exterior1st_HdBoard|OverallCond', 'Condition1_Norm|BldgType_TwnhsE', 'LotShape_IR1|LotConfig_Tencode', 'Fence_GdPrv|MoSold', 'ExterQual_Gd|HouseStyle_SLvl', 'Neighborhood_Mitchel|Heating_Tencode', 'SaleType_ConLD|KitchenQual_Fa', 'BsmtQual_Fa|GarageQual_Tencode', 'SaleCondition_Tencode|Foundation_CBlock', 'CentralAir_Tencode|Exterior1st_Plywood', 'HouseStyle_Tencode|PoolQC_Tencode', 'Exterior2nd_Stone|LandContour_HLS', 'Functional_Maj1|MiscFeature_Shed', 'Foundation_BrkTil|KitchenQual_Tencode', 'BsmtExposure_Av|MasVnrType_None', 'PavedDrive_Tencode|MSZoning_RL', 'Exterior1st_Plywood|MasVnrType_Tencode', 'Heating_Grav|BsmtFullBath', 'GarageFinish_Tencode|GarageType_BuiltIn', 'GarageCond_TA|BsmtQual_Fa', 'HouseStyle_1.5Unf|CentralAir_Tencode', 'Neighborhood_ClearCr|RoofMatl_WdShngl', 'SaleCondition_Tencode|SaleType_COD', 'Condition1_Feedr|ExterQual_Tencode', 'HouseStyle_Tencode|SaleType_ConLI', 'GarageType_Detchd|Functional_Maj2', 'BsmtFinType2_LwQ|GarageFinish_RFn', 'Electrical_FuseP|Exterior1st_BrkComm', 'GarageType_Detchd|HeatingQC_Ex', 'BsmtFinType1_ALQ|Condition1_Tencode', 'BsmtFinType2_Tencode|BsmtQual_Gd', 'LandContour_Low|HouseStyle_1.5Unf', 'Functional_Maj1|BsmtCond_Fa', 'LotShape_Reg|GarageType_BuiltIn', 'Exterior2nd_Brk Cmn|GarageType_2Types', '3SsnPorch|GarageCond_Ex', 'Foundation_Tencode|Condition1_RRAn', 'Functional_Maj2|Exterior1st_Tencode', 'GarageFinish_RFn|ExterCond_Fa', 'MSSubClass|ExterQual_Tencode', 'BsmtFinType2_BLQ|HeatingQC_Tencode', 'BsmtExposure_Tencode|BsmtCond_Tencode', 'MiscVal|MSSubClass', 'SaleType_Tencode|BsmtCond_Fa', 'Functional_Typ|BsmtFinType1_LwQ', 'SaleType_New|Neighborhood_NWAmes', 'HeatingQC_Gd|LotArea', 'GarageCond_TA|HeatingQC_Gd', 'LotConfig_FR2|OpenPorchSF', 'HouseStyle_1Story|MiscFeature_Gar2', 'PavedDrive_N|Neighborhood_Gilbert', 'LotConfig_Corner|LandContour_Bnk', 'LotArea|GarageFinish_RFn', 'LotShape_Reg|BsmtFinSF1', 'Exterior1st_Stucco|SaleCondition_Normal', 'BsmtFinType1_ALQ|KitchenQual_Fa', 'HouseStyle_Tencode|Foundation_Slab', 'Functional_Tencode|ExterQual_Gd', 'LotConfig_FR2|RoofMatl_Tar&Grv', 'LandContour_HLS|Fence_MnWw', 'SaleType_New|BsmtExposure_Av', 'Neighborhood_NridgHt|Fence_MnWw', 'HeatingQC_Gd|LotConfig_Inside', 'EnclosedPorch|SaleCondition_Normal', 'EnclosedPorch|HouseStyle_2.5Unf', 'SaleType_ConLw|LotShape_IR3', 'Neighborhood_Somerst|Exterior2nd_BrkFace', 'LandSlope_Tencode|BsmtQual_Ex', 'BldgType_1Fam|Condition2_Norm', 'Neighborhood_Somerst|BldgType_1Fam', 'RoofStyle_Gable|WoodDeckSF', 'FireplaceQu_Tencode|RoofStyle_Gambrel', 'HouseStyle_SFoyer|BsmtFinType1_ALQ', 'BsmtFullBath|Neighborhood_Sawyer', 'BldgType_2fmCon|Exterior2nd_CmentBd', 'YrSold|Exterior2nd_Stone', 'GarageCond_Tencode|MSZoning_C (all)', 'GarageFinish_Tencode|BsmtFinType1_GLQ', 'BsmtFullBath|GarageQual_Tencode', 'Neighborhood_OldTown|Condition2_Artery', 'LotConfig_Tencode|Fence_MnPrv', 'FullBath|BsmtCond_Tencode', 'Fence_Tencode|BsmtFinType1_Unf', 'HouseStyle_1.5Unf|RoofStyle_Shed', 'BldgType_Twnhs|Fireplaces', 'Neighborhood_NoRidge|BsmtCond_Gd', 'Condition1_RRAe|FireplaceQu_Ex', 'LotConfig_Tencode|Exterior2nd_HdBoard', 'Exterior2nd_Tencode|Foundation_Slab', 'GarageCond_Gd|MSSubClass', 'BsmtCond_Po|SaleCondition_Partial', 'RoofStyle_Flat|Exterior1st_AsbShng', 'GarageArea|HouseStyle_2.5Unf', 'MiscFeature_Gar2|MSZoning_FV', 'SaleType_ConLI|BsmtCond_Tencode', 'HouseStyle_Tencode|RoofStyle_Gable', 'Exterior2nd_Brk Cmn|MSZoning_FV', 'Foundation_Tencode|MSZoning_Tencode', 'Electrical_FuseP|GarageQual_Tencode', 'Alley_Pave|Neighborhood_BrkSide', 'LandSlope_Sev|Exterior2nd_Plywood', 'BsmtFinType2_ALQ|MoSold', 'BsmtQual_Tencode|BsmtCond_Fa', 'Exterior2nd_AsbShng|SaleType_New', 'GarageType_Detchd|BsmtQual_Tencode', 'Electrical_FuseA|BsmtHalfBath', 'LotShape_Reg|Exterior1st_Plywood', 'ExterCond_TA|GarageType_2Types', 'SaleCondition_Partial|Neighborhood_IDOTRR', 'MasVnrType_None|GarageQual_Tencode', 'HouseStyle_SLvl|HouseStyle_1.5Fin', 'Fence_Tencode|GarageQual_Tencode', 'YearRemodAdd|RoofStyle_Tencode', 'RoofStyle_Gable|Exterior2nd_Wd Sdng', 'PavedDrive_Y|SaleCondition_Partial', 'MiscFeature_Othr|Neighborhood_Crawfor', 'SaleCondition_Family|Street_Pave', 'LandSlope_Gtl|Fence_MnWw', 'BsmtFinType1_Tencode|Exterior2nd_MetalSd', 'GarageCars|GarageFinish_Fin', 'Heating_GasA|MiscVal', 'Neighborhood_Sawyer|Condition1_RRAn', 'LotShape_IR1|Neighborhood_MeadowV', 'FireplaceQu_Fa|Condition1_Tencode', 'FireplaceQu_Tencode|Neighborhood_BrkSide', 'Functional_Tencode|BsmtCond_Gd', 'ExterCond_Tencode|Street_Grvl', 'FireplaceQu_Tencode|MSZoning_FV', 'HouseStyle_Tencode|HouseStyle_1.5Fin', 'Neighborhood_ClearCr|SaleType_COD', 'Heating_Grav|HalfBath', 'LotConfig_Tencode|SaleType_COD', 'FullBath|TotRmsAbvGrd', 'Foundation_PConc|GarageQual_TA', 'GarageQual_Po|RoofStyle_Tencode', 'Neighborhood_OldTown|LandContour_Tencode', 'SaleCondition_Family|GarageArea', 'YearRemodAdd|LandSlope_Mod', 'Functional_Typ|GarageCond_Gd', 'BsmtFinType2_Tencode|Fence_GdWo', 'BsmtUnfSF|SaleCondition_Abnorml', 'LotConfig_Corner|Condition2_Norm', 'Exterior1st_Plywood|MasVnrType_Stone', 'BsmtFinType1_LwQ|BldgType_1Fam', 'GarageCond_Gd|Neighborhood_BrkSide', 'SaleCondition_Tencode|RoofStyle_Hip', 'ExterQual_TA|LandSlope_Sev', 'YearRemodAdd|ExterQual_Fa', 'SaleCondition_Normal|MasVnrType_BrkFace', 'GrLivArea|GarageQual_Gd', 'SaleType_ConLw|BsmtExposure_Mn', 'Exterior2nd_Stone|Utilities_AllPub', 'Exterior1st_BrkFace|BldgType_TwnhsE', 'MiscVal|Neighborhood_Timber', 'LandSlope_Gtl|GarageQual_Tencode', '1stFlrSF|GarageType_CarPort', 'BsmtFinType1_Tencode|LotConfig_Inside', 'LotShape_Tencode|GarageCond_Gd', 'FireplaceQu_Gd|BsmtExposure_No', 'ExterQual_Gd|GarageFinish_RFn', 'KitchenQual_Gd|Foundation_Slab', 'SaleType_Tencode|BldgType_Tencode', 'YrSold|MSZoning_RM', 'Neighborhood_OldTown|Exterior2nd_MetalSd', 'LandSlope_Tencode|BsmtExposure_No', '3SsnPorch|BsmtFinType2_LwQ', 'Exterior2nd_Plywood|Functional_Min2', 'HeatingQC_Gd|Neighborhood_NWAmes', 'Exterior2nd_MetalSd|CentralAir_Y', 'Fence_GdPrv|BsmtFinType2_LwQ', 'HeatingQC_Fa|BldgType_1Fam', 'LotFrontage|SaleType_ConLI', 'TotalBsmtSF|BsmtCond_Gd', 'Exterior2nd_Stone|BsmtFinType2_Tencode', 'Exterior2nd_VinylSd|GarageType_CarPort', 'Electrical_Tencode|Functional_Mod', 'FireplaceQu_Gd|HouseStyle_1.5Unf', 'GarageQual_Tencode|WoodDeckSF', 'LandContour_Bnk|HouseStyle_2.5Unf', 'GrLivArea|Functional_Mod', 'KitchenQual_Fa|SaleType_CWD', 'Foundation_Stone|Alley_Grvl', 'RoofStyle_Gambrel|PavedDrive_P', 'Neighborhood_SWISU|Neighborhood_StoneBr', 'GarageType_Tencode|RoofMatl_Tar&Grv', 'BsmtFinType2_ALQ|Foundation_Tencode', 'TotRmsAbvGrd|Exterior1st_MetalSd', 'Neighborhood_NPkVill|SaleType_Oth', 'BedroomAbvGr|Exterior2nd_Brk Cmn', 'LotShape_Tencode|KitchenQual_TA', 'RoofStyle_Hip|PoolQC_Tencode', 'EnclosedPorch|Neighborhood_NAmes', 'OverallCond|Neighborhood_IDOTRR', 'SaleType_ConLw|BldgType_Tencode', 'LotFrontage|BsmtHalfBath', 'SaleType_ConLw|HouseStyle_Tencode', 'Fence_GdWo|Utilities_AllPub', 'FullBath|Fence_Tencode', 'MiscVal|MiscFeature_Gar2', 'LandContour_Bnk|MSZoning_RM', 'Utilities_Tencode|Condition1_Norm', 'Exterior1st_BrkFace|BsmtFinType2_LwQ', 'FireplaceQu_Tencode|YearRemodAdd', 'Functional_Typ|RoofStyle_Gambrel', 'BsmtHalfBath|Neighborhood_Tencode', 'LotArea|Fence_Tencode', 'SaleCondition_Family|MasVnrType_Tencode', 'LandSlope_Sev|TotRmsAbvGrd', 'BsmtFinType1_ALQ|BsmtCond_Tencode', 'Functional_Typ|Exterior1st_VinylSd', 'Neighborhood_Blmngtn|Neighborhood_Veenker', 'RoofMatl_Tar&Grv|BsmtFinType1_GLQ', 'Fence_GdPrv|BsmtExposure_Mn', 'BsmtFullBath|OpenPorchSF', 'LandContour_Bnk|BldgType_Tencode', 'MiscFeature_Othr|SaleCondition_Abnorml', 'PavedDrive_Tencode|Condition2_Norm', 'MoSold|SaleType_COD', 'Neighborhood_Gilbert|Exterior1st_Wd Sdng', 'Exterior1st_HdBoard|Neighborhood_StoneBr', 'GarageFinish_Unf|MSZoning_Tencode', 'LotFrontage|RoofStyle_Tencode', 'LotShape_Tencode|Functional_Mod', 'PavedDrive_Tencode|HeatingQC_Ex', 'Exterior2nd_Stone|Foundation_Stone', 'BsmtCond_Fa|BsmtCond_TA', 'GarageType_Detchd|3SsnPorch', 'KitchenAbvGr|RoofStyle_Flat', 'LowQualFinSF|BldgType_TwnhsE', 'RoofStyle_Gable|SaleType_New', 'SaleType_WD|Exterior2nd_HdBoard', 'Exterior1st_CemntBd|Condition1_Feedr', 'MasVnrType_None|SaleType_COD', '2ndFlrSF|Condition2_Artery', 'GarageYrBlt|Neighborhood_BrkSide', 'BsmtFinType1_Rec|BsmtCond_Tencode', 'OverallQual|GarageFinish_Tencode', 'BsmtQual_TA|ExterCond_Tencode', 'Neighborhood_BrDale|Condition1_Tencode', 'Condition2_Tencode|Condition2_Norm', 'BsmtFinType1_Rec|BsmtQual_Gd', 'LotShape_IR2|BsmtFinType2_Unf', 'GarageArea|Neighborhood_Timber', 'LotConfig_Corner|SaleType_ConLw', 'TotalBsmtSF|HouseStyle_SFoyer', 'Neighborhood_ClearCr|Neighborhood_MeadowV', 'SaleType_Tencode|GarageCond_Gd', 'Condition1_PosA|BsmtQual_Gd', 'FireplaceQu_Fa|RoofStyle_Shed', 'Neighborhood_ClearCr|Electrical_FuseA', 'Condition1_PosA|RoofStyle_Tencode', 'Functional_Mod|BsmtExposure_Mn', 'LandContour_Tencode|Neighborhood_IDOTRR', 'BsmtQual_TA|Exterior2nd_Brk Cmn', 'HeatingQC_Fa|LotConfig_Tencode', 'BsmtCond_Tencode|LotConfig_Inside', 'RoofStyle_Gambrel|CentralAir_N', 'BsmtFinSF2|HouseStyle_1.5Unf', 'Heating_Tencode|SaleType_COD', 'Neighborhood_BrDale|GarageFinish_RFn', 'Electrical_FuseP|ExterQual_Ex', 'GarageCond_Po|BsmtFinType2_LwQ', 'BsmtQual_Tencode|LandContour_Tencode', 'ExterCond_TA|BsmtCond_Tencode', 'Exterior1st_Stucco|GarageQual_TA', 'Exterior2nd_VinylSd|Exterior1st_Tencode', 'Condition1_Artery|Heating_GasA', 'Exterior2nd_Wd Shng', 'Electrical_FuseA|ExterCond_Fa', 'PoolQC_Tencode|SaleCondition_Family', 'Condition1_PosN|Exterior1st_MetalSd', 'FireplaceQu_Gd|Functional_Maj1', 'CentralAir_Y|Exterior2nd_Plywood', 'BldgType_Duplex|BsmtCond_Tencode', 'Functional_Mod|BsmtFinType1_LwQ', 'Functional_Min1|KitchenQual_Fa', 'MiscFeature_Tencode|BsmtExposure_No', 'Foundation_PConc|Exterior1st_AsbShng', 'Fireplaces|Functional_Mod', 'BldgType_Twnhs|SaleCondition_Partial', 'CentralAir_Tencode|MasVnrArea', 'MSSubClass|GarageFinish_RFn', 'HouseStyle_1Story|Exterior2nd_HdBoard', 'SaleType_ConLw|Exterior2nd_HdBoard', 'YrSold|PavedDrive_N', 'Street_Tencode|GarageCond_Ex', 'Exterior1st_CemntBd|MSZoning_RL', 'GarageType_Tencode|Functional_Mod', 'LotConfig_Corner|BsmtExposure_Mn', 'BsmtExposure_Tencode|Utilities_AllPub', 'GarageCond_Fa|Neighborhood_MeadowV', 'MSSubClass|MiscFeature_Gar2', 'Alley_Pave|SaleType_Tencode', 'Condition1_Norm|Exterior2nd_Plywood', 'LandSlope_Mod|Condition1_RRAe', 'Alley_Tencode|MSZoning_Tencode', 'Functional_Maj1|Condition1_Norm', 'BsmtQual_Tencode|GarageType_Basment', 'HouseStyle_1Story|BsmtFinType2_Tencode', 'GarageQual_TA|KitchenQual_TA', 'Electrical_Tencode|Exterior1st_MetalSd', 'FullBath|SaleType_WD', 'Exterior2nd_AsbShng|Foundation_Tencode', 'GarageFinish_Fin|1stFlrSF', 'RoofMatl_CompShg|HouseStyle_2.5Unf', 'EnclosedPorch|Condition1_PosN', 'HeatingQC_Tencode|MasVnrArea', 'Alley_Pave|MasVnrArea', 'KitchenQual_Gd|LandSlope_Sev', 'RoofStyle_Hip|Functional_Typ', 'Utilities_Tencode|MiscVal', 'SaleType_ConLI|LandContour_Bnk', 'GarageQual_Po|Condition2_Norm', 'RoofMatl_Tencode|LotConfig_Corner', 'Neighborhood_NPkVill|RoofStyle_Gable', 'GarageCars|OpenPorchSF', 'LotShape_IR1|Neighborhood_NAmes', 'SaleType_ConLI|Functional_Maj2', 'BsmtFinType2_Tencode|RoofMatl_WdShngl', 'CentralAir_N|Condition2_Norm', 'OpenPorchSF|Fence_MnPrv', 'Exterior2nd_VinylSd|Condition1_Feedr', 'HeatingQC_TA|TotRmsAbvGrd', 'GarageCars|Fireplaces', 'GarageQual_Po|BldgType_Tencode', 'GarageCond_Po|GarageCars', 'SaleCondition_Alloca|Condition1_Tencode', 'FireplaceQu_Gd|SaleType_New', 'KitchenAbvGr|Neighborhood_Mitchel', 'RoofMatl_Tar&Grv|Neighborhood_Crawfor', 'GarageCond_Po|MasVnrArea', 'BsmtFinType2_Tencode|Fence_MnPrv', 'Neighborhood_Tencode|MoSold', 'Neighborhood_OldTown|BsmtExposure_Mn', 'BsmtQual_Ex|HouseStyle_2Story', 'Condition1_Tencode|BsmtCond_TA', 'RoofMatl_WdShngl|Exterior2nd_Wd Shng', 'Functional_Maj2|SaleCondition_Abnorml', 'BsmtFinType2_Tencode|Foundation_Stone', 'Neighborhood_SWISU|ExterCond_Gd', 'ExterCond_TA|CentralAir_Tencode', 'BsmtFinType2_Tencode|BedroomAbvGr', 'LotShape_IR1|MoSold', 'Exterior1st_BrkFace|SaleType_Oth', 'BldgType_Twnhs|Condition1_PosA', 'Neighborhood_StoneBr|ExterQual_Gd', 'BsmtHalfBath|MiscVal', 'GarageCond_Tencode|HeatingQC_Ex', 'OverallQual|PavedDrive_N', 'Neighborhood_Mitchel|GarageFinish_RFn', 'GrLivArea|Neighborhood_SawyerW', 'BsmtExposure_Tencode|MoSold', 'BsmtFinType2_LwQ|SaleCondition_Partial', 'GarageCars|BsmtFinSF2', 'HeatingQC_Fa|GarageQual_TA', 'YearRemodAdd|Exterior2nd_Tencode', 'SaleCondition_Abnorml|ExterCond_Fa', 'KitchenAbvGr|Neighborhood_Gilbert', 'ExterCond_TA|PavedDrive_P', 'SaleType_ConLD|ExterQual_Fa', 'Neighborhood_Blmngtn|LotConfig_Inside', 'SaleType_ConLI|Neighborhood_NAmes', 'Neighborhood_BrDale|LotConfig_Inside', 'Condition1_Artery|BsmtFullBath', 'LotConfig_Corner|GarageType_BuiltIn', 'BsmtQual_Tencode|Exterior2nd_Plywood', 'Alley_Pave|GarageType_2Types', 'LandContour_Lvl|Exterior1st_CemntBd', 'Fence_Tencode|KitchenQual_Fa', 'PavedDrive_N|LandContour_Low', 'LandContour_Tencode|BsmtExposure_Gd', 'BsmtQual_Fa|GarageFinish_RFn', 'Neighborhood_NPkVill|CentralAir_Y', 'Neighborhood_NridgHt|RoofStyle_Tencode', 'Heating_Grav|ExterCond_Tencode', 'Condition1_PosA|BsmtCond_Fa', 'Fence_GdPrv|Neighborhood_NWAmes', 'LandSlope_Tencode|HouseStyle_1.5Fin', 'LandContour_Lvl|Functional_Maj1', 'Neighborhood_NPkVill|LandSlope_Sev', 'SaleType_CWD|BsmtQual_Gd', 'Neighborhood_Edwards|MSZoning_RL', 'Neighborhood_Edwards|BsmtExposure_Gd', 'KitchenQual_Ex|BsmtFinType1_Rec', 'LotShape_IR2|Exterior1st_Stucco', 'SaleType_Tencode|MSZoning_RH', 'Heating_GasA|HouseStyle_2.5Unf', 'PavedDrive_N|Condition1_Feedr', 'BsmtFinType1_LwQ|SaleCondition_Abnorml', 'HeatingQC_Ex|SaleCondition_Partial', 'Electrical_Tencode|HouseStyle_1.5Fin', 'Alley_Grvl|Exterior2nd_HdBoard', 'MSZoning_RM|MasVnrType_BrkFace', 'Electrical_FuseP|Condition1_PosN', 'Neighborhood_Edwards|PavedDrive_Tencode', 'GarageType_Attchd|ExterQual_Fa', 'Alley_Tencode|GarageType_Attchd', 'GarageQual_Po|Neighborhood_Timber', 'PoolQC_Tencode|BsmtFinType2_LwQ', 'Neighborhood_NPkVill|LandSlope_Mod', 'HouseStyle_1Story|Street_Pave', 'SaleCondition_Partial|SaleType_COD', 'PavedDrive_Y|PoolQC_Tencode', 'MasVnrType_BrkCmn|Exterior1st_Wd Sdng', 'BsmtFinType1_Tencode|YearBuilt', 'Neighborhood_ClearCr|MSZoning_RH', 'FullBath|GarageCond_Ex', 'HouseStyle_SFoyer|GarageFinish_Tencode', 'Neighborhood_OldTown|Neighborhood_Veenker', 'LandContour_Tencode|Electrical_SBrkr', 'Condition1_PosA|Exterior2nd_Wd Sdng', 'GarageType_Detchd|1stFlrSF', 'YearRemodAdd|MiscFeature_Othr', 'Condition2_Tencode|FireplaceQu_Ex', 'MasVnrArea|Neighborhood_Timber', 'BsmtFinType2_Tencode|Foundation_CBlock', 'FireplaceQu_Gd|Functional_Tencode', 'BldgType_2fmCon|Functional_Min1', 'Electrical_Tencode|BedroomAbvGr', 'LandSlope_Sev|SaleType_Tencode', 'Utilities_Tencode|SaleType_WD', 'Heating_GasA|MasVnrArea', 'Electrical_FuseP|Electrical_FuseF', 'Street_Tencode|Electrical_Tencode', 'RoofMatl_CompShg|Functional_Maj2', 'Foundation_PConc|BldgType_Twnhs', 'ExterCond_TA|SaleType_CWD', 'Neighborhood_Mitchel|Neighborhood_BrkSide', 'HouseStyle_SFoyer|GarageCars', 'LotShape_IR1|BsmtQual_TA', 'Fireplaces|GarageFinish_Tencode', 'RoofStyle_Shed|Exterior2nd_Wd Shng', 'LandContour_Bnk|BsmtFinType2_LwQ', 'Exterior2nd_BrkFace|GarageQual_Fa', 'BsmtExposure_Tencode|Neighborhood_Somerst', 'LandSlope_Gtl|SaleType_Oth', 'Street_Tencode|Exterior2nd_HdBoard', 'PavedDrive_P|ExterCond_Fa', 'OverallQual|Exterior1st_Wd Sdng', 'MSZoning_RM|Exterior1st_Wd Sdng', '1stFlrSF|BsmtExposure_No', 'LotConfig_Corner|2ndFlrSF', 'BsmtFinType1_BLQ|Functional_Typ', '3SsnPorch|MSZoning_FV', 'Functional_Typ|PoolArea', 'BsmtFinSF2|Exterior1st_Wd Sdng', 'ExterCond_TA|FireplaceQu_Fa', 'HeatingQC_Fa|Neighborhood_NWAmes', 'GarageQual_Fa|Condition2_Artery', 'GarageCond_Tencode|MSZoning_RM', 'BsmtFinSF1|CentralAir_N', 'GarageFinish_Unf|LotConfig_Inside', 'GarageType_2Types|Neighborhood_MeadowV', 'Condition1_RRAn|MasVnrType_BrkFace', 'TotalBsmtSF|SaleType_COD', 'GarageCond_Gd|WoodDeckSF', 'Neighborhood_NWAmes|Neighborhood_StoneBr', 'Functional_Maj1|Neighborhood_SawyerW', 'OpenPorchSF|Exterior1st_Tencode', 'PavedDrive_P|MasVnrType_BrkFace', 'Alley_Tencode|LandContour_Bnk', 'Exterior2nd_CmentBd|Exterior1st_Plywood', 'BsmtQual_Fa|BsmtFinType2_LwQ', 'MiscFeature_Othr|BsmtFinType1_Unf', 'Heating_Tencode', 'HeatingQC_Fa|LandSlope_Sev', 'BsmtFinType1_ALQ|HeatingQC_Tencode', 'YrSold|Neighborhood_Sawyer', 'Neighborhood_Mitchel|Neighborhood_Veenker', 'KitchenQual_Ex|BsmtFinType2_Unf', 'BsmtFinType1_Rec|Condition1_Tencode', 'Exterior2nd_Stone|MSZoning_FV', 'BsmtFinType1_LwQ', 'PoolQC_Tencode|LotShape_IR3', 'GarageQual_TA|BsmtCond_Fa', 'PavedDrive_N|CentralAir_N', 'ExterQual_Tencode|Neighborhood_MeadowV', 'FullBath|BsmtQual_TA', 'Neighborhood_Tencode|PavedDrive_Y', 'Utilities_Tencode|BsmtExposure_Tencode', 'LandSlope_Mod|3SsnPorch', 'HeatingQC_TA|LotShape_Reg', 'Neighborhood_BrDale|Condition1_RRAn', 'HouseStyle_1Story|PavedDrive_Tencode', 'Exterior1st_HdBoard|RoofMatl_WdShngl', 'Exterior2nd_VinylSd|GarageType_Tencode', 'GarageCond_TA|RoofStyle_Shed', 'HeatingQC_Ex|Neighborhood_Timber', 'HouseStyle_1.5Unf|BsmtExposure_No', 'Neighborhood_Somerst|Exterior1st_MetalSd', 'Functional_Maj1|Exterior1st_WdShing', 'Neighborhood_SWISU|2ndFlrSF', 'Neighborhood_SWISU|SaleType_CWD', 'Neighborhood_NAmes|WoodDeckSF', 'BsmtHalfBath|LotConfig_FR2', 'LandContour_Lvl|Exterior1st_BrkComm', 'BsmtFinType2_LwQ|RoofMatl_WdShngl', 'Heating_Grav|MSZoning_FV', 'Foundation_CBlock|RoofMatl_WdShngl', 'Exterior1st_HdBoard|Neighborhood_OldTown', 'LotShape_Tencode|FireplaceQu_Ex', 'Condition1_PosN|BsmtCond_Tencode', 'Functional_Typ|SaleType_WD', 'Street_Tencode|Neighborhood_Crawfor', 'Condition2_Tencode|BsmtFinType2_Rec', 'GarageType_Tencode|LandSlope_Tencode', 'ExterCond_TA|FireplaceQu_Po', 'ScreenPorch|BsmtFinType1_Unf', 'KitchenAbvGr|Alley_Grvl', 'BsmtExposure_Tencode|GarageCond_Tencode', 'Neighborhood_Mitchel|Neighborhood_SWISU', 'KitchenQual_Gd|BsmtQual_Gd', 'EnclosedPorch|FireplaceQu_Ex', 'LandSlope_Mod|CentralAir_Tencode', 'Neighborhood_NPkVill|FullBath', 'Functional_Tencode|MSSubClass', 'Neighborhood_BrDale|RoofStyle_Flat', 'ExterQual_Gd|LotConfig_Inside', 'LotShape_Tencode|BsmtQual_Ex', 'Exterior1st_Tencode|Foundation_Slab', 'Foundation_Stone|BsmtCond_Fa', 'LandSlope_Gtl|SaleType_COD', 'Fence_GdPrv|Neighborhood_Crawfor', 'GarageCond_Gd|GarageCond_Fa', 'PavedDrive_Y|GarageFinish_Tencode', 'Exterior1st_Stucco|FireplaceQu_TA', 'RoofMatl_CompShg|BldgType_TwnhsE', 'ExterQual_TA|Functional_Maj1', 'PoolQC_Tencode|Exterior1st_Wd Sdng', 'GrLivArea|Alley_Pave', 'Neighborhood_Crawfor|MSSubClass', 'Neighborhood_SWISU|Utilities_AllPub', 'BsmtQual_Ex|GarageCond_Ex', 'BsmtExposure_Tencode|WoodDeckSF', 'GarageFinish_Fin|Neighborhood_OldTown', 'BsmtExposure_Tencode|LandSlope_Mod', 'HouseStyle_1Story|SaleCondition_Normal', 'HouseStyle_1Story|Condition1_RRAn', 'MiscVal|RoofMatl_Tar&Grv', 'Neighborhood_Sawyer|GarageCond_Ex', 'Electrical_FuseA|BsmtFinType1_LwQ', 'MasVnrType_None|OverallCond', 'BsmtFinType1_GLQ|Exterior1st_Wd Sdng', 'Exterior2nd_Tencode|BsmtCond_Tencode', 'SaleType_COD|BsmtQual_Gd', 'GarageType_CarPort|MasVnrType_Stone', 'LotShape_IR2|LandSlope_Sev', 'GarageFinish_Fin|BsmtCond_Gd', 'Neighborhood_NAmes|Neighborhood_Sawyer', 'GarageFinish_Fin|PavedDrive_Y', 'GarageFinish_Unf|RoofStyle_Gambrel', 'LotArea|RoofStyle_Gambrel', 'Electrical_FuseA|SaleType_Oth', 'Electrical_FuseP|Heating_GasW', 'BsmtCond_Tencode|MasVnrArea', 'Condition1_Norm|PoolArea', 'BsmtFinSF2|BsmtFinSF1', 'ExterCond_TA|BsmtFinType1_Unf', 'HeatingQC_Ex|GarageCond_Ex', 'Street_Grvl|Neighborhood_SawyerW', 'GarageQual_Fa|BsmtQual_TA', 'MiscFeature_Shed|Exterior2nd_AsphShn', 'FireplaceQu_Gd|Functional_Typ', 'GarageFinish_RFn|SaleType_Oth', 'SaleCondition_Partial|GarageType_2Types', 'Functional_Maj2|FireplaceQu_TA', 'BsmtFinType1_Tencode|Condition1_Tencode', 'LandContour_HLS|OpenPorchSF', 'YearBuilt|BsmtExposure_Gd', 'RoofMatl_CompShg|Condition1_RRAn', 'BsmtQual_Ex|SaleType_COD', 'BsmtQual_Gd|BsmtCond_Fa', '2ndFlrSF|Neighborhood_Sawyer', 'MSZoning_RM|Neighborhood_Crawfor', 'Neighborhood_SWISU|Exterior2nd_HdBoard', 'Foundation_CBlock|ScreenPorch', 'Exterior2nd_CmentBd|Neighborhood_Timber', 'PoolArea|Neighborhood_SawyerW', 'FireplaceQu_Gd|Foundation_Slab', 'Fence_MnPrv|Exterior1st_Wd Sdng', 'HeatingQC_TA|BsmtFinSF2', 'LotShape_Reg|ExterQual_Tencode', 'HeatingQC_Fa|Exterior1st_VinylSd', 'Neighborhood_BrDale|LotShape_IR1', 'ExterQual_Tencode|LotShape_IR3', 'LowQualFinSF|GarageQual_Po', 'MasVnrArea|Functional_Min2', 'RoofStyle_Flat|BsmtFinType2_Tencode', 'Foundation_BrkTil|Street_Grvl', 'MiscVal|SaleCondition_Alloca', 'Heating_Grav|CentralAir_Y', 'Utilities_Tencode|HouseStyle_1.5Unf', 'GarageFinish_Unf|YearRemodAdd', '3SsnPorch|MSSubClass', 'BldgType_Duplex|LotConfig_Inside', 'GarageCond_TA|PoolArea', 'LandSlope_Sev|BsmtFinType1_LwQ', 'ExterQual_TA|Functional_Min2', 'LotShape_IR2|KitchenQual_Ex', 'Exterior1st_AsbShng|GarageCond_Fa', 'Neighborhood_Mitchel|Exterior2nd_AsphShn', 'RoofMatl_CompShg|MiscFeature_Gar2', 'BsmtFinType1_Tencode|LandSlope_Gtl', 'Street_Grvl|LotConfig_Inside', 'Heating_GasW|ScreenPorch', 'YrSold|GarageType_CarPort', 'PavedDrive_Y|Neighborhood_Timber', 'Neighborhood_Veenker|SaleCondition_Partial', 'YrSold|LotShape_IR3', 'LandContour_Bnk|MSZoning_RL', 'Exterior1st_HdBoard|SaleType_ConLD', 'Functional_Typ|SaleCondition_Partial', 'HouseStyle_1.5Fin|Fence_MnWw', 'HouseStyle_SFoyer|GarageType_CarPort', 'Neighborhood_Blmngtn|HouseStyle_2Story', 'Condition1_Feedr|GarageCond_Ex', 'BsmtFinType2_LwQ|Utilities_AllPub', 'FullBath|RoofStyle_Gable', 'HouseStyle_2.5Unf|BsmtCond_Fa', 'GarageType_Tencode|Exterior2nd_HdBoard', 'Electrical_FuseP|BsmtFinSF2', 'MoSold|BsmtFinType2_LwQ', 'LotConfig_Tencode|FireplaceQu_Ex', 'BsmtQual_TA|Neighborhood_Crawfor', 'GarageCond_TA|LandContour_HLS', 'Utilities_Tencode|GarageYrBlt', 'BldgType_Duplex|BsmtQual_Fa', 'Electrical_FuseP|Exterior1st_AsbShng', 'LandContour_Low|Alley_Pave', 'Neighborhood_ClearCr|RoofMatl_Tar&Grv', 'Exterior2nd_VinylSd|LandSlope_Gtl', 'Exterior1st_BrkFace|BsmtCond_Po', 'Neighborhood_BrDale|CentralAir_N', 'GarageQual_TA|FireplaceQu_Fa', 'LandContour_Low|MasVnrArea', 'BsmtFinType2_Tencode|Neighborhood_Somerst', 'BsmtHalfBath|RoofStyle_Gable', 'LandContour_Lvl|Neighborhood_Gilbert', 'HeatingQC_Fa|OverallCond', 'LowQualFinSF|Exterior2nd_Brk Cmn', 'RoofMatl_Tencode|GarageCars', 'Neighborhood_Mitchel|RoofStyle_Gambrel', 'BsmtFinSF1|SaleType_Oth', '3SsnPorch|Condition1_RRAn', 'LotShape_Tencode|RoofStyle_Flat', 'Electrical_FuseA|RoofMatl_CompShg', 'GarageType_Tencode|MasVnrType_Stone', 'PavedDrive_Tencode|Condition1_PosN', 'SaleCondition_Alloca|CentralAir_Y', 'Exterior2nd_Stucco|Utilities_AllPub', 'Functional_Min1|Exterior1st_WdShing', 'Functional_Min1|HouseStyle_SLvl', 'LotConfig_Corner|Foundation_Slab', 'LotShape_IR2|Exterior1st_Wd Sdng', 'Neighborhood_BrDale|SaleCondition_Partial', 'BsmtQual_Ex|3SsnPorch', 'GarageFinish_Unf|Foundation_PConc', 'OverallQual|Exterior1st_Tencode', 'BsmtExposure_Tencode|LandContour_Tencode', 'Alley_Grvl|Street_Pave', 'MiscFeature_Othr|KitchenQual_Ex', 'Electrical_FuseP|RoofStyle_Tencode', 'GarageType_Detchd|ExterQual_Ex', 'Neighborhood_Blmngtn|Condition1_Feedr', 'Functional_Maj2|Exterior1st_Plywood', 'Neighborhood_OldTown|Heating_GasW', 'FireplaceQu_Po|BsmtExposure_Mn', 'BsmtFinType2_Rec|SaleCondition_Partial', 'BsmtFinType1_Tencode|KitchenQual_Ex', 'TotalBsmtSF|ExterCond_TA', 'Functional_Tencode|LotConfig_Corner', 'Fence_GdPrv|Street_Grvl', 'Condition1_RRAe|BsmtCond_TA', 'LotShape_Tencode|Exterior1st_WdShing', 'TotRmsAbvGrd|CentralAir_Y', 'BsmtFinType1_Tencode|HouseStyle_1.5Unf', 'BsmtFinType1_BLQ|Functional_Tencode', 'LotShape_IR1|Exterior2nd_CmentBd', 'LotShape_IR1|MasVnrType_BrkFace', 'Foundation_Tencode|BedroomAbvGr', 'Foundation_BrkTil|KitchenQual_Fa', 'Exterior1st_HdBoard|YearBuilt', 'GarageFinish_Tencode|Condition1_Tencode', 'LotConfig_FR2|BsmtCond_Gd', 'Exterior2nd_CmentBd|Functional_Min2', 'Condition1_PosA|Fence_GdWo', 'SaleType_ConLI|Neighborhood_Timber', 'Condition2_Artery', 'Exterior2nd_MetalSd|GarageYrBlt', 'HouseStyle_SFoyer|SaleType_Oth', 'LotConfig_FR2|HouseStyle_SLvl', 'Exterior1st_Stucco|HouseStyle_2.5Unf', 'Exterior2nd_Tencode|MSSubClass', 'GarageType_Detchd|LandSlope_Tencode', 'BsmtFinType2_ALQ|Exterior2nd_Wd Shng', 'SaleCondition_Partial|Exterior1st_WdShing', 'FireplaceQu_Tencode|BsmtFullBath', 'BsmtFinType1_BLQ|BldgType_1Fam', 'GrLivArea|BsmtCond_Gd', 'BsmtQual_TA|Exterior1st_Plywood', 'GarageQual_Gd|Fence_MnWw', 'MoSold|SaleCondition_Partial', 'ExterQual_TA|MSSubClass', 'FireplaceQu_Po|MasVnrType_BrkCmn', 'MSZoning_FV|Neighborhood_MeadowV', 'FullBath|Exterior1st_WdShing', 'HeatingQC_Gd|Neighborhood_Tencode', 'GarageCond_Ex|Condition1_RRAn', 'BsmtFinType2_GLQ|BsmtFinType2_ALQ', 'YrSold|Neighborhood_Tencode', 'LotShape_Tencode|HouseStyle_2.5Unf', 'LandSlope_Sev|LowQualFinSF', 'Heating_Grav|BsmtQual_Ex', 'Functional_Mod|Neighborhood_StoneBr', 'BsmtQual_Tencode|RoofStyle_Gable', 'BsmtFinSF1|BsmtCond_Fa', 'KitchenAbvGr|Exterior1st_BrkComm', 'Functional_Min1|Foundation_CBlock', 'LotConfig_CulDSac|MSZoning_RL', 'LotShape_Reg|Exterior2nd_CmentBd', 'ExterCond_Tencode|BsmtFinType2_Unf', 'Electrical_SBrkr|PavedDrive_Y', 'BsmtFinType1_BLQ|Neighborhood_MeadowV', 'Condition1_Artery|BsmtFinSF1', 'HalfBath|GarageQual_Tencode', 'Electrical_FuseA|MiscFeature_Tencode', 'GarageType_Basment|Exterior2nd_Wd Shng', 'RoofStyle_Shed|GarageType_Attchd', 'SaleCondition_Family|BsmtFinType2_Unf', 'BsmtExposure_Av|Fence_GdWo', 'BsmtQual_TA|Foundation_CBlock', 'SaleType_Oth|ExterQual_Tencode', 'LandSlope_Mod|Exterior1st_CemntBd', 'MasVnrType_BrkFace|MasVnrType_Stone', 'Exterior2nd_Stucco|GarageType_CarPort', 'LotShape_Reg|Exterior2nd_Brk Cmn', 'Exterior2nd_BrkFace|BsmtFinType1_Rec', 'LandSlope_Mod|GarageYrBlt', 'BldgType_Duplex|Condition1_Norm', 'SaleCondition_Tencode|Exterior2nd_Plywood', 'BsmtFinType1_Tencode|KitchenQual_Tencode', 'LandSlope_Gtl|SaleCondition_Partial', 'Fireplaces|KitchenQual_Ex', 'Utilities_Tencode|LotShape_IR3', 'Neighborhood_BrDale|BldgType_Tencode', 'Functional_Maj1|BsmtCond_TA', 'GarageType_Detchd|Exterior2nd_Stone', 'Neighborhood_NAmes|MasVnrType_BrkFace', 'BldgType_2fmCon|CentralAir_Tencode', 'Neighborhood_CollgCr|BsmtCond_Fa', 'OpenPorchSF|GarageYrBlt', 'Neighborhood_OldTown|GarageArea', 'Condition2_Tencode|ExterCond_Fa', 'Electrical_FuseA|MiscVal', 'Neighborhood_Veenker|BsmtFinType1_Rec', 'SaleType_ConLD|ExterCond_Tencode', 'BsmtFinType2_Unf|GarageFinish_RFn', 'TotRmsAbvGrd|RoofMatl_WdShngl', 'HouseStyle_1.5Unf|HouseStyle_SLvl', 'HeatingQC_Gd|Exterior2nd_Brk Cmn', 'SaleCondition_Family|MSZoning_RH', 'MasVnrType_BrkCmn|Alley_Grvl', 'KitchenQual_Fa|BsmtExposure_No', 'BsmtFinType2_BLQ|Neighborhood_Crawfor', 'Neighborhood_ClearCr|HouseStyle_1.5Unf', 'HeatingQC_Ex|BsmtCond_Tencode', 'ScreenPorch|SaleType_Oth', 'BsmtFinType1_ALQ|Functional_Maj1', 'Exterior1st_Stucco|PoolArea', 'BsmtFinType1_ALQ|CentralAir_Tencode', 'BsmtQual_TA|HouseStyle_2Story', 'ExterQual_TA|HouseStyle_Tencode', 'BldgType_Twnhs|YearBuilt', 'ExterCond_Gd|MiscFeature_Shed', 'BsmtFinType2_Tencode|SaleCondition_Partial', 'RoofStyle_Hip|Exterior1st_HdBoard', 'Fence_Tencode|FireplaceQu_TA', 'KitchenQual_Gd|MoSold', 'OverallQual|Exterior2nd_AsbShng', 'YearBuilt|FireplaceQu_Fa', 'EnclosedPorch|GarageType_BuiltIn', 'Heating_Grav|Exterior1st_AsbShng', 'LotConfig_Corner|Fence_GdWo', 'SaleType_New|Foundation_CBlock', 'BsmtFinType2_Tencode|BsmtFinType1_Unf', 'HouseStyle_2.5Unf|MSZoning_RH', 'TotalBsmtSF|Foundation_PConc', 'Exterior1st_HdBoard|KitchenQual_Gd', 'Neighborhood_ClearCr|BsmtCond_Fa', 'Neighborhood_SWISU|Condition1_Norm', 'Condition1_Artery|ExterCond_Gd', 'BldgType_Duplex|SaleCondition_Partial', 'BsmtQual_Fa|HouseStyle_SLvl', 'SaleType_ConLD|RoofMatl_WdShngl', 'GarageCond_Po|MSZoning_Tencode', 'YrSold|HouseStyle_1Story', 'GarageQual_TA|BsmtCond_Gd', 'BsmtFinType1_ALQ|SaleType_New', 'HouseStyle_1Story|RoofStyle_Tencode', 'Exterior1st_HdBoard|BsmtCond_Po', 'PavedDrive_Y|MSZoning_RH', 'MiscFeature_Othr|FireplaceQu_Po', 'SaleType_CWD|WoodDeckSF', 'GarageFinish_Fin|LandSlope_Mod', 'Electrical_FuseF|MSZoning_FV', 'Functional_Tencode|SaleType_COD', 'HouseStyle_Tencode|ExterCond_Tencode', 'LandSlope_Mod|MiscFeature_Shed', 'HouseStyle_1Story|BsmtFinType2_Unf', 'Neighborhood_NPkVill|Exterior1st_MetalSd', 'EnclosedPorch|BsmtCond_Gd', 'Exterior2nd_VinylSd|Functional_Mod', 'RoofMatl_Tar&Grv|FireplaceQu_TA', 'ExterQual_TA|SaleType_ConLI', 'MoSold|Exterior1st_Tencode', 'YearBuilt|CentralAir_Tencode', 'BsmtFinType1_BLQ|SaleCondition_Partial', 'ExterCond_Gd|Functional_Maj2', 'HeatingQC_Gd|Exterior1st_CemntBd', 'Exterior2nd_Tencode|BsmtFinType1_Unf', 'Foundation_Stone|BsmtQual_Ex', 'Heating_GasA|GarageFinish_Fin', 'GarageFinish_Fin|Functional_Maj2', 'Alley_Pave|BsmtFinSF1', 'Exterior2nd_BrkFace|Neighborhood_Gilbert', 'Heating_Tencode|HouseStyle_2.5Unf', 'BsmtUnfSF|MSZoning_RM', 'BedroomAbvGr|MasVnrType_Stone', 'Electrical_FuseA|BsmtQual_Tencode', 'BsmtFinType2_BLQ|MSZoning_RM', 'MSSubClass|Exterior2nd_Plywood', 'Electrical_FuseA|1stFlrSF', 'Heating_Grav|Neighborhood_IDOTRR', 'BldgType_Twnhs|Neighborhood_Edwards', 'Fireplaces|Fence_GdPrv', 'Foundation_BrkTil|ScreenPorch', 'LandContour_Bnk|Neighborhood_IDOTRR', 'Electrical_FuseP|MasVnrType_BrkCmn', 'YearBuilt|BsmtFinType1_GLQ', 'FireplaceQu_Gd|Neighborhood_Crawfor', 'BsmtCond_Tencode|HouseStyle_2Story', 'LotShape_Reg|Neighborhood_NWAmes', 'Utilities_Tencode|Fence_Tencode', 'Foundation_Stone|LandContour_Lvl', 'SaleType_Tencode|ExterQual_Ex', 'PavedDrive_Tencode|BsmtExposure_Gd', 'SaleType_New|CentralAir_N', 'EnclosedPorch|LandContour_Lvl', 'TotalBsmtSF|BldgType_Twnhs', 'CentralAir_Y|BsmtCond_Fa', 'FireplaceQu_Fa|OverallCond', 'Condition1_Feedr|GarageYrBlt', 'BsmtFinType1_Tencode|HouseStyle_Tencode', 'LotShape_IR1|MSZoning_Tencode', 'SaleCondition_Family|CentralAir_Tencode', 'Exterior1st_Stucco|Electrical_SBrkr', 'LotShape_Tencode|Exterior2nd_Wd Shng', 'LotShape_Reg|Electrical_FuseA', 'KitchenQual_Gd|Neighborhood_Crawfor', 'LandContour_HLS|GarageCond_Ex', 'PavedDrive_Y|HouseStyle_2.5Unf', 'Condition1_Tencode|MasVnrType_BrkFace', 'OverallQual|SaleCondition_Alloca', 'GarageFinish_Unf|LotShape_Reg', 'TotalBsmtSF|SaleCondition_Abnorml', 'OverallQual|MSZoning_Tencode', 'FireplaceQu_Tencode|BsmtFinType1_Unf', 'Neighborhood_NPkVill|Alley_Pave', 'FireplaceQu_Fa|Neighborhood_Sawyer', 'Exterior1st_Stucco|Fence_MnPrv', 'MiscVal|Foundation_Tencode', 'Utilities_Tencode|FireplaceQu_Ex', 'Neighborhood_ClearCr|BsmtFinType2_Unf', 'HeatingQC_Gd|BsmtExposure_Mn', 'Exterior1st_CemntBd|GarageYrBlt', 'TotalBsmtSF|SaleType_New', 'GarageType_Detchd|LandContour_Bnk', 'Fireplaces|RoofStyle_Tencode', 'HouseStyle_Tencode|BsmtQual_Ex', 'Exterior1st_HdBoard|Electrical_SBrkr', 'Neighborhood_NoRidge|MasVnrType_BrkFace', 'BsmtFinType2_Rec|Alley_Grvl', 'Fireplaces|BsmtQual_TA', 'Heating_Tencode|BsmtCond_Tencode', 'BsmtFinType1_ALQ|CentralAir_Y', 'Condition2_Artery|BsmtCond_Fa', 'HeatingQC_TA|MSSubClass', 'LandContour_Low|Condition1_RRAe', 'BsmtFinType1_Rec|BldgType_TwnhsE', 'BsmtFinSF1|SaleType_COD', 'Exterior2nd_MetalSd|Street_Grvl', 'HeatingQC_Gd|GarageType_Basment', 'SaleType_Tencode|SaleCondition_Family', 'LotShape_Reg|BldgType_TwnhsE', 'ExterQual_TA|MiscFeature_Othr', 'Heating_Tencode|GarageType_Basment', 'GarageCond_Gd|PoolArea', 'BsmtFinType2_Tencode|GarageQual_TA', 'Utilities_Tencode|BsmtUnfSF', 'ExterQual_TA|LotShape_Reg', 'BsmtFinType2_Tencode|Electrical_Tencode', 'BsmtFinSF2|GarageCond_Fa', 'GarageType_BuiltIn|BsmtExposure_Gd', 'HouseStyle_SFoyer|Neighborhood_NWAmes', 'Condition1_Feedr|Exterior1st_VinylSd', 'Neighborhood_Somerst|LotShape_IR3', 'YrSold|Exterior2nd_Stucco', 'PavedDrive_N|GarageFinish_Tencode', 'Electrical_Tencode|MSZoning_Tencode', 'FireplaceQu_TA|SaleCondition_Abnorml', 'BsmtFinType2_ALQ|Exterior2nd_CmentBd', 'Condition1_RRAe|Exterior1st_Plywood', 'BsmtFinType2_BLQ|Exterior2nd_CmentBd', 'Neighborhood_SWISU|Electrical_FuseF', 'PoolQC_Tencode|GarageType_2Types', 'FireplaceQu_Tencode|LandContour_Lvl', 'BsmtFinType2_GLQ|MasVnrType_BrkCmn', 'KitchenQual_Ex|BsmtUnfSF', 'Functional_Typ|LandContour_Bnk', 'GarageYrBlt|MSZoning_FV', 'BsmtFinType1_ALQ|SaleType_COD', 'BsmtFinType2_GLQ|BsmtCond_Po', 'ExterCond_Gd|BsmtQual_TA', 'Condition1_Feedr|HouseStyle_2Story', 'LotShape_Reg|RoofMatl_CompShg', 'Neighborhood_NoRidge|BsmtFinSF2', 'HeatingQC_Fa|Exterior2nd_Tencode', 'BsmtFinType1_GLQ|MasVnrType_Tencode', 'Foundation_Stone|Foundation_Tencode', 'Functional_Tencode|Exterior2nd_BrkFace', 'Neighborhood_SWISU|GarageType_Basment', 'Exterior2nd_VinylSd|MSZoning_C (all)', 'Utilities_Tencode|PavedDrive_P', 'GarageCars|2ndFlrSF', 'PavedDrive_N|BsmtQual_Gd', 'Electrical_SBrkr|FireplaceQu_Fa', 'ExterQual_TA|ExterQual_Fa', 'Foundation_PConc|Heating_GasW', 'BsmtQual_Tencode|Exterior1st_WdShing', 'TotRmsAbvGrd|Foundation_CBlock', 'GarageCond_Po|BsmtQual_Ex', 'LandContour_Lvl|Exterior1st_VinylSd', 'FireplaceQu_Gd|Electrical_Tencode', 'Condition1_PosA|BsmtUnfSF', 'Alley_Pave|BsmtFinType1_Unf', 'RoofStyle_Hip|Condition1_Tencode', 'GarageCond_Po|Neighborhood_SawyerW', 'SaleType_WD|LotConfig_Inside', 'Electrical_Tencode|HeatingQC_Tencode', 'Neighborhood_Veenker|Foundation_CBlock', 'LowQualFinSF|BsmtExposure_Gd', 'Utilities_Tencode|GarageType_Detchd', 'ExterQual_TA|KitchenQual_Gd', 'Alley_Tencode|Exterior1st_CemntBd', 'GarageCond_Gd|Street_Grvl', 'SaleType_ConLw|Foundation_CBlock', 'LandContour_Bnk|SaleType_CWD', 'GarageType_Detchd|SaleCondition_Partial', 'RoofMatl_Tar&Grv|BsmtUnfSF', 'Foundation_Tencode|BldgType_Tencode', 'LandSlope_Gtl|MasVnrType_Tencode', 'Neighborhood_SWISU|FireplaceQu_Fa', 'GarageType_Tencode|Fence_MnPrv', 'Neighborhood_Veenker|SaleCondition_Family', 'Condition1_RRAn|MiscFeature_Gar2', 'Fireplaces|Foundation_Tencode', 'SaleCondition_Partial|MasVnrType_Stone', 'Heating_GasA|RoofStyle_Gambrel', 'HouseStyle_1.5Unf|Neighborhood_StoneBr', 'LotShape_Tencode|HouseStyle_1.5Unf', 'Electrical_Tencode|ExterQual_Fa', 'Neighborhood_NridgHt|BsmtFinSF2', 'Neighborhood_Mitchel|Condition1_RRAn', 'ExterCond_Tencode|BsmtQual_Gd', 'Condition2_Norm|MasVnrType_Tencode', 'KitchenAbvGr|RoofMatl_Tencode', 'Foundation_Tencode|BsmtFinType1_GLQ', 'Exterior1st_CemntBd|LotShape_IR3', 'Neighborhood_Somerst|Exterior2nd_HdBoard', 'OverallQual|Exterior1st_BrkComm', 'OverallCond|Alley_Grvl', 'FireplaceQu_Gd|Condition1_Norm', 'EnclosedPorch|BsmtFinType2_Unf', 'SaleCondition_Abnorml|Street_Pave', 'SaleType_ConLw|LotConfig_Inside', 'LowQualFinSF|Fence_MnWw', 'PavedDrive_N|GarageQual_Gd', 'Neighborhood_BrDale|Condition1_RRAe', 'SaleType_ConLw|BldgType_TwnhsE', 'GarageCond_Tencode|KitchenQual_Fa', 'LotShape_IR3|MSZoning_RH', 'Fence_MnWw|Street_Pave', 'Condition1_Artery|BsmtExposure_Mn', 'HeatingQC_Gd|Neighborhood_SawyerW', 'Functional_Typ|Exterior1st_Stucco', 'Condition2_Artery|FireplaceQu_TA', 'Fence_Tencode|MiscFeature_Gar2', 'GarageCond_Ex|Exterior1st_Wd Sdng', 'GarageCond_Tencode|PavedDrive_Y', 'HeatingQC_Ex|BldgType_Tencode', 'LandSlope_Tencode|BsmtFinType1_GLQ', 'GarageCond_Gd|SaleType_Oth', 'LotConfig_Corner|GarageCond_Tencode', 'Neighborhood_OldTown|Exterior1st_CemntBd', 'Condition1_Artery|BsmtFinType1_BLQ', 'YrSold|RoofMatl_CompShg', 'SaleType_ConLw|MSZoning_Tencode', 'Neighborhood_BrDale|BsmtFinType1_BLQ', 'BsmtFinType2_BLQ|PoolQC_Tencode', 'Exterior1st_CemntBd|GarageFinish_RFn', 'GarageFinish_Tencode|GarageType_Attchd', 'TotalBsmtSF|HouseStyle_1Story', 'Condition2_Artery|BsmtExposure_Mn', 'ExterCond_Gd|Neighborhood_StoneBr', 'GarageFinish_Fin|BedroomAbvGr', 'PavedDrive_N|MSSubClass', 'Electrical_Tencode|GarageType_BuiltIn', 'BsmtFinType2_BLQ|RoofStyle_Tencode', 'Exterior1st_MetalSd|Exterior1st_Wd Sdng', 'SaleType_ConLD|GarageYrBlt', 'Heating_Grav|LandSlope_Tencode', 'Neighborhood_Somerst|RoofMatl_Tar&Grv', 'FullBath|BsmtFinType1_GLQ', 'RoofMatl_Tar&Grv|2ndFlrSF', 'ExterCond_Tencode|OpenPorchSF', 'GarageType_Detchd|RoofStyle_Tencode', 'TotalBsmtSF|MiscFeature_Tencode', 'GarageType_Detchd|Condition2_Norm', 'Exterior1st_BrkFace|CentralAir_Tencode', 'BedroomAbvGr|Neighborhood_BrkSide', 'BsmtFinSF2|MiscFeature_Tencode', 'Exterior2nd_BrkFace|GarageCond_Ex', 'FireplaceQu_Fa|MSZoning_RL', 'HeatingQC_TA|Exterior1st_AsbShng', 'BsmtHalfBath|SaleCondition_Partial', 'Neighborhood_BrDale|LandSlope_Tencode', 'BsmtQual_Tencode|RoofMatl_Tar&Grv', 'BsmtFinType1_ALQ|FireplaceQu_TA', 'OverallQual|GarageType_BuiltIn', 'MasVnrType_None|ExterQual_Fa', 'GarageType_Basment|BsmtExposure_No', 'Alley_Tencode|RoofStyle_Gambrel', 'Heating_GasW|Foundation_Slab', 'Foundation_CBlock|MasVnrType_Stone', 'RoofMatl_Tar&Grv|BsmtExposure_Mn', 'BsmtExposure_Tencode|Neighborhood_StoneBr', 'GarageType_BuiltIn|BsmtFinType1_GLQ', 'SaleCondition_Tencode|BsmtExposure_No', 'BsmtExposure_Gd|Functional_Min2', 'Alley_Tencode|Fence_GdWo', 'Electrical_FuseA|LandContour_Lvl', 'HeatingQC_Tencode|BsmtCond_Fa', 'Exterior1st_Stucco|Exterior1st_WdShing', 'PoolQC_Tencode|GarageType_Basment', 'Exterior1st_BrkFace|Exterior1st_MetalSd', 'LandSlope_Tencode|GarageQual_Tencode', 'MoSold|Neighborhood_MeadowV', 'LandContour_Lvl|BsmtFinType1_Unf', 'Exterior2nd_BrkFace|MasVnrType_BrkFace', 'Exterior2nd_Stone|HouseStyle_Tencode', 'BsmtQual_Tencode|BsmtFinType2_LwQ', 'PavedDrive_N|GarageCond_Gd', 'FireplaceQu_Tencode|BsmtFinSF2', 'Neighborhood_NPkVill|SaleType_Tencode', 'LowQualFinSF|GarageQual_Tencode', 'BsmtFinType1_BLQ|Electrical_FuseP', 'SaleType_CWD|Street_Pave', 'MiscFeature_Othr|LandContour_Bnk', 'Exterior1st_Tencode|Fence_MnWw', 'GarageCond_Tencode|PavedDrive_Tencode', 'Street_Tencode|ExterCond_TA', 'Alley_Tencode|GarageCond_Gd', 'Neighborhood_NoRidge|LandSlope_Gtl', 'Exterior2nd_AsbShng|Neighborhood_BrkSide', 'Electrical_FuseP|Neighborhood_NAmes', 'KitchenAbvGr|KitchenQual_Tencode', 'HeatingQC_Gd|MSZoning_C (all)', 'CentralAir_Y|RoofMatl_WdShngl', 'TotalBsmtSF|BsmtFinSF2', 'Exterior1st_AsbShng|MasVnrType_Stone', 'KitchenQual_Gd|Heating_Grav', 'BedroomAbvGr|BsmtFinType1_LwQ', 'Exterior2nd_Stone|Neighborhood_NoRidge', 'ExterCond_Gd|RoofStyle_Shed', 'SaleCondition_Normal|BsmtFinType1_LwQ', 'Exterior1st_AsbShng|Foundation_CBlock', 'GarageQual_Gd|GarageType_Attchd', 'Neighborhood_SWISU|GarageCond_Fa', 'Neighborhood_Somerst|Electrical_Tencode', 'BsmtExposure_Tencode|RoofMatl_Tar&Grv', 'Condition1_RRAn|Fence_MnPrv', 'FireplaceQu_Tencode|LotConfig_Corner', '2ndFlrSF|Exterior2nd_HdBoard', 'LotShape_IR1|LandSlope_Tencode', 'Foundation_CBlock|SaleType_CWD', 'Neighborhood_NridgHt|SaleType_New', 'GarageType_Tencode|BsmtCond_Gd', 'LotConfig_FR2|Exterior2nd_MetalSd', 'Condition1_RRAn|Exterior2nd_AsphShn', 'Condition1_Norm|FireplaceQu_Ex', 'Neighborhood_OldTown|1stFlrSF', 'KitchenQual_TA|BsmtCond_Fa', 'MSZoning_RM|MasVnrType_None', 'BsmtExposure_Tencode|MasVnrArea', 'Foundation_BrkTil|Condition2_Norm', 'Electrical_FuseP|LandSlope_Sev', 'BldgType_Duplex|Neighborhood_IDOTRR', 'FireplaceQu_Po|BsmtQual_TA', 'Electrical_FuseF|BsmtExposure_No', 'ExterCond_Gd|BsmtFinSF1', 'SaleCondition_Alloca|SaleType_CWD', 'KitchenQual_Tencode|FireplaceQu_TA', 'BsmtFinType2_GLQ|PavedDrive_Tencode', 'MiscVal|GarageQual_Fa', 'GarageType_Attchd|RoofStyle_Tencode', 'ExterCond_TA|KitchenQual_Tencode', 'FireplaceQu_Gd|Exterior1st_Tencode', 'SaleType_WD|Electrical_FuseF', 'GarageFinish_Unf|Neighborhood_CollgCr', 'BsmtFinType2_Tencode|Condition1_PosN', 'BsmtFinType1_Tencode|HeatingQC_Fa', 'Exterior2nd_VinylSd|BldgType_TwnhsE', 'BsmtFinSF1|MSZoning_RH', 'Exterior1st_VinylSd|ExterQual_Tencode', 'LotShape_Reg|KitchenQual_Fa', 'BsmtFinType1_BLQ|Exterior2nd_Brk Cmn', 'BsmtExposure_Gd|BsmtFinType1_GLQ', 'BsmtExposure_Tencode|OverallCond', 'HouseStyle_Tencode|OverallCond', 'FireplaceQu_Gd|Electrical_FuseF', 'BsmtHalfBath|Neighborhood_Timber', 'OverallQual|PavedDrive_Y', 'FireplaceQu_TA|Exterior1st_BrkComm', 'Neighborhood_NPkVill|Neighborhood_IDOTRR', 'LandSlope_Sev|Neighborhood_Timber', 'BsmtQual_TA|Neighborhood_BrkSide', 'LotShape_IR2|BsmtFinType1_Rec', 'SaleType_ConLD|MSZoning_RL', 'LandContour_HLS|ExterCond_Fa', 'Functional_Maj1|HouseStyle_2Story', 'BsmtFinType2_LwQ|BldgType_1Fam', 'GarageQual_Tencode|OverallCond', 'Neighborhood_SWISU|Condition1_PosA', 'FireplaceQu_Gd|BsmtQual_Tencode', 'BsmtFinType1_Rec|SaleCondition_Abnorml', 'PoolQC_Tencode|Exterior1st_BrkComm', 'SaleType_ConLI|MSZoning_FV', 'BsmtQual_Fa|BsmtFinType1_Unf', 'HeatingQC_Fa|SaleType_CWD', 'FireplaceQu_Tencode|Heating_GasA', 'Exterior1st_AsbShng|LotArea', 'Exterior1st_HdBoard|MSZoning_RM', 'ExterQual_Tencode|MasVnrType_Tencode', 'Street_Tencode|SaleType_Oth', 'CentralAir_N|HouseStyle_2Story', 'Neighborhood_IDOTRR', 'LandSlope_Gtl|PoolArea', 'YrSold|Exterior2nd_AsbShng', 'GarageCars|BsmtCond_Fa', 'Exterior2nd_AsbShng|Fence_GdWo', 'BsmtExposure_Tencode|KitchenQual_Fa', 'BsmtQual_TA|Neighborhood_StoneBr', 'Neighborhood_ClearCr|Neighborhood_Timber', 'Neighborhood_OldTown|BsmtQual_TA', 'Electrical_FuseF|Exterior1st_BrkComm', 'BldgType_Twnhs|Condition1_RRAn', 'Condition1_Artery|Exterior2nd_Wd Sdng', 'OverallQual|PoolArea', 'GarageQual_Tencode|ExterCond_Fa', 'Neighborhood_Mitchel|BsmtExposure_Mn', 'FireplaceQu_Po|ScreenPorch', 'BsmtFinType1_ALQ|Condition1_PosA', 'BsmtFinType1_LwQ|Neighborhood_Gilbert', 'Fireplaces|LotShape_IR3', 'Exterior1st_VinylSd|Exterior1st_MetalSd', 'RoofMatl_WdShngl|Utilities_AllPub', 'Neighborhood_Sawyer|ExterQual_Tencode', 'HeatingQC_Ex|Functional_Maj2', 'MSSubClass|GarageQual_Tencode', 'BsmtQual_TA|ExterCond_Fa', 'FireplaceQu_Fa|Exterior1st_BrkComm', 'FullBath|Foundation_BrkTil', 'ExterQual_TA|ExterCond_TA', 'ExterCond_Tencode|Condition1_Norm', 'Neighborhood_Edwards|GarageType_Attchd', 'PavedDrive_N|Neighborhood_Somerst', 'SaleType_Tencode|BsmtFinType1_ALQ', 'PavedDrive_Tencode|Street_Pave', 'KitchenAbvGr|Alley_Pave', 'Exterior1st_BrkFace|Exterior1st_Tencode', 'Exterior2nd_AsbShng|Heating_Grav', 'YearBuilt|Exterior2nd_Plywood', 'SaleCondition_Normal|MasVnrArea', 'Utilities_Tencode|Functional_Min2', 'FullBath|MiscFeature_Shed', 'KitchenQual_Gd|YearBuilt', 'Neighborhood_ClearCr|Neighborhood_NoRidge', 'LandSlope_Tencode|SaleCondition_Alloca', 'SaleType_CWD|BsmtCond_TA', 'HeatingQC_Fa|HouseStyle_SFoyer', 'GarageCars|LotConfig_CulDSac', 'KitchenAbvGr|GarageType_Detchd', 'LandContour_HLS|Exterior2nd_CmentBd', '1stFlrSF|LotShape_IR3', 'Functional_Typ|SaleType_ConLD', 'RoofMatl_Tencode|Alley_Pave', 'ExterCond_TA|Fence_GdPrv', 'BldgType_2fmCon|BsmtQual_Fa', 'RoofMatl_CompShg|SaleType_Oth', 'Alley_Pave|Exterior1st_AsbShng', 'Neighborhood_Tencode|BldgType_Tencode', 'BsmtHalfBath|BsmtFinSF2', 'BsmtFinType1_GLQ|GarageType_2Types', 'Condition1_PosA|2ndFlrSF', 'LotShape_Reg|ScreenPorch', 'RoofMatl_Tencode|Alley_Grvl', 'CentralAir_Y|Foundation_Slab', 'LotShape_Reg|Alley_Grvl', 'Exterior1st_AsbShng|Exterior2nd_CmentBd', 'YearBuilt|MasVnrType_None', 'GarageCond_Po|HeatingQC_Fa', 'HouseStyle_SFoyer|LotShape_IR3', 'MiscFeature_Othr|LotConfig_Tencode', 'YearBuilt|BldgType_TwnhsE', 'SaleCondition_Tencode|GarageFinish_RFn', 'BedroomAbvGr|Neighborhood_SWISU', 'MiscVal|RoofMatl_WdShngl', 'GarageFinish_Tencode|Alley_Grvl', 'PavedDrive_P|Neighborhood_BrkSide', 'Exterior1st_AsbShng|OpenPorchSF', 'Condition2_Artery|BsmtFinSF1', 'Condition1_Artery|Neighborhood_Mitchel', 'GarageType_Tencode|MiscFeature_Tencode', 'HouseStyle_SLvl|BsmtQual_Gd', 'Alley_Tencode|SaleType_COD', 'PavedDrive_N|LandContour_HLS', 'Neighborhood_ClearCr|GarageFinish_RFn', 'GrLivArea|SaleCondition_Partial', 'BsmtFinType1_GLQ|Exterior2nd_Wd Shng', 'ExterCond_TA|ExterCond_Gd', 'BsmtFinType1_Tencode|RoofStyle_Gable', 'Neighborhood_IDOTRR|MasVnrArea', 'Foundation_BrkTil|GarageYrBlt', 'RoofMatl_Tencode|Exterior1st_VinylSd', 'Neighborhood_CollgCr|Exterior2nd_Wd Shng', 'BsmtFinType1_Tencode|LotShape_Reg', 'ExterCond_Gd|MSZoning_FV', 'GarageCars|GarageCond_Ex', 'Exterior2nd_VinylSd|Street_Grvl', 'Exterior1st_HdBoard|SaleCondition_Family', 'Fireplaces|LandSlope_Sev', 'GrLivArea|HeatingQC_TA', 'HeatingQC_Fa', 'GarageQual_TA|GarageQual_Tencode', 'LandSlope_Gtl|Neighborhood_IDOTRR', 'HalfBath|Exterior2nd_MetalSd', 'Functional_Min2|HouseStyle_2Story', 'Exterior2nd_AsbShng|SaleType_COD', 'Neighborhood_Somerst|Functional_Maj2', 'ExterQual_TA|BsmtHalfBath', 'PavedDrive_Tencode|Exterior1st_MetalSd', 'RoofStyle_Tencode|MasVnrType_Stone', 'HouseStyle_1Story|BsmtExposure_Av', 'BldgType_Twnhs|BedroomAbvGr', 'GarageCond_Fa|BsmtFinType1_Unf', 'Exterior2nd_Wd Sdng|Street_Pave', 'SaleCondition_Normal|PavedDrive_P', 'MiscFeature_Tencode|Foundation_CBlock', 'MSSubClass|MSZoning_RL', 'Exterior1st_CemntBd|Neighborhood_MeadowV', 'BsmtFinType2_LwQ|Exterior2nd_Wd Sdng', 'LotArea|ExterCond_Gd', 'Utilities_Tencode|HouseStyle_SFoyer', 'Exterior2nd_MetalSd|SaleType_Oth', 'Exterior1st_BrkFace|TotalBsmtSF', 'GarageFinish_Tencode|CentralAir_Tencode', 'Utilities_Tencode|Exterior2nd_Plywood', 'HouseStyle_SFoyer|Alley_Tencode', 'BsmtFinType1_LwQ|Condition1_Tencode', 'MiscFeature_Othr|BsmtFinType2_ALQ', 'BsmtExposure_Tencode|MiscFeature_Shed', 'Exterior1st_BrkFace|Exterior2nd_Stucco', 'Exterior1st_Stucco|BsmtFinSF1', 'BsmtQual_Tencode|BsmtFinType1_Rec', 'GarageQual_Fa|Exterior1st_BrkComm', 'GarageType_BuiltIn|Neighborhood_MeadowV', 'RoofMatl_Tar&Grv|SaleType_COD', 'Fireplaces|LowQualFinSF', 'Exterior1st_AsbShng|ExterQual_Gd', 'GarageQual_Po|SaleType_Oth', 'Foundation_CBlock|OverallCond', 'YearRemodAdd|Exterior1st_Plywood', 'Exterior1st_CemntBd|Exterior1st_BrkComm', 'Neighborhood_CollgCr|LotShape_IR3', 'BsmtFullBath|GarageQual_Fa', 'Exterior2nd_Plywood|HouseStyle_1.5Fin', 'MSZoning_RM|CentralAir_Tencode', 'FullBath|Heating_Tencode', 'LotArea|Condition1_Feedr', 'GarageFinish_Unf|SaleType_Tencode', 'GrLivArea|BsmtQual_Ex', 'CentralAir_N|Condition1_RRAn', 'Neighborhood_Tencode|GarageType_2Types', 'Functional_Maj1|CentralAir_N', 'Utilities_Tencode|BsmtExposure_Av', 'Foundation_PConc|PavedDrive_P', 'Neighborhood_Veenker|Functional_Mod', 'HouseStyle_1Story|Fence_MnWw', 'GarageCond_Po|BsmtFinType1_Rec', 'BsmtFinType1_ALQ|GarageCond_Gd', 'Condition1_PosN|Exterior2nd_AsphShn', 'LotConfig_FR2|Exterior1st_Plywood', 'LandContour_Tencode|Alley_Grvl', 'GarageType_CarPort|MSZoning_RM', 'Alley_Tencode|GarageQual_Tencode', 'RoofMatl_Tencode|HouseStyle_1.5Unf', 'BsmtFinType1_BLQ|LandSlope_Tencode', 'Condition1_RRAe|Neighborhood_SawyerW', 'Utilities_Tencode|Exterior1st_BrkFace', 'Neighborhood_NPkVill|Functional_Min2', 'Neighborhood_NAmes|SaleCondition_Abnorml', 'BldgType_1Fam|SaleType_CWD', 'RoofMatl_Tencode|Electrical_Tencode', 'GarageType_Basment|Condition2_Norm', 'LandContour_Lvl|LandSlope_Gtl', 'KitchenAbvGr|HouseStyle_SLvl', 'BsmtFinType1_Unf|Condition1_RRAn', 'Exterior2nd_HdBoard|BsmtQual_Gd', 'BsmtQual_Tencode|LotConfig_FR2', 'Neighborhood_Mitchel|MasVnrType_BrkCmn', 'HalfBath|BsmtExposure_Gd', 'HeatingQC_TA|CentralAir_N', 'GarageType_Detchd|Condition1_Norm', 'RoofMatl_Tencode|PavedDrive_Tencode', 'FireplaceQu_Ex|BsmtFinSF1', 'SaleCondition_Tencode|Neighborhood_BrDale', 'LandContour_Lvl|MasVnrType_BrkFace', 'Neighborhood_Gilbert|Alley_Grvl', 'Alley_Grvl|MSZoning_RL', 'BsmtFinType2_LwQ|Neighborhood_Timber', 'HouseStyle_Tencode|MiscVal', 'FireplaceQu_TA|Exterior1st_WdShing', 'BsmtFinType1_Rec|Exterior2nd_CmentBd', 'Functional_Tencode|Exterior2nd_VinylSd', 'FireplaceQu_TA|GarageQual_Tencode', 'Functional_Tencode|BldgType_TwnhsE', 'SaleCondition_Alloca|Fence_GdWo', 'Neighborhood_ClearCr|HeatingQC_Gd', 'HeatingQC_Fa|Functional_Typ', 'Neighborhood_NridgHt|Functional_Min2', 'RoofStyle_Hip|SaleType_WD', 'SaleType_ConLI|Foundation_Slab', 'BsmtFinType1_Unf|LotConfig_Inside', 'RoofMatl_Tencode|KitchenQual_TA', 'SaleCondition_Normal|BldgType_Tencode', 'BsmtHalfBath|LandContour_Tencode', 'BsmtFinType1_ALQ|GarageArea', 'LotConfig_CulDSac|MSZoning_Tencode', 'HeatingQC_Ex|Neighborhood_StoneBr', 'FireplaceQu_Po|MSZoning_RH', 'BsmtFinSF2|GarageCond_Gd', 'SaleCondition_Alloca|Neighborhood_Timber', 'Neighborhood_Tencode|OpenPorchSF', 'LandContour_Bnk|BsmtCond_TA', 'Fireplaces|Electrical_FuseF', 'KitchenAbvGr|Neighborhood_NWAmes', 'LotArea|Fence_GdPrv', 'BsmtExposure_Gd|Exterior2nd_Wd Shng', 'BsmtFinType1_ALQ|RoofMatl_Tar&Grv', 'LandContour_Low|SaleCondition_Alloca', 'Exterior1st_BrkFace|HeatingQC_Ex', 'GarageQual_Po|PoolArea', 'LotConfig_Tencode|Condition1_RRAn', 'RoofMatl_Tencode|ExterQual_Fa', 'MSZoning_FV|Fence_MnPrv', 'BsmtFinType1_Tencode|GarageCond_Tencode', 'Foundation_PConc|GarageQual_Gd', 'Foundation_Tencode|ExterQual_Ex', 'PavedDrive_N|Exterior1st_BrkFace', 'Street_Tencode|LandContour_Tencode', 'Electrical_Tencode|SaleType_ConLD', 'Neighborhood_NPkVill|GarageYrBlt', 'BldgType_Duplex|Condition2_Tencode', 'OverallQual|Foundation_Tencode', 'GarageFinish_RFn|Exterior2nd_Wd Shng', 'MSZoning_Tencode|Utilities_AllPub', 'Condition2_Artery|MasVnrType_BrkFace', 'Functional_Mod|CentralAir_N', 'Functional_Mod|ExterCond_Fa', 'LotConfig_Corner|LandSlope_Tencode', 'SaleCondition_Tencode|BsmtFinType1_Tencode', 'MasVnrType_BrkCmn|GarageYrBlt', 'SaleType_ConLD|LotConfig_CulDSac', 'KitchenQual_Tencode|SaleCondition_Partial', 'Neighborhood_IDOTRR|Neighborhood_MeadowV', 'LotShape_IR2|GarageType_Tencode', 'GarageCond_Fa|CentralAir_N', 'KitchenQual_Gd|GarageArea', 'Exterior1st_Wd Sdng|ExterCond_Fa', 'Heating_GasW|BsmtCond_Tencode', 'BldgType_Duplex|RoofMatl_CompShg', 'FireplaceQu_Tencode|MiscFeature_Tencode', 'Electrical_FuseF|CentralAir_Y', 'TotalBsmtSF|RoofStyle_Gable', 'LandContour_Low|Fence_GdWo', 'Heating_Tencode|Neighborhood_Timber', 'Alley_Tencode|BsmtExposure_Mn', 'Condition1_Artery|Condition1_PosA', 'Electrical_FuseA|GarageCond_Gd', 'Functional_Tencode|Condition1_PosN', 'BsmtFinType1_GLQ|MasVnrType_Stone', 'LandContour_Low|BsmtFinType2_LwQ', 'Functional_Tencode|PoolArea', 'Neighborhood_Sawyer|PoolArea', 'KitchenAbvGr|MasVnrType_BrkFace', 'BsmtFinType2_BLQ|Exterior2nd_Wd Sdng', 'Neighborhood_Mitchel|MSSubClass', '2ndFlrSF|PoolArea', 'ExterCond_Tencode|Electrical_FuseF', 'Exterior2nd_Stone|Exterior1st_Plywood', 'Exterior2nd_MetalSd|LowQualFinSF', 'LandSlope_Tencode|MiscFeature_Shed', 'Neighborhood_BrDale|BldgType_TwnhsE', 'Foundation_CBlock|Condition2_Artery', 'Alley_Tencode|LotConfig_Inside', 'Condition1_PosA|CentralAir_Y', 'Heating_Grav|LotConfig_Inside', 'Exterior2nd_Wd Sdng|HouseStyle_2.5Unf', 'GarageFinish_Unf|HeatingQC_Ex', 'Alley_Tencode|BsmtCond_TA', 'ExterQual_TA|BsmtQual_TA', 'HeatingQC_Tencode|Utilities_AllPub', 'KitchenQual_Fa|Neighborhood_Crawfor', 'BsmtFinSF2|Condition1_Tencode', 'ExterQual_TA|YearBuilt', 'GarageArea|HouseStyle_2Story', 'Exterior1st_AsbShng|ExterQual_Ex', 'Neighborhood_Sawyer|MSSubClass', 'Electrical_FuseA|BsmtFinType2_ALQ', 'HalfBath|MSZoning_Tencode', 'PavedDrive_Y|Condition1_RRAn', 'GarageType_Basment|LotShape_IR3', 'Fireplaces|BsmtQual_Gd', 'Foundation_BrkTil|CentralAir_Tencode', 'Neighborhood_ClearCr|MSZoning_Tencode', 'Alley_Pave|LotShape_IR3', 'Neighborhood_Crawfor|MasVnrType_Tencode', 'GarageFinish_Unf|Foundation_BrkTil', 'Street_Tencode|Functional_Tencode', 'Foundation_CBlock|BsmtQual_Gd', 'Exterior2nd_Stone|SaleType_New', 'KitchenQual_Gd|LotShape_IR3', 'LotShape_IR1|MiscFeature_Gar2', 'YrSold|BsmtExposure_No', 'YrSold|BsmtFinType1_Unf', 'MasVnrType_None|Fence_MnPrv', 'Functional_Tencode|TotRmsAbvGrd', 'Exterior1st_HdBoard|Fence_MnWw', 'GarageType_Tencode|MSZoning_RM', 'BsmtCond_Po|ExterQual_Tencode', 'Exterior2nd_Brk Cmn|BldgType_Tencode', 'Utilities_Tencode|RoofStyle_Flat', 'HouseStyle_1.5Unf|BsmtCond_TA', 'Heating_GasW|SaleCondition_Alloca', 'Heating_Grav|Foundation_Tencode', 'BsmtFinType1_BLQ|Exterior2nd_HdBoard', 'BsmtQual_TA|MSSubClass', 'HeatingQC_Fa|Neighborhood_Mitchel', 'SaleType_ConLD|BsmtCond_TA', 'LandContour_Low|Exterior1st_MetalSd', 'Exterior2nd_Stone|Heating_GasA', 'LandSlope_Tencode|LandContour_Bnk', 'CentralAir_Tencode|GarageFinish_RFn', 'SaleType_ConLD|SaleType_CWD', 'PoolQC_Tencode|CentralAir_Tencode', 'Functional_Typ|GarageType_CarPort', 'Neighborhood_BrDale|Exterior1st_Plywood', 'ExterCond_Gd|TotRmsAbvGrd', 'ExterCond_TA|YearBuilt', 'RoofMatl_Tar&Grv|MasVnrType_BrkFace', 'LandContour_HLS|SaleCondition_Abnorml', 'BsmtFinType1_Tencode|MSZoning_C (all)', 'Electrical_Tencode|Foundation_Tencode', 'LandSlope_Sev|BsmtFinSF1', 'Condition1_RRAn|Exterior2nd_HdBoard', 'Exterior1st_CemntBd|MasVnrType_Tencode', 'YearRemodAdd|BsmtFinType1_GLQ', 'GarageCond_Ex|Exterior1st_Plywood', 'ExterQual_Gd|Exterior1st_WdShing', 'GrLivArea|FireplaceQu_Gd', 'SaleCondition_Family|Condition1_Norm', 'Street_Tencode|GarageQual_Gd', 'MoSold|WoodDeckSF', 'LotFrontage|Exterior1st_Stucco', 'Neighborhood_Timber|Exterior1st_Plywood', 'Condition1_Tencode|Street_Grvl', 'PavedDrive_Tencode|ExterCond_Fa', 'LotShape_Reg|Condition1_PosN', 'PoolQC_Tencode|Neighborhood_Gilbert', 'LandContour_HLS|MasVnrType_BrkCmn', 'LotConfig_CulDSac|BsmtCond_Po', 'PavedDrive_Tencode|FireplaceQu_TA', 'ScreenPorch|MasVnrType_Stone', 'GarageFinish_Unf|Neighborhood_SWISU', 'Neighborhood_NridgHt|Condition2_Artery', 'BsmtQual_Tencode|SaleType_CWD', 'Foundation_Stone|MasVnrType_Tencode', 'Exterior2nd_AsbShng|Neighborhood_ClearCr', 'Condition1_RRAe|BsmtExposure_Av', 'Exterior2nd_Stucco|Neighborhood_ClearCr', 'Neighborhood_Edwards|LandContour_Bnk', 'GarageCars|Fence_GdPrv', 'LotShape_Tencode|HouseStyle_1Story', 'SaleType_COD|MSZoning_RH', 'MSZoning_C (all)|GarageCond_Ex', 'BsmtFinType1_BLQ|GarageFinish_Tencode', 'LandContour_Bnk|Street_Pave', 'GarageFinish_Fin|RoofStyle_Tencode', 'MSZoning_C (all)|GarageType_BuiltIn', 'ExterQual_TA|Street_Pave', 'Neighborhood_Somerst|Neighborhood_OldTown', 'GarageType_Basment|MiscFeature_Gar2', 'LandContour_Low|Neighborhood_NWAmes', 'Exterior1st_BrkFace|LotFrontage', 'GarageType_BuiltIn|Functional_Min2', 'Exterior2nd_AsbShng|Street_Tencode', 'HeatingQC_TA|Heating_Tencode', 'Functional_Typ|Street_Grvl', 'SaleType_ConLw|WoodDeckSF', 'Electrical_FuseP|Neighborhood_NWAmes', 'BsmtFinType2_ALQ|LowQualFinSF', 'GarageCond_Po|MasVnrType_None', 'SaleCondition_Tencode|WoodDeckSF', 'LandSlope_Tencode|Foundation_CBlock', 'YearBuilt|MiscFeature_Gar2', 'GarageType_Attchd|Neighborhood_StoneBr', 'BsmtHalfBath|Neighborhood_BrkSide', 'Utilities_Tencode|GarageType_Basment', 'Neighborhood_Edwards|Fence_GdPrv', 'Electrical_FuseP|Fireplaces', 'GarageType_Detchd|WoodDeckSF', 'LotConfig_Corner|Foundation_Tencode', 'PavedDrive_Y|Exterior1st_MetalSd', 'KitchenQual_Gd|ExterQual_Ex', 'Condition2_Tencode|MSZoning_Tencode', 'Condition1_Artery|GarageType_BuiltIn', 'Functional_Mod|Street_Pave', 'MasVnrType_BrkCmn|PoolArea', 'Exterior1st_AsbShng|MSZoning_FV', 'HouseStyle_SFoyer|BldgType_TwnhsE', 'ExterQual_Fa', 'BsmtQual_Fa|Neighborhood_SWISU', 'OverallQual|Condition1_RRAe', 'ExterQual_TA|Neighborhood_Edwards', 'GarageQual_Gd|Exterior2nd_AsphShn', 'GrLivArea|FireplaceQu_Po', 'Functional_Tencode|PavedDrive_P', 'RoofMatl_Tencode|BsmtFinType2_Unf', 'ExterQual_Ex|Fence_MnWw', 'Condition1_RRAe|Street_Grvl', 'SaleType_ConLI|Utilities_AllPub', 'SaleType_ConLw|LandSlope_Tencode', 'Foundation_PConc|KitchenQual_TA', 'Exterior2nd_CmentBd|GarageFinish_RFn', 'YrSold|Functional_Min1', 'Functional_Min1|MasVnrArea', 'Neighborhood_Mitchel|LandContour_Lvl', 'FireplaceQu_Gd|MSZoning_C (all)', 'Neighborhood_ClearCr|HeatingQC_Tencode', 'PavedDrive_N|Neighborhood_MeadowV', 'BsmtFinType2_Rec|Neighborhood_Timber', 'GarageCond_Po|RoofMatl_WdShngl', 'LandContour_Bnk|ExterQual_Tencode', 'Functional_Mod|BsmtCond_Tencode', 'BldgType_Duplex', 'SaleType_ConLw|HalfBath', 'BsmtExposure_Tencode|3SsnPorch', 'GarageCars|BsmtQual_Ex', 'HeatingQC_Fa|Alley_Pave', 'RoofMatl_CompShg|Exterior1st_BrkComm', 'Heating_Grav|Condition2_Norm', 'LandContour_Lvl|MasVnrType_Tencode', 'Neighborhood_Edwards|BsmtFinType1_Unf', 'BsmtExposure_Tencode|KitchenQual_Tencode', 'PavedDrive_Tencode|MiscFeature_Gar2', 'PoolQC_Tencode|BsmtFinType2_Unf', 'GarageFinish_Fin|BsmtFinSF2', 'Neighborhood_Somerst|LowQualFinSF', 'Electrical_FuseF|BsmtUnfSF', 'LandSlope_Mod|Heating_Tencode', 'BsmtQual_TA|CentralAir_Tencode', 'Street_Tencode|RoofMatl_WdShngl', 'Fence_GdPrv|RoofMatl_Tar&Grv', 'SaleType_Oth|MasVnrType_Tencode', 'FireplaceQu_Ex|Neighborhood_SawyerW', 'BsmtQual_Ex|Fence_MnPrv', 'Neighborhood_CollgCr|SaleType_ConLD', 'LandContour_Lvl|BsmtFinType1_Rec', 'YrSold|TotalBsmtSF', 'Exterior2nd_AsbShng|RoofStyle_Hip', 'Condition2_Artery|CentralAir_N', 'LandContour_Low|MasVnrType_None', 'GarageType_Detchd|BsmtHalfBath', 'Heating_Tencode|GarageCond_Ex', 'LotShape_IR1|FireplaceQu_Fa', 'BsmtFinType2_Tencode|Condition2_Norm', 'BsmtFinType2_GLQ|GarageCond_Fa', 'HeatingQC_TA|MSZoning_RH', 'RoofStyle_Gambrel|MSZoning_FV', 'Neighborhood_OldTown|BsmtExposure_Av', 'Electrical_SBrkr|Exterior2nd_Wd Shng', 'ExterCond_Gd|MSZoning_RL', 'YearRemodAdd|KitchenQual_Gd', 'KitchenAbvGr|BsmtUnfSF', 'SaleType_ConLI|Street_Pave', 'GarageCond_Po|RoofMatl_CompShg', 'Alley_Tencode|LandSlope_Tencode', 'PavedDrive_Y|SaleCondition_Abnorml', 'Condition1_Artery|MasVnrType_BrkCmn', 'Functional_Maj1|MiscFeature_Tencode', 'LotConfig_Corner|Neighborhood_SWISU', 'HouseStyle_1.5Unf|GarageType_BuiltIn', 'KitchenQual_Gd|Condition1_Norm', 'SaleCondition_Normal|2ndFlrSF', 'Condition2_Artery|LotConfig_Inside', 'FireplaceQu_Fa|FireplaceQu_Ex', 'GarageCond_Gd|LotConfig_Tencode', 'Neighborhood_OldTown|Exterior1st_Plywood', 'BsmtFinType2_Tencode|Street_Grvl', 'MiscFeature_Gar2|MasVnrType_Tencode', 'RoofMatl_CompShg|GarageType_BuiltIn', 'FireplaceQu_Tencode|GarageFinish_Fin', 'SaleType_CWD|HouseStyle_1.5Fin', 'Neighborhood_ClearCr|TotRmsAbvGrd', 'ExterCond_Gd|Condition2_Artery', 'TotalBsmtSF|SaleCondition_Family', 'Fence_GdWo|BldgType_1Fam', 'PavedDrive_P|WoodDeckSF', 'BsmtFinType1_BLQ|LandContour_Bnk', 'LandContour_HLS|Exterior1st_VinylSd', 'Condition2_Norm|HouseStyle_SLvl', 'Exterior1st_WdShing|Fence_MnPrv', 'SaleCondition_Family|LotShape_IR3', 'FireplaceQu_Tencode|KitchenQual_Ex', 'Neighborhood_NAmes|HouseStyle_2.5Unf', 'ExterQual_Ex|Exterior2nd_Plywood', 'BsmtFinSF2|MSSubClass', 'BsmtFinSF1|LotShape_IR3', 'GarageQual_Po|Utilities_AllPub', 'Neighborhood_SWISU|Fence_GdWo', 'GarageQual_Gd|LotShape_IR3', '1stFlrSF|BsmtFinType2_LwQ', 'RoofMatl_Tencode|Exterior2nd_VinylSd', 'KitchenQual_Tencode|ExterQual_Fa', 'FireplaceQu_Fa|KitchenQual_TA', 'BsmtCond_TA|Fence_MnPrv', 'SaleCondition_Tencode|LotArea', 'RoofStyle_Shed|Neighborhood_Crawfor', 'BsmtQual_TA|GarageCond_Ex', 'EnclosedPorch|Heating_Grav', 'RoofStyle_Tencode|BsmtQual_Gd', 'Neighborhood_CollgCr|BsmtQual_Tencode', 'GrLivArea|GarageQual_Fa', 'Functional_Maj2|HouseStyle_1.5Fin', 'BldgType_TwnhsE|SaleType_Oth', 'Heating_GasA|BldgType_1Fam', 'Exterior1st_HdBoard|PavedDrive_Tencode', 'SaleCondition_Normal|SaleType_COD', 'BsmtFullBath|Exterior2nd_Wd Shng', 'ExterQual_TA|Condition1_PosA', 'Exterior2nd_MetalSd|MSZoning_RH', 'Condition2_Tencode|LowQualFinSF', 'Heating_GasA|Fence_Tencode', 'Neighborhood_ClearCr|BsmtQual_Tencode', 'LotArea|BsmtQual_Gd', 'Heating_GasA|BsmtExposure_Mn', 'HouseStyle_Tencode|3SsnPorch', 'RoofMatl_WdShngl|MasVnrType_Stone', 'EnclosedPorch|Exterior2nd_Tencode', '3SsnPorch|Neighborhood_MeadowV', 'GarageCond_Po|OverallCond', 'BldgType_2fmCon|GarageFinish_Fin', 'BsmtQual_Tencode|GarageType_Attchd', 'RoofStyle_Gambrel|Neighborhood_Timber', 'BsmtFinType1_Tencode|ExterQual_Gd', 'MSZoning_FV|HouseStyle_2Story', 'FireplaceQu_Tencode|LandContour_HLS', 'LandSlope_Mod|Functional_Maj2', 'SaleType_ConLI|CentralAir_Tencode', 'ExterQual_TA|BldgType_2fmCon', 'SaleType_ConLI|BsmtExposure_Gd', 'Neighborhood_BrkSide|Neighborhood_Timber', 'Electrical_FuseA|Functional_Maj2', 'MiscFeature_Gar2|Street_Pave', 'ExterCond_Tencode|MSZoning_Tencode', 'ExterQual_Gd|MiscFeature_Gar2', 'BsmtCond_Po|Street_Grvl', 'GarageCond_Tencode|Neighborhood_Crawfor', 'YrSold|LotShape_IR1', 'BsmtExposure_Tencode|GarageCond_Gd', 'KitchenQual_Tencode', 'GarageType_BuiltIn|BsmtCond_Tencode', 'Exterior1st_AsbShng|LandContour_Bnk', 'ExterQual_TA|BedroomAbvGr', 'Exterior2nd_Stone|LowQualFinSF', 'BsmtFinType1_LwQ|BsmtCond_TA', 'LandSlope_Sev|BsmtExposure_No', 'Exterior1st_AsbShng|BsmtQual_Fa', 'LandContour_Tencode|Neighborhood_Timber', 'TotRmsAbvGrd|BsmtCond_Po', 'FireplaceQu_Po|Exterior2nd_BrkFace', 'GarageType_Basment|BsmtQual_Gd', 'GarageFinish_Unf|Condition1_PosA', 'FireplaceQu_TA|BsmtCond_Fa', 'HeatingQC_Fa|HouseStyle_1.5Fin', 'KitchenQual_Gd|Neighborhood_IDOTRR', 'HalfBath|BsmtQual_TA', 'Alley_Pave|HouseStyle_SFoyer', 'Neighborhood_OldTown|Condition1_RRAn', 'Exterior1st_BrkComm|Fence_MnWw', 'MiscFeature_Tencode|BldgType_1Fam', 'Neighborhood_Mitchel|Exterior2nd_Brk Cmn', 'BldgType_Duplex|BldgType_Twnhs', 'ExterQual_TA|BsmtQual_Tencode', 'Exterior2nd_Tencode|ExterQual_Tencode', 'YearBuilt|BedroomAbvGr', 'BsmtFinSF1|PoolArea', 'HeatingQC_Fa|3SsnPorch', 'BsmtFinType2_Tencode|Neighborhood_StoneBr', 'Neighborhood_BrkSide|MSZoning_RH', 'LotArea|BsmtExposure_Av', 'BsmtFinType2_Rec|HouseStyle_2.5Unf', 'MSZoning_RH|Fence_MnWw', 'Foundation_Tencode|CentralAir_Tencode', '3SsnPorch|SaleType_CWD', 'YearBuilt|Fence_GdWo', 'Exterior2nd_Stucco|MiscFeature_Gar2', 'Street_Pave|GarageType_2Types', 'Neighborhood_Veenker|Neighborhood_Gilbert', 'YearBuilt|KitchenQual_Fa', 'MiscFeature_Othr|BsmtQual_Gd', 'Exterior1st_AsbShng|Foundation_BrkTil', 'Neighborhood_NAmes|MSZoning_FV', 'GarageFinish_Tencode|MSZoning_FV', 'Neighborhood_NPkVill|Exterior2nd_BrkFace', 'GarageQual_TA|LowQualFinSF', 'LandContour_Low|SaleType_ConLI', 'SaleCondition_Family|HouseStyle_SLvl', 'SaleType_ConLI|LandContour_Lvl', 'PavedDrive_Y|GarageType_CarPort', 'BsmtQual_Fa|BsmtFinSF1', 'Neighborhood_Somerst|Exterior2nd_AsphShn', 'GarageFinish_Fin|GarageQual_Po', 'GarageType_Detchd|Neighborhood_StoneBr', 'Neighborhood_BrDale|RoofStyle_Tencode', 'Alley_Tencode|YearBuilt', 'Exterior2nd_MetalSd|Exterior2nd_Wd Shng', 'Exterior1st_AsbShng|MiscFeature_Shed', 'GarageCond_Ex|LotShape_IR3', 'PavedDrive_Tencode|RoofStyle_Tencode', 'GarageType_Basment|MSZoning_Tencode', 'SaleCondition_Tencode|Condition2_Tencode', 'Exterior2nd_VinylSd|PavedDrive_Y', 'HouseStyle_SFoyer|Neighborhood_CollgCr', 'ExterQual_TA|MasVnrType_BrkFace', 'MasVnrType_None|Neighborhood_Sawyer', 'Neighborhood_Blmngtn|Electrical_FuseP', 'Utilities_Tencode|RoofStyle_Tencode', 'BsmtCond_Gd|Fence_MnWw', 'GarageCars|BsmtCond_TA', 'Exterior2nd_CmentBd|GarageQual_Po', 'LotShape_Tencode|GarageQual_Tencode', 'RoofMatl_Tar&Grv|GarageArea', 'LandSlope_Tencode|Functional_Mod', 'MSZoning_C (all)|Neighborhood_Crawfor', 'GarageQual_Po|Foundation_CBlock', 'YearRemodAdd|HouseStyle_1.5Fin', 'SaleType_ConLD|Condition1_Tencode', 'Alley_Pave|Foundation_Tencode', 'LotConfig_Corner|BsmtExposure_Av', 'RoofMatl_CompShg|FireplaceQu_TA', 'Foundation_Stone|HouseStyle_1.5Unf', 'BldgType_2fmCon|GarageCond_Gd', 'GarageQual_Gd|KitchenQual_TA', 'KitchenAbvGr|Fence_GdPrv', 'SaleType_ConLI|3SsnPorch', 'BsmtExposure_Tencode|Heating_Tencode', 'RoofStyle_Flat|KitchenQual_Fa', 'GrLivArea|Street_Pave', 'GarageType_Detchd|HeatingQC_Fa', 'BsmtHalfBath|LandSlope_Tencode', 'Exterior2nd_Stone|Neighborhood_StoneBr', 'FireplaceQu_Gd|GarageArea', 'Neighborhood_Veenker|MSZoning_Tencode', 'FireplaceQu_Gd|Street_Grvl', 'HouseStyle_2.5Unf|Exterior2nd_Brk Cmn', 'Condition1_PosA|GarageCond_Fa', 'Condition2_Tencode|Neighborhood_MeadowV', 'LotShape_IR2|2ndFlrSF', 'LotFrontage|BsmtQual_TA', 'Utilities_Tencode|Functional_Mod', 'Exterior1st_HdBoard|GarageYrBlt', 'BldgType_1Fam|GarageType_2Types', 'Neighborhood_NWAmes|FireplaceQu_Ex', 'YrSold|Functional_Mod', 'Neighborhood_Blmngtn|MSZoning_C (all)', 'Electrical_FuseP|FireplaceQu_Fa', 'SaleType_ConLw|LandContour_HLS', 'KitchenQual_Tencode|ExterQual_Gd', 'LotConfig_Corner|Fence_MnWw', 'YrSold|TotRmsAbvGrd', 'MiscFeature_Shed|Exterior2nd_Wd Shng', 'LotShape_IR2|Neighborhood_NoRidge', 'BldgType_Duplex|ExterQual_Tencode', 'BsmtFinType2_ALQ|LotShape_IR3', 'BldgType_2fmCon|SaleType_CWD', 'GarageQual_Gd|BldgType_TwnhsE', 'Neighborhood_Tencode|Fence_MnWw', 'Heating_GasW|PoolArea', 'FireplaceQu_Po|BsmtHalfBath', 'Neighborhood_OldTown|LandContour_Lvl', 'SaleCondition_Tencode|MSZoning_RH', 'LandSlope_Mod|HouseStyle_2Story', 'PavedDrive_Y|BsmtFinType1_ALQ', 'GarageType_Detchd|Exterior2nd_Wd Shng', 'TotalBsmtSF|2ndFlrSF', 'Condition2_Norm|ExterCond_Fa', 'BsmtCond_Po|LotConfig_Inside', 'LotFrontage|GarageFinish_Fin', 'RoofMatl_Tencode|PavedDrive_Y', 'Condition1_PosA|Condition2_Artery', 'Condition1_RRAe|Exterior2nd_Wd Sdng', 'HeatingQC_TA|Neighborhood_Sawyer', 'Neighborhood_NPkVill|Neighborhood_Crawfor', 'Foundation_CBlock|SaleType_COD', 'BldgType_2fmCon|2ndFlrSF', 'BsmtFinType1_BLQ|SaleType_ConLD', 'BsmtQual_Tencode|Neighborhood_Sawyer', 'MiscVal|Exterior2nd_VinylSd', 'GarageFinish_Tencode|BsmtCond_Fa', 'FireplaceQu_Tencode|Exterior1st_HdBoard', 'OverallQual|SaleCondition_Abnorml', 'BsmtFinType1_LwQ|Street_Grvl', 'LandContour_Lvl|RoofStyle_Gambrel', 'Alley_Pave|RoofStyle_Shed', 'MasVnrType_None|MasVnrType_BrkFace', 'TotRmsAbvGrd|KitchenQual_Fa', 'BldgType_Twnhs|CentralAir_N', 'GarageCond_TA|GarageCond_Gd', 'Neighborhood_Veenker|MiscFeature_Gar2', 'Electrical_SBrkr|BsmtFinType1_Unf', 'Neighborhood_NoRidge|GarageFinish_Tencode', 'RoofStyle_Hip|HouseStyle_1.5Unf', 'Neighborhood_Somerst|BsmtCond_Tencode', 'MasVnrType_Tencode', 'BsmtFinType1_Tencode|HeatingQC_TA', 'YearBuilt|HouseStyle_1.5Unf', 'Neighborhood_Sawyer|Exterior2nd_Wd Shng', 'LotConfig_CulDSac|Neighborhood_IDOTRR', 'Heating_GasA|Neighborhood_Sawyer', 'GarageCond_Po|PoolQC_Tencode', 'Neighborhood_OldTown|BsmtCond_TA', 'Exterior1st_MetalSd|Exterior2nd_AsphShn', 'BldgType_Duplex|HalfBath', 'Exterior2nd_BrkFace|SaleCondition_Partial', 'HouseStyle_SFoyer|Exterior2nd_Wd Shng', 'Neighborhood_SWISU|OverallCond', 'BsmtHalfBath|BsmtFinType1_Unf', 'GarageCond_Tencode|LotConfig_FR2', 'Neighborhood_SawyerW|SaleType_CWD', 'GarageType_BuiltIn|Exterior1st_MetalSd', 'Functional_Typ|BsmtQual_Tencode', 'BsmtFinType1_LwQ|MasVnrType_Stone', 'LotConfig_Corner|LowQualFinSF', 'BsmtFinType1_LwQ|HouseStyle_2Story', 'CentralAir_Tencode|SaleCondition_Abnorml', 'BsmtCond_Tencode|HouseStyle_1.5Fin', 'RoofStyle_Gable|MasVnrType_Stone', 'Neighborhood_OldTown|OpenPorchSF', 'PavedDrive_N|LandSlope_Sev', 'KitchenQual_TA|ExterQual_Fa', 'Foundation_Tencode|3SsnPorch', 'BsmtFinType2_Tencode|Condition1_Feedr', 'Exterior2nd_Stone|BsmtExposure_No', 'BsmtFinType2_Rec|FireplaceQu_TA', 'LandSlope_Gtl|Exterior2nd_Plywood', 'LandContour_HLS|Utilities_AllPub', 'Neighborhood_Sawyer|BsmtExposure_No', 'CentralAir_Tencode|Neighborhood_IDOTRR', 'GarageFinish_Unf|ExterQual_Tencode', 'Street_Tencode|Foundation_BrkTil', 'ExterQual_Gd|KitchenQual_Fa', 'HeatingQC_Tencode|Condition1_Tencode', 'FireplaceQu_Ex|MSZoning_RH', 'Neighborhood_ClearCr|BsmtExposure_Av', 'Fireplaces|HeatingQC_Ex', 'MiscVal|MoSold', 'BsmtQual_Ex|Street_Grvl', 'MasVnrType_None|Fence_GdWo', 'BsmtQual_TA|MSZoning_RL', 'MasVnrType_None|MasVnrType_Tencode', 'Neighborhood_NridgHt|GarageFinish_RFn', 'HouseStyle_SLvl|Exterior2nd_HdBoard', 'HeatingQC_Fa|GarageType_Basment', 'LotConfig_Corner|ExterCond_Gd', 'GarageQual_Po|BsmtCond_Po', 'BsmtFinType2_Tencode|BsmtFinType2_LwQ', 'HeatingQC_TA|LotConfig_Tencode', 'Condition1_PosA|Condition2_Tencode', 'BldgType_Duplex|Exterior1st_WdShing', 'SaleType_ConLI|Condition1_Feedr', 'Exterior1st_BrkFace|BsmtFinType1_GLQ', 'Neighborhood_Mitchel|GarageQual_Fa', 'GarageQual_Po|MasVnrType_BrkFace', 'GarageCond_Gd|Exterior2nd_HdBoard', 'Electrical_Tencode|GarageQual_TA', 'Utilities_Tencode|HouseStyle_1.5Fin', 'LandContour_Bnk|Condition2_Artery', 'GarageArea|Fence_MnPrv', 'Exterior2nd_BrkFace|BsmtFinSF2', 'Condition1_PosA|LowQualFinSF', 'LotShape_Tencode|LandContour_HLS', 'LotFrontage|KitchenQual_TA', 'Exterior1st_CemntBd|HouseStyle_1.5Fin', 'Fence_GdWo|MSZoning_RL', 'Neighborhood_SWISU|RoofStyle_Gambrel', 'LotShape_Tencode|Neighborhood_NoRidge', 'LotConfig_Corner|Functional_Maj1', 'LandContour_Lvl|Exterior1st_Wd Sdng', 'Neighborhood_Veenker|2ndFlrSF', 'KitchenQual_Ex|GarageQual_TA', 'BsmtFinSF2|BsmtFinType1_ALQ', 'GarageCond_TA|Neighborhood_NWAmes', 'Condition1_Tencode|Exterior1st_Tencode', 'YrSold|Neighborhood_SWISU', 'HeatingQC_Ex|GarageQual_TA', 'BldgType_Twnhs|Neighborhood_OldTown', 'BldgType_Tencode|RoofMatl_WdShngl', 'Foundation_Stone', 'SaleCondition_Alloca|Exterior2nd_AsphShn', 'FireplaceQu_Fa|SaleType_Oth', 'BsmtQual_Fa|MiscFeature_Shed', 'RoofMatl_CompShg|YearBuilt', 'FireplaceQu_Po|LotArea', 'Exterior2nd_MetalSd|ExterQual_Gd', 'LotArea|RoofMatl_CompShg', 'GarageType_Detchd|SaleType_WD', 'Exterior2nd_MetalSd|MoSold', 'TotRmsAbvGrd|GarageCond_Fa', 'Neighborhood_BrDale|Functional_Mod', 'YrSold|SaleType_COD', 'LotShape_IR1|LotArea', 'SaleType_ConLI|Exterior1st_Wd Sdng', 'BldgType_Duplex|BsmtHalfBath', 'BsmtFinType1_BLQ|MasVnrType_Tencode', 'Neighborhood_SWISU|ExterCond_Fa', 'HouseStyle_2.5Unf|MiscFeature_Gar2', 'SaleCondition_Family|KitchenQual_Tencode', 'BsmtFinType1_Rec|BsmtFinType1_GLQ', 'Street_Tencode|MiscFeature_Tencode', 'SaleCondition_Alloca|PavedDrive_P', 'Functional_Mod|Neighborhood_Gilbert', 'Neighborhood_NPkVill|MSZoning_FV', 'BsmtFullBath|Condition2_Artery', 'PavedDrive_N|2ndFlrSF', 'SaleCondition_Family|RoofStyle_Tencode', 'GarageType_Attchd|HouseStyle_2Story', 'Functional_Tencode|Condition2_Artery', 'Heating_Tencode|Electrical_FuseF', 'Exterior2nd_BrkFace|SaleType_New', 'SaleType_WD|BsmtFinType2_Rec', 'BsmtHalfBath|Neighborhood_Veenker', 'Alley_Pave|Functional_Min2', 'LotShape_IR2|BsmtFinType2_GLQ', 'Neighborhood_Mitchel|BsmtFinType2_Rec', '1stFlrSF|BsmtUnfSF', 'Heating_Grav|LandSlope_Mod', 'YearBuilt|Foundation_Tencode', 'Neighborhood_CollgCr|ExterQual_Tencode', 'Exterior2nd_VinylSd|MSZoning_FV', 'BsmtUnfSF|Exterior2nd_Brk Cmn', 'BsmtFinType2_Tencode|SaleCondition_Family', 'LandContour_Tencode|Exterior1st_Tencode', 'PavedDrive_Tencode|HouseStyle_1.5Fin', 'Condition1_Norm|ExterQual_Ex', 'FullBath|Exterior2nd_Plywood', 'GarageYrBlt|Exterior2nd_Plywood', '3SsnPorch|SaleType_COD', 'Neighborhood_Mitchel|Alley_Grvl', 'Neighborhood_Blmngtn|Exterior2nd_Brk Cmn', 'SaleType_CWD|GarageType_2Types', 'BldgType_Twnhs|MSZoning_FV', 'Alley_Tencode|RoofStyle_Tencode', 'MiscVal|FireplaceQu_TA', 'PavedDrive_N|Exterior2nd_Brk Cmn', 'GarageCond_Ex|MiscFeature_Gar2', 'BsmtHalfBath|BsmtFinType2_LwQ', 'BsmtQual_Ex|BldgType_Tencode', 'GarageType_Tencode', 'TotRmsAbvGrd|Exterior1st_WdShing', 'GarageFinish_Unf|CentralAir_Tencode', 'Exterior2nd_Stone|ExterQual_Tencode', 'LotShape_IR1|Neighborhood_Edwards', 'Exterior1st_AsbShng|Exterior1st_WdShing', 'HouseStyle_Tencode|Exterior2nd_Brk Cmn', 'Functional_Maj2|ExterQual_Fa', 'Alley_Tencode|Exterior2nd_Brk Cmn', 'BsmtFinType2_GLQ|LotConfig_CulDSac', 'GarageQual_Fa|ExterCond_Fa', 'BsmtExposure_Av|ExterQual_Tencode', 'BldgType_Twnhs|Neighborhood_SawyerW', 'BsmtFinType2_Rec|ExterCond_Fa', 'HouseStyle_SFoyer|CentralAir_Tencode', 'MasVnrType_None|MSZoning_RH', 'Neighborhood_BrDale|BsmtFinType2_Rec', 'GarageCond_Fa|GarageType_CarPort', 'GarageFinish_Unf|HouseStyle_2Story', 'LotShape_Reg|MoSold', 'ExterCond_TA|HouseStyle_SLvl', 'Exterior1st_HdBoard|ExterCond_Fa', 'GarageCond_Po|Condition1_RRAn', 'SaleType_Oth|ExterQual_Fa', 'Neighborhood_OldTown|GarageCond_Gd', 'Exterior2nd_Stone|BsmtQual_Gd', 'Exterior2nd_VinylSd|HouseStyle_SLvl', 'BsmtQual_Gd|MasVnrType_Tencode', 'SaleType_ConLD|Functional_Mod', 'SaleType_ConLw|ExterQual_Fa', 'GrLivArea|Neighborhood_Tencode', 'SaleType_Oth|GarageYrBlt', 'KitchenQual_Tencode|HouseStyle_2.5Unf', 'FullBath|RoofMatl_Tar&Grv', 'OverallQual|Exterior2nd_Stone', 'GarageFinish_Unf|Neighborhood_BrDale', 'Alley_Pave|Exterior1st_Tencode', 'KitchenQual_Tencode|GarageFinish_RFn', 'Neighborhood_NridgHt|MSZoning_RL', 'SaleType_CWD|Fence_MnWw', 'Foundation_BrkTil|Exterior1st_CemntBd', 'SaleCondition_Family|MSZoning_FV', 'KitchenQual_Tencode|Foundation_Slab', 'OpenPorchSF|Exterior1st_MetalSd', 'HeatingQC_Fa|MasVnrType_BrkCmn', 'GarageFinish_Tencode|Functional_Min1', 'Neighborhood_ClearCr|SaleType_Tencode', 'BsmtExposure_Av|HouseStyle_2.5Unf', 'BsmtFinType1_ALQ|BsmtQual_Gd', 'Electrical_FuseP|HouseStyle_2.5Unf', 'SaleCondition_Tencode|Neighborhood_Timber', 'Electrical_Tencode|Fireplaces', 'Neighborhood_Sawyer|Exterior1st_BrkComm', 'ScreenPorch|HouseStyle_1.5Fin', 'Neighborhood_Gilbert|CentralAir_Tencode', 'HouseStyle_SFoyer|HouseStyle_1.5Unf', 'Neighborhood_NridgHt|HeatingQC_TA', '1stFlrSF|LotConfig_Tencode', 'GarageFinish_Fin|Condition1_RRAe', 'BsmtFinType1_BLQ|BsmtCond_TA', 'BsmtCond_Gd|RoofMatl_WdShngl', 'BldgType_Twnhs|SaleType_ConLD', 'BsmtCond_Tencode|Condition2_Artery', 'Fireplaces|RoofStyle_Shed', 'Condition1_RRAe|MasVnrType_Tencode', 'ExterQual_Gd|Exterior2nd_AsphShn', 'GarageCond_Po|KitchenQual_Gd', 'Street_Tencode|Functional_Maj2', 'LandContour_Tencode|Exterior2nd_Plywood', 'LotShape_IR1|BsmtFinType2_GLQ', 'HouseStyle_Tencode|Neighborhood_Veenker', 'Exterior2nd_Stone|PavedDrive_Y', 'Exterior1st_HdBoard|BsmtCond_Fa', 'BldgType_Twnhs|BsmtFinType1_ALQ', 'GarageCond_Ex|RoofMatl_WdShngl', '1stFlrSF|MasVnrType_None', 'YearBuilt|SaleType_ConLD', 'GarageType_BuiltIn|ExterQual_Ex', 'Neighborhood_Blmngtn|Foundation_Tencode', 'LotShape_IR2|Neighborhood_NridgHt', 'PavedDrive_N|WoodDeckSF', 'RoofStyle_Hip|ExterQual_Ex', 'BsmtFinType2_LwQ|GarageType_CarPort', 'SaleType_ConLD|BsmtCond_Tencode', 'Exterior2nd_Tencode|GarageType_Tencode', 'Exterior1st_BrkFace|Exterior1st_CemntBd', 'SaleType_COD|SaleCondition_Abnorml', 'MSZoning_RM|LotConfig_Inside', 'SaleType_Tencode|GarageQual_TA', 'SaleType_ConLD|ScreenPorch', 'BsmtFinType1_Tencode|Neighborhood_SWISU', 'FireplaceQu_Fa|GarageType_CarPort', 'GarageFinish_Fin|HouseStyle_Tencode', 'Electrical_FuseP|ExterQual_Fa', 'BedroomAbvGr|LotConfig_CulDSac', 'Functional_Maj2|SaleType_CWD', 'Condition1_Artery|BsmtFinType1_Tencode', 'BsmtFinType1_Tencode|GarageCond_Po', 'SaleType_ConLw|ExterCond_Fa', 'RoofStyle_Hip|Exterior1st_AsbShng', 'Neighborhood_NridgHt|LotArea', 'Condition1_PosN|Foundation_CBlock', 'LandSlope_Sev|MSZoning_RL', 'SaleCondition_Family|GarageCond_Fa', 'Condition1_RRAe|MSZoning_RL', 'HouseStyle_1.5Unf|HouseStyle_1.5Fin', 'OverallQual|RoofMatl_WdShngl', 'RoofStyle_Gable|Exterior2nd_Plywood', 'PavedDrive_N|Neighborhood_SWISU', 'LotConfig_FR2|BsmtCond_TA', 'BsmtQual_TA|GarageCond_Gd', 'GarageCond_Fa|MasVnrType_Stone', 'Heating_GasA|Neighborhood_CollgCr', 'SaleCondition_Tencode|FireplaceQu_Po', 'LotArea|Foundation_CBlock', 'YrSold|Neighborhood_Gilbert', 'KitchenQual_Fa|SaleCondition_Partial', 'Condition2_Tencode|2ndFlrSF', 'BsmtFinType1_ALQ|Neighborhood_StoneBr', 'LandContour_Tencode|GarageArea', 'HeatingQC_Ex|Functional_Mod', 'LotShape_IR1|Fence_MnWw', 'LotShape_Reg|Exterior1st_Wd Sdng', 'MSZoning_C (all)|GarageFinish_RFn', 'GarageQual_Gd|Utilities_AllPub', 'KitchenQual_Tencode|BsmtUnfSF', 'Functional_Maj1|Condition1_Tencode', 'MiscFeature_Shed|MSZoning_RL', 'SaleType_Tencode|ExterCond_Fa', 'Exterior2nd_CmentBd|BsmtExposure_No', 'Condition1_Artery|LandContour_Low', 'GarageCars|Condition2_Tencode', 'Exterior2nd_Tencode|WoodDeckSF', 'MSZoning_FV|Exterior1st_WdShing', 'ExterQual_Gd|Neighborhood_BrkSide', 'RoofStyle_Flat|RoofMatl_Tar&Grv', 'LotShape_IR1|Condition2_Norm', 'GarageFinish_Unf|BsmtCond_Fa', 'Exterior1st_HdBoard|Functional_Mod', 'Fence_GdPrv|BsmtCond_Gd', 'Utilities_Tencode|BldgType_2fmCon', 'GarageFinish_Fin|KitchenQual_Fa', 'Neighborhood_CollgCr|Condition1_RRAn', 'LotShape_IR2|LotShape_Reg', 'Neighborhood_BrDale|Alley_Tencode', 'Exterior2nd_Tencode|Exterior2nd_Wd Shng', 'BsmtCond_Gd|MasVnrType_BrkFace', 'PavedDrive_N|LotShape_Reg', 'TotalBsmtSF|Exterior2nd_CmentBd', 'Alley_Tencode|ExterQual_Gd', 'Exterior2nd_Wd Sdng|MiscFeature_Gar2', 'Heating_GasA|Electrical_FuseA', 'ScreenPorch|Street_Pave', 'SaleType_ConLD|GarageQual_Po', 'Neighborhood_Veenker|LotConfig_Tencode', 'Neighborhood_Somerst|Exterior1st_Wd Sdng', 'Foundation_PConc|RoofMatl_Tar&Grv', 'FireplaceQu_Fa|Exterior2nd_Wd Sdng', 'RoofStyle_Flat|LotConfig_FR2', 'Exterior1st_Stucco|Condition1_Tencode', 'SaleCondition_Abnorml|BsmtCond_Fa', 'Exterior2nd_Stone|Foundation_PConc', 'GarageType_Attchd|MSZoning_RM', 'BsmtFinType2_ALQ|Neighborhood_NWAmes', 'FullBath|FireplaceQu_Fa', 'Neighborhood_NPkVill|Neighborhood_BrkSide', 'BsmtFinSF2|GarageType_2Types', 'Foundation_Stone|Neighborhood_NAmes', 'HeatingQC_Tencode|HalfBath', 'CentralAir_Tencode|BsmtCond_Fa', 'Neighborhood_NWAmes|MiscFeature_Shed', 'RoofMatl_Tar&Grv|Street_Pave', 'SaleType_Oth|Neighborhood_Timber', 'Heating_GasW|Exterior1st_MetalSd', 'GarageCars|3SsnPorch', 'Street_Grvl|BldgType_1Fam', 'Exterior1st_AsbShng|BsmtFinType1_ALQ', 'OverallQual|GarageCond_Tencode', 'Neighborhood_Blmngtn|BsmtFinType1_Unf', 'Exterior1st_AsbShng|HouseStyle_2Story', 'BsmtQual_Tencode|BsmtQual_Gd', 'Exterior1st_HdBoard|ExterQual_Ex', 'SaleType_ConLw|Exterior1st_MetalSd', 'Foundation_PConc|BsmtExposure_Mn', 'BldgType_TwnhsE|Street_Grvl', 'Fence_GdPrv|PavedDrive_P', 'LandContour_Low|LandContour_Tencode', 'Neighborhood_SWISU|GarageQual_Fa', '1stFlrSF|Foundation_Slab', 'Condition1_Artery|BsmtFinType2_ALQ', 'Electrical_FuseP|GarageType_CarPort', 'Neighborhood_ClearCr|Fence_GdWo', 'FireplaceQu_Gd|ExterCond_Fa', 'HouseStyle_1Story|ExterQual_Tencode', 'RoofMatl_CompShg|GarageFinish_RFn', 'BsmtFinType1_BLQ|HeatingQC_Gd', 'PoolQC_Tencode|Fence_MnPrv', 'LotConfig_CulDSac|MSZoning_FV', 'Electrical_Tencode|LotConfig_Corner', 'Neighborhood_Mitchel|LotConfig_CulDSac', 'Neighborhood_Blmngtn|RoofMatl_Tar&Grv', 'HouseStyle_Tencode|GarageCond_Gd', 'HouseStyle_SLvl|Street_Pave', 'KitchenQual_Tencode|Alley_Grvl', 'BsmtExposure_Gd|Utilities_AllPub', 'Neighborhood_Veenker|LandSlope_Gtl', 'BsmtFinType2_Tencode|GarageCars', 'BsmtHalfBath|Utilities_AllPub', 'BsmtFinType1_GLQ|Foundation_Slab', 'Exterior1st_CemntBd|BsmtExposure_Gd', 'FullBath|Foundation_CBlock', 'SaleType_ConLI|MSZoning_C (all)', 'OverallQual|SaleType_ConLD', 'Street_Tencode|PoolArea', 'ExterCond_Gd|MasVnrArea', 'HeatingQC_Gd|FireplaceQu_TA', 'PavedDrive_Tencode|Fence_GdWo', 'ExterQual_Ex|GarageType_Basment', 'BldgType_Duplex|MSZoning_C (all)', 'Electrical_FuseA|Exterior1st_BrkComm', 'LotConfig_FR2|Exterior1st_WdShing', 'Foundation_PConc|Foundation_Tencode', 'Condition1_RRAn|Street_Pave', 'Neighborhood_NridgHt|Foundation_BrkTil', 'Exterior2nd_CmentBd|Exterior1st_WdShing', 'Neighborhood_SWISU|Street_Grvl', 'SaleType_ConLI|HouseStyle_1.5Unf', 'YearBuilt|Exterior2nd_MetalSd', 'FireplaceQu_TA|Neighborhood_Timber', 'GarageFinish_Unf|BldgType_Tencode', 'Exterior2nd_AsbShng|BsmtCond_TA', 'GarageFinish_Tencode|MoSold', 'Exterior2nd_VinylSd|GarageType_BuiltIn', 'MiscFeature_Shed|Neighborhood_Timber', 'Functional_Mod|RoofStyle_Tencode', 'RoofMatl_Tencode|Functional_Min2', 'Exterior2nd_Tencode|Neighborhood_OldTown', 'GarageQual_Gd|Exterior1st_CemntBd', 'Foundation_Tencode|MasVnrType_Tencode', 'BsmtCond_TA|Exterior1st_Wd Sdng', 'KitchenQual_Tencode|Street_Grvl', 'Heating_GasW|ExterCond_Fa', 'Functional_Typ|Neighborhood_OldTown', 'LotFrontage|Functional_Maj1', 'KitchenQual_Ex|Exterior2nd_AsphShn', 'PavedDrive_Y|BsmtExposure_Av', 'GarageQual_Po|Fence_MnPrv', 'GarageFinish_Unf|BsmtFinType2_ALQ', 'Neighborhood_Mitchel|ExterCond_Fa', 'GarageType_Attchd|CentralAir_Y', 'Fireplaces|OverallCond', 'HeatingQC_Ex|BsmtFinType1_GLQ', 'Neighborhood_OldTown|Exterior2nd_VinylSd', 'MiscFeature_Gar2|Functional_Min2', 'BsmtFinType1_Unf|ExterCond_Fa', 'Foundation_CBlock|Neighborhood_SawyerW', 'SaleCondition_Tencode|Neighborhood_NWAmes', 'SaleType_Tencode|Condition2_Artery', 'KitchenQual_Ex|MiscFeature_Shed', 'FireplaceQu_Tencode|MSSubClass', 'Exterior2nd_Wd Sdng|MasVnrType_Tencode', 'LotConfig_FR2|Neighborhood_Gilbert', 'BsmtFinSF2|Neighborhood_Sawyer', 'Neighborhood_NAmes|MiscFeature_Tencode', 'RoofStyle_Gable|Neighborhood_SawyerW', 'LotShape_IR2|ExterQual_Ex', 'GarageFinish_Fin|SaleType_ConLI', 'HeatingQC_Ex|ExterQual_Fa', 'GarageFinish_Fin|ExterCond_Fa', 'BsmtFinSF1|BsmtFinType1_GLQ', 'BsmtFinType1_Tencode|Exterior2nd_VinylSd', 'FireplaceQu_Po', 'BedroomAbvGr|OpenPorchSF', 'RoofMatl_CompShg|Exterior1st_MetalSd', 'Neighborhood_Gilbert|SaleCondition_Abnorml', 'BsmtFinType1_Tencode|Neighborhood_BrkSide', 'LandSlope_Tencode|MasVnrArea', 'GarageFinish_Unf|BsmtFinType2_Tencode', 'SaleType_WD|OverallCond', 'Electrical_Tencode|RoofStyle_Gambrel', 'Electrical_Tencode|RoofMatl_CompShg', 'RoofStyle_Tencode|SaleType_Oth', 'Heating_GasA|SaleCondition_Abnorml', 'SaleCondition_Alloca|MasVnrArea', 'Neighborhood_Somerst|Alley_Tencode', 'BsmtFinType1_ALQ|SaleType_WD', 'FullBath|LowQualFinSF', 'Neighborhood_NWAmes|FireplaceQu_TA', 'FireplaceQu_Po|TotRmsAbvGrd', 'HeatingQC_Tencode|RoofMatl_WdShngl', 'HouseStyle_1.5Unf|GarageCond_Gd', 'Utilities_Tencode|GarageFinish_Unf', 'MiscFeature_Othr|HouseStyle_1.5Unf', 'GarageFinish_Unf|Neighborhood_NridgHt', 'Neighborhood_NridgHt|GarageType_Attchd', 'Utilities_AllPub', 'LandContour_Low|Neighborhood_Edwards', 'MSSubClass|MasVnrType_BrkFace', 'LandSlope_Sev|GarageCond_Fa', 'Neighborhood_Blmngtn|LotFrontage', 'RoofStyle_Flat|RoofStyle_Gambrel', 'Neighborhood_Tencode|Exterior2nd_Plywood', 'Neighborhood_Mitchel|HouseStyle_1.5Unf', 'Exterior1st_AsbShng|PavedDrive_Y', 'Neighborhood_Mitchel|KitchenQual_Fa', 'BsmtFinType1_ALQ|MSSubClass', 'BsmtQual_TA|MSZoning_FV', 'KitchenAbvGr|Exterior1st_MetalSd', 'BsmtQual_Fa|BsmtUnfSF', 'SaleCondition_Tencode|Neighborhood_ClearCr', 'LotShape_IR1|HouseStyle_Tencode', 'Functional_Maj1|CentralAir_Y', 'PavedDrive_N|SaleType_WD', 'Street_Grvl|Neighborhood_Gilbert', 'Electrical_FuseA|SaleCondition_Normal', 'LotShape_Tencode|Exterior1st_BrkComm', 'LotFrontage|Neighborhood_Veenker', 'HeatingQC_TA|Heating_Grav', 'BsmtFinType2_LwQ|MSZoning_Tencode', 'GarageType_Tencode|BsmtExposure_Gd', 'HeatingQC_Tencode|WoodDeckSF', 'BsmtFinType1_Tencode|Exterior1st_WdShing', 'Exterior2nd_MetalSd|SaleType_New', 'SaleType_ConLD|Neighborhood_SawyerW', 'GarageCars|WoodDeckSF', 'Neighborhood_OldTown|MSZoning_Tencode', 'RoofStyle_Hip|Foundation_PConc', 'BsmtExposure_Gd|GarageYrBlt', 'Neighborhood_Mitchel|MSZoning_RL', 'GarageCars|Electrical_FuseA', 'GarageCond_TA|MiscVal', 'MasVnrType_BrkCmn|Fence_MnPrv', 'BsmtFinType1_BLQ|Electrical_SBrkr', 'FullBath|CentralAir_N', 'Neighborhood_StoneBr|MSZoning_FV', 'BsmtFinType1_ALQ|Fence_MnWw', 'YrSold|SaleCondition_Alloca', 'Condition2_Tencode|BsmtExposure_Gd', 'FireplaceQu_Po|Utilities_AllPub', 'ExterCond_TA|Electrical_FuseA', 'YrSold|KitchenQual_TA', 'Neighborhood_Tencode|1stFlrSF', 'SaleType_Oth|Exterior1st_Tencode', 'BsmtFinType1_GLQ|WoodDeckSF', 'Fence_Tencode|KitchenQual_Ex', 'Neighborhood_Somerst|GarageType_BuiltIn', 'LotFrontage|Exterior2nd_BrkFace', 'GarageCond_Fa', 'YearBuilt|Neighborhood_MeadowV', 'RoofStyle_Gable|Condition2_Artery', 'PavedDrive_Tencode|SaleCondition_Normal', 'GarageType_Detchd|LotConfig_FR2', 'GarageFinish_Fin|Fence_MnWw', 'GarageFinish_Fin|Functional_Min2', 'HeatingQC_Gd|BsmtCond_TA', 'BldgType_2fmCon|LotConfig_Inside', 'Functional_Tencode|Condition1_RRAn', 'Street_Tencode|BsmtFinType1_LwQ', 'PavedDrive_Y|Condition1_PosN', 'SaleCondition_Normal|Functional_Mod', 'ExterCond_Tencode|ExterQual_Ex', 'SaleType_ConLI|RoofStyle_Gambrel', 'SaleType_New|MasVnrType_Tencode', 'Condition1_Tencode|KitchenQual_TA', 'Condition1_PosN', 'Electrical_FuseP|RoofMatl_WdShngl', 'LandSlope_Gtl|MSZoning_RL', 'HouseStyle_1.5Unf|CentralAir_Y', 'BsmtFinSF2|RoofMatl_Tar&Grv', 'Alley_Pave|LowQualFinSF', 'HeatingQC_Gd|MasVnrType_BrkCmn', 'Exterior2nd_AsbShng|Condition1_RRAe', 'GarageType_CarPort|Exterior2nd_Wd Sdng', 'SaleType_ConLw|LotArea', 'Condition1_Artery|Neighborhood_Crawfor', 'KitchenQual_Gd|HouseStyle_2.5Unf', 'GarageType_Detchd|EnclosedPorch', 'KitchenAbvGr|LotArea', 'GarageType_Detchd|MoSold', 'LandSlope_Tencode|Exterior2nd_HdBoard', 'FireplaceQu_Po|MasVnrType_BrkFace', 'LandContour_Lvl|BsmtCond_Tencode', 'Neighborhood_Blmngtn|SaleCondition_Partial', 'LotConfig_Corner|BsmtQual_Gd', 'MSZoning_RH|WoodDeckSF', 'Neighborhood_Crawfor|Exterior2nd_Plywood', 'GarageType_Tencode|HouseStyle_2Story', 'HeatingQC_TA|Exterior2nd_HdBoard', 'PavedDrive_N|RoofStyle_Flat', 'GarageArea|Exterior1st_Plywood', 'HouseStyle_Tencode|BsmtFinSF1', 'GrLivArea|Functional_Min1', 'Exterior1st_BrkFace|HouseStyle_2Story', 'BsmtQual_Ex|MSZoning_Tencode', 'BsmtHalfBath|KitchenQual_Fa', 'HouseStyle_1.5Unf|FireplaceQu_Ex', 'BldgType_Duplex|BsmtFinType1_Tencode', 'BsmtCond_Fa', 'FullBath|BsmtFinType2_Unf', 'GarageCond_TA|Neighborhood_IDOTRR', 'Fence_GdPrv|MiscFeature_Gar2', 'GarageFinish_Unf|BsmtHalfBath', 'Exterior1st_HdBoard|Neighborhood_Veenker', 'Functional_Mod|CentralAir_Tencode', 'MiscVal|BsmtCond_Tencode', 'LotShape_Reg|Exterior2nd_Wd Shng', 'GarageCond_Po|BsmtFinType2_GLQ', 'GarageType_CarPort|HouseStyle_2Story', 'HouseStyle_Tencode|GarageType_Basment', 'EnclosedPorch|LandContour_Bnk', 'BsmtFinType2_Rec|Exterior2nd_Wd Sdng', 'Exterior1st_Stucco|BldgType_1Fam', 'HeatingQC_Gd|SaleType_ConLD', 'GarageQual_Gd|MasVnrType_Stone', 'SaleCondition_Tencode|ExterCond_Tencode', 'LotShape_Reg|MasVnrType_BrkCmn', 'PoolQC_Tencode|Electrical_FuseF', 'Condition1_PosN|Exterior2nd_HdBoard', 'PavedDrive_Tencode|MSZoning_C (all)', 'SaleType_WD|BsmtFinSF1', 'OpenPorchSF|BldgType_TwnhsE', 'Neighborhood_NridgHt|BldgType_Twnhs', 'Utilities_Tencode|FireplaceQu_Fa', 'MasVnrType_Stone|Neighborhood_MeadowV', 'Neighborhood_NPkVill', 'Street_Tencode|Exterior1st_MetalSd', 'SaleCondition_Tencode|TotalBsmtSF', 'SaleCondition_Tencode|Exterior1st_VinylSd', 'KitchenQual_Tencode|Electrical_FuseF', 'SaleCondition_Normal|GarageType_CarPort', 'SaleCondition_Tencode|GrLivArea', 'Neighborhood_NridgHt|MasVnrType_Tencode', '2ndFlrSF|Neighborhood_IDOTRR', 'RoofStyle_Flat|RoofMatl_WdShngl', 'OverallQual|LandSlope_Tencode', 'Neighborhood_BrDale|TotRmsAbvGrd', 'Exterior1st_Stucco|3SsnPorch', 'Exterior2nd_AsbShng|Neighborhood_MeadowV', 'BsmtUnfSF|Foundation_Slab', 'Neighborhood_ClearCr|Street_Grvl', 'RoofMatl_CompShg|MoSold', 'Neighborhood_IDOTRR|Exterior2nd_AsphShn', 'Condition1_PosA|Functional_Min1', 'BsmtExposure_Av|Exterior2nd_Wd Sdng', 'Exterior2nd_Brk Cmn|Neighborhood_Timber', 'TotalBsmtSF|LotConfig_FR2', 'BsmtFinType2_ALQ|SaleType_WD', 'Foundation_CBlock|KitchenQual_TA', 'BldgType_Twnhs|Neighborhood_CollgCr', 'Heating_GasW|MasVnrType_Tencode', 'RoofStyle_Tencode|BsmtCond_Gd', 'Heating_Grav|RoofStyle_Tencode', 'Alley_Pave|FireplaceQu_Fa', 'Functional_Mod|BsmtExposure_Gd', 'Heating_Grav|GarageCond_Ex', 'Electrical_Tencode|PavedDrive_P', 'KitchenQual_Fa|MasVnrType_Tencode', 'FireplaceQu_Ex|BsmtFinType2_Unf', 'Exterior2nd_Stone|Fence_GdPrv', 'Functional_Mod|BsmtFinSF1', 'Neighborhood_NAmes|BsmtCond_Po', 'GarageArea|MiscFeature_Gar2', 'LowQualFinSF|2ndFlrSF', 'KitchenQual_Gd|Exterior1st_Plywood', 'Neighborhood_Crawfor|Exterior1st_Wd Sdng', 'MiscFeature_Tencode|Exterior1st_Tencode', 'Electrical_FuseA|RoofStyle_Tencode', 'FireplaceQu_Po|HouseStyle_2Story', 'BsmtFinType2_LwQ|BsmtFinType1_GLQ', 'GarageCond_Gd|Fence_GdWo', 'BsmtExposure_Gd|Exterior2nd_AsphShn', 'BsmtUnfSF|Exterior1st_VinylSd', 'Exterior2nd_Stucco|MasVnrType_Tencode', 'LowQualFinSF|OverallCond', 'Electrical_SBrkr|BsmtFinType1_GLQ', 'Fence_GdWo|HouseStyle_SLvl', 'Exterior2nd_Brk Cmn|SaleType_CWD', 'Foundation_PConc|Condition2_Norm', 'BedroomAbvGr|BsmtCond_Po', 'Fence_Tencode|BsmtFinType1_GLQ', 'Electrical_FuseA|RoofMatl_Tar&Grv', 'LotConfig_Corner|Neighborhood_NoRidge', 'GarageCars|MSZoning_RL', 'Exterior1st_BrkComm|Exterior2nd_HdBoard', 'Exterior2nd_CmentBd|Exterior2nd_HdBoard', 'HouseStyle_SFoyer|SaleType_ConLw', 'HeatingQC_Fa|KitchenQual_Fa', 'BedroomAbvGr|RoofStyle_Shed', 'LotArea|GarageType_BuiltIn', 'PoolQC_Tencode|SaleType_CWD', 'Heating_GasW|Neighborhood_Veenker', 'Electrical_SBrkr|GarageQual_TA', 'BsmtFullBath|GarageQual_Po', 'GarageQual_Fa|Neighborhood_StoneBr', 'Utilities_Tencode|Exterior1st_HdBoard', 'Functional_Maj2|MoSold', 'LandContour_Tencode|MoSold', 'ExterQual_TA|ExterCond_Fa', 'MiscFeature_Othr|Fence_GdWo', 'RoofStyle_Tencode|BsmtFinType1_Unf', 'GarageQual_Gd|RoofMatl_CompShg', 'PavedDrive_Tencode|GarageFinish_Tencode', 'BsmtFinType2_Tencode|WoodDeckSF', 'TotalBsmtSF|Neighborhood_Crawfor', 'Neighborhood_Tencode|BsmtQual_Ex', 'BldgType_Tencode|HouseStyle_1.5Fin', 'LandContour_Lvl|MSZoning_RM', 'GarageCars|BsmtFinType1_ALQ', 'Utilities_Tencode|OverallCond', 'Exterior1st_AsbShng|HouseStyle_2.5Unf', 'Fence_GdPrv|KitchenQual_Fa', 'HouseStyle_1Story|BsmtCond_TA', 'SaleCondition_Alloca|GarageFinish_Tencode', 'HeatingQC_Fa|BsmtCond_Fa', 'RoofStyle_Flat|MoSold', 'RoofStyle_Flat|MiscFeature_Othr', 'PavedDrive_Y|ExterCond_Gd', 'Street_Tencode|SaleType_Tencode', 'Exterior2nd_AsphShn', 'Electrical_FuseP|BsmtExposure_Mn', 'PavedDrive_Y|MoSold', 'PavedDrive_P|ScreenPorch', 'LandSlope_Sev|SaleType_WD', 'Foundation_BrkTil|Foundation_Tencode', 'BsmtCond_Tencode|Exterior1st_BrkComm', 'FireplaceQu_Tencode|Exterior1st_VinylSd', 'HouseStyle_1.5Unf|Neighborhood_Gilbert', 'LandContour_Bnk|KitchenQual_Fa', 'Neighborhood_Edwards|Condition1_RRAn', 'Exterior2nd_MetalSd|Neighborhood_Timber', 'LotShape_Tencode|Exterior2nd_HdBoard', 'BsmtFinType1_Rec|GarageQual_Po', 'GarageFinish_Fin|GarageFinish_Tencode', 'HeatingQC_Gd|Functional_Min2', 'GarageCars|Exterior1st_MetalSd', 'GarageQual_Gd|SaleType_CWD', 'BldgType_TwnhsE|BsmtFinType1_Unf', 'Exterior2nd_BrkFace|Neighborhood_NoRidge', 'PoolQC_Tencode|Exterior2nd_HdBoard', 'MasVnrType_BrkCmn|MiscFeature_Shed', 'GarageCond_TA|RoofMatl_WdShngl', 'KitchenQual_Tencode|Condition1_RRAn', 'ExterQual_Gd|MSZoning_RH', 'Neighborhood_Somerst|Fence_Tencode', 'Exterior2nd_VinylSd|Foundation_CBlock', 'MiscFeature_Gar2|Neighborhood_Timber', 'Exterior1st_BrkComm|BsmtFinType1_GLQ', 'LotFrontage|Exterior1st_Tencode', 'GarageFinish_RFn|Utilities_AllPub', 'GarageType_BuiltIn|PavedDrive_P', 'BldgType_Duplex|BsmtCond_Gd', 'BsmtExposure_Tencode|HouseStyle_SFoyer', 'KitchenQual_Ex|MSZoning_C (all)', 'MiscFeature_Tencode|Alley_Grvl', 'LandSlope_Sev|SaleType_ConLI', 'Exterior2nd_Stone|Fence_MnWw', 'RoofStyle_Shed|HouseStyle_1.5Fin', 'LandSlope_Tencode|RoofMatl_WdShngl', 'HouseStyle_SFoyer|Electrical_FuseP', 'Exterior2nd_CmentBd|ExterQual_Fa', 'Neighborhood_Crawfor|BsmtQual_Gd', 'GarageYrBlt|ExterQual_Fa', 'Condition1_Feedr|Foundation_Slab', 'TotalBsmtSF|ExterCond_Fa', 'GarageQual_TA|GarageType_BuiltIn', 'TotalBsmtSF|GarageQual_Fa', 'Neighborhood_NoRidge|Neighborhood_SWISU', 'Neighborhood_Somerst|Neighborhood_BrkSide', 'BldgType_2fmCon|BsmtFinType1_Rec', 'RoofMatl_Tar&Grv|SaleType_Oth', 'MiscVal|BedroomAbvGr', 'RoofMatl_Tencode|Heating_Grav', 'ExterQual_TA|Condition2_Tencode', 'Exterior1st_AsbShng|Heating_GasW', 'PavedDrive_P|MasVnrArea', 'Exterior2nd_MetalSd|Neighborhood_IDOTRR', 'BsmtFinType2_GLQ|Condition1_RRAe', 'Exterior2nd_VinylSd|Condition2_Norm', 'Condition1_Norm|MSZoning_FV', 'Neighborhood_Sawyer|Exterior2nd_Brk Cmn', 'RoofStyle_Gambrel|MasVnrType_BrkCmn', 'ExterQual_TA|LotFrontage', 'LotShape_IR1|LotShape_IR3', 'GarageType_Tencode|GarageQual_Tencode', 'BsmtQual_TA|GarageQual_TA', 'Exterior1st_WdShing|Exterior2nd_Plywood', 'Neighborhood_Mitchel|Exterior2nd_HdBoard', 'LandContour_Low|WoodDeckSF', 'Alley_Pave|BsmtFinType2_ALQ', 'GrLivArea|BedroomAbvGr', 'Heating_GasW|BldgType_1Fam', 'BsmtQual_TA|FireplaceQu_Fa', 'SaleType_ConLw|BsmtQual_TA', 'MiscVal|Condition2_Tencode', 'SaleCondition_Tencode|BsmtFinType1_BLQ', 'GarageCond_TA|LandSlope_Gtl', 'TotalBsmtSF|GarageFinish_Fin', 'Exterior2nd_AsbShng|RoofStyle_Tencode', 'Condition1_PosN|MasVnrType_BrkFace', 'FireplaceQu_Gd|BsmtHalfBath', 'RoofStyle_Flat|KitchenQual_Tencode', 'GarageCars|BsmtExposure_No', 'Condition1_Artery|SaleType_CWD', 'HeatingQC_Ex|BsmtFinSF1', 'Utilities_Tencode|BsmtQual_TA', 'GrLivArea|FireplaceQu_TA', 'GarageType_Detchd|Fence_Tencode', 'GarageCond_Po|Fence_Tencode', 'GarageCond_TA|BldgType_Twnhs', 'Neighborhood_NPkVill|OpenPorchSF', 'PoolQC_Tencode|PavedDrive_Tencode', 'Condition1_RRAe|Neighborhood_Crawfor', 'BsmtFinType1_Tencode|FireplaceQu_Gd', 'Neighborhood_NPkVill|SaleType_ConLI', 'Functional_Maj2|KitchenQual_TA', 'FireplaceQu_Tencode|HouseStyle_1.5Unf', 'BsmtFinType2_ALQ|BsmtQual_Ex', 'Neighborhood_Tencode|KitchenQual_Tencode', 'BsmtFinSF2|RoofMatl_WdShngl', 'GarageCond_Ex|Exterior1st_WdShing', 'BldgType_2fmCon|LotConfig_Corner', 'Utilities_Tencode|Condition2_Tencode', 'Heating_Tencode|Neighborhood_StoneBr', 'Condition1_Artery|Neighborhood_MeadowV', 'FireplaceQu_Po|ExterQual_Fa', 'HouseStyle_1.5Unf|GarageQual_Po', 'GarageCond_Tencode|SaleType_ConLD', 'KitchenAbvGr|Neighborhood_BrkSide', 'RoofMatl_Tencode', 'LandSlope_Tencode|MSZoning_RM', '2ndFlrSF|MasVnrType_Stone', 'RoofStyle_Hip|YearRemodAdd', 'HeatingQC_TA|BsmtFinType2_GLQ', 'BsmtQual_Fa|BldgType_Tencode', 'Condition1_Artery|SaleType_COD', 'Functional_Mod|ExterQual_Tencode', 'MiscFeature_Othr|GarageFinish_RFn', 'Neighborhood_Blmngtn|LandContour_HLS', 'MasVnrArea|MasVnrType_Tencode', 'RoofMatl_Tencode|GarageCond_Fa', 'LandContour_Low|BsmtFinType1_Tencode', 'Condition1_PosN|MSZoning_FV', 'MSZoning_RM|HouseStyle_SLvl', 'ExterCond_Gd|KitchenQual_TA', 'Heating_Tencode|1stFlrSF', 'Foundation_PConc|LotShape_Reg', 'GarageQual_Tencode|MSZoning_Tencode', 'HeatingQC_TA|Condition2_Artery', 'ExterCond_Gd|Exterior1st_Wd Sdng', 'Exterior2nd_Stone|BldgType_TwnhsE', 'Neighborhood_NridgHt|MasVnrArea', 'RoofStyle_Tencode|KitchenQual_TA', 'HouseStyle_Tencode|BsmtFinType2_BLQ', 'LotConfig_FR2|SaleCondition_Family', 'Exterior2nd_Wd Sdng|ExterQual_Tencode', 'GarageFinish_Unf|BsmtQual_Ex', 'OpenPorchSF|MSZoning_RH', 'Neighborhood_Tencode|HouseStyle_SLvl', 'SaleType_Tencode|MasVnrType_Tencode', 'MiscFeature_Othr|BsmtExposure_Mn', 'FireplaceQu_Gd|Exterior2nd_Wd Sdng', 'HouseStyle_1Story|ExterQual_Gd', 'LotConfig_FR2|GarageType_Basment', 'Condition1_PosA|GarageYrBlt', 'Neighborhood_ClearCr|SaleCondition_Alloca', 'GarageCond_Gd|PavedDrive_P', 'BsmtFinType1_BLQ|Heating_Grav', 'Exterior2nd_Stone|Neighborhood_NPkVill', 'Electrical_SBrkr|GarageCond_Gd', 'BldgType_2fmCon|HouseStyle_SFoyer', 'Exterior2nd_Tencode|Functional_Min1', 'GrLivArea|Functional_Maj1', 'ExterQual_TA|BsmtExposure_No', 'HouseStyle_1Story|MiscFeature_Tencode', 'GarageFinish_Unf|Neighborhood_StoneBr', 'Alley_Pave|ExterQual_Ex', 'Functional_Tencode|Fence_MnPrv', 'MiscFeature_Othr|Neighborhood_IDOTRR', 'Exterior2nd_AsbShng|BsmtQual_Fa', 'SaleType_ConLw|MasVnrType_None', 'Neighborhood_NridgHt|MiscFeature_Gar2', 'MoSold|GarageType_CarPort', 'BldgType_Duplex|Neighborhood_OldTown', 'BsmtQual_Ex|Neighborhood_Sawyer', 'BsmtQual_Fa|GarageQual_Po', 'CentralAir_N|HouseStyle_SLvl', 'CentralAir_N|Street_Pave', 'LandSlope_Sev|Condition1_RRAn', 'HeatingQC_Tencode|BldgType_TwnhsE', 'RoofMatl_Tencode|FireplaceQu_Gd', 'HeatingQC_Fa|MiscFeature_Shed', 'MiscVal|Functional_Min1', 'LotShape_IR2|GarageType_2Types', 'BsmtFinType1_ALQ|MSZoning_FV', 'BsmtQual_Ex|KitchenQual_Fa', 'Heating_GasW|Neighborhood_MeadowV', 'Functional_Tencode|GarageType_CarPort', 'YearRemodAdd|GrLivArea', 'BldgType_Twnhs|ExterCond_Tencode', 'LandSlope_Mod|ExterCond_Fa', 'BsmtFullBath|MoSold', 'Neighborhood_BrDale|BsmtCond_Gd', 'KitchenAbvGr|SaleCondition_Abnorml', 'Exterior2nd_AsbShng|BldgType_Twnhs', 'LandContour_Low|EnclosedPorch', 'BldgType_2fmCon|Condition2_Artery', 'Electrical_Tencode|MSSubClass', 'Electrical_FuseA|BsmtCond_Fa', 'SaleType_Tencode|SaleCondition_Partial', 'CentralAir_Tencode|Street_Pave', 'Foundation_Stone|BsmtCond_TA', 'Utilities_Tencode|ExterQual_Fa', 'RoofMatl_Tencode|RoofMatl_Tar&Grv', 'BsmtQual_Fa|WoodDeckSF', 'GarageQual_Po|ExterQual_Fa', 'RoofMatl_Tar&Grv|MSZoning_C (all)', 'HouseStyle_1Story|GarageFinish_RFn', 'GarageQual_Gd|Foundation_CBlock', 'Heating_Grav|Fence_GdPrv', 'BsmtFinType2_BLQ|Electrical_FuseF', 'Exterior2nd_CmentBd|GarageType_Attchd', 'Exterior2nd_BrkFace|MSZoning_FV', 'Neighborhood_BrDale|GarageFinish_Fin', 'BsmtFinType1_Tencode|KitchenQual_Gd', 'Neighborhood_Somerst|WoodDeckSF', 'Alley_Tencode|OpenPorchSF', 'Exterior2nd_AsbShng|RoofMatl_Tencode', 'MiscVal|BsmtFinType1_GLQ', 'MiscFeature_Othr|BsmtFinType2_LwQ', 'BsmtFinType2_Tencode|OverallCond', 'FireplaceQu_Fa|Exterior1st_Wd Sdng', 'SaleType_ConLw|Utilities_AllPub', 'Alley_Pave|FullBath', 'Utilities_Tencode|Heating_Grav', 'Exterior1st_Stucco|BsmtCond_Gd', 'GarageType_Detchd|Neighborhood_BrkSide', 'GarageType_BuiltIn|Utilities_AllPub', 'LandSlope_Tencode|HouseStyle_2Story', 'KitchenQual_Gd|MiscFeature_Tencode', 'LowQualFinSF|Condition1_Feedr', 'LotConfig_FR2|GarageQual_TA', 'Condition1_Tencode|Exterior1st_MetalSd', 'BsmtCond_Po|BldgType_1Fam', 'Exterior2nd_VinylSd|GarageQual_TA', 'MiscFeature_Shed|GarageArea', 'BsmtFinType2_GLQ|LowQualFinSF', 'Heating_Grav|BsmtCond_Tencode', 'LandContour_Low|RoofStyle_Flat', 'Exterior2nd_BrkFace|Exterior2nd_HdBoard', 'Exterior2nd_Wd Sdng', 'Foundation_PConc|Neighborhood_MeadowV', 'KitchenQual_Fa|LotConfig_Inside', 'Neighborhood_NoRidge|HouseStyle_1.5Fin', 'BsmtFinType1_Tencode|Functional_Min2', 'MiscFeature_Shed|BsmtCond_Gd', 'BldgType_2fmCon|MasVnrType_None', 'TotRmsAbvGrd|Neighborhood_Gilbert', 'Neighborhood_Blmngtn|GarageCond_Tencode', 'SaleCondition_Tencode|BsmtFinType2_Rec', 'HouseStyle_1.5Unf|MasVnrType_None', 'SaleCondition_Partial|PavedDrive_P', 'LotConfig_Corner|LotConfig_FR2', 'Exterior2nd_Stucco|ExterQual_Fa', 'GarageType_Attchd|Utilities_AllPub', 'LandSlope_Tencode|RoofMatl_Tar&Grv', 'HouseStyle_SFoyer|Neighborhood_Timber', 'Exterior1st_AsbShng|Electrical_SBrkr', 'MiscFeature_Tencode|SaleType_COD', 'LandSlope_Sev|Condition2_Norm', 'TotalBsmtSF|Neighborhood_Somerst', 'Neighborhood_BrDale|OverallCond', '3SsnPorch|BsmtFinSF1', 'GarageFinish_Tencode|MiscFeature_Gar2', 'LandContour_Tencode|Fence_MnPrv', 'Neighborhood_Veenker|BsmtQual_TA', 'Exterior1st_AsbShng|Alley_Grvl', 'Neighborhood_Mitchel|GarageYrBlt', 'BedroomAbvGr|Condition1_RRAn', 'GarageCond_Po|RoofMatl_Tar&Grv', 'TotalBsmtSF|BsmtExposure_Mn', 'RoofStyle_Flat|BsmtFullBath', 'Functional_Maj1|BsmtExposure_Gd', 'BsmtFinType2_Tencode|ExterCond_Gd', 'LotConfig_CulDSac|GarageType_CarPort', 'Neighborhood_ClearCr|Condition1_Norm', 'LotConfig_CulDSac|GarageType_2Types', 'FireplaceQu_TA|ExterQual_Fa', 'GarageCond_Po|BldgType_2fmCon', 'MasVnrType_BrkCmn|GarageQual_Po', 'HouseStyle_SFoyer|Exterior2nd_VinylSd', 'HeatingQC_Fa|BldgType_TwnhsE', 'BldgType_Duplex|MasVnrType_Stone', 'Alley_Tencode|CentralAir_Y', 'BsmtFinType1_Rec|PavedDrive_P', 'Neighborhood_CollgCr|Street_Pave', 'BsmtExposure_No|Exterior2nd_AsphShn', 'LotShape_Tencode|GrLivArea', 'GarageQual_Gd|Neighborhood_StoneBr', 'LotArea|Neighborhood_IDOTRR', 'BldgType_2fmCon|BsmtCond_Po', 'RoofStyle_Hip|Condition1_PosN', 'MoSold|MasVnrType_BrkCmn', 'Exterior2nd_HdBoard|ExterCond_Fa', 'LotFrontage|Condition1_PosN', 'Neighborhood_NWAmes|ExterQual_Fa', 'Utilities_Tencode|BsmtCond_Po', 'Neighborhood_SWISU|MiscFeature_Gar2', 'Neighborhood_ClearCr|PoolArea', 'TotalBsmtSF|MiscFeature_Othr', 'MasVnrType_None|BldgType_Tencode', 'SaleCondition_Family|Alley_Grvl', 'Exterior1st_CemntBd|BsmtCond_Fa', 'LotArea|BldgType_Tencode', 'Exterior1st_BrkFace|BsmtCond_Fa', 'Functional_Maj1|BsmtFinType1_LwQ', 'GarageFinish_Unf|Alley_Tencode', 'GarageQual_TA|Foundation_Slab', 'BsmtFinType2_BLQ|Alley_Grvl', 'Alley_Tencode|Exterior2nd_MetalSd', 'Foundation_PConc|Exterior2nd_HdBoard', 'RoofStyle_Shed|ExterQual_Ex', 'GarageQual_Fa|PavedDrive_P', 'Foundation_CBlock|Utilities_AllPub', 'PavedDrive_Tencode|SaleCondition_Abnorml', 'RoofStyle_Hip|Functional_Min2', 'BsmtFinType2_ALQ|SaleType_CWD', 'GarageCond_Tencode|Condition2_Norm', 'GarageFinish_Fin|HalfBath', 'Neighborhood_Edwards|ScreenPorch', 'BsmtFinType2_LwQ|ExterQual_Gd', 'Exterior1st_Stucco|BsmtQual_Ex', 'LandContour_Low|RoofMatl_WdShngl', 'HeatingQC_Gd|BsmtFinType2_LwQ', 'GarageQual_Tencode|MasVnrType_Stone', 'BsmtFinType2_ALQ|Functional_Maj2', 'Foundation_BrkTil|3SsnPorch', 'LotShape_Tencode|FullBath', 'Exterior2nd_VinylSd|LowQualFinSF', 'GarageType_CarPort|PoolArea', 'LandContour_Tencode|MSZoning_RH', 'FireplaceQu_Po|BsmtFinSF2', 'BsmtQual_Tencode|HeatingQC_Ex', 'Neighborhood_SWISU|Fence_MnPrv', 'WoodDeckSF', 'RoofStyle_Hip|BsmtCond_Gd', 'TotalBsmtSF|Exterior2nd_Wd Sdng', 'HeatingQC_TA|MasVnrType_Stone', 'Alley_Pave|BsmtFinType1_BLQ', 'Fireplaces|BsmtFinType1_ALQ', 'Foundation_Tencode|Fence_GdPrv', 'Electrical_FuseP|YearBuilt', 'PavedDrive_Y|MasVnrType_Stone', 'SaleType_WD|RoofStyle_Tencode', 'LotShape_IR2|GarageFinish_Fin', 'Condition2_Tencode|PoolArea', 'Neighborhood_Tencode|CentralAir_Tencode', 'Neighborhood_StoneBr|Exterior1st_BrkComm', 'OverallQual|HouseStyle_1Story', 'CentralAir_N|SaleType_CWD', 'OverallQual|YearBuilt', 'TotalBsmtSF|GarageCond_Gd', 'Exterior2nd_Tencode|GarageQual_Tencode', 'SaleType_Tencode|MSZoning_RM', 'BsmtCond_Tencode|Neighborhood_Crawfor', 'Electrical_FuseF|MasVnrArea', 'SaleType_ConLI|HouseStyle_2Story', 'BsmtUnfSF|Neighborhood_Crawfor', 'Foundation_Tencode|BsmtQual_Gd', 'Neighborhood_Tencode|GarageType_Tencode', 'OpenPorchSF|BsmtFinType1_Unf', 'Foundation_Stone|Foundation_CBlock', 'FireplaceQu_Po|BsmtFullBath', 'Neighborhood_ClearCr|Utilities_AllPub', 'GarageArea|MasVnrType_Stone', 'MiscVal|2ndFlrSF', 'BsmtFinType2_GLQ|Fence_Tencode', 'Functional_Min2|Utilities_AllPub', 'LandSlope_Gtl|Utilities_AllPub', 'SaleCondition_Normal', 'Neighborhood_NPkVill|Condition2_Tencode', 'Neighborhood_Mitchel|Neighborhood_Timber', 'Neighborhood_Veenker|BsmtExposure_Mn', 'Foundation_PConc|RoofStyle_Flat', 'BedroomAbvGr|MiscFeature_Gar2', 'ExterQual_TA|MiscFeature_Shed', 'MasVnrType_None|BsmtQual_Gd', 'GarageArea|BsmtCond_Gd', 'LotFrontage|Condition1_PosA', 'KitchenAbvGr|LandContour_Low', 'BsmtQual_Ex|Condition1_RRAe', 'Neighborhood_SWISU|MSZoning_RL', 'BsmtFinType2_Unf|HouseStyle_2.5Unf', 'Neighborhood_NPkVill|MiscFeature_Othr', 'HouseStyle_Tencode|HouseStyle_1.5Unf', 'ExterQual_Ex|Exterior1st_MetalSd', 'LotShape_Reg|MiscFeature_Tencode', 'FullBath|ExterQual_Fa', 'BsmtFinType2_GLQ|LandContour_HLS', 'GarageType_Attchd|BsmtFinType1_Unf', 'LandContour_Lvl|KitchenQual_TA', 'Exterior2nd_VinylSd|Neighborhood_Veenker', 'FireplaceQu_Gd|Heating_GasA', 'Functional_Typ', 'HouseStyle_Tencode|RoofStyle_Shed', 'ExterQual_Ex|LotShape_IR3', 'HalfBath|MasVnrType_BrkCmn', 'Foundation_Tencode|BsmtCond_Po', 'Neighborhood_SawyerW|RoofMatl_WdShngl', 'GarageType_Basment|GarageQual_Tencode', 'Electrical_SBrkr|GarageType_Basment', 'Heating_GasA|MSZoning_C (all)', 'YearBuilt|BsmtCond_Po', 'FireplaceQu_Gd|GarageYrBlt', 'Exterior2nd_Stucco|Exterior1st_Tencode', 'SaleType_ConLI|BsmtFinType2_BLQ', 'Exterior2nd_Stucco|HouseStyle_1.5Unf', 'Electrical_Tencode|BsmtQual_Fa', 'Condition1_PosN|Condition1_Feedr', 'HalfBath|KitchenQual_Fa', '3SsnPorch|Exterior2nd_HdBoard', 'Neighborhood_Somerst|MSZoning_RH', 'BsmtFinSF2|CentralAir_N', 'RoofMatl_Tencode|MasVnrType_None', 'Exterior2nd_Tencode|LandContour_HLS', 'YrSold|BsmtFinType2_GLQ', 'PavedDrive_Y|KitchenQual_Tencode', 'Functional_Tencode|2ndFlrSF', 'SaleCondition_Alloca|Neighborhood_StoneBr', 'BsmtFullBath|Functional_Maj2', 'Exterior1st_CemntBd|Fence_GdWo', 'LotFrontage|HouseStyle_1.5Unf', 'OverallQual|Fence_MnWw', 'SaleCondition_Alloca|Functional_Maj1', 'Fence_Tencode|MSZoning_FV', 'LandContour_Lvl|ExterQual_Fa', 'KitchenAbvGr|SaleCondition_Family', 'Neighborhood_Tencode|BsmtCond_Po', 'MiscFeature_Shed|BsmtFinType1_Unf', 'HouseStyle_SFoyer|Exterior2nd_BrkFace', 'LotConfig_FR2|PavedDrive_P', 'FireplaceQu_Tencode|Heating_GasW', 'Heating_GasW|LowQualFinSF', 'BsmtExposure_Tencode|RoofStyle_Shed', 'PavedDrive_Y|Functional_Maj1', 'CentralAir_N|MasVnrType_BrkFace', 'FireplaceQu_Gd|Exterior1st_MetalSd', 'HouseStyle_Tencode|BedroomAbvGr', 'BsmtFinSF2|Functional_Min2', 'Heating_Grav|SaleCondition_Alloca', 'Fence_GdPrv|BsmtFinType1_Unf', 'Functional_Mod|Neighborhood_IDOTRR', 'BsmtFullBath|RoofStyle_Gable', 'Alley_Tencode|PavedDrive_Tencode', 'Exterior2nd_Tencode|FireplaceQu_Ex', 'BsmtFinType1_LwQ|FireplaceQu_TA', 'ExterCond_TA|GarageFinish_Tencode', 'SaleType_WD|FireplaceQu_Fa', 'BsmtFinType2_ALQ|Neighborhood_Timber', 'Neighborhood_Veenker|Foundation_Tencode', 'Exterior2nd_Stone|Foundation_CBlock', 'Exterior1st_BrkFace|SaleCondition_Partial', 'FullBath|MasVnrType_BrkFace', 'PavedDrive_Y|BsmtFinType1_Rec', 'GarageCond_Po|YearBuilt', 'BsmtQual_Fa|Foundation_Slab', 'FireplaceQu_Tencode|BsmtExposure_No', 'MoSold|ExterCond_Fa', 'KitchenQual_Ex|GarageQual_Fa', 'Condition1_Artery|GarageFinish_RFn', 'Heating_GasA|ExterCond_TA', 'Exterior1st_HdBoard|MasVnrArea', 'Neighborhood_ClearCr|ExterQual_Tencode', 'Neighborhood_ClearCr|Foundation_Slab', 'MasVnrType_BrkCmn|HouseStyle_2.5Unf', 'SaleType_ConLD|GarageArea', 'YrSold|Neighborhood_NoRidge', 'FireplaceQu_Ex|BldgType_TwnhsE', 'MSSubClass|Neighborhood_SawyerW', 'Foundation_Stone|Neighborhood_Tencode', 'Fence_GdWo|Exterior1st_Plywood', 'Exterior1st_HdBoard|Street_Pave', 'PavedDrive_Y|Exterior2nd_HdBoard', 'Neighborhood_SWISU|GarageType_CarPort', 'SaleCondition_Normal|MiscFeature_Gar2', 'RoofMatl_CompShg|LowQualFinSF', 'Electrical_FuseA|LotConfig_Tencode', 'LandSlope_Gtl|BsmtCond_Gd', 'LowQualFinSF|ExterCond_Fa', 'GarageFinish_Unf|SaleCondition_Normal', 'YearRemodAdd|Functional_Min2', 'SaleCondition_Partial|Condition2_Norm', 'OverallQual|BsmtQual_Ex', 'SaleCondition_Family|Condition1_PosA', 'MSZoning_RM|Fence_MnWw', 'GarageFinish_Unf|Fence_MnWw', 'Foundation_Stone|RoofMatl_Tar&Grv', 'GarageCond_TA|BsmtExposure_Gd', 'GarageCond_Tencode|Condition1_PosA', 'FireplaceQu_Tencode|BsmtFinType1_GLQ', 'Functional_Maj2|GarageFinish_Tencode', 'Functional_Tencode|LandContour_Tencode', 'LandContour_Low|Electrical_FuseA', 'Neighborhood_OldTown|SaleCondition_Normal', 'SaleType_ConLI|Functional_Min1', 'Neighborhood_Edwards|BsmtCond_Tencode', 'YrSold|SaleType_Tencode', 'LandContour_Bnk|ExterQual_Ex', 'SaleCondition_Tencode|LotShape_IR3', 'Electrical_FuseA|RoofStyle_Gable', 'ExterQual_TA|MasVnrType_Tencode', 'LandContour_Lvl|BldgType_TwnhsE', 'HouseStyle_Tencode|BsmtFinType1_Rec', 'Neighborhood_OldTown|MasVnrType_None', 'HeatingQC_Tencode|Exterior2nd_Brk Cmn', 'KitchenQual_Ex|RoofStyle_Tencode', 'KitchenAbvGr|KitchenQual_Ex', 'PavedDrive_N|TotRmsAbvGrd', 'Exterior2nd_HdBoard|MasVnrType_Stone', 'BsmtFinType1_BLQ|LowQualFinSF', 'YearBuilt|PavedDrive_Y', 'LandSlope_Sev|GarageQual_TA', 'GarageCond_Gd|GarageQual_Po', 'Fence_GdPrv|BldgType_TwnhsE', 'Foundation_BrkTil|SaleCondition_Family', 'MSZoning_Tencode|BsmtExposure_Mn', 'SaleType_WD|HouseStyle_1.5Fin', 'Exterior1st_HdBoard|MSZoning_RL', 'Alley_Pave|Functional_Typ', 'LotFrontage|Exterior2nd_Tencode', 'Neighborhood_Somerst|Neighborhood_MeadowV', 'SaleType_ConLD|TotRmsAbvGrd', 'HeatingQC_Gd|GarageCond_Fa', 'Neighborhood_Crawfor|Exterior1st_BrkComm', 'Neighborhood_Blmngtn|GarageArea', 'EnclosedPorch|Foundation_Stone', 'Functional_Tencode|SaleType_Oth', 'BsmtCond_Gd|Exterior2nd_Wd Shng', 'LandSlope_Mod|WoodDeckSF', 'BsmtFinType1_ALQ|GarageQual_Po', 'Neighborhood_NridgHt|Condition1_Feedr', 'Neighborhood_OldTown|MiscFeature_Shed', 'BsmtExposure_Av|Exterior1st_VinylSd', 'BsmtFinType2_Tencode|MiscFeature_Othr', 'PavedDrive_Y|Condition1_Norm', 'Neighborhood_NPkVill|Street_Pave', 'BsmtQual_Fa|Exterior2nd_Wd Shng', 'LandSlope_Mod|RoofMatl_CompShg', 'ExterCond_Tencode|2ndFlrSF', 'Condition1_Artery|Exterior1st_WdShing', 'Neighborhood_BrDale|Exterior1st_MetalSd', 'Fence_Tencode|BsmtFinType1_ALQ', 'Foundation_Tencode|Fence_MnWw', 'FireplaceQu_Tencode|MasVnrArea', 'Foundation_PConc|YearBuilt', 'BsmtFullBath|SaleType_COD', 'Functional_Tencode|MasVnrType_Stone', 'GarageCond_TA|Electrical_FuseP', 'HouseStyle_1Story|Fence_Tencode', 'BsmtFinSF2|HouseStyle_2.5Unf', 'BsmtFinType1_Tencode|MSZoning_Tencode', 'GarageQual_Gd|BsmtFinType2_Rec', 'FireplaceQu_Tencode|MasVnrType_BrkCmn', 'GarageFinish_Tencode|Exterior1st_MetalSd', 'Heating_Grav|Electrical_FuseA', 'BsmtUnfSF|MiscFeature_Tencode', 'BsmtHalfBath|SaleCondition_Alloca', 'Exterior2nd_VinylSd|CentralAir_Y', 'MiscFeature_Tencode|Exterior2nd_Wd Shng', 'SaleType_ConLI|CentralAir_N', 'MasVnrType_None|BldgType_TwnhsE', 'Alley_Grvl|BsmtFinType1_GLQ', 'BsmtHalfBath|Neighborhood_Sawyer', 'SaleCondition_Alloca|BsmtFinType1_Unf', 'Neighborhood_Edwards|Exterior1st_CemntBd', 'HouseStyle_1.5Unf|BsmtFinType2_LwQ', 'KitchenQual_Gd|Condition1_Tencode', 'Exterior1st_BrkFace|LandContour_Bnk', 'Neighborhood_Edwards|ExterCond_Gd', 'Neighborhood_CollgCr|GarageType_2Types', 'Exterior2nd_AsbShng|Functional_Tencode', 'LandSlope_Gtl|CentralAir_N', 'LandSlope_Tencode|Exterior1st_Plywood', 'Neighborhood_Mitchel|SaleCondition_Normal', 'MoSold|SaleCondition_Abnorml', 'ExterQual_Tencode|Fence_MnWw', 'Neighborhood_BrDale|Neighborhood_Somerst', 'Condition1_Norm|BsmtExposure_No', 'Condition2_Norm|BsmtQual_Gd', 'Foundation_Tencode|LotConfig_CulDSac', 'Functional_Tencode|KitchenQual_Tencode', 'GarageType_Detchd|LotShape_Reg', 'GarageCond_TA|Neighborhood_Timber', 'BsmtFinType1_LwQ|Condition1_RRAn', 'BldgType_TwnhsE|Neighborhood_Timber', 'SaleType_Tencode|RoofStyle_Gable', 'KitchenQual_Gd|Neighborhood_SawyerW', 'PavedDrive_N|HouseStyle_SFoyer', 'ExterQual_TA|LotConfig_Tencode', 'LotShape_IR2|GarageCond_TA', 'Heating_Grav|GarageFinish_Fin', 'Street_Tencode|ExterQual_Ex', 'PavedDrive_Y|RoofStyle_Tencode', 'KitchenAbvGr|SaleType_Tencode', 'Neighborhood_ClearCr|ExterQual_Fa', 'BsmtFinType1_ALQ|MasVnrArea', 'Neighborhood_BrDale|MasVnrType_BrkCmn', 'LotShape_Tencode|PavedDrive_Tencode', 'GarageCond_Fa|Fence_MnWw', 'BldgType_TwnhsE|GarageYrBlt', 'SaleCondition_Family|Condition2_Tencode', 'HeatingQC_Gd|BsmtExposure_Gd', 'BsmtCond_Po|SaleType_CWD', 'Exterior2nd_AsbShng|Exterior2nd_Stone', 'MSZoning_RM|ExterQual_Gd', 'LotConfig_Tencode|Neighborhood_Crawfor', 'BldgType_Twnhs|Exterior2nd_VinylSd', 'BsmtQual_Fa|SaleCondition_Abnorml', 'TotalBsmtSF|SaleType_Tencode', 'Condition1_Artery|GarageFinish_Unf', 'KitchenQual_Fa|SaleType_Oth', 'Functional_Typ|BsmtCond_Gd', 'MiscFeature_Gar2', 'GarageCars|BsmtFinType1_LwQ', 'Neighborhood_ClearCr|GarageType_2Types', 'HouseStyle_SFoyer|2ndFlrSF', 'GarageQual_Po|Neighborhood_BrkSide', 'HeatingQC_Gd|RoofMatl_WdShngl', 'Foundation_PConc|MoSold', 'GarageQual_TA|BsmtExposure_Av', 'Exterior1st_AsbShng|Functional_Maj1', 'PoolArea|HouseStyle_1.5Fin', 'SaleCondition_Normal|Exterior1st_Wd Sdng', 'LotShape_IR1|BsmtUnfSF', 'BsmtExposure_Tencode|GarageCond_Po', 'GarageCond_Fa|MiscFeature_Gar2', 'YrSold|Neighborhood_Timber', 'Neighborhood_BrDale|LandSlope_Sev', 'Functional_Maj2|Exterior2nd_MetalSd', 'OverallQual|Exterior2nd_VinylSd', 'Fence_Tencode|Exterior1st_MetalSd', 'Exterior2nd_Tencode|Functional_Maj2', 'ExterCond_TA|LotConfig_FR2', 'Neighborhood_NAmes|FireplaceQu_TA', 'BsmtFinType1_Tencode|LowQualFinSF', 'BsmtFinType1_GLQ|ExterQual_Fa', 'Heating_Grav|BldgType_TwnhsE', 'LotShape_Reg|ExterCond_Gd', 'Exterior2nd_Stucco|3SsnPorch', 'HeatingQC_Fa|SaleType_ConLD', 'Electrical_FuseP|Condition2_Artery', 'BsmtHalfBath|Fence_MnWw', 'BsmtFinType2_ALQ|GarageQual_Fa', 'GrLivArea|ScreenPorch', 'BsmtFinType2_ALQ|MSZoning_C (all)', 'Neighborhood_Edwards|HeatingQC_Tencode', 'Functional_Tencode|OverallCond', 'Electrical_FuseA|GarageType_2Types', 'LotConfig_Inside', 'Neighborhood_ClearCr|MasVnrArea', 'YearRemodAdd|LotConfig_FR2', 'Neighborhood_NPkVill|RoofStyle_Tencode', 'GarageCars|MiscVal', 'YrSold|KitchenQual_Fa', 'ExterQual_Ex|WoodDeckSF', 'SaleCondition_Family|Utilities_AllPub', 'LotShape_IR1|KitchenQual_Fa', 'Exterior1st_BrkFace|MiscFeature_Gar2', 'Functional_Tencode|BsmtFinType2_ALQ', 'RoofStyle_Flat|FireplaceQu_Po', 'GarageType_Basment|SaleCondition_Abnorml', 'RoofStyle_Gable|LowQualFinSF', 'SaleCondition_Alloca|GarageCond_Ex', 'SaleCondition_Alloca|Exterior1st_WdShing', 'Functional_Tencode|MSZoning_FV', 'LandSlope_Mod|BsmtFinType1_Rec', 'BsmtHalfBath|RoofMatl_WdShngl', 'KitchenQual_Tencode|1stFlrSF', 'OverallQual|Neighborhood_Veenker', 'Heating_GasA|Condition1_PosN', 'BsmtFinType2_GLQ|SaleCondition_Family', 'Exterior2nd_Stucco|Exterior2nd_Wd Shng', 'KitchenQual_Gd|GarageCond_Gd', 'RoofMatl_Tencode|MasVnrType_Stone', 'Neighborhood_BrDale|MSZoning_RL', 'BsmtUnfSF|Exterior1st_Plywood', 'HalfBath|RoofMatl_Tar&Grv', 'Alley_Tencode|Condition2_Tencode', 'LotShape_Reg|ExterQual_Ex', 'RoofMatl_Tar&Grv|RoofStyle_Tencode', 'GarageType_Attchd|BsmtFinType2_LwQ', 'Electrical_SBrkr|MoSold', 'MasVnrType_None|Exterior1st_BrkComm', 'LotShape_Reg|BsmtHalfBath', 'Utilities_Tencode|Neighborhood_NPkVill', 'SaleType_ConLD|Functional_Maj1', 'GarageFinish_Fin|BsmtCond_Po', 'Exterior2nd_Stone|Alley_Tencode', 'SaleType_Tencode|Condition1_PosN', 'Exterior2nd_Stucco|RoofStyle_Hip', 'Foundation_Slab|LotConfig_Inside', 'GrLivArea|Foundation_Slab', 'BsmtCond_Tencode|BldgType_Tencode', 'SaleType_WD|BsmtQual_TA', 'BsmtFinType2_BLQ|KitchenQual_Tencode', 'Condition1_Artery|BldgType_Twnhs', 'Exterior1st_VinylSd|Alley_Grvl', 'Exterior2nd_Stucco|SaleType_New', 'GarageFinish_Unf|Heating_Grav', 'HouseStyle_1.5Unf|BldgType_Tencode', 'Exterior2nd_Brk Cmn|LotConfig_Inside', 'ExterQual_TA|Condition1_Norm', 'Exterior1st_HdBoard|Functional_Maj2', 'Street_Tencode|Neighborhood_StoneBr', 'GarageFinish_Fin|HouseStyle_2.5Unf', 'GarageCars|BsmtCond_Tencode', 'GarageQual_TA|WoodDeckSF', 'ExterCond_Gd|GarageCond_Fa', 'EnclosedPorch|Condition1_Norm', 'GarageType_Tencode|MasVnrType_None', 'Neighborhood_SWISU|MSZoning_RM', 'BsmtExposure_No|Exterior2nd_Wd Shng', 'Neighborhood_Tencode|BsmtFinType1_ALQ', 'Exterior1st_WdShing|Exterior1st_Plywood', 'Condition1_Feedr|Neighborhood_Crawfor', 'Neighborhood_NAmes|BsmtFinSF1', 'Functional_Maj2|BldgType_1Fam', 'SaleType_ConLI|BsmtFinType1_Rec', 'Condition1_PosA|FireplaceQu_Ex', 'Exterior2nd_AsbShng|OverallCond', 'Fence_GdPrv|KitchenQual_Tencode', 'MasVnrType_None|Exterior1st_Plywood', 'Exterior2nd_VinylSd|BldgType_Tencode', 'Neighborhood_NoRidge|RoofMatl_WdShngl', 'YearBuilt|Condition1_Feedr', 'FireplaceQu_Tencode|Electrical_FuseF', 'Heating_Tencode|ExterQual_Fa', 'GarageType_Tencode|Foundation_Tencode', 'ExterQual_TA|Exterior2nd_BrkFace', 'LotArea|ExterCond_Fa', 'Foundation_Tencode|ExterQual_Tencode', 'LotConfig_Corner|Condition1_PosA', 'Neighborhood_BrDale|LandContour_Bnk', 'SaleCondition_Alloca|Neighborhood_IDOTRR', 'Exterior2nd_AsbShng|BsmtQual_Tencode', 'Street_Tencode|KitchenQual_Fa', 'GarageFinish_Unf|BsmtFinType1_Unf', 'Neighborhood_StoneBr|MasVnrType_None', 'SaleType_ConLI|ExterCond_Tencode', 'YearRemodAdd|Fireplaces', 'GarageCars|MSZoning_Tencode', 'Electrical_Tencode|OpenPorchSF', 'OverallQual|Neighborhood_OldTown', 'HouseStyle_SFoyer|BsmtCond_Po', 'Electrical_FuseP|LandSlope_Mod', 'GarageType_Detchd|HouseStyle_SLvl', 'MiscVal|LandContour_Tencode', 'Electrical_FuseP|TotRmsAbvGrd', 'Exterior2nd_Wd Sdng|Fence_MnWw', 'Exterior1st_BrkFace|HouseStyle_1.5Unf', 'GarageQual_Po|ExterQual_Tencode', 'FireplaceQu_Ex|Foundation_CBlock', 'Neighborhood_OldTown|LandSlope_Gtl', 'KitchenAbvGr|Exterior2nd_Stone', 'HeatingQC_Gd|Neighborhood_IDOTRR', 'RoofMatl_CompShg', 'LandContour_Lvl|SaleType_New', 'SaleCondition_Tencode|GarageType_Detchd', 'Neighborhood_Edwards|Neighborhood_Crawfor', 'GarageCond_Po|ExterCond_Fa', 'Exterior1st_BrkFace|GarageCond_Tencode', 'GarageArea|FireplaceQu_Ex', 'MiscFeature_Shed|GarageFinish_RFn', 'Alley_Tencode|SaleType_Tencode', 'MSSubClass|LotShape_IR3', 'Neighborhood_OldTown|BsmtCond_Tencode', 'GrLivArea|BsmtFinType1_LwQ', 'RoofStyle_Gable|Functional_Mod', 'GarageFinish_Tencode|Exterior1st_BrkComm', 'BsmtCond_Fa|ExterQual_Fa', 'LotConfig_Tencode|Street_Grvl', 'HeatingQC_Ex|BsmtFinType1_LwQ', 'Alley_Tencode|Neighborhood_Gilbert', 'BsmtQual_Tencode|Exterior2nd_CmentBd', 'LandContour_Low|Exterior1st_CemntBd', 'SaleType_ConLI|GarageQual_Po', 'Neighborhood_ClearCr|GarageQual_Fa', 'Exterior2nd_Stucco|MasVnrArea', 'BsmtFinType1_Tencode|HouseStyle_1.5Fin', 'LandSlope_Mod|SaleCondition_Abnorml', 'ExterQual_TA|FireplaceQu_TA', 'GarageCond_Po|Neighborhood_ClearCr', 'Fireplaces|ExterCond_Tencode', 'HouseStyle_2.5Unf|Neighborhood_BrkSide', 'YrSold|Neighborhood_OldTown', 'ExterCond_TA|MasVnrArea', 'LandSlope_Sev|BsmtFinType2_Rec', 'PavedDrive_P|Neighborhood_Gilbert', 'LandContour_HLS|BsmtQual_TA', 'Neighborhood_Veenker|SaleCondition_Normal', 'SaleCondition_Alloca|MSSubClass', 'HouseStyle_SFoyer|FullBath', 'SaleCondition_Normal|ScreenPorch', 'GarageCond_Po|BsmtCond_Tencode', 'GarageCond_Tencode|Exterior1st_BrkComm', 'GarageType_Tencode|PoolQC_Tencode', 'LotShape_Tencode|Neighborhood_MeadowV', 'GarageCond_Tencode|Neighborhood_BrkSide', 'BsmtHalfBath|GarageFinish_Tencode', 'HeatingQC_Fa|LotArea', 'LandContour_Low|RoofStyle_Gable', 'LandContour_Tencode|Exterior2nd_Brk Cmn', 'Neighborhood_Tencode|Exterior2nd_HdBoard', 'Exterior2nd_BrkFace|BsmtExposure_No', 'FireplaceQu_Gd|MiscVal', 'SaleType_ConLw|SaleCondition_Normal', 'Street_Tencode|MasVnrType_Tencode', 'Fence_GdWo|Exterior2nd_Wd Shng', 'GarageCars|Exterior1st_Tencode', 'Fireplaces|FireplaceQu_Ex', 'PavedDrive_Tencode|SaleCondition_Alloca', 'Functional_Maj1|MSZoning_RL', 'BldgType_2fmCon|FullBath', 'SaleCondition_Partial|Exterior2nd_Wd Shng', 'PavedDrive_Y|BsmtQual_Gd', 'Neighborhood_Edwards|LowQualFinSF', 'Condition2_Tencode|MasVnrType_BrkFace', 'BsmtFinType1_Tencode|LotConfig_Corner', 'GarageFinish_Fin|Neighborhood_IDOTRR', 'CentralAir_N|LotShape_IR3', 'BsmtQual_Ex|BsmtExposure_No', 'Exterior2nd_Tencode|HalfBath', 'SaleCondition_Alloca|MasVnrType_None', 'Neighborhood_NPkVill|RoofMatl_Tar&Grv', 'HeatingQC_Gd|MSZoning_RM', 'Neighborhood_NPkVill|Utilities_AllPub', 'KitchenQual_Gd|SaleType_ConLD', 'MiscVal|MasVnrArea', 'SaleCondition_Family|LotConfig_Inside', 'EnclosedPorch|Electrical_FuseF', 'Electrical_SBrkr|BsmtExposure_Gd', 'OverallQual|LotShape_IR3', 'Fence_GdPrv|LotConfig_Tencode', 'Exterior2nd_VinylSd|PavedDrive_Tencode', 'LotShape_Reg|LowQualFinSF', 'HouseStyle_Tencode|BldgType_TwnhsE', 'LotConfig_Corner|Exterior1st_MetalSd', 'ExterCond_Gd|BsmtFinType2_Unf', 'BldgType_Twnhs|MiscVal', 'Electrical_FuseA|HouseStyle_Tencode', 'GarageYrBlt|HouseStyle_1.5Fin', 'Exterior2nd_BrkFace|ScreenPorch', 'FullBath|LotShape_IR3', 'YrSold|Condition1_PosA', 'Neighborhood_NAmes|GarageType_2Types', 'GrLivArea|LotConfig_FR2', 'BsmtFinType2_Rec|Condition1_Norm', 'KitchenQual_Ex|MSZoning_RM', 'Heating_GasA|Exterior2nd_AsphShn', 'LandContour_Low|Neighborhood_BrkSide', 'Alley_Grvl|BsmtExposure_No', 'BsmtCond_Tencode|Exterior1st_Plywood', 'Exterior2nd_BrkFace|RoofStyle_Gambrel', 'Condition2_Artery|Condition1_Tencode', 'BsmtHalfBath|SaleCondition_Normal', 'Exterior1st_Stucco|GarageType_Basment', 'Neighborhood_BrkSide|GarageType_2Types', 'YearRemodAdd|TotRmsAbvGrd', 'Functional_Typ|Electrical_FuseP', 'GarageQual_Tencode|Exterior2nd_Brk Cmn', 'PavedDrive_N|Neighborhood_BrkSide', 'ExterQual_Ex|ExterQual_Gd', 'FullBath|MiscFeature_Tencode', 'HouseStyle_1.5Unf|FireplaceQu_TA', 'GrLivArea|MSZoning_RH', 'HeatingQC_Gd|SaleCondition_Family', 'Neighborhood_OldTown|HouseStyle_SLvl', 'Heating_Tencode|Exterior1st_MetalSd', 'Neighborhood_StoneBr|SaleType_Oth', 'PavedDrive_N|LandContour_Tencode', 'MasVnrType_BrkCmn|MSZoning_Tencode', 'RoofStyle_Shed|Condition1_Norm', 'Heating_Tencode|Condition1_Tencode', 'Exterior1st_AsbShng|RoofMatl_WdShngl', 'GarageType_Attchd|BsmtFinType1_LwQ', 'HalfBath|SaleCondition_Alloca', 'Heating_Tencode|Exterior2nd_HdBoard', 'MSZoning_C (all)|HouseStyle_1.5Fin', 'SaleType_WD|PavedDrive_P', 'Functional_Maj1|KitchenQual_Fa', 'HouseStyle_SFoyer|MasVnrType_BrkFace', 'BldgType_Duplex|Neighborhood_Edwards', 'PoolQC_Tencode|SaleCondition_Normal', 'Neighborhood_Veenker|SaleCondition_Abnorml', 'MSSubClass|RoofMatl_WdShngl', 'FireplaceQu_Ex|CentralAir_Tencode', 'Heating_GasA|HouseStyle_Tencode', 'BldgType_1Fam|Exterior2nd_AsphShn', 'GarageType_Tencode|LotShape_IR3', 'FireplaceQu_Gd|Exterior2nd_Wd Shng', 'Exterior1st_HdBoard|Exterior1st_Wd Sdng', 'GarageCars|BsmtUnfSF', 'GarageCars|KitchenQual_TA', 'MiscVal|SaleType_ConLD', 'Fireplaces|LandContour_Bnk', 'Condition1_Artery|BsmtQual_Ex', 'RoofStyle_Flat|LandContour_Tencode', 'Utilities_Tencode|MSZoning_RM', 'MSZoning_C (all)|BsmtFinType1_GLQ', 'Electrical_SBrkr|HouseStyle_1.5Fin', 'SaleCondition_Partial|BsmtFinType1_GLQ', 'Exterior2nd_VinylSd|Neighborhood_SWISU', 'LotShape_IR2|RoofStyle_Hip', 'Neighborhood_OldTown|BsmtFinType1_GLQ', 'Foundation_Stone|Exterior1st_VinylSd', 'LotShape_Tencode|Fireplaces', 'HouseStyle_1.5Unf|FireplaceQu_Fa', 'FireplaceQu_Tencode|YearBuilt', 'BsmtFinType1_ALQ|Exterior1st_Wd Sdng', 'FireplaceQu_Tencode|ExterCond_Tencode', 'Condition1_Norm|Exterior1st_VinylSd', 'YearRemodAdd|Electrical_FuseA', 'Exterior1st_HdBoard|KitchenQual_Ex', 'Fireplaces|GarageType_Tencode', 'LandContour_Tencode|LowQualFinSF', 'Heating_GasW|SaleCondition_Partial', 'OverallQual|SaleType_COD', 'Electrical_FuseP|LotConfig_Tencode', 'HeatingQC_TA|PoolQC_Tencode', 'SaleType_ConLI|Exterior2nd_AsphShn', 'Functional_Min1|CentralAir_N', 'HalfBath|GarageArea', 'RoofStyle_Hip|MSZoning_RL', 'RoofMatl_Tar&Grv|BsmtFinType1_LwQ', 'Fence_Tencode|BsmtQual_Gd', 'PavedDrive_P|Exterior1st_Plywood', 'RoofMatl_Tencode|HeatingQC_Fa', 'SaleType_ConLD|SaleType_Oth', 'GarageCars|Exterior1st_WdShing', 'Alley_Pave|MSZoning_C (all)', 'LandContour_Low|MSSubClass', 'Electrical_SBrkr|Condition1_PosA', 'SaleType_Tencode|Street_Pave', 'HeatingQC_Gd|GarageType_2Types', 'CentralAir_Y|Condition1_Tencode', 'OverallCond|SaleType_CWD', 'FireplaceQu_Tencode|Exterior1st_Stucco', 'MoSold|GarageType_Attchd', 'BldgType_TwnhsE|MSZoning_Tencode', 'LotShape_Reg|LotFrontage', 'BsmtFinType1_ALQ|Exterior2nd_HdBoard', 'Fireplaces|PoolQC_Tencode', 'Neighborhood_Blmngtn|BsmtExposure_No', 'RoofStyle_Hip|Functional_Maj1', 'FullBath|Exterior2nd_BrkFace', 'Functional_Maj2|ScreenPorch', 'MiscFeature_Tencode|RoofMatl_WdShngl', 'LandContour_Low|HouseStyle_SLvl', 'GarageCond_Gd|Functional_Mod', 'GarageCond_Fa|GarageYrBlt', 'Exterior1st_BrkFace|Alley_Grvl', 'Neighborhood_NWAmes|ExterQual_Tencode', 'KitchenAbvGr|FireplaceQu_Po', 'BsmtFinType2_BLQ|MiscFeature_Shed', 'LotArea|Neighborhood_NWAmes', 'FireplaceQu_Po|GarageCond_Ex', 'GarageCond_TA|MasVnrType_BrkCmn', 'Exterior2nd_BrkFace|Exterior1st_Wd Sdng', 'Condition1_RRAe|Neighborhood_StoneBr', 'Neighborhood_OldTown|Functional_Min1', 'FireplaceQu_Po|SaleType_Tencode', 'Neighborhood_NAmes|RoofMatl_WdShngl', 'LotConfig_CulDSac|Exterior2nd_HdBoard', 'LotShape_IR2|Exterior1st_CemntBd', 'BsmtHalfBath|BsmtUnfSF', 'GarageCond_Tencode|Street_Grvl', 'FireplaceQu_Tencode|BsmtCond_Fa', 'Alley_Pave|BsmtHalfBath', 'MasVnrArea|BsmtCond_Fa', 'FireplaceQu_Tencode|Condition1_Norm', 'BsmtFinType1_GLQ|MasVnrArea', 'LotShape_IR2|GarageCond_Po', 'LotFrontage|KitchenQual_Gd', 'HeatingQC_Gd|MSZoning_FV', 'RoofMatl_Tar&Grv|ExterCond_Gd', 'RoofStyle_Shed|OverallCond', 'OpenPorchSF|BsmtExposure_No', 'Exterior2nd_Stucco|FireplaceQu_Gd', 'Neighborhood_SWISU|PoolArea', 'Exterior2nd_VinylSd|BsmtExposure_Gd', 'LandContour_Bnk|BsmtFinType2_Unf', 'LandContour_Tencode|ExterQual_Ex', 'SaleCondition_Normal|MSSubClass', 'LandContour_Low|Exterior1st_Plywood', 'Exterior1st_BrkFace|BldgType_2fmCon', 'HeatingQC_Gd|Heating_Grav', 'Electrical_Tencode|MiscFeature_Gar2', 'GarageType_Detchd|Foundation_CBlock', 'Neighborhood_NWAmes|RoofMatl_WdShngl', 'SaleType_Tencode|Neighborhood_NAmes', 'GarageCond_Ex|Foundation_Slab', 'HeatingQC_Fa|Alley_Tencode', 'YearRemodAdd|BsmtExposure_Av', 'SaleType_CWD|Fence_MnPrv', 'LandContour_Tencode|BsmtFinType1_Unf', 'SaleCondition_Tencode|MSSubClass', 'Neighborhood_SawyerW|Street_Pave', 'Neighborhood_ClearCr|Heating_GasW', 'ExterQual_Ex|Exterior1st_VinylSd', 'KitchenAbvGr|Neighborhood_Veenker', 'LandContour_Low|GarageType_CarPort', 'Condition1_Artery|HouseStyle_SLvl', 'Neighborhood_NridgHt|RoofMatl_CompShg', 'BldgType_Twnhs|Neighborhood_Timber', 'RoofStyle_Gambrel|Condition1_RRAe', 'KitchenQual_Ex|Exterior1st_Wd Sdng', 'Condition1_PosN|MoSold', 'PavedDrive_N|HouseStyle_2Story', 'Condition1_PosN|MSZoning_RL', 'LowQualFinSF|FireplaceQu_TA', 'Condition1_PosA|RoofStyle_Gambrel', 'Exterior2nd_MetalSd|Exterior2nd_HdBoard', 'HouseStyle_1.5Unf|Street_Grvl', 'LotShape_Reg|BsmtCond_TA', 'Condition1_RRAn|MSZoning_FV', 'Functional_Tencode|GarageQual_Tencode', 'MSZoning_C (all)|GarageType_Basment', 'Exterior1st_BrkFace|ExterCond_Fa', 'Electrical_SBrkr|Street_Grvl', 'BsmtCond_Tencode|HouseStyle_2.5Unf', '3SsnPorch|RoofStyle_Tencode', 'LotShape_IR1|Neighborhood_NWAmes', 'FireplaceQu_Po|Condition2_Artery', 'MSZoning_C (all)|BsmtCond_Fa', 'Street_Tencode|GrLivArea', 'BsmtHalfBath|LowQualFinSF', 'BsmtFinType2_GLQ|Condition2_Artery', 'BsmtExposure_No|MSZoning_RH', 'Foundation_PConc|BsmtQual_Fa', 'GarageType_Detchd|Functional_Tencode', 'GarageQual_Po|2ndFlrSF', 'Exterior2nd_AsbShng|BsmtCond_Gd', 'LowQualFinSF|BsmtExposure_Av', 'Exterior2nd_BrkFace|MSZoning_RH', 'SaleCondition_Partial|RoofMatl_WdShngl', 'BsmtExposure_Tencode|Neighborhood_Timber', 'BsmtHalfBath|LandContour_Lvl', 'BldgType_2fmCon|SaleType_New', 'SaleType_New|MSZoning_Tencode', 'GarageCond_Fa|MasVnrType_None', '1stFlrSF|CentralAir_Y', 'Condition1_Tencode|HouseStyle_SLvl', 'GarageType_BuiltIn|CentralAir_N', 'KitchenQual_Fa|Neighborhood_IDOTRR', 'PavedDrive_P|Exterior1st_Wd Sdng', 'LowQualFinSF|Exterior1st_Wd Sdng', 'KitchenQual_Fa|MasVnrArea', 'KitchenQual_TA|BsmtCond_TA', 'GarageCond_Po|MSSubClass', 'Exterior2nd_Stone|FireplaceQu_Gd', 'BsmtFinType2_Tencode|OpenPorchSF', 'BsmtFinType2_ALQ|Exterior1st_Stucco', 'SaleType_ConLI|SaleType_CWD', 'Condition2_Norm|HouseStyle_2Story', 'YearRemodAdd|LandSlope_Sev', 'LandSlope_Tencode|BsmtFinType1_ALQ', 'GarageQual_TA|Neighborhood_NWAmes', 'HouseStyle_1.5Unf|Exterior2nd_Plywood', 'Exterior2nd_BrkFace|MasVnrType_Tencode', 'Exterior1st_AsbShng|BsmtFinType1_Rec', 'BsmtFinType1_Rec|Exterior2nd_AsphShn', 'Foundation_Stone|Exterior2nd_MetalSd', 'GarageType_Tencode|LowQualFinSF', 'LotShape_Tencode|SaleType_ConLw', 'RoofMatl_CompShg|LandSlope_Tencode', 'BsmtQual_TA|RoofStyle_Gable', 'Neighborhood_Tencode|CentralAir_N', 'Fence_Tencode|Condition2_Norm', 'BsmtExposure_Tencode|Exterior1st_AsbShng', 'MiscFeature_Othr|Neighborhood_StoneBr', 'Heating_Grav|Street_Pave', 'BsmtHalfBath|Exterior2nd_Brk Cmn', 'BsmtFinType2_ALQ|PavedDrive_Y', 'Exterior2nd_BrkFace', 'GarageType_Detchd|MSZoning_RH', 'LandSlope_Gtl|Functional_Mod', 'Foundation_Stone|GarageFinish_RFn', 'Foundation_PConc|MSZoning_RL', 'Condition1_Artery|Functional_Min2', 'LandContour_HLS|PoolArea', 'Condition1_Artery|SaleType_WD', 'Neighborhood_NPkVill|PavedDrive_P', 'YearBuilt|ExterQual_Fa', 'RoofStyle_Gambrel|LotShape_IR3', 'Exterior1st_HdBoard|MasVnrType_BrkCmn', 'Exterior2nd_Stone|Exterior1st_Tencode', 'LotConfig_CulDSac|BsmtExposure_No', 'Neighborhood_Mitchel|MiscVal', 'Condition1_PosA|BsmtFinSF1', 'Neighborhood_OldTown|ScreenPorch', 'Neighborhood_NPkVill|Neighborhood_Sawyer', 'BsmtFinType2_Tencode|Fence_MnWw', 'Exterior2nd_BrkFace|HouseStyle_2Story', 'HeatingQC_Tencode|HouseStyle_1.5Unf', 'Foundation_Tencode|Condition1_RRAe', 'LotArea|CentralAir_N', 'BsmtExposure_Av|GarageQual_Po', 'HouseStyle_2.5Unf|Condition1_RRAn', 'LandSlope_Mod|LotConfig_FR2', 'OverallQual|SaleType_Tencode', 'Heating_GasA|FullBath', 'OverallQual|CentralAir_Tencode', 'BsmtFinType1_Unf|RoofMatl_WdShngl', 'EnclosedPorch|GarageType_Tencode', 'Electrical_FuseP|KitchenQual_TA', 'GarageCond_Po|Exterior2nd_Plywood', 'Neighborhood_Mitchel|Functional_Min2', 'GarageArea|Neighborhood_SawyerW', 'Functional_Maj2|Exterior2nd_AsphShn', 'BsmtFinType1_ALQ|GarageType_Attchd', 'SaleCondition_Abnorml|Neighborhood_Timber', 'YearBuilt|PavedDrive_P', 'LandSlope_Tencode|GarageArea', 'Exterior1st_BrkComm|MasVnrArea', 'SaleType_ConLw|BsmtCond_Gd', 'GarageType_Basment|BsmtFinType1_Unf', 'Neighborhood_Blmngtn|LandContour_Tencode', 'Street_Tencode|RoofMatl_CompShg', 'Condition1_Artery|GarageFinish_Fin', 'BsmtFinType1_GLQ|Exterior2nd_AsphShn', 'ExterCond_TA|Electrical_SBrkr', 'Alley_Tencode|GarageArea', 'GarageType_Attchd|Functional_Min2', 'Electrical_FuseA|GarageQual_Po', 'SaleType_ConLw|SaleType_COD', 'RoofMatl_CompShg|GarageType_Tencode', 'HouseStyle_1.5Unf|MasVnrType_BrkFace', 'KitchenQual_Fa|GarageYrBlt', 'SaleCondition_Tencode|LotShape_Tencode', 'Neighborhood_Mitchel|FireplaceQu_Po', 'RoofStyle_Flat|BsmtFinType1_LwQ', 'BsmtFinType2_ALQ|Exterior1st_Tencode', 'KitchenAbvGr|BsmtFinSF1', 'LotShape_Tencode|Neighborhood_NAmes', 'HouseStyle_1.5Unf|MSZoning_Tencode', 'Exterior1st_BrkFace|Exterior2nd_HdBoard', 'BsmtFinType1_BLQ|GarageType_CarPort', 'Exterior2nd_Stone|SaleType_WD', 'FireplaceQu_Fa|Neighborhood_Timber', 'MSZoning_Tencode|BsmtExposure_No', 'BsmtFinType2_BLQ|TotRmsAbvGrd', 'Electrical_SBrkr|BsmtFullBath', 'BedroomAbvGr|Functional_Min1', 'HouseStyle_1Story|Neighborhood_BrkSide', 'Condition2_Tencode|OverallCond', 'SaleType_ConLD|LowQualFinSF', 'Street_Tencode|Electrical_FuseA', 'LotShape_IR2|MasVnrType_None', 'SaleType_Tencode|OverallCond', 'RoofStyle_Tencode|Neighborhood_StoneBr', 'Condition1_PosA|GarageType_BuiltIn', 'KitchenAbvGr|SaleType_ConLD', 'GarageCond_TA|GarageYrBlt', 'Heating_GasW|MSZoning_RL', 'MasVnrType_BrkCmn|MasVnrType_BrkFace', 'Neighborhood_Veenker|ExterCond_Gd', 'OverallQual|BsmtFinType2_Rec', 'RoofStyle_Hip|GarageType_Basment', 'Heating_GasA|BsmtFinType1_GLQ', 'Foundation_Tencode|RoofStyle_Tencode', 'Fence_GdWo|ExterQual_Tencode', 'GarageType_Attchd|SaleCondition_Normal', 'OverallQual|Neighborhood_IDOTRR', 'RoofStyle_Flat|Utilities_AllPub', 'BsmtFinType1_Tencode|Foundation_BrkTil', 'Exterior2nd_MetalSd|Neighborhood_SawyerW', 'Condition2_Artery|PoolArea', 'GarageType_Basment|BsmtCond_TA', 'LandContour_HLS|Functional_Min2', 'Neighborhood_BrDale|MasVnrType_Stone', 'LandSlope_Tencode|Exterior1st_Wd Sdng', 'Foundation_Tencode|SaleType_COD', 'Neighborhood_BrDale|BsmtCond_Fa', 'ExterQual_Ex', 'Electrical_FuseA|GarageType_BuiltIn', 'GarageFinish_Tencode|SaleType_COD', 'ExterQual_TA|Electrical_FuseA', 'BsmtExposure_Tencode|SaleCondition_Alloca', 'RoofMatl_Tencode|Electrical_FuseF', 'ExterQual_TA|GarageQual_Fa', 'Foundation_BrkTil|ExterQual_Fa', 'BsmtFinType1_Tencode|BsmtFinType1_Rec', 'RoofStyle_Shed|Exterior1st_Tencode', 'LotConfig_CulDSac|GarageQual_Tencode', 'FullBath|RoofStyle_Shed', 'FireplaceQu_Ex|MiscFeature_Gar2', 'GarageCond_Tencode|Neighborhood_SawyerW', 'KitchenQual_Ex|Neighborhood_Sawyer', 'MSZoning_RM|Exterior1st_BrkComm', 'BsmtFinType2_Tencode|GarageFinish_Tencode', 'Heating_GasA|Exterior1st_WdShing', 'LandContour_Low|BsmtCond_Fa', 'RoofStyle_Gambrel|Exterior2nd_Plywood', '1stFlrSF|MiscFeature_Shed', 'Exterior2nd_CmentBd|Exterior1st_VinylSd', 'MSZoning_FV|Exterior2nd_AsphShn', 'BsmtQual_Ex|SaleCondition_Alloca', 'GarageFinish_Unf|GarageType_Attchd', 'Exterior1st_CemntBd|MSZoning_FV', 'GarageQual_Tencode|Street_Pave', 'BsmtQual_TA|BsmtExposure_Mn', 'MasVnrType_BrkCmn|SaleCondition_Partial', 'BldgType_Duplex|GarageCond_TA', 'Heating_Grav|MasVnrType_Stone', 'MoSold|MiscFeature_Gar2', 'HouseStyle_SFoyer|Neighborhood_NAmes', 'FireplaceQu_Ex|ExterCond_Fa', 'LotShape_Tencode|BldgType_1Fam', 'BsmtFinSF2|BsmtExposure_Av', 'FullBath|KitchenQual_Ex', 'Neighborhood_Blmngtn|Exterior1st_Wd Sdng', 'Exterior1st_Stucco|BsmtFinType1_ALQ', 'Electrical_FuseP|MiscFeature_Tencode', 'BsmtExposure_Tencode|LandSlope_Tencode', 'Heating_GasA|Functional_Mod', 'Neighborhood_NPkVill|Foundation_Stone', 'HeatingQC_Fa|SaleType_Oth', 'MSZoning_FV|Exterior2nd_HdBoard', 'Condition1_PosA|MasVnrType_Stone', 'PavedDrive_Tencode|GarageType_Basment', 'SaleType_ConLI|PavedDrive_Tencode', 'Neighborhood_Blmngtn|KitchenQual_Gd', 'Foundation_BrkTil|SaleType_ConLD', 'PavedDrive_Y|MasVnrType_Tencode', 'Neighborhood_NPkVill|BedroomAbvGr', 'LotConfig_Corner|Neighborhood_Mitchel', 'Foundation_CBlock|Fence_MnWw', 'HeatingQC_Gd|PoolQC_Tencode', 'TotalBsmtSF|MSZoning_RM', 'MasVnrType_BrkCmn|MSZoning_RH', 'GarageCond_Po|GarageFinish_Fin', 'KitchenQual_Tencode|Exterior2nd_Plywood', 'Functional_Maj1|ExterQual_Ex', 'LotShape_IR2|Neighborhood_Gilbert', 'Foundation_BrkTil|GarageType_Basment', 'Neighborhood_Somerst|GarageFinish_Fin', 'HouseStyle_1Story|BsmtCond_Gd', 'Exterior2nd_MetalSd|Functional_Min2', 'SaleCondition_Alloca|GarageType_2Types', 'RoofMatl_WdShngl|Exterior2nd_Plywood', 'GarageQual_TA|Exterior2nd_Brk Cmn', 'Neighborhood_NridgHt|BsmtQual_Ex', 'Functional_Tencode|Street_Grvl', 'TotalBsmtSF|HouseStyle_Tencode', 'Neighborhood_Blmngtn|Street_Grvl', 'FireplaceQu_Po|Electrical_SBrkr', 'BsmtFinType2_ALQ|GarageQual_Po', 'ExterQual_Ex|GarageYrBlt', 'LandContour_Tencode|BsmtExposure_Av', 'ExterQual_TA|PoolQC_Tencode', 'BsmtFinType1_BLQ|Foundation_CBlock', 'Neighborhood_Blmngtn|Alley_Pave', 'BldgType_Duplex|GarageQual_Gd', 'Heating_Grav|Fence_Tencode', 'Neighborhood_ClearCr|WoodDeckSF', 'Exterior2nd_Stucco|BldgType_2fmCon', 'SaleType_ConLI|BldgType_Tencode', 'BsmtQual_Fa|Neighborhood_Timber', 'Neighborhood_Gilbert|SaleType_COD', 'Foundation_BrkTil|Neighborhood_Edwards', 'Heating_Grav|LandContour_Tencode', 'PavedDrive_N|SaleCondition_Alloca', 'Neighborhood_NWAmes|Exterior2nd_HdBoard', '3SsnPorch|BsmtExposure_Gd', 'GarageType_Detchd|Neighborhood_Tencode', 'ExterCond_Gd|Exterior2nd_Wd Shng', 'Neighborhood_Veenker|RoofMatl_Tar&Grv', 'FireplaceQu_Fa|LandSlope_Gtl', 'HouseStyle_SFoyer|HeatingQC_Ex', 'Electrical_FuseP|MiscFeature_Shed', 'BldgType_Duplex|GarageType_Tencode', 'HouseStyle_1.5Unf|ExterQual_Fa', 'LandContour_Bnk|LandSlope_Gtl', 'Exterior2nd_Tencode|HouseStyle_2.5Unf', 'BsmtQual_Ex|HeatingQC_Ex', 'Condition1_Artery|MasVnrType_Tencode', 'SaleCondition_Tencode|CentralAir_Y', 'PoolQC_Tencode|Condition1_Norm', 'HouseStyle_SFoyer|Neighborhood_Crawfor', 'ExterCond_Gd|MasVnrType_BrkFace', 'Neighborhood_BrDale|LandSlope_Gtl', 'LotConfig_FR2|Condition1_RRAn', 'YearRemodAdd|BsmtFinType2_ALQ', 'BsmtQual_Fa|Exterior2nd_HdBoard', 'BsmtFinType1_Tencode|SaleCondition_Alloca', 'HouseStyle_1.5Unf|MiscFeature_Tencode', 'Exterior1st_CemntBd|Foundation_CBlock', 'RoofStyle_Flat|GarageQual_Gd', 'OpenPorchSF|BsmtCond_Po', 'Exterior2nd_Stucco|Neighborhood_Mitchel', 'ExterCond_Gd|Exterior2nd_Wd Sdng', 'GarageType_BuiltIn|GarageArea', 'HouseStyle_SFoyer|Condition1_PosA', 'ExterCond_TA|SaleCondition_Normal', 'Exterior2nd_MetalSd|Exterior1st_BrkComm', 'ExterQual_TA|RoofStyle_Gable', 'BsmtQual_Fa|LotConfig_Inside', 'HouseStyle_1.5Unf|SaleCondition_Abnorml', 'Neighborhood_ClearCr|HouseStyle_1.5Fin', 'YrSold|BldgType_2fmCon', 'Fence_GdPrv|Exterior2nd_Wd Sdng', 'Electrical_Tencode|LandSlope_Gtl', 'FireplaceQu_Tencode|GarageType_CarPort', 'SaleCondition_Tencode|PavedDrive_Tencode', 'Neighborhood_Tencode|Neighborhood_Veenker', 'GarageCond_Po|BldgType_1Fam', 'HouseStyle_Tencode|GarageQual_Tencode', 'MasVnrType_BrkCmn|LotShape_IR3', 'Electrical_Tencode|RoofMatl_WdShngl', 'Neighborhood_Tencode|BsmtExposure_Gd', 'LandSlope_Gtl|BsmtExposure_No', 'BsmtFinType2_ALQ|MasVnrType_BrkCmn', 'Neighborhood_Edwards|Exterior1st_Tencode', 'Neighborhood_OldTown|Fence_GdWo', 'LotArea|MSSubClass', 'SaleType_ConLw|Neighborhood_BrkSide', 'Exterior2nd_Plywood|LotConfig_Inside', 'BsmtFinType2_LwQ|Condition2_Artery', 'Foundation_PConc|PavedDrive_Tencode', 'PavedDrive_Tencode|GarageType_2Types', 'SaleType_New|GarageType_Basment', 'Utilities_Tencode|MSZoning_RL', 'FireplaceQu_Gd|MasVnrType_Stone', 'MiscFeature_Othr|Street_Grvl', 'Exterior2nd_VinylSd|Neighborhood_IDOTRR', 'Neighborhood_CollgCr|Foundation_CBlock', 'BldgType_TwnhsE|MiscFeature_Gar2', 'Electrical_SBrkr|Exterior2nd_Plywood', 'Fireplaces|MSZoning_RM', 'Neighborhood_NPkVill|MasVnrType_Tencode', 'Foundation_PConc|BsmtCond_Po', 'LandContour_Low|ExterQual_Tencode', 'Fireplaces|BsmtFinType2_LwQ', 'BldgType_Twnhs|ExterCond_TA', 'Neighborhood_NridgHt|Condition2_Tencode', 'Exterior2nd_Wd Shng|Neighborhood_MeadowV', 'Foundation_PConc|GarageYrBlt', 'Exterior2nd_MetalSd|PavedDrive_P', 'HeatingQC_Gd|OpenPorchSF', 'LotShape_IR1|HeatingQC_Ex', 'Alley_Pave|Exterior2nd_Brk Cmn', 'LowQualFinSF|Functional_Mod', 'BldgType_2fmCon|GrLivArea', 'LotFrontage|WoodDeckSF', 'GrLivArea|LotArea', 'BsmtFinType2_ALQ|RoofMatl_CompShg', 'Electrical_FuseA|HouseStyle_2.5Unf', '3SsnPorch|Exterior1st_Plywood', 'Neighborhood_Sawyer|MSZoning_RL', 'ExterCond_TA|MSZoning_Tencode', 'GrLivArea|ExterQual_Ex', 'HeatingQC_Tencode|GarageQual_Tencode', 'Exterior2nd_Stone|MiscVal', 'BldgType_Twnhs|Electrical_Tencode', 'GarageFinish_Tencode|SaleType_Oth', 'LotFrontage|PoolArea', 'LandContour_HLS|GarageQual_TA', 'GarageCond_Po|GarageYrBlt', 'GarageQual_Gd|Neighborhood_Edwards', 'Condition1_PosA|Neighborhood_Gilbert', 'FireplaceQu_Po|SaleType_ConLI', 'GarageQual_Gd|MiscFeature_Gar2', 'GarageCond_Po|Exterior1st_BrkComm', 'MiscVal|Electrical_FuseF', 'SaleCondition_Family|OpenPorchSF', 'Condition1_RRAn|Foundation_Slab', 'GarageFinish_Fin|BsmtFinType1_Unf', 'GarageFinish_Fin|GarageQual_Fa', 'Electrical_Tencode|KitchenQual_TA', 'MiscFeature_Gar2|ExterQual_Fa', 'Condition1_Artery|Exterior2nd_AsbShng', 'GarageCond_Tencode|LandSlope_Gtl', 'Neighborhood_OldTown|SaleCondition_Family', 'PavedDrive_N|Exterior2nd_Plywood', 'Exterior1st_WdShing|HouseStyle_2Story', 'BsmtFinType2_BLQ|GarageQual_Tencode', 'MoSold|Neighborhood_Timber', 'FullBath|BldgType_TwnhsE', 'GrLivArea|Neighborhood_MeadowV', 'Electrical_FuseA|KitchenQual_Tencode', 'Neighborhood_OldTown|ExterCond_Tencode', 'Functional_Min1|BsmtFinType1_LwQ', 'YrSold|Neighborhood_SawyerW', 'GarageType_Tencode|KitchenQual_Tencode', 'Functional_Tencode|Alley_Tencode', 'GarageFinish_Unf|LandContour_HLS', 'HouseStyle_Tencode|YearBuilt', 'SaleCondition_Abnorml|WoodDeckSF', 'HeatingQC_TA|SaleType_New', 'PavedDrive_Y|Fence_MnPrv', 'PavedDrive_Y|MSZoning_RM', 'Exterior2nd_AsbShng|MasVnrType_BrkFace', 'Neighborhood_Edwards|BsmtQual_Fa', 'Neighborhood_IDOTRR|BsmtCond_TA', 'YrSold|LotShape_IR2', 'Foundation_Tencode|FireplaceQu_Fa', 'Fence_GdPrv|GarageCond_Gd', 'BsmtFinType1_BLQ|OverallCond', 'BsmtCond_Gd|Exterior2nd_AsphShn', 'YearBuilt|ExterQual_Ex', 'ExterCond_TA|Neighborhood_SawyerW', 'PavedDrive_Y|BsmtExposure_Mn', 'Neighborhood_Edwards|Neighborhood_NAmes', 'HouseStyle_Tencode|ExterQual_Ex', 'EnclosedPorch|Fireplaces', 'Exterior1st_HdBoard|GarageQual_Tencode', 'BsmtFinType2_ALQ|BsmtQual_Fa', 'KitchenQual_Tencode|BsmtFinType1_Unf', 'BldgType_2fmCon|CentralAir_N', 'BsmtFinType2_Rec|Exterior2nd_Brk Cmn', 'ExterQual_TA|Neighborhood_SWISU', 'OpenPorchSF|BsmtCond_TA', 'SaleType_COD|Fence_MnWw', 'GarageCond_Po|Functional_Tencode', 'Functional_Maj2|ExterCond_Fa', 'GarageType_CarPort|Fence_MnPrv', 'PavedDrive_N|LotShape_Tencode', 'Fireplaces|Functional_Maj2', 'LotShape_IR2|WoodDeckSF', 'Neighborhood_Veenker|BldgType_TwnhsE', 'Fence_MnWw|WoodDeckSF', 'Neighborhood_Crawfor|FireplaceQu_TA', 'GarageQual_Po|HouseStyle_2Story', 'Electrical_SBrkr|Exterior2nd_Wd Sdng', 'FireplaceQu_Tencode|Condition2_Artery', 'Exterior2nd_Wd Sdng|SaleType_COD', 'ExterCond_Tencode|Neighborhood_Timber', 'Neighborhood_NWAmes|Foundation_CBlock', 'Foundation_PConc|MSZoning_Tencode', 'Condition1_RRAe|WoodDeckSF', 'Exterior2nd_MetalSd|Neighborhood_Crawfor', 'Neighborhood_CollgCr|ExterCond_Tencode', 'BedroomAbvGr|HouseStyle_1.5Fin', 'ScreenPorch|Fence_MnPrv', 'FireplaceQu_Po|SaleType_New', 'Foundation_CBlock|Exterior2nd_Plywood', 'Alley_Tencode|FullBath', 'LandContour_Tencode|MiscFeature_Tencode', 'Heating_Grav|MoSold', 'OverallQual|Exterior2nd_Brk Cmn', 'Foundation_Stone|Condition1_Feedr', 'MSSubClass|LotConfig_Inside', 'Electrical_Tencode|BldgType_1Fam', 'HeatingQC_Fa|BsmtFinType1_Unf', 'LandSlope_Mod|HouseStyle_SLvl', 'HouseStyle_1Story|Exterior2nd_VinylSd', 'FireplaceQu_Tencode|LotConfig_CulDSac', 'LandContour_Lvl|BldgType_Tencode', 'GarageFinish_Fin|Utilities_AllPub', 'ExterCond_TA|SaleType_ConLD', 'KitchenQual_Ex|LotConfig_Tencode', 'Alley_Pave|HouseStyle_SLvl', 'LandContour_Lvl|HalfBath', 'Neighborhood_CollgCr|MoSold', 'GarageQual_Fa|BsmtFinType1_Rec', 'Neighborhood_Edwards|RoofStyle_Gambrel', 'Utilities_Tencode|LandSlope_Sev', 'MSZoning_Tencode|BsmtCond_TA', 'KitchenQual_Gd|MSZoning_RL', 'MiscFeature_Tencode|LotShape_IR3', 'PoolQC_Tencode|Alley_Grvl', 'BsmtFinType2_Tencode|SaleCondition_Alloca', 'EnclosedPorch|RoofMatl_CompShg', 'BsmtCond_TA|Exterior2nd_AsphShn', 'LotConfig_Corner|BsmtFinType2_Unf', 'Exterior2nd_MetalSd|FireplaceQu_Ex', 'ExterQual_Ex|KitchenQual_TA', 'LotConfig_CulDSac|Street_Pave', 'LotShape_IR2|BedroomAbvGr', 'Street_Tencode|EnclosedPorch', 'LotShape_IR1|Neighborhood_Mitchel', 'GarageQual_TA|BldgType_TwnhsE', 'RoofStyle_Hip|BsmtCond_Fa', 'Neighborhood_Blmngtn|GarageYrBlt', 'GarageFinish_Unf|RoofMatl_Tar&Grv', 'PoolQC_Tencode|Fence_GdPrv', 'GarageCond_Gd|Exterior2nd_MetalSd', 'ExterQual_TA|ScreenPorch', 'TotalBsmtSF|RoofStyle_Gambrel', 'LotShape_IR1|ExterCond_Gd', 'Foundation_PConc|KitchenQual_Ex', 'GarageFinish_Tencode|ExterCond_Fa', 'PoolArea|Alley_Grvl', 'Electrical_FuseF|BsmtFinSF1', 'Heating_GasA|Exterior2nd_Wd Sdng', 'Foundation_CBlock|Neighborhood_Gilbert', '1stFlrSF|Neighborhood_NAmes', 'BsmtFinType1_ALQ|SaleCondition_Normal', 'Exterior1st_Stucco|BldgType_Tencode', 'Foundation_Tencode|BsmtFinType1_Rec', 'Heating_GasW|Functional_Mod', 'Neighborhood_BrDale|HouseStyle_2.5Unf', 'EnclosedPorch|Exterior1st_VinylSd', 'GrLivArea|Exterior2nd_MetalSd', 'BsmtFinType2_GLQ|OpenPorchSF', '3SsnPorch|GarageType_Attchd', 'GarageQual_Gd|Exterior2nd_Brk Cmn', 'MSZoning_C (all)|CentralAir_Y', 'KitchenAbvGr|BsmtHalfBath', 'Condition1_Artery|1stFlrSF', 'LandContour_HLS|ExterQual_Gd', 'Condition1_PosN|CentralAir_Y', 'FullBath|Exterior1st_Tencode', 'Neighborhood_NWAmes|GarageArea', 'FireplaceQu_Po|Exterior1st_MetalSd', 'HeatingQC_TA|HouseStyle_SLvl', 'LandContour_Low|Neighborhood_Crawfor', 'OverallQual|BldgType_1Fam', 'Exterior2nd_BrkFace|Condition1_Norm', 'Condition1_PosN|RoofStyle_Shed', 'SaleCondition_Alloca|GarageType_Attchd', 'HeatingQC_Fa|MiscFeature_Othr', 'ExterCond_TA|GarageFinish_Fin', 'Electrical_FuseP|BsmtCond_Tencode', 'Foundation_PConc|Fence_MnPrv', 'BsmtQual_Fa|FireplaceQu_TA', 'GarageCond_Tencode|GarageQual_Fa', 'Electrical_Tencode|Exterior1st_WdShing', 'Foundation_Tencode|OverallCond', 'Exterior1st_Tencode|Utilities_AllPub', 'LotShape_Reg|Exterior2nd_VinylSd', 'SaleCondition_Tencode|MasVnrType_None', 'Fireplaces|BldgType_Tencode', 'OpenPorchSF|FireplaceQu_Ex', 'Neighborhood_CollgCr|BsmtFinType2_ALQ', 'FireplaceQu_Gd|MSZoning_RH', 'SaleCondition_Tencode|Exterior1st_HdBoard', 'Neighborhood_Somerst|ExterQual_Fa', 'LandContour_Lvl', 'RoofStyle_Hip|LandContour_HLS', 'BsmtQual_Fa|HouseStyle_2.5Unf', 'BsmtFinType2_LwQ|Neighborhood_Sawyer', 'EnclosedPorch|BsmtHalfBath', 'BsmtFinType1_Rec|MSZoning_RM', 'LotShape_Reg|BedroomAbvGr', 'Foundation_PConc|BsmtFinType1_LwQ', 'Exterior1st_CemntBd|GarageType_2Types', 'YrSold|HeatingQC_TA', 'EnclosedPorch|BsmtFinType2_GLQ', 'BsmtFinType1_Tencode|MoSold', 'Neighborhood_Tencode|Functional_Mod', 'FireplaceQu_TA|LotShape_IR3', 'Neighborhood_SWISU|Exterior1st_BrkComm', 'GarageCond_Po|BsmtFinType1_Unf', 'Foundation_PConc|GarageCond_Gd', 'BsmtFinType2_ALQ|Foundation_CBlock', 'BsmtFinType1_ALQ|BsmtUnfSF', 'Neighborhood_NPkVill|Condition1_PosN', 'Utilities_Tencode|Electrical_FuseF', 'Neighborhood_BrDale|BsmtFinType2_BLQ', 'HeatingQC_Fa|BsmtCond_Tencode', 'BsmtCond_Gd|BsmtCond_TA', 'ExterQual_Ex|BsmtCond_Gd', 'KitchenQual_Fa|BsmtCond_Fa', 'LotConfig_CulDSac|CentralAir_Y', 'Electrical_SBrkr|HeatingQC_Tencode', 'Condition1_RRAe|SaleType_CWD', 'Heating_Grav|FullBath', 'FireplaceQu_Po|Fence_MnPrv', 'GarageType_CarPort|Neighborhood_Gilbert', 'Exterior1st_BrkFace|Functional_Min2', 'BsmtQual_Ex|BsmtCond_Tencode', 'Exterior2nd_BrkFace|LandContour_Bnk', 'PavedDrive_N|Heating_GasA', 'MasVnrType_BrkCmn|Exterior1st_Tencode', 'ExterCond_TA|Exterior2nd_HdBoard', 'Foundation_Stone|GarageQual_Tencode', '1stFlrSF|BldgType_1Fam', 'Electrical_SBrkr|LotConfig_Inside', 'SaleType_ConLD|GarageType_CarPort', 'SaleCondition_Normal|BsmtUnfSF', 'TotRmsAbvGrd|Neighborhood_Crawfor', 'Fence_Tencode|Utilities_AllPub', 'SaleType_ConLD|Exterior2nd_CmentBd', 'MSZoning_C (all)|Electrical_FuseF', 'Neighborhood_StoneBr|Fence_GdWo', 'Alley_Pave|BsmtFinType1_Rec', 'Alley_Pave|RoofMatl_WdShngl', 'MasVnrType_BrkCmn|Condition1_Feedr', 'HeatingQC_Fa|BsmtExposure_No', 'HalfBath|GarageYrBlt', 'Fireplaces|HeatingQC_Tencode', 'Exterior2nd_VinylSd|Exterior2nd_MetalSd', 'OverallQual|Fence_GdWo', 'Electrical_FuseP|MasVnrType_None', 'Condition1_Feedr|MiscFeature_Tencode', 'Condition1_PosN|MasVnrType_BrkCmn', 'Electrical_Tencode|BsmtFinType1_GLQ', 'Condition1_Artery|Foundation_Slab', 'Neighborhood_Blmngtn|Exterior2nd_AsphShn', 'BsmtFinType1_BLQ|Fence_GdPrv', 'ExterCond_TA|GarageArea', 'LotShape_Reg|ExterCond_Tencode', 'Fireplaces|Condition1_PosN', 'Fireplaces|RoofStyle_Gable', 'BsmtFinType1_Tencode|BsmtCond_Po', 'Condition1_PosN|Neighborhood_IDOTRR', 'Heating_GasA|BsmtFinSF2', 'LandSlope_Mod|OverallCond', 'Functional_Typ|BldgType_TwnhsE', 'HeatingQC_Gd|GarageCond_Gd', 'Functional_Typ|YearBuilt', 'LotConfig_CulDSac|Condition1_RRAe', 'MoSold|Condition1_Norm', 'HeatingQC_TA|BedroomAbvGr', 'BldgType_1Fam|Exterior2nd_Plywood', 'BsmtFinSF1|SaleType_CWD', 'Neighborhood_NPkVill|GarageFinish_Fin', 'Fence_Tencode|BsmtExposure_Mn', 'BsmtQual_Ex|MoSold', 'Exterior2nd_VinylSd|GarageFinish_RFn', 'Foundation_CBlock|MSZoning_Tencode', 'BsmtFinType1_Tencode|Street_Pave', 'BsmtQual_Tencode|BldgType_TwnhsE', 'Neighborhood_Tencode|LotConfig_Inside', 'BsmtCond_Tencode|Condition2_Norm', 'BsmtCond_Po|Neighborhood_MeadowV', 'MSZoning_RM|Exterior2nd_Brk Cmn', 'BsmtFinType2_LwQ|FireplaceQu_TA', 'SaleType_ConLD|Exterior1st_CemntBd', 'MiscVal|BsmtFinType1_Rec', 'LotShape_IR1|MasVnrType_BrkCmn', 'BsmtFinType1_LwQ|BsmtFinType2_Unf', 'YearRemodAdd|2ndFlrSF', 'Exterior1st_HdBoard|Fence_GdWo', 'SaleType_ConLD|ExterCond_Gd', 'Neighborhood_OldTown|MSZoning_FV', 'Neighborhood_Mitchel|SaleCondition_Alloca', 'Heating_GasA|Functional_Typ', 'Electrical_SBrkr|SaleCondition_Family', 'Neighborhood_Veenker|Exterior2nd_Wd Shng', 'Exterior1st_BrkFace|CentralAir_Y', 'LotConfig_FR2|Condition2_Artery', 'BsmtFinType2_Tencode|HeatingQC_Fa', 'Neighborhood_SawyerW|Exterior1st_Wd Sdng', 'Alley_Tencode|SaleType_Oth', 'BsmtHalfBath|Fence_GdWo', 'LandContour_Low|BsmtFullBath', 'Neighborhood_Somerst|BsmtFinSF2', 'Neighborhood_Tencode|LowQualFinSF', 'Exterior1st_HdBoard|Heating_GasW', 'GarageQual_Gd|Neighborhood_Sawyer', 'GarageQual_Gd|ExterQual_Fa', 'Neighborhood_Crawfor|Exterior2nd_HdBoard', 'BsmtExposure_No|Exterior1st_MetalSd', 'LandSlope_Sev|OverallCond', 'LandContour_Low|GarageCond_Fa', 'MoSold|Condition1_RRAn', 'GarageCond_Tencode|MiscVal', 'BldgType_2fmCon|LotShape_Reg', 'BsmtFinType2_ALQ|WoodDeckSF', 'Neighborhood_OldTown|PavedDrive_Tencode', 'BsmtFinType1_LwQ|LotShape_IR3', 'LandContour_Bnk|MSZoning_FV', 'MiscFeature_Shed|MasVnrType_BrkFace', 'BsmtExposure_Tencode|BsmtFullBath', 'CentralAir_Tencode|HouseStyle_SLvl', 'KitchenQual_Ex|HeatingQC_Ex', 'MasVnrType_Tencode|Neighborhood_MeadowV', 'HouseStyle_1Story|Condition2_Artery', 'LotConfig_FR2|HouseStyle_1.5Fin', 'KitchenAbvGr|Exterior1st_Plywood', 'GarageCond_Po', 'Exterior2nd_MetalSd|ExterQual_Ex', 'LotShape_Reg|HouseStyle_SLvl', 'LandSlope_Mod|BldgType_TwnhsE', 'BsmtFinType1_BLQ|Neighborhood_NoRidge', 'GarageCars|ExterCond_Tencode', 'LotShape_IR3|BsmtCond_TA', 'BsmtQual_TA|PavedDrive_P', 'GarageQual_TA|BsmtFinType2_LwQ', 'Heating_Tencode|LotConfig_CulDSac', 'RoofStyle_Gambrel|SaleType_COD', 'GarageCond_Fa|WoodDeckSF', 'Neighborhood_Crawfor|CentralAir_Tencode', 'Condition1_Artery|Neighborhood_BrkSide', 'MiscFeature_Tencode|GarageQual_Tencode', '2ndFlrSF|HouseStyle_2.5Unf', 'Foundation_PConc|Functional_Mod', 'HouseStyle_Tencode|Exterior2nd_Plywood', 'Street_Pave|Functional_Min2', 'RoofStyle_Hip|GarageQual_TA', 'MiscFeature_Shed|ExterQual_Fa', 'Condition1_Tencode|ExterQual_Fa', 'Exterior2nd_Stucco|GarageCond_Fa', 'BsmtHalfBath|GarageCond_Ex', 'LotShape_IR1', 'OverallCond|MSZoning_Tencode', 'BsmtFinType2_GLQ|BsmtFinType1_Unf', 'LandContour_Tencode|Condition1_Feedr', 'Exterior1st_CemntBd|MiscFeature_Shed', 'BsmtFinType2_GLQ|Fence_MnWw', 'KitchenQual_Gd|Condition1_Feedr', '3SsnPorch|Neighborhood_Timber', 'BsmtQual_Fa|SaleCondition_Normal', 'Exterior2nd_Stone|LotConfig_Corner', 'Functional_Tencode|BsmtFinType2_GLQ', 'SaleCondition_Family|Neighborhood_MeadowV', 'BsmtFinType1_ALQ|BsmtFinType1_LwQ', 'Foundation_PConc|LotFrontage', 'SaleType_ConLD|MiscFeature_Shed', 'SaleCondition_Abnorml|LotShape_IR3', 'KitchenQual_Ex|Exterior1st_WdShing', 'KitchenQual_Gd|Neighborhood_Sawyer', 'ExterQual_TA|BsmtExposure_Av', 'Foundation_PConc|MasVnrType_BrkFace', 'Neighborhood_StoneBr|WoodDeckSF', 'HouseStyle_SFoyer|LandContour_Bnk', 'BsmtFinType1_ALQ|RoofMatl_WdShngl', 'YearRemodAdd|Neighborhood_SawyerW', 'PavedDrive_Y|2ndFlrSF', 'PavedDrive_N|KitchenQual_Gd', 'GarageCond_Tencode|BsmtExposure_Gd', 'SaleCondition_Family|HouseStyle_2.5Unf', 'BldgType_1Fam|ExterQual_Fa', 'Neighborhood_ClearCr|Exterior1st_Tencode', 'HeatingQC_Fa|ExterQual_Fa', 'Neighborhood_NridgHt|LandContour_HLS', 'GarageCars|RoofStyle_Gambrel', 'BsmtFinType1_ALQ|BsmtFinType2_Unf', 'SaleType_ConLI|ExterQual_Tencode', 'BsmtQual_Ex|MSZoning_RL', 'BsmtFinType1_Rec|MasVnrArea', 'BsmtQual_TA|BsmtUnfSF', 'HouseStyle_1.5Unf|GarageQual_TA', 'BsmtExposure_Tencode|Exterior2nd_AsbShng', 'BldgType_2fmCon|SaleCondition_Normal', 'Heating_GasA|GarageQual_Po', 'Alley_Tencode|Street_Grvl', 'Neighborhood_NPkVill|Fence_MnWw', 'FireplaceQu_TA|BsmtQual_Gd', '1stFlrSF|HouseStyle_SLvl', 'Foundation_BrkTil|GarageArea', 'GarageQual_TA|HouseStyle_2Story', 'GarageType_CarPort|LandSlope_Gtl', 'LotShape_IR1|GarageFinish_Fin', 'Neighborhood_NPkVill|Fence_Tencode', 'HeatingQC_Ex|Condition1_PosN', 'Neighborhood_Blmngtn|Condition1_RRAn', 'Fence_Tencode|GarageCond_Gd', 'Neighborhood_OldTown|BsmtUnfSF', 'Fireplaces|Functional_Min2', 'BsmtHalfBath|Fence_GdPrv', 'Exterior1st_BrkComm|Exterior2nd_Wd Shng', 'Neighborhood_Veenker|RoofMatl_WdShngl', 'MasVnrType_BrkCmn|Condition1_RRAn', 'MiscVal|BsmtExposure_Av', 'MSZoning_RL|Exterior2nd_Plywood', 'FireplaceQu_Tencode|SaleType_ConLD', 'LotShape_Tencode|GarageCond_TA', 'BsmtCond_Gd|MasVnrArea', 'Condition1_RRAe|Condition1_Feedr', 'RoofStyle_Gambrel|CentralAir_Y', 'FireplaceQu_Po|Exterior2nd_MetalSd', 'KitchenQual_Gd|ExterCond_Gd', 'HeatingQC_Fa|Fence_MnWw', 'CentralAir_Tencode|Exterior1st_MetalSd', 'Functional_Mod|BldgType_Tencode', 'RoofStyle_Flat|SaleType_WD', 'FireplaceQu_Gd|Condition1_PosN', 'BsmtFinType1_LwQ|Exterior2nd_HdBoard', 'LotShape_Tencode|Fence_GdPrv', 'LotShape_IR1|PavedDrive_Y', 'KitchenAbvGr|LotShape_Reg', 'GrLivArea|LowQualFinSF', 'Exterior2nd_Wd Sdng|HouseStyle_2Story', 'HouseStyle_1Story|FireplaceQu_Ex', 'BsmtFinType2_Tencode|BsmtFinType1_GLQ', 'LotFrontage|CentralAir_N', 'Neighborhood_NoRidge|GarageType_2Types', 'LandSlope_Sev|SaleType_COD', 'Exterior2nd_Stucco|LotConfig_Inside', 'SaleType_COD|Exterior1st_WdShing', 'BldgType_Twnhs|1stFlrSF', 'RoofMatl_Tencode|LandContour_Lvl', 'Neighborhood_NoRidge|KitchenQual_TA', 'GarageCars|SaleType_WD', 'LotShape_Tencode|GarageType_Attchd', 'Neighborhood_StoneBr|Exterior2nd_Plywood', 'SaleType_WD|Exterior1st_VinylSd', 'Neighborhood_Veenker|Condition2_Norm', 'SaleType_ConLw|BsmtCond_TA', 'LandContour_Bnk|Neighborhood_NAmes', 'LandSlope_Gtl|BsmtCond_TA', 'GarageFinish_Tencode|GarageCond_Ex', 'Fence_GdPrv|GarageArea', 'GarageType_Tencode|BsmtQual_TA', 'Neighborhood_BrDale|Fence_MnWw', 'Neighborhood_NridgHt|BsmtCond_Po', 'LotFrontage|Foundation_BrkTil', 'Neighborhood_OldTown|BsmtFinType1_Unf', 'OverallQual|MiscVal', 'KitchenQual_Tencode|Exterior1st_BrkComm', 'Condition1_RRAe|ScreenPorch', 'KitchenQual_Gd|Fence_MnPrv', 'LandContour_Low|Heating_GasW', 'Neighborhood_BrDale|BsmtFinSF2', 'ExterCond_TA|BsmtQual_TA', 'Neighborhood_NPkVill|OverallCond', 'ExterCond_Tencode|KitchenQual_TA', 'Neighborhood_Veenker|Condition1_Tencode', 'OpenPorchSF|MasVnrType_BrkFace', 'EnclosedPorch|HeatingQC_TA', 'ExterCond_Tencode|BsmtExposure_Mn', 'SaleCondition_Tencode|MasVnrType_BrkFace', 'LotConfig_FR2|Fence_Tencode', 'GarageQual_TA|SaleType_New', 'LandContour_Bnk|PoolArea', 'BldgType_Duplex|BsmtFinType2_LwQ', 'Exterior2nd_Tencode|Condition1_Norm', 'Functional_Maj2|GarageType_2Types', 'Fence_Tencode|MSZoning_RL', 'TotalBsmtSF|Fence_Tencode', 'GrLivArea|Condition1_RRAe', 'Condition1_PosA|TotRmsAbvGrd', 'Neighborhood_NPkVill|GarageType_Basment', 'KitchenQual_Tencode|MasVnrType_BrkFace', 'Foundation_CBlock|SaleCondition_Partial', 'FireplaceQu_Fa|BldgType_Tencode', 'LandSlope_Mod|2ndFlrSF', 'KitchenQual_Gd|FireplaceQu_Ex', 'HeatingQC_Gd|Exterior1st_WdShing', 'KitchenAbvGr|WoodDeckSF', 'MasVnrType_BrkCmn|Exterior2nd_Plywood', 'KitchenQual_Ex|BldgType_1Fam', 'LandContour_Tencode|Exterior2nd_AsphShn', 'GarageCond_Ex|Exterior2nd_HdBoard', 'LowQualFinSF|BsmtFinType2_Unf', 'Neighborhood_SWISU|BsmtUnfSF', 'Fence_Tencode|MSZoning_C (all)', 'FireplaceQu_TA|OverallCond', 'BsmtHalfBath|ScreenPorch', 'SaleCondition_Tencode|Exterior1st_Tencode', 'Heating_Tencode|GarageType_CarPort', 'Electrical_SBrkr|Neighborhood_Crawfor', 'GarageCond_Ex|WoodDeckSF', 'Neighborhood_ClearCr|ExterQual_Ex', 'Neighborhood_Tencode|SaleType_CWD', 'ExterQual_Tencode|MSZoning_RH', 'BsmtFinType2_BLQ|Exterior1st_VinylSd', 'SaleType_WD|BsmtQual_Gd', 'RoofStyle_Shed|Neighborhood_NAmes', 'BsmtFinType1_BLQ|GarageType_2Types', 'Foundation_Tencode|Exterior2nd_MetalSd', 'HeatingQC_TA|Alley_Grvl', 'SaleType_CWD|MSZoning_FV', 'HouseStyle_Tencode|GarageType_2Types', 'ExterCond_TA|HalfBath', 'Exterior2nd_MetalSd|Foundation_Slab', 'GarageType_Attchd|BsmtCond_Fa', 'Condition1_Norm|WoodDeckSF', 'RoofMatl_CompShg|FireplaceQu_Ex', 'BsmtFinType2_GLQ|LotShape_IR3', 'Condition1_PosA|Neighborhood_MeadowV', 'FireplaceQu_Tencode|SaleCondition_Partial', 'HeatingQC_Fa|GarageCond_Ex', 'RoofMatl_Tar&Grv|Functional_Mod', 'Exterior1st_Stucco|ExterCond_Tencode', 'Exterior1st_HdBoard|Exterior2nd_MetalSd', 'TotRmsAbvGrd|BsmtCond_Gd', 'BedroomAbvGr|Exterior2nd_Wd Shng', 'RoofStyle_Gable|MSZoning_FV', 'GarageQual_Fa|Neighborhood_IDOTRR', 'BsmtFinType1_Tencode|MiscFeature_Tencode', 'FireplaceQu_Tencode|WoodDeckSF', 'Exterior1st_CemntBd|Condition1_RRAn', 'GarageCond_Po|Foundation_Slab', 'Street_Tencode|GarageCond_Po', 'RoofMatl_WdShngl|LotConfig_Inside', 'OverallQual|GarageType_Detchd', 'KitchenAbvGr|Electrical_FuseP', 'LotFrontage|HalfBath', 'FireplaceQu_TA|Condition2_Norm', 'Fence_Tencode|BsmtExposure_No', 'Fireplaces|Exterior2nd_AsphShn', 'GarageCond_Po|SaleType_COD', 'LandContour_Tencode|Exterior1st_Plywood', 'SaleType_New|SaleCondition_Normal', 'Exterior1st_HdBoard|GarageArea', 'KitchenAbvGr|GarageType_BuiltIn', 'LandContour_Lvl|Exterior2nd_Wd Sdng', 'SaleType_ConLw|LandSlope_Sev', 'RoofStyle_Gambrel|Condition1_PosN', 'KitchenAbvGr|GarageFinish_Fin', 'LandSlope_Sev|Electrical_SBrkr', 'PavedDrive_N|LandSlope_Tencode', 'BsmtHalfBath|MSSubClass', 'HouseStyle_1Story|Neighborhood_IDOTRR', 'BsmtHalfBath|GarageType_CarPort', 'KitchenQual_Ex|ExterCond_Tencode', 'Exterior1st_Stucco|RoofStyle_Gambrel', 'BsmtFinType2_ALQ|Neighborhood_IDOTRR', 'BsmtFinSF2|BsmtQual_Fa', 'Neighborhood_StoneBr|BldgType_Tencode', 'Condition1_PosA|Exterior1st_VinylSd', 'BldgType_Twnhs|GarageType_BuiltIn', 'BsmtFinType2_BLQ|Foundation_CBlock', 'SaleCondition_Tencode|Neighborhood_CollgCr', 'Exterior2nd_Tencode|Neighborhood_SWISU', 'GarageType_Detchd|BsmtQual_Ex', 'Condition1_PosA|Exterior2nd_MetalSd', 'GarageType_Detchd|RoofStyle_Gable', 'Functional_Maj1|GarageType_2Types', 'LandSlope_Tencode|PavedDrive_Tencode', 'Fence_GdPrv|FireplaceQu_Fa', 'LotConfig_CulDSac|GarageCond_Gd', '2ndFlrSF|ScreenPorch', 'Heating_GasA|SaleType_ConLD', 'Electrical_FuseP|KitchenQual_Ex', 'PavedDrive_N|BsmtCond_Po', 'LotArea|BsmtFinType2_BLQ', 'BsmtFinType2_BLQ|MiscFeature_Tencode', 'MSZoning_C (all)|BsmtFinType2_LwQ', 'PavedDrive_P|SaleType_COD', 'HouseStyle_1Story|Electrical_FuseA', 'Functional_Tencode|Exterior1st_Plywood', 'PavedDrive_Y|Fence_MnWw', 'Exterior2nd_Wd Sdng|CentralAir_Y', 'Neighborhood_Gilbert|KitchenQual_TA', 'HouseStyle_SFoyer|BsmtUnfSF', 'SaleCondition_Alloca|Exterior2nd_MetalSd', 'Alley_Pave|BsmtQual_Fa', 'Neighborhood_CollgCr|Neighborhood_Gilbert', 'KitchenQual_Gd|GarageType_Attchd', 'LotShape_IR2|LotFrontage', 'LotConfig_Corner|SaleType_ConLD', 'TotalBsmtSF|GrLivArea', 'GarageCond_Gd|GarageQual_Tencode', 'Neighborhood_ClearCr|OverallCond', 'GarageQual_Gd|GarageCars', 'Neighborhood_BrDale|ExterQual_Gd', 'GarageQual_TA|MiscFeature_Shed', 'Neighborhood_Tencode|BsmtCond_Fa', 'Neighborhood_StoneBr|Condition1_RRAn', 'LandSlope_Tencode|BsmtCond_Po', 'Exterior2nd_Tencode|LotConfig_CulDSac', 'GarageQual_Fa|MasVnrType_None', 'Fireplaces|SaleType_ConLw', 'MasVnrType_None|HouseStyle_2Story', 'FireplaceQu_Fa|MiscFeature_Tencode', 'LotArea|BsmtCond_TA', 'BsmtFinType2_Tencode|GarageArea', 'GarageCond_Gd|BsmtExposure_Mn', 'Neighborhood_NridgHt|Neighborhood_Edwards', 'LotShape_IR1|ExterQual_Gd', 'BsmtHalfBath|LotConfig_Tencode', 'Foundation_BrkTil|GarageCond_Ex', 'HouseStyle_SFoyer|HouseStyle_2.5Unf', 'ExterQual_Ex|SaleType_COD', 'Neighborhood_ClearCr|KitchenQual_Tencode', 'GarageCond_Po|Condition1_Norm', 'RoofMatl_Tencode|Neighborhood_Crawfor', 'LandContour_Lvl|GarageQual_TA', 'HouseStyle_1.5Unf|BsmtQual_TA', '1stFlrSF|Exterior1st_WdShing', 'SaleType_ConLw|RoofStyle_Gambrel', 'SaleType_WD|MasVnrType_BrkFace', 'BldgType_2fmCon|Neighborhood_SawyerW', 'Electrical_Tencode|SaleType_New', 'GarageFinish_RFn|Exterior2nd_HdBoard', 'LandSlope_Mod|RoofStyle_Gambrel', 'RoofMatl_CompShg|SaleCondition_Partial', 'Functional_Tencode|Functional_Min2', 'Electrical_SBrkr|Neighborhood_NWAmes', 'BsmtHalfBath|BsmtExposure_Mn', 'Exterior1st_HdBoard|BsmtExposure_Gd', 'Neighborhood_BrDale|MasVnrArea', 'FullBath|CentralAir_Y', 'FireplaceQu_Fa|ExterQual_Tencode', 'BsmtFinType1_ALQ|Exterior2nd_AsphShn', 'LotFrontage|Heating_Tencode', 'Neighborhood_Edwards|KitchenQual_Tencode', 'Neighborhood_OldTown|Condition1_Feedr', 'LotShape_Tencode|ExterCond_TA', 'HeatingQC_Gd|GarageType_BuiltIn', 'LandSlope_Mod|Heating_GasW', 'PavedDrive_N|MiscFeature_Shed', 'LotArea|BedroomAbvGr', 'LowQualFinSF|BsmtCond_Fa', 'ExterQual_TA|Condition1_RRAe', 'Foundation_Tencode|Neighborhood_Edwards', 'KitchenQual_Tencode|TotRmsAbvGrd', 'ExterQual_TA|BsmtFinType1_Unf', 'HeatingQC_Ex|PoolArea', 'PavedDrive_Y|Neighborhood_BrkSide', 'LandSlope_Mod|LotShape_IR3', 'Electrical_FuseF|KitchenQual_Fa', 'HeatingQC_Fa|HalfBath', 'YearRemodAdd|SaleType_Oth', 'GarageType_Basment|Exterior2nd_HdBoard', 'LotConfig_CulDSac|HouseStyle_2Story', 'LandContour_Lvl|RoofStyle_Tencode', 'Street_Tencode|Functional_Mod', 'MSZoning_Tencode|MSZoning_RL', 'HouseStyle_Tencode|MiscFeature_Shed', 'LotConfig_CulDSac|MasVnrArea', 'GarageCond_TA|Exterior1st_Stucco', 'HeatingQC_Tencode|RoofStyle_Gable', 'LowQualFinSF|SaleCondition_Abnorml', 'BsmtQual_Tencode|SaleType_Tencode', 'Alley_Tencode|Fence_MnWw', 'KitchenQual_Ex|MasVnrType_BrkFace', 'GarageFinish_Tencode|LotShape_IR3', 'Electrical_FuseA|GarageCond_Ex', 'GarageYrBlt|Condition2_Norm', 'Neighborhood_OldTown|Electrical_SBrkr', 'Functional_Min1|Neighborhood_MeadowV', 'OpenPorchSF|Functional_Mod', 'MasVnrType_None|HouseStyle_SLvl', 'MiscVal|GarageQual_Tencode', 'LotFrontage|BsmtCond_Po', 'HouseStyle_Tencode|Neighborhood_Crawfor', 'BedroomAbvGr|SaleCondition_Partial', 'SaleCondition_Tencode|SaleCondition_Abnorml', 'Alley_Pave|MiscVal', 'GarageQual_Gd|TotRmsAbvGrd', 'SaleType_WD|HouseStyle_2Story', 'BsmtFinType1_BLQ|MSZoning_RH', 'BedroomAbvGr|SaleCondition_Abnorml', 'Foundation_BrkTil|Exterior1st_Tencode', 'BsmtFinType1_Tencode|2ndFlrSF', 'Exterior2nd_AsbShng|TotRmsAbvGrd', 'BsmtFinType2_GLQ|HeatingQC_Tencode', 'Exterior2nd_VinylSd|Functional_Min1', 'GarageCond_Tencode|Condition2_Artery', 'BsmtFinType1_Tencode|MSZoning_RM', 'BsmtFinType1_BLQ|HouseStyle_SFoyer', 'Exterior2nd_BrkFace|HouseStyle_2.5Unf', 'MoSold|BsmtFinType1_LwQ', 'ExterQual_Tencode|Functional_Min2', 'Exterior1st_Stucco|SaleType_COD', 'Neighborhood_Somerst|MiscVal', 'RoofStyle_Flat|Condition1_PosN', 'GarageType_Attchd|BsmtCond_Gd', 'RoofStyle_Gable|SaleType_Oth', 'Heating_Tencode|HouseStyle_1.5Fin', 'Neighborhood_NPkVill|MSZoning_RL', 'Neighborhood_NPkVill|SaleCondition_Alloca', 'FireplaceQu_Po|Heating_Tencode', 'SaleType_Tencode|LandContour_Bnk', 'BsmtCond_Gd|BsmtExposure_Mn', 'HeatingQC_Fa|Foundation_Slab', '3SsnPorch|Exterior2nd_Wd Sdng', 'LotShape_Reg|Fence_GdPrv', 'Street_Tencode|GarageFinish_RFn', 'ExterCond_Tencode|MSSubClass', 'RoofStyle_Gable|Street_Grvl', 'MSZoning_C (all)|SaleCondition_Normal', 'PavedDrive_N|BsmtHalfBath', 'PavedDrive_Tencode|BsmtCond_Po', 'BsmtCond_Po|Condition2_Artery', 'FireplaceQu_Fa|Exterior1st_Plywood', 'GarageFinish_Tencode|BldgType_TwnhsE', 'LotConfig_Tencode|GarageType_CarPort', 'HouseStyle_SFoyer|PavedDrive_Tencode', 'BsmtFinType2_BLQ|LowQualFinSF', 'Exterior2nd_Tencode|Exterior1st_Plywood', 'Condition1_PosN|Neighborhood_Gilbert', 'KitchenQual_Gd|SaleCondition_Abnorml', 'SaleCondition_Tencode|Heating_GasW', 'Exterior2nd_Stucco|MasVnrType_None', 'LotConfig_Tencode|LotConfig_Inside', 'HeatingQC_Tencode|ScreenPorch', 'GarageCond_Po|WoodDeckSF', 'BsmtFullBath|PavedDrive_P', 'BedroomAbvGr|MSSubClass', 'HouseStyle_1Story|HeatingQC_Fa', 'Exterior2nd_Stucco|Exterior1st_AsbShng', 'KitchenQual_Ex|Utilities_AllPub', 'Exterior1st_VinylSd|Foundation_Slab', 'GarageCond_Gd|GarageType_BuiltIn', 'SaleType_New|Exterior1st_Tencode', 'ExterCond_Tencode|CentralAir_Tencode', 'Neighborhood_SWISU|HouseStyle_1.5Unf', 'Neighborhood_Tencode|PavedDrive_P', 'RoofMatl_Tencode|HouseStyle_SLvl', 'GarageType_Detchd|Exterior2nd_AsbShng', 'YearRemodAdd|MSZoning_RL', 'LandSlope_Sev|Neighborhood_BrkSide', 'BsmtCond_Tencode|BsmtFinType1_LwQ', 'Exterior1st_VinylSd|Street_Grvl', 'LotShape_Tencode|GarageCond_Po', 'GarageFinish_Tencode|Condition1_Feedr', 'LotConfig_Corner|MSZoning_Tencode', 'BsmtExposure_Av|SaleCondition_Partial', 'BsmtUnfSF|Fence_GdWo', 'Condition1_PosN|FireplaceQu_TA', 'GarageFinish_Unf|Condition1_Norm', 'Electrical_FuseA|Utilities_AllPub', 'BsmtFinType2_ALQ|MiscFeature_Tencode', 'Neighborhood_CollgCr|Exterior2nd_Brk Cmn', 'GarageFinish_Fin|ExterQual_Ex', 'BsmtFinType1_ALQ|GarageType_Basment', 'ExterQual_Ex|Exterior1st_Plywood', 'Foundation_PConc|Exterior2nd_Wd Shng', 'BsmtFinType2_Rec|CentralAir_Tencode', 'Electrical_Tencode|Neighborhood_NAmes', 'Neighborhood_NridgHt|LandSlope_Mod', 'Street_Tencode|SaleType_COD', 'SaleCondition_Family|Functional_Mod', 'HouseStyle_1.5Unf|BsmtUnfSF', 'Neighborhood_NoRidge|GarageCond_Gd', 'Electrical_SBrkr|MiscFeature_Gar2', 'BsmtQual_Ex|Exterior2nd_Wd Sdng', 'Condition1_RRAe|SaleCondition_Abnorml', 'Electrical_FuseA|Fireplaces', 'Heating_Grav|Exterior1st_Stucco', 'SaleCondition_Family', 'RoofStyle_Hip|Functional_Maj2', 'Heating_Grav|Exterior2nd_AsphShn', 'Alley_Pave|GarageQual_Fa', 'GarageArea|Condition1_RRAn', 'Heating_GasA|Exterior1st_Wd Sdng', 'BldgType_2fmCon|MoSold', 'Foundation_Tencode|GarageFinish_Tencode', 'BsmtFinType2_Tencode|Condition1_Tencode', 'RoofStyle_Flat|BldgType_TwnhsE', 'LandContour_Bnk|Functional_Maj2', 'Fence_GdPrv|Functional_Min1', 'Neighborhood_Gilbert|Neighborhood_MeadowV', 'Neighborhood_Mitchel|BsmtFinType2_Unf', 'Exterior2nd_Wd Sdng|GarageType_2Types', 'LotConfig_FR2|MasVnrType_Stone', 'BsmtCond_Po|Exterior2nd_Wd Shng', 'FireplaceQu_Gd|Heating_Grav', 'GarageType_Tencode|Electrical_SBrkr', 'MSZoning_C (all)|SaleType_New', 'FullBath|LotConfig_Tencode', 'GarageCond_TA|SaleCondition_Partial', 'HouseStyle_Tencode|LotConfig_FR2', 'RoofStyle_Gambrel|RoofStyle_Shed', 'BsmtFinType1_Tencode', 'Neighborhood_CollgCr|FullBath', 'LandContour_Lvl|GarageQual_Tencode', 'PoolQC_Tencode|Exterior2nd_CmentBd', 'Exterior2nd_VinylSd|BsmtQual_TA', 'PavedDrive_N|BsmtCond_Tencode', 'Exterior2nd_Stone|GrLivArea', 'LandContour_HLS|CentralAir_Tencode', 'BsmtFullBath|BsmtFinType1_Unf', 'Functional_Min1|ExterQual_Ex', 'LotFrontage|LotArea', 'Neighborhood_NridgHt|WoodDeckSF', 'LotShape_Reg|LandContour_Lvl', 'ExterCond_Gd|GarageCond_Gd', 'Neighborhood_Mitchel|GarageQual_Tencode', 'Foundation_PConc|BsmtFullBath', 'Neighborhood_NAmes|HouseStyle_2Story', 'HeatingQC_Tencode|Neighborhood_BrkSide', 'BsmtFinType1_ALQ|Exterior2nd_Wd Sdng', 'Foundation_BrkTil|Exterior2nd_Wd Sdng', 'SaleType_WD|Condition2_Artery', 'Foundation_PConc|Neighborhood_Gilbert', 'GarageCond_TA|OpenPorchSF', 'Exterior1st_VinylSd|Exterior1st_WdShing', 'BsmtCond_Gd|BsmtFinType1_GLQ', 'MSSubClass|Neighborhood_BrkSide', 'FireplaceQu_Gd|KitchenQual_Ex', 'FireplaceQu_Ex', 'Exterior2nd_CmentBd', 'Exterior1st_AsbShng|BsmtCond_Fa', 'Condition1_Feedr|Condition1_Tencode', 'Exterior1st_Stucco|HouseStyle_2Story', 'LotShape_IR1|BsmtHalfBath', 'BsmtQual_TA|GarageType_2Types', 'GarageYrBlt|HouseStyle_2Story', 'HeatingQC_TA|FireplaceQu_Ex', 'GarageFinish_Fin|Heating_GasW', 'BldgType_Twnhs|LotArea', 'Neighborhood_SWISU|TotRmsAbvGrd', 'BsmtHalfBath|MasVnrType_BrkFace', 'BsmtQual_Fa|Condition1_RRAn', 'FireplaceQu_Po|GarageCond_Fa', 'LotArea|BsmtQual_TA', 'FullBath|MasVnrType_None', 'Neighborhood_Veenker|Electrical_FuseF', 'Neighborhood_Veenker|OpenPorchSF', 'LandContour_Tencode|BldgType_TwnhsE', 'SaleCondition_Tencode|MiscFeature_Gar2', 'Functional_Maj2|Foundation_CBlock', 'MoSold|ExterQual_Tencode', 'BsmtExposure_Mn|MasVnrType_BrkFace', 'Exterior2nd_Brk Cmn|Exterior1st_WdShing', 'SaleCondition_Tencode|Neighborhood_Crawfor', 'HalfBath|MSZoning_RL', 'Foundation_Stone|SaleType_WD', 'MSZoning_C (all)|OverallCond', 'RoofStyle_Hip|MiscFeature_Tencode', 'Neighborhood_NoRidge|MasVnrArea', 'PavedDrive_Y|MSZoning_Tencode', 'GarageType_Attchd|Exterior1st_MetalSd', 'Heating_GasA|LandContour_HLS', 'BsmtQual_Tencode|BsmtFinType2_BLQ', 'Functional_Maj1|Fence_GdWo', 'Foundation_BrkTil|BldgType_1Fam', 'LandSlope_Tencode|MoSold', 'RoofStyle_Flat|Neighborhood_MeadowV', 'MSZoning_C (all)|FireplaceQu_Ex', 'FullBath|PavedDrive_Tencode', 'Neighborhood_Edwards|MasVnrType_Tencode', 'Electrical_FuseA|TotRmsAbvGrd', 'MiscVal|ExterCond_Gd', 'BsmtQual_Fa|MasVnrType_Tencode', 'LandContour_Lvl|Condition2_Tencode', 'Fence_Tencode|GarageCond_Fa', 'GarageType_BuiltIn|KitchenQual_TA', 'HouseStyle_1Story|CentralAir_Y', 'Street_Grvl|BsmtFinType2_Unf', 'Fence_Tencode|Neighborhood_SawyerW', 'TotalBsmtSF|KitchenQual_Ex', 'Neighborhood_Veenker|RoofStyle_Gable', 'Electrical_FuseF|Exterior1st_Tencode', 'GarageCond_Po|Neighborhood_Mitchel', 'HeatingQC_Gd|Condition1_Norm', 'Neighborhood_Crawfor|GarageFinish_RFn', 'BsmtFinType2_Tencode|TotRmsAbvGrd', 'Neighborhood_SawyerW|LotConfig_Inside', 'Exterior2nd_Stucco|BldgType_TwnhsE', 'Condition1_PosN|GarageType_CarPort', 'Foundation_PConc|MiscVal', 'ExterCond_Gd|Functional_Mod', 'GarageType_Tencode|BsmtExposure_Av', 'RoofStyle_Tencode|SaleType_CWD', 'Exterior2nd_Wd Sdng|BsmtCond_TA', 'GarageType_CarPort|Neighborhood_IDOTRR', 'SaleCondition_Tencode|GarageQual_Tencode', 'YearBuilt|GarageArea', 'Neighborhood_ClearCr|Exterior2nd_Brk Cmn', 'PavedDrive_N|Functional_Maj1', 'MiscFeature_Shed|Condition2_Artery', 'FireplaceQu_Tencode|LotShape_IR3', 'BsmtUnfSF|FireplaceQu_Ex', 'Exterior2nd_Stucco|BsmtFinType1_BLQ', 'Electrical_FuseP|Neighborhood_OldTown', 'RoofStyle_Hip|Exterior1st_CemntBd', 'Neighborhood_BrDale|Electrical_SBrkr', 'Exterior2nd_Stucco|GarageQual_Gd', 'BsmtExposure_Av|OverallCond', 'Condition1_Artery|TotalBsmtSF', 'GarageQual_Fa|Condition1_RRAe', 'GarageCond_Tencode|Condition1_Feedr', 'SaleType_ConLI|BsmtUnfSF', 'MiscVal|BsmtExposure_Mn', 'Electrical_Tencode|Exterior2nd_Tencode', 'Condition1_Feedr|BldgType_TwnhsE', 'RoofStyle_Hip|Exterior1st_Plywood', 'BsmtFinType2_BLQ|SaleType_Oth', 'FireplaceQu_Tencode|BsmtExposure_Mn', 'LotShape_Tencode|FireplaceQu_Gd', 'Foundation_PConc|BsmtExposure_No', 'Foundation_BrkTil|CentralAir_Y', 'SaleType_ConLI|Functional_Maj1', 'Exterior1st_BrkFace|MSZoning_RM', 'GarageType_Detchd|PavedDrive_P', 'SaleCondition_Alloca|MSZoning_RM', 'Foundation_PConc|MiscFeature_Gar2', 'BsmtExposure_Tencode|Exterior2nd_BrkFace', 'RoofStyle_Gable|Fence_MnWw', 'Alley_Tencode|BldgType_Twnhs', 'Neighborhood_CollgCr|HalfBath', 'Condition1_RRAe|Fence_MnWw', 'HeatingQC_Fa|PavedDrive_P', 'Exterior2nd_CmentBd|Neighborhood_StoneBr', 'Exterior1st_HdBoard|Foundation_BrkTil', 'MiscFeature_Othr|ExterQual_Gd', 'Alley_Pave|PavedDrive_P', 'SaleCondition_Partial|HouseStyle_1.5Fin', 'Fence_GdPrv|Street_Pave', 'BsmtQual_TA|SaleType_CWD', 'Exterior2nd_Stucco|OverallCond', 'SaleCondition_Tencode|SaleCondition_Normal', 'Alley_Grvl|MSZoning_RH', 'ScreenPorch|Exterior1st_Plywood', 'GarageFinish_Fin|SaleType_ConLw', 'GarageCond_Fa|HouseStyle_SLvl', 'SaleCondition_Tencode|Fence_MnPrv', 'RoofMatl_Tencode|GarageType_Basment', 'Street_Grvl|MiscFeature_Gar2', 'SaleCondition_Tencode|BsmtFullBath', 'Neighborhood_Blmngtn|1stFlrSF', 'Fence_Tencode|MSZoning_Tencode', 'LandContour_HLS|BsmtFinType1_Rec', 'HeatingQC_Gd|GarageQual_Fa', 'KitchenAbvGr|Fireplaces', 'BldgType_Duplex|OpenPorchSF', 'BsmtExposure_Av|Functional_Mod', 'LotFrontage|Foundation_CBlock', 'GarageType_Tencode|Neighborhood_Edwards', 'BldgType_Twnhs|BsmtCond_Tencode', 'Street_Tencode|LotShape_Reg', 'Neighborhood_NridgHt|BsmtFinType1_BLQ', 'LotShape_Tencode|GarageType_CarPort', 'Condition2_Tencode|BldgType_TwnhsE', 'BsmtQual_Ex|Fence_GdPrv', 'SaleType_WD|MSZoning_RH', 'Electrical_Tencode|BsmtCond_TA', 'KitchenQual_Tencode|Exterior1st_Tencode', 'RoofMatl_CompShg|BsmtFinType2_LwQ', 'MSZoning_C (all)|2ndFlrSF', 'Neighborhood_NWAmes|MasVnrType_None', 'BsmtFinSF1|GarageFinish_RFn', 'LotConfig_FR2|Condition1_Norm', 'BldgType_Duplex|MoSold', 'FireplaceQu_Tencode|Functional_Maj2', 'WoodDeckSF|Exterior2nd_AsphShn', 'LandSlope_Sev|ScreenPorch', 'BsmtFinType1_Tencode|ScreenPorch', 'LotConfig_Tencode|CentralAir_N', 'LowQualFinSF|BsmtCond_Tencode', 'Exterior1st_HdBoard|Electrical_FuseP', 'Exterior2nd_Tencode|RoofStyle_Tencode', 'LowQualFinSF|Fence_MnPrv', 'Exterior1st_BrkFace|BldgType_Duplex', 'BsmtCond_TA|HouseStyle_1.5Fin', 'Neighborhood_Sawyer|MasVnrType_Tencode', 'Functional_Tencode|BsmtFinType2_Unf', 'BsmtQual_Ex|BsmtFinType2_BLQ', 'ExterCond_Tencode|Exterior2nd_CmentBd', 'HalfBath|Neighborhood_MeadowV', 'Functional_Typ|Heating_Grav', 'SaleType_ConLw|SaleCondition_Partial', 'LotShape_Reg|Neighborhood_ClearCr', 'Fence_MnPrv|WoodDeckSF', 'Heating_GasA|PavedDrive_Tencode', 'Neighborhood_ClearCr|Condition2_Tencode', 'Electrical_Tencode|Neighborhood_NWAmes', 'Neighborhood_SWISU|RoofStyle_Shed', 'TotalBsmtSF|Condition2_Artery', 'RoofStyle_Shed|OpenPorchSF', 'Neighborhood_StoneBr|ExterCond_Fa', 'Condition1_PosA|RoofStyle_Shed', 'HouseStyle_Tencode|MSZoning_RH', 'GarageFinish_Tencode|GarageQual_Tencode', 'RoofStyle_Flat|GarageCars', 'Exterior1st_AsbShng|SaleType_New', 'LandContour_HLS|Neighborhood_SWISU', 'LandSlope_Tencode|BsmtCond_Gd', 'GrLivArea|OpenPorchSF', 'MiscVal|3SsnPorch', 'SaleCondition_Family|ExterQual_Ex', 'HouseStyle_Tencode|Exterior2nd_CmentBd', 'Condition1_RRAe|Exterior2nd_Brk Cmn', 'Neighborhood_Timber|Foundation_Slab', 'Neighborhood_NridgHt|SaleCondition_Alloca', 'LotShape_Reg|BsmtFullBath', 'PoolQC_Tencode|BldgType_Tencode', 'HouseStyle_Tencode|GarageType_Tencode', 'KitchenQual_Tencode|MasVnrArea', 'SaleType_WD|GarageQual_TA', 'ExterCond_Tencode|Functional_Mod', 'RoofMatl_Tencode|Condition1_RRAn', 'PavedDrive_P|Alley_Grvl', 'Exterior1st_Stucco|BsmtExposure_Gd', 'RoofStyle_Flat|MiscFeature_Gar2', 'Electrical_FuseP|BsmtQual_Gd', 'LotShape_Tencode|Exterior2nd_AsphShn', 'BsmtExposure_Tencode|SaleCondition_Normal', 'RoofStyle_Shed|Neighborhood_StoneBr', 'OverallQual|BldgType_Twnhs', 'BsmtFinType2_Tencode|CentralAir_Y', 'Neighborhood_CollgCr|FireplaceQu_Po', 'LandContour_Tencode|BsmtCond_Po', 'Exterior2nd_CmentBd|BldgType_Tencode', 'Condition1_RRAe|GarageCond_Ex', 'LandContour_HLS|Condition2_Artery', 'BsmtFinType1_ALQ|RoofStyle_Tencode', 'Exterior2nd_Brk Cmn|BsmtExposure_Gd', 'RoofStyle_Shed|2ndFlrSF', 'LotConfig_FR2|FireplaceQu_Ex', 'BsmtFinType1_BLQ|Neighborhood_SWISU', 'Exterior2nd_MetalSd|GarageQual_Po', 'Heating_GasA|Exterior2nd_Wd Shng', 'Heating_Tencode|Neighborhood_Gilbert', 'BldgType_Duplex|GarageFinish_Fin', 'Neighborhood_NPkVill|HeatingQC_Ex', 'ExterQual_Ex|MiscFeature_Tencode', 'GarageFinish_Unf|FullBath', 'Foundation_BrkTil|MSZoning_RL', 'HouseStyle_SFoyer|BsmtFinType2_GLQ', 'HeatingQC_Fa|RoofStyle_Gable', 'Exterior2nd_BrkFace|LandContour_Lvl', 'Condition1_PosA|KitchenQual_Tencode', 'SaleType_ConLD|Condition1_Feedr', 'Functional_Min1|Functional_Min2', 'BsmtExposure_Av|LandSlope_Gtl', 'HouseStyle_SFoyer|BsmtFinSF1', 'CentralAir_Tencode|BsmtQual_Gd', 'Foundation_PConc|Exterior2nd_AsphShn', 'MSZoning_RM|Neighborhood_Sawyer', 'Condition1_Tencode|BsmtFinType1_GLQ', 'LowQualFinSF|SaleType_Oth', 'RoofStyle_Tencode|BsmtFinType1_LwQ', 'Foundation_Stone|MiscFeature_Gar2', 'FireplaceQu_Po|BldgType_1Fam', 'HeatingQC_Gd|Electrical_FuseP', 'Foundation_CBlock|LotShape_IR3', 'Neighborhood_Edwards|Street_Pave', 'RoofMatl_CompShg|Neighborhood_NWAmes', 'RoofMatl_Tencode|Fence_Tencode', 'Foundation_PConc|RoofStyle_Tencode', 'BsmtExposure_Tencode|MasVnrType_BrkFace', 'GarageCond_Tencode|HalfBath', 'SaleCondition_Alloca|BsmtCond_Tencode', 'OverallQual|Electrical_FuseF', 'FireplaceQu_Tencode|LandSlope_Sev', 'EnclosedPorch|BsmtQual_Fa', 'SaleCondition_Tencode|RoofStyle_Shed', 'LotArea|MiscFeature_Tencode', 'BsmtFinType2_Rec|PavedDrive_P', 'Electrical_Tencode|CentralAir_Y', 'LotFrontage|Exterior2nd_Wd Shng', 'YrSold|MiscFeature_Othr', 'BsmtQual_Ex|GarageArea', 'Electrical_FuseF|BldgType_TwnhsE', 'SaleCondition_Normal|Exterior2nd_Wd Sdng', 'Heating_Grav|BsmtFinType1_ALQ', 'GarageType_Tencode|PoolArea', 'Fence_GdPrv|Neighborhood_Timber', 'LotArea|Neighborhood_StoneBr', 'RoofStyle_Gable|Exterior1st_BrkComm', 'BsmtUnfSF|Utilities_AllPub', 'LandContour_Low|Neighborhood_Gilbert', 'HouseStyle_SLvl', 'BsmtFinType1_Tencode|BsmtFinType2_Rec', 'SaleType_Tencode|BsmtFinType1_LwQ', 'SaleCondition_Tencode|SaleType_Tencode', 'HeatingQC_Tencode|BsmtQual_TA', 'SaleType_ConLw|SaleType_ConLI', 'GarageCond_TA|MSZoning_RM', 'Exterior1st_AsbShng|KitchenQual_Ex', 'LotFrontage|Electrical_SBrkr', 'SaleType_COD|GarageType_2Types', 'Neighborhood_Mitchel|MoSold', 'MiscFeature_Othr|RoofStyle_Shed', 'ExterCond_TA|FireplaceQu_TA', 'Exterior1st_HdBoard|HouseStyle_2.5Unf', 'Foundation_PConc|HeatingQC_Ex', 'SaleCondition_Family|ExterQual_Fa', 'Condition1_Norm|GarageArea', 'BsmtFinSF2|GarageFinish_RFn', 'ExterCond_TA|BsmtExposure_Gd', 'Street_Tencode|Electrical_FuseP', 'HeatingQC_TA|ExterQual_Fa', 'RoofMatl_CompShg|Condition1_PosA', 'PavedDrive_P|RoofMatl_WdShngl', 'LandContour_Lvl|ExterQual_Gd', 'KitchenAbvGr|BsmtExposure_No', 'Neighborhood_NPkVill|SaleType_New', 'Electrical_FuseA|Neighborhood_NWAmes', 'Electrical_SBrkr|Exterior2nd_Brk Cmn', 'Exterior1st_HdBoard|GarageType_CarPort', 'Exterior1st_Stucco|ExterQual_Tencode', 'MoSold|Exterior2nd_Wd Shng', 'GarageQual_Gd|RoofStyle_Gable', 'Neighborhood_NPkVill|Exterior1st_BrkComm', 'BsmtCond_Gd|BsmtCond_Tencode', 'Fireplaces|Neighborhood_NAmes', 'Heating_GasA|BsmtFinType1_Unf', 'LandSlope_Mod|TotRmsAbvGrd', 'BsmtCond_Gd|ExterQual_Tencode', 'PavedDrive_N|Foundation_Tencode', 'SaleCondition_Tencode|Alley_Grvl', 'GarageCond_Fa|BsmtFinType2_LwQ', 'GarageCars|BsmtFinType2_Unf', 'KitchenQual_Gd|Neighborhood_BrkSide', 'GarageQual_Tencode|HouseStyle_SLvl', 'KitchenQual_Gd|BsmtFinSF2', 'PavedDrive_N|YearBuilt', 'TotRmsAbvGrd|MSZoning_FV', 'GrLivArea|BsmtExposure_Av', 'BsmtFinType1_Tencode|Neighborhood_Blmngtn', 'Alley_Pave|RoofMatl_CompShg', '2ndFlrSF|Street_Pave', 'Neighborhood_CollgCr|LandContour_Tencode', 'Exterior2nd_BrkFace|Foundation_BrkTil', 'LandSlope_Sev|HouseStyle_2.5Unf', 'Exterior2nd_Wd Sdng|HouseStyle_SLvl', 'HeatingQC_Gd|1stFlrSF', 'LotConfig_Tencode|GarageType_Basment', 'LandSlope_Tencode|Fence_MnWw', '2ndFlrSF|MSZoning_RH', 'BsmtFinType2_BLQ|FireplaceQu_TA', 'PoolQC_Tencode|Utilities_AllPub', 'HouseStyle_SFoyer|BsmtExposure_Gd', 'Exterior2nd_Stucco|BsmtCond_Tencode', 'Street_Pave|WoodDeckSF', 'TotRmsAbvGrd|BsmtFinType2_Rec', 'ExterQual_Gd|BsmtCond_TA', 'RoofStyle_Hip|Heating_GasW', 'RoofStyle_Flat|HeatingQC_Tencode', '3SsnPorch|GarageCond_Fa', 'SaleType_ConLI|2ndFlrSF', 'RoofMatl_Tar&Grv|CentralAir_Tencode', 'Alley_Pave|SaleType_ConLw', 'Condition1_Artery|Condition1_Norm', 'GarageQual_TA|MSZoning_C (all)', 'Exterior2nd_BrkFace|BldgType_TwnhsE', 'LandContour_Tencode|SaleCondition_Normal', 'Neighborhood_SWISU|RoofStyle_Tencode', '3SsnPorch|LotConfig_Inside', 'KitchenQual_Fa|PavedDrive_P', 'BsmtExposure_Tencode|Exterior1st_VinylSd', 'Alley_Tencode|OverallCond', 'Condition2_Tencode|GarageFinish_Tencode', 'MiscFeature_Shed|FireplaceQu_TA', 'SaleCondition_Alloca|RoofStyle_Gambrel', 'GarageCond_Fa|LotConfig_Inside', 'GarageYrBlt|Fence_MnPrv', 'HeatingQC_TA|Exterior1st_Wd Sdng', 'Condition1_PosA|Foundation_Slab', 'BsmtFullBath|Fence_GdWo', 'Neighborhood_SawyerW|BsmtFinType1_Unf', 'BsmtFinSF2|GarageQual_Tencode', 'GarageCond_Po|SaleType_ConLw', 'YrSold|LotShape_Tencode', 'SaleCondition_Alloca|Exterior1st_CemntBd', 'PavedDrive_Tencode|Foundation_Slab', 'MasVnrType_None|BsmtExposure_Gd', 'RoofMatl_Tencode|Neighborhood_SawyerW', 'Fence_Tencode|MasVnrArea', 'BsmtQual_TA|BsmtCond_TA', 'TotalBsmtSF|BsmtQual_TA', 'GarageQual_TA|GarageCond_Ex', 'MoSold|Exterior2nd_AsphShn', 'LotShape_Reg|BsmtQual_Ex', 'GarageQual_Po|HouseStyle_1.5Fin', 'LandSlope_Sev|BsmtQual_TA', 'LotConfig_CulDSac|BsmtFullBath', 'YrSold|LandSlope_Sev', 'LotShape_IR1|SaleCondition_Alloca', 'GarageType_Detchd|BsmtFullBath', 'Neighborhood_BrDale|FireplaceQu_Fa', 'OverallCond|Foundation_Slab', 'MSSubClass|MSZoning_Tencode', 'SaleCondition_Alloca|Neighborhood_NWAmes', 'Neighborhood_NoRidge|GarageCond_Ex', 'SaleCondition_Abnorml|MasVnrType_Tencode', 'OverallQual|Condition1_Norm', 'Neighborhood_Blmngtn|CentralAir_N', 'BsmtFinType2_GLQ|GarageType_Basment', 'Foundation_CBlock|BsmtFinSF1', 'GarageQual_Gd|HouseStyle_2Story', 'Neighborhood_BrDale|Foundation_Slab', 'Alley_Pave|Functional_Mod', 'Neighborhood_Somerst|Exterior2nd_Plywood', 'HalfBath|CentralAir_Y', 'GarageType_Basment|ExterQual_Fa', 'LandContour_Bnk|GarageQual_TA', 'Condition1_RRAe|Utilities_AllPub', 'HeatingQC_Gd|BsmtFinType2_GLQ', 'FireplaceQu_Fa|KitchenQual_Tencode', 'SaleType_WD|RoofStyle_Gambrel', 'MoSold|Neighborhood_NAmes', 'FireplaceQu_Po|Heating_GasW', 'GarageType_Tencode|Neighborhood_Gilbert', 'SaleType_WD|Exterior2nd_CmentBd', 'GrLivArea|FireplaceQu_Fa', 'LotArea|MSZoning_FV', 'TotalBsmtSF|BsmtFullBath', 'Functional_Typ|HeatingQC_Ex', 'Neighborhood_NridgHt|Exterior2nd_HdBoard', 'FireplaceQu_Fa|Street_Pave', 'Neighborhood_BrDale|EnclosedPorch', 'Neighborhood_NWAmes|PavedDrive_P', 'BsmtFinType2_ALQ|GarageCond_Fa', 'BldgType_Twnhs|LandContour_HLS', 'MasVnrType_None|BsmtFinType2_Unf', 'BsmtCond_Tencode|BsmtExposure_Gd', 'SaleCondition_Tencode|ExterCond_Fa', 'LandSlope_Tencode|PavedDrive_Y', 'Condition1_PosA|GarageQual_Tencode', 'LandContour_HLS|Neighborhood_Edwards', 'Exterior2nd_AsbShng|KitchenQual_Ex', 'Foundation_CBlock|BsmtFinType1_LwQ', 'MiscFeature_Othr|GarageType_Tencode', 'Foundation_BrkTil|Exterior1st_Stucco', 'LotShape_Reg|BsmtFinType2_Rec', 'Exterior2nd_Stucco|Neighborhood_NAmes', 'ExterCond_TA|Neighborhood_Crawfor', 'LandContour_Low|Electrical_SBrkr', 'Condition1_PosN|BsmtCond_Po', 'LotConfig_FR2|Neighborhood_Sawyer', 'Heating_GasA|HeatingQC_Gd', 'LandSlope_Mod|MSZoning_RM', 'Street_Tencode|Exterior1st_AsbShng', 'KitchenQual_Gd|Exterior2nd_BrkFace', '1stFlrSF|BsmtFinType1_GLQ', 'BsmtQual_Fa|SaleCondition_Partial', 'SaleType_CWD|Neighborhood_BrkSide', 'GarageQual_TA|ExterQual_Ex', 'SaleType_ConLI|Condition1_PosN', 'TotalBsmtSF|Foundation_Stone', 'Neighborhood_Mitchel|LotConfig_Inside', 'Neighborhood_Edwards|GarageArea', 'GarageArea|BldgType_Tencode', 'Fence_GdPrv|CentralAir_N', 'GarageCond_Tencode|GarageCond_Ex', 'MasVnrType_BrkCmn|Neighborhood_SawyerW', 'BedroomAbvGr|Condition2_Tencode', 'Neighborhood_Blmngtn|Condition2_Artery', 'Neighborhood_ClearCr|BsmtFinType1_Rec', 'SaleCondition_Family|HeatingQC_Ex', 'Neighborhood_SWISU|MSZoning_C (all)', 'LotShape_IR2|BldgType_TwnhsE', 'Neighborhood_Somerst|Fence_GdWo', 'LotArea|LandContour_Bnk', 'LandSlope_Mod|BsmtQual_Ex', 'FireplaceQu_Tencode|Neighborhood_Blmngtn', 'OverallQual|RoofMatl_CompShg', 'Functional_Tencode|BsmtHalfBath', 'RoofMatl_Tencode|Condition1_PosA', 'GarageArea|LandSlope_Gtl', 'Foundation_BrkTil|Fence_Tencode', 'MiscFeature_Shed|SaleCondition_Abnorml', 'YearBuilt|Condition2_Tencode', 'Neighborhood_Somerst|GarageType_CarPort', 'BldgType_1Fam|Neighborhood_SawyerW', 'Electrical_Tencode|BsmtFinType2_LwQ', 'MiscFeature_Tencode|BsmtFinType1_LwQ', 'LandSlope_Gtl|HouseStyle_SLvl', 'LandContour_HLS|SaleType_WD', 'Neighborhood_NPkVill|LotConfig_CulDSac', 'Neighborhood_CollgCr|SaleType_CWD', 'Foundation_PConc|MSZoning_RH', 'Neighborhood_NAmes|SaleType_Oth', 'FireplaceQu_Gd|Neighborhood_StoneBr', 'Heating_GasA|Exterior1st_BrkComm', 'Exterior1st_AsbShng|MasVnrType_Tencode', 'Exterior1st_HdBoard|BsmtQual_Tencode', 'MoSold|MasVnrType_BrkFace', 'Exterior1st_CemntBd|MoSold', 'LandContour_Bnk|Functional_Maj1', 'GarageType_Detchd|SaleCondition_Abnorml', 'KitchenQual_Gd|SaleCondition_Alloca', 'LandContour_HLS|BldgType_1Fam', 'Heating_GasA|LotConfig_Tencode', 'Exterior2nd_Stone|Neighborhood_Timber', 'Neighborhood_NoRidge|Functional_Maj1', 'GarageType_Tencode|RoofStyle_Gambrel', 'LotShape_IR2|SaleCondition_Alloca', 'YrSold|Neighborhood_Blmngtn', 'Electrical_FuseA|ExterQual_Gd', 'MasVnrType_Stone', 'Heating_GasA|HouseStyle_SLvl', 'LandContour_Bnk|MiscFeature_Tencode', 'BsmtQual_Tencode|MasVnrType_Tencode', 'Exterior2nd_Stucco|1stFlrSF', 'BsmtFinType1_GLQ|HouseStyle_2Story', 'KitchenQual_Ex|BsmtFinType1_ALQ', 'GarageQual_Fa|SaleCondition_Alloca', 'Condition1_Feedr|BsmtFinType1_GLQ', 'Functional_Tencode|MasVnrType_BrkCmn', 'Condition2_Artery|BsmtExposure_Gd', 'BsmtFinSF1|BldgType_1Fam', 'HeatingQC_Tencode|MasVnrType_BrkFace', 'LotShape_IR1|SaleCondition_Normal', 'Neighborhood_ClearCr|PavedDrive_Tencode', 'HeatingQC_TA|BsmtCond_Tencode', 'BsmtFinType2_BLQ|GarageQual_Po', 'Condition2_Norm|MSZoning_FV', 'LandContour_HLS|HouseStyle_1.5Unf', 'Fireplaces|BsmtQual_Ex', 'BsmtExposure_Gd|Condition1_RRAn', 'MiscFeature_Tencode|BldgType_Tencode', 'GarageFinish_Fin|GarageType_Attchd', 'LandContour_Lvl|ExterCond_Tencode', 'MiscFeature_Othr|BsmtCond_Po', 'SaleCondition_Alloca|Condition2_Tencode', 'Neighborhood_NPkVill|Heating_GasW', 'LotShape_Tencode|GarageType_BuiltIn', 'LotShape_Tencode|GarageQual_Po', 'BsmtQual_TA|ExterQual_Gd', 'LotConfig_Corner|RoofStyle_Shed', 'ExterCond_TA|SaleType_Tencode', 'KitchenQual_Ex|MoSold', 'BsmtQual_Tencode|LandSlope_Tencode', 'GarageCars|Condition2_Artery', 'Exterior1st_BrkFace|Condition1_RRAe', 'Exterior2nd_AsbShng|KitchenQual_Tencode', 'Electrical_FuseP|BsmtCond_Po', 'BsmtFinType1_ALQ|Exterior1st_Tencode', 'BsmtFinType2_BLQ|MSZoning_RH', 'HouseStyle_SFoyer|MiscFeature_Tencode', 'BsmtFinType2_LwQ|Neighborhood_SawyerW', 'BsmtExposure_Av|Neighborhood_NAmes', 'Exterior1st_Stucco|SaleType_CWD', 'Exterior1st_MetalSd|Street_Pave', 'Functional_Mod|FireplaceQu_TA', 'RoofStyle_Gambrel|OpenPorchSF', 'RoofMatl_Tencode|HouseStyle_1Story', 'GarageYrBlt|Street_Pave', 'Street_Tencode|BsmtExposure_Av', 'BedroomAbvGr|RoofStyle_Gambrel', 'GarageType_CarPort|BsmtCond_Tencode', 'Electrical_FuseF|MasVnrType_None', 'BsmtFinType2_Tencode|Exterior1st_CemntBd', 'BsmtFinType2_LwQ|Street_Pave', 'Exterior2nd_BrkFace|ExterCond_Fa', 'Heating_Grav|Exterior2nd_VinylSd', 'BldgType_2fmCon|SaleCondition_Abnorml', 'BsmtCond_Fa|Utilities_AllPub', 'Exterior1st_HdBoard|Condition1_PosA', 'GarageCond_Tencode|Condition1_Tencode', 'Neighborhood_CollgCr|KitchenQual_TA', 'LotShape_Tencode|Exterior2nd_Brk Cmn', 'SaleCondition_Family|ExterCond_Gd', 'MasVnrType_None|BsmtExposure_No', 'Exterior2nd_Wd Sdng|MasVnrArea', 'ExterCond_Gd|Alley_Grvl', 'Neighborhood_Edwards|GarageCond_Ex', 'SaleType_Tencode|RoofStyle_Gambrel', 'Alley_Tencode|Condition1_PosA', 'Neighborhood_Tencode|Neighborhood_NAmes', 'Electrical_SBrkr|Exterior2nd_HdBoard', 'BsmtFullBath|HouseStyle_2Story', 'BldgType_2fmCon|SaleCondition_Family', 'KitchenQual_Gd', 'HeatingQC_Ex|Condition2_Tencode', 'Electrical_FuseP|MSZoning_C (all)', 'PavedDrive_N|Foundation_CBlock', 'Electrical_FuseP', 'BldgType_Duplex|BsmtFinType2_GLQ', 'GarageType_BuiltIn|Exterior2nd_AsphShn', 'Neighborhood_OldTown|SaleCondition_Partial', 'Neighborhood_Mitchel|BsmtFinType1_LwQ', 'Fence_GdWo|Condition2_Norm', 'Functional_Typ|Neighborhood_NoRidge', 'Neighborhood_Somerst|HeatingQC_Ex', 'Neighborhood_Sawyer|Exterior1st_MetalSd', 'BldgType_2fmCon|Neighborhood_Somerst', 'Functional_Maj1|GarageQual_Po', 'Neighborhood_Veenker|Functional_Maj2', 'SaleType_Tencode|LowQualFinSF', 'MiscFeature_Gar2|MasVnrArea', 'LandContour_Low|Foundation_PConc', 'Functional_Typ|LandSlope_Mod', 'GarageFinish_Tencode|Street_Grvl', 'HouseStyle_1Story|BsmtHalfBath', 'LotArea|BldgType_TwnhsE', 'BldgType_Twnhs|LotShape_IR1', 'SaleType_ConLD|Neighborhood_IDOTRR', 'LandContour_Bnk|ExterQual_Fa', 'Fence_GdPrv|LowQualFinSF', 'Functional_Min1|Street_Grvl', 'ExterCond_Gd|2ndFlrSF', 'BsmtFullBath|BsmtQual_Gd', 'Neighborhood_BrkSide|Exterior1st_WdShing', 'Exterior1st_AsbShng|Exterior1st_Tencode', 'SaleType_Tencode|Exterior2nd_Brk Cmn', 'BldgType_2fmCon|Condition2_Norm', 'Foundation_PConc|FireplaceQu_Fa', 'GarageType_Detchd|FireplaceQu_Fa', 'LotShape_IR3|Exterior1st_Plywood', 'HouseStyle_SFoyer|Foundation_CBlock', 'RoofStyle_Gable|BsmtFinType1_LwQ', 'BsmtHalfBath|FireplaceQu_Fa', 'LotShape_Tencode|PoolQC_Tencode', 'Exterior1st_BrkFace|Heating_Grav', 'Neighborhood_CollgCr|Condition1_RRAe', 'Condition1_RRAe|BsmtFinType1_LwQ', 'Neighborhood_Tencode|Utilities_AllPub', 'YrSold|RoofStyle_Shed', 'HouseStyle_1.5Unf|Neighborhood_Sawyer', 'MiscFeature_Shed|Foundation_Slab', 'Functional_Maj1|LandSlope_Gtl', 'LotConfig_FR2|Condition1_Feedr', 'Exterior1st_HdBoard|HouseStyle_SLvl', 'Neighborhood_NoRidge|SaleCondition_Family', 'Neighborhood_SWISU|BsmtFinType1_Rec', 'BldgType_Duplex|Alley_Pave', 'EnclosedPorch|HalfBath', 'GrLivArea|Electrical_FuseA', 'Neighborhood_CollgCr|SaleType_COD', 'GarageType_Detchd|BsmtFinSF2', 'TotalBsmtSF|RoofMatl_WdShngl', 'Condition1_Artery|MSZoning_Tencode', 'KitchenAbvGr|LandContour_Bnk', 'KitchenQual_Ex|BsmtCond_Tencode', 'SaleType_ConLw|SaleType_Oth', 'Functional_Typ|BsmtQual_Gd', 'MoSold|MasVnrType_Tencode', 'SaleType_WD|BldgType_1Fam', 'Neighborhood_NAmes|Exterior2nd_Brk Cmn', 'YearBuilt|Neighborhood_SWISU', 'PoolQC_Tencode|BsmtCond_Po', 'BsmtQual_Fa|HouseStyle_1.5Fin', 'GarageType_CarPort|OverallCond', 'Street_Tencode|Neighborhood_NWAmes', 'LotShape_Tencode|Fence_MnWw', 'BldgType_2fmCon|MasVnrArea', 'BsmtExposure_Av|SaleType_COD', 'HeatingQC_TA|SaleType_ConLI', 'Neighborhood_Crawfor|MasVnrType_Stone', 'BldgType_Twnhs|LotConfig_Inside', 'KitchenQual_Tencode|GarageType_CarPort', 'GarageType_BuiltIn|GarageYrBlt', 'GarageQual_Gd|BsmtFinSF1', 'BsmtFinSF1|MasVnrType_Stone', 'GarageType_Tencode|GarageYrBlt', 'ExterCond_Tencode|Exterior1st_Tencode', 'Neighborhood_Edwards|Fence_GdWo', 'BsmtExposure_Tencode|ExterCond_Gd', 'Exterior1st_AsbShng|Exterior1st_BrkComm', '2ndFlrSF|BsmtCond_Fa', 'Neighborhood_Mitchel|MiscFeature_Shed', 'RoofStyle_Gable|Neighborhood_StoneBr', 'BsmtQual_Tencode|HouseStyle_1.5Fin', 'MasVnrType_BrkCmn|Fence_GdWo', 'SaleType_WD|GarageType_Attchd', 'SaleType_Oth|Exterior2nd_Wd Shng', 'HouseStyle_SFoyer|MiscFeature_Othr', 'Functional_Tencode|GarageType_BuiltIn', 'Heating_GasW|GarageQual_Tencode', 'BsmtFinType2_GLQ|GarageArea', 'Neighborhood_StoneBr|PoolArea', 'BsmtFinType1_BLQ|SaleCondition_Normal', 'SaleCondition_Alloca|BsmtUnfSF', 'Neighborhood_NoRidge|Exterior1st_WdShing', 'Neighborhood_CollgCr|BldgType_TwnhsE', 'BsmtQual_Tencode|ExterQual_Ex', 'GarageCond_TA|KitchenQual_Ex', 'GarageCars|FireplaceQu_Fa', 'Electrical_FuseA|HeatingQC_Ex', 'PavedDrive_Tencode|GarageType_BuiltIn', 'Neighborhood_Veenker|BsmtFinSF1', 'HeatingQC_Gd|BsmtFinType1_Rec', 'Fence_GdWo|Condition1_Tencode', 'Functional_Tencode|BsmtCond_Fa', 'SaleCondition_Tencode|Heating_Tencode', 'SaleType_Tencode|PavedDrive_Y', 'Neighborhood_Mitchel|LandSlope_Tencode', 'LotShape_Reg|GarageQual_TA', 'MSSubClass|BsmtExposure_Mn', 'CentralAir_Y|MasVnrArea', 'SaleType_CWD|Exterior1st_Tencode', 'KitchenQual_Ex|BedroomAbvGr', 'GarageCars|Condition1_PosN', 'HeatingQC_Gd|GarageQual_Tencode', 'TotRmsAbvGrd|Fence_MnPrv', 'Foundation_Tencode|PavedDrive_Tencode', 'ExterCond_Tencode|GarageQual_Po', 'GarageFinish_Fin|TotRmsAbvGrd', 'LandContour_Bnk|LotShape_IR3', 'RoofStyle_Flat|KitchenQual_Ex', 'TotalBsmtSF|ExterQual_Tencode', 'Fence_Tencode|Street_Grvl', 'Neighborhood_NridgHt|GarageType_Basment', 'Neighborhood_BrDale|Exterior1st_Tencode', 'Neighborhood_NridgHt|BsmtFinType1_ALQ', 'Foundation_PConc|GarageCond_Ex', 'BsmtFinType2_Tencode|ExterCond_Tencode', 'SaleCondition_Alloca|PoolArea', 'GarageCond_TA|FireplaceQu_Ex', 'GarageCond_Tencode|TotRmsAbvGrd', 'HouseStyle_Tencode|Foundation_Tencode', 'GarageFinish_Unf|BsmtFinType2_BLQ', 'MSZoning_RL|LotShape_IR3', 'Exterior2nd_Stone|Neighborhood_SawyerW', 'ExterQual_TA|MSZoning_RL', 'Heating_GasA|Fence_GdPrv', 'Neighborhood_Edwards|Neighborhood_SWISU', 'RoofStyle_Gambrel|MiscFeature_Tencode', 'Neighborhood_BrDale|Fence_GdPrv', 'Condition1_Norm|LotConfig_Tencode', 'Street_Tencode|MSZoning_FV', 'LotShape_Tencode|Heating_Tencode', 'BsmtFullBath|Condition1_Feedr', 'BldgType_Duplex|Electrical_FuseF', 'GarageType_BuiltIn|BsmtQual_Gd', 'BsmtExposure_Tencode|RoofStyle_Gambrel', 'FireplaceQu_Tencode|Alley_Pave', 'Condition2_Norm|Exterior1st_Plywood', 'Neighborhood_OldTown|SaleType_WD', 'RoofMatl_CompShg|PavedDrive_Y', 'Neighborhood_NridgHt|LotConfig_Inside', 'PoolQC_Tencode|Exterior1st_MetalSd', 'Exterior1st_MetalSd|Fence_MnPrv', 'GarageQual_Po|CentralAir_Tencode', 'GarageType_Detchd|ExterQual_Fa', 'YearRemodAdd|Fence_MnWw', 'Foundation_Slab|Neighborhood_MeadowV', 'LowQualFinSF|BsmtFinType2_LwQ', 'Heating_GasW|BsmtExposure_Gd', 'LandContour_Bnk|Functional_Min2', 'PavedDrive_Y|MSZoning_RL', 'TotalBsmtSF|Neighborhood_Veenker', 'Neighborhood_Mitchel|RoofMatl_WdShngl', 'BsmtQual_Ex|Exterior1st_WdShing', 'Neighborhood_Blmngtn|FireplaceQu_Po', 'BsmtHalfBath|Exterior1st_BrkComm', 'Neighborhood_Edwards|MSZoning_FV', 'BsmtFinSF1|Exterior1st_Plywood', 'Neighborhood_OldTown|Neighborhood_Timber', 'Neighborhood_Somerst|Condition1_RRAn', 'LotShape_IR2|SaleType_ConLI', 'BsmtFinType2_GLQ|SaleType_COD', 'FireplaceQu_Tencode|Neighborhood_SWISU', 'LandContour_HLS|BsmtCond_TA', 'GarageFinish_RFn|Neighborhood_SawyerW', 'Foundation_Stone|ExterCond_Tencode', 'BldgType_1Fam|MasVnrType_BrkFace', 'Functional_Maj1|GarageCond_Fa', 'BsmtExposure_Av|MSZoning_RH', 'Electrical_FuseF|BldgType_Tencode', 'SaleType_ConLI|BsmtFinType2_LwQ', 'Fireplaces|BsmtCond_TA', 'Foundation_Stone|GarageQual_Fa', 'GarageQual_Po|Street_Grvl', 'Exterior1st_HdBoard|Heating_Tencode', 'BsmtFinType2_Tencode|LotArea', 'SaleType_ConLD|GarageType_2Types', 'LotShape_IR2|GarageQual_Po', 'FireplaceQu_Tencode|GarageYrBlt', 'SaleCondition_Tencode|FireplaceQu_Tencode', 'GarageType_Tencode|BsmtFinType1_ALQ', 'Alley_Pave|Utilities_AllPub', 'SaleCondition_Tencode|GarageCond_Tencode', 'Neighborhood_StoneBr|BsmtFinType1_GLQ', 'Fence_Tencode|BldgType_TwnhsE', 'Exterior2nd_BrkFace|Neighborhood_Timber', '3SsnPorch|SaleType_Oth', 'Street_Grvl|GarageYrBlt', 'Functional_Maj2|Condition1_Norm', 'LotShape_IR1|Street_Grvl', 'Exterior1st_Stucco|Exterior2nd_HdBoard', 'KitchenQual_Ex|Street_Grvl', 'Exterior2nd_BrkFace|Exterior2nd_MetalSd', 'GrLivArea|Exterior2nd_AsphShn', 'BsmtExposure_Tencode|BsmtQual_Fa', 'RoofStyle_Hip|BsmtFinType2_Unf', 'Neighborhood_Tencode|BldgType_1Fam', 'Electrical_FuseP|ExterCond_Gd', 'LandContour_Lvl|Alley_Grvl', 'Exterior2nd_Wd Sdng|Exterior2nd_Plywood', 'BsmtFinType2_Tencode|LandSlope_Tencode', 'EnclosedPorch|BsmtQual_Ex', 'GarageQual_Fa|ExterCond_Gd', 'MSZoning_RM|SaleCondition_Partial', 'LandContour_Low|Exterior1st_BrkComm', 'Exterior2nd_BrkFace|SaleType_ConLI', 'Exterior1st_CemntBd|LowQualFinSF', 'Neighborhood_Mitchel|MSZoning_C (all)', 'RoofStyle_Gambrel|Exterior1st_Wd Sdng', 'GarageQual_Gd|BsmtQual_Gd', 'KitchenQual_Ex|Exterior2nd_MetalSd', 'HeatingQC_TA|FireplaceQu_Gd', 'PavedDrive_Tencode|BsmtExposure_Av', 'Neighborhood_BrDale|BsmtFinType1_Unf', 'Exterior1st_Wd Sdng|Exterior2nd_AsphShn', 'HeatingQC_Tencode|CentralAir_Y', 'BsmtFinType1_ALQ|1stFlrSF', 'Exterior1st_Stucco|ExterQual_Fa', 'Condition1_Artery|Neighborhood_StoneBr', 'Exterior2nd_CmentBd|Foundation_Slab', 'GarageFinish_RFn|Condition2_Norm', 'Neighborhood_Tencode|BedroomAbvGr', 'LandContour_HLS|HouseStyle_1.5Fin', 'GarageQual_TA|Condition1_Norm', 'LotArea|Neighborhood_Sawyer', 'Alley_Tencode|BsmtCond_Gd', 'Neighborhood_SWISU|FireplaceQu_TA', 'Electrical_FuseF|MSZoning_Tencode', 'TotalBsmtSF|Functional_Min2', 'Electrical_SBrkr|MiscFeature_Shed', 'Fireplaces|PavedDrive_Tencode', 'LandContour_Lvl|BsmtExposure_Av', 'HouseStyle_1Story|RoofMatl_CompShg', 'Heating_GasW|Neighborhood_BrkSide', 'Neighborhood_BrDale|OpenPorchSF', 'Functional_Maj2|Condition2_Tencode', 'Condition1_Feedr|LotShape_IR3', 'SaleCondition_Tencode|HouseStyle_Tencode', 'Exterior2nd_MetalSd|BsmtExposure_Av', 'KitchenAbvGr|GarageQual_Gd', 'Condition1_Artery|RoofStyle_Gambrel', 'OverallCond|Exterior1st_Tencode', 'PavedDrive_P|Exterior1st_MetalSd', 'Exterior1st_VinylSd|HouseStyle_SLvl', 'Exterior2nd_VinylSd|LandSlope_Tencode', 'Neighborhood_NoRidge|HeatingQC_Tencode', 'BsmtFinType1_Tencode|LotConfig_Tencode', 'Neighborhood_BrDale|KitchenQual_TA', 'HouseStyle_1.5Unf|Condition1_PosA', 'LowQualFinSF|SaleCondition_Normal', 'YearRemodAdd|HeatingQC_Ex', 'BldgType_2fmCon|Alley_Tencode', 'ScreenPorch|ExterQual_Fa', 'Foundation_Stone|GarageType_Tencode', 'Neighborhood_NridgHt|SaleCondition_Family', 'GrLivArea|GarageArea', 'GarageType_Detchd|Exterior1st_Stucco', 'LowQualFinSF|Exterior1st_Plywood', 'HeatingQC_Tencode|Condition1_RRAn', 'Electrical_FuseA|ExterQual_Fa', 'HouseStyle_1.5Unf|Condition2_Artery', 'Alley_Pave|Condition1_RRAe', 'Exterior2nd_Stucco|BsmtFinType2_BLQ', 'GarageType_Tencode|GarageFinish_Tencode', 'Electrical_FuseF|RoofStyle_Tencode', 'Condition1_Artery', 'Fence_Tencode|ExterQual_Ex', 'Functional_Typ|MSZoning_RM', 'SaleType_WD|SaleType_Oth', 'KitchenAbvGr|RoofStyle_Gambrel', 'LandSlope_Mod|Neighborhood_Edwards', 'Alley_Pave|BsmtExposure_Mn', 'FullBath|RoofMatl_CompShg', 'GarageType_Tencode|BldgType_1Fam', 'MiscFeature_Tencode|SaleCondition_Abnorml', 'GarageCond_Tencode|CentralAir_N', 'GarageCars|OverallCond', 'Exterior1st_AsbShng|GarageQual_Tencode', 'KitchenQual_Gd|GarageQual_TA', 'LandSlope_Mod|Fence_MnWw', 'TotalBsmtSF|MasVnrType_None', 'GarageFinish_Unf|MSZoning_C (all)', 'GarageCars|Exterior2nd_MetalSd', 'FireplaceQu_Po|Exterior2nd_Brk Cmn', 'BsmtCond_Gd|GarageQual_Tencode', 'Street_Grvl|MasVnrArea', 'KitchenAbvGr|BsmtCond_Gd', 'RoofStyle_Hip|Neighborhood_Mitchel', 'LotConfig_CulDSac|ExterCond_Fa', 'Fireplaces|Condition1_PosA', 'SaleType_New|Exterior1st_VinylSd', 'BsmtExposure_Mn|ExterQual_Fa', 'CentralAir_Y|HouseStyle_2.5Unf', 'GarageQual_Tencode|Neighborhood_Timber', 'BsmtCond_TA|Street_Pave', 'Neighborhood_NoRidge|PavedDrive_Tencode', 'Utilities_Tencode|BsmtFinType2_Unf', 'BsmtQual_TA|CentralAir_N', 'Exterior2nd_Brk Cmn|Exterior2nd_AsphShn', 'GarageQual_Fa|GarageQual_Tencode', 'Street_Tencode|LotConfig_CulDSac', 'Heating_Grav|Exterior1st_CemntBd', 'LandSlope_Sev|WoodDeckSF', 'PavedDrive_Tencode|GarageCond_Ex', 'BsmtQual_Fa|LandSlope_Gtl', 'HouseStyle_2.5Unf|Condition2_Norm', 'FireplaceQu_Gd|BsmtFinType1_BLQ', 'GarageType_Detchd|LotConfig_Inside', 'MSZoning_C (all)|Condition2_Artery', 'HouseStyle_1.5Unf|Neighborhood_IDOTRR', 'Exterior1st_Plywood|Neighborhood_MeadowV', 'Neighborhood_Tencode|Neighborhood_SWISU', 'GarageCond_Po|HouseStyle_1.5Fin', 'LandContour_Lvl|MiscFeature_Gar2', 'SaleCondition_Tencode|CentralAir_N', 'Condition2_Tencode|Neighborhood_Crawfor', 'Neighborhood_Mitchel|BsmtFullBath', 'Foundation_PConc|LotConfig_FR2', 'BsmtFinType1_Rec|Condition2_Norm', 'FullBath|SaleType_Oth', 'Foundation_Stone|HouseStyle_SLvl', 'BsmtHalfBath|Exterior2nd_Wd Sdng', 'MiscFeature_Othr|CentralAir_Tencode', 'TotRmsAbvGrd|Exterior1st_Plywood', 'LotConfig_FR2|BsmtFinType2_LwQ', 'Street_Tencode|Fence_Tencode', 'SaleType_Tencode|MSZoning_FV', 'MSZoning_Tencode|Exterior1st_Wd Sdng', 'Fireplaces|Exterior1st_BrkComm', 'RoofStyle_Gable|ExterQual_Gd', 'Neighborhood_Blmngtn|SaleCondition_Alloca', 'SaleType_ConLw|Exterior1st_Stucco', 'PoolArea|MasVnrType_BrkFace', 'BsmtQual_Gd|Exterior1st_MetalSd', 'Exterior1st_AsbShng|RoofStyle_Shed', 'SaleType_ConLD|BsmtFinType2_BLQ', 'LandContour_Low|BsmtFinType1_GLQ', 'GarageCars|Condition1_RRAe', 'MasVnrType_None|PavedDrive_P', 'GarageQual_Fa|MasVnrArea', 'PavedDrive_N|RoofStyle_Shed', 'Functional_Typ|Functional_Maj1', 'Exterior2nd_Brk Cmn|BsmtFinType1_Unf', 'Street_Tencode|Exterior1st_Stucco', 'GarageYrBlt|LotShape_IR3', 'HeatingQC_Tencode|ExterCond_Gd', 'Exterior2nd_BrkFace|BldgType_1Fam', 'GarageType_Basment|BsmtFinType1_GLQ', 'HouseStyle_Tencode|MasVnrArea', 'Exterior2nd_Stone|Functional_Mod', 'TotalBsmtSF|Fence_GdPrv', 'ScreenPorch|BsmtQual_Gd', 'FullBath|GarageType_CarPort', 'Exterior2nd_BrkFace|Fence_MnPrv', 'RoofMatl_Tencode|BsmtExposure_No', 'BldgType_2fmCon|BsmtExposure_No', 'GarageQual_Po|LotConfig_Inside', 'Exterior1st_BrkComm|SaleType_Oth', 'ExterCond_Gd|FireplaceQu_Fa', 'Neighborhood_BrDale|BsmtExposure_No', 'BldgType_Duplex|BsmtExposure_Mn', 'Fence_MnWw|Exterior1st_Plywood', 'BsmtFinType1_Tencode|HeatingQC_Tencode', 'Functional_Mod|2ndFlrSF', 'GrLivArea|Neighborhood_Sawyer', 'YearBuilt|Exterior2nd_Brk Cmn', 'KitchenAbvGr|1stFlrSF', 'Electrical_Tencode|Condition1_PosN', 'SaleCondition_Tencode|LandContour_Bnk', 'ExterCond_TA|Condition1_Norm', 'BsmtFullBath|ScreenPorch', 'Functional_Mod|OverallCond', 'Condition1_PosA|Neighborhood_BrkSide', 'BsmtCond_Po|KitchenQual_TA', 'Exterior1st_CemntBd|Fence_MnWw', 'BldgType_2fmCon|BsmtFinType2_BLQ', 'ExterCond_TA|LandContour_Lvl', 'Exterior1st_BrkFace|Electrical_SBrkr', 'HouseStyle_Tencode|Functional_Maj1', 'SaleType_Tencode|BsmtFinSF1', 'Neighborhood_Somerst|BsmtExposure_Gd', 'Exterior1st_HdBoard|LotArea', 'BsmtFinType2_ALQ|ExterQual_Fa', 'HeatingQC_Fa|Neighborhood_Gilbert', 'Neighborhood_Crawfor|ExterCond_Fa', 'YearRemodAdd|LotConfig_Tencode', 'Heating_Grav|GarageType_BuiltIn', 'MiscFeature_Gar2|HouseStyle_1.5Fin', 'Foundation_CBlock|GarageYrBlt', 'Neighborhood_Veenker|GarageQual_Tencode', 'YrSold|GrLivArea', 'Neighborhood_Veenker', 'ExterCond_TA|Neighborhood_Gilbert', 'Neighborhood_BrDale|HouseStyle_SLvl', 'FireplaceQu_Fa|MasVnrType_BrkFace', 'SaleType_ConLD|Neighborhood_Gilbert', 'Neighborhood_Edwards|GarageCond_Fa', 'KitchenQual_Ex|Functional_Mod', 'ExterCond_Tencode|Condition1_PosN', 'GarageFinish_Tencode|Fence_GdWo', 'LotShape_IR2|BsmtExposure_Mn', 'MiscVal|ExterQual_Gd', 'GarageQual_Gd|Exterior1st_Wd Sdng', 'Exterior2nd_AsbShng|Exterior2nd_VinylSd', 'HeatingQC_Tencode|LowQualFinSF', 'BldgType_Twnhs|MoSold', 'LandContour_Low|BsmtFinType1_BLQ', 'RoofMatl_Tencode|Exterior2nd_HdBoard', 'LotArea|SaleCondition_Abnorml', 'GarageCond_Tencode|GarageType_CarPort', 'Street_Grvl|Street_Pave', 'GarageCars|LandContour_HLS', 'SaleCondition_Partial|ScreenPorch', 'ExterQual_Ex|Street_Grvl', 'Functional_Tencode|SaleCondition_Normal', 'Heating_Grav|FireplaceQu_Fa', 'Foundation_Stone|GarageArea', 'Neighborhood_NridgHt|FireplaceQu_Po', 'Fence_GdPrv|Neighborhood_NAmes', 'LotShape_Tencode|MiscFeature_Gar2', 'Foundation_PConc|Exterior2nd_Wd Sdng', 'SaleType_ConLI|SaleCondition_Normal', 'FireplaceQu_Po|Neighborhood_NoRidge', 'BsmtQual_Tencode|Neighborhood_IDOTRR', 'RoofStyle_Shed|Exterior2nd_Brk Cmn', 'FireplaceQu_Tencode|ScreenPorch', 'LandContour_Low|FireplaceQu_Ex', 'FireplaceQu_Gd|Neighborhood_Tencode', 'BsmtFinType2_ALQ|Exterior1st_VinylSd', 'LandContour_Tencode|MiscFeature_Shed', 'YearRemodAdd|GarageCond_Fa', 'ExterQual_TA|Neighborhood_MeadowV', 'Neighborhood_NAmes|MasVnrType_None', 'YrSold|BsmtCond_Gd', 'GarageQual_TA|KitchenQual_Fa', 'LandContour_Tencode|LandSlope_Tencode', 'GarageFinish_Tencode|RoofStyle_Gable', 'Neighborhood_SWISU|RoofMatl_Tar&Grv', 'BsmtFinType2_GLQ|GarageQual_Fa', 'RoofStyle_Hip|HeatingQC_Ex', 'BsmtQual_Ex|Exterior2nd_Brk Cmn', 'Exterior1st_BrkFace|KitchenQual_TA', 'Exterior2nd_AsbShng|Heating_GasW', 'Neighborhood_NoRidge|BedroomAbvGr', 'Neighborhood_CollgCr|RoofStyle_Shed', 'YearRemodAdd|Neighborhood_StoneBr', 'GarageYrBlt|Exterior1st_MetalSd', 'RoofMatl_Tencode|BsmtFinType2_GLQ', 'Exterior2nd_CmentBd|BsmtCond_Po', 'HeatingQC_Fa|Exterior1st_Stucco', 'RoofMatl_CompShg|Fence_MnWw', 'HouseStyle_SFoyer|GarageFinish_RFn', 'Neighborhood_Veenker|BsmtCond_Tencode', 'Neighborhood_Tencode|OverallCond', 'Neighborhood_NoRidge|GarageArea', 'Neighborhood_SWISU|Condition1_RRAn', 'LandSlope_Mod|GarageQual_Fa', 'TotalBsmtSF|GarageType_Basment', 'Neighborhood_ClearCr|Functional_Min1', 'Fence_Tencode|ExterCond_Gd', 'Condition1_PosA|MSZoning_Tencode', 'RoofMatl_Tencode|GarageFinish_Tencode', 'BsmtCond_Gd|BsmtFinType1_LwQ', 'Exterior1st_HdBoard|BsmtFinSF1', 'GarageType_Attchd|GarageQual_Tencode', 'GarageArea|BsmtFinType1_GLQ', 'SaleCondition_Normal|GarageCond_Ex', 'SaleCondition_Partial|SaleCondition_Abnorml', 'RoofMatl_CompShg|Exterior2nd_MetalSd', 'LandSlope_Mod|MiscFeature_Gar2', 'GarageCond_Ex|CentralAir_Tencode', 'LandSlope_Mod|Condition1_PosA', 'Condition2_Tencode|TotRmsAbvGrd', 'Functional_Typ|ExterCond_Gd', 'Neighborhood_CollgCr|MSZoning_Tencode', 'HeatingQC_Gd|MiscFeature_Othr', 'Condition1_PosA|FireplaceQu_TA', 'Functional_Typ|Electrical_FuseA', 'LotShape_IR1|GarageFinish_Tencode', 'Fence_GdPrv|Exterior1st_VinylSd', 'Neighborhood_Tencode|BsmtFinType1_Unf', 'GrLivArea|Exterior2nd_VinylSd', 'LandContour_Tencode|BsmtFinType2_Rec', 'LotConfig_CulDSac|Alley_Grvl', 'BsmtFinType2_GLQ|LotConfig_Tencode', 'LandSlope_Gtl', '1stFlrSF|FireplaceQu_TA', 'MiscFeature_Shed|SaleType_CWD', 'LandContour_Lvl|BsmtFinType2_Rec', 'GarageCond_Tencode|SaleType_New', 'SaleCondition_Family|BsmtCond_Tencode', 'FireplaceQu_Gd|Foundation_Stone', 'OverallQual|GarageCond_Fa', 'SaleCondition_Abnorml|SaleType_Oth', 'Exterior2nd_MetalSd|Condition1_RRAe', 'BldgType_2fmCon|MSZoning_C (all)', 'LotShape_IR2|MSSubClass', 'RoofStyle_Flat|Neighborhood_Timber', 'Neighborhood_CollgCr|MiscFeature_Gar2', 'Functional_Min1|BsmtCond_Tencode', '2ndFlrSF|ExterQual_Tencode', 'Functional_Maj1|MoSold', 'LotShape_IR1|LandContour_Tencode', 'BsmtFinType2_BLQ|MiscFeature_Gar2', 'Exterior2nd_MetalSd|HouseStyle_2.5Unf', 'ExterCond_Gd|MiscFeature_Gar2', 'Foundation_Tencode|BsmtExposure_Mn', 'Condition2_Tencode|BsmtUnfSF', 'PavedDrive_Tencode|ExterCond_Gd', 'GarageType_Detchd|GarageCond_Po', 'Electrical_FuseF|LotShape_IR3', 'Exterior2nd_Tencode|PavedDrive_P', 'Exterior2nd_Brk Cmn|Exterior1st_MetalSd', 'Condition1_Artery|ExterCond_Tencode', 'Functional_Maj1|BsmtFinType1_GLQ', 'Condition1_Feedr|BsmtQual_Gd', 'GarageType_Detchd|Functional_Typ', 'YearBuilt|LandSlope_Gtl', 'Heating_GasA|Exterior2nd_HdBoard', 'MiscVal|ExterQual_Tencode', 'BsmtQual_Fa|Exterior1st_VinylSd', 'BsmtFinType2_BLQ|HouseStyle_1.5Unf', 'Exterior1st_HdBoard|GarageQual_Fa', 'BsmtFinType2_ALQ|SaleCondition_Normal', 'BsmtFinType2_Tencode|KitchenQual_Tencode', 'BsmtFinType1_LwQ|Exterior1st_Plywood', 'ExterQual_Gd|GarageType_Basment', 'MasVnrType_BrkCmn|Exterior2nd_Brk Cmn', 'LotShape_Reg|LotConfig_Inside', 'Street_Grvl|KitchenQual_TA', 'GarageType_Detchd|Alley_Pave', 'LandSlope_Gtl|Neighborhood_StoneBr', 'Condition1_Norm|KitchenQual_TA', 'SaleCondition_Tencode|LotConfig_Tencode', 'GarageCond_Ex|HouseStyle_1.5Fin', 'RoofStyle_Flat|LotShape_IR1', 'EnclosedPorch|GarageQual_TA', 'LandContour_Lvl|KitchenQual_Fa', 'LotConfig_Tencode|HouseStyle_1.5Fin', 'BsmtFinType1_Rec|MiscFeature_Gar2', 'BldgType_Duplex|MSZoning_RL', 'FireplaceQu_Fa|SaleCondition_Partial', 'Exterior2nd_Tencode|Exterior1st_BrkComm', 'Neighborhood_CollgCr|Exterior2nd_HdBoard', 'Fence_GdWo|Street_Grvl', 'BsmtCond_Gd|BldgType_Tencode', 'HeatingQC_Fa|GarageCond_TA', 'RoofMatl_Tencode|Neighborhood_BrkSide', 'LandContour_Bnk|Neighborhood_StoneBr', 'Exterior2nd_Stucco|HalfBath', 'SaleCondition_Normal|BldgType_TwnhsE', 'LotFrontage|GarageType_Attchd', 'Exterior2nd_Brk Cmn|ExterQual_Tencode', 'Neighborhood_Somerst|BsmtQual_Ex', 'Neighborhood_Crawfor|Exterior1st_VinylSd', 'Condition1_RRAn|Condition2_Norm', 'GarageCond_Fa|Utilities_AllPub', 'Foundation_PConc|Condition1_Norm', 'HouseStyle_1Story|LotFrontage', 'EnclosedPorch|KitchenQual_Tencode', 'Condition1_RRAe|BsmtExposure_Mn', 'LandSlope_Sev|HouseStyle_1.5Unf', 'CentralAir_Tencode|BsmtFinType1_Unf', 'ExterQual_Ex|BsmtCond_TA', 'Functional_Min2|MasVnrType_Tencode', 'GarageQual_Tencode|BldgType_1Fam', 'Foundation_Stone|HouseStyle_2.5Unf', 'HeatingQC_Gd|Heating_Tencode', 'Exterior2nd_Brk Cmn|BsmtCond_TA', 'Exterior1st_Stucco|Neighborhood_NWAmes', 'Condition1_Artery|GarageCond_Po', 'GarageCond_Fa|GarageQual_Tencode', 'Heating_GasW|SaleType_CWD', 'Neighborhood_NridgHt|BsmtCond_TA', 'RoofMatl_Tencode|Exterior2nd_Wd Sdng', 'FullBath|MasVnrType_Stone', 'Fence_Tencode|Neighborhood_NWAmes', 'Electrical_FuseP|Neighborhood_Sawyer', 'FireplaceQu_TA|Exterior2nd_Brk Cmn', 'SaleCondition_Tencode|Neighborhood_SawyerW', 'RoofStyle_Shed|WoodDeckSF', 'FireplaceQu_Fa|ExterQual_Fa', 'Condition1_PosN|GarageCond_Fa', 'BsmtFinType2_Rec|SaleType_Oth', 'Neighborhood_Somerst|SaleType_Tencode', 'FireplaceQu_Tencode|PoolArea', 'Neighborhood_Blmngtn|OpenPorchSF', 'HeatingQC_Fa|FullBath', 'Exterior1st_MetalSd|MasVnrType_Tencode', 'RoofStyle_Gambrel|RoofStyle_Tencode', 'LotArea|PoolArea', 'Electrical_Tencode|RoofStyle_Gable', 'GarageCars|BsmtFinType1_Unf', 'BsmtFinType1_LwQ|WoodDeckSF', 'LandSlope_Sev|LotConfig_Inside', 'Neighborhood_NoRidge|GarageQual_Tencode', 'FireplaceQu_Fa|CentralAir_Tencode', 'Functional_Tencode|GarageFinish_Tencode', 'MSSubClass|ExterQual_Fa', 'PavedDrive_P|Condition1_RRAn', 'Neighborhood_Gilbert|HouseStyle_SLvl', 'LotConfig_Corner|ExterQual_Tencode', 'SaleType_Oth|SaleType_CWD', 'KitchenQual_Ex|BsmtCond_TA', 'GarageType_CarPort|ExterQual_Gd', 'GarageType_Tencode|GarageType_BuiltIn', 'MiscFeature_Othr|BsmtFinSF2', 'MiscFeature_Othr|SaleType_ConLw', 'HeatingQC_Tencode|Exterior1st_WdShing', 'BedroomAbvGr|LotConfig_Tencode', 'Neighborhood_NridgHt|HeatingQC_Tencode', 'SaleType_ConLD|SaleType_COD', 'RoofStyle_Gambrel|Street_Pave', 'TotalBsmtSF|BsmtFinType2_Unf', 'SaleCondition_Alloca|Neighborhood_BrkSide', 'BsmtFinType1_BLQ|FullBath', 'Foundation_PConc|ExterQual_Tencode', 'GarageType_Tencode|Alley_Grvl', 'BsmtFinType1_Tencode|Exterior1st_Stucco', 'MiscFeature_Shed|HouseStyle_SLvl', 'Neighborhood_Mitchel|Exterior1st_Stucco', 'GarageCond_Po|Exterior2nd_CmentBd', 'GarageFinish_Unf|GarageType_CarPort', 'RoofStyle_Flat|Exterior1st_CemntBd', 'LotConfig_FR2|Exterior1st_CemntBd', 'Heating_GasW|SaleType_COD', 'YearBuilt|BsmtExposure_Av', 'GarageCond_Gd|Fence_MnPrv', 'RoofStyle_Flat', 'Neighborhood_Somerst|Neighborhood_ClearCr', 'Fence_GdPrv|Condition2_Tencode', 'RoofMatl_Tencode|Functional_Typ', 'Foundation_Tencode|MasVnrType_Stone', 'GarageFinish_Unf|Neighborhood_MeadowV', 'Neighborhood_Tencode|RoofStyle_Gambrel', 'SaleType_ConLw|RoofStyle_Shed', 'Foundation_Tencode|SaleType_CWD', 'Heating_GasW|Neighborhood_SawyerW', 'Heating_Tencode|SaleCondition_Normal', 'BsmtFinType2_GLQ|Exterior2nd_HdBoard', 'Exterior1st_Stucco|BsmtQual_TA', 'BsmtQual_Fa|HeatingQC_Tencode', 'Electrical_FuseF|SaleType_Oth', 'Utilities_Tencode|LotConfig_Tencode', 'GarageQual_TA|Functional_Mod', 'BsmtFullBath|PoolArea', 'Condition1_PosA|MiscFeature_Gar2', 'RoofStyle_Hip|FullBath', 'BsmtCond_Tencode|BsmtCond_TA', 'Functional_Tencode|Condition1_RRAe', 'LandSlope_Tencode|Exterior2nd_Brk Cmn', 'MiscFeature_Othr|Fireplaces', 'SaleType_COD|GarageQual_Tencode', 'Street_Tencode|Exterior1st_VinylSd', 'BsmtFinType2_ALQ|Neighborhood_Sawyer', 'MasVnrType_None|Street_Pave', 'BldgType_2fmCon|Exterior2nd_Wd Sdng', 'LowQualFinSF|FireplaceQu_Ex', 'LotShape_IR2|Neighborhood_OldTown', 'BsmtHalfBath|BsmtFullBath', 'HouseStyle_SFoyer|Functional_Maj1', 'GarageType_CarPort|ExterQual_Tencode', 'LotShape_IR2|GarageCond_Gd', 'BsmtFinSF2|GarageCond_Ex', 'MasVnrType_BrkCmn|RoofStyle_Tencode', 'Exterior1st_HdBoard|BsmtQual_Gd', 'LandContour_Low|MiscFeature_Gar2', 'GarageFinish_Fin|Fence_GdWo', 'GrLivArea|BsmtFinType2_LwQ', 'BsmtHalfBath|HouseStyle_Tencode', 'Exterior1st_HdBoard|PoolArea', 'PavedDrive_P|GarageYrBlt', 'BsmtQual_Tencode|CentralAir_Y', 'BsmtFinType2_LwQ|HouseStyle_1.5Fin', 'SaleType_ConLw|MoSold', 'BsmtExposure_Tencode|Neighborhood_NoRidge', 'Exterior2nd_BrkFace|PavedDrive_Y', 'YearRemodAdd|Foundation_Stone', 'Exterior2nd_VinylSd|Neighborhood_Sawyer', 'Exterior1st_BrkFace|GarageCond_Po', 'Condition1_Artery|Exterior2nd_MetalSd', 'Neighborhood_Somerst|GarageCond_Ex', 'PoolArea|Functional_Min2', 'Exterior2nd_Stone|Neighborhood_Mitchel', 'SaleType_ConLI|Fence_GdWo', 'KitchenAbvGr|Neighborhood_Tencode', 'Fence_GdWo|Neighborhood_MeadowV', 'BsmtFinType1_Rec|GarageFinish_RFn', 'ExterCond_Gd|Exterior2nd_CmentBd', 'LotArea', 'ExterCond_TA|HouseStyle_2Story', 'RoofStyle_Gable|Exterior2nd_Brk Cmn', 'KitchenQual_Gd|Fence_Tencode', 'BsmtHalfBath|Foundation_BrkTil', 'HouseStyle_1.5Unf|MSZoning_C (all)', 'GarageCond_TA|Functional_Min1', 'LotShape_Tencode|Exterior2nd_MetalSd', 'ExterCond_Gd|SaleCondition_Partial', 'BldgType_Twnhs|ExterCond_Gd', 'Exterior2nd_Stucco|Fireplaces', 'GrLivArea|Exterior1st_Stucco', 'KitchenAbvGr|RoofStyle_Shed', 'SaleType_New|MiscFeature_Gar2', 'Neighborhood_NAmes|Foundation_Slab', 'Exterior1st_HdBoard|HeatingQC_Tencode', 'Functional_Mod|Condition2_Artery', 'HeatingQC_TA|FullBath', 'Exterior2nd_Tencode|Neighborhood_NWAmes', 'Exterior1st_HdBoard|Functional_Typ', 'LotFrontage|Condition1_Tencode', 'RoofStyle_Flat|BsmtFinType2_LwQ', 'RoofStyle_Gambrel|Condition1_Norm', 'LotShape_Tencode|BsmtFinType2_Rec', 'Foundation_BrkTil|Condition1_PosN', 'BsmtUnfSF|Exterior2nd_Wd Shng', 'HouseStyle_1Story|KitchenQual_Tencode', 'Functional_Maj1|BldgType_Tencode', 'HeatingQC_Ex|PavedDrive_P', 'LotShape_IR2|Neighborhood_ClearCr', 'LotArea|Exterior2nd_Wd Sdng', '2ndFlrSF|HouseStyle_1.5Fin', 'Neighborhood_OldTown|HouseStyle_2Story', 'PavedDrive_N|SaleType_New', 'Exterior2nd_Stucco|Condition1_RRAe', 'GarageCond_Tencode|BldgType_TwnhsE', 'LandContour_Bnk|RoofStyle_Gambrel', 'Condition1_Artery|Exterior2nd_Wd Shng', 'BldgType_TwnhsE|SaleType_COD', 'Condition2_Tencode|BsmtFinSF1', 'Neighborhood_ClearCr|Heating_Grav', 'FireplaceQu_Fa|Functional_Mod', 'HouseStyle_1Story|LotArea', 'Neighborhood_CollgCr|BsmtFinType2_Unf', 'KitchenQual_Tencode|BsmtExposure_No', 'RoofStyle_Flat|BsmtExposure_No', 'Exterior2nd_AsbShng|Exterior1st_Wd Sdng', 'RoofStyle_Gable|BsmtFinType1_GLQ', 'MiscFeature_Tencode|ExterCond_Fa', 'LotConfig_Corner|GarageFinish_Fin', 'BldgType_2fmCon|ExterCond_Fa', 'LandContour_Low|GarageArea', 'Foundation_BrkTil|Street_Pave', 'MiscVal|Heating_GasW', 'Utilities_Tencode|Foundation_Stone', 'LowQualFinSF|MSSubClass', 'KitchenAbvGr|HeatingQC_Ex', 'Foundation_Tencode|HouseStyle_2.5Unf', 'Electrical_FuseA|Neighborhood_MeadowV', 'Functional_Mod|MSSubClass', 'ExterQual_Gd|BsmtFinType2_Unf', 'LotShape_IR1|KitchenQual_Gd', 'GrLivArea|PavedDrive_Tencode', 'BsmtQual_Fa|HeatingQC_Ex', 'LandContour_Bnk|Functional_Min1', 'GarageFinish_Fin|PoolArea', 'LandContour_Low|SaleType_CWD', 'LandSlope_Tencode|Electrical_SBrkr', 'OverallCond|ExterCond_Fa', 'Neighborhood_NPkVill|Functional_Maj2', 'BldgType_2fmCon|GarageType_BuiltIn', 'Neighborhood_Blmngtn|GarageCond_TA', 'LotConfig_FR2|BsmtCond_Po', 'Foundation_BrkTil|Neighborhood_NAmes', 'Neighborhood_NoRidge|BsmtCond_Fa', 'RoofStyle_Gambrel|Neighborhood_Sawyer', 'BldgType_Duplex|Foundation_CBlock', 'Exterior1st_AsbShng|MiscFeature_Tencode', 'LandSlope_Sev|MasVnrType_Tencode', 'LotConfig_Tencode|ExterQual_Fa', 'RoofStyle_Flat|Condition1_Feedr', 'GarageCond_Gd|CentralAir_N', 'BldgType_Twnhs|HouseStyle_SLvl', 'Functional_Maj1|BsmtCond_Po', 'Street_Tencode|3SsnPorch', 'Exterior2nd_Stone|BsmtCond_Fa', 'Foundation_Tencode|WoodDeckSF', 'GarageCond_Gd|Foundation_Slab', 'Alley_Pave|GarageType_Tencode', 'Alley_Tencode|GarageType_2Types', 'HeatingQC_Gd|Street_Grvl', 'HouseStyle_Tencode|CentralAir_N', 'BsmtFinType1_Tencode|BldgType_Tencode', 'Foundation_Stone|BldgType_1Fam', 'Street_Tencode|FireplaceQu_Po', 'SaleCondition_Tencode|HeatingQC_Ex', 'LandContour_Lvl|PavedDrive_Tencode', 'RoofStyle_Hip|FireplaceQu_Ex', 'Neighborhood_StoneBr|CentralAir_N', 'KitchenAbvGr|Condition1_PosN', 'RoofStyle_Gable|CentralAir_N', 'EnclosedPorch|Fence_Tencode', 'Foundation_Tencode|GarageType_CarPort', 'MSZoning_C (all)|Alley_Grvl', 'Exterior1st_BrkFace|OpenPorchSF', 'Exterior1st_BrkFace|Heating_Tencode', 'Alley_Pave|BsmtUnfSF', 'Heating_GasW|GarageCond_Ex', 'SaleType_ConLI|Neighborhood_IDOTRR', 'Neighborhood_NPkVill|LandSlope_Gtl', 'Fence_Tencode|Functional_Maj1', 'BsmtFinType2_Unf|WoodDeckSF', 'Exterior1st_BrkComm|WoodDeckSF', 'GarageFinish_Unf|Neighborhood_Timber', 'Neighborhood_Sawyer|LotConfig_Inside', 'ExterCond_Tencode|MiscFeature_Shed', 'Neighborhood_BrDale|ExterQual_Fa', 'FireplaceQu_Tencode|Neighborhood_MeadowV', 'Exterior2nd_Tencode|Exterior2nd_MetalSd', 'SaleType_ConLw|BsmtExposure_Gd', 'Street_Grvl|PoolArea', 'BldgType_Twnhs|FireplaceQu_Fa', 'BldgType_2fmCon|Exterior2nd_Plywood', 'LotShape_IR2|ExterCond_TA', 'Electrical_SBrkr|SaleCondition_Abnorml', 'Electrical_FuseP|Condition1_Tencode', 'BedroomAbvGr|SaleType_CWD', 'Foundation_PConc|MiscFeature_Othr', 'MiscFeature_Othr|BsmtFinType2_Rec', 'BsmtFinType1_BLQ|BldgType_Twnhs', 'LandContour_HLS|Foundation_CBlock', 'ExterQual_TA|BsmtExposure_Mn', 'SaleCondition_Normal|CentralAir_Tencode', 'BsmtFinType2_BLQ|Neighborhood_Gilbert', 'Heating_GasW|BsmtExposure_No', 'EnclosedPorch|Neighborhood_Blmngtn', 'Condition2_Tencode|BsmtExposure_No', 'Exterior2nd_MetalSd|BsmtFinType2_LwQ', 'Exterior1st_CemntBd|BsmtFinType1_Unf', 'LandSlope_Tencode|MasVnrType_BrkCmn', 'LandContour_Tencode|GarageQual_Fa', 'Heating_Grav|FireplaceQu_Ex', 'SaleType_WD|Exterior1st_Tencode', 'PoolQC_Tencode|MasVnrType_Stone', 'Neighborhood_OldTown|Fence_MnPrv', 'SaleType_ConLI|Exterior2nd_HdBoard', 'LandSlope_Sev|MiscFeature_Tencode', 'ExterQual_TA|MiscFeature_Gar2', 'LotShape_Tencode|Foundation_Slab', 'LandContour_Low|Exterior1st_Stucco', 'GarageType_CarPort|PavedDrive_P', 'Neighborhood_Veenker|GarageType_2Types', 'ExterQual_TA|RoofStyle_Shed', 'PavedDrive_N|Condition2_Tencode', 'LotShape_IR2|PavedDrive_Y', 'Foundation_Stone|PoolArea', 'GarageType_Tencode|Neighborhood_SWISU', 'OverallQual|BsmtFinType2_Tencode', 'Neighborhood_Tencode|Neighborhood_SawyerW', 'GarageQual_Fa|MiscFeature_Gar2', 'SaleCondition_Tencode|LandSlope_Sev', 'Electrical_FuseF|Exterior2nd_CmentBd', 'FireplaceQu_Tencode|Neighborhood_Gilbert', 'Neighborhood_ClearCr|Exterior2nd_Wd Shng', 'MSZoning_RL|Utilities_AllPub', 'Exterior2nd_Stucco|ExterCond_Fa', 'SaleCondition_Alloca|Exterior1st_Plywood', 'BsmtFinType1_BLQ|Fireplaces', 'BsmtQual_Ex|Exterior1st_MetalSd', 'SaleType_ConLI|HouseStyle_2.5Unf', 'Neighborhood_Mitchel|SaleType_CWD', 'GrLivArea|ExterQual_Tencode', 'Exterior2nd_Tencode|Exterior2nd_HdBoard', 'Condition1_RRAe|ExterQual_Ex', 'Exterior2nd_CmentBd|Neighborhood_BrkSide', 'MiscFeature_Othr|KitchenQual_TA', 'HouseStyle_SFoyer|BsmtFinType2_BLQ', 'Neighborhood_Edwards|Condition1_Norm', 'HeatingQC_Gd|LotConfig_Tencode', 'BsmtFinType2_GLQ|RoofMatl_Tar&Grv', 'ExterQual_TA|Neighborhood_NAmes', 'Exterior1st_HdBoard|Neighborhood_Crawfor', 'MSZoning_RM|BldgType_1Fam', 'LandSlope_Tencode|Functional_Min1', 'GarageCond_Po|GarageType_Attchd', 'LotShape_Tencode|LotArea', 'Heating_Tencode|Condition2_Tencode', '3SsnPorch|Neighborhood_Crawfor', 'HouseStyle_Tencode|BsmtFinType2_Unf', 'HouseStyle_Tencode|TotRmsAbvGrd', 'Neighborhood_ClearCr|Neighborhood_IDOTRR', 'Neighborhood_Mitchel|Neighborhood_SawyerW', 'HouseStyle_1Story|LandSlope_Gtl', 'KitchenQual_Ex|Functional_Min1', 'Heating_Grav|LowQualFinSF', 'Electrical_FuseA|MoSold', 'Exterior2nd_AsbShng|KitchenQual_Gd', 'Condition1_Artery|LotConfig_FR2', 'Condition2_Artery|ExterQual_Fa', 'Neighborhood_Veenker|BsmtCond_Po', 'FireplaceQu_Gd|ExterCond_Tencode', 'RoofMatl_CompShg|BsmtExposure_Av', 'HeatingQC_Gd|ExterQual_Tencode', 'KitchenQual_Gd|Exterior2nd_Wd Sdng', 'FullBath|Condition2_Tencode', 'GarageArea|ScreenPorch', 'Neighborhood_Edwards|LotShape_IR3', 'OverallQual|ExterCond_Tencode', 'Alley_Pave|SaleType_CWD', 'BsmtQual_Ex|RoofStyle_Tencode', 'Foundation_Tencode|Neighborhood_MeadowV', 'Exterior2nd_HdBoard|BsmtExposure_Mn', 'YrSold|GarageCars', 'MasVnrArea|Exterior1st_Wd Sdng', 'GarageQual_Po|MSZoning_FV', 'Exterior1st_AsbShng|ScreenPorch', 'BedroomAbvGr|BsmtCond_Tencode', 'Exterior1st_CemntBd|Neighborhood_NWAmes', 'LandSlope_Tencode|BsmtQual_Gd', 'MSSubClass|Street_Pave', 'Neighborhood_OldTown|Street_Grvl', 'MiscVal|SaleType_Tencode', 'FireplaceQu_Fa|Exterior2nd_CmentBd', 'Neighborhood_Somerst|3SsnPorch', 'FireplaceQu_Gd|OverallCond', 'PavedDrive_Y|HouseStyle_1.5Unf', 'MiscFeature_Othr|Fence_MnPrv', 'Exterior2nd_Stucco|BsmtFinType1_ALQ', 'Condition1_Artery|Exterior1st_HdBoard', 'HeatingQC_Tencode|Exterior1st_Wd Sdng', 'GarageFinish_RFn|MasVnrType_Stone', 'ExterCond_Tencode|Exterior1st_Plywood', '2ndFlrSF|Neighborhood_StoneBr', 'Neighborhood_NAmes|CentralAir_N', 'FireplaceQu_Tencode|BsmtFinType1_Rec', 'BsmtExposure_Tencode|RoofStyle_Gable', 'SaleCondition_Family|RoofMatl_WdShngl', 'Neighborhood_ClearCr|Exterior1st_WdShing', '3SsnPorch|BsmtCond_Fa', 'PoolQC_Tencode|GarageArea', 'Exterior1st_Stucco|RoofStyle_Tencode', 'MiscFeature_Shed|BldgType_TwnhsE', 'GarageFinish_Unf|Condition2_Tencode', 'FireplaceQu_Fa|Condition2_Norm', 'Condition1_PosN|Exterior2nd_Brk Cmn', 'HeatingQC_Ex|RoofMatl_Tar&Grv', 'SaleType_ConLI|MSSubClass', 'GarageType_Attchd|OverallCond', 'ExterCond_Tencode|Neighborhood_Sawyer', 'GarageType_Detchd|MasVnrType_Tencode', 'YearRemodAdd|LotShape_Reg', 'MSZoning_RM|Foundation_CBlock', 'MiscFeature_Shed|MiscFeature_Tencode', 'Utilities_Tencode|ExterQual_Tencode', 'TotalBsmtSF|MSSubClass', 'PoolQC_Tencode|Street_Pave', 'Exterior2nd_AsbShng|Neighborhood_Edwards', 'Neighborhood_NWAmes|MSZoning_RM', 'GarageQual_TA|Condition1_PosN', 'GarageFinish_Unf|FireplaceQu_Ex', 'GarageCond_Po|Heating_Tencode', 'HeatingQC_Gd|Neighborhood_SWISU', 'Heating_Tencode|Functional_Maj2', 'Neighborhood_NPkVill|PoolQC_Tencode', 'Fence_Tencode|Functional_Min1', 'ScreenPorch|Exterior1st_BrkComm', 'LotFrontage|SaleType_CWD', 'Neighborhood_CollgCr|Neighborhood_IDOTRR', 'Heating_Grav|SaleCondition_Family', 'SaleType_ConLD|CentralAir_N', 'Exterior1st_AsbShng|BsmtFinType1_GLQ', 'ExterCond_Tencode|MSZoning_RL', 'FireplaceQu_Tencode|Functional_Mod', 'Condition2_Tencode|HouseStyle_SLvl', 'TotalBsmtSF|GarageQual_Po', 'Exterior1st_BrkFace|Neighborhood_Somerst', 'KitchenQual_Ex|BsmtFinSF1', 'BsmtQual_Ex|MasVnrType_BrkCmn', 'Neighborhood_SWISU|BsmtCond_Po', 'FireplaceQu_Po|BsmtFinType1_LwQ', 'Neighborhood_NAmes|Functional_Min1', 'MoSold|BsmtExposure_No', 'HeatingQC_Fa|MSSubClass', 'LotConfig_FR2|Street_Pave', 'TotalBsmtSF|CentralAir_Y', 'BsmtFinType2_BLQ|BsmtFinType1_LwQ', 'BsmtFinType2_ALQ|CentralAir_N', 'Exterior1st_Stucco|BsmtExposure_Av', 'RoofStyle_Flat|BldgType_Tencode', 'GarageQual_Po|Neighborhood_NAmes', 'YearBuilt|Heating_GasW', 'Neighborhood_Veenker|MasVnrType_BrkFace', 'Exterior1st_BrkComm|Exterior1st_Tencode', 'GarageFinish_Tencode|Neighborhood_BrkSide', 'Foundation_Tencode|Functional_Maj1', 'SaleCondition_Partial|MasVnrType_Tencode', 'Exterior1st_CemntBd|Exterior2nd_HdBoard', 'BsmtExposure_Gd|Fence_MnPrv', 'Heating_Tencode|SaleType_ConLD', 'Neighborhood_Blmngtn|HouseStyle_1.5Unf', 'SaleType_ConLI|MasVnrType_BrkFace', 'LotArea|GarageYrBlt', 'GarageQual_Gd|BsmtExposure_No', 'PavedDrive_N|BsmtExposure_No', 'Exterior1st_Tencode|BsmtCond_TA', 'YrSold|BldgType_Duplex', 'PavedDrive_N|MSZoning_RL', 'Electrical_Tencode|LandContour_HLS', 'BsmtFinSF2|HeatingQC_Tencode', 'BsmtFinType1_LwQ|Foundation_Slab', 'MasVnrType_None|ExterQual_Tencode', 'Condition1_RRAe|GarageType_Basment', 'PavedDrive_Y|RoofMatl_Tar&Grv', 'Neighborhood_StoneBr|Neighborhood_Crawfor', 'Neighborhood_SWISU|Neighborhood_Sawyer', 'MiscVal|Condition1_Tencode', 'Neighborhood_NAmes|BsmtCond_TA', 'Exterior2nd_Stone|BsmtCond_Po', 'LotShape_IR2|OpenPorchSF', 'RoofMatl_Tar&Grv|LotShape_IR3', 'HouseStyle_Tencode|Neighborhood_NWAmes', 'Exterior1st_BrkComm|BsmtQual_Gd', 'BsmtFinType1_Tencode|PoolArea', 'GarageArea|Exterior2nd_AsphShn', 'LandContour_Bnk|HeatingQC_Tencode', 'GarageCond_Ex|BsmtExposure_Mn', 'Exterior2nd_VinylSd|LandContour_Lvl', 'BsmtHalfBath|OverallCond', 'RoofStyle_Tencode|BsmtFinType1_GLQ', 'FullBath|Neighborhood_NWAmes', 'Fence_GdPrv|GarageType_BuiltIn', 'PavedDrive_N|LotConfig_CulDSac', 'TotalBsmtSF|Condition1_RRAe', 'BsmtFinType1_Rec|Functional_Min2', 'OverallQual|FireplaceQu_Tencode', 'Exterior2nd_AsbShng|LandContour_HLS', 'Electrical_FuseP|MSZoning_RM', 'GarageQual_Gd|LowQualFinSF', 'KitchenAbvGr|GarageCond_Po', 'Neighborhood_Edwards|Condition2_Norm', 'GarageFinish_Unf|Fence_MnPrv', 'FireplaceQu_Ex|MasVnrType_BrkFace', 'Condition1_RRAe|ExterQual_Gd', 'BsmtFinType2_LwQ|MSZoning_RH', 'SaleType_Tencode|Exterior1st_Wd Sdng', 'FireplaceQu_Tencode|Neighborhood_Sawyer', 'BsmtExposure_Tencode|Foundation_PConc', 'GarageQual_Gd|LandContour_Bnk', 'Foundation_PConc|Heating_GasA', 'MiscFeature_Shed|HouseStyle_2Story', 'HeatingQC_Tencode|SaleCondition_Abnorml', 'Functional_Tencode|Foundation_CBlock', 'RoofStyle_Gambrel|Neighborhood_IDOTRR', 'Functional_Min1|Exterior1st_VinylSd', 'Exterior2nd_Stone|Electrical_FuseA', 'SaleType_WD|MSZoning_FV', 'Heating_Tencode|GarageType_BuiltIn', 'MasVnrType_Tencode|LotConfig_Inside', 'RoofStyle_Hip|Exterior1st_Wd Sdng', 'Street_Tencode|MSZoning_Tencode', 'MSSubClass|ExterCond_Fa', 'MiscFeature_Shed|LotConfig_Inside', 'Neighborhood_ClearCr|FireplaceQu_TA', 'FireplaceQu_TA|Exterior1st_Wd Sdng', 'Neighborhood_BrDale|BsmtExposure_Av', 'MSZoning_C (all)|Foundation_CBlock', 'YrSold|Exterior2nd_Tencode', 'BsmtCond_Po|LotShape_IR3', 'Foundation_Stone|Exterior2nd_CmentBd', 'Condition1_Artery|BsmtFinType1_Unf', 'Neighborhood_Timber|BsmtCond_Fa', 'BldgType_Twnhs|2ndFlrSF', 'Electrical_FuseF|MSSubClass', 'BsmtExposure_Tencode|LotShape_IR2', 'Exterior2nd_MetalSd|Neighborhood_Sawyer', 'Neighborhood_Somerst|BsmtCond_Fa', 'Functional_Tencode|BldgType_Tencode', 'BsmtCond_Tencode|SaleType_Oth', 'EnclosedPorch|Electrical_FuseA', 'Exterior2nd_CmentBd|CentralAir_N', 'Exterior2nd_Stucco|Condition1_PosA', 'Foundation_Stone|ExterQual_Fa', 'OverallQual|GarageType_Tencode', 'ExterCond_Tencode|PavedDrive_P', 'BsmtCond_Po|Neighborhood_IDOTRR', 'Neighborhood_SWISU', 'BldgType_Duplex|MasVnrType_BrkFace', 'OpenPorchSF|KitchenQual_TA', 'GarageType_Detchd|Neighborhood_NWAmes', 'PavedDrive_N|LotShape_IR2', 'Exterior2nd_Stone|Fence_MnPrv', 'GarageFinish_Unf|HeatingQC_Fa', 'Neighborhood_Gilbert|Exterior1st_Plywood', 'LotConfig_Corner|LandContour_Tencode', 'LandContour_Low|Fence_Tencode', 'BsmtFinType1_BLQ|Exterior2nd_Plywood', 'BedroomAbvGr|Electrical_SBrkr', 'LotShape_Tencode|RoofStyle_Gambrel', 'LotFrontage|BsmtFinType2_ALQ', 'HeatingQC_TA|BsmtExposure_Av', 'Neighborhood_Somerst|BsmtFinType1_LwQ', 'BsmtFinType1_Tencode|Neighborhood_IDOTRR', 'BsmtFinType1_Rec|LotConfig_Tencode', 'Exterior2nd_Stone|ExterCond_TA', 'Condition2_Norm', 'Functional_Typ|Exterior2nd_BrkFace', 'Condition2_Artery|Neighborhood_SawyerW', 'Neighborhood_OldTown|Neighborhood_Crawfor', 'Functional_Maj2|Exterior1st_VinylSd', 'Functional_Maj2|Functional_Maj1', 'CentralAir_Y|BsmtFinSF1', 'Functional_Maj1|BldgType_1Fam', 'Electrical_SBrkr|PavedDrive_P', 'TotRmsAbvGrd|Exterior2nd_Brk Cmn', 'FireplaceQu_Ex|KitchenQual_TA', 'Neighborhood_Tencode|Condition2_Norm', 'FireplaceQu_Fa|Exterior2nd_Wd Shng', 'YrSold|PoolQC_Tencode', 'Fence_Tencode|PavedDrive_Y', 'Exterior2nd_Stone|KitchenQual_Fa', 'Exterior2nd_Stucco|HeatingQC_Ex', 'HouseStyle_1Story|Functional_Maj1', 'GarageFinish_Unf|LandContour_Lvl', 'GarageCond_TA|Neighborhood_Edwards', 'LotShape_IR2|BsmtCond_Gd', 'BsmtFinType1_Tencode|Functional_Typ', 'MiscFeature_Othr|Condition2_Norm', 'SaleType_CWD|MasVnrType_Tencode', 'SaleCondition_Abnorml|Neighborhood_SawyerW', 'Foundation_Tencode|Functional_Min2', 'BsmtFinType2_Rec', 'BsmtCond_Tencode|FireplaceQu_TA', 'ExterCond_Gd|MoSold', 'Foundation_Tencode|MasVnrType_BrkFace', 'BldgType_Duplex|BldgType_2fmCon', 'HouseStyle_2.5Unf|OverallCond', 'GarageFinish_RFn|Exterior1st_Plywood', 'OpenPorchSF|LotShape_IR3', 'Neighborhood_Timber|Neighborhood_MeadowV', 'LotShape_Tencode|Neighborhood_CollgCr', 'GarageFinish_Fin|Foundation_Slab', 'GarageFinish_Unf|MSZoning_RL', 'ExterQual_TA|RoofStyle_Gambrel', 'LotArea|Exterior2nd_HdBoard', 'Electrical_FuseF|FireplaceQu_TA', 'KitchenQual_Ex|Neighborhood_IDOTRR', 'BldgType_Duplex|Neighborhood_BrkSide', 'LandContour_Lvl|Foundation_CBlock', 'Exterior2nd_Stucco|GarageCond_Ex', 'LotShape_Tencode|BsmtFinSF1', 'Heating_Tencode|BsmtQual_Ex', 'Neighborhood_Tencode|BsmtQual_Gd', 'Heating_Tencode|FireplaceQu_TA', 'Exterior1st_AsbShng|BsmtFinType2_ALQ', 'Condition1_RRAn|Exterior1st_WdShing', 'Heating_GasW|BsmtUnfSF', 'SaleCondition_Tencode|BsmtQual_Ex', 'Exterior1st_HdBoard|HeatingQC_Fa', 'FireplaceQu_Tencode|RoofStyle_Tencode', 'SaleCondition_Tencode|MSZoning_C (all)', 'HouseStyle_1Story|MasVnrType_None', 'RoofStyle_Flat|LandSlope_Mod', 'LotConfig_Tencode|CentralAir_Y', 'EnclosedPorch|LotFrontage', 'GarageCond_TA|MasVnrArea', 'OverallCond|GarageType_2Types', 'BsmtFinType2_GLQ|MiscFeature_Tencode', 'PavedDrive_N|OpenPorchSF', 'Fireplaces|Exterior2nd_CmentBd', 'ExterCond_Tencode|BsmtFinType1_GLQ', 'Foundation_BrkTil|SaleType_Oth', 'LowQualFinSF|Neighborhood_BrkSide', 'Neighborhood_NPkVill|HalfBath', 'KitchenAbvGr|BsmtExposure_Av', 'BsmtUnfSF|HouseStyle_SLvl', 'ExterCond_TA|Electrical_Tencode', 'Neighborhood_Veenker|MasVnrType_BrkCmn', 'CentralAir_N|Fence_MnPrv', 'GrLivArea|Exterior1st_Plywood', 'SaleType_New|BsmtExposure_Gd', 'SaleType_WD|BsmtUnfSF', 'OpenPorchSF|ExterQual_Ex', 'BsmtExposure_Tencode|PoolQC_Tencode', 'RoofStyle_Flat|BsmtCond_Tencode', 'Fence_Tencode|LandSlope_Sev', 'Exterior2nd_HdBoard|BsmtCond_TA', 'Functional_Tencode|MSZoning_Tencode', 'TotRmsAbvGrd|Exterior1st_VinylSd', 'YearRemodAdd|GarageQual_Tencode', 'LotShape_IR1|SaleType_ConLw', 'RoofStyle_Gable|KitchenQual_TA', 'Exterior1st_Stucco|Foundation_CBlock', 'GarageType_Detchd|BldgType_Twnhs', 'MasVnrType_BrkFace|MSZoning_RH', 'Neighborhood_NWAmes|SaleType_Oth', 'Neighborhood_SawyerW|Utilities_AllPub', 'Functional_Maj2|MasVnrType_None', 'RoofMatl_CompShg|MasVnrArea', 'Fireplaces|LandContour_Tencode', 'Condition2_Tencode|Fence_MnPrv', 'LandSlope_Tencode|MasVnrType_Tencode', 'KitchenQual_Tencode|BsmtFinType2_Rec', 'OverallCond|Exterior1st_Wd Sdng', 'MiscFeature_Othr|Exterior1st_MetalSd', 'Exterior1st_AsbShng|Functional_Mod', 'Exterior2nd_Stucco|Exterior2nd_Plywood', 'Condition2_Tencode|BsmtCond_Gd', 'BsmtFinType1_Tencode|Exterior1st_HdBoard', 'Foundation_PConc|BsmtCond_Fa', 'LotFrontage|SaleCondition_Normal', 'KitchenAbvGr|Heating_GasW', 'GarageCond_TA|HouseStyle_SLvl', 'RoofMatl_CompShg|BsmtExposure_No', 'LandSlope_Tencode|RoofStyle_Shed', 'Foundation_Stone|KitchenQual_Fa', 'SaleCondition_Alloca|GarageYrBlt', 'LandContour_HLS|Neighborhood_IDOTRR', 'LotConfig_Corner|Neighborhood_BrkSide', 'Exterior2nd_Stone|Functional_Min2', 'BsmtFinType2_GLQ|BsmtFinType1_ALQ', 'Exterior2nd_Wd Sdng|SaleCondition_Abnorml', 'SaleCondition_Tencode|MoSold', 'Heating_GasW|BsmtQual_Ex', 'Neighborhood_Edwards|HouseStyle_SLvl', 'Condition1_RRAn|Fence_MnWw', 'Exterior2nd_AsbShng|HouseStyle_1.5Fin', 'Neighborhood_Mitchel|SaleCondition_Partial', 'BsmtFinType1_ALQ|Alley_Grvl', 'BsmtFinType2_Tencode|SaleType_CWD', 'Exterior2nd_HdBoard|LotShape_IR3', 'TotalBsmtSF|Neighborhood_Mitchel', 'HouseStyle_Tencode|LotShape_IR3', 'MSSubClass|SaleType_COD', 'HouseStyle_SFoyer|BsmtQual_Ex', 'BsmtFinType1_Unf|BsmtCond_TA', 'SaleCondition_Alloca|BsmtCond_Gd', 'Functional_Tencode|GarageType_2Types', 'Foundation_Stone|ExterQual_Tencode', 'BsmtExposure_Tencode|HouseStyle_1.5Unf', 'LandContour_Tencode|SaleType_WD', 'RoofStyle_Gambrel|CentralAir_Tencode', 'Exterior1st_HdBoard|GarageFinish_Fin', 'Alley_Tencode|BldgType_TwnhsE', 'BsmtFinType2_Tencode|Utilities_AllPub', 'RoofMatl_CompShg|Street_Pave', 'RoofMatl_WdShngl|BsmtExposure_No', 'FireplaceQu_Tencode|Neighborhood_Veenker', 'SaleCondition_Family|Condition2_Norm', 'Neighborhood_Veenker|GarageType_CarPort', 'Foundation_Stone|BsmtFinType2_Rec', 'Street_Tencode|Exterior1st_CemntBd', 'BsmtFinType1_BLQ|KitchenQual_Ex', 'GrLivArea|Exterior2nd_Plywood', 'Foundation_Stone|Condition2_Tencode', 'FireplaceQu_Po|Fence_GdPrv', 'LotShape_Reg|Heating_Tencode', 'GarageFinish_Tencode|Exterior2nd_Wd Shng', 'ExterQual_Tencode|MSZoning_RL', 'GarageFinish_Unf|MasVnrType_Stone', 'GarageQual_Gd|Condition2_Artery', 'BsmtFinType2_LwQ|Foundation_Slab', 'Fence_Tencode', 'Condition1_PosN|Neighborhood_StoneBr', 'BsmtQual_Tencode|BsmtFinType1_Unf', 'Exterior1st_Stucco|SaleType_Oth', 'BsmtCond_Po|OverallCond', 'LotShape_Tencode|YearRemodAdd', 'GarageCond_Tencode|Functional_Maj1', 'LandContour_Tencode|ExterCond_Fa', 'Exterior2nd_VinylSd|Exterior1st_Wd Sdng', 'PoolArea|Neighborhood_BrkSide', 'OverallQual|BsmtExposure_No', '3SsnPorch|BsmtCond_Po', 'GarageCond_Po|LotConfig_Inside', 'BsmtExposure_Tencode|BsmtFinSF1', 'LotConfig_FR2|Neighborhood_StoneBr', 'Neighborhood_SWISU|BldgType_1Fam', 'GarageCond_Po|FireplaceQu_Ex', 'BsmtFullBath|BsmtFinType1_GLQ', 'BsmtQual_Gd|Street_Pave', 'Exterior1st_AsbShng|Condition2_Norm', 'Neighborhood_NAmes|LandSlope_Gtl', 'YearRemodAdd|Exterior1st_CemntBd', 'FireplaceQu_Gd|BldgType_TwnhsE', 'Neighborhood_NPkVill|Neighborhood_Veenker', 'GarageType_Basment|Exterior1st_WdShing', 'RoofMatl_WdShngl|MasVnrType_Tencode', 'BedroomAbvGr|GarageQual_Tencode', 'LotConfig_Corner|Neighborhood_Tencode', 'ExterCond_Gd|GarageType_Basment', 'Exterior2nd_VinylSd|MSZoning_RH', 'GarageCond_Tencode|HouseStyle_2.5Unf', 'ExterQual_Ex|Functional_Mod', 'KitchenQual_Gd|GarageType_BuiltIn', 'Electrical_FuseA|BsmtCond_Tencode', 'YearBuilt|GarageType_BuiltIn', 'Exterior2nd_Stone|CentralAir_N', 'BsmtFinType1_Tencode|LotShape_IR1', 'Alley_Tencode|LandContour_HLS', 'EnclosedPorch|GarageCond_Tencode', 'Exterior1st_BrkFace|LotShape_IR3', 'LotShape_Tencode|Exterior2nd_Stucco', 'Functional_Maj2|CentralAir_Y', 'Neighborhood_ClearCr|BldgType_Twnhs', 'PavedDrive_N|RoofStyle_Tencode', 'LotShape_Reg|RoofStyle_Tencode', 'SaleType_Oth|LotShape_IR3', 'GarageCond_TA|CentralAir_N', 'Fence_MnWw|GarageType_2Types', 'BsmtUnfSF|SaleType_Oth', 'HouseStyle_1.5Unf|Exterior2nd_Brk Cmn', 'Neighborhood_Somerst|Neighborhood_SWISU', 'HouseStyle_1.5Unf|SaleType_CWD', 'Condition1_RRAn|GarageType_2Types', 'Condition1_Artery|OpenPorchSF', 'KitchenQual_TA|LotConfig_Inside', 'Alley_Tencode|HouseStyle_2Story', 'Electrical_FuseP|LandSlope_Tencode', 'Neighborhood_Mitchel|Neighborhood_Gilbert', 'GrLivArea|ExterCond_Fa', 'SaleType_ConLI|GarageType_Basment', 'Neighborhood_Edwards|HouseStyle_2.5Unf', 'BsmtFinType1_BLQ', 'GarageQual_Gd|LotConfig_Tencode', 'GarageCond_Gd|Exterior1st_Tencode', 'Electrical_Tencode|Fence_GdWo', 'Neighborhood_NridgHt|MiscFeature_Tencode', 'HouseStyle_1.5Unf|Condition1_RRAn', 'GarageCars|GarageFinish_RFn', 'MSZoning_RM|GarageQual_Tencode', 'Neighborhood_Sawyer|BsmtCond_Fa', 'SaleCondition_Alloca|GarageCond_Fa', 'GarageType_BuiltIn|MasVnrType_BrkFace', 'GarageFinish_Tencode|Condition1_PosN', 'SaleCondition_Tencode|TotRmsAbvGrd', 'RoofMatl_WdShngl|Exterior1st_WdShing', 'Exterior1st_CemntBd|Neighborhood_Sawyer', 'HeatingQC_Fa|Neighborhood_Somerst', 'BsmtFinType1_Rec|BsmtFinType1_LwQ', 'BsmtQual_TA|Condition2_Artery', 'KitchenQual_Gd|PavedDrive_P', 'GarageType_Detchd|KitchenQual_Ex', 'Heating_Tencode|LotConfig_Inside', 'RoofStyle_Hip|Neighborhood_Veenker', 'LandContour_HLS|MSZoning_RM', 'Foundation_Stone|Neighborhood_SWISU', 'Exterior2nd_VinylSd|ExterCond_Gd', 'BsmtFinSF2|BsmtFinType1_Rec', 'Electrical_SBrkr|3SsnPorch', 'Exterior2nd_Stone|SaleCondition_Partial', 'HeatingQC_Tencode|BsmtCond_Gd', 'Condition2_Norm|Exterior1st_Wd Sdng', 'GarageType_Tencode|Fence_MnWw', 'Street_Tencode|HouseStyle_1.5Unf', 'PavedDrive_N|TotalBsmtSF', 'BldgType_2fmCon|GarageArea', 'SaleCondition_Family|HalfBath', 'GarageCond_Po|LotConfig_Tencode', 'Neighborhood_Edwards|Utilities_AllPub', 'KitchenQual_Tencode|MasVnrType_Tencode', 'LotArea|BsmtFullBath', 'Functional_Typ|ScreenPorch', 'LotFrontage|ExterCond_Tencode', 'Neighborhood_Crawfor|SaleType_CWD', 'BldgType_2fmCon|Functional_Maj2', 'Neighborhood_NridgHt|TotRmsAbvGrd', 'BedroomAbvGr|Condition2_Artery', 'HeatingQC_Ex|HouseStyle_2Story', 'FireplaceQu_Tencode|Condition1_Artery', 'HouseStyle_SFoyer|Exterior1st_WdShing', 'Electrical_Tencode|LotShape_IR3', 'PoolQC_Tencode|GarageFinish_RFn', 'LandContour_Lvl|Exterior2nd_AsphShn', 'HeatingQC_TA|MSZoning_C (all)', 'RoofMatl_Tencode|LotConfig_CulDSac', 'FireplaceQu_Fa|WoodDeckSF', 'LotConfig_FR2|BsmtFinType2_BLQ', 'Neighborhood_NAmes|MSZoning_Tencode', 'HeatingQC_Ex|GarageYrBlt', 'BsmtFinType1_BLQ|MSZoning_Tencode', 'MiscFeature_Tencode|CentralAir_N', 'YearBuilt|CentralAir_N', 'Condition1_RRAn|Neighborhood_Timber', 'MiscFeature_Shed|MSZoning_RH', 'Exterior2nd_CmentBd|MSSubClass', 'HeatingQC_Fa|GarageCars', 'ExterQual_TA|LandContour_Bnk', 'Neighborhood_Mitchel|MSZoning_Tencode', 'PavedDrive_P|SaleType_Oth', 'Foundation_Tencode|CentralAir_Y', 'HeatingQC_Gd|MSZoning_Tencode', 'GarageQual_Gd|GarageFinish_Tencode', 'BsmtExposure_Tencode|LotConfig_Tencode', 'HalfBath|SaleType_Oth', 'SaleType_ConLw|MSZoning_RH', 'GarageArea|FireplaceQu_TA', 'GarageType_Attchd|BsmtExposure_Gd', 'Exterior2nd_Stone|Condition1_RRAe', 'LandContour_Bnk|GarageType_Basment', 'SaleType_ConLD|BsmtFinType1_Rec', 'LandContour_Tencode|Electrical_FuseF', 'HeatingQC_TA|BsmtQual_Gd', 'BsmtFinType2_Rec|Exterior2nd_Wd Shng', 'Neighborhood_NridgHt|HeatingQC_Ex', 'BsmtFinType1_Unf|MSZoning_FV', 'Neighborhood_Sawyer|BsmtExposure_Mn', 'GarageQual_Gd|Heating_Grav', 'SaleType_WD|Neighborhood_IDOTRR', 'Functional_Min1|ExterQual_Tencode', 'GarageCond_TA|BsmtFinType1_Rec', 'BsmtFinType2_LwQ|Fence_MnPrv', 'Electrical_FuseP|MSZoning_RL', 'Neighborhood_NridgHt|Exterior2nd_CmentBd', 'YearRemodAdd|Neighborhood_OldTown', 'FullBath|GarageType_Tencode', 'LotConfig_FR2|BsmtQual_TA', 'Neighborhood_Somerst|1stFlrSF', 'BsmtFinType1_Rec|Neighborhood_MeadowV', 'Exterior2nd_Stone|Fence_GdWo', 'GarageCond_TA|LandContour_Tencode', 'KitchenQual_Ex|Foundation_Slab', 'RoofStyle_Hip|BsmtFinType2_Tencode', 'Street_Grvl|Fence_MnWw', 'PavedDrive_N|MoSold', 'Fireplaces|Exterior1st_AsbShng', 'HeatingQC_TA|Foundation_Tencode', 'LotArea|Exterior1st_BrkComm', 'BsmtQual_Ex|Condition1_RRAn', 'Exterior1st_Stucco|BsmtQual_Gd', 'FireplaceQu_Gd|HouseStyle_2.5Unf', 'FireplaceQu_Ex|MasVnrType_Stone', 'Exterior2nd_AsbShng|3SsnPorch', 'Neighborhood_NPkVill|FireplaceQu_TA', 'Neighborhood_Somerst|HalfBath', 'RoofMatl_Tencode|GarageQual_Gd', 'HouseStyle_1.5Unf|Neighborhood_NAmes', 'HeatingQC_Tencode|GarageQual_TA', 'Neighborhood_NridgHt|CentralAir_N', 'GarageFinish_Fin|Exterior1st_MetalSd', 'RoofStyle_Shed|LotConfig_Inside', 'HalfBath|Functional_Mod', 'RoofStyle_Gambrel|Neighborhood_NAmes', 'Alley_Pave|Heating_Tencode', 'BsmtFinSF2|Neighborhood_IDOTRR', 'LandContour_Lvl|GarageYrBlt', 'Foundation_Stone|MasVnrType_BrkCmn', 'Foundation_CBlock|PoolArea', 'Exterior2nd_Wd Sdng|BldgType_TwnhsE', 'Street_Tencode|Heating_Tencode', 'Neighborhood_NridgHt|SaleCondition_Normal', 'HeatingQC_Fa|Neighborhood_Veenker', 'KitchenQual_Tencode|RoofStyle_Gable', 'RoofMatl_Tencode|Condition2_Norm', 'Neighborhood_SWISU|MSZoning_Tencode', 'Street_Tencode|GarageQual_Po', 'LandContour_Low|Condition1_Tencode', 'BsmtFinType1_Unf|Street_Pave', 'GarageCond_TA|Fireplaces', 'LotConfig_Corner|Street_Grvl', 'Foundation_PConc|GarageType_2Types', 'Condition1_Artery|YrSold', 'Exterior2nd_CmentBd|ExterQual_Gd', 'BsmtFullBath|GarageFinish_Tencode', 'SaleType_ConLw|Neighborhood_NAmes', 'GarageCond_Tencode|LandContour_Lvl', 'GarageCond_Ex', 'BsmtFinType2_ALQ|GarageQual_TA', 'FireplaceQu_TA|HouseStyle_1.5Fin', 'GarageQual_Gd|Fireplaces', 'FireplaceQu_Ex|Exterior1st_VinylSd', 'PavedDrive_Tencode|HalfBath', 'Exterior1st_HdBoard|Neighborhood_CollgCr', 'LandContour_Low|GrLivArea', 'HouseStyle_1Story|Neighborhood_NAmes', 'Neighborhood_NoRidge|LandContour_HLS', 'Neighborhood_Sawyer|Exterior1st_VinylSd', 'HeatingQC_TA|GarageFinish_RFn', 'YearBuilt|BsmtCond_Fa', 'Functional_Min1|Exterior2nd_Brk Cmn', 'LandSlope_Mod|PavedDrive_Y', 'Functional_Mod|Neighborhood_Crawfor', 'Neighborhood_NridgHt|FullBath', 'Neighborhood_BrkSide|HouseStyle_SLvl', 'EnclosedPorch|ExterCond_Tencode', 'SaleType_Tencode|Fence_MnWw', 'Neighborhood_NPkVill|KitchenQual_TA', 'Neighborhood_NWAmes|Exterior2nd_Wd Sdng', 'Electrical_FuseA|WoodDeckSF', 'PoolArea|Street_Pave', 'LotConfig_Corner|ExterQual_Ex', 'RoofMatl_Tar&Grv|HouseStyle_2Story', 'Exterior1st_Stucco|Neighborhood_SawyerW', 'KitchenQual_Ex|HouseStyle_SLvl', 'Neighborhood_Somerst|Foundation_BrkTil', 'Heating_GasW|Utilities_AllPub', 'BsmtCond_Gd|Condition2_Norm', 'HeatingQC_Tencode|ExterQual_Tencode', 'BldgType_Twnhs|BsmtExposure_Gd', 'Exterior2nd_Tencode|SaleType_ConLD', 'Electrical_Tencode|OverallCond', 'PavedDrive_Y|Functional_Min2', 'GarageType_Basment|Alley_Grvl', 'BsmtQual_Ex|Condition2_Tencode', 'LandContour_Lvl|Condition1_PosA', 'Heating_GasW|GarageFinish_RFn', 'LotConfig_FR2|LotConfig_Inside', 'MiscFeature_Tencode|GarageType_2Types', 'Heating_GasA|BsmtQual_TA', 'Exterior1st_Plywood|Street_Pave', 'RoofMatl_Tencode|ExterQual_Gd', 'LotShape_Reg|WoodDeckSF', 'Neighborhood_IDOTRR|ExterCond_Fa', 'Exterior1st_HdBoard|BsmtQual_Ex', 'Exterior1st_BrkComm|Utilities_AllPub', 'BsmtQual_Ex|Neighborhood_BrkSide', 'Functional_Mod|MasVnrType_Tencode', 'Foundation_BrkTil|BsmtFinType1_LwQ', 'CentralAir_Tencode|Condition2_Norm', 'Utilities_Tencode|RoofStyle_Hip', 'GarageType_Detchd|MSZoning_C (all)', 'MiscFeature_Othr|RoofStyle_Gable', 'Electrical_FuseP|Street_Grvl', 'BsmtCond_Tencode|SaleType_COD', 'BsmtFinType2_GLQ|Functional_Mod', 'Utilities_Tencode|FireplaceQu_Po', 'ExterCond_Gd|Utilities_AllPub', 'Electrical_SBrkr|BsmtUnfSF', 'Street_Tencode|FireplaceQu_Ex', 'Condition2_Tencode|GarageType_CarPort', 'ExterCond_Tencode|Condition1_Feedr', 'GarageFinish_RFn', 'Neighborhood_Blmngtn|Functional_Min1', 'GarageQual_Gd|RoofStyle_Gambrel', 'Neighborhood_NridgHt|KitchenQual_Tencode', 'LandContour_Low|Functional_Maj1', 'SaleCondition_Alloca|OverallCond', 'GarageQual_Gd|Neighborhood_NAmes', 'Functional_Tencode|Exterior1st_WdShing', 'OverallCond|Exterior2nd_Plywood', 'GarageCond_Tencode|PoolArea', 'FireplaceQu_Po|RoofStyle_Gambrel', 'Condition1_PosN|GarageType_Basment', 'SaleType_ConLw|BsmtFullBath', 'BsmtQual_Ex|ExterQual_Gd', 'ExterQual_Gd|Exterior1st_BrkComm', '3SsnPorch|MSZoning_Tencode', 'GarageQual_Po|ExterQual_Ex', 'GarageFinish_Unf|Exterior1st_WdShing', 'RoofMatl_Tencode|MiscFeature_Shed', 'Functional_Tencode|FireplaceQu_Po', 'BsmtExposure_No|BsmtCond_TA', 'Alley_Pave|SaleType_ConLD', 'Exterior2nd_AsbShng|Electrical_FuseP', 'TotRmsAbvGrd|SaleType_CWD', 'GarageYrBlt|Fence_MnWw', 'LotShape_IR2|Exterior2nd_Plywood', 'Functional_Tencode|GarageQual_TA', 'RoofStyle_Hip|SaleType_COD', 'Neighborhood_NWAmes|Neighborhood_BrkSide', 'Neighborhood_CollgCr|BsmtFinType1_ALQ', 'Functional_Tencode|HeatingQC_Ex', 'HouseStyle_1Story|BsmtCond_Po', 'SaleType_WD|Exterior1st_BrkComm', 'BldgType_1Fam|MSZoning_RL', 'TotalBsmtSF|LotShape_IR3', 'Neighborhood_Blmngtn|Fireplaces', 'BsmtExposure_Tencode|Electrical_FuseA', 'MSSubClass|GarageYrBlt', 'Neighborhood_ClearCr|Exterior2nd_BrkFace', 'Exterior2nd_Tencode|MSZoning_C (all)', 'KitchenQual_Tencode|Neighborhood_NWAmes', 'GarageCond_Gd|SaleType_New', 'MiscFeature_Shed|BsmtCond_TA', 'Exterior2nd_VinylSd|Exterior2nd_HdBoard', 'Exterior2nd_MetalSd|GarageCond_Fa', 'SaleType_ConLI|Foundation_CBlock', 'LotShape_IR3|Fence_MnPrv', 'BldgType_Duplex|BsmtQual_TA', 'PavedDrive_Tencode|GarageArea', 'GarageYrBlt|RoofMatl_WdShngl', 'GarageCars|Functional_Min2', 'SaleType_Tencode|Neighborhood_Timber', 'BsmtFinType1_ALQ|BsmtFinType2_LwQ', 'Functional_Tencode|MoSold', 'LotConfig_CulDSac|Functional_Min1', 'RoofStyle_Shed|CentralAir_N', 'PoolQC_Tencode|RoofStyle_Shed', 'Neighborhood_BrDale|Alley_Pave', 'Street_Tencode|Heating_Grav', 'Exterior2nd_Stucco|Neighborhood_NWAmes', 'LotConfig_CulDSac|RoofStyle_Gable', 'Foundation_Stone|MSZoning_FV', 'Exterior1st_BrkFace|BsmtFinType2_ALQ', 'BsmtQual_Tencode|BsmtHalfBath', 'HouseStyle_Tencode|SaleType_New', 'SaleType_COD|Exterior1st_Wd Sdng', 'LandContour_Lvl|FireplaceQu_Ex', 'FireplaceQu_Gd|BsmtFinType2_BLQ', 'LotConfig_Tencode|Exterior2nd_AsphShn', 'GarageCond_Fa|ExterCond_Fa', 'SaleType_New|MasVnrType_BrkFace', 'Neighborhood_OldTown|Exterior1st_BrkComm', 'Alley_Tencode|Neighborhood_Mitchel', 'Exterior1st_CemntBd|Street_Grvl', 'GarageType_Attchd|GarageType_CarPort', 'Fireplaces|GarageType_Basment', 'GarageCond_Po|GrLivArea', 'RoofMatl_WdShngl|BsmtCond_TA', 'BsmtQual_Fa|MSZoning_FV', 'LotShape_Reg|SaleType_Oth', 'GarageType_2Types', 'RoofStyle_Hip|BsmtFullBath', 'Neighborhood_NPkVill|BsmtFinType2_GLQ', 'Exterior1st_VinylSd|MasVnrType_BrkFace', 'GarageType_Detchd|Heating_GasA', 'RoofStyle_Flat|LotConfig_Inside', 'Electrical_FuseA|SaleType_COD', 'HeatingQC_Tencode|Neighborhood_Gilbert', 'HouseStyle_1Story|Functional_Maj2', 'Electrical_FuseP|BsmtQual_TA', 'Condition2_Artery|Street_Pave', 'Neighborhood_ClearCr|MasVnrType_Stone', 'Functional_Typ|MasVnrType_Tencode', 'BsmtCond_Po|BsmtCond_Tencode', 'YearRemodAdd|BldgType_TwnhsE', 'Electrical_Tencode|BsmtCond_Tencode', 'GarageCond_Tencode|GarageType_BuiltIn', 'HouseStyle_1.5Unf|OverallCond', 'HouseStyle_Tencode|SaleCondition_Family', 'BsmtCond_Po|MiscFeature_Gar2', 'Foundation_CBlock|GarageType_2Types', 'BsmtFinType2_Rec|LotConfig_Tencode', 'Electrical_FuseP|OpenPorchSF', 'BsmtCond_Gd|BsmtFinSF1', 'Neighborhood_Tencode|Exterior1st_WdShing', 'GarageType_Tencode|BsmtFinType1_GLQ', 'BsmtFullBath|MasVnrType_Tencode', 'BsmtExposure_Tencode|CentralAir_Y', 'BsmtFinType1_Rec', 'RoofStyle_Hip|Neighborhood_MeadowV', 'FireplaceQu_Gd|Condition2_Artery', 'YrSold|YearBuilt', 'Exterior2nd_Brk Cmn|Neighborhood_MeadowV', 'BsmtCond_Tencode|Exterior2nd_HdBoard', 'HeatingQC_Gd|Condition1_PosA', 'Heating_Tencode|BsmtFinType2_BLQ', 'FireplaceQu_Po|Condition1_Tencode', 'Street_Grvl|Neighborhood_Timber', 'Foundation_CBlock|SaleType_Oth', 'Neighborhood_CollgCr|SaleCondition_Family', 'GarageType_Detchd|LandSlope_Mod', 'Neighborhood_StoneBr|Street_Pave', 'PavedDrive_N|ExterCond_Tencode', 'LandContour_Bnk|FireplaceQu_Fa', 'RoofMatl_Tencode|Exterior2nd_Brk Cmn', 'SaleCondition_Normal|GarageQual_Po', 'GarageQual_Fa|BsmtExposure_Mn', 'Neighborhood_CollgCr|GarageCond_Tencode', 'Foundation_CBlock|BsmtExposure_Mn', 'BsmtFinType2_Tencode|Exterior1st_Wd Sdng', 'Fireplaces|GarageQual_Tencode', 'Exterior1st_VinylSd|Neighborhood_Timber', 'Electrical_Tencode|MasVnrType_Tencode', 'Electrical_FuseF|MSZoning_RL', 'Exterior1st_Stucco|Fence_Tencode', 'ExterCond_TA', 'BsmtQual_TA|SaleCondition_Normal', 'RoofMatl_WdShngl|Neighborhood_MeadowV', 'Neighborhood_Somerst|MSZoning_RL', 'ExterCond_Gd|GarageFinish_Tencode', 'HeatingQC_Tencode|Functional_Maj1', 'LandContour_Low|HeatingQC_TA', 'Exterior2nd_Stucco|Functional_Maj1', 'Neighborhood_Mitchel|Electrical_FuseF', 'LandSlope_Gtl|Condition2_Artery', 'Functional_Maj2|GarageArea', 'LotShape_IR1|GarageType_2Types', 'Functional_Tencode|GarageFinish_Fin', 'Functional_Min1|MSZoning_FV', 'Neighborhood_Blmngtn|Electrical_Tencode', 'BsmtFinType2_BLQ|BsmtFinSF1', 'RoofStyle_Hip|MasVnrType_Stone', 'Fence_GdPrv|RoofStyle_Gable', 'LandContour_Lvl|TotRmsAbvGrd', 'GarageCond_Fa|Neighborhood_SawyerW', 'GarageType_Detchd|BsmtFinType2_Tencode', 'Neighborhood_CollgCr|Foundation_Slab', 'BsmtFinSF2|MasVnrArea', 'Exterior2nd_MetalSd|Functional_Mod', 'Exterior2nd_Tencode|Exterior2nd_Brk Cmn', 'GarageFinish_Fin|MSZoning_RM', 'BldgType_Duplex|HouseStyle_1.5Unf', 'Heating_GasW|HouseStyle_1.5Fin', 'ExterQual_Gd|Condition1_RRAn', 'RoofStyle_Flat|BsmtFinType1_Rec', 'Neighborhood_Somerst|BsmtCond_TA', 'KitchenAbvGr|Neighborhood_CollgCr', 'KitchenQual_Tencode|MasVnrType_BrkCmn', 'BsmtCond_Gd|Exterior1st_Tencode', 'KitchenQual_TA|HouseStyle_1.5Fin', 'Exterior1st_AsbShng|BsmtCond_Gd', 'Fence_Tencode|GarageArea', '1stFlrSF|Exterior2nd_HdBoard', 'Electrical_Tencode|Exterior2nd_Wd Shng', '3SsnPorch|RoofStyle_Gambrel', 'Neighborhood_CollgCr|LandContour_Bnk', 'Neighborhood_Sawyer|HouseStyle_2Story', 'YearRemodAdd|CentralAir_Tencode', 'GarageCond_TA|GarageType_Tencode', 'Alley_Tencode|KitchenQual_Ex', 'LotConfig_CulDSac|MSZoning_C (all)', 'GarageType_Detchd|GarageFinish_RFn', 'Utilities_Tencode|LandSlope_Mod', 'HouseStyle_SLvl|MSZoning_FV', 'Street_Pave|HouseStyle_2Story', 'Alley_Pave|GarageCond_Fa', 'LotShape_Tencode|3SsnPorch', 'Condition1_Artery|FireplaceQu_Ex', 'MSZoning_C (all)|MoSold', 'Heating_GasA|HalfBath', 'Fence_GdWo|CentralAir_Y', 'SaleCondition_Partial|BsmtQual_Gd', 'LotConfig_Corner|Exterior2nd_Wd Sdng', 'LotShape_IR2|BsmtFinType2_LwQ', 'Functional_Maj2|Exterior1st_BrkComm', 'MiscFeature_Shed|BldgType_1Fam', 'LotArea|HouseStyle_2Story', 'Foundation_PConc|GarageQual_Tencode', 'BsmtFinType2_BLQ|BsmtQual_TA', 'Electrical_FuseA|GarageType_Basment', 'OpenPorchSF|BsmtFinType1_LwQ', 'Functional_Maj2|MSZoning_C (all)', 'MiscFeature_Tencode|Exterior2nd_AsphShn', 'BsmtFinType2_ALQ|BsmtQual_TA', 'Electrical_SBrkr|Alley_Grvl', 'Exterior2nd_Stucco|RoofStyle_Gambrel', 'BsmtFinType2_Tencode|HouseStyle_1.5Unf', 'Condition1_PosN|Exterior1st_Plywood', 'HeatingQC_TA|SaleCondition_Family', 'Exterior1st_AsbShng|Neighborhood_StoneBr', 'Alley_Pave|BsmtFullBath', 'Exterior2nd_Plywood|Utilities_AllPub', 'Foundation_PConc|LotShape_IR1', 'Exterior1st_HdBoard|RoofStyle_Gable', 'LotShape_Tencode|MasVnrType_BrkFace', 'PavedDrive_N|Exterior2nd_AsbShng', 'GarageCond_TA|GarageArea', 'Neighborhood_Veenker|LotShape_IR3', 'Exterior1st_HdBoard|CentralAir_N', 'ExterQual_Ex|KitchenQual_Fa', 'CentralAir_N|Exterior2nd_Plywood', 'Exterior2nd_Stucco|ScreenPorch', 'LotConfig_Tencode|BsmtFinType1_GLQ', 'Exterior2nd_Stucco|LandSlope_Sev', 'ExterQual_TA|Neighborhood_Timber', 'Exterior1st_HdBoard|FireplaceQu_TA', 'Alley_Pave|BsmtExposure_Gd', 'SaleType_ConLD|SaleType_ConLI', 'MiscFeature_Gar2|MasVnrType_Stone', 'KitchenQual_Tencode|CentralAir_Tencode', 'GarageCond_Gd|BsmtFinSF1', 'MoSold|Neighborhood_IDOTRR', 'LandContour_Tencode|Neighborhood_SawyerW', 'Functional_Mod|Functional_Min2', 'MasVnrType_BrkCmn|KitchenQual_Fa', 'BsmtFinType1_LwQ|Exterior1st_BrkComm', 'HeatingQC_TA|LandSlope_Mod', 'LandContour_Low|GarageQual_Po', 'Neighborhood_Edwards|MSZoning_RM', 'ExterQual_Gd|MasVnrType_BrkFace', 'Functional_Typ|LandSlope_Tencode', 'Foundation_Stone|Exterior2nd_Tencode', 'BsmtHalfBath|Exterior1st_VinylSd', 'HeatingQC_Ex|Exterior2nd_Wd Shng', 'Electrical_Tencode|GarageFinish_Tencode', 'GarageCond_Po|HouseStyle_2.5Unf', 'GarageFinish_Fin|Exterior2nd_Tencode', 'Functional_Mod|Exterior2nd_Brk Cmn', 'Condition2_Artery|Exterior1st_VinylSd', 'SaleType_ConLD|SaleType_New', 'ExterCond_TA|Neighborhood_StoneBr', 'MiscVal|GarageQual_TA', 'SaleType_New|Condition1_RRAn', 'RoofStyle_Flat|RoofStyle_Gable', 'Condition1_Feedr|Neighborhood_BrkSide', 'Neighborhood_Mitchel|RoofStyle_Gable', 'Exterior2nd_Wd Sdng|MSZoning_RL', 'Neighborhood_NWAmes|BsmtCond_Tencode', 'LotConfig_CulDSac|OpenPorchSF', 'BldgType_Twnhs|HouseStyle_2Story', 'ExterQual_TA|FireplaceQu_Gd', 'TotalBsmtSF|Exterior1st_HdBoard', 'Exterior1st_Stucco|BsmtFinType2_LwQ', 'HouseStyle_SFoyer|Neighborhood_SWISU', 'Heating_GasA|Electrical_FuseP', 'Neighborhood_OldTown|Neighborhood_NWAmes', 'HeatingQC_Fa|SaleCondition_Partial', 'BsmtFinType1_LwQ|Street_Pave', 'GarageQual_TA|Exterior2nd_Wd Shng', 'Condition1_RRAn|WoodDeckSF', 'HouseStyle_2.5Unf|BsmtFinSF1', 'HeatingQC_TA|BsmtFinType2_ALQ', 'Neighborhood_Edwards|SaleType_COD', 'Heating_Grav|RoofMatl_WdShngl', 'LandContour_Tencode|HeatingQC_Tencode', 'Fence_Tencode|BedroomAbvGr', 'PavedDrive_N|HeatingQC_Fa', 'LandContour_Bnk|Exterior1st_Plywood', 'HalfBath|Exterior1st_BrkComm', 'ExterQual_TA|BsmtQual_Gd', 'GarageFinish_Fin|YearBuilt', 'GarageFinish_Fin|Neighborhood_NoRidge', 'PoolArea|Foundation_Slab', 'Electrical_Tencode|Condition1_PosA', 'BsmtQual_Tencode|BsmtFinSF2', 'LandSlope_Tencode|GarageCond_Fa', 'Fence_GdWo|MasVnrType_Tencode', 'BldgType_2fmCon|OverallCond', 'SaleType_ConLI|GarageQual_TA', 'KitchenQual_Tencode|RoofMatl_WdShngl', 'Condition1_PosA|Electrical_FuseF', 'Functional_Mod|Neighborhood_BrkSide', 'LotConfig_Corner|LandContour_Lvl', 'Neighborhood_NWAmes|Functional_Min1', 'KitchenQual_Gd|FireplaceQu_TA', 'BsmtFinType2_ALQ|RoofStyle_Shed', 'Exterior1st_AsbShng|BsmtFinType2_BLQ', 'GrLivArea|GarageType_Attchd', 'RoofStyle_Gambrel|HouseStyle_2Story', 'BsmtFinType2_LwQ|HouseStyle_2.5Unf', 'LotShape_IR1|Exterior2nd_VinylSd', 'Condition1_Feedr|MSZoning_RL', 'SaleCondition_Normal|FireplaceQu_TA', 'Exterior1st_AsbShng|GarageQual_Po', 'Exterior1st_BrkFace|LotConfig_Tencode', 'KitchenQual_Ex|GarageType_Basment', 'GarageCond_Gd|MSZoning_Tencode', 'Exterior2nd_Stone|ScreenPorch', 'BsmtCond_Gd|Neighborhood_Crawfor', 'BsmtFinType2_Rec|Fence_MnPrv', 'GarageQual_Gd|BsmtExposure_Gd', 'Exterior1st_BrkFace|BsmtCond_Tencode', 'Exterior1st_CemntBd|SaleType_New', 'PavedDrive_Tencode|Exterior1st_Wd Sdng', 'Condition1_Feedr|Neighborhood_Timber', 'Foundation_CBlock|Fence_GdWo', 'BsmtCond_Gd|OverallCond', 'Neighborhood_Gilbert|ExterQual_Fa', 'Condition2_Norm|BsmtFinType1_GLQ', 'GarageQual_Fa|MiscFeature_Shed', 'KitchenAbvGr|Exterior2nd_VinylSd', 'GarageType_Attchd|Exterior2nd_Plywood', 'Exterior2nd_Stone|SaleCondition_Alloca', 'HalfBath|ExterQual_Ex', 'Electrical_Tencode|LotConfig_Tencode', 'PoolQC_Tencode|GarageFinish_Tencode', 'Alley_Tencode|Utilities_AllPub', 'BsmtFinType1_BLQ|Neighborhood_Tencode', 'LotConfig_FR2|SaleType_CWD', 'SaleCondition_Partial', 'ExterCond_Tencode|BsmtCond_Tencode', 'BsmtFinType2_ALQ|GarageType_CarPort', 'Condition1_Feedr|ExterQual_Fa', 'BsmtFinType2_Rec|Exterior1st_WdShing', 'RoofStyle_Hip|BldgType_Twnhs', 'LotShape_IR1|FireplaceQu_Po', 'RoofMatl_Tencode|BsmtFinSF2', 'SaleType_Oth|Condition1_RRAn', 'RoofStyle_Flat|BsmtFinType2_BLQ', 'Exterior2nd_Stucco|Condition1_Feedr', 'ExterCond_Tencode|RoofStyle_Gable', 'LandContour_Lvl|MasVnrArea', 'Neighborhood_NoRidge|Neighborhood_NAmes', 'RoofMatl_Tencode|Heating_Tencode', 'Functional_Typ|HouseStyle_SLvl', 'Exterior1st_BrkComm|MasVnrType_Tencode', 'Exterior2nd_Tencode|Condition1_Feedr', 'Exterior1st_BrkFace|Exterior2nd_Tencode', 'LowQualFinSF|Condition2_Norm', 'BsmtFinType2_GLQ|BsmtHalfBath', 'BsmtCond_Tencode|Condition1_RRAn', 'FireplaceQu_Tencode|BsmtExposure_Av', 'HouseStyle_Tencode|Exterior1st_MetalSd', 'Exterior2nd_Stone|LandContour_Tencode', 'GarageCond_TA|FullBath', 'BsmtFinSF2|KitchenQual_Ex', 'BsmtUnfSF|Exterior1st_BrkComm', 'Neighborhood_SWISU|MiscFeature_Tencode', 'Exterior2nd_VinylSd|OpenPorchSF', 'LandContour_Bnk|Neighborhood_Crawfor', 'Heating_Grav|GarageQual_Po', 'BedroomAbvGr|Functional_Min2', 'SaleCondition_Tencode|Electrical_FuseF', 'MiscVal|Condition2_Artery', 'Neighborhood_Somerst|Heating_Tencode', 'ExterQual_Gd|Fence_GdWo', 'Condition1_PosA|MSZoning_RL', 'PoolQC_Tencode|HouseStyle_1.5Fin', 'SaleCondition_Alloca|BsmtQual_Gd', 'GarageQual_TA|Exterior1st_CemntBd', 'Exterior2nd_Stucco|GarageQual_Tencode', 'SaleType_Tencode|HouseStyle_1.5Fin', 'Exterior1st_HdBoard|MiscFeature_Shed', 'HouseStyle_1Story|GarageType_2Types', 'TotalBsmtSF|KitchenQual_TA', 'MasVnrType_BrkFace|Exterior1st_Wd Sdng', 'GarageType_Tencode|Condition1_PosA', 'KitchenQual_Tencode|GarageType_Attchd', 'HalfBath|GarageCond_Gd', 'BsmtFinType2_GLQ|MSZoning_RL', 'YrSold|ExterCond_Gd', 'GarageFinish_RFn|FireplaceQu_TA', 'HouseStyle_1Story|Exterior1st_MetalSd', 'Exterior1st_BrkFace|GarageCond_Fa', 'MasVnrType_None|Exterior2nd_Plywood', 'BsmtExposure_Tencode|BsmtQual_Tencode', 'Neighborhood_CollgCr|KitchenQual_Tencode', '3SsnPorch|Exterior1st_CemntBd', 'BsmtHalfBath|GarageCond_Tencode', 'HouseStyle_Tencode|Heating_Tencode', 'SaleCondition_Family|SaleCondition_Normal', 'Exterior1st_BrkComm|CentralAir_N', 'SaleCondition_Abnorml|BldgType_Tencode', 'BldgType_Tencode|KitchenQual_TA', 'Foundation_Stone|BsmtFullBath', 'GarageQual_Po|GarageYrBlt', 'Condition1_PosN|WoodDeckSF', 'GarageCond_Tencode|Neighborhood_NAmes', 'OverallQual|Condition2_Artery', 'ExterCond_Tencode|MasVnrType_BrkFace', 'BsmtFinType2_Unf|FireplaceQu_TA', 'KitchenQual_Tencode|Condition2_Artery', 'Exterior2nd_Stone|BsmtFinType1_LwQ', 'Neighborhood_NoRidge|LotConfig_Inside', 'BsmtFinType2_ALQ|Neighborhood_NoRidge', 'Heating_Tencode|PoolArea', 'YearBuilt|FireplaceQu_TA', 'Neighborhood_Blmngtn|HeatingQC_Fa', 'SaleCondition_Alloca|FireplaceQu_Ex', 'Electrical_FuseP|Electrical_FuseA', 'Condition1_Norm|Neighborhood_Sawyer', 'KitchenQual_Gd|GarageType_Tencode', 'Foundation_BrkTil|Condition1_Feedr', 'Fence_GdWo|SaleCondition_Abnorml', 'GarageCars|MasVnrArea', 'Exterior2nd_Stone|BsmtCond_Tencode', 'Neighborhood_CollgCr|Functional_Mod', 'Neighborhood_NPkVill|Heating_Grav', 'PavedDrive_N|HouseStyle_2.5Unf', 'LotConfig_CulDSac|GarageType_BuiltIn', 'MSSubClass|CentralAir_N', 'HalfBath|BsmtFinSF1', 'YrSold|LandContour_Lvl', 'Functional_Tencode|SaleCondition_Family', 'LotShape_IR2|1stFlrSF', 'Utilities_Tencode', 'MiscFeature_Shed|Functional_Min1', 'GarageFinish_Tencode|Neighborhood_MeadowV', 'BsmtFinType2_GLQ|BsmtFinType2_BLQ', 'MSZoning_C (all)|Neighborhood_Gilbert', 'Neighborhood_Mitchel|Neighborhood_Crawfor', 'Exterior2nd_VinylSd|PavedDrive_P', 'LandSlope_Mod|Exterior2nd_HdBoard', 'GarageType_Attchd|Exterior1st_Wd Sdng', 'Heating_Tencode|Exterior2nd_CmentBd', 'LotConfig_FR2|LandSlope_Tencode', 'Neighborhood_BrDale|RoofStyle_Gambrel', 'MoSold|BsmtExposure_Gd', 'FireplaceQu_Fa|MasVnrType_BrkCmn', 'Exterior2nd_BrkFace|Neighborhood_StoneBr', 'MiscFeature_Othr|GarageCond_Ex', 'SaleType_Tencode|KitchenQual_Tencode', 'Heating_Tencode|Street_Grvl', 'Exterior2nd_Stucco|PoolQC_Tencode', 'Functional_Typ|GarageCond_Fa', 'GarageQual_TA|FireplaceQu_Ex', 'BsmtFinType2_Tencode|BsmtFinSF1', 'Alley_Pave|Electrical_Tencode', 'LandSlope_Mod|1stFlrSF', 'MSZoning_C (all)|BsmtExposure_Av', 'GarageCars|MasVnrType_Stone', 'KitchenQual_Ex|RoofStyle_Shed', 'SaleType_ConLw|BsmtExposure_Av', 'OverallQual|GarageQual_Gd', 'Foundation_BrkTil|MasVnrType_Stone', 'Exterior2nd_Tencode|LandContour_Tencode', 'MasVnrType_None|CentralAir_N', 'YrSold|BsmtFinSF1', 'BsmtFinType1_Tencode|CentralAir_N', 'SaleCondition_Family|Exterior1st_BrkComm', '3SsnPorch|TotRmsAbvGrd', 'SaleType_ConLw|ExterCond_Tencode', 'Utilities_Tencode|CentralAir_N', 'GarageType_Tencode|ExterQual_Gd', 'Foundation_BrkTil|GarageType_Tencode', 'HouseStyle_1Story|LandSlope_Tencode', 'LotShape_Tencode|Fence_Tencode', 'TotalBsmtSF|Exterior2nd_Tencode', 'SaleCondition_Family|WoodDeckSF', 'Exterior1st_BrkComm|BldgType_Tencode', 'Alley_Tencode|HouseStyle_2.5Unf', 'Alley_Tencode|BsmtFinType1_Rec', 'ExterCond_TA|Neighborhood_NWAmes', 'RoofMatl_CompShg|MasVnrType_Tencode', 'FireplaceQu_Tencode|BsmtQual_TA', 'GarageQual_Gd|Neighborhood_CollgCr', 'BsmtQual_Tencode|Utilities_AllPub', 'LandContour_Low|Neighborhood_StoneBr', 'LandSlope_Sev|3SsnPorch', 'RoofMatl_CompShg|Condition1_RRAe', 'BsmtFinType2_Tencode|MasVnrType_BrkCmn', 'RoofStyle_Flat|Neighborhood_Veenker', 'Heating_GasW|GarageType_BuiltIn', 'BsmtFinType2_ALQ|Neighborhood_SWISU', 'LotArea|BsmtHalfBath', 'LandContour_Tencode|Neighborhood_MeadowV', 'FireplaceQu_Fa|SaleType_CWD', 'LandContour_HLS|Neighborhood_OldTown', 'BsmtHalfBath|Condition1_Feedr', 'MasVnrType_None|Exterior1st_Wd Sdng', 'Neighborhood_Edwards|Exterior2nd_Brk Cmn', 'HouseStyle_Tencode|Neighborhood_Gilbert', 'PoolArea|CentralAir_N', 'MiscFeature_Gar2|Foundation_Slab', 'BldgType_TwnhsE|SaleCondition_Abnorml', 'SaleCondition_Normal|MasVnrType_Tencode', 'Foundation_PConc|Heating_Grav', 'Neighborhood_Somerst|Foundation_CBlock', 'Foundation_PConc|MSZoning_FV', 'ExterQual_Gd|Exterior2nd_HdBoard', 'OverallQual|ExterQual_Ex', 'GarageType_CarPort|Exterior1st_VinylSd', 'KitchenAbvGr|Neighborhood_SawyerW', 'ExterQual_Gd|Neighborhood_MeadowV', '2ndFlrSF|BldgType_1Fam', 'SaleType_ConLw|Exterior2nd_Plywood', 'Alley_Tencode|Functional_Mod', 'OverallCond|ExterQual_Fa', 'FireplaceQu_Tencode|CentralAir_Y', 'SaleType_ConLD|BedroomAbvGr', 'Exterior2nd_Tencode|RoofStyle_Shed', 'Neighborhood_SWISU|Functional_Mod', 'Condition1_Artery|PavedDrive_Y', 'RoofMatl_Tencode|GarageCond_Po', 'Condition1_Artery|HouseStyle_Tencode', 'BsmtHalfBath|HouseStyle_SLvl', 'LandSlope_Tencode|GarageCond_Gd', 'LotConfig_FR2|Neighborhood_NWAmes', 'BsmtFinType1_ALQ|ExterQual_Ex', 'KitchenQual_Gd|LandContour_Lvl', 'Foundation_Tencode|SaleType_New', 'GarageFinish_Unf|SaleCondition_Family', 'GarageCond_Po|MoSold', 'Neighborhood_ClearCr|Neighborhood_Sawyer', 'Street_Pave|Utilities_AllPub', 'BldgType_Twnhs|Exterior1st_CemntBd', 'BsmtFinType1_ALQ|Neighborhood_NWAmes', 'Street_Tencode|SaleCondition_Abnorml', 'GarageType_Tencode|Functional_Min1', 'GarageType_Tencode|MSZoning_C (all)', 'BsmtQual_Ex|BsmtExposure_Mn', 'Condition1_RRAe|BsmtFinType1_GLQ', 'BsmtFinType1_Tencode|PoolQC_Tencode', 'YrSold|HouseStyle_Tencode', 'LandContour_Low|ExterQual_Fa', 'Exterior1st_Stucco|FireplaceQu_Fa', 'GarageCond_TA|Exterior2nd_AsphShn', 'Neighborhood_NAmes|Neighborhood_SawyerW', 'Alley_Tencode|2ndFlrSF', 'LandContour_Low|Street_Pave', 'KitchenQual_Gd|KitchenQual_TA', 'GarageCond_TA|KitchenQual_TA', 'BsmtFinType1_BLQ|HouseStyle_SLvl', 'YearRemodAdd|LotConfig_Corner', 'BsmtFinType1_BLQ|BsmtFinSF2', 'RoofStyle_Flat|Neighborhood_Gilbert', 'BsmtFinSF1|MasVnrType_Tencode', 'ExterCond_Gd|GarageArea', 'BldgType_2fmCon|Exterior2nd_AsphShn', 'Neighborhood_NoRidge|Neighborhood_StoneBr', 'Neighborhood_NPkVill|BsmtFinSF2', 'Alley_Tencode|Exterior2nd_BrkFace', 'BsmtExposure_Tencode|LandSlope_Gtl', 'Neighborhood_NoRidge|BsmtQual_Fa', 'FireplaceQu_Fa|Fence_GdWo', 'Neighborhood_SWISU|Exterior2nd_Wd Sdng', 'Street_Pave|ExterCond_Fa', 'ExterCond_TA|ExterQual_Gd', 'BsmtFinType2_ALQ|BsmtHalfBath', 'Exterior2nd_CmentBd|FireplaceQu_Ex', 'Foundation_PConc|HalfBath', 'HeatingQC_Gd|MSZoning_RL', 'Electrical_FuseF|Exterior2nd_AsphShn', 'EnclosedPorch|RoofStyle_Gambrel', 'Exterior1st_HdBoard|Exterior1st_Tencode', 'Condition2_Tencode|MasVnrType_BrkCmn', 'Foundation_BrkTil|Fence_MnPrv', 'Exterior1st_Stucco|Fence_GdPrv', 'Foundation_Tencode|GarageCond_Gd', 'HouseStyle_1.5Unf', 'Condition1_RRAe|Street_Pave', 'RoofStyle_Gable|MasVnrArea', 'Neighborhood_ClearCr|OpenPorchSF', 'Street_Tencode|ExterQual_Fa', 'BsmtQual_Tencode|HouseStyle_Tencode', 'Exterior2nd_Brk Cmn|MiscFeature_Gar2', 'HouseStyle_SFoyer|Neighborhood_BrkSide', 'KitchenQual_Ex|Functional_Maj1', 'LotConfig_Tencode|Foundation_Slab', 'HouseStyle_1Story|GarageCond_Ex', 'BsmtFinType1_BLQ|Foundation_BrkTil', 'Neighborhood_Blmngtn|PavedDrive_Y', 'HouseStyle_SFoyer|BsmtExposure_Av', 'SaleType_New|BldgType_1Fam', 'HalfBath|GarageQual_Fa', 'Neighborhood_CollgCr|Neighborhood_Edwards', 'Electrical_FuseF|Functional_Min1', 'Functional_Maj2|MasVnrType_BrkFace', 'BsmtCond_Gd|MSZoning_RH', 'YearBuilt|Neighborhood_Veenker', 'BsmtQual_Tencode|GarageArea', 'GarageCond_TA|BsmtFinSF1', 'FullBath|BsmtQual_Ex', 'Functional_Typ|Neighborhood_Timber', 'HeatingQC_Ex|Condition1_PosA', 'KitchenQual_Tencode|Street_Pave', 'FireplaceQu_Ex|MSSubClass', 'RoofStyle_Gable|MSZoning_RH', 'LowQualFinSF|MasVnrType_None', 'Condition2_Artery|Neighborhood_IDOTRR', 'BsmtFinType1_Rec|BsmtUnfSF', 'RoofStyle_Gambrel|GarageYrBlt', 'FireplaceQu_Gd|Alley_Grvl', 'GarageCond_Tencode|Exterior2nd_Tencode', 'Foundation_BrkTil|PavedDrive_Y', 'LotShape_IR1|Neighborhood_SawyerW', 'Exterior1st_HdBoard|LotConfig_FR2', 'LandContour_HLS|FireplaceQu_Fa', 'Exterior1st_Stucco|MasVnrType_None', 'SaleType_WD|KitchenQual_Tencode', 'LotFrontage|BsmtExposure_No', 'Heating_Tencode|RoofMatl_Tar&Grv', 'YrSold|RoofStyle_Hip', 'KitchenAbvGr|BsmtQual_TA', 'YrSold|BldgType_Tencode', 'HeatingQC_Ex|MasVnrType_Stone', 'Exterior2nd_VinylSd|SaleCondition_Normal', 'PoolQC_Tencode|SaleCondition_Abnorml', 'Condition1_PosN|Exterior1st_BrkComm', 'HalfBath|Fence_GdPrv', 'HeatingQC_Tencode|KitchenQual_TA', 'MSZoning_C (all)|CentralAir_N', 'KitchenQual_Gd|GarageType_2Types', 'Exterior2nd_BrkFace|BsmtFinType2_Rec', 'Heating_Grav|PoolQC_Tencode', 'LotConfig_FR2|BedroomAbvGr', 'GarageType_Tencode|GarageQual_Po', 'GarageCond_TA|GarageType_CarPort', 'GarageType_CarPort', 'Heating_GasW|BsmtQual_Gd', 'Functional_Maj2|Exterior2nd_Wd Shng', 'KitchenQual_Ex|ExterCond_Fa', 'BsmtQual_TA|Exterior2nd_CmentBd', 'MSZoning_RL|Neighborhood_MeadowV', 'Electrical_Tencode|BsmtExposure_No', 'Electrical_FuseP|Exterior2nd_AsphShn', 'RoofMatl_Tencode|Neighborhood_Tencode', 'Neighborhood_Mitchel|HouseStyle_Tencode', 'GarageCond_Fa|ExterQual_Fa', 'HalfBath|FireplaceQu_TA', 'Condition2_Tencode|GarageYrBlt', 'Functional_Tencode|GarageYrBlt', 'BsmtFinType1_Tencode|GarageQual_Gd', 'HouseStyle_1Story|BsmtExposure_Mn', 'Electrical_FuseA|Functional_Min2', 'MiscFeature_Shed|Neighborhood_StoneBr', 'BsmtQual_TA|TotRmsAbvGrd', 'YearBuilt|1stFlrSF', 'CentralAir_Tencode|MSZoning_FV', 'BsmtFinType1_Tencode|BsmtExposure_Mn', 'BsmtFinType2_LwQ|Exterior1st_VinylSd', 'HalfBath|SaleCondition_Normal', 'BldgType_Twnhs|LotConfig_Corner', 'Exterior1st_CemntBd|BldgType_Tencode', 'LandSlope_Mod|MasVnrType_BrkFace', 'Alley_Pave|MasVnrType_BrkFace', 'BsmtFinType2_Rec|HouseStyle_2Story', 'BsmtFinType2_Tencode|RoofMatl_Tar&Grv', 'Neighborhood_NWAmes|BsmtExposure_Av', 'BldgType_2fmCon|BsmtFinSF2', 'TotalBsmtSF|1stFlrSF', 'SaleType_ConLD|Exterior1st_BrkComm', 'GarageType_Detchd|Exterior1st_Wd Sdng', 'FullBath|Exterior2nd_Brk Cmn', 'Heating_GasA|3SsnPorch', 'BsmtCond_TA|HouseStyle_2Story', 'LotConfig_Tencode|RoofMatl_WdShngl', 'BsmtQual_Ex|BsmtExposure_Gd', 'Neighborhood_Tencode|Condition2_Artery', 'FireplaceQu_Po|GarageCond_Gd', 'GarageQual_Tencode|Condition2_Norm', 'Heating_GasW|Neighborhood_Timber', 'OpenPorchSF|BsmtQual_Gd', 'GarageArea|GarageCond_Ex', 'PavedDrive_Y|Utilities_AllPub', 'Neighborhood_Crawfor|HouseStyle_2.5Unf', 'LotShape_IR2|BsmtQual_Fa', 'BsmtCond_Gd|HouseStyle_2.5Unf', 'Neighborhood_CollgCr|Condition1_PosN', 'Foundation_Tencode|Exterior1st_MetalSd', 'GarageQual_Fa|Exterior1st_Plywood', 'MiscFeature_Shed|OpenPorchSF', 'Neighborhood_Somerst|YearBuilt', 'ExterQual_TA|MasVnrArea', 'BsmtFinType1_Rec|OpenPorchSF', 'BsmtFinType2_ALQ|Exterior1st_WdShing', 'GarageCond_Po|MiscFeature_Othr', 'SaleCondition_Tencode|GarageQual_TA', 'LotConfig_CulDSac|GarageType_Attchd', 'Neighborhood_CollgCr|Neighborhood_MeadowV', 'LotShape_IR2|LandContour_HLS', 'Functional_Typ|Exterior2nd_AsphShn', 'RoofMatl_Tencode|MiscFeature_Gar2', 'Exterior2nd_AsbShng|GarageYrBlt', 'KitchenQual_Gd|Exterior2nd_Wd Shng', 'Heating_Tencode|OverallCond', 'Condition1_Artery|Exterior1st_BrkComm', 'PoolQC_Tencode|RoofMatl_WdShngl', 'Neighborhood_Tencode|HeatingQC_Tencode', 'MiscFeature_Shed|GarageYrBlt', 'KitchenAbvGr|BldgType_2fmCon', 'LotConfig_FR2|GarageArea', 'ExterQual_Ex|MasVnrType_Stone', 'Exterior2nd_AsbShng|Condition1_PosA', 'HeatingQC_TA|GarageType_CarPort', 'BsmtQual_Fa|PavedDrive_Tencode', 'Exterior2nd_Stone|HeatingQC_TA', 'Electrical_FuseA|BldgType_1Fam', 'LotShape_IR2|PavedDrive_Tencode', 'HeatingQC_TA|BsmtFinType2_Tencode', 'GarageCond_Po|MasVnrType_BrkCmn', 'HeatingQC_Fa|LandContour_Bnk', 'Exterior1st_CemntBd|Exterior2nd_CmentBd', 'BsmtQual_TA|BsmtFinType1_LwQ', 'SaleType_ConLI|ExterQual_Gd', 'ExterCond_Gd|BsmtUnfSF', 'PavedDrive_Y|LandContour_Lvl', 'RoofStyle_Gable|BsmtQual_Gd', 'Neighborhood_SawyerW|BsmtCond_Fa', 'Heating_Grav|Exterior2nd_Tencode', 'BsmtFinType1_ALQ|BsmtFinType1_Rec', 'Exterior2nd_Stone|KitchenQual_Tencode', 'FullBath|BsmtExposure_Gd', 'BsmtFinType1_BLQ|Neighborhood_Timber', 'FireplaceQu_Tencode|Neighborhood_Somerst', 'KitchenQual_TA|MSZoning_Tencode', 'BsmtHalfBath|Neighborhood_NWAmes', 'GarageFinish_Tencode|MSZoning_RL', 'Electrical_Tencode|ScreenPorch', 'BsmtQual_Tencode|MasVnrArea', 'FireplaceQu_Po|BsmtFinType2_LwQ', 'HeatingQC_TA|Exterior2nd_Tencode', 'GarageQual_Gd|RoofStyle_Shed', 'HeatingQC_Fa|Exterior1st_Tencode', 'Fence_Tencode|Neighborhood_IDOTRR', 'HeatingQC_Tencode|KitchenQual_Fa', 'Fence_Tencode|Foundation_Tencode', 'LotShape_IR1|SaleType_Tencode', 'Condition1_Artery|LandContour_Tencode', 'RoofStyle_Shed|BsmtQual_Gd', 'Neighborhood_Veenker|LotConfig_CulDSac', 'GrLivArea|FireplaceQu_Ex', 'LotShape_IR2|BsmtCond_Tencode', 'FireplaceQu_Po|Exterior1st_Wd Sdng', 'Neighborhood_IDOTRR|Exterior1st_WdShing', 'Electrical_SBrkr|Condition1_Feedr', 'SaleCondition_Partial|GarageFinish_RFn', 'HeatingQC_Fa|Street_Pave', 'YearRemodAdd|BsmtCond_Tencode', 'KitchenQual_Ex|MSSubClass', 'BsmtCond_Po|Street_Pave', 'FireplaceQu_Ex|GarageType_2Types', 'SaleType_Tencode|Condition2_Norm', 'FireplaceQu_Po|HeatingQC_Tencode', 'GarageCars|Foundation_Stone', 'Exterior2nd_CmentBd|SaleCondition_Partial', 'LotShape_Reg|KitchenQual_TA', 'LotShape_IR2|HouseStyle_1Story', 'Condition1_Feedr|GarageType_CarPort', 'BsmtQual_Ex|Neighborhood_Gilbert', 'Condition1_PosA|PavedDrive_P', 'GarageCond_Fa|2ndFlrSF', 'MoSold|SaleType_Oth', 'Exterior1st_Plywood|Fence_MnPrv', 'Electrical_Tencode|BsmtCond_Fa', 'YrSold|LotShape_Reg', 'Foundation_PConc|ExterQual_Ex', 'SaleType_ConLw|FireplaceQu_Fa', 'PoolQC_Tencode|HeatingQC_Ex', 'BsmtExposure_Tencode|LotConfig_Inside', 'LotShape_Reg|HeatingQC_Gd', 'MSSubClass|SaleType_Oth', 'LotFrontage|Condition2_Artery', 'PavedDrive_Y|ExterCond_Fa', 'KitchenQual_Tencode|Functional_Mod', 'FullBath|ExterCond_Fa', 'Neighborhood_Veenker|BsmtQual_Fa', 'Neighborhood_ClearCr|LandSlope_Gtl', 'FireplaceQu_Fa|Fence_MnWw', 'Exterior2nd_Stucco|BsmtCond_Fa', 'Heating_GasA|BsmtQual_Ex', 'GrLivArea|Exterior1st_Tencode', 'GarageCars|Neighborhood_MeadowV', 'BsmtFinType1_ALQ|Neighborhood_MeadowV', 'GarageArea|WoodDeckSF', 'GarageCars|Functional_Maj2', 'Neighborhood_Mitchel|Exterior2nd_Plywood', 'GarageType_BuiltIn|Condition2_Norm', 'Neighborhood_NoRidge|MiscFeature_Shed', 'HeatingQC_TA|2ndFlrSF', 'LandSlope_Tencode|Exterior2nd_AsphShn', 'LotConfig_CulDSac|BsmtFinType2_Unf', 'Condition1_PosA|Exterior2nd_Wd Shng', 'GarageFinish_Fin|Exterior1st_Tencode', 'BedroomAbvGr|SaleType_WD', 'GarageType_Basment|MSZoning_FV', 'OverallCond|MSZoning_FV', 'GarageCond_TA|Functional_Typ', 'Neighborhood_NPkVill|GarageCond_Tencode', 'Fence_Tencode|MasVnrType_Stone', 'Neighborhood_Somerst|HouseStyle_SLvl', 'PavedDrive_Tencode|Functional_Mod', 'MoSold|GarageCond_Fa', 'LandSlope_Mod|Exterior2nd_CmentBd', 'LandContour_HLS|Condition1_Norm', 'Neighborhood_NoRidge|RoofMatl_Tar&Grv', 'Exterior2nd_CmentBd|BsmtCond_Gd', 'BldgType_Tencode|Exterior2nd_Wd Shng', '3SsnPorch|MiscFeature_Gar2', 'FireplaceQu_Tencode|SaleType_ConLI', 'Functional_Maj1|MasVnrType_Stone', 'Electrical_FuseP|Neighborhood_SWISU', 'Neighborhood_Crawfor|LotConfig_Inside', 'Condition1_Tencode|LotShape_IR3', 'GarageType_Tencode|Functional_Maj2', 'Condition2_Tencode|RoofStyle_Shed', 'RoofMatl_Tar&Grv|Exterior1st_VinylSd', 'Foundation_Stone|Exterior1st_Stucco', 'Exterior2nd_Tencode|MiscFeature_Tencode', 'Neighborhood_StoneBr|Fence_MnPrv', 'YrSold|MasVnrArea', 'LotConfig_Tencode|BsmtCond_Po', 'TotRmsAbvGrd|SaleCondition_Abnorml', 'Neighborhood_Sawyer|Exterior1st_Wd Sdng', 'Electrical_FuseF|OpenPorchSF', 'RoofStyle_Flat|Exterior2nd_Tencode', 'OpenPorchSF|BsmtCond_Tencode', 'HeatingQC_TA|Functional_Min2', 'FireplaceQu_Gd|SaleType_ConLI', 'Exterior2nd_Wd Shng|Fence_MnWw', 'LotConfig_FR2|GarageType_Attchd', 'Condition1_Artery|LotShape_IR3', 'GarageType_Attchd|Exterior1st_Tencode', 'KitchenQual_Ex|MSZoning_Tencode', 'Exterior2nd_Stucco|GarageFinish_Fin', 'BsmtExposure_Tencode|BldgType_2fmCon', 'Alley_Tencode|PoolArea', 'RoofMatl_CompShg|Exterior2nd_Plywood', 'SaleType_New|Exterior1st_Plywood', 'BsmtFullBath|Exterior1st_MetalSd', 'Exterior1st_Tencode|Exterior1st_MetalSd', 'GarageCars|LandContour_Tencode', 'KitchenQual_Fa|Exterior1st_Plywood', 'LotShape_Reg|Exterior1st_BrkComm', 'SaleCondition_Tencode|GarageArea', 'LotArea|Neighborhood_NoRidge', 'FireplaceQu_Tencode|Utilities_AllPub', 'SaleType_ConLI|Exterior1st_BrkComm', 'Electrical_SBrkr|Exterior1st_BrkComm', 'Electrical_FuseA|Exterior1st_Stucco', 'Neighborhood_SWISU|Neighborhood_NAmes', 'GarageQual_Gd|Functional_Min1', 'Exterior2nd_AsbShng|GarageType_Basment', 'Electrical_FuseA|BsmtCond_Po', 'Neighborhood_BrDale|RoofMatl_Tar&Grv', 'GarageCars|GarageType_2Types', 'Exterior1st_AsbShng|GarageCond_Tencode', 'RoofStyle_Flat|HeatingQC_Ex', 'Neighborhood_NoRidge|Condition1_RRAn', 'Fence_GdWo|KitchenQual_TA', 'BsmtFinType2_LwQ|SaleCondition_Abnorml', 'Condition1_PosA|Functional_Maj1', 'OverallQual|MasVnrType_None', 'LandContour_Low|BsmtFinType1_ALQ', 'Street_Tencode|Fence_GdWo', 'BldgType_Duplex|Neighborhood_Somerst', 'HouseStyle_SFoyer|BsmtCond_Tencode', 'FireplaceQu_Po|Condition1_RRAn', 'LandContour_Low|MSZoning_RH', 'LotShape_IR1|LandSlope_Mod', 'LandContour_Tencode|BsmtFinType1_ALQ', 'Electrical_Tencode|Condition1_Feedr', 'KitchenQual_Ex|LandContour_Lvl', 'SaleType_ConLI|Functional_Min2', 'Exterior1st_BrkFace|Neighborhood_Veenker', 'LotConfig_CulDSac|Exterior1st_MetalSd', 'BldgType_Twnhs|TotRmsAbvGrd', 'GarageCars|CentralAir_N', 'Neighborhood_Veenker|BsmtCond_Gd', 'Exterior1st_Tencode|Functional_Min2', 'Exterior1st_BrkFace|MasVnrType_None', 'BsmtExposure_Tencode|2ndFlrSF', 'TotRmsAbvGrd|Utilities_AllPub', 'RoofStyle_Gable|BsmtExposure_No', 'PavedDrive_N|Functional_Min2', 'Foundation_CBlock|MiscFeature_Gar2', 'SaleCondition_Tencode|Functional_Typ', 'LotShape_IR1|Exterior1st_MetalSd', 'LowQualFinSF|SaleCondition_Partial', 'HouseStyle_SFoyer|Functional_Maj2', 'GarageQual_Fa|SaleType_Oth', 'Exterior2nd_Wd Sdng|Neighborhood_Sawyer', 'Neighborhood_NoRidge|Exterior2nd_AsphShn', 'Street_Pave|ExterQual_Fa', 'MasVnrType_BrkFace|Exterior2nd_AsphShn', 'GrLivArea|SaleCondition_Normal', 'Condition1_Norm|MasVnrType_None', 'BldgType_TwnhsE|Fence_MnPrv', 'RoofStyle_Hip|BsmtFinType1_Tencode', 'Neighborhood_NoRidge|LowQualFinSF', 'Neighborhood_CollgCr|SaleType_Oth', 'Exterior2nd_MetalSd|Exterior1st_MetalSd', 'Neighborhood_Veenker|LotConfig_Inside', 'GarageType_Basment|SaleType_CWD', 'KitchenAbvGr|LotConfig_CulDSac', 'LandContour_Tencode|BsmtFinType1_Rec', 'MiscFeature_Othr|Exterior2nd_Brk Cmn', 'LotShape_Tencode|ExterQual_Gd', 'ExterCond_TA|Exterior2nd_BrkFace', 'Neighborhood_BrDale|LotFrontage', 'ExterQual_TA|SaleType_New', 'HeatingQC_Ex|Condition1_Tencode', 'Exterior2nd_Wd Sdng|BsmtFinSF1', 'BldgType_Twnhs|Heating_Grav', 'FireplaceQu_Tencode|MSZoning_Tencode', 'ExterQual_TA|SaleType_CWD', 'LandContour_HLS|MSZoning_C (all)', 'GarageType_Attchd|Functional_Mod', 'Neighborhood_OldTown|Condition1_Tencode', 'OverallQual|SaleType_ConLw', 'Neighborhood_Gilbert|Exterior1st_Tencode', 'Electrical_Tencode|Fence_MnWw', 'OverallQual|LandContour_Bnk', 'Exterior2nd_Tencode|Condition1_PosN', 'Neighborhood_Gilbert|Exterior2nd_HdBoard', '3SsnPorch|ExterQual_Gd', 'BsmtCond_Po|BsmtCond_Fa', 'KitchenQual_Gd|LotArea', 'LotConfig_CulDSac|RoofStyle_Tencode', 'HouseStyle_1Story|BsmtExposure_Gd', 'PavedDrive_P|MiscFeature_Gar2', 'Exterior1st_BrkFace|MasVnrArea', 'Functional_Tencode|HouseStyle_1.5Fin', 'BsmtFinType2_Rec|GarageFinish_RFn', 'MSSubClass|MSZoning_FV', 'SaleType_ConLw|BsmtFinType2_LwQ', 'LotShape_IR2|SaleCondition_Normal', 'BsmtHalfBath|HalfBath', 'HeatingQC_Gd|MiscFeature_Gar2', 'SaleType_ConLD|BldgType_Tencode', 'RoofMatl_Tar&Grv|MasVnrType_BrkCmn', 'BsmtFinType2_Rec|Neighborhood_BrkSide', 'PavedDrive_Tencode|GarageQual_TA', 'LandContour_Tencode|GarageYrBlt', 'Neighborhood_NoRidge|Exterior2nd_MetalSd', 'KitchenQual_Gd|Functional_Mod', 'BsmtFinType2_Unf|CentralAir_Tencode', 'HouseStyle_Tencode|GarageType_CarPort', 'RoofMatl_CompShg|ExterCond_Tencode', 'Exterior2nd_Tencode|Heating_GasW', 'Exterior2nd_Tencode|2ndFlrSF', 'GarageType_Detchd|LandSlope_Sev', 'RoofMatl_CompShg|SaleType_ConLI', 'MiscFeature_Othr|GarageQual_Fa', 'LotConfig_FR2|SaleCondition_Partial', 'FireplaceQu_Tencode|MasVnrType_BrkFace', 'BldgType_TwnhsE', 'ExterCond_Gd|Condition1_Feedr', 'Exterior2nd_Stone|GarageType_BuiltIn', 'Condition2_Tencode|SaleType_COD', 'BsmtFinType1_Unf|Fence_MnWw', 'LandContour_HLS|SaleType_ConLD', 'Neighborhood_Somerst|CentralAir_Tencode', 'GarageCond_Po|Neighborhood_NPkVill', 'RoofStyle_Tencode|OverallCond', 'ExterQual_TA|LandContour_HLS', 'Neighborhood_SWISU|LandSlope_Gtl', 'LotConfig_Tencode|OpenPorchSF', 'Electrical_FuseA|Heating_GasW', 'PavedDrive_N|LandSlope_Gtl', 'ExterCond_TA|Foundation_BrkTil', 'Neighborhood_NridgHt|3SsnPorch', 'Neighborhood_Blmngtn|BsmtUnfSF', 'LandSlope_Gtl|Neighborhood_Gilbert', 'Neighborhood_NoRidge|SaleType_WD', 'Foundation_Stone|Electrical_FuseP', 'Exterior2nd_Wd Sdng|Exterior2nd_Wd Shng', 'Condition1_Feedr|ScreenPorch', 'Foundation_Stone|Neighborhood_IDOTRR', 'RoofStyle_Shed|BldgType_1Fam', 'Alley_Pave|3SsnPorch', 'GarageCond_Po|1stFlrSF', 'KitchenQual_Ex|Heating_GasW', 'SaleType_ConLw|HeatingQC_Tencode', 'PavedDrive_Tencode|TotRmsAbvGrd', 'SaleType_CWD|Neighborhood_Timber', 'RoofStyle_Flat|RoofStyle_Shed', 'SaleType_ConLI|LandContour_Tencode', 'GarageQual_Gd|BsmtFinType2_LwQ', '1stFlrSF|ScreenPorch', 'Electrical_Tencode|BsmtUnfSF', 'GrLivArea|OverallCond', 'GarageQual_Gd|HeatingQC_Tencode', 'Neighborhood_SWISU|Exterior1st_VinylSd', 'MiscFeature_Othr|Neighborhood_SawyerW', 'Fence_GdPrv|ExterCond_Gd', 'BsmtQual_Ex|Condition2_Norm', 'Neighborhood_Mitchel|BsmtFinType1_GLQ', 'YearBuilt|RoofStyle_Gable', 'GarageCars|Functional_Min1', 'HouseStyle_SLvl|LotConfig_Inside', 'Electrical_SBrkr|HouseStyle_1.5Unf', 'Foundation_CBlock|BldgType_1Fam', 'Exterior1st_HdBoard|HalfBath', 'Functional_Mod|BsmtFinType2_Unf', 'BsmtFinType1_Tencode|BsmtFinSF2', 'OverallQual|BsmtQual_TA', 'Neighborhood_Blmngtn|3SsnPorch', 'FireplaceQu_Po|WoodDeckSF', 'GarageCond_Tencode|Neighborhood_IDOTRR', 'BsmtFinType2_Unf|MasVnrType_BrkFace', 'BldgType_Duplex|RoofMatl_WdShngl', 'GarageCond_Fa|Neighborhood_Gilbert', 'Foundation_PConc|Alley_Grvl', 'SaleCondition_Alloca|LotConfig_Tencode', 'HeatingQC_Ex|Neighborhood_IDOTRR', 'LandContour_HLS|Exterior1st_WdShing', 'MasVnrType_BrkFace|HouseStyle_1.5Fin', 'Exterior1st_AsbShng|BldgType_Tencode', 'SaleType_New|Exterior1st_Wd Sdng', 'Neighborhood_ClearCr|LotShape_IR3', 'BsmtQual_TA|HouseStyle_2.5Unf', 'Exterior1st_HdBoard|SaleType_Tencode', 'RoofStyle_Gable|ExterCond_Fa', 'GarageCond_Po|Exterior1st_MetalSd', 'GarageCond_TA|Electrical_Tencode', 'Functional_Tencode|GarageCond_Fa', 'Electrical_Tencode|Foundation_Stone', 'GarageCond_Gd|Exterior2nd_AsphShn', 'BsmtFinType2_Rec|MasVnrType_Stone', 'LotFrontage|Fence_GdWo', 'GarageQual_TA|MasVnrType_Stone', 'Functional_Tencode|Functional_Maj1', 'BsmtCond_Po|CentralAir_Y', 'Heating_Grav|GarageCond_Tencode', 'BsmtQual_Fa|Condition2_Norm', 'BsmtHalfBath|BsmtQual_Gd', 'GarageType_BuiltIn|Neighborhood_NAmes', 'Neighborhood_NoRidge|MSZoning_C (all)', 'Neighborhood_NWAmes|Exterior2nd_CmentBd', 'Fence_GdPrv|Exterior1st_CemntBd', 'BldgType_Duplex|CentralAir_Y', 'LotShape_IR2|LotShape_IR3', 'FireplaceQu_Fa|GarageFinish_Tencode', 'Heating_Grav|Neighborhood_NWAmes', 'BsmtFinSF2|Fence_MnPrv', 'BsmtCond_Po|GarageQual_Tencode', 'Functional_Typ|GarageFinish_RFn', 'BsmtQual_Ex|ExterCond_Tencode', 'LandSlope_Sev|MoSold', 'Electrical_FuseF|ExterQual_Fa', 'MSZoning_C (all)|TotRmsAbvGrd', 'SaleCondition_Tencode|MiscFeature_Tencode', 'Street_Tencode|GarageCond_TA', 'Alley_Tencode|Heating_Tencode', 'Heating_Tencode|MasVnrType_BrkFace', 'GarageQual_Fa|MSZoning_Tencode', 'BsmtFinType2_BLQ|BsmtCond_Po', 'Heating_Grav|FireplaceQu_Po', 'SaleType_ConLI|BsmtFinType2_Unf', 'Neighborhood_NridgHt|HouseStyle_Tencode', 'LandContour_Lvl|BsmtExposure_No', 'BsmtFinType2_Tencode|MasVnrType_Tencode', 'BsmtCond_Po|GarageYrBlt', 'HouseStyle_1Story|Exterior2nd_BrkFace', 'LotArea|Functional_Min1', 'BsmtHalfBath|BldgType_1Fam', 'BsmtQual_Tencode|Heating_GasW', 'Neighborhood_NPkVill|ExterCond_Fa', 'LandSlope_Sev|SaleCondition_Family', 'GarageQual_TA|Fence_GdWo', 'MSSubClass|PoolArea', 'BsmtFinSF2|Fence_GdWo', 'GarageType_Tencode|Condition1_Feedr', 'TotalBsmtSF|LotConfig_Tencode', '3SsnPorch|GarageQual_Tencode', 'SaleType_Tencode|SaleCondition_Alloca', 'Electrical_SBrkr|Street_Pave', 'YearBuilt|MasVnrType_BrkFace', 'BsmtFinType2_Rec|BsmtExposure_Av', 'PoolQC_Tencode|BsmtCond_Fa', 'Condition2_Tencode|Condition1_PosN', 'LotConfig_FR2|MSZoning_C (all)', 'RoofStyle_Shed|MasVnrArea', 'SaleType_Tencode|LandSlope_Gtl', 'Utilities_Tencode|SaleType_Tencode', 'ExterQual_TA|GarageYrBlt', 'KitchenQual_Ex|PavedDrive_Y', 'GrLivArea|Neighborhood_Veenker', 'RoofStyle_Hip|MSZoning_Tencode', 'PavedDrive_N|Condition1_PosA', 'SaleType_ConLD|PoolQC_Tencode', 'GarageFinish_Unf|BsmtCond_TA', 'BsmtFinType2_BLQ|FireplaceQu_Ex', 'BsmtFinType2_Tencode|Neighborhood_MeadowV', 'BldgType_2fmCon|Foundation_PConc', 'HouseStyle_1.5Unf|SaleType_New', 'KitchenQual_Fa|BsmtFinSF1', 'SaleType_WD|CentralAir_N', 'OpenPorchSF|PoolArea', 'MSZoning_RM|BsmtFinSF1', 'Neighborhood_OldTown|Condition2_Norm', 'SaleCondition_Alloca|GarageQual_Tencode', 'SaleCondition_Tencode|Condition2_Norm', 'Condition1_RRAn|MSZoning_RL', 'KitchenQual_Gd|GarageFinish_Fin', 'BsmtFinType2_Tencode|LandSlope_Gtl', 'BsmtFinType2_Rec|MSZoning_FV', 'LotShape_Reg|MSZoning_FV', 'Exterior1st_BrkFace|Neighborhood_ClearCr', 'CentralAir_Tencode|MSZoning_RL', 'GarageCars|BldgType_TwnhsE', 'BsmtFinType1_Tencode|LotArea', 'Functional_Min1|MiscFeature_Tencode', 'Exterior2nd_AsbShng|BsmtFinType2_Unf', 'GarageCond_Tencode|Exterior1st_Plywood', 'KitchenQual_Ex|KitchenQual_Tencode', 'BsmtFinType2_ALQ|Exterior1st_BrkComm', 'Neighborhood_BrDale|HouseStyle_1Story', 'Alley_Tencode|MSSubClass', 'LowQualFinSF|Street_Grvl', 'Condition1_PosA|MiscFeature_Shed', 'KitchenQual_Tencode|BldgType_Tencode', 'Fireplaces|YearBuilt', 'ExterCond_TA|BsmtFinType2_LwQ', 'SaleCondition_Partial|GarageQual_Tencode', 'Neighborhood_Mitchel|Exterior1st_Tencode', 'LotShape_Tencode|Condition1_Norm', 'Alley_Tencode|BsmtFinType2_GLQ', 'RoofStyle_Hip|Fence_GdPrv', 'LotShape_Reg|FireplaceQu_Po', 'GrLivArea|Heating_Grav', 'BsmtFinType1_Tencode|Functional_Mod', 'Neighborhood_Blmngtn|GarageQual_TA', 'BsmtQual_Fa|SaleType_Oth', 'BsmtQual_TA|GarageQual_Po', 'HouseStyle_Tencode|Electrical_SBrkr', 'LandContour_HLS|BsmtFinSF1', 'BsmtFinType2_GLQ|BsmtExposure_Mn', 'HouseStyle_SFoyer|Condition1_Tencode', 'GarageType_BuiltIn|BsmtFinType1_LwQ', 'CentralAir_Tencode|Exterior2nd_Wd Shng', 'Neighborhood_Veenker|LowQualFinSF', 'GarageQual_Fa|FireplaceQu_Ex', 'FireplaceQu_Tencode|HouseStyle_SLvl', 'MoSold|Exterior1st_BrkComm', 'LandSlope_Sev|SaleType_ConLD', 'SaleCondition_Normal|Fence_MnWw', 'BsmtFinSF2|SaleCondition_Normal', 'Neighborhood_BrDale|SaleType_COD', '3SsnPorch|HouseStyle_SLvl', 'SaleType_ConLw|SaleType_ConLD', 'EnclosedPorch|HeatingQC_Gd', 'EnclosedPorch|ExterQual_Gd', '1stFlrSF|Alley_Grvl', 'FullBath|Exterior1st_Wd Sdng', 'BldgType_Duplex|GarageType_CarPort', 'Neighborhood_NWAmes|Exterior1st_BrkComm', 'RoofStyle_Gambrel|Exterior1st_Plywood', 'BsmtHalfBath|3SsnPorch', 'FireplaceQu_Tencode|BsmtHalfBath', 'YearRemodAdd|LotConfig_Inside', 'Neighborhood_BrDale|GarageCond_Fa', 'ExterCond_TA|Utilities_AllPub', 'ExterQual_Tencode|Neighborhood_IDOTRR', 'LotConfig_FR2|ExterCond_Gd', 'GarageQual_Fa|SaleType_CWD', 'BsmtFinSF2|YearBuilt', 'MiscFeature_Tencode|GarageFinish_RFn', 'BsmtFinType2_BLQ|MasVnrType_Stone', 'BldgType_Tencode|GarageType_2Types', 'SaleType_ConLw|Fence_GdWo', 'GarageFinish_Fin|BsmtUnfSF', 'Neighborhood_NWAmes|BsmtExposure_No', 'PavedDrive_N|GarageType_Detchd', 'MiscFeature_Gar2|BsmtFinType1_GLQ', 'YrSold|Exterior1st_MetalSd', 'BldgType_Twnhs|SaleType_WD', 'Heating_Grav|Functional_Mod', 'RoofStyle_Flat|Functional_Min2', 'OpenPorchSF|MSZoning_Tencode', 'LotShape_IR2|GarageQual_Tencode', 'YrSold|GarageType_Tencode', 'SaleType_WD|Condition1_Feedr', 'Heating_GasA|BsmtExposure_Av', 'Heating_GasW|Neighborhood_Crawfor', 'ScreenPorch|MasVnrArea', 'OverallQual|GarageType_2Types', 'LotShape_IR2|Street_Grvl', 'Exterior1st_Stucco|Fence_GdWo', 'MSZoning_RM|BsmtFinType1_LwQ', '3SsnPorch|SaleCondition_Alloca', 'Exterior1st_CemntBd|MasVnrArea', 'GrLivArea|HouseStyle_1.5Fin', 'GarageQual_Fa|Condition1_PosN', 'LandContour_Low|KitchenQual_TA', 'TotRmsAbvGrd|MasVnrType_Tencode', 'GarageType_Detchd|SaleType_ConLD', 'Heating_Grav|BsmtFinType2_LwQ', 'GarageType_BuiltIn|MSZoning_RL', 'MiscFeature_Shed|Neighborhood_MeadowV', 'Functional_Typ|Neighborhood_NWAmes', 'Foundation_Stone|Neighborhood_CollgCr', 'Neighborhood_Veenker|3SsnPorch', 'Utilities_Tencode|Fence_MnWw', 'KitchenQual_Fa|HouseStyle_1.5Fin', 'MiscVal|LotShape_IR3', 'Neighborhood_Veenker|Neighborhood_Sawyer', 'ExterQual_Gd|HouseStyle_2.5Unf', 'BsmtFullBath|MasVnrType_None', 'Exterior1st_HdBoard|Foundation_CBlock', 'Exterior2nd_Tencode|MiscFeature_Shed', 'Exterior1st_HdBoard|BsmtFullBath', 'SaleType_ConLI|Street_Grvl', 'Exterior2nd_Tencode|ScreenPorch', 'LandContour_Lvl|KitchenQual_Tencode', 'HouseStyle_Tencode|Fence_MnWw', 'KitchenQual_Fa|Exterior2nd_Brk Cmn', 'Condition1_Feedr|BsmtUnfSF', '1stFlrSF|BsmtCond_TA', 'Utilities_Tencode|Exterior2nd_MetalSd', 'Neighborhood_Veenker|GarageFinish_Tencode', 'GarageCars|Exterior2nd_Wd Shng', 'Condition1_Norm|BsmtCond_Tencode', 'PavedDrive_P|Neighborhood_Timber', 'BsmtFinType1_Tencode|Fireplaces', 'RoofStyle_Shed|BsmtFinType1_LwQ', 'MiscVal|HouseStyle_1.5Unf', 'LotConfig_FR2|KitchenQual_Ex', 'Neighborhood_Blmngtn|LowQualFinSF', 'MiscFeature_Othr|ExterQual_Fa', 'HeatingQC_Tencode|HeatingQC_Ex', 'BsmtQual_Fa|MSZoning_RH', 'LotShape_Tencode|Exterior1st_AsbShng', 'HeatingQC_Fa|Fence_MnPrv', 'ExterQual_Tencode|HouseStyle_1.5Fin', 'BsmtQual_Ex|LowQualFinSF', 'HeatingQC_Tencode|MSZoning_C (all)', 'SaleType_ConLw|GarageFinish_Tencode', 'Functional_Min1|CentralAir_Tencode', 'Exterior1st_HdBoard|GarageFinish_Tencode', 'SaleType_New|Neighborhood_BrkSide', 'ExterCond_Tencode|LowQualFinSF', 'FireplaceQu_Fa|Exterior2nd_AsphShn', 'BldgType_Duplex|SaleType_WD', 'Neighborhood_NridgHt|BsmtCond_Gd', 'BedroomAbvGr|BsmtFinType1_Unf', 'Neighborhood_ClearCr|ExterCond_Fa', 'BsmtExposure_Av|GarageCond_Ex', 'YrSold|KitchenQual_Gd', 'GrLivArea|MSZoning_RL', 'GarageType_CarPort|RoofMatl_WdShngl', 'Foundation_CBlock|Exterior2nd_Brk Cmn', 'Exterior2nd_Tencode|Neighborhood_BrkSide', 'BsmtFinType1_BLQ|Street_Grvl', 'FireplaceQu_Ex|HouseStyle_1.5Fin', 'Neighborhood_Edwards|Neighborhood_Sawyer', 'Neighborhood_NridgHt|CentralAir_Y', 'Exterior1st_BrkFace|Exterior2nd_AsbShng', 'GarageArea|Exterior1st_MetalSd', 'Condition1_Tencode|BsmtFinSF1', 'RoofStyle_Shed|BldgType_TwnhsE', 'BsmtFinType1_Tencode|3SsnPorch', 'Street_Tencode|GarageQual_Tencode', 'Functional_Tencode|Functional_Typ', 'LandSlope_Sev|2ndFlrSF', 'SaleCondition_Alloca|Neighborhood_NAmes', 'BldgType_Twnhs|Functional_Maj1', 'GarageFinish_RFn|BsmtCond_Fa', 'HouseStyle_1.5Unf|1stFlrSF', 'Condition1_PosN|MiscFeature_Shed', 'Electrical_SBrkr|ExterQual_Ex', 'Neighborhood_Veenker|BsmtExposure_No', 'PoolArea|FireplaceQu_TA', 'MiscFeature_Tencode|Exterior2nd_HdBoard', 'Neighborhood_Tencode|BsmtCond_Tencode', 'BsmtFinType1_Tencode|Electrical_Tencode', 'Electrical_FuseF|SaleCondition_Normal', 'MSZoning_FV|BsmtCond_TA', 'ExterQual_TA|HouseStyle_SFoyer', 'KitchenQual_Tencode|Neighborhood_NAmes', 'LandContour_HLS|Exterior2nd_VinylSd', 'SaleType_WD|Condition1_Norm', 'Neighborhood_NridgHt|Foundation_Stone', 'SaleCondition_Tencode|GarageCars', 'GarageCars|HouseStyle_2.5Unf', 'TotalBsmtSF|BsmtFinType2_Tencode', 'GarageCars|Exterior2nd_BrkFace', 'ExterQual_Ex|LotConfig_Inside', 'BsmtHalfBath|Heating_Tencode', 'MSZoning_C (all)|BldgType_TwnhsE', 'SaleType_ConLI|ExterCond_Fa', 'BsmtHalfBath|SaleType_CWD', 'KitchenQual_Gd|SaleCondition_Family', 'GarageCond_TA|SaleType_Oth', 'BsmtFinType2_BLQ|SaleCondition_Family', 'HeatingQC_TA|SaleCondition_Normal', 'MoSold|Condition2_Artery', 'ExterCond_Tencode|Neighborhood_Gilbert', 'HouseStyle_1Story|MasVnrType_BrkCmn', 'KitchenQual_TA|Neighborhood_MeadowV', 'EnclosedPorch|Condition1_PosA', 'LotFrontage|Exterior2nd_VinylSd', 'SaleCondition_Partial|SaleType_CWD', 'GarageQual_Gd|SaleCondition_Abnorml', 'MiscVal|RoofStyle_Tencode', 'SaleType_Oth|Exterior1st_WdShing', '3SsnPorch|Exterior2nd_Brk Cmn', 'SaleCondition_Partial|MSZoning_RL', 'LandSlope_Mod|Exterior2nd_AsphShn', 'EnclosedPorch|MiscFeature_Tencode', 'BsmtFinType1_ALQ|PavedDrive_P', 'HouseStyle_2Story|GarageType_2Types', 'RoofMatl_Tencode|LandContour_Bnk', 'Fence_MnPrv|MasVnrType_Tencode', 'BsmtFinType1_ALQ|HouseStyle_1.5Unf', 'KitchenQual_Gd|BsmtFinType2_BLQ', 'Electrical_FuseP|LotShape_IR3', 'PavedDrive_Tencode|Condition1_RRAn', 'SaleType_ConLI|GarageCond_Ex', '3SsnPorch|HalfBath', 'KitchenAbvGr|BsmtFullBath', 'Functional_Maj1|Exterior2nd_HdBoard', 'GarageQual_TA|PavedDrive_P', 'HalfBath|GarageType_2Types', 'HeatingQC_Gd|Electrical_FuseA', 'LotShape_Tencode|BldgType_2fmCon', 'BldgType_2fmCon|Fence_Tencode', 'YearRemodAdd|RoofStyle_Shed', 'HeatingQC_Tencode|MiscFeature_Tencode', 'LotConfig_Corner|BsmtCond_Po', 'ExterCond_Tencode|ExterQual_Gd', 'Neighborhood_NWAmes|Condition1_Tencode', 'FireplaceQu_Fa|HouseStyle_2.5Unf', 'Neighborhood_ClearCr|GarageType_Attchd', 'BedroomAbvGr|Neighborhood_StoneBr', 'EnclosedPorch|Heating_GasW', 'Neighborhood_SWISU|GarageArea', 'Alley_Pave|HouseStyle_2Story', 'LandContour_Low|PoolQC_Tencode', 'Condition2_Tencode|Condition2_Artery', 'Neighborhood_SawyerW|ExterCond_Fa', 'PavedDrive_N|Utilities_AllPub', 'HeatingQC_TA|GarageCond_Fa', 'GarageFinish_Unf|BsmtFinType1_ALQ', 'Exterior2nd_BrkFace|ExterCond_Gd', 'Foundation_BrkTil|LandSlope_Sev', 'LotConfig_FR2|Fence_GdWo', 'TotalBsmtSF|FullBath', 'MSZoning_C (all)|Exterior2nd_CmentBd', 'FireplaceQu_Gd|Exterior1st_BrkComm', 'FireplaceQu_Po|LandSlope_Sev', 'GarageQual_Gd|Neighborhood_Tencode', 'GarageYrBlt|HouseStyle_SLvl', 'YearRemodAdd|SaleType_COD', 'MSZoning_RL|Exterior2nd_AsphShn', 'BsmtFullBath|BsmtFinSF1', 'BsmtFinType1_Rec|Exterior1st_BrkComm', 'HouseStyle_1.5Unf|SaleCondition_Partial', 'MiscFeature_Tencode|SaleCondition_Partial', 'LandContour_Lvl|Electrical_FuseF', 'PavedDrive_Y|BsmtExposure_No', 'BsmtFinType2_BLQ|GarageFinish_Tencode', 'ExterCond_TA|BsmtExposure_No', 'SaleType_New|Exterior2nd_Wd Sdng', 'PavedDrive_N|SaleType_ConLI', 'Heating_Tencode|SaleCondition_Abnorml', 'Foundation_CBlock|CentralAir_N', 'BldgType_Twnhs|Neighborhood_Tencode', 'Electrical_FuseP|Condition2_Norm', 'LotShape_Tencode|Electrical_FuseA', 'Functional_Tencode|Neighborhood_Gilbert', 'MiscFeature_Tencode|ScreenPorch', 'Heating_Tencode|GarageType_Tencode', 'GarageFinish_Tencode|MasVnrType_BrkCmn', 'HouseStyle_1.5Unf|BsmtFinType1_Rec', 'LotConfig_Corner|Exterior2nd_CmentBd', 'Condition1_Artery|GarageCond_Tencode', 'Neighborhood_Timber', 'LotShape_Tencode|MiscFeature_Shed', 'KitchenAbvGr|YrSold', 'LotShape_IR1|GarageCond_Tencode', 'Utilities_Tencode|ExterCond_Gd', 'GarageType_Attchd|ExterCond_Fa', 'BsmtExposure_Av|HouseStyle_SLvl', 'TotRmsAbvGrd|BsmtExposure_Mn', 'Condition1_RRAe|Condition2_Artery', 'Exterior2nd_BrkFace|BsmtFinType2_ALQ', 'BsmtFinType2_ALQ|MiscFeature_Gar2', 'BsmtFinType2_Tencode|ExterQual_Fa', 'BsmtFinSF1', 'Neighborhood_IDOTRR|Neighborhood_BrkSide', 'MSZoning_RM|CentralAir_N', 'GarageType_BuiltIn|Functional_Mod', 'SaleType_New|HouseStyle_2Story', 'LotConfig_FR2|BsmtCond_Fa', 'Exterior1st_BrkFace', 'LandContour_Low|Exterior1st_HdBoard', 'OverallQual|RoofStyle_Tencode', 'GarageCond_TA|Condition1_PosA', 'OverallQual|FullBath', 'Neighborhood_NPkVill|BsmtFinSF1', 'Neighborhood_Crawfor|MSZoning_Tencode', 'OverallQual|WoodDeckSF', 'ExterQual_Gd|MSZoning_Tencode', 'Foundation_Stone|LandSlope_Gtl', 'Street_Tencode|BsmtCond_TA', 'LandContour_Low|MiscVal', 'HeatingQC_Fa|BsmtUnfSF', 'SaleCondition_Partial|Neighborhood_MeadowV', 'LandContour_Lvl|ExterCond_Gd', 'HeatingQC_Gd|ScreenPorch', 'PavedDrive_N|GarageType_Basment', 'BsmtHalfBath|BsmtFinType2_Rec', 'MasVnrType_BrkCmn|BsmtFinType1_LwQ', 'LotConfig_Tencode|ExterCond_Fa', 'CentralAir_N|Utilities_AllPub', 'BldgType_Twnhs|RoofStyle_Gable', 'MiscFeature_Othr|Neighborhood_NAmes', 'RoofStyle_Gambrel|Utilities_AllPub', 'KitchenAbvGr|Functional_Tencode', 'BldgType_Twnhs|LandSlope_Mod', 'Foundation_Stone|MSZoning_RL', 'ExterCond_Tencode|SaleCondition_Normal', 'Exterior1st_BrkComm|BsmtCond_TA', 'Electrical_FuseP|Street_Pave', 'MiscFeature_Othr|GarageCond_Gd', 'MiscFeature_Shed|HouseStyle_2.5Unf', 'Exterior2nd_BrkFace|Electrical_FuseF', 'Foundation_BrkTil|GarageType_CarPort', 'GarageCond_TA|FireplaceQu_Po', 'Alley_Tencode|Neighborhood_SWISU', 'ExterCond_Tencode|LandSlope_Gtl', 'HouseStyle_Tencode|GarageQual_Fa', 'MSZoning_C (all)|SaleCondition_Abnorml', 'SaleCondition_Abnorml|SaleType_CWD', 'SaleType_WD|Exterior1st_Wd Sdng', 'GarageQual_Gd|SaleType_COD', 'Exterior2nd_AsbShng|GarageType_BuiltIn', 'PavedDrive_Y|Functional_Maj2', 'LotShape_Reg|MSZoning_RH', 'HouseStyle_Tencode|PoolArea', 'HeatingQC_Ex|HouseStyle_1.5Unf', 'Neighborhood_Crawfor|CentralAir_N', 'SaleCondition_Family|FireplaceQu_Ex', 'RoofStyle_Gable|BsmtCond_Gd', 'ExterQual_Fa|HouseStyle_2Story', 'LotShape_IR2|FireplaceQu_Ex', 'BsmtHalfBath|LandContour_HLS', 'RoofMatl_Tencode|Neighborhood_SWISU', 'FireplaceQu_Gd|LotArea', 'RoofStyle_Hip|Alley_Pave', 'Electrical_FuseA|Neighborhood_Edwards', 'GarageType_Basment|CentralAir_Tencode', 'GarageQual_Fa|MiscFeature_Tencode', 'Heating_Grav|Condition1_Feedr', 'GarageQual_Gd|ExterCond_TA', 'LotArea|SaleType_ConLD', 'SaleType_WD|Fence_GdPrv', 'MasVnrType_None|HouseStyle_2.5Unf', 'MiscVal|MSZoning_Tencode', 'Exterior2nd_CmentBd|BsmtExposure_Mn', 'LotConfig_Corner|Neighborhood_IDOTRR', 'LandContour_Tencode|MasVnrType_None', 'BsmtFinSF1|Exterior1st_BrkComm', 'LandContour_Low|MiscFeature_Tencode', 'SaleCondition_Tencode|MasVnrType_Stone', 'Exterior1st_Plywood|HouseStyle_2Story', 'GarageQual_TA|BldgType_Tencode', 'GarageFinish_Unf|Neighborhood_Gilbert', 'LotArea|BsmtCond_Fa', 'HeatingQC_TA|Alley_Pave', 'Condition2_Tencode|GarageType_2Types', 'BsmtQual_Tencode|BsmtFullBath', 'LotShape_IR2|RoofMatl_Tencode', 'RoofMatl_Tencode|LandSlope_Sev', 'Neighborhood_Tencode|BsmtExposure_Av', 'Exterior1st_HdBoard|WoodDeckSF', 'Foundation_CBlock|BsmtExposure_No', 'YrSold|SaleType_CWD', 'Utilities_Tencode|LotConfig_FR2', 'HeatingQC_Tencode|FireplaceQu_Ex', 'BsmtFinSF2|GarageQual_Po', 'BsmtExposure_Av|BsmtCond_TA', 'Functional_Maj2|CentralAir_Tencode', 'LotConfig_Corner|Fence_MnPrv', 'Foundation_Stone|HeatingQC_Tencode', 'GrLivArea|LandContour_Bnk', 'Neighborhood_CollgCr|Exterior2nd_Tencode', 'BsmtFinType2_Tencode|GarageFinish_RFn', 'GarageFinish_Fin|Street_Grvl', 'Electrical_Tencode|GarageArea', 'Exterior1st_AsbShng|Neighborhood_SWISU', 'Exterior2nd_Plywood|GarageType_2Types', 'GarageFinish_Fin|Condition1_Tencode', 'RoofMatl_Tencode|SaleType_CWD', 'RoofMatl_CompShg|Functional_Maj1', 'Fireplaces|MiscFeature_Gar2', 'SaleType_ConLI|MiscFeature_Shed', 'BsmtFinType2_GLQ|ExterQual_Ex', 'MiscVal|MiscFeature_Shed', 'Condition1_Norm|BsmtExposure_Gd', 'Neighborhood_ClearCr|RoofStyle_Gambrel', 'RoofStyle_Flat|2ndFlrSF', 'GarageType_Attchd|CentralAir_N', 'Fence_Tencode|MSZoning_RH', 'SaleType_New|FireplaceQu_TA', 'Condition2_Artery|RoofMatl_WdShngl', 'Fence_GdWo|SaleType_Oth', 'Condition1_PosA|BsmtExposure_Gd', 'FireplaceQu_Gd|Functional_Maj2', 'Exterior1st_AsbShng|CentralAir_Y', 'Fence_Tencode|SaleCondition_Alloca', 'Neighborhood_BrDale|GarageQual_Fa', 'LandSlope_Mod|GarageType_Basment', 'EnclosedPorch|BsmtFinType1_Unf', 'HeatingQC_Ex|GarageType_CarPort', 'GarageType_Detchd|Exterior2nd_CmentBd', 'FireplaceQu_Fa|FireplaceQu_TA', 'LandContour_Bnk|PavedDrive_Tencode', 'BldgType_Twnhs|Electrical_FuseF', 'GarageYrBlt|MSZoning_RH', 'Condition1_Artery|CentralAir_N', 'Neighborhood_Sawyer|Utilities_AllPub', 'SaleCondition_Tencode|LandSlope_Gtl', 'Heating_Tencode|SaleType_Tencode', 'BsmtFullBath|MSZoning_RM', '1stFlrSF|HouseStyle_2.5Unf', 'SaleCondition_Family|BsmtFinType1_Rec', 'LotConfig_Corner|GarageCond_Ex', 'BsmtFinType1_Rec|HouseStyle_1.5Fin', 'GarageFinish_Tencode|GarageType_CarPort', 'BldgType_2fmCon|BsmtFinType1_GLQ', 'BldgType_2fmCon|Neighborhood_MeadowV', 'BsmtUnfSF|CentralAir_Tencode', 'BsmtFinType1_BLQ|Functional_Min1', 'GarageType_Basment|MSZoning_RL', 'HeatingQC_Tencode|RoofStyle_Shed', 'GarageArea|GarageType_Basment', 'MiscFeature_Gar2|Exterior1st_Plywood', 'PoolQC_Tencode|Functional_Maj1', 'Neighborhood_Blmngtn|BsmtFinType1_LwQ', 'KitchenQual_Ex|BsmtQual_TA', 'SaleCondition_Tencode|GarageCond_Fa', 'Fence_GdPrv|Fence_MnWw', 'LotConfig_CulDSac|Exterior1st_CemntBd', 'BldgType_Twnhs|BsmtCond_Po', 'FireplaceQu_Fa|BsmtExposure_Gd', 'GarageCond_Gd|HouseStyle_2Story', 'RoofStyle_Tencode|RoofMatl_WdShngl', 'YearBuilt|GarageYrBlt', 'Neighborhood_Mitchel|Condition2_Artery', 'TotRmsAbvGrd|GarageType_CarPort', 'LandContour_Low|HeatingQC_Fa', 'LowQualFinSF|Exterior1st_MetalSd', 'FireplaceQu_Po|LotConfig_FR2', 'BsmtFinType1_Tencode|BsmtUnfSF', 'LandSlope_Mod|BsmtCond_Fa', 'CentralAir_Y|Neighborhood_Timber', 'Fence_Tencode|LotConfig_CulDSac', 'KitchenQual_Ex|Exterior1st_Plywood', 'BsmtQual_Fa|MSZoning_Tencode', 'Electrical_Tencode|Exterior2nd_CmentBd', 'FireplaceQu_Po|Fence_GdWo', 'Exterior1st_WdShing|MSZoning_RH', 'PavedDrive_Y|MasVnrArea', 'GarageQual_Po|Exterior1st_WdShing', 'SaleType_WD|Exterior1st_WdShing', 'OverallCond|Neighborhood_BrkSide', 'Foundation_BrkTil|Fence_GdPrv', 'GarageCond_Po|GarageCond_Fa', 'TotalBsmtSF|Exterior1st_WdShing', 'FireplaceQu_Tencode|GarageCond_Fa', 'HouseStyle_Tencode|Electrical_FuseF', 'Condition2_Norm|Neighborhood_BrkSide', 'BsmtExposure_Tencode|Exterior1st_HdBoard', 'SaleType_CWD|Exterior2nd_Plywood', 'SaleCondition_Alloca|LotShape_IR3', 'LotConfig_Tencode|BldgType_Tencode', 'MasVnrType_BrkCmn|GarageType_Attchd', 'KitchenQual_Ex|SaleType_CWD', 'Electrical_SBrkr|BsmtExposure_Av', 'MiscFeature_Shed|Condition1_Norm', 'Neighborhood_Somerst|LotConfig_CulDSac', 'KitchenQual_TA|Exterior1st_Tencode', 'HeatingQC_Ex|MSZoning_RM', 'GarageCond_Po|Neighborhood_NoRidge', 'Neighborhood_NPkVill|Exterior2nd_Brk Cmn', 'LandSlope_Mod|Foundation_Tencode', 'KitchenQual_Ex|BsmtFinType1_Unf', 'PavedDrive_Y|Exterior1st_WdShing', 'PavedDrive_Y|BsmtFinType2_Rec', 'BsmtQual_Ex|HouseStyle_2.5Unf', 'MasVnrType_None|Foundation_Slab', 'Exterior2nd_MetalSd|Exterior2nd_Brk Cmn', 'TotRmsAbvGrd|Condition2_Artery', 'Heating_Tencode|HeatingQC_Tencode', 'Condition1_PosN|RoofMatl_WdShngl', 'Street_Tencode|Exterior1st_HdBoard', 'MSSubClass|Exterior2nd_Wd Shng', 'BsmtHalfBath|PavedDrive_Tencode', 'MiscVal|Neighborhood_Crawfor', 'Exterior2nd_VinylSd|LandContour_Bnk', 'GarageCond_Po|LotShape_IR1', 'MasVnrArea|LotShape_IR3', 'Exterior2nd_Stucco|BsmtExposure_Mn', 'LandContour_Lvl|GarageArea', 'KitchenQual_Tencode|Exterior1st_WdShing', 'ExterQual_Fa|GarageType_2Types', 'BsmtQual_Fa|Street_Grvl', 'HouseStyle_1Story|Electrical_FuseP', 'Fence_GdPrv|HouseStyle_2.5Unf', 'SaleCondition_Tencode|ExterQual_Fa', 'Condition1_Feedr|MasVnrType_None', 'Neighborhood_CollgCr|Heating_Tencode', 'ExterCond_TA|GarageYrBlt', 'GrLivArea|SaleType_Tencode', 'LandSlope_Sev|CentralAir_Tencode', 'PoolQC_Tencode|BsmtFinType1_Rec', 'Neighborhood_NPkVill|HouseStyle_SLvl', '3SsnPorch|BldgType_1Fam', 'BsmtFinType2_ALQ|GarageFinish_Tencode', 'GarageCond_Po|ExterQual_Ex', 'Electrical_FuseA|Neighborhood_SawyerW', 'BsmtCond_Gd|SaleCondition_Partial', 'SaleType_CWD|Neighborhood_MeadowV', 'Exterior1st_CemntBd|CentralAir_Tencode', 'MSSubClass|BsmtQual_Gd', 'FireplaceQu_Po|BsmtFinType1_Rec', 'FireplaceQu_Tencode|Neighborhood_SawyerW', 'FireplaceQu_Gd|RoofStyle_Gambrel', 'PavedDrive_P|Street_Pave', 'LandContour_HLS|GarageType_Tencode', 'OverallQual|Condition1_PosN', 'GarageCond_Fa|GarageType_2Types', 'LotShape_IR1|MSZoning_RM', 'BsmtFinType1_LwQ|Exterior1st_MetalSd', 'RoofStyle_Tencode|MasVnrType_BrkFace', 'Neighborhood_NAmes|Exterior1st_VinylSd', 'GarageFinish_Tencode|BsmtFinSF1', 'EnclosedPorch|SaleType_Tencode', 'BsmtQual_TA|BsmtExposure_Gd', 'HouseStyle_1Story|Utilities_AllPub', 'GarageCars|SaleType_ConLI', 'LotConfig_CulDSac|KitchenQual_TA', 'Condition2_Tencode|MSZoning_FV', 'RoofMatl_CompShg|MiscFeature_Shed', 'HouseStyle_1Story|OpenPorchSF', 'KitchenQual_Ex|Foundation_Tencode', 'SaleType_Tencode|Fence_GdPrv', 'BsmtFinType1_BLQ|PavedDrive_P', '1stFlrSF|MasVnrType_Stone', 'Condition1_Artery|BsmtCond_Po', 'Exterior1st_HdBoard|BsmtFinType1_ALQ', 'FireplaceQu_Po|BedroomAbvGr', 'YearRemodAdd|FireplaceQu_Gd', 'LandSlope_Mod|GarageCond_Tencode', 'Exterior1st_BrkFace|Neighborhood_OldTown', 'RoofMatl_CompShg|ExterCond_Gd', 'Electrical_SBrkr|MSZoning_RL', 'BsmtFinType1_BLQ|Exterior2nd_Wd Sdng', 'GarageQual_Gd|PavedDrive_P', 'LotConfig_FR2|GarageFinish_RFn', 'FireplaceQu_Tencode|Neighborhood_NAmes', 'BsmtQual_TA|Functional_Min1', 'Heating_GasA|SaleType_Oth', '1stFlrSF|Foundation_CBlock', 'GrLivArea|SaleCondition_Abnorml', '2ndFlrSF|Exterior2nd_AsphShn', 'LotShape_Reg|HeatingQC_Fa', 'Alley_Tencode|Fence_Tencode', 'LotConfig_Tencode|BsmtQual_Gd', 'ExterQual_Tencode|Exterior2nd_HdBoard', 'GarageType_CarPort|Functional_Mod', 'GarageQual_Fa|Neighborhood_MeadowV', 'RoofMatl_Tencode|KitchenQual_Fa', 'Fireplaces|MiscFeature_Shed', 'LotConfig_FR2|FireplaceQu_TA', 'BsmtHalfBath|Heating_GasW', 'Neighborhood_Timber|LotConfig_Inside', 'YrSold|GarageFinish_Tencode', 'BsmtFinType2_Rec|Foundation_Slab', 'Electrical_SBrkr|LandContour_Lvl', 'BsmtCond_Tencode|MSZoning_FV', 'BsmtQual_Tencode|OverallCond', 'LandContour_HLS|SaleCondition_Family', 'FireplaceQu_Gd|BsmtCond_Fa', 'HouseStyle_1Story|BsmtFinType1_GLQ', 'BsmtFinType2_ALQ|KitchenQual_Tencode', 'BsmtFinSF2|Condition1_Norm', 'GarageCond_Po|Exterior2nd_BrkFace', 'Exterior2nd_BrkFace|PavedDrive_Tencode', 'Fence_MnWw|MasVnrType_Tencode', 'LandContour_Lvl|Exterior2nd_Brk Cmn', 'MiscFeature_Othr|LandSlope_Gtl', 'Neighborhood_SWISU|Neighborhood_Timber', 'Heating_Grav|Functional_Min1', 'LandSlope_Mod|Neighborhood_BrkSide', 'LandContour_Low|BsmtQual_Tencode', 'BsmtUnfSF|Exterior2nd_Plywood', 'GarageFinish_Tencode|MSZoning_RH', 'YearRemodAdd|Fence_MnPrv', 'LotConfig_FR2|Functional_Min2', 'YrSold|GarageType_Detchd', 'SaleType_Tencode|HeatingQC_Ex', 'SaleType_ConLw|MSZoning_FV', 'MSSubClass|SaleCondition_Partial', 'LotFrontage|ExterCond_Gd', 'BldgType_Twnhs|LotConfig_CulDSac', 'YearRemodAdd|RoofStyle_Gambrel', 'HalfBath|CentralAir_Tencode', 'GarageCond_Po|HeatingQC_Ex', 'Heating_GasA|RoofStyle_Tencode', 'MasVnrType_None|Exterior1st_VinylSd', 'MiscVal|Street_Grvl', 'MiscFeature_Othr|Condition1_RRAe', 'LotFrontage|FireplaceQu_Fa', 'LotShape_Reg|YearBuilt', 'Alley_Pave|BsmtFinType1_ALQ', 'BsmtFinType1_Tencode|Functional_Maj2', 'GarageType_BuiltIn|GarageFinish_RFn', 'BldgType_Duplex|FullBath', 'MSZoning_C (all)|CentralAir_Tencode', 'Neighborhood_StoneBr|BsmtExposure_Gd', 'SaleCondition_Tencode|Functional_Maj1', 'Alley_Pave|Neighborhood_Gilbert', 'PavedDrive_Y|KitchenQual_TA', 'Exterior2nd_MetalSd|FireplaceQu_TA', 'Foundation_PConc|Exterior2nd_CmentBd', 'YearBuilt|BsmtQual_Fa', 'GarageType_Attchd|LotShape_IR3', 'Exterior1st_Wd Sdng|MasVnrType_Tencode', 'FullBath|Condition1_PosN', 'HeatingQC_Gd|GarageQual_Po', 'LandSlope_Gtl|Condition1_Tencode', 'Exterior2nd_Tencode|LowQualFinSF', 'GarageType_Tencode|FireplaceQu_TA', 'Fence_GdWo|Neighborhood_IDOTRR', 'GarageCond_Fa|Exterior1st_MetalSd', 'Exterior2nd_Tencode|Neighborhood_Tencode', 'Exterior2nd_Plywood|Fence_MnWw', 'Heating_Grav|BsmtExposure_Av', 'OverallQual|BsmtFinSF2', 'RoofStyle_Shed|MSZoning_FV', 'TotalBsmtSF|MSZoning_FV', 'LandSlope_Mod|RoofStyle_Shed', 'Condition1_Tencode|Exterior2nd_Plywood', 'CentralAir_Y|HouseStyle_1.5Fin', 'Fireplaces|Neighborhood_Mitchel', 'Heating_GasW|CentralAir_Tencode', 'SaleType_ConLw|GarageCond_Gd', 'ExterCond_Gd|PavedDrive_P', 'Neighborhood_NWAmes|BsmtFinType2_LwQ', 'Neighborhood_NPkVill|FireplaceQu_Fa', 'YearBuilt|LotConfig_CulDSac', 'LandContour_Bnk|BsmtQual_Gd', 'HouseStyle_Tencode|Neighborhood_MeadowV', 'Condition1_Artery|Condition1_Tencode', 'SaleType_ConLw|SaleType_WD', 'BsmtFinType2_BLQ|Exterior1st_Wd Sdng', 'Neighborhood_Somerst|Neighborhood_CollgCr', 'HouseStyle_SFoyer|BsmtFinType2_LwQ', 'HouseStyle_Tencode|CentralAir_Tencode', 'Neighborhood_CollgCr|MSZoning_C (all)', 'Electrical_SBrkr|Neighborhood_Gilbert', 'Exterior2nd_Stone|GarageYrBlt', 'GarageCond_Tencode|BsmtCond_Tencode', 'BsmtFinType2_Unf|Exterior2nd_HdBoard', 'GarageCond_TA|SaleType_CWD', 'BsmtFinType1_ALQ|Street_Pave', 'Alley_Grvl|Exterior1st_Tencode', 'SaleCondition_Abnorml|Neighborhood_IDOTRR', 'CentralAir_N|Exterior2nd_HdBoard', 'Exterior2nd_AsbShng|MSZoning_Tencode', 'Neighborhood_ClearCr|Neighborhood_NWAmes', 'RoofStyle_Gambrel|GarageQual_Tencode', 'Exterior2nd_VinylSd|Foundation_Slab', 'PoolArea|Condition1_RRAn', 'BsmtFinSF2|Neighborhood_BrkSide', 'BsmtFinType1_BLQ|LandContour_Tencode', 'LotShape_Reg|BsmtExposure_Gd', 'Functional_Tencode|LandSlope_Tencode', 'Exterior2nd_Stone|HouseStyle_SLvl', 'BsmtQual_Tencode|LowQualFinSF', 'Foundation_BrkTil|HeatingQC_Ex', 'Exterior2nd_VinylSd|BsmtCond_TA', 'BsmtHalfBath|GarageFinish_RFn', 'RoofStyle_Shed|Exterior2nd_Wd Sdng', 'Neighborhood_Veenker|MasVnrArea', 'LandSlope_Tencode|ExterCond_Fa', 'HeatingQC_Tencode|Neighborhood_NAmes', 'PavedDrive_Tencode|Neighborhood_Sawyer', 'MasVnrType_Stone|LotConfig_Inside', 'OpenPorchSF|Alley_Grvl', 'GarageFinish_Tencode|SaleCondition_Partial', 'Neighborhood_CollgCr|Exterior2nd_AsphShn', 'BsmtFinType2_BLQ|OpenPorchSF', 'Alley_Tencode|Neighborhood_BrkSide', 'Exterior2nd_AsbShng|Exterior1st_BrkComm', 'BsmtFinType2_Rec|GarageType_Attchd', 'BsmtFinType1_ALQ|OverallCond', 'Condition1_Feedr|RoofMatl_WdShngl', 'BsmtFinType2_Tencode|LotConfig_FR2', 'Exterior1st_HdBoard|Fence_GdPrv', 'Utilities_Tencode|SaleType_Oth', '2ndFlrSF|SaleType_COD', 'Neighborhood_Tencode|Condition1_Feedr', 'BsmtFinType2_Tencode|HouseStyle_1.5Fin', 'SaleType_ConLI|MiscFeature_Tencode', 'BsmtFinType2_BLQ|Condition2_Norm', 'HouseStyle_1.5Unf|BsmtFinType1_LwQ', 'LandContour_Low|Exterior1st_AsbShng', 'BsmtQual_Ex|GarageCond_Gd', 'Foundation_BrkTil|GarageQual_Fa', 'RoofStyle_Hip|PavedDrive_Tencode', 'GarageCond_TA|PavedDrive_P', 'Neighborhood_SawyerW|MiscFeature_Gar2', 'Exterior1st_BrkFace|Condition1_PosA', 'LandSlope_Gtl|MSZoning_FV', 'LotShape_Tencode|BsmtCond_Gd', 'SaleType_Oth|Foundation_Slab', 'BsmtHalfBath|MiscFeature_Tencode', 'SaleType_COD|Foundation_Slab', 'LandSlope_Tencode|Condition1_RRAn', 'BsmtFinType1_BLQ|BsmtFullBath', 'RoofStyle_Flat|Exterior2nd_Wd Sdng', 'LotArea|Street_Pave', 'SaleType_ConLD|SaleCondition_Abnorml', 'LotShape_IR2|MiscFeature_Gar2', 'HeatingQC_Fa|Functional_Maj2', 'BsmtFinType1_LwQ|HouseStyle_2.5Unf', 'Exterior1st_CemntBd|ExterCond_Fa', 'Neighborhood_Mitchel|LandContour_Tencode', 'SaleCondition_Alloca|MSZoning_C (all)', 'Electrical_FuseP|SaleCondition_Family', 'SaleType_Tencode|Exterior1st_MetalSd', 'Fireplaces|Condition2_Artery', 'BsmtFinSF2|SaleType_Tencode', 'Alley_Tencode|Exterior1st_VinylSd', 'GarageQual_Gd|Exterior1st_VinylSd', 'Electrical_SBrkr|Neighborhood_SawyerW', 'ExterCond_Tencode|BsmtFinType1_LwQ', 'BsmtFinType1_BLQ|Condition1_Norm', 'Exterior1st_Stucco|Fence_MnWw', 'ExterQual_TA|Heating_Grav', 'LandContour_Low|GarageType_2Types', 'Alley_Tencode|RoofStyle_Gable', 'BsmtFinType2_ALQ|Exterior2nd_HdBoard', 'Fence_Tencode|BsmtFinType2_Rec', 'Foundation_PConc|RoofMatl_CompShg', 'Neighborhood_Somerst|ExterCond_Tencode', 'LotShape_Reg|SaleType_ConLI', 'CentralAir_Y|OverallCond', 'Neighborhood_Veenker|SaleType_Oth', 'BsmtFinType2_GLQ|HouseStyle_2Story', 'Neighborhood_Blmngtn|Neighborhood_NWAmes', 'RoofStyle_Gable|Exterior2nd_HdBoard', 'PavedDrive_N|Exterior2nd_Wd Sdng', 'BsmtFinType2_Unf|Utilities_AllPub', 'HeatingQC_Tencode|Condition1_PosA', 'Exterior1st_Stucco|BsmtFinType1_GLQ', 'GrLivArea|Functional_Tencode', 'FireplaceQu_Tencode|BsmtCond_Gd', 'SaleType_CWD|ExterQual_Fa', 'PoolQC_Tencode|ScreenPorch', 'HeatingQC_TA|MiscFeature_Tencode', 'BsmtQual_Tencode|Neighborhood_SawyerW', 'GarageCond_Po|PavedDrive_P', 'Neighborhood_NPkVill|FireplaceQu_Gd', 'PoolQC_Tencode|WoodDeckSF', 'YearBuilt|HalfBath', 'Exterior2nd_Tencode|1stFlrSF', 'SaleType_ConLw|Alley_Grvl', 'LandSlope_Sev|BldgType_Tencode', 'Condition1_Feedr|Neighborhood_Sawyer', 'GarageType_Detchd|LandContour_Tencode', 'BsmtUnfSF|BsmtFinType2_Unf', 'Condition2_Norm|BsmtExposure_No', 'Exterior1st_BrkFace|ExterQual_Ex', 'Condition1_Feedr|Exterior2nd_HdBoard', 'BsmtUnfSF|GarageQual_Tencode', 'GarageCond_Po|Exterior2nd_HdBoard', 'MiscFeature_Othr|Heating_GasW', 'KitchenAbvGr|ExterCond_Gd', 'GarageFinish_Unf|Exterior2nd_AsbShng', 'LotShape_IR1|Foundation_CBlock', '3SsnPorch|Condition1_RRAe', 'BsmtFinSF2|LotConfig_Tencode', 'RoofStyle_Tencode|LotConfig_Inside', 'KitchenAbvGr|PoolArea', 'YearRemodAdd|LandSlope_Tencode', 'HeatingQC_TA|Functional_Typ', 'Neighborhood_OldTown|LotConfig_CulDSac', 'LandContour_Tencode|1stFlrSF', 'Condition1_Artery|HouseStyle_1.5Unf', 'BsmtQual_Tencode|Exterior1st_Tencode', 'LotFrontage|OverallCond', 'GarageQual_Fa|Condition1_Feedr', 'Fence_Tencode|YearBuilt', 'PavedDrive_Y|GarageQual_Tencode', 'Fence_GdPrv|OpenPorchSF', 'LotShape_Tencode|LotConfig_FR2', 'Electrical_FuseF|BsmtCond_TA', 'FireplaceQu_Po|Neighborhood_NWAmes', 'SaleType_ConLw|RoofStyle_Gable', 'ExterQual_TA|BldgType_Tencode', 'BldgType_Duplex|GarageFinish_RFn', 'Exterior2nd_Tencode|SaleCondition_Normal', 'SaleCondition_Tencode|RoofMatl_CompShg', 'HeatingQC_Fa|HeatingQC_Tencode', 'Neighborhood_ClearCr|BsmtCond_Gd', 'HeatingQC_TA|Neighborhood_MeadowV', 'BldgType_TwnhsE|GarageQual_Tencode', 'Neighborhood_SWISU|ExterQual_Gd', 'BsmtFinType1_ALQ|FireplaceQu_Fa', 'PavedDrive_Y|BsmtQual_TA', 'BsmtExposure_Av|ExterQual_Gd', 'OverallQual|SaleCondition_Family', 'BsmtFinType2_GLQ|Neighborhood_SawyerW', 'Functional_Maj1|BsmtFinSF1', 'Condition2_Norm|WoodDeckSF', 'Functional_Typ|Electrical_Tencode', 'RoofMatl_CompShg|Neighborhood_IDOTRR', 'HalfBath|OverallCond', 'LotShape_Reg|Exterior1st_MetalSd', 'Heating_GasA|MiscFeature_Tencode', 'Neighborhood_OldTown|BedroomAbvGr', 'Exterior1st_BrkFace|LotArea', 'Functional_Tencode|GarageType_Tencode', 'Exterior2nd_Wd Sdng|RoofMatl_WdShngl', 'Neighborhood_NridgHt|Condition1_RRAe', 'BldgType_TwnhsE|OverallCond', '3SsnPorch|ExterCond_Tencode', 'Exterior2nd_Stone|KitchenQual_Ex', 'Condition1_Feedr|Neighborhood_Gilbert', 'LotConfig_CulDSac|BsmtFinSF1', 'MSZoning_FV|BsmtCond_Fa', 'Utilities_Tencode|Neighborhood_NoRidge', 'Neighborhood_NPkVill|Exterior2nd_Tencode', 'YearRemodAdd|Exterior2nd_MetalSd', 'KitchenQual_Ex|Condition1_PosA', 'Neighborhood_Mitchel|Condition1_Feedr', 'Exterior2nd_Stone|Neighborhood_OldTown', 'SaleType_ConLI|SaleCondition_Abnorml', '1stFlrSF|GarageFinish_RFn', 'RoofMatl_WdShngl|BsmtFinType1_GLQ', 'RoofMatl_Tar&Grv|Exterior2nd_Wd Shng', 'ExterQual_TA|Neighborhood_NoRidge', 'Neighborhood_Tencode|GarageCond_Ex', 'Condition1_Tencode|GarageYrBlt', 'Electrical_Tencode|YearBuilt', 'SaleCondition_Family|Exterior2nd_Plywood', 'HeatingQC_Fa|Neighborhood_Crawfor', 'LotShape_IR1|RoofStyle_Gable', 'SaleCondition_Tencode|MSZoning_FV', 'BsmtExposure_Tencode|GarageQual_TA', 'PavedDrive_P|BsmtExposure_Mn', 'Fence_Tencode|CentralAir_Tencode', 'YearRemodAdd|ExterCond_Gd', 'GarageCond_Tencode|Condition2_Tencode', 'BedroomAbvGr|LotConfig_Inside', '3SsnPorch|LotShape_IR3', 'Neighborhood_BrDale|HouseStyle_2Story', 'Utilities_Tencode|ExterQual_Ex', 'SaleType_COD|BsmtFinType1_Unf', 'HeatingQC_Ex|MasVnrType_BrkCmn', 'HeatingQC_Ex|Functional_Maj1', 'HalfBath|LotConfig_Inside', 'LandSlope_Mod|BsmtUnfSF', '2ndFlrSF|GarageType_Basment', 'Alley_Tencode|ScreenPorch', 'HouseStyle_2.5Unf|BsmtQual_Gd', 'Exterior2nd_BrkFace|CentralAir_Y', 'Exterior2nd_Tencode|Neighborhood_IDOTRR', 'BldgType_Twnhs|Fence_GdWo', 'Exterior2nd_Stucco|RoofMatl_Tencode', 'RoofMatl_Tencode|LotFrontage', 'KitchenQual_TA|ExterCond_Fa', 'LandContour_Low|Exterior1st_VinylSd', 'GarageFinish_Fin|BsmtQual_Tencode', 'GarageCars|ExterCond_Gd', 'HalfBath|BsmtFinType1_LwQ', 'LandSlope_Sev|SaleType_Oth', 'KitchenAbvGr|YearBuilt', 'FireplaceQu_Fa|2ndFlrSF', 'SaleType_ConLw|Neighborhood_Edwards', 'CentralAir_Tencode|ExterQual_Tencode', 'SaleCondition_Partial|Fence_MnWw', 'MasVnrType_BrkFace|Neighborhood_Timber', 'GarageType_Basment|BldgType_Tencode', 'LandContour_Lvl|BsmtQual_Gd', 'BldgType_Duplex|Functional_Maj2', 'Neighborhood_NWAmes|BsmtUnfSF', 'ExterCond_TA|BsmtFinType1_ALQ', 'EnclosedPorch|MasVnrType_BrkCmn', 'ExterQual_TA|LandContour_Lvl', 'Functional_Tencode|MiscFeature_Othr', 'LotShape_Tencode|SaleCondition_Partial', 'TotalBsmtSF|BsmtFinType2_Rec', 'LotFrontage|Exterior1st_AsbShng', 'Neighborhood_OldTown|GarageType_BuiltIn', 'Exterior1st_VinylSd|MSZoning_RL', 'Neighborhood_Tencode|SaleCondition_Alloca', 'BsmtFinType2_Unf|BsmtFinType1_Unf', 'RoofStyle_Gable|MiscFeature_Shed', 'BsmtCond_Po|MiscFeature_Tencode', '1stFlrSF|Condition2_Norm', 'Exterior2nd_Stone|BldgType_1Fam', 'SaleCondition_Alloca|Fence_MnPrv', 'Neighborhood_Mitchel|SaleCondition_Abnorml', 'OverallCond|Exterior2nd_Wd Shng', 'HouseStyle_Tencode|HouseStyle_SLvl', 'BldgType_Duplex|Utilities_AllPub', 'Utilities_Tencode|1stFlrSF', 'Functional_Tencode|LotConfig_Tencode', 'GarageCond_Ex|Exterior2nd_Plywood', 'LandSlope_Tencode|Exterior2nd_Wd Sdng', 'RoofStyle_Gambrel|MasVnrArea', 'SaleCondition_Family|3SsnPorch', 'Exterior1st_VinylSd|CentralAir_Y', 'BldgType_Duplex|Electrical_FuseA', 'CentralAir_Y|BldgType_1Fam', 'FireplaceQu_Gd|ScreenPorch', 'MasVnrType_None|BsmtCond_Fa', 'Exterior1st_VinylSd|SaleCondition_Abnorml', 'Neighborhood_Veenker|GarageCond_Fa', 'Exterior2nd_Stone|Electrical_Tencode', 'HeatingQC_TA|Street_Pave', 'Condition1_PosA|Neighborhood_Timber', 'RoofMatl_Tar&Grv|Exterior1st_CemntBd', 'Neighborhood_BrDale|LotArea', 'GarageType_Detchd|Exterior1st_WdShing', 'LandSlope_Sev|LotConfig_CulDSac', 'Heating_Grav|BsmtFinSF2', 'Exterior2nd_CmentBd|BsmtExposure_Av', 'HouseStyle_Tencode|BsmtCond_Fa', 'Electrical_SBrkr|Exterior1st_Plywood', 'GarageCond_Ex|Exterior2nd_Wd Shng', 'KitchenQual_Ex|Condition2_Norm', 'Foundation_PConc|MiscFeature_Tencode', 'FireplaceQu_Tencode|Neighborhood_Timber', 'FullBath|LotConfig_CulDSac', 'GarageQual_Fa|LowQualFinSF', 'LotShape_IR1|HouseStyle_2Story', 'LotShape_Reg|Fireplaces', 'LotShape_IR2|Neighborhood_NPkVill', 'MasVnrType_BrkCmn|Exterior1st_VinylSd', 'LandContour_Low|BsmtFinSF1', 'Electrical_FuseA|FireplaceQu_Po', 'GarageCond_Tencode|Neighborhood_StoneBr', 'RoofStyle_Shed|Fence_GdWo', 'Neighborhood_NoRidge|Condition1_Feedr', 'Exterior2nd_Stucco|BsmtFinType1_LwQ', 'LandContour_Lvl|Functional_Mod', 'PavedDrive_N|BsmtFinType2_Rec', 'LotShape_IR2|Exterior2nd_Stone', 'SaleCondition_Alloca|SaleType_Oth', 'Neighborhood_CollgCr|Condition2_Artery', 'Exterior2nd_Tencode|Foundation_Tencode', 'YearBuilt|SaleCondition_Abnorml', 'BsmtCond_Fa|MasVnrType_Tencode', 'LotShape_IR2|Neighborhood_CollgCr', 'Street_Tencode|Exterior2nd_AsphShn', 'HeatingQC_Fa|LotFrontage', 'GarageType_Detchd|MSZoning_RM', 'BsmtCond_Gd|MasVnrType_Stone', 'LotFrontage|Neighborhood_NoRidge', 'LotConfig_Corner|Condition1_Norm', 'HalfBath|Exterior1st_WdShing', '3SsnPorch|MasVnrType_BrkFace', 'GarageFinish_Fin|CentralAir_Tencode', 'EnclosedPorch|Exterior2nd_BrkFace', 'HouseStyle_1Story|Fence_GdPrv', 'MSZoning_C (all)|Exterior1st_Wd Sdng', 'Fence_GdPrv|LotShape_IR3', 'KitchenQual_Gd|Exterior1st_WdShing', 'Neighborhood_IDOTRR|MSZoning_FV', 'LotConfig_Tencode|GarageQual_Tencode', 'BsmtFinType1_ALQ|GarageCond_Fa', 'Neighborhood_Somerst|BsmtFinType2_Unf', 'BsmtCond_TA', 'CentralAir_N|BsmtCond_Fa', 'LotShape_Reg|CentralAir_Tencode', 'HalfBath|KitchenQual_Tencode', 'YearRemodAdd|MSSubClass', 'BsmtExposure_Tencode|BsmtFinType2_BLQ', 'LandSlope_Tencode|BldgType_TwnhsE', 'BsmtHalfBath|Exterior2nd_AsphShn', 'Neighborhood_ClearCr|RoofStyle_Shed', 'RoofStyle_Shed|BsmtCond_Tencode', 'Heating_Tencode|HouseStyle_2Story', 'SaleType_ConLD|RoofMatl_Tar&Grv', 'Electrical_FuseP|MasVnrArea', 'RoofMatl_CompShg|LotConfig_FR2', 'Exterior2nd_Stone|Exterior1st_CemntBd', 'HouseStyle_1.5Unf|Condition2_Tencode', 'Heating_Tencode|GarageFinish_RFn', 'LandSlope_Sev|Street_Grvl', 'Heating_GasW|Neighborhood_NAmes', 'LandSlope_Sev|Fence_GdPrv', 'Fence_Tencode|RoofStyle_Gable', 'Neighborhood_OldTown|BsmtQual_Gd', 'RoofStyle_Gambrel|Neighborhood_SawyerW', 'SaleCondition_Tencode|Neighborhood_OldTown', 'LandSlope_Gtl|Street_Grvl', 'Electrical_FuseP|GarageCond_Tencode', 'HeatingQC_TA|ExterCond_Tencode', 'RoofStyle_Gable|OpenPorchSF', 'SaleCondition_Abnorml|BsmtQual_Gd', 'BsmtExposure_Av|SaleCondition_Normal', 'Exterior2nd_BrkFace|BsmtFinType1_Unf', '1stFlrSF|BsmtExposure_Gd', 'ExterQual_Ex|MSZoning_Tencode', 'BsmtQual_Ex|BsmtFinSF1', 'LandSlope_Sev|Exterior2nd_Wd Sdng', 'Foundation_PConc|SaleType_Oth', 'Exterior1st_BrkFace|GarageFinish_Unf', 'GarageQual_Fa|MasVnrType_BrkFace', 'GarageCond_Po|Condition2_Artery', 'KitchenQual_Gd|LotConfig_Tencode', 'BsmtQual_Ex|BsmtQual_Fa', 'RoofMatl_Tencode|RoofMatl_CompShg', 'PoolQC_Tencode|LowQualFinSF', 'BsmtExposure_Tencode|Foundation_Tencode', 'BsmtCond_Tencode|GarageType_Basment', 'Fence_GdWo|CentralAir_N', 'Neighborhood_SWISU|CentralAir_Y', 'BsmtFinType1_LwQ|ScreenPorch', 'Neighborhood_Somerst|Electrical_FuseA', 'BsmtFinType2_LwQ|BsmtCond_Gd', 'FireplaceQu_Tencode|Condition1_PosN', 'SaleType_COD|ExterQual_Tencode', 'Neighborhood_NoRidge|ExterQual_Tencode', 'HeatingQC_TA|HouseStyle_2.5Unf', 'HouseStyle_SFoyer', 'BsmtUnfSF|Neighborhood_Gilbert', 'RoofMatl_Tar&Grv|Neighborhood_Timber', 'Neighborhood_OldTown|BsmtCond_Po', 'Exterior2nd_MetalSd|Condition1_RRAn', 'Neighborhood_SawyerW|BsmtFinType1_GLQ', 'GarageType_Detchd|BsmtQual_Gd', 'LandSlope_Gtl|BsmtFinType1_GLQ', 'FireplaceQu_TA|MasVnrArea', 'BsmtExposure_Tencode|ExterQual_Fa', 'KitchenQual_Ex|BsmtCond_Po', 'GarageQual_Gd|Neighborhood_Veenker', 'Foundation_Stone|BsmtFinType2_GLQ', 'GarageType_Tencode|Exterior2nd_MetalSd', 'RoofStyle_Tencode|Exterior2nd_Plywood', 'Neighborhood_SWISU|SaleType_COD', 'BsmtFinSF2|Neighborhood_Timber', 'YrSold|BsmtExposure_Tencode', 'GarageQual_TA|Fence_MnPrv', 'GarageCars|HouseStyle_2Story', 'Exterior2nd_Tencode|GarageType_2Types', 'HeatingQC_TA|MiscVal', 'LotConfig_CulDSac|MasVnrType_BrkFace', 'KitchenQual_Gd|Condition1_PosN', 'GarageType_BuiltIn|Foundation_Slab', 'LandContour_Bnk|MiscFeature_Shed', 'OpenPorchSF|Condition1_Feedr', 'LotConfig_Corner|BsmtFinType2_Rec', 'EnclosedPorch|FireplaceQu_Fa', 'LotFrontage|GarageCond_Gd', 'Neighborhood_NWAmes|GarageType_Basment', 'SaleType_ConLI|Exterior1st_VinylSd', 'BsmtQual_Tencode|SaleType_ConLD', 'FireplaceQu_Ex|HouseStyle_SLvl', 'Street_Tencode|Neighborhood_SawyerW', 'BldgType_2fmCon|ExterCond_Gd', 'HouseStyle_Tencode|GarageFinish_RFn', 'Functional_Maj1|BsmtFinType2_LwQ', 'Street_Tencode|Neighborhood_NPkVill', 'GarageType_Attchd|Neighborhood_Sawyer', 'ExterCond_TA|SaleCondition_Abnorml', 'HouseStyle_1Story|HeatingQC_Tencode', 'HeatingQC_Ex|Street_Pave', 'BldgType_2fmCon|Functional_Typ', 'BsmtQual_Tencode|BsmtFinType2_Unf', 'Utilities_Tencode|BsmtExposure_Gd', 'Utilities_Tencode|GarageFinish_Fin', 'Neighborhood_Mitchel|CentralAir_Y', 'KitchenQual_Gd|GarageCond_Ex', 'TotalBsmtSF|PavedDrive_P', 'BsmtFinType2_ALQ|LandContour_Lvl', 'SaleCondition_Normal|GarageType_2Types', 'Exterior2nd_BrkFace|Exterior2nd_Tencode', 'GarageQual_Gd|Condition1_Tencode', 'GarageType_Basment|CentralAir_N', 'GarageQual_Tencode|SaleType_CWD', 'BedroomAbvGr|Exterior1st_BrkComm', 'BsmtExposure_Av|Exterior2nd_AsphShn', 'BsmtFinType1_Tencode|BldgType_TwnhsE', 'Condition1_Norm|BsmtFinSF1', 'BsmtQual_Tencode|GarageType_CarPort', 'GarageQual_Fa|GarageType_CarPort', 'MiscVal|GarageType_Tencode', 'Functional_Typ|SaleType_Tencode', 'Functional_Min1|OpenPorchSF', 'BsmtFinType1_Tencode|BsmtFinType1_GLQ', 'MasVnrType_Stone|WoodDeckSF', 'ExterQual_TA|PoolArea', 'RoofStyle_Gambrel|GarageCond_Fa', 'HouseStyle_SFoyer|Alley_Grvl', 'Utilities_Tencode|SaleType_ConLD', 'RoofMatl_CompShg|Condition2_Tencode', 'PoolArea|SaleCondition_Abnorml', 'LotArea|Exterior1st_Stucco', 'LotShape_Reg|LandContour_HLS', 'BsmtFinType1_ALQ|Functional_Min1', 'LandContour_Tencode|ExterQual_Tencode', 'BsmtFinType2_LwQ|GarageType_Basment', 'GarageFinish_Unf|GarageQual_Tencode', 'FireplaceQu_Gd|Condition2_Norm', 'BsmtExposure_Tencode|MiscVal', 'BsmtFinType2_Rec|LotShape_IR3', 'SaleType_Oth|CentralAir_N', 'Neighborhood_Veenker|GarageYrBlt', 'GarageQual_TA|HouseStyle_2.5Unf', 'HalfBath|MasVnrArea', 'LotConfig_FR2|MoSold', 'GarageQual_TA|RoofStyle_Shed', 'Foundation_BrkTil|Functional_Maj1', 'PavedDrive_Tencode|BsmtFullBath', 'Foundation_Tencode|HalfBath', 'Neighborhood_BrDale|TotalBsmtSF', 'LotConfig_Tencode|ScreenPorch', 'MSSubClass|KitchenQual_TA', 'Neighborhood_Edwards|Neighborhood_Gilbert', 'Neighborhood_NWAmes|Exterior1st_WdShing', 'Exterior2nd_VinylSd|MiscFeature_Shed', 'GarageCond_Tencode|BsmtFinSF1', 'BsmtExposure_Tencode|Neighborhood_Tencode', 'HeatingQC_TA|Condition1_PosN', 'GarageCond_Ex|BsmtExposure_Gd', 'FireplaceQu_Gd|SaleCondition_Partial', 'Condition1_Norm|MasVnrType_Stone', 'BldgType_Twnhs|LandSlope_Tencode', 'Neighborhood_Gilbert|MSZoning_Tencode', 'LandSlope_Sev|Neighborhood_Crawfor', 'HouseStyle_1Story|MSZoning_RL', 'Condition1_Feedr|BsmtCond_Po', 'Heating_GasW|Exterior2nd_MetalSd', 'ExterCond_TA|BsmtCond_Gd', 'Foundation_Stone|YearBuilt', 'BsmtCond_Po|Foundation_Slab', 'BedroomAbvGr|Neighborhood_SawyerW', 'Condition1_Norm|MiscFeature_Tencode', 'LandContour_Tencode|Condition2_Tencode', 'HeatingQC_Fa|GarageArea', 'Foundation_PConc|MSSubClass', 'Neighborhood_Gilbert|BsmtFinSF1', 'RoofStyle_Gambrel|SaleCondition_Partial', 'Functional_Tencode|Exterior2nd_Plywood', 'Condition2_Tencode|Neighborhood_StoneBr', 'BsmtFinType1_ALQ|Condition1_PosN', 'LotConfig_Tencode|MSZoning_RL', 'LotFrontage|Foundation_Tencode', 'Neighborhood_NPkVill|Condition2_Norm', 'BsmtCond_Gd|KitchenQual_TA', 'Neighborhood_SWISU|BsmtExposure_Gd', 'ExterQual_Tencode|Exterior1st_WdShing', 'LandSlope_Sev|ExterCond_Tencode', 'BsmtFinType1_BLQ|MiscFeature_Gar2', 'RoofStyle_Hip|MSZoning_C (all)', 'Neighborhood_Tencode|BsmtExposure_No', 'LandContour_Bnk|Exterior2nd_MetalSd', 'Neighborhood_NWAmes|GarageCond_Fa', 'LotShape_IR2|LandSlope_Tencode', 'GarageQual_Gd|BsmtFullBath', 'Exterior2nd_CmentBd|Alley_Grvl', 'SaleType_Tencode|OpenPorchSF', 'BsmtQual_Tencode|BsmtExposure_No', 'BsmtFinType1_ALQ|Fence_GdPrv', 'RoofStyle_Flat|MasVnrType_BrkCmn', 'MSZoning_C (all)|LowQualFinSF', 'GarageQual_Gd|MSZoning_RH', 'BsmtQual_Tencode|Neighborhood_NAmes', 'BsmtFinType2_Tencode|2ndFlrSF', 'Neighborhood_Edwards|PavedDrive_P', 'Fence_GdPrv|SaleType_New', 'SaleType_New|MasVnrType_None', 'MasVnrType_None|Exterior2nd_AsphShn', 'SaleType_Tencode|GarageFinish_Tencode', 'HeatingQC_Tencode|GarageFinish_RFn', 'BsmtFinSF1|ScreenPorch', 'Neighborhood_NWAmes|GarageQual_Po', 'HeatingQC_Fa|GarageQual_Tencode', 'GarageFinish_Tencode|BsmtExposure_Gd', 'Exterior1st_AsbShng|Neighborhood_NAmes', 'PavedDrive_Y|Fence_GdWo', 'KitchenQual_TA|Fence_MnWw', 'RoofMatl_Tar&Grv|BldgType_Tencode', 'GarageFinish_Fin|MoSold', 'MSZoning_C (all)|Neighborhood_Timber', 'YearBuilt|RoofStyle_Gambrel', 'EnclosedPorch|Neighborhood_Timber', 'Neighborhood_NAmes|MasVnrType_Tencode', 'BsmtExposure_Av|Neighborhood_IDOTRR', 'Electrical_Tencode|PoolArea', 'SaleCondition_Family|Exterior1st_MetalSd', 'GarageFinish_Unf|KitchenQual_Ex', 'Neighborhood_ClearCr|Functional_Tencode', 'Condition1_RRAe|Neighborhood_Gilbert', 'LandSlope_Sev|BsmtFinType2_LwQ', 'GarageType_Detchd|GarageType_Attchd', 'Condition2_Artery|GarageType_2Types', 'Neighborhood_Somerst|PavedDrive_Y', 'RoofStyle_Flat|GarageQual_Tencode', 'RoofMatl_Tencode|Fence_GdWo', 'RoofStyle_Hip|Foundation_CBlock', 'HeatingQC_Ex|HouseStyle_1.5Fin', 'MiscVal|GarageFinish_Tencode', 'LandContour_Lvl|OverallCond', 'HouseStyle_SLvl|Exterior1st_Wd Sdng', 'OpenPorchSF|GarageType_Basment', 'BsmtQual_Ex|LandSlope_Gtl', 'SaleType_New|GarageQual_Po', 'Street_Tencode|RoofStyle_Tencode', 'BldgType_Duplex|BsmtCond_Po', 'Exterior2nd_CmentBd|OpenPorchSF', 'BsmtFullBath|BsmtExposure_No', 'GarageFinish_Unf|Alley_Pave', 'Neighborhood_Somerst|HouseStyle_SFoyer', 'BldgType_Twnhs|SaleType_Tencode', 'MiscFeature_Tencode|MSZoning_RL', 'LandSlope_Mod|Neighborhood_Veenker', 'Fence_Tencode|LandContour_Bnk', 'OverallQual|Electrical_FuseP', 'GrLivArea|SaleType_ConLw', 'ExterCond_TA|Exterior2nd_Plywood', 'LotShape_Tencode|SaleCondition_Abnorml', 'GrLivArea|CentralAir_Tencode', 'MoSold|KitchenQual_TA', 'Electrical_FuseF|GarageArea', '2ndFlrSF|BsmtCond_TA', 'Exterior2nd_Stone|MSZoning_RL', 'SaleType_ConLw|Neighborhood_SawyerW', 'Exterior2nd_Wd Sdng|Neighborhood_BrkSide', 'LandSlope_Tencode|Condition1_PosA', 'Exterior1st_BrkFace|FullBath', 'Electrical_FuseP|BsmtCond_Gd', 'RoofStyle_Gable|GarageQual_Tencode', 'LotArea|Neighborhood_MeadowV', 'Heating_GasW|MSZoning_RH', 'Functional_Maj1|ExterCond_Fa', 'Condition2_Tencode|BsmtCond_TA', 'HeatingQC_Fa|LandContour_HLS', 'BsmtQual_Fa|BldgType_TwnhsE', 'YearRemodAdd|Foundation_PConc', 'KitchenAbvGr|Functional_Maj2', 'Exterior2nd_Stone|Functional_Maj2', 'FireplaceQu_Po|GarageType_Tencode', 'BsmtFinType2_GLQ|RoofStyle_Shed', 'Neighborhood_SWISU|RoofMatl_WdShngl', 'BldgType_2fmCon|TotRmsAbvGrd', 'Condition2_Tencode|MiscFeature_Gar2', 'ExterQual_Gd|GarageYrBlt', 'Neighborhood_Tencode|HouseStyle_2.5Unf', 'Alley_Grvl|KitchenQual_TA', 'Exterior2nd_BrkFace|MiscFeature_Tencode', 'YearRemodAdd|Condition1_Tencode', 'Heating_GasW|SaleCondition_Normal', 'GarageFinish_RFn|Fence_MnWw', 'BsmtExposure_Mn|ExterCond_Fa', 'Exterior2nd_Stucco|GarageType_Basment', 'ExterCond_TA|BsmtFinType2_Unf', 'LotFrontage|SaleType_ConLw', 'BsmtFinType2_Unf|MasVnrArea', 'GarageType_Detchd|Neighborhood_Edwards', 'Functional_Mod|GarageYrBlt', '3SsnPorch|MSZoning_RM', 'YearRemodAdd|MiscFeature_Gar2', 'Fence_Tencode|Condition1_PosN', 'Foundation_PConc|Condition1_PosN', 'Street_Grvl|BsmtFinSF1', 'YrSold|HeatingQC_Tencode', 'Neighborhood_Blmngtn|Electrical_FuseF', 'FullBath|HouseStyle_1.5Fin', 'Alley_Tencode|Electrical_Tencode', 'Utilities_Tencode|Condition1_RRAe', 'Neighborhood_Blmngtn|Neighborhood_MeadowV', 'HeatingQC_Ex|FireplaceQu_Ex', 'SaleCondition_Tencode|Functional_Min1', 'SaleType_WD|LowQualFinSF', 'Neighborhood_SWISU|CentralAir_Tencode', 'Foundation_BrkTil|GarageQual_Tencode', 'PoolArea|Neighborhood_Timber', 'Foundation_Slab|Exterior2nd_AsphShn', 'LandSlope_Sev|GarageCond_Ex', 'LandSlope_Gtl|GarageType_2Types', 'Alley_Pave|Neighborhood_OldTown', 'Exterior2nd_Stucco|Alley_Pave', 'ExterQual_Ex|Neighborhood_Timber', 'OpenPorchSF|GarageType_CarPort', 'Condition1_PosA|ExterQual_Tencode', 'TotRmsAbvGrd|BsmtFinType2_Unf', 'BsmtFinType2_BLQ|Fence_MnPrv', 'BldgType_TwnhsE|HouseStyle_SLvl', 'Neighborhood_CollgCr|Condition2_Tencode', 'Foundation_PConc|LandContour_Lvl', 'Street_Tencode|FireplaceQu_TA', 'LotShape_IR1|OpenPorchSF', 'HouseStyle_SFoyer|LandSlope_Sev', 'ExterCond_Gd|Neighborhood_NWAmes', 'GarageCond_TA|Exterior2nd_HdBoard', 'Alley_Tencode|FireplaceQu_TA', 'BsmtCond_Po|BldgType_Tencode', 'Neighborhood_Mitchel|ExterCond_Tencode', 'Exterior1st_CemntBd|Electrical_FuseF', 'Exterior1st_HdBoard|Foundation_Tencode', 'GarageType_Basment|SaleType_COD', 'BsmtFinSF2|BsmtCond_TA', 'LandContour_Bnk|GarageType_Attchd', 'RoofStyle_Gambrel|Exterior2nd_Wd Shng', 'Condition1_PosN|LotConfig_Tencode', 'KitchenAbvGr', 'GarageType_Basment|Neighborhood_Timber', 'GarageQual_Fa|Condition2_Norm', 'ExterCond_TA|Electrical_FuseF', 'LandContour_Bnk|HalfBath', 'GarageType_BuiltIn|BsmtFinType2_Rec', 'Neighborhood_CollgCr|BsmtFinType1_LwQ', 'BsmtQual_Ex|GarageType_Basment', 'GarageType_Basment|Exterior1st_BrkComm', 'LotShape_IR2|Heating_Tencode', 'BsmtExposure_No|ExterCond_Fa', 'Functional_Maj1|BldgType_TwnhsE', 'SaleType_Tencode|GarageQual_Po', 'FireplaceQu_Tencode|Neighborhood_NridgHt', 'FireplaceQu_Ex|GarageType_Basment', 'HalfBath|LotShape_IR3', 'YrSold|MSZoning_RH', 'RoofStyle_Flat|MasVnrType_Tencode', 'BldgType_Duplex|LotShape_IR2', 'TotRmsAbvGrd|MasVnrType_Stone', 'Exterior2nd_BrkFace|Neighborhood_SWISU', 'GarageType_Detchd|BsmtCond_Po', 'MoSold|Neighborhood_Sawyer', 'Functional_Tencode|GarageCond_Gd', 'Fence_GdPrv|GarageFinish_Tencode', 'RoofMatl_Tencode|BsmtCond_TA', 'BsmtFinType2_GLQ|Neighborhood_CollgCr', 'BsmtQual_Ex|Exterior1st_Tencode', 'LotArea|Functional_Min2', 'YrSold|LotConfig_FR2', 'LandContour_Bnk|RoofMatl_Tar&Grv', 'Functional_Typ|GarageQual_Fa', 'Exterior2nd_AsbShng|ExterCond_Gd', 'MiscFeature_Othr|GarageType_Basment', 'Neighborhood_CollgCr|BsmtCond_Tencode', 'LotFrontage|LandContour_Bnk', 'PavedDrive_N|LowQualFinSF', 'RoofMatl_Tencode|Neighborhood_Gilbert', 'Condition1_Norm|Foundation_CBlock', 'MSZoning_Tencode|Street_Pave', 'Exterior1st_HdBoard|Functional_Maj1', 'BldgType_TwnhsE|ExterQual_Gd', 'GarageFinish_Fin|ExterQual_Fa', 'HouseStyle_SFoyer|GarageQual_Fa', '3SsnPorch|Neighborhood_SWISU', 'BsmtCond_Gd|BsmtFinType2_Unf', 'Functional_Tencode', 'FullBath|LotConfig_Inside', 'GarageType_Tencode|GarageCond_Ex', 'RoofStyle_Hip|LotShape_IR3', 'CentralAir_Tencode|SaleType_CWD', 'Fence_Tencode|HouseStyle_2.5Unf', 'Condition1_Artery|FireplaceQu_Gd', 'LotShape_IR2|Electrical_Tencode', 'GarageFinish_Fin|BsmtFinType1_LwQ', 'Electrical_SBrkr|MSZoning_RM', 'SaleCondition_Tencode|Neighborhood_NridgHt', 'GrLivArea|FullBath', 'Electrical_FuseP|BsmtFinType1_Unf', 'PavedDrive_P|MSZoning_FV', 'Fence_MnPrv|Street_Pave', 'Exterior2nd_BrkFace|BsmtFinSF1', 'SaleType_ConLD|MoSold', 'Street_Tencode|BsmtCond_Po', 'BsmtFinType2_Tencode|BldgType_Twnhs', 'GarageType_BuiltIn|ExterCond_Fa', 'LotShape_Reg|MSZoning_RL', 'Street_Tencode|BldgType_Twnhs', 'Condition1_RRAe|HouseStyle_SLvl', 'LandContour_Bnk|MasVnrType_BrkCmn', 'Electrical_FuseP|Exterior1st_CemntBd', 'BsmtFinType2_BLQ|HouseStyle_2.5Unf', 'KitchenQual_Tencode|GarageType_Basment', 'LotShape_IR1|FireplaceQu_TA', 'Heating_GasA|Functional_Min1', 'FireplaceQu_Ex|Exterior2nd_HdBoard', 'MSZoning_C (all)|GarageYrBlt', 'HouseStyle_1Story|MSZoning_FV', 'Street_Tencode|RoofMatl_Tar&Grv', 'CentralAir_N|BsmtCond_TA', 'Neighborhood_Sawyer|Condition1_Tencode', 'Neighborhood_SWISU|Functional_Min2', 'SaleType_WD|BsmtFinType1_Unf', 'MiscFeature_Gar2|Exterior2nd_AsphShn', 'Neighborhood_Veenker|Exterior1st_WdShing', 'Foundation_CBlock|HouseStyle_2Story', 'YrSold|SaleCondition_Normal', 'LotConfig_CulDSac|GarageArea', 'BsmtExposure_Av|MasVnrArea', 'Condition1_PosA|CentralAir_Tencode', 'BsmtCond_TA|MasVnrType_Stone', 'KitchenAbvGr|ExterCond_Tencode', 'ExterCond_Tencode|ExterCond_Fa', 'BsmtQual_Gd|Exterior1st_Plywood', 'BsmtFinType2_ALQ|BsmtCond_Tencode', 'LandSlope_Sev|Neighborhood_Gilbert', 'Condition1_Feedr|MSZoning_FV', 'Exterior2nd_Stone|Exterior2nd_Brk Cmn', 'Neighborhood_Blmngtn|HouseStyle_SFoyer', 'BsmtUnfSF|Alley_Grvl', 'Exterior2nd_Stucco|Alley_Tencode', 'GrLivArea|3SsnPorch', 'Exterior2nd_VinylSd|CentralAir_N', 'OpenPorchSF|FireplaceQu_TA', 'Exterior1st_Wd Sdng|LotConfig_Inside', 'BsmtExposure_Tencode|Foundation_BrkTil', 'Electrical_FuseP|HeatingQC_Ex', 'BldgType_2fmCon|Exterior1st_Plywood', 'BsmtHalfBath|LotConfig_CulDSac', 'Exterior2nd_MetalSd|BsmtCond_Gd', 'Electrical_Tencode|Electrical_FuseF', 'BsmtHalfBath|Exterior2nd_Wd Shng', 'HeatingQC_TA|BsmtFinType1_LwQ', 'PavedDrive_N|BsmtFinType1_Unf', 'BsmtFinType1_BLQ|Neighborhood_Gilbert', 'Neighborhood_Tencode|Street_Grvl', 'HouseStyle_Tencode|Foundation_CBlock', 'Neighborhood_NPkVill|Functional_Typ', '3SsnPorch|MSZoning_C (all)', 'HeatingQC_Gd|Exterior2nd_Wd Sdng', 'Neighborhood_Timber|HouseStyle_2Story', 'Exterior2nd_MetalSd|Condition1_Tencode', 'BsmtQual_Tencode|CentralAir_N', 'Exterior1st_AsbShng|Street_Grvl', 'Neighborhood_NAmes|Foundation_CBlock', 'Fence_GdPrv|Condition1_RRAn', 'Exterior2nd_BrkFace|MSZoning_Tencode', 'BsmtFinSF2|PoolArea', 'BsmtFinType1_BLQ|Condition1_PosA', 'RoofMatl_Tar&Grv|WoodDeckSF', 'MSZoning_RM|MSSubClass', 'Heating_GasA|Neighborhood_IDOTRR', 'EnclosedPorch|LandContour_Tencode', 'GarageType_CarPort|Neighborhood_MeadowV', 'BsmtFinType1_LwQ|Neighborhood_Timber', 'BldgType_2fmCon|Neighborhood_Timber', 'Neighborhood_NoRidge|HeatingQC_Ex', 'LandSlope_Mod|FireplaceQu_Po', 'Neighborhood_Edwards|GarageFinish_Tencode', 'Exterior2nd_Tencode|LotShape_IR3', 'EnclosedPorch|Condition1_RRAe', 'MSZoning_C (all)|Fence_MnPrv', 'BsmtCond_Tencode|Neighborhood_IDOTRR', 'Heating_Grav|MasVnrType_Tencode', 'LowQualFinSF|ExterQual_Fa', 'RoofMatl_WdShngl|Functional_Min2', 'OverallCond|SaleCondition_Abnorml', 'Fireplaces|Exterior2nd_Brk Cmn', 'Exterior2nd_Tencode|Functional_Mod', 'Neighborhood_NridgHt|BldgType_1Fam', 'MiscFeature_Gar2|LotConfig_Inside', 'Condition2_Tencode|Exterior1st_Wd Sdng', 'LotConfig_FR2|MSZoning_RH', 'PavedDrive_N|Fence_MnPrv', 'HalfBath|GarageFinish_RFn', 'Functional_Maj1|PavedDrive_P', 'BsmtCond_Po|GarageType_2Types', 'KitchenAbvGr|LotShape_Tencode', 'Heating_GasA|GarageQual_Fa', 'SaleType_ConLD|Exterior1st_MetalSd', 'BldgType_Twnhs|Neighborhood_MeadowV', 'FireplaceQu_Gd|RoofMatl_Tar&Grv', 'KitchenAbvGr|BsmtExposure_Gd', 'Exterior1st_HdBoard|Neighborhood_BrkSide', 'MiscFeature_Othr|Foundation_Slab', 'LowQualFinSF|Neighborhood_Gilbert', 'HouseStyle_1.5Unf|Fence_GdWo', 'Exterior2nd_Stone|ExterCond_Tencode', 'BldgType_Duplex|Neighborhood_NAmes', 'BsmtQual_Ex|RoofStyle_Gambrel', 'BsmtFinType2_GLQ|2ndFlrSF', 'GarageFinish_Fin|MSZoning_FV', 'BsmtFinType1_Tencode|Fence_MnWw', 'Exterior2nd_Tencode|GarageQual_Po', 'RoofStyle_Flat|MSZoning_C (all)', 'KitchenAbvGr|LandSlope_Sev', 'PavedDrive_P|Exterior2nd_Plywood', 'HouseStyle_Tencode|Neighborhood_Sawyer', 'Heating_Tencode|ExterCond_Fa', 'Neighborhood_Edwards|MiscFeature_Tencode', 'PavedDrive_Tencode|Exterior2nd_CmentBd', 'Neighborhood_CollgCr|HouseStyle_2.5Unf', 'YrSold|MSSubClass', 'GarageCond_Fa|Condition1_Tencode', 'Alley_Pave|BsmtQual_Gd', 'BsmtFinType2_BLQ|GarageCond_Ex', 'HouseStyle_1.5Unf|SaleType_COD', 'GarageQual_Fa|ScreenPorch', 'FullBath|3SsnPorch', 'BsmtFinType1_Tencode|GarageCond_Ex', 'GarageCond_TA|Heating_Tencode', 'HeatingQC_Gd|MiscFeature_Shed', 'Neighborhood_BrDale|ExterCond_Fa', 'LandSlope_Gtl|KitchenQual_Fa', 'GarageType_Tencode|Neighborhood_Sawyer', 'HeatingQC_Fa|Condition1_PosN', 'RoofStyle_Tencode|Fence_MnWw', 'RoofMatl_CompShg|Functional_Min2', 'FullBath|Street_Grvl', 'Functional_Min2|Neighborhood_MeadowV', 'CentralAir_N|MasVnrType_Stone', 'HeatingQC_Tencode|Exterior2nd_Plywood', 'YrSold|Street_Pave', 'Neighborhood_Edwards|FireplaceQu_TA', 'RoofStyle_Hip|SaleCondition_Family', 'Exterior2nd_AsbShng|Functional_Mod', 'Alley_Tencode|BsmtExposure_Gd', 'GarageType_Basment|LotConfig_Inside', 'BsmtFullBath|SaleType_Oth', 'LandContour_Tencode|BsmtQual_TA', 'LowQualFinSF|ExterQual_Gd', 'Electrical_SBrkr|CentralAir_Tencode', 'BsmtQual_Tencode|Street_Pave', 'GarageCond_Ex|BsmtFinType2_Unf', 'BsmtFinType2_Rec|BsmtFinType1_LwQ', 'BsmtExposure_No|Utilities_AllPub', 'MiscFeature_Othr|BsmtQual_Ex', 'ExterCond_Gd|HouseStyle_2Story', 'GarageArea|GarageFinish_RFn', 'HouseStyle_SFoyer|PavedDrive_Y', 'ExterCond_TA|HouseStyle_1.5Fin', 'FireplaceQu_Po|BldgType_TwnhsE', 'ExterCond_Tencode|Functional_Min2', 'Neighborhood_NWAmes|GarageYrBlt', 'Exterior1st_VinylSd|OverallCond', 'Exterior2nd_Tencode|Neighborhood_SawyerW', 'BsmtExposure_Tencode|Electrical_Tencode', 'Heating_Grav|BsmtFinType2_BLQ', 'MiscFeature_Othr|GarageType_Attchd', 'LandContour_Low|GarageFinish_RFn', 'PavedDrive_Y|Neighborhood_Crawfor', 'HeatingQC_TA|GarageQual_Gd', 'BsmtFinType2_Unf|Exterior1st_WdShing', 'Electrical_FuseP|GarageFinish_Fin', 'RoofStyle_Flat|Electrical_Tencode', 'BsmtFinSF2|FireplaceQu_TA', 'Neighborhood_SWISU|GarageType_2Types', 'BsmtFinType2_BLQ|Neighborhood_Timber', 'MSSubClass|PavedDrive_P', 'GarageQual_Gd|GarageType_BuiltIn', 'BsmtFinType1_ALQ|LandContour_Lvl', 'FireplaceQu_Fa|Neighborhood_StoneBr', 'BsmtExposure_Tencode|SaleType_ConLD', 'Neighborhood_Gilbert', 'GarageQual_Gd|GarageType_Basment', 'LotConfig_Corner|Functional_Maj2', 'KitchenQual_Fa|GarageFinish_RFn', 'BsmtQual_TA|ExterQual_Ex', 'MasVnrType_BrkFace|Street_Pave', 'Fence_GdPrv|Exterior1st_Wd Sdng', 'Exterior2nd_CmentBd|FireplaceQu_TA', 'HeatingQC_Tencode|ExterCond_Tencode', 'PavedDrive_Y|GarageFinish_RFn', 'GarageType_Tencode|Condition1_Tencode', 'Neighborhood_OldTown|BsmtFullBath', 'HeatingQC_TA|BsmtFullBath', 'GarageCond_Po|MasVnrType_BrkFace', 'HouseStyle_1Story|ExterQual_Ex', 'BsmtFinType2_Tencode|Condition1_RRAe', 'RoofStyle_Shed|PoolArea', 'HouseStyle_SFoyer|Condition2_Tencode', 'GarageQual_TA|BsmtFinType1_Rec', 'Fence_GdWo|Neighborhood_Timber', 'Neighborhood_NridgHt|Neighborhood_Timber', 'BldgType_2fmCon|BsmtFinType1_ALQ', 'GarageType_Tencode|BsmtFinType2_BLQ', 'BsmtFinType2_Unf|ScreenPorch', 'Alley_Pave|RoofStyle_Tencode', 'GarageCond_Gd|MiscFeature_Shed', 'PavedDrive_Tencode|Condition1_Norm', 'Neighborhood_Edwards|HeatingQC_Ex', 'SaleType_ConLI|Neighborhood_Edwards', 'Electrical_SBrkr|MiscFeature_Tencode', 'GarageFinish_Unf|GarageCond_Tencode', 'MiscFeature_Tencode|SaleType_Oth', 'SaleType_WD|Condition1_Tencode', 'Neighborhood_BrDale|2ndFlrSF', 'Neighborhood_NPkVill|HeatingQC_Fa', 'EnclosedPorch|BldgType_1Fam', 'Electrical_SBrkr|SaleType_COD', 'FireplaceQu_Tencode|Foundation_BrkTil', 'GarageFinish_Tencode|Utilities_AllPub', 'PoolArea|BsmtExposure_Gd', 'MiscFeature_Gar2|HouseStyle_SLvl', 'Foundation_Tencode|MiscFeature_Shed', 'HeatingQC_Ex|Exterior1st_BrkComm', 'RoofStyle_Flat|HouseStyle_SFoyer', 'ExterCond_TA|MasVnrType_None', 'PavedDrive_N|PoolArea', 'Fireplaces|Exterior2nd_Tencode', 'Utilities_Tencode|Heating_Tencode', 'BsmtQual_TA|Exterior1st_WdShing', 'LowQualFinSF|HouseStyle_2Story', 'FullBath|GarageCond_Fa', 'BsmtFinType1_ALQ|MasVnrType_BrkCmn', 'RoofMatl_Tencode|Neighborhood_NoRidge', 'BldgType_Twnhs|BsmtFullBath', 'HouseStyle_Tencode|ExterQual_Gd', 'Neighborhood_Mitchel|BedroomAbvGr', 'FireplaceQu_Gd|Condition1_PosA', 'BsmtQual_Fa|BsmtFullBath', 'Functional_Typ|Neighborhood_Gilbert', 'LandSlope_Gtl|HouseStyle_1.5Fin', 'Exterior2nd_Stucco|RoofStyle_Flat', 'BsmtFinType1_Unf|BsmtFinType1_GLQ', 'GarageType_BuiltIn|LandSlope_Gtl', 'GarageFinish_RFn|RoofMatl_WdShngl', 'Exterior2nd_Stucco|BsmtCond_TA', 'Electrical_FuseP|Fence_GdPrv', 'MiscFeature_Shed|Utilities_AllPub', 'HouseStyle_SFoyer|GarageType_Attchd', 'BsmtQual_TA|MSZoning_C (all)', 'Neighborhood_Blmngtn|BsmtFinType2_ALQ', 'FireplaceQu_Tencode|GarageQual_Po', 'YearRemodAdd|Neighborhood_Mitchel', 'Electrical_FuseF|MasVnrType_Tencode', 'Heating_GasW|ExterQual_Fa', 'GarageArea|ExterCond_Fa', 'BsmtFinSF2|GarageFinish_Tencode', 'GarageCond_TA|BsmtFinType2_ALQ', 'Street_Tencode', 'BldgType_Duplex|Neighborhood_CollgCr', 'RoofMatl_CompShg|Exterior2nd_Wd Sdng', 'LotShape_Reg|1stFlrSF', 'ExterCond_TA|SaleCondition_Alloca', 'Condition1_Artery|GrLivArea', 'LandSlope_Gtl|PavedDrive_P', 'PavedDrive_N|SaleCondition_Partial', 'GarageType_BuiltIn|GarageQual_Tencode', 'BsmtFinType2_Tencode|MasVnrType_None', 'Neighborhood_Somerst|FireplaceQu_Fa', 'GarageQual_Gd|Exterior1st_BrkComm', 'OverallQual|ScreenPorch', 'SaleCondition_Family|SaleType_New', 'GarageCond_Tencode|GarageQual_TA', 'Condition2_Tencode|Exterior2nd_Wd Sdng', 'MoSold|RoofMatl_WdShngl', 'GarageCars|LotConfig_FR2', 'Exterior2nd_BrkFace|Utilities_AllPub', 'Exterior2nd_VinylSd|RoofStyle_Tencode', 'Utilities_Tencode|BsmtCond_Tencode', 'Neighborhood_SawyerW', 'LandContour_HLS|Neighborhood_Timber', 'Exterior2nd_VinylSd|Exterior1st_VinylSd', 'RoofMatl_CompShg|SaleType_New', 'GarageArea|MSZoning_RL', 'Condition1_PosN|Neighborhood_Crawfor', 'PoolQC_Tencode|Fence_GdWo', 'ExterCond_Tencode|GarageType_Attchd', 'Functional_Typ|HouseStyle_1.5Fin', 'ScreenPorch|Exterior2nd_HdBoard', 'Foundation_Stone|FireplaceQu_Po', 'LotConfig_CulDSac|Functional_Maj2', 'SaleCondition_Tencode|Neighborhood_StoneBr', 'Neighborhood_Tencode|GarageType_BuiltIn', 'Neighborhood_NridgHt|Electrical_FuseF', 'BsmtQual_Fa|Functional_Mod', 'LotConfig_CulDSac|Neighborhood_NWAmes', 'LandContour_HLS|OverallCond', 'Fireplaces|HouseStyle_2.5Unf', 'EnclosedPorch|Neighborhood_MeadowV', 'Electrical_FuseP|GarageType_BuiltIn', 'GarageType_Tencode|CentralAir_Y', 'ExterQual_TA|GarageQual_TA', 'GarageCars|MSZoning_RM', 'Neighborhood_ClearCr|Exterior1st_CemntBd', 'SaleType_ConLw|MasVnrType_BrkCmn', 'ExterQual_TA|SaleType_WD', 'Functional_Typ|LandContour_Lvl', 'Exterior1st_HdBoard|Heating_Grav', 'BsmtFinType1_BLQ|TotRmsAbvGrd', 'PavedDrive_N|LotConfig_Inside', 'Neighborhood_IDOTRR|LotShape_IR3', 'LandSlope_Tencode|Condition1_Norm', 'SaleCondition_Tencode|LandSlope_Mod', 'PoolArea|BsmtCond_TA', 'HeatingQC_TA|Neighborhood_Timber', 'SaleType_WD|FireplaceQu_Ex', 'BldgType_Duplex|TotalBsmtSF', 'LotShape_IR2|Electrical_FuseP', 'HouseStyle_SFoyer|FireplaceQu_Ex', 'HeatingQC_Fa|MSZoning_FV', 'EnclosedPorch|BldgType_Twnhs', 'Exterior2nd_BrkFace|Fence_GdWo', 'RoofMatl_Tar&Grv|MiscFeature_Tencode', 'HeatingQC_TA|PavedDrive_Y', 'Exterior2nd_MetalSd|GarageType_BuiltIn', 'Foundation_BrkTil|Exterior2nd_MetalSd', 'Heating_GasA|Condition1_Norm', 'GarageFinish_Fin|HouseStyle_1.5Fin', 'SaleCondition_Tencode|Neighborhood_Edwards', 'Foundation_Stone|SaleCondition_Alloca', 'Heating_GasW|BsmtFinType2_Unf', 'RoofMatl_Tar&Grv|Electrical_FuseF', 'RoofMatl_Tencode|GarageQual_Po', 'PavedDrive_Y|ExterQual_Gd', 'Functional_Maj2|Street_Pave', 'MasVnrType_BrkCmn|MiscFeature_Tencode', 'GarageFinish_Fin|SaleType_Oth', 'HeatingQC_Fa|BsmtExposure_Av', 'BsmtCond_Tencode|GarageFinish_RFn', 'RoofMatl_Tar&Grv|GarageType_Attchd', 'LandSlope_Mod|Utilities_AllPub', 'GarageCond_Ex|PoolArea', 'SaleType_ConLI|MSZoning_Tencode', 'Functional_Mod|MasVnrType_Stone', 'LotConfig_Corner|BldgType_1Fam', 'Neighborhood_StoneBr|Alley_Grvl', 'RoofMatl_CompShg|SaleType_CWD', 'SaleType_New|ScreenPorch', 'BsmtExposure_Tencode|KitchenQual_TA', 'Heating_Tencode|FireplaceQu_Fa', 'Exterior2nd_AsbShng|MSSubClass', 'LandSlope_Gtl|ExterCond_Fa', 'LotArea|3SsnPorch', 'FireplaceQu_Fa|BldgType_1Fam', 'LandContour_Tencode|OpenPorchSF', 'Electrical_SBrkr|RoofMatl_Tar&Grv', 'Exterior1st_BrkComm|Exterior1st_MetalSd', 'LotArea|SaleType_Tencode', 'BsmtFinType1_BLQ|RoofStyle_Tencode', 'HouseStyle_SLvl|ExterCond_Fa', 'GarageCond_Ex|Fence_MnPrv', 'Foundation_Tencode|BsmtUnfSF', 'FireplaceQu_Gd|Heating_Tencode', 'Exterior1st_BrkFace|LandSlope_Sev', 'SaleType_Tencode|Condition1_RRAn', 'Exterior2nd_Stucco|WoodDeckSF', 'RoofStyle_Shed|HouseStyle_2Story', 'BsmtExposure_Av|LotConfig_Tencode', 'GarageFinish_Fin|MSSubClass', 'SaleType_ConLI|GarageType_CarPort', 'BsmtFinSF2|HouseStyle_SLvl', 'Neighborhood_NAmes|Exterior2nd_Plywood', 'Heating_GasW|LandContour_Lvl', 'LandContour_HLS|BsmtUnfSF', 'RoofMatl_Tencode|BldgType_Tencode', 'Foundation_Tencode|RoofStyle_Gable', 'Foundation_Stone|GarageType_2Types', 'LotConfig_CulDSac|MSZoning_RM', 'BsmtFinType2_ALQ|SaleType_New', 'Neighborhood_Blmngtn|MiscFeature_Othr', 'KitchenQual_Fa|Exterior2nd_Wd Shng', 'FireplaceQu_Tencode|Utilities_Tencode', 'MiscFeature_Tencode|Exterior1st_Wd Sdng', 'GarageArea|Exterior2nd_Brk Cmn', 'HeatingQC_Fa|BldgType_Twnhs', 'SaleType_ConLD|BsmtExposure_Mn', 'MSZoning_FV|Street_Pave', 'Fence_Tencode|Exterior2nd_AsphShn', 'BsmtFinType1_ALQ|MasVnrType_Stone', 'FireplaceQu_Tencode|ExterQual_Gd', 'LotShape_IR2|GarageType_Attchd', 'Condition1_PosA|KitchenQual_Fa', 'LotConfig_Corner|BsmtQual_Tencode', 'RoofStyle_Hip|MSZoning_RM', 'Neighborhood_Gilbert|Exterior1st_BrkComm', 'PavedDrive_Tencode|MasVnrType_Tencode', 'Neighborhood_ClearCr|BsmtFinSF1', 'Fence_Tencode|MasVnrType_BrkFace', 'Exterior2nd_MetalSd|BsmtFinType2_Rec', 'BsmtFinType1_Rec|MSSubClass', 'RoofStyle_Gambrel|FireplaceQu_TA', 'Exterior2nd_Wd Sdng|BldgType_1Fam', 'ExterCond_Gd|Functional_Maj1', 'Exterior1st_HdBoard|Heating_GasA', 'RoofStyle_Hip|Neighborhood_Blmngtn', 'Electrical_FuseA|SaleType_WD', 'BsmtFinType1_Rec|Exterior2nd_MetalSd', 'Neighborhood_BrkSide|ExterQual_Fa', 'Exterior1st_BrkFace|Neighborhood_NPkVill', 'BsmtCond_Tencode|CentralAir_Y', 'YearRemodAdd|RoofStyle_Gable', 'Neighborhood_NPkVill|BsmtFinType2_ALQ', 'Condition1_PosA|LotConfig_Inside', 'Functional_Typ|MSZoning_RL', 'Neighborhood_Mitchel|MiscFeature_Gar2', 'Heating_Grav|HeatingQC_Tencode', 'KitchenQual_Ex|GarageCond_Fa', 'RoofMatl_WdShngl|ExterQual_Fa', 'Exterior2nd_HdBoard', 'ExterCond_Gd|Neighborhood_Sawyer', 'BsmtFullBath|SaleCondition_Abnorml', 'RoofStyle_Tencode|ExterCond_Fa', 'Foundation_BrkTil|ExterCond_Gd', 'HalfBath|MSZoning_C (all)', 'BsmtFinType1_BLQ|BsmtFinType2_LwQ', 'Condition1_Tencode|SaleType_COD', 'BsmtFinType2_GLQ|Foundation_CBlock', 'BsmtFinSF2|Condition1_Feedr', 'GarageFinish_Unf|MasVnrType_None', 'KitchenQual_Tencode|SaleCondition_Abnorml', 'FireplaceQu_Tencode|KitchenQual_Tencode', 'BsmtFullBath|SaleType_New', 'MiscFeature_Shed|BsmtCond_Po', 'Exterior2nd_AsbShng|MSZoning_FV', 'Exterior2nd_MetalSd', 'Functional_Maj2|CentralAir_N', 'GarageCond_Fa|Functional_Mod', 'Functional_Min1|MasVnrType_BrkFace', 'Neighborhood_NridgHt|Alley_Tencode', 'BsmtFinType1_Unf|MasVnrType_Stone', 'RoofStyle_Shed|Fence_MnWw', 'GarageCond_Ex|SaleType_Oth', 'Neighborhood_Tencode|LotConfig_Tencode', 'Heating_GasW|Exterior1st_Wd Sdng', 'Neighborhood_Somerst|Fence_MnWw', 'Condition1_Norm|GarageType_Basment', 'BsmtFinType1_Unf|Fence_MnPrv', 'Heating_GasW|SaleType_New', 'LotConfig_Corner|GarageFinish_RFn', 'FireplaceQu_Fa|LotConfig_Tencode', 'TotalBsmtSF|Neighborhood_MeadowV', 'GarageQual_TA|MoSold', 'LotShape_Tencode|HouseStyle_2Story', 'ExterQual_Gd|Condition2_Norm', 'Utilities_Tencode|Exterior2nd_Tencode', 'Condition2_Artery|SaleCondition_Partial', 'BsmtExposure_Tencode|LotShape_Reg', 'LotShape_IR2|BsmtQual_Ex', 'Exterior1st_AsbShng|BsmtQual_Gd', 'Foundation_Stone|BsmtExposure_Gd', 'RoofStyle_Flat|BldgType_1Fam', 'BsmtFinType1_BLQ|Exterior1st_Plywood', 'FireplaceQu_Tencode|MasVnrType_Tencode', 'ExterQual_TA|RoofStyle_Tencode', 'RoofStyle_Tencode|Neighborhood_MeadowV', 'LandContour_Lvl|ExterQual_Ex', 'LandContour_Bnk|GarageArea', 'BsmtFinType2_BLQ|ExterQual_Gd', 'PoolQC_Tencode|MasVnrType_Tencode', 'OverallQual|Neighborhood_Timber', 'FireplaceQu_Po|Functional_Min1', 'MiscVal|LandContour_HLS', 'Neighborhood_OldTown|BsmtFinType2_BLQ', 'BsmtFinType2_LwQ', 'MiscFeature_Shed|GarageCond_Ex', 'GarageCars|Exterior2nd_HdBoard', 'MiscFeature_Shed|PavedDrive_P', 'Neighborhood_Crawfor|HouseStyle_SLvl', 'GarageArea|ExterQual_Ex', 'HeatingQC_Ex|Functional_Min2', 'KitchenQual_Ex|Fence_MnWw', 'EnclosedPorch|GarageType_CarPort', 'FireplaceQu_Gd|RoofMatl_WdShngl', 'MiscFeature_Othr|Exterior2nd_MetalSd', 'HouseStyle_2.5Unf|Exterior2nd_AsphShn', 'Condition1_Artery|ExterCond_TA', 'SaleCondition_Tencode|Utilities_Tencode', 'LotShape_IR2|GarageCars', 'BsmtQual_Tencode|FireplaceQu_TA', 'Fireplaces|MSSubClass', 'LotShape_Reg|OpenPorchSF', 'HeatingQC_Fa|Fence_Tencode', 'MoSold|OpenPorchSF', 'BsmtFinType1_Rec|Neighborhood_Gilbert', 'MiscFeature_Tencode|BsmtFinType1_GLQ', 'Functional_Maj1|BsmtUnfSF', 'SaleCondition_Family|BsmtCond_Po', 'MasVnrArea|Exterior1st_MetalSd', 'ExterQual_Gd|BsmtExposure_Gd', 'MasVnrArea|Fence_MnWw', 'BsmtExposure_Tencode|GarageArea', 'Neighborhood_NridgHt|GrLivArea', 'HouseStyle_1.5Fin|HouseStyle_2Story', 'ExterCond_TA|Electrical_FuseP', 'Neighborhood_Blmngtn|ExterQual_Gd', 'BsmtQual_TA|BsmtFinType2_LwQ', 'BedroomAbvGr|Fence_GdWo', 'LotConfig_Corner|Heating_GasW', 'BldgType_TwnhsE|MSSubClass', 'BsmtFinType1_BLQ|ExterCond_Fa', 'LandSlope_Sev|Utilities_AllPub', 'KitchenQual_Fa|BsmtCond_Tencode', 'Foundation_Tencode|BldgType_TwnhsE', 'BsmtFinType1_Rec|Neighborhood_SawyerW', 'GarageType_Detchd|GarageQual_TA', 'Foundation_CBlock|Neighborhood_Crawfor', 'FireplaceQu_Gd|Fence_MnPrv', 'GarageType_CarPort|Fence_MnWw', 'YearBuilt|HouseStyle_2Story', 'Fence_GdWo|CentralAir_Tencode', 'SaleCondition_Normal|Exterior1st_VinylSd', 'Neighborhood_NWAmes|BsmtCond_Fa', 'FireplaceQu_Po|2ndFlrSF', 'Neighborhood_StoneBr|Neighborhood_Gilbert', 'Exterior2nd_Plywood|Exterior1st_Plywood', 'Exterior2nd_Stucco|Neighborhood_Veenker', 'LotArea|BsmtExposure_Gd', 'BsmtFinType2_ALQ|SaleType_ConLI', 'MiscFeature_Othr|FullBath', 'SaleCondition_Abnorml|Neighborhood_MeadowV', 'Exterior2nd_Stucco|HouseStyle_2.5Unf', 'BldgType_TwnhsE|Street_Pave', 'GarageQual_Fa|GarageCond_Ex', 'GarageFinish_Fin|HeatingQC_Ex', 'GarageQual_Gd|Neighborhood_IDOTRR', 'Functional_Tencode|MSZoning_RM', 'Exterior1st_CemntBd|GarageCond_Ex', 'OverallQual|ExterCond_TA', 'LandContour_Lvl|GarageCond_Ex', 'HalfBath|GarageType_BuiltIn', 'GarageType_Detchd|Fireplaces', 'Heating_GasW|PoolQC_Tencode', 'Neighborhood_Tencode|Exterior2nd_Wd Sdng', 'Exterior2nd_Stucco|Exterior2nd_Wd Sdng', 'FireplaceQu_Po|GarageQual_Tencode', 'PavedDrive_Y|HouseStyle_2Story', 'SaleCondition_Tencode|BsmtFinType1_Rec', 'PavedDrive_Tencode|BsmtFinType2_LwQ', 'Neighborhood_Mitchel|Neighborhood_Tencode', 'Neighborhood_SWISU|RoofStyle_Gable', 'RoofStyle_Flat|GarageType_Tencode', 'TotRmsAbvGrd|GarageCond_Ex', 'Functional_Mod|Exterior1st_VinylSd', 'KitchenAbvGr|BldgType_Tencode', 'ExterQual_Gd|Foundation_CBlock', 'Exterior1st_Tencode|BsmtQual_Gd', 'Exterior2nd_Tencode|GarageQual_TA', 'PavedDrive_Y|Exterior1st_BrkComm', '3SsnPorch|LandContour_Lvl', 'Alley_Tencode|BldgType_Tencode', 'ExterQual_Ex|ExterQual_Tencode', 'LotShape_IR2|MasVnrType_BrkFace', 'EnclosedPorch|SaleType_ConLI', 'TotalBsmtSF|SaleType_CWD', 'OverallQual|Exterior2nd_HdBoard', 'HeatingQC_Gd|Foundation_Slab', 'GarageCond_Po|MSZoning_RM', 'SaleCondition_Family|MasVnrType_BrkCmn', 'SaleCondition_Tencode|LowQualFinSF', 'GarageQual_TA|Neighborhood_StoneBr', 'GarageType_Detchd|Neighborhood_Somerst', 'Alley_Tencode|Exterior2nd_CmentBd', 'BsmtUnfSF|WoodDeckSF', 'SaleType_WD|Fence_MnWw', 'Condition2_Tencode|MiscFeature_Tencode', 'GarageQual_Gd|LandSlope_Mod', 'Neighborhood_NoRidge|Street_Pave', 'MSSubClass|BsmtFinType1_Unf', 'LandContour_Bnk|ExterCond_Fa', 'KitchenAbvGr|Electrical_FuseA', 'Exterior2nd_Tencode|BsmtFullBath', 'YearBuilt|Neighborhood_StoneBr', 'YrSold|MoSold', 'Exterior2nd_Stone|BsmtFinType1_ALQ', 'GarageQual_TA|GarageFinish_Tencode', 'HouseStyle_1.5Unf|LotShape_IR3', 'RoofMatl_Tencode|Fence_GdPrv', 'GarageQual_Fa|CentralAir_Tencode', 'GarageQual_TA|Neighborhood_Crawfor', 'RoofStyle_Hip|Alley_Grvl', 'GarageCond_Po|Exterior2nd_Tencode', 'GarageType_Basment|Utilities_AllPub', 'Condition1_RRAn|MSZoning_RH', 'BsmtExposure_Gd|Exterior1st_Wd Sdng', 'LotShape_Reg|CentralAir_N', 'Neighborhood_Edwards|Condition2_Tencode', 'Neighborhood_SawyerW|HouseStyle_SLvl', 'LotShape_IR2|Condition2_Norm', 'ExterCond_Gd|FireplaceQu_Ex', 'Heating_GasW|Neighborhood_Gilbert', 'HeatingQC_TA|Foundation_CBlock', 'Functional_Mod|PavedDrive_P', 'LandContour_Low|1stFlrSF', 'Neighborhood_NAmes|GarageQual_Tencode', 'Electrical_FuseF|Condition1_RRAe', 'Neighborhood_NPkVill|GarageType_2Types', 'MSZoning_RL|MasVnrType_Stone', 'BsmtFinType1_BLQ|Heating_GasW', 'ExterCond_Fa', 'BsmtQual_Tencode|FireplaceQu_Ex', 'BsmtQual_TA|1stFlrSF', 'Condition1_Feedr|GarageType_2Types', 'LandContour_Low|Alley_Tencode', 'Heating_Grav|YearBuilt', 'LandSlope_Sev|MSSubClass', 'BsmtExposure_Tencode|Functional_Mod', 'KitchenAbvGr|BsmtExposure_Tencode', 'LandSlope_Sev|LandSlope_Tencode', 'LotShape_IR1|Utilities_AllPub', 'BsmtQual_Ex|LandContour_Lvl', 'BsmtQual_Gd|LotShape_IR3', 'Foundation_PConc|Fence_Tencode', 'GarageCond_TA|Condition2_Artery', 'Neighborhood_NPkVill|GarageCond_TA', 'ExterCond_TA|Functional_Maj1', 'Alley_Grvl|Condition2_Norm', 'Exterior2nd_Brk Cmn|HouseStyle_SLvl', 'GarageCars|PavedDrive_P', 'FireplaceQu_Gd|RoofStyle_Shed', 'YearRemodAdd|HouseStyle_SFoyer', 'Exterior2nd_Stone|GarageCond_Fa', 'LandSlope_Sev|GarageQual_Fa', 'Condition1_Artery|Neighborhood_Tencode', 'GarageCond_Po|Condition1_PosN', 'LandSlope_Sev|RoofStyle_Shed', 'SaleCondition_Tencode|Condition1_Feedr', 'Exterior1st_BrkFace|MasVnrType_BrkFace', 'LowQualFinSF|Utilities_AllPub', 'Electrical_Tencode|GarageFinish_RFn', 'Utilities_Tencode|HouseStyle_2Story', 'BsmtQual_TA|Exterior1st_MetalSd', 'SaleType_Oth|Exterior1st_Plywood', 'SaleCondition_Normal|SaleCondition_Abnorml', 'Condition1_RRAe|BsmtExposure_Gd', 'Functional_Mod|BsmtCond_TA', 'Exterior2nd_Stucco|SaleType_Oth', 'HeatingQC_TA|LotShape_IR3', 'Fence_GdPrv|GarageCond_Ex', 'BsmtQual_Fa|MasVnrArea', 'PavedDrive_N|GarageQual_TA', 'Foundation_Tencode|1stFlrSF', 'LotFrontage|2ndFlrSF', 'LandContour_Tencode|Street_Grvl', 'LowQualFinSF|LotConfig_Inside', 'BsmtFinType2_Tencode|HouseStyle_2Story', 'BsmtFullBath|ExterCond_Gd', 'Fence_GdWo|Neighborhood_BrkSide', 'HeatingQC_Gd|SaleCondition_Alloca', 'Neighborhood_Mitchel|BsmtQual_Ex', 'Foundation_CBlock|MasVnrArea', 'BsmtCond_Tencode|Functional_Min2', 'Exterior1st_CemntBd|LotConfig_Inside', '3SsnPorch|HeatingQC_Tencode', 'BsmtQual_Fa|GarageQual_TA', 'RoofStyle_Tencode|Foundation_CBlock', 'RoofMatl_WdShngl|HouseStyle_1.5Fin', 'Exterior2nd_Tencode|MasVnrArea', 'Heating_GasW|Exterior1st_Plywood', 'Neighborhood_Blmngtn|HeatingQC_Ex', 'KitchenQual_TA|Functional_Min2', 'BldgType_Twnhs|Foundation_Slab', 'LandSlope_Sev|Exterior2nd_CmentBd', 'LotConfig_Corner|Exterior2nd_MetalSd', 'BsmtExposure_Tencode|GarageQual_Po', '3SsnPorch|MSZoning_RH', 'BsmtFinType2_ALQ|GarageType_Tencode', 'HeatingQC_TA|LandContour_Lvl', 'HeatingQC_Gd|Neighborhood_Veenker', 'BsmtFinType2_Unf|Neighborhood_BrkSide', 'BsmtExposure_Tencode|ScreenPorch', 'Exterior1st_HdBoard|MiscVal', 'PoolQC_Tencode|LotConfig_CulDSac', 'Exterior2nd_MetalSd|LandSlope_Gtl', 'ExterCond_Tencode|GarageType_2Types', 'Exterior2nd_VinylSd|Exterior1st_WdShing', 'FireplaceQu_Ex|Exterior2nd_Wd Sdng', 'Foundation_PConc|SaleCondition_Abnorml', 'LandContour_Low|MSZoning_FV', 'Foundation_PConc|GarageFinish_RFn', 'Neighborhood_OldTown|Neighborhood_SawyerW', 'KitchenQual_Fa|KitchenQual_TA', 'Functional_Typ|LandContour_HLS', 'EnclosedPorch|BsmtExposure_Mn', 'BsmtFinType1_BLQ|SaleCondition_Family', 'ExterCond_Gd|BsmtCond_Fa', 'MSZoning_C (all)|Exterior2nd_Plywood', 'Functional_Tencode|HouseStyle_Tencode', 'Functional_Mod|BsmtExposure_No', 'Neighborhood_NoRidge|CentralAir_Tencode', 'HalfBath|Exterior1st_Tencode', 'LandSlope_Tencode|GarageType_Basment', 'Foundation_BrkTil|MSZoning_C (all)', 'FireplaceQu_TA|ExterQual_Tencode', 'BsmtFinType2_BLQ|ExterCond_Gd', 'Exterior2nd_Stucco|2ndFlrSF', 'Exterior2nd_BrkFace|SaleType_CWD', 'BsmtHalfBath|GarageCond_Fa', '3SsnPorch|PavedDrive_Tencode', 'Exterior2nd_AsbShng|Alley_Grvl', 'PavedDrive_Tencode|Street_Grvl', 'BsmtFinType2_ALQ|FireplaceQu_Fa', 'BsmtQual_Ex|GarageYrBlt', 'Neighborhood_SWISU|GarageQual_Po', 'SaleType_COD|GarageYrBlt', 'HeatingQC_Fa|KitchenQual_Gd', 'Functional_Tencode|BsmtFinType1_ALQ', 'KitchenAbvGr|GarageCond_Ex', 'KitchenAbvGr|Foundation_BrkTil', 'RoofStyle_Hip|Condition2_Tencode', 'SaleCondition_Alloca|BsmtExposure_Gd', 'GarageQual_Gd|Electrical_Tencode', 'Exterior2nd_Wd Sdng|LotConfig_Inside', 'HouseStyle_Tencode|RoofMatl_WdShngl', 'Condition1_PosN|BsmtFinType1_GLQ', 'GarageType_CarPort|CentralAir_Tencode', 'Exterior2nd_VinylSd|LotConfig_CulDSac', 'LandContour_HLS|Fence_GdWo', 'BldgType_Tencode|Exterior1st_Wd Sdng', 'LotFrontage|HouseStyle_Tencode', 'GarageFinish_Unf|Foundation_Stone', 'BsmtExposure_Av|BsmtFinType1_LwQ', 'FireplaceQu_Fa|TotRmsAbvGrd', 'LandContour_Low|Exterior2nd_HdBoard', 'RoofStyle_Hip|BsmtFinType1_Rec', 'PoolArea|SaleType_Oth', 'LotArea|SaleCondition_Normal', 'Neighborhood_CollgCr|SaleType_WD', 'Functional_Maj2|MSZoning_Tencode', 'BsmtQual_Gd|Neighborhood_Timber', 'PoolQC_Tencode|Foundation_Slab', 'KitchenAbvGr|HouseStyle_1.5Unf', 'MiscFeature_Othr|SaleType_ConLI', 'Electrical_Tencode|PoolQC_Tencode', 'MSZoning_RH|LotConfig_Inside', 'KitchenAbvGr|Neighborhood_Edwards', 'Electrical_Tencode|Exterior2nd_AsphShn', 'FireplaceQu_Po|BsmtFinType1_Unf', 'BsmtQual_Tencode|Fence_GdWo', 'MoSold|Functional_Min1', 'OverallQual|Exterior1st_AsbShng', 'FireplaceQu_Tencode|GrLivArea', 'Electrical_FuseF|Street_Grvl', 'Heating_GasW|BsmtExposure_Mn', 'RoofMatl_WdShngl|Exterior1st_MetalSd', 'Neighborhood_Mitchel|Exterior2nd_Wd Sdng', 'MiscVal|PoolArea', 'LandSlope_Mod|SaleType_Tencode', 'KitchenAbvGr|PoolQC_Tencode', 'LotFrontage|BsmtFinSF1', 'SaleCondition_Normal|ExterQual_Fa', 'BsmtFinType2_BLQ|Exterior1st_BrkComm', 'Condition2_Tencode|Exterior1st_MetalSd', 'Neighborhood_NWAmes|SaleCondition_Normal', 'Electrical_Tencode|Neighborhood_NoRidge', 'RoofStyle_Flat|BsmtFinType2_Unf', 'Heating_GasW|Exterior2nd_HdBoard', 'Neighborhood_Veenker|Exterior2nd_Wd Sdng', 'RoofStyle_Gambrel|BsmtExposure_Gd', 'Heating_GasW|Condition1_RRAe', 'Exterior1st_Tencode|BsmtCond_Fa', 'MSSubClass|BsmtFinSF1', 'HalfBath|HeatingQC_Ex', 'GarageQual_TA|MasVnrArea', 'LotShape_IR2|Neighborhood_Blmngtn', 'Street_Tencode|LotConfig_FR2', 'SaleCondition_Tencode|Exterior2nd_HdBoard', 'BsmtFinType2_BLQ|GarageQual_Fa', 'Exterior1st_VinylSd', 'Exterior2nd_AsbShng|BldgType_Duplex', 'ExterQual_Gd|BsmtCond_Fa', '2ndFlrSF|Street_Grvl', 'MSZoning_C (all)|PoolArea', 'BsmtFinType2_Tencode|PavedDrive_Y', 'HeatingQC_Tencode|MiscFeature_Shed', 'SaleCondition_Alloca|MiscFeature_Gar2', 'Fence_Tencode|Exterior2nd_MetalSd', 'Functional_Tencode|Electrical_FuseF', 'Condition1_RRAn|Exterior1st_Plywood', 'LandContour_Low|HeatingQC_Tencode', 'PavedDrive_Tencode|CentralAir_N', 'FullBath|Exterior2nd_CmentBd', 'FireplaceQu_Tencode|Neighborhood_NWAmes', 'Exterior1st_HdBoard|ExterCond_Tencode', 'RoofStyle_Hip|Exterior2nd_Plywood', 'KitchenAbvGr|BsmtCond_Fa', 'BsmtFinType1_BLQ|Neighborhood_BrkSide', 'Neighborhood_CollgCr|HouseStyle_1.5Fin', 'BsmtFinType2_Tencode|HouseStyle_SFoyer', 'BsmtFinType2_Unf|Exterior1st_MetalSd', 'BsmtQual_Ex|LotConfig_Tencode', 'HouseStyle_Tencode|Exterior2nd_Wd Shng', 'Condition1_Artery|Exterior2nd_Stucco', 'BsmtFinType1_Tencode|ExterCond_Fa', 'PavedDrive_N|MasVnrArea', 'BldgType_Twnhs|BsmtUnfSF', 'SaleType_COD|Condition1_RRAn', 'LandSlope_Tencode|CentralAir_Y', 'MSSubClass|BsmtCond_TA', 'FireplaceQu_Gd|Neighborhood_CollgCr', 'LandSlope_Mod|MasVnrType_BrkCmn', 'Fence_Tencode|Electrical_FuseF', 'SaleType_Oth|Utilities_AllPub', 'GarageFinish_Unf|MSZoning_FV', 'GarageQual_TA|Condition2_Artery', 'MiscFeature_Othr|GarageType_CarPort', 'LandContour_Low|GarageCond_Gd', 'LotConfig_CulDSac|MSSubClass', 'RoofMatl_Tar&Grv|MasVnrType_Tencode', 'LotConfig_FR2|BsmtFinType1_Unf', 'Neighborhood_Tencode|KitchenQual_TA', 'Neighborhood_Somerst|LotConfig_FR2', 'LotConfig_Corner|TotRmsAbvGrd', 'LotShape_Tencode|BsmtFinType2_BLQ', 'FireplaceQu_Tencode|Street_Pave', 'Neighborhood_BrDale|PavedDrive_P', 'Exterior1st_Stucco|Exterior1st_Plywood', 'Exterior2nd_MetalSd|Fence_MnWw', 'GarageCars|Foundation_Tencode', 'BsmtQual_Ex|Neighborhood_MeadowV', 'Neighborhood_Veenker|GarageCond_Ex', 'Condition1_PosN|ExterQual_Fa', 'Exterior2nd_AsbShng|LandSlope_Mod', 'HeatingQC_Gd|KitchenQual_Fa', 'TotalBsmtSF|ExterQual_Fa', 'Neighborhood_NoRidge|LotConfig_CulDSac', 'PavedDrive_N|MSZoning_C (all)', 'Alley_Pave|SaleCondition_Family', 'Electrical_FuseP|Condition2_Tencode', 'BsmtFinType2_GLQ|Exterior1st_VinylSd', 'Exterior2nd_AsbShng|Neighborhood_OldTown', 'ScreenPorch|ExterQual_Tencode', 'SaleType_Tencode|BsmtExposure_Mn', 'GarageFinish_Tencode|BsmtExposure_No', 'GarageFinish_Fin|Exterior2nd_Brk Cmn', 'GarageCars|SaleCondition_Alloca', '2ndFlrSF|Condition1_RRAn', 'Exterior1st_CemntBd|BsmtCond_Po', 'GarageFinish_Unf|BsmtFinType2_Unf', 'Fence_GdPrv|Condition1_Feedr', 'KitchenQual_Fa|Fence_GdWo', 'Exterior2nd_MetalSd|HouseStyle_1.5Fin', 'Foundation_PConc|Functional_Tencode', 'GarageType_Detchd|Neighborhood_CollgCr', 'KitchenQual_Fa|ExterQual_Tencode', '3SsnPorch|MasVnrArea', 'PavedDrive_P|BsmtFinType2_Unf', 'BsmtCond_Tencode|Fence_MnPrv', 'PoolArea|Exterior2nd_Wd Shng', 'HouseStyle_2.5Unf|MSZoning_Tencode', 'ExterCond_TA|LandContour_HLS', 'Exterior2nd_Brk Cmn|Neighborhood_IDOTRR', 'HouseStyle_1.5Unf|PavedDrive_P', 'Functional_Maj2|GarageCond_Gd', 'RoofStyle_Flat|Neighborhood_IDOTRR', 'BsmtFinType1_Tencode|LandContour_Tencode', 'BsmtQual_TA|KitchenQual_Fa', 'LandContour_Low|BldgType_2fmCon', 'Street_Tencode|BsmtFinSF1', 'Alley_Tencode|CentralAir_Tencode', 'SaleCondition_Family|MasVnrType_Stone', 'BsmtFinType2_Tencode|BsmtQual_Tencode', 'Neighborhood_Edwards|MSZoning_RH', 'Exterior1st_VinylSd|Exterior2nd_Brk Cmn', 'BldgType_Duplex|GarageCond_Tencode', 'YrSold|LandSlope_Mod', 'LotFrontage|BsmtUnfSF', 'Neighborhood_NWAmes|MasVnrType_Stone', 'KitchenAbvGr|BsmtFinSF2', 'Neighborhood_NAmes|Street_Pave', 'GarageQual_Po|Condition1_Tencode', 'BsmtExposure_No|BsmtCond_Fa', 'FireplaceQu_Po|HouseStyle_2.5Unf', 'ExterCond_Tencode|Condition2_Norm', 'Foundation_BrkTil|MSZoning_FV', 'LotConfig_FR2|Alley_Grvl', 'Exterior1st_BrkFace|BsmtQual_Fa', 'SaleType_ConLD|MiscFeature_Gar2', 'HouseStyle_1Story|BsmtFullBath', 'LotConfig_FR2|Neighborhood_IDOTRR', '2ndFlrSF|GarageCond_Ex', 'BldgType_2fmCon|Fireplaces', 'Condition1_Tencode|OverallCond', 'Exterior1st_Stucco|Exterior2nd_MetalSd', 'Electrical_FuseA|OverallCond', 'Electrical_FuseA|Condition1_PosA', 'Exterior2nd_VinylSd|Electrical_SBrkr', 'Exterior1st_CemntBd|Exterior1st_Wd Sdng', 'Exterior2nd_Stone|GarageFinish_Fin', 'Exterior1st_AsbShng|GarageFinish_Tencode', 'LandContour_Lvl|RoofStyle_Shed', 'ExterQual_Ex|GarageQual_Tencode', 'HouseStyle_Tencode|HouseStyle_2Story', 'RoofMatl_Tar&Grv|BldgType_TwnhsE', 'Neighborhood_Crawfor|GarageType_Basment', 'Neighborhood_Blmngtn|Condition2_Tencode', 'LandSlope_Tencode|SaleType_New', 'FireplaceQu_Fa|GarageQual_Tencode', 'SaleType_Tencode|BsmtUnfSF', 'BsmtFinSF2|Street_Pave', 'Exterior1st_HdBoard|GarageCond_Fa', 'BsmtExposure_Av|BsmtExposure_No', 'RoofMatl_Tencode|Utilities_AllPub', 'BldgType_Duplex|RoofStyle_Hip', '3SsnPorch|Exterior2nd_CmentBd', 'Exterior2nd_Tencode|YearBuilt', 'BsmtFinType1_Tencode|BsmtHalfBath', 'BsmtFinType1_ALQ|Neighborhood_NAmes', 'LandSlope_Tencode|Exterior2nd_Wd Shng', 'BsmtQual_Fa|KitchenQual_Fa', 'GarageCond_TA|Exterior1st_MetalSd', 'MiscVal|ExterQual_Ex', 'LotShape_Tencode|Exterior1st_VinylSd', 'ExterCond_Tencode|KitchenQual_Fa', 'HouseStyle_Tencode|LotConfig_Tencode', 'Exterior1st_Stucco|Exterior1st_CemntBd', 'BsmtExposure_Gd|CentralAir_N', 'Heating_GasW|LandContour_Bnk', 'KitchenQual_Ex|ExterQual_Ex', 'Exterior1st_AsbShng|Condition1_Tencode', 'Fireplaces|Neighborhood_NWAmes', 'CentralAir_Tencode|SaleType_Oth', 'KitchenQual_Fa|CentralAir_Tencode', 'MiscFeature_Shed|Neighborhood_Crawfor', 'GarageCond_TA|Foundation_BrkTil', 'KitchenQual_Gd|Neighborhood_NWAmes', 'BsmtQual_Tencode|ScreenPorch', 'GarageCars|LandSlope_Gtl', 'SaleType_ConLD|BsmtFinType1_Unf', 'BsmtExposure_Tencode|ExterQual_TA', 'Neighborhood_SWISU|1stFlrSF', 'Exterior2nd_AsbShng|ExterCond_TA', 'BsmtFinSF2|WoodDeckSF', 'Neighborhood_Edwards|SaleType_New', 'RoofMatl_Tencode|Condition1_Tencode', 'HouseStyle_Tencode|GarageFinish_Tencode', 'Exterior1st_AsbShng|GarageCond_Ex', 'Utilities_Tencode|Exterior1st_AsbShng', 'OverallQual|BsmtExposure_Tencode', 'LandSlope_Tencode|MSZoning_RL', 'PavedDrive_N|Exterior1st_Plywood', 'Exterior2nd_VinylSd|Exterior2nd_Plywood', 'Heating_GasW|GarageCond_Fa', 'HouseStyle_Tencode|MoSold', 'BsmtFinType2_ALQ|Condition2_Tencode', 'RoofStyle_Flat|SaleCondition_Abnorml', 'Exterior2nd_Wd Sdng|Condition2_Norm', 'Neighborhood_NPkVill|Heating_Tencode', 'KitchenQual_Ex|Exterior1st_CemntBd', 'RoofMatl_CompShg|PoolArea', 'HouseStyle_1Story|GarageQual_Gd', 'Heating_GasA|LotShape_IR1', 'GarageFinish_Fin|PoolQC_Tencode', 'TotalBsmtSF|Neighborhood_Blmngtn', 'BsmtFinType2_ALQ|BsmtFinType2_Rec', 'Exterior2nd_Stucco|BsmtExposure_No', 'ExterCond_TA|GarageQual_Tencode', 'MSZoning_RH|HouseStyle_1.5Fin', 'LandContour_Low|YearBuilt', 'MSZoning_C (all)|BsmtUnfSF', '3SsnPorch|Neighborhood_IDOTRR', 'Utilities_Tencode|HeatingQC_TA', 'OverallQual|MasVnrType_Stone', 'MiscFeature_Othr|KitchenQual_Fa', 'Neighborhood_CollgCr|Exterior2nd_Plywood', 'Functional_Typ|FireplaceQu_Ex', 'LotShape_IR2|Neighborhood_IDOTRR', 'GarageQual_TA|Fence_MnWw', 'GarageQual_Fa|FireplaceQu_TA', 'PoolQC_Tencode|Functional_Min1', 'SaleCondition_Family|ExterQual_Gd', 'Exterior1st_CemntBd|MiscFeature_Tencode', 'GarageArea|BsmtQual_Gd', 'BsmtFinSF2|Functional_Maj1', 'Exterior2nd_MetalSd|SaleCondition_Normal', 'HouseStyle_SFoyer|LotArea', 'RoofStyle_Hip|MasVnrArea', 'SaleCondition_Family|MiscFeature_Shed', 'KitchenQual_TA|Neighborhood_IDOTRR', 'ExterQual_Gd|CentralAir_Tencode', 'MSZoning_C (all)|SaleType_CWD', 'BsmtQual_Ex|ExterQual_Tencode', 'Functional_Mod|Condition1_RRAn', 'RoofMatl_Tencode|ScreenPorch', 'Condition1_Artery|ExterQual_TA', 'MiscFeature_Gar2|BsmtExposure_Mn', 'RoofStyle_Gable|Functional_Min1', 'Exterior2nd_Stone|Exterior2nd_BrkFace', 'BsmtFinType2_GLQ|GarageType_Attchd', 'Exterior2nd_Stucco|FireplaceQu_Po', 'LotFrontage|Exterior2nd_MetalSd', 'Alley_Tencode|BsmtFinType2_LwQ', 'Alley_Pave|MiscFeature_Othr', 'Exterior2nd_Stone|HouseStyle_1.5Unf', 'PavedDrive_Tencode|Functional_Min2', 'KitchenAbvGr|FireplaceQu_Fa', 'Neighborhood_ClearCr|MSZoning_FV', 'GarageType_Detchd|ExterQual_TA', 'LandContour_Bnk|FireplaceQu_TA', 'Foundation_BrkTil|ExterQual_Gd', 'Exterior2nd_Tencode|GarageFinish_RFn', 'Exterior2nd_Tencode|Exterior1st_Wd Sdng', 'RoofMatl_Tencode|BldgType_Twnhs', 'Exterior2nd_Tencode|Condition1_RRAe', 'GarageQual_TA|BldgType_1Fam', 'GarageQual_Gd|HeatingQC_Gd', 'Neighborhood_Blmngtn|Exterior1st_WdShing', 'KitchenQual_Tencode|Neighborhood_BrkSide', 'Heating_GasA|ExterQual_Tencode', 'BsmtFinType1_BLQ|GarageCond_Gd', 'LotShape_Tencode|KitchenQual_Tencode', 'Functional_Typ|CentralAir_N', 'GarageType_Attchd|ExterQual_Gd', 'Electrical_Tencode|BsmtExposure_Av', 'Neighborhood_BrDale|GarageQual_Tencode', 'GarageCond_Ex|Exterior2nd_Brk Cmn', 'FireplaceQu_Po|KitchenQual_Fa', 'EnclosedPorch|Exterior1st_Stucco', 'Functional_Typ|Exterior1st_Tencode', 'GarageCond_Fa|HouseStyle_1.5Fin', 'SaleType_Tencode|KitchenQual_TA', 'ExterCond_TA|WoodDeckSF', 'PavedDrive_N|Condition2_Artery', 'GarageCond_Tencode|BsmtCond_Gd', 'Condition1_Artery|PavedDrive_P', 'Exterior2nd_Wd Shng|Exterior1st_Plywood', 'KitchenAbvGr|Electrical_Tencode', 'BsmtQual_TA|ExterQual_Tencode', 'Neighborhood_SawyerW|MSZoning_Tencode', 'Condition1_Artery|Neighborhood_SawyerW', 'Neighborhood_BrkSide|LotConfig_Inside', 'SaleType_Tencode|MasVnrType_BrkFace', 'Exterior2nd_VinylSd|Condition1_RRAn', 'FireplaceQu_Po|CentralAir_Y', 'BsmtFinType1_Tencode|FireplaceQu_Po', 'BldgType_2fmCon|MSZoning_RH', 'MiscFeature_Tencode|FireplaceQu_TA', 'SaleType_ConLw|Electrical_FuseF', 'Heating_GasA|Exterior2nd_Tencode', 'KitchenQual_Tencode|ExterCond_Tencode', 'Exterior2nd_Stucco|Exterior2nd_CmentBd', 'GrLivArea|Foundation_PConc', 'GarageType_Tencode|SaleType_New', 'HouseStyle_SFoyer|Neighborhood_MeadowV', 'LotConfig_Corner|CentralAir_N', 'RoofStyle_Flat|Heating_GasA', 'Electrical_FuseP|LandContour_Tencode', 'KitchenQual_Tencode|Utilities_AllPub', 'RoofStyle_Tencode|Condition2_Artery', 'HouseStyle_1.5Unf|ExterQual_Ex', 'Exterior1st_AsbShng|Neighborhood_NWAmes', 'SaleType_ConLD|LotConfig_Inside', 'Neighborhood_Mitchel|LandContour_Bnk', 'BsmtHalfBath|Functional_Min2', 'Fireplaces|SaleType_WD', 'SaleCondition_Alloca|BsmtFinType2_Rec', 'PavedDrive_N|GarageCond_Ex', 'GarageType_Tencode|MSSubClass', 'ExterQual_TA|Neighborhood_ClearCr', 'BsmtFinSF2|Exterior1st_VinylSd', 'GarageCond_Ex|ScreenPorch', 'Functional_Maj2|Condition2_Artery', 'Neighborhood_NAmes|CentralAir_Tencode', 'EnclosedPorch|MiscFeature_Shed', 'GarageFinish_Fin|Neighborhood_Veenker', 'HouseStyle_SFoyer|ExterQual_Ex', 'BsmtFinType2_LwQ|Functional_Mod', 'Neighborhood_StoneBr|BsmtCond_Tencode', 'EnclosedPorch|SaleType_CWD', 'BsmtFullBath|GarageQual_TA', 'MiscFeature_Othr|MiscVal', 'Neighborhood_CollgCr|Exterior1st_AsbShng', 'BsmtFinType2_LwQ|Exterior1st_BrkComm', 'MiscFeature_Gar2|Fence_MnWw', 'LotConfig_Corner|HeatingQC_Tencode', 'Exterior1st_HdBoard|BsmtFinType1_GLQ', 'GarageCond_Gd|LotConfig_Inside', 'LotShape_IR2|Neighborhood_Sawyer', 'BldgType_2fmCon|BsmtFullBath', 'Neighborhood_CollgCr|FireplaceQu_Fa', 'LandSlope_Tencode|Neighborhood_Sawyer', 'Electrical_FuseA|GarageType_Tencode', 'Exterior2nd_VinylSd|BsmtFinType2_Unf', 'KitchenQual_Gd|Foundation_Stone', 'BsmtFinType2_LwQ|MasVnrArea', 'Exterior2nd_Tencode|3SsnPorch', 'OverallCond|BldgType_Tencode', 'PoolQC_Tencode|BsmtExposure_No', 'GarageType_Tencode|GarageCond_Fa', 'KitchenAbvGr|FireplaceQu_Tencode', 'GarageFinish_Tencode|BsmtUnfSF', 'KitchenAbvGr|BsmtFinType2_LwQ', 'LandSlope_Tencode|MasVnrType_Stone', 'Condition2_Norm|MasVnrArea', 'RoofStyle_Gambrel|BsmtCond_Po', 'BsmtFinType2_ALQ|HouseStyle_Tencode', 'Electrical_FuseP|Condition1_Norm', 'GrLivArea|Neighborhood_Blmngtn', 'BsmtExposure_Mn|HouseStyle_2Story', 'LotArea|Alley_Grvl', 'LotShape_Reg|Utilities_AllPub', 'MSSubClass|BsmtFinType2_Unf', 'FireplaceQu_Fa|MSZoning_RM', 'BsmtFullBath|Fence_MnPrv', 'Foundation_CBlock|MasVnrType_Tencode', 'SaleType_ConLw|HouseStyle_SLvl', 'GarageFinish_Unf|SaleType_Oth', 'KitchenQual_Gd|HouseStyle_SLvl', 'Neighborhood_Sawyer|Neighborhood_Gilbert', 'GarageFinish_Unf|Fence_Tencode', 'Alley_Pave|SaleType_New', 'OverallQual|LotConfig_Tencode', 'Heating_GasW|Fence_MnPrv', 'Neighborhood_Sawyer|HouseStyle_2.5Unf', 'TotRmsAbvGrd|SaleType_Oth', 'MSZoning_RM|OverallCond', 'HouseStyle_1.5Fin|Utilities_AllPub', 'Heating_GasW|Condition1_PosA', 'KitchenAbvGr|BsmtFinType1_LwQ', 'Exterior2nd_AsbShng|2ndFlrSF', 'RoofStyle_Gable|OverallCond', 'LotShape_Reg|Neighborhood_IDOTRR', 'Exterior1st_HdBoard|BsmtExposure_Mn', 'GarageType_Tencode|TotRmsAbvGrd', 'GarageCond_TA|Condition1_RRAe', 'ExterCond_Tencode|HouseStyle_2.5Unf', 'Foundation_PConc|BsmtFinType1_GLQ', 'Neighborhood_StoneBr|BldgType_TwnhsE', 'LotShape_Reg|BsmtFinType2_GLQ', 'LandSlope_Mod|LandContour_Bnk', 'Alley_Tencode|BsmtQual_Tencode', 'SaleCondition_Partial|Exterior1st_Tencode', 'Exterior2nd_Stucco|GarageCond_Po', 'MasVnrType_BrkCmn|ScreenPorch', 'BsmtFinType2_Tencode|Neighborhood_CollgCr', 'Exterior2nd_Stone|Neighborhood_ClearCr', 'LotShape_Tencode|Electrical_FuseP', 'RoofStyle_Flat|Neighborhood_SWISU', 'BsmtExposure_Tencode|FireplaceQu_Gd', 'LotShape_Reg|MSZoning_Tencode', 'GarageFinish_Tencode|PoolArea', 'GarageType_Detchd|FireplaceQu_Ex', 'GarageCars|Condition1_Norm', 'Utilities_Tencode|Neighborhood_Timber', 'MSZoning_C (all)|MSZoning_RH', 'LandSlope_Tencode|BsmtFinType2_Unf', 'Exterior2nd_BrkFace|Neighborhood_Veenker', 'LotShape_IR2|SaleType_ConLw', 'HouseStyle_1Story|LotConfig_Corner', 'BsmtFinSF2|MasVnrType_BrkCmn', 'Electrical_Tencode|CentralAir_N', 'LotShape_Reg|FireplaceQu_Fa', 'SaleType_COD|Exterior1st_Plywood', 'Foundation_Tencode|GarageType_2Types', 'PavedDrive_N|SaleCondition_Abnorml', 'Neighborhood_Mitchel|CentralAir_Tencode', 'MSSubClass|Functional_Min2', 'Electrical_Tencode|Exterior2nd_HdBoard', 'ExterQual_Ex|PoolArea', 'GarageFinish_Unf|RoofMatl_Tencode', 'Neighborhood_BrDale|SaleCondition_Alloca', 'Utilities_Tencode|Exterior2nd_Stone', 'Street_Tencode|MasVnrType_BrkCmn', 'Condition1_Feedr|RoofStyle_Tencode', 'LotConfig_CulDSac|RoofStyle_Gambrel', 'CentralAir_Tencode|GarageYrBlt', 'OpenPorchSF|KitchenQual_Fa', 'HouseStyle_1.5Unf|OpenPorchSF', 'MSZoning_RH|Neighborhood_MeadowV', 'Fence_GdPrv|Foundation_Slab', 'BsmtExposure_No|Street_Pave', 'BsmtFinType1_Tencode|Alley_Grvl', 'Condition1_RRAn|Functional_Min2', 'BsmtQual_TA|MSZoning_RH', 'RoofStyle_Hip|Utilities_AllPub', 'BsmtFinType1_BLQ|Fence_MnPrv', 'Functional_Maj1|BsmtQual_Gd', 'BsmtFinType1_BLQ|LotConfig_Inside', 'RoofStyle_Gable|BsmtUnfSF', 'LotConfig_FR2|HeatingQC_Tencode', 'BsmtFinType1_ALQ|SaleCondition_Partial', 'LotShape_IR1|BsmtFinType2_BLQ', 'LotShape_Reg|RoofStyle_Gambrel', 'SaleType_ConLD|LandSlope_Gtl', 'BsmtFinType1_Unf|Functional_Min2', 'YearBuilt|LandContour_Bnk', 'Exterior1st_CemntBd|ScreenPorch', 'Exterior2nd_Brk Cmn|HouseStyle_2Story', 'LotFrontage|BsmtFullBath', 'LotConfig_Corner|Exterior1st_Plywood', 'HouseStyle_SFoyer|RoofStyle_Tencode', 'RoofStyle_Hip|HeatingQC_TA', 'LotShape_Tencode|PoolArea', 'GarageCars|BsmtExposure_Gd', 'GarageQual_Fa|LotConfig_Tencode', 'SaleType_New|CentralAir_Y', 'LotArea|Neighborhood_Timber', 'BldgType_Tencode|MSZoning_RL', 'HeatingQC_TA|Condition1_RRAe', 'FireplaceQu_Gd|Neighborhood_MeadowV', 'YrSold|BsmtFinType1_BLQ', 'Exterior2nd_Tencode|LandSlope_Sev', 'Neighborhood_StoneBr|HouseStyle_2.5Unf', 'BsmtUnfSF|ExterCond_Fa', 'HeatingQC_Fa|FireplaceQu_Fa', 'MSZoning_C (all)|Neighborhood_Sawyer', 'FireplaceQu_Po|MSZoning_RM', 'BedroomAbvGr|Exterior2nd_MetalSd', 'Heating_GasA|GarageFinish_Tencode', 'EnclosedPorch|SaleCondition_Family', 'GarageCond_Po|LotFrontage', 'RoofStyle_Gambrel|MoSold', 'SaleType_ConLD|Fence_GdPrv', 'Electrical_Tencode|GarageType_2Types', 'Street_Tencode|GarageCars', 'Fence_Tencode|LandContour_HLS', 'BldgType_2fmCon|MiscFeature_Tencode', 'SaleType_ConLI|BsmtExposure_Av', 'Exterior1st_HdBoard|MasVnrType_None', 'Neighborhood_Edwards|MasVnrType_BrkCmn', 'TotalBsmtSF|Electrical_FuseP', 'Street_Tencode|BsmtFinType1_BLQ', 'Neighborhood_Tencode|Fence_GdPrv', 'GarageCond_TA|MiscFeature_Tencode', 'LandContour_Low|OverallCond', 'BsmtFinSF1|ExterQual_Tencode', 'Street_Tencode|SaleType_CWD', 'RoofMatl_CompShg|Condition1_Norm', 'Exterior1st_VinylSd|Condition1_RRAn', 'FireplaceQu_Gd|Exterior1st_CemntBd', 'MasVnrType_None|MSZoning_FV', 'SaleCondition_Tencode|LandSlope_Tencode', 'BsmtFinType2_Rec|CentralAir_N', 'LandContour_Bnk|MoSold', 'SaleType_Tencode|GarageType_CarPort', 'Neighborhood_Blmngtn|FireplaceQu_Gd', 'Exterior1st_WdShing|ExterQual_Fa', 'FireplaceQu_Po|SaleCondition_Partial', 'Condition1_Feedr|MSZoning_RM', 'Exterior2nd_AsbShng|Exterior2nd_MetalSd', 'LandContour_HLS|PoolQC_Tencode', 'Exterior2nd_AsbShng|BldgType_2fmCon', 'Exterior2nd_Wd Sdng|BsmtFinType1_Unf', '3SsnPorch|HeatingQC_Ex', 'Heating_Tencode|Condition1_Norm', 'GarageFinish_Fin|CentralAir_N', 'HeatingQC_Ex|FireplaceQu_TA', 'Heating_Tencode|Exterior1st_Wd Sdng', 'Neighborhood_NoRidge|BsmtExposure_Mn', 'Neighborhood_NoRidge|LotConfig_FR2', 'BsmtFinType2_BLQ|RoofStyle_Gambrel', 'GarageCond_Fa|RoofMatl_WdShngl', 'TotalBsmtSF|KitchenQual_Gd', 'TotalBsmtSF|Neighborhood_BrkSide', 'LandContour_Low|GarageQual_TA', 'Functional_Min1|RoofStyle_Tencode', 'Condition1_PosA|BldgType_1Fam', 'Heating_Grav|LandSlope_Gtl', '1stFlrSF|CentralAir_N', 'OpenPorchSF|Neighborhood_MeadowV', 'FireplaceQu_Tencode|BsmtFinType2_LwQ', 'MasVnrType_None|GarageType_Basment', 'Heating_GasA|Fence_GdWo', 'Exterior2nd_Stone|Functional_Min1', 'SaleType_New|BsmtFinType2_LwQ', 'GarageCond_TA|TotRmsAbvGrd', 'Neighborhood_CollgCr|3SsnPorch', 'RoofStyle_Gable|HouseStyle_SLvl', 'Neighborhood_CollgCr|RoofStyle_Gambrel', 'HouseStyle_SFoyer|Exterior1st_VinylSd', 'YearRemodAdd|SaleCondition_Partial', 'LotShape_IR1|BsmtQual_Fa', 'LandContour_HLS|Condition2_Norm', 'Alley_Pave|ExterCond_TA', 'Neighborhood_SWISU|BsmtFinType2_LwQ', 'Exterior1st_VinylSd|Fence_MnWw', 'SaleType_COD|BsmtCond_Fa', 'ExterQual_Tencode|BsmtFinType1_Unf', 'LotArea|Exterior1st_MetalSd', 'GarageQual_Po|ExterCond_Fa', 'Functional_Min1|MiscFeature_Gar2', 'LotConfig_CulDSac|MasVnrType_Stone', 'GarageFinish_Fin|Neighborhood_Gilbert', 'Heating_GasA|PavedDrive_Y', 'GarageCars|BldgType_Tencode', 'Foundation_Stone|Electrical_SBrkr', 'Exterior2nd_Wd Shng|LotConfig_Inside', 'BsmtQual_Ex|Exterior1st_Wd Sdng', 'LotArea|KitchenQual_TA', 'BsmtFinType1_Tencode|BsmtExposure_Gd', 'Exterior1st_BrkComm|SaleType_CWD', 'ExterQual_Ex|Foundation_Slab', 'ExterCond_Tencode|BsmtExposure_Av', 'HouseStyle_SFoyer|GarageQual_Po', 'TotRmsAbvGrd|Condition1_Norm', 'BsmtFinType2_GLQ|KitchenQual_TA', 'Exterior2nd_AsbShng|MasVnrType_BrkCmn', 'Electrical_FuseP|Exterior1st_Plywood', 'Neighborhood_Mitchel|SaleType_New', 'Street_Grvl|GarageCond_Ex', 'Exterior2nd_BrkFace|MSZoning_C (all)', 'HalfBath|GarageType_Attchd', 'Condition1_PosA|SaleCondition_Partial', 'Exterior2nd_MetalSd|MasVnrType_BrkFace', 'Foundation_CBlock|HouseStyle_2.5Unf', 'Neighborhood_Mitchel|ExterQual_Gd', 'Neighborhood_Tencode|HalfBath', 'LotShape_Tencode|ExterQual_Tencode', 'LandSlope_Sev|GarageType_BuiltIn', 'BsmtFinSF2|GarageQual_Fa', 'BldgType_1Fam|Street_Pave', 'HouseStyle_SFoyer|MasVnrType_Stone', 'LotShape_Tencode|Exterior1st_CemntBd', 'BsmtFinType1_Tencode|KitchenQual_Fa', 'ExterQual_TA|Exterior1st_Plywood', 'LandSlope_Sev|RoofStyle_Gable', 'HeatingQC_TA|BsmtHalfBath', 'Utilities_Tencode|2ndFlrSF', 'Heating_Grav|Heating_GasW', 'LowQualFinSF|Neighborhood_NAmes', 'SaleType_New|Neighborhood_Sawyer', 'Foundation_BrkTil|BsmtUnfSF', 'Neighborhood_NridgHt|LotConfig_Tencode', 'BldgType_TwnhsE|Exterior1st_Wd Sdng', 'Condition1_Tencode|WoodDeckSF', 'Neighborhood_Mitchel|BsmtQual_Tencode', 'BsmtFinType1_BLQ|ExterQual_Tencode', 'RoofMatl_Tar&Grv|BsmtFinType2_Unf', 'Foundation_PConc|BsmtFinType2_LwQ', 'PavedDrive_N|Neighborhood_ClearCr', 'BsmtHalfBath|LotConfig_Inside', 'MSZoning_RM|RoofMatl_WdShngl', 'ExterQual_Tencode|Exterior1st_MetalSd', 'GarageFinish_Fin|BsmtExposure_No', 'GarageQual_Fa|MSZoning_FV', 'LandSlope_Sev|BsmtFinType2_Unf', 'Exterior2nd_CmentBd|Utilities_AllPub', 'Exterior2nd_Stucco|RoofStyle_Gable', 'BldgType_Twnhs|GarageType_Attchd', 'BldgType_Duplex|PavedDrive_P', 'Foundation_Slab|Exterior2nd_Wd Shng', 'BsmtFinType2_Unf|Condition1_RRAn', 'LotFrontage|HouseStyle_2.5Unf', 'Fence_GdPrv|Functional_Maj1', 'BsmtFinType1_BLQ|BsmtFinType2_BLQ', 'BsmtQual_TA|Electrical_FuseF', 'BsmtHalfBath|Exterior2nd_Plywood', 'GarageCond_Po|GarageType_CarPort', 'Fence_GdPrv|RoofStyle_Shed', 'Functional_Min1|GarageType_2Types', 'Utilities_Tencode|Foundation_CBlock', 'BsmtFinType1_Rec|BsmtFinType2_Rec', 'GarageCond_Po|HouseStyle_SLvl', 'SaleType_WD|HouseStyle_1.5Unf', '3SsnPorch|SaleCondition_Normal', 'Heating_Tencode|Neighborhood_Edwards', 'Neighborhood_NoRidge|MSZoning_RL', 'BsmtUnfSF|Street_Pave', 'GarageFinish_Fin|BsmtFinType2_Unf', 'LotConfig_CulDSac|BldgType_Tencode', 'HouseStyle_1Story|Neighborhood_Sawyer', 'LandContour_Tencode|BsmtFinSF1', 'EnclosedPorch|GarageQual_Tencode', 'LotShape_Tencode|FireplaceQu_Fa', 'BsmtFinType1_Rec|GarageYrBlt', 'Exterior2nd_MetalSd|BsmtCond_Tencode', 'LandContour_Bnk|HouseStyle_SLvl', 'LotShape_IR1|Neighborhood_Tencode', 'Exterior2nd_VinylSd|Fence_GdWo', 'BsmtFinType1_Tencode|Foundation_Stone', 'PavedDrive_Y|BsmtFinType2_LwQ', 'LotShape_IR2|Street_Pave', 'FireplaceQu_Ex|MasVnrType_None', 'Exterior2nd_AsbShng|BsmtExposure_Gd', 'Condition1_RRAe|BsmtExposure_No', 'Exterior2nd_Stone|LotConfig_CulDSac', 'Neighborhood_Blmngtn|RoofStyle_Gable', 'ScreenPorch|Fence_MnWw', 'Neighborhood_Blmngtn|YearBuilt', 'Fence_Tencode|RoofMatl_WdShngl', 'RoofStyle_Tencode|Street_Grvl', 'HeatingQC_Gd|ExterCond_Gd', 'Neighborhood_Crawfor|Neighborhood_IDOTRR', 'BsmtUnfSF|BsmtExposure_No', 'Electrical_FuseF|CentralAir_Tencode', 'Exterior2nd_Tencode|BsmtFinType1_LwQ', 'GarageFinish_Unf|LotConfig_CulDSac', 'SaleType_ConLI|BsmtFinType1_ALQ', 'BsmtFinType2_Rec|Functional_Min1', 'YrSold|Neighborhood_CollgCr', 'MoSold|Condition2_Norm', 'BsmtCond_Gd|Street_Pave', 'SaleType_Tencode|Exterior1st_VinylSd', 'SaleType_ConLD|BsmtExposure_Gd', 'Neighborhood_OldTown|MasVnrType_Stone', 'BsmtFinType2_ALQ|Functional_Min2', 'OpenPorchSF|Fence_MnWw', 'Exterior1st_HdBoard|Foundation_Slab', 'Neighborhood_OldTown|Exterior1st_Tencode', 'Exterior2nd_HdBoard|GarageType_2Types', 'LandContour_Lvl|GarageFinish_Tencode', 'HalfBath|LotConfig_CulDSac', 'BsmtQual_Tencode|Condition2_Tencode', 'GrLivArea|MiscVal', 'Neighborhood_NAmes|SaleType_CWD', 'Heating_Tencode|Exterior2nd_AsphShn', 'Foundation_Tencode|BsmtQual_Fa', 'Neighborhood_SWISU|MSZoning_FV', 'GrLivArea|ExterCond_Tencode', 'Exterior1st_Stucco|Condition1_PosA', 'Exterior2nd_Stone|Condition1_PosN', 'LotFrontage|SaleType_ConLD', 'FireplaceQu_Tencode|HeatingQC_Gd', 'Exterior1st_Stucco|Exterior2nd_Plywood', 'HeatingQC_Tencode|BsmtFinType2_Rec', 'HeatingQC_TA|LandContour_Bnk', 'BsmtFinSF2|SaleCondition_Partial', 'Alley_Tencode|ExterCond_Gd', 'GarageType_Detchd|SaleType_ConLw', 'SaleType_COD|Exterior1st_Tencode', 'LandContour_Bnk|BsmtExposure_Av', 'PoolQC_Tencode|BsmtExposure_Gd', 'Utilities_Tencode|Fence_MnPrv', 'Exterior1st_AsbShng|3SsnPorch', 'YrSold|CentralAir_Y', '1stFlrSF|FireplaceQu_Ex', 'BsmtFinType1_Rec|ScreenPorch', 'BsmtFinType2_GLQ|BsmtExposure_Av', 'ExterCond_TA|HouseStyle_Tencode', 'Electrical_Tencode|ExterQual_Tencode', 'Condition1_PosA|SaleCondition_Abnorml', 'Heating_Tencode|HouseStyle_SLvl', 'GarageQual_Gd|3SsnPorch', 'ScreenPorch|Condition1_RRAn', 'Exterior2nd_Tencode|Condition1_Tencode', 'RoofMatl_CompShg|MSZoning_C (all)', 'GarageFinish_Fin|BldgType_TwnhsE', 'RoofStyle_Hip|LotConfig_FR2', 'BsmtFinType1_ALQ|BldgType_1Fam', 'Alley_Tencode|MasVnrType_None', 'MiscFeature_Othr|LowQualFinSF', 'LandContour_Low|GarageType_Attchd', 'BsmtExposure_Mn|Exterior1st_Plywood', 'LotConfig_CulDSac|PavedDrive_P', 'Foundation_BrkTil|Exterior2nd_Wd Shng', 'RoofStyle_Flat|LandContour_HLS', 'Electrical_SBrkr|RoofMatl_WdShngl', 'Exterior2nd_HdBoard|BsmtCond_Fa', 'Heating_Tencode|BsmtFinType1_ALQ', 'FireplaceQu_TA|MSZoning_RH', 'GrLivArea|GarageFinish_Tencode', 'GarageType_Attchd|MasVnrType_Stone', 'Functional_Maj2|ExterQual_Gd', 'BldgType_2fmCon|HouseStyle_1.5Fin', 'Neighborhood_Edwards|BsmtUnfSF', 'Exterior1st_AsbShng|PavedDrive_P', 'Neighborhood_NWAmes|Neighborhood_Timber', 'Condition1_Tencode|Alley_Grvl', 'CentralAir_N|Foundation_Slab', 'Condition1_Artery|MSZoning_C (all)', 'LandContour_Tencode|Functional_Min1', 'GarageType_CarPort|KitchenQual_TA', 'HeatingQC_TA|Exterior1st_HdBoard', 'ExterQual_TA|Exterior1st_BrkComm', 'BsmtFinType1_ALQ|BsmtExposure_Av', 'KitchenQual_Ex|PoolArea', 'BsmtUnfSF|BsmtFinSF1', 'Exterior2nd_VinylSd|BedroomAbvGr', 'Street_Grvl|GarageType_2Types', 'Foundation_Stone|BsmtQual_Tencode', 'Exterior2nd_Stone|RoofStyle_Flat', 'Neighborhood_NoRidge|Neighborhood_SawyerW', 'Condition1_PosN|CentralAir_Tencode', 'Neighborhood_SWISU|MasVnrArea', 'Exterior2nd_Stucco|LotConfig_FR2', 'Exterior2nd_BrkFace|Exterior2nd_Wd Shng', 'BsmtFinType1_Tencode|LotConfig_CulDSac', 'Neighborhood_OldTown|CentralAir_Y', 'Neighborhood_ClearCr|RoofStyle_Tencode', 'SaleCondition_Family|MasVnrType_BrkFace', 'LandContour_Bnk|MSZoning_RH', 'LotShape_IR2|Exterior2nd_BrkFace', 'Neighborhood_CollgCr|BsmtFinType1_Rec', 'MasVnrType_BrkCmn|Foundation_CBlock', 'HeatingQC_TA|Neighborhood_IDOTRR', 'Exterior2nd_Stucco|Exterior2nd_BrkFace', 'Alley_Tencode|Functional_Maj1', 'BsmtQual_Tencode|Exterior1st_Stucco', 'SaleType_ConLw|HouseStyle_2.5Unf', 'RoofStyle_Hip|SaleType_ConLD', 'Exterior1st_VinylSd|BldgType_Tencode', 'Condition1_Feedr|Foundation_CBlock', 'Condition1_PosN|Exterior1st_Tencode', 'KitchenAbvGr|GarageType_CarPort', 'Neighborhood_ClearCr|PavedDrive_Y', 'Neighborhood_NAmes|Neighborhood_BrkSide', 'LotShape_IR2|LandSlope_Mod', 'SaleType_Oth|BsmtCond_TA', 'GarageQual_Fa|Neighborhood_Crawfor', 'CentralAir_Tencode|MasVnrType_Tencode', 'GarageCars|Neighborhood_Timber', 'LotShape_IR1|Functional_Maj1', 'BsmtExposure_No|Neighborhood_MeadowV', 'Condition2_Tencode|Exterior1st_Tencode', 'GarageFinish_Unf|BedroomAbvGr', 'HeatingQC_Gd|ExterCond_Fa', 'GarageType_Attchd|HouseStyle_2.5Unf', 'Condition1_Artery|BsmtQual_Fa', 'Neighborhood_NoRidge|ExterQual_Gd', 'FullBath|GarageType_2Types', 'Condition1_PosN|BsmtQual_Gd', 'Condition1_PosA|MasVnrType_None', 'RoofStyle_Hip|BldgType_TwnhsE', 'BsmtQual_Ex|BsmtFullBath', 'Neighborhood_Sawyer|Exterior1st_Tencode', 'BsmtFinType1_Tencode|Exterior2nd_Wd Sdng', 'BsmtFinType2_Tencode|3SsnPorch', 'Neighborhood_OldTown|PoolArea', 'Foundation_Stone|CentralAir_N', 'Neighborhood_SWISU|GarageCond_Ex', 'GarageQual_Fa|MSZoning_RH', 'GarageType_BuiltIn|Exterior2nd_CmentBd', 'LotShape_Reg|BsmtCond_Tencode', 'GarageQual_Gd|KitchenQual_Tencode', 'GarageType_Tencode|LandContour_Bnk', 'SaleCondition_Tencode|HouseStyle_1.5Unf', 'LowQualFinSF|LotConfig_Tencode', 'HeatingQC_Gd|Condition1_RRAn', 'HalfBath|Condition2_Norm', 'Electrical_Tencode|Foundation_CBlock', 'Exterior2nd_Stucco|GarageFinish_RFn', 'Foundation_Stone|BsmtExposure_Av', 'Exterior2nd_AsbShng|BsmtQual_TA', 'ExterCond_TA|3SsnPorch', 'SaleCondition_Tencode|Foundation_Stone', 'SaleType_New|MSZoning_RL', 'LandContour_Low|GarageYrBlt', 'LotShape_IR2|RoofStyle_Gable', 'Neighborhood_NAmes|Neighborhood_Crawfor', 'Neighborhood_SWISU|Exterior2nd_Wd Shng', 'Exterior2nd_Tencode|Condition2_Norm', 'FullBath|LandContour_HLS', 'FullBath|LandContour_Tencode', 'LandSlope_Tencode|Neighborhood_StoneBr', 'Condition2_Tencode|BldgType_Tencode', 'Heating_GasA|MasVnrType_BrkFace', 'Fence_Tencode|GarageQual_Fa', 'Exterior2nd_VinylSd|MasVnrArea', 'BsmtFinType1_Tencode|HeatingQC_Ex', 'PavedDrive_Tencode|Exterior2nd_Wd Sdng', 'GarageCond_Po|MasVnrType_Stone', 'GarageFinish_Unf|Neighborhood_NAmes', 'RoofStyle_Hip|PoolArea', 'KitchenQual_Gd|BsmtFinType2_GLQ', 'Exterior2nd_BrkFace|BsmtFinType2_BLQ', 'GarageFinish_Unf|LandSlope_Gtl', 'LotConfig_CulDSac|BldgType_1Fam', 'SaleCondition_Family|GarageQual_TA', 'Functional_Typ|BldgType_Twnhs', 'Neighborhood_BrDale|BsmtHalfBath', 'Electrical_FuseP|Neighborhood_Mitchel', 'RoofStyle_Hip|GarageFinish_RFn', 'Neighborhood_Veenker|MSZoning_FV', 'Neighborhood_ClearCr|LotConfig_Corner', 'KitchenQual_Ex|3SsnPorch', 'Exterior1st_BrkFace|Neighborhood_Tencode', 'Exterior1st_AsbShng|Exterior1st_CemntBd', 'Exterior2nd_AsbShng|BsmtFinSF2', 'Functional_Typ|BsmtExposure_Mn', 'Exterior1st_Stucco|RoofMatl_WdShngl', 'Exterior2nd_Tencode|BldgType_1Fam', 'Exterior2nd_Plywood|Exterior2nd_AsphShn', 'HeatingQC_TA|Functional_Maj1', 'HeatingQC_TA|MasVnrType_BrkCmn', 'Exterior2nd_AsbShng|Functional_Min2', 'GarageCond_Fa|MiscFeature_Tencode', 'Exterior2nd_AsbShng|Neighborhood_Sawyer', 'Heating_GasA|FireplaceQu_Fa', 'FireplaceQu_Po|Neighborhood_NAmes', 'YearRemodAdd|MSZoning_C (all)', 'RoofStyle_Tencode|MasVnrArea', 'PavedDrive_Y|BsmtFinSF1', 'BldgType_Tencode|MSZoning_FV', 'Exterior2nd_Stucco|HouseStyle_1.5Fin', 'GarageCond_Tencode|SaleType_COD', 'RoofMatl_Tar&Grv|MSZoning_RH', 'LotShape_Reg|LandSlope_Tencode', 'GarageCond_Po|Electrical_FuseF', 'Exterior2nd_Wd Sdng|MasVnrType_BrkFace', 'HouseStyle_1Story|Neighborhood_NoRidge', 'ExterCond_Gd|KitchenQual_Fa', 'MiscFeature_Othr|HouseStyle_1.5Fin', 'HouseStyle_SFoyer|BsmtHalfBath', 'GarageFinish_Unf|TotalBsmtSF', 'Exterior2nd_Wd Sdng|BsmtExposure_Gd', 'Fence_Tencode|Neighborhood_SWISU', 'Foundation_Stone|BsmtFinType1_LwQ', 'Condition1_Feedr|Exterior1st_Plywood', 'Functional_Maj1|MSSubClass', 'LandSlope_Tencode|BldgType_Tencode', 'TotalBsmtSF|RoofMatl_CompShg', 'HouseStyle_SFoyer|SaleCondition_Family', 'Neighborhood_SWISU|HeatingQC_Ex', 'MoSold|OverallCond', 'GarageFinish_Unf|ExterQual_Gd', 'Neighborhood_NridgHt|MiscFeature_Shed', 'Condition1_Artery|BldgType_Tencode', 'KitchenQual_Gd|PavedDrive_Tencode', 'GarageType_BuiltIn|Exterior1st_Wd Sdng', 'Neighborhood_Crawfor|Neighborhood_BrkSide', 'SaleType_WD|LandContour_Lvl', 'BldgType_Duplex|RoofStyle_Gable', 'Neighborhood_Sawyer|GarageType_2Types', 'HeatingQC_Fa|BsmtQual_Gd', 'Neighborhood_StoneBr|Neighborhood_Timber', 'BsmtCond_Tencode|MasVnrType_BrkFace', 'BsmtQual_Ex|GarageQual_Fa', 'Functional_Tencode|BsmtQual_TA', 'LotFrontage|MiscFeature_Shed', 'Exterior2nd_Stone|Neighborhood_Tencode', 'BsmtFinSF2|GarageArea', 'Condition1_PosN|GarageType_BuiltIn', 'GarageCond_TA|1stFlrSF', 'Neighborhood_Veenker|LandContour_Lvl', 'Electrical_FuseA|Electrical_SBrkr', 'MiscVal|Exterior2nd_CmentBd', 'BsmtFinType2_BLQ|MSZoning_FV', 'HeatingQC_Tencode|Exterior1st_BrkComm', 'LotShape_IR1|BsmtCond_TA', 'GarageCond_Tencode|Utilities_AllPub', 'GarageType_Tencode|Neighborhood_NAmes', 'Functional_Maj2|HouseStyle_2Story', 'Exterior2nd_BrkFace|RoofMatl_WdShngl', 'FireplaceQu_Gd|Neighborhood_NoRidge', 'HeatingQC_Ex|GarageFinish_Tencode', 'Functional_Min1|Exterior2nd_Wd Shng', 'RoofStyle_Gable|GarageQual_Po', 'HouseStyle_SLvl|MasVnrType_Tencode', 'RoofStyle_Hip|GarageCond_Po', 'Exterior2nd_BrkFace|RoofStyle_Gable', 'Neighborhood_Veenker|ExterQual_Ex', 'RoofMatl_Tencode|Fence_MnWw', 'Exterior1st_CemntBd|Foundation_Slab', 'ScreenPorch|Neighborhood_SawyerW', 'BsmtFullBath|Exterior1st_CemntBd', 'Alley_Tencode|Neighborhood_Tencode', 'Foundation_BrkTil|BsmtExposure_Gd', 'ExterCond_Tencode|MSZoning_RM', 'SaleCondition_Tencode|BsmtFinType2_Unf', 'Functional_Maj2|FireplaceQu_Ex', 'FireplaceQu_Gd', 'BsmtFinType2_Tencode|MSSubClass', 'LandSlope_Mod|SaleType_ConLw', 'BsmtFullBath|GarageCond_Gd', 'OverallQual|YrSold', 'Neighborhood_Mitchel|Fence_Tencode', 'Exterior2nd_AsbShng|CentralAir_N', 'LotConfig_Tencode|SaleCondition_Partial', 'PavedDrive_N|Neighborhood_SawyerW', 'BsmtFinType1_Rec|Exterior1st_Tencode', 'Neighborhood_NoRidge|Foundation_BrkTil', 'Neighborhood_Veenker|FireplaceQu_Fa', 'SaleCondition_Partial|KitchenQual_TA', 'LandContour_Tencode|GarageQual_TA', 'BsmtFinType2_Rec|MSZoning_RM', 'GarageFinish_RFn|LotConfig_Inside', 'SaleCondition_Partial|CentralAir_Y', 'Neighborhood_IDOTRR|MiscFeature_Gar2', 'RoofStyle_Flat|Fence_Tencode', 'LotShape_Reg|Neighborhood_Crawfor', 'RoofStyle_Hip|LotConfig_Corner', 'Exterior1st_HdBoard|Neighborhood_Somerst', 'SaleType_Tencode|PoolArea', 'BsmtHalfBath|MasVnrType_Tencode', 'Condition2_Tencode|Exterior1st_WdShing', 'TotalBsmtSF|SaleType_ConLI', 'FireplaceQu_Gd|Fireplaces', 'BsmtFinType2_GLQ|Electrical_FuseP', 'OverallQual|HouseStyle_SLvl', 'RoofMatl_CompShg|PoolQC_Tencode', 'Exterior2nd_Stone|BsmtQual_Ex', 'BsmtFinType1_BLQ|Condition1_Feedr', 'Exterior2nd_VinylSd|LotConfig_Tencode', 'LotConfig_CulDSac|GarageType_Basment', 'Neighborhood_BrDale|ExterCond_Tencode', 'LotShape_IR1|CentralAir_Tencode', 'Functional_Maj2|ExterQual_Ex', 'BsmtQual_Fa|Neighborhood_IDOTRR', 'BedroomAbvGr|2ndFlrSF', 'HouseStyle_Tencode|ExterQual_Tencode', 'PavedDrive_N|BsmtFinType1_LwQ', 'GarageType_Basment|BsmtFinType2_Unf', 'SaleCondition_Alloca|MasVnrType_Tencode', 'MiscFeature_Othr', 'LowQualFinSF|BldgType_Tencode', 'ExterQual_TA|2ndFlrSF', 'OverallQual|BsmtFinType1_LwQ', 'FireplaceQu_Gd|GarageQual_Po', 'Electrical_SBrkr|KitchenQual_TA', 'Neighborhood_OldTown|SaleType_ConLD', 'Neighborhood_BrDale|RoofMatl_WdShngl', 'BldgType_Duplex|Foundation_Tencode', 'Foundation_Slab|ExterCond_Fa', 'BsmtFinType1_Unf|HouseStyle_2Story', 'KitchenQual_Gd|Foundation_Tencode', 'HouseStyle_1.5Unf|ExterQual_Gd', 'BldgType_2fmCon|MSZoning_RL', 'Neighborhood_IDOTRR|MSZoning_RH', 'MiscFeature_Othr|PoolQC_Tencode', 'Neighborhood_BrkSide|Exterior2nd_Wd Shng', 'GarageArea|BsmtCond_Fa', 'Street_Grvl|RoofMatl_WdShngl', 'Neighborhood_NridgHt|ExterQual_Ex', 'BsmtFullBath|TotRmsAbvGrd', 'Exterior2nd_Stone|BsmtFinType1_Unf', 'SaleType_ConLw|BsmtUnfSF', 'BsmtFinType2_GLQ|BsmtCond_Fa', 'Condition1_Artery|Exterior2nd_CmentBd', 'YearRemodAdd|PavedDrive_Tencode', 'HeatingQC_Tencode|PavedDrive_Tencode', 'GarageType_Detchd|HouseStyle_1.5Fin', 'LandContour_HLS|Neighborhood_SawyerW', 'BsmtQual_Tencode|MSSubClass', 'GarageCond_Tencode|BsmtCond_TA', 'MiscVal|OpenPorchSF', 'LotShape_IR1|Exterior1st_AsbShng', 'HouseStyle_2.5Unf|MasVnrArea', 'Utilities_Tencode|HouseStyle_SLvl', '2ndFlrSF|MiscFeature_Gar2', 'KitchenQual_Ex|CentralAir_N', 'SaleCondition_Tencode|PoolArea', 'LotArea|Neighborhood_Veenker', 'GarageCars|BsmtQual_Gd', 'RoofStyle_Gable|Exterior1st_WdShing', 'MSZoning_C (all)|RoofStyle_Shed', 'RoofMatl_Tencode|MiscVal', 'Neighborhood_IDOTRR|BsmtExposure_Mn', 'ExterCond_Tencode|Condition1_Tencode', 'LotArea|GarageQual_TA', 'LotFrontage|PavedDrive_Y', 'LotArea|HouseStyle_2.5Unf', 'Exterior1st_Stucco|Neighborhood_Crawfor', 'MasVnrType_None|ExterQual_Gd', 'LandContour_Lvl|WoodDeckSF', 'HouseStyle_Tencode|Condition2_Artery', 'BsmtFinType1_ALQ|Exterior1st_Plywood', 'MSZoning_C (all)|BsmtCond_Gd', 'BldgType_2fmCon|FireplaceQu_Gd', 'FireplaceQu_Gd|GarageFinish_Tencode', 'YrSold|OpenPorchSF', 'BsmtExposure_No|Foundation_Slab', 'GarageCars|LotConfig_Tencode', 'BsmtFinType2_ALQ|RoofStyle_Gable', 'GrLivArea|PavedDrive_P', 'BsmtFinType2_ALQ|MSSubClass', 'Exterior2nd_AsbShng|HouseStyle_1.5Unf', 'BsmtQual_TA|Neighborhood_NAmes', 'GarageCond_Po|Exterior1st_WdShing', 'Condition1_Norm|Neighborhood_MeadowV', 'RoofStyle_Flat|GarageFinish_RFn', 'GarageType_Attchd|MSZoning_RL', 'Fence_Tencode|HouseStyle_1.5Fin', 'HeatingQC_Gd|ExterQual_Fa', 'Foundation_Stone|Condition1_Tencode', 'Heating_Tencode|Neighborhood_MeadowV', 'Exterior1st_BrkFace|HouseStyle_2.5Unf', 'Exterior2nd_Tencode|MiscFeature_Gar2', 'Fence_GdPrv|GarageType_CarPort', 'BldgType_Duplex|BsmtFinType2_ALQ', 'Utilities_Tencode|Street_Tencode', 'BsmtFinType2_Tencode|Neighborhood_IDOTRR', 'BsmtFinSF2|LotConfig_FR2', 'RoofStyle_Tencode|GarageType_Basment', 'PavedDrive_Tencode|MasVnrType_BrkCmn', 'HalfBath|HouseStyle_1.5Unf', 'Utilities_Tencode|Neighborhood_Tencode', 'RoofStyle_Hip|WoodDeckSF', 'HeatingQC_Ex|Neighborhood_MeadowV', 'SaleCondition_Normal|LotConfig_Tencode', 'Neighborhood_OldTown|Exterior2nd_CmentBd', 'FireplaceQu_Tencode|GarageType_Basment', 'Exterior2nd_CmentBd|MasVnrType_None', 'HeatingQC_Gd|BsmtFinType2_BLQ', 'BsmtFinType2_Tencode|Exterior2nd_Brk Cmn', 'Exterior1st_VinylSd|GarageQual_Tencode', 'Exterior2nd_BrkFace|Electrical_SBrkr', 'SaleCondition_Normal|Exterior1st_Plywood', 'Electrical_FuseA|Neighborhood_Crawfor', 'PoolQC_Tencode', 'BsmtQual_TA|OpenPorchSF', 'BsmtQual_Fa|PavedDrive_P', 'Alley_Pave|KitchenQual_Fa', 'MiscFeature_Othr|BsmtFinType1_LwQ', 'BldgType_2fmCon|BsmtQual_Gd', 'Neighborhood_StoneBr|BsmtFinType2_Unf', 'LandContour_Lvl|BsmtUnfSF', 'GarageFinish_Unf|RoofStyle_Shed', 'Neighborhood_BrDale|Exterior2nd_BrkFace', 'BsmtQual_Ex|ExterCond_Fa', 'GarageCond_TA|Electrical_FuseA', 'BsmtQual_TA|ExterQual_Fa', 'SaleType_Tencode|Exterior2nd_HdBoard', 'Alley_Tencode|HeatingQC_Gd', 'LandContour_Bnk|BsmtExposure_No', 'KitchenAbvGr|GarageType_Tencode', 'LandContour_Lvl|LotConfig_Tencode', 'Exterior2nd_Stone|BsmtFullBath', 'Heating_Tencode|Electrical_SBrkr', 'Condition1_PosA|Condition2_Norm', 'Neighborhood_NoRidge|BsmtExposure_No', 'PavedDrive_Tencode|LandSlope_Gtl', 'GarageType_CarPort|MSSubClass', 'Electrical_Tencode|Exterior2nd_Brk Cmn', 'Condition1_Tencode|Neighborhood_BrkSide', 'Neighborhood_NridgHt|ExterCond_Gd', 'Neighborhood_CollgCr|OverallCond', 'ExterQual_TA|GarageCars', 'GarageType_Attchd|Exterior2nd_AsphShn', 'LandSlope_Sev|Neighborhood_SWISU', 'Neighborhood_NWAmes|Condition1_Norm', 'Heating_GasW|BsmtQual_TA', 'Neighborhood_Gilbert|MSZoning_RL', 'Electrical_FuseP|MasVnrType_BrkFace', 'BedroomAbvGr|RoofMatl_WdShngl', 'SaleCondition_Family|SaleCondition_Abnorml', 'GarageType_Tencode|ExterQual_Tencode', 'Foundation_Tencode|BsmtFullBath', 'GarageCond_Fa|KitchenQual_Fa', 'Exterior2nd_Tencode|Exterior2nd_Wd Sdng', 'Electrical_SBrkr|Condition1_Tencode', 'Functional_Min1|Neighborhood_SawyerW', 'Electrical_Tencode|ExterCond_Tencode', 'BsmtQual_Fa|BsmtExposure_Av', 'Condition1_Feedr|HouseStyle_2.5Unf', 'FireplaceQu_Gd|LotShape_Reg', 'YearBuilt|BsmtFinType2_LwQ', 'BldgType_1Fam|MasVnrType_Stone', 'KitchenQual_Gd|HeatingQC_Tencode', 'FireplaceQu_Gd|Neighborhood_Mitchel', 'HeatingQC_Fa|PavedDrive_Tencode', 'Neighborhood_NridgHt|SaleType_ConLI', 'Exterior2nd_VinylSd|HouseStyle_2Story', 'BsmtExposure_Av|Condition1_Feedr', 'MiscFeature_Tencode|Foundation_Slab', 'FireplaceQu_Fa|Utilities_AllPub', 'Neighborhood_NAmes|HouseStyle_SLvl', 'GarageArea|MSZoning_Tencode', 'HeatingQC_Gd|2ndFlrSF', 'GarageQual_Gd|SaleCondition_Family', 'Electrical_FuseF|Exterior1st_Plywood', 'ExterCond_TA|Condition2_Tencode', 'BldgType_Twnhs|LowQualFinSF', 'ExterCond_Tencode|MasVnrType_None', 'BldgType_2fmCon|Neighborhood_Edwards', 'MasVnrArea|Exterior2nd_Plywood', 'Neighborhood_NridgHt|ExterCond_TA', 'Neighborhood_Edwards|SaleType_Oth', 'FullBath|BsmtFinSF1', 'BsmtQual_Ex|CentralAir_Tencode', 'Neighborhood_Edwards|GarageCond_Gd', 'YearRemodAdd|GarageQual_TA', 'Neighborhood_Edwards|GarageQual_Po', 'OverallCond|RoofMatl_WdShngl', 'Functional_Typ|Neighborhood_SawyerW', 'MSSubClass|Utilities_AllPub', 'Neighborhood_CollgCr|RoofMatl_WdShngl', 'HeatingQC_TA|Heating_GasA', 'LotShape_Tencode|BsmtFinType2_GLQ', 'BsmtFinType1_Rec|BsmtFinType2_LwQ', 'BsmtExposure_Tencode|Electrical_FuseF', 'SaleType_New|Condition1_Feedr', 'Heating_GasW|Electrical_SBrkr', 'LandSlope_Tencode|HeatingQC_Ex', 'LandContour_HLS|Condition1_RRAe', 'BsmtQual_Tencode|SaleCondition_Partial', 'Exterior2nd_MetalSd|Exterior2nd_AsphShn', 'MiscVal|Neighborhood_Edwards', 'BsmtUnfSF|RoofStyle_Tencode', 'ExterCond_Tencode|Exterior1st_VinylSd', 'GarageQual_Tencode', 'MoSold|LotConfig_Tencode', 'GarageType_BuiltIn|Exterior2nd_Wd Shng', '1stFlrSF|ExterCond_Fa', 'Exterior1st_HdBoard|BldgType_TwnhsE', 'FireplaceQu_Gd|Exterior1st_VinylSd', 'RoofStyle_Shed|MasVnrType_BrkCmn', 'HouseStyle_SFoyer|RoofStyle_Gable', 'GarageType_Tencode|MoSold', 'BsmtFinType1_Tencode|Neighborhood_OldTown', 'BsmtQual_Tencode|Neighborhood_NoRidge', 'Alley_Tencode|Exterior1st_WdShing', 'Exterior2nd_Stucco|HeatingQC_TA', 'FireplaceQu_Po|BsmtFinType1_GLQ', 'PoolQC_Tencode|BsmtExposure_Av', 'Condition1_Feedr', 'Street_Tencode|GarageType_CarPort', 'Condition1_Artery|MasVnrType_None', 'HalfBath|Exterior2nd_CmentBd', 'Exterior1st_HdBoard|Condition2_Norm', 'BsmtFinSF2|Neighborhood_Gilbert', 'GarageType_BuiltIn|Exterior2nd_HdBoard', 'FireplaceQu_Gd|Foundation_CBlock', 'FireplaceQu_Gd|GarageType_Attchd', 'Foundation_BrkTil|BldgType_Tencode', 'GarageType_Attchd|Exterior2nd_Wd Shng', 'Exterior1st_VinylSd|HouseStyle_2.5Unf', 'SaleCondition_Tencode|GarageFinish_Unf', 'GarageType_Basment|BsmtCond_Fa', 'Neighborhood_NAmes|Exterior1st_WdShing', 'Exterior2nd_AsbShng|GarageQual_TA', 'FireplaceQu_Ex|BsmtExposure_Gd', 'Exterior2nd_Tencode|Street_Pave', 'Exterior2nd_Tencode|Exterior1st_WdShing', 'HouseStyle_SFoyer|Exterior2nd_AsphShn', 'Exterior2nd_MetalSd|GarageType_CarPort', 'Exterior2nd_BrkFace|HeatingQC_Ex', 'FireplaceQu_TA|Exterior2nd_Plywood', 'RoofMatl_CompShg|HouseStyle_1.5Unf', 'Foundation_Stone|BldgType_Tencode', 'Exterior1st_HdBoard|RoofStyle_Tencode', 'HeatingQC_Fa|RoofStyle_Gambrel', 'RoofStyle_Shed|Exterior2nd_Plywood', 'ExterCond_TA|LotShape_IR3', 'BsmtCond_Gd|Condition1_Tencode', 'Neighborhood_Tencode|Fence_GdWo', 'Alley_Pave|Fence_GdWo', 'Condition1_Feedr|Fence_GdWo', 'Exterior2nd_Stone|LandContour_Bnk', 'Exterior1st_CemntBd|Condition1_Tencode', 'PoolArea|WoodDeckSF', 'Electrical_FuseP|Neighborhood_StoneBr', 'Neighborhood_Mitchel|Neighborhood_Sawyer', 'Condition1_PosN|BsmtFinSF1', 'ExterCond_Tencode|Condition1_RRAn', 'Exterior2nd_Tencode|KitchenQual_Tencode', 'BsmtFinSF2|ExterQual_Ex', 'Electrical_SBrkr|Exterior1st_Tencode', '1stFlrSF|Exterior1st_VinylSd', 'BsmtFinType2_GLQ|SaleType_ConLD', 'YearRemodAdd|Neighborhood_IDOTRR', 'Exterior1st_HdBoard|ExterQual_Fa', '1stFlrSF|BsmtCond_Fa', 'LotConfig_FR2|SaleType_ConLD', 'PavedDrive_P|HouseStyle_SLvl', 'TotRmsAbvGrd|Exterior2nd_HdBoard', 'Exterior1st_CemntBd|OpenPorchSF', 'BsmtFinType2_GLQ|TotRmsAbvGrd', 'MiscFeature_Tencode|MSZoning_FV', 'MiscFeature_Shed|Exterior2nd_Plywood', 'HouseStyle_1.5Unf|Functional_Min1', 'Condition1_Artery|EnclosedPorch', 'Exterior2nd_Wd Sdng|BsmtExposure_Mn', 'Functional_Tencode|LotConfig_FR2', 'Neighborhood_ClearCr|LandSlope_Mod', 'Fence_Tencode|BsmtFinType2_LwQ', 'SaleCondition_Tencode|KitchenQual_Gd', 'SaleType_Tencode|SaleType_New', 'SaleType_New|Alley_Grvl', 'YearBuilt|MSZoning_Tencode', 'Utilities_Tencode|PavedDrive_Tencode', 'Neighborhood_NridgHt|GarageArea', 'HouseStyle_1Story|Electrical_FuseF', 'LandSlope_Tencode|BsmtFinType1_LwQ', 'BsmtFinType2_Rec|Condition2_Artery', 'FireplaceQu_Gd|GarageType_2Types', 'LandSlope_Mod|Exterior1st_Stucco', 'Condition1_Norm|CentralAir_Tencode', 'LandContour_HLS|Exterior1st_BrkComm', 'ExterCond_Fa|Neighborhood_MeadowV', 'GarageType_Tencode|FireplaceQu_Fa', 'Neighborhood_NPkVill|Neighborhood_Somerst', 'Electrical_FuseA|LotConfig_Inside', 'Foundation_Stone|BedroomAbvGr', 'Exterior2nd_Stone|Electrical_FuseP', 'BsmtQual_Tencode|Fence_MnWw', 'BsmtFinType1_BLQ|PavedDrive_Tencode', 'YearBuilt|GarageType_CarPort', 'Exterior2nd_VinylSd|Neighborhood_MeadowV', 'BsmtQual_Tencode|Neighborhood_Timber', 'Condition1_RRAe|BsmtQual_Gd', 'HeatingQC_Ex|BsmtFinType2_Rec', 'LandContour_Low|Exterior2nd_Plywood', 'PavedDrive_N|3SsnPorch', 'RoofStyle_Shed|MSSubClass', 'BsmtFinType2_Tencode|Functional_Mod', 'LandContour_Lvl|Fence_MnPrv', 'BsmtQual_Tencode|TotRmsAbvGrd', 'BsmtFinType2_ALQ|BsmtQual_Gd', 'Functional_Maj1|Neighborhood_StoneBr', 'HeatingQC_TA|GarageFinish_Fin', 'Exterior2nd_Tencode|Fence_MnWw', 'SaleType_ConLw|LandSlope_Gtl', 'HalfBath|Condition1_Tencode', 'LowQualFinSF|BsmtExposure_No', 'RoofStyle_Shed|Exterior1st_Wd Sdng', 'KitchenQual_Gd|Exterior1st_BrkComm', 'LandContour_HLS|LandContour_Bnk', 'PavedDrive_N|Exterior1st_Tencode', 'GarageCars|PavedDrive_Tencode', 'SaleType_ConLD|BsmtFullBath', 'Condition1_RRAe|ExterCond_Fa', 'Neighborhood_Mitchel|LandSlope_Gtl', 'BldgType_Twnhs|GarageQual_TA', 'SaleType_ConLI|LotShape_IR3', 'GarageCond_Gd|GarageType_Basment', 'GarageArea|LotConfig_Inside', 'FireplaceQu_Tencode|Electrical_FuseA', 'Utilities_Tencode|Alley_Pave', 'GarageType_BuiltIn|KitchenQual_Fa', 'SaleType_ConLw|Functional_Min2', 'LotShape_IR2|Exterior1st_WdShing', 'LandContour_Low|BsmtFinType2_Tencode', 'Functional_Mod|BsmtQual_Gd', 'MSZoning_RL|WoodDeckSF', 'BldgType_2fmCon|LandContour_HLS', 'Exterior2nd_MetalSd|BsmtFinType1_LwQ', 'HeatingQC_Gd|Electrical_FuseF', 'SaleType_ConLI|MasVnrType_Tencode', 'RoofMatl_Tar&Grv|KitchenQual_Fa', 'SaleType_Tencode|WoodDeckSF', 'BsmtFinType2_GLQ|3SsnPorch', 'Exterior2nd_Stone|Electrical_FuseF', 'LandSlope_Tencode|OpenPorchSF', 'BsmtExposure_Mn|HouseStyle_1.5Fin', 'EnclosedPorch|MiscFeature_Gar2', 'Alley_Tencode|MSZoning_RL', 'HeatingQC_TA|ExterCond_Gd', 'LotShape_Tencode|2ndFlrSF', 'BsmtFinType2_GLQ|MSZoning_C (all)', 'BsmtQual_Fa|Neighborhood_MeadowV', 'LotShape_IR1|KitchenQual_Ex', 'Functional_Tencode|FireplaceQu_Fa', 'GarageCond_Po|FireplaceQu_Gd', 'FireplaceQu_Po|HouseStyle_Tencode', 'SaleType_CWD|Exterior1st_Wd Sdng', 'GarageQual_Fa|BsmtExposure_Gd', 'GarageQual_Fa|ExterQual_Gd', 'Exterior2nd_HdBoard|Neighborhood_MeadowV', 'Exterior1st_CemntBd|KitchenQual_Fa', 'MiscVal|Functional_Maj2', 'GarageQual_Po|Exterior2nd_Wd Sdng', 'GrLivArea|Condition1_RRAn', 'FireplaceQu_Ex|WoodDeckSF', 'Neighborhood_Timber|Functional_Min2', 'BedroomAbvGr|Neighborhood_Timber', 'BsmtFinType1_ALQ|BsmtFinType1_Unf', 'LotFrontage|BsmtFinType2_LwQ', 'HeatingQC_Tencode|Neighborhood_Timber', 'GarageCond_TA|BsmtFullBath', 'Condition1_Tencode|HouseStyle_2.5Unf', 'BldgType_Twnhs|Exterior1st_BrkComm', 'KitchenQual_Gd|LotConfig_CulDSac', 'LandSlope_Sev|PavedDrive_Tencode', 'LotShape_IR1|RoofMatl_Tar&Grv', 'LotShape_IR1|SaleType_CWD', 'GarageType_Detchd|SaleType_COD', 'Foundation_PConc|GarageCars', 'Neighborhood_NoRidge|Foundation_Tencode', 'Alley_Tencode|LotConfig_FR2', 'SaleType_Tencode|Neighborhood_Veenker', 'GarageCond_TA|Exterior2nd_CmentBd', 'Condition2_Tencode|BsmtQual_Gd', 'Exterior1st_BrkFace|LandContour_Low', 'HouseStyle_Tencode|Functional_Min2', 'Foundation_CBlock|Exterior1st_Plywood', 'LotShape_IR1|Exterior1st_Tencode', 'YearRemodAdd|SaleType_New', 'PavedDrive_N|OverallCond', 'Exterior1st_HdBoard|Exterior2nd_Brk Cmn', 'Foundation_CBlock|Neighborhood_BrkSide', 'Exterior2nd_AsbShng|SaleCondition_Partial', '3SsnPorch|OpenPorchSF', 'Exterior1st_Tencode|ExterQual_Fa', 'BsmtExposure_Gd|HouseStyle_2Story', 'Street_Grvl|MSZoning_FV', 'Neighborhood_Blmngtn|MiscFeature_Shed', 'MiscVal|Neighborhood_Gilbert', 'LotShape_Reg|SaleCondition_Alloca', 'GarageType_BuiltIn|MSSubClass', 'Exterior2nd_Stone|Exterior2nd_HdBoard', 'HeatingQC_Fa|KitchenQual_Ex', 'Exterior2nd_CmentBd|SaleCondition_Abnorml', 'BsmtHalfBath|Exterior1st_WdShing', 'SaleType_ConLD|Alley_Grvl', 'GarageFinish_Unf|BsmtCond_Gd', 'Foundation_BrkTil|OverallCond', 'Electrical_Tencode|Exterior1st_Plywood', 'Neighborhood_NoRidge|PavedDrive_Y', 'Functional_Typ|Condition1_Norm', 'LandContour_Low|HouseStyle_2.5Unf', 'OpenPorchSF|Condition2_Artery', 'Exterior1st_VinylSd|BsmtFinType2_Unf', 'BsmtFinType2_ALQ|BsmtCond_Gd', 'RoofStyle_Flat|Alley_Grvl', 'MiscFeature_Othr|MSZoning_RL', 'LotConfig_FR2|BsmtFinType1_ALQ', 'Exterior2nd_CmentBd|GarageCond_Ex', 'BldgType_Duplex|Condition1_RRAn', 'YearBuilt|KitchenQual_TA', 'BsmtFinType1_ALQ', 'Neighborhood_Gilbert|Exterior2nd_Wd Shng', 'BsmtExposure_Gd|MSZoning_FV', 'Condition1_Artery|Exterior1st_Wd Sdng', 'LandContour_Tencode|BldgType_1Fam', 'SaleType_ConLD|Condition2_Artery', 'Foundation_Tencode|SaleCondition_Normal', 'LotShape_IR1|YearBuilt', 'BldgType_2fmCon|Foundation_BrkTil', 'YearBuilt|BsmtUnfSF', 'LandContour_Bnk|Neighborhood_Sawyer', 'BldgType_Twnhs|SaleCondition_Abnorml', 'ExterQual_Tencode|MSZoning_Tencode', 'BldgType_2fmCon|ExterCond_TA', 'Foundation_BrkTil|BsmtFinType1_GLQ', 'KitchenAbvGr|Functional_Mod', 'FireplaceQu_Gd|Exterior1st_WdShing', 'MiscVal|KitchenQual_Ex', 'YearRemodAdd|SaleCondition_Normal', 'Foundation_Tencode|MSZoning_C (all)', 'Foundation_CBlock|ExterQual_Fa', 'BsmtCond_Gd|GarageType_Basment', 'KitchenQual_Fa|BsmtCond_TA', 'Foundation_Slab|BsmtCond_TA', 'Condition1_Artery|Neighborhood_Sawyer', 'GarageType_Detchd|Exterior2nd_Wd Sdng', 'OverallCond|Neighborhood_MeadowV', 'Electrical_Tencode|SaleCondition_Family', 'ExterQual_Gd|Utilities_AllPub', 'BsmtCond_Tencode|MSZoning_RH', 'LotShape_IR1|CentralAir_N', 'LandContour_Low|Condition1_PosN', 'GarageFinish_Tencode|RoofStyle_Tencode', 'Exterior1st_AsbShng|KitchenQual_Fa', 'CentralAir_Y|Exterior2nd_Brk Cmn', 'GarageFinish_Unf|LotShape_IR1', 'LotShape_IR2|Foundation_CBlock', 'BsmtFinType2_BLQ|GarageArea', 'LotShape_Reg|ExterQual_Fa', 'HeatingQC_TA|BldgType_1Fam', 'KitchenAbvGr|LowQualFinSF', 'GarageType_BuiltIn|BsmtFinSF1', 'Neighborhood_StoneBr|GarageFinish_RFn', 'BsmtCond_Po|MSSubClass', 'BsmtFinType1_BLQ|RoofMatl_WdShngl', 'ExterQual_Gd|WoodDeckSF', 'MSZoning_C (all)|FireplaceQu_TA', 'SaleType_ConLw|Fence_Tencode', 'BsmtFinSF2|Exterior2nd_Plywood', 'RoofStyle_Gable|Condition1_Tencode', 'SaleCondition_Alloca|RoofStyle_Shed', 'Electrical_FuseF|GarageType_2Types', 'Foundation_Tencode|HouseStyle_1.5Fin', 'Exterior2nd_Stucco|SaleCondition_Partial', 'SaleCondition_Tencode|GarageCond_Ex', 'BsmtHalfBath|GarageQual_Po', 'BsmtFinType2_Rec|BsmtExposure_Mn', 'GarageType_Detchd|CentralAir_N', 'MSZoning_Tencode|Condition1_RRAn', 'Neighborhood_CollgCr|GarageType_CarPort', 'PavedDrive_Y|FireplaceQu_Fa', 'SaleType_ConLD|HouseStyle_1.5Fin', 'BldgType_2fmCon|Heating_Tencode', 'GarageCond_Gd|RoofStyle_Tencode', 'LotShape_Reg|KitchenQual_Gd', 'GarageFinish_Unf|Alley_Grvl', 'SaleType_ConLI|Fence_MnWw', 'PoolQC_Tencode|ExterCond_Gd', 'BldgType_Twnhs|BldgType_Tencode', 'Fence_MnPrv|Functional_Min2', 'HalfBath|BsmtFinType1_GLQ', 'GrLivArea|Electrical_Tencode', 'Exterior1st_WdShing|BsmtExposure_Mn', 'GarageType_Attchd|CentralAir_Tencode', 'LandContour_Bnk|FireplaceQu_Ex', 'SaleCondition_Family|GarageType_Basment', 'MSSubClass|Exterior2nd_AsphShn', 'Exterior2nd_MetalSd|LotConfig_Tencode', 'SaleType_ConLI|BldgType_1Fam', 'Exterior1st_Tencode|LotShape_IR3', 'TotRmsAbvGrd|ExterQual_Ex', 'MiscFeature_Tencode|Neighborhood_BrkSide', 'BldgType_Twnhs|Condition2_Norm', '2ndFlrSF|Condition1_Tencode', 'KitchenQual_Gd|BsmtQual_Fa', 'HouseStyle_SFoyer|GarageType_2Types', 'LotShape_IR2|Foundation_PConc', 'BsmtFinType1_GLQ|BsmtQual_Gd', 'Street_Tencode|BsmtFullBath', 'PavedDrive_P|MSZoning_RH', 'GarageCond_Po|BsmtFinType1_LwQ', 'LotFrontage|Neighborhood_Sawyer', 'BsmtExposure_Tencode|MasVnrType_Stone', 'KitchenQual_Gd|KitchenQual_Ex', 'LotConfig_Corner|Neighborhood_Crawfor', 'CentralAir_Y|MiscFeature_Gar2', 'MSSubClass|WoodDeckSF', 'Neighborhood_BrDale|LandContour_Low', 'RoofStyle_Gambrel|Exterior1st_VinylSd', 'Neighborhood_SWISU|GarageQual_Tencode', 'LotConfig_CulDSac|LandSlope_Gtl', 'Utilities_Tencode|ExterCond_TA', 'BsmtExposure_Av|BsmtCond_Tencode', 'YrSold|3SsnPorch', 'LandSlope_Sev|1stFlrSF', 'GarageType_Basment|Condition1_Tencode', 'SaleType_Tencode|Exterior1st_Tencode', 'Condition1_PosA|Exterior1st_BrkComm', 'KitchenQual_TA|Utilities_AllPub', 'Alley_Grvl|GarageType_2Types', 'LotShape_Reg|Functional_Min2', 'GarageCond_Gd|Neighborhood_IDOTRR', 'SaleType_ConLw|Fence_MnPrv', 'Exterior2nd_AsbShng|BsmtFinType1_GLQ', 'GarageCond_TA|Exterior1st_Wd Sdng', 'Condition1_Artery|Exterior2nd_Plywood', 'SaleType_ConLw|Exterior1st_Tencode', 'HeatingQC_Tencode|Fence_GdWo', 'FireplaceQu_Tencode|BsmtCond_Tencode', 'RoofStyle_Hip|KitchenQual_TA', 'LandSlope_Tencode|BsmtExposure_Gd', 'BsmtFinType1_Tencode|Fence_MnPrv', 'BsmtFinType2_BLQ|MasVnrArea', 'ExterCond_Gd|GarageType_BuiltIn', 'LotShape_Reg|GarageCond_Ex', 'GarageCond_Tencode|GarageQual_Po', 'BsmtCond_Gd|Condition2_Artery', 'RoofStyle_Gable|GarageType_Basment', 'SaleType_WD|LandContour_Bnk', 'GarageType_Basment|Exterior1st_VinylSd', 'Foundation_Stone|OverallCond', 'Exterior2nd_BrkFace|Exterior2nd_AsphShn', 'GarageQual_TA|Electrical_FuseF', 'HouseStyle_SFoyer|Neighborhood_Sawyer', 'Fence_Tencode|BsmtFinType1_Rec', 'GrLivArea|LandContour_Tencode', 'Foundation_BrkTil|Condition1_Tencode', 'MSZoning_RL|HouseStyle_1.5Fin', 'Exterior2nd_Stone|Condition1_RRAn', 'Exterior1st_VinylSd|BsmtQual_Gd', 'GarageQual_TA|BsmtFinType1_GLQ', 'Exterior2nd_Tencode|Utilities_AllPub', 'BsmtQual_Ex|GarageType_CarPort', 'PavedDrive_N|Foundation_Stone', 'Functional_Maj2|BsmtFinType1_Rec', 'HeatingQC_TA|Exterior2nd_AsphShn', 'Exterior2nd_VinylSd|MoSold', 'Electrical_Tencode|GarageType_Attchd', 'Exterior2nd_CmentBd|LotConfig_Inside', 'Alley_Tencode|MiscVal', 'BldgType_Duplex|Neighborhood_StoneBr', 'LotShape_Tencode|Neighborhood_Timber', 'Neighborhood_Sawyer|FireplaceQu_TA', 'BsmtFullBath|Neighborhood_StoneBr', 'GarageCond_Po|Neighborhood_IDOTRR', 'LandContour_Low|BsmtCond_TA', 'EnclosedPorch|Neighborhood_Veenker', 'Foundation_Slab|Street_Pave', 'FireplaceQu_Fa|GarageCond_Fa', 'Neighborhood_NoRidge|Condition1_RRAe', 'Neighborhood_Edwards|MiscFeature_Gar2', 'BldgType_Duplex|GrLivArea', 'BsmtCond_TA|LotConfig_Inside', 'Exterior1st_CemntBd|BsmtFinSF1', 'GarageCond_Ex|GarageType_2Types', 'Neighborhood_NAmes|Neighborhood_Timber', 'RoofMatl_Tar&Grv|LowQualFinSF', 'LandContour_Lvl|Condition1_Tencode', 'Exterior2nd_Brk Cmn|RoofMatl_WdShngl', 'SaleType_Tencode|Exterior2nd_Wd Sdng', 'LotConfig_Tencode|Exterior2nd_Wd Shng', 'Exterior2nd_Stone|MasVnrType_Stone', 'LandSlope_Tencode|MSSubClass', 'Condition1_PosA|Condition1_Norm', 'BsmtFinType1_ALQ|Neighborhood_SawyerW', 'Exterior2nd_AsbShng|SaleCondition_Abnorml', 'BsmtFullBath|MSSubClass', 'PoolQC_Tencode|Neighborhood_IDOTRR', 'Neighborhood_BrDale|Exterior1st_HdBoard', 'KitchenQual_Tencode|BsmtFinType1_GLQ', 'Exterior1st_VinylSd|Exterior2nd_HdBoard', 'KitchenAbvGr|Neighborhood_SWISU', 'Exterior1st_MetalSd|Fence_MnWw', 'Functional_Maj1|PoolArea', 'RoofStyle_Gambrel|SaleCondition_Abnorml', 'KitchenQual_Ex|CentralAir_Tencode', 'LotShape_IR1|BsmtQual_Gd', 'Neighborhood_BrkSide|BsmtFinType1_GLQ', 'BsmtExposure_Tencode|PavedDrive_P', 'FireplaceQu_Tencode|Exterior1st_Plywood', 'CentralAir_N|Exterior1st_WdShing', 'Exterior2nd_Stone|ExterCond_Fa', 'Exterior2nd_BrkFace|Foundation_CBlock', 'GarageType_Detchd|BsmtFinType2_Rec', 'Exterior1st_VinylSd|BsmtCond_TA', 'Neighborhood_Somerst|Neighborhood_Crawfor', 'KitchenQual_Gd|CentralAir_Y', 'RoofMatl_Tencode|Exterior2nd_BrkFace', 'RoofMatl_CompShg|Neighborhood_NAmes', 'GrLivArea|BldgType_Tencode', 'Foundation_PConc|Exterior2nd_MetalSd', 'ExterCond_TA|Neighborhood_CollgCr', 'Functional_Maj2|BsmtFinType2_Unf', 'RoofMatl_CompShg|MSZoning_RL', 'Exterior2nd_Stucco|BsmtQual_Ex', 'BsmtQual_Tencode|Functional_Min1', 'RoofMatl_Tencode|BldgType_1Fam', 'HeatingQC_TA|Fireplaces', 'HouseStyle_SFoyer|BsmtExposure_Mn', 'Street_Tencode|1stFlrSF', 'LotShape_IR2|GrLivArea', 'ExterQual_TA|GarageType_Tencode', 'Utilities_Tencode|BldgType_Tencode', 'Neighborhood_Somerst|Exterior1st_Stucco', 'Neighborhood_Mitchel|MSZoning_RH', 'BldgType_TwnhsE|Exterior2nd_Plywood', 'Condition1_Artery|BsmtFinType2_Unf', 'BldgType_2fmCon|ExterQual_Fa', 'MSZoning_C (all)|Exterior1st_Tencode', 'BsmtFinType2_ALQ|3SsnPorch', 'RoofStyle_Gambrel|Neighborhood_NWAmes', 'Utilities_Tencode|Alley_Grvl', 'Neighborhood_BrkSide|MasVnrType_Tencode', 'GarageType_Tencode|ExterQual_Fa', 'GarageQual_Po|MSZoning_RH', 'GrLivArea|Neighborhood_NAmes', 'Street_Pave|Neighborhood_MeadowV', 'MiscFeature_Tencode|MasVnrArea', 'BsmtExposure_Tencode|Condition1_Norm', 'Exterior1st_Stucco|BsmtCond_TA', 'Fence_GdWo|ExterCond_Fa', 'Electrical_FuseF|MiscFeature_Gar2', 'MasVnrType_BrkFace|Fence_MnPrv', 'RoofStyle_Hip|Neighborhood_Gilbert', 'PavedDrive_Y|BldgType_Tencode', 'GarageQual_Gd|BsmtExposure_Mn', 'BsmtFinSF2|SaleType_Oth', 'RoofStyle_Shed|MiscFeature_Tencode', 'Heating_GasW|CentralAir_Y', 'MiscVal|Condition1_RRAe', 'RoofStyle_Flat|LotArea', 'GarageFinish_Fin|GarageType_Basment', 'SaleCondition_Tencode|Exterior2nd_BrkFace', 'LotArea|Functional_Mod', 'GarageType_Tencode|BsmtUnfSF', 'Neighborhood_Blmngtn|BsmtFinType1_ALQ', 'Neighborhood_BrDale|Functional_Maj1', 'LotConfig_FR2|Functional_Mod', 'Foundation_Tencode|GarageQual_TA', 'MSZoning_RM|MSZoning_RH', 'LandContour_Tencode|SaleType_Oth', 'SaleType_Tencode|Condition1_Feedr', 'BsmtQual_Fa|Exterior1st_MetalSd', 'TotalBsmtSF|FireplaceQu_Gd', 'MiscFeature_Shed|Exterior2nd_Brk Cmn', 'LandSlope_Sev|Neighborhood_NAmes', 'Electrical_Tencode|BsmtQual_Tencode', 'Electrical_FuseA|Neighborhood_NAmes', 'Exterior2nd_VinylSd|Alley_Grvl', 'HouseStyle_2.5Unf|SaleType_Oth', '1stFlrSF|GarageType_Attchd', 'Neighborhood_Somerst|MasVnrType_None', 'Exterior1st_Stucco|BsmtFullBath', 'Heating_GasA|GarageCond_Gd', 'SaleCondition_Partial|Exterior1st_MetalSd', 'Foundation_Tencode|BsmtCond_Fa', 'BsmtFinType1_ALQ|ExterCond_Gd', 'BldgType_2fmCon|HalfBath', 'HeatingQC_Gd|Fence_MnPrv', 'EnclosedPorch|ScreenPorch', 'RoofStyle_Hip|TotRmsAbvGrd', 'BsmtQual_Ex|Exterior2nd_CmentBd', 'YrSold|HeatingQC_Gd', 'Electrical_Tencode|Neighborhood_Gilbert', 'BsmtFinSF2|Condition2_Artery', 'Fence_GdPrv|Exterior2nd_Brk Cmn', 'HouseStyle_SFoyer|PoolArea', 'Neighborhood_NridgHt|Electrical_SBrkr', 'Exterior2nd_Stucco|Foundation_Stone', 'Utilities_Tencode|Exterior2nd_Wd Shng', 'LotShape_Tencode|GarageQual_TA', 'LowQualFinSF|MasVnrArea', 'Neighborhood_NWAmes|OpenPorchSF', 'Exterior2nd_Stucco|SaleType_COD', 'MiscFeature_Tencode|Neighborhood_StoneBr', 'GarageFinish_Unf|BsmtCond_Tencode', 'GarageArea|Exterior1st_Tencode', 'BldgType_TwnhsE|KitchenQual_Fa', 'SaleType_ConLD|Foundation_Slab', 'GarageCond_TA|Electrical_SBrkr', 'ExterCond_Tencode|SaleType_COD', 'BldgType_Duplex|RoofStyle_Tencode', 'Heating_Grav|BsmtFinSF1', 'TotRmsAbvGrd|Neighborhood_SawyerW', 'FullBath|Functional_Mod', 'LotShape_Reg|Exterior2nd_Plywood', 'BsmtFinType2_ALQ|BsmtUnfSF', 'HeatingQC_TA|GarageCond_Tencode', 'LotConfig_CulDSac|BsmtExposure_Gd', 'HeatingQC_Ex|RoofStyle_Gable', 'Heating_GasA|MiscFeature_Shed', 'Neighborhood_SWISU|BldgType_Tencode', 'BsmtFinType2_ALQ|GarageCond_Ex', 'BsmtFinType2_LwQ|ExterQual_Tencode', 'SaleType_Tencode|Exterior2nd_Wd Shng', 'BsmtQual_Tencode|BsmtFinType1_LwQ', 'YrSold|FireplaceQu_Ex', 'BsmtQual_Tencode|Exterior1st_CemntBd', 'GrLivArea|MasVnrType_Tencode', 'GarageCond_Gd|MasVnrArea', 'BsmtCond_Po|Exterior1st_Tencode', 'Neighborhood_StoneBr|BsmtExposure_No', 'Neighborhood_Somerst|PoolArea', 'GrLivArea|Exterior2nd_BrkFace', 'ExterCond_Tencode|GarageArea', 'Exterior1st_HdBoard|MSZoning_C (all)', 'GarageFinish_Tencode|Functional_Maj1', 'RoofMatl_Tar&Grv|Neighborhood_SawyerW', 'GarageCond_TA|BsmtQual_TA', 'Exterior2nd_Tencode|SaleType_COD', 'BsmtFinType1_ALQ|GarageType_CarPort', 'EnclosedPorch|Electrical_SBrkr', 'Foundation_PConc|HouseStyle_1.5Fin', 'BldgType_Tencode|Neighborhood_IDOTRR', 'HalfBath|MiscFeature_Tencode', 'HalfBath|Condition2_Artery', 'BsmtFullBath|Neighborhood_Crawfor', 'GarageFinish_Tencode|BsmtExposure_Mn', 'BsmtExposure_No|HouseStyle_2Story', 'BldgType_Twnhs|SaleType_ConLw', 'BsmtFinType2_LwQ|Neighborhood_BrkSide', 'BldgType_Twnhs|Condition1_Tencode', 'RoofMatl_Tencode|RoofStyle_Hip', 'Condition2_Artery|BldgType_Tencode', 'Exterior2nd_AsbShng|LotShape_IR1', 'Exterior1st_CemntBd|Exterior2nd_MetalSd', 'GarageCond_TA|Foundation_Tencode', 'HeatingQC_Fa|RoofMatl_Tar&Grv', 'HouseStyle_2.5Unf|Exterior1st_Tencode', 'YrSold|BsmtUnfSF', 'SaleType_WD|Neighborhood_StoneBr', 'Condition2_Artery|MasVnrType_Tencode', 'CentralAir_Tencode|Neighborhood_SawyerW', 'Condition1_PosN|Utilities_AllPub', 'Condition1_Artery|Electrical_FuseA', 'BldgType_2fmCon|BldgType_TwnhsE', 'ExterCond_Gd|BsmtFinType2_LwQ', 'Electrical_SBrkr|BsmtCond_TA', 'LandContour_Low|Electrical_Tencode', 'Exterior2nd_AsbShng|OpenPorchSF', 'Neighborhood_BrkSide|MasVnrArea', 'ExterCond_TA|Exterior2nd_Wd Sdng', 'Neighborhood_NPkVill|Neighborhood_SawyerW', 'SaleCondition_Abnorml|Functional_Min2', 'GarageFinish_RFn|Exterior2nd_Brk Cmn', 'RoofMatl_Tencode|Exterior1st_MetalSd', 'MiscFeature_Gar2|MSZoning_RH', 'Alley_Grvl|HouseStyle_SLvl', 'Foundation_Stone|FullBath', 'Neighborhood_Mitchel|Neighborhood_IDOTRR', 'KitchenQual_Fa|HouseStyle_2Story', 'BsmtFinType1_Rec|BldgType_Tencode', 'Condition2_Tencode|MSZoning_RL', 'KitchenAbvGr|Neighborhood_NAmes', 'Exterior1st_MetalSd|HouseStyle_2Story', 'Neighborhood_OldTown|GarageQual_Fa', 'HouseStyle_1Story|LotConfig_Tencode', 'LandSlope_Mod|BsmtQual_TA', 'Exterior2nd_Plywood|Exterior1st_Wd Sdng', 'Exterior2nd_VinylSd|PoolArea', 'BsmtFinType1_Rec|BsmtCond_Gd', 'Condition1_PosN|BsmtExposure_Gd', 'PavedDrive_Tencode|OpenPorchSF', 'LotShape_Tencode|LandSlope_Tencode', 'Neighborhood_NWAmes|MasVnrType_BrkFace', 'GarageType_Detchd|Electrical_FuseP', 'MasVnrType_BrkCmn|MSZoning_RM', 'MSZoning_Tencode|BsmtFinType1_GLQ', 'Electrical_FuseA|Condition1_Norm', 'HouseStyle_Tencode|Neighborhood_OldTown', 'LotConfig_Tencode|BsmtFinType1_LwQ', 'Electrical_Tencode|LandSlope_Sev', 'GarageQual_Tencode|BsmtFinType1_Unf', 'BldgType_1Fam|WoodDeckSF', 'FireplaceQu_Ex|LotConfig_Inside', 'LotConfig_Corner|Neighborhood_StoneBr', 'Condition1_PosN|OpenPorchSF', 'BsmtFinType2_BLQ|Exterior2nd_HdBoard', 'PavedDrive_Y|SaleType_New', 'SaleType_ConLI|GarageFinish_RFn', 'SaleType_ConLD|BsmtFinType2_Unf', 'GarageType_Attchd|KitchenQual_TA', 'EnclosedPorch|GarageFinish_RFn', 'Neighborhood_Sawyer|RoofMatl_WdShngl', 'GarageCond_Po|BsmtFinType2_Rec', 'Neighborhood_BrDale|Street_Pave', 'FireplaceQu_Po|Exterior1st_WdShing', 'Neighborhood_NPkVill|Fence_GdWo', 'BsmtUnfSF|LotShape_IR3', 'Exterior2nd_Tencode|BedroomAbvGr', 'Neighborhood_NPkVill|Exterior1st_Plywood', 'TotalBsmtSF|Neighborhood_Edwards', 'YearBuilt|HeatingQC_Ex', 'ExterQual_TA|BsmtFinSF1', 'GarageCond_Ex|OverallCond', 'Exterior2nd_CmentBd|GarageType_CarPort', 'Exterior2nd_MetalSd|2ndFlrSF', 'Fireplaces|Fence_MnWw', 'GarageCond_Po|SaleType_Tencode', 'Utilities_Tencode|Exterior1st_WdShing', 'SaleType_ConLI|GarageCond_Fa', 'Exterior2nd_Tencode|SaleType_Tencode', 'GarageQual_Tencode|Exterior1st_WdShing', 'LotConfig_FR2|Heating_Tencode', 'Condition1_PosA|BsmtExposure_No', 'Fence_GdPrv|MiscFeature_Shed', 'YrSold|HouseStyle_2.5Unf', 'Exterior2nd_AsbShng|Neighborhood_SWISU', 'FireplaceQu_Tencode|Foundation_Stone', 'GarageQual_Fa|HouseStyle_2Story', 'RoofStyle_Flat|HouseStyle_1.5Unf', 'GarageFinish_Unf|YearBuilt', 'BsmtFinType2_ALQ|BldgType_1Fam', 'Condition1_PosA|Exterior2nd_AsphShn', 'KitchenQual_Gd|ExterQual_Tencode', 'SaleType_ConLw|HeatingQC_Ex', 'BsmtFinType1_Rec|Neighborhood_BrkSide', 'GarageQual_Gd|Neighborhood_MeadowV', 'GarageQual_Po|Neighborhood_Crawfor', 'MiscFeature_Shed|Street_Pave', 'RoofStyle_Flat|Foundation_Tencode', 'Electrical_FuseF|SaleType_New', 'YrSold|Foundation_BrkTil', 'Functional_Tencode|SaleType_WD', 'FireplaceQu_Tencode|FireplaceQu_TA', 'BldgType_TwnhsE|Neighborhood_SawyerW', 'BldgType_TwnhsE|Exterior2nd_HdBoard', 'BsmtFinType2_GLQ|Exterior1st_BrkComm', 'GrLivArea|LandSlope_Gtl', 'RoofMatl_CompShg|HouseStyle_2Story', 'Functional_Min1|Neighborhood_Crawfor', 'Neighborhood_Crawfor|CentralAir_Y', 'Condition1_Artery|BsmtFinType2_LwQ', 'FullBath|Fence_MnWw', 'Heating_GasA|ExterQual_Gd', 'Exterior2nd_Stone|ExterCond_Gd', 'FireplaceQu_Ex|BsmtCond_Tencode', 'Condition1_PosN|Neighborhood_NWAmes', 'BsmtQual_Fa|PoolArea', 'PavedDrive_P|GarageType_2Types', 'LandContour_Bnk|Exterior1st_VinylSd', 'BldgType_Duplex|GarageQual_Fa', 'Condition1_Artery|SaleCondition_Abnorml', 'FireplaceQu_Gd|HouseStyle_2Story', 'OverallQual|Exterior2nd_Wd Shng', 'BsmtFinType1_LwQ|MSZoning_Tencode', 'KitchenQual_Tencode|Condition1_Tencode', 'PoolQC_Tencode|GarageYrBlt', 'PoolQC_Tencode|BsmtFinType1_Unf', 'Neighborhood_Somerst|BsmtExposure_No', 'OpenPorchSF|Exterior2nd_Wd Sdng', 'BldgType_Duplex|Neighborhood_NridgHt', 'LandSlope_Sev|BsmtCond_TA', 'KitchenAbvGr|Electrical_FuseF', 'Neighborhood_Mitchel|ExterQual_Ex', 'Functional_Maj1|1stFlrSF', 'Alley_Tencode|HouseStyle_1.5Fin', 'Exterior1st_HdBoard|MSSubClass', 'SaleCondition_Family|Neighborhood_SWISU', 'OverallQual|Fireplaces', 'LotFrontage|FullBath', 'Functional_Min1|ExterQual_Fa', 'SaleType_CWD|MasVnrType_Stone', 'BldgType_2fmCon|PoolArea', 'MiscFeature_Othr|SaleType_WD', 'MasVnrType_BrkCmn|Functional_Min1', 'RoofStyle_Gambrel|MSZoning_RM', 'LotShape_IR3|Functional_Min2', 'BldgType_Twnhs|GarageFinish_RFn', 'Exterior2nd_Tencode|ExterCond_Fa', 'PoolArea|SaleType_CWD', 'KitchenQual_Fa|Exterior1st_VinylSd', 'FireplaceQu_Tencode|RoofMatl_Tar&Grv', 'HouseStyle_1Story|KitchenQual_Fa', 'GarageArea|Neighborhood_Gilbert', 'Fence_Tencode|CentralAir_Y', 'BsmtExposure_No', 'RoofMatl_Tencode|Condition1_Norm', 'LandContour_Low|LandContour_Lvl', 'GarageCond_Gd|GarageYrBlt', 'SaleType_Tencode|Exterior2nd_VinylSd', 'Exterior2nd_HdBoard|Exterior1st_Plywood', 'PavedDrive_Tencode|Exterior1st_Tencode', 'Fireplaces|3SsnPorch', 'Heating_Tencode|Fence_GdPrv', 'Foundation_BrkTil|LotConfig_Tencode', 'Fence_GdPrv|Condition1_PosN', 'Neighborhood_Somerst|SaleCondition_Partial', 'Neighborhood_Somerst|BsmtHalfBath', 'Heating_GasW|GarageFinish_Tencode', 'Condition2_Tencode|MasVnrType_Tencode', 'Neighborhood_NWAmes|GarageCond_Ex', 'ExterQual_Ex|GarageType_2Types', 'GarageQual_Gd|Exterior1st_Plywood', 'Neighborhood_NoRidge|LotShape_IR3', 'BsmtExposure_Tencode|Neighborhood_MeadowV', 'PavedDrive_N|Exterior2nd_Stucco', 'Neighborhood_Blmngtn|ExterCond_Gd', 'Street_Tencode|HouseStyle_2.5Unf', 'Foundation_BrkTil|BsmtFinSF2', 'Neighborhood_SWISU|Neighborhood_Crawfor', 'BsmtFinType1_BLQ|Neighborhood_CollgCr', 'Heating_Tencode|SaleType_CWD', 'Exterior2nd_BrkFace|GarageYrBlt', 'LotShape_IR1|Exterior2nd_Wd Shng', 'LandSlope_Sev|SaleCondition_Partial', 'SaleType_ConLI|Condition2_Artery', 'HeatingQC_TA|Functional_Mod', 'Fence_Tencode|Condition1_Norm', 'HeatingQC_TA|Exterior2nd_VinylSd', 'GarageFinish_Unf|Neighborhood_IDOTRR', 'PavedDrive_N|BsmtQual_Tencode', 'Exterior2nd_VinylSd|BsmtCond_Po', 'Exterior2nd_Stone|HouseStyle_1Story', 'BsmtExposure_Gd|MSZoning_RH', 'Exterior2nd_Stucco|FireplaceQu_Ex', 'RoofStyle_Hip|HouseStyle_SFoyer', 'BsmtFinType1_ALQ|Exterior2nd_MetalSd', 'SaleCondition_Partial|Exterior2nd_AsphShn', 'BsmtFinType2_ALQ|GarageType_BuiltIn', 'Neighborhood_NridgHt|Neighborhood_Gilbert', 'Condition1_Artery|Heating_GasW', 'Functional_Maj1|MasVnrType_Tencode', 'GarageCond_Tencode|MasVnrArea', 'LotShape_IR1|HouseStyle_1.5Unf', 'LotConfig_Corner|MasVnrType_Tencode', 'HeatingQC_TA|Exterior1st_Stucco', 'Exterior1st_HdBoard|Alley_Grvl', 'MiscVal|Condition1_Norm', 'GarageType_Attchd|SaleType_COD', 'HouseStyle_2.5Unf|HouseStyle_SLvl', 'Neighborhood_Blmngtn|KitchenQual_Fa', 'ScreenPorch|HouseStyle_SLvl', 'LotShape_IR2|Functional_Min1', 'Electrical_FuseF|Neighborhood_NAmes', 'LandContour_Tencode|Street_Pave', 'Electrical_FuseA|SaleCondition_Alloca', 'Foundation_PConc|LandContour_Bnk', 'Foundation_BrkTil|YearBuilt', 'Electrical_FuseP|BsmtQual_Ex', 'Neighborhood_NridgHt', 'Neighborhood_NoRidge|BsmtQual_TA', 'BldgType_Twnhs|BsmtExposure_No', 'MiscFeature_Othr|BsmtFinType1_Rec', 'BsmtFinSF2|Alley_Grvl', 'BsmtQual_Fa|MoSold', 'KitchenQual_Gd|Exterior2nd_AsphShn', 'Condition2_Tencode|OpenPorchSF', 'GarageType_Tencode|ExterCond_Tencode', 'BldgType_Duplex|GarageCond_Gd', 'Neighborhood_NridgHt|LandSlope_Tencode', 'Electrical_FuseP|HouseStyle_1.5Fin', '1stFlrSF|Neighborhood_IDOTRR', 'LandContour_Low|ExterQual_Ex', 'KitchenQual_Tencode|BsmtQual_Gd', 'KitchenAbvGr|Neighborhood_IDOTRR', 'BsmtExposure_Tencode|Exterior2nd_Plywood', 'LotConfig_Corner|MiscFeature_Shed', 'BsmtFinType1_Tencode|GarageType_BuiltIn', 'Neighborhood_Gilbert|MasVnrType_BrkFace', 'Neighborhood_Blmngtn|Exterior2nd_Tencode', 'Alley_Tencode|MSZoning_RH', 'Neighborhood_ClearCr|LotShape_IR1', 'SaleCondition_Family|Exterior2nd_Wd Shng', 'KitchenQual_Gd|Condition2_Tencode', 'BsmtQual_Ex|SaleCondition_Partial', 'Condition2_Norm|Exterior2nd_HdBoard', 'Neighborhood_Edwards|KitchenQual_TA', 'GarageFinish_Fin|Alley_Grvl', 'Neighborhood_NAmes|Exterior1st_Plywood', 'BsmtQual_Fa|GarageType_Basment', 'BsmtFinType2_ALQ|Exterior2nd_AsphShn', 'Exterior2nd_AsbShng|HouseStyle_2.5Unf', 'HeatingQC_Gd|Condition1_Tencode', 'MiscVal|HouseStyle_2.5Unf', 'SaleType_Tencode|3SsnPorch', 'BsmtFinType2_BLQ|MSSubClass', 'FireplaceQu_Po|LowQualFinSF', 'YearBuilt|Functional_Min2', 'GarageFinish_Fin|HouseStyle_1.5Unf', 'Neighborhood_SawyerW|Exterior2nd_HdBoard', 'LotArea|KitchenQual_Tencode', 'GarageQual_Fa|SaleCondition_Partial', 'Neighborhood_CollgCr|Neighborhood_StoneBr', 'LowQualFinSF|MasVnrType_Tencode', 'LotShape_Tencode|BsmtCond_TA', 'SaleType_COD|LotShape_IR3', 'LotConfig_FR2|FireplaceQu_Fa', 'BsmtExposure_Tencode|YearBuilt', 'OpenPorchSF|PavedDrive_P', 'GarageCond_Fa|Foundation_Slab', 'Exterior2nd_VinylSd|HouseStyle_2.5Unf', 'Neighborhood_StoneBr|KitchenQual_TA', 'Heating_Tencode|BsmtUnfSF', 'BsmtFinType1_ALQ|LotShape_IR3', 'GrLivArea|HeatingQC_Tencode', 'BsmtQual_Fa|RoofMatl_Tar&Grv', 'LotConfig_Corner|MiscVal', 'LandSlope_Mod|Exterior1st_VinylSd', 'Exterior2nd_Tencode|GarageType_BuiltIn', 'Condition2_Tencode|GarageCond_Ex', 'ExterCond_Gd|LotConfig_Tencode', 'HeatingQC_Ex|LotConfig_Tencode', 'Foundation_PConc|GarageType_Attchd', 'Neighborhood_CollgCr|Neighborhood_Sawyer', 'LandSlope_Mod|SaleType_ConLD', 'Condition1_PosN|2ndFlrSF', 'Neighborhood_Edwards|GarageType_BuiltIn', 'TotalBsmtSF|GarageArea', 'Foundation_PConc|Utilities_AllPub', 'RoofMatl_Tar&Grv|BsmtCond_Po', 'RoofStyle_Gambrel|BsmtFinType2_Rec', 'BsmtHalfBath|Exterior2nd_CmentBd', 'MasVnrType_None|Foundation_CBlock', 'Neighborhood_NPkVill|BsmtCond_Fa', 'HouseStyle_SLvl|MasVnrType_BrkFace', 'MiscFeature_Shed|Functional_Mod', 'MSZoning_RM|BsmtCond_Gd', 'GarageCond_TA|Neighborhood_BrkSide', 'BsmtFinType2_Rec|RoofStyle_Tencode', 'GarageCond_Tencode|Condition1_RRAn', 'FireplaceQu_Ex|MasVnrArea', 'BldgType_Twnhs|Exterior1st_AsbShng', 'Exterior2nd_AsbShng|BsmtFinType1_BLQ', 'LandContour_Tencode|GarageCond_Gd', 'RoofStyle_Shed|ExterQual_Fa', 'Exterior1st_CemntBd|PoolArea', 'EnclosedPorch|Fence_MnPrv', 'HouseStyle_1.5Unf|MiscFeature_Gar2', 'Neighborhood_Tencode', 'Functional_Typ|RoofMatl_Tar&Grv', 'YearRemodAdd|HeatingQC_Tencode', 'SaleCondition_Family|1stFlrSF', 'FireplaceQu_Po|SaleCondition_Normal', 'Functional_Maj2|Exterior2nd_HdBoard', 'Neighborhood_ClearCr|Foundation_Stone', 'Electrical_FuseF|Foundation_Slab', 'Neighborhood_Somerst|BsmtFinType1_Rec', 'GarageType_Detchd|LandSlope_Gtl', '1stFlrSF|BsmtCond_Gd', 'BldgType_TwnhsE|ExterQual_Tencode', 'Neighborhood_NridgHt|HouseStyle_SLvl', 'BsmtFinType2_Rec|OverallCond', 'SaleType_ConLD|Exterior2nd_Wd Sdng', 'LotShape_Tencode|Neighborhood_Veenker', 'MiscFeature_Tencode|ExterQual_Fa', 'PoolQC_Tencode|HouseStyle_2.5Unf', 'GarageFinish_Unf|Condition2_Artery', 'TotRmsAbvGrd|LotConfig_Tencode', 'GarageFinish_Fin|Fence_GdPrv', 'Heating_Grav|SaleCondition_Normal', '1stFlrSF|Neighborhood_MeadowV', 'MSSubClass|SaleCondition_Abnorml', 'FireplaceQu_Gd|BsmtExposure_Gd', 'BldgType_Twnhs|Neighborhood_Mitchel', 'SaleType_ConLI|Neighborhood_Veenker', 'GarageCond_Fa|SaleType_COD', 'SaleType_COD|MiscFeature_Gar2', 'Exterior2nd_Brk Cmn|CentralAir_N', 'FireplaceQu_TA|MasVnrType_Tencode', 'GarageType_Detchd|GarageCond_Tencode', 'HeatingQC_Fa|Neighborhood_StoneBr', 'GarageType_Tencode|GarageType_Attchd', 'PoolQC_Tencode|Condition1_PosN', 'SaleType_Tencode|Fence_MnPrv', 'SaleCondition_Alloca|GarageCond_Gd', 'BsmtFullBath|BldgType_1Fam', 'Heating_GasW|TotRmsAbvGrd', 'Condition2_Tencode|Neighborhood_SawyerW', 'Neighborhood_NoRidge|BsmtFinType2_Rec', 'Exterior2nd_Wd Sdng|Fence_MnPrv', 'BsmtExposure_Gd|Condition2_Norm', 'RoofStyle_Hip|GarageCars', 'BsmtCond_Fa|Exterior1st_Wd Sdng', 'HalfBath|MSZoning_RM', 'Condition1_Norm|Neighborhood_NAmes', 'GarageQual_Gd|FireplaceQu_Po', 'Exterior2nd_Stone|LotFrontage', 'KitchenQual_TA|Neighborhood_SawyerW', 'Electrical_FuseP|GarageArea', 'LandSlope_Gtl|BsmtFinType2_Unf', 'Exterior1st_CemntBd|Condition1_Norm', 'Neighborhood_Veenker|Street_Pave', 'HalfBath|Neighborhood_StoneBr', 'SaleType_New|BsmtCond_Tencode', 'Neighborhood_Sawyer|MiscFeature_Gar2', 'HeatingQC_Gd|PoolArea', 'OverallCond|Utilities_AllPub', 'BldgType_2fmCon|BsmtExposure_Av', 'Street_Grvl|Functional_Min2', 'Utilities_Tencode|GrLivArea', 'BsmtFinType2_GLQ|BsmtFinType2_Unf', 'LandContour_Tencode|2ndFlrSF', 'Fence_GdPrv|MiscFeature_Tencode', 'HouseStyle_1Story|HeatingQC_Gd', 'HouseStyle_1Story|BsmtFinType1_Rec', 'Fireplaces|MasVnrType_BrkCmn', 'Heating_GasA|KitchenQual_Fa', 'RoofStyle_Hip|GarageCond_Fa', 'Exterior1st_HdBoard|LotShape_IR3', 'BldgType_1Fam|GarageYrBlt', 'BsmtFinType2_Tencode|GarageCond_Tencode', 'Street_Grvl', 'Neighborhood_NPkVill|Neighborhood_SWISU', 'BsmtFinType2_BLQ|LotConfig_CulDSac', 'Exterior2nd_Wd Shng|WoodDeckSF', 'Heating_GasA|MSZoning_RM', 'SaleType_ConLD|PoolArea', 'MiscVal|Functional_Maj1', 'Functional_Typ|Fence_MnPrv', 'YearRemodAdd|Exterior2nd_Wd Sdng', 'FireplaceQu_TA|BldgType_1Fam', 'Electrical_SBrkr|BsmtFinType2_Rec', 'OverallQual|Condition1_RRAn', 'CentralAir_Tencode|MSZoning_Tencode', 'Functional_Min1|WoodDeckSF', 'HouseStyle_SFoyer|Heating_Tencode', 'LandContour_Low|Neighborhood_Somerst', 'RoofStyle_Gambrel|KitchenQual_Fa', 'LandSlope_Mod|MSZoning_C (all)', 'YrSold|Utilities_Tencode', 'Alley_Grvl|Condition1_RRAn', 'RoofMatl_WdShngl|LotShape_IR3', 'Condition1_PosA|SaleType_COD', 'SaleType_WD|Exterior2nd_Wd Sdng', 'Condition1_Artery|Exterior1st_MetalSd', 'Neighborhood_NridgHt|BsmtExposure_Av', 'Foundation_PConc|GarageFinish_Fin', 'BsmtCond_Tencode|Neighborhood_BrkSide', 'Neighborhood_NoRidge|BsmtFinType1_GLQ', 'BsmtFinType1_Rec|Functional_Maj1', 'BsmtFinType2_ALQ|SaleCondition_Family', 'Exterior1st_AsbShng|BldgType_1Fam', 'GarageCond_Po|Neighborhood_NWAmes', 'LandSlope_Tencode|Foundation_Slab', 'LandContour_Bnk|HouseStyle_1.5Fin', 'Exterior1st_BrkComm|ExterCond_Fa', 'LandContour_Bnk|Exterior2nd_Brk Cmn', 'LotConfig_CulDSac|Exterior2nd_Brk Cmn', 'BsmtFinType1_Tencode|BsmtFinType2_Tencode', 'SaleType_Tencode|BsmtQual_TA', 'PavedDrive_P|Exterior2nd_Brk Cmn', 'Exterior1st_Stucco|SaleType_WD', 'Condition1_Norm|BsmtFinType1_GLQ', 'Street_Tencode|BsmtQual_Ex', 'FireplaceQu_Ex|SaleType_CWD', 'Fireplaces|BsmtCond_Gd', 'LotShape_IR2|SaleType_COD', 'Exterior2nd_Stucco|SaleCondition_Family', 'RoofMatl_Tar&Grv|OverallCond', 'KitchenAbvGr|LotConfig_FR2', 'Neighborhood_Gilbert|SaleType_Oth', 'LandContour_Low|Fence_MnPrv', 'BsmtFinType2_Tencode|PoolArea', 'LandSlope_Gtl|Fence_GdWo', 'Exterior1st_Stucco|BsmtFinType2_BLQ', 'Functional_Tencode|Condition1_PosA', 'Functional_Maj2|KitchenQual_Tencode', 'BsmtCond_Tencode|Exterior1st_VinylSd', 'ExterCond_Tencode|Neighborhood_BrkSide', 'Fence_GdPrv|BldgType_1Fam', 'BsmtFinType1_Tencode|CentralAir_Tencode', 'Condition1_Feedr|MasVnrType_Stone', 'FullBath|SaleCondition_Family', 'BsmtCond_Po|Fence_MnPrv', 'PoolQC_Tencode|Neighborhood_NWAmes', 'HeatingQC_Fa|HouseStyle_Tencode', 'GrLivArea|GarageType_CarPort', 'Utilities_Tencode|Exterior2nd_BrkFace', 'CentralAir_N|Exterior2nd_AsphShn', 'GarageCars|GarageCond_Fa', 'FireplaceQu_Gd|Foundation_BrkTil', 'PavedDrive_Y|SaleType_WD', 'MasVnrType_None|MasVnrArea', 'PoolQC_Tencode|MasVnrType_BrkFace', 'Condition1_Artery|RoofMatl_Tencode', 'LandContour_Low|KitchenQual_Fa', 'SaleCondition_Family|Foundation_CBlock', 'LandContour_Low|GarageFinish_Fin', 'Functional_Maj2|Condition1_Tencode', 'Neighborhood_Somerst|SaleType_New', 'GarageQual_Gd|PavedDrive_Y', 'LandSlope_Tencode|Condition1_RRAe', 'HouseStyle_SFoyer|BsmtFinType2_Rec', 'GarageCond_TA|OverallCond', 'GarageQual_Gd|BsmtQual_Tencode', 'LotShape_IR1|GarageQual_Po', 'Functional_Maj1|BsmtFinType1_Unf', 'Neighborhood_NPkVill|HouseStyle_1.5Fin', 'ExterCond_TA|CentralAir_Y', 'Exterior1st_BrkFace|ScreenPorch', 'BsmtFinType2_GLQ|WoodDeckSF', 'LotShape_Tencode|MSZoning_Tencode', 'LandContour_Bnk|Fence_GdWo', 'HouseStyle_1Story|Exterior2nd_MetalSd', 'Street_Grvl|CentralAir_N', 'Fence_Tencode|FireplaceQu_Ex', 'LandContour_Tencode|Functional_Min2', 'Heating_Tencode|BsmtCond_Gd', 'KitchenQual_Gd|BsmtFinSF1', 'Exterior2nd_Stone|BsmtFinType2_LwQ', 'LotConfig_Corner|Fence_GdPrv', 'LotShape_IR2|Neighborhood_SWISU', 'BsmtFinType1_Tencode|SaleType_Oth', 'Functional_Mod|RoofMatl_WdShngl', 'RoofStyle_Flat|GarageType_CarPort', 'BedroomAbvGr|GarageType_Attchd', 'HeatingQC_Ex|BsmtUnfSF', 'LandSlope_Mod|KitchenQual_Ex', 'RoofMatl_CompShg|GarageType_CarPort', 'BldgType_Duplex|GarageCond_Fa', 'LotConfig_FR2|PoolArea', 'LotShape_Tencode|Heating_GasW', 'Neighborhood_BrDale|BsmtQual_Fa', '2ndFlrSF|MiscFeature_Tencode', 'Condition2_Artery|GarageYrBlt', 'RoofStyle_Flat|HouseStyle_SLvl', 'Utilities_Tencode|LowQualFinSF', 'SaleCondition_Alloca|GarageArea', 'KitchenQual_TA|HouseStyle_SLvl', 'LandSlope_Gtl|Street_Pave', 'LandSlope_Gtl|MasVnrType_Stone', 'Alley_Pave|Heating_GasA', 'Neighborhood_Veenker|Condition1_PosN', 'BedroomAbvGr|GarageType_BuiltIn', 'SaleType_Tencode|BsmtFinType2_Rec', 'BsmtQual_Ex|2ndFlrSF', 'BsmtFinType1_Unf|MiscFeature_Gar2', 'Foundation_BrkTil|Electrical_SBrkr', 'Exterior1st_WdShing|BsmtCond_TA', 'BldgType_TwnhsE|BsmtCond_TA', 'Exterior1st_AsbShng|YearBuilt', 'ExterQual_Ex|Exterior2nd_Wd Sdng', 'GarageFinish_Tencode|TotRmsAbvGrd', 'Foundation_Stone|Fence_MnWw', 'KitchenQual_Tencode|Fence_MnPrv', 'SaleCondition_Alloca|Foundation_Slab', 'Exterior1st_CemntBd|GarageQual_Po', 'GarageQual_Gd|BsmtCond_Po', 'HouseStyle_Tencode|MSSubClass', 'BsmtFinType2_ALQ|BsmtExposure_Gd', 'ExterCond_Gd|HouseStyle_SLvl', '3SsnPorch|FireplaceQu_Ex', 'Heating_Tencode|SaleCondition_Partial', 'ExterQual_Ex|BsmtExposure_Gd', 'Exterior1st_HdBoard|Neighborhood_Sawyer', 'GarageType_BuiltIn|Exterior2nd_Plywood', 'GarageQual_Po|PavedDrive_P', 'BldgType_2fmCon|Neighborhood_Veenker', 'GarageCond_Ex|Neighborhood_Timber', 'Neighborhood_Veenker|MoSold', 'RoofStyle_Shed|SaleCondition_Abnorml', 'BsmtHalfBath|Neighborhood_IDOTRR', 'RoofStyle_Tencode|Exterior2nd_AsphShn', 'HalfBath|LandSlope_Gtl', 'GarageFinish_Tencode|1stFlrSF', 'BsmtFinSF2|HouseStyle_1.5Fin', 'Fence_MnWw|ExterCond_Fa', 'Exterior2nd_Plywood|Street_Pave', 'YearBuilt|Exterior1st_BrkComm', 'GarageQual_Po|Neighborhood_IDOTRR', 'LotShape_Reg|Functional_Maj1', 'FireplaceQu_Gd|Functional_Min1', 'Condition1_RRAe|GarageArea', 'HeatingQC_Gd|MasVnrType_BrkFace', 'GarageType_Detchd|RoofStyle_Flat', 'BsmtHalfBath|Condition1_Tencode', 'LandSlope_Mod|CentralAir_N', 'BedroomAbvGr|Exterior1st_CemntBd', 'TotalBsmtSF|GarageType_Tencode', 'HalfBath|GarageQual_TA', 'BldgType_Twnhs|SaleType_COD', 'PavedDrive_Tencode|BsmtCond_Gd', 'Heating_GasA|2ndFlrSF', 'ExterQual_Ex|2ndFlrSF', 'KitchenQual_Gd|Neighborhood_Mitchel', 'BsmtFinType2_GLQ|GarageType_CarPort', 'Condition1_RRAn|Neighborhood_IDOTRR', 'GarageCond_TA|ExterQual_Tencode', 'Neighborhood_CollgCr|Neighborhood_NoRidge', 'SaleType_ConLD|HouseStyle_2.5Unf', 'BsmtFinType1_Rec|GarageCond_Ex', 'Exterior1st_Stucco|KitchenQual_Ex', 'Neighborhood_Mitchel|BldgType_TwnhsE', 'LandSlope_Tencode|Fence_GdWo', 'SaleType_Tencode|BedroomAbvGr', 'MSZoning_RH|Functional_Min2', 'Neighborhood_Blmngtn|Neighborhood_Somerst', 'YrSold|Neighborhood_NridgHt', 'FireplaceQu_Gd|LandSlope_Gtl', 'OverallCond|BsmtCond_TA', 'RoofStyle_Gable|Condition1_Norm', 'YearRemodAdd|MSZoning_Tencode', 'FireplaceQu_Po|BldgType_Tencode', 'LandContour_Bnk|SaleType_Oth', 'GarageCond_TA|LotArea', 'Utilities_Tencode|Exterior2nd_Stucco', 'Foundation_Tencode|Electrical_SBrkr', 'MSZoning_FV|MasVnrArea', 'Street_Grvl|BsmtExposure_No', 'Functional_Maj2|GarageCond_Ex', 'LandContour_Bnk|Exterior2nd_HdBoard', 'ExterQual_TA|FireplaceQu_Fa', 'LandContour_Tencode|HeatingQC_Ex', 'Condition1_PosN|Condition1_RRAe', 'PavedDrive_Tencode|OverallCond', 'SaleCondition_Abnorml|Exterior1st_BrkComm', 'MiscVal|Fence_Tencode', 'LandContour_Bnk|WoodDeckSF', 'GarageCond_Gd|Exterior2nd_Wd Sdng', 'BsmtFinSF2|SaleType_ConLI', 'Neighborhood_ClearCr|ExterCond_Tencode', 'BsmtFinType1_BLQ|LandSlope_Mod', 'LandContour_Low|Street_Grvl', 'Electrical_FuseP|Neighborhood_MeadowV', 'Neighborhood_Somerst|BldgType_Twnhs', 'LotArea|Neighborhood_Crawfor', 'GrLivArea|SaleCondition_Alloca', 'HeatingQC_Gd|BsmtHalfBath', 'PavedDrive_Y|HeatingQC_Ex', 'HouseStyle_SFoyer|Electrical_SBrkr', 'RoofMatl_Tencode|Foundation_Tencode', 'FireplaceQu_Po|Condition1_PosA', 'BsmtExposure_Mn|Exterior2nd_AsphShn', 'HeatingQC_Ex|Neighborhood_NWAmes', 'BsmtQual_Ex|BsmtExposure_Av', 'OverallQual|BldgType_2fmCon', 'HouseStyle_SFoyer|MiscFeature_Gar2', 'Functional_Typ|LotConfig_Corner', 'MasVnrType_None|Condition1_RRAn', 'BsmtCond_Gd|WoodDeckSF', 'GarageType_Attchd|BsmtExposure_Mn', 'GarageQual_TA|CentralAir_Tencode', 'SaleType_WD|Functional_Mod', 'MasVnrType_None|ExterCond_Fa', 'YrSold|LandContour_Bnk', 'Utilities_Tencode|MasVnrType_BrkCmn', 'Exterior2nd_AsbShng|RoofStyle_Shed', 'LotShape_Reg|Exterior1st_Stucco', 'RoofMatl_WdShngl|Exterior2nd_AsphShn', 'KitchenQual_Gd|BsmtUnfSF', 'BsmtHalfBath|BsmtExposure_No', 'Exterior1st_BrkFace|Heating_GasA', 'BsmtHalfBath|Exterior2nd_MetalSd', 'HouseStyle_SFoyer|LandSlope_Tencode', 'GarageCond_Po|MiscFeature_Shed', 'GarageCars|BldgType_Twnhs', 'Neighborhood_CollgCr|Neighborhood_SWISU', 'Fireplaces|BsmtFinType1_Rec', 'RoofStyle_Flat|CentralAir_Y', 'LotConfig_Corner|Exterior2nd_Brk Cmn', 'Fence_GdWo|Functional_Min2', 'MiscVal|SaleCondition_Partial', 'BsmtFinType2_GLQ|Exterior1st_Tencode', 'Neighborhood_Veenker|BsmtFinType2_LwQ', 'TotRmsAbvGrd|CentralAir_N', 'GarageCond_Fa|GarageArea', 'RoofStyle_Hip|Exterior2nd_Tencode', 'Foundation_PConc|SaleCondition_Partial', 'BsmtFinType1_LwQ|BsmtExposure_Gd', 'Exterior2nd_AsbShng|ExterQual_TA', 'FireplaceQu_Po|Street_Pave', 'FireplaceQu_Po|Exterior2nd_Wd Shng', 'FullBath|GarageQual_Fa', 'BsmtFinType1_ALQ|MSZoning_RH', 'LandSlope_Mod|Exterior1st_Plywood', 'Exterior2nd_BrkFace|RoofStyle_Tencode', 'SaleCondition_Tencode|BsmtCond_Gd', 'Neighborhood_Somerst|Exterior2nd_MetalSd', 'Exterior2nd_VinylSd|GarageYrBlt', 'GarageCond_Fa|BsmtCond_TA', 'RoofStyle_Flat|HouseStyle_Tencode', 'FireplaceQu_Gd|Neighborhood_IDOTRR', 'Neighborhood_NPkVill|BsmtHalfBath', 'Exterior2nd_Brk Cmn|Fence_MnWw', 'RoofStyle_Tencode|MSZoning_FV', 'LotConfig_Corner|Exterior2nd_Wd Shng', 'BsmtFinType2_Tencode|Exterior2nd_Plywood', 'HeatingQC_Tencode|HouseStyle_2.5Unf', 'HouseStyle_Tencode|Street_Grvl', 'BsmtFinType1_GLQ|Exterior1st_MetalSd', 'PoolQC_Tencode|GarageCond_Ex', 'Exterior1st_Wd Sdng|WoodDeckSF', 'Neighborhood_OldTown|Condition1_PosN', 'MasVnrType_BrkCmn|SaleType_Oth', 'Neighborhood_NAmes|BldgType_1Fam', 'Foundation_Stone|Neighborhood_StoneBr', 'Exterior2nd_CmentBd|Functional_Mod', 'BsmtFinType1_BLQ|BsmtFinType1_GLQ', 'Condition1_Artery|FullBath', 'SaleCondition_Tencode|BldgType_Tencode', 'MiscFeature_Othr|MiscFeature_Shed', 'BsmtFinType2_Tencode|LandContour_Bnk', 'Neighborhood_Veenker|HouseStyle_SLvl', 'ScreenPorch|MSZoning_RH', 'HouseStyle_SFoyer|GarageType_Tencode', 'Street_Tencode|TotRmsAbvGrd', 'Exterior1st_Stucco|SaleType_Tencode', 'LotArea|SaleCondition_Alloca', 'CentralAir_Tencode|BldgType_1Fam', 'SaleType_New|Street_Grvl', 'LotConfig_Tencode|Exterior1st_Plywood', 'LandSlope_Tencode|OverallCond', 'Neighborhood_Mitchel|LotShape_IR3', 'HeatingQC_Gd|CentralAir_N', 'Exterior2nd_Stucco|Neighborhood_Crawfor', 'Neighborhood_NAmes|Condition1_Tencode', 'Neighborhood_StoneBr|Neighborhood_BrkSide', 'Neighborhood_SawyerW|Condition2_Norm', 'Neighborhood_BrDale|MSSubClass', 'GarageArea|LotConfig_Tencode', 'KitchenQual_Gd|Exterior2nd_HdBoard', 'TotRmsAbvGrd|GarageType_Basment', 'GarageCars|Street_Grvl', 'Exterior2nd_AsbShng|LotConfig_FR2', 'LandSlope_Mod|LotConfig_CulDSac', 'FullBath|SaleType_ConLD', 'KitchenQual_Ex|GarageFinish_RFn', 'CentralAir_Tencode|BsmtCond_TA', 'GarageYrBlt|Neighborhood_SawyerW', 'GarageType_CarPort|Exterior1st_BrkComm', 'GarageType_Detchd|PoolQC_Tencode', 'HeatingQC_Ex|Fence_MnWw', 'Electrical_Tencode|Neighborhood_BrkSide', 'MSZoning_Tencode|Condition2_Norm', 'FireplaceQu_Gd|HouseStyle_SLvl', 'LandSlope_Mod|BldgType_Tencode', 'OverallCond|Exterior1st_BrkComm', 'MiscFeature_Shed|Condition1_RRAn', 'BsmtCond_Po|Neighborhood_StoneBr', 'CentralAir_Y|Condition1_RRAn', 'LotShape_Reg|LotConfig_FR2', 'FireplaceQu_Fa|RoofStyle_Gambrel', 'LotConfig_Tencode|Foundation_CBlock', 'Fireplaces|KitchenQual_Fa', 'BsmtFinSF1|RoofMatl_WdShngl', 'PavedDrive_Y|BldgType_1Fam', 'MasVnrType_None|ScreenPorch', 'HouseStyle_1Story|ExterQual_Fa', 'RoofStyle_Shed|Exterior2nd_CmentBd', 'Neighborhood_Veenker|ExterQual_Fa', 'PavedDrive_Y|GarageType_Basment', 'BsmtFinSF1|Condition2_Norm', 'Exterior2nd_VinylSd|Fence_GdPrv', 'HeatingQC_TA|Foundation_Slab', 'Neighborhood_Crawfor|BldgType_Tencode', 'KitchenQual_Tencode|MiscFeature_Gar2', 'PavedDrive_Tencode|Neighborhood_Gilbert', 'Neighborhood_Gilbert|SaleType_CWD', 'Neighborhood_NPkVill|SaleType_COD', 'LandContour_HLS|ExterQual_Fa', 'MiscVal|SaleType_CWD', 'MasVnrArea|Neighborhood_MeadowV', 'Alley_Pave|LandContour_Bnk', 'Foundation_PConc|GarageType_Tencode', 'LandSlope_Gtl|FireplaceQu_TA', 'PoolQC_Tencode|TotRmsAbvGrd', 'LandContour_Low|Foundation_CBlock', 'HeatingQC_TA|Neighborhood_Crawfor', 'TotalBsmtSF|Neighborhood_Timber', 'Condition1_RRAe|Foundation_Slab', 'Exterior2nd_Tencode|Neighborhood_Timber', 'Foundation_CBlock|Exterior1st_VinylSd', 'LandSlope_Gtl|GarageFinish_RFn', 'TotalBsmtSF|GarageCond_Ex', 'BsmtFinType2_Rec|MSZoning_Tencode', 'ExterQual_Gd|BldgType_Tencode', 'SaleCondition_Abnorml|ScreenPorch', 'Functional_Typ|LowQualFinSF', '3SsnPorch|RoofStyle_Gable', 'BsmtQual_TA|Neighborhood_IDOTRR', 'BsmtFinType1_BLQ|MasVnrArea', 'Neighborhood_NridgHt|GarageFinish_Fin', 'Foundation_Stone|PavedDrive_Y', 'GarageCond_Po|Electrical_FuseA', 'Neighborhood_NAmes|LotConfig_Tencode', 'Neighborhood_SWISU|MasVnrType_Tencode', 'Exterior2nd_MetalSd|LotShape_IR3', 'PavedDrive_N|RoofMatl_WdShngl', 'Exterior2nd_MetalSd|1stFlrSF', 'HeatingQC_TA|LotConfig_FR2', 'BsmtFinType1_BLQ|Exterior1st_Wd Sdng', 'ExterQual_Gd|ExterCond_Fa', 'RoofStyle_Gambrel|OverallCond', 'Condition1_Tencode|Condition1_RRAn', 'Exterior2nd_Stone|Foundation_Slab', 'Neighborhood_NWAmes|MasVnrType_Tencode', 'ExterQual_TA|MSZoning_RM', 'Heating_GasW|HeatingQC_Ex', 'BldgType_2fmCon|Foundation_CBlock', 'Functional_Tencode|MSZoning_RH', 'FireplaceQu_Tencode|LotShape_IR1', 'BsmtExposure_Tencode|Exterior2nd_Stucco', 'GrLivArea|Exterior2nd_Brk Cmn', 'BsmtFinType2_Tencode|Exterior2nd_BrkFace', 'LandContour_Tencode|MSZoning_C (all)', 'PavedDrive_Y|HouseStyle_1.5Fin', 'MiscFeature_Tencode|Utilities_AllPub', 'Condition1_Tencode|CentralAir_N', 'ScreenPorch', 'GarageCond_TA|RoofStyle_Gable', 'BldgType_Tencode|Fence_MnPrv', 'Heating_GasW|GarageType_CarPort', 'GarageType_Detchd|MiscFeature_Shed', 'MSZoning_C (all)|BsmtQual_Gd', 'Heating_Tencode|GarageQual_Tencode', 'Condition1_Artery|LotArea', 'BsmtFinType1_Rec|Exterior1st_Wd Sdng', 'Heating_Grav|MiscFeature_Gar2', 'BsmtHalfBath|Condition2_Norm', 'YearRemodAdd|Functional_Maj1', 'LotShape_Tencode|Exterior1st_MetalSd', 'YrSold|GarageQual_Fa', 'LotFrontage|Fence_GdPrv', 'Neighborhood_Blmngtn|GarageCond_Ex', 'RoofStyle_Gambrel|BsmtExposure_Av', 'Functional_Typ|SaleType_New', 'SaleCondition_Alloca|Exterior2nd_Wd Sdng', 'RoofMatl_WdShngl|Foundation_Slab', 'LotShape_IR2|Exterior1st_AsbShng', 'Street_Tencode|Condition1_Feedr', 'BsmtFinType1_ALQ|BsmtFinType2_Rec', 'Heating_Tencode|HeatingQC_Ex', 'OverallQual|LandSlope_Gtl', 'Foundation_BrkTil|Neighborhood_OldTown', 'Condition2_Artery|MasVnrType_Stone', 'BsmtFinType2_GLQ|LotConfig_Corner', 'GrLivArea|BsmtFinSF1', 'RoofStyle_Flat|Neighborhood_Blmngtn', 'GarageCond_Gd|Functional_Min1', 'GarageFinish_Unf|3SsnPorch', 'Heating_Grav|Exterior2nd_Plywood', 'FireplaceQu_Fa|BsmtExposure_No', 'Neighborhood_NAmes|ExterQual_Fa', 'Exterior1st_BrkFace|BsmtExposure_Mn', 'Electrical_FuseF|MasVnrType_BrkFace', 'GarageCond_TA|Neighborhood_NAmes', 'Exterior1st_Stucco|Street_Pave', 'RoofMatl_Tar&Grv|TotRmsAbvGrd', 'FireplaceQu_Po|LandContour_HLS', 'YearRemodAdd|PoolArea', 'MSZoning_FV|Exterior1st_Plywood', 'Functional_Typ|PavedDrive_Y', 'MiscFeature_Othr|Exterior2nd_Tencode', 'LandContour_Tencode|BsmtFinType1_LwQ', 'GarageCond_TA|LandSlope_Mod', 'Foundation_Tencode|LotShape_IR3', 'Neighborhood_NPkVill|Condition1_RRAe', 'Condition1_Artery|GarageType_CarPort', 'LotShape_Reg|HeatingQC_Tencode', 'LotFrontage|GarageQual_Fa', 'Fence_Tencode|GarageCond_Ex', 'Exterior2nd_HdBoard|LotConfig_Inside', 'SaleType_ConLw|MiscVal', 'PavedDrive_Tencode|Utilities_AllPub', 'BsmtHalfBath|HouseStyle_1.5Fin', 'Exterior2nd_Stucco|SaleCondition_Abnorml', 'FireplaceQu_Ex|PavedDrive_P', 'CentralAir_Y|GarageQual_Tencode', 'Condition2_Tencode|GarageType_BuiltIn', 'HouseStyle_2Story', 'PavedDrive_Y|SaleCondition_Family', 'MiscFeature_Othr|GarageType_BuiltIn', 'MiscFeature_Othr|MasVnrType_BrkCmn', 'GarageCond_Fa|PoolArea', 'Neighborhood_SWISU|MasVnrType_BrkCmn', 'LandSlope_Gtl|BldgType_Tencode', 'Exterior2nd_BrkFace|Exterior2nd_CmentBd', 'Foundation_PConc|Neighborhood_SawyerW', 'Electrical_FuseA|LotConfig_FR2', 'Condition1_RRAe|SaleCondition_Normal', 'GrLivArea|LandSlope_Mod', 'BsmtFinType1_Tencode|HouseStyle_1Story', 'LandContour_Lvl|CentralAir_N', 'Neighborhood_CollgCr|LandContour_Lvl', 'SaleType_ConLw|Exterior2nd_MetalSd', 'FireplaceQu_Ex|Exterior1st_Tencode', 'RoofMatl_CompShg|OpenPorchSF', 'FullBath|Neighborhood_MeadowV', 'BldgType_Duplex|LotShape_Reg', 'FireplaceQu_Tencode|Neighborhood_NPkVill', 'GarageCond_Po|Condition2_Tencode', 'Neighborhood_CollgCr|BsmtFinType2_LwQ', 'OverallCond|Condition2_Norm', 'Exterior1st_Stucco|Alley_Grvl', 'BsmtFinType2_Rec|OpenPorchSF', 'Neighborhood_SawyerW|Fence_MnPrv', 'BsmtFinType2_GLQ|Foundation_Slab', '2ndFlrSF|PavedDrive_P', 'Exterior1st_CemntBd|GarageType_Basment', 'SaleType_Oth|Exterior1st_Wd Sdng', 'Condition1_RRAe|LotConfig_Inside', 'Neighborhood_StoneBr|MasVnrType_BrkFace', 'Functional_Mod|KitchenQual_TA', 'ExterQual_TA|SaleCondition_Abnorml', 'Heating_Tencode|RoofStyle_Shed', 'BsmtFinType1_BLQ|LotFrontage', 'GarageCond_Po|BedroomAbvGr', 'GarageFinish_Tencode|KitchenQual_TA', 'LandSlope_Tencode|LotConfig_CulDSac', 'EnclosedPorch|Utilities_AllPub', 'Street_Grvl|BsmtExposure_Mn', 'Exterior2nd_VinylSd|Condition1_RRAe', 'Neighborhood_NoRidge|Fence_Tencode', 'LotFrontage|Neighborhood_IDOTRR', 'GarageFinish_Unf|HouseStyle_1Story', 'Neighborhood_NAmes|BsmtFinType1_Unf', 'GarageQual_Gd|SaleCondition_Normal', 'Functional_Mod|HouseStyle_2.5Unf', 'SaleType_ConLD|MiscFeature_Tencode', 'GarageType_Detchd|Neighborhood_IDOTRR', 'LandContour_Low|PavedDrive_Tencode', 'RoofStyle_Gable|ScreenPorch', 'GarageType_Detchd|Functional_Maj1', 'SaleType_WD|Neighborhood_MeadowV', 'LandContour_Lvl|LotShape_IR3', 'YearRemodAdd|ExterQual_Ex', 'HouseStyle_1Story|Functional_Mod', 'GarageType_Detchd|2ndFlrSF', 'Electrical_FuseA|MSZoning_C (all)', 'LandContour_HLS|ExterQual_Tencode', 'Condition1_Artery|LandSlope_Sev', 'Condition1_RRAe|ExterQual_Tencode', 'Condition2_Tencode|BsmtFinType1_LwQ', 'LotFrontage|BsmtFinSF2', 'LotShape_IR2|Functional_Typ', 'FireplaceQu_Gd|PoolQC_Tencode', 'FireplaceQu_Fa|Exterior1st_WdShing', 'Exterior2nd_Stone|GarageFinish_Tencode', 'ExterQual_Ex|Alley_Grvl', 'Neighborhood_BrDale|BsmtFinType1_LwQ', 'KitchenQual_Tencode|Exterior1st_CemntBd', 'GarageQual_Gd|Street_Grvl', 'SaleType_New|GarageQual_Tencode', 'SaleCondition_Tencode|Neighborhood_Gilbert', 'BldgType_Duplex|PavedDrive_Tencode', 'FireplaceQu_Fa|Neighborhood_NAmes', 'HouseStyle_2.5Unf|MasVnrType_BrkFace', 'HouseStyle_1.5Unf|RoofStyle_Tencode', 'Neighborhood_NPkVill|SaleType_ConLw', 'Heating_Grav|MiscVal', 'BsmtFinType2_LwQ|SaleType_CWD', 'Heating_Tencode|Functional_Min2', 'PavedDrive_P|CentralAir_N', 'HouseStyle_SFoyer|GarageCond_Fa', 'RoofStyle_Gambrel|MSZoning_Tencode', 'Neighborhood_Timber|Street_Pave', 'FireplaceQu_Gd|SaleType_Oth', 'RoofStyle_Hip|Street_Pave', 'BldgType_Duplex|Foundation_Stone', '3SsnPorch|BsmtQual_Gd', 'RoofMatl_CompShg|Utilities_AllPub', 'Fence_Tencode|Alley_Grvl', 'SaleType_New|HouseStyle_2.5Unf', 'HeatingQC_Gd|Exterior2nd_Plywood', 'LowQualFinSF|RoofStyle_Tencode', 'RoofStyle_Gable|Electrical_FuseF', 'YearBuilt|Exterior2nd_VinylSd', 'GarageType_Tencode|BsmtExposure_No', 'Exterior1st_HdBoard|GarageFinish_RFn', 'Condition1_Norm|MasVnrType_BrkFace', 'Foundation_Stone|MasVnrType_None', 'RoofMatl_Tencode|Neighborhood_Blmngtn', 'Heating_Tencode|GarageType_Attchd', 'FireplaceQu_Gd|HouseStyle_Tencode', 'OverallQual|Exterior2nd_Tencode', 'LotShape_Reg|SaleCondition_Abnorml', 'BsmtQual_Ex|Exterior2nd_Plywood', 'Heating_GasA|BsmtCond_TA', 'GarageFinish_Unf|PavedDrive_P', 'LandContour_Tencode|MSZoning_Tencode', 'BsmtFinSF2', 'Condition1_PosA|Neighborhood_Crawfor', 'Neighborhood_Somerst|PavedDrive_P', 'LandSlope_Sev|ExterQual_Ex', 'LotConfig_FR2|SaleType_COD', 'BsmtExposure_Gd|Exterior1st_Tencode', 'LowQualFinSF|Alley_Grvl', 'LandContour_Low|BsmtFinType1_Rec', 'LandContour_Tencode|GarageQual_Po', 'GarageArea|Neighborhood_StoneBr', 'BsmtFullBath|Neighborhood_SawyerW', 'Neighborhood_NridgHt|MiscVal', 'BsmtQual_Fa|1stFlrSF', 'Exterior2nd_CmentBd|ExterQual_Tencode', 'SaleType_New|WoodDeckSF', 'BsmtCond_Po|BsmtExposure_No', 'TotalBsmtSF|Neighborhood_StoneBr', 'HeatingQC_Fa|SaleCondition_Abnorml', 'KitchenQual_Gd|SaleType_CWD', 'Neighborhood_NWAmes|BldgType_TwnhsE', 'CentralAir_Y|SaleType_Oth', 'GarageCond_Po|MSZoning_C (all)', 'Condition2_Artery|BsmtFinType1_LwQ', 'HeatingQC_TA|RoofMatl_CompShg', 'BsmtFinSF2|MoSold', 'Exterior1st_BrkComm|Street_Pave', 'BsmtQual_Tencode|Foundation_CBlock', 'BsmtFinType1_Tencode|BsmtQual_Ex', 'Exterior1st_HdBoard|BsmtQual_TA', 'Exterior2nd_CmentBd|SaleType_CWD', 'BsmtFinType1_Tencode|ExterCond_TA', 'SaleType_WD|MSZoning_RL', '1stFlrSF|HouseStyle_2Story', 'Functional_Maj1|Condition1_Feedr', 'LotShape_Tencode|GarageFinish_Tencode', 'Fireplaces|MiscVal', 'GarageQual_Po|Neighborhood_Gilbert', 'HouseStyle_SLvl|Neighborhood_Timber', 'BsmtCond_Fa|GarageType_2Types', 'Exterior2nd_AsbShng|Electrical_SBrkr', 'GarageType_Detchd|BedroomAbvGr', 'MiscVal|Alley_Grvl', 'MSSubClass', 'CentralAir_Y|Neighborhood_IDOTRR', 'Functional_Maj2|BsmtQual_Gd', 'SaleCondition_Family|Neighborhood_NWAmes', 'LotConfig_FR2|MiscFeature_Shed', 'Exterior2nd_Plywood|BsmtExposure_Mn', 'SaleCondition_Tencode|Condition1_Norm', 'Neighborhood_BrDale|HouseStyle_1.5Fin', 'LandContour_Lvl|RoofStyle_Gable', 'BsmtCond_Gd|PavedDrive_P', 'Neighborhood_NoRidge|LandSlope_Sev', 'MSZoning_C (all)|Functional_Min2', 'RoofStyle_Flat|OverallCond', 'LandContour_Bnk|Exterior1st_MetalSd', 'GarageType_CarPort|Exterior2nd_Wd Shng', 'Exterior1st_Stucco|MSZoning_FV', 'Exterior2nd_Tencode|Condition1_PosA', 'RoofStyle_Flat|BsmtFinType1_ALQ', 'Condition1_PosN|GarageArea', 'Exterior2nd_BrkFace|BsmtFinType2_Unf', 'RoofStyle_Flat|SaleCondition_Family', 'Exterior2nd_MetalSd|BsmtExposure_No', 'ScreenPorch|CentralAir_N', 'MasVnrType_BrkCmn|MSSubClass', 'Exterior1st_Stucco|BedroomAbvGr', 'Condition1_Feedr|BsmtFinType1_Unf', 'MiscFeature_Gar2|Exterior1st_Tencode', 'RoofStyle_Shed|GarageQual_Po', 'RoofStyle_Shed|GarageArea', 'Fence_Tencode|RoofStyle_Gambrel', 'Functional_Maj1|Neighborhood_MeadowV', 'LandContour_Tencode|BsmtFinType2_LwQ', 'LandSlope_Gtl|LotShape_IR3', 'ExterCond_TA|KitchenQual_Fa', 'RoofStyle_Shed|ExterCond_Fa', 'HeatingQC_Gd|RoofMatl_CompShg', 'HouseStyle_1Story|Exterior1st_HdBoard', 'HeatingQC_Tencode|BsmtExposure_Gd', 'Neighborhood_NPkVill|BsmtFinType1_LwQ', 'BsmtQual_TA|BsmtExposure_Av', 'BedroomAbvGr|BsmtExposure_Mn', 'GarageQual_Fa|Neighborhood_BrkSide', 'GarageType_Tencode|Exterior1st_Tencode', 'BsmtFinType1_Rec|Functional_Min1', 'GarageType_Tencode|MSZoning_Tencode', 'SaleType_Tencode|BldgType_1Fam', 'BsmtFinType2_BLQ|Utilities_AllPub', 'PoolQC_Tencode|Functional_Min2', 'TotalBsmtSF|Fence_MnPrv', 'Fence_GdWo|Fence_MnWw', 'HouseStyle_1Story|GarageType_Attchd', 'Exterior2nd_Stucco|MoSold', 'Exterior1st_Stucco|Neighborhood_BrkSide', 'GarageArea|BsmtCond_Tencode', 'CentralAir_N|MSZoning_RH', 'PavedDrive_Tencode|Condition1_Feedr', 'Electrical_Tencode|Exterior1st_Tencode', 'Exterior2nd_VinylSd|ExterCond_Tencode', 'HouseStyle_1Story|SaleCondition_Partial', 'FireplaceQu_TA|HouseStyle_SLvl', 'Functional_Maj1|SaleType_Oth', 'CentralAir_Y|Neighborhood_Gilbert', 'Foundation_BrkTil|MasVnrType_None', 'Condition2_Tencode|ExterQual_Gd', 'MSSubClass|BsmtExposure_Gd', 'BsmtFinType1_Tencode|Heating_Tencode', 'SaleCondition_Normal|CentralAir_Y', 'Exterior2nd_Wd Sdng|Neighborhood_Gilbert', 'Condition1_Feedr|ExterQual_Gd', 'LandSlope_Mod|MiscFeature_Tencode', 'GarageType_CarPort|Condition1_RRAn', 'LandContour_Tencode|PoolQC_Tencode', 'Fence_GdPrv|MSSubClass', 'Neighborhood_IDOTRR|MasVnrType_BrkFace', 'ExterQual_Gd|Exterior1st_Plywood', 'HouseStyle_Tencode|LandSlope_Gtl', 'ExterCond_Gd|Exterior2nd_AsphShn', 'SaleCondition_Tencode|HouseStyle_1.5Fin', 'GarageFinish_Unf|BsmtExposure_Mn', 'Heating_Grav|BsmtFinType1_Unf', 'GarageCars|Fence_Tencode', 'FireplaceQu_Fa|Neighborhood_Crawfor', 'RoofStyle_Shed|LotShape_IR3', 'GarageCond_TA|ExterCond_Tencode', 'LotConfig_FR2|Neighborhood_BrkSide', 'HeatingQC_Fa|BedroomAbvGr', 'Exterior2nd_MetalSd|LotConfig_Inside', 'BldgType_2fmCon|1stFlrSF', 'LandContour_Bnk|BsmtCond_Gd', 'BldgType_2fmCon|WoodDeckSF', '1stFlrSF|MasVnrType_Tencode', 'Neighborhood_Somerst|Condition1_PosA', 'BsmtUnfSF|GarageType_2Types', 'RoofStyle_Tencode|HouseStyle_2.5Unf', 'Exterior1st_AsbShng|Exterior2nd_Wd Sdng', 'Exterior2nd_Stone|GarageArea', 'SaleCondition_Normal|BsmtExposure_Gd', 'RoofStyle_Shed|BsmtFinSF1', 'Functional_Maj1|HouseStyle_2.5Unf', 'HouseStyle_SFoyer|Fence_MnWw', 'RoofMatl_Tar&Grv|Condition1_PosN', 'HeatingQC_Fa|ExterQual_Tencode', 'FireplaceQu_Tencode|LandSlope_Mod', 'HouseStyle_Tencode|MasVnrType_BrkCmn', 'Exterior1st_HdBoard|HeatingQC_Gd', 'Neighborhood_NoRidge|Exterior1st_CemntBd', 'Condition1_Feedr|Neighborhood_IDOTRR', 'Street_Tencode|BsmtFinType1_Unf', 'Fence_GdWo|BsmtFinType1_GLQ', 'RoofMatl_CompShg|Condition2_Artery', 'KitchenQual_Ex|BsmtFinType1_GLQ', 'BsmtFinType2_ALQ|PavedDrive_P', 'Neighborhood_NPkVill|ScreenPorch', 'GarageType_Attchd|BsmtCond_Tencode', 'LotConfig_Corner|BsmtQual_TA', 'LandContour_Low|RoofMatl_Tar&Grv', 'GarageFinish_Tencode|Fence_MnWw', 'MasVnrType_None|Fence_MnWw', 'Exterior1st_HdBoard|BsmtFinType2_Rec', 'BsmtUnfSF|BsmtCond_TA', 'KitchenAbvGr|RoofStyle_Gable', 'BsmtCond_Gd|BldgType_1Fam', 'Neighborhood_StoneBr|MSZoning_Tencode', 'BsmtFinType1_Tencode|Alley_Pave', 'Exterior2nd_CmentBd|Exterior2nd_Wd Shng', 'Heating_GasW|OpenPorchSF', 'Exterior1st_CemntBd|MasVnrType_None', 'Condition1_RRAe|Functional_Min2', 'SaleType_WD|CentralAir_Y', 'SaleCondition_Tencode|2ndFlrSF', 'FireplaceQu_Gd|FireplaceQu_Fa', 'LandContour_Bnk|HouseStyle_1.5Unf', 'BldgType_Duplex|MiscFeature_Tencode', 'FireplaceQu_Tencode|Heating_Tencode', 'BsmtFinType1_BLQ|MiscFeature_Shed', 'SaleCondition_Tencode|BsmtUnfSF', '2ndFlrSF|Fence_GdWo', 'GarageQual_Po|Foundation_Slab', 'Exterior2nd_MetalSd|MasVnrType_Tencode', 'Neighborhood_NoRidge|SaleType_Oth', 'BsmtCond_Gd|Functional_Min2', 'CentralAir_Tencode|Neighborhood_Timber', 'Neighborhood_Sawyer|SaleType_Oth', 'Functional_Mod|MasVnrType_None', 'SaleType_ConLI|Exterior2nd_Plywood', 'Functional_Typ|Exterior1st_AsbShng', 'LandContour_Low|SaleCondition_Abnorml', 'GrLivArea|GarageQual_TA', 'GarageCond_TA|MSZoning_RL', 'FullBath|LandSlope_Sev', 'Neighborhood_BrDale|Exterior2nd_Plywood', 'FireplaceQu_Gd|HouseStyle_SFoyer', 'SaleType_COD|MasVnrType_BrkFace', 'FireplaceQu_Gd|Condition1_RRAn', 'GarageCond_Po|BsmtQual_Gd', 'FireplaceQu_Ex|CentralAir_N', 'Foundation_Stone|Foundation_BrkTil', 'GarageCond_Tencode|BsmtCond_Fa', 'RoofStyle_Shed|Condition1_Tencode', 'PoolQC_Tencode|Exterior1st_CemntBd', 'BsmtFinType2_BLQ|Exterior1st_MetalSd', 'Exterior2nd_CmentBd|Neighborhood_Sawyer', 'Exterior2nd_Stone|LotShape_Reg', 'GarageFinish_Tencode|KitchenQual_Fa', 'BsmtQual_Ex|GarageType_BuiltIn', 'LotShape_Reg|MasVnrType_BrkFace', 'LotShape_IR2|Neighborhood_Crawfor', 'Exterior2nd_Plywood|Neighborhood_Timber', 'ExterQual_TA|BsmtCond_Tencode', 'BsmtFullBath|GarageCond_Fa', 'BsmtExposure_Tencode|Exterior2nd_HdBoard', 'HouseStyle_1.5Unf|MoSold', 'Condition1_Artery|Alley_Pave', 'Foundation_Tencode|SaleCondition_Alloca', 'Neighborhood_NridgHt|GarageQual_Tencode', 'GarageFinish_Unf|LandContour_Bnk', 'HeatingQC_Gd|WoodDeckSF', 'GarageFinish_Fin|Fence_Tencode', 'LotShape_IR1|Condition2_Artery', 'RoofStyle_Hip|HouseStyle_1.5Fin', 'BsmtCond_Po|Exterior2nd_HdBoard', 'LotArea|LandSlope_Gtl', 'Neighborhood_NAmes|Exterior2nd_HdBoard', 'BsmtHalfBath|ExterQual_Tencode', 'GarageQual_Gd|MSZoning_RL', 'ExterQual_Gd|Fence_MnWw', 'SaleCondition_Alloca|Condition1_Norm', 'Neighborhood_NAmes|BsmtFinType2_Unf', 'HouseStyle_2.5Unf|PoolArea', 'Neighborhood_Blmngtn|MiscFeature_Gar2', 'KitchenQual_Gd|Fence_GdPrv', 'HeatingQC_Fa|FireplaceQu_Po', 'Alley_Tencode|ExterQual_Fa', 'BedroomAbvGr|Exterior1st_Tencode', 'LotConfig_FR2|BsmtUnfSF', 'Exterior1st_HdBoard|SaleCondition_Partial', 'FireplaceQu_Gd|KitchenQual_Gd', 'PoolArea|MSZoning_Tencode', 'Condition1_Norm|GarageYrBlt', 'GarageType_BuiltIn|BsmtExposure_No', 'SaleCondition_Tencode|Fence_Tencode', 'LandContour_Low|Neighborhood_NoRidge', 'BldgType_Duplex|KitchenQual_TA', 'BsmtFinType2_Tencode|KitchenQual_Ex', 'GarageQual_Tencode|BsmtQual_Gd', 'PavedDrive_Tencode|MSZoning_RH', 'RoofStyle_Gable|Street_Pave', 'YearRemodAdd|MasVnrType_Tencode', 'LotConfig_CulDSac|GarageQual_TA', 'LotConfig_Corner|MasVnrArea', 'Exterior2nd_VinylSd|Functional_Maj1', 'MiscVal|GarageYrBlt', 'Heating_Tencode|SaleType_New', 'HeatingQC_Gd|Exterior2nd_VinylSd', 'KitchenQual_Tencode|HouseStyle_1.5Fin', 'LotArea|BsmtFinType1_Unf', 'Exterior1st_BrkFace|SaleType_CWD', 'Exterior2nd_Wd Sdng|Functional_Min2', '3SsnPorch|Exterior1st_VinylSd', 'FireplaceQu_Gd|RoofMatl_CompShg', 'BsmtExposure_Tencode|MasVnrType_BrkCmn', 'YearRemodAdd|BsmtFinType2_GLQ', 'Utilities_Tencode|SaleType_ConLI', 'Exterior2nd_Stucco|GarageType_Tencode', 'GarageFinish_Unf|MasVnrType_BrkCmn', 'LandSlope_Sev|Functional_Min1', 'Exterior1st_AsbShng|ExterQual_Fa', 'Neighborhood_NPkVill|Foundation_Tencode', 'Exterior1st_Stucco|CentralAir_Tencode', 'Fence_Tencode|3SsnPorch', 'Neighborhood_Sawyer|Exterior1st_WdShing', 'BsmtFullBath|Neighborhood_Timber', 'Foundation_Tencode|Neighborhood_SWISU', 'MiscFeature_Tencode|Neighborhood_Timber', 'FireplaceQu_Tencode|GarageType_Tencode', 'PavedDrive_Tencode|Alley_Grvl', 'LandSlope_Mod|HalfBath', 'FullBath|Condition1_Norm', 'BsmtHalfBath|HeatingQC_Ex', 'Exterior1st_BrkFace|RoofStyle_Gable', 'FireplaceQu_Ex|Neighborhood_Timber', 'BsmtCond_Gd|HouseStyle_1.5Fin', 'Exterior2nd_Brk Cmn|BsmtCond_Fa', 'Functional_Tencode|MasVnrType_Tencode', 'MasVnrType_None|LotShape_IR3', 'Condition1_Norm|Neighborhood_StoneBr', 'GrLivArea|BsmtCond_Fa', 'SaleCondition_Tencode|FireplaceQu_TA', 'BsmtFullBath|GarageFinish_RFn', 'Neighborhood_Mitchel|BldgType_1Fam', 'ExterQual_Ex|BsmtFinType1_GLQ', 'BsmtCond_Gd|Exterior1st_WdShing', 'GarageType_Attchd|Exterior2nd_Brk Cmn', '2ndFlrSF|BsmtFinType1_Unf', 'GarageType_Detchd|GarageFinish_Unf', 'Condition1_Feedr|MasVnrType_Tencode', 'MSZoning_FV|BsmtExposure_Mn', 'SaleCondition_Alloca|GarageQual_TA', 'Neighborhood_SWISU|KitchenQual_Tencode', 'Alley_Pave|GarageType_Attchd', 'BsmtCond_Po|BsmtQual_Gd', 'SaleType_ConLD|BldgType_TwnhsE', 'Foundation_BrkTil|RoofStyle_Tencode', 'ExterCond_Gd|GarageType_CarPort', 'BsmtFinType1_BLQ|BsmtFinType2_ALQ', 'Functional_Typ|Electrical_FuseF', 'MSZoning_RL|Street_Pave', 'GarageFinish_Fin|LotShape_IR3', 'GarageCond_Po|HalfBath', 'Foundation_Tencode|PavedDrive_Y', 'Condition2_Tencode|Utilities_AllPub', 'Condition1_Norm|Exterior2nd_Brk Cmn', 'GarageFinish_Fin|KitchenQual_TA', 'GarageType_Basment|BsmtFinType1_LwQ', 'BsmtFinType2_Rec|BsmtQual_Gd', 'Neighborhood_Edwards|BsmtExposure_Mn', 'GarageQual_Po|OpenPorchSF', 'Heating_Tencode|MasVnrArea', 'ExterQual_TA|Neighborhood_Blmngtn', 'GrLivArea|Exterior2nd_HdBoard', 'GarageFinish_Unf|ScreenPorch', 'CentralAir_N|LotConfig_Inside', 'LandSlope_Tencode|Neighborhood_NAmes', 'BldgType_Twnhs|Fence_Tencode', 'Street_Tencode|BsmtQual_Tencode', 'Exterior2nd_BrkFace|BsmtExposure_Av', 'Neighborhood_Somerst|ExterCond_TA', 'LandContour_Bnk|BsmtFinType1_Rec', 'KitchenQual_Gd|Electrical_FuseF', 'GarageQual_Po|Fence_GdWo', 'Foundation_Slab|MasVnrType_Tencode', 'FireplaceQu_Tencode|TotalBsmtSF', 'MiscFeature_Othr|Exterior2nd_Wd Sdng', 'Neighborhood_Edwards|BsmtFinType2_BLQ', 'BldgType_Duplex|FireplaceQu_Gd', 'BldgType_2fmCon|BsmtCond_TA', 'OverallCond|LotShape_IR3', 'Exterior2nd_CmentBd|KitchenQual_TA', 'Fence_Tencode|SaleType_COD', 'Foundation_CBlock|Exterior1st_Wd Sdng', 'Neighborhood_NoRidge|BldgType_Tencode', 'PavedDrive_Y|Exterior1st_Tencode', 'MoSold|BsmtFinType1_Unf', 'HouseStyle_SFoyer|MasVnrType_BrkCmn', 'SaleType_Tencode|BsmtQual_Ex', 'HouseStyle_2.5Unf|BsmtFinType1_Unf', 'GarageCond_Gd|Neighborhood_MeadowV', 'BsmtCond_Po|MasVnrType_Tencode', 'BsmtExposure_Tencode|LandContour_Lvl', 'LotConfig_FR2|BsmtFinType1_GLQ', 'Electrical_FuseF|TotRmsAbvGrd', 'PavedDrive_N|BldgType_Twnhs', 'HouseStyle_Tencode|BsmtQual_TA', 'MiscVal|Exterior2nd_MetalSd', 'GarageType_CarPort|Street_Grvl', 'GarageType_Attchd|BsmtFinSF1', 'Exterior1st_CemntBd|GarageType_Attchd', 'LotConfig_FR2|Exterior2nd_Brk Cmn', 'GarageFinish_Fin|Functional_Min1', 'GarageType_Basment|Fence_MnPrv', 'BsmtFinType2_BLQ', 'SaleType_Tencode|FireplaceQu_TA', 'KitchenQual_Ex|Condition1_Tencode', 'BsmtQual_Ex|MSZoning_C (all)', 'GarageCond_Fa|Exterior1st_Wd Sdng', 'SaleType_ConLD|WoodDeckSF', 'GarageQual_TA|GarageArea', 'YrSold|MSZoning_FV', 'Neighborhood_Veenker|BsmtCond_TA', 'Alley_Pave|Exterior1st_WdShing', 'BsmtFinType1_BLQ|LotConfig_FR2', 'ExterCond_Tencode|OverallCond', 'FireplaceQu_Gd|Exterior1st_Wd Sdng', 'BsmtQual_Fa|RoofStyle_Gambrel', 'BsmtFinType2_GLQ|BsmtFinType1_GLQ', 'FireplaceQu_Fa|BsmtFinType1_Rec', 'BsmtCond_Gd|MiscFeature_Tencode', 'GarageType_Tencode|BsmtCond_Tencode', 'Neighborhood_ClearCr|HouseStyle_2Story', 'GarageType_Tencode|LandSlope_Gtl', 'Electrical_Tencode|LowQualFinSF', 'Neighborhood_CollgCr|Exterior1st_BrkComm', 'KitchenQual_Tencode|Exterior2nd_MetalSd', 'Functional_Maj1|GarageQual_Tencode', 'GarageFinish_Unf|GarageYrBlt', 'MiscVal|GarageQual_Po', 'Exterior2nd_AsbShng|Exterior2nd_Tencode', 'RoofMatl_Tencode|SaleCondition_Abnorml', 'LotArea|BsmtFinType1_ALQ', 'Neighborhood_Veenker|OverallCond', 'YrSold|BsmtExposure_Gd', 'BsmtFinType1_Rec|GarageType_Attchd', 'FireplaceQu_Tencode|TotRmsAbvGrd', 'GarageQual_Gd|YearBuilt', 'Functional_Mod|HouseStyle_1.5Fin', 'BsmtQual_Tencode|Exterior2nd_HdBoard', 'MSZoning_C (all)|1stFlrSF', 'Heating_GasW|Functional_Maj1', 'FireplaceQu_Fa|1stFlrSF', 'SaleType_ConLI|BsmtExposure_Mn', 'MSZoning_RM|BsmtQual_Gd', 'RoofMatl_CompShg|GarageYrBlt', 'KitchenAbvGr|MasVnrType_Tencode', 'Functional_Typ|Electrical_SBrkr', 'LotConfig_FR2|SaleType_Tencode', 'Exterior2nd_Stucco|BsmtFinType1_Unf', 'MSZoning_Tencode|Exterior1st_MetalSd', 'LotConfig_FR2|CentralAir_N', 'Neighborhood_Tencode|Condition1_PosA', 'FireplaceQu_Tencode|Exterior2nd_CmentBd', 'Electrical_Tencode|SaleType_ConLI', 'GarageArea|MSSubClass', 'GarageType_BuiltIn|LotShape_IR3', 'Condition2_Artery|BsmtFinType1_Unf', 'GarageFinish_Unf|HeatingQC_Tencode', 'SaleCondition_Family|ExterCond_Tencode', 'HouseStyle_1Story|HouseStyle_SFoyer', 'Street_Tencode|LandContour_Low', 'Neighborhood_OldTown|GarageQual_Tencode', 'ExterCond_Tencode|Exterior1st_CemntBd', 'SaleType_CWD|LotConfig_Inside', 'Neighborhood_ClearCr|HouseStyle_Tencode', 'HouseStyle_1Story|RoofStyle_Shed', 'GarageQual_Gd|Condition1_PosN', 'Condition1_Artery|KitchenQual_Gd', 'GarageType_Attchd|LandSlope_Gtl', 'YrSold|SaleCondition_Abnorml', 'Condition1_RRAn|LotConfig_Inside', 'LandContour_Tencode|Condition1_RRAn', 'GarageQual_Gd|GarageType_CarPort', 'SaleType_Tencode|MasVnrType_None', 'BsmtFinType1_Tencode|SaleType_New', 'GarageQual_Gd|Neighborhood_OldTown', 'SaleType_ConLw|MSSubClass', 'BldgType_Duplex|Heating_Tencode', 'SaleType_New|MSZoning_RH', 'GarageFinish_Unf|GarageArea', 'LotConfig_CulDSac|Functional_Maj1', 'LandSlope_Sev|GarageType_CarPort', 'BsmtQual_Ex|Alley_Grvl', 'BsmtQual_Fa|GarageYrBlt', 'LandContour_Lvl|ScreenPorch', 'Condition1_RRAn|BsmtExposure_No', 'Neighborhood_Gilbert|MasVnrType_Stone', 'EnclosedPorch|HouseStyle_2Story', 'PoolQC_Tencode|GarageType_BuiltIn', 'Exterior2nd_Stone|KitchenQual_TA', 'EnclosedPorch|LotConfig_Tencode', 'Alley_Pave|ExterQual_Gd', 'LotShape_Reg|BsmtFinType1_BLQ', 'LandContour_Tencode|Neighborhood_Gilbert', 'LandContour_HLS|SaleType_New', 'HouseStyle_2.5Unf|Exterior2nd_Plywood', 'BsmtFinType2_LwQ|RoofStyle_Tencode', 'RoofStyle_Gambrel|LotConfig_Inside', 'SaleCondition_Tencode|MasVnrArea', 'Foundation_Stone|MSZoning_RH', 'HouseStyle_SFoyer|Electrical_Tencode', 'Heating_GasW|KitchenQual_TA', 'Electrical_Tencode|GarageQual_Tencode', 'GarageCond_TA|3SsnPorch', '3SsnPorch|Exterior1st_WdShing', 'LotConfig_FR2|HouseStyle_2Story', 'KitchenQual_Gd|ExterCond_Fa', 'SaleType_CWD|HouseStyle_SLvl', 'FireplaceQu_Tencode|PavedDrive_N', 'GarageQual_Gd|BsmtFinType1_Unf', 'Neighborhood_CollgCr|RoofMatl_Tar&Grv', 'Heating_GasW|Functional_Min2', 'Neighborhood_NPkVill|BsmtQual_Gd', 'Heating_GasA|MasVnrType_BrkCmn', 'Neighborhood_NridgHt|2ndFlrSF', 'LotShape_IR2|Foundation_Stone', 'LotShape_IR1|Exterior1st_BrkComm', 'HeatingQC_Gd|Exterior1st_MetalSd', 'Functional_Maj2|GarageType_CarPort', '1stFlrSF|GarageQual_Tencode', 'BsmtFinType2_Tencode|BldgType_1Fam', 'SaleType_ConLD|Exterior2nd_MetalSd', 'Condition1_Feedr|Street_Pave', 'LotConfig_Tencode|Neighborhood_IDOTRR', 'HeatingQC_Tencode|Exterior2nd_CmentBd', 'LandSlope_Mod|BsmtExposure_Mn', 'BsmtFinType1_Tencode|Fence_Tencode', 'FireplaceQu_Fa|SaleType_New', 'LotConfig_FR2|Functional_Maj1', 'Electrical_SBrkr|Functional_Maj1', 'ExterCond_Gd|MSZoning_Tencode', 'SaleType_New|Functional_Mod', 'GarageFinish_Fin|Neighborhood_Sawyer', 'RoofStyle_Hip|HouseStyle_1Story', 'RoofStyle_Flat|FireplaceQu_Fa', 'BsmtQual_Tencode|KitchenQual_TA', 'Foundation_Stone|Neighborhood_Mitchel', 'Neighborhood_Sawyer|MasVnrType_Stone', 'BsmtUnfSF|PavedDrive_P', 'LotShape_Tencode|Foundation_BrkTil', 'BsmtCond_Po|Condition2_Norm', 'Neighborhood_CollgCr|RoofMatl_CompShg', 'SaleType_ConLI|BsmtCond_Fa', 'Exterior1st_VinylSd|CentralAir_N', 'Condition2_Norm|ExterQual_Fa', 'Neighborhood_ClearCr|Exterior2nd_MetalSd', 'LandContour_Bnk|Exterior2nd_Wd Shng', 'Exterior1st_BrkFace|Fence_Tencode', 'Foundation_PConc|HouseStyle_Tencode', 'MasVnrType_BrkCmn|MSZoning_FV', 'Street_Tencode|HeatingQC_Tencode', 'EnclosedPorch|Exterior2nd_Plywood', 'YearBuilt|Neighborhood_Sawyer', 'OverallQual|LotFrontage', 'Fence_Tencode|Heating_GasW', 'Exterior2nd_AsbShng|PoolQC_Tencode', 'GarageType_Detchd|BsmtExposure_Av', 'HouseStyle_1Story|Electrical_Tencode', 'Neighborhood_OldTown|Exterior1st_MetalSd', 'Exterior2nd_Stucco|CentralAir_Y', 'MiscFeature_Tencode|MasVnrType_Tencode', 'BsmtFinType1_GLQ|MSZoning_RL', 'Fireplaces|MasVnrType_Tencode', 'Exterior2nd_BrkFace|Foundation_Tencode', 'Fence_GdWo|Alley_Grvl', 'MSZoning_C (all)|BsmtExposure_Gd', 'GarageArea|BsmtExposure_Gd', 'Neighborhood_Somerst|Fence_MnPrv', 'PavedDrive_Y|Exterior2nd_CmentBd', 'Neighborhood_Blmngtn|Fence_GdPrv', 'GarageFinish_Unf|HeatingQC_TA', 'Neighborhood_Mitchel|MasVnrType_BrkFace', 'Electrical_FuseA|SaleCondition_Family', 'KitchenQual_Gd|Exterior2nd_MetalSd', 'HeatingQC_Tencode|FireplaceQu_Fa', 'LandContour_Lvl|LowQualFinSF', 'Neighborhood_Blmngtn|GarageType_BuiltIn', 'Exterior2nd_Stone|YearRemodAdd', 'Exterior2nd_Stone|Neighborhood_Veenker', 'LandSlope_Tencode|SaleType_WD', 'SaleType_CWD|MasVnrType_BrkFace', 'Heating_GasA|Heating_Grav', 'Neighborhood_NPkVill|Exterior2nd_Wd Sdng', 'BsmtFinType1_Tencode|Fence_GdPrv', 'BsmtFinType1_BLQ|3SsnPorch', 'SaleCondition_Partial|BsmtExposure_Gd', 'TotalBsmtSF|FireplaceQu_Fa', 'Neighborhood_StoneBr|Exterior1st_VinylSd', 'BldgType_Twnhs|WoodDeckSF', 'Condition1_Norm|SaleType_COD', 'Alley_Pave|BedroomAbvGr', 'BsmtQual_Ex|Exterior2nd_MetalSd', 'GarageQual_Gd|CentralAir_Tencode', 'RoofStyle_Shed|CentralAir_Tencode', 'LandContour_Bnk|Condition1_RRAn', 'SaleCondition_Normal|GarageQual_Tencode', 'RoofStyle_Shed|Fence_MnPrv', 'Electrical_FuseA|Functional_Min1', 'RoofStyle_Shed|BsmtFinType2_LwQ', 'ExterQual_Tencode|Exterior2nd_Plywood', 'Neighborhood_Blmngtn|MSZoning_FV', 'Exterior2nd_AsbShng|HeatingQC_Ex', 'Foundation_Stone|LandSlope_Sev']\n", "\n", "Categorical = ['MiscFeature', 'Exterior1st', 'HeatingQC', 'GarageType', 'LandSlope', 'LandContour', 'BsmtQual', 'Electrical', 'BldgType', 'PavedDrive', 'BsmtCond', 'Alley', 'Street', 'ExterCond', 'MasVnrType', 'Neighborhood', 'Condition2', 'Functional', 'Condition1', 'SaleCondition', 'ExterQual', 'Foundation', 'GarageQual', 'Exterior2nd', 'RoofStyle', 'BsmtFinType2', 'Utilities', 'KitchenQual', 'FireplaceQu', 'GarageCond', 'HouseStyle', 'Fence', 'LotShape', 'BsmtExposure', 'PoolQC', 'MSZoning', 'CentralAir', 'GarageFinish', 'SaleType', 'LotConfig', 'BsmtFinType1', 'RoofMatl', 'Heating']\n" ] } ], "source": [ "encoded_combined_nums, cats = get_type_lists(frame=train)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "(1001, 42240)\n", "True\n", "(1459, 42240)\n" ] } ], "source": [ "# check number of created variables is correct\n", "# 1 id column, 290)) combined variables\n", "print(train.shape == (1001, sum(range(1, 290), (290 + 43 + 1 + 1))))\n", "print(train.shape)\n", "print(test.shape == (1459, sum(range(1, 290), (290 + 43 + 1 + 1))))\n", "print(test.shape)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
GarageType_Detchd BsmtUnfSF GarageType_Detchd|BsmtUnfSF
1 0 0
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
GarageType_Detchd BsmtUnfSF GarageType_Detchd|BsmtUnfSF
1 459 459
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "0.0\n", "459.0\n" ] } ], "source": [ "# check multiplication for a random column\n", "ridx = np.random.choice(sum(range(1, 79)))\n", "combined_only = [name for name in encoded_combined_nums if name not in encoded_nums]\n", "combined_check_vars = combined_only[ridx].split('|')\n", "combined_check_vars.append(combined_only[ridx])\n", "\n", "print(train[736, combined_check_vars])\n", "print(test[637, combined_check_vars])\n", "\n", "print(train[736, combined_check_vars[0]]*train[736, combined_check_vars[1]])\n", "print(test[637, combined_check_vars[0]]*test[637, combined_check_vars[1]])" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Train models" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "h2o.show_progress() # turn on progress bars" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice
12.2477
12.109
12.3172
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhQAAAFyCAYAAACtP0M/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3X+cXXV95/HXhyI/4opao0SrcXHZYrrWHxmLpC2oqw0Y\nt1dcVmJKFp1si2iCbtom2qpNgrvWxC0iSey6NoIsOkFhHShVE+WH2/iLbib+apO0KjjKj8gICjoG\nkHz2j3MG7tyZzOTMnfv9nns/7+fjMQ/Iuefe+3nnM2fmk3PPD3N3RERERNpxVO4CREREpPtpoBAR\nEZG2aaAQERGRtmmgEBERkbZpoBAREZG2aaAQERGRtmmgEBERkbZpoBAREZG2aaAQERGRtmmgEEnE\nzN5oZofMbH6H3+dUM3vQzJ7Vwfd4dpnl/E69xzTv/9Ly/c/o0OufaWYPmNlTOvH6Ir1IA4VIOl5+\nddp/Az7u7j8YW2CF883sq2b2YzO738z2m9nHzOwlCWp6VNMwMPb1kJl9t6zlpAov1bG/S3ffAXwH\n+LNOvYdIrzk6dwEiMnvM7IXAK4HTWh7aDLwFGASuAn4JnAK8Cvgu8LWEZY65FPh/wOOAhcCbgCVm\n9pvufvdUT3T3L5rZ8e7+UAfr+zDwfjNb5+4/7+D7iPQEDRQivaUf+L673zq2wMyeBrwZ+LC7v7ll\n/dVmNjdlgU12ufv/Kf//Y2b2L8AHgTcAGyd7gpkdCzzkhU4OEwDXUgxirwOu6PB7iXQ9feQhkpGZ\nvcXMvm1mB83sDjPbYmZPnGS9leXHAqPlxxa/a2a3mNlNLau+BmhddhJgwJcnq8HdR5re58lm9j/M\n7JvlMQQ/NbPPmNnzjzDPKWZ2Tfmxyi/M7B/M7PeP5Lll3VbW2/zRyFIz+29m9kPg58ATDncMhZm9\npKz3XjP7mZl9w8zeOpMa3f0e4JsUf6ciMg0NFCKZmNl6YAvwQ+CPgWsodvvvMLNfaVrvzRT/Uh4G\n1gB/T/HRxa+1vN4zgPnAUMtbfb/87+vM7PhpynoO0AD+FlgNbAKeB9xiZvOmyfPvgK9SfJTyl2Wm\nnwGDZnYkv5RPLv/745bl76b4aOb9wJ8DY3smxh1DYWa/B3wReC7Fxyl/TDGkvLqNGncDv30EtYuE\np488RDIoP2Z4B/A5d1/StHw/xfCwnOJjgMcBF1Mc4/AKdz9UrvdN4GPAD5pe9rnlf29rfi93v9vM\nrgT+M/BDM7sF+BLwd+6+v6W0b7r7r7fU+r+B/cB/Af77FLE+CNwO/Ja7/7Jc9tdmtoviI4zrWtZ/\nQnkWxdgxFB8EDlF81NDsWGBh80ccZjZuBTM7iuKYhzuAF7r7A7NU4/eAuWY2t3lPjohMpD0UInm8\nkuIX6aUtyz8CPMBj/6r+LeApwEfGhonSJ4D7Wp77FIp/tbcux93fCKyi+AV5NsW/9vea2RfKPRtj\n6z089v9mdpSZ/SowSjFQLDxcGDN7MvBy4FPAE83sKWNfwE7g35rZ01ue9lHgHuBOij0ixwPnu3vr\nHpYrjuB4iRcB/xq49HDDxAxrHPu7zHWciUjX0B4KkTyeXf73n5sXuvvDZva9psfnUwwJ321Z7xEz\nu/0wr22TLXT3v6b41/iTgd8BLgSWAAPAS6E4vRT4rxQHcZ4EjH304sBU/0I/uXzf91Cctjrh7YGn\nAXc1LdsA7AIeKV97b8vQNOb2Kd53zL8p3+MfZ7lGa3pMRKaggUKkd/yY4hfgk6dayd3vA24AbjCz\nm4EzzOxZ5XUr3knxEcvfAO8C7qX4GOKDTL1Hc+yx/wHsOMw632n587fdvfUA0sn84gjWORIzqXHs\n71Ifd4hMQwOFSB7fp/jlfwpN/wIvj5k4Cfh8y3onUxxwOLber1Ds4v9G02vuK/9b5eJQ/w84A3g6\nxfEY5wA3ufsFzSuZ2ZMoPp44nO+V/334CIeE2fZdir+n5zHxLJcxM6nxJGDE3VsPFBWRFjqGQiSP\nL1CcrfDWluV/CJxAsQcBil/4Pwb+qDzwcMxyWvZEuPudFEPBi5uXm9mJZragtYByeHklxR6IsX+Z\nP0LLRyZm9jpazihpVZ5ieQvwpsnOBklwrYshioNR/+tkp93CjGvsA74yi3WK9CztoRDJwN1HzOwv\ngb8ws88B11OcpfFm4Fbg4+V6D5enl14G3Gxmn6TYM9FPMQS0frZ/HcVBl82eCdxaXrPiRuBuimMF\nlgHPBz7g7veW694AvNvMPkpx3YrfBM6j5RiOw1hJcUrrt8zsIxR7BE4EFlEMJC86gteo4tHBx929\nPL32euDrZnY5xbEQzwV+w91fVbVGM3sqxd/P5lmuW6QnaaAQycTdN5jZjyjOvriE4niF/wm8090f\naVpva3ma5J9QnJ3xLYprRXwQONjysh8FVprZb7v72IWs9gNvozgA880Uv0APAt8G/tDdL296/nuB\nOcAfAOdSXIdhCfA+Jg4v4/7s7nvN7MXAOoqrXT4F+BGwh+IAzMM+dwpTrdf6/jvN7OXl+/8xxR7Y\n7wL/a4Y1nkPx9/SpI6xVJDRz18HLIt2mPBvjHuBad39Ty2NfAO509yx3Au0VZjZEcTzJn+auRaQb\nVDqGwswuLC9l+9Py68tmdlbT45fb+LsIHjKzz7S8xrFmttXMRspL+15jxb0GRGQSVty/otUbgF8F\nbp7ksT8HzrUO3r6815nZmRQHwr4vdy0i3aLSHgozezXFQVv/QvH55RspLgX8wnJX4uUUn82+kcc+\n33zQ3X/a9Bp/TXEZ3TcA9wNbgUfc/fR2w4j0IjN7KfABil3vP6Y4UHAFxTUXXtx0xUcRkWza/sjD\nzH4M/Km7X14OFE909/94mHVPoNhN+3p3/3S57BRgL3Ba8x0SRaRgZs+mOF7iVIq9EvcCfwf8mS4H\nLSJ1MeODMstT2M6lOICr+S6GLzOzAxSXrL0JeFfTEeR95XveOLayu+83s2GKo6w1UIi0cPfvM/HM\nDRGRWqk8UJjZ8yjOyz6O4p4Dr226wdBnKW7scxvFpXD/EviMmS3yYlfIPOAhd7+/5WUPlI8d7j2f\nApxJcQGg1qPaRURE5PCOozjdfEcnL9I2kz0U+4AXAE8E/hNwpZmd4e773P2TTev9o5l9i+K0rZcx\n+cFjR+pMyvPyRUREZEbOo7ixYEdUHijKA8DGLmG7x8xOpTjH/c2TrHubmY1QHC19M8UFdY4xsxNa\n9lKcWD52OLcDXHXVVSxYMOGCfz1l9erVfOADH8hdRsdFyQlxsipnb1HO3rF3716WL18OR3ajvRmb\njQtbHQVMdlobZvZMigvHjN29bzfwS+AVQPNBmfOZ+vK2BwEWLFjAwoWHvYNyT3jiE5/Y8xkhTk6I\nk1U5e4ty9qSOHjJQaaAws/dSHCcxDDyBYvfJS4HFZvZ4iqvPXUuxt+FkYCPF7Zl3ALj7/Wa2DbjE\nzO6jOAbjMuBLOsOjcPfdU+2o6R1RckKcrMrZW5RTqqq6h+JpwMco7kz4U+CbwGJ3v8nMjqO47v35\nwJOAOykGib9w94ebXmM1xbUsrqHYs/E5iuvrC3DHHXfkLiGJKDkhTlbl7C3KKVVVGijc/Q+neOwg\ncNbhHm9a70HgovJLWvT19eUuIYkoOSFOVuXsLcopVen25TWzbNmy3CUkESUnxMmqnL1FOaWqrrg5\nmJktBHbv3r070sEzIiIibRsaGhrbE9Pn7kOdeh/toRAREZG2aaComf7+/twlJBElJ8TJqpy9RTml\nKg0UNbN48eLcJSQRJSfEyaqcvUU5pSodQyEiItLDdAyFiIiIdA0NFCIiItI2DRQ1s2vXrtwlJBEl\nJ8TJqpy9RTmlKg0UNbNp06bcJSQRJSfEyaqcvUU5pSodlFkzo6OjzJkzJ3cZHRclJ8TJqpy9RTl7\nhw7KDKrXv7HHRMkJcbIqZ29RTqlKA4WIiIi0TQOFiIiItE0DRc2sWbMmdwlJRMkJcbIqZ29RTqlK\nA0XNzJ8/P3cJSUTJCXGyKmdvUU6pSmd5iIiI9DCd5SEiIiJdQwOFiIiItE0DRc3s27cvdwlJRMkJ\ncbIqZ29RTqnq6NwFyHhr167l+uuvz11Gx0XJCZ3LOjw8zMjIyKy/7kzMnTs3TE+Vs7dEyZmCBoqa\n2bJlS+4SkoiSEzqTdXh4mFNOWcDBg6Oz/tozcdxxc7jppi/kLiOJKN+7yilVaaComSinMEXJCZ3J\nOjIyUg4TVwELZv31q9nLwYPLOfbYYzPXkUaU713llKo0UIh0tQWATqUWkfx0UKaIiIi0TQNFzWzc\nuDF3CUlEyQlxsl5xxRW5S0giSj+VU6rSQFEzo6P1OMiu06LkhDhZDx48mLuEJKL0UzmlKl16W6QL\nPXYp3d3kP4ZiCOhD26dIPenS2yIiItI1NFCIiIhI2zRQ1ExdrnzYaVFyQpys9913X+4SkojST+WU\nqjRQ1MyKFStyl5BElJwQJ+vFF1+cu4QkovRTOaUqDRQ1s379+twlJBElJ8TJesEFF+QuIYko/VRO\nqarSQGFmF5rZN8zsp+XXl83srJZ1LjazO81s1Mw+b2Yntzx+rJltNbMRM3vAzK4xs6fNRpheEOUo\n+Sg5IU7WBQtyXwI8jSj9VE6pquoeih8Ab6c4T60PuAm4zswWAJjZ24FVwAXAqcDPgR1mdkzTa1wK\nvBo4BzgDeAZwbRsZREREJLNK9/Jw979rWfQuM3szcBqwF3gb8B53vwHAzM4HDgBnA580sxOAFcDr\n3f2L5Tr9wF4zO9Xdb20rjYiIiGQx42MozOwoM3s9MAf4spmdBMwDbhxbx93vB74GLCoXvZhiiGle\nZz8w3LROaNu2bctdQhJRckKcrIODg7lLSCJKP5VTqqo8UJjZ88zsAeBB4EPAa8uhYB7gFHskmh0o\nHwM4EXioHDQOt05oQ0Mdu4hZrUTJCXGy7tu3L3cJSUTpp3JKVTO5ffk+4AXAE4H/BFxpZmfMalWB\nbd26NXcJSUTJCXGyvuMd78hdQhJR+qmcUlXlPRTu/kt3/56773H3dwLfoDh24m7AKPZCNDuxfIzy\nv8eUx1Icbp3DWrJkCY1GY9zXokWLJuxq3blzJ41GY8LzV65cOWH31tDQEI1GY8LFTdatWzfhLnTD\nw8M0Go0J/xLbvHkza9asGbdsdHSURqPBrl27xi0fGBigv79/Qm1Lly5VDuU44hx79uxpqWIAmJgD\nlgKtH0XsBCbmgJVA6+7foXLd1ov/rAPG57jrrrvC9kM5lKMuOQYGBh793Thv3jwajQarV6+e8JxO\naPvmYGZ2I/B9d19hZncC73f3D5SPnUDxccb57v6p8s/3UByU+elynVMoDug87XAHZermYCLj6eZg\nInKkUt0crNJHHmb2XuCzFAdRPgE4D3gpsLhc5VKKMz++A9wOvAf4IXAdFAdpmtk24BIzuw94ALgM\n+JLO8BAREeleVT/yeBrwMYrjKL5AcS2Kxe5+E4C7bwI2Ax+mOLvjeOBV7v5Q02usBm4ArgFuAe6k\nuCaFwKS72npRlJwQJ2uq3aq5RemnckpVVa9D8YdHsM56YP0Ujz8IXFR+SYtVq1blLiGJKDkhTtZz\nzz03dwlJROmnckpVupdHzSxevHj6lXpAlJwQJ+uiRTEuJROln8opVWmgEBERkbZpoBAREZG2aaCo\nmSiXL46SE+Jkvfnmm3OXkESUfiqnVKWBomYGBgZyl5BElJwQJ+uOHTtyl5BElH4qp1TV9oWtUtCF\nrUTG04WtRORIpbqwlfZQiIiISNtmcnMwEZEJ9u7dm7uER82dO5f58+fnLkMkFA0UItKmu4CjWL58\nee5CHnXccXPYv3+vhgqRhPSRR81Mdie5XhQlJ0TI+hPgEHA6xTEdub+u4uDB0Ql3gJwtvd/PgnJK\nVdpDUTNRrtoWJSdEynoW+Q8Q7bwo/VROqUp7KGpm2bJluUtIIkpOiJT1rNwFJBGln8opVWmgEBER\nkbZpoBAREZG2aaComV27duUuIYkoOSFS1j25C0giSj+VU6rSQFEzmzZtyl1CElFyQqSsV+YuIIko\n/VROqUoDRc1s3749dwlJRMkJkbK+N3cBSUTpp3JKVRooambOnDm5S0giSk6IlPX43AUkEaWfyilV\naaAQERGRtmmgEBERkbZpoKiZNWvW5C4hiSg5IVLWS3MXkESUfiqnVKWBomai3MwoSk6IlHVe7gKS\niNJP5ZSqzN1z1zAtM1sI7N69ezcLF/b+vQJEpjM0NERfXx/FzbBybxMfB5bXpBaAIaAP/bwQKTz2\n84I+dx/q1PtoD4WIiIi0TQOFiIiItE0DRc3s27cvdwlJRMkJkbLelruAJKL0UzmlKg0UNbN27drc\nJSQRJSdEynpZ7gKSiNJP5ZSqNFDUzJYtW3KXkESUnBApa4wfzFH6qZxSlQaKmolyClOUnBAp69Nz\nF5BElH4qp1SlgUJERETapoFCRERE2qaBomY2btyYu4QkouSESFmvyF1AElH6qZxSlQaKmhkdHc1d\nQhJRckKkrAdzF5BElH4qp1SlS2+LdCFdensquvS2SLNaXnrbzP7MzG41s/vN7ICZfdrMfr1lncvN\n7FDL12da1jnWzLaa2YiZPWBm15jZ02YjkIiIiKRX9SOP04HNwEuAVwKPA3aa2fEt630WOJHi9oPz\ngGUtj18KvBo4BzgDeAZwbcVaREREpCYqDRTuvsTd/7e773X3bwFvBOYDfS2rPuju97j7j8qvn449\nYGYnACuA1e7+RXffA/QDv2Nmp7aVpgeMjIzkLiGJKDkhUtb7cheQRJR+KqdU1e5BmU8CHLi3ZfnL\nyo9E9pnZh8zsV5se6wOOBm4cW+Du+4FhYFGb9XS9FStW5C4hiSg5IVLWi3MXkESUfiqnVHX0TJ9o\nZkbx0cUud/+npoc+S/HxxW3AvwH+EviMmS3y4gjQecBD7n5/y0seKB8Lbf369blLSCJKToiU9YLc\nBSQRpZ/KKVW1s4fiQ8BvAK9vXujun3T3G9z9H939euA/AKcCL2vjvQBYsmQJjUZj3NeiRYsYHBwc\nt97OnTtpNBoTnr9y5Uq2bds2btnQ0BCNRmPCbq9169ZNOD95eHiYRqMx4e50mzdvZs2aNeOWjY6O\n0mg02LVr17jlAwMD9Pf3T6ht6dKlDA4OjjsqvZtzNJssx8KFC3siB0zfj+aezlaOPXv2tFQxQPHJ\n4YQkwGDLsp3AxBywEtjWsmyoXLd1t/A6oPX8/SeV67bevXEzsKZl2Wi57q6W5bOR430Tlszm91Vz\nP3N+X7Wbo9lkORYuXNgTOWDqfgwPD/dEjrF+DAwMPPq7cd68eTQaDVavXj3hOZ0wo9NGzWwL8PvA\n6e4+fATr/wh4p7t/xMxeDnwBeHLzXgozux34gLt/cJLn67RRkSY6bXQqOm1UpFktTxuFR4eJ1wAv\nP8Jh4pnAU4C7ykW7gV8Cr2ha5xSKgzu/UrUeERERya/qdSg+BJwH/AHwczM7sfw6rnz88Wa2ycxe\nYmbPNrNXUOyn/GdgB0C5V2IbcImZvczM+oCPAl9y91tnL1p3at2l1qui5IRIWVs/kuhNUfqpnFJV\n1T0UFwInALcAdzZ9nVs+/gjwfOA6YD/wEeAfgDPc/eGm11kN3ABc0/Ra58wkQK8ZGurY3qhaiZIT\nImVtPXaiN0Xpp3JKVbr0tkgX0jEUU9ExFCLNansMhYiIiEgrDRQiIiLSNg0UIiIi0jYNFDUz2QVV\nelGUnBApa5qL5+QWpZ/KKVVpoKiZVatW5S4hiSg5IVLWc6dfpQdE6adySlUaKGpm8eLFuUtIIkpO\niJQ1xr39ovRTOaUqDRQiIiLSNg0UIiIi0jYNFDXTege/XhUlJ0TKenPuApKI0k/llKo0UNTMwMBA\n7hKSiJITImXdkbuAJKL0UzmlKg0UNXP11VfnLiGJKDkhUtb35S4giSj9VE6pSgOFiIiItE0DhYiI\niLRNA4WIiIi0TQNFzfT39+cuIYkoOSFS1vW5C0giSj+VU6rSQFEzUa7aFiUnRMp6Wu4CkojST+WU\nqjRQ1MyyZctyl5BElJwQKetZuQtIIko/lVOq0kAhIiIibdNAISIiIm3TQFEzu3btyl1CElFyQqSs\ne3IXkESUfiqnVKWBomY2bdqUu4QkouSESFmvzF1AElH6qZxSlQaKmtm+fXvuEpKIkhMiZX1v7gKS\niNJP5ZSqNFDUzJw5c3KXkESUnBAp6/G5C0giSj+VU6rSQCEiIiJt00AhIiIibdNAUTNr1qzJXUIS\nUXJCpKyX5i4giSj9VE6pSgNFzcyfPz93CUlEyQmRss7LXUASUfqpnFKVuXvuGqZlZguB3bt372bh\nwoW5yxHJbmhoiL6+PmA3kHub+DiwvCa1AAwBfejnhUjhsZ8X9Ln7UKfeR3soREREpG0aKERERKRt\nGihqZt++fblLSCJKToiU9bbcBSQRpZ/KKVVpoKiZtWvX5i4hiSg5IVLWy3IXkESUfiqnVKWBoma2\nbNmSu4QkouSESFlj/GCO0k/llKoqDRRm9mdmdquZ3W9mB8zs02b265Osd7GZ3Wlmo2b2eTM7ueXx\nY81sq5mNmNkDZnaNmT2t3TC9IMopTFFyQqSsT89dQBJR+qmcUlXVPRSnA5uBlwCvBB4H7DSzRy/i\nb2ZvB1YBFwCnAj8HdpjZMU2vcynwauAc4AzgGcC1M8wgIiIimR1dZWV3X9L8ZzN7I/AjoA8Yu6n8\n24D3uPsN5TrnAweAs4FPmtkJwArg9e7+xXKdfmCvmZ3q7rfOPI6IiIjk0O4xFE8CHLgXwMxOorhc\n3o1jK7j7/cDXgEXlohdTDDLN6+wHhpvWCWvjxo25S0giSk6IlPWK3AUkEaWfyilVzXigMDOj+Ohi\nl7v/U7l4HsWAcaBl9QM8dl3eE4GHykHjcOuENTo6mruEJKLkhEhZD+YuIIko/VROqaqdPRQfAn4D\neP0s1TKtJUuW0Gg0xn0tWrSIwcHBcevt3LmTRqMx4fkrV65k27Zt45YNDQ3RaDQYGRkZt3zdunUT\nJtfh4WEajcaE85Y3b9484QYzo6OjNBoNdu3aNW75wMAA/f39E2pbunQpg4ODbNiwoSdyNJssx4YN\nG3oiB0zfj+aezlaOPXv2tFQxAEzMAUuBwZZlO4GJOWAlsK1l2VC57kjL8nVA67/sXlOu23pe/2ag\n9QZMo+W6u1qWz0aO901YMpvfV839zPl91W6OZpPl2LBhQ0/kgKn78aIXvagncoz1Y2Bg4NHfjfPm\nzaPRaLB69eoJz+mEGd3Lw8y2AL8PnO7uw03LTwK+C7zQ3b/ZtPwWYI+7rzazlwNfAJ7cvJfCzG4H\nPuDuH5zk/XQvD5EmupfHVHQvD5Fmtb2XRzlMvAZ4efMwAeDutwF3A69oWv8EirNCvlwu2g38smWd\nU4D5wFeq1iMiIiL5Vb0OxYeA84A/AH5uZieWX8c1rXYp8C4z+30z+03gSuCHwHXw6EGa24BLzOxl\nZtYHfBT4ks7wYMKus14VJSdEynpf7gKSiNJP5ZSqqu6huBA4AbgFuLPp69yxFdx9E8WHph+mOLvj\neOBV7v5Q0+usBm4Arml6rXNmEqDXrFixIncJSUTJCZGyXpy7gCSi9FM5paqq16E4ogHE3dcD66d4\n/EHgovJLmqxfvz53CUlEyQmRsl6Qu4AkovRTOaUq3cujZqIcRBYlJ0TKuiB3AUlE6adySlUaKERE\nRKRtGihERESkbRooaqb1wim9KkpOiJS19cJTvSlKP5VTqtJAUTNDQx275kitRMkJkbK2XiGzN0Xp\np3JKVTO6UmZqulKmyHi6UuZUdKVMkWa1vVKmiIiISCsNFCIiItI2DRQiIiLSNg0UNTPZbXN7UZSc\nEClrmlsk5xaln8opVWmgqJlVq1blLiGJKDkhUtZzp1+lB0Tpp3JKVRooambx4sW5S0giSk6IlHVR\n7gKSiNJP5ZSqNFCIiIhI2zRQiIiISNs0UNTM4GCMyxdHyQmRst6cu4AkovRTOaUqDRQ1MzAwkLuE\nJKLkhEhZd+QuIIko/VROqUoDRc1cffXVuUtIIkpOiJT1fbkLSCJKP5VTqtJAISIiIm3TQCEiIiJt\n00AhIiIibdNAUTP9/f25S0giSk6IlHV97gKSiNJP5ZSqNFDUTJSrtkXJCZGynpa7gCSi9FM5pSoN\nFDWzbNmy3CUkESUnRMp6Vu4CkojST+WUqjRQiIiISNs0UIiIiEjbNFDUzK5du3KXkESUnBAp657c\nBSQRpZ/KKVVpoKiZTZs25S4hiSg5IVLWK3MXkESUfiqnVKWBoma2b9+eu4QkouSESFnfm7uAJKL0\nUzmlKg0UNTNnzpzcJSQRJSdEynp87gKSiNJP5ZSqNFCIiIhI2zRQiIiISNs0UNTMmjVrcpeQRJSc\nECnrpbkLSCJKP5VTqtJAUTPz58/PXUISUXJCpKzzcheQRJR+KqdUZe5e7QlmpwNrgD7g6cDZ7n59\n0+OXA29oedrn3H1J0zrHApcAS4FjgR3AW9z9R4d5z4XA7t27d7Nw4cJK9Yr0oqGhIfr6+oDdQO5t\n4uPA8prUAjAE9HHVVVexYMGC3MUAMHfuXP3ikmwe+3lBn7sPdep9jp7Bcx4PfB3YBvyfw6zzWeCN\ngJV/frDl8UuBVwHnAPcDW4FrgdNnUI+ISJO7gKNYvnx57kIeddxxc9i/f6+GCulplQcKd/8c8DkA\nM7PDrPagu98z2QNmdgKwAni9u3+xXNYP7DWzU9391qo1iYg85ifAIeAqoA57KPZy8OByRkZGNFBI\nT5vJHooj8TIzOwDcB9wEvMvd7y0f6yvf98axld19v5kNA4uA0APFvn37eO5zn5u7jI6LkhMiZb2N\nenzkMWYBnalnH9D7/YzyfRslZwqdOCjzs8D5wL8H1gIvBT7TtDdjHvCQu9/f8rwDRDmqawpr167N\nXUISUXJCpKyX5S4gkRj9jPJ9GyVnCrO+h8LdP9n0x380s28B3wVeBtw82+/Xa7Zs2ZK7hCSi5IRI\nWaP8YI7Rzyjft1FyptDx00bd/TZgBDi5XHQ3cEx5LEWzE8vHDmvJkiU0Go1xX4sWLWJwcHDcejt3\n7qTRaEygL60CAAAZAUlEQVR4/sqVK9m2bdu4ZUNDQzQaDUZGRsYtX7duHRs3bhy3bHh4mEajwb59\n+8Yt37x584RzmUdHR2k0GhPuZDcwMEB/f/+E2pYuXcrg4OC4z1i7OUezyXLMnz+/J3LA9P1o7uls\n5dizp/XOngPAxBzFiVSDLct2AhNzwEqKY63HJSnXHWlZvg7YyEQNio8Emm2mODGs2Wi5buudHmcj\nxxWTLKuSY5ipczQfB1Etx2x+X41L0YHtY/78+Um2j07ngKm386Gh8Sc9dGuOsX4MDAw8+rtx3rx5\nNBoNVq9ePeE5nVD5tNFxTzY7RMtpo5Os80zg+8Br3P2GcpC4h+KgzE+X65wC7AVOm+ygTJ02KjKe\nThudSt3qKU5j1c8vyaW2p42a2eMp9jaMHRPxHDN7AXBv+bWO4hTQu8v1NgL/THGtCdz9fjPbBlxi\nZvcBD1B8+PolneEhIiLSnWbykceLgT0U478Df0Uxgm8AHgGeD1wH7Ac+AvwDcIa7P9z0GquBG4Br\ngFuAOymuSRFe626yXhUlJ0TKekXuAhKJ0c8o37dRcqYwk+tQfJGpB5GzjuA1HgQuKr+kyejoaO4S\nkoiSEyJlPZi7gERi9DPK922UnCnoXh41s2HDhtwlJBElJ0TKemHuAhKJ0c8o37dRcqaggUJERETa\npoFCRERE2qaBomZaz2fuVVFyQqSs9+UuIJEY/YzyfRslZwoaKGpmxYoVuUtIIkpOiJT14twFJBKj\nn1G+b6PkTEEDRc2sX78+dwlJRMkJkbJekLuARNbnLiCJKN+3UXKmoIGiZqJcSS9KToiUtQ63Ck8h\nRj+jfN9GyZmCBgoRERFpmwYKERERaZsGipppvZtdr4qSEyJlbb0baK+K0c8o37dRcqaggaJmWm+l\n26ui5IRIWVtv992rYvQzyvdtlJwpaKComa1bt+YuIYkoOSFS1nfkLiCRGP2M8n0bJWcKGihERESk\nbRooREREpG0aKERERKRtGihqptFo5C4hiSg5IVLW1bkLSCRGP6N830bJmYIGippZtWpV7hKSiJIT\nImU9N3cBicToZ5Tv2yg5U9BAUTOLFy/OXUISUXJCpKyLcheQSIx+Rvm+jZIzhaNzFyDSLYaHh2tz\nq+O9e/fmLkFEZBwNFCJHYHh4mFNOWcDBg6O5SxERqSUNFDUzODjI2WefnbuMjuu2nCMjI+UwcRXV\n76p5M/DyWa7oM8C7Z/k123UzMe7EOQh0z/fuTHXbNjpTUXKmoIGiZgYGBkJ8c3dvzgVU/6W5EfiT\nWa6jjh957GD2c9bRABEGiu7dRquJkjMFHZRZM1dffXXuEpKIkrMQJev7cheQSIx+RtlGo+RMQQOF\niIiItE0DhYiIiLRNA4WIiIi0TQNFzfT39+cuIYkoOQtRsq7PXUAiMfoZZRuNkjMFDRQ1E+WqbVFy\nFqJkPS13AYnE6GeUbTRKzhQ0UNTMsmXLcpeQRJSchShZz8pdQCIx+hllG42SMwUNFCIiItI2DRQi\nIiLSNg0UNbNr167cJSQRJWchStY9uQtIJEY/o2yjUXKmoIGiZjZt2pS7hCSi5CxEyXpl7gISidHP\nKNtolJwpVB4ozOx0M7vezO4ws0Nm1phknYvN7E4zGzWzz5vZyS2PH2tmW81sxMweMLNrzOxp7QTp\nFdu3b89dQhJRchaiZH1v7gISidHPKNtolJwpzGQPxeOBrwNvAbz1QTN7O7AKuAA4Ffg5sMPMjmla\n7VLg1cA5wBnAM4BrZ1BLz5kzZ07uEpKIkrMQJevxuQtIJEY/o2yjUXKmUPluo+7+OeBzAGZmk6zy\nNuA97n5Duc75wAGK2/N90sxOAFYAr3f3L5br9AN7zexUd791RklEREQkm1k9hsLMTgLmATeOLXP3\n+4GvAYvKRS+mGGSa19kPDDetIyIiIl1ktg/KnEfxMciBluUHyscATgQeKgeNw60T1po1a3KXkESU\nnIUoWS/NXUAiMfoZZRuNkjMFneVRM/Pnz89dQhJRchaiZI3y74EY/YyyjUbJmcJsDxR3A0axF6LZ\nieVjY+scUx5Lcbh1JrVkyRIajca4r0WLFjE4ODhuvZ07d9JoTDj5hJUrV7Jt27Zxy4aGhmg0GoyM\njIxbvm7dOjZu3Dhu2fDwMI1Gg3379o1bvnnz5glT7ujoKI1GY8I5zgMDA5PejGbp0qUMDg5y0UUX\n9USOZpPluOiii7ouR2H1JMtWAttalg0BDWAEuKhp+TpgY8u6w+W6+1qWb2biv4ZHy3X3tywfYPKb\nVi0FWnPsLF+j1XQ5mk2W46VUz9F6DYDZyHHFJMuq5JiuH839rJbjSLcPyL+dX3TRRW1v53XIAVNv\n58961rN6IsdYPwYGBh793Thv3jwajQarV0/2c6sD3H3GX8AhoNGy7E5gddOfTwB+Abyu6c8PAq9t\nWueU8rVOPcz7LAR89+7dLpLD7t27HXDY7eA1+LqqRvXUqZY61lN87+jnl+Ty2M8vFrrP/Hf+dF+V\nz/Iws8cDJ1PsiQB4jpm9ALjX3X9A8UHqu8zsO8DtwHuAHwLXlQPM/Wa2DbjEzO4DHgAuA77kOsND\nRESkK83kI48XU1xjdzfFxPNXFPsTNwC4+yaKfYMfpji743jgVe7+UNNrrAZuAK4BbqHYq3HOjBL0\nmNbdYb0qSs5ClKy35S4gkRj9jLKNRsmZQuWBwt2/6O5HufuvtHytaFpnvbs/w93nuPuZ7v6dltd4\n0N0vcve57v4Ed3+du/9oNgJ1u7Vr1+YuIYkoOQtRsl6Wu4BEYvQzyjYaJWcKOsujZrZs2ZK7hCSi\n5CxEyRrlB3OMfkbZRqPkTEEDRc1EOYUpSs5ClKxPz11AIjH6GWUbjZIzBQ0UIiIi0jYNFCIiItI2\nDRQ103oxlF4VJWchStYrcheQSIx+RtlGo+RMQQNFzYyOjuYuIYkoOQtRsh7MXUAiMfoZZRuNkjMF\nDRQ1s2HDhtwlJBElZyFK1gtzF5BIjH5G2Uaj5ExBA4WIiIi0TQOFiIiItE0DRc203rWuV0XJWYiS\n9b7cBSQSo59RttEoOVPQQFEzK1asmH6lHhAlZyFK1otzF5BIjH5G2Uaj5ExBA0XNrF+/PncJSUTJ\nWVifu4BELshdQCLrcxeQRJRtNErOFDRQ1MzChQtzl5BElJyFKFkX5C4gkRj9jLKNRsmZggYKERER\naZsGChEREWmbBoqa2bZtW+4SkoiSsxAl62DuAhKJ0c8o22iUnClooKiZoaGh3CUkESVnIUrWfbkL\nSCRGP6Nso1FypqCBoma2bt2au4QkouQsRMn6jtwFJBKjn1G20Sg5U9BAISIiIm3TQCEiIiJt00Ah\nIiIibdNAUTONRiN3CUlEyVmIknV17gISidHPKNtolJwpaKComVWrVuUuIYkoOQtRsp6bu4BEYvQz\nyjYaJWcKGihqZvHixblLSCJKzkKUrItyF5BIjH5G2Uaj5ExBA4WIiIi0TQOFiIiItE0DRc0MDsa4\nfHGUnIUoWW/OXUAiMfoZZRuNkjMFDRQ1MzAwkLuEJKLkLETJuiN3AYnE6GeUbTRKzhQ0UNTM1Vdf\nnbuEJKLkLETJ+r7cBSQSo59RttEoOVPQQCEiIiJtOzp3ASIiEezduzd3CY+aO3cu8+fPz12G9BgN\nFCIiHXUXcBTLly/PXcijjjtuDvv379VQIbNKA0XN9Pf3c/nll+cuo+Oi5Cz0AxGyrgeuz11EAlX7\n+RPgEHAVsKAjFVWzl4MHlzMyMjLlQBFlG42SMwUNFDUT5aptUXIWomQ9LXcBicy0nwuAhbNZSEdF\n2Uaj5Exh1g/KNLN1Znao5eufWta52MzuNLNRM/u8mZ0823V0q2XLluUuIYkoOQtRsp6Vu4BEYvQz\nyjYaJWcKnTrL49vAicC88ut3xx4ws7dT3F3nAuBU4OfADjM7pkO1iIiISId16iOPX7r7PYd57G3A\ne9z9BgAzOx84AJwNfLJD9YiIiEgHdWoPxb81szvM7LtmdpWZPQvAzE6i2GNx49iK7n4/8DXi3Kpw\nSrt27cpdQhJRchaiZN2Tu4BEYvQzyjYaJWcKnRgovgq8ETgTuBA4Cfi/ZvZ4imHCKfZINDtQPhbe\npk2bcpeQRJSchShZr8xdQCIx+hllG42SM4VZHyjcfYe7X+vu33b3zwNLgCcD57b72kuWLKHRaIz7\nWrRo0YSbu+zcuZNGozHh+StXrmTbtm3jlg0NDdFoNBgZGRm3fN26dWzcuHHcsuHhYRqNBvv27Ru3\nfPPmzaxZs2bcstHRURqNxoTpd2BggP7+/gm1LV26lMHBQbZv394TOZpNlmP79u1dl6OwepJlK4Ft\nLcuGgAYwAmxvWr4O2Niy7nC57r6W5ZuBNS3LRst197csH6A4nbHVUibezGpn+RqtpsvRbLIcb6V6\njtZ/Hc5GjismWVYlx3T9aO5nJ3O024/D5dhOq8m2j+3bt7e9nUP9f16dd955PZFjrB8DAwOP/m6c\nN28ejUaD1asn+7k1+8zdO/8mZrcCnwf+Bvgu8EJ3/2bT47cAe9x90tRmthDYvXv3bhYu7J7TrqR3\nDA0N0dfXB+ymHqf+fRxYTj3qqVMtoHqmMwT0oZ+ncTz284s+dx/q1Pt0/F4eZvavgJOBO939NuBu\n4BVNj58AvAT4cqdrERERkc6Y9bM8zOz9wN8C3wd+DdgAPMxj+9kuBd5lZt8BbgfeA/wQuG62axER\nEZE0OrGH4pnAJyg+uNsO3AOc5u4/BnD3TRQfRn6Y4uyO44FXuftDHail67R+ltarouQsRMl6ae4C\nEonRzyjbaJScKcz6Hgp3n/ayY+6+nuLC/9Iiys16ouQsRMka5UStGP2Mso1GyZlCx4+hkGouuuii\n3CUkESVnIUrW1+cuIJEY/YyyjUbJmYIGChEREWmbBgoRERFpmwaKmmm96EmvipKzECXrbbkLSCRG\nP6Nso1FypqCBombWrl2bu4QkouQsRMl6We4CEonRzyjbaJScKWigqJktW7bkLiGJKDkLUbJG+cEc\no59RttEoOVPQQFEzUU5hipKzECXr03MXkEiMfkbZRqPkTEEDhYiIiLRt1i9sJTJbhoeHJ9zFL5e9\ne/fmLkFEpNY0UNTMxo0befvb3567jI6bLufw8DCnnLKAgwdHE1bVKRuB3u9pcdvwCHevjNFP/SyS\nqjRQ1MzoaC/8Ap3edDlHRkbKYeIqYEGSmqb2GeDdM3xujJ7CwdwFJBKjn/pZJFVpoKiZDRs25C4h\niSPPuYB6/Ku3nY88YvQULsxdQCIx+qmfRVKVDsoUERGRtmmgEBERkbZpoKiZupzV0GlRchaiZL0v\ndwGJxOhnlG00Ss4UNFDUzIoVK3KXkESUnIUoWS/OXUAiMfoZZRuNkjMFDRQ1s379+twlJBElZ2F9\n7gISuSB3AYmsz11AElG20Sg5U9BAUTMLF9bhjIbOi5KzECVrHU7vTSFGP6Nso1FypqCBQkRERNqm\ngUJERETapoGiZrZt25a7hCSi5CxEyTqYu4BEYvQzyjYaJWcKGihqZmhoKHcJSUTJWYiSdV/uAhKJ\n0c8o22iUnClooKiZrVu35i4hiSg5C1GyviN3AYnE6GeUbTRKzhQ0UIiIiEjbNFCIiIhI2zRQiIiI\nSNs0UNRMo9HIXUISUXIWomRdnbuARGL0M8o2GiVnCkfnLkDGW7VqVe4SkoiSsxAl67m5C0ikN/q5\nd+/eKR8/88wzk5wBMXfuXObPn9/x9zmcWD+LOksDRc0sXrw4dwlJRMlZiJJ1Ue4CEun2ft4FHMXy\n5ctzFwLAccfNYf/+vdmGilg/izpLA4WISCg/AQ4BV5H//it7OXhwOSMjI1n3Usjs0EAhIhLSAqLc\n6EzS0EGZNTM4GOPyxVFyFqJkvTl3AYlE6WeMnLF+FnWW9lDUzMaNGzn77LNzl9FxUXIWNgIRsl4B\n/EnuIhKI0s90Oac7QLST3v3ud4/7uCX3QaLdLOtAYWYrgT8F5gHfAC5y93/IWVNuT33qU7O99/Dw\nMCMjI0ne65hjjpnyCPKcP2BmX76epvWruQtIJEo/U+SsxwGifX19j/5/7oNEu1m2gcLMlgJ/BVwA\n3EpxEvsOM/t1d0/zWy0jd+etb13N3//9l8Ytv+22f+GFL/yt5PU89NCD7N+/j0OHHk72ns0bsYhE\nVIcDRFcDHyj/XweJtiPnHorVwIfd/UoAM7sQeDWwAtiUsa4kDh06xJYtHwTOAJ7b9MiP+MY3chwo\n9W3gYdJt2M0b8WQ+A7w7QR0ikl/OA0SfmPG9e0uWgcLMHgf0Ae8dW+bubmZfIM7J7KU3Av1Nf24A\nH85Qx1bgy6TbsKfbiHvpIw8Rkd6Xaw/FXOBXgAMtyw8Ap0yy/nHQW5+rP/LII+X/3UKxZ2DMLuB/\nJa+neF8o9gyk+Hv+EvDxaR6HdPVMp516pss6E3X6+xmr5evMfs6Z6PTfTdV+1qlXcOT1dOL7dqa1\ndLqGsZy3Ab31uwbG5Tmuk+9j7t7J15/8Tc2eDtwBLHL3rzUt3wic4e6LWtb/A+rxk0pERKRbnefu\nn+jUi+faQzECPAKc2LL8RODuSdbfAZwH3A4c7GhlIiIiveU44F9T/C7tmCx7KADM7KvA19z9beWf\nDRgGLnP392cpSkRERGYk51kelwBXmNluHjttdA7F1XFERESki2QbKNz9k2Y2F7iY4qOOrwNnuvs9\nuWoSERGRmcn2kYeIiIj0Dt0cTERERNqmgUJERETalnygMLPTzex6M7vDzA6ZWWOSdS42szvNbNTM\nPm9mJx/B677OzPaa2S/M7Btm9qrOJDgynchpZm8oX+uR8r+HzGy0cymmN11OM3utme0ws5Hy8ecf\n4evWqp9lTbOetdt6amZHm9lGM/ummf2sXOdj5bVlpnvdWvW0Ezm7rZ/l4+vKvvzMzO4tfxadegSv\n2zX9LB+vnLMb+9my7v8s13nrEbxu2/3MsYfi8RQHYL4FmHAAh5m9HVhFcdOwU4GfU9w07JjDvaCZ\n/TbwCeAjwAuB64BBM/uNWa/+yM16ztJPKe7OOvb17FmseSamzFk+/vfA2sM8PkFN+wkdyFrqpp7O\noejJBuBFwGsprm573VQvWNOeznrOUjf1E2A/sBJ4HvA7FNf72WlmTzncC3ZhP2EGOUvd1k+g+AcO\n8BKKi0hOadb66e7ZvihuM9doWXYnsLrpzycAvwDOneJ1tgPXtyz7CvChnPk6kPMNwL2581TJ2fTY\ns8vHn38Er1Prfs5y1q7tadM6L6a4UN0zu7Wns5izF/r5hHK9l/d4P48kZ1f2E/g1ius6LaC4nvhb\np3mdWelnrY6hMLOTKCbAG8eWufv9wNeY+qZhi4AvtCzbMc1zsmkjJ8C/MrPbzWzYzHL/i6BTuqqf\ns6Dbe/okin8p/WSKdXqhp0eSE7q4n1bcuPFNFBm/McWqXd3PCjmhy/ppZgZcCWxy9yO9Kcms9LNW\nAwXFL1ln8puGzZvmeVWfk9NMc+6nuL17g+JS5EcBXzazZ3SiyIy6rZ/t6OqemtmxwPuAT7j7z6ZY\ntat7WiFnV/bTzF5tZg9Q3NrgbcDvufu9UzylK/s5g5zd2M93AA+5+5YKz5mVfua8UqZU5O5fBb46\n9mcz+wrFLfreBKzLVZfMXDf31MyOBj5FMRy/JXM5HVMlZxf38ybgBRR3gv4j4FNmdqq7j+Qta9ZV\nytlt/TSzPuCtFMf9JFe3PRR3A8aR3zSs+XlVn5PTTHOO4+6/BPYA054F02W6rZ+zplt62vRL9lnA\n4mn+1Q5d2tMZ5BynW/rp7r9w9++5+63u/kfAL4H/MsVTurKfM8jZ+vy69/N3gacCPzCzh83sYYpj\nui4xs+9N8bxZ6WetBgp3v40iwCvGlpnZCRRHqn55iqd+pfk5pd8rl9dOGznHMbOjgN8E7prtGjvk\nSM986Kp+HsaMLkHbDT1t+iX7HOAV7n7fETyt63o6w5ytr1H7fh7GUcCxUzzedf08jOlyjtMF/bwS\neD7FXpixrzuBTcCZUzxvVvqZ/CMPM3s8xXRn5aLnmNkLKI6k/QFwKfAuM/sOxWk97wF+SNPpWmb2\nMeAOd//zctEHgVvM7I+BvwOWAX0Uu7Sy6EROM3s3xe6371AcILYWmA/8TYpMk5kup5k9uazx18p1\nnlseNHS3ux8oX6P2/YTOZO22nlL8IL2W4tSy/wA8zszG/mVzr7s/XL5G7XvaiZxd2M8fA+8ErqfI\nPJfidPZnUAxTY6/R7f2cUc5u62f5u+W+lvUfpvgZ9C9NyzrTzwynubyU4lSXR1q+Ptq0znqKqWqU\n4kjTk1te46bm9ctl5wD7KE69/CbFjcZyns4z6zkp7tB6W5nxTuBvOYJTE3PmpDjtarLH/6Kb+tmp\nrN3WUx47JbZ5+difz+imnnYiZxf281iKwekHZc0/BD4NLGx5jW7v54xydls/D7P+92g5bbRT/dTN\nwURERKRttTqGQkRERLqTBgoRERFpmwYKERERaZsGChEREWmbBgoRERFpmwYKERERaZsGChEREWmb\nBgoRERFpmwYKERERaZsGChEREWmbBgoRERFp2/8HfsCRZcyWXVUAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Check log transform - looks good\n", "train['SalePrice'].log().as_data_frame().hist()\n", "\n", "# Execute log transform\n", "train['SalePrice'] = train['SalePrice'].log()\n", "valid['SalePrice'] = valid['SalePrice'].log()\n", "print(train[0:3, 'SalePrice'])" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "#### Split training data" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(504, 42240)\n", "(230, 42240)\n", "(497, 42240)\n", "(229, 42240)\n" ] } ], "source": [ "half_train, other_half_train = train.split_frame([0.5], seed=12345)\n", "half_valid, other_half_valid = valid.split_frame([0.5], seed=12345)\n", "print(half_train.shape)\n", "print(half_valid.shape)\n", "print(other_half_train.shape)\n", "print(other_half_valid.shape)\n", "# no idea why this works better, but it does ... \n", "# could be a lucky split that happens to be more representative of test data\n", "# could be that it just prevents overfitting" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "#### Define model with grid search function" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "def glm_grid(X, y, train, valid):\n", " \n", " \"\"\" Wrapper function for penalized GLM with alpha and lambda search.\n", " \n", " :param X: List of inputs.\n", " :param y: Name of target variable.\n", " :param train: Name of training H2OFrame.\n", " :param valid: Name of validation H2OFrame.\n", " :return: Best H2Omodel from H2OGeneralizedLinearEstimator\n", "\n", " \"\"\"\n", " \n", " alpha_opts = [0.01, 0.25, 0.5, 0.99] # always keep some L2\n", " hyper_parameters = {'alpha': alpha_opts}\n", "\n", " # initialize grid search\n", " grid = H2OGridSearch(\n", " H2OGeneralizedLinearEstimator(\n", " family=\"gaussian\",\n", " lambda_search=True,\n", " seed=12345),\n", " hyper_params=hyper_parameters)\n", " \n", " # train grid\n", " grid.train(y=y,\n", " x=X, \n", " training_frame=train,\n", " validation_frame=valid)\n", "\n", " # show grid search results\n", " print(grid.show())\n", "\n", " best = grid.get_grid()[0]\n", " print(best)\n", " \n", " # plot top frame values\n", " yhat_frame = valid.cbind(best.predict(valid))\n", " print(yhat_frame[0:10, [y, 'predict']])\n", "\n", " # plot sorted predictions\n", " yhat_frame_df = yhat_frame[[y, 'predict']].as_data_frame()\n", " yhat_frame_df.sort_values(by='predict', inplace=True)\n", " yhat_frame_df.reset_index(inplace=True, drop=True)\n", " _ = yhat_frame_df.plot(title='Ranked Predictions Plot')\n", " \n", " # select best model\n", " return best\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Function to generate submission file" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import re\n", "import time\n", "\n", "def gen_submission(model, test=test):\n", "\n", " \"\"\" Generates submission file for Kaggle House Prices contest.\n", " \n", " :param model: Model with which to score test data.\n", " :param test: Test data.\n", " \n", " \"\"\"\n", " \n", " # create time stamp\n", " time_stamp = re.sub('[: ]', '_', time.asctime())\n", "\n", " # create predictions column\n", " sub = test['Id'].cbind(model.predict(test).exp())\n", " sub.columns = ['Id', 'SalePrice']\n", " \n", " # save file for submission\n", " sub_fname = '../data/submission_' + str(time_stamp) + '.csv'\n", " h2o.download_csv(sub, sub_fname)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Simple function to average predictions" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import os\n", "\n", "def pred_blender(dir_, files):\n", " \n", " \"\"\" Performs simple blending of prediction files. \n", " \n", " :param dir_: Directory in which files to be read are stored.\n", " :param files: List of prediction files to be blended.\n", " \n", " \"\"\"\n", " \n", " # read predictions in files list and cbind\n", " for i, file in enumerate(files):\n", " if i == 0:\n", " df = pd.read_csv(dir_ + os.sep + file).drop('SalePrice', axis=1)\n", " col = pd.read_csv(dir_ + os.sep + file).drop('Id', axis=1)\n", " col.columns = ['SalePrice' + str(i)]\n", " df = pd.concat([df, col], axis=1)\n", " \n", " # create mean prediction \n", " df['mean'] = df.iloc[:, 1:].mean(axis=1)\n", " print(df.head())\n", " \n", " # create time stamp\n", " time_stamp = re.sub('[: ]', '_', time.asctime()) \n", " \n", " # write new submission file \n", " df = df[['Id', 'mean']]\n", " df.columns = ['Id', 'SalePrice']\n", " \n", " # save file for submission\n", " sub_fname = '../data/submission_' + str(time_stamp) + '.csv'\n", " df.to_csv(sub_fname, index=False)\n", " " ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "#### GLM model on encoded, combined numeric inputs" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glm Grid Build progress: |████████████████████████████████████████████████| 100%\n", " alpha model_ids \\\n", "0 [0.01] Grid_GLM_py_297_sid_b0f6_model_python_1527178741925_1_model_0 \n", "1 [0.25] Grid_GLM_py_297_sid_b0f6_model_python_1527178741925_1_model_1 \n", "2 [0.5] Grid_GLM_py_297_sid_b0f6_model_python_1527178741925_1_model_2 \n", "3 [0.99] Grid_GLM_py_297_sid_b0f6_model_python_1527178741925_1_model_3 \n", "\n", " residual_deviance \n", "0 3.405457702226766 \n", "1 3.7310684358150157 \n", "2 3.8448209999198233 \n", "3 3.9680834547561457 \n", "None\n", "Model Details\n", "=============\n", "H2OGeneralizedLinearEstimator : Generalized Linear Modeling\n", "Model Key: Grid_GLM_py_297_sid_b0f6_model_python_1527178741925_1_model_0\n", "\n", "\n", "ModelMetricsRegressionGLM: glm\n", "** Reported on train data. **\n", "\n", "MSE: 0.005613386003704139\n", "RMSE: 0.07492253335081603\n", "MAE: 0.05825898630935005\n", "RMSLE: 0.005798560012401194\n", "R^2: 0.9641606895652494\n", "Mean Residual Deviance: 0.005613386003704139\n", "Null degrees of freedom: 503\n", "Residual degrees of freedom: -880\n", "Null deviance: 78.93975948609085\n", "Residual deviance: 2.829146545866886\n", "AIC: 1588.2590488684195\n", "\n", "ModelMetricsRegressionGLM: glm\n", "** Reported on validation data. **\n", "\n", "MSE: 0.014806337835768547\n", "RMSE: 0.12168129616242813\n", "MAE: 0.08605240326634149\n", "RMSLE: 0.009438605131375621\n", "R^2: 0.9002280333733776\n", "Mean Residual Deviance: 0.014806337835768547\n", "Null degrees of freedom: 229\n", "Residual degrees of freedom: -1154\n", "Null deviance: 34.66875782373328\n", "Residual deviance: 3.405457702226766\n", "AIC: 2453.790734996074\n", "Scoring History: \n" ] }, { "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", "
timestampdurationiterationlambdapredictorsdeviance_traindeviance_test
2018-05-24 12:41:29 0.000 sec1.33E210.15662650.1507337
2018-05-24 12:41:31 1.964 sec2.32E2310.15387450.1481834
2018-05-24 12:41:32 2.964 sec3.3E2380.14883140.1435179
2018-05-24 12:41:33 3.525 sec4.29E2610.14304690.1382364
2018-05-24 12:41:33 4.140 sec5.27E2970.13619030.1321030
------------------------
2018-05-24 12:42:47 1 min 17.913 sec84.7E014050.00534380.0148147
2018-05-24 12:42:48 1 min 19.138 sec85.66E014160.00508630.0148227
2018-05-24 12:42:49 1 min 19.759 sec86.63E014610.00483100.0148520
2018-05-24 12:42:50 1 min 20.391 sec87.61E014950.00458240.0149025
2018-05-24 12:42:50 1 min 21.025 sec88.58E015220.00434750.0149563
" ], "text/plain": [ " timestamp duration iteration lambda predictors deviance_train deviance_test\n", "--- ------------------- ---------------- ----------- -------- ------------ -------------------- --------------------\n", " 2018-05-24 12:41:29 0.000 sec 1 .33E2 1 0.1566265087512586 0.15073371394036988\n", " 2018-05-24 12:41:31 1.964 sec 2 .32E2 31 0.15387454376324303 0.14818343306968174\n", " 2018-05-24 12:41:32 2.964 sec 3 .3E2 38 0.14883139223396333 0.14351793883989056\n", " 2018-05-24 12:41:33 3.525 sec 4 .29E2 61 0.1430469298514268 0.13823642193288863\n", " 2018-05-24 12:41:33 4.140 sec 5 .27E2 97 0.13619033861649524 0.13210295254557694\n", "--- --- --- --- --- --- --- ---\n", " 2018-05-24 12:42:47 1 min 17.913 sec 84 .7E0 1405 0.005343844875708797 0.014814675297402278\n", " 2018-05-24 12:42:48 1 min 19.138 sec 85 .66E0 1416 0.005086280701179353 0.014822706680114388\n", " 2018-05-24 12:42:49 1 min 19.759 sec 86 .63E0 1461 0.004830981265874312 0.014851974745636157\n", " 2018-05-24 12:42:50 1 min 20.391 sec 87 .61E0 1495 0.004582435357391775 0.014902461417633964\n", " 2018-05-24 12:42:50 1 min 21.025 sec 88 .58E0 1522 0.004347543801169008 0.01495630922457319" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "\n", "glm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice predict
11.8494 12.0779
12.2061 12.1796
11.6784 11.6258
11.914 11.8076
12.6758 12.458
12.861 12.7095
12.1035 11.974
11.2898 11.4508
11.7714 11.6794
11.5843 11.601
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "glm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "image/png": "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\ndM+z1tK1a1cWL15M//79qVu3Ln///TfDhg1j69atjB8/PsP+JSUlsXfvXsqUKXOhzBjD5s2bue++\n++jfvz/9+vWjTp06F465c+rUKVq2bMmWLVt45JFHaNy4MUeOHGHixIns27eP0qVLX3IfFUVRlMxR\nkZAPee6557jtttto1KgRzZo1o1WrVrRv3562bdvi75/6SBcsWEDRokUv7A8YMIBOnTrx4YcfZigS\nfvrpJ+bMmcOCBQu44YYbLpTXq1ePJ554gqVLl9K8efML5YmJiRw9ehSA/fv389577xEbG8vgwYPT\ntLt9+3amT59Ohw4dMry/999/n40bN/Lbb7/RrVu3C+UvvfRSjvuoKIqiZB8VCS5On4bNm3P3GnXr\nQmDgpbfToUMHlixZwnvvvcf06dNZunQp77//PuXKleOrr76ia9euAGkEQnx8PImJibRu3ZoZM2aQ\nkJDgdboCYNy4cURGRlK7du0Lgz9A27ZtsdYyd+7cNAPw9OnTKVeu3IV9f39/HnzwQYYOHZqm3WrV\nqmUqEADGjx9Pw4YN0wiES+2joiiKkn1UJLjYvBmionL3GitXgq9yTUVFRTFu3DiSkpJYu3Ytv/32\nG8OGDeOee+5hzZo11K1bl0WLFvH666+zdOnSNCmzjTHExcWlKxK2bt3K5s2b0wz87ufGxsamKWve\nvDnvvPMOIOmXIyMjKVGixEXnVqtWLUv3tn37du6+++4M62S3j4qiKEr2UZHgom5dGcRz+xq+xt/f\nn6ioKKKioqhVqxZ9+vRh7Nix3H///XTo0IHIyEiGDRtGWFgYRYoUYfLkyXz00UekpKSk22ZKSgoN\nGjRg2LBhWGsvOh4WFpZmv2zZsrRt2zbTvhYrViz7N+ijPiqKoijZR0WCi8BA373l5xVNmzYF4ODB\ng0yaNInz588zadIkKleufKHO7NmzM22nRo0arFu3LksDf25Qo0YN1q9fn2mdvOyjoijK1YAugcyH\nzJs3z2v55MmTMcZQp04dChUqBJDGYhAXF8e3336bafs9evRg3759fPnllxcdO3v2bJqpi9zgrrvu\nYu3atUyYMCHdOnndR0VRlKsBtSTkQwYNGsTp06e58847qVu3LufPn2fRokX88ssvVKtWjT59+hAT\nE0PhwoXp0qUL/fv3JyEhga+++ooKFSoQExOTYfsPPPAAv/zyC0888QRz586lRYsWJCcns2nTJsaO\n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\nFJKT7UtERERipz6VhHTgC+BawKvm+Y+A26p5fh/OuRHAi8A/gMHAJOB159whtW2rdRtEREQaR2K0\nG3ie9zbwNoBzzkV4/vnAcz2BfZ6vxg3AVM/zHgzcv8s5dwpwPRZGqrV+vfojiIiINIbm0idhODC9\nymPvBB6v0apVCgkiIiKNobmEhM5AUZXHigKP12j1ajU3iIiINIbmEhLqbdMmVRJEREQaQ9R9EhpJ\nIZBX5bG8wOO1uJmvvurA6JAxFmPHjmXs2LExPDwREZH4NGHCBCZMmBD22LZt2+q0bWOHhDqNbgBm\nAycBfw957JTA47V4iFNPPYLx46M+NhERkRYv0oXzggULGDJkSK3bRh0SnHPpQD+CIxf6OOcGAZs9\nz1vjnMsEegDdAq85KDAKotDzvKLAPsYDBZ7n3RnYxzjgA+fcLcAUYCwwBLiyLsek5gYREZHYq0+f\nhKHA58B8rFLwN2ABcE/g+dGB598IPD8h8PzVIfvIJ6RToud5s4GLgauwORjOA87xPG9xXQ5IHRdF\nRERirz7zJMykhnDhed54oMbiv+d5J0Z4bCIwMdrjAVUSREREGkPcj24AVRJEREQaQ4sICaokiIiI\nxJ5CgoiIiEQU9yEhIQE61zovo4iIiEQr7kPCpElw7LFNfRQiIiItT9yHhK5dYd+1KEVERKSh4j4k\niIiISONQSBAREZGIFBJEREQkIoUEERERiUghQURERCJSSBAREZGIFBJEREQkIoUEERERiUghQURE\nRCJSSBAREZGIFBJEREQkIoUEERERiUghQURERCJSSBAREZGIFBJEREQkIoUEERERiUghQURERCJS\nSBAREZGIFBJEREQkIoUEERERiUghQURERCJSSBAREZGIFBJEREQkIoUEERERiUghQURERCJSSBAR\nEZGIFBJEREQkIoUEERERiUghQURERCJSSBAREZGIFBJEREQkIoUEERERiUghQURERCJSSBAREZGI\nFBIkpiZMmNDUhyAR6H1pfvSeNE96X8JFHRKcc8c55yY75wqcc5XOudERXvMH59w651ypc26ac65f\nLfu8PLCvisBtpXOuNNpjk6anP7DmSe9L86P3pHnS+xKuPpWEdOAL4FrAq/qkc+524HrgKuAooAR4\nxzmXXMt+twGdQ7561uPYREREJEYSo93A87y3gbcBnHMuwktuBP7oed6bgddcBhQBY4D/1Lxrb2O0\nxyMiIiKNI6Z9EpxzvbEqwHv+Y57nbQc+BYbXsnmGc+5759xq59zrzrlDYnlsIiIiEp2oKwm16Iw1\nQRRVebwo8Fx1vgGuAL4EOgC/Bj5xzh3ied66arZJAViyZEmDDlhia9u2bSxYsKCpD0Oq0PvS/Og9\naZ5ay/sScu5Mqel1zvP26VZQZ865SmCM53mTA/eHA7OArp7nFYW87mWg0vO8sXXcbyKwBHjR87y7\nq3nNxcAL9T54ERERucTzvBerezLWlYRCwAF5hFcT8oDP67oTz/P2Ouc+B2oaFfEOcAnwPbAr6iMV\nERFpvVKAXti5tFoxDQme5610zhUCJ2FNBzjn2gNHA4/VdT/OuQTgUGBKDd+rGKg2/YiIiEiNPqnt\nBVGHBOdcOnaF749s6OOcGwRs9jxvDfAw8Fvn3HfYVf4fgbXApJB9jAcKPM+7M3D/d8Ac4DugI3Ab\n0AN4OtrjExERkdioTyVhKDAD66DoAX8LPD4euMLzvP9zzqUB/w874X8EnOF53u6QfeQDFSH3M4Gn\nsM6NW4D5wHDP85bW4/hEREQkBhrUcVFERERaLq3dICIiIhEpJIiIiEhEcRkSnHPXOedWOufKnHNz\nnHNHNvUxtRbOubtDFuHyvxZXeU1UC3xJ9GKx0Jpzrq1z7jHn3Cbn3A7n3H+dc7n776doWWp7T5xz\nz0X423mrymv0nsSQc+4O59xc59x251yRc+4159wBEV6nv5VqxF1IcM5diHWWvBs4HFiILSCV06QH\n1roswua+8BfjOtZ/ogELfEl0YrHQ2sPAWcD5wPFAV2Bi4x52i1bjexIwlfC/naoTzOk9ia3jgEew\nYfgnA0nAu865VP8F+luphed5cfWFDZUcF3LfYUMsb2vqY2sNX1g4W1DD8+uAm0PutwfKgJ809bG3\n1C+gEhgdzfsQuF8OnBvymgMD+zqqqX+meP+q5j15Dni1hm30njT++5IT+H0eG/KY/lZq+IqrSoJz\nLgkYQvgCUh4wndoXkJLY6R8oqS53zj3vnMuHBi/wJTFSx/dhKDYEOvQ13wCr0XvVmEYGyt5LnXOP\nO+eyQp4bgt6TxtYRq/JsBv2t1EVchQQsBbYh+gWkJHbmAD8DTgOuAXoDHwYm2arvAl8SW3V5H/KA\n3YEPxOpeI7E1FbgMOBGbMO4E4C3nnD8xXWf0njSawO/5YWCW53l+Pyr9rdQi1ms3SAvneV7oPN+L\nnHNzgVXATwBNfiVSDc/z/hNy92vn3FfAcmAkNkGdNK7HgUOAY5r6QOJJvFUSNmEzNeZVeTwPW1xK\n9jPP87YBy7CpukMX+Aql92f/qsv7UAgkB9ZWqe410og8z1uJfab5Pen1njQS59yjwJnASM/z1oc8\npb+VWsRVSPA8bw82ZfNJ/mOBEtJJ1GGhCok951wG9iG3LvCh5y/w5T/vL/Cl92c/qeP7MB/YW+U1\nB2JrpszebwfbijnnugPZgH/S0nvSCAIB4RxglOd5q0Of099K7eKxueFB4J/OufnAXOBmIA34Z1Me\nVGvhnLsfeANrYugG3APsAV4KvKTWBb6k4Rq60Jrnedudc88ADzrntgA7gL8DH3ueN3e//jAtRE3v\nSeDrbmzYXGHgdfdhVbh3QO9JY3DOPY4NMx0NlDjn/IrBNs/zdgX+rb+VmjT18Ir6fGHjkL/HhqnM\nBoY29TG1li9gAvYHVIb17n0R6F3lNb/HhhWVYh+A/Zr6uFvaF9bprRJrfgv9erau7wPQFhtDvgn7\n4HsFyG3qny1ev2p6T4AU4G0sIOwCVgBPAJ30njTqexLp/agALqvyOv2tVPOlBZ5EREQkorjqkyAi\nIiL7j0KCiIiIRKSQICIiIhEpJIiIiEhECgkiIiISkUKCiIiIRKSQICIiIhEpJIiIiEhECgkiIiIS\nkUKCiIiIRKSQICIiIhH9f6m/HvqTPrXSAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "glm_0 = glm_grid(encoded_combined_nums, 'SalePrice', half_train, half_valid)\n", "gen_submission(glm_0) # Valid RMSE: ~0.1217, 0.13886 on public leaderboard" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glm Grid Build progress: |████████████████████████████████████████████████| 100%\n", " alpha model_ids \\\n", "0 [0.25] Grid_GLM_py_299_sid_b0f6_model_python_1527178741925_2_model_1 \n", "1 [0.5] Grid_GLM_py_299_sid_b0f6_model_python_1527178741925_2_model_2 \n", "2 [0.99] Grid_GLM_py_299_sid_b0f6_model_python_1527178741925_2_model_3 \n", "3 [0.01] Grid_GLM_py_299_sid_b0f6_model_python_1527178741925_2_model_0 \n", "\n", " residual_deviance \n", "0 3.1810866656007803 \n", "1 3.223651696951385 \n", "2 3.224159264892518 \n", "3 3.2717453678471253 \n", "None\n", "Model Details\n", "=============\n", "H2OGeneralizedLinearEstimator : Generalized Linear Modeling\n", "Model Key: Grid_GLM_py_299_sid_b0f6_model_python_1527178741925_2_model_1\n", "\n", "\n", "ModelMetricsRegressionGLM: glm\n", "** Reported on train data. **\n", "\n", "MSE: 0.007094793397779883\n", "RMSE: 0.08423059656549918\n", "MAE: 0.06417733206371987\n", "RMSLE: 0.00650329685007792\n", "R^2: 0.9535567733748623\n", "Mean Residual Deviance: 0.007094793397779883\n", "Null degrees of freedom: 496\n", "Residual degrees of freedom: 255\n", "Null deviance: 75.92306941024773\n", "Residual deviance: 3.526112318696602\n", "AIC: -562.9269598324297\n", "\n", "ModelMetricsRegressionGLM: glm\n", "** Reported on validation data. **\n", "\n", "MSE: 0.013891208146728298\n", "RMSE: 0.11786096956468795\n", "MAE: 0.08757293967548607\n", "RMSLE: 0.00920744389802624\n", "R^2: 0.9263861017985929\n", "Mean Residual Deviance: 0.013891208146728298\n", "Null degrees of freedom: 228\n", "Residual degrees of freedom: -13\n", "Null deviance: 43.21927170266359\n", "Residual deviance: 3.1810866656007803\n", "AIC: 156.55554368389835\n", "Scoring History: \n" ] }, { "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", "
timestampdurationiterationlambdapredictorsdeviance_traindeviance_test
2018-05-24 12:49:01 0.000 sec1.13E110.15276270.1887304
2018-05-24 12:49:01 0.519 sec2.12E140.14654370.1812044
2018-05-24 12:49:02 1.042 sec3.12E1100.13820350.1706804
2018-05-24 12:49:02 1.548 sec4.11E1120.12989580.1600478
2018-05-24 12:49:03 2.029 sec5.11E1140.12215300.1500932
------------------------
2018-05-24 12:49:5352.579 sec78.36E-12660.00618750.0139182
2018-05-24 12:49:5453.123 sec79.34E-12800.00589550.0140077
2018-05-24 12:49:5453.661 sec80.32E-12840.00562350.0140578
2018-05-24 12:49:5554.362 sec81.31E-12890.00535480.0141352
2018-05-24 12:49:5654.974 sec82.3E-13100.00509190.0142152
" ], "text/plain": [ " timestamp duration iteration lambda predictors deviance_train deviance_test\n", "--- ------------------- ---------- ----------- -------- ------------ -------------------- --------------------\n", " 2018-05-24 12:49:01 0.000 sec 1 .13E1 1 0.1527627046368803 0.18873042509589977\n", " 2018-05-24 12:49:01 0.519 sec 2 .12E1 4 0.14654373847450816 0.18120442638867387\n", " 2018-05-24 12:49:02 1.042 sec 3 .12E1 10 0.13820352974257355 0.17068037969103886\n", " 2018-05-24 12:49:02 1.548 sec 4 .11E1 12 0.1298958085262089 0.16004775960123652\n", " 2018-05-24 12:49:03 2.029 sec 5 .11E1 14 0.12215304112851116 0.1500932064316435\n", "--- --- --- --- --- --- --- ---\n", " 2018-05-24 12:49:53 52.579 sec 78 .36E-1 266 0.006187478004850754 0.013918165102151757\n", " 2018-05-24 12:49:54 53.123 sec 79 .34E-1 280 0.005895496534440813 0.0140076515945308\n", " 2018-05-24 12:49:54 53.661 sec 80 .32E-1 284 0.005623519826379195 0.01405780720200898\n", " 2018-05-24 12:49:55 54.362 sec 81 .31E-1 289 0.005354784098595532 0.014135238063798197\n", " 2018-05-24 12:49:56 54.974 sec 82 .3E-1 310 0.005091915984203059 0.01421523329336695" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "\n", "glm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice predict
11.7906 11.7186
11.9117 11.9251
11.9767 11.8588
11.8451 11.7476
11.1346 11.2238
11.8845 11.8186
11.9382 11.9551
11.8565 11.7544
11.9704 11.9568
12.6667 12.5503
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "glm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "glm_1 = glm_grid(encoded_combined_nums, 'SalePrice', other_half_train, other_half_valid)\n", "gen_submission(glm_1) # Valid RMSE: ~0.1196, 0.13531 on public leaderboard" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Blend predictions" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Id SalePrice0 SalePrice1 mean\n", "0 1461 118403.825877 106536.569642 112470.197759\n", "1 1462 149407.161615 151691.177618 150549.169617\n", "2 1463 174213.108637 171066.095162 172639.601899\n", "3 1464 189052.712822 187183.247949 188117.980385\n", "4 1465 191824.944374 195710.891940 193767.918157\n" ] } ], "source": [ "# pred_blender('../data/', \n", "# ['submission_Thu_May_24_12_46_57_2018.csv',\n", "# 'submission_Thu_May_24_12_52_32_2018.csv'])\n", "# 0.13338 on public leaderboard, better than single model!" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "# Shutdown H2O - this will erase all your unsaved frames and models in H2O\n", "h2o.cluster().shutdown(prompt=True)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "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.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 03_regression/src/py_part_3_linear_regression_gradient_descent.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# **Basic** Gradient Descent for Multiple Linear Regression" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# imports \n", "import pandas as pd # import pandas for easy data manipulation using data frames\n", "import numpy as np # import numpy for numeric calculations on matrices\n", "import time # for timers\n", "\n", "# import h2o to check calculations\n", "import h2o\n", "from h2o.estimators.glm import H2OGeneralizedLinearEstimator" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Assign global constants" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# data-related constants\n", "IN_FILE_PATH = '../data/loan_clean.csv'\n", "Y = 'STD_IMP_REP_loan_amnt'\n", "DROPS = ['id', 'GRP_REP_home_ownership', 'GRP_addr_state', 'GRP_home_ownership',\n", " 'GRP_purpose', 'GRP_verification_status', '_WARN_']\n", "\n", "# model-related constants\n", "LEARN_RATE = 0.05 # how much each gradient descent step impacts parameters\n", "CONV = 1e-10 # desired precision in parameters \n", "MAX_ITERS = 10000 # maximum number of gradient descent steps to allow" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import clean data and convert to numpy matrices" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idbad_loanGRP_REP_home_ownershipGRP_addr_stateGRP_home_ownershipGRP_purposeGRP_verification_status_WARN_STD_IMP_REP_annual_incSTD_IMP_REP_delinq_2yrsSTD_IMP_REP_dtiSTD_IMP_REP_emp_lengthSTD_IMP_REP_int_rateSTD_IMP_REP_loan_amntSTD_IMP_REP_longest_credit_lengtSTD_IMP_REP_revol_utilSTD_IMP_REP_term_lengthSTD_IMP_REP_total_acc
count163987.000000163987.000000163987.000000163987.000000163987.000000163987.000000163987.0000000.01.639870e+051.639870e+051.639870e+051.639870e+051.639870e+051.639870e+051.639870e+051.639870e+051.639870e+051.639870e+05
mean91994.0000000.1925952.57400311.4093372.5740033.2449402.340356NaN2.387342e-112.408736e-126.806950e-11-3.563309e-11-8.939301e-128.310596e-115.061841e-11-1.473947e-11-1.500741e-108.045720e-13
std47339.1136340.3943380.6675269.9719260.6675262.2672890.504086NaN1.000000e+001.000000e+001.000000e+001.000000e+001.000000e+001.000000e+001.000000e+001.000000e+001.000000e+001.000000e+00
min10001.0000000.0000001.0000001.0000001.0000001.0000001.000000NaN-1.767456e+00-3.921962e-01-2.119639e+00-1.621390e+00-1.907046e+00-1.587129e+00-2.224451e+00-2.164541e+00-5.164956e-01-2.058862e+00
25%50997.5000000.0000002.0000003.0000002.0000002.0000002.000000NaN-6.595203e-01-3.921962e-01-7.380602e-01-7.663281e-01-6.840838e-01-7.667612e-01-7.212383e-01-7.235035e-01-5.164956e-01-7.471426e-01
50%91994.0000000.0000003.0000008.0000003.0000002.0000002.000000NaN-2.225562e-01-3.921962e-01-2.257573e-028.873407e-02-5.191344e-02-2.114351e-01-1.199531e-017.707309e-02-5.164956e-01-1.350069e-01
75%132990.5000000.0000003.00000017.0000003.0000003.0000003.000000NaN3.686305e-01-3.921962e-016.955785e-011.228817e+005.917510e-016.215541e-014.813321e-017.815805e-01-5.164956e-015.645768e-01
max173987.0000001.0000005.00000037.0000005.00000014.0000003.000000NaN4.618062e+004.156695e+003.037149e+001.228817e+002.837680e+002.767132e+003.143160e+003.036350e+001.971879e+003.068467e+00
\n", "
" ], "text/plain": [ " id bad_loan GRP_REP_home_ownership GRP_addr_state \\\n", "count 163987.000000 163987.000000 163987.000000 163987.000000 \n", "mean 91994.000000 0.192595 2.574003 11.409337 \n", "std 47339.113634 0.394338 0.667526 9.971926 \n", "min 10001.000000 0.000000 1.000000 1.000000 \n", "25% 50997.500000 0.000000 2.000000 3.000000 \n", "50% 91994.000000 0.000000 3.000000 8.000000 \n", "75% 132990.500000 0.000000 3.000000 17.000000 \n", "max 173987.000000 1.000000 5.000000 37.000000 \n", "\n", " GRP_home_ownership GRP_purpose GRP_verification_status _WARN_ \\\n", "count 163987.000000 163987.000000 163987.000000 0.0 \n", "mean 2.574003 3.244940 2.340356 NaN \n", "std 0.667526 2.267289 0.504086 NaN \n", "min 1.000000 1.000000 1.000000 NaN \n", "25% 2.000000 2.000000 2.000000 NaN \n", "50% 3.000000 2.000000 2.000000 NaN \n", "75% 3.000000 3.000000 3.000000 NaN \n", "max 5.000000 14.000000 3.000000 NaN \n", "\n", " STD_IMP_REP_annual_inc STD_IMP_REP_delinq_2yrs STD_IMP_REP_dti \\\n", "count 1.639870e+05 1.639870e+05 1.639870e+05 \n", "mean 2.387342e-11 2.408736e-12 6.806950e-11 \n", "std 1.000000e+00 1.000000e+00 1.000000e+00 \n", "min -1.767456e+00 -3.921962e-01 -2.119639e+00 \n", "25% -6.595203e-01 -3.921962e-01 -7.380602e-01 \n", "50% -2.225562e-01 -3.921962e-01 -2.257573e-02 \n", "75% 3.686305e-01 -3.921962e-01 6.955785e-01 \n", "max 4.618062e+00 4.156695e+00 3.037149e+00 \n", "\n", " STD_IMP_REP_emp_length STD_IMP_REP_int_rate STD_IMP_REP_loan_amnt \\\n", "count 1.639870e+05 1.639870e+05 1.639870e+05 \n", "mean -3.563309e-11 -8.939301e-12 8.310596e-11 \n", "std 1.000000e+00 1.000000e+00 1.000000e+00 \n", "min -1.621390e+00 -1.907046e+00 -1.587129e+00 \n", "25% -7.663281e-01 -6.840838e-01 -7.667612e-01 \n", "50% 8.873407e-02 -5.191344e-02 -2.114351e-01 \n", "75% 1.228817e+00 5.917510e-01 6.215541e-01 \n", "max 1.228817e+00 2.837680e+00 2.767132e+00 \n", "\n", " STD_IMP_REP_longest_credit_lengt STD_IMP_REP_revol_util \\\n", "count 1.639870e+05 1.639870e+05 \n", "mean 5.061841e-11 -1.473947e-11 \n", "std 1.000000e+00 1.000000e+00 \n", "min -2.224451e+00 -2.164541e+00 \n", "25% -7.212383e-01 -7.235035e-01 \n", "50% -1.199531e-01 7.707309e-02 \n", "75% 4.813321e-01 7.815805e-01 \n", "max 3.143160e+00 3.036350e+00 \n", "\n", " STD_IMP_REP_term_length STD_IMP_REP_total_acc \n", "count 1.639870e+05 1.639870e+05 \n", "mean -1.500741e-10 8.045720e-13 \n", "std 1.000000e+00 1.000000e+00 \n", "min -5.164956e-01 -2.058862e+00 \n", "25% -5.164956e-01 -7.471426e-01 \n", "50% -5.164956e-01 -1.350069e-01 \n", "75% -5.164956e-01 5.645768e-01 \n", "max 1.971879e+00 3.068467e+00 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# import data using Pandas\n", "raw = pd.read_csv(IN_FILE_PATH)\n", "raw.describe()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-1.01918221 -1.33470843 -1.34732948 ... -0.03158515 1.83948532\n", " 0.49534363]\n" ] } ], "source": [ "# select target column\n", "y = raw[Y].as_matrix()\n", "print(y)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# create input matrix\n", "# add an additional column of 1's for intercept \n", "# by overlaying inputs onto matrix of 1's\n", "numeric = raw.drop(DROPS + [Y], axis=1).as_matrix()\n", "N, p = numeric.shape\n", "X = np.ones(shape=(N, p + 1))\n", "X[:,1:] = numeric " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear Regression by Solving the Normal Equation " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{equation}\n", "X\\hat{\\beta} = y \n", "\\end{equation}\n", "\n", "\\begin{equation}\n", "\\hat{\\beta} = (X^{T}X)^{-1}X^Ty\n", "\\end{equation}\n", "\n", "The normal equation estimates coefficients that globally minimize the squared error between a rectangular input data matrix $X$ and a column vector of target values $y$. I.e. it presents an optimal solution to an underspecified set of linear equations." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model parameters:\n", " [-0.00953184 0.04949174 0.4184344 -0.04237427 0.08966404 0.0301429\n", " 0.08011731 0.05023822 0.01554239 0.31239211 0.04139277]\n" ] } ], "source": [ "X_transpose = np.transpose(X)\n", "beta_hat = np.linalg.inv(X_transpose.dot(X))\n", "beta_hat = beta_hat.dot(X_transpose)\n", "beta_hat = beta_hat.dot(y)\n", "print('Model parameters:\\n', beta_hat)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Basic Gradient Descent Routines with L2 (\"Ridge\"/\"Tikhonov\") Regularization\n", "\\begin{equation}\n", "\\hat{\\beta} = \\underset{\\beta}{argmin}\\sum_{i=1}^{N} (y_i - \\beta x_i)^2 + \\lambda\\sum_{j=0}^p \\beta^2_j\n", "\\end{equation}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Define squared loss function\n", "* For linear regression, we directly minimize the squared distance between the regression plane and points in the conditional distribution of **y** given **X**.\n", "* Direct minimization of the squared loss function is typically preferred to solving the normal equation directly due to numerical stability and scalability issues.\n", "* It is convenient to use a scaled mean squared error (MSE) formula:\n", "\\begin{equation}\n", "\\frac{1}{2N}\\sum_{i=1}^{N} (y_i - \\beta x_i)^2\n", "\\end{equation}" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def squared_loss(n, x, y, betas, lambda_=0):\n", " \n", " \"\"\" Squared loss function for multiple linear regression.\n", " \n", " :param n: Number of rows in x.\n", " :param x: Matrix of numeric inputs.\n", " :param y: Vector of known target values.\n", " :param beta: Vector of current model parameters.\n", " :param lambda_: Scale factor for L2 regularization, default 0.\n", " :return: Scalar MSE value. \n", " \n", " \"\"\"\n", " \n", " yhat = x.dot(betas)\n", " \n", " return (1 / (2 * n)) * (((y - yhat)**2).sum() + lambda_ * (betas**2).sum())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Define gradient of loss function\n", "* The derivative of the loss function w.r.t the model parameters is used to update model parameters at each gradient descent step.\n", "* The gradient of our MSE loss function is trivial:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def grad(n, y, yhat, x, beta_j, lambda_=0):\n", " \n", " \"\"\" Analytical gradient of scaled MSE loss function with L2 regularization.\n", " \n", " :param n: Number of rows in X.\n", " :param y: Vector of known target values.\n", " :param yhat: Vector of predicted target values.\n", " :param x: Vector of input values.\n", " :param beta_j: Model parameter for which to calculate gradient.\n", " :param lambda_: Scale factor for L2 regularization, default 0.\n", " :return: Vector of gradient values.\n", " \n", " \"\"\"\n", " \n", " return (1 / n) * (x * (yhat - y) + (lambda_ * beta_j))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Define function for executing gradient descent minimization\n", "For each gradient descent step:\n", "* Predictions are made using the current model parameters.\n", "* The gradient is calculated for each model pararmeter.\n", "* The gradient is used in combination with the learning rate to update each parameter." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def grad_descent(X, y, learn_rate, max_iters, sgd_mini_batch_n=0, lambda_=0):\n", " \n", " \"\"\" Routine for executing simple gradient descent with stochastic gradient descent option.\n", " \n", " :param X: Matrix of numeric data.\n", " :param y: Vector of known target values.\n", " :param learn_rate: Learning rate.\n", " :param max_iters: Maximum number of gradient descent steps to perform.\n", " :param sgd_mini_batch_n: Minibatch size for sgd optimization.\n", " If > 0 minibatch stochastic gradient descent is performed.\n", " :param lambda_: Scale factor for L2 regularization, default 0.\n", " \n", " \"\"\"\n", "\n", " tic = time.time() # start timer\n", " n_betas = X.shape[1] # number of model parameters including bias \n", " betas = np.zeros(shape=n_betas) # parameters start with value of 0\n", " n = y.shape[0] # number of rows in X\n", " \n", " # Pandas dataframe for iteration history\n", " iteration_frame = pd.DataFrame(columns=['Iteration', 'Loss'])\n", "\n", " print('Iteration history:')\n", " \n", " # loop for gradient descent steps\n", " for i in range(max_iters):\n", " \n", " # stochastic gradient descent\n", " if sgd_mini_batch_n > 0:\n", " \n", " samp_idx = np.random.randint(n, size=sgd_mini_batch_n)\n", " X_samp = X[samp_idx, :]\n", " y_samp = y[samp_idx]\n", " n_samp = X_samp.shape[0]\n", " yhat_samp = X_samp.dot(betas) # model predictions for iteration\n", "\n", " # loop for column-wise parameter updates\n", " for j in range(n_betas):\n", "\n", " # select column\n", " # calculate column-wise gradient\n", " # update corresponding parameter based on negative gradient\n", " # calculate loss\n", "\n", " xj_samp = X_samp[:, j]\n", " beta_j = betas[j]\n", " xj_grad_samp = grad(n_samp, y_samp, yhat_samp, xj_samp, beta_j, lambda_)\n", " betas[j] = betas[j] - learn_rate * xj_grad_samp.sum()\n", " iter_loss = squared_loss(n_samp, X_samp, y_samp, betas, lambda_)\n", " \n", " # standard gradient descent\n", " else:\n", " \n", " yhat = X.dot(betas) # model predictions for iteration\n", "\n", " # loop for column-wise parameter updates\n", " for j in range(n_betas):\n", " xj = X[:, j]\n", " beta_j = betas[j]\n", " xj_grad = grad(n, y, yhat, xj, beta_j, lambda_)\n", " betas[j] = betas[j] - learn_rate * xj_grad.sum()\n", " iter_loss = squared_loss(n, X, y, betas, lambda_)\n", " \n", " # update loss history\n", " iteration_frame = iteration_frame.append({'Iteration': i,\n", " 'Loss': iter_loss}, \n", " ignore_index=True) \n", " # progress indicator \n", " if i % 1000 == 0:\n", " print('iter=%d loss=%.6f' % (i, iter_loss))\n", " \n", " # convergence check\n", " if i > 0:\n", " if np.abs(iteration_frame.iat[i-1, 1] - iteration_frame.iat[i, 1]) < CONV:\n", " break\n", "\n", " # output \n", " %matplotlib inline\n", " iteration_frame.plot.line(title='Iteration Plot', x='Iteration', y='Loss')\n", " print() \n", " print('Model parameters at iteration ' + str(i) + ':')\n", " print(betas)\n", " print()\n", " print('Model trained in %.2f s.' % (time.time()-tic))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Execute gradient descent" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Iteration history:\n", "iter=0 loss=0.472967\n", "\n", "Model parameters at iteration 709:\n", "[-0.00946269 0.04918263 0.41842662 -0.04237465 0.08967229 0.03014185\n", " 0.08014273 0.05024078 0.01554251 0.3123994 0.04138562]\n", "\n", "Model trained in 19.11 s.\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAEWCAYAAACKSkfIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XucVOWd5/HPt6tv3FFoo9IQMBIniIpOBzUxCePdXDQz47ziZaNudtY4I6MTc1FmXCchk2w0u5pkwyuOyehmRg1jrssqCZMZx2R0FWkVL61hQBRp8dKgoIBAN/3bP85pKIrq6oK+Fae+79erX13nqafq/Arbbz31nFPPUURgZmbVoWa4CzAzs6Hj0DczqyIOfTOzKuLQNzOrIg59M7Mq4tA3M6siDn2zXkjaLOmIId7nA5L+dCj3adXFoW8VSdKLkk5Pb18m6cFB3t9eYRsRoyNi9SDs60VJ76RvKq9JukPS6H18jqmSQlLtQNdn2ebQt8yr0GD8RESMBk4A3g9cP8z1WJVw6FtFk/Q+4Fbg5HRkvDFtb5D0PyS9lI6Wb5U0Ir1vjqR2SddKehW4Q9JBku6V1CHpzfR2c9r/a8CHgO+m+/hu2h6Sjkxvj5P0D+nj10i6XlJNet9lkh5M63lT0guSzinn9UXEy8AvgZlFXntNup81kl5P9z8uvfu36e+Nac0n79c/sFUdh75VtIh4DrgCeDidbhmf3nUj8F5gFnAkMAm4Ie+hhwIHA+8GLif5W78j3Z4CvAN8N93HXwP/DsxN9zG3SCn/CxgHHAF8BLgE+M95958IrAAmAjcBfy9Jfb0+SZOBjwJPFLn7svTnD9L9ju6pGfhw+nt8WvPDfe3LDBz6dgBKw/S/Ap+LiDci4m3g68AFed26gb+JiO0R8U5EbIiIn0bE1rT/10jCu5z95YBPAfMi4u2IeBH4n8Cn87qtiYjvR8RO4IfAYcC7SjztL9JPLQ8Cv0nrL3QxcHNErI6IzcA84IIKna6yA4T/eOxA1ASMBB7LG0wLyOX16YiIbbvulEYCtwBnAwelzWMk5dKgLmUiUA+syWtbQ/LposerPTciYmtaV6mDs5+MiH/pY7+HF9lnLaXfTMxK8kjfDgSFS8GuJ5meOToixqc/49IDo7095vPAUcCJETGW3dMj6qV/4f46SaaGekwBXt6H17A/1hXZZxfwGqXrNeuVQ98OBK8BzZLqASKiG/g+cIukQwAkTZJ0VonnGEPyRrFR0sHA3xTZR9Fz8tNPAvcAX5M0RtK7gWuAO/vxmsrxI+Bzkqalp3R+HfiniOgCOkimsIb0ewR24HPo24HgfqANeFXS+rTtWmAV8Iikt4B/IRnJ9+ZbwAiSUfsjwK8K7v82cH569s13ijz+L4AtwGqSefi7gdv37+WU7XbgH0nO1HkB2JbWQURsJTku8ZCkjZJOGuRaLCPki6iYmVUPj/TNzKqIQ9/MrIqUFfqSzpa0QtIqSdeV6Hd++i3GlnS7TtIPJT0t6TlJ8waqcDMz23d9hn76xZQFwDnADOBCSTOK9BsDXAUszWv+E6AhIo4Bfh/4rKSp/S/bzMz2RzlfzpoNrOpZbVDSQuA84NmCfl8l+fr5F/LaAhiVfoNwBLADeKvUziZOnBhTp04tq3gzM0s89thj6yOiqa9+5YT+JGBt3nY7yToju0g6HpgcEfdKyg/9n5C8QbxC8g3Kz0XEG4U7kHQ5yfooTJkyhdbW1jLKMjOzHpLW9N2rvDn9YotG7TrPM11p8BaSbzwWmg3sJPk6+TTg88UuShERt0VES0S0NDX1+UZlZmb7qZyRfjswOW+7meTr4T3GkCwL+0C63sihwCJJ5wIXAb+KiE7gdUkPAS0kX3AxM7MhVs5IfxkwPf0qeD3JSoaLeu6MiE0RMTEipkbEVJJvO54bEa3AS8CpSowCTgJ+N+CvwszMytLnSD8iuiTNBZaQrGJ4e0S0SZoPtEbEohIPX0CyhvkzJNNEd0TEUwNQt5nZXjo7O2lvb2fbtm19dz5ANTY20tzcTF1d3X49vuKWYWhpaQkfyDWz/fHCCy8wZswYJkyYQBnXsDngRAQbNmzg7bffZtq0aXvcJ+mxiGjp6zn8jVwzy4xt27ZlNvABJDFhwoR+fZJx6JtZpmQ18Hv09/VlJvRf2fQON//zClZ3bB7uUszMKlZmQr/j7e185/5VvLB+y3CXYmZVbPToUlfJHH6ZCf1cTfKRp6u7sg5Mm5lVksyEfm1N8lJ2OvTNrMKsWbOG0047jWOPPZbTTjuNl156CYAf//jHzJw5k+OOO44Pfzi5bHNbWxuzZ89m1qxZHHvssaxcuXJAaynnG7kHhJ6RfufO7mGuxMwqwVf+bxvPriu5vuM+m3H4WP7mE0fv8+Pmzp3LJZdcwqWXXsrtt9/OVVddxS9+8Qvmz5/PkiVLmDRpEhs3bgTg1ltv5eqrr+biiy9mx44d7Ny5c0BfQ4ZG+knoe6RvZpXm4Ycf5qKLLgLg05/+NA8++CAAH/zgB7nsssv4/ve/vyvcTz75ZL7+9a9z4403smbNGkaMGDGgtWRmpF+b85y+me22PyPyodJz2uWtt97K0qVLue+++5g1axbLly/noosu4sQTT+S+++7jrLPO4gc/+AGnnnrqgO07QyN9z+mbWWX6wAc+wMKFCwG46667OOWUUwB4/vnnOfHEE5k/fz4TJ05k7dq1rF69miOOOIKrrrqKc889l6eeGtiVazIz0vfZO2ZWCbZu3Upzc/Ou7WuuuYbvfOc7fOYzn+Gb3/wmTU1N3HHHHQB88YtfZOXKlUQEp512Gscddxzf+MY3uPPOO6mrq+PQQw/lhhtuGND6MhP6PXP6XT6Qa2bDqLu7eAbdf//9e7X97Gc/26tt3rx5zJs3eJcTz8z0Ti7nA7lmZn3JTOjXpXP6nt4xM+tdZkI/51M2zYxk+eEs6+/ry0zo757Tz/Z/cDPrXWNjIxs2bMhs8Pesp9/Y2Ljfz1HWgVxJZwPfJrly1g8i4hu99Dsf+DHw/vRyiUg6Fvg7YCzQnd434Je1qakREnT1chDFzLKvubmZ9vZ2Ojo6hruUQdNz5az91WfoS8qRXPbwDJKLpC+TtCgini3oNwa4Clia11YL3Al8OiKelDQB6NzvavtQV1PjOX2zKlZXV7fXFaVsT+VM78wGVkXE6ojYASwEzivS76vATUD+KP5M4KmIeBIgIjZExMAuJJEnVyPP6ZuZlVBO6E8C1uZtt6dtu0g6HpgcEfcWPPa9QEhaIulxSV8qtgNJl0tqldTan49ltTXynL6ZWQnlhH6xa3PtSlZJNcAtwOeL9KsFTgEuTn//oaTT9nqyiNsioiUiWpqamsoqvJhcTp7TNzMroZzQbwcm5203A+vytscAM4EHJL0InAQsktSSPvY3EbE+IrYCi4ETBqLwYmpr5Dl9M7MSygn9ZcB0SdMk1QMXAIt67oyITRExMSKmRsRU4BHg3PTsnSXAsZJGpgd1PwI8u/cuBkZtTQ07Pb1jZtarPkM/IrqAuSQB/hxwT0S0SZov6dw+HvsmcDPJG8dy4PGIuK//ZReX80jfzKykss7Tj4jFJFMz+W1Fl36LiDkF23eSnLY56GpzYqfn9M3MepWZb+RCMtLv9EjfzKxXmQr92hp5Tt/MrISMhb6/kWtmVkq2Qt9z+mZmJWUq9H32jplZaZkKfS/DYGZWWsZCv8YLrpmZlZCt0PfaO2ZmJWUq9L20splZaZkKfS+4ZmZWWqZCP+cDuWZmJWUq9GtzNZ7TNzMrIVuh7zl9M7OSMhX6/nKWmVlpmQp9fznLzKy0TIV+zguumZmVVFboSzpb0gpJqyRdV6Lf+ZIivT5ufvsUSZslfaG/BZdS5wXXzMxK6jP0JeWABcA5wAzgQkkzivQbA1wFLC3yNLcAv+xfqX3znL6ZWWnljPRnA6siYnVE7AAWAucV6fdV4CZgW36jpE8Cq4G2ftbaJ5+9Y2ZWWjmhPwlYm7fdnrbtIul4YHJE3FvQPgq4FvhKP+ssS66mxgdyzcxKKCf0VaRtV7JKqiGZvvl8kX5fAW6JiM0ldyBdLqlVUmtHR0cZJRWXLMPgOX0zs97UltGnHZict90MrMvbHgPMBB6QBHAosEjSucCJwPmSbgLGA92StkXEd/N3EBG3AbcBtLS07PdQvTYnugO6u4OammLvVWZm1a2c0F8GTJc0DXgZuAC4qOfOiNgETOzZlvQA8IWIaAU+lNf+ZWBzYeAPpNo06HdGUFP0A4qZWXXrc3onIrqAucAS4DngnohokzQ/Hc1XjFxN8nJ8MNfMrLhyRvpExGJgcUHbDb30ndNL+5f3sbZ91jPS79zZTWNdbrB3Z2Z2wMnUN3Jrc+n0jkf6ZmZFZSv005G+v6BlZlZcpkLfc/pmZqVlKvTz5/TNzGxvmQr9XI3n9M3MSslU6PccyO30UgxmZkVlKvTrc8nL8VIMZmbFZSr069LQ7+zySN/MrJhshX5t8nJ2+ECumVlR2Qr9nM/eMTMrJVOh3zOn79A3MysuU6Ff69A3MyspU6HfM72zwwdyzcyKylToe3rHzKy0TIV+nUPfzKykbIV+rUPfzKyUskJf0tmSVkhaJem6Ev3OlxSSWtLtMyQ9Junp9PepA1V4MXVehsHMrKQ+r5wlKQcsAM4guUj6MkmLIuLZgn5jgKuApXnN64FPRMQ6STNJLrk4aaCKL+Q5fTOz0soZ6c8GVkXE6ojYASwEzivS76vATcC2noaIeCIi1qWbbUCjpIZ+1twrz+mbmZVWTuhPAtbmbbdTMFqXdDwwOSLuLfE8fww8ERHb97nKMu0OfU/vmJkVU86F0VWkbVeqSqoBbgEu6/UJpKOBG4Eze7n/cuBygClTppRRUnG7z9P3SN/MrJhyRvrtwOS87WZgXd72GGAm8ICkF4GTgEV5B3ObgZ8Dl0TE88V2EBG3RURLRLQ0NTXt+6tISaIuJ0/vmJn1opzQXwZMlzRNUj1wAbCo586I2BQREyNiakRMBR4Bzo2IVknjgfuAeRHx0CDUv5e6XI1D38ysF32GfkR0AXNJzrx5DrgnItokzZd0bh8PnwscCfw3ScvTn0P6XXUJSeh7Tt/MrJhy5vSJiMXA4oK2G3rpOyfv9t8Cf9uP+vZZXa7G6+mbmfUiU9/IBajPiU4fyDUzKypzoV9X6zl9M7PeZC/0PadvZtarTIa+5/TNzIrLXOjX+zx9M7NeZS70a32evplZrzIX+nU50enLJZqZFZXB0PecvplZbzIX+vWe3jEz61XmQt9r75iZ9S57oV/r8/TNzHqTvdD3KZtmZr3KXOh7Tt/MrHeZC30vw2Bm1rtshr5X2TQzKyp7oV8rn6dvZtaLskJf0tmSVkhaJem6Ev3OlxQ918dN2+alj1sh6ayBKLoUz+mbmfWuzytnScoBC4AzSC6SvkzSooh4tqDfGOAqYGle2wySa+oeDRwO/Iuk90bEzoF7CXuqy9XQHdC1s5vaXOY+yJiZ9Us5qTgbWBURqyNiB7AQOK9Iv68CNwHb8trOAxZGxPaIeAFYlT7foGmoTV7Sds/rm5ntpZzQnwSszdtuT9t2kXQ8MDki7t3Xxw40h76ZWe/KCX0Vadt1TqSkGuAW4PP7+ti857hcUquk1o6OjjJK6l1jXQ6A7V2DNoNkZnbAKif024HJedvNwLq87THATOABSS8CJwGL0oO5fT0WgIi4LSJaIqKlqalp315BgYa65CVt6/RI38ysUDmhvwyYLmmapHqSA7OLeu6MiE0RMTEipkbEVOAR4NyIaE37XSCpQdI0YDrw6IC/ijwNtR7pm5n1ps+zdyKiS9JcYAmQA26PiDZJ84HWiFhU4rFtku4BngW6gCsH88wdgMZ0pL/dI30zs730GfoAEbEYWFzQdkMvfecUbH8N+Np+1rfPdo/0HfpmZoUydyJ7z9k72zo9vWNmVihzob/77B2P9M3MCmUu9Hefp++RvplZoQyGfjLS9ymbZmZ7y1zo7zp7xyN9M7O9ZC70d52945G+mdleshf6dV57x8ysN9kLfZ+yaWbWq8yFviTqa2s80jczKyJzoQ/JaN8Hcs3M9pbJ0G+sy/mUTTOzIjIZ+h7pm5kVl+HQ90jfzKxQRkM/5/P0zcyKyGToN9Z5esfMrJhMhr5H+mZmxZUV+pLOlrRC0ipJ1xW5/wpJT0taLulBSTPS9jpJP0zve07SvIF+AcU0eKRvZlZUn6EvKQcsAM4BZgAX9oR6nrsj4piImAXcBNyctv8J0BARxwC/D3xW0tQBqr1XjbU+ZdPMrJhyRvqzgVURsToidgALgfPyO0TEW3mbo4DouQsYJakWGAHsAPL7DoqGuhq2eaRvZraXcq6ROwlYm7fdDpxY2EnSlcA1QD1watr8E5I3iFeAkcDnIuKN/hRcjhF1Oa+9Y2ZWRDkjfRVpi70aIhZExHuAa4Hr0+bZwE7gcGAa8HlJR+y1A+lySa2SWjs6Osouvjcj62vZut2hb2ZWqJzQbwcm5203A+tK9F8IfDK9fRHwq4jojIjXgYeAlsIHRMRtEdESES1NTU3lVV7CyPocWzt3ErHXe5OZWVUrJ/SXAdMlTZNUD1wALMrvIGl63ubHgJXp7ZeAU5UYBZwE/K7/ZZc2siHHzu7wt3LNzAr0OacfEV2S5gJLgBxwe0S0SZoPtEbEImCupNOBTuBN4NL04QuAO4BnSKaJ7oiIpwbhdexhZF1y9ax3duykMb1tZmblHcglIhYDiwvabsi7fXUvj9tMctrmkBpZn7ysLTu6OGhU/VDv3sysYmXyG7kjG3aP9M3MbLdshn59EvpbHPpmZnvIaOgn0ztbt3cNcyVmZpUlo6GfjPS3eqRvZraHjIb+7gO5Zma2W0ZD3wdyzcyKyWToj9o10nfom5nly2Toj9g10vf0jplZvkyGfn1tDbU18kjfzKxAJkMfknl9z+mbme0pw6Ffyxafp29mtofshn5DsryymZntlt3Qr8/5G7lmZgUyG/qjG2rZ4qtnmZntIbOhP7axjre2dQ53GWZmFSW7oT+ijrfeceibmeUrK/QlnS1phaRVkq4rcv8Vkp6WtFzSg5Jm5N13rKSHJbWlfRoH8gX0ZkxjLW9t85y+mVm+PkNfUo7ksofnADOAC/NDPXV3RBwTEbOAm4Cb08fWAncCV0TE0cAckksqDrqxjXVs3t7Fzm5fHN3MrEc5I/3ZwKqIWB0RO4CFwHn5HSLirbzNUUBP0p4JPBURT6b9NkTEkBxdHTuiDoDNHu2bme1STuhPAtbmbbenbXuQdKWk50lG+lelze8FQtISSY9L+lJ/Cy7X2MZk0TUfzDUz262c0FeRtr3mTCJiQUS8B7gWuD5trgVOAS5Of/+hpNP22oF0uaRWSa0dHR1lF19Kz0h/kw/mmpntUk7otwOT87abgXUl+i8EPpn32N9ExPqI2AosBk4ofEBE3BYRLRHR0tTUVF7lfRjbmIS+R/pmZruVE/rLgOmSpkmqBy4AFuV3kDQ9b/NjwMr09hLgWEkj04O6HwGe7X/ZfRuTTu+87Tl9M7NdavvqEBFdkuaSBHgOuD0i2iTNB1ojYhEwV9LpJGfmvAlcmj72TUk3k7xxBLA4Iu4bpNeyh3Hp9I7P1Tcz263P0AeIiMUkUzP5bTfk3b66xGPvJDltc0jtnt7xSN/MrEdmv5E7uufsHY/0zcx2yWzo52rEmIZaH8g1M8uT2dAHGDeyjo1bHfpmZj0yHfoTRtWzYcuO4S7DzKxiZDr0Dx5Vzxtbtg93GWZmFSPToT9hdAMbNnukb2bWI9uhn07vRHilTTMzyHjoHzyqnh1d3WzZ4csmmplBFYQ+wBue4jEzAzIe+hNHNwCw3gdzzcyAjIe+R/pmZnuqjtD3ufpmZkDGQ79pTDK907HZ0ztmZpDx0G+syzF+ZB2vbHpnuEsxM6sImQ59gMPGjeDVTduGuwwzs4pQBaHfyLqNDn0zM6iC0D90XCOvvuXQNzODMkNf0tmSVkhaJem6IvdfIelpScslPShpRsH9UyRtlvSFgSq8XIePa+SNLTvY1ulv5ZqZ9Rn6knLAAuAcYAZwYWGoA3dHxDERMQu4Cbi54P5bgF8OQL377NBxIwA8r29mRnkj/dnAqohYHRE7gIXAefkdIuKtvM1RJBdBB0DSJ4HVQFv/y913h49rBGCdz+AxMysr9CcBa/O229O2PUi6UtLzJCP9q9K2UcC1wFdK7UDS5ZJaJbV2dHSUW3tZmg8amRT9hkPfzKyc0FeRtr3WKo6IBRHxHpKQvz5t/gpwS0RsLrWDiLgtIloioqWpqamMksp3+PhG6nJi9fotA/q8ZmYHotoy+rQDk/O2m4F1JfovBL6X3j4ROF/STcB4oFvStoj47v4Uuz9qczVMOXgkLzr0zczKCv1lwHRJ04CXgQuAi/I7SJoeESvTzY8BKwEi4kN5fb4MbB7KwO8xbeIoXnDom5n1HfoR0SVpLrAEyAG3R0SbpPlAa0QsAuZKOh3oBN4ELh3MovfVtImj+PeV6+nuDmpqis1WmZlVh3JG+kTEYmBxQdsNebevLuM5vryvxQ2UqRNHsb2rm3Wb3tl1YNfMrBpl/hu5AEe9awwAv3vl7WGuxMxseFVF6L/vsLFI8Owrb/Xd2cwsw6oi9Ec11DJtwija1m0a7lLMzIZVVYQ+wIzDx9K2ziN9M6tuVRP6MyeNo/3Nd9jgq2iZWRWrmtB//9SDAXj0hTeGuRIzs+FTNaF/zKRxjKjLsdShb2ZVrGpCv762hhPePZ5HVm8Y7lLMzIZN1YQ+wIemN/G7V9/m5Y1ecdPMqlNVhf6ZM94FwK/bXh3mSszMhkdVhf4RTaM58pDRLH7GoW9m1amqQh/gD4+fxKMvvOFVN82sKlVd6P/xCc3UCBY++tJwl2JmNuSqLvQPHdfIOTMP466lL7Fpa+dwl2NmNqSqLvQBrvyDI9m8vYvv/eb54S7FzGxIVWXozzh8LOf/fjM/+PfV/MdrXm7ZzKpHWaEv6WxJKyStknRdkfuvkPS0pOWSHpQ0I20/Q9Jj6X2PSTp1oF/A/vqrj76P0Y21fOHHT7Ktc+dwl2NmNiT6DH1JOWABcA4wA7iwJ9Tz3B0Rx0TELOAm4Oa0fT3wiYg4huQSiv84YJX308Gj6vnm+cfx9Mub+NJPnqK7O4a7JDOzQVfOSH82sCoiVkfEDmAhcF5+h4jIX7N4FBBp+xMRsS5tbwMaJTX0v+yBccaMd/HFs45i0ZPr+Nw9y9nR1T3cJZmZDapyrpE7CVibt90OnFjYSdKVwDVAPVBsGuePgSciYq+1jSVdDlwOMGXKlDJKGjh/PudIAG761QpeXL+Fmz81i/c0jR7SGszMhko5I30VadtrLiQiFkTEe4Brgev3eALpaOBG4LPFdhARt0VES0S0NDU1lVHSwPrzOUdy6386gRfWb+GsW37Llxe18eqmbUNeh5nZYCtnpN8OTM7bbgbW9dIXkumf7/VsSGoGfg5cEhEVe47k2TMP44R3H8Qtv17JPzz8Iv/4yBrOeN+7OOeYQ5lz1CGMG1E33CWamfVbOaG/DJguaRrwMnABcFF+B0nTI2JluvkxYGXaPh64D5gXEQ8NWNWD5JAxjfz3PzqGP/vIe7hr6Rp++vjL/KrtVXI14vcOHcMJUw5i5qSxHNE0mmkTRzFhVD1SsQ9CZmaVSRF9n7Ui6aPAt4AccHtEfE3SfKA1IhZJ+jZwOtAJvAnMjYg2SdcD80jfBFJnRsTrve2rpaUlWltb9/8VDaDu7uCJtRv5zYrXeeylN1n+0ka27Nh9eueYhloOGdtA05gGJo5Ofo8bUcfohlpGNdQyOv0Z1VBLY10Ndbnkp6G257aoq62hPpf81NT4DcTM9o+kxyKipc9+5YT+UKqk0C+0szt4+c13WL1+M6s7trBmwxY6Nm+n4+3trN+8g463t7N5e1e/9lEjqJGQQNKu7Z62mry2wj6FbxnlfAop7FLsIYXPvNdjytjvXi19PIcND39yHV5z3tvE9R8vPCO+POWGfjnTO5bK1YgpE0YyZcJI5hxVvM/O7mDLji42b+tiy/YuNqc/O7q6k5+d3XTuDDp3dtO5c3fbjq5uugMigu4IugO6IyD93bMdu7ZjV/+IZL/5ir2VF76/R2GvIg8qbCocJOx9f/+fw4aJ/0MMu8PGjxj0fTj0B1iuRoxtrGNsow/8mlnlqcq1d8zMqpVD38ysijj0zcyqiEPfzKyKOPTNzKqIQ9/MrIo49M3MqohD38ysilTcMgySOoA1/XiKiSRX7Kp0B0qd4FoHi2sdHNVa67sjos+16Ssu9PtLUms5608MtwOlTnCtg8W1Dg7XWpqnd8zMqohD38ysimQx9G8b7gLKdKDUCa51sLjWweFaS8jcnL6ZmfUuiyN9MzPrhUPfzKyKZCb0JZ0taYWkVZKuq4B6bpf0uqRn8toOlvRrSSvT3wel7ZL0nbT2pySdMMS1Tpb0b5Kek9Qm6epKrVdSo6RHJT2Z1vqVtH2apKVprf8kqT5tb0i3V6X3Tx2qWtP95yQ9IeneSq4zreFFSU9LWi6pNW2rxL+B8ZJ+Iul36d/syRVa51Hpv2XPz1uS/nLYa00ut3dg/5BcsP154AigHngSmDHMNX0YOAF4Jq/tJuC69PZ1wI3p7Y8CvyS5VOxJwNIhrvUw4IT09hjgP4AZlVhvus/R6e06YGlawz3ABWn7rcCfpbf/HLg1vX0B8E9D/G97DXA3cG+6XZF1pvt9EZhY0FaJfwM/BP40vV0PjK/EOgtqzgGvAu8e7lqH/MUP0j/oycCSvO15wLwKqGtqQeivAA5Lbx8GrEhv/x1wYbF+w1T3/wHOqPR6gZHA48CJJN9qrC38ewCWACent2vTfhqi+pqBfwVOBe5N/2euuDrz6i0W+hX1NwCMBV4o/LeptDqL1H0m8FAl1JqV6Z1JwNq87fa0rdK8KyJeAUh/H5K2V0z96bTC8SQj6IqsN50yWQ68Dvya5FPexojoKlLPrlrT+zcBE4ao1G8BXwK60+0JFVpnjwD+WdJjki5P2yrtb+AIoAO4I502+4GkURVYZ6ELgB+lt4e11qyEvoq0HUjnolYH/c4vAAAECElEQVRE/ZJGAz8F/jIi3irVtUjbkNUbETsjYhbJSHo28L4S9QxLrZI+DrweEY/lN5eopRL+Bj4YEScA5wBXSvpwib7DVW8tybTp9yLieGALyRRJb4b93zU9bnMu8OO+uhZpG/BasxL67cDkvO1mYN0w1VLKa5IOA0h/v562D3v9kupIAv+uiPhZ2lyx9QJExEbgAZL5z/GSaovUs6vW9P5xwBtDUN4HgXMlvQgsJJni+VYF1rlLRKxLf78O/JzkDbXS/gbagfaIWJpu/4TkTaDS6sx3DvB4RLyWbg9rrVkJ/WXA9PTMiHqSj1KLhrmmYhYBl6a3LyWZO+9pvyQ9en8SsKnn499QkCTg74HnIuLmSq5XUpOk8entEcDpwHPAvwHn91Jrz2s4H7g/0gnTwRQR8yKiOSKmkvw93h8RF1danT0kjZI0puc2yRz0M1TY30BEvAqslXRU2nQa8Gyl1VngQnZP7fTUNHy1DvUBjUE8UPJRkrNOngf+ugLq+RHwCtBJ8g7+X0jmaP8VWJn+PjjtK2BBWvvTQMsQ13oKycfIp4Dl6c9HK7Fe4FjgibTWZ4Ab0vYjgEeBVSQfoxvS9sZ0e1V6/xHD8Lcwh91n71RknWldT6Y/bT3/D1Xo38AsoDX9G/gFcFAl1pnufySwARiX1zastXoZBjOzKpKV6R0zMyuDQ9/MrIo49M3MqohD38ysijj0zcyqiEPfMk3S5vT3VEkXDfBz/1XB9v8byOc3GwwOfasWU4F9Cn1JuT667BH6EfGBfazJbMg59K1afAP4ULqu+efSRdu+KWlZunb5ZwEkzVFybYG7Sb4gg6RfpIuQtfUsRCbpG8CI9PnuStt6PlUofe5nlKxP/6m8535Au9eCvyv9NrTZkKntu4tZJlwHfCEiPg6QhvemiHi/pAbgIUn/nPadDcyMiBfS7c9ExBvpsg/LJP00Iq6TNDeShd8K/RHJt0aPAyamj/ltet/xwNEka6o8RLJGz4MD/3LNivNI36rVmSTrnCwnWUZ6AjA9ve/RvMAHuErSk8AjJAtiTae0U4AfRbIa6GvAb4D35z13e0R0kyx3MXVAXo1ZmTzSt2ol4C8iYskejdIckuV687dPJ7nAyVZJD5Csk9PXc/dme97tnfj/QRtiHulbtXib5FKQPZYAf5YuKY2k96arSxYaB7yZBv7vkSzj3KOz5/EFfgt8Kj1u0ERy6cxHB+RVmPWTRxlWLZ4CutJpmv8NfJtkauXx9GBqB/DJIo/7FXCFpKdILl/3SN59twFPSXo8kmWTe/yc5FKIT5KsXvqliHg1fdMwG1ZeZdPMrIp4esfMrIo49M3MqohD38ysijj0zcyqiEPfzKyKOPTNzKqIQ9/MrIr8f7KXjPyqKRI9AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "grad_descent(X, y, LEARN_RATE, MAX_ITERS)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Execute L2 penalized gradient descent" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Iteration history:\n", "iter=0 loss=0.472967\n", "\n", "Model parameters at iteration 962:\n", "[-0.00887026 0.04652247 0.41326281 -0.04186768 0.08725817 0.03035732\n", " 0.08097103 0.050572 0.01624763 0.30948716 0.04325793]\n", "\n", "Model trained in 27.56 s.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "grad_descent(X, y, LEARN_RATE, MAX_ITERS, lambda_=0.01)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Execute stochastic gradient descent" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Iteration history:\n", "iter=0 loss=0.508994\n", "iter=1000 loss=0.353958\n", "iter=2000 loss=0.329552\n", "iter=3000 loss=0.294881\n", "iter=4000 loss=0.328536\n", "iter=5000 loss=0.356125\n", "iter=6000 loss=0.289613\n", "iter=7000 loss=0.346587\n", "iter=8000 loss=0.330513\n", "iter=9000 loss=0.327531\n", "\n", "Model parameters at iteration 9999:\n", "[-0.01223376 0.05182728 0.41063956 -0.04170199 0.0856654 0.02781728\n", " 0.08272001 0.04593188 0.00757939 0.31243454 0.03695308]\n", "\n", "Model trained in 15.78 s.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "grad_descent(X, y, LEARN_RATE, MAX_ITERS, sgd_mini_batch_n=1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Execute L2 penalized stochastic gradient descent" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Iteration history:\n", "iter=0 loss=0.461673\n", "iter=1000 loss=0.329070\n", "iter=2000 loss=0.343811\n", "iter=3000 loss=0.327983\n", "iter=4000 loss=0.312636\n", "iter=5000 loss=0.305115\n", "iter=6000 loss=0.331027\n", "iter=7000 loss=0.327247\n", "iter=8000 loss=0.315605\n", "iter=9000 loss=0.299981\n", "\n", "Model parameters at iteration 9999:\n", "[-0.01053456 0.04711783 0.41437448 -0.03713669 0.08668208 0.02662558\n", " 0.0852053 0.04509276 0.0109407 0.31120157 0.03936369]\n", "\n", "Model trained in 14.53 s.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "grad_descent(X, y, LEARN_RATE, MAX_ITERS, lambda_=0.01, sgd_mini_batch_n=1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Use h2o to check model parameters" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: java version \"1.8.0_171\"; Java(TM) SE Runtime Environment (build 1.8.0_171-b11); Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)\n", " Starting server from /home/patrickh/anaconda3/lib/python3.6/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /tmp/tmpfk6et3so\n", " JVM stdout: /tmp/tmpfk6et3so/h2o_patrickh_started_from_python.out\n", " JVM stderr: /tmp/tmpfk6et3so/h2o_patrickh_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321... successful.\n", "Warning: Your H2O cluster version is too old (3 months and 14 days)! Please download and install the latest version from http://h2o.ai/download/\n" ] }, { "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", "
H2O cluster uptime:01 secs
H2O cluster timezone:America/New_York
H2O data parsing timezone:UTC
H2O cluster version:3.18.0.2
H2O cluster version age:3 months and 14 days !!!
H2O cluster name:H2O_from_python_patrickh_2x3z4e
H2O cluster total nodes:1
H2O cluster free memory:3.422 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
H2O internal security:False
H2O API Extensions:XGBoost, Algos, AutoML, Core V3, Core V4
Python version:3.6.4 final
" ], "text/plain": [ "-------------------------- ----------------------------------------\n", "H2O cluster uptime: 01 secs\n", "H2O cluster timezone: America/New_York\n", "H2O data parsing timezone: UTC\n", "H2O cluster version: 3.18.0.2\n", "H2O cluster version age: 3 months and 14 days !!!\n", "H2O cluster name: H2O_from_python_patrickh_2x3z4e\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 3.422 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "H2O API Extensions: XGBoost, Algos, AutoML, Core V3, Core V4\n", "Python version: 3.6.4 final\n", "-------------------------- ----------------------------------------" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n", "glm Model Build progress: |███████████████████████████████████████████████| 100%\n", "\n", "Model parameters:\n", "Intercept -0.009531837795372164\n", "bad_loan 0.049491736160435965\n", "STD_IMP_REP_annual_inc 0.41843440383338865\n", "STD_IMP_REP_delinq_2yrs -0.04237426505134888\n", "STD_IMP_REP_dti 0.08966404330351394\n", "STD_IMP_REP_emp_length 0.030142903020478125\n", "STD_IMP_REP_int_rate 0.08011731349769513\n", "STD_IMP_REP_longest_credit_lengt 0.05023821933458795\n", "STD_IMP_REP_revol_util 0.015542387042639218\n", "STD_IMP_REP_term_length 0.31239210762608416\n", "STD_IMP_REP_total_acc 0.04139276773790677\n", "\n", "H2O session _sid_84a9 closed.\n" ] } ], "source": [ "# start h2o\n", "h2o.init()\n", "\n", "DROPS = ['id', 'GRP_REP_home_ownership', 'GRP_addr_state', 'GRP_home_ownership',\n", " 'GRP_purpose', 'GRP_verification_status', '_WARN_']\n", "\n", "# numeric columns \n", "train = h2o.import_file(IN_FILE_PATH)\n", "train = train.drop(DROPS)\n", "X = train.col_names\n", "\n", "# initialize non-penalized GLM model\n", "loan_glm = H2OGeneralizedLinearEstimator(family='gaussian', # uses squared error\n", " solver='IRLSM', # necessary for non-penalized GLM\n", " standardize=False, # data is already standardized\n", " compute_p_values=True, # necessary for non-penalized GLM \n", " lambda_=0) # necessary for non-penalized GLM\n", "\n", "# train \n", "loan_glm.train(train.col_names, Y, training_frame=train)\n", "\n", "# print trained model info\n", "print() \n", "print('Model parameters:')\n", "for name, val in loan_glm.coef().items():\n", " print(name, val)\n", "print()\n", "\n", "# shutdown h2o\n", "h2o.cluster().shutdown()" ] } ], "metadata": { "anaconda-cloud": {}, "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.4" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 03_regression/src/py_part_3_penalized_linear_regression.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import h2o\n", "from h2o.estimators.glm import H2OGeneralizedLinearEstimator\n", "\n", "import operator" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: java version \"1.8.0_201\"; Java(TM) SE Runtime Environment (build 1.8.0_201-b09); Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)\n", " Starting server from /home/patrickh/anaconda3/lib/python3.6/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /tmp/tmpioaeowke\n", " JVM stdout: /tmp/tmpioaeowke/h2o_patrickh_started_from_python.out\n", " JVM stderr: /tmp/tmpioaeowke/h2o_patrickh_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321... successful.\n" ] }, { "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", "
H2O cluster uptime:01 secs
H2O cluster timezone:America/New_York
H2O data parsing timezone:UTC
H2O cluster version:3.22.0.2
H2O cluster version age:2 months and 16 days
H2O cluster name:H2O_from_python_patrickh_98qebb
H2O cluster total nodes:1
H2O cluster free memory:3.422 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
H2O internal security:False
H2O API Extensions:XGBoost, Algos, MLI, MLI-Driver, AutoML, Core V3, Core V4
Python version:3.6.4 final
" ], "text/plain": [ "-------------------------- ---------------------------------------------------------\n", "H2O cluster uptime: 01 secs\n", "H2O cluster timezone: America/New_York\n", "H2O data parsing timezone: UTC\n", "H2O cluster version: 3.22.0.2\n", "H2O cluster version age: 2 months and 16 days\n", "H2O cluster name: H2O_from_python_patrickh_98qebb\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 3.422 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "H2O API Extensions: XGBoost, Algos, MLI, MLI-Driver, AutoML, Core V3, Core V4\n", "Python version: 3.6.4 final\n", "-------------------------- ---------------------------------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "h2o.init()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# location of clean file\n", "path = '../data/loan_clean.csv'" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# define input variable measurement levels \n", "# strings automatically parsed as enums (nominal)\n", "# numbers automatically parsed as numeric\n", "col_types = {'bad_loan': 'enum'}" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "frame = h2o.import_file(path=path, col_types=col_types) # multi-threaded import" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rows:163987\n", "Cols:18\n", "\n", "\n" ] }, { "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", "
id bad_loan GRP_REP_home_ownership GRP_addr_state GRP_home_ownership GRP_purpose GRP_verification_status _WARN_ STD_IMP_REP_annual_inc STD_IMP_REP_delinq_2yrs STD_IMP_REP_dti STD_IMP_REP_emp_length STD_IMP_REP_int_rate STD_IMP_REP_loan_amnt STD_IMP_REP_longest_credit_lengt STD_IMP_REP_revol_util STD_IMP_REP_term_length STD_IMP_REP_total_acc
type int enum int int int int int int real real real real real real real real real real
mins 10001.0 1.0 1.0 1.0 1.0 1.0 NaN -1.767455639 -0.39219617 -2.119639396 -1.621390274 -1.907046215 -1.587129405 -2.22445124 -2.164541326 -0.516495577 -2.058861889
mean 91994.0 2.5740028172964924 11.4093373255197032.5740028172964924 3.24494014769463452.340356247751345 0.0 2.3874453607496453e-11 2.295921310568427e-12 6.807013811211564e-11-3.5668651031696166e-11 -8.948739700514272e-128.311929243557815e-11 5.0612534090153816e-11 -1.473412253405173e-11 -1.5009542966560638e-10 8.061035779006034e-13
maxs 173987.0 5.0 37.0 5.0 14.0 3.0 NaN 4.6180619798 4.1566950661 3.037148727 1.2288169612 2.8376799992 2.7671323946 3.1431598296 3.0363495275 1.9718787627 3.0684672884
sigma 47339.11363414683 0.6675260435449262 9.971926133461404 0.6675260435449262 2.26728920752597540.5040864341768772 -0.0 0.9999999999982868 0.9999999999212518 1.0000000000037712 1.0000000000339833 1.0000000000199503 0.999999999985285 0.9999999999850594 1.000000000017688 1.0000000000642086 1.000000000033184
zeros 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
missing0 0 0 0 0 0 0 163987 0 0 0 0 0 0 0 0 0 0
0 10001.0 0 3.0 14.0 3.0 3.0 2.0 nan -1.199299502 -0.39219617 1.5712460425 1.2288169612 -0.704773051 -1.019182214 1.683902485 1.1858716502 -0.516495577 -1.359278248
1 10002.0 1 3.0 10.0 3.0 8.0 2.0 nan -1.04507688 -0.39219617 -1.986153485 -1.621390274 0.3572732234 -1.334708431 -0.420595674 -1.788270335 1.9718787627 -1.796518023
2 10003.0 0 3.0 7.0 3.0 7.0 3.0 nan -1.501267394 -0.39219617 -0.955642252 1.2288169612 0.5158905241 -1.34732948 -0.721238269 1.7782983174 -0.516495577 -1.271830292
3 10004.0 0 3.0 2.0 3.0 4.0 2.0 nan -0.303921333 -0.39219617 0.5500788236 1.2288169612 -0.051913437 -0.388129779 0.0303682169 0.0325652593 -0.516495577 1.089264497
4 10005.0 0 3.0 14.0 3.0 10.0 2.0 nan -0.890854259 -0.39219617 -0.624597193 -0.766328103 -1.336943453 -1.019182214 -0.822026269 -1.031725469 -0.516495577 -1.096934382
5 10006.0 0 3.0 2.0 3.0 8.0 2.0 nan -0.582409016 -0.39219617 -1.405489772 0.9437962377 1.1319693155 -1.271603188 -1.623166051 1.3379811999 -0.516495577 -1.796518023
6 10007.0 1 4.0 2.0 4.0 7.0 2.0 nan -0.788039178 -0.39219617 -1.37879259 -0.48130738 1.7388529011 -0.943455922 -1.17220216 -0.859601505 1.9718787627 -1.009486427
7 10008.0 1 3.0 4.0 3.0 4.0 2.0 nan -1.430633434 -0.39219617 0.2937858745 -1.621390274 -0.235817553 -0.971853281 -1.17220216 -0.703489072 1.9718787627 -1.883965979
8 10009.0 0 4.0 14.0 4.0 2.0 3.0 nan 0.0344814697 -0.39219617 0.032153489 -0.196286656 0.2147475328 -0.829866484 -0.270274377 -1.339947451 1.9718787627 -0.135006875
9 10010.0 0 4.0 2.0 4.0 2.0 2.0 nan 0.1115927805 -0.39219617 -0.680661276 1.2288169612 -0.235817553 -0.135708805 1.0826172966 0.521393091 -0.516495577 0.8269206315
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "frame.describe()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# split into training, validation and test\n", "train, test = frame.split_frame([0.7])" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# assign target and inputs for linear regression\n", "y = 'STD_IMP_REP_loan_amnt'\n", "X = [name for name in frame.columns if name not in ['id', '_WARN_', y]]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "STD_IMP_REP_loan_amnt\n", "['bad_loan', 'GRP_REP_home_ownership', 'GRP_addr_state', 'GRP_home_ownership', 'GRP_purpose', 'GRP_verification_status', 'STD_IMP_REP_annual_inc', 'STD_IMP_REP_delinq_2yrs', 'STD_IMP_REP_dti', 'STD_IMP_REP_emp_length', 'STD_IMP_REP_int_rate', 'STD_IMP_REP_longest_credit_lengt', 'STD_IMP_REP_revol_util', 'STD_IMP_REP_term_length', 'STD_IMP_REP_total_acc']\n" ] } ], "source": [ "print(y)\n", "print(X)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glm Model Build progress: |███████████████████████████████████████████████| 100%\n", "\n", "ModelMetricsRegressionGLM: glm\n", "** Reported on train data. **\n", "\n", "MSE: 0.5931368184742174\n", "RMSE: 0.7701537628773993\n", "MAE: 0.5956793449873514\n", "RMSLE: NaN\n", "R^2: 0.4084032317636015\n", "Mean Residual Deviance: 0.5931368184742174\n", "Null degrees of freedom: 114820\n", "Residual degrees of freedom: 114804\n", "Null deviance: 115119.90310064619\n", "Residual deviance: 68104.56263402812\n", "AIC: 265909.40858015395\n" ] }, { "data": { "text/plain": [] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# elastic net regularized regression \n", "# - Gaussian family, i.e. squared loss, for linear regression\n", "# - L1 for variable selection\n", "# - L2 for handling multicollinearity\n", "# - IRLS for handling outliers\n", "# - with lamba parameter tuning for variable selection\n", "\n", "# initialize\n", "loan_glm = H2OGeneralizedLinearEstimator(family='gaussian',\n", " model_id='loan_glm1',\n", " solver='IRLSM',\n", " standardize=True,\n", " lambda_search=True)\n", "\n", "# train \n", "loan_glm.train(X, y, training_frame=train)\n", "\n", "# print trained model info\n", "loan_glm.model_performance()\n", "\n", "# view detailed results at http://host:ip/flow/index.html" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.3542617996" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# range of target\n", "test[y].max() - test[y].min()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.7701537628773993\n", "0.7653476862419313\n" ] } ], "source": [ "# measure train and test MSE\n", "print(loan_glm.rmse(train=True))\n", "print(loan_glm.model_performance(test_data=test).rmse())" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "GRP_verification_status : -0.3123706947972687\n", "GRP_purpose : -0.05521562033167105\n", "STD_IMP_REP_delinq_2yrs : -0.036637777467456015\n", "bad_loan.0 : -0.0170009822557311\n", "GRP_home_ownership : -0.012845623138055633\n", "GRP_REP_home_ownership : -0.012845623138052533\n", "GRP_addr_state : -0.00021768833267589687\n", "STD_IMP_REP_revol_util : -5.7935332662382646e-05\n", "bad_loan.1 : 0.01700491518235263\n", "STD_IMP_REP_emp_length : 0.02444757417874919\n", "STD_IMP_REP_total_acc : 0.031125864841989044\n", "STD_IMP_REP_longest_credit_lengt : 0.034619435692922036\n", "STD_IMP_REP_dti : 0.05680212025972718\n", "STD_IMP_REP_int_rate : 0.06870922147433967\n", "STD_IMP_REP_term_length : 0.27328976276834305\n", "STD_IMP_REP_annual_inc : 0.3919183032955053\n", "Intercept : 0.9909562551014716\n" ] } ], "source": [ "# print non-zero model parameters\n", "for name, val in sorted(loan_glm.coef().items(), key=operator.itemgetter(1)): \n", " if val != 0.0:\n", " print(name, ': ', val)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
STD_IMP_REP_loan_amnt predict
-1.34733 -1.19687
-1.01918 -0.967605
-1.2716 -0.758736
-1.52402 -0.737375
-0.38813 -0.698802
-1.19588 -0.151086
-0.892972-0.396209
1.00019 0.508449
-0.38813 -0.577476
0.242923 0.223181
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot top frame values\n", "yhat_frame = test.cbind(loan_glm.predict(test))\n", "print(yhat_frame[0:10, [y, 'predict']])\n", "\n", "# plot sorted predictions\n", "%matplotlib inline\n", "yhat_frame_df = yhat_frame[[y, 'predict']].as_data_frame()\n", "yhat_frame_df.sort_values(by=y, inplace=True)\n", "yhat_frame_df.reset_index(inplace=True, drop=True)\n", "ax = yhat_frame_df.plot(title='Ranked Predictions Plot', y='predict')\n", "_ = yhat_frame_df.plot(y=y, ax=ax)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Are you sure you want to shutdown the H2O instance running at http://127.0.0.1:54321 (Y/N)? y\n", "H2O session _sid_803a closed.\n" ] } ], "source": [ "h2o.cluster().shutdown(prompt=True)" ] } ], "metadata": { "anaconda-cloud": {}, "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.4" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 03_regression/src/py_part_3_penalized_logistic_regression.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import h2o\n", "from h2o.estimators.glm import H2OGeneralizedLinearEstimator" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: java version \"1.8.0_112\"; Java(TM) SE Runtime Environment (build 1.8.0_112-b16); Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)\n", " Starting server from /Users/phall/anaconda/lib/python3.5/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpqzjvh3lj\n", " JVM stdout: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpqzjvh3lj/h2o_phall_started_from_python.out\n", " JVM stderr: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpqzjvh3lj/h2o_phall_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321... successful.\n" ] }, { "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", "
H2O cluster uptime:02 secs
H2O cluster version:3.11.0.3873
H2O cluster version age:11 days
H2O cluster name:H2O_from_python_phall_ju4dpx
H2O cluster total nodes:1
H2O cluster free memory:3.556 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
H2O internal security:False
Python version:3.5.2 final
" ], "text/plain": [ "-------------------------- ------------------------------\n", "H2O cluster uptime: 02 secs\n", "H2O cluster version: 3.11.0.3873\n", "H2O cluster version age: 11 days\n", "H2O cluster name: H2O_from_python_phall_ju4dpx\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 3.556 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "Python version: 3.5.2 final\n", "-------------------------- ------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "h2o.init()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# location of clean file\n", "path = '/Users/phall/workspace/GWU_data_mining/03_regression/data/loan_clean.csv'" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# define input variable measurement levels \n", "# strings automatically parsed as enums (nominal)\n", "# numbers automatically parsed as numeric\n", "col_types = {'bad_loan': 'enum'}" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "frame = h2o.import_file(path=path, col_types=col_types) # multi-threaded import" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rows:163987\n", "Cols:18\n", "\n", "\n" ] }, { "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", "
id bad_loan GRP_REP_home_ownership GRP_addr_state GRP_home_ownership GRP_purpose GRP_verification_status _WARN_ STD_IMP_REP_annual_inc STD_IMP_REP_delinq_2yrs STD_IMP_REP_dti STD_IMP_REP_emp_length STD_IMP_REP_int_rate STD_IMP_REP_loan_amnt STD_IMP_REP_longest_credit_lengt STD_IMP_REP_revol_util STD_IMP_REP_term_length STD_IMP_REP_total_acc
type int enum int int int int int int real real real real real real real real real real
mins 10001.0 1.0 1.0 1.0 1.0 1.0 NaN -1.767455639 -0.39219617 -2.119639396 -1.6213902740000001 -1.907046215 -1.587129405 -2.22445124 -2.164541326 -0.516495577 -2.058861889
mean 91994.0 2.5740028172964924 11.4093373255197032.5740028172964924 3.24494014769463452.340356247751345 0.0 2.38744452882879e-11 2.2959296297769782e-12 6.807013811211564e-11-3.566867876239133e-11 -8.948753565861857e-128.311927579716105e-11 5.0612534090153816e-11 -1.4734128080190765e-11 -1.5009542966560638e-10 8.060924856225354e-13
maxs 173987.0 5.0 37.0 5.0 14.0 3.0 NaN 4.6180619798 4.1566950661 3.0371487270000004 1.2288169612 2.8376799992 2.7671323946 3.1431598296 3.0363495275 1.9718787627 3.0684672884
sigma 47339.11363414683 0.6675260435449262 9.971926133461404 0.6675260435449262 2.26728920752597540.5040864341768772 -0.0 0.9999999999982868 0.9999999999212518 1.0000000000037712 1.0000000000339833 1.0000000000199503 0.999999999985285 0.9999999999850594 1.000000000017688 1.0000000000642086 1.0000000000331841
zeros 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
missing0 0 0 0 0 0 0 163987 0 0 0 0 0 0 0 0 0 0
0 10001.0 0 3.0 14.0 3.0 3.0 2.0 nan -1.1992995020000001 -0.39219617 1.5712460425 1.2288169612 -0.7047730510000001 -1.019182214 1.6839024850000002 1.1858716502 -0.516495577 -1.359278248
1 10002.0 1 3.0 10.0 3.0 8.0 2.0 nan -1.04507688 -0.39219617 -1.9861534850000002 -1.6213902740000001 0.3572732234 -1.3347084310000001 -0.42059567400000003 -1.7882703350000002 1.9718787627 -1.7965180230000002
2 10003.0 0 3.0 7.0 3.0 7.0 3.0 nan -1.501267394 -0.39219617 -0.9556422520000001 1.2288169612 0.5158905241 -1.34732948 -0.7212382690000001 1.7782983174 -0.516495577 -1.271830292
3 10004.0 0 3.0 2.0 3.0 4.0 2.0 nan -0.303921333 -0.39219617 0.5500788236 1.2288169612 -0.051913437 -0.388129779 0.0303682169 0.0325652593 -0.516495577 1.089264497
4 10005.0 0 3.0 14.0 3.0 10.0 2.0 nan -0.890854259 -0.39219617 -0.624597193 -0.7663281030000001 -1.3369434530000002 -1.019182214 -0.8220262690000001 -1.0317254690000002 -0.516495577 -1.0969343820000002
5 10006.0 0 3.0 2.0 3.0 8.0 2.0 nan -0.5824090160000001 -0.39219617 -1.4054897720000001 0.9437962377 1.1319693155000001 -1.271603188 -1.623166051 1.3379811999 -0.516495577 -1.7965180230000002
6 10007.0 1 4.0 2.0 4.0 7.0 2.0 nan -0.788039178 -0.39219617 -1.37879259 -0.48130738 1.7388529011 -0.9434559220000001 -1.17220216 -0.8596015050000001 1.9718787627 -1.0094864270000001
7 10008.0 1 3.0 4.0 3.0 4.0 2.0 nan -1.430633434 -0.39219617 0.2937858745 -1.6213902740000001 -0.235817553 -0.971853281 -1.17220216 -0.703489072 1.9718787627 -1.883965979
8 10009.0 0 4.0 14.0 4.0 2.0 3.0 nan 0.0344814697 -0.39219617 0.032153489 -0.196286656 0.2147475328 -0.8298664840000001 -0.270274377 -1.339947451 1.9718787627 -0.135006875
9 10010.0 0 4.0 2.0 4.0 2.0 2.0 nan 0.1115927805 -0.39219617 -0.680661276 1.2288169612 -0.235817553 -0.13570880500000002 1.0826172966 0.5213930910000001 -0.516495577 0.8269206315000001
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "frame.describe()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# split into training, validation and test\n", "train, test = frame.split_frame([0.7])" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# assign target and inputs for linear regression\n", "y = 'bad_loan'\n", "X = [name for name in frame.columns if name not in ['id', '_WARN_', y]]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bad_loan\n", "['GRP_REP_home_ownership', 'GRP_addr_state', 'GRP_home_ownership', 'GRP_purpose', 'GRP_verification_status', 'STD_IMP_REP_annual_inc', 'STD_IMP_REP_delinq_2yrs', 'STD_IMP_REP_dti', 'STD_IMP_REP_emp_length', 'STD_IMP_REP_int_rate', 'STD_IMP_REP_loan_amnt', 'STD_IMP_REP_longest_credit_lengt', 'STD_IMP_REP_revol_util', 'STD_IMP_REP_term_length', 'STD_IMP_REP_total_acc']\n" ] } ], "source": [ "print(y)\n", "print(X)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# set target to factor - for logisitic regression\n", "train[y] = train[y].asfactor()\n", "test[y] = test[y].asfactor()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glm Model Build progress: |███████████████████████████████████████████████| 100%\n" ] } ], "source": [ "# elastic net regularized regression\n", "# - binomial family for logistic regression\n", "# - L1 for variable selection\n", "# - L2 for handling multicollinearity\n", "# - IRLS for handling outliers\n", "# - with lamba parameter tuning for variable selection\n", "\n", "# initialize\n", "loan_glm = H2OGeneralizedLinearEstimator(family='binomial',\n", " model_id='loan_glm2',\n", " solver='IRLSM',\n", " standardize=True,\n", " lambda_search=True)\n", "\n", "# train \n", "loan_glm.train(X, y, training_frame=train)\n", "\n", "# view detailed results at http://host:ip/flow/index.html" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.6810696481515511\n", "0.6736120208845109\n" ] } ], "source": [ "# measure train and test AUC\n", "print(loan_glm.auc(train=True))\n", "print(loan_glm.model_performance(test_data=test).auc())" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "GRP_REP_home_ownership : 0.020513214688462438\n", "Intercept : -1.7030791806036532\n", "STD_IMP_REP_int_rate : 0.42135857374495084\n", "GRP_verification_status : -0.003938827536051814\n", "STD_IMP_REP_term_length : 0.12487952945144505\n", "STD_IMP_REP_dti : 0.14938938856970724\n", "STD_IMP_REP_annual_inc : -0.22640948089354618\n", "STD_IMP_REP_delinq_2yrs : 0.007632494816369783\n", "GRP_addr_state : -0.0014574882705564829\n", "GRP_purpose : 0.024782009588586243\n", "STD_IMP_REP_revol_util : 0.07328727513849898\n", "STD_IMP_REP_total_acc : -0.10700058307918586\n", "STD_IMP_REP_loan_amnt : 0.08314512862872152\n", "STD_IMP_REP_longest_credit_lengt : 0.005262595727552371\n", "GRP_home_ownership : 0.020513214688462626\n" ] } ], "source": [ "# print non-zero model parameters\n", "for name, val in loan_glm.coef().items():\n", " if val != 0.0:\n", " print(name, ': ', val)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "H2O session _sid_96dd closed.\n" ] } ], "source": [ "h2o.cluster().shutdown(prompt=False)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 03_regression/src/spark_kaggle_starter/README.md ================================================

Spark Kaggle Starter

Summary: This code takes much of Patrick's code and upgrades it with Spark and Pysparkling functionality. Also included is an EMR automation tool for launching clusters and running code as well as a logging tool for logging plots and code from your cluster's environment. [spark_main.py:](spark_main.py) This file will run the data prep and training. If you would like to run this with a local installation of spark and pysparkling please remove all the lines with logging or make sure the LoggingController can access an S3 bucket from your local env. [emr_controler.py:](spark_controler/emr_controler.py) This file helps with spinning up an EC2 cluster and zipping up code and submitting it to spark for execution. See README in directory. See README in spark_controler directory. [LoggingController.py:](logging_lib/LoggingController.py) This class will log files and plots. See README in logging_lib directory. [MarkdownBuilder.py:](logging_lib/MarkdownBuilder.py) This class will takes logs and make them into a nice clean markdown file. See README in logging_lib directory. Using the EMR Automation tool and loggin tool: When using these tools you will need to download the aws command line interface (aws cli) and run aws configure and give it access credentials that can access S3 and EMR. My suggestion is to just make a user with Administration permissions to avoid confustion of policies and roles (create a group with that permission then a user and download credentials of the user). To install aws cli. On Windows find the .msi file on AWS (easy takes like a whole 2 seconds). For macOS either go through the annoying terminal commands OR install homebrew and type brew install awscli. After the aws cli is installed in terminal: `aws configure` Type in your access key and secret key from IAM user role. For region type `us-east-1` (or another region if you want to use it and know what you're doing). Leave the last field blank (just hit enter past it). Done. You have set up the 'default' profile. ================================================ FILE: 03_regression/src/spark_kaggle_starter/feature_combiner.py ================================================ # imports import pandas as pd import numpy as np def feature_combiner(training_frame, test_frame, nums, valid_frame = None,frame_type='h2o'): """ Combines numeric features using simple arithmatic operations. :param training_frame: Training frame from which to generate features and onto which generated feeatures will be cbound. :param test_frame: Test frame from which to generate features and onto which generated feeatures will be cbound. :param nums: List of original numeric features from which to generate combined features. :param valid_frame: To also combine features on a validation frame include this (optional) :param frame_type: The type of frame that is input and output. Accepted: 'h2o', 'pandas' return: Tuple of either (train_df, test_df) or (train_df, valid_df, test_df) """ total = len(nums) if frame_type == 'spark': train_df = training_frame test_df = test_frame valid_df = None if valid_frame: valid_df = valid_frame for i, col_i in enumerate(nums): print('Combining: ' + col_i + ' (' + str(i+1) + '/' + str(total) + ') ...') for j, col_j in enumerate(nums): # don't repeat (i*j = j*i) if i < j: combined_col_name = str(col_i + '|' + col_j) # multiply, add a new column train_df = train_df.withColumn(combined_col_name, train_df[col_i]*train_df[col_j]) test_df = test_df.withColumn(combined_col_name, test_df[col_i]*test_df[col_j]) if valid_frame: valid_df = valid_df.withColumn(combined_col_name, valid_df[col_i]*valid_df[col_j]) if valid_frame: return train_df, valid_df, test_df else: return train_df, test_df print('DONE combining features.') else: train_df, test_df, valid_df = None, None, None if frame_type == 'h2o': # convert to pandas train_df = training_frame.as_data_frame() test_df = test_frame.as_data_frame() valid_df = valid_frame.as_data_frame() elif frame_type == 'pandas': train_df = training_frame test_df = test_frame valid_df = valid_frame for i, col_i in enumerate(nums): print('Combining: ' + col_i + ' (' + str(i+1) + '/' + str(total) + ') ...') for j, col_j in enumerate(nums): # don't repeat (i*j = j*i) if i < j: # convert to pandas col_i_train_df = train_df[col_i] col_j_train_df = train_df[col_j] col_i_test_df = test_df[col_i] col_j_test_df = test_df[col_j] col_i_valid_df = valid_df[col_i] col_j_valid_df = valid_df[col_j] # multiply, convert back to h2o train_df[str(col_i + '|' + col_j)] = col_i_train_df.values*col_j_train_df.values test_df[str(col_i + '|' + col_j)] = col_i_test_df.values*col_j_test_df.values if valid_frame: valid_df[str(col_i + '|' + col_j)] = col_i_valid_df.values*col_j_valid_df.values print('DONE combining features.') if frame_type == 'pandas': if valid_frame: return (train_df, valid_df, test_df) else: return (train_df, test_df) elif frame_type == 'h2o': # convert back to h2o import h2o print('Converting to H2OFrame ...') # convert train back to h2o training_frame = h2o.H2OFrame(train_df) training_frame.columns = list(train_df) # conserve memory del train_df # convert test back to h2o test_frame = h2o.H2OFrame(test_df) test_frame.columns = list(test_df) # conserve memory del test_df validation_frame = None if valid_frame: # convert test back to h2o validation_frame = h2o.H2OFrame(valid_df) validation_frame.columns = list(valid_df) # conserve memory del valid_df print('Done.') if valid_frame: return training_frame, validation_frame, test_frame else: return training_frame, test_frame ================================================ FILE: 03_regression/src/spark_kaggle_starter/get_type_lists.py ================================================ def get_type_lists(frame, rejects=['Id', 'ID','id'],frame_type='h2o'): """Creates lists of numeric and categorical variables. :param frame: The frame from which to determine types. :param rejects: Variable names not to be included in returned lists. :param frame_type: The type of frame being used. Accepted: ['h2o','pandas','spark'] :return: Tuple of lists for numeric and categorical variables in the frame. """ #Handle spark type data frames if frame_type == 'spark': nums, cats = [], [] for key, val in frame.dtypes: if key not in rejects: if val == 'string': cats.append(key) else: # ['int','double'] nums.append(key) print('Numeric =', nums) print() print('Categorical =', cats) return nums, cats else: nums, cats = [], [] for key, val in frame.types.items(): if key not in rejects: if val == 'enum': cats.append(key) else: nums.append(key) print('Numeric =', nums) print() print('Categorical =', cats) return nums, cats ================================================ FILE: 03_regression/src/spark_kaggle_starter/logging_lib/LICENSE.md ================================================ The MIT License (MIT) Copyright (c) 2017 Keston Crandall Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: 03_regression/src/spark_kaggle_starter/logging_lib/LoggingController.py ================================================ import logging import os import io from datetime import datetime import boto3 import botocore class LoggingController(object): """ A class for logging code output and mathplotlib plots in aws s3. Only ONE object should be instantiated for a script for consolidated results. """ def __init__(self, profile_name = 'default', s3_bucket = 'emr-related-files',s3_bucket_path='job_logs/',app_name='MyApp'): self.init_datetime_string = self.get_datetime_str() #Used to create an s3 directory so multiple scripts don't overwrite the same files self.s3_bucket = s3_bucket # S3 Bucket to use for storage self.profile_name = profile_name # Define IAM profile name (see: http://boto3.readthedocs.io/en/latest/guide/configuration.html)(config file located at user folder .aws directory) self.s3_bucket_path = s3_bucket_path #The path to store the logs on your bucket (must end in a / b/c its a directory) self.app_name = app_name #The name of your app def get_datetime_str(self): """ Gets a formated datetime string for naming purposes. """ return datetime.now().strftime("%Y%m%d.%H:%M:%S.%f") def get_path_for_new_log(self): """ Gets path to store new log message. """ return str(self.s3_bucket_path + 'unbuilt/'+ self.app_name + '&&&' + self.init_datetime_string + '/' + self.get_datetime_str()) def log_matplotlib_plot(self,plot, format = 'png'): """ Uploads matplotlib plot to an s3 bucket. :param plot: The plot object to upload to s3. :param image_name: The image name (should be unique to prevent overwrite) :param format: The file type to plot.savefig as. :return: """ img_data = io.BytesIO() try: plot.savefig(img_data, format='png') except: #Some plots throw an error which is fixed by this fig = plot.get_figure() fig.savefig(img_data) img_data.seek(0) s3 = boto3.resource('s3') bucket = s3.Bucket(self.s3_bucket) path = self.get_path_for_new_log() + '.png' bucket.put_object(Body=img_data, ContentType='image/png', Key=path) def log_string(self,string): s3 = boto3.resource('s3') bucket = s3.Bucket(self.s3_bucket) path = self.get_path_for_new_log() + '.txt' bucket.put_object(Body=string, ContentType='text/plain', Key=path) ================================================ FILE: 03_regression/src/spark_kaggle_starter/logging_lib/MarkdownBuilder.py ================================================ import logging import os import io from datetime import datetime import boto3 from boto3.s3.transfer import S3Transfer import botocore import platform class MarkdownBuilder(object): """ A class for logging code output and mathplotlib plots in aws s3. Only ONE object should be instantiated for a script for consolidated results. """ def __init__(self, profile_name = 'default', s3_bucket = 'emr-related-files',s3_bucket_path='job_logs/',app_name='MyApp',path_to_save_logs_local=os.path.dirname(__file__)+'/logs'): self.s3_bucket = s3_bucket # S3 Bucket to use for storage self.profile_name = profile_name # Define IAM profile name (see: http://boto3.readthedocs.io/en/latest/guide/configuration.html)(config file located at user folder .aws directory) self.s3_bucket_path = s3_bucket_path #The path to store the logs on your bucket (must end in a / b/c its a directory) self.app_name = app_name #The name of your app self.path_to_save_logs_local = path_to_save_logs_local #A path to save all the built logs on your local machine. def get_datetime_str(self): """ Gets a formated datetime string for naming purposes. """ return datetime.now().strftime("%Y%m%d.%H:%M:%S.%f") def log_string(self,string): s3 = boto3.resource('s3') bucket = s3.Bucket(self.s3_bucket) path = self.get_path_for_new_log() bucket.put_object(Body=string, ContentType='text/plain', Key=path) def build_markdowns(self): s3 = boto3.resource('s3') bucket = s3.Bucket(self.s3_bucket) result = bucket.meta.client.list_objects_v2(Bucket=bucket.name, Delimiter='/', Prefix=self.s3_bucket_path+'unbuilt/') for o in result.get('CommonPrefixes'): prefix = o.get('Prefix') #example: job_logs/unbuilt/MyApp&&&20170607.00:54:28.355680/ splits = prefix.split('/') folder_name = splits[-2] splits2 = folder_name.split('&&&') app_name = splits2[0] timestamp = splits2[1] result_inner = bucket.meta.client.list_objects_v2(Bucket=bucket.name, Prefix=prefix) objects_to_delete = [] #Start making the first unbuilt markdown file markdown_str = 'Logs for ' + app_name + ' executed on ' +timestamp + ':\n' built_file_directory = self.s3_bucket_path + 'built/' + app_name + '/'+timestamp for o2 in result_inner.get('Contents'): key = o2.get('Key') key_split = key.split('/') filename, file_extension = os.path.splitext(key_split[-1]) #Get ride of characters that are bad for windows files filename = filename.replace(':','').replace('.','') #This file will be deleted later objects_to_delete.append({'Key':key}) #Download the file obj = s3.Object(bucket, key) if file_extension in ['.png','.jpg']: #its a plot or image if self.path_to_save_logs_local != False: file_path = self.path_to_save_logs_local+'/'+app_name+'/'+timestamp.replace(':','').replace('.','')+'/data/' if platform.system() == 'Windows': file_path = file_path.replace('/','\\').replace(':','.') #Make the directory if it doesnt exist if not os.path.exists(file_path): os.makedirs(file_path) transfer = S3Transfer(boto3.client('s3')) #download the file to a local location transfer.download_file(self.s3_bucket,key,file_path+filename+file_extension) markdown_str += '![{image_name}]({relative_path})'.format(image_name=filename,relative_path='data/'+filename+file_extension) + '\n' else: file_content = boto3.client('s3').get_object(Bucket=self.s3_bucket,Key=key)['Body'].read().decode('UTF-8') print(file_content) markdown_str += "

`"+str(file_content)+'`

'+'\n' s3.Object(self.s3_bucket,built_file_directory+'/data/'+filename+file_extension).copy_from(CopySource=self.s3_bucket+'/'+key) bucket.put_object(Body=markdown_str, ContentType='text/plain', Key=built_file_directory+'/log.md') if self.path_to_save_logs_local != False: file_path = self.path_to_save_logs_local+'/'+app_name+'/'+timestamp.replace(':','').replace('.','') if platform.system() == 'Windows': file_path = file_path.replace('/','\\').replace(':','.') #Make the directory if it doesnt exist if not os.path.exists(file_path): os.makedirs(file_path) file = open(file_path+'/log.md','w') file.write(markdown_str) file.close() #delete the old files now that they have been moved to built bucket.delete_objects(Delete={'Objects':objects_to_delete}) ================================================ FILE: 03_regression/src/spark_kaggle_starter/logging_lib/README.md ================================================

Logging Library

Summary: This package is designed to make logging easy and clean from an environment where one isn't watching a terminal screen for the output and doesn't want to deal with ugly stdout (for example: using steps to submit jobs on AWS EMR). This library will allow one to log both strings and matplotlib images during execution. After one sees that all their jobs has finished they can run another function to create markdown files with all the logs and plots ordered. S3 is used as a storage solution for this library.

Code examples

LoggingController

Summary: This class should be instantiated once and only once from the spark or other application you'd like to log from. | Required parameters for LoggingController | |---| | profile_name: Define IAM profile name ('aws configure' cli command uses 'default')(see: http://boto3.readthedocs.io/en/latest/guide/configuration.html) | | s3_bucket: S3 Bucket to use for storage | Usage: the function log_string() will log a string value. The function log_matplotlib_plot() will take a matplotlib plot and export the image and display it inline on your markdown file. [Code:](LoggingController.py) ``` import matplotlib matplotlib.use('Agg') import numpy as np import matplotlib.pyplot as plt N = 5 menMeans = (20, 35, 30, 35, 27) womenMeans = (25, 32, 34, 20, 25) menStd = (2, 3, 4, 1, 2) womenStd = (3, 5, 2, 3, 3) ind = np.arange(N) # the x locations for the groups width = 0.35 # the width of the bars: can also be len(x) sequence p1 = plt.bar(ind, menMeans, width, color='#d62728', yerr=menStd) p2 = plt.bar(ind, womenMeans, width, bottom=menMeans, yerr=womenStd) plt.ylabel('Scores') plt.title('Scores by group and gender') plt.xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5')) plt.yticks(np.arange(0, 81, 10)) plt.legend((p1[0], p2[0]), ('Men', 'Women')) from LoggingController import LoggingController controller = LoggingController() controller.profile_name = 'default' controller.s3_bucket = 'emr-related-files' controller.log_string('first') controller.log_matplotlib_plot(plt) controller.log_string('third') ```

MarkdownBuilder

Usage: Run this code after all your steps have been completed on the EMR cluster to save built logs both locally and on S3 as a backup. Note: if you run this while any jobs are partially complete you will have a partially built log file and will have to manually repair it (no data will be lost, however. Data is only moved on S3 never deleted.) | Required parameters for MarkdownBuilder | |---| | profile_name: Define IAM profile name ('aws configure' cli command uses 'default')(see: http://boto3.readthedocs.io/en/latest/guide/configuration.html) | | s3_bucket: S3 Bucket to use for storage | | path_to_save_logs_local: A path to save all the built logs on your local machine. | [Code:](MarkdownBuilder.py) ``` from MarkdownBuilder import MarkdownBuilder builder = MarkdownBuilder() builder.profile_name = 'default' builder.s3_bucket = 'emr-related-files' builder.path_to_save_logs_local = 'logs' builder.build_markdowns() ```

Additional Considerations

Gotcha You will need to set this specific mathplotlib command after importing and before generating a plot to avoid a display error. This is because servers don't have a display attached to show the plots. ``` import matplotlib matplotlib.use('Agg') ``` ================================================ FILE: 03_regression/src/spark_kaggle_starter/logging_lib/__init__.py ================================================ from . import * ================================================ FILE: 03_regression/src/spark_kaggle_starter/logging_lib/example.py ================================================ # a stacked bar plot with errorbars import numpy as np import matplotlib.pyplot as plt N = 5 menMeans = (20, 35, 30, 35, 27) womenMeans = (25, 32, 34, 20, 25) menStd = (2, 3, 4, 1, 2) womenStd = (3, 5, 2, 3, 3) ind = np.arange(N) # the x locations for the groups width = 0.35 # the width of the bars: can also be len(x) sequence p1 = plt.bar(ind, menMeans, width, color='#d62728', yerr=menStd) p2 = plt.bar(ind, womenMeans, width, bottom=menMeans, yerr=womenStd) plt.ylabel('Scores') plt.title('Scores by group and gender') plt.xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5')) plt.yticks(np.arange(0, 81, 10)) plt.legend((p1[0], p2[0]), ('Men', 'Women')) # from LoggingController import LoggingController # controller = LoggingController() # controller.profile_name = 'default' # controller.s3_bucket = 'emr-related-files' # controller.log_string('first') # controller.log_matplotlib_plot(plt) # controller.log_string('third') from MarkdownBuilder import MarkdownBuilder builder = MarkdownBuilder() builder.profile_name = 'default' builder.s3_bucket = 'emr-related-files' builder.path_to_save_logs_local = 'logs' builder.build_markdowns() ================================================ FILE: 03_regression/src/spark_kaggle_starter/logging_lib/markdown_preview_github.css ================================================ .markdown-preview.markdown-preview { // Includes GitHub.com styles from `../assets/primer-markdown.less`. // Source: https://github.com/primer/markdown/blob/master/components/markdown.scss // .markdown-body(); // The styles below override/complement the GitHub.com styles // It's needed because some markup or global styles are different padding: 30px; font-size: 16px; color: #333; background-color: #fff; overflow: scroll; @font-face { font-family: 'Open Sans'; font-style: normal; font-weight: normal; src: local('Open Sans Regular'),url('./github/400.woff') format('woff') } @font-face { font-family: 'Open Sans'; font-style: italic; font-weight: normal; src: local('Open Sans Italic'),url('./github/400i.woff') format('woff') } @font-face { font-family: 'Open Sans'; font-style: normal; font-weight: bold; src: local('Open Sans Bold'),url('./github/700.woff') format('woff') } @font-face { font-family: 'Open Sans'; font-style: italic; font-weight: bold; src: local('Open Sans Bold Italic'),url('./github/700i.woff') format('woff') } html { font-size: 16px; } body { font-family: "Open Sans","Clear Sans","Helvetica Neue",Helvetica,Arial,sans-serif; color: rgb(51, 51, 51); line-height: 1.6; } #write{ max-width: 860px; margin: 0 auto; padding: 20px 30px 40px 30px; padding-top: 20px; padding-bottom: 100px; } #write > ul:first-child, #write > ol:first-child{ margin-top: 30px; } body > *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } h1, h2, h3, h4, h5, h6 { position: relative; margin-top: 1rem; margin-bottom: 1rem; font-weight: bold; line-height: 1.4; cursor: text; } h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor { /*background: url("../../images/modules/styleguide/para.png") no-repeat 10px center;*/ text-decoration: none; } h1 tt, h1 code { font-size: inherit; } h2 tt, h2 code { font-size: inherit; } h3 tt, h3 code { font-size: inherit; } h4 tt, h4 code { font-size: inherit; } h5 tt, h5 code { font-size: inherit; } h6 tt, h6 code { font-size: inherit; } h1 { padding-bottom: .3em; font-size: 2.25em; line-height: 1.2; border-bottom: 1px solid #eee; } h2 { padding-bottom: .3em; font-size: 1.75em; line-height: 1.225; border-bottom: 1px solid #eee; } h3 { font-size: 1.5em; line-height: 1.43; } h4 { font-size: 1.25em; } h5 { font-size: 1em; } h6 { font-size: 1em; color: #777; } p, blockquote, ul, ol, dl, table{ margin: 0.8em 0; } li>ol, li>ul { margin: 0 0; } hr { height: 4px; padding: 0; margin: 16px 0; background-color: #e7e7e7; border: 0 none; overflow: hidden; box-sizing: content-box; border-bottom: 1px solid #ddd; } body > h2:first-child { margin-top: 0; padding-top: 0; } body > h1:first-child { margin-top: 0; padding-top: 0; } body > h1:first-child + h2 { margin-top: 0; padding-top: 0; } body > h3:first-child, body > h4:first-child, body > h5:first-child, body > h6:first-child { margin-top: 0; padding-top: 0; } a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 { margin-top: 0; padding-top: 0; } h1 p, h2 p, h3 p, h4 p, h5 p, h6 p { margin-top: 0; } li p.first { display: inline-block; } ul, ol { padding-left: 30px; } ul:first-child, ol:first-child { margin-top: 0; } ul:last-child, ol:last-child { margin-bottom: 0; } blockquote { border-left: 4px solid #dddddd; padding: 0 15px; color: #777777; } blockquote blockquote { padding-right: 0; } table { padding: 0; word-break: initial; } table tr { border-top: 1px solid #cccccc; background-color: white; margin: 0; padding: 0; } table tr:nth-child(2n) { background-color: #f8f8f8; } table tr th { font-weight: bold; border: 1px solid #cccccc; text-align: left; margin: 0; padding: 6px 13px; } table tr td { border: 1px solid #cccccc; text-align: left; margin: 0; padding: 6px 13px; } table tr th:first-child, table tr td:first-child { margin-top: 0; } table tr th:last-child, table tr td:last-child { margin-bottom: 0; } .CodeMirror-gutters { border-right: 1px solid #ddd; } .md-fences, code, tt { border: 1px solid #ddd; background-color: #f8f8f8; color: inherit; border-radius: 3px; padding: 0; font-family: Consolas, "Liberation Mono", Courier, monospace; padding: 2px 4px 0px 4px; font-size: 0.9em; /*white-space: 'pre';*/ overflow: scroll; white-space: nowrap; } .md-fences { margin-bottom: 15px; margin-top: 15px; padding: 0.2em 1em; padding-top: 8px; padding-bottom: 6px; } .task-list{ padding-left: 0; } .task-list-item { padding-left:32px; } .task-list-item input { top: 3px; left: 8px; } @media screen and (min-width: 914px) { /*body { width: 854px; margin: 0 auto; }*/ } @media print { html { font-size: 13px; } table, pre { page-break-inside: avoid; } pre { word-wrap: break-word; } } .md-fences { background-color: #f8f8f8; } #write pre.md-meta-block { padding: 1rem; font-size: 85%; line-height: 1.45; background-color: #f7f7f7; border: 0; border-radius: 3px; color: #777777; margin-top: 0 !important; } .mathjax-block>.code-tooltip { bottom: .375rem; } #write>h3.md-focus:before{ left: -1.5625rem; top: .375rem; } #write>h4.md-focus:before{ left: -1.5625rem; top: .285714286rem; } #write>h5.md-focus:before{ left: -1.5625rem; top: .285714286rem; } #write>h6.md-focus:before{ left: -1.5625rem; top: .285714286rem; } .md-image>.md-meta { border: 1px solid #ddd; border-radius: 3px; font-family: Consolas, "Liberation Mono", Courier, monospace; padding: 2px 4px 0px 4px; font-size: 0.9em; color: inherit; } .md-tag{ color: inherit; } .md-toc { margin-top:20px; padding-bottom:20px; } #typora-quick-open { border: 1px solid #ddd; background-color: #f8f8f8; } #typora-quick-open-item { background-color: #FAFAFA; border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee; border-style: solid; border-width: 1px; } #md-notification:before { top: 10px; } /** focus mode */ .on-focus-mode blockquote { border-left-color: rgba(85, 85, 85, 0.12); } header, .context-menu, .megamenu-content, footer{ font-family: "Segoe UI", "Arial", sans-serif; } } ================================================ FILE: 03_regression/src/spark_kaggle_starter/main.py ================================================ import os import sys from spark_controler.emr_controller import EMRController deployer = EMRController() deployer.profile_name = 'default' deployer.subnet_id = 'subnet-50c2a327' deployer.key_name = 'EMR_Key' deployer.s3_bucket = 'emr-related-files' deployer.master_instance_type = 'm4.xlarge' deployer.slave_instance_type = 'm4.xlarge' deployer.worker_instance_count = 2 deployer.set_maxmimum_allocation = True deployer.number_of_executors_per_node = 1 # deployer.run('create') deployer.job_flow_id = 'j-7F2D0E3L1W1W' deployer.path_script = os.path.dirname( __file__ ) deployer.file_to_run = 'spark_main.py' # Use this if you want to spark submit on the server manually in an ssh shell # spark-submit --packages ai.h2o:sparkling-water-core_2.11:2.1.9 --conf spark.dynamicAllocation.enabled=false yourfile.py deployer.additional_job_args = ['--packages', 'ai.h2o:sparkling-water-core_2.11:2.1.7', '--conf', 'spark.dynamicAllocation.enabled=false'] deployer.run('run_job') ================================================ FILE: 03_regression/src/spark_kaggle_starter/spark_controler/LICENSE.md ================================================ The MIT License (MIT) Copyright (c) 2017 Keston Crandall Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: 03_regression/src/spark_kaggle_starter/spark_controler/README.md ================================================

EMR Automation Controller

Summary: This package uses boto3 to interact with AWS's EMR service. It has two main functionalities. First, it will auto launch and bootstrap new EMR clusters. Second, it will auto run code on a cluster by compressing all python files in a directory and submitting them as a step on the cluster.

Code example

| Parameters for creating a cluster: | |---| | profile_name: Define IAM profile name ('aws configure' cli command uses 'default')(see: http://boto3.readthedocs.io/en/latest/guide/configuration.html) | | subnet_id: (Required) The Subnet on AWS for the cluster (try launching a random new cluster and copying from the console page.) | | key_name: (Required) Your ssh key used to ssh into the master node. i.e. 'My_KEY' | | s3_bucket: (Required) An s3 staging bucket to store logs and temporary files. | | master_instance_type: EC2 intance type for the master node(s) | | slave_instance_type: EC2 instance type for the worker nodes | | worker_instance_count: Total number of worker instances. Default is 3. | | set_maxmimum_allocation: Set this to true if you want spark config settings to maximize cluster resources for a single job (useful if you have to set dynamicAllocation to false i.e. for h2o sparkling-water) | | number_of_executors_per_node: If set_maxmimum_allocation is set to True this will set the number of executors per node. Default is 1. | | Required parameters for running a spark_submit step: | |---| | job_flow_id: (Required) AWS's unique ID for an EMR Cluster exameple: 'j-17LA5TIOEEEU3'. You can find this on the EMR console | | path_script: (Required) The path to your python script on local machine. If you are running /user/me/script.py set this to '/user/me'. If you are importing this from the same dir leave it default | | file_to_run: (Required) The file you want to run from the compressed files. Or path to file if not in top directory. | | additional_job_args: Set to false if you don't want any parameters | Code example 1: This code will start up a cluster and run a pysparkling script. ``` import os from emr_controller import EMRController deployer = EMRController() deployer.profile_name = 'default' deployer.subnet_id = 'subnet-50c2a327' deployer.key_name = 'EMR_Key' deployer.s3_bucket = 'emr-related-files' deployer.master_instance_type = 'm4.xlarge' deployer.slave_instance_type = 'm4.xlarge' deployer.instance_count = 2 deployer.run('create') deployer.path_script = os.path.dirname( __file__ ) deployer.file_to_run = 'test.py' deployer.additional_job_args = ['--packages', 'ai.h2o:sparkling-water-core_2.11:2.1.7', '--conf', 'spark.dynamicAllocation.enabled=false'] deployer.run('run_job') ``` Code example 2: This code will run a pysparkling script on an existing cluster(j-7F2D0E3L1W1W). ``` import os from emr_controller import EMRController deployer = EMRController() deployer.profile_name = 'default' deployer.s3_bucket = 'emr-related-files' #deployer.job_flow_id = 'j-7F2D0E3L1W1W' deployer.path_script = os.path.dirname( __file__ ) deployer.file_to_run = 'test.py' deployer.additional_job_args = ['--packages', 'ai.h2o:sparkling-water-core_2.11:2.1.7', '--conf', 'spark.dynamicAllocation.enabled=false'] deployer.run('run_job') ``` Suggestion: The bootstrapping action usually takes ~7-15minutes. Comment out the create step and go your console and copy your cluster id. Only run the run('run_job') function on the same cluster. This will also save time and costs as instance hours are rounded up so you always have to pay for one hour. Alternative Authentication If you don't have access to aws cli configurations you can set the aws_access_key and aws_secret_access_key variables, which will override the profile_name variable. ================================================ FILE: 03_regression/src/spark_kaggle_starter/spark_controler/__init__.py ================================================ from . import * ================================================ FILE: 03_regression/src/spark_kaggle_starter/spark_controler/ec2_instance_data_dict.py ================================================ ec2_data_dict = { "t2.nano":{ "cores":"1", "memory":"0.5" }, "t2.micro":{ "cores":"1", "memory":"1" }, "t2.small":{ "cores":"1", "memory":"2" }, "t2.medium":{ "cores":"2", "memory":"4" }, "t2.large":{ "cores":"2", "memory":"8" }, "t2.xlarge":{ "cores":"4", "memory":"16" }, "t2.2xlarge":{ "cores":"8", "memory":"32" }, "m4.large":{ "cores":"2", "memory":"8" }, "m4.xlarge":{ "cores":"4", "memory":"16" }, "m4.2xlarge":{ "cores":"8", "memory":"32" }, "m4.4xlarge":{ "cores":"16", "memory":"64" }, "m4.10xlarge":{ "cores":"40", "memory":"160" }, "m4.16xlarge":{ "cores":"64", "memory":"256" }, "c4.large":{ "cores":"2", "memory":"3.77" }, "c4.xlarge":{ "cores":"4", "memory":"7.5" }, "c4.2xlarge":{ "cores":"8", "memory":"15" }, "c4.4xlarge":{ "cores":"16", "memory":"30" }, "c4.8xlarge":{ "cores":"36", "memory":"60" }, "p2.xlarge":{ "cores":"4", "memory":"61" }, "p2.8xlarge":{ "cores":"32", "memory":"488" }, "p2.16xlarge":{ "cores":"64", "memory":"732" }, "x1.16xlarge":{ "cores":"64", "memory":"976" }, "x1.32xlarge":{ "cores":"128", "memory":"1952" }, "r3.large":{ "cores":"2", "memory":"15" }, "r3.xlarge":{ "cores":"4", "memory":"30.5" }, "r3.2xlarge":{ "cores":"8", "memory":"61" }, "r3.4xlarge":{ "cores":"16", "memory":"122" }, "r3.8xlarge":{ "cores":"32", "memory":"244" }, "r4.large":{ "cores":"2", "memory":"15.25" }, "r4.xlarge":{ "cores":"4", "memory":"30.5" }, "r4.2xlarge":{ "cores":"8", "memory":"61" }, "r4.4xlarge":{ "cores":"16", "memory":"122" }, "r4.8xlarge":{ "cores":"32", "memory":"244" }, "r4.16xlarge":{ "cores":"64", "memory":"488" }, "i3.large":{ "cores":"2", "memory":"7" }, "i3.xlarge":{ "cores":"4", "memory":"30.5" }, "i3.2xlarge":{ "cores":"8", "memory":"61" }, "i3.4xlarge":{ "cores":"16", "memory":"122" }, "i3.8xlarge":{ "cores":"32", "memory":"244" }, "i3.16xlarge":{ "cores":"64", "memory":"488" }, "d2.xlarge":{ "cores":"4", "memory":"30.5" }, "d2.16xlarge":{ "cores":"8", "memory":"61" }, "d2.16xlarge":{ "cores":"16", "memory":"122" }, "d2.16xlarge":{ "cores":"36", "memory":"244" }, } ================================================ FILE: 03_regression/src/spark_kaggle_starter/spark_controler/emr_controller.py ================================================ import boto3 import botocore import time import logging import os from datetime import datetime import tarfile # https://medium.com/@datitran/quickstart-pyspark-with-anaconda-on-aws-660252b88c9a from spark_controler.ec2_instance_data_dict import ec2_data_dict logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') ch.setFormatter(formatter) logger.addHandler(ch) class EMRController(object): def __init__(self, profile_name = 'default', aws_access_key = False, aws_secret_access_key = False, region_name = 'us-east-1', cluster_name = 'Spark-Cluster', master_instance_count = 1,worker_instance_count = 3, master_instance_type = 'm3.xlarge', slave_instance_type = 'm3.xlarge', key_name = 'EMR_Key', subnet_id = 'subnet-50c2a327', software_version = 'emr-5.5.0', s3_bucket = 'emr-related-files', path_script =os.path.dirname( __file__ ), additional_job_args=['--packages', 'ai.h2o:sparkling-water-core_2.11:2.1.7', '--conf', 'spark.dynamicAllocation.enabled=false'], set_maxmimum_allocation=True, number_of_executors_per_node=1 ): self.init_datetime_string = self.get_datetime_str() # Used to create a s3 directory so multiple scripts don't overwrite the same files self.aws_access_key = aws_access_key # If you don't wan to use a credential from the AWS CLI on your machine set this self.aws_secret_access_key = aws_secret_access_key # If you don't wan to use a credential from the AWS CLI on your machine set this self.region_name = region_name # AWS region to run the cluster in i.e. 'us-east-1' self.cluster_name = cluster_name+'_'+self.init_datetime_string # Application Name on EMR self.master_instance_count = master_instance_count # Number of master nodes to deploy self.worker_instance_count = worker_instance_count # Total number of worker instances self.master_instance_type = master_instance_type # EC2 intance type for the master node(s) self.slave_instance_type = slave_instance_type # EC2 instance type for the worker nodes self.key_name = key_name # Your ssh key used to ssh into the master node. i.e. 'My_KEY' self.subnet_id = subnet_id # The Subnet on AWS for the cluster self.software_version = software_version # Elastic Map Reduce Version self.profile_name = profile_name # Define IAM profile name (see: http://boto3.readthedocs.io/en/latest/guide/configuration.html)(config file located at user folder .aws directory) self.s3_bucket = s3_bucket # S3 Bucket to use for storage self.path_script = path_script # The path to your python script. If you are running /user/me/script.py set this to '/user/me'. If you are importing this from the same dir leave it default self.file_to_run = 'test.py' # The file you want to run from the compressed files self.job_flow_id = None # AWS's unique ID for an EMR Cluster exameple: 'j-17LA5TIOEEEU3' self.additional_job_args = additional_job_args # Additional args for submitting an application to cluster self.set_maxmimum_allocation = set_maxmimum_allocation # Calculates the maximum allocation in the cluster to use for the job then sets spark config properties boolean value: True or False self.number_of_executors_per_node = number_of_executors_per_node # The number of executors per node (only used if set_maxmimum_alocation=True) def boto_client(self, service): """ This will return a boto_client set the service i.e. 'emr' or 's3'. :return: boto3.client """ if self.aws_access_key and self.aws_secret_access_key: client = boto3.client(service, aws_access_key_id=self.aws_access_key, aws_secret_access_key=self.aws_secret_access_key, region_name=self.region_name) return client else: session = boto3.Session(profile_name=self.profile_name) return session.client(service, region_name=self.region_name) def load_cluster(self, _spark_properties=False): """ Spins up a cluster on AWS EMR. :param dict _spark_properties: A dict of any default spark properties to set on cluster :return: the response object from boto """ spark_properties = {} if _spark_properties: spark_properties = _spark_properties response = self.boto_client("emr").run_job_flow( Name=self.cluster_name, LogUri='s3://'+self.s3_bucket+'/logs', ReleaseLabel=self.software_version, Instances={ # 'MasterInstanceType': self.master_instance_type, # 'SlaveInstanceType': self.slave_instance_type, # 'InstanceCount': self.instance_count, 'InstanceGroups': [ { 'Name': 'master(s)', 'Market': 'ON_DEMAND',#|'SPOT' 'InstanceRole': 'MASTER',#|'CORE'|'TASK' # 'BidPrice': 'string', 'InstanceType': self.master_instance_type, 'InstanceCount': self.master_instance_count, # 'Configurations': [ # { # 'Classification': 'string', # 'Configurations': {'... recursive ...'}, # 'Properties': { # 'string': 'string' # } # }, # ], # 'EbsConfiguration': { # 'EbsBlockDeviceConfigs': [ # { # 'VolumeSpecification': { # 'VolumeType': 'standard',#gp2, io1, standard # # 'Iops': 123, # 'SizeInGB': 100 # }, # 'VolumesPerInstance': 1 # }, # ], # 'EbsOptimized': True#|False # }, # 'AutoScalingPolicy': { # 'Constraints': { # 'MinCapacity': 123, # 'MaxCapacity': 123 # }, # # 'Rules': [ # # { # # 'Name': 'string', # # 'Description': 'string', # # 'Action': { # # 'Market': 'ON_DEMAND'|'SPOT', # # 'SimpleScalingPolicyConfiguration': { # # 'AdjustmentType': 'CHANGE_IN_CAPACITY'|'PERCENT_CHANGE_IN_CAPACITY'|'EXACT_CAPACITY', # # 'ScalingAdjustment': 123, # # 'CoolDown': 123 # # } # # }, # # # # # 'Trigger': { # # # 'CloudWatchAlarmDefinition': { # # # 'ComparisonOperator': 'GREATER_THAN_OR_EQUAL'|'GREATER_THAN'|'LESS_THAN'|'LESS_THAN_OR_EQUAL', # # # 'EvaluationPeriods': 123, # # # 'MetricName': 'string', # # # 'Namespace': 'string', # # # 'Period': 123, # # # 'Statistic': 'SAMPLE_COUNT'|'AVERAGE'|'SUM'|'MINIMUM'|'MAXIMUM', # # # 'Threshold': 123.0, # # # 'Unit': 'NONE'|'SECONDS'|'MICRO_SECONDS'|'MILLI_SECONDS'|'BYTES'|'KILO_BYTES'|'MEGA_BYTES'|'GIGA_BYTES'|'TERA_BYTES'|'BITS'|'KILO_BITS'|'MEGA_BITS'|'GIGA_BITS'|'TERA_BITS'|'PERCENT'|'COUNT'|'BYTES_PER_SECOND'|'KILO_BYTES_PER_SECOND'|'MEGA_BYTES_PER_SECOND'|'GIGA_BYTES_PER_SECOND'|'TERA_BYTES_PER_SECOND'|'BITS_PER_SECOND'|'KILO_BITS_PER_SECOND'|'MEGA_BITS_PER_SECOND'|'GIGA_BITS_PER_SECOND'|'TERA_BITS_PER_SECOND'|'COUNT_PER_SECOND', # # # 'Dimensions': [ # # # { # # # 'Key': 'string', # # # 'Value': 'string' # # # }, # # # ] # # # } # # # } # # # # }, # # ] # } }, { 'Name': 'slaves', 'Market': 'ON_DEMAND',#|'SPOT' 'InstanceRole': 'CORE',#|'MASTER'|'TASK' # 'BidPrice': 'string', 'InstanceType': self.slave_instance_type, 'InstanceCount': self.worker_instance_count, # 'Configurations': [ # { # 'Classification': 'string', # 'Configurations': {'... recursive ...'}, # 'Properties': { # 'string': 'string' # } # }, # ], # 'EbsConfiguration': { # 'EbsBlockDeviceConfigs': [ # { # 'VolumeSpecification': { # 'VolumeType': 'standard',#gp2, io1, standard # # 'Iops': 123, # 'SizeInGB': 100 # }, # 'VolumesPerInstance': 1 # }, # ], # 'EbsOptimized': True#|False # }, # 'AutoScalingPolicy': { # 'Constraints': { # 'MinCapacity': 123, # 'MaxCapacity': 123 # }, # # 'Rules': [ # # { # # 'Name': 'string', # # 'Description': 'string', # # 'Action': { # # 'Market': 'ON_DEMAND'|'SPOT', # # 'SimpleScalingPolicyConfiguration': { # # 'AdjustmentType': 'CHANGE_IN_CAPACITY'|'PERCENT_CHANGE_IN_CAPACITY'|'EXACT_CAPACITY', # # 'ScalingAdjustment': 123, # # 'CoolDown': 123 # # } # # }, # # # # # 'Trigger': { # # # 'CloudWatchAlarmDefinition': { # # # 'ComparisonOperator': 'GREATER_THAN_OR_EQUAL'|'GREATER_THAN'|'LESS_THAN'|'LESS_THAN_OR_EQUAL', # # # 'EvaluationPeriods': 123, # # # 'MetricName': 'string', # # # 'Namespace': 'string', # # # 'Period': 123, # # # 'Statistic': 'SAMPLE_COUNT'|'AVERAGE'|'SUM'|'MINIMUM'|'MAXIMUM', # # # 'Threshold': 123.0, # # # 'Unit': 'NONE'|'SECONDS'|'MICRO_SECONDS'|'MILLI_SECONDS'|'BYTES'|'KILO_BYTES'|'MEGA_BYTES'|'GIGA_BYTES'|'TERA_BYTES'|'BITS'|'KILO_BITS'|'MEGA_BITS'|'GIGA_BITS'|'TERA_BITS'|'PERCENT'|'COUNT'|'BYTES_PER_SECOND'|'KILO_BYTES_PER_SECOND'|'MEGA_BYTES_PER_SECOND'|'GIGA_BYTES_PER_SECOND'|'TERA_BYTES_PER_SECOND'|'BITS_PER_SECOND'|'KILO_BITS_PER_SECOND'|'MEGA_BITS_PER_SECOND'|'GIGA_BITS_PER_SECOND'|'TERA_BITS_PER_SECOND'|'COUNT_PER_SECOND', # # # 'Dimensions': [ # # # { # # # 'Key': 'string', # # # 'Value': 'string' # # # }, # # # ] # # # } # # # } # # # # }, # # ] # } }, ], 'KeepJobFlowAliveWhenNoSteps': True, 'TerminationProtected': False, 'Ec2KeyName': self.key_name, 'Ec2SubnetId': self.subnet_id }, Applications=[ { 'Name': 'Spark' }, { 'Name': 'Hadoop' } ], BootstrapActions=[ { 'Name': 'Install Conda', 'ScriptBootstrapAction': { 'Path': 's3://{s3_bucket}/temp/{init_datetime_string}/bootstrap_actions.sh'.format( s3_bucket=self.s3_bucket,init_datetime_string=self.init_datetime_string), } }, # UNCOMMENT FOR AUTOTERMINATE BEHAVIOR # { # 'Name': 'idle timeout', # 'ScriptBootstrapAction': { # 'Path':'s3n://{}/{}/terminate_idle_cluster.sh'.format(self.s3_bucket + '/' + self.s3_path_temp_files, self.job_name), # 'Args': ['3600', '300'] # } # }, ], Configurations=[ # { # 'Classification': 'spark-env', # 'Configurations': [ # { # "Classification": "export", # "Properties": { # "PYSPARK_PYTHON": "python34", # "PYSPARK_PYTHON": "/home/hadoop/conda/bin/python", # "PYSPARK_DRIVER_PYTHON":"/home/hadoop/conda/bin/python" # }, # "Configurations": [] # } # ], # 'Properties': { # } # }, # { # "Classification": "hadoop-env", # "Properties": { # # }, # "Configurations": [ # { # "Classification": "export", # "Properties": { # "HADOOP_DATANODE_HEAPSIZE": "2048", # "HADOOP_NAMENODE_OPTS": "-XX:GCTimeRatio=19" # }, # "Configurations": [ # # ] # } # ] # }, { "Classification": "hadoop-env", #set environment varaibles in here "Properties": { }, "Configurations": [ { "Classification": "export", "Properties": { "PYTHONHASHSEED": "123", #This is required for pyspark so all nodes have the same seed }, "Configurations": [ ] } ] }, # { # "Classification": "spark", # "Properties": { # "maximizeResourceAllocation": "true", #AWS has problems with some instance types with this set (generates wrong spark settings, wtf AWS) # # } # }, { "Classification": "spark-defaults", "Properties": spark_properties, } ], VisibleToAllUsers=True, JobFlowRole='EMR_EC2_DefaultRole', ServiceRole='EMR_DefaultRole' ) logger.info(response) return response def add_create_step(self, job_flow_id, master_dns): """ This step has to be run directly after the bootstrapping to ensure that conda has been properly linked to the spark environment. :param string job_flow_id: The clusters id example: j-17LA5TIOEEEU3 :param string master_dns: the dns address of the master node :return: the response object from boto3 """ response = self.boto_client("emr").add_job_flow_steps( JobFlowId=job_flow_id, Steps=[ { 'Name': 'setup - copy files', 'ActionOnFailure': 'CANCEL_AND_WAIT', 'HadoopJarStep': { 'Jar': 'command-runner.jar', 'Args': ['aws', 's3', 'cp', 's3://{s3_bucket}/temp/{init_datetime_string}/pyspark_quick_setup.sh'.format( s3_bucket=self.s3_bucket,init_datetime_string=self.init_datetime_string), '/home/hadoop/'] } }, { 'Name': 'setup pyspark with conda', 'ActionOnFailure': 'CANCEL_AND_WAIT', 'HadoopJarStep': { 'Jar': 'command-runner.jar', 'Args': ['sudo', 'bash', '/home/hadoop/pyspark_quick_setup.sh', master_dns] } } ] ) logger.info(response) return response def add_spark_submit_step(self, job_flow_id,name_of_script_directory): """ Steps for EMR to upload the python files and run them as a spark-submit on the cluster. First it uploads the .tar file, then decompresses it, then spark-submits it. :param string job_flow_id: The clusters id example: j-17LA5TIOEEEU3 :param string name_of_script_directory: the name of the directory to hold scripts on s3 and master node. The file/directory holding the file should be a unique id to prevent overwritting :return: the response object from boto """ args = [] args.append('spark-submit') if self.additional_job_args: for arg in self.additional_job_args: args.append(arg) args.append("/home/hadoop/scripts/" + name_of_script_directory + '/' + self.file_to_run) response = self.boto_client("emr").add_job_flow_steps( JobFlowId=job_flow_id, Steps=[ { 'Name': 'Copy_Tar', 'ActionOnFailure': 'CANCEL_AND_WAIT', 'HadoopJarStep': { 'Jar': 'command-runner.jar', 'Args': ['aws', 's3', 'cp', 's3://{s3_bucket}/temp/{name_of_script_directory}/script.tar.gz'.format( s3_bucket=self.s3_bucket,name_of_script_directory=name_of_script_directory), '/home/hadoop/scripts/' + name_of_script_directory + '/'] } }, { 'Name': 'Decompress script.tar.gz', 'ActionOnFailure': 'CANCEL_AND_WAIT', 'HadoopJarStep': { 'Jar': 'command-runner.jar', 'Args': ['tar', 'zxvf', '/home/hadoop/scripts/' + name_of_script_directory + '/script.tar.gz','-C','/home/hadoop/scripts/'+ name_of_script_directory] } }, { 'Name': 'Spark Application', 'ActionOnFailure': 'CONTINUE', 'HadoopJarStep': { 'Jar': 'command-runner.jar', 'Args': args } } ] ) logger.info(response) time.sleep(1) return response def create_bucket_on_s3(self, bucket_name): """ Checks to see if the bucket exists if not it will create one by that name. :param string bucket_name: name of the s3 bucket to store all data from cluster """ s3 = self.boto_client("s3") try: logger.info("Bucket already exists.") s3.head_bucket(Bucket=bucket_name) except botocore.exceptions.ClientError as e: logger.info("Bucket does not exist: {error}. I will create it!".format(error=e)) s3.create_bucket(Bucket=bucket_name) def upload_to_s3(self, path_to_file, bucket_name, path_on_s3): """ Uploads a file to s3. :param string path_to_file: The path of the file on local to upload. :param string bucket_name: The name of the s3 bucket :param string path_on_s3: The path and file it should be called on s3. """ logger.info( "Upload file '{file_name}' to bucket '{bucket_name}'".format(file_name=path_on_s3, bucket_name=bucket_name)) s3 = None if self.aws_access_key and self.aws_secret_access_key: s3 = self.boto_client("s3") s3.upload_file(path_to_file, bucket_name, path_on_s3) else: s3 = boto3.Session(profile_name=self.profile_name).resource('s3') s3.Object(bucket_name, path_on_s3)\ .put(Body=open(path_to_file, 'rb'), ContentType='text/x-sh') def get_maximum_resource_allocation_properties(self,_master_memory,_master_cores,_memory_per_workder_node_gb,_cores_per_worker_node,_number_of_worker_nodes,_executors_per_node = 1): """ Will calculate spark configuration settings that maximize resource allocation within the cluster. Useful when you know you are only going to run one job at a time or are setting dynamicAllocation to false. :return: a dictonary of the properties to pass to boto3/AWS/spark """ import math #Set by user master_memory = int(_master_memory) master_cores = int(_master_cores) number_of_worker_nodes = int(_number_of_worker_nodes) memory_per_workder_node_gb = int(_memory_per_workder_node_gb) cores_per_worker_node = int(_cores_per_worker_node) executors_per_node = int(_executors_per_node) #Change with caution memory_overhead_coefficient = 0.1 executor_memory_upper_bound_gb = memory_per_workder_node_gb executor_core_upper_bound = 5 os_reserved_cores = 1 os_reserved_memory_gb = 1 parallelism_per_core = 2 #Calculations from previous variables availible_master_memory = master_memory - os_reserved_memory_gb availible_master_cores = master_cores - os_reserved_cores availible_workder_memory = memory_per_workder_node_gb - os_reserved_memory_gb availible_workder_cores = cores_per_worker_node - os_reserved_cores total_memory_per_executor = math.floor(availible_workder_memory/executors_per_node) overhead_memory_per_executor = math.ceil(total_memory_per_executor*memory_overhead_coefficient) memory_per_executor = total_memory_per_executor - overhead_memory_per_executor cores_per_executor = math.floor(availible_workder_cores/executors_per_node) unused_memory_per_node = availible_workder_memory -(executors_per_node*total_memory_per_executor) unused_cores_per_node = availible_workder_cores - (executors_per_node*cores_per_executor) spark_executor_instances = number_of_worker_nodes*executors_per_node spark_yarn_driver_memoryOverhead = math.ceil(availible_master_memory*memory_overhead_coefficient)*1024 return { "spark.executor.instances": str(spark_executor_instances), "spark.yarn.executor.memoryOverhead":str(overhead_memory_per_executor*1024), "spark.executor.memory": str(memory_per_executor) +'G', "spark.yarn.driver.memoryOverhead":str(spark_yarn_driver_memoryOverhead), "spark.driver.memory":str(min(availible_master_memory-(spark_yarn_driver_memoryOverhead/1024),executor_memory_upper_bound_gb-(executor_memory_upper_bound_gb*memory_overhead_coefficient) ))+'G', "spark.executor.cores": str(cores_per_executor), "spark.driver.cores": str(min(availible_master_cores,executor_core_upper_bound)), "spark.default.parallelism":str(spark_executor_instances*cores_per_executor*parallelism_per_core) } def get_datetime_str(self): """ Gets a formated datetime string for naming purposes. """ return datetime.now().strftime("%Y%m%d.%H:%M:%S.%f") def generate_job_name(self): """ Generates a Job name Key for referencing the EMR cluster on the AWS Console and through logs. """ self.job_name = "{}.{}.{}".format(self.app_name, self.user, self.get_datetime_str()) def tar_python_script(self): """ Compresses a tar file and saves it. :return: """ # Create tar.gz file t_file = tarfile.open(os.path.dirname( __file__ )+"/files/script.tar.gz", 'w:gz') # Add Spark script path to tar.gz file files = os.listdir(self.path_script) for f in files: t_file.add(self.path_script + '/' + f, arcname=f) # List all files in tar.gz for f in t_file.getnames(): logger.info("Added %s to tar-file" % f) t_file.close() def remove_temp_files(self, s3): """ Remove Spark files from temporary bucket. NOT FINISHED TODO :param s3: :return: """ bucket = s3.Bucket(self.s3_bucket) for key in bucket.objects.all(): if key.key.startswith(self.job_name) is True: key.delete() logger.info("Removed '{}' from bucket for temporary files".format(key.key)) def run(self,execute_type='create'): """ This will run the execution of the program. Call this after vars are set. :param string execute_type: Used to either create a cluster or submit a job. Accepted: 'create' or 'run_job' """ if execute_type == 'create': logger.info( "*******************************************+**********************************************************") logger.info("Load config and set up client.") logger.info( "*******************************************+**********************************************************") logger.info("Check if bucket exists otherwise create it and upload files to S3.") self.create_bucket_on_s3(bucket_name=self.s3_bucket) self.upload_to_s3(os.path.dirname( __file__ )+"/scripts/bootstrap_actions.sh", bucket_name=self.s3_bucket, path_on_s3="temp/"+self.init_datetime_string+"/bootstrap_actions.sh") self.upload_to_s3(os.path.dirname( __file__ )+"/scripts/pyspark_quick_setup.sh", bucket_name=self.s3_bucket, path_on_s3="temp/"+self.init_datetime_string+"/pyspark_quick_setup.sh") self.upload_to_s3(os.path.dirname( __file__ )+"/scripts/terminate_idle_cluster.sh", bucket_name=self.s3_bucket, path_on_s3="temp/"+self.init_datetime_string+"/terminate_idle_cluster.sh") logger.info( "*******************************************+**********************************************************") logger.info("Create cluster and run boostrap.") spark_properties = {} if self.set_maxmimum_allocation: #Get the cores/RAM of worker/master master_memory = ec2_data_dict[self.master_instance_type]['memory'] master_cores = ec2_data_dict[self.master_instance_type]['cores'] worker_memory = ec2_data_dict[self.slave_instance_type]['memory'] worker_cores = ec2_data_dict[self.slave_instance_type]['cores'] spark_properties = self.get_maximum_resource_allocation_properties(_master_memory=master_memory,_master_cores=master_cores,_memory_per_workder_node_gb=worker_memory,_cores_per_worker_node=worker_cores,_number_of_worker_nodes=self.worker_instance_count,_executors_per_node=self.number_of_executors_per_node) print('spark_properties:') print(spark_properties) #Spin up the cluster emr_response = self.load_cluster(_spark_properties = spark_properties) emr_client = self.boto_client("emr") self.job_flow_id = emr_response.get("JobFlowId") #wait until cluster is in a ready state while True: job_response = emr_client.describe_cluster( ClusterId=emr_response.get("JobFlowId") ) time.sleep(10) if job_response.get("Cluster").get("MasterPublicDnsName") is not None: master_dns = job_response.get("Cluster").get("MasterPublicDnsName") step = True job_state = job_response.get("Cluster").get("Status").get("State") job_state_reason = job_response.get("Cluster").get("Status").get("StateChangeReason").get("Message") if job_state in ["TERMINATING","TERMINATED","TERMINATED_WITH_ERRORS"]: step = False logger.info( "Script stops with state: {job_state} " "and reason: {job_state_reason}".format(job_state=job_state, job_state_reason=job_state_reason)) break elif job_state in ["WAITING","RUNNING"]: step = True break else: # BOOTSTRAPPING,STARTING logger.info(job_response) if step: logger.info( "*******************************************+**********************************************************") logger.info("Run steps.") add_step_response = self.add_create_step(emr_response.get("JobFlowId"), master_dns) while True: list_steps_response = emr_client.list_steps(ClusterId=emr_response.get("JobFlowId"), StepStates=["COMPLETED"]) time.sleep(10) if len(list_steps_response.get("Steps")) == len( add_step_response.get("StepIds")): # make sure that all steps are completed break else: logger.info(emr_client.list_steps(ClusterId=emr_response.get("JobFlowId"))) return True else: logger.info("Cannot run steps.") return False elif execute_type == 'run_job': date_time_of_execute = 'test'#self.get_datetime_str() self.tar_python_script() self.upload_to_s3(os.path.dirname( __file__ )+'/files/script.tar.gz', bucket_name=self.s3_bucket, path_on_s3="temp/"+date_time_of_execute+"/script.tar.gz") self.add_spark_submit_step(self.job_flow_id,date_time_of_execute) return True def step_copy_data_between_s3_and_hdfs(self, c, src, dest): """ Copy data between S3 and HDFS (not used for now) :param c: the boto_client :param src: source location of files :param dest: the destination on hdfs :return: """ response = c.add_job_flow_steps( JobFlowId=self.job_flow_id, Steps=[{ 'Name': 'Copy data from S3 to HDFS', 'ActionOnFailure': 'CANCEL_AND_WAIT', 'HadoopJarStep': { 'Jar': 'command-runner.jar', 'Args': [ "s3-dist-cp", "--s3Endpoint=s3-eu-west-1.amazonaws.com", "--src={}".format(src), "--dest={}".format(dest) ] } }] ) logger.info("Added step 'Copy data from {} to {}'".format(src, dest)) ================================================ FILE: 03_regression/src/spark_kaggle_starter/spark_controler/files/setup.sh ================================================ #!/bin/bash # Parse arguments s3_bucket="$1" s3_bucket_script="$s3_bucket/script.tar.gz" # Download compressed script tar file from S3 aws s3 cp $s3_bucket_script /home/hadoop/script.tar.gz # Untar file tar zxvf "/home/hadoop/script.tar.gz" -C /home/hadoop/ # Install requirements for Python script # install conda # sudo python2.7 -m pip install referer_parser wget --quiet http://repo.continuum.io/archive/Anaconda3-4.2.0-Linux-x86_64.sh -O ~/anaconda.sh \ && /bin/bash ~/anaconda.sh -b -p $HOME/conda echo -e '\nexport PATH=$HOME/conda/bin:$PATH' >> $HOME/.bashrc && source $HOME/.bashrc conda install -y ipython jupyter echo -e "\nexport PYSPARK_PYTHON=/home/hadoop/conda/bin/python" >> /etc/spark/conf/spark-env.sh echo "export PYSPARK_DRIVER_PYTHON=/home/hadoop/conda/bin/jupyter" >> /etc/spark/conf/spark-env.sh echo "export PYSPARK_DRIVER_PYTHON_OPTS='notebook --no-browser --ip=$1'" >> /etc/spark/conf/spark-env.sh ================================================ FILE: 03_regression/src/spark_kaggle_starter/spark_controler/files/terminate_idle_cluster.sh ================================================ #!/bin/sh # Copyright 2013 Lyft # Copyright 2014 Alex Konradi # Copyright 2015 Yelp and Contributors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Author: David Marin # This script is part of mrjob, but can be run as a bootstrap action on # ANY Elastic MapReduce cluster. Arguments are totally optional. # This script runs `hadoop job -list` in a loop and considers the cluster # idle if no jobs are currently running. If the cluster stays idle long # enough AND we're close enough to the end of an EC2 billing hour, we # shut down the master node, which kills the cluster. # By default, we allow an idle time of 15 minutes, and shut down within # the last 5 minutes of the hour. # Caveats: # Race conditions: this script can only see currently running jobs, not ones # pending in EMR, or ones that you're about to submit, or jobs that started # running since the last time we called `hadoop job -list`. # This script will leave the cluster in the FAILED (not TERMINATED) state, # with LastStateChangeReason "The master node was terminated. ". It can # take EMR a minute or so to realize that master node has been shut down. # full usage: # # ./terminate_idle_cluster.sh [ max_hours_idle [ min_secs_to_end_of_hour ] ] # # Both arguments must be integers MAX_SECS_IDLE=$1 if [ -z "$MAX_SECS_IDLE" ]; then MAX_SECS_IDLE=1800; fi MIN_SECS_TO_END_OF_HOUR=$2 if [ -z "$MIN_SECS_TO_END_OF_HOUR" ]; then MIN_SECS_TO_END_OF_HOUR=300; fi ( while true # the only way out is to SHUT DOWN THE MACHINE do # get the uptime as an integer (expr can't handle decimals) UPTIME=$(cat /proc/uptime | cut -f 1 -d .) SECS_TO_END_OF_HOUR=$(expr 3600 - $UPTIME % 3600) # if LAST_ACTIVE hasn't been initialized, hadoop hasn't been installed # yet (this happens on 4.x AMIs), or there are jobs running, just set # LAST_ACTIVE to UPTIME. This also checks yarn application if it # exists (see #1145) if [ -z "$LAST_ACTIVE" ] || \ ! which hadoop > /dev/null || \ nice hadoop job -list 2> /dev/null | grep -q '^\s*job_' || \ (which yarn > /dev/null && \ nice yarn application -list 2> /dev/null | \ grep -v 'Total number' | grep -q RUNNING) then LAST_ACTIVE=$UPTIME else # the cluster is idle! how long has this been going on? SECS_IDLE=$(expr $UPTIME - $LAST_ACTIVE) if expr $SECS_IDLE '>' $MAX_SECS_IDLE '&' \ $SECS_TO_END_OF_HOUR '<' $MIN_SECS_TO_END_OF_HOUR > /dev/null then sudo shutdown -h now exit fi fi done # close file handles to daemonize the script; otherwise bootstrapping # never finishes ) 0<&- &> /dev/null & ================================================ FILE: 03_regression/src/spark_kaggle_starter/spark_controler/scripts/bootstrap_actions.sh ================================================ #!/usr/bin/env bash # #Mounted directory we want to use # export MOUNT_TO_USE=/mnt # # change Home directory # mkdir $MOUNT_TO_USE/home # export HOME=$MOUNT_TO_USE/home # #For NVIDA installations # mkdir $MOUNT_TO_USE/cuda # export CUDA_ROOT=$MOUNT_TO_USE/cuda # export CUDA_HOME=$CUDA_ROOT # mkdir $MOUNT_TO_USE/tmp # export TMP_DIR=$MOUNT_TO_USE/tmp # #AWS AMI is based on RHEL and CentOS. So use one of those for installers # wget http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/cuda_7.5.18_linux.run # sudo sh cuda_7.5.18_linux.run --silent --verbose --toolkit --toolkitpath $CUDA_ROOT --tmpdir $TMP_DIR # export LD_LIBRARY_PATH=$CUDA_ROOT/lib64${LD_LIBRARY_PATH:+:${LD_PATH}} # export PATH=$CUDA_ROOT/bin${PATH:+:${PATH}} # # Install cudnn # wget https://s3.amazonaws.com/emr-related-files/cudnn-8.0-linux-x64-v5.1.tgz # tar xvzf cudnn-8.0-linux-x64-v5.1.tgz # cd cuda # sudo cp include/cudnn.h $CUDA_HOME/include/ # sudo cp lib64/* $CUDA_HOME/lib64/ # pip install keras # pip install tensorflow-gpu # install conda (conda 4.2 defaults to python35) wget --quiet http://repo.continuum.io/archive/Anaconda3-4.2.0-Linux-x86_64.sh -O ~/anaconda.sh \ && /bin/bash ~/anaconda.sh -b -p $HOME/conda echo -e '\nexport PATH=$HOME/conda/bin:$PATH' >> $HOME/.bashrc && source $HOME/.bashrc # install packages conda install -y ipython jupyter #h2o uses pyqt4, downgrade # conda install pyqt=4 conda update -y matplotlib sudo yum install -y libXdmcp # needed for PySparkling # conda install requests # conda install six # conda install future # conda install tabulate #Install boto3 for AWS resource mgt pip install boto3 # pip install h2o pip install http://h2o-release.s3.amazonaws.com/h2o/rel-vapnik/1/Python/h2o-3.12.0.1-py2.py3-none-any.whl pip install h2o_pysparkling_2.1 #install xgboost pip install xgboost #INSTALL SPARKLING WATER # wget http://h2o-release.s3.amazonaws.com/sparkling-water/rel-2.1/8/sparkling-water-2.1.8.zip # unzip sparkling-water-2.1.8.zip # echo -e "\nexport PYSPARK_PYTHON=/home/hadoop/conda/bin/python" >> /etc/spark/conf/spark-env.sh # echo "export PYSPARK_DRIVER_PYTHON=/home/hadoop/conda/bin/python" >> /etc/spark/conf/spark-env.sh # #Thows Errors if all clusters don't have the same python hash seed as of python 3.2.3 # But need to set in Configurations script, can't set user env variables in bootstrap # sudo export PYTHONHASHSEED=123 ================================================ FILE: 03_regression/src/spark_kaggle_starter/spark_controler/scripts/deep_learning_install_complete.sh ================================================ #!/bin/bash # enable debugging & set strict error trap set -x -e # change Home directory export HOME=/mnt/home mkdir /mnt/cuda export CUDA_ROOT=/mnt/cuda mkdir /mnt/tmp export TMP_DIR=/mnt/tmp # source script specifying environment variables source ~/.EnvVars # change directory to Temp folder to install NVIDIA driver & CUDA toolkit cd $TMP_DIR # install NVIDIA driver # (ref: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using_cluster_computing.html#install-nvidia-driver) # G2 Instances # Product Type: GRID # Product Series: GRID Series # Product: GRID K520 # Operating System: Linux 64-bit # Recommended/Beta: Recommended/Certified wget http://us.download.nvidia.com/XFree86/Linux-x86_64/367.27/NVIDIA-Linux-x86_64-367.27.run set +e sudo sh NVIDIA-Linux-x86_64-367.27.run --silent --kernel-source-path $KERNEL_SOURCE_PATH --tmpdir $TMP_DIR set -e echo `df -h / | sed -n 2p` NVIDIA >> $MAIN_DISK_USAGE_LOG # install CUDA toolkit wget http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/cuda_7.5.18_linux.run sudo sh cuda_7.5.18_linux.run --silent --driver --toolkit --toolkitpath $CUDA_ROOT --extract $TMP_DIR --kernel-source-path $KERNEL_SOURCE_PATH --tmpdir $TMP_DIR sudo sh cuda-linux64-rel-7.5.18-19867135.run --noprompt --prefix $CUDA_ROOT --tmpdir $TMP_DIR # add CUDA executables & libraries to Path # instructions: Please make sure that # - PATH includes /mnt/cuda-7.5/bin # - LD_LIBRARY_PATH includes /mnt/cuda-7.5/lib64, or, # add /mnt/cuda-7.5/lib64 to /etc/ld.so.conf and run ldconfig as root echo "$CUDA_ROOT/lib64" > cuda.conf echo "$CUDA_ROOT/lib" >> cuda.conf sudo mv cuda.conf /etc/ld.so.conf.d/ sudo ldconfig # create symbolic links for NVCC sudo ln -s $CUDA_ROOT/bin/nvcc /usr/bin/nvcc # copy link stubs (?) to /usr/bin directory sudo cp -r $CUDA_ROOT/bin/crt/ /usr/bin/ echo `df -h / | sed -n 2p` CUDA Toolkit >> $MAIN_DISK_USAGE_LOG wget https://raw.githubusercontent.com/ChicagoBoothAnalytics/Software/master/NVIDIA/cudnn-7.5-linux-x64-v5.0-ga.tgz tar xvzf cudnn-*.tgz sudo rm cudnn-*.tgz sudo mv cudnn-*/cudnn.h $CUDA_ROOT/include sudo mv cudnn-*/libcudnn* $CUDA_ROOT/lib64 sudo chmod a+r $CUDA_ROOT/include/cudnn.h $CUDA_ROOT/lib64/libcudnn* sudo rm -r cudnn-* echo `df -h / | sed -n 2p` CuDNN >> $MAIN_DISK_USAGE_LOG # change directory to Programs directory cd $APPS_DIR # install OpenBLAS git clone https://github.com/xianyi/OpenBLAS $OPENBLAS_DIR cd $OPENBLAS_DIR make sudo make install PREFIX=$OPENBLAS_DIR echo `df -h / | sed -n 2p` OpenBLAS >> $MAIN_DISK_USAGE_LOG cd $APPS_DIR # skip installation of GotoBLAS2 because of error: https://gist.github.com/certik/1224558 # cd $APPS_DIR # wget https://www.tacc.utexas.edu/documents/1084364/1087496/GotoBLAS2-1.13.tar.gz # tar xzf GotoBLAS2-1.13.tar.gz # sudo rm GotoBLAS2-1.13.tar.gz # cd GotoBLAS2 # make # sudo make install PREFIX=$GOTOBLAS_DIR # cd .. # sudo rm -r GotoBLAS2 # install CUDA-related packages git clone --recursive http://git.tiker.net/trees/pycuda.git cd pycuda sudo python configure.py --cuda-root=$CUDA_ROOT set +e sudo make install set -e cd .. sudo rm -r pycuda echo `df -h / | sed -n 2p` PyCUDA >> $MAIN_DISK_USAGE_LOG # sudo pip install git+https://github.com/cudamat/cudamat.git installation fails # git clone https://github.com/cudamat/cudamat.git # cd cudamat # sudo python setup.py install # cd .. # sudo rm -r cudamat # echo `df -h / | sed -n 2p` CUDAmat >> $MAIN_DISK_USAGE_LOG git clone https://github.com/andersbll/cudarray cd cudarray make sudo make install sudo python setup.py install cd .. sudo rm -r cudarray echo `df -h / | sed -n 2p` CUDArray >> $MAIN_DISK_USAGE_LOG set +e sudo pip install --upgrade SciKit-CUDA set -e echo `df -h / | sed -n 2p` SciKit-CUDA >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade GNumPy echo `df -h / | sed -n 2p` GNumPy >> $MAIN_DISK_USAGE_LOG # install TensorFlow sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl echo `df -h / | sed -n 2p` TensorFlow >> $MAIN_DISK_USAGE_LOG # install Theano sudo pip install --upgrade Theano echo `df -h / | sed -n 2p` Theano >> $MAIN_DISK_USAGE_LOG # download .TheanoRC into new Home directory cd ~ wget $GITHUB_REPO_RAW_PATH/.config/$THEANORC_SCRIPT_NAME dos2unix $THEANORC_SCRIPT_NAME cd $APPS_DIR # install HDF5 sudo yum install -y https://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.16/bin/RPMS/hdf5-1.8.16-1.with.szip.encoder.el7.x86_64.rpm https://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.16/bin/RPMS/hdf5-devel-1.8.16-1.with.szip.encoder.el7.x86_64.rpm echo `df -h / | sed -n 2p` HDF5 >> $MAIN_DISK_USAGE_LOG # install Tables git clone https://github.com/PyTables/PyTables cd PyTables sudo python setup.py install cd .. sudo rm -r PyTables echo `df -h / | sed -n 2p` Tables >> $MAIN_DISK_USAGE_LOG # install Deep Learning packages sudo pip install git+git://github.com/mila-udem/fuel.git # don't use --upgrade: PyTables messing up... echo `df -h / | sed -n 2p` Fuel >> $MAIN_DISK_USAGE_LOG sudo pip install git+git://github.com/mila-udem/blocks.git # don't use --upgrade: PyTables messing up... echo `df -h / | sed -n 2p` Blocks >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade git+https://github.com/mila-udem/platoon echo `df -h / | sed -n 2p` Platoon >> $MAIN_DISK_USAGE_LOG set +e sudo pip install --upgrade Brainstorm[all] set -e echo `df -h / | sed -n 2p` Brainstorm >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade Chainer echo `df -h / | sed -n 2p` Chainer >> $MAIN_DISK_USAGE_LOG git clone https://github.com/akrizhevsky/cuda-convnet2 # sudo pip install --upgrade DeepCL SKIPPED: needs OpenCL sudo pip install DeepDish # don't use --upgrade: PyTables messing up... echo `df -h / | sed -n 2p` DeepDish >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade git+git://github.com/dirkneumann/deepdist.git # abandoned project echo `df -h / | sed -n 2p` DeepDist >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade git+git://github.com/andersbll/deeppy.git echo `df -h / | sed -n 2p` DeepPy >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade Deepy echo `df -h / | sed -n 2p` Deepy >> $MAIN_DISK_USAGE_LOG git clone https://github.com/libfann/fann.git cd fann cmake . sudo make install cd .. sudo rm -r fann sudo pip install --upgrade FANN2 echo `df -h / | sed -n 2p` FANN2 >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade FFnet echo `df -h / | sed -n 2p` FFnet >> $MAIN_DISK_USAGE_LOG set +e sudo pip install --upgrade Hebel set -e echo `df -h / | sed -n 2p` Hebel >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade Keras echo `df -h / | sed -n 2p` Keras >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade https://github.com/Lasagne/Lasagne/archive/master.zip echo `df -h / | sed -n 2p` Lasagne >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade Mang # abandoned project # echo `df -h / | sed -n 2p` Mang >> $MAIN_DISK_USAGE_LOG git clone https://github.com/dmlc/minerva cd minerva sudo cp configure.in.example configure.in # then we need to manually edit CONFIGURE.IN and run below steps # ./build.sh cd $APPS_DIR sudo pip install --upgrade git+git://github.com/hycis/Mozi.git echo `df -h / | sed -n 2p` Mozi >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade NervanaNEON echo `df -h / | sed -n 2p` NervanaNEON >> $MAIN_DISK_USAGE_LOG sudo pip install NeuralPy # don't use --upgrade: it'd downgrade NumPy echo `df -h / | sed -n 2p` NeuralPy >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade NeuroLab echo `df -h / | sed -n 2p` NeuroLab >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade NLPnet echo `df -h / | sed -n 2p` NLPnet >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade git+git://github.com/zomux/nlpy.git echo `df -h / | sed -n 2p` NLPy >> $MAIN_DISK_USAGE_LOG # sudo pip install --upgrade NN # SKIPPED: toy project # echo `df -h / | sed -n 2p` NN >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade NoLearn echo `df -h / | sed -n 2p` NoLearn >> $MAIN_DISK_USAGE_LOG wget http://bitbucket.org/eigen/eigen/get/3.2.8.zip unzip 3.2.8.zip sudo rm 3.2.8.zip mkdir eigen-build cd eigen-build cmake $APPS_DIR/eigen-eigen-* sudo make install cd $APPS_DIR sudo rm -r eigen* echo `df -h / | sed -n 2p` Eigen >> $MAIN_DISK_USAGE_LOG git clone https://github.com/OpenANN/OpenANN.git cd OpenANN mkdir build cd build cmake .. sudo make install sudo ldconfig cd $APPS_DIR sudo rm -r OpenANN sudo mv /usr/local/local/lib64/python2.7/site-packages/* /usr/local/lib64/python2.7/site-packages/ echo `df -h / | sed -n 2p` OpenANN >> $MAIN_DISK_USAGE_LOG # git clone https://github.com/guoding83128/OpenDL SKIPPED: abandoned project # echo `df -h / | sed -n 2p` OpenDL >> $MAIN_DISK_USAGE_LOG git clone https://github.com/vitruvianscience/opendeep.git cd opendeep sudo python setup.py develop cd .. sudo pip install --upgrade PyBrain echo `df -h / | sed -n 2p` PyBrain >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade PyBrain2 echo `df -h / | sed -n 2p` PyBrain2 >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade PyDeepLearning echo `df -h / | sed -n 2p` PyDeepLearning >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade PyDNN echo `df -h / | sed -n 2p` PyDNN >> $MAIN_DISK_USAGE_LOG git clone git://github.com/lisa-lab/pylearn2.git cd pylearn2 sudo python setup.py develop cd .. sudo pip install --upgrade PythonBrain echo `df -h / | sed -n 2p` PythonBrain >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade SciKit-NeuralNetwork echo `df -h / | sed -n 2p` SciKit-NeuralNetwork >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade git+git://github.com/google/SKFlow.git echo `df -h / | sed -n 2p` SKFlow >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade git+git://github.com/sklearn-theano/sklearn-theano echo `df -h / | sed -n 2p` SKLearn-Theano >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade git+git://github.com/dougefr/Synapyse.git echo `df -h / | sed -n 2p` Synapyse >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade Theanets echo `df -h / | sed -n 2p` Theanets >> $MAIN_DISK_USAGE_LOG sudo pip install --upgrade git+git://github.com/Samsung/veles.git echo `df -h / | sed -n 2p` Veles >> $MAIN_DISK_USAGE_LOG git clone https://github.com/Samsung/veles.znicz ================================================ FILE: 03_regression/src/spark_kaggle_starter/spark_controler/scripts/pyspark_quick_setup.sh ================================================ #!/usr/bin/env bash # bind conda to spark echo -e "\nexport PYSPARK_PYTHON=/home/hadoop/conda/bin/python" >> /etc/spark/conf/spark-env.sh echo "export PYSPARK_DRIVER_PYTHON=/home/hadoop/conda/bin/python" >> /etc/spark/conf/spark-env.sh # echo "export PYSPARK_DRIVER_PYTHON=/home/hadoop/conda/bin/jupyter" >> /etc/spark/conf/spark-env.sh # echo "export PYSPARK_DRIVER_PYTHON_OPTS='notebook --no-browser --ip=$1'" >> /etc/spark/conf/spark-env.sh ================================================ FILE: 03_regression/src/spark_kaggle_starter/spark_controler/scripts/terminate_idle_cluster.sh ================================================ #!/bin/sh # Copyright 2013 Lyft # Copyright 2014 Alex Konradi # Copyright 2015 Yelp and Contributors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Author: David Marin # This script is part of mrjob, but can be run as a bootstrap action on # ANY Elastic MapReduce cluster. Arguments are totally optional. # This script runs `hadoop job -list` in a loop and considers the cluster # idle if no jobs are currently running. If the cluster stays idle long # enough AND we're close enough to the end of an EC2 billing hour, we # shut down the master node, which kills the cluster. # By default, we allow an idle time of 15 minutes, and shut down within # the last 5 minutes of the hour. # Caveats: # Race conditions: this script can only see currently running jobs, not ones # pending in EMR, or ones that you're about to submit, or jobs that started # running since the last time we called `hadoop job -list`. # This script will leave the cluster in the FAILED (not TERMINATED) state, # with LastStateChangeReason "The master node was terminated. ". It can # take EMR a minute or so to realize that master node has been shut down. # full usage: # # ./terminate_idle_cluster.sh [ max_hours_idle [ min_secs_to_end_of_hour ] ] # # Both arguments must be integers MAX_SECS_IDLE=$1 if [ -z "$MAX_SECS_IDLE" ]; then MAX_SECS_IDLE=1800; fi MIN_SECS_TO_END_OF_HOUR=$2 if [ -z "$MIN_SECS_TO_END_OF_HOUR" ]; then MIN_SECS_TO_END_OF_HOUR=300; fi ( while true # the only way out is to SHUT DOWN THE MACHINE do # get the uptime as an integer (expr can't handle decimals) UPTIME=$(cat /proc/uptime | cut -f 1 -d .) SECS_TO_END_OF_HOUR=$(expr 3600 - $UPTIME % 3600) # if LAST_ACTIVE hasn't been initialized, hadoop hasn't been installed # yet (this happens on 4.x AMIs), or there are jobs running, just set # LAST_ACTIVE to UPTIME. This also checks yarn application if it # exists (see #1145) if [ -z "$LAST_ACTIVE" ] || \ ! which hadoop > /dev/null || \ nice hadoop job -list 2> /dev/null | grep -q '^\s*job_' || \ (which yarn > /dev/null && \ nice yarn application -list 2> /dev/null | \ grep -v 'Total number' | grep -q RUNNING) then LAST_ACTIVE=$UPTIME else # the cluster is idle! how long has this been going on? SECS_IDLE=$(expr $UPTIME - $LAST_ACTIVE) if expr $SECS_IDLE '>' $MAX_SECS_IDLE '&' \ $SECS_TO_END_OF_HOUR '<' $MIN_SECS_TO_END_OF_HOUR > /dev/null then sudo shutdown -h now exit fi fi done # close file handles to daemonize the script; otherwise bootstrapping # never finishes ) 0<&- &> /dev/null & ================================================ FILE: 03_regression/src/spark_kaggle_starter/spark_main.py ================================================ # imports import pandas as pd import numpy as np import time import os from tabulate import tabulate import sys from operator import add from pyspark import SparkContext from pyspark.sql import SparkSession from pyspark.sql import SQLContext from pyspark.sql import functions as F #https://stackoverflow.com/questions/39504950/python-pyspark-get-sum-of-a-pyspark-dataframe-column-values from get_type_lists import get_type_lists from target_encoder import target_encoder from feature_combiner import feature_combiner from logging_lib.LoggingController import LoggingController #Define your s3 bucket to load and store data S3_BUCKET = 'emr-related-files' #Create a custom logger to log statistics and plots logger = LoggingController() logger.s3_bucket = S3_BUCKET #.config('spark.executor.cores','6') \ spark = SparkSession.builder \ .appName("App") \ .getOrCreate() # .master("local[*]") \ # .config('spark.cores.max','16') #.master("local") \ # .config("spark.some.config.option", "some-value") \ spark.sparkContext.setLogLevel('WARN') #Get rid of all the junk in output Y = 'y' ID_VAR = 'ID' DROPS = [ID_VAR] #From an XGBoost model # NOTE the top 6 are categorical, might want to look into this. MOST_IMPORTANT_VARS_ORDERD = ['X5','X0','X8','X3','X1','X2','X314','X47','X118',\ 'X315','X29','X127','X236','X115','X383','X152','X151','X351','X327','X77','X104',\ 'X267','X95','X142'] #Load data from s3 train = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('s3n://'+S3_BUCKET+'/train.csv') test = spark.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('s3n://'+S3_BUCKET+'/test.csv') #this needs to be done for h2o glm.predict() bug (which needs same number of columns) test = test.withColumn(Y,test[ID_VAR]) #Work around for splitting wide data, you need to split on only an ID varaibles #Then join back with a train varaible (bug in spark as of 2.1 with randomSplit()) (train1,valid1) = train.select(ID_VAR).randomSplit([0.7,0.3], seed=123) valid = valid1.join(train, ID_VAR,'inner') train = train1.join(train,ID_VAR,'inner') # print('TRAIN DATA') # train.show(2) # print('VALID DATA') # valid.show(2) #workdaround for h2o predict test1 = test.select(ID_VAR,Y) test2 = test.drop(Y) test = test1.join(test2,ID_VAR,'inner') original_nums, cats = get_type_lists(frame=train,rejects=[ID_VAR,Y],frame_type='spark') print("Encoding numberic variables...") training_df_list, test_df_list,valid_df_list = list(),list(),list() for i, var in enumerate(cats): total = len(cats) print('Encoding: ' + var + ' (' + str(i+1) + '/' + str(total) + ') ...') logger.log_string('Encoding: ' + var + ' (' + str(i+1) + '/' + str(total) + ') ...') tr_enc,v_enc, ts_enc = target_encoder(train, test, var, Y,valid_frame=valid,frame_type='spark',id_col=ID_VAR) training_df_list.append(tr_enc) test_df_list.append(ts_enc) valid_df_list.append(v_enc) #join all the new variables for i, df in enumerate(training_df_list): train = train.join(training_df_list[i],ID_VAR,'inner') valid = valid.join(valid_df_list[i],ID_VAR,'inner') test = test.join(test_df_list[i],ID_VAR,'inner') # print('TRAIN DATA') # train.show(2) # print('VALID DATA') # valid.show(2) # print('TEST DATA') # test.show(2) print('Done encoding.') encoded_nums, cats = get_type_lists(frame=train,rejects=[ID_VAR,Y],frame_type='spark') #Remplace cats with encoded cats from MOST_IMPORTANT_VARS_ORDERD for i, v in enumerate(MOST_IMPORTANT_VARS_ORDERD): if v in cats: MOST_IMPORTANT_VARS_ORDERD[i] = v + '_Tencode' # # print('Combining features....') # (train, valid, test) = feature_combiner(train, test, MOST_IMPORTANT_VARS_ORDERD, valid_frame = valid, frame_type='spark') # print('Done combining features.') # # encoded_combined_nums, cats = get_type_lists(frame=train,rejects=[ID_VAR,Y],frame_type='spark') ################################################################################ # DONE WITH PREPROCESSING - START TRAINING # ################################################################################ import h2o h2o.show_progress() # turn on progress bars from h2o.estimators.glm import H2OGeneralizedLinearEstimator # import GLM models from h2o.estimators.deeplearning import H2ODeepLearningEstimator from h2o.estimators.gbm import H2OGradientBoostingEstimator from h2o.estimators.random_forest import H2ORandomForestEstimator from h2o.grid.grid_search import H2OGridSearch # grid search from h2o.estimators.xgboost import H2OXGBoostEstimator from h2o.estimators.stackedensemble import H2OStackedEnsembleEstimator import xgboost as xgb import matplotlib matplotlib.use('Agg') #Need this if running matplot on a server w/o display from pysparkling import * conf = H2OConf(spark=spark) conf.nthreads = -1 hc = H2OContext.getOrCreate(spark,conf) print('Making h2o frames...') trainHF = hc.as_h2o_frame(train, "trainTable") validHF = hc.as_h2o_frame(valid, "validTable") testHF = hc.as_h2o_frame(test, "testTable") print('Done making h2o frames.') logger.log_string("Train Summary:") logger.log_string("Rows:{}".format(trainHF.nrow)) logger.log_string("Cols:{}".format(trainHF.ncol)) # print(trainHF.summary(return_data=True)) # logger.log_string(tabulate(trainHF.summary(return_data=True),tablefmt="grid")) # logger.log_string(trainHF._ex._cache._tabulate('grid',False)) base_train, stack_train = trainHF.split_frame([0.5], seed=12345) base_valid, stack_valid = validHF.split_frame([0.5], seed=12345) # def upload_submission(sub,predict_column='predict'): # # create time stamp # import re # import time # time_stamp = re.sub('[: ]', '_', time.asctime()) # # # save file for submission # # sub.columns = [ID_VAR, Y] # sub_fname = 'Submission_'+str(time_stamp) + '.csv' # # h2o.download_csv(sub, 's3n://'+S3_BUCKET+'/kaggle_submissions/Mercedes/' +sub_fname) # # spark_sub_frame = hc.as_spark_frame(sub) # # spark_sub_frame.select(ID_VAR,predict_column).coalesce(1).write.option("header","true").csv('s3n://'+S3_BUCKET+'/Kaggle_Submissions/Mercedes/' +sub_fname) def glm_grid(X, y, train, valid, should_submit = False): """ Wrapper function for penalized GLM with alpha and lambda search. :param X: List of inputs. :param y: Name of target variable. :param train: Name of training H2OFrame. :param valid: Name of validation H2OFrame. :return: Best H2Omodel from H2OGeneralizedLinearEstimator """ alpha_opts = [0.01, 0.25, 0.5, 0.99] # always keep some L2 family = ["gaussian", "binomial", "quasibinomial", "multinomial", "poisson", "gamma", "tweedie"] hyper_parameters = {"alpha":alpha_opts } # initialize grid search grid = H2OGridSearch( H2OGeneralizedLinearEstimator( family="gaussian", lambda_search=True, seed=12345), hyper_params=hyper_parameters) # train grid grid.train(y=y, x=X, training_frame=train, validation_frame=valid) # show grid search results print(grid.show()) best = grid.get_grid()[0] print(best) # if should_submit: # sub_frame = testHF[ID_VAR].cbind(best.predict(testHF)) # print(sub_frame.col_names) # print('Submission frame preview:') # print(sub_frame[0:10, [ID_VAR, 'predict']]) # upload_submission(sub_frame,'predict') # plot top frame values print('yhat_frame') yhat_frame = valid.cbind(best.predict(valid)) print(yhat_frame[0:10, [y, 'predict']]) # plot sorted predictions yhat_frame_df = yhat_frame[[y, 'predict']].as_data_frame() yhat_frame_df.sort_values(by='predict', inplace=True) yhat_frame_df.reset_index(inplace=True, drop=True) plt = yhat_frame_df.plot(title='Ranked Predictions Plot') logger.log_string('Ranked Predictions Plot') logger.log_matplotlib_plot(plt) # select best model return best def neural_net_grid(X, y, train, valid): # define random grid search parameters hyper_parameters = {'hidden': [[170, 320], [80, 190], [320, 160, 80], [100], [50, 50, 50, 50]], 'l1':[s/1e4 for s in range(0, 1000, 100)], 'l2':[s/1e5 for s in range(0, 1000, 100)], 'input_dropout_ratio':[s/1e2 for s in range(0, 20, 2)]} # define search strategy search_criteria = {'strategy':'RandomDiscrete', 'max_models':100, 'max_runtime_secs':60*60*2, #2 hours } # initialize grid search gsearch = H2OGridSearch(H2ODeepLearningEstimator, hyper_params=hyper_parameters, search_criteria=search_criteria) # execute training w/ grid search gsearch.train(x=X, y=y, training_frame=train, validation_frame=valid, activation='TanhWithDropout', epochs=2000, stopping_rounds=20, sparse=True, # handles data w/ many zeros more efficiently ignore_const_cols=True, adaptive_rate=True) best_model = gsearch.get_grid()[0] return best_model def gboosting_grid(X, y, train, valid): # define random grid search parameters hyper_parameters = {'ntrees':list(range(0, 500, 50)), 'max_depth':list(range(0, 20, 2)), 'sample_rate':[s/float(10) for s in range(1, 11)], 'col_sample_rate':[s/float(10) for s in range(1, 11)]} # define search strategy search_criteria = {'strategy':'RandomDiscrete', 'max_models':100, 'max_runtime_secs':60*60*2, #2 hours } # initialize grid search gsearch = H2OGridSearch(H2OGradientBoostingEstimator, hyper_params=hyper_parameters, search_criteria=search_criteria) # execute training w/ grid search gsearch.train(x=X, y=y, training_frame=train, validation_frame=valid) best_model = gsearch.get_grid()[0] return best_model h2o_xgb_model = H2OXGBoostEstimator( ntrees = 10000, learn_rate = 0.005, sample_rate = 0.1, col_sample_rate = 0.8, max_depth = 5, nfolds = 3, keep_cross_validation_predictions=True, stopping_rounds = 10, seed = 12345) # execute training h2o_xgb_model.train(x=encoded_combined_nums, y=Y, training_frame=trainHF, validation_frame=validHF) print('Training..') logger.log_string('glm0') glm0 = glm_grid(original_nums, Y, base_train, base_valid) logger.log_string('glm1') glm1 = glm_grid(encoded_nums, Y, base_train, base_valid) logger.log_string('glm2') glm2 = glm_grid(encoded_combined_nums, Y, base_train, base_valid) # # logger.log_string('rnn0') # rnn0 = neural_net_grid(original_nums, Y, base_train, base_valid) # logger.log_string('rnn1') # rnn1 = neural_net_grid(encoded_nums, Y, base_train, base_valid) # logger.log_string('rnn2') # rnn2 = neural_net_grid(encoded_combined_nums, Y, base_train, base_valid) # # logger.log_string('gbm0') # gbm0 = gboosting_grid(original_nums, Y, base_train, base_valid) # logger.log_string('gbm1') # gbm1 = gboosting_grid(encoded_nums, Y, base_train, base_valid) # logger.log_string('gbm2') # gbm2 = gboosting_grid(encoded_combined_nums, Y, base_train, base_valid) print('DONE training.') stack_train = stack_train.cbind(glm0.predict(stack_train)) stack_valid = stack_valid.cbind(glm0.predict(stack_valid)) stack_train = stack_train.cbind(glm1.predict(stack_train)) stack_valid = stack_valid.cbind(glm1.predict(stack_valid)) stack_train = stack_train.cbind(glm2.predict(stack_train)) stack_valid = stack_valid.cbind(glm2.predict(stack_valid)) # # stack_train = stack_train.cbind(rnn0.predict(stack_train)) # stack_valid = stack_valid.cbind(rnn0.predict(stack_valid)) # stack_train = stack_train.cbind(rnn1.predict(stack_train)) # stack_valid = stack_valid.cbind(rnn1.predict(stack_valid)) # stack_train = stack_train.cbind(rnn2.predict(stack_train)) # stack_valid = stack_valid.cbind(rnn2.predict(stack_valid)) # # stack_train = stack_train.cbind(gbm0.predict(stack_train)) # stack_valid = stack_valid.cbind(gbm0.predict(stack_valid)) # stack_train = stack_train.cbind(gbm1.predict(stack_train)) # stack_valid = stack_valid.cbind(gbm1.predict(stack_valid)) # stack_train = stack_train.cbind(gbm2.predict(stack_train)) # stack_valid = stack_valid.cbind(gbm2.predict(stack_valid)) testHF = testHF.cbind(glm0.predict(testHF)) testHF = testHF.cbind(glm1.predict(testHF)) testHF = testHF.cbind(glm2.predict(testHF)) # testHF = testHF.cbind(rnn0.predict(testHF)) # testHF = testHF.cbind(rnn1.predict(testHF)) # testHF = testHF.cbind(rnn2.predict(testHF)) # testHF = testHF.cbind(gbm0.predict(testHF)) # testHF = testHF.cbind(gbm1.predict(testHF)) # testHF = testHF.cbind(gbm2.predict(testHF)) logger.log_string('glm3') # glm3 = glm_grid(encoded_combined_nums + ['predict', 'predict0','predict1'], Y, stack_train, stack_valid, should_submit=True) rnn = neural_net_grid(MOST_IMPORTANT_VARS_ORDERD + ['predict', 'predict0', 'predict1','predict2', 'predict3', 'predict4','predict5', 'predict6', 'predict7'], Y, stack_train, stack_valid) sub = testHF[ID_VAR].cbind(rnn.predict(testHF)) print(sub.head()) # create time stamp import re import time time_stamp = re.sub('[: ]', '_', time.asctime()) # save file for submission sub.columns = [ID_VAR, Y] sub_fname = 'Submission_'+str(time_stamp) + '.csv' # h2o.download_csv(sub, 's3n://'+S3_BUCKET+'/kaggle_submissions/Mercedes/' +sub_fname) spark_sub_frame = hc.as_spark_frame(sub) spark_sub_frame.select(ID_VAR,Y).coalesce(1).write.option("header","true").csv('s3n://'+S3_BUCKET+'/Kaggle_Submissions/Mercedes/' +sub_fname) ================================================ FILE: 03_regression/src/spark_kaggle_starter/target_encoder.py ================================================ def target_encoder(training_frame, test_frame, x, y, lambda_=0.15, threshold=150, test=False, valid_frame = None,frame_type='h2o',id_col=None): """ Applies simple target encoding to categorical variables. :param training_frame: Training frame which to create target means and to be encoded. :param test_frame: Test frame to be encoded using information from training frame. :param x: Name of input variable to be encoded. :param y: Name of target variable to use for encoding. :param lambda_: Balance between level mean and overall mean for small groups. :param threshold: Number below which a level is considered small enough to be shrunken. :param test: Whether or not to print the row_val_dict for testing purposes. :param valid_frame: To also combine features on a validation frame include this (optional) :param frame_type: The type of frame being used. Accepted: ['h2o','pandas','spark'] :param id_col: The name of the id column for spark dataframes only. Will conserve memory and only return 2 columns in dfs(id,x_Tencode) :return: Tuple of encoded variable from train and test set as H2OFrames. """ encode_name = x + '_Tencode' if frame_type == 'spark': # x_column_type = training_frame.select(x).dtypes.flatMap(list)[1] #To get the average out of the df have to convert to an rdd and flatMap #it. Then take the first and only value from the list returned. overall_mean = training_frame.agg({y:'avg'}).rdd.flatMap(list).first() overall_mean_train = overall_mean #ALTERNATIVE way to do the same thing with sql functions # from pyspark.sql.functions import col, avg # overall_mean = training_frame.agg(avg(col(y))).rdd.flatMap(list).first() def find_shrunken_averages(tuple_input): """ Reduce function to return the proper average for a given level. :return: A tuple of (level, ajusted_mean||overall_mean) """ #The categorical level. level = tuple_input[0] # The labels list (y varaibale) from a map function. labels = tuple_input[1] # The total number of level occurances in the frame (ie count) level_n = len(labels) level_mean = sum(labels) / level_n # Determine if there enough occurances of a level. If NOT return overall_mean if level_n >= threshold: return(level,level_mean) else: return(level, ((1 - lambda_) * level_mean) +\ (lambda_ * overall_mean) ) #This article shows why one has to use a map-groupByKey-map rather then map-reduce order. To collect all values into one reducer #you have to do a groupByKey. #https://databricks.gitbooks.io/databricks-spark-knowledge-base/content/best_practices/prefer_reducebykey_over_groupbykey.html levels_average_list_train = training_frame.select(x,y).rdd.map(lambda i: (i[0], i[1])).groupByKey().map(find_shrunken_averages).collect() levels_average_list_valid = None overall_mean_valid = None if valid_frame: #update overall_mean to valid frames mean overall_mean_valid = valid_frame.agg({y:'avg'}).rdd.flatMap(list).first() overall_mean = overall_mean_valid levels_average_list_valid = valid_frame.select(x,y).rdd.map(lambda i: (i[0], i[1])).groupByKey().map(find_shrunken_averages).collect() # print(levels_average_list_train) from pyspark.sql.functions import lit #creates a literal value # create new frames with a new column new_training_frame, new_test_frame, new_valid_frame = None,None,None if id_col != None: #filter out other columns to save memory if id_col specified new_training_frame = training_frame.select(id_col,x).withColumn(encode_name, lit(overall_mean_train)) if valid_frame: new_valid_frame = valid_frame.select(id_col,x).withColumn(encode_name, lit(overall_mean_valid)) new_test_frame = test_frame.select(id_col,x).withColumn(encode_name, lit(overall_mean_valid)) else: new_test_frame = test_frame.select(id_col,x).withColumn(encode_name, lit(overall_mean_train)) else: new_training_frame = training_frame.withColumn(encode_name, lit(overall_mean_train)) if valid_frame: new_valid_frame = valid_frame.withColumn(encode_name, lit(overall_mean_valid)) new_test_frame = test_frame.withColumn(encode_name, lit(overall_mean_valid)) else: new_test_frame = test_frame.withColumn(encode_name, lit(overall_mean_train)) #Replace the values in the dataframes with new encoded values from pyspark.sql.functions import when for k,v in levels_average_list_train: new_training_frame = new_training_frame.withColumn(encode_name, when(new_training_frame[x] == k, v) .otherwise(new_training_frame[encode_name])) if not valid_frame: new_test_frame= new_test_frame.withColumn(encode_name, when(new_test_frame[x] == k, v) .otherwise(new_test_frame[encode_name])) #if we have a validation frame we want to set the test levels to the original_numerics #from the averaged valid frame instead of the test frame if valid_frame: for k,v in levels_average_list_valid: new_valid_frame = new_valid_frame.withColumn(encode_name, when(new_valid_frame[x] == k, v) .otherwise(new_valid_frame[encode_name])) new_test_frame= new_test_frame.withColumn(encode_name, when(new_test_frame[x] == k, v) .otherwise(new_test_frame[encode_name])) if id_col != None: #remove origional x as its already in the original dfs if valid_frame: return new_training_frame.drop(x), new_valid_frame.drop(x),new_test_frame.drop(x) else: return new_training_frame.drop(x), new_test_frame.drop(x) else: if valid_frame: return new_training_frame, new_valid_frame, new_test_frame else: return new_training_frame, new_test_frame else: import h2o import pandas as pd import numpy as np trdf, vdf, tss = None, None, None if frame_type == 'h2o': # convert to pandas trdf = training_frame.as_data_frame().loc[:, [x,y]] # df vdf = valid_frame.as_data_frame().loc[:, [x,y]] # df tss = test_frame.as_data_frame().loc[:, x] # series elif frame_type == 'pandas': trdf = training_frame.loc[:, [x,y]] # df vdf = valid_frame.loc[:, [x,y]] # df tss = test_frame.loc[:, x] # series # create dictionary of level:encode val overall_mean_train = trdf[y].mean() overall_mean_valid = vdf[y].mean() row_val_dict_train = {} row_val_dict_valid = {} for level in trdf[x].unique(): level_df = trdf[trdf[x] == level][y] level_n = level_df.shape[0] level_mean = level_df.mean() if level_n >= threshold: row_val_dict_train[level] = level_mean else: row_val_dict_train[level] = ((1 - lambda_) * level_mean) +\ (lambda_ * overall_mean_train) for level in vdf[x].unique(): level_df = vdf[trdf[x] == level][y] level_n = level_df.shape[0] level_mean = level_df.mean() if level_n >= threshold: row_val_dict_valid[level] = level_mean else: row_val_dict_valid[level] = ((1 - lambda_) * level_mean) +\ (lambda_ * overall_mean_valid) row_val_dict_train[np.nan] = overall_mean_train # handle missing values row_val_dict_valid[np.nan] = overall_mean_valid # handle missing values if test: print(row_val_dict_train) print(row_val_dict_valid) # apply the transform to training data trdf[encode_name] = trdf[x].apply(lambda i: row_val_dict_train[i]) vdf[encode_name] = vdf[x].apply(lambda i: row_val_dict_valid[i]) # apply the transform to test data tsdf = pd.DataFrame(columns=[x, encode_name]) tsdf[x] = tss if valid_frame: tsdf.loc[:, encode_name] = overall_mean_valid # handle previously unseen values else: tsdf.loc[:, encode_name] = overall_mean_train # handle previously unseen values # handle values that are seen in tsdf but not row_val_dict for i, col_i in enumerate(tsdf[x]): try: row_val_dict_train[col_i] except: # a value that appeared in tsdf isn't in the row_val_dict so just # make it the overall_mean row_val_dict_train[col_i] = overall_mean_train if valid_frame: for i, col_i in enumerate(vdf[x]): try: row_val_dict_valid[col_i] except: # a value that appeared in tsdf isn't in the row_val_dict so just # make it the overall_mean row_val_dict_valid[col_i] = overall_mean_valid tsdf[encode_name] = tsdf[x].apply(lambda i: row_val_dict_valid[i]) else: tsdf[encode_name] = tsdf[x].apply(lambda i: row_val_dict_train[i]) if frame_type == 'h2o': # convert back to H2O trdf = h2o.H2OFrame(trdf[encode_name].as_matrix()) trdf.columns = [encode_name] if valid_frame: vdf = h2o.H2OFrame(vdf[encode_name].as_matrix()) vdf.columns = [encode_name] tsdf = h2o.H2OFrame(tsdf[encode_name].as_matrix()) tsdf.columns = [encode_name] if valid_frame: return (trdf,vdf, tsdf) else: return (trdf,tsdf) else: #pandas #just return pandas if valid_frame: return (trdf,vdf, tsdf) else: return (trdf,tsdf) #EXAMPLE OF HOW TO RUN WITH A SPARK CLUSTER # import pandas as pd # import numpy as np # import time # import os # # import sys # from operator import add # from pyspark import SparkContext # from pyspark.sql import SparkSession # from pyspark.sql import SQLContext # from pyspark.sql import functions as F #https://stackoverflow.com/questions/39504950/python-pyspark-get-sum-of-a-pyspark-dataframe-column-values # # from get_type_lists import get_type_lists # from target_encoder import target_encoder # # sc = SparkContext(appName="App") # sqlContext = SQLContext(sc) # # # Y = 'y' # ID_VAR = 'ID' # DROPS = [ID_VAR] # # train = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('s3n://emr-related-files/train.csv') # test = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('s3n://emr-related-files/test.csv') # # print(train.schema) # print(train.dtypes) # # original_numerics, categoricals = get_type_lists(frame=train,rejects=[ID_VAR,Y],frame_type='spark') #These three have test varaibles that don't occur in the train dataset # # # # print("Encoding numberic variables...") # training_df_list, test_df_list = list(),list() # for i, var in enumerate(categoricals): # total = len(categoricals) # # print('Encoding: ' + var + ' (' + str(i+1) + '/' + str(total) + ') ...') # # tr_enc, ts_enc = target_encoder(train, test, var, Y,frame_type='spark',id_col=ID_VAR) # training_df_list.append(tr_enc) # test_df_list.append(ts_enc) # #join all the new variables # for i, df in enumerate(training_df_list): # train = train.join(training_df_list[i],ID_VAR,'inner') # test = test.join(test_df_list[i],ID_VAR,'inner') # print(train.rdd.collect()) # print('Done encoding.') ================================================ FILE: 03_regression/src/target_encoder.py ================================================ import numpy as np import pandas as pd import h2o def target_encoder(training_frame, test_frame, x, y, lambda_=0.15, threshold=150, test=False): """ Applies simple target encoding to categorical variables. :param training_frame: Training frame which to create target means and to be encoded. :param test_frame: Test frame to be encoded using information from training frame. :param x: Name of input variable to be encoded. :param y: Name of target variable to use for encoding. :param lambda_: Balance between level mean and overall mean for small groups. :param threshold: Number below which a level is considered small enough to be shrunken. :param test: Whether or not to print the row_val_dict for testing purposes. :return: Tuple of encoded variable from train and test set as H2OFrames. """ # convert to pandas trdf = training_frame.as_data_frame().loc[:, [x,y]] # df tss = test_frame.as_data_frame().loc[:, x] # series # create dictionary of level:encode val encode_name = x + '_Tencode' overall_mean = trdf[y].mean() row_val_dict = {} for level in trdf[x].unique(): level_df = trdf[trdf[x] == level][y] level_n = level_df.shape[0] level_mean = level_df.mean() if level_n >= threshold: row_val_dict[level] = level_mean else: row_val_dict[level] = ((1 - lambda_) * level_mean) +\ (lambda_ * overall_mean) row_val_dict[np.nan] = overall_mean # handle missing values if test: print(row_val_dict) # apply the transform to training data trdf[encode_name] = trdf[x].apply(lambda i: row_val_dict[i]) # apply the transform to test data tsdf = pd.DataFrame(columns=[x, encode_name]) tsdf[x] = tss tsdf.loc[:, encode_name] = overall_mean # handle previously unseen values # handle values that are seen in tsdf but not row_val_dict for i, col_i in enumerate(tsdf[x]): try: row_val_dict[col_i] except: # a value that appeared in tsdf isn't in the row_val_dict so just # make it the overall_mean row_val_dict[col_i] = overall_mean tsdf[encode_name] = tsdf[x].apply(lambda i: row_val_dict[i]) # convert back to H2O trdf = h2o.H2OFrame(trdf[encode_name].as_matrix()) trdf.columns = [encode_name] tsdf = h2o.H2OFrame(tsdf[encode_name].as_matrix()) tsdf.columns = [encode_name] return (trdf, tsdf) ================================================ FILE: 03_regression/xml/03_linear_regression.xml ================================================ <_ROOT_ EMVERSION="14.1" ORIENTATION="HORIZONTAL"> ================================================ FILE: 03_regression/xml/03_logistic_regression.xml ================================================ <_ROOT_ EMVERSION="14.1" ORIENTATION="HORIZONTAL"> ================================================ FILE: 04_decision_trees/04_decision_trees.md ================================================ ## Section 04: Decision Trees Decision trees strike a nice balance between interpretability and accuracy. They pick up on nonlinearity and high degree interactions, but they still produce simple rules or diagrams that explain their decisions. They're also a very robust modeling technique that can generally accept missing values, variables of disparate scales, and correlated variables. Many techniques have evolved for combining multiple decision trees into ensembles models. These ensembles decrease the error from variance a single tree can produce in new data, while typically not increasing error from bias. Tree-based ensembles are often the most accurate types of models for tabular data. #### Class Notes * [Overview of decision trees](notes/instructor_notes.pdf) * Overview of training decision trees in Enterprise Miner - [Blackboard electronic reserves](https://blackboard.gwu.edu) * [More decision tree splitting and stopping strategies](notes/tan_notes.pdf) * [Advanced notes](notes/msba_2017_ml_week_3_FINAL.pdf) * [EM decision tree example](xml/04_decision_trees.xml) * [H2o decision tree ensemble examples](src/py_part_4_decision_tree_ensembles.ipynb) * [Kaggle House Prices example notebook](src/py_part_4_kaggle_xgboost.ipynb) #### [Sample Quiz](quiz/sample/quiz_4.pdf) #### [Quiz Key](quiz/key/quiz_4_key.pdf) #### Supplementary References * [XGBoost GitHub](https://github.com/dmlc/xgboost) * [*Gradient Boosting Machines with H2O*](http://h2o-release.s3.amazonaws.com/h2o/rel-tverberg/5/docs-website/h2o-docs/booklets/GBMBooklet.pdf) * [H2O GBM Tuning Tutorial for Python](https://github.com/h2oai/h2o-3/blob/master/h2o-docs/src/product/tutorials/gbm/gbmTuning.ipynb) * *Predictive Modeling and Decision Trees in Enterprise Miner* - [Blackboard electronic reserves](https://blackboard.gwu.edu) *** * [*Introduction to Statistical Learning*](http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Fourth%20Printing.pdf)
Chapter 8 * [*Introduction to Data Mining*](http://www-users.cs.umn.edu/~kumar/dmbook/ch4.pdf)
Chapter 4 * [*Elements of Statistical Learning*](https://web.stanford.edu/~hastie/ElemStatLearn/printings/ESLII_print12.pdf)
Chapters 10 and 15 * [*Pattern Recognition in Machine Learning*](http://users.isr.ist.utl.pt/~wurmd/Livros/school/Bishop%20-%20Pattern%20Recognition%20And%20Machine%20Learning%20-%20Springer%20%202006.pdf)
Chapter 14 * [*Random Forests*](https://www.stat.berkeley.edu/~breiman/randomforest2001.pdf)
by Leo Breiman * [*Greedy Function Approximation: A Gradient Boosting Machine*](https://statweb.stanford.edu/~jhf/ftp/trebst.pdf)
by Jerome Freidman * [*Extremely Randomized Trees*](https://pdfs.semanticscholar.org/336a/165c17c9c56160d332b9f4a2b403fccbdbfb.pdf)
by Pierre Geurts, Damien Ernst and Louis Wehenkel * Stacked and blended ensemble models: * [Stacked Generalization](http://machine-learning.martinsewell.com/ensembles/stacking/Wolpert1992.pdf)
by David Wolpert, 1992 * [Super Learner](http://biostats.bepress.com/ucbbiostat/paper222/)
by Van Der Laan et al, 2007 * [Stacknet](https://github.com/kaz-Anova/StackNet)
by Marios Michailidis * [Ensemble Models in SAS Enterprise Miner](https://support.sas.com/resources/papers/proceedings16/SAS3120-2016.pdf) ================================================ FILE: 04_decision_trees/data/.gitignore ================================================ submission* ================================================ FILE: 04_decision_trees/quiz/.gitignore ================================================ key ================================================ FILE: 04_decision_trees/src/py_part_4_decision_tree_ensembles.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# imports\n", "import h2o \n", "import numpy as np\n", "import pandas as pd\n", "from h2o.estimators.gbm import H2OGradientBoostingEstimator \n", "from h2o.estimators.random_forest import H2ORandomForestEstimator\n", "from h2o.grid.grid_search import H2OGridSearch" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# display matplotlib graphics in notebook\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: java version \"1.8.0_112\"; Java(TM) SE Runtime Environment (build 1.8.0_112-b16); Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)\n", " Starting server from /Users/phall/anaconda/lib/python3.5/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmp5g1s2ls0\n", " JVM stdout: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmp5g1s2ls0/h2o_phall_started_from_python.out\n", " JVM stderr: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmp5g1s2ls0/h2o_phall_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321... successful.\n" ] }, { "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", "
H2O cluster uptime:03 secs
H2O cluster version:3.10.3.4
H2O cluster version age:1 month
H2O cluster name:H2O_from_python_phall_zsyxfd
H2O cluster total nodes:1
H2O cluster free memory:3.556 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
Python version:3.5.2 final
" ], "text/plain": [ "-------------------------- ------------------------------\n", "H2O cluster uptime: 03 secs\n", "H2O cluster version: 3.10.3.4\n", "H2O cluster version age: 1 month\n", "H2O cluster name: H2O_from_python_phall_zsyxfd\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 3.556 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "Python version: 3.5.2 final\n", "-------------------------- ------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# start and connect to h2o server\n", "h2o.init()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# location of \"dirty\" file\n", "# decision trees handle dirty data elegantly\n", "path = '/Users/phall/workspace/GWU_data_mining/02_analytical_data_prep/data/loan.csv'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# define input variable measurement levels \n", "# strings automatically parsed as enums (nominal)\n", "# numbers automatically parsed as numeric\n", "col_types = {'bad_loan': 'enum'}" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "frame = h2o.import_file(path=path, col_types=col_types) # multi-threaded import" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rows:163987\n", "Cols:16\n", "\n", "\n" ] }, { "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", "
id bad_loan loan_amnt int_rate emp_length home_ownership annual_inc purpose addr_state dti delinq_2yrs revol_util total_acc longest_credit_length verification_status term_length
type int enum int real int enum real enum enum real int real int int enum int
mins 10001.0 500.0 5.42 0.0 1896.0 0.0 0.0 0.0 1.0 0.0 36.0
mean 91994.0 13073.20922041574213.7171432072543155.686200649105202 71931.19588595249 15.8807941520614970.2274671362978803754.07622244747627 24.57791064669861614.8582097058084 40.980679245283056
maxs 173987.0 35000.0 26.06000000000000210.0 7141778.0 39.93 29.0 150.70000000000002118.0 65.0 60.0
sigma 47339.11363414683 7992.39937936017854.39356794621704253.610039811481059 59464.026648950334 7.583636421364416 0.6949139713078192 25.28413550493213411.6850039486326966.949793041523766 9.732920010298912
zeros 0 0 0 13810 0 263 135210 1515 0 11 0
missing0 0 4992 4854 10545 2571 4983 2488 2484 5025 4997 5154 4933 4907 2426 4987
0 10001.0 0 5000.0 10.65 10.0 RENT 24000.0 credit_card AZ 27.6500000000000020.0 83.7 9.0 26.0 verified 36.0
1 10002.0 1 2500.0 15.27 0.0 RENT 30000.0 car GA 1.0 0.0 9.4 4.0 12.0 verified 60.0
2 10003.0 0 2400.0 15.96 10.0 RENT 12252.0 small_business IL 8.72 0.0 98.5 10.0 10.0 not verified 36.0
3 10004.0 0 10000.0 13.49 10.0 RENT nan other CA 20.0 0.0 nan 37.0 15.0 verified 36.0
4 10005.0 0 5000.0 7.9 3.0 RENT 36000.0 wedding AZ 11.2000000000000010.0 28.3 12.0 nan verified 36.0
5 10006.0 0 3000.0 18.64 9.0 RENT 48000.0 car CA 5.35000000000000050.0 87.5 4.0 4.0 verified 36.0
6 10007.0 1 5600.0 21.28 4.0 OWN 40000.0 small_business CA 5.55 0.0 32.6 13.0 7.0 verified 60.0
7 10008.0 1 5375.0 12.69 0.0 RENT 15000.0 other TX 18.0800000000000020.0 36.5 3.0 7.0 verified 60.0
8 10009.0 0 6500.0 14.65 5.0 OWN 72000.0 debt_consolidationAZ 16.12 0.0 20.6 23.0 13.0 not verified 60.0
9 10010.0 0 12000.0 12.69 10.0 OWN 75000.0 debt_consolidationCA 10.78 0.0 67.1 34.0 22.0 verified 36.0
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "frame.describe()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
home_ownership Count
ANY 1
MORTGAGE 74209
NONE 30
OTHER 151
OWN 13369
RENT 69416
mortgage 4240
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
home_ownership Count
ANY 1
MORTGAGE 78449
NONE 30
OTHER 151
OWN 13369
RENT 69416
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "# correct MORTGAGE/mortgage problem using gsub() and trim() functions\n", "print(frame['home_ownership'].table())\n", "\n", "frame['home_ownership'] = frame['home_ownership'].gsub(pattern='mortgage',\n", " replacement='MORTGAGE')\n", "frame['home_ownership'] = frame['home_ownership'].trim()\n", "\n", "print(frame['home_ownership'].table())" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# split into 40% training, 30% validation, and 30% test\n", "train, valid, test = frame.split_frame([0.4, 0.3])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bad_loan\n", "['loan_amnt', 'int_rate', 'emp_length', 'home_ownership', 'annual_inc', 'purpose', 'addr_state', 'dti', 'delinq_2yrs', 'revol_util', 'total_acc', 'longest_credit_length', 'verification_status', 'term_length']\n" ] } ], "source": [ "# assign target and inputs\n", "y = 'bad_loan'\n", "X = [name for name in frame.columns if name not in ['id', '_WARN_', y]]\n", "print(y)\n", "print(X)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# set target to factor - for binary classification\n", "train[y] = train[y].asfactor()\n", "valid[y] = valid[y].asfactor()\n", "test[y] = test[y].asfactor()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "drf Model Build progress: |███████████████████████████████████████████████| 100%\n", "Model Details\n", "=============\n", "H2ORandomForestEstimator : Distributed Random Forest\n", "Model Key: rf_model\n", "\n", "\n", "ModelMetricsBinomial: drf\n", "** Reported on train data. **\n", "\n", "MSE: 0.1489042863556249\n", "RMSE: 0.3858811816552148\n", "LogLoss: 0.5180827157657203\n", "Mean Per-Class Error: 0.3884354978859006\n", "AUC: 0.6524497477686478\n", "Gini: 0.3048994955372957\n", "Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.18628626443066934: \n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
01ErrorRate
030044.023039.00.434 (23039.0/53083.0)
14286.08215.00.3429 (4286.0/12501.0)
Total34330.031254.00.4166 (27325.0/65584.0)
" ], "text/plain": [ " 0 1 Error Rate\n", "----- ----- ----- ------- -----------------\n", "0 30044 23039 0.434 (23039.0/53083.0)\n", "1 4286 8215 0.3429 (4286.0/12501.0)\n", "Total 34330 31254 0.4166 (27325.0/65584.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Maximum Metrics: Maximum metrics at their respective thresholds\n", "\n" ] }, { "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", "
metricthresholdvalueidx
max f10.18628630.3754999258.0
max f20.08333650.5525161342.0
max f0point50.30563810.3285712168.0
max accuracy0.62946030.809603025.0
max precision0.64020500.544117622.0
max recall0.00000351.0399.0
max specificity0.8750.99998120.0
max absolute_mcc0.24429780.1786798211.0
max min_per_class_accuracy0.20130030.6060315247.0
max mean_per_class_accuracy0.18628630.6115645258.0
" ], "text/plain": [ "metric threshold value idx\n", "--------------------------- ----------- -------- -----\n", "max f1 0.186286 0.3755 258\n", "max f2 0.0833365 0.552516 342\n", "max f0point5 0.305638 0.328571 168\n", "max accuracy 0.62946 0.809603 25\n", "max precision 0.640205 0.544118 22\n", "max recall 3.49859e-06 1 399\n", "max specificity 0.875 0.999981 0\n", "max absolute_mcc 0.244298 0.17868 211\n", "max min_per_class_accuracy 0.2013 0.606032 247\n", "max mean_per_class_accuracy 0.186286 0.611565 258" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Gains/Lift Table: Avg response rate: 19.06 %\n", "\n" ] }, { "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", "
groupcumulative_data_fractionlower_thresholdliftcumulative_liftresponse_ratecumulative_response_ratecapture_ratecumulative_capture_rategaincumulative_gain
10.01000240.82264345.24630035.24630031.01.00.05247580.0524758424.6300296424.6300296
20.02000490.79877475.24630035.24630031.01.00.05247580.1049516424.6300296424.6300296
30.03000730.78604585.24630035.24630031.01.00.05247580.1574274424.6300296424.6300296
40.04031470.76966295.24630035.24630031.01.00.05407570.2115031424.6300296424.6300296
50.05007320.75842705.24630035.24630031.01.00.05119590.2626990424.6300296424.6300296
60.10450720.70786525.24630035.24630031.01.00.28557720.5482761424.6300296424.6300296
70.15000610.65700825.24630035.24630031.01.00.23870090.7869770424.6300296424.6300296
80.20193950.20224724.10184904.95197830.78185550.94389910.21302301.0310.1848998395.1978254
90.31411620.12359550.03.18353480.00.60681520.01.0-100.0218.3534780
100.40049400.10112360.02.49691620.00.47593850.01.0-100.0149.6916165
110.52611920.07865170.01.90071000.00.36229530.01.0-100.090.0710042
120.60118320.06741570.01.66338640.00.31705890.01.0-100.066.3386426
130.70000300.05164970.01.42856520.00.27229950.01.0-100.042.8565205
140.80155220.03745320.01.24757940.00.23780170.01.0-100.024.7579372
150.92333500.02247190.01.08303060.00.20643700.01.0-100.08.3030583
161.00.00.01.00.00.19061050.01.0-100.00.0
" ], "text/plain": [ " group cumulative_data_fraction lower_threshold lift cumulative_lift response_rate cumulative_response_rate capture_rate cumulative_capture_rate gain cumulative_gain\n", "-- ------- -------------------------- ----------------- ------- ----------------- --------------- -------------------------- -------------- ------------------------- ------- -----------------\n", " 1 0.0100024 0.822643 5.2463 5.2463 1 1 0.0524758 0.0524758 424.63 424.63\n", " 2 0.0200049 0.798775 5.2463 5.2463 1 1 0.0524758 0.104952 424.63 424.63\n", " 3 0.0300073 0.786046 5.2463 5.2463 1 1 0.0524758 0.157427 424.63 424.63\n", " 4 0.0403147 0.769663 5.2463 5.2463 1 1 0.0540757 0.211503 424.63 424.63\n", " 5 0.0500732 0.758427 5.2463 5.2463 1 1 0.0511959 0.262699 424.63 424.63\n", " 6 0.104507 0.707865 5.2463 5.2463 1 1 0.285577 0.548276 424.63 424.63\n", " 7 0.150006 0.657008 5.2463 5.2463 1 1 0.238701 0.786977 424.63 424.63\n", " 8 0.201939 0.202247 4.10185 4.95198 0.781856 0.943899 0.213023 1 310.185 395.198\n", " 9 0.314116 0.123596 0 3.18353 0 0.606815 0 1 -100 218.353\n", " 10 0.400494 0.101124 0 2.49692 0 0.475938 0 1 -100 149.692\n", " 11 0.526119 0.0786517 0 1.90071 0 0.362295 0 1 -100 90.071\n", " 12 0.601183 0.0674157 0 1.66339 0 0.317059 0 1 -100 66.3386\n", " 13 0.700003 0.0516497 0 1.42857 0 0.2723 0 1 -100 42.8565\n", " 14 0.801552 0.0374532 0 1.24758 0 0.237802 0 1 -100 24.7579\n", " 15 0.923335 0.0224719 0 1.08303 0 0.206437 0 1 -100 8.30306\n", " 16 1 0 0 1 0 0.190611 0 1 -100 0" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "ModelMetricsBinomial: drf\n", "** Reported on validation data. **\n", "\n", "MSE: 0.14777166398397243\n", "RMSE: 0.38441080107610454\n", "LogLoss: 0.4665519053428598\n", "Mean Per-Class Error: 0.37716586320128553\n", "AUC: 0.6683742817869399\n", "Gini: 0.33674856357387983\n", "Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.19475064146786594: \n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
01ErrorRate
023607.016029.00.4044 (16029.0/39636.0)
13339.06203.00.3499 (3339.0/9542.0)
Total26946.022232.00.3938 (19368.0/49178.0)
" ], "text/plain": [ " 0 1 Error Rate\n", "----- ----- ----- ------- -----------------\n", "0 23607 16029 0.4044 (16029.0/39636.0)\n", "1 3339 6203 0.3499 (3339.0/9542.0)\n", "Total 26946 22232 0.3938 (19368.0/49178.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Maximum Metrics: Maximum metrics at their respective thresholds\n", "\n" ] }, { "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", "
metricthresholdvalueidx
max f10.19475060.3904450232.0
max f20.11135150.5613968314.0
max f0point50.30591120.3536758145.0
max accuracy0.70210510.80607182.0
max precision0.76404491.00.0
max recall0.00004961.0399.0
max specificity0.76404491.00.0
max absolute_mcc0.23031480.1998727202.0
max min_per_class_accuracy0.20323900.6158038224.0
max mean_per_class_accuracy0.19475060.6228341232.0
" ], "text/plain": [ "metric threshold value idx\n", "--------------------------- ----------- -------- -----\n", "max f1 0.194751 0.390445 232\n", "max f2 0.111352 0.561397 314\n", "max f0point5 0.305911 0.353676 145\n", "max accuracy 0.702105 0.806072 2\n", "max precision 0.764045 1 0\n", "max recall 4.95825e-05 1 399\n", "max specificity 0.764045 1 0\n", "max absolute_mcc 0.230315 0.199873 202\n", "max min_per_class_accuracy 0.203239 0.615804 224\n", "max mean_per_class_accuracy 0.194751 0.622834 232" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Gains/Lift Table: Avg response rate: 19.40 %\n", "\n" ] }, { "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", "
groupcumulative_data_fractionlower_thresholdliftcumulative_liftresponse_ratecumulative_response_ratecapture_ratecumulative_capture_rategaincumulative_gain
10.01128550.51685392.41441442.41441440.46846850.46846850.02724800.0272480141.4414414141.4414414
20.02000890.47915472.34265732.38313010.45454550.46239840.02043600.0476839134.2657343138.3130081
30.03281960.44943822.03699632.24802210.39523810.43618340.02609520.0737791103.6996337124.8022114
40.04005860.43258432.08470182.21850840.40449440.43045690.01509120.0888703108.4701815121.8508395
50.05246250.41573032.06998742.18339300.40163930.42364340.02567600.1145462106.9987390118.3392964
60.10451830.35955061.81592552.00037410.35234380.38813230.09452940.209075781.5925481100.0374139
70.15004680.32303371.71027591.91235000.33184460.37105300.07786630.286941971.027587991.2350016
80.20602710.29213481.46396941.79051900.28405380.34741410.08195350.368895446.396937679.0518995
90.30790190.24719101.24165521.60891760.24091820.31217800.12649340.495388824.165515160.8917631
100.40166330.21348311.07413711.48408230.20841470.28795630.10071260.59610147.413709748.4082262
110.51305460.17977530.99069001.37696000.19222340.26717130.11035420.7064557-0.930996737.6959967
120.60000410.15295990.81960141.29619050.15902710.25149960.07126390.7777196-18.039864729.6190474
130.69998780.12374420.72742921.21495070.14114300.23573670.07273110.8504506-27.257083021.4950661
140.79999190.09983830.60257451.13839980.11691740.22088350.06025990.9107105-39.742547013.8399753
150.90650290.06741570.50574211.06406460.09812910.20646030.05386710.9645777-49.42579386.4064603
161.00.00.37886041.00.07351020.19402990.03542231.0-62.11396260.0
" ], "text/plain": [ " group cumulative_data_fraction lower_threshold lift cumulative_lift response_rate cumulative_response_rate capture_rate cumulative_capture_rate gain cumulative_gain\n", "-- ------- -------------------------- ----------------- -------- ----------------- --------------- -------------------------- -------------- ------------------------- --------- -----------------\n", " 1 0.0112855 0.516854 2.41441 2.41441 0.468468 0.468468 0.027248 0.027248 141.441 141.441\n", " 2 0.0200089 0.479155 2.34266 2.38313 0.454545 0.462398 0.020436 0.0476839 134.266 138.313\n", " 3 0.0328196 0.449438 2.037 2.24802 0.395238 0.436183 0.0260952 0.0737791 103.7 124.802\n", " 4 0.0400586 0.432584 2.0847 2.21851 0.404494 0.430457 0.0150912 0.0888703 108.47 121.851\n", " 5 0.0524625 0.41573 2.06999 2.18339 0.401639 0.423643 0.025676 0.114546 106.999 118.339\n", " 6 0.104518 0.359551 1.81593 2.00037 0.352344 0.388132 0.0945294 0.209076 81.5925 100.037\n", " 7 0.150047 0.323034 1.71028 1.91235 0.331845 0.371053 0.0778663 0.286942 71.0276 91.235\n", " 8 0.206027 0.292135 1.46397 1.79052 0.284054 0.347414 0.0819535 0.368895 46.3969 79.0519\n", " 9 0.307902 0.247191 1.24166 1.60892 0.240918 0.312178 0.126493 0.495389 24.1655 60.8918\n", " 10 0.401663 0.213483 1.07414 1.48408 0.208415 0.287956 0.100713 0.596101 7.41371 48.4082\n", " 11 0.513055 0.179775 0.99069 1.37696 0.192223 0.267171 0.110354 0.706456 -0.930997 37.696\n", " 12 0.600004 0.15296 0.819601 1.29619 0.159027 0.2515 0.0712639 0.77772 -18.0399 29.619\n", " 13 0.699988 0.123744 0.727429 1.21495 0.141143 0.235737 0.0727311 0.850451 -27.2571 21.4951\n", " 14 0.799992 0.0998383 0.602575 1.1384 0.116917 0.220884 0.0602599 0.910711 -39.7425 13.84\n", " 15 0.906503 0.0674157 0.505742 1.06406 0.0981291 0.20646 0.0538671 0.964578 -49.4258 6.40646\n", " 16 1 0 0.37886 1 0.0735102 0.19403 0.0354223 1 -62.114 0" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Scoring History: \n" ] }, { "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", "
timestampdurationnumber_of_treestraining_rmsetraining_loglosstraining_auctraining_lifttraining_classification_errorvalidation_rmsevalidation_loglossvalidation_aucvalidation_liftvalidation_classification_error
2017-03-03 20:28:27 0.019 sec0.0nannannannannannannannannannan
2017-03-03 20:28:28 0.830 sec1.00.53768409.87062860.53507653.72468270.81188980.53821199.87418350.53258941.28338400.8059701
2017-03-03 20:28:28 1.424 sec2.00.52134998.75061210.53970915.00127210.81227800.46862615.12339240.55280481.52589300.8059701
2017-03-03 20:28:29 1.836 sec3.00.50755187.75993380.54286775.21621560.81177770.44151453.42903000.56818981.89550850.4428403
2017-03-03 20:28:29 2.173 sec4.00.49480756.91564720.54634575.23979330.81013940.42700372.65341400.58040401.74634460.4851763
------------------------------------------
2017-03-03 20:30:43 2 min 15.662 sec85.00.38618160.52370250.65130795.24630030.40520550.38450640.46683630.66791492.41785380.4003416
2017-03-03 20:30:46 2 min 18.822 sec86.00.38611290.52207310.65154325.24630030.41766280.38447890.46678400.66811492.43026890.3714873
2017-03-03 20:30:49 2 min 22.102 sec87.00.38606950.51958980.65167705.24630030.41664130.38448310.46670760.66803092.44080150.3860873
2017-03-03 20:30:52 2 min 25.561 sec88.00.38597590.51929950.65199035.24630030.41732740.38446900.46666760.66810412.42230770.4132336
2017-03-03 20:30:56 2 min 29.101 sec89.00.38588120.51808270.65244975.24630030.41664130.38441080.46655190.66837432.41441440.3938346
" ], "text/plain": [ " timestamp duration number_of_trees training_rmse training_logloss training_auc training_lift training_classification_error validation_rmse validation_logloss validation_auc validation_lift validation_classification_error\n", "--- ------------------- ---------------- ----------------- ------------------- ------------------ ------------------ ------------------ ------------------------------- ------------------- -------------------- ------------------ ------------------ ---------------------------------\n", " 2017-03-03 20:28:27 0.019 sec 0.0 nan nan nan nan nan nan nan nan nan nan\n", " 2017-03-03 20:28:28 0.830 sec 1.0 0.5376840181329527 9.870628568282719 0.5350764697272609 3.7246827434119916 0.811889825931619 0.5382118509510364 9.874183456530169 0.5325893753572517 1.2833839927247106 0.8059701492537313\n", " 2017-03-03 20:28:28 1.424 sec 2.0 0.5213498768165943 8.750612080140185 0.5397090965106268 5.001272062684804 0.8122780314561137 0.4686260915778026 5.123392446635246 0.552804809820509 1.5258930258930257 0.8059701492537313\n", " 2017-03-03 20:28:29 1.836 sec 3.0 0.5075517889234461 7.759933787251515 0.5428676681936424 5.216215644962783 0.8117776779515662 0.4415144850084029 3.4290299833305387 0.5681898249865011 1.8955085183273102 0.4428402944406035\n", " 2017-03-03 20:28:29 2.173 sec 4.0 0.49480745193810466 6.91564719786333 0.5463456708287637 5.23979325684953 0.8101394353683523 0.4270036835814249 2.6534139731243718 0.5804040489900137 1.7463445645263826 0.4851762983447883\n", "--- --- --- --- --- --- --- --- --- --- --- --- --- ---\n", " 2017-03-03 20:30:43 2 min 15.662 sec 85.0 0.38618158370648786 0.5237025107968913 0.6513079066705201 5.246300295976322 0.405205537936082 0.38450640178575696 0.46683631530828623 0.667914896761536 2.417853751187084 0.40034161616983205\n", " 2017-03-03 20:30:46 2 min 18.822 sec 86.0 0.3861129299364367 0.5220731153590608 0.6515431872848021 5.246300295976322 0.417662844596243 0.38447890958695924 0.46678400914446494 0.6681149460932887 2.430268918073796 0.37148725039651875\n", " 2017-03-03 20:30:49 2 min 22.102 sec 87.0 0.38606950365114184 0.5195897990397972 0.6516769791171072 5.246300295976322 0.41664125396438156 0.38448305849514947 0.46670764628596073 0.6680309378010192 2.4408014571948997 0.38608727479767374\n", " 2017-03-03 20:30:52 2 min 25.561 sec 88.0 0.3859758757959651 0.5192995270043926 0.6519902754557324 5.246300295976322 0.4173273969260795 0.38446902255769644 0.4666676465634767 0.668104110748833 2.422307692307692 0.41323355972182685\n", " 2017-03-03 20:30:56 2 min 29.101 sec 89.0 0.3858811816552148 0.5180827157657203 0.6524497477686478 5.246300295976322 0.41664125396438156 0.38441080107610454 0.4665519053428598 0.6683742817869399 2.414414414414414 0.39383464150636466" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "Variable Importances: \n" ] }, { "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", "
variablerelative_importancescaled_importancepercentage
addr_state98091.98437501.00.1760907
int_rate63342.51562500.64574610.1137099
dti53355.01562500.54392840.0957807
revol_util51702.15625000.52707830.0928136
loan_amnt47027.67187500.47942420.0844221
total_acc45383.22656250.46265990.0814701
longest_credit_length43434.35937500.44279210.0779716
annual_inc41564.21093750.42372690.0746144
emp_length35672.10156250.36365970.0640371
purpose32235.98046880.32863010.0578687
home_ownership14451.38085940.14732480.0259425
delinq_2yrs12333.50976560.12573410.0221406
term_length9890.61230470.10083000.0177552
verification_status8568.99609380.08735670.0153827
" ], "text/plain": [ "variable relative_importance scaled_importance percentage\n", "--------------------- --------------------- ------------------- ------------\n", "addr_state 98092 1 0.176091\n", "int_rate 63342.5 0.645746 0.11371\n", "dti 53355 0.543928 0.0957807\n", "revol_util 51702.2 0.527078 0.0928136\n", "loan_amnt 47027.7 0.479424 0.0844221\n", "total_acc 45383.2 0.46266 0.0814701\n", "longest_credit_length 43434.4 0.442792 0.0779716\n", "annual_inc 41564.2 0.423727 0.0746144\n", "emp_length 35672.1 0.36366 0.0640371\n", "purpose 32236 0.32863 0.0578687\n", "home_ownership 14451.4 0.147325 0.0259425\n", "delinq_2yrs 12333.5 0.125734 0.0221406\n", "term_length 9890.61 0.10083 0.0177552\n", "verification_status 8569 0.0873567 0.0153827" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# random forest\n", "\n", "# initialize rf model\n", "rf_model = H2ORandomForestEstimator(\n", " ntrees=500, # Up to 500 decision trees in the forest \n", " max_depth=30, # trees can grow to depth of 30\n", " stopping_rounds=5, # stop after validation error does not decrease for 5 iterations/new trees\n", " score_each_iteration=True, # score validation error on every iteration/new tree\n", " model_id='rf_model') # for easy lookup in flow\n", "\n", "# train rf model\n", "rf_model.train(\n", " x=X,\n", " y=y,\n", " training_frame=train,\n", " validation_frame=valid)\n", "\n", "# print model information\n", "rf_model\n", "\n", "# view detailed results at http://localhost:54321/flow/index.html" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.6524497477686478\n", "0.6683742817869399\n", "0.668192405655755\n" ] } ], "source": [ "# measure rf AUC\n", "print(rf_model.auc(train=True))\n", "print(rf_model.auc(valid=True))\n", "print(rf_model.model_performance(test_data=test).auc())" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm Grid Build progress: |████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "# GBM with random hyperparameter search\n", "# train many different GBM models with random hyperparameters\n", "# and select best model based on validation error\n", "\n", "# define random grid search parameters\n", "hyper_parameters = {'ntrees':list(range(0, 500, 50)),\n", " 'max_depth':list(range(0, 20, 2)),\n", " 'sample_rate':[s/float(10) for s in range(1, 11)],\n", " 'col_sample_rate':[s/float(10) for s in range(1, 11)]}\n", "\n", "# define search strategy\n", "search_criteria = {'strategy':'RandomDiscrete',\n", " 'max_models':20,\n", " 'max_runtime_secs':600}\n", "\n", "# initialize grid search\n", "gsearch = H2OGridSearch(H2OGradientBoostingEstimator,\n", " hyper_params=hyper_parameters,\n", " search_criteria=search_criteria)\n", "\n", "# execute training w/ grid search\n", "gsearch.train(x=X,\n", " y=y,\n", " training_frame=train,\n", " validation_frame=valid)\n", "\n", "# view detailed results at http://localhost:54321/flow/index.html" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " col_sample_rate max_depth ntrees sample_rate \\\n", "0 0.7 2 450 0.5 \n", "1 0.3 4 450 1.0 \n", "2 0.2 8 300 0.9 \n", "3 0.7 4 400 0.3 \n", "4 0.2 8 450 0.6 \n", "5 0.4 10 100 0.9 \n", "6 0.8 6 400 0.6 \n", "7 0.4 10 450 0.9 \n", "8 0.2 10 0 0.7 \n", "9 0.9 12 100 0.7 \n", "10 0.2 14 200 0.8 \n", "11 0.2 12 350 0.6 \n", "12 0.5 18 50 0.1 \n", "13 0.9 14 100 1.0 \n", "14 0.2 12 400 0.3 \n", "15 0.2 14 300 0.2 \n", "16 0.7 12 350 0.5 \n", "17 0.9 14 300 1.0 \n", "18 0.9 18 450 0.1 \n", "\n", " model_ids \\\n", "0 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_9 \n", "1 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_13 \n", "2 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_16 \n", "3 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_2 \n", "4 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_10 \n", "5 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_11 \n", "6 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_0 \n", "7 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_4 \n", "8 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_8 \n", "9 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_17 \n", "10 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_7 \n", "11 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_3 \n", "12 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_19 \n", "13 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_15 \n", "14 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_5 \n", "15 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_1 \n", "16 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_18 \n", "17 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_14 \n", "18 Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_12 \n", "\n", " logloss \n", "0 0.4559512893895453 \n", "1 0.4562727884725051 \n", "2 0.4614463446372809 \n", "3 0.46462647035317917 \n", "4 0.47144556802198706 \n", "5 0.47211417794373167 \n", "6 0.4740696699423142 \n", "7 0.4794322361742395 \n", "8 0.4913730519047276 \n", "9 0.4987913315785933 \n", "10 0.5044728833438659 \n", "11 0.505131725225945 \n", "12 0.5098834443023351 \n", "13 0.5319261396763075 \n", "14 0.5490384012904712 \n", "15 0.5534834522702895 \n", "16 0.6470349677925481 \n", "17 0.8179871783126142 \n", "18 0.8379398656052428 \n", "Model Details\n", "=============\n", "H2OGradientBoostingEstimator : Gradient Boosting Machine\n", "Model Key: Grid_GBM_py_11_sid_a8d9_model_python_1488219708058_445_model_9\n", "\n", "\n", "ModelMetricsBinomial: gbm\n", "** Reported on train data. **\n", "\n", "MSE: 0.14070909049434702\n", "RMSE: 0.37511210390274935\n", "LogLoss: 0.4440167753159748\n", "Mean Per-Class Error: 0.3439550239972745\n", "AUC: 0.7130151031503764\n", "Gini: 0.42603020630075283\n", "Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.2264380977076581: \n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
01ErrorRate
039108.013824.00.2612 (13824.0/52932.0)
15478.07171.00.4331 (5478.0/12649.0)
Total44586.020995.00.2943 (19302.0/65581.0)
" ], "text/plain": [ " 0 1 Error Rate\n", "----- ----- ----- ------- -----------------\n", "0 39108 13824 0.2612 (13824.0/52932.0)\n", "1 5478 7171 0.4331 (5478.0/12649.0)\n", "Total 44586 20995 0.2943 (19302.0/65581.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Maximum Metrics: Maximum metrics at their respective thresholds\n", "\n" ] }, { "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", "
metricthresholdvalueidx
max f10.22643810.4262870214.0
max f20.12299900.5796178310.0
max f0point50.30622140.3986584150.0
max accuracy0.45052090.810554968.0
max precision0.89057001.00.0
max recall0.02128081.0397.0
max specificity0.89057001.00.0
max absolute_mcc0.23940330.2600720203.0
max min_per_class_accuracy0.19680220.6549913240.0
max mean_per_class_accuracy0.20069100.6560450236.0
" ], "text/plain": [ "metric threshold value idx\n", "--------------------------- ----------- -------- -----\n", "max f1 0.226438 0.426287 214\n", "max f2 0.122999 0.579618 310\n", "max f0point5 0.306221 0.398658 150\n", "max accuracy 0.450521 0.810555 68\n", "max precision 0.89057 1 0\n", "max recall 0.0212808 1 397\n", "max specificity 0.89057 1 0\n", "max absolute_mcc 0.239403 0.260072 203\n", "max min_per_class_accuracy 0.196802 0.654991 240\n", "max mean_per_class_accuracy 0.200691 0.656045 236" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Gains/Lift Table: Avg response rate: 19.29 %\n", "\n" ] }, { "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", "
groupcumulative_data_fractionlower_thresholdliftcumulative_liftresponse_ratecumulative_response_ratecapture_ratecumulative_capture_rategaincumulative_gain
10.01000290.52166923.28784503.28784500.63414630.63414630.03288800.0328880228.7844985228.7844985
20.02000580.47850632.74250533.01517510.52896340.58155490.02743300.0603210174.2505312201.5175149
30.03000870.45067962.61604972.88213330.50457320.55589430.02616810.0864891161.6049736188.2133345
40.04001160.42643942.53701502.79585380.48932930.53925300.02537750.1118666153.7015001179.5853759
50.05001450.40882662.17345522.67137410.41920730.51524390.02174080.1336074117.3455219167.1374051
60.10001370.34928012.11087102.39116520.40713630.46119840.10554190.2391493111.0870989139.1165247
70.15001300.30966531.75194392.17811310.33790790.42010570.08759590.326745275.1943862117.8113110
80.20001220.27982181.57959562.02849510.30466610.39124800.07897860.405723857.9595594102.8495139
90.30001070.23382981.37404261.81035540.26501980.34917410.13740220.543125937.404261481.0355385
100.40000910.19780201.08626841.62934050.20951510.31426070.10862520.65175118.626844162.9340549
110.50000760.16830970.85620721.47471860.16514180.28443780.08561940.7373705-14.379277947.4718599
120.60000610.14328280.80640021.36333500.15553520.26295460.08063880.8180093-19.359984736.3335022
130.70000460.12003250.65223541.26175160.12580050.24336160.06522250.8832319-34.776458226.1751577
140.80000300.09702590.53760011.17123440.10369010.22590300.05375920.9369911-46.239989817.1234368
150.90000150.07161120.41584951.08730410.08020740.20971490.04158430.9785754-58.41505098.7304137
161.00.00759800.21424951.00.04132360.19287600.02142461.0-78.57505480.0
" ], "text/plain": [ " group cumulative_data_fraction lower_threshold lift cumulative_lift response_rate cumulative_response_rate capture_rate cumulative_capture_rate gain cumulative_gain\n", "-- ------- -------------------------- ----------------- -------- ----------------- --------------- -------------------------- -------------- ------------------------- -------- -----------------\n", " 1 0.0100029 0.521669 3.28784 3.28784 0.634146 0.634146 0.032888 0.032888 228.784 228.784\n", " 2 0.0200058 0.478506 2.74251 3.01518 0.528963 0.581555 0.027433 0.060321 174.251 201.518\n", " 3 0.0300087 0.45068 2.61605 2.88213 0.504573 0.555894 0.0261681 0.0864891 161.605 188.213\n", " 4 0.0400116 0.426439 2.53702 2.79585 0.489329 0.539253 0.0253775 0.111867 153.702 179.585\n", " 5 0.0500145 0.408827 2.17346 2.67137 0.419207 0.515244 0.0217408 0.133607 117.346 167.137\n", " 6 0.100014 0.34928 2.11087 2.39117 0.407136 0.461198 0.105542 0.239149 111.087 139.117\n", " 7 0.150013 0.309665 1.75194 2.17811 0.337908 0.420106 0.0875959 0.326745 75.1944 117.811\n", " 8 0.200012 0.279822 1.5796 2.0285 0.304666 0.391248 0.0789786 0.405724 57.9596 102.85\n", " 9 0.300011 0.23383 1.37404 1.81036 0.26502 0.349174 0.137402 0.543126 37.4043 81.0355\n", " 10 0.400009 0.197802 1.08627 1.62934 0.209515 0.314261 0.108625 0.651751 8.62684 62.9341\n", " 11 0.500008 0.16831 0.856207 1.47472 0.165142 0.284438 0.0856194 0.737371 -14.3793 47.4719\n", " 12 0.600006 0.143283 0.8064 1.36334 0.155535 0.262955 0.0806388 0.818009 -19.36 36.3335\n", " 13 0.700005 0.120032 0.652235 1.26175 0.125801 0.243362 0.0652225 0.883232 -34.7765 26.1752\n", " 14 0.800003 0.0970259 0.5376 1.17123 0.10369 0.225903 0.0537592 0.936991 -46.24 17.1234\n", " 15 0.900002 0.0716112 0.415849 1.0873 0.0802074 0.209715 0.0415843 0.978575 -58.4151 8.73041\n", " 16 1 0.00759805 0.214249 1 0.0413236 0.192876 0.0214246 1 -78.5751 0" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "ModelMetricsBinomial: gbm\n", "** Reported on validation data. **\n", "\n", "MSE: 0.14468902453070914\n", "RMSE: 0.3803801053297992\n", "LogLoss: 0.4559512893895453\n", "Mean Per-Class Error: 0.3659766565292937\n", "AUC: 0.687276546121273\n", "Gini: 0.37455309224254596\n", "Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.20744746822045296: \n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
01ErrorRate
026838.012800.00.3229 (12800.0/39638.0)
13892.05623.00.409 (3892.0/9515.0)
Total30730.018423.00.3396 (16692.0/49153.0)
" ], "text/plain": [ " 0 1 Error Rate\n", "----- ----- ----- ------- -----------------\n", "0 26838 12800 0.3229 (12800.0/39638.0)\n", "1 3892 5623 0.409 (3892.0/9515.0)\n", "Total 30730 18423 0.3396 (16692.0/49153.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Maximum Metrics: Maximum metrics at their respective thresholds\n", "\n" ] }, { "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", "
metricthresholdvalueidx
max f10.20744750.4025342226.0
max f20.11185290.5701701320.0
max f0point50.28800760.3725038161.0
max accuracy0.50844370.807824545.0
max precision0.89063331.00.0
max recall0.01981761.0397.0
max specificity0.89063331.00.0
max absolute_mcc0.24671050.2252884193.0
max min_per_class_accuracy0.19318990.6323730238.0
max mean_per_class_accuracy0.20600350.6340233227.0
" ], "text/plain": [ "metric threshold value idx\n", "--------------------------- ----------- -------- -----\n", "max f1 0.207447 0.402534 226\n", "max f2 0.111853 0.57017 320\n", "max f0point5 0.288008 0.372504 161\n", "max accuracy 0.508444 0.807825 45\n", "max precision 0.890633 1 0\n", "max recall 0.0198176 1 397\n", "max specificity 0.890633 1 0\n", "max absolute_mcc 0.246711 0.225288 193\n", "max min_per_class_accuracy 0.19319 0.632373 238\n", "max mean_per_class_accuracy 0.206004 0.634023 227" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Gains/Lift Table: Avg response rate: 19.36 %\n", "\n" ] }, { "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", "
groupcumulative_data_fractionlower_thresholdliftcumulative_liftresponse_ratecumulative_response_ratecapture_ratecumulative_capture_rategaincumulative_gain
10.01000960.51765752.82441442.82441440.54674800.54674800.02827120.0282712182.4414382182.4414382
20.02001910.47530132.42542652.62492040.46951220.50813010.02427750.0525486142.5426477162.4920429
30.03000830.44581252.34619772.53213880.45417520.49016950.02343670.0759853134.6197718153.2138835
40.04001790.42434432.27843092.46867960.44105690.47788510.02280610.0987914127.8430933146.8679614
50.05000710.40711852.25150812.42529830.43584520.46948740.02249080.1212822125.1508124142.5298328
60.10001420.34877281.95032662.18781240.37754270.42351510.09753020.218812495.0326558118.7812443
70.15000100.30980271.67148782.01575090.32356530.39020750.08355230.302364767.1487793101.5750912
80.20000810.27911771.56152221.90218220.30227830.36822300.07808720.380451956.152223490.2182192
90.30000200.23345811.26544771.68995180.24496440.32713960.12653700.506989026.544770368.9951755
100.39999590.19854711.07310811.53574870.20773140.29728900.10730430.61429327.310806053.5748675
110.50001020.16949270.96255341.42109560.18633030.27509460.09626900.7105623-3.744659142.1095629
120.60000410.14439190.83977801.32421590.16256360.25634070.08397270.7945349-16.022199832.4215928
130.69999800.12070580.70419431.23564660.13631740.23919550.07041510.8649501-29.580568023.5646561
140.79999190.09733410.59488651.15555560.11515770.22369160.05948500.9244351-40.511345515.5555633
150.89998580.07147340.47086431.07948230.09114950.20896530.04708360.9715187-52.91357387.9482253
161.00.00891310.28477291.00.05512610.19357920.02848131.0-71.52271030.0
" ], "text/plain": [ " group cumulative_data_fraction lower_threshold lift cumulative_lift response_rate cumulative_response_rate capture_rate cumulative_capture_rate gain cumulative_gain\n", "-- ------- -------------------------- ----------------- -------- ----------------- --------------- -------------------------- -------------- ------------------------- -------- -----------------\n", " 1 0.0100096 0.517658 2.82441 2.82441 0.546748 0.546748 0.0282712 0.0282712 182.441 182.441\n", " 2 0.0200191 0.475301 2.42543 2.62492 0.469512 0.50813 0.0242775 0.0525486 142.543 162.492\n", " 3 0.0300083 0.445813 2.3462 2.53214 0.454175 0.490169 0.0234367 0.0759853 134.62 153.214\n", " 4 0.0400179 0.424344 2.27843 2.46868 0.441057 0.477885 0.0228061 0.0987914 127.843 146.868\n", " 5 0.0500071 0.407119 2.25151 2.4253 0.435845 0.469487 0.0224908 0.121282 125.151 142.53\n", " 6 0.100014 0.348773 1.95033 2.18781 0.377543 0.423515 0.0975302 0.218812 95.0327 118.781\n", " 7 0.150001 0.309803 1.67149 2.01575 0.323565 0.390208 0.0835523 0.302365 67.1488 101.575\n", " 8 0.200008 0.279118 1.56152 1.90218 0.302278 0.368223 0.0780872 0.380452 56.1522 90.2182\n", " 9 0.300002 0.233458 1.26545 1.68995 0.244964 0.32714 0.126537 0.506989 26.5448 68.9952\n", " 10 0.399996 0.198547 1.07311 1.53575 0.207731 0.297289 0.107304 0.614293 7.31081 53.5749\n", " 11 0.50001 0.169493 0.962553 1.4211 0.18633 0.275095 0.096269 0.710562 -3.74466 42.1096\n", " 12 0.600004 0.144392 0.839778 1.32422 0.162564 0.256341 0.0839727 0.794535 -16.0222 32.4216\n", " 13 0.699998 0.120706 0.704194 1.23565 0.136317 0.239196 0.0704151 0.86495 -29.5806 23.5647\n", " 14 0.799992 0.0973341 0.594887 1.15556 0.115158 0.223692 0.059485 0.924435 -40.5113 15.5556\n", " 15 0.899986 0.0714734 0.470864 1.07948 0.0911495 0.208965 0.0470836 0.971519 -52.9136 7.94823\n", " 16 1 0.00891312 0.284773 1 0.0551261 0.193579 0.0284813 1 -71.5227 0" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Scoring History: \n" ] }, { "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", "
timestampdurationnumber_of_treestraining_rmsetraining_loglosstraining_auctraining_lifttraining_classification_errorvalidation_rmsevalidation_loglossvalidation_aucvalidation_liftvalidation_classification_error
2017-02-27 13:27:21 2 min 7.644 sec0.00.39455650.49036640.51.00.80712400.39510350.49137310.51.00.8064208
2017-02-27 13:27:21 2 min 7.677 sec1.00.39296730.48638950.63292221.96911570.42590080.39355900.48750340.62950531.95234600.4287226
2017-02-27 13:27:21 2 min 7.713 sec2.00.39164050.48315600.64182311.96911570.42590080.39223610.48427710.63959901.95234600.3676276
2017-02-27 13:27:21 2 min 7.759 sec3.00.39053110.48046670.65216692.28992480.38425760.39114250.48162750.65079512.21562550.3819909
2017-02-27 13:27:21 2 min 7.806 sec4.00.38960000.47820760.66039722.51943890.34711270.39020490.47935610.65925322.37436280.3451264
------------------------------------------
2017-02-27 13:27:23 2 min 10.457 sec23.00.38258860.46135290.67957152.67927750.35751210.38340980.46306760.67633302.56804880.3404675
2017-02-27 13:27:24 2 min 10.754 sec24.00.38244630.46100170.68031462.65556710.38826790.38330400.46280410.67681442.60294440.3894778
2017-02-27 13:27:24 2 min 11.044 sec25.00.38233820.46068600.68069522.63103090.40752660.38320880.46252910.67709132.65021220.3907798
2017-02-27 13:27:24 2 min 11.358 sec26.00.38221910.46034090.68120022.65443130.36201030.38308310.46216090.67778762.63542010.3918581
2017-02-27 13:27:28 2 min 14.646 sec450.00.37511210.44401680.71301513.28784500.29432310.38038010.45595130.68727652.82441440.3395927
" ], "text/plain": [ " timestamp duration number_of_trees training_rmse training_logloss training_auc training_lift training_classification_error validation_rmse validation_logloss validation_auc validation_lift validation_classification_error\n", "--- ------------------- ---------------- ----------------- ------------------- ------------------- ------------------ ------------------ ------------------------------- ------------------- -------------------- ------------------ ------------------ ---------------------------------\n", " 2017-02-27 13:27:21 2 min 7.644 sec 0.0 0.3945565101095995 0.49036640344278876 0.5 1.0 0.8071240145773928 0.3951035403698693 0.4913730519047276 0.5 1.0 0.8064207678066445\n", " 2017-02-27 13:27:21 2 min 7.677 sec 1.0 0.3929673121289187 0.4863894931804433 0.6329221970491997 1.9691157442648959 0.4259007944374133 0.3935590491960919 0.4875033966905705 0.6295053470905918 1.9523459969287347 0.4287225601692674\n", " 2017-02-27 13:27:21 2 min 7.713 sec 2.0 0.39164050799029965 0.4831559892292452 0.6418231445321992 1.9691157442648959 0.4259007944374133 0.3922361098555847 0.4842771137113645 0.6395990479472436 1.9523459969287347 0.36762761174292513\n", " 2017-02-27 13:27:21 2 min 7.759 sec 3.0 0.3905311391780331 0.48046673542125584 0.6521668557316848 2.2899248043988893 0.38425763559567555 0.39114254997917675 0.4816275187223256 0.6507950777447089 2.2156254971628573 0.38199092629137593\n", " 2017-02-27 13:27:21 2 min 7.806 sec 4.0 0.3896000049299877 0.4782076150859367 0.6603971941392779 2.5194388846702087 0.34711273082142696 0.39020492704851917 0.4793560585120821 0.6592532466112061 2.374362807335916 0.3451264419262303\n", "--- --- --- --- --- --- --- --- --- --- --- --- --- ---\n", " 2017-02-27 13:27:23 2 min 10.457 sec 23.0 0.3825885866429753 0.4613528758625294 0.6795714563996199 2.679277524107757 0.35751208429270676 0.38340976408969735 0.4630675663385082 0.676332958571976 2.5680488328863507 0.3404675197851606\n", " 2017-02-27 13:27:24 2 min 10.754 sec 24.0 0.38244627387614766 0.46100171167893134 0.6803145939679606 2.6555671035404322 0.3882679434592336 0.3833040403554025 0.4628041210500136 0.6768143898816078 2.6029443514320514 0.38947775313816047\n", " 2017-02-27 13:27:24 2 min 11.044 sec 25.0 0.382338217288895 0.4606860364521401 0.6806952406689574 2.6310309469334485 0.40752657019563593 0.38320875629848006 0.46252907015888073 0.6770912544126022 2.650212247932544 0.3907798099810795\n", " 2017-02-27 13:27:24 2 min 11.358 sec 26.0 0.38221910951807725 0.460340874810014 0.6812001882172678 2.6544312750102605 0.3620103383601958 0.38308309343974134 0.46216086813400886 0.6777875851071217 2.635420111163802 0.3918580758041218\n", " 2017-02-27 13:27:28 2 min 14.646 sec 450.0 0.37511210390274935 0.4440167753159748 0.7130151031503764 3.287844985335773 0.2943230508836401 0.3803801053297992 0.4559512893895453 0.687276546121273 2.8244143820839156 0.3395927003438244" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "Variable Importances: \n" ] }, { "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", "
variablerelative_importancescaled_importancepercentage
int_rate1484.61950681.00.3178513
addr_state1155.00744630.77798210.2472827
term_length775.48291020.52234460.1660279
annual_inc357.48236080.24079060.0765356
dti239.38269040.16124180.0512509
revol_util176.20751950.11868870.0377254
purpose168.40014650.11342980.0360538
loan_amnt98.85743710.06658770.0211650
total_acc82.56105040.05561090.0176760
emp_length52.20618440.03516470.0111771
home_ownership36.80803680.02479290.0078805
longest_credit_length26.62820630.01793600.0057010
delinq_2yrs9.86029720.00664160.0021111
verification_status7.29440590.00491330.0015617
" ], "text/plain": [ "variable relative_importance scaled_importance percentage\n", "--------------------- --------------------- ------------------- ------------\n", "int_rate 1484.62 1 0.317851\n", "addr_state 1155.01 0.777982 0.247283\n", "term_length 775.483 0.522345 0.166028\n", "annual_inc 357.482 0.240791 0.0765356\n", "dti 239.383 0.161242 0.0512509\n", "revol_util 176.208 0.118689 0.0377254\n", "purpose 168.4 0.11343 0.0360538\n", "loan_amnt 98.8574 0.0665877 0.021165\n", "total_acc 82.5611 0.0556109 0.017676\n", "emp_length 52.2062 0.0351647 0.0111771\n", "home_ownership 36.808 0.0247929 0.00788046\n", "longest_credit_length 26.6282 0.017936 0.005701\n", "delinq_2yrs 9.8603 0.00664163 0.00211105\n", "verification_status 7.29441 0.00491332 0.0015617" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# show grid search results\n", "gsearch.show()\n", "\n", "# select best model\n", "gbm_model = gsearch.get_grid()[0]\n", "\n", "# print model information\n", "gbm_model" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.7130151031503764\n", "0.687276546121273\n", "0.6824627358010742\n" ] } ], "source": [ "# measure gbm AUC\n", "print(gbm_model.auc(train=True))\n", "print(gbm_model.auc(valid=True))\n", "print(gbm_model.model_performance(test_data=test).auc())" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PartialDependencePlot progress: |█████████████████████████████████████████| 100%\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsQAAAPxCAYAAAD9lbspAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xl8XFX9//H3h93KIsJXaJFWUbbKIiBgsexYS5UARalg\nFVtcacFf1dYVWhCQVDahuGFoASGKEgJUoBWsQthpBAQJsrciYAMKSLr3/P44M3YyzTI5c++cuTOv\n5+ORR+3k5s7nvnMjn56ce4455wQAAADUq/ViFwAAAADEREMMAACAukZDDAAAgLpGQwwAAIC6RkMM\nAACAukZDDAAAgLpGQwwAAIC6RkMMAACAukZDDAAAgLpGQwwgKjP7k5ktCPzaNWZ2RtI1ZZ2ZPW9m\nV8Suo1Jy99AfY9cRi5nNMbPnSjx2hpmtSbsmIGtoiIE6ZWYn5RrK/MdSM3vSzC41s3cl/F67mtl0\nMxvaw6edpNT+A21mw4quc4WZLTGzu83sHDPbPq33jsjFLiAJuca+8Hv3ipndaWbHFB0adL1m9rbc\nfXlQiccfXFRP4ce1ITUkxKkgg36uK9WfNyCrNohdAIConKTTJT0vaRNJIyV9VdKRZrabc25ZQu8z\nXNJ0SQskLSr63EcTeo/+XCvpFvmBgC0l7Svpa5K+ZmYnO+d+U6E6UDon6S+SzpdkkoZI+rKkFjP7\ninPuF2Wef5D8fekk3TmAr7tY0kNFrz1fZi1J6uu6fiDphxWvCKhyNMQAbnPOtef+9xVm9pqkKZKO\nllRWk2hmG0taId/M9DiK55xbVc57DEC7c67bKJ6ZfU/SHyTNMbO/Oef+WqFaULoXnXPN+b+Y2dWS\nnpa/R8ttiC3w69qccy1lvnePzOxtzrml5Z6mt08459bI/0wCKMCUCQDF/ij/H9T3SpKZbWlm55vZ\no2b2ppm9bma3mNkehV9U8OvkcWZ2tpn9Q9Jbkk6TdF3usD/ljlmd/3Vu8fxPM9vQzM4ys4fM7D9m\n9t/cr8kPSfpCnXOLJX1e0saSphVdzxZmdrGZLTKzZWb2lJlNMzMrOCY/HePrZvb/cr/i78pd0weK\n38/Mdjaz35nZq7kpKg+a2VFFx+SnshxgZhea2b9yGbSY2VY9nPP7ZrbYzN4yszvMbHhP1xpwPV80\ns6dzxz5gZh/q5Xquy9XYZWYdZnZ20TFDzOwKM3s5d67HzGxCb9+T/jjnXpH0hHL3Z2/M7P/MrCn3\nvkvN7GEz+1zhtUr6l/w/1GYUTH1IZE66mZ2Su9ZlZvaimc0ysy2KjvlT7udq79w9/pakc/o57zG5\n8y7Nfe0xRZ/v87qMOcRAjxghBlDs/bk/X839uYOkBkm/lfScpG3kf239JzMb7px7uejrT5e0XNKP\n5BvNeZIukXSqpLMldeSOeyL3Z/HI8eaSJkpqlh8B3EzSyZJuM7P9nHOPlnuBhZxz95nZMyqYumFm\nb5P/VfNgST+TtFjSAfK/at5W0teLTnOSpE0lzZKfevI1SXeY2e7OuSW5c35AUpukf+TO85ak4yW1\nmtlY59yNRee8VNJrkmZIeo/8iOgsSScU1PkDSd+TNFfSrZL2ljRf0oaFJwq4ns/krudn8t+fb0m6\n3sx2cM6tzp1zD0l3yX+vfy7pBUnvk/QJSd/PHfMuSfdLWi1/D3RKOlJSk5lt5py7RANkZhtI2l5r\n78+ejtlE0p/l791L5aczfEr+NwFbOOculbRE0ldy19iS+5CkUu6vzXr4x8lrzjmXe/8Zks6Q/178\nRNLOkk6R9CEz+0g+Q/lst5afyvNrSVdJeqWP6xol6XeSHpP0bUlbSZotf0/l9Xdd3eYbA8hxzvHB\nBx91+CHfxK2WdKj8f1i3kzRO/j+o/5U0OHfchj187VBJSyV9r+C1g+Uf1nlK0kZFxx+Xe6+DejjX\nAkl/LPi7Sdqg6JjNJb0k6fKi19dIOqOf6xyWO+7rfRxzQ66+TXN//76kNyTtUHTcufK/bt6u6Nz/\nlbRtwXH75l4/v+C12+XnwxZfW5ukjqLvyxr5qSyFx12Qe+/Ncn/fWtIySTcWHXd27uuvKHhtoNfz\nL0mbFxx3VC6fMQWv/VnSf/Jf20uuv5Rv1t5R9Pq18s3+xv18756Tb/S3yn3sIf8PpdWSLurjHvpa\n7phPF7y2vqS7Jb0u6e2517Yq5R7q4R5fnftzTcHfhxZ9X24p+tpTcsedVFT3aklfKPH9/5LLc9OC\n1w7P1fBswWu9Xpf83OLVpbwfH3zU0wdTJoD6ZpLukG+CF8s3Km9IOsY595IkOedW/u9gs/XM7J2S\nuiQ9KT8iWWyOcy54jqLzVuXez8xsS0kbyT/E1NP7JeG/uT83y/35SfnRz9fNbKv8h3xWG0gqfnr/\nBlcwUu6ce1B+ZHRM7jq2lP+Hx28lbVF0zvmSdjSzwQXnc1p3fuxd8k3dsNzfj5AfCb606LiLe7i+\ngV7Pr51zbxS9t8mPuMrMtpZ0oKQm59yLPbxf3lhJN0tav4dr3kKlfT8/Jn9/LpH0sPw/rq6SHyHt\nzZGSXnbO/Tr/gvOjspfIj3wfXML79uVM+fzzHx+VlP/+578vxd+HyyW9KenjRa8vlzSnvzc0s20l\n7Sn/85W/X+Wcu0PS3wZ8BQC6YcoEUN+c/MjVU5JWSXrFOfdk4QG5Oab/T371iffKN2X5r+3s4ZzP\nl1uUmZ0k/2v8XdT91//PlnvuXmya+/PN3J87Stpdvgkr5iQVL0v3dA/H/V3+1/SSn4Zi8k/4n93D\nsflzvlTw2uKiY/6d+3PL3J/5xrjbezvnOs3s3+puoNfT7b2dc//JTTXOv/cOuT8f7+F8kvwcXknv\nkPQl+Sk2pbxvT+6TnxYi+X+IPVHUrPdkmPw9XewJ+e/DsB4+NxCPOed6W/c4f+6/F77onFtpZs/2\n8N4vutIeLO3x+53zpKS9SjgHgF7QEAN40K1dZaIn35N0lvyvv78v/6vuNZJ+rJ4fzC3rCXkzGy8/\nL7JF0kz5X9+vlvRdrW3EkrabpH8VjLytJ7/6RKN6fmL/7z281pd8TufLz6nuSXGjs7qHY6yXekp5\n/4FcT0/vnX//gbynJP1K0pW9HFPKfN1O51zQxi0ZUe6KEgASQEMMoD/Hyc/P/FLhi2b2DvU84tiT\ngTzEc5ykZ5xznyx6v7MGcI6SmdkI+YfBrip4+Rn5eZqlNmI79vDaTlo7Wp4f2V7Zx8hiKQpzfKHg\nvfPvk5/OsKW6G+j19Cd/Pbv1ccwS+RH39cu85hAvyI+IF9u14PNSOg+X5c+9s7p/XzaU/w3LH8o8\nb0/32s5Ff+ehOWCAmEMMoD+rVTQyaGafkn8Ir1Rv5c7xjhLfrxsz21/SiAG8X0lyS1TNkZ/HeX7B\np66TNCL3VH/x12xhZusXvXyMmQ0pOGY/SfvLrx4g51ea+JOkL+fmghafc+uA8m+Xn+ZyatHrU3o4\ndqDX0yfnXKf8qhUTrZed/pxf7/Z6ScdZz0vQhVxzqW6RtK2ZjSt4v/Xls3pT/oFAyU/BkEq7L0t1\nu6SV8ssNFvqC/MOhc0NOmpuj/rCkk8wsP9ddZvZR+Y1vCqVxXUBNY4QYqG+l/Ap8rqTTzewKSffI\nj7x9Rn7UsVQPyze638qNLC+XdEeuserp/caaWauk38tPk/iy/HzVTXs4vlT7mNln5AcC3iG/EsRx\n8tM/xjvnHis49kfyS83NNbM5khZKerv8Kgdj5ZdBe63g+KcltZnZT7V22bUlufPkTZJ/OO2vZna5\n/CjrNvKN/nbqPge0t+/L/17PzRU+X9K3zWyufBO4l6TRWnfkfqDXU4rTctfTbma/kF8R4r3yK1Hk\nr+Xbkg6RdH/umv8m6Z2S9pF0mPyKDGn4hfw9M8f8+snPy8/nHiHpa865tyTJObfMzP4maZyZPSWf\nwWPOuV7nRvcn9335oaQzzOw2STfJz4X/qqQHJF0Tfln6jvzPx925n8etJE2WX4btfz8baVwXUOto\niIH6VsqvVs+V3wr2RPl1cxfKr55wXg9f39tudK+Y2Zfl/4P+S/kH8w7V2m1lXcGxc8wsv9bxKPkm\n6jO59y5eDaHUNVWdpE/nPlbJr6TxlKQLJf3cOfePbgc7t9T8xiHflW+kPpv7mr/Lry/7etH5r5Jv\nrP+f/INi90s61flNJPLnfCLXnE2XX1ptK/n50X+Rn6NdXG9v11FY5/fMbKn8urOHyD+ANkr+HxKF\nmQ7kenrLtNvrzrlHzezD8g8KfkX+HwIvqGB3Q+fcv3Kj5WdIOla+KXxV/h833TZC6eN6S/31f2Ft\ny8zsYPl79HPyI7NPSvq8c+7qoq87WX6ljgvlVzM5U308LFhKPc65M83sX/LN6oXyDenP5JcpLP4N\nSMnTG5xz83K/nTlb/ufyGfmNZY7Ruj8bfV0XUyqAIuYcPxcAECI35eI5Sd90zl0Yux4AQJiqmUNs\nZpPM7LncdpT3mdm+fRx7rJnNN79d6Otmdk8fc+MuM7N/mt8+s8PMRqd7JQAAAMiSqmiIcw8+XCD/\nq8S9JD0iaV4fD10cJL+w+5HyC7svkHSzme1ZcM4N5R9uGCo/R24nSV+U1Nci8gAAAKgzVTFlwszu\nk3S/c+5rub+b/MLwlzjnZpZ4jsfkd1c6O/f3r0j6hqRdepizBQBly02ZeFZ+ysRFsesBAISJPkKc\nG8ndR34LUUl+61b50d2SllnKNdCbqftT0kdJulfST8zsZTP7q5l9x8yiXzOA2uCce8E5tz7NMABk\nWzWsMrG1/BPnrxS9/orWXWy8N1PllxC6ruC1HeSX9fmV/NSK90v6qfw1/6CMegEAAFBDqqEhLouZ\nnSjpdEkNRWuariffVH8pN+L8FzN7t6RvqpeG2My2kvQx+TUrl6VZNwAAAFK3ifxa6/Occ6/2dlA1\nNMSd8gv2b1P0+jaSXu7rC83s0/ILsH+yhy1JX5K0wnWfJP2E/O5FGzjnVvVwyo+pvEXTAQAAUH0+\nI+na3j4ZvSF2zq00s4WSDpff0Sc/J/hwSZf09nVmdoL8Av/jnHO39XDI3ZJOKHptZ0kv9dIMS7l9\n53/1q19p11137eUQ9GbKlCm66CKmUoYgu3BkF47swpFdOLIrD/kNzBNPPKHx48dLuR6vN9Eb4pwL\n5bfYXCi/teUU+Z2x5khSbhvMIc65k3J/PzH3udMkPZjb1UqSljrn3sj9759KmmRml8jv1rOT/C5Z\nF/dRxzJJ2nXXXbX33nsndnH1YosttiC3QGQXjuzCkV04sgtHduUhv2B9ToWtiobYOXddbs3hs+Sn\nSjws6WPOuSW5Q7aVtH3Bl3xR/kG8y3IfeVdKmpg75z/M7GOSLpJf1/jF3P8uaRk3AAAA1IeqaIgl\nyTn3E0k/6eVzE4r+fmiJ57xf0gHlV4dSrFixInYJmUV24cguHNmFI7twZFce8ksHa/IiMQ8//HDs\nEjKL7MKRXTiyC0d24ciuPOSXDhpiJOa0006LXUJmkV04sgtHduHILhzZlYf80lEVWzdXCzPbW9LC\nhQsXMmEdAAAg49rb27XPPvtI0j7OufbejmOEGAAAAHWNhhgAAAB1jYYYiWlqaopdQmaRXTiyC0d2\n4cguHNmVh/zSQUOMxLS39zo1B/0gu3BkF47swpFdOLIrD/mlg4fqCvBQHQAAQO3goToAAACgBDTE\nAAAAqGs0xAAAAKhrNMRITENDQ+wSMovswpFdOLILR3bhyK485JcOGmIkZvLkybFLyCyyC0d24cgu\nHNmFI7vykF86WGWiAKtMAAAA1A5WmQAAAABKQEMMAACAukZDjMS0trbGLiGzyC4c2YUju3BkF47s\nykN+6aAhRmKam5tjl5BZZBeO7MKRXTiyC0d25SG/dPBQXQEeqgMAAKgdPFQHAAAAlICGGAAAAHWN\nhhgAAAB1jYYYiZkwYULsEjKL7MKRXTiyC0d24ciuPOSXDhpiJGbUqFGxS8gssgtHduHILhzZhSO7\n8pBfOlhlogCrTAAAANQOVpkAAAAASkBDDAAAgLpGQ4zEtLW1xS4hs8guHNmFI7twZBeO7MpDfumg\nIUZiZs6cGbuEzCK7cGQXjuzCkV04sisP+aWDh+oK8FBdebq6ujRo0KDYZWQS2YUju3BkF47swpFd\nechvYHioDhXHD2g4sgtHduHILhzZhSO78pBfOmiIAQAAUNdoiAEAAFDXaIiRmKlTp8YuIbPILhzZ\nhSO7cGQXjuzKQ37poCFGYoYOHRq7hMwiu3BkF47swpFdOLIrD/mlg1UmCrDKBAAAQO1glQkAAACg\nBDTEAAAAqGs0xEhMR0dH7BIyi+zCkV04sgtHduHIrjzklw4aYiRm2rRpsUvILLILR3bhyC4c2YUj\nu/KQXzp4qK4AD9WVZ9GiRTz9GojswpFdOLILR3bhyK485DcwPFSHiuMHNBzZhSO7cGQXjuzCkV15\nyC8dNMQAAACoazTEAAAAqGs0xEhMY2Nj7BIyi+zCkV04sgtHduHIrjzklw4aYiSmq6srdgmZRXbh\nyC4c2YUju3BkVx7ySwerTBRglQkAAIDawSoTAAAAQAloiAEAAFDXaIiRmM7OztglZBbZhSO7cGQX\njuzCkV15yC8dNMRIzMSJE2OXkFlkF47swpFdOLILR3blIb900BAjMTNmzIhdQmaRXTiyC0d24cgu\nHNmVh/zSwSoTBVhlAgAAoHawygQAAABQAhpiAAAA1DUaYiSmqakpdgmZRXbhyC4c2YUju3BkVx7y\nSwcNMRLT3t7r1Bz0g+zCkV04sgtHduHIrjzklw4eqivAQ3UAAAC1g4fqAAAAgBLQEAMAAKCu0RAD\nAACgrtEQIzENDQ2xS8gssgtHduHILhzZhSO78pBfOmiIkZjJkyfHLiGzyC4c2YUju3BkF47sykN+\n6WCViQKsMgEAAFA7WGUCAAAAKAENMQAAAOoaDTES09raGruEzCK7cGQXjuzCkV04sisP+aWDhhiJ\naW5ujl1CZpFdOLILR3bhyC4c2ZWH/NLBQ3UFeKgOAACgdvBQHQAAAFACGmIAAFATVq2SVq+OXQWy\niIYYAADUhIYGaezY2FUgi2iIkZgJEybELiGzyC4c2YUju3BkFy6t7BYskG69VbrpJqmtLZW3qArc\ne+mgIUZiRo0aFbuEzCK7cGQXjuzCkV24NLJzTpo+Xdp7b2nPPf3/rlXce+lglYkCrDIBAED23HGH\ndMQR0s03SytX+mkTf/6zdNBBsStDbKWuMrFB5UoCAABIVn50eN99pY9/3L/2wQ/61xYsiFsbsoMp\nEwAAILNuv126+25pxgzJzH/MmCH96U/+AygFDTES01bLTzGkjOzCkV04sgtHduGSzC4/Orz//tKR\nR659vaHBzyeePt0fU0u499JBQ4zEzJw5M3YJmUV24cguHNmFI7twSWY3f750771rR4fz8qPEd95Z\ne9MmuPfSwUN1BXiorjxdXV0aNGhQ7DIyiezCkV04sgtHduGSys45acQI3/zec0/3hjj/+f32kzbZ\nxDfGxZ/PKu69gWHrZlQcP6DhyC4c2YUju3BkFy6p7G67Tbr/funMM3tudvOjxG1tfhWKWsG9lw4a\nYgAAkCn5ucMHHCB99KO9HzdmjB8lrsW5xEgWDTEAAMiUW26RHnyw99HhvPwo8T33SH/4Q8XKQwbR\nECMxU6dOjV1CZpFdOLILR3bhyC5cudk555vckSOlww/v//jRo/0qFLUySsy9lw4aYiRm6NChsUvI\nLLILR3bhyC4c2YUrN7u5c6WHHup/dDjPzB97333SvHllvXVV4N5LB6tMFGCVCQAAqpdz0oc+JG26\nqd90o9SVI5yTPvIRafVq3xjXyooT6B+rTAAAgJpy001Se3vpo8N5+VHiBx6Qbr01vfqQXTTEAACg\n6uXnDh9yiP8YqCOO8KPEtTKXGMmiIUZiOjo6YpeQWWQXjuzCkV04sgsXml1rq/Tww36kN0R+lPih\nh6Tf/z7sHNWAey8dNMRIzLRp02KXkFlkF47swpFdOLILF5LdmjV+dPiww6SDDgp/78MOkw480J8r\nq6PE3Hvp4KG6AjxUV55Fixbx9GsgsgtHduHILhzZhQvJ7vrrpU9+UrrrLr/cWjkWLPCN8Y03Sg0N\n5Z0rBu69gSn1oToa4gI0xAAAVJc1a6Q995S23Ta5zTUOOUR64w1p4UJWnKh1rDIBAAAy7/rrpcce\nC5873JMzz5T+8hc/SgxINMQAAKBKrVnjm9dRo6QDDkjuvAcfLB16qJ9LvGZNcudFdtEQIzGNjY2x\nS8gssgtHduHILhzZhRtIdr/9rfT448mODuedeab0yCN+9Yos4d5LBw0xEtPV1RW7hMwiu3BkF47s\nwpFduFKzW73aN62jR0sf/nDydRx4oHT44dkbJebeSwcP1RXgoToAAKpDc7N04onS/fdL++2Xznvc\nfbdfteK3v/WrWKD28FAdAADIpNWrpbPOksaMSa8ZlvzOdR/9qB+JztIoMZJHQwwAAKrKr38tdXT4\n6QxpO/NMv4rF736X/nuhetEQIzGdnZ2xS8gssgtHduHILhzZhesvu1Wr/OjwJz4h7btv+vWMGCF9\n7GO+MV69Ov33Kxf3XjpoiJGYiRMnxi4hs8guHNmFI7twZBeuv+yam6W//70yo8N5Z54p/e1vfi5x\ntePeSwcP1RXgobrytLe3k1sgsgtHduHILhzZhesru1WrpF13lYYPr/ymGWPGSM8956dPrL9+Zd97\nILj3BoatmwPQEAMAEM+VV0qf/7zU3i7ttVdl3/uBB6T995euucavboHawCoTAAAgM1au9HOHjz22\n8s2w5Fez+PjH/fSJVasq//6Ii4YYAABEd/XV0rPPVnbucLEZM/z85ebmeDUgDhpiJKapqSl2CZlF\nduHILhzZhSO7cD1lt3KldPbZ0nHHSXvsEaGonA99SDrqKD9SXa2jxNx76aAhRmLa23udmoN+kF04\nsgtHduHILlxP2V15pX+gbfr0CAUVmTFDevppP5e4GnHvpYOH6grwUB0AAJW1YoW0005+Du9118Wu\nxjvmGL/aREeHtMEGsatBOXioDgAAVL05c6RFi6pjdDhvxgzpmWf8vGbUBxpiAAAQxYoV0jnnSMcf\nL33gA7GrWeuDH/SrXfzgB35+M2ofDTEAAIjiiiukxYulM86IXcm6Zszw85qvuip2JagEGmIkpqGh\nIXYJmUV24cguHNmFI7tw+eyWL/ejw5/+tN+ZrtrssYdf9eLss/1IdrXg3ksHDTESM3ny5NglZBbZ\nhSO7cGQXjuzC5bNrapL++c/qHB3Omz5dev55vwpGteDeSwerTBRglQkAANK3bJn0/vdLhxwi/epX\nsavp2/HHS/ffLz31lLTRRrGrwUCxygQAAKhKv/yl9NJL1T06nDd9up/nPHt27EqQJhpiAABQMcuW\nST/8ofSZz/j1h6vdBz7gR4nPOcfPe0ZtoiFGYlpbW2OXkFlkF47swpFdOLILN3lyq155RTr99NiV\nlO6MM6R//MOvihEb9146aIiRmObm5tglZBbZhSO7cGQXjuzCLF0qXXNNs8aPl3bcMXY1pRs+XDrh\nBOncc+OPEnPvpYOH6grwUB0AAOm5+GLpm9+UnnxSet/7YlczME8+6RvjSy6RJk2KXQ1KxUN1AACg\nanR1SeedJ33uc9lrhiVp552lE0/0o8TLlsWuBkmjIQYAAKn72c+kV1+Vvv/92JWEO/106eWXpcsv\nj10JklY1DbGZTTKz58xsqZndZ2b79nHssWY238z+ZWavm9k9Zjaqj+M/bWZrzKwlneoBAEBv3npL\namyUTjpJ2mGH2NWE22knafx4v0rG0qWxq0GSqqIhNrNxki6QNF3SXpIekTTPzLbu5UsOkjRf0pGS\n9pa0QNLNZrZnD+d+j6QfSboz8cLRzYQJE2KXkFlkF47swpFdOLIbmJ/+VHrtNT86nPXsTj9d+te/\npF/8Is77Zz2/alUVDbGkKZJ+7py7yjnXIekrkrokTezpYOfcFOfc+c65hc65Z5xz35P0lKSjCo8z\ns/Uk/UrSGZKeS/UKoFGjeh2kRz/ILhzZhSO7cGRXurfekmbOlCZMkN7znuxn9/73S5/9rJ8PHWOU\nOOv5Vavoq0yY2Ybyze9xzrmbCl6fI2kL59yxJZzDJD0vqdE595OC18+UtJtz7jgzm50739g+zsMq\nEwAAJGjmTD8y/NRT0rBhsatJxjPP+IfsfvQjacqU2NWgL1laZWJrSetLeqXo9VckbVviOaZKeruk\n6/IvmNlISRMkfSGBGgEAwAD997++aZw4sXaaYcmvknHSSX5edFdX7GqQhGpoiMtiZidKOl3Sp5xz\nnbnXNpV0laQvOuf+HbM+AADq1axZ0uuvS9/9buxKkvf97/tVM37609iVIAnV0BB3SlotaZui17eR\n9HJfX2hmn5b0C/lmeEHBp94naZj8g3YrzWylpM9JOtrMVpjZe/s675gxY9TQ0NDtY8SIEetslzh/\n/nw1NDSs8/WTJk1SU1NTt9fa29vV0NCgzs7Obq9Pnz5djY2N3V5btGiRGhoa1NHR0e31Sy+9VFOn\nTu32WldXlxoaGtTW1tbt9ebm5h4n3o8bNy616/jqV79aE9cR4/tReHyWr6NQpa4jX2PWryOvktfR\n1tZWE9chVf77MXLkyJq4jjS/H5dd1qQf/Uj6whekoUPXXsfcuXMzdR29fT8226xTn/+8HyV+663K\nXUf+8/V6X/V1Hc3Nzf/r23beeWcNHz5cU0qd0+Kci/4h6T5JPy74u0laLGlqH19zgqS3JH2ih89t\nJGl40ccNkv4gaVdJG/Ryzr0luYULFzoM3FFHHRW7hMwiu3BkF47swpFd/845x7mNNnJu8eLur9dS\nds8959wGGzg3c2bl3rOW8quEhQsXOklO0t6uj140+kN1kmRmx0uaI7+6xAPyq058UtIuzrklZvZD\nSUOccyfljj8xd/xp8o1u3lLn3Bu9vAcP1aWsq6tLgwYNil1GJpFdOLILR3bhyK5vb7zhV5Q48UQ/\n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\nYwIAAKDgog/Eko6VNFXS66Mef13SnBx/nn5JrygZtAEAAABJ0rTYC5gMZnaLpAAcPKoAAAjNSURB\nVCslXRBC2Nfg0BmSdPHFF2v+/Pkjnti9e7cWLlyoiy666OBjzz77rB599FHde++9I4698847deqp\np+qyyy47+NjGjRv1wAMP6LbbbtMxxxxz8PH7779fM2bM0MKFCw8+9tprr2n58uW6/vrrNW/evIOP\nP/LII9q5c6duvPHGg4/t2bNHt956q66++mqdccYZBx9/4okntGHDBvX19Y1Y2y233KJLLrmkJZ/H\nunXrNDj4wZ7XRf08Yvx6DAwMHGxX5M8jxq9HtV3RP4+qyfw8BgYGdOWVVxb+85Am/9dj7dq1Wrly\nZeE/jxi/Hhs3bhzxd0VRP49Yvx7VP/OK/nlU5fl5PPfcc1q7dq0kadu2bZo6daqOPvro6qEz1ED0\nV6pLL5kYlnRFCOGxmscflPShEMLl47z/OkkvhBC+Uuf5myXdKmlBCOGFcT7W5yX9YGKfAQAAANrc\nVSGEh+s9Gf0rxCGE/Wb2vJKb3R6TJDOz9MffzfKxzWyZpK9L6hlvGE6tlXSVpG2S9mb5uQEAABDd\nDEknKZnx6oo+EKfukfRgOhgPKNl1YqakByXJzL4l6SMhhGuq72Bmp0sySUdKmp3+eF8IYWP6/Nck\n3SHpc5KGzOy49F1/E0J4Z6xFhBB+pWSrNgAAAHSGZ8Y7IPolE1Vmdp2kZZKOU7K38F+EEP49fW6V\npBNDCJ+sOf6ApNGL3x5C+Gj6/FZJXWP8VHeEEL7Rgk8BAAAABdQ2AzEAAAAQQztsuwYAAABEw0Cc\nMrMvm9lWM9tjZhvM7OOx19TuzOx2Mzsw6u1/Yq+rXZnZeWb2mJm9krbqHeOYb5jZq2Y2bGZPmVl3\njLW2m/HamdmqMc7FH8dab7sws6+b2YCZvWVmr5vZv5jZKWMcx3k3SjPtOO/qM7MvmdmLZvZm+vaM\nmf3RqGM478YwXjvOu9ZgIJZkZp+VdLek2yWdIelFSWvN7NioCyuGXyi57ntO+nZu3OW0tVlKro+/\nTode/169EXSJpGsl/YGkd5Sch4dN5iLbVMN2qcc18lz83OQsra2dJ+nvJH1C0qeUvFrnk2Z2RPUA\nzru6xm2X4rwb2w5JX5N0ppJXo31a0g/N7DSJ824cDdulOO9yxjXEksxsg6TnQgg3pD82JSfkd0MI\ny6Muro2Z2e2SPhNCODP2WoomvSn0slF7b78q6a4Qwr3pj49S8oqN14QQHo2z0vZTp90qJfuW/0m8\nlbW/9B/5b0g6P4SwPn2M864Jddpx3k2Amf1K0s0hhFWcdxMzqh3nXQuU/ivE6QuDnCXpp9XHQvKv\nhJ9IOifWugqkkn4b+yUz+76ZnRB7QUVkZvOU/Cu/9jx8S9Jz4jxs1oXpt7Y3mdl9ZvbbsRfUho5W\n8hX23RLn3QSNaFeD824cZjbFzP5MyXaqz3DeNW90u5qnOO9y1i77EMd0rKSpSv5lWut1Sb87+csp\nlA2SFkraLGmupD5JPzOz+fX2ekZdc5T8ZTvWeThn8pdTOI9L+mdJWyWdLOlbkn5sZucEvg0m6eB3\nvv5W0voQQvVaf867JtRpJ3HeNWRm8yU9q+SFEd6WdHkIYbOZnSPOu4bqtUuf5rxrAQZiuIUQal/1\n5RdmNiBpu6QrJa2KsyqU0ahvsf63mf2XpJckXShpXZRFtZ/7JP2epD+MvZACGrMd5924Nkk6XdKH\nJP2ppIfM7Py4SyqMMduFEDZx3rVG6S+ZkLRL0vtKLk6vdZyknZO/nOIKIbwp6ZeSuFN44nYqeeVF\nzsMchBC2Kvm9zbkoycxWSLpU0oUhhNdqnuK8G0eDdofgvBsphPBeCGFLCOGFEMJfKrlh/QZx3o2r\nQbuxjuW8y0HpB+IQwn5Jz0taUH0s/fbYAjXxUn/4gJkdqeQ3ZMO/NHCo9A+0nRp5Hh6l5A53zsMJ\nMrPfkfRhcS5WB7rPSLoohDBU+xznXWON2tU5nvOusSmSDue8c5ki6fCxnuC8yweXTCTukfSgmT0v\naUDSTUouYH8w5qLanZndJelflVwmcbykOyTtl7Q65rralZnNUvIPBksf+qiZnS5pdwhhh5JrFP/K\nzP5X0jZJ35T0sqQfRlhuW2nULn27Xck1dTvT4/qVfLdi7aEfrTzM7D4l2zH1SnrHzKpfkXszhLA3\n/X/OuzGM1y49Jznv6jCzv1FyreuQpN+SdJWkCyT1pIdw3tXRqB3nXQuFEHhLrkG/Tslvyj1KLmT/\n/dhravc3JYPvy2mzIUkPS5oXe13t+qbkD7QDSi7RqX37p5pj+iS9KmlYyR9u3bHX3Q5vjdopuenk\nCSV/OeyVtEXS30uaHXvdsd/qNHtf0tWjjuO8m2A7zrtx+/1j2mRP2uhJSZ8cdQzn3QTbcd617o19\niAEAAFBqpb+GGAAAAOXGQAwAAIBSYyAGAABAqTEQAwAAoNQYiAEAAFBqDMQAAAAoNQZiAAAAlBoD\nMQAAAEqNgRgAAAClxkAMACViZuvM7J4Gz19jZrsnc00AEBsDMQCUlJltNbPrRz38iKRTYqwHAGKZ\nFnsBAID2EUJ4V9K7sdcBAJOJrxADQIcys5lm9pCZvW1mr5jZV2qeWyfpREn3mtkBM3s/fXyhmf06\n1poBIAYGYgDoXN+WdJ6kP5bUI+lCSWemz10u6WVJfy1pjqS56eMhfQOA0uCSCQDoQGY2S9JiSZ8P\nIfxb+tg1SoZghRD+L/2q8G9CCG9EWygAtAG+QgwAnelkSdMlDVQfCCH8WtLmaCsCgDbFQAwAAIBS\nYyAGgM70kqT3JH2i+oCZHaORW6rtkzR1ktcFAG2HgRgAOlAI4R1JKyXdZWYXmdl8SaskvV9z2DZJ\n55vZR8zswxGWCQBtgZvqAKBzLZU0S9Jjkt6WdLeko2qev03S/Uq+mnyY+GoxgJKyENhdBwAAAOXF\nJRMAAAAoNQZiAAAAlBoDMQAAAEqNgRgAAAClxkAMAACAUmMgBgAAQKkxEAMAAKDUGIgBAABQagzE\nAAAAKDUGYgAAAJQaAzEAAABKjYEYAAAApfb/pkDgD9Wzty0AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# partial dependence plots are a powerful machine learning interpretation tool\n", "# to calculate partial dependence across the domain a variable\n", "# hold column of interest at constant value\n", "# find the mean prediction of the model with this column constant\n", "# repeat for multiple values of the variable of interest\n", "# h2o has a built-in function for partial dependence as well\n", "par_dep_dti1 = gbm_model.partial_plot(data=train, cols=['dti'], server=True, plot=True)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "H2O session _sid_a8d9 closed.\n" ] } ], "source": [ "# shutdown h2o\n", "h2o.cluster().shutdown(prompt=False)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 04_decision_trees/src/py_part_4_kaggle_xgboost.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "***\n", "# Decision Tree Ensemble Examples Kaggle House Prices " ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Imports and inits" ] }, { "cell_type": "code", "execution_count": 182, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321. connected.\n" ] }, { "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", "
H2O cluster uptime:6 hours 32 mins
H2O cluster version:3.12.0.1
H2O cluster version age:8 days
H2O cluster name:H2O_from_python_phall_51a0jp
H2O cluster total nodes:1
H2O cluster free memory:3.032 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:locked, healthy
H2O connection url:http://localhost:54321
H2O connection proxy:None
H2O internal security:False
Python version:3.5.2 final
" ], "text/plain": [ "-------------------------- ----------------------------\n", "H2O cluster uptime: 6 hours 32 mins\n", "H2O cluster version: 3.12.0.1\n", "H2O cluster version age: 8 days\n", "H2O cluster name: H2O_from_python_phall_51a0jp\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 3.032 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: locked, healthy\n", "H2O connection url: http://localhost:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "Python version: 3.5.2 final\n", "-------------------------- ----------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import h2o\n", "from h2o.estimators.gbm import H2OGradientBoostingEstimator \n", "from h2o.estimators.random_forest import H2ORandomForestEstimator\n", "from h2o.grid.grid_search import H2OGridSearch \n", "from h2o.estimators.xgboost import H2OXGBoostEstimator\n", "from h2o.estimators.stackedensemble import H2OStackedEnsembleEstimator\n", "import xgboost as xgb\n", "h2o.init() # give h2o as much memory as possible\n", "h2o.no_progress() # turn off h2o progress bars\n", "\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Import data" ] }, { "cell_type": "code", "execution_count": 124, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1460, 81)\n", "(1459, 81)\n" ] } ], "source": [ "train = h2o.import_file('../../03_regression/data/train.csv')\n", "test = h2o.import_file('../../03_regression/data/test.csv')\n", "\n", "# bug fix - from Keston\n", "dummy_col = np.random.rand(test.shape[0])\n", "test = test.cbind(h2o.H2OFrame(dummy_col))\n", "cols = test.columns\n", "cols[-1] = 'SalePrice'\n", "test.columns = cols\n", "print(train.shape)\n", "print(test.shape)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "#### Determine data types" ] }, { "cell_type": "code", "execution_count": 125, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "def get_type_lists(frame=train, rejects=['Id', 'SalePrice']):\n", "\n", " \"\"\"Creates lists of numeric and categorical variables.\n", " \n", " :param frame: The frame from which to determine types.\n", " :param rejects: Variable names not to be included in returned lists.\n", " :return: Tuple of lists for numeric and categorical variables in the frame.\n", " \n", " \"\"\"\n", " \n", " nums, cats = [], []\n", " for key, val in frame.types.items():\n", " if key not in rejects:\n", " if val == 'enum':\n", " cats.append(key)\n", " else: \n", " nums.append(key)\n", " \n", " print('Numeric =', nums) \n", " print()\n", " print('Categorical =', cats)\n", " \n", " return nums, cats" ] }, { "cell_type": "code", "execution_count": 126, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Numeric = ['FullBath', 'TotalBsmtSF', 'KitchenAbvGr', 'BsmtFinSF2', 'TotRmsAbvGrd', 'MSSubClass', 'MasVnrArea', 'GrLivArea', 'BsmtFullBath', 'YearRemodAdd', 'BsmtFinSF1', 'Fireplaces', '2ndFlrSF', 'MoSold', 'ScreenPorch', 'PoolArea', 'OverallQual', '3SsnPorch', 'YrSold', 'LowQualFinSF', 'BsmtHalfBath', 'GarageYrBlt', 'EnclosedPorch', 'LotFrontage', 'WoodDeckSF', 'MiscVal', 'BsmtUnfSF', 'GarageArea', 'BedroomAbvGr', 'OpenPorchSF', 'LotArea', 'OverallCond', 'GarageCars', 'HalfBath', 'YearBuilt', '1stFlrSF']\n", "\n", "Categorical = ['KitchenQual', 'Electrical', 'LotShape', 'SaleType', 'LandContour', 'LandSlope', 'GarageType', 'BsmtExposure', 'MasVnrType', 'GarageCond', 'ExterQual', 'Street', 'Functional', 'Alley', 'BsmtQual', 'HeatingQC', 'BsmtFinType2', 'RoofMatl', 'GarageQual', 'CentralAir', 'GarageFinish', 'HouseStyle', 'RoofStyle', 'Utilities', 'Neighborhood', 'Condition2', 'Exterior2nd', 'BldgType', 'SaleCondition', 'BsmtCond', 'LotConfig', 'Condition1', 'Fence', 'Foundation', 'PoolQC', 'PavedDrive', 'MiscFeature', 'Exterior1st', 'MSZoning', 'FireplaceQu', 'ExterCond', 'BsmtFinType1', 'Heating']\n" ] } ], "source": [ "original_nums, cats = get_type_lists()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Split into to train and validation (before doing data prep!!!)" ] }, { "cell_type": "code", "execution_count": 127, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1001, 81)\n", "(459, 81)\n" ] } ], "source": [ "train, valid = train.split_frame([0.7], seed=12345)\n", "print(train.shape)\n", "print(valid.shape)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Impute numeric missing" ] }, { "cell_type": "code", "execution_count": 128, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "# median usually better than mean\n", "# (_ signifies temporary throw-away variable, used to suppress output)\n", "_ = train[['MasVnrArea', 'GarageYrBlt', 'LotFrontage']].impute(method='median')\n", "_ = valid[['MasVnrArea', 'GarageYrBlt', 'LotFrontage']].impute(method='median')\n", "_ = test[['BsmtHalfBath', 'BsmtFinSF1', 'BsmtFullBath', 'BsmtFinSF2', 'BsmtUnfSF', 'MasVnrArea', \n", " 'GarageYrBlt', 'LotFrontage', 'GarageCars', 'TotalBsmtSF', 'GarageArea']].impute(method='median')" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Encode categorical vars using shrunken averages\n", "http://helios.mm.di.uoa.gr/~rouvas/ssi/sigkdd/sigkdd.vol3.1/barreca.ps" ] }, { "cell_type": "code", "execution_count": 129, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "def target_encoder(training_frame, test_frame, x, y, lambda_=0.15, threshold=150, test=False):\n", "\n", " \"\"\" Applies simple target encoding to categorical variables.\n", "\n", " :param training_frame: Training frame which to create target means and to be encoded.\n", " :param test_frame: Test frame to be encoded using information from training frame.\n", " :param x: Name of input variable to be encoded.\n", " :param y: Name of target variable to use for encoding.\n", " :param lambda_: Balance between level mean and overall mean for small groups.\n", " :param threshold: Number below which a level is considered small enough to be shrunken.\n", " :param test: Whether or not to print the row_val_dict for testing purposes.\n", " :return: Tuple of encoded variable from train and test set as H2OFrames.\n", "\n", " \"\"\"\n", "\n", " # convert to pandas\n", " trdf = training_frame.as_data_frame().loc[:, [x,y]] # df\n", " tss = test_frame.as_data_frame().loc[:, x] # series\n", "\n", "\n", " # create dictionary of level:encode val\n", "\n", " encode_name = x + '_Tencode'\n", " overall_mean = trdf[y].mean()\n", " row_val_dict = {}\n", "\n", " for level in trdf[x].unique():\n", " level_df = trdf[trdf[x] == level][y]\n", " level_n = level_df.shape[0]\n", " level_mean = level_df.mean()\n", " if level_n >= threshold:\n", " row_val_dict[level] = level_mean\n", " else:\n", " row_val_dict[level] = ((1 - lambda_) * level_mean) +\\\n", " (lambda_ * overall_mean)\n", "\n", " row_val_dict[np.nan] = overall_mean # handle missing values\n", "\n", " if test:\n", " print(row_val_dict)\n", "\n", " # apply the transform to training data\n", " trdf[encode_name] = trdf[x].apply(lambda i: row_val_dict[i])\n", "\n", " # apply the transform to test data\n", " tsdf = pd.DataFrame(columns=[x, encode_name])\n", " tsdf[x] = tss\n", " tsdf.loc[:, encode_name] = overall_mean # handle previously unseen values\n", " # handle values that are seen in tsdf but not row_val_dict\n", " for i, col_i in enumerate(tsdf[x]):\n", " try:\n", " row_val_dict[col_i]\n", " except:\n", " # a value that appeared in tsdf isn't in the row_val_dict so just\n", " # make it the overall_mean\n", " row_val_dict[col_i] = overall_mean\n", " tsdf[encode_name] = tsdf[x].apply(lambda i: row_val_dict[i])\n", "\n", "\n", " # convert back to H2O\n", "\n", " trdf = h2o.H2OFrame(trdf[encode_name].as_matrix())\n", " trdf.columns = [encode_name]\n", "\n", " tsdf = h2o.H2OFrame(tsdf[encode_name].as_matrix())\n", " tsdf.columns = [encode_name]\n", "\n", " return (trdf, tsdf)\n" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "#### Execute encoding" ] }, { "cell_type": "code", "execution_count": 130, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Encoding: KitchenQual (1/43) ...\n", "Encoding: Electrical (2/43) ...\n", "Encoding: LotShape (3/43) ...\n", "Encoding: SaleType (4/43) ...\n", "Encoding: LandContour (5/43) ...\n", "Encoding: LandSlope (6/43) ...\n", "Encoding: GarageType (7/43) ...\n", "Encoding: BsmtExposure (8/43) ...\n", "Encoding: MasVnrType (9/43) ...\n", "Encoding: GarageCond (10/43) ...\n", "Encoding: ExterQual (11/43) ...\n", "Encoding: Street (12/43) ...\n", "Encoding: Functional (13/43) ...\n", "Encoding: Alley (14/43) ...\n", "Encoding: BsmtQual (15/43) ...\n", "Encoding: HeatingQC (16/43) ...\n", "Encoding: BsmtFinType2 (17/43) ...\n", "Encoding: RoofMatl (18/43) ...\n", "Encoding: GarageQual (19/43) ...\n", "Encoding: CentralAir (20/43) ...\n", "Encoding: GarageFinish (21/43) ...\n", "Encoding: HouseStyle (22/43) ...\n", "Encoding: RoofStyle (23/43) ...\n", "Encoding: Utilities (24/43) ...\n", "Encoding: Neighborhood (25/43) ...\n", "Encoding: Condition2 (26/43) ...\n", "Encoding: Exterior2nd (27/43) ...\n", "Encoding: BldgType (28/43) ...\n", "Encoding: SaleCondition (29/43) ...\n", "Encoding: BsmtCond (30/43) ...\n", "Encoding: LotConfig (31/43) ...\n", "Encoding: Condition1 (32/43) ...\n", "Encoding: Fence (33/43) ...\n", "Encoding: Foundation (34/43) ...\n", "Encoding: PoolQC (35/43) ...\n", "Encoding: PavedDrive (36/43) ...\n", "Encoding: MiscFeature (37/43) ...\n", "Encoding: Exterior1st (38/43) ...\n", "Encoding: MSZoning (39/43) ...\n", "Encoding: FireplaceQu (40/43) ...\n", "Encoding: ExterCond (41/43) ...\n", "Encoding: BsmtFinType1 (42/43) ...\n", "Encoding: Heating (43/43) ...\n", "Done.\n" ] } ], "source": [ "total = len(cats)\n", "for i, var in enumerate(cats):\n", " \n", " tr_enc, _ = target_encoder(train, test, var, 'SalePrice')\n", " v_enc, ts_enc = target_encoder(valid, test, var, 'SalePrice')\n", " \n", " print('Encoding: ' + var + ' (' + str(i+1) + '/' + str(total) + ') ...')\n", "\n", " train = train.cbind(tr_enc)\n", " valid = valid.cbind(v_enc)\n", " test = test.cbind(ts_enc) \n", " \n", "print('Done.')" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": true, "editable": true }, "source": [ "#### Redefine numerics and explore" ] }, { "cell_type": "code", "execution_count": 131, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Numeric = ['ExterCond_Tencode', 'TotalBsmtSF', 'Electrical_Tencode', 'KitchenAbvGr', 'LandContour_Tencode', 'FireplaceQu_Tencode', 'Alley_Tencode', 'BsmtFinSF2', 'Foundation_Tencode', 'TotRmsAbvGrd', 'MSSubClass', 'MasVnrArea', 'Condition2_Tencode', 'GrLivArea', 'BsmtFullBath', 'YearRemodAdd', 'BsmtFinSF1', 'BsmtExposure_Tencode', 'Fireplaces', '2ndFlrSF', 'MSZoning_Tencode', 'RoofMatl_Tencode', 'MoSold', 'ScreenPorch', 'PoolArea', 'Exterior1st_Tencode', '3SsnPorch', '1stFlrSF', 'FullBath', 'YrSold', 'SaleCondition_Tencode', 'BsmtQual_Tencode', 'PavedDrive_Tencode', 'BsmtHalfBath', 'CentralAir_Tencode', 'GarageYrBlt', 'LandSlope_Tencode', 'RoofStyle_Tencode', 'EnclosedPorch', 'ExterQual_Tencode', 'LowQualFinSF', 'GarageCond_Tencode', 'LotFrontage', 'LotConfig_Tencode', 'WoodDeckSF', 'Exterior2nd_Tencode', 'BsmtCond_Tencode', 'Fence_Tencode', 'MiscVal', 'BsmtUnfSF', 'Street_Tencode', 'GarageFinish_Tencode', 'Condition1_Tencode', 'PoolQC_Tencode', 'KitchenQual_Tencode', 'GarageArea', 'Functional_Tencode', 'BedroomAbvGr', 'OpenPorchSF', 'HeatingQC_Tencode', 'LotShape_Tencode', 'LotArea', 'BsmtFinType1_Tencode', 'BldgType_Tencode', 'BsmtFinType2_Tencode', 'Heating_Tencode', 'YearBuilt', 'Neighborhood_Tencode', 'OverallCond', 'GarageQual_Tencode', 'MasVnrType_Tencode', 'GarageCars', 'GarageType_Tencode', 'Utilities_Tencode', 'HalfBath', 'SaleType_Tencode', 'HouseStyle_Tencode', 'MiscFeature_Tencode', 'OverallQual']\n", "\n", "Categorical = ['KitchenQual', 'Electrical', 'LotShape', 'Condition1', 'SaleType', 'LandContour', 'LandSlope', 'GarageType', 'BsmtExposure', 'MasVnrType', 'MSZoning', 'GarageCond', 'ExterQual', 'Street', 'Functional', 'Alley', 'BsmtQual', 'HeatingQC', 'BsmtFinType2', 'RoofMatl', 'GarageQual', 'CentralAir', 'GarageFinish', 'HouseStyle', 'RoofStyle', 'Utilities', 'Neighborhood', 'Condition2', 'Exterior2nd', 'BldgType', 'SaleCondition', 'BsmtCond', 'LotConfig', 'Fence', 'Foundation', 'PoolQC', 'Exterior1st', 'PavedDrive', 'MiscFeature', 'Heating', 'FireplaceQu', 'ExterCond', 'BsmtFinType1']\n" ] } ], "source": [ "encoded_nums, cats = get_type_lists(frame=train)" ] }, { "cell_type": "code", "execution_count": 132, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Imputed and encoded numeric training data:\n", "Rows:1001\n", "Cols:79\n", "\n", "\n" ] }, { "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", "
ExterCond_Tencode TotalBsmtSF Electrical_Tencode KitchenAbvGr LandContour_Tencode FireplaceQu_Tencode Alley_Tencode BsmtFinSF2 Foundation_Tencode TotRmsAbvGrd MSSubClass MasVnrArea Condition2_Tencode GrLivArea BsmtFullBath YearRemodAdd BsmtFinSF1 BsmtExposure_Tencode Fireplaces 2ndFlrSF MSZoning_Tencode RoofMatl_Tencode MoSold ScreenPorch PoolArea Exterior1st_Tencode 3SsnPorch 1stFlrSF FullBath YrSold SaleCondition_Tencode BsmtQual_Tencode PavedDrive_Tencode BsmtHalfBath CentralAir_Tencode GarageYrBlt LandSlope_Tencode RoofStyle_Tencode EnclosedPorch ExterQual_Tencode LowQualFinSF GarageCond_Tencode LotFrontage LotConfig_Tencode WoodDeckSF Exterior2nd_Tencode BsmtCond_Tencode Fence_Tencode MiscVal BsmtUnfSF Street_Tencode GarageFinish_Tencode Condition1_Tencode PoolQC_Tencode KitchenQual_Tencode GarageArea Functional_Tencode BedroomAbvGr OpenPorchSF HeatingQC_Tencode LotShape_Tencode LotArea BsmtFinType1_Tencode BldgType_Tencode BsmtFinType2_Tencode Heating_Tencode YearBuilt Neighborhood_Tencode OverallCond GarageQual_Tencode MasVnrType_Tencode GarageCars GarageType_Tencode Utilities_Tencode HalfBath SaleType_Tencode HouseStyle_Tencode MiscFeature_Tencode OverallQual
type real int real int real real real int real int int real real int int int int real int int real real int int int real int int int int real real real int real real real real int real int real real real int real real real int int real real real real real int real int int real real int real real real real int real int real real int real real int real real real int
mins 122047.14941169939 0.0 84275.79385614385 0.0 145140.16285614387 141462.34885614386 128075.200999001 0.0 121726.89385614387 3.0 20.0 0.0 108075.79385614385 480.0 0.0 1950.0 0.0 167645.4123076923 0.0 0.0 78614.79385614385 143775.793856143861.0 0.0 0.0 78325.79385614385 0.0 480.0 0.0 2006.0 115832.04385614385 121216.12093947716129253.89464979463 0.0 119608.23368665231 1908.0 181486.5182747485 161577.2224275724 0.0 116078.96885614384 0.0 112070.79385614385 21.0 176473.2899159664 0.0 129978.23968947721 84275.79385614385 141306.738141858140.0 0.0 146350.10385614386141354.57177033494 134468.29385614386 182171.95904095902124936.94820396995 0.0 110059.12718947718 0.0 0.0 135668.69902855766 163944.593856143821300.0 150410.4464877228 138273.46052281052154536.9355228105 93469.96052281052 1875.0 109690.79385614385 2.0 96813.29385614385 155578.6188811189 0.0 125174.9605228105 144200.79385614386 0.0 125968.29385614385118907.22242757239 140375.79385614386 2.0
mean 182637.23505924645 1063.2387612387613182952.64128239392 1.046953046953047 182186.73299732237 200266.80114860163 180171.3854686272741.64935064935065 183119.90242260235 6.512487512487512 57.08791208791209106.91146881287727182224.4420403772 1519.80119880119880.426573426573426561985.138861138861 445.5994005994006182844.62529074325 0.6203796203796204341.7872127872128183387.92640181992182033.940055498946.36263736263736214.7632367632367643.3766233766233764183565.71379414792 3.45654345654345671172.08891108891111.57442557442557442007.828171828172 181541.32494458588 182245.41278741238182908.18055950044 0.059940059940059943182822.70708043204 1978.734522560336 182145.0556687069 182159.0086938536 21.257742257742258181095.69602749898 5.9250749250749255186002.74671607107 70.59975669099758 181772.16118142597 91.07392607392607 183994.52609268852 184043.11900766566177450.8703097601539.684315684315685575.99000999001 182203.5349842964 185712.8721618042 182645.11776425372 182802.82568320786180810.97023994988 477.46853146853147182576.24533688094 2.871128871128871 44.92407592407592182409.7085632649 181993.9278632456310628.262737262738185645.79515235015 182849.79797600003184056.75787594018 182323.579859550981972.2987012987012182171.95904095905 5.583416583416583 186018.3297154893 180574.40004970055 1.7932067932067932185255.62265751234 182178.65314071544 0.38161838161838163181180.3311701286 183188.25635258848 181198.19224147475 6.1448551448551445
maxs 185708.33940774488 6110.0 187738.31270358307 3.0 215016.8662245649 306119.08332982805 182171.959040959021127.0 226465.8274336283 14.0 190.0 1378.0 269469.54385614384 5642.0 3.0 2010.0 5644.0 243510.2073978105 3.0 2065.0 204495.20385614387669075.7938561438 12.0 440.0 738.0 250025.79385614384 508.0 4692.0 3.0 2010.0 260380.61674771016 312352.66653056245187523.8671023965 2.0 186782.0 2010.0 200379.84385614382 248325.79385614384 552.0 348876.58744588745 528.0 188146.7502726281 313.0 215932.78135614385 736.0 298475.79385614384 212500.14385614384182171.9590409590215500.0 2153.0 182383.5220883534 243708.832 219155.3393106893 443825.79385614384305958.08769176033 1418.0 185063.63879957132 8.0 523.0 216426.0 220137.0973044197 164660.0 236446.98648648648 187595.7541966427 218122.46052281052 185483.958141858142010.0 329868.3581418581 9.0 222252.04385614384 256064.37787676242 4.0 243875.54558028182 182216.631 2.0 263880.6876061438 210965.119205298 239825.79385614384 10.0
sigma 9945.861000354022 450.4683539784608716469.485082849522 0.225373482897182911064.930655592714 24220.26519043972 9252.695490054044 148.9183867830897439735.240377141236 1.587480364002624742.22127738162672179.4411497100248 6389.719881512633 520.2774292995626 0.5204355357324736 20.606836203107406467.173265887122824443.64548833232 0.6416730131026672432.908595059423222616.41995033148515980.2063757640462.67681950033293 54.16981527671003 43.98791894358056 29589.150408848316 29.83605804459362 392.4739572085174 0.553809800116696 1.316983505760630324904.825355766643 49068.18360107548 15415.629575665145 0.24577143121932704 15828.294334486285 24.0757519967241041835.4154172265178 20695.377655471337 61.04442237008638 52277.89924581869 49.51948485817861 10671.429849329988 22.74966637011053210669.040225587902 120.0504416046460430224.673393447127 10415.5288163924 11076.460716121788516.2493547150991 444.457507417863162541.575966699049341548.00781303608 13080.759735205764 11861.80122991297749556.81599252628 209.922579201812549673.472750816674 0.805217749665035963.0187450666087935398.540443061385 21926.25817117466 9442.373107111374 33760.02487150487 13615.6841282550857125.75433938659 8588.039549532366 29.87302609900257651529.93244080358 1.088707819061071711950.130371967634 32873.17832435439 0.734978779417342234065.80911242865 1201.565692600516 0.500221729058003 25459.93047873387321247.33154021499 5900.1270688417535 1.3535124690951332
zeros 0 25 0 1 0 0 0 894 0 0 0 570 0 0 586 0 326 0 466 572 0 0 0 921 995 0 985 0 6 0 0 0 0 943 0 0 0 0 867 0 984 0 0 0 523 0 0 0 969 78 0 0 0 0 0 48 0 4 460 0 0 0 0 0 0 0 0 0 0 0 0 48 0 0 626 0 0 0 0
missing0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 185708.33940774488 856.0 187738.31270358307 1.0 182282.48766816143 182171.95904095902 182171.959040959020.0 226465.8274336283 8.0 60.0 196.0 182525.73333333334 1710.0 1.0 2003.0 706.0 167645.4123076923 0.0 854.0 192391.8022670025 181235.935975609752.0 0.0 0.0 216859.7290502793 0.0 856.0 2.0 2008.0 177020.8800489596 200924.0538641686 187523.8671023965 0.0 186782.0 2003.0 181982.57594936708 171522.79741935484 0.0 229333.4454277286 0.0 188146.7502726281 65.0 176473.2899159664 0.0 216626.9093484419 184737.95170142702182171.959040959020.0 150.0 182383.5220883534 200494.42807017543 185776.46347031964 182171.95904095902212221.98514851482 548.0 185063.63879957132 3.0 61.0 216426.0 165131.570739549828450.0 236446.98648648648 187595.7541966427 185630.71806674334 183201.273652085422003.0 197940.3021894772 5.0 188334.07174392935 203515.30891719743 2.0 203664.60358890702 182216.631 1.0 174574.41216991964210965.119205298 182171.95904095902 7.0
1 185708.33940774488 1262.0 187738.31270358307 1.0 182282.48766816143 204076.0357142857 182171.959040959020.0 150397.2807424594 6.0 20.0 0.0 182525.73333333334 1262.0 0.0 1976.0 978.0 243510.2073978105 1.0 0.0 192391.8022670025 181235.935975609755.0 0.0 0.0 155330.24861804862 0.0 1262.0 2.0 2007.0 177020.8800489596 200924.0538641686 187523.8671023965 1.0 186782.0 1976.0 181982.57594936708 171522.79741935484 0.0 144619.2755267423 0.0 188146.7502726281 80.0 178818.25814185815 298.0 155721.17213200592 184737.95170142702182171.959040959020.0 284.0 182383.5220883534 200494.42807017543 147024.1605228105 182171.95904095902139811.59481037923 460.0 185063.63879957132 3.0 0.0 216426.0 165131.570739549829600.0 161782.77448994666 187595.7541966427 185630.71806674334 183201.273652085421976.0 218575.79385614384 8.0 188334.07174392935 155578.6188811189 2.0 203664.60358890702 182216.631 0.0 174574.41216991964178321.97183098592 182171.95904095902 6.0
2 185708.33940774488 920.0 187738.31270358307 1.0 182282.48766816143 204076.0357142857 182171.959040959020.0 226465.8274336283 6.0 60.0 162.0 182525.73333333334 1786.0 1.0 2002.0 486.0 187129.2701381951 1.0 866.0 192391.8022670025 181235.935975609759.0 0.0 0.0 216859.7290502793 0.0 920.0 2.0 2008.0 177020.8800489596 200924.0538641686 187523.8671023965 0.0 186782.0 2001.0 181982.57594936708 171522.79741935484 0.0 229333.4454277286 0.0 188146.7502726281 68.0 176473.2899159664 0.0 216626.9093484419 184737.95170142702182171.959040959020.0 434.0 182383.5220883534 200494.42807017543 185776.46347031964 182171.95904095902212221.98514851482 608.0 185063.63879957132 3.0 42.0 216426.0 209450.3942028985511250.0 236446.98648648648 187595.7541966427 185630.71806674334 183201.273652085422001.0 197940.3021894772 5.0 188334.07174392935 203515.30891719743 2.0 203664.60358890702 182216.631 1.0 174574.41216991964210965.119205298 182171.95904095902 7.0
3 185708.33940774488 1145.0 187738.31270358307 1.0 182282.48766816143 204076.0357142857 182171.959040959020.0 226465.8274336283 9.0 60.0 350.0 182525.73333333334 2198.0 1.0 2000.0 655.0 207605.41721854304 1.0 1053.0 192391.8022670025 181235.9359756097512.0 0.0 0.0 216859.7290502793 0.0 1145.0 2.0 2008.0 177020.8800489596 200924.0538641686 187523.8671023965 0.0 186782.0 2000.0 181982.57594936708 171522.79741935484 0.0 229333.4454277286 0.0 188146.7502726281 84.0 178818.25814185815 192.0 216626.9093484419 184737.95170142702182171.959040959020.0 490.0 182383.5220883534 200494.42807017543 185776.46347031964 182171.95904095902212221.98514851482 836.0 185063.63879957132 4.0 84.0 216426.0 209450.3942028985514260.0 236446.98648648648 187595.7541966427 185630.71806674334 183201.273652085422000.0 329868.3581418581 5.0 188334.07174392935 203515.30891719743 3.0 203664.60358890702 182216.631 1.0 174574.41216991964210965.119205298 182171.95904095902 8.0
4 185708.33940774488 796.0 187738.31270358307 1.0 182282.48766816143 182171.95904095902 182171.959040959020.0 185142.46052281052 5.0 50.0 0.0 182525.73333333334 1362.0 1.0 1995.0 732.0 167645.4123076923 0.0 566.0 192391.8022670025 181235.9359756097510.0 0.0 0.0 216859.7290502793 320.0 796.0 1.0 2009.0 177020.8800489596 200924.0538641686 187523.8671023965 0.0 186782.0 1993.0 181982.57594936708 171522.79741935484 0.0 144619.2755267423 0.0 188146.7502726281 85.0 176473.2899159664 40.0 216626.9093484419 184737.95170142702154576.6979101979 700.0 64.0 182383.5220883534 141354.57177033494 185776.46347031964 182171.95904095902139811.59481037923 480.0 185063.63879957132 1.0 30.0 216426.0 209450.3942028985514115.0 236446.98648648648 187595.7541966427 185630.71806674334 183201.273652085421993.0 157653.3733433233 5.0 188334.07174392935 155578.6188811189 2.0 203664.60358890702 182216.631 1.0 174574.41216991964149995.43881027232 151058.18256582128 5.0
5 185708.33940774488 1686.0 187738.31270358307 1.0 182282.48766816143 225928.18076923073 182171.959040959020.0 226465.8274336283 7.0 20.0 186.0 182525.73333333334 1694.0 1.0 2005.0 1369.0 207605.41721854304 1.0 0.0 192391.8022670025 181235.935975609758.0 0.0 0.0 216859.7290502793 0.0 1694.0 2.0 2007.0 177020.8800489596 312352.66653056245187523.8671023965 0.0 186782.0 2004.0 181982.57594936708 171522.79741935484 0.0 229333.4454277286 0.0 188146.7502726281 75.0 176473.2899159664 255.0 216626.9093484419 184737.95170142702182171.959040959020.0 317.0 182383.5220883534 200494.42807017543 185776.46347031964 182171.95904095902212221.98514851482 636.0 185063.63879957132 3.0 57.0 216426.0 165131.5707395498210084.0 236446.98648648648 187595.7541966427 185630.71806674334 183201.273652085422004.0 214617.5167374998 5.0 188334.07174392935 256064.37787676242 2.0 203664.60358890702 182216.631 0.0 174574.41216991964178321.97183098592 182171.95904095902 8.0
6 185708.33940774488 952.0 129502.64385614383 2.0 182282.48766816143 204076.0357142857 182171.959040959020.0 136922.75385614386 8.0 50.0 0.0 182525.73333333334 1774.0 0.0 1950.0 0.0 167645.4123076923 2.0 752.0 135492.29843360864181235.935975609754.0 0.0 0.0 174764.54385614384 0.0 1022.0 2.0 2008.0 153108.76116383614 141930.00455580864187523.8671023965 0.0 186782.0 1931.0 181982.57594936708 171522.79741935484 205.0 144619.2755267423 0.0 188146.7502726281 51.0 176473.2899159664 90.0 153754.05472570908 184737.95170142702182171.959040959020.0 952.0 182383.5220883534 141354.57177033494 134468.29385614386 182171.95904095902139811.59481037923 468.0 153787.09385614382 2.0 0.0 157465.01829268291 165131.570739549826120.0 172096.88704318934 187595.7541966427 185630.71806674334 183201.273652085421931.0 133772.61742757243 5.0 131334.20218947722 155578.6188811189 2.0 133017.2480620155 182216.631 0.0 174574.41216991964149995.43881027232 182171.95904095902 7.0
7 185708.33940774488 1040.0 187738.31270358307 1.0 182282.48766816143 182171.95904095902 182171.959040959020.0 150397.2807424594 5.0 20.0 0.0 182525.73333333334 1040.0 1.0 1965.0 906.0 167645.4123076923 0.0 0.0 192391.8022670025 181235.935975609752.0 0.0 0.0 162189.7051282051 0.0 1040.0 1.0 2008.0 177020.8800489596 141930.00455580864187523.8671023965 0.0 186782.0 1965.0 181982.57594936708 222601.05940594056 0.0 144619.2755267423 0.0 188146.7502726281 70.0 176473.2899159664 0.0 169688.48681389034 184737.95170142702182171.959040959020.0 134.0 182383.5220883534 141354.57177033494 185776.46347031964 182171.95904095902139811.59481037923 384.0 185063.63879957132 3.0 0.0 216426.0 165131.5707395498211200.0 150410.4464877228 187595.7541966427 185630.71806674334 183201.273652085421965.0 143540.98922651424 5.0 188334.07174392935 155578.6188811189 1.0 133017.2480620155 182216.631 0.0 174574.41216991964178321.97183098592 182171.95904095902 5.0
8 185708.33940774488 1175.0 187738.31270358307 1.0 182282.48766816143 225928.18076923073 182171.959040959020.0 226465.8274336283 11.0 60.0 286.0 182525.73333333334 2324.0 1.0 2006.0 998.0 167645.4123076923 2.0 1142.0 192391.8022670025 181235.935975609757.0 0.0 0.0 155487.09385614382 0.0 1182.0 3.0 2006.0 260380.61674771016 312352.66653056245187523.8671023965 0.0 186782.0 2005.0 181982.57594936708 222601.05940594056 0.0 348876.58744588745 0.0 188146.7502726281 85.0 176473.2899159664 147.0 153754.05472570908 184737.95170142702182171.959040959020.0 177.0 182383.5220883534 243708.832 185776.46347031964 182171.95904095902305958.08769176033 736.0 185063.63879957132 4.0 21.0 216426.0 209450.3942028985511924.0 236446.98648648648 187595.7541966427 185630.71806674334 183201.273652085422005.0 301677.8909715284 5.0 188334.07174392935 256064.37787676242 3.0 243875.54558028182 182216.631 0.0 263880.6876061438 210965.119205298 182171.95904095902 9.0
9 185708.33940774488 912.0 187738.31270358307 1.0 182282.48766816143 182171.95904095902 182171.959040959020.0 150397.2807424594 4.0 20.0 0.0 182525.73333333334 912.0 1.0 1962.0 737.0 167645.4123076923 0.0 0.0 192391.8022670025 181235.935975609759.0 176.0 0.0 162189.7051282051 0.0 912.0 1.0 2008.0 177020.8800489596 141930.00455580864187523.8671023965 0.0 186782.0 1962.0 181982.57594936708 222601.05940594056 0.0 144619.2755267423 0.0 188146.7502726281 70.59975669099757 176473.2899159664 140.0 172512.37104060987 184737.95170142702182171.959040959020.0 175.0 182383.5220883534 141354.57177033494 185776.46347031964 182171.95904095902139811.59481037923 352.0 185063.63879957132 2.0 0.0 141464.28231292518 220137.0973044197 12968.0 161782.77448994666 187595.7541966427 185630.71806674334 183201.273652085421962.0 143540.98922651424 6.0 188334.07174392935 155578.6188811189 1.0 133017.2480620155 182216.631 0.0 174574.41216991964178321.97183098592 182171.95904095902 5.0
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "--------------------------------------------------------------------------------\n", "Imputed and encoded numeric validation data:\n", "Rows:459\n", "Cols:79\n", "\n", "\n" ] }, { "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", "
ExterCond_Tencode TotalBsmtSF Electrical_Tencode KitchenAbvGr LandContour_Tencode FireplaceQu_Tencode Alley_Tencode BsmtFinSF2 Foundation_Tencode TotRmsAbvGrd MSSubClass MasVnrArea Condition2_Tencode GrLivArea BsmtFullBath YearRemodAdd BsmtFinSF1 BsmtExposure_Tencode Fireplaces 2ndFlrSF MSZoning_Tencode RoofMatl_Tencode MoSold ScreenPorch PoolArea Exterior1st_Tencode 3SsnPorch 1stFlrSF FullBath YrSold SaleCondition_Tencode BsmtQual_Tencode PavedDrive_Tencode BsmtHalfBath CentralAir_Tencode GarageYrBlt LandSlope_Tencode RoofStyle_Tencode EnclosedPorch ExterQual_Tencode LowQualFinSF GarageCond_Tencode LotFrontage LotConfig_Tencode WoodDeckSF Exterior2nd_Tencode BsmtCond_Tencode Fence_Tencode MiscVal BsmtUnfSF Street_Tencode GarageFinish_Tencode Condition1_Tencode PoolQC_Tencode KitchenQual_Tencode GarageArea Functional_Tencode BedroomAbvGr OpenPorchSF HeatingQC_Tencode LotShape_Tencode LotArea BsmtFinType1_Tencode BldgType_Tencode BsmtFinType2_Tencode Heating_Tencode YearBuilt Neighborhood_Tencode OverallCond GarageQual_Tencode MasVnrType_Tencode GarageCars GarageType_Tencode Utilities_Tencode HalfBath SaleType_Tencode HouseStyle_Tencode MiscFeature_Tencode OverallQual
type real int real int real real real int real int int real real int int int int real int int real real int int int real int int int int real real real int real real real real int real int real real real int real real real int int real real real real real int real int int real real int real real real real int real int real real int real real int real real real int
mins 91754.02450980392 0.0 100143.52450980392 1.0 163075.56297134238 133191.52450980392 134607.547237076620.0 110363.31736694675 2.0 20.0 0.0 84954.02450980392 334.0 0.0 1950.0 0.0 161376.63366336632 0.0 0.0 118217.35784313723175904.024509803921.0 0.0 0.0 96429.02450980392 0.0 334.0 0.0 2006.0 143816.52450980392 134771.7517825312 114840.96895424835 0.0 111601.52450980392 1900.0 175531.83179723503 139864.02450980392 0.0 91042.14950980392 0.0 118776.94117647059 21.0 165751.57330498463 0.0 106204.02450980392 78579.02450980392 133419.962009803920.0 0.0 95579.02450980392 143948.79679144386 150223.0311764706 178193.4967320261 105130.89950980392 0.0 84954.02450980392 0.0 0.0 100679.02450980392 163981.4191419142 1491.0 146338.19117647054 128987.56617647059145091.52450980392 77729.02450980392 1872.0 112866.7168174962 1.0 134853.20367647058 131576.52450980392 0.0 111434.07450980392 178193.4967320261 0.0 107734.02450980392122402.59593837534 73479.02450980392 1.0
mean 178484.55631381093 1044.7603485838779179083.62772865137 1.0457516339869282 177854.22806185653 194587.7731541999 176164.9969256838 57.23529411764706179041.90369302404 6.529411764705882 56.4814814814814896.68340611353712178197.18104147978 1506.0043572984750.42265795206971681984.2701525054467439.36601307189545178366.110436157 0.5969498910675382358.3442265795207179328.32668845312177969.719434832756.23311546840958615.7102396514161221.411764705882353 179651.10523303002 3.30718954248366 1141.99128540305011.54466230936819172007.7886710239652177335.48292323467 179069.59942970652179002.9605814003 0.05228758169934641179115.18492887347 1977.9953051643192177815.9926203597 177381.1458157119 23.47276688453159 174940.2994916485 5.668845315904139184432.0126553889 68.85751978891821 178163.26637404418 101.15904139433552179728.60882139349 180413.2355397497 173941.1787702735 51.78649237472767 548.1590413943355178225.25931265755181122.03431372548 178617.62590029472 178198.69396030012177298.2844312017 463.1917211328976 178425.73264556366 2.856209150326797550.446623093681914180663.6615169379 176786.2223824170410273.808278867102180031.30962236744 178649.14910504507180587.69974155238 178371.048677858951969.0196078431372178193.49673202613 5.557734204793029184195.2038275876 176108.20460862629 1.710239651416122 185134.53079371178 178193.49673202608 0.38562091503267976177239.63702422145177648.76674783204 177409.66351972884 6.0
maxs 197862.35784313726 3200.0 184788.65617433414 2.0 252389.9995098039 345181.5245098039 180974.4445098039 1474.0 222366.88205128204 12.0 190.0 1600.0 302979.0245098039 3608.0 2.0 2009.0 1880.0 252970.21398348815 3.0 1611.0 219311.6970098039 296434.0245098039 12.0 480.0 648.0 230256.21200980392 407.0 3228.0 3.0 2010.0 255001.6042717087 287410.74022408965184063.06872037915 1.0 184861.0283687943 2009.0 219485.84269162212 205162.1274859944 301.0 311103.9129713424 572.0 187300.52567237162 182.0 221371.6687405731 857.0 237481.8022875817 204324.73418722322181956.919246646 8300.0 2336.0 178405.7096069869 223156.8495098039 311479.0245098039 180579.02450980392307728.63562091504 1248.0 181312.14950980392 6.0 547.0 211491.75330396474 257372.27450980392215245.0 224699.7863950498 183943.1995098039 194068.52450980392 179414.415730337122009.0 288359.0245098039 9.0 282791.5245098039 243111.468058191 4.0 243247.17284313726 178193.4967320261 2.0 255001.6042717087 221634.02450980392 188229.02450980392 10.0
sigma 12461.390436783056 412.0811851328444417731.970597652486 0.2091739611899642612704.546441754977 26261.653007678007 9343.377742370945 185.240010652032937636.63649998418 1.706878545585754542.51618219006454183.006592418819 7675.71672468966 537.10494366091060.516125042604655220.739310451691143431.4241433973325 27626.16956481009 0.6515613257699316444.585699914114622954.50756787530212445.8724128997532.76205442369920859.12791370210353430.24604981500501227697.042657464834 28.18457901138756373.0166882400161 0.54459315902805591.353066297207534525636.556448480504 44973.30052212846 17370.731330504437 0.2228492452574714 19717.249202290554 23.8354067943704039612.485004032442 13516.296484902436 61.32101817353126446704.676972640176 46.6608516349771311807.813469454739 20.33369576727011811574.452561519602 136.0428056028112826639.054892573466 13346.55064027858310548.08650865389 449.54109321577573436.03582789669873866.018585588162332859.958768536344 12058.531723299979 111.3469012372631 48579.93227209306 221.954985446370368139.874204543359 0.839148304865123472.74780631554772 31183.876623648637 21170.42264902131511072.98878572322427951.821767244168 11313.6862910715546894.848900014342 7482.963820995204 30.82351593092024447446.35307377432 1.16463541118628610759.770112055132 27404.304553567163 0.771294315166226630435.66812388826 2.5135516264537697e-110.5091844194507408 25705.64861904969421371.858060255647 5663.060039991695 1.4417359744722111
zeros 0 12 0 0 0 0 0 399 0 0 0 291 0 0 270 0 141 0 224 257 0 0 0 423 458 0 451 0 3 0 0 0 0 435 0 0 0 0 385 0 450 0 0 0 238 0 0 0 439 40 0 0 0 0 0 33 0 2 196 0 0 0 0 0 0 0 0 0 0 0 0 33 0 0 287 0 0 0 0
missing0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 180398.05693069307 756.0 184788.65617433414 1.0 175715.7828162291 219907.18575980392 178193.4967320261 0.0 144486.10784313726 7.0 70.0 0.0 178218.27472527474 1717.0 1.0 1970.0 216.0 161376.63366336632 1.0 756.0 187920.61064425771176671.8111111111 2.0 0.0 0.0 154595.81798806478 0.0 961.0 1.0 2006.0 147087.25059676042 138313.57142857142184063.06872037915 0.0 184861.0283687943 1998.0 175531.83179723503 171401.71038251367 272.0 143747.87889273354 0.0 187300.52567237162 60.0 165751.57330498463 0.0 180267.35784313726 204324.73418722322178193.4967320261 0.0 540.0 178405.7096069869 143948.79679144386 181573.27604166663 178193.4967320261 211880.81318681315 642.0 179857.76346604215 3.0 35.0 158961.70308123247 194850.585660883029550.0 169309.44117647054 181805.66321243523182592.86046511628 179414.415730337121915.0 216008.84593837534 5.0 185601.24938271602 157482.0 3.0 142532.16792065662 178193.4967320261 0.0 170822.7626262626 203633.455628685 178193.4967320261 7.0
1 180398.05693069307 1107.0 184788.65617433414 1.0 175715.7828162291 205118.42900418595 178193.4967320261 32.0 148549.72906403942 7.0 60.0 240.0 178218.27472527474 2090.0 1.0 1973.0 859.0 199413.65506535943 2.0 983.0 187920.61064425771176671.8111111111 11.0 0.0 0.0 167128.41844919784 0.0 1107.0 2.0 2009.0 171302.3622047244 206633.03141361254184063.06872037915 0.0 184861.0283687943 1973.0 175531.83179723503 171401.71038251367 228.0 143747.87889273354 0.0 187300.52567237162 68.85751978891821 165751.57330498463 235.0 169568.25527903467 181115.23 178193.4967320261 350.0 216.0 178405.7096069869 201271.56721053383 197366.52450980392 178193.4967320261 140285.62820512822 484.0 179857.76346604215 3.0 204.0 211491.75330396474 194850.5856608830210382.0 169309.44117647054 181805.66321243523156634.52450980392 179414.415730337121973.0 184610.14950980392 6.0 185601.24938271602 243111.468058191 2.0 201051.3968871595 178193.4967320261 1.0 170822.7626262626 203633.455628685 163465.69117647054 7.0
2 180398.05693069307 991.0 184788.65617433414 2.0 175715.7828162291 205118.42900418595 178193.4967320261 0.0 144486.10784313726 5.0 190.0 0.0 127029.02450980392 1077.0 1.0 1950.0 851.0 161376.63366336632 2.0 0.0 187920.61064425771176671.8111111111 1.0 0.0 0.0 151733.02861939298 0.0 1077.0 1.0 2008.0 171302.3622047244 138313.57142857142184063.06872037915 0.0 184861.0283687943 1939.0 175531.83179723503 171401.71038251367 0.0 143747.87889273354 0.0 187300.52567237162 50.0 165751.57330498463 0.0 151828.55059676044 181115.23 178193.4967320261 0.0 140.0 178405.7096069869 201271.56721053383 152316.52450980392 178193.4967320261 140285.62820512822 205.0 179857.76346604215 2.0 4.0 211491.75330396474 163981.4191419142 7420.0 224699.7863950498 128987.56617647059182592.86046511628 179414.415730337121939.0 129965.77450980392 6.0 194951.10784313726 157482.0 1.0 201051.3968871595 178193.4967320261 0.0 170822.7626262626 122402.59593837534 178193.4967320261 5.0
3 180398.05693069307 832.0 135344.4530812325 1.0 175715.7828162291 178193.4967320261 178193.4967320261 0.0 144486.10784313726 5.0 45.0 0.0 178218.27472527474 854.0 0.0 2001.0 0.0 161376.63366336632 0.0 0.0 132608.82714138282176671.8111111111 7.0 0.0 0.0 154595.81798806478 0.0 854.0 1.0 2007.0 171302.3622047244 138313.57142857142184063.06872037915 0.0 184861.0283687943 1991.0 175531.83179723503 171401.71038251367 0.0 143747.87889273354 0.0 187300.52567237162 51.0 165751.57330498463 48.0 163767.73719637108 181115.23 181956.919246646 0.0 832.0 178405.7096069869 143948.79679144386 181573.27604166663 178193.4967320261 140285.62820512822 576.0 179857.76346604215 2.0 112.0 211491.75330396474 163981.4191419142 6120.0 168970.1659826721 181805.66321243523182592.86046511628 179414.415730337121929.0 129965.77450980392 8.0 185601.24938271602 157482.0 2.0 142532.16792065662 178193.4967320261 0.0 170822.7626262626 122402.59593837534 178193.4967320261 7.0
4 180398.05693069307 1004.0 184788.65617433414 1.0 175715.7828162291 205118.42900418595 178193.4967320261 0.0 148549.72906403942 5.0 20.0 180.0 178218.27472527474 1004.0 1.0 1970.0 578.0 161376.63366336632 1.0 0.0 187920.61064425771176671.8111111111 3.0 0.0 0.0 154595.81798806478 0.0 1004.0 1.0 2010.0 171302.3622047244 138313.57142857142184063.06872037915 0.0 184861.0283687943 1970.0 175531.83179723503 171401.71038251367 0.0 143747.87889273354 0.0 187300.52567237162 68.85751978891821 221371.6687405731 0.0 163767.73719637108 181115.23 178193.4967320261 700.0 426.0 178405.7096069869 223156.8495098039 181573.27604166663 178193.4967320261 140285.62820512822 480.0 179857.76346604215 2.0 0.0 211491.75330396474 194850.5856608830211241.0 169309.44117647054 181805.66321243523182592.86046511628 179414.415730337121970.0 152080.32258672698 7.0 185601.24938271602 203114.2504640024 2.0 201051.3968871595 178193.4967320261 0.0 170822.7626262626 170914.57205240175 163465.69117647054 6.0
5 180398.05693069307 1114.0 184788.65617433414 1.0 175715.7828162291 178193.4967320261 178193.4967320261 0.0 222366.88205128204 6.0 20.0 0.0 178218.27472527474 1114.0 1.0 2004.0 646.0 161376.63366336632 0.0 0.0 187920.61064425771176671.8111111111 6.0 0.0 0.0 206602.9363057325 0.0 1114.0 1.0 2008.0 171302.3622047244 138313.57142857142184063.06872037915 0.0 184861.0283687943 2004.0 175531.83179723503 171401.71038251367 0.0 143747.87889273354 0.0 187300.52567237162 66.0 177919.81360946747 0.0 209302.39072847684 181115.23 178193.4967320261 0.0 468.0 178405.7096069869 143948.79679144386 150829.02450980392 178193.4967320261 211880.81318681315 576.0 179857.76346604215 3.0 102.0 211491.75330396474 163981.4191419142 13695.0 224699.7863950498 181805.66321243523182592.86046511628 179414.415730337122004.0 189097.7776348039 5.0 185601.24938271602 157482.0 2.0 142532.16792065662 178193.4967320261 1.0 170822.7626262626 170914.57205240175 178193.4967320261 5.0
6 180398.05693069307 637.0 100143.52450980392 1.0 163075.56297134238 219907.18575980392 134607.547237076620.0 222366.88205128204 6.0 45.0 0.0 178218.27472527474 1108.0 0.0 1950.0 0.0 161376.63366336632 1.0 0.0 132608.82714138282176671.8111111111 6.0 0.0 0.0 154595.81798806478 0.0 1108.0 1.0 2007.0 171302.3622047244 138313.57142857142114840.96895424835 0.0 184861.0283687943 1930.0 175531.83179723503 171401.71038251367 205.0 143747.87889273354 0.0 187300.52567237162 57.0 177919.81360946747 0.0 163767.73719637108 181115.23 181956.919246646 0.0 637.0 178405.7096069869 143948.79679144386 181573.27604166663 178193.4967320261 211880.81318681315 280.0 179857.76346604215 3.0 0.0 211491.75330396474 163981.4191419142 7449.0 168970.1659826721 181805.66321243523182592.86046511628 179414.415730337121930.0 112866.7168174962 7.0 185601.24938271602 157482.0 1.0 201051.3968871595 178193.4967320261 0.0 170822.7626262626 122402.59593837534 178193.4967320261 7.0
7 180398.05693069307 520.0 184788.65617433414 1.0 175715.7828162291 178193.4967320261 178193.4967320261 0.0 144486.10784313726 4.0 30.0 0.0 84954.02450980392 520.0 0.0 1950.0 0.0 161376.63366336632 0.0 0.0 132608.82714138282176671.8111111111 5.0 0.0 0.0 151733.02861939298 0.0 520.0 1.0 2008.0 171302.3622047244 138313.57142857142184063.06872037915 0.0 111601.52450980392 1920.0 175531.83179723503 171401.71038251367 87.0 143747.87889273354 0.0 187300.52567237162 60.0 177919.81360946747 49.0 151828.55059676044 181115.23 178193.4967320261 0.0 520.0 178405.7096069869 143948.79679144386 150223.0311764706 178193.4967320261 105130.89950980392 240.0 179857.76346604215 1.0 0.0 127694.14950980392 194850.585660883026324.0 168970.1659826721 181805.66321243523182592.86046511628 179414.415730337121927.0 129965.77450980392 6.0 134853.20367647058 157482.0 1.0 142532.16792065662 178193.4967320261 0.0 170822.7626262626 170914.57205240175 178193.4967320261 4.0
8 180398.05693069307 1228.0 184788.65617433414 1.0 175715.7828162291 178193.4967320261 178193.4967320261 0.0 148549.72906403942 6.0 20.0 0.0 178218.27472527474 1228.0 0.0 2006.0 0.0 161376.63366336632 0.0 0.0 187920.61064425771176671.8111111111 6.0 0.0 0.0 167128.41844919784 0.0 1228.0 1.0 2008.0 171302.3622047244 138313.57142857142184063.06872037915 0.0 184861.0283687943 1966.0 175531.83179723503 171401.71038251367 0.0 143747.87889273354 0.0 187300.52567237162 68.85751978891821 221371.6687405731 0.0 169568.25527903467 181115.23 151206.9049445865 0.0 1228.0 178405.7096069869 143948.79679144386 181573.27604166663 178193.4967320261 211880.81318681315 271.0 179857.76346604215 3.0 65.0 158961.70308123247 194850.585660883028544.0 168970.1659826721 181805.66321243523182592.86046511628 179414.415730337121966.0 143162.40700980392 6.0 185601.24938271602 157482.0 1.0 201051.3968871595 178193.4967320261 1.0 170822.7626262626 170914.57205240175 178193.4967320261 5.0
9 180398.05693069307 1097.0 184788.65617433414 1.0 175715.7828162291 178193.4967320261 178193.4967320261 0.0 222366.88205128204 6.0 20.0 0.0 178218.27472527474 1097.0 0.0 1995.0 0.0 161376.63366336632 0.0 0.0 187920.61064425771176671.8111111111 6.0 0.0 0.0 206602.9363057325 0.0 1097.0 1.0 2009.0 171302.3622047244 206633.03141361254184063.06872037915 0.0 184861.0283687943 1995.0 175531.83179723503 171401.71038251367 0.0 143747.87889273354 0.0 187300.52567237162 112.0 165751.57330498463 392.0 209302.39072847684 181115.23 178193.4967320261 0.0 1097.0 178405.7096069869 143948.79679144386 181573.27604166663 178193.4967320261 140285.62820512822 672.0 179857.76346604215 3.0 64.0 211491.75330396474 163981.4191419142 10859.0 168970.1659826721 181805.66321243523182592.86046511628 179414.415730337121994.0 190019.77971813726 5.0 185601.24938271602 157482.0 2.0 201051.3968871595 178193.4967320261 1.0 170822.7626262626 170914.57205240175 178193.4967320261 5.0
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "--------------------------------------------------------------------------------\n", "Imputed and encoded numeric test data:\n", "Rows:1459\n", "Cols:79\n", "\n", "\n" ] }, { "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", "
ExterCond_Tencode TotalBsmtSF Electrical_Tencode KitchenAbvGr LandContour_Tencode FireplaceQu_Tencode Alley_Tencode BsmtFinSF2 Foundation_Tencode TotRmsAbvGrd MSSubClass MasVnrArea Condition2_Tencode GrLivArea BsmtFullBath YearRemodAdd BsmtFinSF1 BsmtExposure_Tencode Fireplaces 2ndFlrSF MSZoning_Tencode RoofMatl_Tencode MoSold ScreenPorch PoolArea Exterior1st_Tencode 3SsnPorch 1stFlrSF FullBath YrSold SaleCondition_Tencode BsmtQual_Tencode PavedDrive_Tencode BsmtHalfBath CentralAir_Tencode GarageYrBlt LandSlope_Tencode RoofStyle_Tencode EnclosedPorch ExterQual_Tencode LowQualFinSF GarageCond_Tencode LotFrontage LotConfig_Tencode WoodDeckSF Exterior2nd_Tencode BsmtCond_Tencode Fence_Tencode MiscVal BsmtUnfSF Street_Tencode GarageFinish_Tencode Condition1_Tencode PoolQC_Tencode KitchenQual_Tencode GarageArea Functional_Tencode BedroomAbvGr OpenPorchSF HeatingQC_Tencode LotShape_Tencode LotArea BsmtFinType1_Tencode BldgType_Tencode BsmtFinType2_Tencode Heating_Tencode YearBuilt Neighborhood_Tencode OverallCond GarageQual_Tencode MasVnrType_Tencode GarageCars GarageType_Tencode Utilities_Tencode HalfBath SaleType_Tencode HouseStyle_Tencode MiscFeature_Tencode OverallQual
type real real real int real real real real real int int real real int real int real real int int real real int int int real int int int int real real real real real real real real int real int real real real int real real real int real real real real real real real real int int real real int real real real real int real int real real real real real int real real real int
mins 91754.02450980392 0.0 100143.52450980392 0.0 163075.56297134238 133191.52450980392 134607.547237076620.0 110363.31736694675 3.0 20.0 0.0 127029.02450980392 407.0 0.0 1950.0 0.0 161376.63366336632 0.0 0.0 118217.35784313723175904.024509803921.0 0.0 0.0 96429.02450980392 0.0 407.0 0.0 2006.0 143816.52450980392 134771.7517825312 114840.96895424835 0.0 111601.52450980392 1895.0 175531.83179723503 139864.02450980392 0.0 91042.14950980392 0.0 118776.94117647059 21.0 165751.57330498463 0.0 106204.02450980392 78579.02450980392 133419.962009803920.0 0.0 95579.02450980392 143948.79679144386 150223.0311764706 178193.4967320261 105130.89950980392 0.0 84954.02450980392 0.0 0.0 100679.02450980392 163981.4191419142 1470.0 146338.19117647054 128987.56617647059145091.52450980392 77729.02450980392 1879.0 112866.7168174962 1.0 134853.20367647058 131576.52450980392 0.0 111434.07450980392 178193.4967320261 0.0 107734.02450980392122402.59593837534 73479.02450980392 1.0
mean 178138.29247727426 1046.1179698216736180126.1193152811 1.0424948594928032 179174.226337526 194452.82035270397 176172.8514977089752.61934156378601 181006.2901857593 6.385195339273475 57.37834132967786100.70914127423823178369.39980873463 1486.04592186429070.43445435827041861983.6627827278958439.2037037037037 179354.8610184363 0.5812200137080192325.9677861549006179232.09043019178176751.753206153376.10418094585332417.0644276901987661.7443454420836186179810.686881209 1.7943797121315971156.5346127484581.570938999314599 2007.7697052775875176492.09637795313 181062.10689687656177090.15440559445 0.06520247083047358179789.60281035837 1977.7212165097756177395.21920765378 177370.7037166422 24.24331734064427177673.68837649448 3.5435229609321452184620.93755108098 68.58035714285714 178278.00897433652 93.17477724468814 180995.23531825157 179283.61725237884174246.9783571091 58.16792323509253554.2949245541838 178065.09267032953180987.1789957136 179939.77372747526 178193.4967320261 179340.3962464452 472.7688614540466 178383.03720943845 2.854009595613433748.3139136394791 182227.81273899964 176844.0836371834 9819.161069225496182091.99147253158 178370.36965515942180689.57815766838 179140.348339493621971.357779300891179660.9318538107 5.5538039753255655182567.66333366183 178207.07986924512 1.7661179698216736186339.7089378328 178193.4967320261 0.3776559287183002175933.10715345875176296.0327526845 177606.24421888925 6.078821110349555
maxs 197862.35784313726 5095.0 184788.65617433414 2.0 252389.9995098039 345181.5245098039 180974.4445098039 1526.0 222366.88205128204 15.0 190.0 1290.0 302979.0245098039 5095.0 3.0 2010.0 4010.0 252970.21398348815 4.0 1862.0 219311.6970098039 296434.0245098039 12.0 576.0 800.0 230256.21200980392 360.0 5095.0 4.0 2010.0 255001.6042717087 287410.74022408965184063.06872037915 2.0 184861.0283687943 2207.0 219485.84269162212 205162.1274859944 1012.0 311103.9129713424 1064.0 187300.52567237162 200.0 221371.6687405731 1424.0 237481.8022875817 204324.73418722322181956.919246646 17000.0 2140.0 178405.7096069869 223156.8495098039 311479.0245098039 178193.4967320261 307728.63562091504 1488.0 181312.14950980392 6.0 742.0 211491.75330396474 257372.2745098039256600.0 224699.7863950498 183943.1995098039 194068.52450980392 179414.415730337122010.0 288359.0245098039 9.0 194951.10784313726 243111.468058191 5.0 243247.17284313726 178193.4967320261 2.0 255001.6042717087 203633.455628685 188229.02450980392 10.0
sigma 13372.26174917729 442.7467124418268 15963.223969023631 0.2084716721132495716731.14952435502 26907.81955497986 9344.441064269215 176.6933005286070738032.67490944731 1.508894575192540942.74687961871821176.709824372394026115.23069917075 485.5660986532533 0.530283455023205221.130466908170447455.1118876132698628882.71553690542 0.6474204530720101420.610226469103423489.4065731974663137.23596097321572.72243190125080656.60976290691055430.49164630534206627215.585184717398 20.2078417514965 398.165819592379 0.55518988803566121.301740149380264324614.448808109904 46910.28684795173520263.256532577616 0.2522950420673912 18602.363953739645 25.7144505812253538806.028004426134 13409.559779876743 67.2277654195696948363.331700835224 44.04325086437556511764.269564905075 20.56122785671849211456.730191238737 127.7448815190760325951.286853243677 13660.62136447893 9594.992921526902 630.806977589708 437.110507934869255302.397777524548 33850.87496256971 15269.946772589561 5.126500680162683e-1250064.36965926004 216.974164680402857764.753398575106 0.829788362735451168.8833641131539730689.890057024284 19890.63718996989 4955.51732692645 28488.122976770395 11421.9222903730926944.959535831843 4120.712522628475 30.3900708372052948658.82908689111 1.113739603289208211447.223084004698 28422.54135345877 0.775678926349497830059.124281346794 5.126500680162683e-120.503016676941585824826.25863986618 20533.377591439952 4663.358457904923 1.4368116404730185
zeros 0 41 0 2 0 0 0 1278 0 0 0 877 0 0 849 0 462 0 730 839 0 0 0 1319 1453 0 1446 0 3 0 0 0 0 1364 0 0 0 0 1208 0 1445 0 0 0 762 0 0 0 1408 123 0 0 0 0 0 76 0 2 642 0 0 0 0 0 0 0 0 0 0 0 0 76 0 0 921 0 0 0 0
missing0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 180398.05693069307 882.0 184788.65617433414 1.0 175715.7828162291 178193.4967320261 178193.4967320261 144.0 148549.72906403942 5.0 20.0 0.0 178218.27472527474 896.0 0.0 1961.0 468.0 161376.63366336632 0.0 0.0 134962.35784313726176671.8111111111 6.0 120.0 0.0 206602.9363057325 0.0 896.0 1.0 2010.0 171302.3622047244 138313.57142857142184063.06872037915 0.0 184861.0283687943 1961.0 175531.83179723503 171401.71038251367 0.0 143747.87889273354 0.0 187300.52567237162 80.0 177919.81360946747 140.0 209302.39072847684 181115.23 151206.9049445865 0.0 270.0 178405.7096069869 143948.79679144386 150223.0311764706 178193.4967320261 140285.62820512822 730.0 179857.76346604215 2.0 0.0 149413.2797336845 163981.4191419142 11622.0 156012.9060887513 181805.66321243523168862.10143288082 179414.415730337121961.0 152080.32258672698 6.0 185601.24938271602 157482.0 1.0 201051.3968871595 178193.4967320261 0.0 170822.7626262626 170914.57205240175 178193.4967320261 5.0
1 180398.05693069307 1329.0 184788.65617433414 1.0 175715.7828162291 178193.4967320261 178193.4967320261 0.0 148549.72906403942 6.0 20.0 108.0 178218.27472527474 1329.0 0.0 1958.0 923.0 161376.63366336632 0.0 0.0 187920.61064425771176671.8111111111 6.0 0.0 0.0 154595.81798806478 0.0 1329.0 1.0 2010.0 171302.3622047244 138313.57142857142184063.06872037915 0.0 184861.0283687943 1958.0 175531.83179723503 205162.1274859944 0.0 143747.87889273354 0.0 187300.52567237162 81.0 165751.57330498463 393.0 163767.73719637108 181115.23 178193.4967320261 12500.0 406.0 178405.7096069869 143948.79679144386 181573.27604166663 178193.4967320261 211880.81318681315 312.0 179857.76346604215 3.0 36.0 149413.2797336845 194850.5856608830214267.0 169309.44117647054 181805.66321243523182592.86046511628 179414.415730337121958.0 152080.32258672698 6.0 185601.24938271602 203114.2504640024 1.0 201051.3968871595 178193.4967320261 1.0 170822.7626262626 170914.57205240175 188229.02450980392 6.0
2 180398.05693069307 928.0 184788.65617433414 1.0 175715.7828162291 205118.42900418595 178193.4967320261 0.0 222366.88205128204 6.0 60.0 0.0 178218.27472527474 1629.0 0.0 1998.0 791.0 161376.63366336632 1.0 701.0 187920.61064425771176671.8111111111 3.0 0.0 0.0 206602.9363057325 0.0 928.0 2.0 2010.0 171302.3622047244 206633.03141361254184063.06872037915 0.0 184861.0283687943 1997.0 175531.83179723503 171401.71038251367 0.0 143747.87889273354 0.0 187300.52567237162 74.0 177919.81360946747 212.0 209302.39072847684 181115.23 151206.9049445865 0.0 137.0 178405.7096069869 223156.8495098039 181573.27604166663 178193.4967320261 140285.62820512822 482.0 179857.76346604215 3.0 34.0 158961.70308123247 194850.5856608830213830.0 224699.7863950498 181805.66321243523182592.86046511628 179414.415730337121997.0 191808.05969498912 5.0 185601.24938271602 157482.0 2.0 201051.3968871595 178193.4967320261 1.0 170822.7626262626 203633.455628685 178193.4967320261 5.0
3 180398.05693069307 926.0 184788.65617433414 1.0 175715.7828162291 219907.18575980392 178193.4967320261 0.0 222366.88205128204 7.0 60.0 20.0 178218.27472527474 1604.0 0.0 1998.0 602.0 161376.63366336632 1.0 678.0 187920.61064425771176671.8111111111 6.0 0.0 0.0 206602.9363057325 0.0 926.0 2.0 2010.0 171302.3622047244 138313.57142857142184063.06872037915 0.0 184861.0283687943 1998.0 175531.83179723503 171401.71038251367 0.0 143747.87889273354 0.0 187300.52567237162 78.0 177919.81360946747 360.0 209302.39072847684 181115.23 178193.4967320261 0.0 324.0 178405.7096069869 223156.8495098039 181573.27604166663 178193.4967320261 211880.81318681315 470.0 179857.76346604215 3.0 36.0 211491.75330396474 194850.585660883029978.0 224699.7863950498 181805.66321243523182592.86046511628 179414.415730337121998.0 191808.05969498912 6.0 185601.24938271602 203114.2504640024 2.0 201051.3968871595 178193.4967320261 1.0 170822.7626262626 203633.455628685 178193.4967320261 6.0
4 180398.05693069307 1280.0 184788.65617433414 1.0 252389.9995098039 178193.4967320261 178193.4967320261 0.0 222366.88205128204 5.0 120.0 0.0 178218.27472527474 1280.0 0.0 1992.0 263.0 161376.63366336632 0.0 0.0 187920.61064425771176671.8111111111 1.0 144.0 0.0 167128.41844919784 0.0 1280.0 2.0 2010.0 171302.3622047244 206633.03141361254184063.06872037915 0.0 184861.0283687943 1992.0 175531.83179723503 171401.71038251367 0.0 228065.58659034083 0.0 187300.52567237162 43.0 177919.81360946747 0.0 169568.25527903467 181115.23 178193.4967320261 0.0 1017.0 178405.7096069869 201271.56721053383 181573.27604166663 178193.4967320261 211880.81318681315 506.0 179857.76346604215 2.0 82.0 211491.75330396474 194850.585660883025005.0 169309.44117647054 183943.1995098039 182592.86046511628 179414.415730337121992.0 288359.0245098039 5.0 185601.24938271602 157482.0 2.0 201051.3968871595 178193.4967320261 0.0 170822.7626262626 170914.57205240175 178193.4967320261 8.0
5 180398.05693069307 763.0 184788.65617433414 1.0 175715.7828162291 205118.42900418595 178193.4967320261 0.0 222366.88205128204 7.0 60.0 0.0 178218.27472527474 1655.0 0.0 1994.0 0.0 161376.63366336632 1.0 892.0 187920.61064425771176671.8111111111 4.0 0.0 0.0 167128.41844919784 0.0 763.0 2.0 2010.0 171302.3622047244 206633.03141361254184063.06872037915 0.0 184861.0283687943 1993.0 175531.83179723503 171401.71038251367 0.0 143747.87889273354 0.0 187300.52567237162 75.0 165751.57330498463 157.0 169568.25527903467 181115.23 178193.4967320261 0.0 763.0 178405.7096069869 223156.8495098039 181573.27604166663 178193.4967320261 140285.62820512822 440.0 179857.76346604215 3.0 84.0 158961.70308123247 194850.5856608830210000.0 168970.1659826721 181805.66321243523182592.86046511628 179414.415730337121993.0 191808.05969498912 5.0 185601.24938271602 157482.0 2.0 201051.3968871595 178193.4967320261 1.0 170822.7626262626 203633.455628685 178193.4967320261 6.0
6 179370.36597321855 1168.0 184788.65617433414 1.0 175715.7828162291 178193.4967320261 178193.4967320261 0.0 222366.88205128204 6.0 20.0 0.0 178218.27472527474 1187.0 1.0 2007.0 935.0 161376.63366336632 0.0 0.0 187920.61064425771176671.8111111111 3.0 0.0 0.0 167128.41844919784 0.0 1187.0 2.0 2010.0 171302.3622047244 206633.03141361254184063.06872037915 0.0 184861.0283687943 1992.0 175531.83179723503 171401.71038251367 0.0 143747.87889273354 0.0 187300.52567237162 68.58035714285714 177919.81360946747 483.0 169568.25527903467 181115.23 181956.919246646 500.0 233.0 178405.7096069869 223156.8495098039 181573.27604166663 178193.4967320261 140285.62820512822 420.0 179857.76346604215 3.0 21.0 211491.75330396474 194850.585660883027980.0 169309.44117647054 181805.66321243523182592.86046511628 179414.415730337121992.0 191808.05969498912 7.0 185601.24938271602 157482.0 2.0 201051.3968871595 178193.4967320261 0.0 170822.7626262626 170914.57205240175 163465.69117647054 6.0
7 180398.05693069307 789.0 184788.65617433414 1.0 175715.7828162291 219907.18575980392 178193.4967320261 0.0 222366.88205128204 7.0 60.0 0.0 178218.27472527474 1465.0 0.0 1998.0 0.0 161376.63366336632 1.0 676.0 187920.61064425771176671.8111111111 5.0 0.0 0.0 206602.9363057325 0.0 789.0 2.0 2010.0 171302.3622047244 206633.03141361254184063.06872037915 0.0 184861.0283687943 1998.0 175531.83179723503 171401.71038251367 0.0 143747.87889273354 0.0 187300.52567237162 63.0 177919.81360946747 0.0 209302.39072847684 181115.23 178193.4967320261 0.0 789.0 178405.7096069869 223156.8495098039 181573.27604166663 178193.4967320261 140285.62820512822 393.0 179857.76346604215 3.0 75.0 158961.70308123247 194850.585660883028402.0 168970.1659826721 181805.66321243523182592.86046511628 179414.415730337121998.0 191808.05969498912 5.0 185601.24938271602 157482.0 2.0 201051.3968871595 178193.4967320261 1.0 170822.7626262626 203633.455628685 178193.4967320261 6.0
8 180398.05693069307 1300.0 184788.65617433414 1.0 175715.7828162291 133191.52450980392 178193.4967320261 0.0 222366.88205128204 5.0 20.0 0.0 178218.27472527474 1341.0 1.0 1990.0 637.0 252970.21398348815 1.0 0.0 187920.61064425771176671.8111111111 2.0 0.0 0.0 167128.41844919784 0.0 1341.0 1.0 2010.0 171302.3622047244 206633.03141361254184063.06872037915 0.0 184861.0283687943 1990.0 175531.83179723503 171401.71038251367 0.0 143747.87889273354 0.0 187300.52567237162 85.0 177919.81360946747 192.0 169568.25527903467 181115.23 178193.4967320261 0.0 663.0 178405.7096069869 143948.79679144386 181573.27604166663 178193.4967320261 211880.81318681315 506.0 179857.76346604215 2.0 0.0 158961.70308123247 163981.4191419142 10176.0 224699.7863950498 181805.66321243523182592.86046511628 179414.415730337121990.0 191808.05969498912 5.0 185601.24938271602 157482.0 2.0 201051.3968871595 178193.4967320261 1.0 170822.7626262626 170914.57205240175 178193.4967320261 7.0
9 180398.05693069307 882.0 184788.65617433414 1.0 175715.7828162291 178193.4967320261 178193.4967320261 78.0 148549.72906403942 4.0 20.0 0.0 178218.27472527474 882.0 1.0 1970.0 804.0 161376.63366336632 0.0 0.0 187920.61064425771176671.8111111111 4.0 0.0 0.0 173812.54638480392 0.0 882.0 1.0 2010.0 171302.3622047244 138313.57142857142184063.06872037915 0.0 184861.0283687943 1970.0 175531.83179723503 171401.71038251367 0.0 143747.87889273354 0.0 187300.52567237162 70.0 165751.57330498463 240.0 163573.83733031675 181115.23 151206.9049445865 0.0 0.0 178405.7096069869 223156.8495098039 181573.27604166663 178193.4967320261 140285.62820512822 525.0 179857.76346604215 2.0 0.0 149413.2797336845 163981.4191419142 8400.0 169309.44117647054 181805.66321243523167901.0383986928 179414.415730337121970.0 152080.32258672698 5.0 185601.24938271602 157482.0 2.0 201051.3968871595 178193.4967320261 0.0 170822.7626262626 170914.57205240175 178193.4967320261 4.0
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print('Imputed and encoded numeric training data:')\n", "train[encoded_nums].describe() #79 numeric columns w/ no missing\n", "print('--------------------------------------------------------------------------------')\n", "print('Imputed and encoded numeric validation data:')\n", "valid[encoded_nums].describe() #79 numeric columns w/ no missing\n", "print('--------------------------------------------------------------------------------')\n", "print('Imputed and encoded numeric test data:')\n", "test[encoded_nums].describe() #79 numeric columns w/ no missing" ] }, { "cell_type": "code", "execution_count": 133, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Neighborhood Neighborhood_Tencode
NAmes 152080
NAmes 152080
Gilbert 191808
Gilbert 191808
StoneBr 288359
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "{'Crawfor': 216008.84593837534, 'NAmes': 152080.32258672698, 'BrkSide': 129965.77450980392, 'ClearCr': 207949.02450980392, nan: 178193.49673202613, 'NridgHt': 284073.1545098039, 'Veenker': 243734.02450980392, 'IDOTRR': 112866.71681749621, 'NWAmes': 184610.14950980392, 'Mitchel': 169316.52450980392, 'BrDale': 116064.02450980392, 'MeadowV': 113131.52450980392, 'Sawyer': 143162.40700980392, 'Blmngtn': 210845.6545098039, 'Edwards': 126241.13989441929, 'NPkVill': 147641.52450980392, 'CollgCr': 190019.77971813726, 'Timber': 260109.74673202613, 'Somerst': 227656.9671023965, 'SWISU': 156269.02450980392, 'SawyerW': 189097.7776348039, 'StoneBr': 288359.0245098039, 'OldTown': 139863.03613771088, 'Gilbert': 191808.0596949891, 'NoRidge': 273948.2552790347}\n" ] } ], "source": [ "# Check Neighborhood_Tencode\n", "\n", "print(test[0:5, ['Neighborhood', 'Neighborhood_Tencode']])\n", "_, _ = target_encoder(valid, test, 'Neighborhood', 'SalePrice', test=True)\n", "del _\n", "\n", "# NAmes 152080\n", "# NAmes 152080\n", "# Gilbert 191808\n", "# Gilbert 191808\n", "# StoneBr 288359" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Create combination features" ] }, { "cell_type": "code", "execution_count": 134, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "def feature_combiner(training_frame, test_frame, nums):\n", " \n", " \"\"\" Combines numeric features using simple arithmatic operations.\n", " \n", " :param training_frame: Training frame from which to generate features and onto which generated \n", " feeatures will be cbound.\n", " :param test_frame: Test frame from which to generate features and onto which generated \n", " feeatures will be cbound.\n", " :param nums: List of original numeric features from which to generate combined features.\n", " \n", " \"\"\"\n", "\n", " total = len(nums)\n", " \n", " # convert to pandas\n", " train_df = training_frame.as_data_frame()\n", " test_df = test_frame.as_data_frame()\n", " \n", " for i, col_i in enumerate(nums):\n", " \n", " print('Combining: ' + col_i + ' (' + str(i+1) + '/' + str(total) + ') ...') \n", " \n", " for j, col_j in enumerate(nums):\n", " \n", " # don't repeat (i*j = j*i)\n", " if i < j:\n", " \n", " # convert to pandas\n", " col_i_train_df = train_df[col_i]\n", " col_j_train_df = train_df[col_j]\n", " col_i_test_df = test_df[col_i]\n", " col_j_test_df = test_df[col_j] \n", "\n", " # multiply, convert back to h2o\n", " train_df[str(col_i + '|' + col_j)] = col_i_train_df.values*col_j_train_df.values\n", " test_df[str(col_i + '|' + col_j)] = col_i_test_df.values*col_j_test_df.values\n", " \n", " print('Done.')\n", " \n", " # convert back to h2o\n", " \n", " print('Converting to H2OFrame ...')\n", " \n", " training_frame = h2o.H2OFrame(train_df)\n", " training_frame.columns = list(train_df)\n", " test_frame = h2o.H2OFrame(test_df)\n", " test_frame.columns = list(test_df)\n", " \n", " print('Done.')\n", " print()\n", " \n", " # conserve memory \n", " del train_df\n", " del test_df \n", " \n", " return training_frame, test_frame\n" ] }, { "cell_type": "code", "execution_count": 135, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Combining: ExterCond_Tencode (1/79) ...\n", "Combining: TotalBsmtSF (2/79) ...\n", "Combining: Electrical_Tencode (3/79) ...\n", "Combining: KitchenAbvGr (4/79) ...\n", "Combining: LandContour_Tencode (5/79) ...\n", "Combining: FireplaceQu_Tencode (6/79) ...\n", "Combining: Alley_Tencode (7/79) ...\n", "Combining: BsmtFinSF2 (8/79) ...\n", "Combining: Foundation_Tencode (9/79) ...\n", "Combining: TotRmsAbvGrd (10/79) ...\n", "Combining: MSSubClass (11/79) ...\n", "Combining: MasVnrArea (12/79) ...\n", "Combining: Condition2_Tencode (13/79) ...\n", "Combining: GrLivArea (14/79) ...\n", "Combining: BsmtFullBath (15/79) ...\n", "Combining: YearRemodAdd (16/79) ...\n", "Combining: BsmtFinSF1 (17/79) ...\n", "Combining: BsmtExposure_Tencode (18/79) ...\n", "Combining: Fireplaces (19/79) ...\n", "Combining: 2ndFlrSF (20/79) ...\n", "Combining: MSZoning_Tencode (21/79) ...\n", "Combining: RoofMatl_Tencode (22/79) ...\n", "Combining: MoSold (23/79) ...\n", "Combining: ScreenPorch (24/79) ...\n", "Combining: PoolArea (25/79) ...\n", "Combining: Exterior1st_Tencode (26/79) ...\n", "Combining: 3SsnPorch (27/79) ...\n", "Combining: 1stFlrSF (28/79) ...\n", "Combining: FullBath (29/79) ...\n", "Combining: YrSold (30/79) ...\n", "Combining: SaleCondition_Tencode (31/79) ...\n", "Combining: BsmtQual_Tencode (32/79) ...\n", "Combining: PavedDrive_Tencode (33/79) ...\n", "Combining: BsmtHalfBath (34/79) ...\n", "Combining: CentralAir_Tencode (35/79) ...\n", "Combining: GarageYrBlt (36/79) ...\n", "Combining: LandSlope_Tencode (37/79) ...\n", "Combining: RoofStyle_Tencode (38/79) ...\n", "Combining: EnclosedPorch (39/79) ...\n", "Combining: ExterQual_Tencode (40/79) ...\n", "Combining: LowQualFinSF (41/79) ...\n", "Combining: GarageCond_Tencode (42/79) ...\n", "Combining: LotFrontage (43/79) ...\n", "Combining: LotConfig_Tencode (44/79) ...\n", "Combining: WoodDeckSF (45/79) ...\n", "Combining: Exterior2nd_Tencode (46/79) ...\n", "Combining: BsmtCond_Tencode (47/79) ...\n", "Combining: Fence_Tencode (48/79) ...\n", "Combining: MiscVal (49/79) ...\n", "Combining: BsmtUnfSF (50/79) ...\n", "Combining: Street_Tencode (51/79) ...\n", "Combining: GarageFinish_Tencode (52/79) ...\n", "Combining: Condition1_Tencode (53/79) ...\n", "Combining: PoolQC_Tencode (54/79) ...\n", "Combining: KitchenQual_Tencode (55/79) ...\n", "Combining: GarageArea (56/79) ...\n", "Combining: Functional_Tencode (57/79) ...\n", "Combining: BedroomAbvGr (58/79) ...\n", "Combining: OpenPorchSF (59/79) ...\n", "Combining: HeatingQC_Tencode (60/79) ...\n", "Combining: LotShape_Tencode (61/79) ...\n", "Combining: LotArea (62/79) ...\n", "Combining: BsmtFinType1_Tencode (63/79) ...\n", "Combining: BldgType_Tencode (64/79) ...\n", "Combining: BsmtFinType2_Tencode (65/79) ...\n", "Combining: Heating_Tencode (66/79) ...\n", "Combining: YearBuilt (67/79) ...\n", "Combining: Neighborhood_Tencode (68/79) ...\n", "Combining: OverallCond (69/79) ...\n", "Combining: GarageQual_Tencode (70/79) ...\n", "Combining: MasVnrType_Tencode (71/79) ...\n", "Combining: GarageCars (72/79) ...\n", "Combining: GarageType_Tencode (73/79) ...\n", "Combining: Utilities_Tencode (74/79) ...\n", "Combining: HalfBath (75/79) ...\n", "Combining: SaleType_Tencode (76/79) ...\n", "Combining: HouseStyle_Tencode (77/79) ...\n", "Combining: MiscFeature_Tencode (78/79) ...\n", "Combining: OverallQual (79/79) ...\n", "Done.\n", "Converting to H2OFrame ...\n", "Done.\n", "\n", "Combining: ExterCond_Tencode (1/79) ...\n", "Combining: TotalBsmtSF (2/79) ...\n", "Combining: Electrical_Tencode (3/79) ...\n", "Combining: KitchenAbvGr (4/79) ...\n", "Combining: LandContour_Tencode (5/79) ...\n", "Combining: FireplaceQu_Tencode (6/79) ...\n", "Combining: Alley_Tencode (7/79) ...\n", "Combining: BsmtFinSF2 (8/79) ...\n", "Combining: Foundation_Tencode (9/79) ...\n", "Combining: TotRmsAbvGrd (10/79) ...\n", "Combining: MSSubClass (11/79) ...\n", "Combining: MasVnrArea (12/79) ...\n", "Combining: Condition2_Tencode (13/79) ...\n", "Combining: GrLivArea (14/79) ...\n", "Combining: BsmtFullBath (15/79) ...\n", "Combining: YearRemodAdd (16/79) ...\n", "Combining: BsmtFinSF1 (17/79) ...\n", "Combining: BsmtExposure_Tencode (18/79) ...\n", "Combining: Fireplaces (19/79) ...\n", "Combining: 2ndFlrSF (20/79) ...\n", "Combining: MSZoning_Tencode (21/79) ...\n", "Combining: RoofMatl_Tencode (22/79) ...\n", "Combining: MoSold (23/79) ...\n", "Combining: ScreenPorch (24/79) ...\n", "Combining: PoolArea (25/79) ...\n", "Combining: Exterior1st_Tencode (26/79) ...\n", "Combining: 3SsnPorch (27/79) ...\n", "Combining: 1stFlrSF (28/79) ...\n", "Combining: FullBath (29/79) ...\n", "Combining: YrSold (30/79) ...\n", "Combining: SaleCondition_Tencode (31/79) ...\n", "Combining: BsmtQual_Tencode (32/79) ...\n", "Combining: PavedDrive_Tencode (33/79) ...\n", "Combining: BsmtHalfBath (34/79) ...\n", "Combining: CentralAir_Tencode (35/79) ...\n", "Combining: GarageYrBlt (36/79) ...\n", "Combining: LandSlope_Tencode (37/79) ...\n", "Combining: RoofStyle_Tencode (38/79) ...\n", "Combining: EnclosedPorch (39/79) ...\n", "Combining: ExterQual_Tencode (40/79) ...\n", "Combining: LowQualFinSF (41/79) ...\n", "Combining: GarageCond_Tencode (42/79) ...\n", "Combining: LotFrontage (43/79) ...\n", "Combining: LotConfig_Tencode (44/79) ...\n", "Combining: WoodDeckSF (45/79) ...\n", "Combining: Exterior2nd_Tencode (46/79) ...\n", "Combining: BsmtCond_Tencode (47/79) ...\n", "Combining: Fence_Tencode (48/79) ...\n", "Combining: MiscVal (49/79) ...\n", "Combining: BsmtUnfSF (50/79) ...\n", "Combining: Street_Tencode (51/79) ...\n", "Combining: GarageFinish_Tencode (52/79) ...\n", "Combining: Condition1_Tencode (53/79) ...\n", "Combining: PoolQC_Tencode (54/79) ...\n", "Combining: KitchenQual_Tencode (55/79) ...\n", "Combining: GarageArea (56/79) ...\n", "Combining: Functional_Tencode (57/79) ...\n", "Combining: BedroomAbvGr (58/79) ...\n", "Combining: OpenPorchSF (59/79) ...\n", "Combining: HeatingQC_Tencode (60/79) ...\n", "Combining: LotShape_Tencode (61/79) ...\n", "Combining: LotArea (62/79) ...\n", "Combining: BsmtFinType1_Tencode (63/79) ...\n", "Combining: BldgType_Tencode (64/79) ...\n", "Combining: BsmtFinType2_Tencode (65/79) ...\n", "Combining: Heating_Tencode (66/79) ...\n", "Combining: YearBuilt (67/79) ...\n", "Combining: Neighborhood_Tencode (68/79) ...\n", "Combining: OverallCond (69/79) ...\n", "Combining: GarageQual_Tencode (70/79) ...\n", "Combining: MasVnrType_Tencode (71/79) ...\n", "Combining: GarageCars (72/79) ...\n", "Combining: GarageType_Tencode (73/79) ...\n", "Combining: Utilities_Tencode (74/79) ...\n", "Combining: HalfBath (75/79) ...\n", "Combining: SaleType_Tencode (76/79) ...\n", "Combining: HouseStyle_Tencode (77/79) ...\n", "Combining: MiscFeature_Tencode (78/79) ...\n", "Combining: OverallQual (79/79) ...\n", "Done.\n", "Converting to H2OFrame ...\n", "Done.\n", "\n" ] } ], "source": [ "train, _ = feature_combiner(train, test, encoded_nums)\n", "valid, test = feature_combiner(valid, test, encoded_nums)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "#### Redefine numerics and explore" ] }, { "cell_type": "code", "execution_count": 136, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Numeric = ['FullBath|OverallQual', 'Neighborhood_Tencode|HalfBath', 'MasVnrArea|GarageArea', 'TotRmsAbvGrd|ExterQual_Tencode', 'BsmtFullBath|Exterior1st_Tencode', 'PoolArea|HouseStyle_Tencode', 'MSSubClass|GarageArea', 'BsmtFullBath|Neighborhood_Tencode', 'ExterCond_Tencode|GarageCars', 'BsmtFinSF2|LandSlope_Tencode', 'TotalBsmtSF|GarageCars', 'BsmtFullBath|Fence_Tencode', 'TotalBsmtSF|YearBuilt', 'Condition2_Tencode|GarageQual_Tencode', 'ScreenPorch|BedroomAbvGr', 'ExterQual_Tencode|GarageType_Tencode', 'MasVnrArea|PoolArea', 'Fireplaces|BedroomAbvGr', 'Foundation_Tencode|GarageYrBlt', 'GarageFinish_Tencode|BedroomAbvGr', 'BsmtHalfBath|BsmtFinType1_Tencode', 'ExterCond_Tencode|BsmtFinSF2', 'ExterCond_Tencode|HouseStyle_Tencode', 'BsmtFullBath|RoofMatl_Tencode', 'MoSold|PoolArea', 'BsmtExposure_Tencode|RoofMatl_Tencode', 'MSSubClass|MasVnrType_Tencode', 'MSZoning_Tencode', 'Condition2_Tencode|SaleCondition_Tencode', 'Alley_Tencode|YearBuilt', 'PoolArea|Fence_Tencode', 'CentralAir_Tencode|OverallQual', 'YrSold|Utilities_Tencode', 'SaleCondition_Tencode|BedroomAbvGr', 'HeatingQC_Tencode|LotArea', 'KitchenQual_Tencode|GarageType_Tencode', 'MSSubClass|YearRemodAdd', 'FireplaceQu_Tencode|HeatingQC_Tencode', 'GarageCond_Tencode|LotFrontage', 'BsmtExposure_Tencode|CentralAir_Tencode', 'FullBath|OverallCond', 'RoofMatl_Tencode|MiscFeature_Tencode', 'Fireplaces|BsmtQual_Tencode', 'Functional_Tencode|BldgType_Tencode', 'FireplaceQu_Tencode|GarageType_Tencode', 'Exterior1st_Tencode|1stFlrSF', 'BsmtFinSF2|GarageYrBlt', 'MiscFeature_Tencode|OverallQual', 'YearRemodAdd|BsmtCond_Tencode', 'KitchenAbvGr|BsmtFullBath', 'Street_Tencode|HalfBath', 'BsmtUnfSF|Street_Tencode', 'Fireplaces|RoofMatl_Tencode', 'BsmtFinSF2|HalfBath', 'MasVnrArea|2ndFlrSF', 'KitchenQual_Tencode|Heating_Tencode', 'SaleCondition_Tencode|KitchenQual_Tencode', 'TotalBsmtSF|Condition2_Tencode', 'BsmtFinSF2|MSSubClass', 'BsmtQual_Tencode|GarageType_Tencode', 'FullBath|CentralAir_Tencode', 'GarageType_Tencode|OverallQual', 'MoSold|1stFlrSF', 'Alley_Tencode|3SsnPorch', 'Electrical_Tencode|Foundation_Tencode', 'KitchenAbvGr|KitchenQual_Tencode', 'BsmtFullBath|GarageQual_Tencode', 'MSSubClass|PoolArea', 'LandSlope_Tencode|Street_Tencode', 'BsmtFinSF1|Utilities_Tencode', 'BsmtFinSF1|LotShape_Tencode', 'BsmtFinSF2|LotArea', 'HeatingQC_Tencode', 'MSSubClass|ExterQual_Tencode', 'TotalBsmtSF|PavedDrive_Tencode', 'BldgType_Tencode|BsmtFinType2_Tencode', 'RoofMatl_Tencode|RoofStyle_Tencode', 'BsmtCond_Tencode|Fence_Tencode', 'MasVnrArea|YearBuilt', 'LotConfig_Tencode|YearBuilt', 'BsmtFullBath|GarageYrBlt', 'Exterior1st_Tencode|SaleCondition_Tencode', 'LandContour_Tencode|RoofMatl_Tencode', 'Electrical_Tencode|MSSubClass', 'BsmtFinSF2|2ndFlrSF', 'BsmtExposure_Tencode|Fence_Tencode', 'SaleCondition_Tencode|HalfBath', 'GarageArea|BsmtFinType1_Tencode', 'TotalBsmtSF|YearRemodAdd', 'MSZoning_Tencode|YearBuilt', 'BsmtFinSF1|GarageCond_Tencode', 'ExterCond_Tencode|OverallCond', 'YearRemodAdd|BsmtHalfBath', 'RoofStyle_Tencode|BsmtFinType1_Tencode', 'BsmtFinType1_Tencode|HalfBath', 'Condition2_Tencode|CentralAir_Tencode', 'YearRemodAdd|LotArea', 'TotRmsAbvGrd|LandSlope_Tencode', 'BsmtFinSF2', 'TotalBsmtSF|MasVnrArea', 'MoSold|LowQualFinSF', 'FireplaceQu_Tencode|MSSubClass', 'Exterior1st_Tencode|KitchenQual_Tencode', 'BsmtUnfSF|HeatingQC_Tencode', 'BsmtFinSF2|FullBath', 'BsmtFullBath|BsmtFinType1_Tencode', '1stFlrSF|GarageCond_Tencode', 'GarageYrBlt|BldgType_Tencode', 'Foundation_Tencode|Functional_Tencode', 'ScreenPorch|LotFrontage', 'LowQualFinSF|Heating_Tencode', 'ExterCond_Tencode|TotalBsmtSF', 'CentralAir_Tencode|LotShape_Tencode', 'ExterCond_Tencode|Condition1_Tencode', 'BedroomAbvGr|Neighborhood_Tencode', '2ndFlrSF|ExterQual_Tencode', 'GarageCars|Utilities_Tencode', 'Exterior2nd_Tencode|MasVnrType_Tencode', 'BsmtFinSF1|FullBath', 'Condition1_Tencode|GarageArea', 'KitchenQual_Tencode|YearBuilt', 'ScreenPorch|KitchenQual_Tencode', 'Electrical_Tencode|HalfBath', 'Foundation_Tencode|LowQualFinSF', 'YrSold|Street_Tencode', 'GarageYrBlt|GarageCars', 'TotRmsAbvGrd|GarageCond_Tencode', '1stFlrSF|Neighborhood_Tencode', 'FireplaceQu_Tencode|PoolQC_Tencode', '1stFlrSF|GarageArea', 'BsmtFinType2_Tencode|MasVnrType_Tencode', 'BsmtCond_Tencode|BsmtFinType1_Tencode', 'GarageFinish_Tencode|Functional_Tencode', 'BsmtFinType1_Tencode|OverallCond', 'Exterior2nd_Tencode|MiscVal', 'BsmtFullBath|Heating_Tencode', 'ExterQual_Tencode', 'Alley_Tencode|Foundation_Tencode', 'GrLivArea|FullBath', 'Alley_Tencode|LotShape_Tencode', 'GrLivArea|Exterior1st_Tencode', 'MiscVal|GarageQual_Tencode', 'LotConfig_Tencode|LotArea', 'Foundation_Tencode|MasVnrType_Tencode', 'GrLivArea|BsmtHalfBath', 'MoSold|Condition1_Tencode', 'MasVnrArea|BsmtHalfBath', 'BsmtUnfSF', 'Electrical_Tencode|LandContour_Tencode', 'MSZoning_Tencode|GarageType_Tencode', 'BsmtExposure_Tencode|LandSlope_Tencode', 'Alley_Tencode|YrSold', 'LotConfig_Tencode|MasVnrType_Tencode', 'GarageArea|OverallCond', 'BsmtCond_Tencode|HouseStyle_Tencode', 'BsmtExposure_Tencode|PavedDrive_Tencode', 'TotRmsAbvGrd|Heating_Tencode', '1stFlrSF|Condition1_Tencode', 'Neighborhood_Tencode|GarageCars', 'MSSubClass|3SsnPorch', 'SaleCondition_Tencode|MasVnrType_Tencode', 'SaleCondition_Tencode|BldgType_Tencode', 'RoofStyle_Tencode|GarageQual_Tencode', 'MSZoning_Tencode|OverallCond', 'ExterCond_Tencode|OverallQual', 'BsmtHalfBath|HalfBath', 'BsmtFinType1_Tencode', 'GrLivArea|LotFrontage', 'RoofStyle_Tencode|LotConfig_Tencode', 'CentralAir_Tencode|KitchenQual_Tencode', 'SaleType_Tencode|OverallQual', 'TotalBsmtSF|HalfBath', 'LotFrontage|GarageType_Tencode', 'FireplaceQu_Tencode|SaleCondition_Tencode', 'Alley_Tencode|LowQualFinSF', 'WoodDeckSF|Heating_Tencode', 'Exterior1st_Tencode|GarageArea', 'BsmtHalfBath|EnclosedPorch', 'ScreenPorch|HeatingQC_Tencode', 'Foundation_Tencode|TotRmsAbvGrd', 'FireplaceQu_Tencode|BedroomAbvGr', 'Fireplaces|PoolQC_Tencode', 'ScreenPorch|BsmtUnfSF', 'BsmtFinSF2|Condition1_Tencode', 'ExterCond_Tencode', 'ExterCond_Tencode|BsmtUnfSF', 'YearRemodAdd|MiscFeature_Tencode', '1stFlrSF|OverallCond', 'MoSold|BsmtUnfSF', 'GrLivArea|BedroomAbvGr', 'GrLivArea|HouseStyle_Tencode', 'TotRmsAbvGrd|BsmtFullBath', 'BsmtQual_Tencode|HeatingQC_Tencode', 'LowQualFinSF|LotShape_Tencode', 'Fireplaces|Exterior1st_Tencode', 'ExterQual_Tencode|SaleType_Tencode', 'KitchenAbvGr|Heating_Tencode', 'Alley_Tencode|LotFrontage', 'Fireplaces|LotConfig_Tencode', 'Condition1_Tencode|SaleType_Tencode', 'YrSold|OpenPorchSF', 'YearRemodAdd|1stFlrSF', 'Exterior2nd_Tencode|Condition1_Tencode', 'BsmtFinSF2|BldgType_Tencode', 'FireplaceQu_Tencode|RoofStyle_Tencode', 'Foundation_Tencode|GarageCond_Tencode', 'Alley_Tencode|HeatingQC_Tencode', 'FireplaceQu_Tencode|BsmtCond_Tencode', 'LandContour_Tencode|YearRemodAdd', 'Foundation_Tencode|Street_Tencode', 'LowQualFinSF|Fence_Tencode', 'ExterCond_Tencode|FullBath', 'ExterQual_Tencode|GarageCars', 'Alley_Tencode|SaleType_Tencode', '1stFlrSF|GarageType_Tencode', 'Exterior1st_Tencode|Condition1_Tencode', 'PoolArea', 'EnclosedPorch|Functional_Tencode', 'Fireplaces|SaleType_Tencode', 'ExterQual_Tencode|GarageCond_Tencode', 'ExterQual_Tencode|MiscFeature_Tencode', 'MSZoning_Tencode|PoolQC_Tencode', 'MasVnrArea|Fence_Tencode', 'Electrical_Tencode|LotFrontage', 'LandContour_Tencode|MSSubClass', 'TotalBsmtSF|LotArea', 'ExterCond_Tencode|LotArea', 'KitchenAbvGr|BsmtHalfBath', 'YearRemodAdd|BsmtExposure_Tencode', '2ndFlrSF|MiscVal', 'Electrical_Tencode|1stFlrSF', 'Exterior1st_Tencode|LotFrontage', 'GarageArea|HeatingQC_Tencode', 'Exterior2nd_Tencode|GarageQual_Tencode', 'LandContour_Tencode|ScreenPorch', 'PoolArea|OpenPorchSF', 'ScreenPorch|OverallQual', 'MSZoning_Tencode|BsmtFinType2_Tencode', 'BsmtUnfSF|GarageFinish_Tencode', 'Condition2_Tencode|WoodDeckSF', 'LotConfig_Tencode|Street_Tencode', 'GarageCond_Tencode|Exterior2nd_Tencode', 'BsmtFullBath|OverallCond', 'Fireplaces|YearBuilt', 'PavedDrive_Tencode|Heating_Tencode', '1stFlrSF|Utilities_Tencode', 'RoofMatl_Tencode|3SsnPorch', 'BsmtFinSF1|Condition1_Tencode', 'ExterCond_Tencode|BsmtCond_Tencode', 'ScreenPorch|SaleType_Tencode', 'YearRemodAdd|PavedDrive_Tencode', 'MasVnrArea|BsmtFullBath', 'Electrical_Tencode|BsmtFinSF1', 'YearRemodAdd|BsmtUnfSF', 'Functional_Tencode', 'TotRmsAbvGrd|MasVnrType_Tencode', 'LandSlope_Tencode|MiscFeature_Tencode', 'EnclosedPorch|MiscFeature_Tencode', 'MoSold|GarageArea', 'PavedDrive_Tencode|MasVnrType_Tencode', 'MiscVal|GarageFinish_Tencode', 'Electrical_Tencode|GarageArea', 'Condition1_Tencode|Heating_Tencode', 'BsmtFinSF2|BsmtFinType2_Tencode', 'TotRmsAbvGrd|LotArea', 'LowQualFinSF|BsmtFinType1_Tencode', 'Electrical_Tencode|LotArea', 'Exterior1st_Tencode|GarageCars', 'PavedDrive_Tencode|MiscVal', 'BsmtFinType1_Tencode|MasVnrType_Tencode', 'BsmtFinSF1|LotArea', 'SaleCondition_Tencode|LotArea', 'RoofStyle_Tencode|GarageFinish_Tencode', 'GarageFinish_Tencode|GarageCars', 'BsmtCond_Tencode|Utilities_Tencode', 'MSSubClass|MasVnrArea', 'ExterCond_Tencode|LandSlope_Tencode', 'BsmtExposure_Tencode|HalfBath', 'SaleCondition_Tencode|OverallCond', 'Foundation_Tencode|Fireplaces', 'GarageFinish_Tencode|OverallCond', 'TotalBsmtSF|MasVnrType_Tencode', 'LandContour_Tencode|MoSold', 'BsmtFinSF1|YrSold', 'GarageYrBlt|HalfBath', 'LotFrontage|BedroomAbvGr', 'MSSubClass|HouseStyle_Tencode', 'FireplaceQu_Tencode|PavedDrive_Tencode', 'MSSubClass|BldgType_Tencode', 'Electrical_Tencode|MasVnrArea', 'LandContour_Tencode|Neighborhood_Tencode', 'BsmtFullBath|CentralAir_Tencode', 'Electrical_Tencode', 'Alley_Tencode|Street_Tencode', 'Electrical_Tencode|KitchenQual_Tencode', 'Alley_Tencode|BsmtHalfBath', 'MSZoning_Tencode|MasVnrType_Tencode', 'MSSubClass|KitchenQual_Tencode', 'FireplaceQu_Tencode|HouseStyle_Tencode', 'MSSubClass|Heating_Tencode', '1stFlrSF|BsmtFinType2_Tencode', 'TotRmsAbvGrd|HeatingQC_Tencode', 'ExterCond_Tencode|MiscVal', 'MoSold|LotArea', 'PoolArea|SaleCondition_Tencode', 'PoolArea|BldgType_Tencode', 'RoofMatl_Tencode|MoSold', 'BsmtUnfSF|Utilities_Tencode', 'ExterQual_Tencode|GarageFinish_Tencode', 'PoolArea|GarageYrBlt', 'Condition2_Tencode|PavedDrive_Tencode', 'BsmtUnfSF|Functional_Tencode', 'ExterCond_Tencode|YearRemodAdd', 'LotShape_Tencode|GarageType_Tencode', 'MasVnrArea|OverallQual', 'TotalBsmtSF|GarageCond_Tencode', 'FireplaceQu_Tencode|3SsnPorch', 'Fireplaces|HouseStyle_Tencode', 'PoolArea|Exterior1st_Tencode', 'BsmtFullBath|OverallQual', 'Electrical_Tencode|EnclosedPorch', 'MSZoning_Tencode|LotArea', 'YearRemodAdd|RoofStyle_Tencode', 'Electrical_Tencode|GrLivArea', 'BsmtFinSF1|Functional_Tencode', 'BsmtFullBath|BedroomAbvGr', 'LotArea|Neighborhood_Tencode', 'EnclosedPorch|LotArea', 'MSZoning_Tencode|YrSold', 'LotFrontage|YearBuilt', 'BsmtFullBath|LotArea', 'LowQualFinSF|GarageCond_Tencode', '2ndFlrSF|SaleCondition_Tencode', 'KitchenQual_Tencode|BldgType_Tencode', 'Alley_Tencode|MasVnrArea', 'Foundation_Tencode|LotFrontage', 'GrLivArea|Condition1_Tencode', 'LandContour_Tencode|BedroomAbvGr', 'Heating_Tencode|HalfBath', 'GarageCond_Tencode|WoodDeckSF', 'Alley_Tencode|FullBath', 'CentralAir_Tencode|GarageYrBlt', '1stFlrSF|LandSlope_Tencode', 'BsmtExposure_Tencode|GarageFinish_Tencode', 'Heating_Tencode|Neighborhood_Tencode', 'Condition1_Tencode|KitchenQual_Tencode', 'MasVnrArea|YearRemodAdd', 'FullBath|Street_Tencode', 'RoofMatl_Tencode|GarageType_Tencode', 'LowQualFinSF|LotConfig_Tencode', 'LandContour_Tencode|HeatingQC_Tencode', 'YearRemodAdd|YrSold', 'FireplaceQu_Tencode|YearBuilt', 'BsmtFinSF2|GarageFinish_Tencode', 'PavedDrive_Tencode|Exterior2nd_Tencode', '3SsnPorch|GarageQual_Tencode', 'KitchenAbvGr|YearRemodAdd', 'PoolQC_Tencode|BedroomAbvGr', 'BsmtFinSF1|GarageFinish_Tencode', 'RoofStyle_Tencode|MiscFeature_Tencode', 'WoodDeckSF|LotArea', '3SsnPorch|LotArea', 'Functional_Tencode|BsmtFinType1_Tencode', 'PoolArea|LotShape_Tencode', 'Electrical_Tencode|SaleCondition_Tencode', 'PoolArea|GarageQual_Tencode', 'EnclosedPorch|PoolQC_Tencode', 'PoolArea|BsmtQual_Tencode', 'LotFrontage|BsmtCond_Tencode', '1stFlrSF|Functional_Tencode', 'BsmtFinSF1|MiscFeature_Tencode', 'MSSubClass|Neighborhood_Tencode', 'EnclosedPorch|Fence_Tencode', 'BsmtFinSF2|RoofStyle_Tencode', 'TotalBsmtSF|LotFrontage', 'LowQualFinSF|MiscFeature_Tencode', 'BsmtFinSF2|Exterior2nd_Tencode', 'EnclosedPorch|Exterior2nd_Tencode', 'YearRemodAdd|MasVnrType_Tencode', 'OpenPorchSF|GarageCars', 'Fence_Tencode|OpenPorchSF', 'LowQualFinSF|Exterior2nd_Tencode', 'ExterCond_Tencode|Condition2_Tencode', 'GarageFinish_Tencode', 'Exterior2nd_Tencode|MiscFeature_Tencode', 'BsmtQual_Tencode|LotShape_Tencode', '1stFlrSF|SaleCondition_Tencode', 'MSSubClass|RoofStyle_Tencode', 'Exterior2nd_Tencode|Neighborhood_Tencode', 'MSZoning_Tencode|Utilities_Tencode', 'TotalBsmtSF|OverallCond', 'LotFrontage|PoolQC_Tencode', 'LotConfig_Tencode|OverallQual', 'Heating_Tencode|SaleType_Tencode', 'TotalBsmtSF|2ndFlrSF', 'Condition2_Tencode|YearRemodAdd', 'Foundation_Tencode|RoofMatl_Tencode', 'ScreenPorch|ExterQual_Tencode', 'HeatingQC_Tencode|GarageCars', '2ndFlrSF|Neighborhood_Tencode', 'BsmtFinSF2|Neighborhood_Tencode', 'Exterior2nd_Tencode|YearBuilt', 'MSZoning_Tencode|Exterior2nd_Tencode', 'MoSold|OverallQual', 'Alley_Tencode|MoSold', 'BsmtFinSF1|BsmtExposure_Tencode', 'PoolArea|FullBath', '1stFlrSF|KitchenQual_Tencode', 'RoofMatl_Tencode|GarageYrBlt', 'BsmtFinType2_Tencode|GarageCars', 'Condition2_Tencode|LandSlope_Tencode', 'PavedDrive_Tencode|SaleType_Tencode', 'ExterQual_Tencode|LotArea', 'GrLivArea|2ndFlrSF', 'Foundation_Tencode|GrLivArea', 'GrLivArea|BsmtExposure_Tencode', 'KitchenAbvGr|BsmtUnfSF', 'KitchenAbvGr|GarageType_Tencode', 'LotConfig_Tencode|GarageArea', 'PavedDrive_Tencode|Fence_Tencode', 'Condition2_Tencode|Functional_Tencode', 'ExterCond_Tencode|LotFrontage', 'Electrical_Tencode|RoofStyle_Tencode', '1stFlrSF|OverallQual', 'SaleCondition_Tencode', 'BsmtHalfBath|BldgType_Tencode', 'MSSubClass|2ndFlrSF', 'BsmtFullBath|RoofStyle_Tencode', 'GarageCond_Tencode|GarageCars', 'MSZoning_Tencode|GarageCars', 'MoSold|HouseStyle_Tencode', 'RoofMatl_Tencode|OpenPorchSF', 'Electrical_Tencode|GarageCond_Tencode', 'WoodDeckSF|Utilities_Tencode', 'ExterCond_Tencode|ScreenPorch', 'KitchenQual_Tencode|Neighborhood_Tencode', 'BsmtExposure_Tencode|LowQualFinSF', 'FullBath|Neighborhood_Tencode', 'Foundation_Tencode|BsmtHalfBath', 'Exterior1st_Tencode|LotShape_Tencode', 'MSSubClass|HalfBath', 'BsmtFullBath|BsmtFinSF1', 'BsmtExposure_Tencode|YrSold', 'BsmtFinSF2|MSZoning_Tencode', 'GarageYrBlt|Exterior2nd_Tencode', 'GarageFinish_Tencode|SaleType_Tencode', 'Functional_Tencode|LotShape_Tencode', 'BsmtUnfSF|YearBuilt', 'Fireplaces|ExterQual_Tencode', 'Fence_Tencode|BsmtFinType2_Tencode', 'FireplaceQu_Tencode|Exterior1st_Tencode', 'GarageArea|BldgType_Tencode', 'LowQualFinSF|BldgType_Tencode', 'GarageCars|HouseStyle_Tencode', 'MSZoning_Tencode|LotFrontage', 'RoofStyle_Tencode|BldgType_Tencode', 'LotConfig_Tencode|GarageType_Tencode', 'YearRemodAdd|BsmtFinType1_Tencode', 'Condition2_Tencode|GarageCond_Tencode', 'GarageFinish_Tencode|Neighborhood_Tencode', 'MSSubClass|Functional_Tencode', 'FullBath|KitchenQual_Tencode', 'YearBuilt|MiscFeature_Tencode', 'YrSold|PoolQC_Tencode', 'BsmtExposure_Tencode|Utilities_Tencode', 'BedroomAbvGr|Utilities_Tencode', 'MasVnrType_Tencode', 'MSSubClass|GarageYrBlt', 'FullBath|LotConfig_Tencode', 'LotConfig_Tencode|Heating_Tencode', 'KitchenAbvGr|MiscFeature_Tencode', 'MiscVal|BsmtFinType2_Tencode', 'Electrical_Tencode|MiscVal', 'PavedDrive_Tencode|BsmtFinType1_Tencode', 'GrLivArea|SaleType_Tencode', 'TotalBsmtSF|BsmtCond_Tencode', 'SaleType_Tencode|MiscFeature_Tencode', '2ndFlrSF|YrSold', 'ScreenPorch|OpenPorchSF', 'GrLivArea|CentralAir_Tencode', 'MasVnrArea|CentralAir_Tencode', '2ndFlrSF|Condition1_Tencode', 'LandContour_Tencode|ExterQual_Tencode', '3SsnPorch|BsmtCond_Tencode', 'GrLivArea|BsmtFinType2_Tencode', 'TotalBsmtSF|FireplaceQu_Tencode', 'GrLivArea|Utilities_Tencode', 'MSZoning_Tencode|MiscFeature_Tencode', 'SaleCondition_Tencode|YearBuilt', 'BsmtFullBath|LowQualFinSF', 'EnclosedPorch|BedroomAbvGr', 'ScreenPorch|Functional_Tencode', 'FireplaceQu_Tencode|HalfBath', 'Exterior1st_Tencode|BsmtFinType1_Tencode', 'YearRemodAdd|BldgType_Tencode', 'ExterCond_Tencode|BsmtHalfBath', 'ExterCond_Tencode|CentralAir_Tencode', 'FireplaceQu_Tencode|BsmtFinSF2', 'YrSold|LotFrontage', 'MoSold', 'PoolArea|LotArea', 'Condition2_Tencode|BsmtUnfSF', 'TotalBsmtSF|Electrical_Tencode', 'GarageType_Tencode|HalfBath', 'TotRmsAbvGrd|BsmtUnfSF', 'LandContour_Tencode|MasVnrArea', 'TotRmsAbvGrd|Street_Tencode', 'ExterCond_Tencode|1stFlrSF', 'GrLivArea|YrSold', 'Alley_Tencode|LotArea', 'LandSlope_Tencode|GarageArea', 'BsmtExposure_Tencode|1stFlrSF', 'RoofStyle_Tencode|WoodDeckSF', 'OpenPorchSF|OverallCond', 'MSSubClass|CentralAir_Tencode', 'Electrical_Tencode|BsmtCond_Tencode', 'BsmtQual_Tencode|GarageQual_Tencode', 'BsmtHalfBath|GarageCars', 'PoolArea|Exterior2nd_Tencode', 'Alley_Tencode|Fireplaces', 'LotFrontage|SaleType_Tencode', 'YearBuilt|MasVnrType_Tencode', 'PavedDrive_Tencode|BsmtFinType2_Tencode', 'MasVnrType_Tencode|GarageCars', 'MoSold|Fence_Tencode', 'RoofStyle_Tencode|OverallQual', 'ExterQual_Tencode|Fence_Tencode', 'BsmtHalfBath|GarageFinish_Tencode', 'KitchenAbvGr|BsmtFinSF2', 'TotRmsAbvGrd|GarageFinish_Tencode', 'TotalBsmtSF|PoolArea', 'TotalBsmtSF|LandContour_Tencode', 'ScreenPorch|Neighborhood_Tencode', 'KitchenAbvGr|1stFlrSF', 'BsmtFinType1_Tencode|Utilities_Tencode', 'RoofStyle_Tencode|GarageType_Tencode', 'TotRmsAbvGrd|BsmtFinType2_Tencode', 'Condition2_Tencode|3SsnPorch', 'BsmtHalfBath|HeatingQC_Tencode', 'Alley_Tencode|BsmtUnfSF', 'HeatingQC_Tencode|OverallQual', 'KitchenAbvGr|GrLivArea', 'YearRemodAdd|Exterior1st_Tencode', 'TotalBsmtSF|GarageArea', 'MoSold|HeatingQC_Tencode', 'SaleCondition_Tencode|EnclosedPorch', 'WoodDeckSF|GarageQual_Tencode', '2ndFlrSF|BsmtCond_Tencode', 'EnclosedPorch|HalfBath', 'Condition2_Tencode|Fence_Tencode', 'FireplaceQu_Tencode|BsmtUnfSF', 'WoodDeckSF|GarageType_Tencode', 'MasVnrArea|3SsnPorch', 'GarageArea|Functional_Tencode', 'BsmtQual_Tencode|Functional_Tencode', 'Fence_Tencode|MiscVal', 'BsmtFullBath|MSZoning_Tencode', 'Exterior1st_Tencode|BsmtFinType2_Tencode', 'SaleCondition_Tencode|PavedDrive_Tencode', 'FullBath|Fence_Tencode', 'BsmtHalfBath|GarageYrBlt', 'Electrical_Tencode|Exterior2nd_Tencode', 'KitchenAbvGr|RoofMatl_Tencode', 'CentralAir_Tencode|GarageCars', 'FireplaceQu_Tencode|OverallCond', 'MSZoning_Tencode|EnclosedPorch', 'MoSold|ScreenPorch', 'Exterior1st_Tencode|Utilities_Tencode', 'MSSubClass|SaleType_Tencode', 'BsmtFullBath|Condition1_Tencode', 'BsmtCond_Tencode|MiscVal', 'LotFrontage|Neighborhood_Tencode', 'Condition2_Tencode|Street_Tencode', '1stFlrSF|LotFrontage', 'BsmtFinSF1|BsmtQual_Tencode', 'MasVnrArea|BldgType_Tencode', 'FullBath|SaleCondition_Tencode', 'KitchenAbvGr|BsmtCond_Tencode', 'FireplaceQu_Tencode|GarageCond_Tencode', 'TotalBsmtSF|GarageFinish_Tencode', 'BsmtFinSF1|EnclosedPorch', 'Condition1_Tencode|Neighborhood_Tencode', 'BsmtFinSF1|PoolQC_Tencode', 'GarageYrBlt|Utilities_Tencode', 'ExterCond_Tencode|BsmtQual_Tencode', 'TotRmsAbvGrd', 'Foundation_Tencode|LotShape_Tencode', 'BsmtExposure_Tencode|GarageQual_Tencode', 'GrLivArea|BsmtCond_Tencode', 'MasVnrArea|MiscFeature_Tencode', 'Street_Tencode|MiscFeature_Tencode', 'TotalBsmtSF|MoSold', 'MoSold|BedroomAbvGr', 'GarageCond_Tencode|LotArea', 'TotRmsAbvGrd|YrSold', '3SsnPorch|LowQualFinSF', 'BsmtExposure_Tencode|Street_Tencode', 'ExterQual_Tencode|BsmtUnfSF', 'GrLivArea|GarageArea', 'BsmtUnfSF|SaleType_Tencode', 'Street_Tencode|HouseStyle_Tencode', 'Alley_Tencode|Neighborhood_Tencode', 'BsmtQual_Tencode|GarageYrBlt', 'BsmtFinSF2|LowQualFinSF', 'FireplaceQu_Tencode|LotShape_Tencode', 'GrLivArea|Fireplaces', 'LandContour_Tencode|EnclosedPorch', 'RoofMatl_Tencode', 'Alley_Tencode|RoofMatl_Tencode', 'GrLivArea|RoofStyle_Tencode', 'MSZoning_Tencode|BsmtHalfBath', '2ndFlrSF|RoofMatl_Tencode', 'Condition2_Tencode|LotArea', 'MasVnrArea|Street_Tencode', 'RoofMatl_Tencode|ScreenPorch', 'RoofStyle_Tencode|ExterQual_Tencode', 'BsmtFullBath|MoSold', 'LandContour_Tencode|BsmtHalfBath', '1stFlrSF|BsmtHalfBath', 'MoSold|EnclosedPorch', 'Fireplaces|2ndFlrSF', 'MasVnrArea|ScreenPorch', 'LandSlope_Tencode|LotArea', 'TotRmsAbvGrd|Utilities_Tencode', 'LandContour_Tencode|TotRmsAbvGrd', 'WoodDeckSF|OverallQual', 'MSSubClass|RoofMatl_Tencode', 'MiscVal|GarageArea', 'Alley_Tencode|Exterior2nd_Tencode', 'LandSlope_Tencode|HalfBath', 'BsmtFinSF2|Functional_Tencode', 'Alley_Tencode|GarageType_Tencode', 'OverallCond|OverallQual', 'LandSlope_Tencode|GarageType_Tencode', 'MoSold|RoofStyle_Tencode', 'FullBath|YearBuilt', 'MSSubClass|GarageCars', 'HeatingQC_Tencode|HouseStyle_Tencode', 'Electrical_Tencode|Exterior1st_Tencode', 'CentralAir_Tencode|BsmtCond_Tencode', 'TotalBsmtSF|BsmtHalfBath', 'FireplaceQu_Tencode|Functional_Tencode', 'LandContour_Tencode|LotShape_Tencode', 'CentralAir_Tencode|LotConfig_Tencode', 'KitchenAbvGr|LandContour_Tencode', 'ScreenPorch|RoofStyle_Tencode', '1stFlrSF|Street_Tencode', 'Foundation_Tencode', 'Exterior2nd_Tencode|BldgType_Tencode', 'LotConfig_Tencode|Neighborhood_Tencode', 'OpenPorchSF|GarageType_Tencode', 'Electrical_Tencode|MSZoning_Tencode', 'MasVnrArea|GrLivArea', '1stFlrSF|BsmtUnfSF', 'Condition1_Tencode|BsmtFinType1_Tencode', 'ExterCond_Tencode|BldgType_Tencode', 'SaleCondition_Tencode|Neighborhood_Tencode', 'FireplaceQu_Tencode|BldgType_Tencode', 'PoolArea|YrSold', 'GarageQual_Tencode|HalfBath', 'BsmtQual_Tencode|Exterior2nd_Tencode', 'Fence_Tencode|HouseStyle_Tencode', 'ScreenPorch|PavedDrive_Tencode', 'Fireplaces|BsmtCond_Tencode', 'Exterior2nd_Tencode|LotShape_Tencode', 'BedroomAbvGr|LotShape_Tencode', 'Alley_Tencode|BsmtFinSF2', 'Heating_Tencode', 'KitchenAbvGr|MoSold', 'Electrical_Tencode|Street_Tencode', 'Heating_Tencode|GarageQual_Tencode', 'Condition2_Tencode|ExterQual_Tencode', 'YrSold|LowQualFinSF', 'Condition2_Tencode|GrLivArea', 'GrLivArea|BldgType_Tencode', 'GarageCars', 'CentralAir_Tencode|MiscVal', 'BsmtExposure_Tencode|LotShape_Tencode', 'TotRmsAbvGrd|SaleType_Tencode', 'EnclosedPorch|BsmtFinType1_Tencode', 'BsmtQual_Tencode|MiscVal', 'PoolArea|Functional_Tencode', 'BsmtFinSF1|BsmtFinType2_Tencode', 'ExterCond_Tencode|MasVnrType_Tencode', 'LowQualFinSF|MasVnrType_Tencode', 'Exterior2nd_Tencode|Heating_Tencode', 'LandSlope_Tencode|Fence_Tencode', 'TotalBsmtSF|BsmtQual_Tencode', 'FullBath|LotShape_Tencode', 'LotFrontage|WoodDeckSF', 'GarageArea|LotArea', 'Foundation_Tencode|Condition2_Tencode', 'ExterQual_Tencode|LotShape_Tencode', 'FireplaceQu_Tencode|FullBath', 'LandSlope_Tencode|SaleType_Tencode', 'YearBuilt|Utilities_Tencode', 'ExterQual_Tencode|Utilities_Tencode', 'BldgType_Tencode|MiscFeature_Tencode', 'LotConfig_Tencode|OpenPorchSF', 'MoSold|SaleCondition_Tencode', 'LotFrontage|GarageCars', '2ndFlrSF|GarageCars', 'KitchenAbvGr|Alley_Tencode', 'GrLivArea|LotConfig_Tencode', 'RoofMatl_Tencode|GarageCond_Tencode', 'PoolArea|RoofStyle_Tencode', 'Foundation_Tencode|SaleCondition_Tencode', 'KitchenAbvGr|HalfBath', 'Foundation_Tencode|ExterQual_Tencode', 'Street_Tencode|OverallCond', 'Condition2_Tencode|Condition1_Tencode', 'BsmtFinSF1|LandSlope_Tencode', 'BsmtFinType1_Tencode|GarageQual_Tencode', 'TotalBsmtSF|LandSlope_Tencode', 'PoolArea|BsmtCond_Tencode', 'FireplaceQu_Tencode|Condition2_Tencode', 'EnclosedPorch|Street_Tencode', 'BsmtFinSF1|PoolArea', 'BsmtExposure_Tencode|Exterior1st_Tencode', 'BsmtHalfBath|OverallCond', 'GarageCond_Tencode|Heating_Tencode', 'BsmtQual_Tencode|Fence_Tencode', 'GarageCond_Tencode|GarageType_Tencode', 'TotalBsmtSF|SaleType_Tencode', 'CentralAir_Tencode', 'ExterQual_Tencode|BldgType_Tencode', 'RoofStyle_Tencode|OpenPorchSF', 'Street_Tencode|GarageFinish_Tencode', 'WoodDeckSF|BsmtFinType1_Tencode', 'SaleCondition_Tencode|Street_Tencode', 'EnclosedPorch|MasVnrType_Tencode', 'YearRemodAdd|MiscVal', 'MasVnrArea|HeatingQC_Tencode', 'YrSold|Exterior2nd_Tencode', 'KitchenAbvGr|LandSlope_Tencode', 'BldgType_Tencode|SaleType_Tencode', 'GarageYrBlt|GarageArea', 'OpenPorchSF|GarageQual_Tencode', '1stFlrSF|HalfBath', 'BsmtCond_Tencode|BsmtUnfSF', 'ExterCond_Tencode|PavedDrive_Tencode', 'BsmtQual_Tencode|LotConfig_Tencode', 'GarageFinish_Tencode|BldgType_Tencode', 'RoofStyle_Tencode|Street_Tencode', 'ExterCond_Tencode|KitchenQual_Tencode', 'BsmtQual_Tencode|MiscFeature_Tencode', 'MasVnrArea|YrSold', 'CentralAir_Tencode|YearBuilt', 'FireplaceQu_Tencode|BsmtFinSF1', 'Electrical_Tencode|OpenPorchSF', 'LotConfig_Tencode|BsmtFinType2_Tencode', 'Exterior1st_Tencode|OverallQual', 'KitchenAbvGr|MSZoning_Tencode', 'OpenPorchSF|MasVnrType_Tencode', 'MoSold|MiscFeature_Tencode', 'ExterQual_Tencode|YearBuilt', 'CentralAir_Tencode|EnclosedPorch', 'GarageYrBlt|EnclosedPorch', 'LandContour_Tencode|HalfBath', '2ndFlrSF|HouseStyle_Tencode', 'TotRmsAbvGrd|LotFrontage', 'Foundation_Tencode|MSSubClass', 'Electrical_Tencode|MasVnrType_Tencode', 'BsmtExposure_Tencode|GarageType_Tencode', 'GarageCond_Tencode|BedroomAbvGr', 'LandSlope_Tencode|LotFrontage', 'MoSold|CentralAir_Tencode', 'FireplaceQu_Tencode|LotConfig_Tencode', 'LowQualFinSF|Neighborhood_Tencode', 'TotRmsAbvGrd|OverallCond', 'MasVnrArea|MSZoning_Tencode', 'FullBath|ExterQual_Tencode', 'TotRmsAbvGrd|Fireplaces', 'SaleCondition_Tencode|LotFrontage', '3SsnPorch|MiscFeature_Tencode', 'MoSold|LotConfig_Tencode', 'PoolArea|GarageCars', 'MasVnrArea|PoolQC_Tencode', 'GrLivArea|GarageCond_Tencode', 'CentralAir_Tencode|RoofStyle_Tencode', 'Foundation_Tencode|OpenPorchSF', '2ndFlrSF|ScreenPorch', 'CentralAir_Tencode|BsmtFinType1_Tencode', 'BldgType_Tencode|Neighborhood_Tencode', 'LowQualFinSF|Functional_Tencode', 'Exterior1st_Tencode|BsmtHalfBath', 'Functional_Tencode|GarageType_Tencode', 'GarageFinish_Tencode|LotArea', 'Exterior2nd_Tencode|GarageCars', '2ndFlrSF|CentralAir_Tencode', 'KitchenAbvGr|BldgType_Tencode', 'Exterior1st_Tencode|HalfBath', 'GarageFinish_Tencode|OpenPorchSF', 'GarageFinish_Tencode|YearBuilt', 'LotArea|OverallCond', 'TotalBsmtSF|OverallQual', 'Alley_Tencode|Heating_Tencode', 'YearRemodAdd|OpenPorchSF', 'HeatingQC_Tencode|GarageQual_Tencode', 'BsmtExposure_Tencode|BsmtHalfBath', 'Condition2_Tencode|LotFrontage', 'BsmtFinSF2|CentralAir_Tencode', 'Foundation_Tencode|LotArea', 'TotalBsmtSF|CentralAir_Tencode', 'MasVnrArea|BsmtUnfSF', 'CentralAir_Tencode|LandSlope_Tencode', 'PoolQC_Tencode|GarageQual_Tencode', 'RoofMatl_Tencode|BsmtQual_Tencode', 'Electrical_Tencode|Heating_Tencode', 'BsmtQual_Tencode|RoofStyle_Tencode', 'YrSold|BsmtFinType2_Tencode', 'BsmtHalfBath|HouseStyle_Tencode', 'RoofStyle_Tencode|Exterior2nd_Tencode', 'Condition2_Tencode|PoolArea', 'GrLivArea|Heating_Tencode', 'Fence_Tencode|BldgType_Tencode', 'GrLivArea|GarageQual_Tencode', 'BedroomAbvGr|SaleType_Tencode', 'FireplaceQu_Tencode|BsmtFinType2_Tencode', 'KitchenAbvGr|PavedDrive_Tencode', 'ScreenPorch|GarageYrBlt', 'WoodDeckSF|Functional_Tencode', 'ExterCond_Tencode|GrLivArea', 'PoolArea|MasVnrType_Tencode', 'Foundation_Tencode|PoolQC_Tencode', 'BsmtCond_Tencode|OverallQual', 'BsmtFullBath|LotConfig_Tencode', 'Condition1_Tencode|OverallCond', 'GarageYrBlt|RoofStyle_Tencode', 'FireplaceQu_Tencode|Fence_Tencode', 'Fireplaces|LowQualFinSF', 'MoSold|BsmtQual_Tencode', 'Exterior2nd_Tencode', 'BsmtFullBath|BsmtQual_Tencode', 'Electrical_Tencode|YearBuilt', 'BsmtUnfSF|HalfBath', 'GrLivArea|WoodDeckSF', 'OverallCond|MasVnrType_Tencode', 'ExterCond_Tencode|TotRmsAbvGrd', 'GrLivArea|Neighborhood_Tencode', 'PoolQC_Tencode|Neighborhood_Tencode', 'PavedDrive_Tencode|HalfBath', 'BsmtFullBath|LandSlope_Tencode', 'BsmtExposure_Tencode|GarageArea', 'Functional_Tencode|OpenPorchSF', 'Heating_Tencode|GarageCars', 'Foundation_Tencode|YrSold', 'SaleCondition_Tencode|ExterQual_Tencode', 'BsmtExposure_Tencode|Heating_Tencode', 'YrSold|BsmtUnfSF', 'BsmtHalfBath|GarageQual_Tencode', 'TotalBsmtSF|HeatingQC_Tencode', 'LandContour_Tencode|LowQualFinSF', 'EnclosedPorch|GarageFinish_Tencode', 'Alley_Tencode|ScreenPorch', 'TotRmsAbvGrd|HouseStyle_Tencode', 'BsmtFinSF1|Fireplaces', '3SsnPorch|YrSold', 'OpenPorchSF|Utilities_Tencode', 'MSSubClass|GarageFinish_Tencode', 'BsmtExposure_Tencode|Exterior2nd_Tencode', 'OverallQual', 'LandContour_Tencode|MiscFeature_Tencode', 'Exterior1st_Tencode|MasVnrType_Tencode', 'YearRemodAdd|LandSlope_Tencode', 'FullBath|LowQualFinSF', 'MSZoning_Tencode|MiscVal', 'GarageQual_Tencode|GarageCars', 'TotRmsAbvGrd|RoofStyle_Tencode', 'LandContour_Tencode|MasVnrType_Tencode', 'ScreenPorch', 'KitchenAbvGr|BsmtExposure_Tencode', 'MasVnrType_Tencode|OverallQual', '3SsnPorch|Fence_Tencode', 'GrLivArea|3SsnPorch', 'LotShape_Tencode|LotArea', 'PoolArea|LandSlope_Tencode', 'GarageType_Tencode', 'YearRemodAdd|GarageFinish_Tencode', 'RoofMatl_Tencode|EnclosedPorch', '2ndFlrSF|3SsnPorch', 'RoofMatl_Tencode|LowQualFinSF', 'MiscFeature_Tencode', 'LotConfig_Tencode|HeatingQC_Tencode', 'YearRemodAdd|HeatingQC_Tencode', 'RoofMatl_Tencode|OverallQual', 'KitchenQual_Tencode|SaleType_Tencode', 'GarageYrBlt|MasVnrType_Tencode', 'Electrical_Tencode|HeatingQC_Tencode', 'YearRemodAdd|BedroomAbvGr', 'Fireplaces|GarageType_Tencode', 'GarageCond_Tencode|SaleType_Tencode', '1stFlrSF|BsmtFinType1_Tencode', 'SaleCondition_Tencode|Exterior2nd_Tencode', 'GrLivArea|LowQualFinSF', 'Foundation_Tencode|GarageArea', 'Condition1_Tencode|GarageType_Tencode', 'MasVnrArea|EnclosedPorch', 'Exterior1st_Tencode|PavedDrive_Tencode', 'Exterior1st_Tencode|SaleType_Tencode', 'BsmtUnfSF|MiscFeature_Tencode', 'YearRemodAdd|MoSold', 'LandSlope_Tencode|HeatingQC_Tencode', 'Exterior2nd_Tencode|BsmtFinType1_Tencode', 'Electrical_Tencode|Condition1_Tencode', 'Heating_Tencode|GarageType_Tencode', 'BsmtFinSF2|EnclosedPorch', 'Exterior1st_Tencode|OpenPorchSF', 'MSZoning_Tencode|BsmtFinType1_Tencode', 'TotRmsAbvGrd|MasVnrArea', 'BsmtQual_Tencode|GarageFinish_Tencode', 'GarageType_Tencode|SaleType_Tencode', 'Condition2_Tencode|BsmtCond_Tencode', '2ndFlrSF|MasVnrType_Tencode', 'MoSold|PavedDrive_Tencode', 'WoodDeckSF|Condition1_Tencode', 'Alley_Tencode|OverallQual', '3SsnPorch', 'CentralAir_Tencode|LotFrontage', 'FireplaceQu_Tencode|YearRemodAdd', 'Fireplaces|Fence_Tencode', 'BsmtFullBath|HeatingQC_Tencode', 'RoofStyle_Tencode|SaleType_Tencode', 'PavedDrive_Tencode|PoolQC_Tencode', 'GarageYrBlt|Neighborhood_Tencode', 'LotConfig_Tencode|GarageFinish_Tencode', 'MSSubClass|YearBuilt', 'ExterCond_Tencode|YrSold', 'PavedDrive_Tencode|BedroomAbvGr', 'BsmtFinSF2|Fireplaces', 'LowQualFinSF|OverallCond', 'BsmtFullBath|SaleCondition_Tencode', 'MoSold|GarageType_Tencode', 'YrSold|Fence_Tencode', 'YearRemodAdd|GarageQual_Tencode', '2ndFlrSF|PoolArea', 'ScreenPorch|3SsnPorch', 'LotConfig_Tencode|Condition1_Tencode', 'KitchenAbvGr|ScreenPorch', 'ExterQual_Tencode|HouseStyle_Tencode', '2ndFlrSF|Fence_Tencode', 'Foundation_Tencode|BsmtQual_Tencode', 'YrSold|GarageQual_Tencode', 'MSSubClass|SaleCondition_Tencode', 'PoolArea|CentralAir_Tencode', 'ScreenPorch|GarageCars', 'BsmtCond_Tencode|OpenPorchSF', 'FullBath|LotArea', 'LandSlope_Tencode|YearBuilt', 'Fireplaces|Neighborhood_Tencode', 'Functional_Tencode|BedroomAbvGr', 'Alley_Tencode|BsmtExposure_Tencode', 'FullBath|BldgType_Tencode', 'Street_Tencode|BedroomAbvGr', 'GarageQual_Tencode|GarageType_Tencode', 'Exterior2nd_Tencode|Fence_Tencode', 'Condition1_Tencode|GarageQual_Tencode', '2ndFlrSF|MSZoning_Tencode', 'ScreenPorch|GarageFinish_Tencode', 'BsmtQual_Tencode|OverallCond', 'Fireplaces|MSZoning_Tencode', 'TotRmsAbvGrd|2ndFlrSF', 'Street_Tencode|PoolQC_Tencode', 'Fireplaces|Condition1_Tencode', 'Condition2_Tencode|Neighborhood_Tencode', 'PavedDrive_Tencode|OverallQual', 'Utilities_Tencode', 'TotalBsmtSF|SaleCondition_Tencode', 'BsmtFinSF1|BldgType_Tencode', 'BsmtHalfBath|Condition1_Tencode', 'YrSold|LotArea', 'BsmtFinType1_Tencode|BsmtFinType2_Tencode', 'ExterCond_Tencode|MiscFeature_Tencode', '3SsnPorch|FullBath', 'Functional_Tencode|MasVnrType_Tencode', 'BsmtFinSF1|GarageArea', 'LotFrontage|HouseStyle_Tencode', 'ExterQual_Tencode|BsmtFinType1_Tencode', 'BsmtCond_Tencode|PoolQC_Tencode', 'Foundation_Tencode|GarageQual_Tencode', 'LandContour_Tencode|LotFrontage', 'LowQualFinSF|LotFrontage', 'YearRemodAdd|HouseStyle_Tencode', 'BsmtFullBath|GarageFinish_Tencode', 'LandSlope_Tencode|Heating_Tencode', 'YrSold|MasVnrType_Tencode', 'PavedDrive_Tencode|LotArea', 'BsmtFinSF1|GarageYrBlt', 'ScreenPorch|GarageArea', 'ScreenPorch|Condition1_Tencode', 'Foundation_Tencode|Utilities_Tencode', 'GarageYrBlt|GarageFinish_Tencode', '1stFlrSF|BsmtCond_Tencode', 'Exterior2nd_Tencode|BsmtCond_Tencode', 'BsmtQual_Tencode|BsmtFinType1_Tencode', 'YearRemodAdd|ScreenPorch', 'BsmtExposure_Tencode|MasVnrType_Tencode', 'EnclosedPorch|MiscVal', 'PoolArea|1stFlrSF', 'Condition2_Tencode|OpenPorchSF', 'GarageYrBlt|LandSlope_Tencode', 'MSZoning_Tencode|OpenPorchSF', 'MiscVal|OpenPorchSF', 'HalfBath|MiscFeature_Tencode', 'WoodDeckSF|BedroomAbvGr', 'OverallCond|GarageCars', 'CentralAir_Tencode|ExterQual_Tencode', 'LotConfig_Tencode|BsmtFinType1_Tencode', '3SsnPorch|1stFlrSF', 'BsmtExposure_Tencode|MoSold', 'GrLivArea|RoofMatl_Tencode', 'Fireplaces|GarageYrBlt', 'Exterior2nd_Tencode|HeatingQC_Tencode', 'LowQualFinSF|WoodDeckSF', 'Fireplaces|BsmtFinType1_Tencode', 'Exterior1st_Tencode|BsmtCond_Tencode', 'BsmtFinSF2|Exterior1st_Tencode', 'Exterior1st_Tencode|GarageType_Tencode', 'BsmtFinSF1|GarageCars', 'RoofMatl_Tencode|Neighborhood_Tencode', 'PavedDrive_Tencode|MiscFeature_Tencode', '2ndFlrSF|BsmtFinType2_Tencode', 'BsmtFullBath|GarageCond_Tencode', 'MSSubClass', 'OpenPorchSF|HalfBath', 'BsmtUnfSF|OverallCond', 'FireplaceQu_Tencode|LotArea', 'MoSold|BsmtCond_Tencode', 'PoolQC_Tencode|LotShape_Tencode', 'TotalBsmtSF|GarageType_Tencode', '3SsnPorch|LotFrontage', 'LotConfig_Tencode|GarageQual_Tencode', 'MSSubClass|OverallCond', 'Neighborhood_Tencode|GarageQual_Tencode', 'BedroomAbvGr|Heating_Tencode', 'LotShape_Tencode|SaleType_Tencode', 'Exterior1st_Tencode|Street_Tencode', 'Condition2_Tencode|GarageFinish_Tencode', 'ScreenPorch|MiscFeature_Tencode', 'LotFrontage|HalfBath', 'YearRemodAdd|Exterior2nd_Tencode', 'Fireplaces|PavedDrive_Tencode', 'BsmtCond_Tencode|GarageFinish_Tencode', 'FireplaceQu_Tencode|2ndFlrSF', 'BsmtFullBath|BsmtExposure_Tencode', 'Condition2_Tencode|LotShape_Tencode', 'MoSold|LandSlope_Tencode', 'BsmtFullBath|HouseStyle_Tencode', 'YearRemodAdd|2ndFlrSF', 'BsmtCond_Tencode|Heating_Tencode', '3SsnPorch|Heating_Tencode', 'GrLivArea|OverallQual', 'FireplaceQu_Tencode|MoSold', 'Exterior1st_Tencode|LandSlope_Tencode', 'LotArea|GarageType_Tencode', 'MasVnrArea|Utilities_Tencode', 'BsmtCond_Tencode|GarageCars', 'BsmtHalfBath|BsmtUnfSF', 'EnclosedPorch|BsmtFinType2_Tencode', 'FullBath|Functional_Tencode', 'ExterCond_Tencode|RoofStyle_Tencode', 'PoolQC_Tencode|Heating_Tencode', 'YearBuilt|GarageType_Tencode', 'GarageArea', 'BsmtFullBath|Functional_Tencode', 'LandSlope_Tencode|Condition1_Tencode', 'Fireplaces|WoodDeckSF', 'FullBath|HeatingQC_Tencode', 'PoolQC_Tencode|GarageArea', 'Condition2_Tencode|MSZoning_Tencode', 'OpenPorchSF|OverallQual', 'FireplaceQu_Tencode|CentralAir_Tencode', 'MoSold|BsmtHalfBath', 'TotRmsAbvGrd|OverallQual', 'MasVnrType_Tencode|MiscFeature_Tencode', 'MasVnrArea|BsmtQual_Tencode', 'FireplaceQu_Tencode|MiscFeature_Tencode', 'KitchenAbvGr|EnclosedPorch', 'PoolQC_Tencode|OverallCond', 'ScreenPorch|Utilities_Tencode', 'KitchenQual_Tencode|Functional_Tencode', 'BsmtFinSF1|1stFlrSF', 'WoodDeckSF|KitchenQual_Tencode', 'CentralAir_Tencode|Street_Tencode', 'PoolQC_Tencode|LotArea', 'Condition2_Tencode|PoolQC_Tencode', 'BsmtFinSF1|KitchenQual_Tencode', 'YrSold|KitchenQual_Tencode', '2ndFlrSF|BsmtHalfBath', 'ScreenPorch|WoodDeckSF', 'RoofStyle_Tencode|OverallCond', 'EnclosedPorch|LotConfig_Tencode', 'LotShape_Tencode|YearBuilt', 'BsmtFinSF1|MoSold', 'LotArea|HalfBath', 'LowQualFinSF|HalfBath', 'TotalBsmtSF|BsmtExposure_Tencode', 'Alley_Tencode|SaleCondition_Tencode', 'MasVnrArea|BsmtFinType1_Tencode', 'RoofStyle_Tencode|BsmtUnfSF', 'EnclosedPorch|YearBuilt', 'SaleCondition_Tencode|GarageCond_Tencode', 'PoolQC_Tencode|OverallQual', 'LotFrontage|Condition1_Tencode', 'BsmtUnfSF|GarageQual_Tencode', 'FireplaceQu_Tencode|MiscVal', 'RoofStyle_Tencode|Utilities_Tencode', 'BsmtFinSF2|BsmtQual_Tencode', 'MSZoning_Tencode|HalfBath', 'SaleCondition_Tencode|GarageArea', 'GarageCars|GarageType_Tencode', 'ScreenPorch|LotShape_Tencode', 'YearRemodAdd|Street_Tencode', 'YearRemodAdd|Heating_Tencode', 'Exterior2nd_Tencode|OverallQual', 'LandContour_Tencode|BsmtFullBath', 'Electrical_Tencode|GarageQual_Tencode', 'TotalBsmtSF|Utilities_Tencode', 'Functional_Tencode|OverallCond', '2ndFlrSF|OverallQual', 'Fireplaces|FullBath', 'Electrical_Tencode|Neighborhood_Tencode', 'BsmtQual_Tencode|OverallQual', 'Foundation_Tencode|YearBuilt', 'BedroomAbvGr|GarageCars', '2ndFlrSF|HalfBath', 'RoofMatl_Tencode|BsmtUnfSF', 'BsmtHalfBath|WoodDeckSF', 'BsmtHalfBath|LowQualFinSF', '1stFlrSF|Fence_Tencode', 'GarageCond_Tencode|LotShape_Tencode', 'Alley_Tencode|HalfBath', 'BldgType_Tencode|MasVnrType_Tencode', 'YrSold|MiscFeature_Tencode', 'BsmtQual_Tencode|BsmtUnfSF', 'KitchenAbvGr|OpenPorchSF', 'Condition2_Tencode|HeatingQC_Tencode', 'Functional_Tencode|HeatingQC_Tencode', 'BsmtFinType2_Tencode', 'RoofMatl_Tencode|MiscVal', 'BsmtCond_Tencode|BsmtFinType2_Tencode', 'PoolArea|KitchenQual_Tencode', 'BsmtExposure_Tencode|Fireplaces', 'TotalBsmtSF|BsmtFinType2_Tencode', 'Foundation_Tencode|HouseStyle_Tencode', 'KitchenQual_Tencode|OverallQual', 'GarageFinish_Tencode|HalfBath', 'YearRemodAdd|Fence_Tencode', 'MasVnrType_Tencode|Utilities_Tencode', 'YearRemodAdd|LowQualFinSF', 'MSSubClass|ScreenPorch', 'TotRmsAbvGrd|BsmtFinSF1', 'GrLivArea|EnclosedPorch', '1stFlrSF|GarageQual_Tencode', 'SaleCondition_Tencode|BsmtCond_Tencode', 'BsmtExposure_Tencode|3SsnPorch', 'Alley_Tencode|1stFlrSF', 'MSSubClass|LotArea', 'Electrical_Tencode|BsmtUnfSF', 'Alley_Tencode|BedroomAbvGr', 'Street_Tencode|YearBuilt', 'MasVnrArea|BsmtFinType2_Tencode', 'Condition1_Tencode|Functional_Tencode', 'ExterCond_Tencode|GarageQual_Tencode', 'MoSold|Utilities_Tencode', 'LandContour_Tencode|Foundation_Tencode', 'Fence_Tencode|GarageArea', 'LandSlope_Tencode|ExterQual_Tencode', 'MSZoning_Tencode|Condition1_Tencode', 'Exterior1st_Tencode|GarageYrBlt', 'Alley_Tencode|GarageCond_Tencode', 'LandSlope_Tencode|BsmtUnfSF', 'MSZoning_Tencode|PavedDrive_Tencode', 'ExterCond_Tencode|BsmtFinType2_Tencode', 'RoofMatl_Tencode|GarageQual_Tencode', '2ndFlrSF|YearBuilt', 'Street_Tencode|MasVnrType_Tencode', 'TotRmsAbvGrd|MiscVal', 'GarageYrBlt|ExterQual_Tencode', 'SaleCondition_Tencode|OverallQual', 'KitchenAbvGr|LotShape_Tencode', 'RoofStyle_Tencode|Neighborhood_Tencode', 'RoofMatl_Tencode|BsmtFinType1_Tencode', 'PavedDrive_Tencode|HouseStyle_Tencode', 'TotalBsmtSF|FullBath', 'FireplaceQu_Tencode|SaleType_Tencode', '2ndFlrSF|Exterior1st_Tencode', 'BsmtFullBath|PoolQC_Tencode', 'KitchenQual_Tencode|OverallCond', 'ExterQual_Tencode|LotConfig_Tencode', 'LandContour_Tencode|GarageFinish_Tencode', 'MSSubClass|LotShape_Tencode', '2ndFlrSF|BldgType_Tencode', '3SsnPorch|PavedDrive_Tencode', 'TotRmsAbvGrd|1stFlrSF', 'BsmtFinSF1|HalfBath', 'Alley_Tencode|Condition2_Tencode', 'GarageFinish_Tencode|OverallQual', 'Street_Tencode|OverallQual', 'MiscVal|PoolQC_Tencode', 'LotConfig_Tencode|OverallCond', 'GarageCond_Tencode|LotConfig_Tencode', 'CentralAir_Tencode|BsmtFinType2_Tencode', 'BsmtCond_Tencode', 'Electrical_Tencode|ScreenPorch', 'ExterCond_Tencode|SaleType_Tencode', 'GrLivArea|MSZoning_Tencode', 'Condition2_Tencode|LotConfig_Tencode', 'EnclosedPorch|HeatingQC_Tencode', 'YearRemodAdd|FullBath', 'TotalBsmtSF|Neighborhood_Tencode', 'RoofMatl_Tencode|BsmtFinType2_Tencode', 'Fence_Tencode|YearBuilt', 'GarageCars|OverallQual', 'TotRmsAbvGrd|3SsnPorch', 'BldgType_Tencode|GarageCars', 'LandContour_Tencode|GrLivArea', 'LotFrontage|MiscFeature_Tencode', 'MSSubClass|BsmtCond_Tencode', '3SsnPorch|MasVnrType_Tencode', 'TotalBsmtSF|Exterior1st_Tencode', 'ExterCond_Tencode|Neighborhood_Tencode', '3SsnPorch|Functional_Tencode', 'BsmtFinSF1|OverallCond', 'Neighborhood_Tencode|Utilities_Tencode', 'BedroomAbvGr|OpenPorchSF', 'BsmtFinSF2|YearBuilt', '3SsnPorch|EnclosedPorch', 'Foundation_Tencode|Fence_Tencode', 'TotalBsmtSF|LotShape_Tencode', 'PoolArea|PavedDrive_Tencode', 'PavedDrive_Tencode|CentralAir_Tencode', 'Exterior1st_Tencode|HeatingQC_Tencode', 'BedroomAbvGr|BsmtFinType2_Tencode', 'MoSold|GarageCond_Tencode', 'TotRmsAbvGrd|EnclosedPorch', 'YearRemodAdd|HalfBath', 'Alley_Tencode|RoofStyle_Tencode', 'BsmtExposure_Tencode|PoolQC_Tencode', 'ScreenPorch|Heating_Tencode', 'WoodDeckSF|HeatingQC_Tencode', 'GrLivArea|Street_Tencode', 'BsmtCond_Tencode|BldgType_Tencode', 'LowQualFinSF|GarageQual_Tencode', 'TotRmsAbvGrd|KitchenQual_Tencode', 'MSSubClass|BsmtExposure_Tencode', 'GrLivArea|BsmtQual_Tencode', 'RoofMatl_Tencode|BldgType_Tencode', 'SaleCondition_Tencode|Functional_Tencode', 'LandSlope_Tencode|GarageQual_Tencode', 'MoSold|3SsnPorch', 'Exterior1st_Tencode|BldgType_Tencode', 'MSZoning_Tencode|KitchenQual_Tencode', 'GarageYrBlt|PoolQC_Tencode', 'LotFrontage|GarageQual_Tencode', 'BsmtFinSF2|Fence_Tencode', 'YrSold|BsmtFinType1_Tencode', 'Street_Tencode|Neighborhood_Tencode', 'BsmtExposure_Tencode|YearBuilt', '3SsnPorch|BldgType_Tencode', 'TotalBsmtSF|BsmtFinSF2', 'YrSold|GarageCars', 'Alley_Tencode|MasVnrType_Tencode', 'Fireplaces|HalfBath', 'WoodDeckSF|GarageCars', 'ScreenPorch|EnclosedPorch', '1stFlrSF|HeatingQC_Tencode', '2ndFlrSF|LotConfig_Tencode', 'BsmtUnfSF|OpenPorchSF', 'Exterior1st_Tencode|CentralAir_Tencode', 'MSSubClass|BsmtQual_Tencode', 'ExterCond_Tencode|FireplaceQu_Tencode', 'SaleCondition_Tencode|GarageType_Tencode', 'HeatingQC_Tencode|LotShape_Tencode', 'ExterQual_Tencode|Functional_Tencode', 'BsmtUnfSF|GarageCars', 'BsmtHalfBath|OverallQual', 'BedroomAbvGr|OverallQual', 'SaleCondition_Tencode|MiscVal', 'TotRmsAbvGrd|GarageArea', '2ndFlrSF|Street_Tencode', 'LotArea|BsmtFinType2_Tencode', 'RoofMatl_Tencode|LotConfig_Tencode', 'Exterior2nd_Tencode|HalfBath', 'Foundation_Tencode|Condition1_Tencode', 'KitchenAbvGr|BsmtFinType2_Tencode', 'Street_Tencode|LotArea', 'LowQualFinSF|Condition1_Tencode', 'BsmtFullBath|BldgType_Tencode', 'GrLivArea|MiscFeature_Tencode', 'RoofMatl_Tencode|SaleType_Tencode', 'ScreenPorch|HouseStyle_Tencode', 'WoodDeckSF|Fence_Tencode', 'Foundation_Tencode|PoolArea', 'Alley_Tencode|2ndFlrSF', 'MasVnrArea|ExterQual_Tencode', '2ndFlrSF|BsmtFinType1_Tencode', 'LotConfig_Tencode|BldgType_Tencode', 'LandSlope_Tencode|GarageFinish_Tencode', 'YearRemodAdd|MSZoning_Tencode', 'BsmtFinSF1|ExterQual_Tencode', 'FireplaceQu_Tencode|GarageYrBlt', 'MasVnrArea|LotArea', 'Exterior1st_Tencode|Fence_Tencode', '2ndFlrSF|GarageArea', 'BsmtCond_Tencode|YearBuilt', 'Exterior2nd_Tencode|OverallCond', 'Condition2_Tencode|Exterior2nd_Tencode', 'LandSlope_Tencode|BsmtCond_Tencode', 'MoSold|WoodDeckSF', 'ScreenPorch|GarageType_Tencode', 'Exterior1st_Tencode|MiscFeature_Tencode', 'ScreenPorch|Street_Tencode', 'YearRemodAdd|GarageCars', 'GarageCond_Tencode|PoolQC_Tencode', 'MSZoning_Tencode|Heating_Tencode', 'BsmtCond_Tencode|MasVnrType_Tencode', 'Heating_Tencode|YearBuilt', 'Alley_Tencode|LotConfig_Tencode', 'Exterior1st_Tencode|YearBuilt', 'BsmtFinSF2|MasVnrType_Tencode', 'PoolQC_Tencode|Utilities_Tencode', 'Condition2_Tencode|BsmtFinType1_Tencode', 'KitchenAbvGr|FireplaceQu_Tencode', 'Fence_Tencode|GarageType_Tencode', 'Exterior2nd_Tencode|BedroomAbvGr', 'Alley_Tencode|GarageQual_Tencode', 'LotShape_Tencode|GarageQual_Tencode', 'BsmtHalfBath|BedroomAbvGr', 'LowQualFinSF', 'BsmtFullBath|EnclosedPorch', 'PoolArea|BsmtHalfBath', 'BsmtUnfSF|BsmtFinType1_Tencode', 'BsmtExposure_Tencode|SaleType_Tencode', 'HalfBath', 'ExterCond_Tencode|EnclosedPorch', 'BsmtFullBath|GarageArea', 'YearRemodAdd|Functional_Tencode', 'FullBath', 'KitchenAbvGr|BsmtQual_Tencode', 'FireplaceQu_Tencode|ExterQual_Tencode', 'MasVnrArea|GarageFinish_Tencode', 'PoolQC_Tencode|BsmtFinType2_Tencode', 'BsmtFinSF1|MSZoning_Tencode', 'BsmtFullBath|YearBuilt', 'PoolArea|LowQualFinSF', 'MSZoning_Tencode|PoolArea', 'SaleCondition_Tencode|HouseStyle_Tencode', '2ndFlrSF|LotFrontage', 'Electrical_Tencode|GarageFinish_Tencode', 'FullBath|GarageArea', 'Condition1_Tencode|LotShape_Tencode', 'LandContour_Tencode|1stFlrSF', 'Functional_Tencode|BsmtFinType2_Tencode', 'PoolArea|BsmtUnfSF', 'PavedDrive_Tencode|Street_Tencode', 'BsmtFinSF2|MiscVal', '1stFlrSF|GarageYrBlt', 'MoSold|SaleType_Tencode', 'WoodDeckSF|LotShape_Tencode', 'MoSold|GarageFinish_Tencode', 'MoSold|BsmtFinType1_Tencode', 'Foundation_Tencode|Heating_Tencode', 'RoofStyle_Tencode|LotShape_Tencode', 'PoolQC_Tencode|BldgType_Tencode', 'ExterCond_Tencode|GarageType_Tencode', 'TotRmsAbvGrd|PavedDrive_Tencode', 'PoolQC_Tencode|GarageType_Tencode', 'ExterQual_Tencode|Exterior2nd_Tencode', 'LandContour_Tencode|WoodDeckSF', 'Fence_Tencode|BsmtFinType1_Tencode', 'Alley_Tencode|PoolQC_Tencode', 'LowQualFinSF|MiscVal', 'KitchenAbvGr|HeatingQC_Tencode', 'Utilities_Tencode|OverallQual', 'TotalBsmtSF|Foundation_Tencode', 'KitchenAbvGr|Functional_Tencode', 'GarageYrBlt|OverallQual', 'Exterior1st_Tencode|3SsnPorch', 'YrSold', 'BsmtFullBath|LotShape_Tencode', 'MiscVal|Functional_Tencode', 'GarageYrBlt|BsmtFinType2_Tencode', 'Fireplaces|MiscFeature_Tencode', '3SsnPorch|ExterQual_Tencode', 'WoodDeckSF|MiscFeature_Tencode', 'FullBath|BsmtQual_Tencode', 'MoSold|Functional_Tencode', 'GarageYrBlt|HouseStyle_Tencode', 'Condition2_Tencode|BldgType_Tencode', 'GrLivArea|MoSold', 'GarageCond_Tencode|Fence_Tencode', 'Alley_Tencode|GarageCars', 'GrLivArea|HalfBath', 'MiscVal|BedroomAbvGr', 'LandContour_Tencode|MSZoning_Tencode', 'TotalBsmtSF|MiscFeature_Tencode', 'FireplaceQu_Tencode|MasVnrArea', 'KitchenAbvGr|RoofStyle_Tencode', 'YrSold|Heating_Tencode', '3SsnPorch|GarageYrBlt', 'PavedDrive_Tencode|LandSlope_Tencode', 'LandSlope_Tencode|Functional_Tencode', 'ScreenPorch|LotConfig_Tencode', 'LandContour_Tencode|BsmtCond_Tencode', 'ExterCond_Tencode|Electrical_Tencode', 'MasVnrType_Tencode|HouseStyle_Tencode', 'Fireplaces|3SsnPorch', 'EnclosedPorch|OverallCond', 'FullBath|GarageFinish_Tencode', 'Fence_Tencode|HalfBath', 'Fence_Tencode|OverallCond', 'Street_Tencode|BldgType_Tencode', 'BsmtFullBath|FullBath', 'GarageFinish_Tencode|Heating_Tencode', 'CentralAir_Tencode|Utilities_Tencode', 'Alley_Tencode|PoolArea', 'Exterior1st_Tencode|FullBath', 'BldgType_Tencode', 'BsmtFinSF1|HouseStyle_Tencode', 'Exterior1st_Tencode|RoofStyle_Tencode', 'Condition1_Tencode|BsmtFinType2_Tencode', 'Utilities_Tencode|HalfBath', 'MSSubClass|1stFlrSF', 'Fence_Tencode|GarageQual_Tencode', 'LandContour_Tencode|GarageQual_Tencode', 'Heating_Tencode|OverallCond', 'RoofMatl_Tencode|LotArea', 'Street_Tencode|GarageArea', 'FullBath|GarageCars', 'BsmtHalfBath|Utilities_Tencode', 'MSZoning_Tencode|LowQualFinSF', 'BsmtCond_Tencode|LotShape_Tencode', 'MSSubClass|HeatingQC_Tencode', 'BsmtCond_Tencode|Neighborhood_Tencode', 'LotShape_Tencode|GarageCars', 'Fireplaces|BsmtHalfBath', 'PoolArea|PoolQC_Tencode', 'Fireplaces|KitchenQual_Tencode', 'MiscVal|YearBuilt', 'BsmtCond_Tencode|SaleType_Tencode', 'YearBuilt|SaleType_Tencode', 'BsmtFinType1_Tencode|SaleType_Tencode', 'FullBath|GarageQual_Tencode', 'ExterQual_Tencode|GarageQual_Tencode', 'BsmtQual_Tencode|Condition1_Tencode', '1stFlrSF|HouseStyle_Tencode', 'TotRmsAbvGrd|LowQualFinSF', 'TotRmsAbvGrd|Exterior1st_Tencode', 'Electrical_Tencode|3SsnPorch', 'TotalBsmtSF|LowQualFinSF', 'MSSubClass|BsmtHalfBath', 'BsmtQual_Tencode|GarageArea', 'WoodDeckSF|SaleType_Tencode', 'LotArea|GarageCars', 'GarageCars|HalfBath', 'MoSold|OpenPorchSF', 'GarageCond_Tencode|HeatingQC_Tencode', 'PavedDrive_Tencode|WoodDeckSF', 'KitchenAbvGr|PoolQC_Tencode', 'Exterior2nd_Tencode|GarageFinish_Tencode', '3SsnPorch|GarageFinish_Tencode', 'RoofMatl_Tencode|YrSold', 'BsmtFinSF2|BsmtHalfBath', 'MSZoning_Tencode|HouseStyle_Tencode', 'Foundation_Tencode|EnclosedPorch', 'Exterior1st_Tencode|PoolQC_Tencode', 'Fireplaces|OverallCond', 'BsmtQual_Tencode|LotArea', 'Electrical_Tencode|YrSold', 'FireplaceQu_Tencode|OpenPorchSF', 'Condition1_Tencode', 'GarageType_Tencode|MiscFeature_Tencode', 'LotFrontage|OverallCond', 'Foundation_Tencode|HalfBath', 'KitchenAbvGr|WoodDeckSF', 'BsmtExposure_Tencode|LotFrontage', 'CentralAir_Tencode|BedroomAbvGr', 'HeatingQC_Tencode|MiscFeature_Tencode', 'GarageYrBlt', 'PavedDrive_Tencode|YearBuilt', 'RoofStyle_Tencode|HeatingQC_Tencode', 'GarageQual_Tencode|OverallQual', 'ExterCond_Tencode|Functional_Tencode', 'Condition1_Tencode|OverallQual', 'LandContour_Tencode|Street_Tencode', 'MasVnrArea|MoSold', 'Condition2_Tencode|Heating_Tencode', 'Street_Tencode', 'YearBuilt|GarageQual_Tencode', 'Foundation_Tencode|BsmtFullBath', 'TotRmsAbvGrd|Functional_Tencode', 'LandContour_Tencode|GarageYrBlt', 'RoofStyle_Tencode|YearBuilt', 'TotalBsmtSF|GarageQual_Tencode', 'FullBath|HouseStyle_Tencode', '3SsnPorch|BsmtQual_Tencode', 'GarageYrBlt|GarageQual_Tencode', '1stFlrSF|ExterQual_Tencode', 'BsmtFinSF2|PavedDrive_Tencode', 'BsmtQual_Tencode|KitchenQual_Tencode', '3SsnPorch|LotShape_Tencode', 'BsmtFinType2_Tencode|OverallCond', 'MasVnrArea|LotConfig_Tencode', 'BsmtExposure_Tencode|LotConfig_Tencode', 'Fireplaces|Heating_Tencode', 'YrSold|OverallCond', 'BsmtExposure_Tencode|SaleCondition_Tencode', 'YrSold|GarageCond_Tencode', 'BsmtExposure_Tencode|ScreenPorch', '2ndFlrSF|OverallCond', 'BedroomAbvGr|HalfBath', 'FireplaceQu_Tencode|1stFlrSF', 'Fence_Tencode|LotShape_Tencode', '1stFlrSF|PoolQC_Tencode', 'LotFrontage|GarageFinish_Tencode', 'Exterior2nd_Tencode|BsmtFinType2_Tencode', 'YrSold|LotShape_Tencode', 'ExterQual_Tencode|LotFrontage', 'GrLivArea|PavedDrive_Tencode', 'PoolArea|LotFrontage', 'TotRmsAbvGrd|YearBuilt', 'Alley_Tencode|KitchenQual_Tencode', 'BsmtCond_Tencode|OverallCond', '2ndFlrSF|Exterior2nd_Tencode', 'Condition2_Tencode|YrSold', 'ScreenPorch|MasVnrType_Tencode', 'TotRmsAbvGrd|BsmtFinType1_Tencode', 'LotFrontage|Exterior2nd_Tencode', 'MSSubClass|LotFrontage', 'KitchenQual_Tencode|Utilities_Tencode', 'LandSlope_Tencode|RoofStyle_Tencode', '3SsnPorch|PoolQC_Tencode', 'Alley_Tencode|TotRmsAbvGrd', 'PoolArea|GarageCond_Tencode', 'Foundation_Tencode|GarageFinish_Tencode', 'WoodDeckSF|BsmtFinType2_Tencode', 'GarageCars|MiscFeature_Tencode', 'BsmtQual_Tencode|BsmtFinType2_Tencode', 'OpenPorchSF|LotArea', 'BsmtCond_Tencode|GarageQual_Tencode', 'OverallCond|SaleType_Tencode', 'Electrical_Tencode|LowQualFinSF', 'Electrical_Tencode|KitchenAbvGr', 'BsmtExposure_Tencode', 'Fence_Tencode|BsmtUnfSF', 'BsmtExposure_Tencode|KitchenQual_Tencode', 'TotalBsmtSF|Condition1_Tencode', 'Alley_Tencode|GarageFinish_Tencode', 'BsmtQual_Tencode|Street_Tencode', 'Electrical_Tencode|GarageType_Tencode', 'Foundation_Tencode|MiscVal', 'Electrical_Tencode|CentralAir_Tencode', 'GarageYrBlt|OverallCond', 'WoodDeckSF|BsmtCond_Tencode', 'BsmtHalfBath|GarageType_Tencode', 'BsmtQual_Tencode|HalfBath', 'PavedDrive_Tencode|GarageArea', 'PavedDrive_Tencode|BsmtHalfBath', 'Fireplaces|BsmtUnfSF', 'Alley_Tencode|BsmtCond_Tencode', 'PoolArea|EnclosedPorch', 'RoofStyle_Tencode|Functional_Tencode', 'GarageArea|SaleType_Tencode', 'LotArea|YearBuilt', 'EnclosedPorch|GarageArea', 'BsmtHalfBath|LotConfig_Tencode', 'Exterior1st_Tencode|WoodDeckSF', 'FullBath|GarageYrBlt', 'MoSold|ExterQual_Tencode', 'KitchenQual_Tencode|LotArea', '2ndFlrSF|LotShape_Tencode', 'BsmtFinSF2|RoofMatl_Tencode', 'BsmtHalfBath', 'Electrical_Tencode|WoodDeckSF', 'LotConfig_Tencode|MiscVal', 'ExterCond_Tencode|PoolArea', 'GarageYrBlt|BsmtUnfSF', 'BsmtFullBath|Exterior2nd_Tencode', 'GrLivArea|Functional_Tencode', 'LandContour_Tencode|BsmtQual_Tencode', 'BsmtHalfBath|CentralAir_Tencode', 'FullBath|BsmtHalfBath', 'BsmtQual_Tencode|WoodDeckSF', 'Functional_Tencode|Heating_Tencode', 'HeatingQC_Tencode|SaleType_Tencode', '1stFlrSF|MasVnrType_Tencode', 'PavedDrive_Tencode|OpenPorchSF', 'LotFrontage|Utilities_Tencode', 'MasVnrArea|KitchenQual_Tencode', 'MasVnrArea|WoodDeckSF', 'BsmtFullBath|HalfBath', 'TotalBsmtSF|EnclosedPorch', 'GarageArea|BsmtFinType2_Tencode', 'TotalBsmtSF|ScreenPorch', 'Fireplaces|LotFrontage', 'ExterQual_Tencode|MiscVal', 'TotalBsmtSF|BsmtFinType1_Tencode', '2ndFlrSF|MiscFeature_Tencode', 'PoolQC_Tencode', 'BsmtExposure_Tencode|BldgType_Tencode', 'BsmtFinSF1|Exterior1st_Tencode', 'MSSubClass|LandSlope_Tencode', 'Neighborhood_Tencode|OverallCond', 'YearBuilt|GarageCars', 'BsmtFullBath|2ndFlrSF', 'YearBuilt|Neighborhood_Tencode', 'YrSold|MiscVal', 'GarageCond_Tencode|BldgType_Tencode', 'Condition1_Tencode|MiscFeature_Tencode', 'ExterQual_Tencode|Street_Tencode', 'BsmtFinSF2|GarageCars', 'PavedDrive_Tencode|RoofStyle_Tencode', 'EnclosedPorch|GarageCond_Tencode', 'MasVnrArea|Condition1_Tencode', 'LotConfig_Tencode|Exterior2nd_Tencode', 'GarageQual_Tencode', 'LowQualFinSF|LotArea', 'WoodDeckSF|Exterior2nd_Tencode', 'LotFrontage|LotArea', '3SsnPorch|SaleCondition_Tencode', 'PoolQC_Tencode|YearBuilt', 'LowQualFinSF|HeatingQC_Tencode', 'GarageCond_Tencode|MiscVal', 'PoolArea|Street_Tencode', 'Fence_Tencode|KitchenQual_Tencode', '3SsnPorch|SaleType_Tencode', 'YrSold|PavedDrive_Tencode', 'YrSold|Condition1_Tencode', 'BsmtUnfSF|OverallQual', 'ExterCond_Tencode|LotShape_Tencode', 'ExterCond_Tencode|2ndFlrSF', 'FireplaceQu_Tencode', 'KitchenQual_Tencode|HalfBath', 'MSZoning_Tencode|Street_Tencode', 'RoofStyle_Tencode|LotFrontage', 'Fence_Tencode|MiscFeature_Tencode', 'BsmtFinSF1|3SsnPorch', 'MasVnrArea|LowQualFinSF', 'SaleCondition_Tencode|GarageFinish_Tencode', 'GrLivArea|BsmtFinType1_Tencode', 'Foundation_Tencode|GarageType_Tencode', 'Condition1_Tencode|PoolQC_Tencode', 'LandSlope_Tencode|Exterior2nd_Tencode', 'FullBath|MasVnrType_Tencode', 'PoolArea|MiscVal', 'GrLivArea', 'YearRemodAdd|EnclosedPorch', 'LowQualFinSF|YearBuilt', 'MSSubClass|MiscFeature_Tencode', 'GarageFinish_Tencode|BsmtFinType2_Tencode', 'Exterior2nd_Tencode|KitchenQual_Tencode', 'GarageYrBlt|BsmtFinType1_Tencode', 'BsmtFullBath|Street_Tencode', 'MSZoning_Tencode|ScreenPorch', 'YrSold|BedroomAbvGr', 'Exterior2nd_Tencode|PoolQC_Tencode', 'ExterCond_Tencode|KitchenAbvGr', 'RoofMatl_Tencode|ExterQual_Tencode', 'GrLivArea|Exterior2nd_Tencode', 'Street_Tencode|GarageType_Tencode', 'YrSold|YearBuilt', 'SaleCondition_Tencode|GarageYrBlt', 'TotRmsAbvGrd|BedroomAbvGr', 'BedroomAbvGr|GarageQual_Tencode', 'YearRemodAdd|WoodDeckSF', 'Neighborhood_Tencode|GarageType_Tencode', 'BsmtFinSF2|PoolArea', 'BsmtFinType1_Tencode|GarageType_Tencode', 'BsmtFinSF2|LotShape_Tencode', 'MSSubClass|MSZoning_Tencode', 'TotalBsmtSF|GrLivArea', 'BsmtFullBath|3SsnPorch', 'PavedDrive_Tencode|BsmtUnfSF', 'MasVnrArea|BedroomAbvGr', 'LandContour_Tencode|SaleType_Tencode', 'KitchenQual_Tencode|BedroomAbvGr', 'SaleType_Tencode|HouseStyle_Tencode', 'GrLivArea|GarageFinish_Tencode', 'GrLivArea|Fence_Tencode', 'BsmtQual_Tencode|Neighborhood_Tencode', 'FireplaceQu_Tencode|BsmtFullBath', 'SaleCondition_Tencode|Fence_Tencode', 'KitchenAbvGr|Fence_Tencode', 'KitchenAbvGr|Exterior1st_Tencode', 'MSSubClass|GrLivArea', 'BsmtUnfSF|MasVnrType_Tencode', 'BsmtUnfSF|BedroomAbvGr', '1stFlrSF|BldgType_Tencode', 'ExterCond_Tencode|BsmtExposure_Tencode', 'Exterior2nd_Tencode|HouseStyle_Tencode', 'RoofStyle_Tencode|BsmtFinType2_Tencode', 'LotShape_Tencode|HouseStyle_Tencode', 'BsmtExposure_Tencode|LotArea', 'YrSold|Neighborhood_Tencode', 'EnclosedPorch|BsmtUnfSF', 'RoofStyle_Tencode|GarageCars', 'Condition2_Tencode|ScreenPorch', 'LotConfig_Tencode|Functional_Tencode', 'ExterCond_Tencode|GarageArea', 'WoodDeckSF|OverallCond', 'BsmtExposure_Tencode|MSZoning_Tencode', '1stFlrSF|MiscVal', '1stFlrSF|WoodDeckSF', 'BsmtFullBath|SaleType_Tencode', 'MSZoning_Tencode|BsmtCond_Tencode', '1stFlrSF|MiscFeature_Tencode', 'FullBath|SaleType_Tencode', 'YearRemodAdd|OverallQual', 'CentralAir_Tencode|BsmtUnfSF', 'Exterior1st_Tencode|EnclosedPorch', 'TotalBsmtSF|Fireplaces', 'KitchenAbvGr|OverallCond', 'OpenPorchSF|HeatingQC_Tencode', 'FullBath|MiscVal', 'TotRmsAbvGrd|ScreenPorch', 'OpenPorchSF', 'BsmtQual_Tencode|Utilities_Tencode', 'BsmtFinSF1|GarageType_Tencode', 'BsmtFinSF1|SaleType_Tencode', 'OverallCond', 'FireplaceQu_Tencode|TotRmsAbvGrd', 'PoolArea|Heating_Tencode', 'BsmtQual_Tencode|MasVnrType_Tencode', 'TotRmsAbvGrd|LotShape_Tencode', 'OpenPorchSF|MiscFeature_Tencode', 'LotFrontage|LotConfig_Tencode', 'BsmtUnfSF|LotArea', 'ExterCond_Tencode|PoolQC_Tencode', 'PoolQC_Tencode|KitchenQual_Tencode', 'RoofStyle_Tencode|LotArea', 'BsmtQual_Tencode|LowQualFinSF', 'ExterCond_Tencode|GarageCond_Tencode', 'Foundation_Tencode|PavedDrive_Tencode', 'GarageCond_Tencode|GarageQual_Tencode', 'YearRemodAdd|GarageArea', 'KitchenAbvGr|GarageYrBlt', 'Fireplaces|1stFlrSF', 'WoodDeckSF|HalfBath', 'RoofMatl_Tencode|Street_Tencode', 'FullBath|BsmtFinType1_Tencode', 'TotRmsAbvGrd|Condition2_Tencode', 'LandContour_Tencode|Utilities_Tencode', 'MSZoning_Tencode|SaleCondition_Tencode', 'SaleCondition_Tencode|CentralAir_Tencode', 'WoodDeckSF|OpenPorchSF', 'Condition2_Tencode|BedroomAbvGr', 'Alley_Tencode|EnclosedPorch', 'BsmtFinSF1|Street_Tencode', 'CentralAir_Tencode|Heating_Tencode', 'MSSubClass|Condition1_Tencode', 'Street_Tencode|Utilities_Tencode', 'Exterior1st_Tencode|ExterQual_Tencode', 'EnclosedPorch|LowQualFinSF', 'BsmtQual_Tencode|OpenPorchSF', 'MSZoning_Tencode|OverallQual', 'Fireplaces|Utilities_Tencode', 'MoSold|GarageYrBlt', 'LotConfig_Tencode|HouseStyle_Tencode', 'LotFrontage|OverallQual', 'Foundation_Tencode|BedroomAbvGr', 'LandContour_Tencode|KitchenQual_Tencode', 'Fireplaces|MasVnrType_Tencode', 'CentralAir_Tencode|MasVnrType_Tencode', '2ndFlrSF|PoolQC_Tencode', 'YrSold|BsmtCond_Tencode', 'Foundation_Tencode|MiscFeature_Tencode', 'MoSold|GarageCars', '1stFlrSF|LotShape_Tencode', 'MasVnrArea|HouseStyle_Tencode', 'BsmtUnfSF|Condition1_Tencode', 'LandSlope_Tencode|GarageCars', 'Condition2_Tencode|Utilities_Tencode', 'Foundation_Tencode|BsmtFinSF1', 'BsmtFinSF2|OpenPorchSF', 'Condition2_Tencode|GarageType_Tencode', 'Foundation_Tencode|BsmtExposure_Tencode', 'KitchenQual_Tencode|GarageQual_Tencode', 'MasVnrArea|MasVnrType_Tencode', 'LotFrontage|MiscVal', 'GarageCond_Tencode|GarageArea', 'LowQualFinSF|BsmtCond_Tencode', 'MasVnrArea|GarageQual_Tencode', 'Functional_Tencode|YearBuilt', 'MasVnrArea|BsmtExposure_Tencode', 'BsmtUnfSF|GarageType_Tencode', '3SsnPorch|YearBuilt', 'ExterCond_Tencode|LandContour_Tencode', 'Electrical_Tencode|FireplaceQu_Tencode', 'MoSold|Neighborhood_Tencode', 'BsmtQual_Tencode|BedroomAbvGr', 'LandContour_Tencode|Fence_Tencode', 'RoofStyle_Tencode|BedroomAbvGr', 'LandSlope_Tencode|Neighborhood_Tencode', 'BsmtHalfBath|MasVnrType_Tencode', 'Alley_Tencode|BsmtFinType1_Tencode', 'BsmtFullBath|ScreenPorch', 'WoodDeckSF|Neighborhood_Tencode', 'LotShape_Tencode|OverallQual', 'YearRemodAdd|3SsnPorch', 'MSSubClass|GarageQual_Tencode', 'LandContour_Tencode|Condition2_Tencode', 'Foundation_Tencode|LotConfig_Tencode', 'ExterQual_Tencode|HalfBath', 'Alley_Tencode|ExterQual_Tencode', 'BsmtFinSF2|PoolQC_Tencode', 'YrSold|LotConfig_Tencode', 'Foundation_Tencode|ScreenPorch', 'TotRmsAbvGrd|BsmtCond_Tencode', 'GrLivArea|1stFlrSF', 'Condition2_Tencode|OverallCond', 'BsmtCond_Tencode|LotArea', 'Condition2_Tencode|RoofMatl_Tencode', 'CentralAir_Tencode|HouseStyle_Tencode', 'TotRmsAbvGrd|MSZoning_Tencode', 'MoSold|YrSold', 'RoofStyle_Tencode|KitchenQual_Tencode', 'KitchenAbvGr|Exterior2nd_Tencode', 'Exterior1st_Tencode|Neighborhood_Tencode', 'GrLivArea|GarageType_Tencode', 'KitchenAbvGr|GarageQual_Tencode', 'MiscVal|BldgType_Tencode', 'MasVnrArea|GarageType_Tencode', 'RoofMatl_Tencode|WoodDeckSF', 'MiscVal|HeatingQC_Tencode', 'MasVnrArea|1stFlrSF', 'Functional_Tencode|Neighborhood_Tencode', 'Condition2_Tencode|OverallQual', 'PoolQC_Tencode|HouseStyle_Tencode', 'LandSlope_Tencode|OpenPorchSF', 'PoolQC_Tencode|HeatingQC_Tencode', 'RoofStyle_Tencode|HouseStyle_Tencode', '3SsnPorch|GarageCond_Tencode', 'LotArea|BsmtFinType1_Tencode', '1stFlrSF', 'LandSlope_Tencode|OverallCond', '3SsnPorch|CentralAir_Tencode', 'Condition2_Tencode|YearBuilt', 'LandContour_Tencode|BsmtFinType2_Tencode', 'OverallCond|HouseStyle_Tencode', 'MSSubClass|BedroomAbvGr', 'Condition2_Tencode|GarageArea', 'Fireplaces|MiscVal', '2ndFlrSF|GarageFinish_Tencode', 'CentralAir_Tencode|HalfBath', 'PavedDrive_Tencode|GarageType_Tencode', 'GarageYrBlt|LotConfig_Tencode', 'BsmtFinType2_Tencode|Heating_Tencode', 'OpenPorchSF|BldgType_Tencode', 'LowQualFinSF|BedroomAbvGr', 'KitchenQual_Tencode|OpenPorchSF', 'SaleCondition_Tencode|SaleType_Tencode', 'BsmtUnfSF|KitchenQual_Tencode', 'BsmtExposure_Tencode|2ndFlrSF', 'Electrical_Tencode|MoSold', 'LandSlope_Tencode|BedroomAbvGr', 'BsmtFinSF2|OverallQual', 'Electrical_Tencode|BldgType_Tencode', 'LandContour_Tencode|PavedDrive_Tencode', 'LandContour_Tencode|RoofStyle_Tencode', 'Functional_Tencode|OverallQual', 'Fireplaces|LotArea', 'MasVnrArea|Exterior2nd_Tencode', 'TotalBsmtSF|3SsnPorch', '3SsnPorch|HouseStyle_Tencode', 'Functional_Tencode|MiscFeature_Tencode', '3SsnPorch|OverallQual', 'FireplaceQu_Tencode|Heating_Tencode', 'MiscVal|MasVnrType_Tencode', 'ExterCond_Tencode|HeatingQC_Tencode', 'TotRmsAbvGrd|RoofMatl_Tencode', 'EnclosedPorch|Utilities_Tencode', 'TotRmsAbvGrd|HalfBath', 'Condition1_Tencode|HalfBath', 'GrLivArea|MiscVal', '3SsnPorch|HeatingQC_Tencode', 'BsmtExposure_Tencode|WoodDeckSF', 'BsmtFinSF1|RoofStyle_Tencode', 'LotFrontage|BsmtUnfSF', 'OpenPorchSF|LotShape_Tencode', 'MSSubClass|PoolQC_Tencode', 'MasVnrType_Tencode|GarageType_Tencode', 'ExterCond_Tencode|Alley_Tencode', 'BsmtFinSF2|LotFrontage', 'BsmtQual_Tencode|PavedDrive_Tencode', 'BsmtFullBath|MasVnrType_Tencode', 'RoofStyle_Tencode|GarageCond_Tencode', 'CentralAir_Tencode|Functional_Tencode', 'ExterCond_Tencode|Heating_Tencode', 'GarageArea|HalfBath', 'CentralAir_Tencode|GarageCond_Tencode', 'BsmtFinSF1|2ndFlrSF', 'BsmtFinSF1|MasVnrType_Tencode', 'KitchenAbvGr|LotConfig_Tencode', 'BsmtFinSF2|BsmtUnfSF', 'LandSlope_Tencode|KitchenQual_Tencode', 'RoofMatl_Tencode|SaleCondition_Tencode', '3SsnPorch|GarageArea', 'GarageCars|SaleType_Tencode', 'ScreenPorch|Exterior1st_Tencode', 'LotFrontage|LotShape_Tencode', 'LowQualFinSF|BsmtUnfSF', 'Foundation_Tencode|MSZoning_Tencode', 'PoolArea|Condition1_Tencode', 'ExterQual_Tencode|OpenPorchSF', 'MasVnrType_Tencode|HalfBath', 'LowQualFinSF|Street_Tencode', 'SaleCondition_Tencode|LotShape_Tencode', 'RoofStyle_Tencode|EnclosedPorch', 'GrLivArea|BsmtUnfSF', 'GarageYrBlt|Condition1_Tencode', 'MiscVal|LotArea', 'ExterCond_Tencode|MSSubClass', 'BsmtHalfBath|ExterQual_Tencode', 'PavedDrive_Tencode|GarageFinish_Tencode', 'KitchenAbvGr|2ndFlrSF', 'Alley_Tencode|HouseStyle_Tencode', 'TotalBsmtSF|Fence_Tencode', 'MSZoning_Tencode|Fence_Tencode', 'Electrical_Tencode|OverallQual', 'RoofMatl_Tencode|Heating_Tencode', 'SaleCondition_Tencode|MiscFeature_Tencode', 'BsmtHalfBath|LotShape_Tencode', 'Electrical_Tencode|PoolQC_Tencode', 'TotRmsAbvGrd|FullBath', 'BsmtExposure_Tencode|GarageCars', 'CentralAir_Tencode|GarageQual_Tencode', 'MSZoning_Tencode|GarageCond_Tencode', '3SsnPorch|OverallCond', 'Foundation_Tencode|GarageCars', 'OpenPorchSF|SaleType_Tencode', 'Fence_Tencode|Street_Tencode', 'MSSubClass|MoSold', 'GrLivArea|PoolArea', 'BsmtHalfBath|LotArea', '2ndFlrSF|LandSlope_Tencode', 'PoolArea|GarageArea', 'KitchenAbvGr|YrSold', 'TotalBsmtSF|OpenPorchSF', 'BsmtExposure_Tencode|ExterQual_Tencode', 'BsmtFinSF2|GrLivArea', 'PavedDrive_Tencode|Utilities_Tencode', 'ScreenPorch|Exterior2nd_Tencode', 'TotalBsmtSF|HouseStyle_Tencode', 'LowQualFinSF|GarageArea', 'BsmtFinSF2|BsmtExposure_Tencode', 'TotalBsmtSF|RoofMatl_Tencode', 'KitchenAbvGr|Neighborhood_Tencode', 'YearRemodAdd', 'LandContour_Tencode|BldgType_Tencode', 'LotArea|MasVnrType_Tencode', 'LotShape_Tencode|BsmtFinType2_Tencode', 'RoofStyle_Tencode|GarageArea', 'LotFrontage|OpenPorchSF', 'Alley_Tencode|OverallCond', 'TotalBsmtSF|Heating_Tencode', 'LotShape_Tencode|HalfBath', 'GrLivArea|PoolQC_Tencode', 'BsmtCond_Tencode|HalfBath', 'ExterQual_Tencode|BedroomAbvGr', 'HouseStyle_Tencode|OverallQual', 'Condition2_Tencode|LowQualFinSF', 'FullBath|BsmtFinType2_Tencode', 'Exterior1st_Tencode|BsmtQual_Tencode', 'GarageCond_Tencode|Condition1_Tencode', 'MiscVal|GarageCars', 'BsmtQual_Tencode', 'GarageYrBlt|LotShape_Tencode', 'SaleCondition_Tencode|Utilities_Tencode', 'GrLivArea|ExterQual_Tencode', 'TotRmsAbvGrd|BsmtQual_Tencode', 'Alley_Tencode|WoodDeckSF', 'Exterior1st_Tencode|Exterior2nd_Tencode', 'ExterCond_Tencode|WoodDeckSF', 'Functional_Tencode|LotArea', 'GarageYrBlt|HeatingQC_Tencode', 'MSSubClass|Utilities_Tencode', 'Neighborhood_Tencode|OverallQual', 'BsmtFinSF1|WoodDeckSF', 'Condition2_Tencode|MiscVal', 'CentralAir_Tencode|Neighborhood_Tencode', 'HeatingQC_Tencode|BsmtFinType2_Tencode', 'FireplaceQu_Tencode|GarageFinish_Tencode', 'Foundation_Tencode|1stFlrSF', 'YearRemodAdd|BsmtFinSF1', 'GarageFinish_Tencode|GarageArea', '2ndFlrSF|PavedDrive_Tencode', 'MiscVal|BsmtUnfSF', 'FullBath|BsmtUnfSF', 'CentralAir_Tencode|SaleType_Tencode', 'BsmtFullBath|PavedDrive_Tencode', 'ExterCond_Tencode|YearBuilt', 'BsmtQual_Tencode|ExterQual_Tencode', 'Utilities_Tencode|SaleType_Tencode', 'KitchenAbvGr|SaleType_Tencode', 'Alley_Tencode|Exterior1st_Tencode', 'MSSubClass|BsmtFinType2_Tencode', 'MSZoning_Tencode|LotConfig_Tencode', 'LotShape_Tencode', 'OpenPorchSF|HouseStyle_Tencode', 'EnclosedPorch|BldgType_Tencode', 'GarageFinish_Tencode|Condition1_Tencode', 'FireplaceQu_Tencode|GarageQual_Tencode', 'MSSubClass|OverallQual', 'Fence_Tencode|SaleType_Tencode', 'GarageCond_Tencode|Utilities_Tencode', 'Alley_Tencode|BsmtFinType2_Tencode', 'BsmtExposure_Tencode|BsmtFinType1_Tencode', 'LandSlope_Tencode|BsmtFinType1_Tencode', 'FireplaceQu_Tencode|Alley_Tencode', 'TotRmsAbvGrd|MiscFeature_Tencode', 'BsmtExposure_Tencode|Functional_Tencode', 'KitchenAbvGr|MiscVal', 'BsmtFinSF1|BsmtCond_Tencode', 'TotRmsAbvGrd|PoolQC_Tencode', 'LandContour_Tencode|Fireplaces', 'MasVnrArea|RoofMatl_Tencode', 'EnclosedPorch|HouseStyle_Tencode', 'EnclosedPorch|Heating_Tencode', 'GarageYrBlt|MiscFeature_Tencode', 'RoofMatl_Tencode|PoolArea', 'TotalBsmtSF|BsmtFullBath', 'MSSubClass|OpenPorchSF', 'MSZoning_Tencode|Functional_Tencode', 'YearBuilt|HalfBath', 'GarageYrBlt|GarageCond_Tencode', 'BsmtCond_Tencode|GarageArea', 'Exterior2nd_Tencode|GarageType_Tencode', 'HouseStyle_Tencode', 'LowQualFinSF|OverallQual', 'LandContour_Tencode|2ndFlrSF', 'BsmtHalfBath|KitchenQual_Tencode', 'YrSold|SaleType_Tencode', 'Fireplaces|LandSlope_Tencode', 'Alley_Tencode|YearRemodAdd', 'GrLivArea|BsmtFullBath', 'FireplaceQu_Tencode|BsmtQual_Tencode', 'LowQualFinSF|KitchenQual_Tencode', 'MSSubClass|GarageType_Tencode', 'MiscVal', 'LandContour_Tencode|BsmtFinSF2', 'BsmtExposure_Tencode|MiscVal', 'MasVnrArea|Exterior1st_Tencode', '3SsnPorch|BsmtFinType2_Tencode', 'BsmtQual_Tencode|GarageCars', 'BsmtQual_Tencode|HouseStyle_Tencode', 'PoolArea|ExterQual_Tencode', 'LandContour_Tencode|CentralAir_Tencode', 'Fireplaces|YrSold', 'ScreenPorch|LowQualFinSF', '2ndFlrSF|1stFlrSF', 'BsmtFinSF1|MiscVal', 'LowQualFinSF|BsmtFinType2_Tencode', 'Condition2_Tencode|MasVnrType_Tencode', 'TotalBsmtSF|BsmtFinSF1', 'PoolArea|GarageFinish_Tencode', 'Fence_Tencode|Condition1_Tencode', '2ndFlrSF', 'BsmtUnfSF|PoolQC_Tencode', 'Alley_Tencode|MSSubClass', 'PoolQC_Tencode|BsmtFinType1_Tencode', 'MoSold|MasVnrType_Tencode', 'BsmtFinType1_Tencode|HouseStyle_Tencode', 'BsmtFinType2_Tencode|GarageType_Tencode', 'RoofMatl_Tencode|LandSlope_Tencode', 'CentralAir_Tencode|BldgType_Tencode', 'LandSlope_Tencode|OverallQual', 'RoofStyle_Tencode|BsmtCond_Tencode', 'GarageArea|HouseStyle_Tencode', 'Electrical_Tencode|BsmtFinType1_Tencode', 'OpenPorchSF|Heating_Tencode', 'Fence_Tencode|OverallQual', 'Fireplaces|MoSold', 'Foundation_Tencode|Exterior1st_Tencode', 'PavedDrive_Tencode|GarageQual_Tencode', 'MasVnrArea|Heating_Tencode', 'YrSold|HouseStyle_Tencode', 'LotConfig_Tencode|HalfBath', 'Exterior1st_Tencode|BsmtUnfSF', 'BsmtFinSF1|OpenPorchSF', 'Exterior1st_Tencode|YrSold', 'GarageYrBlt|MiscVal', '2ndFlrSF|FullBath', 'KitchenAbvGr|3SsnPorch', 'MSZoning_Tencode|GarageYrBlt', 'BldgType_Tencode|YearBuilt', 'PoolQC_Tencode|MiscFeature_Tencode', 'LandSlope_Tencode|LotConfig_Tencode', 'ScreenPorch|GarageCond_Tencode', 'ExterQual_Tencode|PoolQC_Tencode', 'BldgType_Tencode|Utilities_Tencode', 'BsmtFinSF2|GarageType_Tencode', 'Neighborhood_Tencode|SaleType_Tencode', '3SsnPorch|BsmtFinType1_Tencode', '2ndFlrSF|SaleType_Tencode', 'BsmtExposure_Tencode|BedroomAbvGr', 'Alley_Tencode|OpenPorchSF', '2ndFlrSF|Heating_Tencode', 'FireplaceQu_Tencode|BsmtExposure_Tencode', 'Condition2_Tencode|RoofStyle_Tencode', 'YearRemodAdd|CentralAir_Tencode', 'LotArea|OverallQual', 'Foundation_Tencode|BsmtUnfSF', 'EnclosedPorch|SaleType_Tencode', 'LandContour_Tencode|BsmtFinSF1', 'BsmtHalfBath|BsmtCond_Tencode', 'Electrical_Tencode|MiscFeature_Tencode', '3SsnPorch|WoodDeckSF', 'Fireplaces|GarageQual_Tencode', 'LandContour_Tencode|BsmtFinType1_Tencode', 'FireplaceQu_Tencode|RoofMatl_Tencode', 'MSSubClass|Exterior2nd_Tencode', 'ExterCond_Tencode|LowQualFinSF', 'Electrical_Tencode|Condition2_Tencode', 'RoofMatl_Tencode|PoolQC_Tencode', 'LandContour_Tencode|OverallCond', 'LowQualFinSF|Utilities_Tencode', 'BsmtQual_Tencode|PoolQC_Tencode', 'GrLivArea|OverallCond', 'HeatingQC_Tencode|Heating_Tencode', 'RoofMatl_Tencode|Functional_Tencode', 'ExterCond_Tencode|Fence_Tencode', 'Fireplaces|GarageCond_Tencode', 'YearBuilt', 'OpenPorchSF|BsmtFinType2_Tencode', 'Neighborhood_Tencode|HouseStyle_Tencode', 'Fireplaces|RoofStyle_Tencode', 'GarageCond_Tencode|BsmtFinType2_Tencode', 'MoSold|BldgType_Tencode', 'LandContour_Tencode|BsmtExposure_Tencode', 'BsmtHalfBath|PoolQC_Tencode', 'BsmtQual_Tencode|GarageCond_Tencode', 'Exterior1st_Tencode|Functional_Tencode', 'ScreenPorch|YearBuilt', 'MiscVal|GarageType_Tencode', 'BsmtExposure_Tencode|GarageCond_Tencode', 'GarageQual_Tencode|MasVnrType_Tencode', 'TotRmsAbvGrd|Exterior2nd_Tencode', 'LandContour_Tencode|LotConfig_Tencode', 'GarageArea|Utilities_Tencode', 'MSZoning_Tencode|LotShape_Tencode', 'LotShape_Tencode|OverallCond', 'LotConfig_Tencode|BsmtCond_Tencode', 'MasVnrArea', 'MSSubClass|BsmtFinSF1', 'GarageCond_Tencode|GarageFinish_Tencode', 'Alley_Tencode|CentralAir_Tencode', 'LandContour_Tencode|GarageType_Tencode', 'GarageArea|GarageType_Tencode', 'Foundation_Tencode|MoSold', 'BldgType_Tencode|GarageQual_Tencode', 'Alley_Tencode|Utilities_Tencode', 'BldgType_Tencode|Heating_Tencode', 'YearRemodAdd|LotConfig_Tencode', 'BsmtFinSF2|WoodDeckSF', 'KitchenAbvGr|TotRmsAbvGrd', 'BsmtExposure_Tencode|Condition1_Tencode', 'LotFrontage|KitchenQual_Tencode', 'Exterior1st_Tencode', 'BsmtExposure_Tencode|EnclosedPorch', 'BsmtCond_Tencode|Condition1_Tencode', 'BsmtFinSF2|MoSold', 'GrLivArea|GarageCars', '2ndFlrSF|EnclosedPorch', 'CentralAir_Tencode|Exterior2nd_Tencode', '1stFlrSF|GarageCars', 'MoSold|Exterior1st_Tencode', 'FullBath|WoodDeckSF', '2ndFlrSF|GarageType_Tencode', 'GrLivArea|OpenPorchSF', 'Electrical_Tencode|PoolArea', 'BsmtExposure_Tencode|OverallQual', 'MSZoning_Tencode|SaleType_Tencode', 'RoofMatl_Tencode|Exterior1st_Tencode', '2ndFlrSF|GarageCond_Tencode', 'Neighborhood_Tencode|MiscFeature_Tencode', 'RoofStyle_Tencode|MasVnrType_Tencode', 'GarageCond_Tencode|OverallCond', '3SsnPorch|Utilities_Tencode', 'GarageYrBlt|BsmtCond_Tencode', 'MSSubClass|Street_Tencode', 'MoSold|KitchenQual_Tencode', 'LotConfig_Tencode', 'EnclosedPorch|OpenPorchSF', 'Alley_Tencode|MiscFeature_Tencode', 'Street_Tencode|OpenPorchSF', '1stFlrSF|BedroomAbvGr', 'ExterCond_Tencode|Street_Tencode', 'FireplaceQu_Tencode|GrLivArea', 'BsmtQual_Tencode|LandSlope_Tencode', 'BsmtFinSF1|YearBuilt', 'BsmtCond_Tencode|MiscFeature_Tencode', 'LotConfig_Tencode|Utilities_Tencode', 'ExterCond_Tencode|SaleCondition_Tencode', 'EnclosedPorch|LotShape_Tencode', 'BsmtQual_Tencode|EnclosedPorch', 'RoofMatl_Tencode|CentralAir_Tencode', 'BsmtQual_Tencode|YearBuilt', 'FireplaceQu_Tencode|EnclosedPorch', 'Condition2_Tencode|SaleType_Tencode', 'GarageYrBlt|SaleType_Tencode', 'Condition2_Tencode|BsmtFinSF1', 'BsmtCond_Tencode|Functional_Tencode', 'Electrical_Tencode|Utilities_Tencode', 'Alley_Tencode|LandSlope_Tencode', 'CentralAir_Tencode|Fence_Tencode', 'BsmtFullBath|WoodDeckSF', 'TotalBsmtSF|PoolQC_Tencode', '1stFlrSF|YrSold', 'Exterior1st_Tencode|LowQualFinSF', 'EnclosedPorch|GarageType_Tencode', 'BldgType_Tencode|OverallQual', 'LotFrontage|BldgType_Tencode', 'LotFrontage|GarageArea', 'SaleCondition_Tencode|HeatingQC_Tencode', 'KitchenAbvGr|Utilities_Tencode', 'CentralAir_Tencode|MiscFeature_Tencode', '3SsnPorch|LotConfig_Tencode', 'BsmtFinSF1|SaleCondition_Tencode', 'YrSold|Functional_Tencode', 'Alley_Tencode|Functional_Tencode', 'LandSlope_Tencode|PoolQC_Tencode', 'MSZoning_Tencode|CentralAir_Tencode', 'GarageFinish_Tencode|PoolQC_Tencode', 'FireplaceQu_Tencode|LotFrontage', 'Electrical_Tencode|BsmtQual_Tencode', 'BldgType_Tencode|HouseStyle_Tencode', 'ExterCond_Tencode|Foundation_Tencode', '2ndFlrSF|RoofStyle_Tencode', 'KitchenQual_Tencode|HeatingQC_Tencode', 'Fireplaces|CentralAir_Tencode', 'LandContour_Tencode|OverallQual', 'RoofStyle_Tencode', 'MiscVal|Utilities_Tencode', 'BsmtFullBath|KitchenQual_Tencode', 'BsmtHalfBath|OpenPorchSF', 'BedroomAbvGr|BsmtFinType1_Tencode', 'FullBath|HalfBath', 'KitchenAbvGr|BsmtFinSF1', 'YearRemodAdd|BsmtQual_Tencode', 'RoofStyle_Tencode|Heating_Tencode', 'MoSold|FullBath', 'Fence_Tencode|Utilities_Tencode', 'LandContour_Tencode|BsmtUnfSF', 'BsmtExposure_Tencode|OverallCond', 'BsmtHalfBath|GarageArea', 'MSSubClass|YrSold', 'GrLivArea|YearRemodAdd', 'Fireplaces|GarageFinish_Tencode', 'BsmtQual_Tencode|CentralAir_Tencode', 'Street_Tencode|KitchenQual_Tencode', 'EnclosedPorch|GarageCars', 'ExterQual_Tencode|Neighborhood_Tencode', 'KitchenAbvGr|OverallQual', 'Exterior1st_Tencode|LotConfig_Tencode', 'Fence_Tencode|MasVnrType_Tencode', 'CentralAir_Tencode|PoolQC_Tencode', 'LotShape_Tencode|MasVnrType_Tencode', 'Exterior1st_Tencode|Heating_Tencode', 'Exterior2nd_Tencode|BsmtUnfSF', 'GarageYrBlt|Fence_Tencode', 'EnclosedPorch|OverallQual', 'YrSold|SaleCondition_Tencode', 'YearRemodAdd|PoolArea', 'GarageFinish_Tencode|HeatingQC_Tencode', '2ndFlrSF|MoSold', 'GarageCond_Tencode|BsmtFinType1_Tencode', 'SaleCondition_Tencode|BsmtUnfSF', 'Condition2_Tencode|BsmtFullBath', 'BsmtHalfBath|MiscFeature_Tencode', 'YearRemodAdd|GarageType_Tencode', 'BsmtFinSF1|RoofMatl_Tencode', 'PavedDrive_Tencode', 'KitchenQual_Tencode|GarageArea', 'BsmtFinType1_Tencode|GarageCars', 'YrSold|LandSlope_Tencode', 'MSZoning_Tencode|ExterQual_Tencode', 'TotRmsAbvGrd|PoolArea', 'PavedDrive_Tencode|BldgType_Tencode', 'BsmtFinSF2|Heating_Tencode', 'YearRemodAdd|Neighborhood_Tencode', 'BsmtFinType2_Tencode|OverallQual', 'YearBuilt|HouseStyle_Tencode', 'BsmtFinSF2|BsmtFinSF1', 'LandSlope_Tencode|LotShape_Tencode', 'GarageCond_Tencode|HalfBath', 'Street_Tencode|GarageQual_Tencode', 'FireplaceQu_Tencode|BsmtHalfBath', 'LotArea|BldgType_Tencode', 'GarageArea|Heating_Tencode', 'MSZoning_Tencode|GarageQual_Tencode', 'KitchenAbvGr|GarageFinish_Tencode', '2ndFlrSF|BedroomAbvGr', 'MasVnrArea|OpenPorchSF', 'MSZoning_Tencode|FullBath', 'LotShape_Tencode|BsmtFinType1_Tencode', 'BsmtHalfBath|MiscVal', 'TotRmsAbvGrd|BsmtExposure_Tencode', 'GarageYrBlt|WoodDeckSF', 'Street_Tencode|Condition1_Tencode', 'RoofMatl_Tencode|Condition1_Tencode', '3SsnPorch|LandSlope_Tencode', 'Exterior1st_Tencode|BedroomAbvGr', 'BsmtFinType2_Tencode|GarageQual_Tencode', 'BsmtHalfBath|Heating_Tencode', 'MasVnrArea|LandSlope_Tencode', 'GarageFinish_Tencode|MiscFeature_Tencode', 'KitchenQual_Tencode|BsmtFinType2_Tencode', 'MasVnrArea|RoofStyle_Tencode', 'TotalBsmtSF|KitchenAbvGr', 'LandSlope_Tencode|Utilities_Tencode', 'KitchenQual_Tencode|MiscFeature_Tencode', 'RoofMatl_Tencode|MasVnrType_Tencode', 'Condition1_Tencode|HouseStyle_Tencode', 'Electrical_Tencode|GarageCars', 'SaleCondition_Tencode|Heating_Tencode', 'BsmtFullBath|BsmtHalfBath', 'FullBath|Heating_Tencode', 'Fireplaces|Functional_Tencode', 'WoodDeckSF|BsmtUnfSF', 'RoofMatl_Tencode|Fence_Tencode', 'FireplaceQu_Tencode|Fireplaces', 'GarageYrBlt|KitchenQual_Tencode', 'LowQualFinSF|GarageType_Tencode', 'Foundation_Tencode|Exterior2nd_Tencode', 'ExterCond_Tencode|BsmtFullBath', 'PavedDrive_Tencode|LotFrontage', 'Electrical_Tencode|Fence_Tencode', 'BsmtFinSF2|ExterQual_Tencode', 'ExterQual_Tencode|MasVnrType_Tencode', 'LandContour_Tencode|FireplaceQu_Tencode', 'GrLivArea|GarageYrBlt', 'Condition1_Tencode|HeatingQC_Tencode', 'KitchenQual_Tencode|GarageCars', 'KitchenAbvGr', 'EnclosedPorch|ExterQual_Tencode', 'LandContour_Tencode', 'Electrical_Tencode|BsmtFullBath', 'Street_Tencode|GarageCars', 'GrLivArea|KitchenQual_Tencode', 'YearRemodAdd|GarageYrBlt', 'Exterior1st_Tencode|GarageFinish_Tencode', 'MSSubClass|BsmtFullBath', 'MSZoning_Tencode|LandSlope_Tencode', 'WoodDeckSF|YearBuilt', 'BsmtFinSF1|BsmtUnfSF', 'TotalBsmtSF|MiscVal', 'GarageArea|GarageQual_Tencode', 'RoofMatl_Tencode|HeatingQC_Tencode', 'GrLivArea|MasVnrType_Tencode', 'TotalBsmtSF|Alley_Tencode', '3SsnPorch|Street_Tencode', 'Foundation_Tencode|CentralAir_Tencode', 'Fence_Tencode|LotArea', 'GarageYrBlt|LowQualFinSF', 'KitchenAbvGr|SaleCondition_Tencode', 'BedroomAbvGr|LotArea', 'Utilities_Tencode|HouseStyle_Tencode', '1stFlrSF|LotConfig_Tencode', 'LandSlope_Tencode|MasVnrType_Tencode', 'BsmtFinSF2|1stFlrSF', 'SaleCondition_Tencode|RoofStyle_Tencode', 'YearBuilt|OverallCond', 'BedroomAbvGr|BldgType_Tencode', 'YrSold|GarageYrBlt', 'LandContour_Tencode|PoolQC_Tencode', 'Exterior2nd_Tencode|GarageArea', 'BedroomAbvGr|YearBuilt', 'Foundation_Tencode|WoodDeckSF', 'MasVnrArea|Condition2_Tencode', 'MasVnrArea|GarageYrBlt', 'SaleCondition_Tencode|WoodDeckSF', 'Condition1_Tencode|BldgType_Tencode', 'BsmtHalfBath|RoofStyle_Tencode', 'Condition1_Tencode|GarageCars', '3SsnPorch|KitchenQual_Tencode', 'FireplaceQu_Tencode|YrSold', 'Fence_Tencode|PoolQC_Tencode', 'ExterCond_Tencode|Exterior2nd_Tencode', 'LotFrontage|Fence_Tencode', 'BsmtFinSF2|BsmtCond_Tencode', 'YearRemodAdd|PoolQC_Tencode', 'Fence_Tencode|Functional_Tencode', 'Functional_Tencode|HalfBath', 'TotalBsmtSF|BedroomAbvGr', '2ndFlrSF|Functional_Tencode', 'MSZoning_Tencode|RoofMatl_Tencode', 'ScreenPorch|BsmtFinType1_Tencode', 'MiscVal|MiscFeature_Tencode', 'BsmtFullBath|BsmtFinType2_Tencode', 'Electrical_Tencode|BsmtFinType2_Tencode', 'LandContour_Tencode|MiscVal', 'Fireplaces|Street_Tencode', 'LotShape_Tencode|Neighborhood_Tencode', 'BldgType_Tencode|HalfBath', 'Fireplaces|LotShape_Tencode', 'YrSold|BsmtHalfBath', 'ScreenPorch|YrSold', 'Fence_Tencode|Neighborhood_Tencode', 'KitchenAbvGr|BedroomAbvGr', 'BsmtUnfSF|GarageArea', 'ExterCond_Tencode|RoofMatl_Tencode', 'FireplaceQu_Tencode|LowQualFinSF', 'HeatingQC_Tencode|MasVnrType_Tencode', 'TotalBsmtSF|YrSold', 'KitchenAbvGr|GarageArea', 'LotFrontage|BsmtFinType2_Tencode', 'Street_Tencode|Functional_Tencode', 'LotArea|GarageQual_Tencode', 'MiscVal|Neighborhood_Tencode', 'GarageFinish_Tencode|HouseStyle_Tencode', 'BsmtQual_Tencode|LotFrontage', 'BsmtExposure_Tencode|MiscFeature_Tencode', 'BsmtFinSF2|SaleType_Tencode', 'Fence_Tencode|GarageFinish_Tencode', 'Fireplaces|GarageArea', 'MoSold|Exterior2nd_Tencode', 'TotRmsAbvGrd|CentralAir_Tencode', 'BsmtHalfBath|LotFrontage', 'BsmtFinSF1|GarageQual_Tencode', 'ScreenPorch|PoolQC_Tencode', 'BedroomAbvGr|GarageType_Tencode', '2ndFlrSF|LowQualFinSF', 'Heating_Tencode|MasVnrType_Tencode', 'PoolArea|OverallQual', 'BsmtFinSF2|MiscFeature_Tencode', 'ExterQual_Tencode|BsmtCond_Tencode', 'BsmtHalfBath|SaleType_Tencode', 'Foundation_Tencode|KitchenQual_Tencode', 'RoofMatl_Tencode|HalfBath', 'PoolQC_Tencode|OpenPorchSF', 'Electrical_Tencode|RoofMatl_Tencode', 'GarageYrBlt|Street_Tencode', 'GarageQual_Tencode|HouseStyle_Tencode', 'BsmtHalfBath|BsmtFinType2_Tencode', 'MSZoning_Tencode|MoSold', 'MSSubClass|Fence_Tencode', 'Alley_Tencode', 'LotConfig_Tencode|BsmtUnfSF', 'FireplaceQu_Tencode|LandSlope_Tencode', 'LotArea|MiscFeature_Tencode', 'Electrical_Tencode|OverallCond', 'FireplaceQu_Tencode|GarageArea', 'ExterCond_Tencode|Fireplaces', 'TotalBsmtSF|KitchenQual_Tencode', 'RoofMatl_Tencode|YearBuilt', 'Functional_Tencode|HouseStyle_Tencode', 'BsmtFinSF1|LowQualFinSF', 'KitchenAbvGr|Condition1_Tencode', 'MasVnrArea|SaleType_Tencode', 'YearRemodAdd|Condition1_Tencode', 'PavedDrive_Tencode|LotConfig_Tencode', '2ndFlrSF|GarageQual_Tencode', 'CentralAir_Tencode|Condition1_Tencode', '2ndFlrSF|LotArea', 'Condition2_Tencode|BsmtHalfBath', 'WoodDeckSF|BldgType_Tencode', 'BsmtUnfSF|Heating_Tencode', 'Fireplaces', 'Neighborhood_Tencode|MasVnrType_Tencode', 'BedroomAbvGr|MasVnrType_Tencode', 'BsmtFinSF1|BsmtHalfBath', 'FullBath|Utilities_Tencode', 'RoofMatl_Tencode|GarageCars', '1stFlrSF|LowQualFinSF', 'HeatingQC_Tencode|YearBuilt', 'PavedDrive_Tencode|ExterQual_Tencode', 'BsmtFinSF2|GarageArea', 'GarageType_Tencode|Utilities_Tencode', 'FireplaceQu_Tencode|WoodDeckSF', '2ndFlrSF|WoodDeckSF', 'YrSold|EnclosedPorch', 'WoodDeckSF|Street_Tencode', 'LandContour_Tencode|3SsnPorch', 'BsmtFinType2_Tencode|YearBuilt', 'Alley_Tencode|GrLivArea', 'MoSold|LotFrontage', 'FullBath|Condition1_Tencode', 'Electrical_Tencode|LandSlope_Tencode', 'PavedDrive_Tencode|Functional_Tencode', 'GarageYrBlt|LotFrontage', 'PavedDrive_Tencode|KitchenQual_Tencode', 'TotRmsAbvGrd|OpenPorchSF', 'FullBath|YrSold', 'MasVnrArea|Fireplaces', 'EnclosedPorch|GarageQual_Tencode', 'BsmtHalfBath|YearBuilt', 'BsmtFinSF1|ScreenPorch', 'LotConfig_Tencode|GarageCars', 'MasVnrArea|Functional_Tencode', 'PoolArea|3SsnPorch', 'LotConfig_Tencode|Fence_Tencode', 'BedroomAbvGr', 'PoolArea|LotConfig_Tencode', 'BsmtQual_Tencode|Heating_Tencode', 'GarageQual_Tencode|MiscFeature_Tencode', 'GarageCond_Tencode|OverallQual', 'TotalBsmtSF|GarageYrBlt', 'Condition2_Tencode|BsmtFinType2_Tencode', 'LotArea|Utilities_Tencode', 'ExterCond_Tencode|LotConfig_Tencode', 'Functional_Tencode|GarageCars', 'KitchenQual_Tencode', 'TotalBsmtSF|BsmtUnfSF', 'RoofMatl_Tencode|HouseStyle_Tencode', 'MiscVal|HouseStyle_Tencode', 'MasVnrArea|SaleCondition_Tencode', '1stFlrSF|Heating_Tencode', 'BsmtHalfBath|Neighborhood_Tencode', 'YrSold|GarageArea', 'BsmtExposure_Tencode|PoolArea', 'OpenPorchSF|YearBuilt', 'FireplaceQu_Tencode|BsmtFinType1_Tencode', 'YrSold|HeatingQC_Tencode', 'BsmtFinSF2|BsmtFinType1_Tencode', 'MSSubClass|Exterior1st_Tencode', 'Street_Tencode|BsmtFinType2_Tencode', 'Exterior1st_Tencode|OverallCond', 'BsmtFinSF1|LotFrontage', 'HeatingQC_Tencode|OverallCond', 'ExterCond_Tencode|MoSold', 'Electrical_Tencode|Fireplaces', 'Condition2_Tencode|2ndFlrSF', 'ScreenPorch|LotArea', 'ExterCond_Tencode|MasVnrArea', 'HalfBath|SaleType_Tencode', 'KitchenAbvGr|HouseStyle_Tencode', 'MSZoning_Tencode|1stFlrSF', 'FullBath|LandSlope_Tencode', 'LandContour_Tencode|SaleCondition_Tencode', 'MSSubClass|BsmtUnfSF', 'ScreenPorch|Fence_Tencode', '3SsnPorch|Condition1_Tencode', 'BsmtHalfBath|GarageCond_Tencode', 'Alley_Tencode|MSZoning_Tencode', 'FullBath|OpenPorchSF', 'KitchenAbvGr|ExterQual_Tencode', 'MasVnrArea|MiscVal', 'Alley_Tencode|Condition1_Tencode', 'MSZoning_Tencode|Neighborhood_Tencode', 'MasVnrArea|LotFrontage', 'GarageYrBlt|BedroomAbvGr', 'LotFrontage|BsmtFinType1_Tencode', 'FullBath|LotFrontage', 'ScreenPorch|BsmtCond_Tencode', 'BsmtCond_Tencode|HeatingQC_Tencode', 'GarageCond_Tencode|YearBuilt', 'FireplaceQu_Tencode|KitchenQual_Tencode', 'Condition2_Tencode|FullBath', 'ExterCond_Tencode|BsmtFinSF1', '1stFlrSF|Exterior2nd_Tencode', 'BsmtFinSF2|SaleCondition_Tencode', '3SsnPorch|GarageType_Tencode', '2ndFlrSF|GarageYrBlt', 'LotConfig_Tencode|BedroomAbvGr', 'BsmtFinSF2|TotRmsAbvGrd', 'PoolArea|WoodDeckSF', 'Foundation_Tencode|RoofStyle_Tencode', 'LotFrontage|Street_Tencode', 'MoSold|BsmtFinType2_Tencode', 'LotShape_Tencode|Heating_Tencode', 'Street_Tencode|Heating_Tencode', 'ScreenPorch|SaleCondition_Tencode', 'Exterior2nd_Tencode|Street_Tencode', 'LowQualFinSF|OpenPorchSF', 'PoolQC_Tencode|GarageCars', 'PavedDrive_Tencode|EnclosedPorch', 'OpenPorchSF|BsmtFinType1_Tencode', '2ndFlrSF|Utilities_Tencode', 'FullBath|PavedDrive_Tencode', 'PoolQC_Tencode|MasVnrType_Tencode', 'BsmtFullBath|Fireplaces', 'GarageCond_Tencode|Functional_Tencode', 'BsmtUnfSF|BsmtFinType2_Tencode', 'MSSubClass|EnclosedPorch', 'BsmtFinSF2|Condition2_Tencode', 'LowQualFinSF|SaleType_Tencode', 'ScreenPorch|BsmtFinType2_Tencode', 'Condition2_Tencode|GarageYrBlt', 'Foundation_Tencode|OverallCond', 'RoofMatl_Tencode|GarageArea', 'GarageFinish_Tencode|BsmtFinType1_Tencode', 'GarageArea|GarageCars', 'GarageQual_Tencode|SaleType_Tencode', 'BedroomAbvGr|HeatingQC_Tencode', 'BsmtFinType1_Tencode|YearBuilt', 'MSZoning_Tencode|WoodDeckSF', 'Alley_Tencode|MiscVal', 'BsmtFullBath|BsmtCond_Tencode', '2ndFlrSF|HeatingQC_Tencode', 'BsmtCond_Tencode|BedroomAbvGr', 'YearRemodAdd|ExterQual_Tencode', 'YrSold|GarageFinish_Tencode', 'GarageYrBlt|Functional_Tencode', 'Condition1_Tencode|Utilities_Tencode', 'Foundation_Tencode|HeatingQC_Tencode', 'WoodDeckSF|GarageArea', 'LandContour_Tencode|Exterior2nd_Tencode', 'MiscVal|Condition1_Tencode', 'TotRmsAbvGrd|GarageCars', 'BsmtExposure_Tencode|BsmtQual_Tencode', 'Foundation_Tencode|BldgType_Tencode', 'GrLivArea|HeatingQC_Tencode', 'LandContour_Tencode|YrSold', 'KitchenAbvGr|FullBath', 'WoodDeckSF|MasVnrType_Tencode', 'Electrical_Tencode|TotRmsAbvGrd', 'BsmtFinType1_Tencode|Heating_Tencode', 'ExterCond_Tencode|Utilities_Tencode', 'MSZoning_Tencode|BsmtQual_Tencode', 'LandSlope_Tencode|LowQualFinSF', 'HeatingQC_Tencode|GarageType_Tencode', 'TotalBsmtSF|WoodDeckSF', 'Electrical_Tencode|FullBath', 'BsmtFinType2_Tencode|Neighborhood_Tencode', 'GarageArea|BedroomAbvGr', 'MoSold|PoolQC_Tencode', 'WoodDeckSF|PoolQC_Tencode', 'BsmtFinType2_Tencode|HalfBath', 'MoSold|MiscVal', 'YearRemodAdd|LotFrontage', '2ndFlrSF|BsmtQual_Tencode', 'MSSubClass|GarageCond_Tencode', 'TotalBsmtSF|TotRmsAbvGrd', 'ExterCond_Tencode|OpenPorchSF', 'PoolArea|SaleType_Tencode', 'Alley_Tencode|GarageArea', 'HeatingQC_Tencode|HalfBath', '3SsnPorch|GarageCars', 'TotRmsAbvGrd|GarageYrBlt', 'FireplaceQu_Tencode|Neighborhood_Tencode', 'PavedDrive_Tencode|GarageYrBlt', '3SsnPorch|BedroomAbvGr', 'Electrical_Tencode|BsmtHalfBath', 'GarageArea|LotShape_Tencode', 'LandContour_Tencode|Alley_Tencode', 'EnclosedPorch|Neighborhood_Tencode', 'GarageYrBlt|GarageType_Tencode', 'Exterior2nd_Tencode|LotArea', 'BsmtFullBath|1stFlrSF', 'LandContour_Tencode|PoolArea', 'TotRmsAbvGrd|YearRemodAdd', 'FullBath|EnclosedPorch', 'MSSubClass|WoodDeckSF', 'LotFrontage|Heating_Tencode', 'KitchenQual_Tencode|BsmtFinType1_Tencode', 'TotalBsmtSF|Functional_Tencode', 'MoSold|LotShape_Tencode', 'GarageYrBlt|Heating_Tencode', 'MasVnrType_Tencode|SaleType_Tencode', 'MSSubClass|Condition2_Tencode', 'OverallCond|MiscFeature_Tencode', 'Condition2_Tencode|BsmtQual_Tencode', 'PoolArea|OverallCond', 'Exterior1st_Tencode|GarageQual_Tencode', 'MSZoning_Tencode|GarageFinish_Tencode', 'HouseStyle_Tencode|MiscFeature_Tencode', 'Utilities_Tencode|MiscFeature_Tencode', 'Electrical_Tencode|BedroomAbvGr', 'CentralAir_Tencode|OpenPorchSF', 'RoofMatl_Tencode|LotShape_Tencode', 'BsmtFinSF1|CentralAir_Tencode', 'GarageCond_Tencode|MasVnrType_Tencode', 'Neighborhood_Tencode', 'FullBath|GarageCond_Tencode', 'TotRmsAbvGrd|BsmtHalfBath', 'TotRmsAbvGrd|SaleCondition_Tencode', 'PoolQC_Tencode|HalfBath', 'TotalBsmtSF|MSSubClass', 'FireplaceQu_Tencode|PoolArea', 'BsmtFullBath|BsmtUnfSF', 'TotRmsAbvGrd|GrLivArea', 'GarageCond_Tencode|HouseStyle_Tencode', 'MiscVal|HalfBath', 'LotFrontage|Functional_Tencode', 'ExterCond_Tencode|3SsnPorch', 'BsmtFullBath|ExterQual_Tencode', 'PavedDrive_Tencode|HeatingQC_Tencode', 'OverallCond|HalfBath', 'BsmtFinSF2|MasVnrArea', 'MSZoning_Tencode|3SsnPorch', 'YrSold|RoofStyle_Tencode', 'WoodDeckSF', 'MSZoning_Tencode|RoofStyle_Tencode', 'LandContour_Tencode|LotArea', 'Fence_Tencode', 'GrLivArea|LotShape_Tencode', 'FireplaceQu_Tencode|Utilities_Tencode', 'RoofMatl_Tencode|LotFrontage', 'HeatingQC_Tencode|BldgType_Tencode', 'HeatingQC_Tencode|Utilities_Tencode', '1stFlrSF|OpenPorchSF', 'RoofStyle_Tencode|MiscVal', 'BsmtCond_Tencode|GarageType_Tencode', 'Electrical_Tencode|PavedDrive_Tencode', 'MasVnrArea|HalfBath', 'Fireplaces|OpenPorchSF', 'KitchenAbvGr|Condition2_Tencode', 'OverallCond|Utilities_Tencode', 'FireplaceQu_Tencode|Exterior2nd_Tencode', 'Condition2_Tencode|Exterior1st_Tencode', 'GrLivArea|ScreenPorch', 'HeatingQC_Tencode|Neighborhood_Tencode', 'YearRemodAdd|SaleCondition_Tencode', 'RoofMatl_Tencode|BsmtHalfBath', 'FullBath|BedroomAbvGr', 'TotalBsmtSF|Street_Tencode', 'SaleCondition_Tencode|LowQualFinSF', 'PoolArea|BsmtFinType2_Tencode', 'PoolQC_Tencode|SaleType_Tencode', 'KitchenAbvGr|MSSubClass', 'BsmtFinSF1|LotConfig_Tencode', 'BsmtUnfSF|LotShape_Tencode', 'ExterQual_Tencode|HeatingQC_Tencode', 'BsmtFinType2_Tencode|HouseStyle_Tencode', 'PoolArea|YearBuilt', 'LandContour_Tencode|YearBuilt', 'BedroomAbvGr|MiscFeature_Tencode', 'YrSold|OverallQual', 'FullBath|Exterior2nd_Tencode', 'BsmtFinSF2|KitchenQual_Tencode', 'BsmtFinType2_Tencode|SaleType_Tencode', 'Fireplaces|ScreenPorch', 'LandContour_Tencode|GarageCond_Tencode', 'Foundation_Tencode|3SsnPorch', 'CentralAir_Tencode|LotArea', 'MoSold|Street_Tencode', 'BsmtExposure_Tencode|HeatingQC_Tencode', 'Heating_Tencode|HouseStyle_Tencode', 'Fence_Tencode|BedroomAbvGr', 'Exterior2nd_Tencode|OpenPorchSF', '1stFlrSF|SaleType_Tencode', 'Alley_Tencode|BsmtFullBath', 'BsmtFinSF1|BedroomAbvGr', 'ExterQual_Tencode|GarageArea', 'TotalBsmtSF', 'PavedDrive_Tencode|Condition1_Tencode', 'WoodDeckSF|GarageFinish_Tencode', 'KitchenAbvGr|BsmtFinType1_Tencode', 'RoofStyle_Tencode|LowQualFinSF', 'BsmtFinSF1|Fence_Tencode', 'BsmtFullBath|PoolArea', 'MSZoning_Tencode|GarageArea', 'LandContour_Tencode|Heating_Tencode', 'TotRmsAbvGrd|BldgType_Tencode', 'TotalBsmtSF|BldgType_Tencode', 'Alley_Tencode|GarageYrBlt', 'LandContour_Tencode|HouseStyle_Tencode', '3SsnPorch|OpenPorchSF', 'Electrical_Tencode|2ndFlrSF', 'ExterCond_Tencode|BsmtFinType1_Tencode', 'LowQualFinSF|PoolQC_Tencode', 'Foundation_Tencode|OverallQual', 'Fireplaces|SaleCondition_Tencode', 'LandContour_Tencode|Functional_Tencode', 'BsmtHalfBath|Street_Tencode', 'RoofStyle_Tencode|HalfBath', 'LotConfig_Tencode|LotShape_Tencode', 'TotalBsmtSF|ExterQual_Tencode', 'ScreenPorch|HalfBath', '1stFlrSF|FullBath', 'Condition1_Tencode|YearBuilt', 'LotConfig_Tencode|PoolQC_Tencode', 'LotShape_Tencode|Utilities_Tencode', 'GarageCond_Tencode|BsmtCond_Tencode', '3SsnPorch|RoofStyle_Tencode', 'TotRmsAbvGrd|Condition1_Tencode', 'PoolArea|HeatingQC_Tencode', 'LotConfig_Tencode|WoodDeckSF', 'GarageFinish_Tencode|MasVnrType_Tencode', 'BsmtExposure_Tencode|OpenPorchSF', 'BsmtFinType2_Tencode|MiscFeature_Tencode', 'MoSold|YearBuilt', 'SaleCondition_Tencode|Condition1_Tencode', 'GarageArea|OverallQual', 'FullBath|PoolQC_Tencode', 'FullBath|MiscFeature_Tencode', 'Foundation_Tencode|BsmtFinType2_Tencode', 'PoolArea|Neighborhood_Tencode', 'BsmtFinType1_Tencode|MiscFeature_Tencode', 'BldgType_Tencode|OverallCond', 'OverallCond|GarageQual_Tencode', 'KitchenAbvGr|CentralAir_Tencode', 'BsmtFinSF2|GarageQual_Tencode', 'LandSlope_Tencode', 'TotRmsAbvGrd|GarageType_Tencode', 'KitchenQual_Tencode|MasVnrType_Tencode', 'BsmtFinSF1|Neighborhood_Tencode', 'BsmtHalfBath|Exterior2nd_Tencode', 'TotRmsAbvGrd|MoSold', 'YrSold|HalfBath', 'MasVnrArea|BsmtCond_Tencode', 'ScreenPorch|LandSlope_Tencode', 'Fireplaces|GarageCars', 'SaleCondition_Tencode|BsmtFinType2_Tencode', 'MasVnrArea|LotShape_Tencode', 'MSSubClass|Fireplaces', 'BsmtExposure_Tencode|Neighborhood_Tencode', 'Exterior1st_Tencode|GarageCond_Tencode', 'Foundation_Tencode|BsmtCond_Tencode', 'FireplaceQu_Tencode|OverallQual', 'LotShape_Tencode|MiscFeature_Tencode', 'LandContour_Tencode|GarageCars', 'GarageArea|MiscFeature_Tencode', 'LotShape_Tencode|BldgType_Tencode', 'RoofMatl_Tencode|BsmtCond_Tencode', 'BsmtFinType1_Tencode|BldgType_Tencode', 'YrSold|GarageType_Tencode', 'GrLivArea|LotArea', 'ExterCond_Tencode|Exterior1st_Tencode', 'GrLivArea|SaleCondition_Tencode', 'BsmtFullBath|MiscFeature_Tencode', 'YrSold|BldgType_Tencode', 'BsmtExposure_Tencode|BsmtUnfSF', 'FullBath|GarageType_Tencode', 'BsmtHalfBath|Fence_Tencode', 'Electrical_Tencode|HouseStyle_Tencode', 'KitchenAbvGr|LotFrontage', 'YearRemodAdd|KitchenQual_Tencode', 'PoolQC_Tencode|Functional_Tencode', 'LowQualFinSF|GarageFinish_Tencode', 'GarageFinish_Tencode|LotShape_Tencode', 'ExterCond_Tencode|ExterQual_Tencode', 'LandContour_Tencode|Condition1_Tencode', 'OpenPorchSF|Neighborhood_Tencode', '1stFlrSF|CentralAir_Tencode', 'TotalBsmtSF|Exterior2nd_Tencode', 'MSSubClass|LowQualFinSF', 'Alley_Tencode|BsmtQual_Tencode', 'BsmtFinSF1|Exterior2nd_Tencode', 'ExterQual_Tencode|Condition1_Tencode', 'MSSubClass|BsmtFinType1_Tencode', 'FireplaceQu_Tencode|Condition1_Tencode', 'GarageQual_Tencode|Utilities_Tencode', 'MSZoning_Tencode|Exterior1st_Tencode', 'Fence_Tencode|HeatingQC_Tencode', 'Foundation_Tencode|Neighborhood_Tencode', 'LandSlope_Tencode|BsmtFinType2_Tencode', 'ScreenPorch|OverallCond', 'ScreenPorch|1stFlrSF', 'MiscVal|OverallCond', 'WoodDeckSF|MiscVal', 'LotArea|Heating_Tencode', 'LotConfig_Tencode|SaleType_Tencode', 'BsmtCond_Tencode|Street_Tencode', 'ScreenPorch|BsmtHalfBath', 'PoolArea|BsmtFinType1_Tencode', 'YrSold|CentralAir_Tencode', 'ScreenPorch|CentralAir_Tencode', '1stFlrSF|PavedDrive_Tencode', 'BsmtFullBath|MiscVal', 'YearRemodAdd|Fireplaces', 'TotRmsAbvGrd|Neighborhood_Tencode', 'BsmtFinSF2|LotConfig_Tencode', 'Condition1_Tencode|OpenPorchSF', 'SaleCondition_Tencode|LandSlope_Tencode', 'Electrical_Tencode|Functional_Tencode', 'CentralAir_Tencode|LowQualFinSF', 'BsmtFullBath|YrSold', 'SaleCondition_Tencode|PoolQC_Tencode', 'GarageYrBlt|LotArea', 'MSSubClass|LotConfig_Tencode', 'GarageCond_Tencode|BsmtUnfSF', 'YearBuilt|OverallQual', 'EnclosedPorch|Condition1_Tencode', 'Condition2_Tencode|KitchenQual_Tencode', 'RoofStyle_Tencode|Fence_Tencode', 'PoolArea|BedroomAbvGr', 'Fireplaces|BsmtFinType2_Tencode', 'RoofStyle_Tencode|PoolQC_Tencode', 'BsmtUnfSF|HouseStyle_Tencode', 'EnclosedPorch|LotFrontage', 'LotFrontage|HeatingQC_Tencode', 'ExterQual_Tencode|OverallCond', '3SsnPorch|HalfBath', 'HalfBath|HouseStyle_Tencode', 'GrLivArea|LandSlope_Tencode', 'Condition2_Tencode|Fireplaces', 'BsmtFinSF2|BsmtFullBath', 'MasVnrArea|Neighborhood_Tencode', 'Heating_Tencode|MiscFeature_Tencode', 'BsmtFinSF2|ScreenPorch', 'Electrical_Tencode|LotShape_Tencode', 'BedroomAbvGr|HouseStyle_Tencode', 'KitchenAbvGr|Fireplaces', 'FireplaceQu_Tencode|MasVnrType_Tencode', 'GarageFinish_Tencode|GarageQual_Tencode', 'Exterior1st_Tencode|LotArea', 'PoolArea|GarageType_Tencode', 'ScreenPorch|MiscVal', 'Foundation_Tencode|YearRemodAdd', 'SaleCondition_Tencode|LotConfig_Tencode', 'CentralAir_Tencode|WoodDeckSF', 'Fireplaces|HeatingQC_Tencode', 'ExterCond_Tencode|MSZoning_Tencode', 'ScreenPorch|FullBath', 'BsmtFinSF2|GarageCond_Tencode', 'RoofMatl_Tencode|BedroomAbvGr', 'CentralAir_Tencode|HeatingQC_Tencode', 'LandSlope_Tencode|EnclosedPorch', 'BsmtExposure_Tencode|HouseStyle_Tencode', 'BsmtFinSF2|YrSold', 'Fireplaces|EnclosedPorch', 'RoofMatl_Tencode|1stFlrSF', 'ExterCond_Tencode|GarageFinish_Tencode', 'EnclosedPorch|WoodDeckSF', 'Fireplaces|BldgType_Tencode', 'GarageYrBlt|OpenPorchSF', '3SsnPorch|MiscVal', 'GarageArea|MasVnrType_Tencode', 'MoSold|HalfBath', 'BsmtFullBath|YearRemodAdd', 'Electrical_Tencode|YearRemodAdd', 'YearRemodAdd|YearBuilt', 'BsmtFinSF2|HouseStyle_Tencode', 'Fence_Tencode|Heating_Tencode', 'Fireplaces|Exterior2nd_Tencode', 'MoSold|Heating_Tencode', 'BsmtFullBath|GarageType_Tencode', 'YrSold|BsmtQual_Tencode', 'TotalBsmtSF|LotConfig_Tencode', 'KitchenAbvGr|LotArea', 'Exterior2nd_Tencode|SaleType_Tencode', 'BsmtExposure_Tencode|BsmtFinType2_Tencode', 'Exterior1st_Tencode|MiscVal', 'GarageArea|Neighborhood_Tencode', 'RoofMatl_Tencode|FullBath', 'LandSlope_Tencode|GarageCond_Tencode', '2ndFlrSF|KitchenQual_Tencode', '1stFlrSF|YearBuilt', 'Fireplaces|PoolArea', 'MoSold|GarageQual_Tencode', '1stFlrSF|GarageFinish_Tencode', 'BsmtFinType1_Tencode|OverallQual', 'YrSold|WoodDeckSF', 'Condition2_Tencode|EnclosedPorch', 'KitchenAbvGr|LowQualFinSF', 'LotConfig_Tencode|MiscFeature_Tencode', 'LotArea|HouseStyle_Tencode', 'TotRmsAbvGrd|LotConfig_Tencode', 'BsmtFinSF2|Street_Tencode', 'ExterCond_Tencode|BedroomAbvGr', 'OverallCond|GarageType_Tencode', 'PavedDrive_Tencode|Neighborhood_Tencode', 'Foundation_Tencode|SaleType_Tencode', 'PoolArea|MiscFeature_Tencode', 'BsmtExposure_Tencode|FullBath', 'FullBath|RoofStyle_Tencode', 'PavedDrive_Tencode|BsmtCond_Tencode', 'ScreenPorch|BldgType_Tencode', 'LowQualFinSF|HouseStyle_Tencode', 'PavedDrive_Tencode|LotShape_Tencode', 'KitchenAbvGr|YearBuilt', 'SaleCondition_Tencode|BsmtQual_Tencode', 'YearRemodAdd|RoofMatl_Tencode', 'RoofStyle_Tencode|Condition1_Tencode', 'Exterior1st_Tencode|HouseStyle_Tencode', 'MiscVal|OverallQual', 'LandContour_Tencode|OpenPorchSF', 'YearRemodAdd|Utilities_Tencode', 'BsmtFinSF2|Utilities_Tencode', 'Condition2_Tencode', 'BsmtQual_Tencode|SaleType_Tencode', 'KitchenAbvGr|Street_Tencode', 'Condition2_Tencode|GarageCars', 'LandSlope_Tencode|HouseStyle_Tencode', 'Electrical_Tencode|BsmtFinSF2', 'YrSold|ExterQual_Tencode', 'BsmtHalfBath|Functional_Tencode', 'BsmtFinSF1', 'Electrical_Tencode|GarageYrBlt', 'ExterQual_Tencode|BsmtFinType2_Tencode', 'Electrical_Tencode|ExterQual_Tencode', 'CentralAir_Tencode|OverallCond', 'Heating_Tencode|OverallQual', '1stFlrSF|EnclosedPorch', 'YearRemodAdd|OverallCond', 'KitchenQual_Tencode|LotShape_Tencode', '3SsnPorch|BsmtHalfBath', 'CentralAir_Tencode|GarageArea', 'WoodDeckSF|HouseStyle_Tencode', 'Exterior2nd_Tencode|Utilities_Tencode', 'GarageYrBlt|YearBuilt', 'ExterCond_Tencode|HalfBath', 'MiscVal|Heating_Tencode', 'Street_Tencode|LotShape_Tencode', 'BsmtUnfSF|Neighborhood_Tencode', 'BsmtFinSF2|Foundation_Tencode', 'MiscVal|BsmtFinType1_Tencode', 'Condition2_Tencode|MiscFeature_Tencode', 'BsmtFinSF2|3SsnPorch', 'MSZoning_Tencode|BldgType_Tencode', '1stFlrSF|BsmtQual_Tencode', 'KitchenQual_Tencode|HouseStyle_Tencode', 'TotRmsAbvGrd|GarageQual_Tencode', 'SaleCondition_Tencode|BsmtFinType1_Tencode', 'LotArea|SaleType_Tencode', 'Condition1_Tencode|BedroomAbvGr', 'MoSold|OverallCond', 'LandContour_Tencode|Exterior1st_Tencode', 'MasVnrArea|FullBath', 'ExterCond_Tencode|GarageYrBlt', 'LowQualFinSF|GarageCars', 'YearRemodAdd|GarageCond_Tencode', 'FullBath|BsmtCond_Tencode', 'BldgType_Tencode|GarageType_Tencode', 'Street_Tencode|HeatingQC_Tencode', 'Alley_Tencode|BldgType_Tencode', 'GarageCond_Tencode|MiscFeature_Tencode', 'Condition2_Tencode|HalfBath', 'GarageCond_Tencode', 'LotConfig_Tencode|KitchenQual_Tencode', 'PavedDrive_Tencode|OverallCond', 'EnclosedPorch|BsmtCond_Tencode', 'LotFrontage', 'BsmtFinSF1|HeatingQC_Tencode', 'LandSlope_Tencode|WoodDeckSF', 'FireplaceQu_Tencode|Street_Tencode', 'ExterQual_Tencode|KitchenQual_Tencode', 'PavedDrive_Tencode|LowQualFinSF', 'BedroomAbvGr|OverallCond', 'LandSlope_Tencode|MiscVal', 'ScreenPorch|GarageQual_Tencode', 'BsmtHalfBath|LandSlope_Tencode', 'EnclosedPorch|KitchenQual_Tencode', 'BsmtFinSF2|HeatingQC_Tencode', 'MSSubClass|MiscVal', 'Street_Tencode|SaleType_Tencode', 'Fireplaces|OverallQual', '3SsnPorch|Neighborhood_Tencode', 'MSZoning_Tencode|BedroomAbvGr', 'BsmtFullBath|Utilities_Tencode', 'GarageArea|OpenPorchSF', 'Alley_Tencode|Fence_Tencode', 'LotArea', 'GarageFinish_Tencode|KitchenQual_Tencode', 'BsmtExposure_Tencode|RoofStyle_Tencode', 'Functional_Tencode|SaleType_Tencode', 'BsmtUnfSF|BldgType_Tencode', 'TotalBsmtSF|MSZoning_Tencode', '1stFlrSF|LotArea', 'LandContour_Tencode|GarageArea', 'Functional_Tencode|Utilities_Tencode', 'PavedDrive_Tencode|GarageCars', 'Electrical_Tencode|BsmtExposure_Tencode', 'GarageArea|YearBuilt', 'FireplaceQu_Tencode|MSZoning_Tencode', 'HeatingQC_Tencode|BsmtFinType1_Tencode', 'CentralAir_Tencode|GarageFinish_Tencode', 'MasVnrArea|GarageCars', 'ScreenPorch|PoolArea', 'RoofMatl_Tencode|KitchenQual_Tencode', 'SaleType_Tencode', 'ExterQual_Tencode|WoodDeckSF', 'GarageType_Tencode|HouseStyle_Tencode', 'FireplaceQu_Tencode|ScreenPorch', 'MiscVal|KitchenQual_Tencode', 'Foundation_Tencode|BsmtFinType1_Tencode', 'Foundation_Tencode|LandSlope_Tencode', 'EnclosedPorch', 'SaleCondition_Tencode|BsmtHalfBath', '3SsnPorch|Exterior2nd_Tencode', '2ndFlrSF|OpenPorchSF', 'KitchenAbvGr|GarageCars', 'MasVnrArea|BsmtFinSF1', 'Foundation_Tencode|MasVnrArea', 'Foundation_Tencode|2ndFlrSF', 'GarageFinish_Tencode|Utilities_Tencode', 'YearRemodAdd|LotShape_Tencode', 'BsmtQual_Tencode|BsmtCond_Tencode', 'Condition1_Tencode|LotArea', 'BsmtQual_Tencode|BsmtHalfBath', 'BsmtExposure_Tencode|GarageYrBlt', 'BsmtFinSF1|PavedDrive_Tencode', 'SaleCondition_Tencode|GarageCars', 'BsmtQual_Tencode|BldgType_Tencode', 'LotFrontage|MasVnrType_Tencode', 'Electrical_Tencode|Alley_Tencode', 'SaleCondition_Tencode|GarageQual_Tencode', 'MiscVal|Street_Tencode', 'BsmtFullBath|OpenPorchSF', 'GarageCond_Tencode|Street_Tencode', 'BsmtFullBath|LotFrontage', 'Alley_Tencode|BsmtFinSF1', '1stFlrSF|RoofStyle_Tencode', 'BsmtFullBath', 'KitchenAbvGr|MasVnrType_Tencode', 'PavedDrive_Tencode|GarageCond_Tencode', 'TotalBsmtSF|RoofStyle_Tencode', 'ExterQual_Tencode|Heating_Tencode', 'TotRmsAbvGrd|Fence_Tencode', 'Electrical_Tencode|LotConfig_Tencode', 'TotalBsmtSF|1stFlrSF', 'MSZoning_Tencode|HeatingQC_Tencode', 'TotRmsAbvGrd|MSSubClass', 'ExterQual_Tencode|OverallQual', 'RoofMatl_Tencode|OverallCond', 'MSSubClass|FullBath', 'MiscVal|SaleType_Tencode', 'CentralAir_Tencode|GarageType_Tencode', 'GarageCond_Tencode|OpenPorchSF', 'ScreenPorch|BsmtQual_Tencode', 'GarageCond_Tencode|KitchenQual_Tencode', 'PoolArea|HalfBath', 'BsmtFinSF2|OverallCond', 'BsmtCond_Tencode|KitchenQual_Tencode', 'BsmtFullBath|GarageCars', 'LandContour_Tencode|LandSlope_Tencode', 'YearRemodAdd|SaleType_Tencode', 'BsmtFinSF1|Heating_Tencode', 'Condition1_Tencode|MasVnrType_Tencode', 'Electrical_Tencode|SaleType_Tencode', 'Foundation_Tencode|FullBath', 'BsmtFinType2_Tencode|Utilities_Tencode', 'KitchenAbvGr|Foundation_Tencode', 'Exterior2nd_Tencode|Functional_Tencode', 'Condition2_Tencode|HouseStyle_Tencode', 'MasVnrArea|OverallCond', 'SaleCondition_Tencode|OpenPorchSF', 'TotRmsAbvGrd|WoodDeckSF', 'BsmtFinSF2|YearRemodAdd', 'Alley_Tencode|PavedDrive_Tencode', 'GarageFinish_Tencode|GarageType_Tencode', 'MasVnrArea|GarageCond_Tencode', 'Fence_Tencode|GarageCars', 'RoofMatl_Tencode|PavedDrive_Tencode', 'BsmtExposure_Tencode|BsmtCond_Tencode', 'BsmtFinType1_Tencode|Neighborhood_Tencode', 'BsmtFinSF1|OverallQual', 'RoofMatl_Tencode|GarageFinish_Tencode', 'RoofMatl_Tencode|Exterior2nd_Tencode', 'BsmtFinSF1|BsmtFinType1_Tencode', 'PoolArea|Utilities_Tencode', 'HalfBath|OverallQual', 'Functional_Tencode|GarageQual_Tencode', 'LandSlope_Tencode|BldgType_Tencode', 'LandContour_Tencode|FullBath', 'RoofMatl_Tencode|Utilities_Tencode', 'Condition2_Tencode|MoSold', 'MSSubClass|PavedDrive_Tencode', 'KitchenAbvGr|PoolArea', 'FireplaceQu_Tencode|Foundation_Tencode', 'GrLivArea|BsmtFinSF1', 'MasVnrArea|PavedDrive_Tencode', 'YearRemodAdd|BsmtFinType2_Tencode', 'MiscVal|LotShape_Tencode', '2ndFlrSF|BsmtUnfSF', 'KitchenAbvGr|GarageCond_Tencode', 'Condition2_Tencode|BsmtExposure_Tencode', 'FireplaceQu_Tencode|GarageCars', 'GrLivArea|YearBuilt', 'Condition2_Tencode|1stFlrSF', 'Heating_Tencode|Utilities_Tencode', 'MSZoning_Tencode|BsmtUnfSF', 'Street_Tencode|BsmtFinType1_Tencode', 'GarageCond_Tencode|Neighborhood_Tencode', 'BsmtFinSF2|BedroomAbvGr', 'ExterQual_Tencode|LowQualFinSF', '3SsnPorch|BsmtUnfSF', 'KitchenAbvGr|MasVnrArea']\n", "\n", "Categorical = ['HeatingQC', 'BsmtFinType2', 'Foundation', 'HouseStyle', 'Functional', 'SaleCondition', 'Condition1', 'ExterCond', 'Alley', 'PavedDrive', 'Neighborhood', 'Exterior2nd', 'BsmtQual', 'LotConfig', 'KitchenQual', 'RoofStyle', 'PoolQC', 'BsmtCond', 'GarageCond', 'CentralAir', 'MSZoning', 'FireplaceQu', 'LotShape', 'MasVnrType', 'BldgType', 'SaleType', 'Exterior1st', 'ExterQual', 'Street', 'Condition2', 'RoofMatl', 'Utilities', 'LandContour', 'LandSlope', 'Electrical', 'BsmtExposure', 'Heating', 'GarageType', 'GarageFinish', 'MiscFeature', 'GarageQual', 'Fence', 'BsmtFinType1']\n" ] } ], "source": [ "encoded_combined_nums, cats = get_type_lists(frame=train)" ] }, { "cell_type": "code", "execution_count": 137, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n", "True\n" ] } ], "source": [ "# check number of created variables is correct\n", "# 1 id column, 1 target column, 79 original + encoded numeric columns, 43 original categorical variables\n", "# sum(range(1, 79)) combined variables\n", "print(train.shape == (1001, sum(range(1, 79), (79 + 43 + 1 + 1))))\n", "print(test.shape == (1459, sum(range(1, 79), (79 + 43 + 1 + 1))))" ] }, { "cell_type": "code", "execution_count": 138, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
CentralAir_Tencode MasVnrType_Tencode CentralAir_Tencode|MasVnrType_Tencode
186782 203515 3.8013e+10
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
CentralAir_Tencode MasVnrType_Tencode CentralAir_Tencode|MasVnrType_Tencode
184861 157482 2.91123e+10
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "38012996430.17197\n", "29112284469.574463\n" ] } ], "source": [ "# check multiplication for a random column\n", "ridx = np.random.choice(sum(range(1, 79)))\n", "combined_only = [name for name in encoded_combined_nums if name not in encoded_nums]\n", "combined_check_vars = combined_only[ridx].split('|')\n", "combined_check_vars.append(combined_only[ridx])\n", "\n", "print(train[736, combined_check_vars])\n", "print(test[637, combined_check_vars])\n", "\n", "print(train[736, combined_check_vars[0]]*train[736, combined_check_vars[1]])\n", "print(test[637, combined_check_vars[0]]*test[637, combined_check_vars[1]])" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "## Train models" ] }, { "cell_type": "code", "execution_count": 139, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "h2o.show_progress() # turn on progress bars" ] }, { "cell_type": "code", "execution_count": 140, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice
12.2477
12.109
12.3172
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Check log transform - looks good\n", "%matplotlib inline\n", "train['SalePrice'].log().as_data_frame().hist()\n", "\n", "# Execute log transform\n", "train['SalePrice'] = train['SalePrice'].log()\n", "valid['SalePrice'] = valid['SalePrice'].log()\n", "print(train[0:3, 'SalePrice'])" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "#### Define ranked predictions plot function" ] }, { "cell_type": "code", "execution_count": 141, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "def ranked_preds_plot(y, valid, preds):\n", " \n", " \"\"\" Generates ranked prediction plot.\n", " \n", " :param y: Name of target variable.\n", " :param valid: Name of validation H2OFrame.\n", " :param preds: Column vector of predictions to plot.\n", "\n", " \"\"\"\n", " \n", " # plot top frame values\n", " preds.columns = ['predict']\n", " yhat_frame = valid.cbind(preds)\n", " print(yhat_frame[0:10, [y, 'predict']])\n", "\n", " # plot sorted predictions\n", " yhat_frame_df = yhat_frame[[y, 'predict']].as_data_frame()\n", " yhat_frame_df.sort_values(by='predict', inplace=True)\n", " yhat_frame_df.reset_index(inplace=True, drop=True)\n", " _ = yhat_frame_df.plot(title='Ranked Predictions Plot')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Function to generate submission file" ] }, { "cell_type": "code", "execution_count": 142, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import re\n", "import time\n", "\n", "def gen_submission(preds, test=test):\n", "\n", " \"\"\" Generates submission file for Kaggle House Prices contest.\n", " \n", " :param preds: Column vector of predictions.\n", " :param test: Test data.\n", " \n", " \"\"\"\n", " \n", " # create time stamp\n", " time_stamp = re.sub('[: ]', '_', time.asctime())\n", "\n", " # create predictions column\n", " sub = test['Id'].cbind(preds.exp())\n", " sub.columns = ['Id', 'SalePrice']\n", " \n", " # save file for submission\n", " sub_fname = '../data/submission_' + str(time_stamp) + '.csv'\n", " h2o.download_csv(sub, sub_fname)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Simple prediction blending function" ] }, { "cell_type": "code", "execution_count": 143, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import os\n", "\n", "def pred_blender(dir_, files):\n", " \n", " \"\"\" Performs simple blending of prediction files. \n", " \n", " :param dir_: Directory in which files to be read are stored.\n", " :param files: List of prediction files to be blended.\n", " \n", " \"\"\"\n", " \n", " # read predictions in files list and cbind\n", " for i, file in enumerate(files):\n", " if i == 0:\n", " df = pd.read_csv(dir_ + os.sep + file).drop('SalePrice', axis=1)\n", " col = pd.read_csv(dir_ + os.sep + file).drop('Id', axis=1)\n", " col.columns = ['SalePrice' + str(i)]\n", " df = pd.concat([df, col], axis=1)\n", " \n", " # create mean prediction \n", " df['mean'] = df.iloc[:, 1:].mean(axis=1)\n", " print(df.head())\n", " \n", " # create time stamp\n", " time_stamp = re.sub('[: ]', '_', time.asctime()) \n", " \n", " # write new submission file \n", " df = df[['Id', 'mean']]\n", " df.columns = ['Id', 'SalePrice']\n", " \n", " # save file for submission\n", " sub_fname = '../data/submission_' + str(time_stamp) + '.csv'\n", " df.to_csv(sub_fname, index=False)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Random forest model - typically not tuned as much as GBM" ] }, { "cell_type": "code", "execution_count": 191, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "drf Model Build progress: |███████████████████████████████████████████████| 100%\n", "Model Details\n", "=============\n", "H2ORandomForestEstimator : Distributed Random Forest\n", "Model Key: DRF_model_python_1497530715156_39\n", "\n", "\n", "ModelMetricsRegression: drf\n", "** Reported on train data. **\n", "\n", "MSE: 0.017103284870273683\n", "RMSE: 0.13077952771849913\n", "MAE: 0.08983148719488154\n", "RMSLE: 0.010147981199023763\n", "Mean Residual Deviance: 0.017103284870273683\n", "\n", "ModelMetricsRegression: drf\n", "** Reported on validation data. **\n", "\n", "MSE: 0.018264657787037664\n", "RMSE: 0.13514680087607572\n", "MAE: 0.09885812331003446\n", "RMSLE: 0.010437127656733918\n", "Mean Residual Deviance: 0.018264657787037664\n", "\n", "ModelMetricsRegression: drf\n", "** Reported on cross-validation data. **\n", "\n", "MSE: 0.018240553858393096\n", "RMSE: 0.13505759459724245\n", "MAE: 0.08959435620967451\n", "RMSLE: 0.010509925297604954\n", "Mean Residual Deviance: 0.018240553858393096\n", "Cross-Validation Metrics Summary: \n" ] }, { "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", "
meansdcv_1_validcv_2_validcv_3_valid
mae0.08952600.00112470.08843360.09177500.0883693
mean_residual_deviance0.01820640.00158920.01986770.01972240.0150292
mse0.01820640.00158920.01986770.01972240.0150292
r20.88189270.00416690.87417160.88846930.8830372
residual_deviance0.01820640.00158920.01986770.01972240.0150292
rmse0.13466100.00603550.14095290.14043650.1225936
rmsle0.01046960.00053930.01099370.01102410.0093911
" ], "text/plain": [ " mean sd cv_1_valid cv_2_valid cv_3_valid\n", "---------------------- --------- ----------- ------------ ------------ ------------\n", "mae 0.089526 0.00112467 0.0884336 0.091775 0.0883693\n", "mean_residual_deviance 0.0182064 0.00158918 0.0198677 0.0197224 0.0150292\n", "mse 0.0182064 0.00158918 0.0198677 0.0197224 0.0150292\n", "r2 0.881893 0.00416688 0.874172 0.888469 0.883037\n", "residual_deviance 0.0182064 0.00158918 0.0198677 0.0197224 0.0150292\n", "rmse 0.134661 0.00603553 0.140953 0.140436 0.122594\n", "rmsle 0.0104696 0.000539345 0.0109937 0.0110241 0.00939107" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Scoring History: \n" ] }, { "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", "
timestampdurationnumber_of_treestraining_rmsetraining_maetraining_deviancevalidation_rmsevalidation_maevalidation_deviance
2017-06-15 15:57:45 1 min 57.627 sec0.0nannannannannannan
2017-06-15 15:57:45 1 min 57.913 sec1.00.22389430.14509920.05012870.22407920.15367620.0502115
2017-06-15 15:57:46 1 min 58.201 sec2.00.21287760.14487690.04531690.17862170.13064840.0319057
2017-06-15 15:57:46 1 min 58.471 sec3.00.20791950.14407040.04323050.16628000.12094410.0276490
2017-06-15 15:57:46 1 min 58.784 sec4.00.20632580.13960380.04257030.16034340.12092250.0257100
------------------------------
2017-06-15 15:58:28 2 min 40.497 sec147.00.13091640.08981520.01713910.13516020.09889250.0182683
2017-06-15 15:58:28 2 min 40.806 sec148.00.13078270.08975530.01710410.13518610.09889160.0182753
2017-06-15 15:58:29 2 min 41.204 sec149.00.13066170.08971940.01707250.13517230.09895320.0182715
2017-06-15 15:58:29 2 min 41.525 sec150.00.13068320.08986710.01707810.13502150.09878290.0182308
2017-06-15 15:58:29 2 min 41.839 sec151.00.13077950.08983150.01710330.13514680.09885810.0182647
" ], "text/plain": [ " timestamp duration number_of_trees training_rmse training_mae training_deviance validation_rmse validation_mae validation_deviance\n", "--- ------------------- ---------------- ----------------- ------------------- ------------------- -------------------- ------------------- ------------------- ---------------------\n", " 2017-06-15 15:57:45 1 min 57.627 sec 0.0 nan nan nan nan nan nan\n", " 2017-06-15 15:57:45 1 min 57.913 sec 1.0 0.22389434254761995 0.14509922177920787 0.050128676624830976 0.2240791840048663 0.15367623871447994 0.05021148070428672\n", " 2017-06-15 15:57:46 1 min 58.201 sec 2.0 0.21287757434882873 0.1448768947435462 0.045316861660641104 0.17862174330971572 0.13064843844744115 0.031905727183001976\n", " 2017-06-15 15:57:46 1 min 58.471 sec 3.0 0.20791949831379197 0.1440704305548417 0.04323051777905894 0.166280021020045 0.12094413048128508 0.02764904539042661\n", " 2017-06-15 15:57:46 1 min 58.784 sec 4.0 0.20632578986464015 0.13960379474567916 0.042570331563267644 0.16034339916510307 0.12092251871146407 0.025710005655819577\n", "--- --- --- --- --- --- --- --- --- ---\n", " 2017-06-15 15:58:28 2 min 40.497 sec 147.0 0.1309164107936878 0.08981522709854244 0.017139106615101613 0.1351601895645455 0.09889253305635856 0.018268276843123876\n", " 2017-06-15 15:58:28 2 min 40.806 sec 148.0 0.13078267690317938 0.08975528538855954 0.01710410857796141 0.1351861243678614 0.09889164608583247 0.01827528822160289\n", " 2017-06-15 15:58:29 2 min 41.204 sec 149.0 0.1306617352101919 0.08971940178464238 0.0170724890481383 0.13517227632378012 0.0989531664017169 0.01827154428655237\n", " 2017-06-15 15:58:29 2 min 41.525 sec 150.0 0.1306831594443237 0.08986705154889306 0.01707808816235053 0.13502153356393912 0.09878290307980653 0.018230814525957935\n", " 2017-06-15 15:58:29 2 min 41.839 sec 151.0 0.13077952771849913 0.08983148719488154 0.017103284870273683 0.13514680087607572 0.09885812331003446 0.018264657787037664" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "Variable Importances: \n" ] }, { "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", "
variablerelative_importancescaled_importancepercentage
GrLivArea|Neighborhood_Tencode1603.17126461.00.0770906
Neighborhood_Tencode|OverallQual1294.70520020.80759010.0622576
LotShape_Tencode|OverallQual1124.15637210.70120790.0540566
GrLivArea|OverallQual958.20452880.59769320.0460765
YearRemodAdd|OverallQual816.15783690.50908960.0392460
------------
MiscVal|HouseStyle_Tencode0.00.00.0
MiscVal|MiscFeature_Tencode0.00.00.0
Street_Tencode|PoolQC_Tencode0.00.00.0
Street_Tencode|GarageQual_Tencode0.00.00.0
Street_Tencode|Utilities_Tencode0.00.00.0
" ], "text/plain": [ "variable relative_importance scaled_importance percentage\n", "--------------------------------- --------------------- ------------------- --------------------\n", "GrLivArea|Neighborhood_Tencode 1603.1712646484375 1.0 0.07709063224409438\n", "Neighborhood_Tencode|OverallQual 1294.7052001953125 0.8075900739645747 0.06225762939598401\n", "LotShape_Tencode|OverallQual 1124.1563720703125 0.7012079101335632 0.054056561126756504\n", "GrLivArea|OverallQual 958.2045288085938 0.597693178475676 0.0460765450166722\n", "YearRemodAdd|OverallQual 816.1578369140625 0.5090896118906169 0.039246040049548285\n", "--- --- --- ---\n", "MiscVal|HouseStyle_Tencode 0.0 0.0 0.0\n", "MiscVal|MiscFeature_Tencode 0.0 0.0 0.0\n", "Street_Tencode|PoolQC_Tencode 0.0 0.0 0.0\n", "Street_Tencode|GarageQual_Tencode 0.0 0.0 0.0\n", "Street_Tencode|Utilities_Tencode 0.0 0.0 0.0" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "\n", "drf prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice predict
11.8494 12.1712
12.2061 12.3031
11.6784 11.71
11.7906 11.7274
11.9117 11.825
11.9767 11.8828
11.8451 11.7094
11.1346 11.1583
11.914 11.7471
11.8845 11.8584
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "drf prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "image/png": "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\n8BdkY5RQrj9sjFmCu896MLYA/Oc//6F169ZHN2ClzBgxYgSjR4+u6GEoAejvcvyhv8nxyanyu6xe\nvZpbbrkFAjZzC+RYZVwMQ3bCCwnf1qjtgBlFVMsGaN26NZ06dSqimnIsiY+P19/jOER/l+MP/U2O\nT07B36VId32JRYIxJhZ5wndStzY1xnQA9gF7gb8jqU93Ie6GocBpSBpcp40PgR3W2sd8x08A85Ht\nZashaUYbAe+VdHyKoiiKopQNpbEknIWkJLW+1yu+8g+R1KetgNsQgbAX+A24wFrr3eu8If5bslZH\ncujXRXLoLwLOtdauKcX4FEVRFEUpA0osEqzsolfU0sl+RZxz2rg44Ph+JFe7oiiKoijHCbpVtFKm\nDBgwoKKHoARBf5fjD/1Njk/0d/HnhN3gyRjTCVi0aNGiUy3IRFEURVGOisWLF9O5c2eAztbaxYXV\nO1arGyqErVu3kpKi26grwUlISKBRo0YVPQxFUZTjlpNWJGzdupXWrVuTmambSSrBiYmJYfXq1SoU\nFEVRCuGkFQkpKSlkZmZqsiUlKE4ikZSUFBUJiqIohXDSigQHTbakKIqiKKVDVzcoiqIoihIUFQmK\noiiKogRFRYKiKIqiKEFRkaAoiqIoSlBUJChcdNFFXHzxxcVXLCcSExO58847K6x/RVEUJTgqEk5Q\nVqxYwfXXX09iYiLR0dE0aNCA3r1788Ybb5S4LWNM8ZUKITExkbCwsCOvOnXq0K1bN/73v/+F3EZY\nWNhRjUFRFEUpH076JZAnI3PnzuXiiy+mcePGDBw4kLp167Jt2zbmz5/PmDFjGDp06DEbizGGjh07\n8sADD2CtZefOnbzzzjtcd911vP322wwcOLDYNtauXUtYmOpVRVGU4w0VCScgzz33HNWqVWPhwoVU\nrVrV71xFpKGuX7++36Yot956K82bN2f06NFFioTs7GwqV65MRETEsRimoiiKUkL08e0EZNOmTbRp\n06aAQADZj8Dh//7v/+jZsyd16tShcuXKtGnThrfffjukPnJychg5ciSnn346lStXplGjRjz88MPk\n5OQUe22dOnVo3bo1mzdvPlKWmJhI3759mTVrFmeffTbR0dG8++67R84FxiSkpqYyYsQImjRpQuXK\nlWnYsCG33347+/btK5MxKoqiKMWjloQTkMaNGzN//nx+//132rRpU2i9t99+m7Zt23L11VcTHh7O\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# initialize rf model\n", "rf_model1 = H2ORandomForestEstimator(\n", " ntrees=10000, \n", " max_depth=10, \n", " col_sample_rate_per_tree=0.1,\n", " sample_rate=0.8,\n", " stopping_rounds=50,\n", " score_each_iteration=True,\n", " nfolds=3,\n", " keep_cross_validation_predictions=True,\n", " seed=12345) \n", "\n", "# train rf model\n", "rf_model1.train(\n", " x=encoded_combined_nums,\n", " y='SalePrice',\n", " training_frame=train,\n", " validation_frame=valid)\n", "\n", "# print model information\n", "print(rf_model1)\n", "\n", "rf_preds1_val = rf_model1.predict(valid)\n", "ranked_preds_plot('SalePrice', valid, rf_preds1_val) # valid RMSE not so hot ...\n", "rf_preds1_test = rf_model1.predict(test)\n", "gen_submission(rf_preds1_test) # 0.14574 public leaderboard" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Extremely random trees model - typically not tuned as much as GBM" ] }, { "cell_type": "code", "execution_count": 192, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "drf Model Build progress: |███████████████████████████████████████████████| 100%\n", "Model Details\n", "=============\n", "H2ORandomForestEstimator : Distributed Random Forest\n", "Model Key: DRF_model_python_1497530715156_40\n", "\n", "\n", "ModelMetricsRegression: drf\n", "** Reported on train data. **\n", "\n", "MSE: 0.017324102070941275\n", "RMSE: 0.13162105481624614\n", "MAE: 0.0892460685529443\n", "RMSLE: 0.01021143122248222\n", "Mean Residual Deviance: 0.017324102070941275\n", "\n", "ModelMetricsRegression: drf\n", "** Reported on validation data. **\n", "\n", "MSE: 0.018656079782938404\n", "RMSE: 0.1365872606905139\n", "MAE: 0.10084357998026773\n", "RMSLE: 0.010555786838637508\n", "Mean Residual Deviance: 0.018656079782938404\n", "\n", "ModelMetricsRegression: drf\n", "** Reported on cross-validation data. **\n", "\n", "MSE: 0.018342256462386228\n", "RMSE: 0.13543358690659502\n", "MAE: 0.08997786478212023\n", "RMSLE: 0.010550036662112572\n", "Mean Residual Deviance: 0.018342256462386228\n", "Cross-Validation Metrics Summary: \n" ] }, { "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", "
meansdcv_1_validcv_2_validcv_3_valid
mae0.08987720.00170860.08863320.09325540.0877428
mean_residual_deviance0.01828700.00172920.01950590.02048030.0148747
mse0.01828700.00172920.01950590.02048030.0148747
r20.88162860.00258280.87646310.88418320.8842394
residual_deviance0.01828700.00172920.01950590.02048030.0148747
rmse0.13491170.00655090.13966360.14310960.1219619
rmsle0.01049870.00058390.01089810.01124940.0093487
" ], "text/plain": [ " mean sd cv_1_valid cv_2_valid cv_3_valid\n", "---------------------- --------- ---------- ------------ ------------ ------------\n", "mae 0.0898772 0.00170858 0.0886332 0.0932554 0.0877428\n", "mean_residual_deviance 0.018287 0.00172917 0.0195059 0.0204803 0.0148747\n", "mse 0.018287 0.00172917 0.0195059 0.0204803 0.0148747\n", "r2 0.881629 0.00258281 0.876463 0.884183 0.884239\n", "residual_deviance 0.018287 0.00172917 0.0195059 0.0204803 0.0148747\n", "rmse 0.134912 0.00655086 0.139664 0.14311 0.121962\n", "rmsle 0.0104987 0.00058388 0.0108981 0.0112494 0.00934871" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Scoring History: \n" ] }, { "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", "
timestampdurationnumber_of_treestraining_rmsetraining_maetraining_deviancevalidation_rmsevalidation_maevalidation_deviance
2017-06-15 16:01:03 2 min 31.304 sec0.0nannannannannannan
2017-06-15 16:01:03 2 min 31.617 sec1.00.22848500.15096110.05220540.23060710.16214400.0531797
2017-06-15 16:01:03 2 min 31.930 sec2.00.20951380.14316410.04389600.17430040.12683870.0303806
2017-06-15 16:01:04 2 min 32.227 sec3.00.21786830.14503690.04746660.16198950.11869090.0262406
2017-06-15 16:01:04 2 min 32.541 sec4.00.20806160.13957490.04328960.15899950.12060550.0252808
------------------------------
2017-06-15 16:01:56 3 min 24.856 sec166.00.13172460.08928130.01735140.13668750.10097260.0186835
2017-06-15 16:01:57 3 min 25.177 sec167.00.13164930.08916820.01733150.13674680.10100490.0186997
2017-06-15 16:01:57 3 min 25.481 sec168.00.13164420.08917110.01733020.13671100.10096990.0186899
2017-06-15 16:01:57 3 min 25.830 sec169.00.13158600.08925150.01731490.13650250.10082430.0186329
2017-06-15 16:01:58 3 min 26.258 sec170.00.13162110.08924610.01732410.13658730.10084360.0186561
" ], "text/plain": [ " timestamp duration number_of_trees training_rmse training_mae training_deviance validation_rmse validation_mae validation_deviance\n", "--- ------------------- ---------------- ----------------- ------------------- ------------------- -------------------- ------------------- ------------------- ---------------------\n", " 2017-06-15 16:01:03 2 min 31.304 sec 0.0 nan nan nan nan nan nan\n", " 2017-06-15 16:01:03 2 min 31.617 sec 1.0 0.22848495387548126 0.15096107727201113 0.052205374147480804 0.23060713377421968 0.16214398776783662 0.053179650147560854\n", " 2017-06-15 16:01:03 2 min 31.930 sec 2.0 0.20951383420500885 0.14316414266392805 0.04389604672328394 0.174300429379578 0.12683867681000488 0.03038063968190525\n", " 2017-06-15 16:01:04 2 min 32.227 sec 3.0 0.21786826486164945 0.1450368586757727 0.04746658083382584 0.16198949813861013 0.11869085570912302 0.026240597507198773\n", " 2017-06-15 16:01:04 2 min 32.541 sec 4.0 0.20806161547677032 0.13957488189226153 0.043289635834803435 0.15899948864075777 0.12060554770342924 0.02528083738802246\n", "--- --- --- --- --- --- --- --- --- ---\n", " 2017-06-15 16:01:56 3 min 24.856 sec 166.0 0.13172463477175883 0.08928131901116723 0.017351379405753257 0.1366874519653667 0.10097258845148373 0.018683459524784427\n", " 2017-06-15 16:01:57 3 min 25.177 sec 167.0 0.13164925378288403 0.08916817483636895 0.0173315260215902 0.13674678117860414 0.10100487223368598 0.018699682162709046\n", " 2017-06-15 16:01:57 3 min 25.481 sec 168.0 0.1316442336605574 0.08917107763383465 0.01733020425607544 0.13671098966587056 0.10096994811957499 0.018689894695421767\n", " 2017-06-15 16:01:57 3 min 25.830 sec 169.0 0.13158595413890353 0.08925151318713247 0.017314863326645627 0.136502490406494 0.10082431464760724 0.018632929887174986\n", " 2017-06-15 16:01:58 3 min 26.258 sec 170.0 0.13162105481624614 0.0892460685529443 0.017324102070941275 0.1365872606905139 0.10084357998026773 0.018656079782938404" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "Variable Importances: \n" ] }, { "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", "
variablerelative_importancescaled_importancepercentage
GrLivArea|Neighborhood_Tencode1777.02307131.00.0758818
Neighborhood_Tencode|OverallQual1632.18298340.91849280.0696969
LotShape_Tencode|OverallQual1124.03271480.63253690.0479981
GrLivArea|OverallQual1066.81152340.60033630.0455546
BldgType_Tencode|OverallQual883.59722900.49723450.0377311
------------
MiscVal|HouseStyle_Tencode0.00.00.0
MiscVal|MiscFeature_Tencode0.00.00.0
MiscVal|OverallQual0.00.00.0
Street_Tencode|PoolQC_Tencode0.00.00.0
Street_Tencode|Heating_Tencode0.00.00.0
" ], "text/plain": [ "variable relative_importance scaled_importance percentage\n", "-------------------------------- --------------------- ------------------- --------------------\n", "GrLivArea|Neighborhood_Tencode 1777.0230712890625 1.0 0.0758818482968711\n", "Neighborhood_Tencode|OverallQual 1632.1829833984375 0.9184928489501506 0.06969693502579627\n", "LotShape_Tencode|OverallQual 1124.03271484375 0.6325369281943933 0.0479980712274158\n", "GrLivArea|OverallQual 1066.8115234375 0.6003363381566166 0.045554630939099484\n", "BldgType_Tencode|OverallQual 883.5972290039062 0.4972345285100547 0.037731075060366194\n", "--- --- --- ---\n", "MiscVal|HouseStyle_Tencode 0.0 0.0 0.0\n", "MiscVal|MiscFeature_Tencode 0.0 0.0 0.0\n", "MiscVal|OverallQual 0.0 0.0 0.0\n", "Street_Tencode|PoolQC_Tencode 0.0 0.0 0.0\n", "Street_Tencode|Heating_Tencode 0.0 0.0 0.0" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "\n", "drf prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice predict
11.8494 12.158
12.2061 12.3103
11.6784 11.701
11.7906 11.716
11.9117 11.8218
11.9767 11.8833
11.8451 11.6965
11.1346 11.1619
11.914 11.7635
11.8845 11.8395
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "drf prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "image/png": "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\nM3LkSL/3aa257LLLWLRoESNGjKBjx46sWrWKiRMnsmnTJmbMmFHs+PLz89m1axcxMTHHy5RSrF+/\nnv/7v/9jxIgRDB8+nA4dOhy/5iQrK4tzzz2XDRs2cPvtt9OzZ09SUlL48ssv2b17N40aNSr3GAVB\nEISSEZFwAnLfffdx8cUX06NHD8444wz69OnDgAED6NevHyEh7p90wYIF1KlT5/j5qFGjuOiii3jx\nxReLFQkfffQRc+fOZcGCBZx11lnHy7t06cLIkSNZvHgxvXv3Pl5+7NgxUlNTAdizZw/PPPMMBw4c\n4K677vJod8uWLcyaNYuBAwcW+/mee+451q5dy+eff87gwYOPlz/88MNlHqMgCIJQekQkuMjOhvXr\nK7ePjh0hMrL87QwcOJBff/2VZ555hlmzZrF48WKee+454uLieOedd7jssssAPATC4cOHOXbsGH37\n9mX27NkcOXLEp7sCYPr06XTq1In27dsfn/wB+vXrh9aaefPmeUzAs2bNIi4u7vh5SEgIN910E88+\n+6xHu61bty5RIADMmDGD7t27ewiE8o5REARBKD0iElysXw9JSZXbx9KlUFF7TSUlJTF9+nTy8/P5\n888/+fzzz5k4cSJDhgxhxYoVdOzYkYULFzJu3DgWL17ssWW2UoqMjAy/ImHTpk2sX7/eY+J33nvg\nwAGPst69ezNhwgTAbL/cqVMn6tevX+Te1q1bB/TZtmzZwjXXXFNsndKOURAEQSg9IhJcdOxoJvHK\n7qOiCQkJISkpiaSkJNq1a8ett97KtGnTuOGGGxg4cCCdOnVi4sSJtGzZkrCwML755hteeuklCgsL\n/bZZWFhIt27dmDhxIlrrItdbtmzpcR4bG0u/fv1KHGtERETpP2AFjVEQBEEoPSISXERGVtxTfnVx\n2mmnAbB3716++uor8vLy+Oqrr2jevPnxOnPmzCmxnbZt27Jy5cqAJv7KoG3btqxevbrEOtU5RkEQ\nhJMBWQJ5AjJ//nyf5d988w1KKTp06EBwcDCAh8UgIyODDz74oMT2r732Wnbv3s3bb79d5Fpubq6H\n66IyuPrqq/nzzz+ZOXOm3zrVPUZBEISTAbEknICMGTOG7OxsrrzySjp27EheXh4LFy7k008/pXXr\n1tx6663s27eP0NBQLr30UkaMGMGRI0d45513aNKkCfv27Su2/RtvvJFPP/2UkSNHMm/ePM455xwK\nCgpYt24d06ZNY/bs2fSqRLPL/fffz/Tp0xkyZAi33norSUlJpKam8tVXX/Hmm2/SrVu3ah+jIAjC\nyYCIhBOQF154gWnTpvHdd9/x9ttvk5eXR6tWrRg9ejT//Oc/qV+/PvXr1+ezzz7jkUce4f7776dp\n06aMGjWKmJgYbr/99iJtOnMVKKWYOXMmEydOZPLkyXzxxRdERkbSpk0bxo4dS/v27T3qBrLvQnH1\nvK/VrVuXX375hXHjxvH5558zefJkGjduzMCBA2nRokWpxygIgiCUDeUr6OtEQCnVC1i6dOlSn0+M\ny5YtIykpCX/XhZMb+fchCMLJjP0bCCRprZf5qycxCYIgCIJwkpCVBUOGwKFDgdUXkSAIgiAIJwmb\nN8P06eYYCCISBEEQBOEkISvLHAPdB09EgiAIgiCcJNjV4UePBlZfRIIgCIIgnCRYS8KxY4HVF5Eg\nCIIgCCcJViSIJUEQBEEQBA/EkiAIgiAIgk/EkiAIgiAIgk9s4KKsbhAEQRAEwQNZAikIgiAIgk9E\nJAhVRmJiIrfddtvx859++omgoCAWLFhQjaMSBEEQ/CEiQagyfO3qGMiOkN589913jB8/viKGJAiC\nIBSDiASh2jjvvPPIycmhb9++pbrv22+/5YknnqikUQmCIFQ/zz4Ljz9e3aMofcbFkMobilAT0VqT\nl5dHnTp1KqX9sLCwUt9zom5XLgiCECgLFgSem6AyEUvCScLjjz9OUFAQGzZs4Nprr6VBgwbExsZy\nzz33cNQhEYOCgrjrrrv4+OOP6dq1K+Hh4cyaNQswk/NLL71E165diYiIoGnTpvztb3/jkI89RJ96\n6ilatmxJ3bp1GTBgAGvXri1Sx19Mwm+//cbFF19Mo0aNqFevHt27d+eVV14B4NZbb+W11147Ptag\noCCCg4Mr7HsSBEGoCWRlBT4xV/Y4IPCxlNqSoJTqA9wPJAHxwBVa6y8d18cB1wMtgTxgKfBPrfXv\nJbQ7BHgCSAQ2Ag9qrb8r7fhOFqzv/9prr6V169Y8++yzLF68mEmTJnHo0CE++OCD43XnzJnDp59+\nyujRo4mNjSUxMRGA4cOHM3nyZG677Tbuvvtutm3bxiuvvMKKFStYuHDh8cn60UcfZcKECVx66aVc\ndNFFLFu2jEGDBnHMhyz2jkn44YcfuOyyy2jWrBn33HMPTZs2Zd26dXz99deMGTOGESNGkJyczI8/\n/shHH30kVgVBEGolWVlQBkNrpYwDKlEkAHWBFcC7wAwf1zcAdwJbgQjgXmC2Uqqt1jrVV4NKqbOB\nj4EHgG+AG4AvlFI9tdZFH1mF47Rt25YZM8zPMHLkSKKionj99de577776Nq1KwAbN25k9erVdOjQ\n4fh9v/zyC++++y5TpkzhuuuuO17er18/LrzwQqZNm8b1119PSkoKzz//PJdddhkzZ848Xu+RRx7h\n6aefLnZshYWFjBgxgubNm7NixQqioqKK1Onduzft27fnxx9/ZOjQoeX6LgRBEGoqmZlQr151j6IK\nRILW+nvgewDlI5Rdaz3Vea6Uuhe4HTgVmOen2buA77TWL7rOH1NKXQCMBkaVdoxlIftYNutT1ldq\nHx1jOxIZGllh7SmluPPOOz3KxowZw2uvvca33357XCScf/75HgIBYPr06TRs2JABAwaQmurWbj17\n9qRevXrMmzeP66+/nh9++IFjx44xZswYj/vvueeeEkXC8uXL2b59Oy+//LJPgSAIgnCykJUFlRQK\nVipKm3GxUgMXlVKhwAjgEPBnMVXPAl7wKpsFXF5JQyvC+pT1JL2VVKl9LB2+lF7xvSq0zVNOOcXj\nvG3btgQFBbF9+/bjZda94GTTpk0cOnSIxo0bF7mmlOLAgQMA7Ny502c/sbGxREdHFzu2LVu2oJSi\nS5cugXwUQRCEWstJY0kIBKXUJcBUIBJIBi7QWqcVc0tTYL9X2X5XeZXQMbYjS4cvrfQ+KhtfeQoi\nIiKKlBUWFtKkSRM+/vhjn3EAcXFxlTI+QRCEk5GaELiotRlHcHD1L4GcC3QHYoE7gGlKqTO01ikV\n3dHYsWNp0KCBR9nQoUOLmNdLIjI0ssKf8quCTZs2kZCQcPx88+bNFBYW0rp162Lva9u2LXPmzOHs\ns88udjmkbXvTpk0eFomUlBTS09NL7ENrzerVq+nfv7/femVJwCQIgnCikJdnlj9W1xLIKVOmMGXK\nFAoLoaDABFDu2ZMR0L2VsgRSa52jtd6qtf5da30HkI+JS/DHPqCJV1kTV3mxTJw4kS+//NLjdbIE\nwGmt+c9//uNRNmnSJJRSXHTRRcXee+2115Kfn+8ziVFBQQEZGeYf0MCBAwkJCTm+ZNEyceLEEsfX\nq1cvWrduzUsvvXS8PV/UrVsXgMOHD5fYpiAIwolGaU38Fc3QoUP58ssvmTz5S+BL2rT5kgYNSv4b\nDlWXTCkIKC5k41dgADDJUXaBq1wohm3btnH55Zfzl7/8hUWLFvHRRx8xbNiw40GL/ujbty8jRozg\n2WefZcWKFQwaNIjQ0FA2btzI9OnTmTRpEldddRWxsbHcd999PPvss1x66aVcfPHFLF++nO+//96n\nS8LpulBK8frrrzN48GB69OjBrbfeSnx8POvXr2ft2rV8951Z4ZqUlITWmjFjxnDhhRcSHBzsseJC\nEAThRMaKhIq0JOzZA5Mnw4MPQqDGWBu02KgRHDwY2D1lyZNQFzgFsMNqo5TqDqQBqcA/gS+BvRh3\nw2igGTDN0caHwB6t9cOuopeB+a6VEN8AQzF5GO4o7fhOJpRSfPLJJzz66KM89NBDhISEcNddd/Hc\nc8951PFnzn/99dc57bTTePPNN/nnP/9JSEgIiYmJ3HTTTZxzzjnH602YMIGIiAjeeOMN5s+fT+/e\nvZk9ezaXXHJJkba9zwcNGsS8efMYP348L774IoWFhbRt25bhw4cfr3PVVVdx1113MXXq1OO5EkQk\nCIJQW8jMNMfyWBIyMmDNGjj7bHM+cyY8/DAMHw4xMYG1YcVKo0aBxySgtS7VCzgPKAQKvF7vYawF\nnwG7gBxgN/A50MurjbnAe15lVwPrXfetBC4sYRy9AL106VLti6VLl+rirp/oPP744zooKEinpqZW\n91BOSGr7vw9BEGoOS5ZoDVqHhZW9jRtuMG3k5Jjzxx4z58uWmfPVq7VOSnJf98Xs2eaeMWO0Dgsz\nfwO952fvV1nyJPxE8bEMVwfQRpEoNq31ZxiBIQiCIAi1BmtJOHbMrDAoS6y2DdlauxZ69YL9rvWA\nO3dCz56wdKl5paZC8+a+21i1CiIioEPHQvKazYXtJfcrezcIgiAIQiVizfxam9UFZaFtW3NcscIc\nrUjYtcscbU68nBzP+7SGX13RfatWQZcukBa6EgbdH1C/IhIEQRAEoRKxIgHKHpcQ5JqtrUhw5bvD\nle+OFFeCgdxcz/uWLzdxDOvWGZHQrRtsyp8HBaGB9Vu24QrVzbhx4ygoKKBRo0bVPRRBEAShGKy7\nAcq+wsGuTPjTlbvY6W4A/5aENFcaw927TeBjt26wPnce7O8eUL8iEgRBEAShEqkIS4Kd/FeuNEd/\nIsHbkmD7XrLEXOvctYC1WQtgz2kB9SsiQRAEQRAqkYqwJFiRcOiQmfgzMyEhoeSYBCsSrLjIa7CG\nrIIM2BvYXkUiEgRBEAShEqkIS4J1N4BxHQCcdhokJxvhUZIlYd06c9ynXWohtV1A/YpIEARBEIRK\npKLcDTZ40boY+vSBwkLYvNm/JcGKiw0bzFbVGzNWEh+RAMeiAuq3qtIyVxvrrHwSBAfy70IQhKqi\nogIXo6ONGNixw5T162eOa9aUbEnIzYWWLWH1wVV0aNiNvQH2W2tFQmxsLJGRkQwbNqy6hyLUUCIj\nI4mNja3uYQiCUMvJyoKoKDhypHyWBCsSrLuhc2eTkvmPP9ziwF9MAkCTJrBq/yquaH0T2xNh+/aS\n+621IqFVq1asW7eOlJQK351aqCXExsbSqlWr6h6GIAi1nCNHzARfESIBjFCoUwdCQkxypJ9/dtfz\ntiQ4Yxmi49NZcmQP57Y7lds+g6QAYhdrrUgAIxRkEhAEQRCqil9/hQYNzFO+JS0NmjY1sQTlcTck\nJpr36ekmvTIYkfD66+561pKgtenPaUk41nIOAKc3O52M7RkB9SuBi4IgCIJQQdx3HzzzjGdZSgo0\na2beV4QlIT0dIiPN+y5dPOtZS8IddxhRsX69+9remE/oFd+Lto3aBtyviARBEARBqCCysswk7iQ1\nFeLjzfvyBi6CsUxYS8J110Hv3qb9Fi2MmPjjD3j3XXN982ZXA2FH2BL8Ndd3ub5U/YpIEARBEIQK\nIjfXJDyyFBaaSd2KhLJYErQ2k7/Nwu90N8TGGhdHcrIREbm5sHq1+959+1y7Tjb/g3xyubT9paXq\nW0SCIAiCIFQQOTmeIuHQISMUyiMS8vKMUHC6G6xIcBIRYfrfvt3ERYC5Lz4eiFtLqAqjXUxgSZQs\nIhIEQRAEIQCUgsceK75Obi5kOGIC7QK78rgb7AoFXzEJTsLDTf87dkDHjm4h0b07BDddQ5uGHQgJ\nKt16BREJgiAIghAgTz5Z/HVvd4NNclQeS4JdsWBFwrFjxVsSduww+zpY90TXrnD2FWvp2bxL0ZtK\nQESCIAiCIFQQOTkmw2J+vjn3tiSURyQ0aOCKL8C3SHBaEpwiITIS1qWspXNs56I3lYCIBEEQBEGo\nAAoK3O4E63KwloSYGJP8KBB3w/z58Mgj7nPrboiMNEIA/FsSMjPNzpAJCaZPAB15kJTsFDrHiUgQ\nBEEQhApH65LrOLMdWpdDSgrUrw9hYRAa6rYkvPUWPPyw73a++w5eftl9bi0JERHFi4TwcNi61Vgx\nEhPdloTUsGUAdG3cteQP4YWIBEEQBEEogUAsAP5Egn2iDwtztzNzphEDaWmwbZtnO5mZ5nX4sDm3\nlgSnSPAvBk7KAAAgAElEQVQVuBgRYawI4Olu2MnPxEXG0T6mfckfwgsRCYIgCIJQAs5YgsJC33Wc\nmys53Q12H7mwMHc7O3aYvRyGD4c2bWDPHve9NpWyLbPtluRusNfAUyRsPraAPgl9UDagoRSISBAE\nQRCEEnCKBOfqBSclWRKsu0FrIxIyM92C4O673ffaraW9RUJJ7gZbFh1tdp2MiQFCctmc8zt9W/UN\n6HN6IyJBEARBEErg6FH3+wMHfNfxJRI2bjSWAnC7Gw4dcrsUQkPNtWXL3Pd6iwRn4GKdOuZ9cZaE\nhARzjI7WcPa/OaaP0q91v5I/pA9EJAiCIAhCCTgtCQcP+q7jdDccOmSExcaNJk8BuC0JO3aY86ws\nd9yBc78Hf5aE8PCSYxIAWrXO4+mfn+bBAy2g/6MMbzeeU5ucGtgH9UJEgiAIgiB48cgjnjsoOkVC\noJaEDRvMSoNu3UyZtSRYkQCwd69ZGnnokFlCCb4tCeHhJkdCiTEJkQfZ0PFWHp//OH2aXAaTf+C+\n0x8N+HN7U7r8jIIgCIJQyykshAkTjF+/Y0dTFohIsE/8UVEmcHHVKnNuLQk2cNEpEpKToVUrs3Qx\nI8MEG3qLhCNHTJvgXyRsSNnApCN3wD9+ZiOKqVdNZUjna1nUCdqVbrsGD8SSIAiCIAgO7GS/d6+7\nrDQxCU2bGsvA6tVm++aGDU25t7sBjCCwMQRpaebovbohPd2dktmXSNiStoX+k/uTqQ/AjMm82mEz\n13a5FqXgnHMC/9y+EJEgCIIg1DoKCuCjjwJLguSNL5HgtCTYOAJvrEiIjTUT/dq10MWxXYJ1NyQn\nmwRLFisSbFxCZibUq+fu35dIsDEJaw6sof/k/tQLq8eTbX+ClTdyZrs2pfvAxSAiQRAEQah1LF0K\nw4bBypWlv9euJvAlEho29C8SrLiIiTFtpKdDXJz7urUkpKSYjIiWVq3MMS3NuDqysqB5c8+gRm+R\nEFInjyd/epKeb/akXlg95t40l7O6NaFrV2hf+pxJfhGRIAiCINQ6rF/fHktDcSIhNrZ4S0JQkLES\nZGebl3MVgo1J8BYJTktCTo6xfsTHm7Fr7UMkRG9h5PLTGf/TeO4/+36WDl9K8/rN6dzZxEHY+IWK\nQAIXBUEQhFqHfaq3E35p8CUSbExCcSIhJ8dM4nXrmjayssx7S2iocTekpEBfR26j+HizwiEtzS1q\n4uONQMjKMiLBui1CwnPguqs4WpjFH3f8Qc/4nqX/gKVALAmCIAhCraM8IsHem5VlVhZA4JaEiAhj\nPSiNJaF+fWMpSE93By02bWqOmZkmCNJaEpbWfQpiNvL6eZ9XukAAEQmCIAhCLcSKA2eCo+IoLITb\nbjO5EZzCwloTrEiIi3MLB29yc40lwYoEb0tCw4awe7ep16SJe4VCVJRbJFhLghUJR46Y8oYNNYt3\nL+aPkBdh0X30bN4tsA9WTkQkCIIgCLWO0loSUlPh/ffhl1+KFwmBuBv8WRISEmDdOvM+JsasYAAj\nEho1Mqsh5s83ZfHx5pieDkciV/LasTM5692zaBDUAhb+w2cypcpARIIgCIJQ6yitSLCpljMzfYsE\nG5MQExOYuyEz04zBaUlITHTvIBkb6xYJ1t3w3XfujZ7i44GIVKaungo3XEyByuGroV/xUNRayIuq\nMpEggYuCIAhCraO0IsEmSMrMdOcwiIjwtCSEhkKDBkYkaG3SJHv3aS0JNrbA25JgiY11r0KIinKM\nMzgPWs9hZvpSGPUfJu7aB/lteaHHbC5tH8/BhaYPu9FTZSOWBEEQBKHWYSfdsoiE7GwzCTdt6i7P\nyzNl9eubRE2+Yh2cMQkWpyXBWyTUq2eCGcPCbCImDVfdAMMu5r9bXoCd5/LXI9vhlY2c0tT4H66/\nHhYuLCpQKguxJAiCIAi1jvK6GyIioHFjT5EQFua2Mhw+XHQnRqe7weJ837y5yaMQGmrK69UzVoTc\n/FwGP/EhIRu/Y2HqTJjxX1KX3UBIiOLQNYB2r26IiIBevUr1VZQLEQmCIAhCraM87gYbcOgUCUeP\nGpFgXQSHD7tXIDj7LM6SEBpq9nIoKDCWgHr1ILjLl7R+eQT7M/dzTqtzYPp4WDmM4GBzfdcuc68V\nCVVNqd0NSqk+SqkvlVJ7lFKFSqnBjmshSql/KaVWKqUyXXU+VErFl9Dmza62ClzHQqVUGVa3CoIg\nCDWdtDTYubNy+yiPSMjJKSoSfFkStmwxOQwsJVkSwLgcYmNBa01ezHJS+gyjR9MerB+9np9v/Rl+\neux4XSsSgoMrNotiaShLTEJdYAUwCvDeOiMS6AGMB3oCVwIdgJkBtJsBNHW8EoqvLgiCIJyIPPEE\nDB1auX2UFJOgNUyc6J7kvd0NkZEml4GvmAQwIuH882H8eHebJVkSAE4/Hdp1O8Sg/w3i6+a9iAmP\n45NrPqF9jNlwYdkysxQTjDDYu9csj6yqGARvSu1u0Fp/D3wPoJTnsLXWh4ELnWVKqdHAb0qpFlrr\n3cU3rQ+WdjyCIAjCicXBgyYvARirQkpKxW5KBCVbEjZvhnvvNemQx4wp6m6wMQn79xtB4W1J+PVX\nkxhp+XKzrDE31+ybMHCgf0vC+pT1JJ89nq/WfU5EcgSfXPMJF7a9kPp13FtC9uxpXmBEgtbQunUF\nfSlloCpiEhpiLA6HSqhXTym1HWPdWAY8rLVeW8ljEwRBEKqYrCz3EsF//xu+/rpsuzUWFpr7evQo\neq0kkbB1qzn+8ENRkeB0N+TkmLF6i4TPPjPH1ath0CDjPjl8GG66ybOfZWnzeHL5J2xJ38LcbXNp\nHtWcCf0ncG2Xa2nZoGWxn8/mUWhTcTs/l5pKFQlKqTrAs8DHWuvi9uLaANwGrAQaAPcDi5RSnbXW\nyZU5RkEQBKFqycx0i4T0dMjI8F1v9274+Wf/ronx443r4uBB4+d3EqhImD/fbLp08KBZeeAduAhG\nQNjAxTp1zHH5cuNaSE2FOXNMvX79zIS+b5+rk7Aj3PLtNdQPr0/3Jt155aJXuL3n7dQJCSzJgY1D\nqJUiQSkVAkzDWBFGFVdXa70YWOy491dgHTACGFdZYxQEQRCqHqdIyM62OQKK8umn8PDD/kXCt9+a\nY2pqUZFQXEzC3r2wbZtxNRw5At98Y9weCQlukdCggadIsDEJ4E7RfN998NRT5v0XX8Cpp5r3kZFA\neDpqwKMcyTvCir+tKNFq4ItaKxIcAqEl0L8EK0IRtNb5SqnlwCkl1R07diwNGjTwKBs6dChDKzsq\nRhAEQSgT1nyfn2/e+xMJOTnmCf7YMbN80BtrDUhL830vFBUJyckmXwFA//4mcPGaa8zEfsUV8M47\n5p74eBO4CG6REBZmzgcONEsZH38cXnjBbON8+eXuPp7/Yxzc9yw6KJ9H+o4rk0CAinM3TJkyhSlT\npniUZfgz33hR4SLBIRDaAP201ullaCMI6AZ8U1LdiRMn0qsqM0sIgiAI5cLudJiVVbwlwe6XcOSI\nifB3UlDgFgelEQk29gDglFNMPMI558Bzz5mlhjZeIjLS7NOgFOzY4SkSfvjB3caQIdC7t/t81f5V\nTPjlSYKW3UXs+gd5bLxXMoVSUFGWBF8PzsuWLSMpKanEe0stEpRSdTFP+HZlQxulVHcgDdgLfIZZ\nBnkpEKqUcmkx0rTWx1xtfAjs0Vo/7Dp/FONu2IwJdPwH0Ap4p7TjEwRBEGo2TldDdraZgAsLTUyA\nk+JEwsaN7vf+REJUlHFFPPAAPPqoeTJPdzy2tm4NXbuaeISwMJg61ZSnpBiREBwMF18MDz1kAhbP\nPLNoP6++dYQlyUv496KlLNu7jAU7FtAmug0pi58nKtqH+aMUREUZl0iLFuVqplyUxZJwGjAPE2ug\ngRdc5R9i8iNc5ipf4SpXrvN+wAJXWUugwNFmNPAWJj9COrAUOEtrvb4M4xMEQRBqMN6WBDBCITzc\ns55TJHizapX7vT+REBMD27cbK8EZZ8DVV3smP7JP6NZCYM37Bw5wfJfFTz81YmLvXnc9y4x1M7jj\nqztIy0kjMjSSHk17MLjDYEYkjeDif4UWyZFQWi691Ain4ODytVMeypIn4SeKT8JUYoImrXV/r/N7\ngXtLOxZBEIQTkZdfhtmzTcBcTSU52QQDek+M5cW5OZJTJNjNkZxYN0Smj6i2vXtN/ZgY3yIhOxva\ntTMiAeC334xIsJaEV1+FSy7xvMeKhLw8d36DyEiTw+HAAc+dF3/f8zvXTb+OwR0G88T5T9AxtiPB\nQe7ZPDKyaLbF0nL66eZVncgukIIgCFXMpk2wbl11j8I/BQUmuO/vf6/4tp0xAt4iwZviLAkHDpjA\nQl8iIT/fvGJi3GW//WaOhw4ZM/6ddxbNhmhFAvje4tkKpsNHDzP0s6H0iu/F1Kun0qVxFw+BYO8v\nryWhJiAbPAmCIFQxR48GvqdAdbB5szmuWVPxbdt4BPu+rCJh/34jEiIji4oEa6lwLotcsMDkVThy\nBBo29D02p0hwTvCxifugzSq21z/ApN9S+WL9FxzMOsgPN/5AaLDvuIOKsCTUBEQkCIIgVDF5eTVb\nJKxwRZR16FDxbTtdB75Ewvz58O67JtAwEJEQGupfJFhLQps2Zrnk44+b+AJ/OyrWrash/BDU2094\nx318vCqZX3b+wluh78BNx5gD/PxDGO1j2vPRVR/RJtr/soMmTSAurrhv4sRARIIgCEIVc6KIhMp4\nEi7JkvDKKzBjhnEP2P0c/ImEU081SxR3e+0KZNu0qyWGDTNC4ZZbTBKlvn3ddfML89mUuol3lr3D\ne8vfhwdN0MJNc831lvVbckPLR5l83/9x5QXxfDY1AhXAbkvvv1+9AYcVhYgEQRCEKuboUeP395ck\nqLqxIsE+kVckTkvCoUPmewAjEo4dgx9/NBaA5GRo1cpcK86SkJ/v35LQvbs5Xnml2d/hkUeMoGgQ\nnc8Li17m9SWvs+3QNgp1IY0iGnFbz9t58d4zGHhWU177V1Oa1GtC/Tr12bgRJqfDgT2B78boz1px\noiEiQRAEoYqxaX1t+t+axp9/mmN5RcK2bSb/Qdu27jKnJeGgY9/f3FxYvNhskjR8OLz9tn93g9Zu\nkZCT418knHqqqQtQUFhAk7YH2R09h986vc63Py7mxu438o9z/kGrBq04L+E8IkIjuH2asWCEOGZH\nK1b27i37d3GiIiJBEAShirGTX00UCXYCBv+ZEItjyBDjpvjwQ7MVc2amZ4ZCa0kICSkqEv74wzyB\nn3MOvPWWEQxQVCQcPmy+wyZNzPv0dCNGtDYmfnvftrwlPDvtX+w4tIPl+5aT3y/fXMhPYt7N8+iT\n0KfI+Dt3LvqZ7NLMMWNK/32c6IhIEARBKAeHD5sJrzT+e2tJqAxzfnnJzTUTLpRufNddZ/z+06eb\n8w8/NGJjxw7PetaSEBdXVCTs2mXasKsMbE4D7zwJNrVykybmu9caZs6EG2+EH5Zt5P01P8AdHzBk\n9hI6x3XmtGanceOpNzJ7Rjxfv3YOd94fT5+EwD8buC0SJxsiEgRBEMrBsGHGHP3qq4Hf43Q31DSc\nT/qlEQnr1xf116emmtiCzEz3xJ+ZaZ72GzUqKhKSk6FZM3e2QysSnJYErd05Jpo0gTZtNDTazB1P\n7iPrvKmcPeU1FEGE5gzmvSvv5rou1x1fpljwK3yd6X8JpFAUEQmCIAjlYO9ez0x8geB0N9Q0nE/6\npREJGRme9fPyjEgAs8+C3YcvK8sIhrp1i4qEvXvhtNPcVhkrWJwi4euvXTsutvuWMYtfYXPGOrhr\nB6kABaFcG/Uy9bbcyJKV0Qw71XOMdg+E2hJUWBVIxkVBEIRykJNTet/9iWBJCEQkbN/uDho8fNjz\ne9ixw20J2LDBs/26df2LhPj4oq4bp0jYsP0IXHEL3HAJOfowl3e4nNHR38Kr6wh7KYWWyXdxYGf0\n8WBDJy1dOzaLSAgcsSQIgiCUg7KIBGtJqKyYhKNHYcIEePDB0uc6sCIhNtYdwOiP1q2NVeDwYfNy\nfp4VK9yxDc4dG/1ZErKyTH/x8W53g8WKhL1H9vKftOtRnZfzzuB3ubXHrSilODYQLmlv9sTYtMnE\nNpx9dtHxdukCgwZBz56BfReCWBIEQRDKRU20JCxbBk8+CfPmFV9Pa5M7wBlc6LQkBPK5MjNN7oGC\nAlPfrtZYutQcQ0N9WxIiI93BgKGhZmIvLDQxCceFTWQKYT2ms73LKDr9pxPNXmzGHr2EZvO+47ae\ntx1PahQaCn/5i9nQyYoEazVwUq8ezJpl9qUQAkNEgiAItYI9e8wf/+Tkqu23JoqElBRzXLmy+Hqp\nqcbicMUV7jIbkxAbW7ylw/mZ33rLHHNy3NYDKxLOOMNzHLt3Q9Omjr0RVAH12i/hl0OfwLnP8MKe\nK7j4664wtiX8I468K4aQ3fRH+rbqy9Srp3Ldvu00zTvH55jatTNBjWlpvkWCUHrE3SAIQq1gxw4j\nEHbuNE+jVUV2dundBpUduFgakQDuDIsQeEyCM7HQt9+aY26u+x4rEi64AJ54wnzWyEhjVbjkElCh\nuRC/FnXRPaS3+pmlAM2iKAg+g76t+rFhZn1I6USP6PNZ9UsLXnnO7MI4I91/bokuXdzvRSRUDGJJ\nEAShVmCfbKsy90BBgbEKlNWSUFljLa1IACOuwIiEoCCzRLG48VmLTadOxsRv783PN+Z/G7R4wQXG\nuvDnn+Zzb9lziD/j7+a1qBgYkYSOWUfLBd8S+fIheDaDebf+yH8ueQXmToCVwzizYwsKCtx9ZGT4\nX8LYrx889JBZkuoUDELZEZEgCEKtwE7UZckSWNV9VpUlYcOG4sdm64HZShncMQMREeZef0mErEjo\n1csdWHjokDnaoMHISLOkMSwMFvyRytCpt1N4bxN+PfoO9575D3hnEUzaQtyhi8hOb0DjOEVIiBEZ\nNi2yXTq5erU5ZmT4tyQoBU8/baxKzm2ihbIjIkEQhHLz3nvwwQfVOwb71FuVlgTbV2lEQmGhedqG\nsouE5ctNZkJ/96ekmNwNBQUmyZE/rEgIC3NbFezqA5uK2Aoab5KTTZ2OHd1l9ns46yyg7gHqdp3L\n/9a8R6Mh/2RcSkdm7ZwBc59i0dBNPD1oHOw+C47WP96X00VgVzg0a2aSJq1ZY86LEwlCxSMxCYIg\nlJupU83kd8st1TeG6nA3lEUkHDvmfl9WkbBmjdk86eBBSPCRXjglxUzef/5pYgd69PC8rjW89pqZ\n6Bs2NE/81gpgsyPaSTonxy0YAPr0MZaDmBiI7bievQ3Ww1lbICoZwrIgNIuPG/4J96/iIHD7lxDZ\nuhl19/6FkW2fZ9KqpvRwbfj0+utGxKxaZc4TE939REaafurUga5dzWqN9983AktEQtUhIkEQhID5\n+muzjj0pybM8O7tofv2qpjrcDWURCc4n87IKGruBkb/vPCUFOnQwIsHpUrDs2wejRxuTfGyssSQU\nJxJs8qG0NPhlzVbCOswlr9GP0Gcar6UVQr9IONwC8urBsbp0bpBEwU8P0Cr4dOZ9nsDEf9fh2Wmw\n50ozLpu++W9/M8dLLjFHp+CxyyDr1DGWBDArI0BEQlUiIkEQhIB59FEjEN55x7M8O9v3ZFSVVKe7\noaDAPOGGBPAX1QYtQtktCf52R7SkpBiTf9265n1KitndcO5c81Ruf6uUFLONc3CwWyRkZbljEsD9\nGXcc2sEl798Id//MMYIguQdRC19k+rj/48K+jUAHH+9/3HBYVmi+jzohZuvljAzT/4ABRccbFmaO\nTpFg+w8PN0s0P/7YfU1EQtUhIkEQhIDJzvb91GxFgtZFN/mpKrzdDWlpxuT+88/m6bUycAqS3Fz3\nJkbF4bQklFckFGdJiI1177S4apU5rlxpRIJzVUNsrPnd/FkS0jNzmLp6JqO+GUVhTgMazP6UHXMv\nJDG+PqNHQ6cEwCu4MTwcRo1yn7drZ447d0L37v4/jz9LwpAhpk79+qZMNmiqOkQkCIIQMDk5vp/U\ns7PN5GeD3qoDb3dDcrKZGLdurRqRkJMT2Ge3loSoqMqxJBQUmOWH1pWQkgJbtphre/aYo9PqExtr\n4iTsaoXMTIiqr5l9YDLcMJVzv5zP0cJc+jW/jLxPPqRJfDQNwo0IU8p3YKN3WuW2bd3vfYmEffvM\n0ZclwW6eFRXl/jxiSag6ZHWDIAgB4y+7oJ3snE+oVY23u8FmDqxM94O3JSEQrEho2LDsY8vIMEdr\nSdi5E3r3NtaA9HRjGfAlEqwQcIqEmBgzlpTsFNYeXMum6FdZnngT45bfAsF53N7mKep+uJqzts9k\n+7ro4/kHrMWoTh0TsxAV5W7TGegIxipgd2D0JRLsHhH+LAkWG9goIqHqEJEgCELAFOdugKqNS8jN\nNdHxdh2/t7uhJoqEJUvgk0/M++jo0lkS0tJMdD8UtSSsXAm//WaO9jeIiXG7G7wtCcfFXKtf2Bb9\nDjNjz2b1xXF0ea0L29v/nQMR8xl/5isweQ6D6v2drG1dOHJYcfiwb1N/kybu4EIoKhLAuBxatvS9\nA6Mdj7NtXyKhdWtzFJFQdYhIEAQhILT2bUkoLHRPllUpEubMMX7vzZvNube7oSaKhJdfhnHjzPuG\nDUsnEsaNg9tuM9sze4sEa1nYts29WVPz5kUtCbv3FLI5bTOLM2YQdPVNcFsfPi+4g/CQCCK/n8y8\nm+eROO0gd+btYmTS6ONtgrFQHDnijgtwMnQoXHWV+9yXSBg6FO64w/dnmzIFrr/eM57F290AYkmo\nDiQmQRCEgMjLcwsFJ87JsSpFgvVjW5P7ieBusKmPwTzl2wnYH7NnmzTDS5a4N0Rav75o4KINOty6\n1fwGkZFmQo2Lg33Zu8ns+XfU6Vv5NWYd7V7JgroQ0r4xCaveZvID17F2eRR/+w36toLsdM/Axa1b\nzdG6KnyJhMceM0LkuefMuS+R4E8ggBEI11/vWWYtCc62TjnFrMQQkVB1iEgQBCEg/OUEcD4NV6VI\nsH5sO1FWpbshL89MVuURCa1bwxdfmEDD4GDPellZRkDMnWu2fU5JMfkpwKQn9rYkWJGwZdsxDkb+\nTNxfNvPIvO3MCd7OoSHzoTCYptmD2Df/Oth/Kuw/lUsGNuGLz82je/I2IwD//NNYJZwZF62QKSlH\nga2vlHtJY3nw5W4YNswsp3SWCZWLiARBEALCioGaJhKsGPB2N9hxVcb+CJdeCmee6bmaoSSRUFDg\nnmjBRPwXFJjP4b1r5dix8PbbcOGF5nznTnemxuMiISyTDccWM2XVQb7JXg9D1jKt+SLywpNRTYP4\naFUL6gUlwKaLYf7jPPhEC+55091HnGNvAxsL0KuXESODBpkcByEhbpGwa5c5+rIkgFskhIdXzDLY\niAiz0ZQz90RkJJx/fvnbFgJHRIIgCAFR0ywJ1t3gLRKqwpKwerXx97dvbyax/Hxjjs/IMDEaYAL0\nDh0yk3tcnBmv3bMB3MsCd+8uKhLsNsxz5gAhOUz+czqLsxfBdfuY3uAAWUP3Q9Quvg/J4/sZEBHU\nFCI6E7LxWtSyYTw15lTuuyeUn3+Gvvebcfbu7dlHTIz7vTNg8OuvTeIlMBO1FQn2e/QnEpzJjyqC\nyEixGNQERCQIghAQ/jIaWpEQE1O9lgRvEVNZIiE/3/SdkeFOWXzwoNm34sYbTRzB/v1moo+PN0v+\nVqzwdDWA2aAJjEg44wzPa23bAlF7yO84E3pPZNKuzcTprhDSkqyd7SDzXDjcErYOhCPNSGhdn/Xr\nweq1HqeaY6tW5vjUU6a/OnXgoouMmyPWhyUBPJcotm8PS5d6ji0QS0JF0KqVCb4UqhcRCYIgBERJ\nloSmTd2+8qqgumIS9u831gJvkQBm5YEdl93satMmc/QWCfHxZkK1Loh162DWLLj7blgS+iL8/e9Q\nEAJbLuSW8K9orDry3Efu++vVc3/2zZtNoOL27dCzp3ur5oQE85vYHAYHD5pJ/4sv/FsSnPERAwYU\nFQn+YhKCgkwsQkWJhJtuguuuq5i2hLIjSyAF4QRh5cqqn4idOEWCdqThtSIhNrZq903wF5NQUSJh\n1ix3XgEnNsrfigTnpGnFgr2/aVMzma9fD5MmebZTp45JMLRrF2Qfy+aZN7YwduIv9B83gUV174fF\nd8PzB+jy59dk7+jI0aOeT9bO9/n5Jo5g82YzqdugP/BMchQVZXaEbNTI7VIAt0iwGy1Z7D4LTrN/\ncVklw8OLZlssK0FBFdeWUHZEJAjCCcLatWZitJNUVeOMPXBuUmQn46oUCUePmnX7zv69LR12vGUd\n09ChZjtlb6xwsCLBOSEfOOBeqlinDtx1l0kU9NBDsGiRezIOCtZsz9hCXp9HeD2sLXWfrst/G50C\nt/Vhvn6KNqmjCJn7Ahf1i+a004wV4uhRaNzY3Ze3Kb5hQ+OmKClosGFD4xY680x3WViYcZNMnepZ\n99xzzbX27c15VJSZvP0REVFxlgShZiAiQRBOEOwyN3usarz3KbA4YxLKu5IgP98dtOePPXvg4ovd\n55XhbsjLMyLEBu3t2+e5JwSY3yEnx3NSTEsz/bZrZwRCu3ZmBcOWLdC6bT4vfLKY0IvvR49pyymv\nnMKelhOJOjCID6/4kPN3/gj/WQPPHaT1+le4/LJgvv3WuAysSKhTxx3k6B3sWJpNj3wJiQsuKGol\niIyEb7+Ff/zDnPuLR7CEh4tIqG2ISBCEEwT75Gyz61U1/nICWGHQqFHZJuQvv4TLLzfv33kHTj21\naJ0DB+D5542bY/Fikz8AjP/c6W6IivIvEr76CmbOdC8lzM83W1+vWlW0P2eMwZNPmviB5583ZdaS\ncOSI6cOXSfyVV0xiobV6BtxyHqsujmbbjaHc/utZFHSbTOjOQXw19CtGH91DxJzXuan7TYTtHgAH\nO0NePZKT3RN28+ZGOOXmGpFgn+pt3gRLZSUYGjDAvUFWSX2ISKh9iEgQhBOEmiwSIiPNqywiYfly\n+O1J7pYAACAASURBVP57IwCWLzemcO923nrLPM0mJ3vGQ3Tq5CkGoqN9r27YvRsGD4YrroD//teU\nT5hgov4vvNAIARvjAEaUgPHxP/20eb9+vRnn7Nme9TxEQmg2JM7nx8yXufTjSxm39mooDIWFD3Bd\nxDssuGUBXb5LpuEvb3Bp+0uJj2543DKUmurem2DPHrdIiIpyb+Vcpw588AGMHGmyD9rrULnbJ1sL\nQkmWBHE31D5EJAjCCUJ1iwSnK8Hb3RAZaSaIsrgbcnKMeT8720zEYMz2Tr7+2hx373ZvTZyVZZ6y\nnZaE6GjTntaeIsGuLIiJgRkzzJP++PEwerSZmB97zET8W6xIOHjQtBsTYybxiy4yKZItW3fmEBS9\nE2LXQcIC+Ft3uKUfr6x7gEO5h3i53wcw+Qf45UGuSrydPgl9aBQdfDwjYcOG5vfU2nxmuyzSZj0E\nd8xDeroRCQkJJlbCPtXb2IKaIBIqMnBRqBnIEkhBOEGwT5w1wZLw0ksmmv7qq8tvSbBP/mlpniLB\nBuYdOAC//27e79rlDpqsU8cECe7aBTffbMrtDoNHj7pFQna2e5nhnXca68E338C99xoXQlCQmdys\nG8L26WTgX46yalM6NE6BU76nRZcd7FaLyGi6go+CCmG0q2JqO3hzCalbulM3IoT8fLjbdcnGEERH\nu1cLNGhgllNmZprPPHCgK4ESbpFgJ930dPd2y2DcDo0bQ9++8OOPNUMkJCYWdYMIJzYiEgThBKG6\nLQlOAfDWWyaozykSIiLMROtrL4JA2t282T05Oy0JP/1knrRDQsxkb9P1BgebifSPP8wL3CIhN9eM\nSym3uyEy0uQumDDB7Kb473+b60fzj1KY9B7TMzexdGY6aTlprNqeDiPTISIdFZnGJyE50M60HarC\niah/CizsAkv+xgN/a8W/nqoLeXWpk9mBOkGR1HVN7CEhZkzp6Z4iwWlJAGOlyMhwuxvAvyXB0rOn\ncZF8+qlnW5VBZGRgGyv9738Vk5JZqDmISBCEEwQrEqpzdYNS7piANWvM0SkSbL3i1tJ7Yy0Jixa5\ny1JT3e937jTtxccbq0FCgnuStcsNLXaizMkxlgTrftizxzyFJyZqlqzKJCL2AL/sTObX3b/y9rK3\nOTZgO+vyTiEvJZroiGgi8hKISu1BZko03U6JpmfHRnz4RjTkRjN7ajc6tm5A/FjT12Wd4fnd0KQJ\nhEQXTSUcF2d+O/uEfcklbouAHa9dRVEakWA5+2yzl4TdRrkyUMpYEUqyJJRGHAonBqUWCUqpPsD9\nQBIQD1yhtf7SdS0EmABcBLQBMoAfgQe11sUubFJKDQGeABKBja57vivt+AShtlLd7obsbDPp2qf8\n5GQzJm+RkJ1dOpFgLQmLFrlFiNOSkJxsnsJbtDAWgfh4/yKhUSN3m1lZZtLdcXgbs3InkzFwA42e\n+45DuW6VFR4SzuAOgzkw6XP+fkdXMraafn7dAQ12mUnvptPMRP/hRnNPh0TPJ2qb1TAoyOQV8J7I\nY2NNbIP9fq6+2rzA3Y7djrlZM3P/0aNFRcKxY75FQosWZuVGZdOrF3TtWvn9CDWLslgS6gIrgHeB\nGV7XIoEewHhgJRANTAJmAl7Zyd0opc4GPgYeAL4BbgC+UEr11FqvLcMYBaHWURnuhn37zCQWEsBf\nArt6wDmBr1njGZNg6zn573+NK2H8eN/tWkvCkiUmDsH65y1797pFwqZNZm8BO1l6iwTrbkjLOMax\n+MWkDHiZo3Gfs74giuiCjow+fTRdGnehcd3GNK7bmPYx7QkLDiNupHGT2JUMYJZl2mDGX381x5AQ\nEwcQFAShoUbQxMe7n6Bbty66TXJcnP/fzNuS0KiREQ4HDhQVCVC9Gx79+GP19S1UH6UWCVrr74Hv\nAZTy9D5prQ8DFzrLlFKjgd+UUi201rvxzV3Ad1rrF13njymlLsCEA40q7RgFwR+bNhmzbGhodY+k\ndBQWVrwlobDQLCF86SUT+FcSOTlmEtuyxV22dq15Yvd2Nzh5800z6fkTCbb+gQPmSXzvXt+WhJYt\nYd48E6BoJ2Jvi0Vh/R1w8y2c8/ViuC2Xo7nt4dv/ELP3Jm6/KZIn+/seg93JMSzMHRhprRJgXAng\nKQgaNjQixWlif/vtoj75Sy/1nyXT25LgSyQ4VwvIrohCVVMVSyAbAhoozpN6FsYt4WSWq1wQKoTC\nQvMUagO9TiQOHzZPrbGxFScS9u41wsM+xZaEtSRYQkKMJSEtzZQ73Q2W3FwTVOjc08AbZ86FxEQz\nUf7xh1mFAJ7uhuRk075Pd0NoFu9mXgnRW7m83jPw7i9ce2AdLPkbB/ZEeqwM8CY42FgS8vNh+HBT\nttvxSGNFgrONBg2Mq8FJdHTRAMK//tUssfRFRIQRrE5Lgr2/plkShJOTSg1cVErVAZ4FPtZaZxZT\ntSmw36tsv6tcECqEnBzz8l7eVl0sXWrW/48bV3Jda0VISCiaQ6Cs2NwBgX4fOTlmUrZP2926mYyE\nBw8ak7ovd8Mff5i6eXnGp+7LguOsn5Bg2ps1y2RVvP9+t7uhaVMzke/b5+VuqHuAof/4lcWFr3KQ\nTYRM+4X4q7vDLohzbIcciEgoLDTbNsfGmsRLlrp1zaTtbKNxY3dCo7KilBEbW7ea7y883G1dsAJI\nLAlCdVJpIsEVxDgNY0WoNJfB2LFjaeC1Lmfo0KEMHTq0sroUTlC80/VWNx9/DK++ap4yS1o2ZuMR\nEhPdpunysmOHOXo/5dtUw94b+djAxfBwM+l37mxcD1Yk+HI3/PKL+31KijvCf+VKc23kyKKWBOfn\n27nTxCjEx7vbP3wYgiMzeHvpp/wvfQHc9xFTtKZBeANmXjeTO97pzrx5pm7Hju62evTw/10EB7uT\nNAUHm2WS3iQkuJMdAUyeXLoATX80bOje6hncIsG2bfM42LTMglBapkyZwpQpUzzKMgI0SVaKSHAI\nhJZA/xKsCAD7gCZeZU1c5cUyceJEevXqVaZxCicX1S0S8vPNRGSfEDduNJPtoUOeZnxfWJFgI+m1\nNsKisNBkELz66tKvT7ciwWlJ2LHDTFb/+pd7Ux8w/WVkmCfn8HDTV4sWMH++2cOgOJHQqJGxfhw8\n6BYJd91l8h/YnRQtiYme38Xq1eZ4fDOjuDUsjXuLfZ2nMvKbVBqHJcJ3LzPj6Su5on9zlFIkJJjY\nhfBw954DYGIa/BES4hYJ/oI4v/nGc2xt2/pvrzRYUWC3bvZ2N4D5bnNzJeWxUDZ8PTgvW7aMpKSk\nEu+t8JgEh0BoAwzQWqcHcNuvwACvsgtc5YJQIdjJKLMkyVrGtktKSXzDDZ5/+De6ltTtK1EKG2EA\n0KqVMYtbofPrrzBkCKxYUfoxW3eD05Jw443maLP+WW6/3fRx5plmooqLM+Z/u9lRbGzRmITCQli4\n0OyZ4Oxn1SojEDp0MOmRnZYED3eKKmTO6lXQ+yXGbxrMFQvj4M6u7I+ZTuz+Iey4Zwe/D9vMWcFj\n6JfUAhtHbeMEOnRwC7JWrYoXUcHB7oBFf2v9ExJKzhNQFqwo6NbNHL3dDeB25YglQahqSi0SlFJ1\nlVLdlVLWeNfGdd7SJRA+A3oBw4BQpVQT1yvU0caHSinHYiNeBv6ilLpXKdVBKfU4Jg/Dq2X9YILg\njffGPxXJ3XebbH7F4QyYPHbMbVbf7x2N4wM78donaptsyE70ZYlT8LYk5Oe7ExpZ4fLVV7Bsmcmk\n99RTcMcdRgzExbmD+cC3JWH1amMpuPJKc25FwqefGlHx17+6LQl16gChWfye9SkL46+H4UlwXxP+\nU3gqDHyQgqBMrm97J3zyGS1nbKPTtldpXr85LVqYMTuDBa1I6Njx/9s78/ioyuv/v5/s+woJYZNV\nEFnUAAouqKit1t26oK221bpra79qXVr9Wr9af2qxLrW1rqAFW/d9x+KCohAElU1kXxIgkH0jyf39\ncebx3pncJDMhIQvn/XrNa2buvfPMM7mZOZ97znnOcb0CBx7Y8t8iNNzQGXhFQlxc8FJKFQlKZ9GW\ncMN44EMk18AB/hLYPgOpj3BSYLu9tjGB50cBHwW2DQAa7ICO43xmjDkXKcR0B/AdcIrWSFDak/YK\nN9xxh7idL/dk2mzcKDH3UGpq5JaRIV6Eigox+Js2iVGG8DwJdu5HHCGG79VX4aqr3Cv5khIZp49P\nqm9hoRj00CvpdevE+OzYIXPZtEm8FCecIGvi6+tdLwC4iXwJCWLkQ0VCbKzMrbpaQhD/+Y88P+YY\nMXhWJGwuqiX7oPmsTNhA1QGbqen1Pakj51OX+DU/e6WBA4dPZEhVPnNfP5FBUUewfdFk5u5IZOVK\n+McyKO8NcZ7cgFAGDpT7kSNFMAwY0HpyqFckhFMzoj2xqyhsoaIpU5rmnahIUDqLttRJmEvLHohW\nvROO4zRZrew4zguIF0JRdos1ayS2HWoU2yvc8MYb4nb2ioTKSjdvwMupp0qmvuPIayoqxFjaUAOE\nJxKqqsQ45+bKuvsnnhCRYA3MwoUSdvjiCxg/Xt7vn/+UEsBDh8Kbb8LUkIDe+vVSRe+TT8QzYT0L\nxx8vx3vnmJPjxszz8iQ3IVQkgNsJ8rzzxAtx+OFi4Hr3hsJtdXy5aTEvZV7Bzn5fsqIYOCKNxtKB\njM6eyPlTL+OIfY5gZC/JNky+BTbtcksVW09FaWnTgkVevJ6ElBTX29IS3pyEPe1J2LBB7m2S5ZQp\ncvNiP7uKBGVPo62ilR5FYSEMHy6x8FDay5NQWdnUsDcnEmyWfVmZG2suKpKiTomJYtDCDTdYQ3HB\nBZIfsGqV60lYvFiEwUcBX92qVXDppfDAAxJr9xp8kCv9sjLXDb9tW7BI8M4d4MgjXdH13HNSmdCK\nhIQEN36elCS1E15/Hf78Z/F4AKQO/YY7t+cz8bGJVMSs48i1H/LKweVwVyn8/Wsu7vM4F+df/INA\nAEl43LXLDbHYpL26upaN5QEHQH4+HHpoy39TL96chD3tSXj6afjpT1v+TOpJUDoLFQlKj2LjRnGZ\n+7n+21MkbAnpRFJRIS5/2/zIYo3wggVu0tvWrTK/nBwxgC15EhxHjLktfQwwKVBibMkS15NgqyDa\nlsp2TGvoQ9/DVgC0ywK3bpUr7uxsWeaXmQnvvSf7br892F2fkiIGOytLDGqvXq6ASEyEJ5+U8MpV\nVznsit3GzR/czIojDwTjwFMfMuq9VewbdyS5mW4Wp1/Wvl1JECoSoGVPQna2/L1bWs0QSmfmJJx+\nugivllCRoHQWKhKUbsf27VJX32+Zr417e5fVNTTAtGnikoem4YbHHpMr7VtuCe5EuGuXZOiD7LfC\noLJS3sfmFNhtDQ1yhe7Frn3/4gt3ZcPWrXJcSopcjYcacMdx5z9njhjJbdtcQ5GTI4b5m29ckWBj\n2FYkWO9EQYHch4oa+3zcOLm3noR99hGDP2qUvDfAJZe4oQYvUVEyFxtq+Lroa2pGPwJTbyLh1z9i\nn7/1JufeHO797F6iP/0jPLIQ1h5J2fZUMjODVwp4CwZZbFlku2zSe0xLIqEthLMEsjNRkaB0FioS\nlE7hiy/gmmva9tqCAnFjf/11031WJHiX1RUWwrPPusv6vJ6Exka44gp4/HG5Yj7xRHffccdJvQAQ\nkWFL61ZWiiH3hgnsmKFtnK2QmD/ffVxUJEIlNVUSDUPDDS+9JI2O6uokLFFZKWEFayiMkSS3r75y\njf2uXXK/Zo18hiVL3M8HTUWC9SSMGCGGp6jIFQkgoqC8XJIRs7NpltxcyMqt5va5t3PQPw+iMP8y\nGDeD7PR4rpp4Fc+f+TzfXfUdD599CzSIhdu0SbwE3hpofp4EKxKsJyEmxr3Kb29j2RVWN7SEigSl\ns1CRoHQ4H30k8WkvL70Ef/tbU/e8ZdMmuPJKuToPxS7Z84vl231ekWCvtu3xXpGwfbsYY+tB8K4O\nWL9eksocRzwJGzfKY/t6r+G120LzEmyce/lyd06hnoRQA/7BBzLO+vVu2KSoKLiG/+jRclxDg1vq\nODdXjO8bb8ALISnAfuGGtDSZQ58+st8rEvbfX+779m1aeRFgR/UO7vrkLradOIW5h2Txp4/+xLWT\nriX5vhqYvol/THmVW4+8lTNGncHA9IH8+tduF8G6OsLyJISGG7zHtbcnoTNXN4SDJi4qnUUX/Doo\nPY3HHpOqgDfc4Mau166Vq9/aWv+ryI8/FhFx3XVNm+i0JBL8PAk2uc++zhtusJnln38u916DZJcv\nFhfLa4qKxMCFXp3X17tiIFQkWMNTWen+wG/dKuOlpLiJi96cgwUL5H7NGrceQlFRcIW/0aPdAkv7\n7y9ehREjpAJiRoZ0Z/Ti50mwn7VvX3m+fr27fNCGF/r1g/LaclbvXE1hRSFbKrawrmQdD3zxAJV1\nlZyw/wkcNvAOTh5xMsOyhnFXYE5+JZBzctzHmZmS7GiMCK+WPAk23AByXEVFx4oE9SQoiouKBKXD\nWbzYTfazhsl2vSsr8zcQNiZfWLj7IsF6EmxBIm+zIbvPhgK8Bqm2Vsaxcy0qCvZCeHMULK+9Jl6C\nk05y38seY3/ot26VsXv1kmVvjiNhhXHj5PjFi+W4NWuCPQm22A5IS2WAm26Sv+FXX7kJhEOGyPP4\neHmfwYPFS3D//VK+2XZTtOciLw+WfO1QHb+Oyl4buP/zAuYUfgbnb2dFbg297vmSuoa6H947MyGT\nE/c9kXuOvYfclNBq6kJQd8YANncBRMgYI96E0tLwPQn2f6W9jWVMTOetbggHFQlKZ9EFvw5KT6K2\n1r2qXbnSXyTYK8yGBrnqHzjQNfIthRRa2udNXPS2/LVUVoqhCt3nNRDWk2CTAq0HwOInEqZPl7oI\nfiIhNdWdd3S0eBJsbwEbjjj6aPeKdu1aVyRUVweHG/bfXzwaxri5Er0CHQ+tSBg/XpaCHnKI/L1/\n+1vJop87FzZtbqDP4J0s3LyOZfv+jWWD3oWTN/HH1RC3Lo4JfScQu6s/vWNjuXnqGUweMJm81Dxy\nk3OJj2neUr36avPlqb25DVYAWJHgJxTt8V7htifCDepJUBQXFQlKh7JsmXuVvnKlrLevqnKNuXWZ\ng8TRf/lLcdl7PQmhWHHQmifhtdfgqKPccIMXKxJsuMFiDYUdw+tJqK8PFhV+IgGkRkFDg7v2PjZW\nxq2sdCsPpqTILStLRNLy5XJ1bw3shAnBngRoerVtQzc2AdArEgAmT5bSxwMHOsx+53tI2s6n5d/R\n7+7/pejoNWAcnn8U0hP6w4LzYP3hfPLaEPKHDCEhJoGXs0SMDB/e9O/XHFYc+REb6zZ78ooEv88G\nUhwqMzO434UVE5qToCh7hi74dVC6Ms89Jz/Qp5wiz998U66uzzrL/3jrOs/NFZc6yBWyxSsSvvtO\njGRlZcsiIZxww8aNUlI4J0eqA4Zy3XXwhz/IcSNHipEG11DU14uhtyIhKkqu3K1XIS+veZFQWysr\nMHr3lseZmTLnHTskdGITIK1nwb7/uHFiNJctg5tvlnubkwDBngRLXUMdMWkVkLeWTelr+MeCbazM\n3QFHVfNFRg07snbydsH7cPW6H16T7RzPjndu4GenZ/OLs3qxYs7BXPx+PImJMHm4Kz5sGeb2pHfv\nYJFgBU5zOQmh/1fqSejceSh7HyoSejhVVWKYnn++aanXSLj2WjH0r70WLBIef1wMmU18mz49+HVL\nlkjC3fDhbtW/5kSC1+i2VSTYfd57byvkhAQx/LNni3jYsEEKHm3eLHOxYQ5rMKxIGDNGBI8tWjRs\nWFOREBfnhhcmTpT7ESNckdDYKImAa9a43gQQkfDll/I3Sk+XkMzgwfDWW8Gu+6Qk+H7H9ywqXMSS\noiXM2zCPD9d+SKPTCJfAjGp45s1oUqIzYVwSK0igdEsSp+x3Ihs/PIErfz6Qc05L4+RzBnDX54Zj\nr4Yj9oHqQAjI1kjoSHJyYMUKVxxYT0K4LZD31pyEY4+V/BNtFa3sabrg10FpT/79b3FZv/zy7omE\n//5XlsoVF7s/piDGvLpaVgesW9f0dcuWSab84MESqwcRCfbK3CsS7Nr9lkSC44jBHTSoqUiornYN\ntnXTT5ggBtjSu7cbYlixQq7qDzlExM+ttwaLA3tfUSE9DhYvdj0Jw4a5FQnte/bvL38Db2Geurrg\nHgf9+sl9Y6MrEoYPF9FSXe1eKQ8dGvh8MTWQvR4GfsK/k5/k3gc/ASA3OZcD8w7k/h/fz9Y1udz+\nu0HMengwZ5+cxYb1UQweDM9/7ClN/BO5y46B1QGhY2P+fT0ioaPp3VuEgb1ab6tI2Ns8CYMGSWMx\nRdnTqEjo4Tz8sNzbeHVbKSmRmHJxseQMNDaKoa+uFkNaXR0cz7csWyax5VGj4MEH5bVbt4rg2Lq1\ndZEQKgQqKuT9xowRw15Z6WbS2wqB8fGuSLjnHslzsEa9Vy9XJBQUiPdjyBDprjhggJt/4BUJtbUy\n38TEYJHw9NPyd/CKhPh4MTLffCPbbLjBYkUCQEqKw7qS9XwX9wXl+d/yZlQRRUcWcegTRWwq2Qo3\nFkF8oISjY4iNnsJzZzzH4QMPD1pV8G0y3L4ZRg2CKCPGfsUK/zBLZqbrDQldYrinRIL375GWJgbf\nrxaDHx0ZbrBLW7uiJ0FROgv9OgS45BK56jr//M6eSftRWemuufcrYRwJtpJgcbHE64uKxLhYT0J1\ndbCHAcRVvm4d7LefGGHHkWz7nTvFUNTU+IuEqirXSFtPQnU1XH01/Otf8nzsWBEJX38tFROPPhr+\n8Q9pc2yMW7hnn33EsN99tysSLKtWyb292rZLBiHYo1BdLUIkNzdYJNTXy9/DioSrrpLjX31VRELf\nvm7hIEtq380wah70+Yrr1j3PpvtXyI78Pmw2eZi4XIZlDWNy/0O597YcqMglqqovjZvH8du7evFT\nn/LI++8vgseWWIbmkw0zMtzSzVYkZGfLFbotId2R/Oxncu4saWn+SYvN0ZHhBktX9CQoSmehIiHA\nnDnyw9OTRIK3j4DXGEeK44jIKCtzVyqsXy8iwRpRP5GwcqW8duRICTf06yfVF61IqKx059XY2HxO\nguNIuOSxx2ScNWukBTFIM6GCArmddhrMnCkZ/dbIWy+DdWuHelQyMtzCQQkJ/uEGW+OgTx8Jq8TE\nuEWHtmyR/VFRUoPAGMlHqK+XpYb19ZCcWQF9VsHEB/lTxVNwViNUZTE28xQemnIXZd9O4oKf5nLQ\n0fL6GQ/K2E+fL2Js0BBYXeWfuGixjaRaIzPTFXxWJBgjwibcMXaHww5zazyAWyUyXDoy3GBRT4Ki\nuOjXIUBtrVv/vqdg1/Qbs3uehKqq4GZGIB6Cgw92BUJVlWtg/9//k2ZKp58uz0eOlDkcfriIhJwc\nMc5lZa5I2L7dfQ+vSKiqks9RUCBege++k5UAo0ZJ8tusWWJoPvlE4vjGBMe3bdzfigSbMHfjjVIq\n+tBDXVe315NgRYL9bElJ8v6ffy7Cw7rozz1XWiOnpsLbq97i9ZWvU1Nfw9L8jezsuwknsZhHUwrh\nUqAmncsG38djv5lGXUkvbl9gyB8JHwSWaG7bFnw1f9JJIoyGDBEPRksiIVysQY6KCi6LfOyxuz92\nW7jiCmmTHC4dGW7we6woezsqEgL0RJFgPQn9+u2eJyG0aRG4SYp+4YbZs8WYjxgRfKV44IGyZDI2\nVoxhSYk7LxtqAFck2DX1hYUiOvLz5Qfc9hUYP176Fxx2WHD83YoEr2Dwrsd3HFne+Pe/S5jC4hdu\nKC+XY5OTxYsB8rhPHyC5iG+rvoVRxTTs9wk/mfUgw7OHk52YTXx0b5zVU6E6k3N/PIxZDw2DbaM4\n94M0Xk6CzSWugLHejm3bJDRjeeghOO88mDHDnfvukpEh91lZ4ecBdCTJyW5dh3DoqHCDehIUxR/9\nOgSorW16tdyZOI5k3g8YELz9++/FIC5cKBn3LeEVCeF4EmbOlIRA63besUN+jENFQlqahBugqUgo\nLnZrIzz7bLALOzdXREFRkWzfscMNY3hFQlWVjDd4sCsSCgrg+uuD5zFhgoiEUDe5NSS2N4Cds3df\ndLTM01vNz8+TYBtMJSVB3sBKyP2e2jHzOOOF1+F370C0/NNUV+Zy65Rb+eOUPxJlopg5Ey54S147\n9ecwK1CEKTFRcgA2b3brJFiRsH17sLcgPl6KT734ojuH3cUKNhtq6G50lCdBcxIUxZ8ucC3RNbD1\n/LsKs2ZJ3Ntmolts4tzjj7c+hg039O8fnki45RYRCpbsbHHHh4qECRPcVsQ1NW7OQl2dxOEtq1Z5\nluDhLgVcs0auaNPSJBY+ZIh4HqKjxYhXVsq49sr9009l/FBRNH683Ic2E7JCwFupzxpk79X4wIFu\nB0VwRcJrczfwyrI3YPzf4Zgb4IxzuWXdZK7dlgWXjaP44CupqKugz+Lp8MB3cNdOnHu2cOuRtxJl\nopq8T2KiO6eEBHfpYagnob7eXwjYubeHSPB6ErojmpOgKHsW/ToE6Ohww8qVEo+/6KLwjl8RSHpf\ntSq4+5/1dixc2PoYXk+Ct1ZAc1RVBSc7glxtewVGbKy4wC+8UDwdNnegpER+XD/5RIx7VZV4DCZP\ndl9rezTU1we3Ci4ulpUJBxwgY9pwQ16eGANbjyBUDBx9tFQF9IYMwDXQ3iZDoeV/i6uK+XTDp2wq\n20RxdTHFVcV80lBMyclbOHnOHIhqhONjoGwAlA5kQPIwTtv3bO68YgJsG8V/qzM4/t9QPSZYGFm8\neRFxcTKXmppgkWDn552nX0ihPUVCd/ck7AmRoJ4ERXFRkYAYrcbGjhUJs2dLNcJwRYK94gu9irfe\ngYUL3VoFzWENft++4XkSqqrcHAFv6MU7h+xsyeK//HKpE2Dd8Y4jf78dO+T9kpMlFHDwwe5rvUWF\nMjKCr/SXL5clhG+84YqEpCR5zfz57hJEL5mZ8NJLTT+HNSRJyQ5rS9axpGgJa4uKYcp6Xqhfcl0b\nNwAAIABJREFUx0ezt/P2qrfZ1biLmKgYshKzyE7Mpo5snNoskuY+SNR3J1OxJQ8csRh3XCHtme/0\n9Hp4+GH5+/stHfQa+/h4+SzFxa5ISEpyjZFXJHS0J8GKBG+zpe5ER/UwUE+CovijXwfcOHRHioSd\nO5vvjueHvfLduTN4uxUJ9fVulr+lqkqS+55+WlzxFRViWDIzxfg7TvNldx1HDHNZmXgKbGGduDjX\nS5CRIcYlLU0aJ735ZtNxysvFEP74x/KD7jWA3lbBmZlueea0NHnfyZOlsqMVCQkJkiC4YYPkSjQ3\n96KKIpZvX87y7csp2FLAR/Xr4bKNLM1az+D7PRmbE3LZxiCSd6Vw59Q7OWv/sxiQNgATGPiJJ+DC\nm6Eupml+SlJS06qANhzy4YeuWLL4eRLsdlt10Du2paM9CRpu8EdzEhTFHxUJ7BmRUFIihqeuLrwf\nOGt0vF0AITgcsGNH8L7Nm0U4PPeciITycjEwaWkiAioqXIMDcuzAgWJ86urcMslLl7oudLuuPiND\nagzYK9CcHLcYkRfb9veaa+TmJS5Oxtu5U8azBX8uvBDuu09EQlKSm7iYmBhYRQAMGdpI1a4aymrL\n+Lroa1bvXM2CzQv4dtu3fLbxMwCiTBSjc0aTED0U1h7FkOr+/PWm0RzQ5wB6J/Vm3iexTJjQvLG1\nV6d+CaxesRPqOTjyyKbHe419qEi49FIpLmWJipLjQ9tBW/r2lTHs8s3dobuHG/bEEsiusOpDUboK\nKhLYc54EEAMYzg+cnZNfWeLQY0Lf44MP5N6KBGtcysqCRcJ++8nKgIIC18tRVibj2PfJyhLDn5Eh\nV8C2GFFamn+DpbIy92rVj5wct5jSn/4kIYbyynq2pL/OrYte4fsJJaxJLKPkzHKm15VRcUAZjCnj\nlbhKku90x4kyUYzNHcuwrGHMPHUm4/uOZ0jmEOJj4pkxA37xFow+DU7wVB5srXdFSy5sa7y3bw/v\n/Hk9CfHxrkiIj5dE0v79g49PTg7u3eBl6lTJaWkPkdBTPAkdFW7QUIOiBKNfCfacJwHEld6SEQ2d\nk59IsFeddpmexXoWCgrkcUWFxP2tcSktlSTGnTtdo7VokbuEESRu7hUiqamuJ+Hee4PrDvjVXigr\na+qWr6mvYX3pemrra4kfUQxpS/nL8m8pWbqBkpoSlhQtoZRSxm0ZR1RsP2JqcnC2DGXc8DTq6tOY\nOyeVc3+awgnHJpEYm8jY3LEMSBtAfIy/pfBLXAyHlgyPHSvcWH6oJyEpSZI+m3NlJyc3XQJpMab9\n+ipkZIjnw3ap7G6MGQOTJrW/yLHiQEMNihKMigTcIkB7ypMQDqG9Cyzl5W6TouY8CY4jcXJvuAFE\nJDiOFCP6zW/c173wgnRC9Hu/ujoRCenpwYalyVVtbBWkbmJHVANbMr/m9+8tYFvVNlYWr+TLzV9S\n1xD4Ix8ENMSyYNu+DM0ezID0ARw39DiOH3Y8+X3zmTZNajBsngc/PxPKk2Du5/DzW+HHYwkLb52E\nSGhJJETaotcv3NDSGHau7ZF30BLR0fK/0V0ZMQLmzWv/cdWToCj+6FeCPe9JCAc7p8JCqY1wyCHS\nzKiiwhUJoZ6EnTvlx27wYAk52BwEb7ihrEz6DdgmPyDehLHNGODaWteTANDoNPLishd5sfF1uGAd\nxFVCXAVkroaYWrYBc4DVSweRm5zLoIxBnL3/2YzOGU1ibCIP3pPB7IeH8k1trG/sNynJzcNITHRX\nQHiXgbaGX52EcAgVCTExbu2CSOPUfuGGliomWpHQHlUVlcixIkE9CYoSjIoE2iYSbr7ZXd8fDpF6\nErwi4c03pWTv22+L4bcubz+RkJkJxxwjXRAHDnRXI4B4EjYF+gQsXy73vXtLbYLm5lVTAzuqSlg5\n7hL63DuXkpoSahtqGRR/IFSMgLoUuZUMgqJx0BjDRWf149FbB/uO92EfyMlu3ugmJ8vfFcRgTp0K\nzzzj3/a4OdrLk5CR0XwIoDW6qidB8Uc9CYrij34laJtImD8/fINfX+/G+VvyJDQ2Sk+EwYNdAWBD\nBiCCobxcjH5srMx75064/Xa46SZXJEydKuKlokJaJ9vXl5WJIACpcAjiQfAWRbL07QubC+vZsc8M\nNhx8C9HxVVyffxW9knpxSP9D2PbVRE680f9z5Lbgtr/8cplTc4SKhIQEWZIZCe0lEtLT2y4SvGPF\nxUmNh9AOlF6s10M9CZ2D5iQoij8qEmibSCgsDP+qw1uMqCVh8c470u64uDg438C634uKxPD36SNG\nqKYGfvELKW08aJAkK2ZmSg0DkLBCaqpctcfFyZjWk2A/65gxUpDoh3kl7IQJfyfutKeILl1Hqakj\nec05/DzvLv50lJs99/Hq5j9HS1fM6ekwblzz+72GPdI8AIs1tJGGG0Lfz4ZYIhUb4DaXqqmRv/11\n18FllzV/vHoSOhf1JCiKP/qVwDXIkTR4Kix015y3hlcktORJKCqSuVRWyr0xkmhoVy0UFrorFhIS\npEXxq6/K83feEeGQlSUhhv33l/3WUNq+BD8UZ0raTlz/b1nY5z+sP3wNFy1eBdcXQ9IOqI/nyCHn\nUrbiSt74+6Gk1uSTF2LgvMWAYmODBVZbjTu0XlgoHNrLk5CSIgKrrYbbigRbcbGlcVQkdC6ak6Ao\n/mjZECL3JNhuh+EmIXqrJlZVyRX+rFlNj7NX83V1YlzslawVCVu2SLghJUUMz7Ztsv3EEyVjfcsW\nV7gcfrjc21BDXJyMu3EjMOhD+O0g6s49kqUNr+DUxzHM+QnMuxZefpJe/1rNk6c8wY8yrmbX+nwq\nK5saXK9ICF3psDsiobU+BuHQXomLCQlya4snASIr/KOJi52L9SCoJ0FRgtGvBJEvgdy6Ve7DzUkI\n9SScdJL0Xjj33ODj7Hi1tXLLyBCBYUXGunXy+tRUMV5WPJx+urRl/vxz2C9/G4sLN5N24FYYVcpn\nNWX89fMy6g6u5qXazaxOXgYXzIHVxzB8zb08PX0/Drk5lpEXSXMmgF4j5T4hQfIkysubFwkJCU2v\nfndHJHgFR1sNZm6u/I3z8yN7nRUJ0dFS8dKKhLZe3dv5eztNNod6EjoX9SQoij8qEojck2BrCYTr\nSbAiITZWhIBNGgxt0BQqEjIzpa2yFQkbNsjx1pNQvKMRBn3E18lfEX350zQkbeTJlK08+UhgwLPg\nZQfenZNEzdgEVjfmUVc1iN7fPsK29y+g/xFx7DNADv3uOzckYb0RXmMfary8rZdDjfnuiISf/MR9\n3FaREBcnYZhIsSKhb1/5W++uJyEhQc55OMsn1ZPQuWhOgqL4o+EG2i4S6uv9X/POO7JEsqZGli/O\nmSP5BX36iLCwlQpra8WjcNFFknsQGm6wxtp6DGzvh6TkBurz5rFqyiT4xVHcseB/yI0bDAsu4+cJ\n/2H+RfNZffVqZo/byc5rdlF5UyXDXyrmgspviH/hdaak/hoa4sjOljLJMTEiEtLTxVD6iYRQQxkX\nJ/utSPAat90RCampcMMN7uM9iVckQPt4EsLtMZCcLGIiHK+D0v6oJ0FR/FHdTNtFArhllouKxGMw\nYgRcfbXU2v/vf4Orw6WkBIcoamqkERPAgw829SRYY7VzZyAJLns+nHIhl21aScPhuzBF42DGB2z/\n6lAe/Uc8v/8rTD4bJvaT1w0+1X0vb+LiyEA4IStLDFPfvlLlcNAgESu25K03Ru93NZ2W5hrS9HR3\nGeXuiASAP/8Zbrxxz19VWwOdni6fNz5+9z0J4YqE006T92uu06XSsWhOgqL4o18Jdk8kVFWJSDjn\nHBEFpaVw8MEiEubNg4ceggEDxIDec09wiOK999zH1dXBnoTaWkjOKoexr7Cp3yrijlhJTd5rsHV/\nLh54H5++PowlLx0DTjTpKa7YCC2wZImLk/Hr62U+4BZl6t9fREJSkvxIWpHQUrgBRCTEx4sxT0tz\n/y67KxLs2HsaY+Tz2CqVCQlSgyK062O4JCaG34ho0CCpIaF0DupJUBR/VCTgigTHkYQ1+0PxP/8j\nxvXPfw4+3tt0yRp9KzCmT3fbPE+aBJdc4l6dPPxwsCehoMB9XFPj7ttasZ11I+9kad4MOH0HNRW5\nRNcOZdC2y1k784+c8/MU1lTBEkcMUVSU1EZ4/HERK37Ex7thjtRU8XhYj4LtSJiUBH/9qxRzgpbD\nDSCG3LY5TkpyV1C0h0joLKxImDQJRo+WpNC2EoknQelcNCdBUfzRrwTu6gYQY29/MKZPl/tLLw3u\nwldUJFeapaWuSLDx8xdflD4DJ5wAb7wR/D7Jye6yRbAJjQ70Xsrzy79lUep3cHwhl331Kjv3Keeg\nxl+w9NFrqNoygHGT4cwz4Zo6mZ81xPYK3xj41a+a/4xekZCQAEuXuq7tfoHwRGIiHHus+5rWPAnp\n6fL3sjkJPUUkpKTAk0/u/liR5CQonYt6EhTFHxUJBFc33LXLLYJjue8+ucK2lJVJHL+01L36twa4\nvFxCB35r9BOTHL7YsAjGLIfslbybuBEuKYC8RfzmY4jtnQ3RfRmaMJ7oGfdxwtkDWVcPVcicrrpK\nrvonT3bd2OEm1cXFuass4uODM+69ngQvrXkSMjPlsx56qIQaVq6UYk/dWSSkpITXyjscIgk3KJ2L\n5iQoij/6laCpSADpvAjyQ79+ffDxFRWyFn/ZMteTUFoq95WVIhxycpq+z7cDr2TjmIflSXkfdpiB\nUNYfPriDd5+ayG2/z+bTT+E3s+HqHW68H8TwRkfDT3/qPofwRUJ8vDvHUCNuPQmRioS77pIch/32\nk+dPP+0/fndi9uy25yCEkpqqdQ+6C+pJUBR/IhYJxpjDgeuAfCAPONVxnFc9+08DLg3szwIOcBxn\nSStjXgA8CTiAze+ucRxnj/zE+okEW8vggAOaFk0qL3cNo91XWioxeisSvMbh/dXv88jCR1iR/jy8\n8xcouAhq09jvECmABJDQ2HQJpF1iCE0z/dviSfCGG7xYT0Jz79Hc+wwf3vQ9/MbvThx8cPuNdcMN\n7vJVpWujOQmK4k9bvhLJwFfA48CLzez/GPg38GgE45YC++KKBKcNc2sTzYmE5GTJL1i3Lvj48nLx\nJIDrSSgrg7w8WLECKqoaWJzxfwx/8BnKasvYWrmVA/ocwGG1d/DJZ9dgP2Jpqbi2S0qCVzfYJZCh\nngQve9KTYJsVtYYVCepiF/r3dwWY0rXRLpCK4k/EIsFxnLeBtwGMabqq23GcZwL79sE1+GEO7Wxr\n/bD2pzmRMHy4CIVQT0JFBfTuLY8rK93Sxfn5IhI2DL2VlQl/5teDLmJA+gBG9hrJGfudwY03Gj4B\njjgCPvpIxEFmpisSrOCorRVvQksiIVJPQny82646dCxbj6E5kZCcHN76/Z7gSVD2TtSToCj+dKWv\nRIoxZi1SBbIAuMlxnKV74o1ra91OhrYTpBUJSUn+4Ya0NHdfRYUsn8zLA6J2UTXyUSZFXckjJ90f\n9DqbOPh//ydCoaREwhZr1gQvgSwvl/uWwg2RehK8WfahRjwuTqpBhiZbtkWI+I2vKF0dzUlQFH+6\nikhYAfwKWAKkIzkP84wxoxzH2dzRb15XJwZy507Xk7BlC4wb11Qk1NeLQbdJaZWVrhu/b19gxKuQ\nspXJiU3XI952mzQeOvBAeV5d7ZZA9oYbbO5Ae3sSLH5G/NlnJbTixRYXCrfiYFycrJrQqzGlu6Ge\nBEXxp0t8JRzH+Rz43D43xnwGLAMuAW5t6bXXXHMN6SG9iqdNm8a0adPCfv/aWjGEXpGwdausUHCc\n4CqJ1mWfkuKGIqxI2NjrKTj9Mlg7hWEHj2vyPrm50sDIeitAxEZ0tLyHXXbpFQlWBOxuTkJLngSA\nKVP8X+edQzjvkZCgpYWV7ofmJCg9mdmzZzN79uygbaXWcLVClxAJoTiOU2+MWQQMa+3Y++67j4MO\nOmi33q+21nW125DDjh0iEsrLgz0JNhSQnNJITK/1zN/1Pt98/iX8bC3P1rwLSy6Ct+8n6ajm3y8m\nRq64GxvdQkTeLHjvKoT2Wt3QmiehOSLpXWBFgqJ0N9SToPRk/C6cCwoKyM/Pb/W1Hd0Fsk0rFIwx\nUcAYYEv7TsefUJGwfbs87t3b9RY4DqwsXsnfC+6Hc3/CGQtS+f6kwXyQeAlf75wP9QlcPfwBeO2f\nsCup1eZE3vh9qEiwQqS9Vzf4PW6NSESCbYikKN0NzUlQFH/aUichGbnCt07lIcaYccAOx3E2GGMy\ngYFAv8AxIwOrIAodxykKjDED2OQ4zk2B539Ewg2rgAzg+sAYj+3OhwuH+vpgkTBrFowdK4+tJwFg\nR3kVU2dOpbC8CJLHcel+/8v7/xrNiLR8zjwhh3Ouh6tuhwcC47ZmvOPjJQ/BdlEsLnb3WS9QODkJ\nkVzlg1wpRfJDGEmrZPUkKN0VFQmK4k9bPAnjgUXAQsRT8BdkNcJtgf0nB/a/Ftg/O7D/Es8YA4A+\nnueZwD+BpcAbQAowyXGc5W2YX0RMmAALFrjG+KGH4Kab5HHv3gEDmbuYC1/7BUUVRTyZvwwe/ZIr\nD7yOAbXH01CWQ2mpxOFt7QRo3bBaY2rDDV6REE64oa2ehEiNuIYblL0BLcusKP60pU7CXFoQF47j\nzABmtDLG0SHPfwf8LtK5tAdffSX33mRCG27IyYG62G1wwVTmbYrhL8f9hdRCWQKQmirGs6zMrbbo\nNaZtDTckJoYXbmhLxUW/cVojJUUaOYX7HioSlO6IehIUxZ+9XjenpMCPfiTeg/feC2w0jcQn1VFQ\n/AV3rvoD4PDyj5YweVwOzzwjh6SmijBYv16EQnq62za5ujq8cAM09SRkZoa3BHJPeRIeeUQ+Zzgc\ndJDbDVNRuhOauKgo/uzVXwm7vPG44yArrxwmPQpjZkHO19TG1HHkDBiYPBye+w8JZ0vHpooKEQMJ\nCVLO+J13XE8CiDchHJFgjXVoTkJmpttcyisSOivcMHp0+Mf+9reRja0oXQVdAqko/uzVIqG6WoRC\nYlIDJ754KByzHJafCl9dwKC8DGY9OIy08omMvi46qBpiaqrkIPTvL0WXNm+GXr1kf3KyhCvaGm7I\nyJB5gbxPZ4cbFGVvQD0JiuLPXveVmDMHxoyRpERbJGnxruf5dvvX8NSnsGEyAPsdD5MGuG2irUio\nqHBXQvTvL7UOPv1UiiSBm5cQabjBkp0t99HRLYuEPeVJUJS9Ac1JUBR/OrpOQpdj6lTpm+A4Dt9v\n3QT7vs7Mwus4dshxPwiEqChJWgTXCId6EsDt8FdY6JY0jlQkeFcw9O7tjp2RId6K5sINAwdKDsC+\n+4b3udWToCjNo54ERfFnr/xKLK/6mCEPnM/akrVwLuQkHswjJz7CkMD+xx+HiRPlcTgiAWBYoDZk\ncrKIDG8ZZD9CcxLseFY82J4OzXkSMjNh4cJwPq2gngRFaR7NSVAUf/YaT8Kzz0ruALFVcO6J9Evt\nx90HvQIPLeOZo+YxOHPQD8eecgqMGiWPrVH1CzdkZrpG3OtJSExsvX+BX7ihXz9XXFiRMGkSXHst\nDBnSdIxIUJGgKM2jngRF8Wev+Eps2ADTpsH55wMjX4aEMmaeNpO1i4bAdkgNaZHsXfJnlzXa/IXi\nYsjKksc2efG774JFQjh5An7hBj9PQloa3HNPxB+5CVZ8RFKSWVH2FjQnQVH82Ss8Cc89J/f9+wNj\nn4b1h5LeOOQHwx9aUTD0h8L2bwBJZBw40N3Xv78kG9qCQ+GKhNCKi3Ysa8ytEGkv1JOgKM2jFRcV\nxZ+94ivxn//I/abY/8Lwt+Glp1i1yvUOpKQ0+1JAjL5t8hQqEoYPh4YG93lmZngVCr1G24Ym+vVz\n20VbT0J7oYmLitI86klQFH96vEhwHPhygQMnX8Rsnod1h8GSn7NqlWuQW7vytyKhuFhqGHhFwt13\nS4Moy/XXwy9/2fq8vCLB1kjo3x82bpTH7S0S1JOgKM0TFfCpqidBUYLp8eGG2lpo7P8RHPQEI2rO\nh+f/DU4UBQWShJiY6P5ANIcVCbZmglckpKe7yyVBmjyFU6XQm7hoqy36JS62FyoSFKVloqPVk6Ao\nofRYkTB3rhj2qiog/59QPJzx2x6A8r7k5MBLL0m4IZwOhy2JhLbiXQJpx8vLa5q42F5ouEFRWiYl\nJfyOp4qyt9AjRcKuXVI06cUX4aYPr4Oxs+DLy6mpluD/OefAmjVSKbG1fASQwkbFxSIS4uOl6NHu\n4vUk3Hab1DzIyFBPgqJ0Fh99BOed19mzUJSuRY8UCbW1kky4ubSIR765Fz66CeZf/cMKhWOPlTDB\nm282vXLYf/+m4w0dCt9/7yYttlYDIRy8RjsuTqonererJ0FR9ixjx4Zf5lxR9hZ6rEgAWFX9pTxY\neDGGqB8aJyUmumLAKxK2boX585uON2yYdGZcvRoGDGifOdpciNDKjB3lSYiJEXGjdRIURVGUcOmR\nIqGuTu6/r5lPZmwOlA4kI8OtdRAbG1xG2dK7t39MctgwGfO996Q5VHtw5pkwe3ZTr0RHeRKMkZUY\nthGVoiiKorRGj1zwY0XCuoYvGJ46kS8wpKe7LZhjY5s2ZGqJ4cPlvqJCyiS3B717w1lnNd2enw+n\nnw59+7bP+3i59tr2H1NRFEXpufRIT0JtLTBuJhuceQyOlU5NGRmuSIiJcT0JjY2tj7fPPu766UMO\naf/5ehkyBF54QYSMoiiKonQmPVIk/Hvlk3DaBeQ1TGZSwoUAzYYbCgtbHy8mBgYNgj592mf5o6Io\niqJ0B3pcuGHNzjXcsegKKLiQn/R/jLi+YuRtrQOQ59bYb9kS3rgHHSTioj1WNiiKoihKd6BHiYSG\nxgaufvtq0mOz2frW/dSeLwWTkpLEwHtzEmwDpdTU8MaeObNj5qwoiqIoXZUeE27Y1bCLqTOn8sbK\nN7hq2AOwK5maGreqYmxscLgB4K234N13wxs/Pl6XDyqKoih7Fz3GkzBvwzzmrpvLa9NeI37diYAk\nMHpFgu3WaJMQf/zjTpqsoiiKonQDeown4c3v3iQ3OZcThp/wQzGlUJFg0ZUDiqIoitI6PUIk1NfD\nEx+/yZH9jifKRP1QJ6GmRkIMKhIURVEUJXJ6hEh4/sOVbI/+huolJwBuMaXmPAnaM15RFEVRWqdH\niIRnlj4G1ZlMzDgJIMiTYFc3eIWBehIURVEUpXW6vUhYsHkBc3Y+CYvPJz5aWhxqToKiKIqi7D7d\nXiRc9vplxNTkwue/paxMtoV6EjTcoCiKoiiR0+3NZaPTSNrbz1NeMojSUtnmzUmIigoWCVFRclMU\nRVEUpWW6vUgA2LRUaixbT4INN9TUSAMnr0hQL4KiKIqihEe3N5np8ZmU7koiIQFfT0J9vYgEx5Ft\nmo+gKIqiKOHR7UVCZmwepcDgwU1FQk2N3CcludtUJCiKoihKeHT76Hx6VB4AQ4b4hxuqq6WJk4Yb\nFEVRFCUyur1ISG7sC/h7EmyIITvbFQnqSVAURVGU8Oj2IiF+Vx5JSZCTQ5MlkJbsbNeDoCJBURRF\nUcKj24uE6Ko8srMhPb2pJ8GSlaXhBkVRFEWJlG4vEhoqMn8QCTU1IhBsToJFww2KoiiKEjndXiTU\nlKWQnQ1pafK8rEyEgtdjkJmpIkFRFEVRIiVikWCMOdwY86oxZpMxptEYc3LI/tOMMe8YY7YH9o8N\nc9wzjTHLjDHVxpjFxpjjw3ldVUnKD54EkJBDXZ2saAC5j4vTcIOiKIqiREpbPAnJwFfA5YDTzP6P\ngeub2d8EY8xkYBbwKHAA8ArwsjFmVGuvrdyR2sSTUFvrPs/Olnv1JCiKoihKZER8Xe04ztvA2wDG\nGOOz/5nAvn2AJvub4WrgLcdxpgee32KMORa4EhEjzVK6M97Xk2BFQlaW3KsnQVEURVEio6vkJEwC\n3g/Z9k5ge4uUlZogT0KoSFBPgqIoiqK0ja4iEvoARSHbigLbW6S2VoRAVhYYA9u2yTabkxDqSVCR\noCiKoijh0VVEwm5h6yD06gWFhf6eBBtm0HCDoiiKooRHVzGZhUBuyLbcwPZWuIY77kjnkUekTsLj\nj0Nd3TQmTpwGqCdBURRF2buZPXs2s2fPDtpWaqsPtkJHi4SwVjcAnwFTgQc8244NbG+F+7j77oM4\n7DD40Y8kzLBokRtu0JwERVEUZW9m2rRpTJs2LWhbQUEB+fn5rb42YpFgjEkGhuGuXBhijBkH7HAc\nZ4MxJhMYCPQLHDMysAqi0HGcosAYM4BNjuPcFBjjfuC/xpjfAW8A04B84NfhzCkuTu779IFVqyTc\nkJwMp54Khx4q+3R1g6IoiqJERltyEsYDi4CFiKfgL0ABcFtg/8mB/a8F9s8O7L/EM8YAPEmJjuN8\nBpwLXIzUYDgdOMVxnKXhTMiKhLw8NychPh5eegkmTJB96klQFEVRlMhoS52EubQgLhzHmQHMaGWM\no322vQC8EOl8INiTUFgoQiA+PvgY9SQoiqIoSmT0CJPpFQlVVcHbLOpJUBRFUZTI6BFLIL3hhtBt\nFhUJiqIoihIZPUok9PGUXtJwg6IoiqLsHj1CJFgB0LevKwJsLweL3a6eBEVRFEUJjx5xXW09Camp\nsHgxlJTAxInBx2i4QVEURVEio0eJBIBRzTSX1nCDoiiKokRGjwo3tISGGxRFURQlMrq9SIiOhqgw\nPoUxIhRUJCiKoihKeHR7kRCJ0Y+N1XCDoiiKooRLtxcJkRj9UaNg6NCOm4uiKIqi9CS6/XV1JJ6E\nBQs6bh6KoiiK0tPo9p4EzTFQFEVRlI5BRYKiKIqiKL6oSFAURVEUxZduLxJ0tYKiKIqidAzdXiSo\nJ0FRFEVROgYVCYqiKIqi+KIiQVEURVEUX1QkKIqiKIrii4oERVEURVF86fYiQVc3KIqiKErH0O1F\ngnoSFEVRFKVj6PYiQT0JiqIoitIxdHuRoJ4ERVEURekYVCQoiqIoiuKLigRFURRFUXzuiRnAAAAG\n8klEQVRRkaAoiqIoii/dXiRo4qKiKIqidAzdXiSoJ0FRFEVROgYVCYqiKIqi+KIiQVEURVEUX1Qk\nKIqiKIrii4oERVEURVF86fYiQVc3KIqiKErH0O1FgnoSFEVRFKVjUJGgKIqiKIovKhIURVEURfFF\nRYKiKIqiKL50e5EwYEBnz0BRFEVReiYqEhRFURRF8aXbiwSlazF79uzOnoLig56Xroeek66Jnpdg\nIhYJxpjDjTGvGmM2GWMajTEn+xzzJ2PMZmNMlTHmPWPMsFbGvCAwVkPgvtEYUxXp3JTOR79gXRM9\nL10PPSddEz0vwbTFk5AMfAVcDjihO40xvweuBC4GJgKVwDvGmLhWxi0F+nhu+7RhboqiKIqitBMR\n1yt0HOdt4G0AY4zxOeQ3wO2O47weOOZ8oAg4FfhPy0M72yKdj6IoiqIoHUO75iQYYwYjXoAP7DbH\nccqA+cCkVl6eYoxZa4xZb4x52Rgzqj3npiiKoihKZLR354M+SAiiKGR7UWBfc6wAfgUsAdKB64B5\nxphRjuNsbuY1CQDLli3brQkr7UtpaSkFBQWdPQ0lBD0vXQ89J12TveW8eGxnQkvHGcdpklYQNsaY\nRuBUx3FeDTyfBHwC9HUcp8hz3L+BRsdxpoU5bgywDJjlOM6tzRxzLvCvNk9eURRFUZTzHMeZ1dzO\n9vYkFAIGyCXYm5ALLAp3EMdx6o0xi4CWVkW8A5wHrAVqIp6poiiKouy9JACDEFvaLO0qEhzHWWOM\nKQSmIqEDjDFpwMHA38IdxxgTBYwB3mjhvYqBZtWPoiiKoigtMq+1AyIWCcaYZOQK365sGGKMGQfs\ncBxnA/BX4A/GmFXIVf7twEbgFc8YM4BNjuPcFHj+R+BzYBWQAVwPDAQei3R+iqIoiqK0D23xJIwH\nPkQSFB3gL4HtM4BfOY5ztzEmCXgEMfgfA8c7jlPnGWMA0OB5ngn8E0lu3AksBCY5jrO8DfNTFEVR\nFKUd2K3ERUVRFEVRei7au0FRFEVRFF9UJCiKoiiK4ku3FAnGmCuMMWuMMdXGmM+NMRM6e049lfZo\n6GWMiTfG/M0Ys90YU26Med4Yk7PnPkXPwhhzozHmC2NMmTGmyBjzkjFmX5/j9LzsQYwxlxpjFhtj\nSgO3ecaYH4cco+ekEzHG3BD4HZsesl3PSzN0O5FgjDkbSZa8FTgQWIw0kOrVqRPrubRHQ6+/Aj8B\nzgCOAPoCL3TstHs0hwMPIkuLjwFigXeNMYn2AD0vncIG4PfAQUA+MAd4xRizH+g56WwCF5MXIzbD\nu13PS0s4jtOtbshSyfs9zw2yxPL6zp5bT78BjcDJIds2A9d4nqcB1cBZnue1wGmeY0YExprY2Z+p\nJ9yAXoG/52F6XrrWDSgGfqnnpNPPQwpS/v9oZHXedM8+PS8t3LqVJ8EYE4sodG8DKQd4n9YbSCnt\nTJgNvcYjS229x6wA1qPnrL3IQLw8O0DPS1fAGBNljDkHSEL60Og56Vz+BrzmOM4c70Y9L63T3mWZ\nO5peQDT+DaRG7Pnp7PWE09ArF6gLfPGaO0ZpI4F27X8FPnEcZ2lgs56XTsIYMxr4DCl5W45cfa4I\n9LXRc9IJBMTaAYixD0W/K63Q3USCoijBPAyMAg7t7IkoACwHxiHdbH8KzDTGHNG5U9p7Mcb0R0T0\nMY7j7Ors+XRHulW4AdiOVGrMDdmeizSXUvYs3oZeXrznoxCIC/TwaO4YpQ0YYx4CTgCOdBxni2eX\nnpdOwnGcesdxVjuOs8hxnJuRJLnfoOeks8gHegMFxphdxphdwBTgN8aYOsQboOelBbqVSAgowYVI\nAyngB3frVMJoVKG0L47jrEG+JN7zYRt62fOxEKgPOWYE0pvjsz022R5GQCCcAhzlOM567z49L12K\nKCBez0mn8T7SLPAAxMMzDlgAPAOMcxxnNXpeWqQ7hhumA08ZYxYCXwDXIMlBT3XmpHoqu9vQy3Gc\nMmPM48B0Y8xOJE77APCp4zhf7NEP00MwxjwMTANOBiqNMfYqqNRxHNs2Xc/LHsYYcyfwFpLQloq0\nsp8CHBc4RM/JHsZxnEpgqXebMaYSKHYcZ1lgk56Xlujs5RVtuSFr9tciy1Q+A8Z39px66g35kWtE\nwjze2xOeY/4XWUZUhfQmHxYyRjyyrn878gV7Dsjp7M/WXW/NnI8G4PyQ4/S87Nnz8hiwOvC7VAi8\nCxyt56Rr3ZD6FdNDtul5aeamDZ4URVEURfGlW+UkKIqiKIqy51CRoCiKoiiKLyoSFEVRFEXxRUWC\noiiKoii+qEhQFEVRFMUXFQmKoiiKoviiIkFRFEVRFF9UJCiKoiiK4ouKBEVRFEVRfFGRoCiKoiiK\nLyoSFEVRFEXx5f8D6I+oNucbgNUAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# initialize extra trees model\n", "ert_model1 = H2ORandomForestEstimator(\n", " ntrees=10000, \n", " max_depth=10, \n", " col_sample_rate_per_tree=0.1,\n", " sample_rate=0.8,\n", " stopping_rounds=50,\n", " score_each_iteration=True,\n", " nfolds=3,\n", " keep_cross_validation_predictions=True,\n", " seed=12345,\n", " histogram_type='random') # <- this is what makes it ERT instead of RF\n", "\n", "# train ert model\n", "ert_model1.train(\n", " x=encoded_combined_nums,\n", " y='SalePrice',\n", " training_frame=train,\n", " validation_frame=valid)\n", "\n", "# print model information/create submission\n", "print(ert_model1)\n", "ert_preds1_val = ert_model1.predict(valid)\n", "ranked_preds_plot('SalePrice', valid, ert_preds1_val) # valid RMSE not so hot ...\n", "ert_preds1_test = ert_model1.predict(test)\n", "gen_submission(ert_preds1_test) # 0.14855 public leaderboard" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### H2O GBM model" ] }, { "cell_type": "code", "execution_count": 193, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm Model Build progress: |███████████████████████████████████████████████| 100%\n", "Model Details\n", "=============\n", "H2OGradientBoostingEstimator : Gradient Boosting Machine\n", "Model Key: GBM_model_python_1497530715156_41\n", "\n", "\n", "ModelMetricsRegression: gbm\n", "** Reported on train data. **\n", "\n", "MSE: 0.006176434976609031\n", "RMSE: 0.07859029823463601\n", "MAE: 0.05301111489980966\n", "RMSLE: 0.006099179628794482\n", "Mean Residual Deviance: 0.006176434976609031\n", "\n", "ModelMetricsRegression: gbm\n", "** Reported on validation data. **\n", "\n", "MSE: 0.017546665790746808\n", "RMSE: 0.13246382823528394\n", "MAE: 0.10119308547315771\n", "RMSLE: 0.010243903760409427\n", "Mean Residual Deviance: 0.017546665790746808\n", "\n", "ModelMetricsRegression: gbm\n", "** Reported on cross-validation data. **\n", "\n", "MSE: 0.01645365655874634\n", "RMSE: 0.12827180734185648\n", "MAE: 0.08578849396442542\n", "RMSLE: 0.009938680530110027\n", "Mean Residual Deviance: 0.01645365655874634\n", "Cross-Validation Metrics Summary: \n" ] }, { "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", "
meansdcv_1_validcv_2_validcv_3_valid
mae0.08574410.00111210.08618610.08741090.0836352
mean_residual_deviance0.01644790.00186010.01925770.01715470.0129314
mse0.01644790.00186010.01925770.01715470.0129314
r20.89346270.00778440.87803530.902990.8993628
residual_deviance0.01644790.00186010.01925770.01715470.0129314
rmse0.12782140.00740290.13877200.13097580.1137164
rmsle0.00989860.00060680.01076990.01019460.0087312
" ], "text/plain": [ " mean sd cv_1_valid cv_2_valid cv_3_valid\n", "---------------------- ---------- ---------- ------------ ------------ ------------\n", "mae 0.0857441 0.00111212 0.0861861 0.0874109 0.0836352\n", "mean_residual_deviance 0.0164479 0.00186011 0.0192577 0.0171547 0.0129314\n", "mse 0.0164479 0.00186011 0.0192577 0.0171547 0.0129314\n", "r2 0.893463 0.00778445 0.878035 0.90299 0.899363\n", "residual_deviance 0.0164479 0.00186011 0.0192577 0.0171547 0.0129314\n", "rmse 0.127821 0.0074029 0.138772 0.130976 0.113716\n", "rmsle 0.00989855 0.00060685 0.0107699 0.0101946 0.00873118" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Scoring History: \n" ] }, { "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", "
timestampdurationnumber_of_treestraining_rmsetraining_maetraining_deviancevalidation_rmsevalidation_maevalidation_deviance
2017-06-15 16:21:2618 min 50.401 sec0.00.39378910.30487370.15506980.41138480.32190060.1692374
2017-06-15 16:21:2618 min 50.629 sec1.00.39250060.30361220.15405670.41001060.32058410.1681087
2017-06-15 16:21:2718 min 50.785 sec2.00.39122340.30242070.15305580.40872530.31939500.1670564
2017-06-15 16:21:2718 min 50.977 sec3.00.38985740.30122560.15198880.40728980.31815700.1658849
2017-06-15 16:21:2718 min 51.163 sec4.00.38834090.29982840.15080870.40576790.31680800.1646476
------------------------------
2017-06-15 16:27:2424 min 48.471 sec2423.00.07955750.05369250.00632940.13244770.10124480.0175424
2017-06-15 16:27:2824 min 52.499 sec2452.00.07926860.05349240.00628350.13289420.10169850.0176609
2017-06-15 16:27:3224 min 56.543 sec2480.00.07906690.05335300.00625160.13247440.10123990.0175495
2017-06-15 16:27:3625 min 0.691 sec2510.00.07877270.05319970.00620510.13257430.10131740.0175759
2017-06-15 16:27:4025 min 4.621 sec2537.00.07859030.05301110.00617640.13246380.10119310.0175467
" ], "text/plain": [ " timestamp duration number_of_trees training_rmse training_mae training_deviance validation_rmse validation_mae validation_deviance\n", "--- ------------------- ----------------- ----------------- ------------------- -------------------- -------------------- ------------------- ------------------- ---------------------\n", " 2017-06-15 16:21:26 18 min 50.401 sec 0.0 0.39378907815806025 0.30487372622172093 0.1550698380765749 0.41138476712278926 0.3219006088183906 0.16923742662067154\n", " 2017-06-15 16:21:26 18 min 50.629 sec 1.0 0.39250058616301964 0.3036121507505556 0.15405671013831398 0.41001060858300487 0.3205841446329741 0.168108699150606\n", " 2017-06-15 16:21:27 18 min 50.785 sec 2.0 0.3912234134200247 0.3024207409564313 0.15305575920801556 0.4087253276963698 0.3193950229634724 0.16705639350050489\n", " 2017-06-15 16:21:27 18 min 50.977 sec 3.0 0.3898574221706353 0.30122557934466654 0.15198880962153297 0.4072897587868043 0.3181570115561474 0.16588494761261324\n", " 2017-06-15 16:21:27 18 min 51.163 sec 4.0 0.38834094233926464 0.29982838168606296 0.15080868749694806 0.40576787919725893 0.3168080207459082 0.16464757178824133\n", "--- --- --- --- --- --- --- --- --- ---\n", " 2017-06-15 16:27:24 24 min 48.471 sec 2423.0 0.07955753570237394 0.05369247089732777 0.006329401487034504 0.13244769803149775 0.10124479670328616 0.017542392713842815\n", " 2017-06-15 16:27:28 24 min 52.499 sec 2452.0 0.07926858102895806 0.05349240222058215 0.00628350793834449 0.13289424681615838 0.10169850114682775 0.017660880836834023\n", " 2017-06-15 16:27:32 24 min 56.543 sec 2480.0 0.07906694762441725 0.053353031436641975 0.006251582206642342 0.13247436606123608 0.10123993038975107 0.017549457663326377\n", " 2017-06-15 16:27:36 25 min 0.691 sec 2510.0 0.07877270404471433 0.053199738532036814 0.006205138902516154 0.13257430777552223 0.10131743617906665 0.017575947082158892\n", " 2017-06-15 16:27:40 25 min 4.621 sec 2537.0 0.07859029823463601 0.05301111489980966 0.006176434976609031 0.13246382823528394 0.10119308547315771 0.017546665790746808" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "Variable Importances: \n" ] }, { "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", "
variablerelative_importancescaled_importancepercentage
Neighborhood_Tencode|OverallQual3338.48315431.00.3173326
GrLivArea|Neighborhood_Tencode1284.71081540.38481870.1221155
LotShape_Tencode|OverallQual1223.48852540.36648040.1162962
GrLivArea|OverallQual904.22540280.27084920.0859493
GrLivArea|KitchenQual_Tencode526.57891850.15773000.0500529
------------
Utilities_Tencode|MiscFeature_Tencode0.00.00.0
Utilities_Tencode|OverallQual0.00.00.0
HalfBath|SaleType_Tencode0.00.00.0
HalfBath|MiscFeature_Tencode0.00.00.0
HalfBath|OverallQual0.00.00.0
" ], "text/plain": [ "variable relative_importance scaled_importance percentage\n", "------------------------------------- --------------------- ------------------- -------------------\n", "Neighborhood_Tencode|OverallQual 3338.483154296875 1.0 0.3173326261258274\n", "GrLivArea|Neighborhood_Tencode 1284.7108154296875 0.3848187203749013 0.12211553511894786\n", "LotShape_Tencode|OverallQual 1223.488525390625 0.36648036513705473 0.11629617669249369\n", "GrLivArea|OverallQual 904.2254028320312 0.270849173424232 0.08594927948672118\n", "GrLivArea|KitchenQual_Tencode 526.5789184570312 0.15772999117257344 0.0500528723175963\n", "--- --- --- ---\n", "Utilities_Tencode|MiscFeature_Tencode 0.0 0.0 0.0\n", "Utilities_Tencode|OverallQual 0.0 0.0 0.0\n", "HalfBath|SaleType_Tencode 0.0 0.0 0.0\n", "HalfBath|MiscFeature_Tencode 0.0 0.0 0.0\n", "HalfBath|OverallQual 0.0 0.0 0.0" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice predict
11.8494 12.0243
12.2061 12.3046
11.6784 11.6736
11.7906 11.6473
11.9117 11.8533
11.9767 11.8995
11.8451 11.6644
11.1346 11.0265
11.914 11.7871
11.8845 11.8265
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgkAAAFyCAYAAAB/b0lnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzsnXd8VMX6/98TEkhPCEnozVAFpAQRLCCCKEpRVBQ7eAVB\n4YrlelWsv6ty/V4NYlcsWEABUZoUFRQBQQQB6V16C2kkJCHJ/P6YPdmzm012E7Kh5Hm/Xud19syZ\nM2f2bGA+53meeUZprREEQRAEQXAn4Ex3QBAEQRCEsxMRCYIgCIIgeEREgiAIgiAIHhGRIAiCIAiC\nR0QkCIIgCILgEREJgiAIgiB4RESCIAiCIAgeEZEgCIIgCIJHRCQIgiAIguAREQmC4AeUUt2UUgVK\nqQEVdJ+u/rxPeeCpr0qpT5VSu8rxHvc67tGgvNo8Ezi+w7Nnuh+CICJBOC9RSt3j+I/W2k4ppfYp\npT5RStWpoG5UVM5zr/fx8DxOKqW2KKXeVErFV0QnHbj3VQMFpW1EKfWkUqp/Me2flbnmlVIN3X6D\nPKXU30qp6UqptuV0j5ZKqefOdZEknD0EnukOCIIf0cAzwG4gGOgMDAYuU0q11lrn+vn+ys/tlxb3\n53E5MBzo7Xge2WegT/+gbC8rTwFTgRlu5Z8Bkyvgtz0dJgHfA1WAlsAI4FqlVGet9brTbPtC4Dlg\nEbDnNNsSBBEJwnnPPK31asfnj5VSycC/gH7AtDPXrTOG+/M4DowG+gNfe7pAKRWqtc7yR2e01vlA\nfjm2p4GzWSAArNZaT7IOlFLLgJkYwTb8NNtWnKWWFOHcRNwNQmXjV8x/pAn2QqVUP6XUbKXUfqVU\ntlJqu1JqjFIqwK3ez0qpdQ6z7iKlVKbDjfG4txsrpao67pGilOpsK6+jlPpYKXXIce/1SqnBHq6v\nq5T6Til1Qil1WCn1OlCN07NYLHRc39hxD8un31Up9Y5S6jCw11999RSToAz/dDznk0qpI0qpuUqp\nDo7zBUAoYPW1QCn1sVv/G7i1OcLR12zHb/yWUirKrY7Pv61SaqSjvUyl1HGl1Eql1G2leO52Fjr2\njUuqpJRq73gOaUqpDKXUj0qpS2zn7wGmOA5/djyHfHUOxKsIZy9iSRAqG9Z/xClu5fcCGcBrwAng\nKuBFIAJ4wlZPAzHAXGA68BVwMzBWKbVOaz3f002VUsGYt8UOQA/rbd4RD7AC8zY9HjgG9AY+UkpF\naK3H265fCNQD3gAOAnc5+nk6b45NHPtk2/cDeAc4ArwAhPmxr55iCD4G7gHmAB9i/p+6AuMuWg3c\nCXzk6MsHjmt2FNeeUup54FlggeN7NceY+DsqpS5zWDOsa73+tkqp+x3fawowDuO6uQi4xHFNaXH/\nDYqglLoQWAykAWOBPGAYRgx01VqvdJwfD4wE/gNsdly+qQx9EgSD1lo22c67DTPI5APdgRpAXeAm\n4DCQCdRxq1/NQxvvYoRDkK1skaPd221lQcABYIqtrBsmIG8AZpD92XHvNm73mADsA6LdyicBx61+\nAf903HeArU4wsNVR3rUMz+NW4ChGFNW21Stw9Ff5u6/AJ8BO23F3x/1f9/J9MoCPS/ieDRzHsUA2\n8L1bvRGOeveU4bf9FlhXhr/Jho7vNsbxG8Q7/k5WO+7b31a3AHjW7Z4ngYa2sloY0bDIVnaTL38P\nssnm6ybuBuF8RgE/YQbCvZhAtxNAP631AXtFrXVO4UVKhSulagBLMGbtFm7tntA2n7LW+hTwO3CB\nWz0NRAM/AM2Ablrrv9zqDABmAVWUUjWsDfPWG42xPIB5Yz+otZ5uu282zjdpX3B/HpOAdOAGrfVB\nt35/qLV2f8OviL7ehBkgXyzF9yqJnpiBfpxb+YcYoXG9W7kvv20qUE8p1bGMfXoB8xscwlhcGgP/\n0lq7B2EC4HB5XQ18q7X+29a3Q5jf8HKlVHgZ+yIIJSLuBuF8RmPeGLcBUcAQoCseAtsc5tyXMG+y\nkW5tRLlV3+fhXilAG/dmMYNTNaC91nqzy0ml4jCD61CM6dhT/63piQ2B7R7qbPFQVhz255EHHNZa\nF3f97jPU1wuAA1rrVB/q+kJDx36rvVBrfUoptdN23sKX3/a/QA/gd6XUdoxImqS1XuZjnz7ACNYC\njODY4BAjxRGHEatbPZzbhIktq4+4FQQ/ICJBON9ZqZ3+/xkY68AkpVRz7YjYdwSwLcb8hz0G2Ikx\nUSdi/L/uFrfiovE9BRB+B9wGPInxy9ux2v0CmFhMm6c7Jc6dwufhhZNux2eir2cCr7+t1nqzUqo5\n0Ae4FmNhGaGUekFr/YIP99imtV7ovZognHlEJAiVBq11gVLqSYzv+SHgVcepK4HqGJ/wUqu+Uiqh\nSCOl5zvMm+ZEpVS61vpB27mjGJN3FR8Gjb+BVh7K3V0h/qKi+roD6KWUivZiTfA1WNMyzzfHZh1R\nSgVhzPw/+NiO6821PomxBkxVSgViYgaeVkq9oss/R8NRIAvzHdxpibFIWDNQZPqjUK5ITIJQqdBa\n/4LxMT+slKrqKM7HvCkW/ntwnBtRTvf8AhgFDFdKvWIrLwC+AW5SShUZVJVSsbbD74E6SqmbbOdD\ngfvLo4/eqMC+foP5HZ7zUi8T4/7wxo/AKczzt/MPjFtptg9tuKCUirEfa63zMKZ+hYl/KFccz34B\n0N8+tVMpVRMYBPyqtT7hKM509MOXZyMIXhFLgnA+U1z+gP/DvAXei/EPL8P4nT9TSo131LmTcnwr\n01q/rZSKBF5yWBQssfBvjCVjhVLqQ2AjZhpeImbKoDX4foixfnzuCJizphVmlqIbvuZTKK6e3/uq\ntf5ZKfU5MEop1QyYhxENVwALtdbvOKquAnoqpUZjZh/s0lr/7qG9Yw5h9qxSah5mGmoLTNKi34Ev\nvfXJAwuUUoeApZgZKxcCDwKztdal+T1KwxhMEOZSpdQ7GGE7FKiKSQ5mscZx7gmlVDSQA/yktT7m\np34J5ztnenqFbLL5Y8M5Fa6Dh3MKE7y3Fcc0P8wc/KWY2Q97gZcx/ym7T9lbBKz10OYnwA7bcTfc\npgE6ysc6yofbymIx89t3Y2Ih9mPeHIe4XVsPY9bOwAxOr2Gi3kszBbLI8yhNvfLuq/tzs/0+jwAb\nMLERhzBv/O1sdZo5fosTjjY/dut/A7c2hzvay8aIijeBSLc6vv62/3DUPYJxA2wFXgHCvTzbho6+\njfbh7zcfeMatrC3GSpPmeK4/AJ08XDvE8fed68vfhmyylbRZ/0EKgiAIgiC4UOqYBKXUFUqpmY7U\npgVKqX5u559TSm1SJh3rcaXUD0qpTl7atFaoy7elWfVLrnhBEARBEHyjLIGLYRi/1wg8+2y3YPxz\nrYHLMGbJBY6kKyWRhskgZm3u85cFQRAEQahATsvd4Fho5Qat9cwS6kRgBEAPrfWiYurcAyRprWM8\nnRcEQRAEoeLx6xRIx1zkYZgkNWu9VA9XSu1WSu1RZvW4C/3ZN0EQBEEQSsYvUyCVUtdjVkMLxUQS\nX621Pl7CJVswEbnrMClwHweWKaUu1G459m33qAFcgzPKWhAEQRAE3wgGGgHztdbFr0DqD3eDUioE\nqI2ZLnU/Js95J+3jXF1HBrNNmHzoHpOqKKVup2xznAVBEARBMNyhbYuaueMXS4I2KUt3OrbflVJb\ngfswC6P4cn2eUupPnOuse2I3wBdffEHLli1Pr8NCuTF69GiSkpLOdDcEN+R3OfuQ3+TspLL8Lps2\nbeLOO+8Et8Xc3KmojIsBmJXwfMKxNGobYE4J1bIBWrZsSYcOHUqoJlQkUVFR8nuchcjvcvYhv8nZ\nSSX8XUp015daJCilwjBv+Fbq1guUUm2B40Ay8DQm9elBjLvhIaAOJg2u1cZEYL/W+inH8TPAcszy\nstGYNKMNgAml7Z8gCIIgCOVDWSwJHTEpSbVje81RPhGT+rQFcDdGICQDK4HLtdb2tc7r47oka3VM\nDv1amBz6q4AuWuvNZeifIAiCIAjlQKlFgjar6JU0dfKmEs5ZbVzldvwIJle7IAiCIAhnCbJUtFCu\nDBo06Ex3QfCA/C5nH/KbnJ3I7+LKObvAk1KqA7Bq1apVlS3IRBAEQRBOi9WrV5OYmAiQqLVeXVy9\niprdcEbYs2cPx47JMuqCZ2JjY2nQoMGZ7oYgCMJZy3krEvbs2UPLli3JypLFJAXPhIaGsmnTJhEK\ngiAIxXDeioRjx46RlZUlyZYEj1iJRI4dOyYiQRAEoRjOW5FgIcmWBEEQBKFsyOwGQRAEQRA8IiJB\nEARBEASPiEgQBEEQBMEjIhIEQRAEQfCIiASBK6+8kquuusp7RT/RqFEjhgwZcsbuLwiCIHhGRMI5\nyl9//cXNN99Mo0aNCAkJoV69evTq1Yu33nqr1G0ppbxXKoZGjRoREBBQuNWsWZOuXbvy3Xff+dxG\nQEDAafVBEARB8A/n/RTI85Fly5Zx1VVX0bBhQ4YOHUqtWrXYu3cvy5cvZ/z48Tz00EMV1helFO3b\nt+exxx5Da82BAwd4//33GTBgAO+99x5Dhw712saWLVsICBC9KgiCcLYhIuEc5KWXXiI6Opo//viD\niIgIl3NnIg113bp1XRZFueuuu2jSpAlJSUklioTs7GyCg4MJCgqqiG4KgiAIpURe385Bdu7cSatW\nrYoIBDDrEVh88skn9OjRg5o1axIcHEyrVq147733fLpHbm4uzz33HE2bNiU4OJgGDRrwxBNPkJub\n6/XamjVr0rJlS3bt2lVY1qhRI/r168eCBQu4+OKLCQkJ4YMPPig85x6TkJaWxujRo2ncuDHBwcHU\nr1+fe+65h+PHj5dLHwVBEATviCXhHKRhw4YsX76cDRs20KpVq2Lrvffee7Ru3Zr+/fsTGBjIrFmz\nGDFiBFprhg8fXux1Wmv69u3LsmXLGDZsGC1atOCvv/4iKSmJbdu2MX369BL7l5eXx969e6lRo0Zh\nmVKKzZs3c/vttzNs2DCGDh1K8+bNC8/ZyczM5PLLL2fLli3cd999tG/fnmPHjjFz5kz27dtHTEzM\nafdREARB8I6IhHOQxx57jOuuu4527drRqVMnrrjiCnr06EH37t0JDHT+pIsXL6ZatWqFxyNGjKB3\n7968/vrrJYqEL7/8koULF7J48WK6dOlSWN6qVSuGDx/O8uXL6dy5c2H5qVOnSE5OBmD//v288sor\nHDlyhFGjRrm0u2PHDubPn0/Pnj1L/H6vvvoqGzdu5Ntvv6Vfv36F5U899VSZ+ygIgiCUHhEJDrKy\nYPNm/96jRQsIDT39dnr27Mlvv/3GK6+8wvz581m+fDmvvvoqcXFxTJgwgb59+wK4CIT09HROnTpF\n165dWbBgARkZGR7dFQDTpk2jZcuWNGvWrHDwB+jevTtaaxYtWuQyAM+fP5+4uLjC48DAQO6++27G\njh3r0m7jxo29CgSA6dOn07ZtWxeBcLp9FARBEEqPiAQHmzdDYqJ/77FqFZTXWlOJiYlMmzaNvLw8\n1q5dy7fffktSUhK33HILa9asoUWLFixdupTnnnuO5cuXuyyZrZQiLS2tWJGwbds2Nm/e7DLw2689\ncuSIS1nnzp156aWXALP8csuWLYmMjCxybePGjX36bjt27ODmm28usU5p+ygIgiCUHhEJDlq0MIO4\nv+9R3gQGBpKYmEhiYiJNmzZl8ODBTJ06lTvuuIOePXvSsmVLkpKSqF+/PlWrVmXOnDmMGzeOgoKC\nYtssKCigTZs2JCUlobUucr5+/foux7GxsXTv3t1rX0NCQkr/Bcupj4IgCELpEZHgIDS0/N7yzxQd\nO3YE4ODBg8yaNYvc3FxmzZpF3bp1C+v89NNPXttJSEhg3bp1Pg38/iAhIYH169d7rXMm+ygIglAZ\nkCmQ5yA///yzx/I5c+aglKJ58+ZUqVIFwMVikJaWxqeffuq1/YEDB7Jv3z4+/PDDIueys7NdXBf+\n4KabbmLt2rXMmDGj2Dpnuo+CIAiVAbEknIOMHDmSrKwsbrzxRlq0aEFubi5Lly5lypQpNG7cmMGD\nB3Po0CGCgoLo06cPw4YNIyMjgwkTJlCzZk0OHTpUYvt33XUXU6ZMYfjw4SxatIjLLruM/Px8Nm3a\nxNSpU1mwYAEd/Gh2efzxx5k2bRq33HILgwcPJjExkeTkZGbNmsX7779PmzZtzngfBUEQKgMiEs5B\nXnvtNaZOncrcuXP58MMPyc3NpUGDBjz00EM8/fTTREZGEhkZyTfffMOYMWN4/PHHqVWrFiNGjKBG\njRrcd999Rdq05ypQSjFjxgySkpL47LPP+O677wgNDeWCCy5g9OjRNGvWzKWuL+sulFTP/VxYWBhL\nlizhueee49tvv+Wzzz4jPj6enj17Uq9evVL3URAEQSgbylPQ17mAUqoDsGrVqlUe3xhXr15NYmIi\nxZ0XKjfy9yEIQmXG+j8QSNRary6unsQkCIIgCEIlYv9+uOMO3+qKSBAEQRCESkRqqu/JA0UkCIIg\nCEIlIjPT97oiEgRBEAShEiEiQRAEQRAEj5QmjYyIBEEQBEGoRIglQRAEQRAEj4hIEARBEATBI3vS\nd8PdPX2qKyJBEARBECoRqSczIDjFp7oiEgRBEAShEpF+0nd/g4gEQRAEQahEpGeLSBAqgEaNGjFk\nyJDC419++YWAgAAWL158BnslCIIglMSJHBEJQgXgaVVHX1aEdGfu3Lm88MIL5dElQRAEwQsnck/4\nXFdEglBudOvWjZMnT9K1a9dSXff999/z4osv+qlXgiAI5x4zZsCgQf5pO+uUWBKEYtBak5OT47f2\nq1atWuprztXlygVBEPzFH3/AwoX+aTsrL5MAHexTXREJ5yjPP/88AQEBbNmyhYEDBxIVFUVsbCwP\nP/ywiwgICAhg1KhRTJo0idatWxMcHMz8+fMBMziPGzeO1q1bExISQq1atXjggQdITU0tcr///Oc/\n1K9fn7CwMHr06MHGjRuL1CkuJmHFihVcd911xMTEEB4eTtu2bXnzzTcBGDx4MO+8805hXwMCAqhS\npUq5PSdBEIRzkexsOHXKP22fzM+kSoFvIiGwtI0rpa4AHgcSgdrADVrrmbbzzwG3AfWBXGAV8LTW\n+ncv7d4CvAg0ArYC/9Zazy1t/yoLlu9/4MCBNG7cmLFjx7J8+XLGjx9Pamoqn376aWHdn376iSlT\npvDQQw8RGxtLo0aNABg6dCifffYZQ4YM4Z///Ce7du3izTffZM2aNSxdurRwsH7mmWd46aWX6NOn\nD71792b16tX06tWLUx7+gt1jEn744Qf69u1LnTp1ePjhh6lVqxabNm1i9uzZjBw5kmHDhnHgwAF+\n/PFHvvzyS7EqCIIgADk5kJfnn7az8zMJIoRTFH0hdKfUIgEIA9YAHwHTPZzfAjwI7ARCgEeABUqp\nBK11sqcGlVKXApOAJ4A5wB3Ad0qp9lrroq+sQiEJCQlMn25+huHDhxMREcG7777LY489RuvWrQHY\nunUr69evp3nz5oXXLVmyhI8++ojJkydz6623FpZ3796da665hqlTp3Lbbbdx7Ngx/u///o++ffsy\nY8aMwnpjxozh5ZdfLrFvBQUFDBs2jLp167JmzRoiIiKK1OncuTPNmjXjxx9/ZJC/HHCCIAjnGDk5\n/rMk5OpMglSIT3VLLRK01vOAeQDKQyi71vor+7FS6hHgPuAiYFExzY4C5mqtX3ccP6uUuhp4CBhR\n2j6WhaxTWWw+ttmv92gR24LQoNBya08pxYMPPuhSNnLkSN555x2+//77QpFw5ZVXuggEgGnTphEd\nHU2PHj1ITnZqt/bt2xMeHs6iRYu47bbb+OGHHzh16hQjR450uf7hhx/2KhL+/PNPdu/ezRtvvOFR\nIAiCIAie8aclIZdMQgL8JBJKg1IqCBgGpAJrS6jaBXjNrWw+0N9PXSvC5mObSfwg0a/3WDV0FR1q\ndyjXNps0aeJynJCQQEBAALt37y4ss9wLdrZt20Zqairx8fFFzimlOHLkCAB79uzxeJ/Y2FiqV69e\nYt927NiBUopWrVr58lUEQRAEB5ZI0BrKMLO8RE6pE1RXvr2w+kUkKKWuB74CQoEDwNVa6+MlXFIL\nOOxWdthRXiG0iG3BqqGr/H4Pf+MpT0FISFHFWFBQQM2aNZk0aZLHOIC4uDi/9E8QBEHwTna22efl\nQVBQ+badpzKpVsVPgYs+shBoC8QC9wNTlVKdtNbHyvtGo0ePJioqyqVs0KBBRczr3ggNCi33t/yK\nYNu2bTRs2LDwePv27RQUFNC4ceMSr0tISOCnn37i0ksvpVq1asXWs9retm2bi0Xi2LFjpKSUvEBI\nQkICWmvWr1/PVVddVWy9siRgEgRBOJ+xJqmVh0iYPHkykydPBoxlomDNbxwJ8m1yo1+mQGqtT2qt\nd2qtf9da3w/kYeISiuMQUNOtrKajvESSkpKYOXOmy1ZZAuC01rz99tsuZePHj0cpRe/evUu8duDA\ngeTl5XlMYpSfn09aWhoAPXv2JDAwsHDKokVSUpLX/nXo0IHGjRszbty4wvY8ERYWBkB6errXNgVB\nECoDlkgoj+DFQYMGFY6PkybNhGsTaH7jpT5d69eYBBsBQPGvq/Ab0AMYbyu72lEulMCuXbvo378/\n1157LcuWLePLL7/kzjvvLAxaLI6uXbsybNgwxo4dy5o1a+jVqxdBQUFs3bqVadOmMX78eAYMGEBs\nbCyPPfYYY8eOpU+fPlx33XX8+eefzJs3z6NLwu66UErx7rvv0q9fP9q1a8fgwYOpXbs2mzdvZuPG\njcyda2a4JiYmorVm5MiRXHPNNVSpUsVlxoUgCEJlw25JOB2ysuDll+HZZ6FqVcjMBKpmEhLkp8BF\npVQY0ASwbMQXKKXaAseBZOBpYCZwEONueAioA0y1tTER2K+1fspR9Abws2MmxBxgECYPw/2l7V9l\nQinF119/zTPPPMOTTz5JYGAgo0aN4tVXX3WpU5w5/91336Vjx468//77PP300wQGBtKoUSPuvvtu\nLrvsssJ6L730EiEhIbz33nv8/PPPdO7cmQULFnD99dcXadv9uFevXixatIgXXniB119/nYKCAhIS\nEhg6dGhhnQEDBjBq1Ci++uqrwlwJIhIEQajMlGRJyMyE1avhiiu8t/P77/DSS3DDDdCxo0MkBGUS\nWs1/sxs6YqYyasdmzUqYCAwHWgB3YwRCMrASuFxrvcnWRn0g3zrQWv+mlLodeMmxbQP6S44E78TF\nxTFlypRiz+fn5xd7DuC+++7jvvtK8gQZxowZw5gxY1zKdu7c6XLcrVs3j/fr0qUL8+bNK7btgIAA\nxo0bx7hx47z2QxAEoTJgBS7OmAGzZ8PMmc5zU6fC/fcbK4G3eIXjjikDVgjZqlVA1Uziq/svT8Iv\nlBzLcJMPbRSJYtNafwN8U9r+CIIgCML5hmVJWLkSfv7Z9VxGhnFDZGZCdHTJ7biLhJkzQTU+4bNI\nkLUbBEEQBOEswxIJmZmQm+t6zrIynPBhxWdLJKSmGtfF7DkF6MCThASKSBAEQRCEcxJLJGRlGZFg\nT2dz8qTZl0YkpKTAli2QlpUFICLhfOe5554jPz+fmJiYM90VQRAEoZyxiwStwR7uVRZLQkqKcVMQ\nlAngv9kNgiAIgiD4h6++glmznELA8eJPTg4EOkZsXywJe/bArbeCIw0NqamOtqo6RIKPlgQRCYIg\nCIJwlvD77/Djj64xCWBcDtaA74slYfVqWL4crIS6KSmOtkKPAhAVHFX8xTbE3SAIgiAIFcDbb5vE\nRiWRlWUGdCsGwbIk2IMXfbEkONboKxQbhSIhejcAdSLq+NRnEQmCIAiCUAHMneua78ATmZmuCZQ8\niQTLkpCRUXw7h92WTExJcbRVfRfRwdFEVIvwqc/nvbth06ZN3isJlQ75uxAEoaJJS4NjXpY5tESB\nhd3dYGGJhPR0OHAA6jiMAhkZMHEijBjhtCSAcTmkppq2qtTYTaPoRj73+bwVCbGxsYSGhnLnnXee\n6a4IZymhoaHExsae6W4IglBJKItIsFsStDYCwXI3TJpk1mQ4ftwIgXffhSeegFatXEVC48Zw9KgR\nCQExIhIAaNCgAZs2beKYt19EqLTExsbSoEGDM90NQRAqCampRiicOlV8OmXLcmBhxRTk5sLXX8Mj\nj0DTpqbsr79MWydOGJFgBSmuWuXqbkhIgG3bTNs6ajeNo6/zuc/nrUgAIxRkEBAEQRC8MWUK9O4N\nEb656stEWprZHz8ONWt6ruNuSbDIzYUdO+DgQYiPN2VW7IJlWbDaX7LEWBJiYsy9LrjA5Fk4dFiT\nX+vvUlkSJHBREARBqNScOGFyCsye7b97FBQ4Aw1LMnC7WxIscnONJQKM68DOxo1wyy0mPgHg11/h\n0CG4+mqTW6FtW1O+88hBdGC2iARBEARB8BXrTdza+4OMDOe0xpJEQkmWhOJEwjPPwLRpsHgxBAQY\n60FKCvTqZeq2aQNUS2NN9HME5IeQWDvR536LSBAEQRAqNdZsAcv/7w+sAR7KbkmwVnK0T5EECA01\n++3b4YYbnOXx8ZATeJj/bf0H/Ls6KRdM4MK/36BuZF2f+y0iQRAEQajUVIRIsOIFoGyWhJwcV6Fh\nJ8SRYfnUKahdGy6+GECzMnciTd9syg/7psOC/4P3V9Ei6/5S9VtEgiAIglCpsdwM/hAJo0fDv/7l\nm0goKCje5WF3N7hjz7wYFweP/isHBtzFi3/dy4CWA9g+ajuBKx+Fgx0KrQ6+IiJBEARBqNT405Kw\nbh2sX+8UCdWrFy8SSoqJsLsbAKJsSy/Y24uLg4wLPieg7WS+uPELPr3hU2qExmClhLHWf/AVEQmC\nIAhCpcYSCda+PMnMNIO/ZQVISIDkZM913V0N9lwK7paEuDjnZ3eR8MW6L+jRuAd3XHRHYbmIBEEQ\nBEEoA/60JGRlmfbT0sygX79+0dkJFlbQolJmbx/Q3WMS7Mli7aIjL3wXv/z9C3de5Jpt2Kov7gZB\nEARBKAX+FgknTxqREB1tEhzZ3QbudcEM6EFBzgyKYIRAQYHz2ErGFBBgK6+awes7B1Mnog4DWg5w\naVssCYKaZcjfAAAgAElEQVQgCIJQBvwpEjIzTfupqSaOIDracwBiWhpY687Vrm0EQqAtJ7J9LQaA\nQYNMmubq1QE06tIk+Fcsa44vZfJNkwmvGu5SX0SCIAiCIJSBirIkWCLBPtPBolcvuPlm87lmTSMS\n7DEJlkiwXBG1asHAgY7pj62/Qvd6hH+0G862kdvo2rBrkfZr1DD70robzuu1GwRBEATBG/4WCdWq\nuYoET5aE3393fq5dG4KDXS0J1oJNtWqZ9Rus3AjBIRqueIU6mb358KZxxfZDLAmCIAiCUAb8JRJO\nnYK8PNN+RoZZPCoqyhy7z6SoXdv5edQoeOcdz5aE+vXNPjjY7E9e+D7U/IuO2U+U2BcRCYIgCIJQ\nBvwlEqzZCidPms9hYcaSAEVdDnXqOD+3aQP9+nmOSbBEQkgITP5rMvvbD4eVw0kIKupisCOzGwRB\nEATBC6dOwciRrtMG/SUSrNkKeXlGFISHO0WCu8vBPqWxalWzt1sSjh0zA3yNGkDcRsavf5oH5jxA\n/OFBMOdtwsNUiX2xRIgJdPQdEQmCIAhCpWHPHnjrLVi+3FlWniIhL8/EDOTnuyZHSk52tSS4i4Tc\n3KJt2S0JBQXm2uTo+fBAOyZv/YBOdTvRdt+7gPJqIbjoIliyxLlstK+ISBAEQRAqDZYgsK+2WJ5r\nN9xyi3lr/+c/Xe9x7JirSDh61AiD7dth6VLPKZntlgSAqOgCloQ+AXu7sHnYXn646wciq5r8zL7E\nGlx2mXN2hK/I7AZBEASh0mANxvZFkcpqSVi8GBo0gEaNnGU7d5r95s2uloSTJ11FwvDh5q2+Th0z\ns0Hrou27iwTdbAaHWQsLFxMdbiIXLQtCaWMNfEUsCYIgCEKlwZMloawi4f774c03XcsyMsz+4MGi\nazGEh5stIAD27YNt24xFIS3NiIjBg82CUBaWuyEkBFAFHGj2Ah2ie3BpvStcz1H6WQu+IiJBEARB\nqDSUp0g4ccIpCizS0yEyEg4ccL0HmIFcKac1ITkZjh837Zw8aawSbdo461uWhPBw4OK3SQ9dy7gb\nnmPpUmcdSySIJUEQBEEQTpPyFAnW1EY7GRnQvLkJTHRf7dF627dEwvHjxpKQkWGsDtaAb1ElUEO1\nNHKufBSuG0Wbkw9yRcMrXOqIJUEQBEEQyglvMQn/+x/s3+9bW1lZri6F3FyzNW9ujnfscK0f7lhO\nIcrEGqI17Npl7puR4SoSPl/7Od+3D4Eno0m/cBzMfYN+QW6+DcSSIAiCIAjlRkmWhLQ0ePxxmD3b\n87VPPGGCFcFMcczJcW3Hcj1YImH7dtfr3S0J9nufOuUc6HPzc3lq4VPEZ3WHqV/Tduk6WDGKmOpF\npyZY1/jLkiCzGwRBEIRKQ0kiwZph4B5nYPHWW6ZO165Oi4S9nfR0s7eLBKWc7XoSCYUE5HG8yjbe\n++MXZm2dxb70fVyfPI85G1oRV7v468SSIAiCIAjlRHHuBvubuDXY27FcC0ePOo/t+61bne6FBg3M\n2grbt7tmOLTu0akT9OnjKFT5cM1oeCqcJ/ZcyEPfP0TKyRRe7/U6sQWtAKeboiSRIJYEQRAEQThN\nirMkREU5yzxZEixx4C4SrGv693fORoiIMAs27doFTZqYAEVwDvb//rdxVQQHA70eg0vGw+JnGPtA\nN4b2a0f1EKMs7v/Y9TpPKZWjo6FKFXNPfyCWBEEQBKHSUJJIsPAkEo4dM3tPIiE52SRP2rLFlEVE\nONdKCA93rsVgf9uvVg1Cmi43AuHHsfDz83Su1b1QIIAzT0JJloS+fWHZMmed8kZEgiAIglBpKC4t\nszeRUJwlISvLZEwE5/oLkZEmBTIYa4G1rHNYGOQX5LPl2BYGTh3IyTu6wJE2sPxhoGhcgUueBDyL\nhKAg477wF+JuEARBECoNxcUk2EWCp5iEktwN9sWiwAzqAwbAq6/Cn39CaMvFBEQt4dnF6XyzaRo7\nUnYQExJDwzUf8fec26DAqAH3PAmWJcGyQJR2BcfyoNSWBKXUFUqpmUqp/UqpAqVUP9u5QKXUf5VS\n65RSJxx1Jiqlantp8x5HW/mOfYFSKqukawRBEISzk4MH4fDhM90Lz5TW3bB5sxENlrvhxAnYsMH5\n/U6dMqsrWoSGmhiBg5Ez4fY+5Ay5iJQbuqG7/I+pG6fQtlZb5t0xj+0jt9M8awjx1UMJCHBeayco\nyLQVHGxmSURGls8zKA1lsSSEAWuAj4DpbudCgXbAC8A6oDowHpgBeDOIpAHNAGsiqIflLgRBEISz\nHcsf72nRojONu0jQ2gQRehIJJ05Ahw5QsyYkJjrPt27t2uZff0FCgpndEBEBh08c5s5vb6dJ25a0\njLqcVdOfRK+/jZ37XfMc1KhhtuxsI0TcLQlBQSaeoXFjaNGCQjFRkZRaJGit5wHzAJRyXXRSa50O\nXGMvU0o9BKxQStXTWu8ruWl9tLT9EQRBEARfsYuEggJnHIHd32+JhAULjHsiNRW++caY//PyirZ5\n9KiJQdixAyIiNWMWjqFKQBWWPzSPGqE16PA+nPAwRfGGG6BVK3j3Xc8iITDQiIRbbzXbmaAidEk0\nxiqQ6qVeuFJqt1Jqj1LqO6XUhRXQN0EQBMFPnElLwp9/GhHgjhWTYH3eutV8rlvXWW7FJMyaBRde\naGYQADRtWszNquQQ2WYxXPQFyVcOYsKfE/hvz/9SI7QGYNwFnmYfDBwITz/tPOfuboiKcrVwnAn8\nKhKUUtWAscAkrfWJEqpuAYYA/YA7HP1appSq48/+CYIgCP7Dyg9Q0axaZdwEnTs73/zz8uCNN4xV\nwJo1kJkJEyZAfDxcd53z+owMU3/OHCMQLr/clDdo4OFm7T+CR+rxWZVuMOAuTsas4KN+H/FAxwcK\nq4SElJzsKCLCuBKsflkMHQo//VT671+e+E0kKKUCgakYK8KIkupqrZdrrb/QWq/TWv8KDACOAsP8\n1T9BEATBv+zefWbue+iQ2a9cCatXm89ffQUPPwy//GLiAABSUuDzz2HwYOfbfM2axgUxY4ZxI9x2\nm3M64+HDbi6BsCNw/QjY3Z2Jl64m7I0T9Ny4kyHth7j0xxeREBpqghPthIWZZExnEr9MgbQJhPrA\nVV6sCEXQWucppf4EvD6e0aNHE+Vmjxk0aBCDBg0qzS0FQRCEciIgwJj6d+92DfirKNLSnJ+tKYsr\nVzrLYmONkNi2zVgWunc3yY0AGjY0YuCNN6B9e2jXzum26NYNatWC9eth3z4g8UPQVWD2e1w+Noba\nNSDSQ+bDRx8t2fUSHl40HqE8mTx5MpMnT3YpS7M/pBIod5FgEwgXAN211illaCMAaAPM8VY3KSmJ\nDh06lLqfgiAIgn8IDjZ5BM6UJcE+/h05Yva//eYssywJVv/i4pwioUEDkxzp11/h9ddNWUCAsTqE\nh5tgwqQkeOQ/21CXvoZedyecjCEuDnr3di7uZKd795L7GxHhX5Hg6cV59erVJPqg4EotEpRSYZg3\nfMswcoFSqi1wHDgIfIOZBtkHCFJK1XTUO661PuVoYyKwX2v9lOP4GWA5sB0T6PgvoAEwobT9EwRB\nEM4cWjuDA3ftOjN9SEuDmBhjATh61FgLVq1ynncXCbGxxtw/cqSJY5g2zZRfeqnzmuhoSDmZwltL\n3+Kj7O9gxHqCMi8g94f/UrWqERDjx5etv+Hh/lvF8XQpiyWhI7AIE2uggdcc5RMx+RH6OsrXOMqV\n47g74FiJm/pAvq3N6sAHQC0gBVgFdNFaby5D/wRBEIQzRE6O07S+d69/7rFhAzz5JEyf7sxKaCct\nzcwKCAw0ImHzZiMYqlY18QZWHgdrZkNsrIkHGD8eNm50tnPRRWa/4/gOft79M0/8+ARZp7LoFHkj\nf8+4h4tCBvJHdnXi6haNJygNt9xipkKejZQlT8IvlBzw6DUYUmt9ldvxI8Ajpe2LIAjC2cxTTxnf\n98cfn+melI79+03Ev3u0vS9Y6YrDwoyJ3h8sW2amJx4+7Dp10cISCWFhxt2wz5Ghp317WLHCxBWE\nhsLatWZvf4u3ZzXUgVncNOUupm8yeQNvbHEj717/LjvW1eSyUVD9anNtXNzpfZ+ePc12NiILPAmC\nIPiJrVudb6vnClpD27bw2Wdlu94SCXXq+E8kWO0ePOj5vCUS4uKMJWH/fhNz0KKFOR8SYvq3Z4+x\nItixllyuGnWcvpP7Mn/7fD7t/ymHHzvM9FunUzO8JjExpk5oqBEi7m2cT4hIEARB8BM5OWY7l8jI\nMEsf799ftustkVC3rv9EQqojNZ811TEjA15+2Xk/u0g4csR8l7p1nW/8wcFOC4T7AL8jcy30vR9G\nNmfNoTXMuX0O97S7h/iw+MI6VkyDZYU4XUvC2YyIBEEQBD+Rk+NMA3yuYM0GSPWWI7cY7JaEsrbh\niYICZ3uWGLBEwvffm8yF9eqZdRX27DEiIT7eaUmoV69kkVCgC/j4z4/pNCGRWpctYESXe1kzbA3d\nGnUr0hdrNcbQUOO6aNSo/L7n2YYsFS0IguAnzkVLgiUSfJxGXwS7JSEz06ySWJbYBjDX79hhAgin\nTzcZCI8dKyoSrJiDW2+FTz4xn7t1c3U3uFsSrODF6nE5/LRzCQ/MeYDtx7czpN0Q3u/7PoEBxQ+P\ngYEmdiEkxMRGnK0zE8oDsSQIgiD4iezsc08kWEsgl4dIgNOzJkyYAFdeaT7v3WvEQUZG0ZiEvXuh\nZUvXKYiWu+HkSdiyxfQnPh5As/7ULFbHPAH/vICvmwbT8/Oe1AqvxS/3/sKEfhNKFAgW9eoZt0Nc\nXMnZFM91xJIgCILgJ84HS8I//wk33ugcrL1hdzeAGdB98dkfPgx//w2dOjnL9u41IkNrs2yz1S97\nTMLx46ZevXom30BsrLE2WO4Gq17duhAbq+Hah3ll93iiqsTDjhu54eJOPHx3Apc1uMwncWAxd67T\n7XA+IyJBEATBT5zLMQmWSJgwwZjVvYmEUaNMtsJ69cxxaSwJWVnGtw+u6YsPHzbHOTlOkZCa6rQk\nTJ9u4hFq13ZmNWzc2CkS7Ose1Kh9gnf3Pg6d3+PZDu/RK2YYlz8D11wP3Rp576M7Hhd7Og8Rd4Mg\nCIKfsCwJWVllN99XNHZ3Q26u6bu1/kFJzJkDixd7tiR44403nJ/tosqKOcjKcrUkpKRAlSrO+rt2\nQf365rhxY7OPijIBhff/exv0GcYD22rz+cYP+KDPh7zQd1ihmDmfpy+WB2JJEARB8BOWSHj6aZP1\nb+7cM90j79gtCdYAb5UVR36+mVEQF2cG9GrVnNMEfbEkbN/u/LxnDzRrZj5bgsUuEixLQny8a54E\na9C3RMJe9StNxg9mR/AOYi+rzYhLHmVI+8E0jG4IGEvARx+5LhEtFEUsCYIgCH7CSlG8Z0/xiX/O\nNuyWBEskeLMkHDgAeXlGTGRlmWj/8HDztv/kk2aJZm/3bN3afP7776J9sYuE/fuNKLHSGLdta/Yu\nloSEBYzZcg11Iurw1U1fsfexnbzQ/flCgQAmjfKQIef3zITyQESCIAiCn7CCFlNSnGb4s50jR8zi\nSNnZTguCN5FgLZR05IiZTRAaagbh6GjjCnjjDZg9u+R7Jiaa1RattvLynPe1iwTr/OjR5vOgQUBw\nCn8HzifptyS+zhsEt/ehS62rmH/nfG5tfSvBgcGlfg6CQUSCIAiCnzhXRYJl7rcGZF9FQmamCRq0\n3s5zc80+JATGjSv+emsNhjp1nJaEY8ecQYyeREJMDDRsCEHtJ6OeiGPYkmt5euHTZARtZ0jjF5k/\nZDohQX5cf7mSICJBEATBDxQUmERCcGZEQk4OPP64GbiLQ2t4/nlnCua8PDOl0JoVYA3IGRklT+W0\n6oEZ5C2RkJFh9tde67RKzJ0L77/v2ocjR6BmTRNoaIkEy9UAriLBWn66enWYt30eT68cwq1tbmHb\nyG2ceOoEK4eu5KPB/6ZqlarFd1jwGREJgiCcFqNGGb+z4Ir1Fg1GJJQ0WPuDv/6C//0Pfvut+Drp\n6fDCCzB/vjk+ftzsExLM3j74W9aE7duLBiPu3m2sBdZndz//RReZ9SAAJk6EF190nsvIMK6N+Hhj\nGShRJFRLZ2PUa3DPVQz4oS29v+xN90bd+aT/JzSJaUKAkiGtvJEnKgjCabF+vdkEV+xv3unpRjTk\n5VXc/dPTzd6aRugJy7phvfEfO2b2nkSCZQno3x9efdW1nV27zDLM1jWWYHjrLfh//8+4BpKTjdXg\n6FET6Gj1yxIDNWvCBRfAxo3mWRX2OyiTKfv+x94eV8Ij9TjR+UnIjeTS+p35/MbPmX37bIk58CMi\nEgRBOC2ys02wmuCKpyRKFfmcTkck2N0N1oBvWRKsQd5Ca/jzT7jqKmdbliXhwQdhzBgzHdLKF2GJ\njdWrzd46rlkTbrvNiIlJk4x4CK2zG/7Rha+PPk1BZnVY+jiM203z1d/xYf/3ufOiO8V64Gfk6QqC\ncFqci1kFKwJPPvyKjEs4HZFwwQVm//ff0LSp+WyJhPR0p+sAnO6Hyy83CYygaLpiK2dCcrKzHUsk\nWJaE+Hi48EK4esABnpv+OV+mjiDn7otRVTN5NGI1+ZO+JWDJM5BRp3D6o+B/RCQIgnBanI+WhH//\nu2Rfvi+cCyLBipNISzMLJE2ebKYhxsaaRYsKCsyMg9BQM7ifOmW+l10k/P672V98sTOr5D33uN7H\nEgnHjjmFiN2SEBC7nbfXv0iH9zvww0V12ZN4N7v1r1RP7UnU1BUEpRhVULu2ucbKqSD4HxEJgiCc\nFjk5559IeOst+PHH02vDHyJhyRKTWdAeFFkcpbEk7N9vMkLOmWPiB6pUMYM+mFwHDRoYi4FlcbBE\nwowZZm2Hpk3NdRaW68HCEgk7dphESHXqmJUZF+5ayNsH76LggdaMW5FEw+iGPNZgCry2j0bf/8WV\nxyYTpmILXRLBjtADsSRUHCISBEE4LbKzfXM3rFtnBpWznfx884Z9usLHHyJh7VozoPuyDoQlEkrK\n9Gj1x5pRcPKkcy2Da64x+7Awk+ho1Spnm8nJxspw333w889w6aWmfNMmE8SolOt9LJGweTMQuZfg\n3s+xtVsnenzWgw3H1tA69Qn2P7Kfb2/9lpsvvAUy6rJhg4lTCA11xi1YsypEJFQcIhIEQTgtfLUk\nfPjhuTFV0pqPf7pxFv4QCdZg6ct0yuIsCampxmz/++/O/uzZ4zzvLhI2bTJWhTVrnFMkU1KM6EtO\nhg8+gNdeM+UtWphcB3ayTmWxPXM16trRvJ7VDh5uxN56r5N3uCldj35Jkx/XsfL/XiA0yEQ7WqtH\n5uU5RYIVt3D33WZvxUkI/kdEgiAIp4WvMQnnilvCGlw99TU6Gu6917d2PImE082VUBaRcPy4a1+W\nLTPCYe1ap0iwWyYskWCtiXDbbUYk5OQ44zQKCuDbb81CTnfd5bQUWOxL38ebK97kkgmXEPZyGB0/\nTIR2E6lyqBPMfp+kegdg+pdkLr+dVheqQjcCGGFgWSLcLQnDhpnZFFUlT1KFIatACoJwWuTkmGA3\nb+TmnhsiwfK7e7IkpKWZZECffuq9HX9aEnxpJz3dDKa5ueY6awGkZcvM/uDBooM7OEVCQIBrWuQq\nVWDhQme9adOgSxdcBniAd1a+w6MLHiW/IJ+rE67mo34fcWHchdxz7UXs3RlKlVxo19LU/esvuOQS\n1+uDgsxMh8OHoVYtV5EQHu79ewvli4gEQRDKjD31cEFByWLhfLAklIazwd3QtCls2AB793oWCSEe\nljawRIKd0FAzLfKPP5xlGzfCzTc7j7XWTPprEg9+/yDDOw5nbM+xRFaLLDwfFw1bTxrrQK1apiw3\n1+lesFOnjhEJliXBEm4iEioecTcIglBm7AOhNx/+6eRTSE+Hjz8u27WlpSRLgjuzZ8Py5Z7PWc/G\nHsRX0ZaEzp1NzoI5c0xZXh6sWGE+Hzjg2k6g45XRk3UBTBzD3r22guAU0hp/yvWTrqfFWy2o+3pd\n7vz2Tga1HsTb173tIhDs7cbFmcHfok6doveyhIMlEizCwkr+zkL5I5YEQRDKjH0gzc4umrPfTm6u\n2fLzjem6NMydayLp+/cvfhArL4qzJFimdzDWk6AgePZZk1+gc+ei7VgiITLS6fP3NrgfOWICAnv2\nLP48+G5JiI2Fm24yGQybNTPPLivLxBscPOjan4YNoWNH6NataFt5BXmE19+LvnQKATV2UlB9GzRY\nwvi/8+jasCvXN72esKphXFr/Uq5JuAblPr0B6N3bTHvs398M9iEh5hkXZ0kAV5FQo4ZTyAgVhzxy\nQRDKjN2S4M08b9XNzi79G6F1bWqq/0WCZUlw/z7273rggBlUjxwxeQs8YQmo8HAjEpTyLhLefhte\necXMGoiIcD2Xm+ucAuhJJOzYYWYk/PabeVtPTzcC5ZprTC6De+81xwkJ0Leviauw9ycmBr76ysxG\neGlxEmsPr2Vv+l72pe/jYMZB8pvmQ6MQAlJbolIbEPH7/9gw9WbqRHgwBXjggQfMZhEfb6ZeerIk\n1K9vLCAhIU6R0K6dT7cRyhkRCYIglBl3S0JJWAmAyiISrGvdVx/0B5Ylwf372AfmPXtMgqEjR5yi\nwp2cHBM4aAX2Va/uXSRs2WKsFD//bAby7Gzj++/QwZnOGFzbOXHCCJGlS41Q2LABOnVyioQrr4SZ\nM+GHH+DNN+Hhh80b+qFDkHFCQ/x6aP01B5ofZuDUNJbsWUJKdgqX1b+M5jWa07NxT+pF1uO3+fWY\nOPZSGtevTk6OsTrUiXD/Br5jiQRPloQRI5zWFEskWAtICRWLiARBEMpMWSwJZQkItK71JYnQ6VKc\nJcE+MO/dawbhU6dKFgnVqjlFQmysd5GwbZvZz59vREKfPvDTT6Yty9UATsGyeDFcfTWsXOlIVAQs\nWADdu5vPkZHGgtG3rxELR7IOsb3ls0zft528YYf4ovp+GJEOWTU4qRI4mhXKwFYDGXHxCJrVaObS\nt2rrYWK2sXAMHw5t2pT8XbwRH28sBdZ6D3ZiYpwuHEusiUg4M4hIEAShzNjftr0N/pY1oCwi4Wy0\nJFiDtjeRUK2aicGIjjYiITPTbPHxrvW1NiKhWjUz0B89agSC+/0CApx9WbjQPJsnnzTXgWtWy0hb\n7ODq5F/4peVtFOwroG3EVazf3paIoFoEHWvP0ZXduHVoNd5xW3PBjrVuQmQkjB5dfD1fiY83rgYP\n4QsubN1q9iISzgwiEgRBKDOlnd3gSz1PWCKhOEtCZqYZKMeOLTl40he8WRKqVYMvv4SLLnKt745d\nJISGmi0zE154wbgTrIWRwHz+/HPT1rXXGpEwdarz/M6dpk7Vqmb6oNWX5cuNG+P7750xDBs3FUDt\nNRC5l8UnjvDnon18tu4zdqfu5spGVzL5psnkHq9FwwcgFeM2OJpfdOVGd6xpi+6xEmXlwQfh+uu9\n1+va1VhWmjXzXlcof0QkCIJQZirKkmAPXPTE7NnG337BBcbnfjoUN7vBenufNMnMtBgxwhyXJBKC\ng11FQlaWGfC3bTOzGDZuNBkNn37auaDUpZfCvHkmtqBWLbNq4h9/mNTHw4bBr7/CiUxN6skMlm05\nzA0j9zFzXjppej80Xgh1f4coM1cxaQeE7w3n1la3cn3T6+nbvC+BAYGcclg38vOd0xErWiQkJprN\nG//+t/lNSzsjRigfRCQIguCVG24wb3SPPOJaXlExCd4sCdYAtmVL6dt2p7g8Cdbb+8UXmzfgL780\nxydOFE0ktWqVGcytmAQrSj893YiN1FT43/+MxeC228xbsiUSrAyE6zflEdXiL9B7+M8Pu8m5fAcb\n2m1nc/AO1oXu5t1Xc+Fe+BzgOqAggNDjl5K16UZ6N76RF0a2pEPzWKoEFB1dg4JM4OWuXebZWctD\nl0RsrBmoIyNLrlfeBAScvnVIKDsiEgRB8MqGDZ4HkbLMbvBnTEJ5iAS7JUFrp8/csiSEhRlXgyUS\nrHP2N+x//MMsiNS+vasl4dAh54JLS5earIInT0LWSQ2hyfTof4g/8lbB9StY0nIWBeH7TOW8aoTl\nJBAe2oT41D7kbGlE8p54YoLjmD+lPlnHo3h4eCS9rgrmpXnQ9RW4uGXJ3zMhwYiEGjWMOb9Ll5Lr\nV6liBEV0tG/PUTg/EJEgCIJXsrKcqyPa8WZJyMw0dWJiyicmITUV9u0rmpsgP9/sixMJOTnGPfD8\n8870xMWRkeFM9HPqlHMxIcuSEBrqjEewX2OJhB07jEAA41Zo2tRcEx1tXAeWSNi50+xXbNrH/Jjh\n8K/Z/AT8tBJo1IKCjf3oVWcQ8YFN+eL9OJ5/NYDHboMbvoIZM80b9vZUx33rw+/LYMoU06Yv/vuE\nBGO9CA0tPnmTO5MnG5eOUHmQtMyCIHjl5EnPvnd3S8K995qANIunnoIbbzSfrYH+8GHnAOkrlsCY\nONEM8seOuZ63RMKBAyb18CuvuPZt4UKT1nnGDBgzxmQbLI70dOfMg1dfda5XkJlpBuZq1ZwiwcoA\naH8233zjXBPhxAmTB6BePTMob9vmsEiofOj5BPyrBt1n1edoyBLa753A4nsXc/zxNNQ7m+D7t2kd\neTmtG9UEHVC4dLOVY6JWraLxAa1amT5ZKziWREKC2ZfGlH/FFZ7zGgjnL2JJEATBK94sCWFhZqCc\nONEcv/222e/ebVb6s9d98UVISnLO6/cFS2BYZGaat3xrWp4lEsAE/T31FFx2mYmjABPYCMZFsHy5\nGeiGD/d8r4wMI0T+/hueecZsWptnEBpq3A+1axszffXqsH27SVR08iS0bm2yG/bpY45DQ+Gll/PZ\nlbKbLxauJr/3j1B3JdTYCoEn4bdH+EfvTqyf2ZNmDapzRUPTh5gYk3UxPt6kMT5wwLQNzkHdU6bH\nVq2MgPKUe8AdSySc7noSwvmNiARBEEqkoMAM8MVZEqpWNQPX/PlFzycnQ0qK2dvf9qtVc/X3e8Nd\nJHkfO/4AACAASURBVCxaBPffD/v3m4HULhJ+/dXsrf5q7RQJ1mJMxQkUrY1L4+KLXcvXrjXCxHqL\nVwoGDzZ++v/+F0aNMoJkyH35bDuyj0fu246qsZ2jWUdpP+ELtiQ7/CANW8DeywjYcDsFO7pT5Ugi\n1dtBdiqEX+i8X2yseWZxcdCiBbzxhvOc1Yfi0kH7IhDApJWGkq0qgiAiQRCEErFiDYqzJAQHm81K\n/GMfvCy3wKZNRa9LSys+CE5rcz/LnO4uEnbtMm6FgweLigTLPWD19623TDKiPn2cYsGTSHjsMeMa\nyc42kf92Pv7YDM520/yrr2qmrf4J/voWHbeJxVH7WLztbxidy/DlUEVVoUZoDdrVakfSNUm0rHER\nTeLrkp8PbdvDnwchsZOxtliplS3i4kx8hXvCJXCKhNM1+zdpYvZXXHF67QjnNyISBEEoEcscXZwl\noVo1pw8eXKcpJieb/caNRa89eLB4kTB5snk7P3LExAHYAyQBjh933XsSCRkZJmvh6NHwz3+aaYuz\nZ5v23EVCaqrJQ2D13R7c2L69WYWyd28zQCdnJfP8z8+zYOcCtiZvhYQmcDARfSAR0hrw1ANNGdy/\nCQ2jGhJUJcjlPo0bGzdG69YmtXPr1sYd4y4SrJkkcXFFn01J7obSEBVlxJesrCiUhPx5CIJQIr5Y\nEgoKzPEll8CKFWbQVso5iLtbEsCIhJbFTNNbssQIjPR0IyTcLQnFiYT4eGf64hMnjMUhP9+4BurW\nNYKmTx8TXGjFGIAz9e+6dWZvtyTccw88/EgewfsWkNJmNc3fGkdeQR63t7mdpF7j6NPyWnSB8ZuE\nhcHTtxYfDNikiXlmN9zg7M/337vOjgCnOCjJknC6IgFMvgRBKIlSz25QSl2hlJqplNqvlCpQSvWz\nnQtUSv1XKbVOKXXCUWeiUqq2D+3eopTapJQ6qZRaq5TqXdq+CYJQ/liWhMxMpxiwsCwJ27ebY2sq\nXUaGeTu36nuyJFhTAT1hTSG0REBurmv8glWekmL2lkiwD+4nTjj97bVqmbfzPXvg0UdNmSUMwDl1\ncv16sy+0JIQeZXnNIfBYLf666HoOJfyX3k17s/mhzbxz/Ttc16w3kRGmY716wV13lTxboGtXs0Lj\ngAFmBkZ8vHHJZGaW3pIgswyEiqAsloQwYA3wETDd7Vwo0A54AVgHVAfGAzOATsU1qJS6FJgEPAHM\nAe4AvlNKtddae/jvRRDObwoKzFTB2l7ltf+xLAlWhL99MMvOdq5yCCalMBizveUiqF27eHeDJwoK\nnG/0x4+befk5Ocbc36IFvP66043hbklo2NDV3XDokAkutAbd+HineX3bNmjXznzeuhUIzCYrIAVq\nHmXRiV/hmh3Q7lN+2BNAg8PD2bPgRq7t0IHP/59rfyMjTf/mzfMeiPnkk67H8fEmtgJcn2ujRmb2\nhKcltcvTkiAI3ii1SNBazwPmASjl+k9Ca50OXGMvU0o9BKxQStXTWu8rptlRwFyt9euO42eVUlcD\nDwEjSttH4fxCa2OuvvBC73XPF2bNgjvuMIOhtbrfmcI+Rc7dd24tYmRRo4bZp6Y6r2vVyuQpcKc4\nS8KOHc7shnZLQp068PLLRiQU526wIvatvlqBjVWqwP70/RzJPEJ6Tga03c2LO77mjof3EBl/nNSA\nFBjjzAb1/1YGQcs6hO8exIYxz/LGyzV55aBnK0FEhBm4fZ2pYcfuTrC7G+69F667znObHTuac+7B\nlYLgDyoiJiEa0JgFx4qjC/CaW9l8oL+/OiWcO/z6K1x5pTEVn29vT5s2wZw5JrLezt69ZqBMSXGu\nS3CmsIuEjAzX/liWhD//NAOaZVVIS3MGAVqZ/cC8daenm+DBgwfNb7p4sXmb3rjRJC+yZiCAq0io\nWtVs9liHktwNGRmQl68Jb/kbfSe/wuyttoZvhLTsyzi1tTtqfww186tzcFcMOqs69WrEsHruRcRH\nh9OiI9QMNzkXwFh33ImIcIqj0mJ3J9jFV9Wqxf+tN29u/mYEoSLwq0hQSlUDxgKTtNYewp4KqQW4\n//M77CgXKjlHjhhrwvkoEgYNMnPwH3rI1WxvrVGQllZ+IkFrE+k/alTpUuva0y27By9agYuW2d6y\nDqSlOV0CjRs760dFGZHQtKkRCYMHu1oZ6tUzi0gNHAjffltUJFhCxHo+xVoSquSyNeB7NlR/khNd\nNxN4vCWf9P+ENvFtCKsaxlWXxNOrewwfzYWTYZBZAJ0ughVroMGlEOtYxMgaxK11DaxYCTvDhpnk\nR2XBbkmwiwRBOFvwm0hQSgUCUzFWBL+5DEaPHk2UW/aQQYMGMWjQIH/dUqhgrIHpfEz6Yg0M27ZB\nmzbOcmsQ9LagUXHYI/ctUlJMUp6lS2HlytK1ZeE+DdIKXLSw/ilaIiEiwnUgjIpyTv2bPduIjDfe\nMOX33muyMXbpAl99ZWIZLBFgd2tY6yqATUTknYJW05mWuQz+sQJq/8mKKrlEHu3FNelv8P2zPQlQ\nzjjtqKpmDQhwujb69jUzM+LijBipVs0pEmJijMti2LCiz2fwYN+eoyeqV3cu2SwiQfAXkydPZvLk\nyS5lacUtqeqGX0SCTSDUB67yYkUAOATUdCur6SgvkaSkJDp06FCmfgrnBtZ/4iVFw1cEK1aYwaxF\ni9Nvq6DAvFHXqWOON2/2LBJ8/HfsgrX64OLFrolyrLbccwT8+CN06FD827DdkjB3rhn0rWeQk+Oa\nIyE42EyrS0szUfs1arhmALQ+P/ywsWzEx8PIkabsiSeMOb9XLzNIx8QUtSSA7X4x29ke8Qsv/rKf\nD499C7esYcXxJlzX5RKS195O5uYupG7qSMe7FQFuvv2ICKdIANPnPn3Mug6WMAgJcRU4VoBheWIt\n0Xz4cNF1GAShvPD04rx69WoSExO9XlvuCzzZBMIFQA+tdYoPl/0G9HAru9pRLlRyzhZLwqhRJnAu\nM7Nsyx1baG2mwcXHO+epu+cROB2RMGGC2bvPKLDasrsMtDaD4xdfFG3n0UfNHH67JWHsWNcI/QMH\nXP3xSpm8BqmpxYuE4GC4/HKTq+Ddd801SjlN+j0c/xPYRUJOriYjaDtL9ywlv+l30O8fMKope9rd\nz1u/v0W4iiPwk9/ZNnIbc4Z8wSWMomDfxRw+pDy6ayIjTUpniw4dnG4RSxhcfz1061b02vLGup9Y\nEoSzkVJbEpRSYUATwNLmFyil2gLHgYPAN5hpkH2AIKWUZSE4rrU+5WhjIrBfa/2U49wbwM9KqUcw\nUyAHAYnA/WX6VsJ5xdkiElJSzHbnncYU/s47ZWvn669h1Srzubi3+7KKhNxc0z4UfV72tvbvN/Ps\nMzKMNcBToqSvvjIWjzp1zABm1VmyxIiLzEyTLdCyBFhERZl77dlj8g3YsypGRxcf5HfVVcb6cckl\n5tha5Ghr8laS+w9mXMEyxn0CXAnkRMCct2HNPTS9OIzrroOXjjjbiogwbg37IlD/v73zjpOqPvf/\n+7u7sL2xu/QFlg6CdMReUWPBFhMxllyiJjH+YmKi8UZTNDcak6gp6o1ijCReiWDvHRFUNHSk984W\ntvd2fn888/WcmZ3ZnV122MLzfr3mdWbOOXPmzBzY53Oe6iU52T+Uc+KJsq5PHzdfI5hwigRWJAQr\nd1SUjqYt4YapwCIk18DBrUqYh/RHuNi33qb4GN/rM4GPfeuyga8aqTqO85kx5mrgt77HVuAS7ZGg\nQOcRCcXF8igra9pUqDWsXOk+tyGUtoiEAwfEgB886BrC9evdeQm7d/vv7z3W8uXixbA5BtYzkp8v\nhrxHD/EgFBdL3Dw52b0OBQXSfOjgQfkdZszw/xwrErZvl86CXk/CeeeFTsT8/vfhqqvcsEJar3o+\nL3mFk578Po2xvZiT8CI/+fYovnVZFqs/7QVONACffirhj+ho91hJSe53C9Z0yOvav/hi+OY3xZvx\n5ZehW0VHiqwsyR/xnr+idBba0idhMc2HKVoMYTiOc1aQdS8gXghF8eNo5SQcPCgG0VtlYHEcMXxF\nRZJLYJvztIZFi2QKofcO1hryrVv997UGPZRIWLpUuvfde6+MMl69GiZMkGFBAGee2bxI2LFD2g3f\ncIO8rqqS5Lnjj5cKiDvukN+9pETEgjfvIDpaPvfAAXHbB7ZWTk0VD8Du3VL+6BUJV10F113X9PtU\n1lWSV5FHWWMZSzdu45XNr7Bw8GtURxXCl+fCC88y9cEMxmZBSjTg+Ccw1tf7G1mvCBg5sunnpaS4\n+736qru+Ldf1SOndW0MNSuel3XMSFKW9OVqehFNOgb/+Nfi26mpx5RcXi1AI5p5viSeekEz+oiLX\ncBYUiIu7vFxc4xYrJN5/Xwx34OyCd94R4fKLX8hrKwh27xbjOWVKU5FQWioegkGDJExQUiLJmCBC\nYO1aEWKLF8u51NXJPlVV/pUSM2ZISGPxYjHAUQF/RdLSRLTU1zcVCd5ZAQ2NDdz94d30eqAXifcl\nkvPnHI7/2/FcvuBylh9YzvSo78HjK+CZd6Aqo0niom0BDRIyCfQkgIiBYAmZVkRYsdCRnHeelHwq\nSmdEBzwpnR5rkPPy5G43Em7Zhga5C/cms3mxd+EFBWKQrHejNSxfLnfYRUWSJGdr7rOzJbu9tFTi\n9Y7jioTPfKm7RUUiJiyLF/sf22bq79olvQKGDJGYvPf3KikRg923r/RmAAlPgAgBe8wvvnCTFW3n\nRGuYx4+XZEbHEc9IsK5/EyfCi76G7cOHS/ggPh7q0zbx2yXPs6lgExvyN7C3dC+FVYX86IQfManf\nJHon9iYlNoV+Sf0YnDaYn/4UPvYIQ28JJEgnx3vvlUqOQJFgRUCo+QadSSRccIE8FKUzop4EpQm/\n/jW88kpHn4XcvYOIhMREiX/bCX+lpVKfHmx8cVs4fFiOH6ovgV1v5xGEEglLlkhL5UCKimQIUn29\nGG9vMyM7TOjAAbmzr6xsWm5XVgbPPy/PKytlv8svd7fv3SvLXbtEIAweLJ4Ar/fFioQ+fdxBRrZj\nYVUVfPSRGOCCArcywutJKC4WAZGSIse59FKpCgjkootkGRMjIsJxHOJHfE79tafxh0//wMaCjUzr\nP42bp97Msu8s48HzHuSa46/h3GHnMmPgDAanSUekH/1IeidYrCfBhoMSEtw5DKE8CbbENBArDgJa\nrCiKEoCKBKUJ//d/8N57HXsOixdLQldpqRhk20nPlsStXAlPP+3fAa+6WmLe+0JNCGkG2243lEgI\nzA0IFAlbtshd+QMPyN1tIN5kxZ07xZBbrEh49FHJsreNjtLT3X1++1u48krxAHz6qYQffv1rEQWn\nnOJ+59275dj2+Dt3+n8HKxICwxeVleK1uP56eb1okSytJyEhwS1fbImJE8U4Dx4MJqqB2S/MpvDy\nGURVZbHjhztYcdMKHr/4ce458x6mDZgW8jgDB8r3tgSGG+LjXWFQW9s6kdCZPAmK0pnRcIPShPJy\n9y6+o9i6Vc7DLgcOlLtba8StUc/Pd9+zfr3EypOTYe7c1n2eVyT8/vdShuetkQ8UD4Ei4a67JFRR\nUOCfW/D22yIgvL9nXZ0IoORk8RBYkbBli7jxf/1reT14sHunX1oqywMH4N13xY0+bpxk5Gdn+3sS\nvvlNyRVITRWxZxsqecMNgVRViQAbP14qJbwlmpWV4Zfn1TXU8ebWN+lz02vsq19F9sMHya3IZeja\np6n6YjYZf+kZ3oF8eIVSYLihOU+C9cSEGoKkIkFRwkM9CUoTKipct3pHYY3jjh2uSADXWNuwg1ck\nWON8pJ6EP/7RbUhkCfQkVFaKQbfk50vi386d/uf0ta/BrbeK29+b/JeW5hpAKxJ27JClzQ3wGjh7\nZ1xQIOGMiy5yJwQOHCgioaREzn/IELnrvvRSWLjQPU+vJyGQ4mIxrElJcl62kqS+XkIxwaYfgoQS\ncstzWX5gOQvXL2TS45O49LlLqcn6jFnTJjFn0hxen/06w8uvJzamdQIB/KsqgnkSQomEE0+UDo53\n3BH8uFYcqEhQlOZRT4Lih+OIUe4sImH7djkfm4DWnEiwhjxU8mEgjz8uLYBzclyRUFAgj8BBPoGe\nBMfxz/ovLna9C/X1sq2nxybW1Ijre9s2eZ2WJln3tuEQiKE/7jjZp6bGf+yx7cuwZIn8Jn/6k7st\nO1uEka1msO+78kqYN0/yD8aPF2/EsGHBRYL9PZOTxXB6y00PHpTkwEDKasq44NkLWLpn6VfrJvWd\nxBc3fNEkjPCP1CMfeR0oEprzJPToId0hQ2E9CZqToCjNo54ExY/qajGAHS0SbO7Bjh1ifLOy5A9/\nOCJh3z4xpM01PKqqkuY98+bJaysS9u+X779pk/9vUFLStKrCG3KwosZy333Sq8BSXS01+LYEMD3d\n9SRkZYkBbWyUpkC2j4A3b8F+N1s14A2FZGdLTH7VKnltvS4zZ4oRfO45Kb/cs8ffk+D1VNjfMylJ\nRII34fHAAf87eoBD5Yc475nzWJu7lmcue4YVN60g76d5rLhpRdA8g1D9J1pDYOJioCchphW3PBpu\nUJTwUE+C4octN+xokWCN7ubNci7Jye5MAAiek2ANaVGRlN5ZtzxIHP+UU9w7/61bRQzYJkb2eJb6\nesmBsHfQxcXiCdi3z3Xfl5e7w4ACRcL//I/7PCnJnWKYkSF36d5wQ0qKPPLzZfu990pOhHe4kP3e\nhw+LN8DbLMh6Ij75RHoW2JwDG3J48EE3J8KbkzBpkggHgOraekgqII8CqvvlUzU0HxLyIXUPTmwZ\nS3uXcv4zBRwoO8De0r0UVxeTlZDFe9e+x/QB02mJ225re5+LuDj/aZOhwg2taWus4QZFCQ8VCYof\n9u74SETChx/KnfyNISZvHD4sBmPs2KaNeCzW6K5dK8ukJDGsVgg050mwfP65iITycmlYc/XVUrkB\nIj7AXyTYkb0WO03RHjs9XRINrcH2hhdsKaZtSezFGPk94+L8RYJt8mNLCq1I6NMHvvMd8SysXi3V\nAt5wx/HH+x/fllN+/LEIAG/DIhtysKSmQu/eDqTsI2PSHji4ipiMPdSP/zskFHLNp0CO79HQA0qy\noSaVuvhkEnpkcNrg0xiYMpDslGzOyjmLfslBBiMEYdQoebSFxEQRCS2FG1pj8DXcoCjhoSKhi1JU\nJO7sN94I3TCmLbSHJ+GxxyQ7PphIWLhQyhQbG2HaNKm7D0ZhoRgFaxytSGgp3NC3L1x2mbQ/tmWH\nNnTxwQfyuSef7BpS61HIzZXcBJsz0LevW00RFyfLtDRXDHhzEOw5XX+9dCP8/vfl9YMPyt3vbbe5\nd8J2uJH1JMTEyPGtsfIOP4qKEo+I9zOgqUhIT5f3bd4s0yUtjU4jMSM+4vTbtpKfuJgNO4p4tLKC\n+59YD7cV8hTAeT2JqsuEdd+Ebefzwr+yeP25LP7xSBbUpGDnuL29P3Q5YaRJTBRh2ZrExZZISYE7\n7/Tv2qgoSlNUJHRR9u6Vmvlt29pXJATzJDzwgHzGNdeEd4yNG8UtH6w74urV4ka/9lppUexlzRq4\n+25YsEBE0EknSYMfEEORmuovEpKTm4qEzEwRKXfdBf/4h6y3XoncXCkzXLbMfU9xsRig3FzxGmzb\nJneoI0a4sxwmTBCXfmqqiISkJH+RYI//7W/DGWeIKKiqEtFRWCj5AtXV4jnwioSBA6Xc0JjgIgFc\nF7vXOxEoEkDO93BhI1FjX+f2d5ew8tBKdhTtYFfxLkyKYWLWdNg8gH6Jvfivqecwud9kBqcOZmTG\nSJ6aG8vNviS/M4bB2iSgxn/yY7BJikcLG0ZoTQlkSxgD99/ffueoKN0VFQldFGvEA5viHAnvv+9m\nyHtFwsKFYoTCEQl1dWKI6+vFyA4cCH/5Czz7rBjnkhIRCWPGyLnX17t/6F9+GV5/HR55RAzvDTe4\nIsHrSaiqEmM9Y4Z4LBxH/ujbEj+QToD33SeufetJAAmFWCZNkmS/LVtEdIwaJZ6ZPn3kYfMU1qwR\nz8OYMdJ/IDpaZh8EigRvIuKePSIS7D6lpWJoU1LEyMXGwk03idcDQouEmBj5PNsnwZ634ziU1JSw\np2QPe0v2YiblwaDXWTbkRQ5sGMTU/lO5YPgFXD3+aqb2n0psTCwF35Dj29JJizcp0SYu2udWJAS+\n52hiRUKwxEUrDForEhRFCY9jUiR84xtyJ3vxxR19Jm3HioP2FAnf/a773CsSysrCH2i0fbvbyGb3\nbhEJK1ZIF8GaGteQ2wTCqio3PmyNwG9/63oFBg+W41iRsHu3G2o47jgRHqWlbi6ANbY2l2DVKndS\nIMDf/iZGPD8fLrxQtn/+uZzz6NGyT+/eIhLWrXPft3y5/D433CC/x+9/H1okZGa6IsHmPJSWinHL\nynJzEeLi3KRDe97BphDGxclnnXBqGcd//w+c9OJcSmtKqayrdHfqAyT24dqez/PPH10R9NqEmnBo\nr0XPnvKwIsEa546eUOg9P5Bw0Y9/LP+2rHgJnAKpKEr7cEyKhPffFwPTHURCe1YhlJW5Bs973PLy\n8Aca2Z7/IAb95JPFYDY2ioAoLRUjZP/wV1a6IsF+tnWtp6fDD38IP/mJCATrSbAhhrFjZZmf74oE\n6xbPyZF1K1e62fzZ2WL4Z88Wr8gJJ0hnRjtEyY4Utp6ELVvc73LWWTBnjjy3596cJyE9XT7fushL\nS+X5LbdIg6VAgnkScstzeWLFE9R/bQ/E7mfl4OWs3l7KTVNuIicthwEpAxiUOoiBKQP54NXefPva\nnnzt2eDXpTmsJ8GKAXsuCQnSl8Hbr6EjOOkkScq0IiEzEx56yN1ujHiTVCQoSvtzTIoEOwa3KxOJ\ncENFhesFCPQkhCsSNm4UA+k4bnmdXW7eLIZ8wAB/kbBvn4Qaioul6Y+9g+/VC664QjL0s7JckWC9\nGjk5sjx8WBL8Skpcb4AxbjjhhBPE8D35pFQ5TJvmTt0bNEi8BCCJecnJrifBljp+9JEYKluJER0t\nhtWeR1GRrPPOC7AJh9Y1XlIiIqF//+AJgCmpjZBygGXF/+GFJZuorq9m/pfzOVR+iMbeo6GwP9mF\n17Lod7cyKLVpr+FxY2TZFoNuRUJg74CEBCkb7Wh+8xvx/IUqcYyJkf/PKhIUpf05ZkVC4JS9rkZ7\nhxsaG93xwOCKBNuBsSWRYPMCNmyQO/zycvEkNDa6cwU2b5Y76rFj/cMNL78syX4XXSR3/evXy/vS\n093ZBOCWQNpzsR4CG6/3hhtARMLLL4uHID1duisuWgRTprj7ZGe7A5X69hUBk5Pj35XwuOP8ywpB\nDJa3uiEtzXV933uvWwVhPQmVlSIYHMdhyZ4lvLf9PcpryymvLWdjwUY+jfoMbmvk+rcgPS6dxJ6J\nZKdk8/Y1bzNz6lB27IDJX4dBIUr2Jk+WOQ0nntj8dQpGcyKhMxAT43qNQm1XkaAokeGYFAn19Z3D\nk9DQIMlxbSkta+9wQ+BAJ3tcO6OgvFzGR8fHy524MfJobJQEwY0bJelw40Yxwnl54kHIzXV/602b\nxJDb5D17fNtkZ8sWqSQYMUIEhXe4D4ghrq0VzwG4IsEaZHtsy+TJ8PDD0rXRHuuMM/yPabsOxseL\nJ+DDD+Vz1qyR9T16NE0mBH+RUFTkf65ZfWso7LGZFzdu48MD2+DibZB0iLk9t3HfvRsB6JPYh4yE\nDJJ6JtE/uT/3nvhnCrYP4vZvTWFAin+5ihUazXUsNKbt5XxWDFhPSGcTCS1hE19VJChK+3PMiQTH\nEePcGUTCwoWSDFdUFLqpUCja25MQ6Cmw7ZmtS72iQrr3gRij5GQ3637fPvEgfPCBCIFrrxXD9vHH\nbqjh+ONdT4I3cbGy0p0TsGOHGPFrroFf/KKpcU5Lk6WdzeD1JDhOcE8CiPdg/Pjg39t6Kfr0EUNr\ncxqsJ8GWKAYSKBLS0h0qaiv5xaJf8MSKJ6iok42JMcnQfziUDiAn+lR+c/6tDO81nLNyzsKEWTJg\nxcGRtjUORWf3JLSEigRFiRzHnEiw4iCSImH1armjnj27+f0OHRIDV1vbegNg7/Tby5MQLJxQV+fe\npXu3f/ihGPDoaDGQtbXyh/oHP5DwwZgx8r0KClyRcPbZ8Mwz7t2+VyRYT0J9vQiBu+4SoeFtPQyu\nADhwQO7w4+Pldysrk8+tr/cXCaNGyT55eU29EhbrSQgceuQVCQBf5n3JF/u/YEfRDnYW72T3zJ38\nIymfBQ9WkN+vnPoBFSTd30jP6J787OSfcf7w8xnRawT5uzM57jgRA7Mfhu9ODX4ezeEt+YsEzSUu\ndgVUJChK5FCREAHmzYOXXmpZJHgbF7VWJETakwByXtaTUFXlti1ubPRvYgQyDvnBB+X52LHSlOjw\nYclLSEwUT4J9TyhPArh5CMES8KwRy8tz35+SIoLEVkR4RUJMjHzu55+7ZYeBeD0JIDkDqw+tZl3e\nOnqcu4NDo/Yzbe5qlh9YjsHQP7k/Oek5JNUMp2f5yfzX2Uk8/XgS/Xsn8oMbkpjafyqjM0d/dfwy\nz3VtqycgnHDDkRDoSbC/s4oERVFUJESA2tqm/fuDEc6chG3bpJ7/889dd7v9DO/SS02N5A089RRM\nDfPO1Zu06D2O9SR4GTnSLQ+Mi5M/zj//uTRBiokRw5uRIee2ebPUs9vJhCCG3Bqmqir/wT/e7xiI\nNWK5ua4BS072FwmB7588WX67QE9CWU0ZeRV5VCZVwYBKGrIreOizVTz2n8fYXrQdgOiJ/ajq2Z+R\nGaO4/aTbmTVqFnExYqmfjRVvR20W1C+Bc2+Aa4J0QvSOR27rqORIhxsCcxKiouR3bc3ApI7EigMV\nCYrS/qhIiAC2aVBjY/O5BtYwNycS1q0Tg7x7d3CREOy9Bw/K+9asCV8keD0JPXvK8b2eBBAvwm23\nSR7F2WfL65NPluz+Xr0kZ2HfPvEE2HyC9evFZe8VCSkprsGzbZEt4YoEa8BSUkTI2K6KgR6DFSpf\nLgAAIABJREFUSZMA00Bj6m7e2rqZw1WH2V64nQc+eYCqel+XpRvhDeDd93twyehLeOLiJ5gxcAab\nv0ygT5/giaVXXy2TJd96S35v65EIpD1EwtH2JIBUeXinUHZm1JOgKJFDRUIEqKmRRLqysuanzFnD\nHFhZ4KWgQJbeAT/2MyC4J8G69QPHFzeHVyRkZIjhu/XWpp0WZ8wQT8K550oOwF/+4k5OnDvX/S5e\nkXDBBf7zJVJTRUgkJMCuXbLONsQJlTsA7p1ubq5rlK0nwX5XKxJKa0r515p/8VjF03DXOv5QW8Mf\nfI2Gekb35IZJN3DF2CuIj4nnxQXxnH5SAjOnDSY2xrXkNvExFGPGwD//KecdSiTEtUO4IdI5CdHR\nkuPhFQkffdR1JiSqSFCUyKEiIQJYw11cHJ5IaM6TYO+yA8MXzYUbbNti78yC5igpcUWILfk7eFDy\nKhob/fe1d/pPPilLb4J+crJraKxIKC2VKoTkZLcrojd7frt49hk2TEIrzXkS4uPFM1NU5I4dTkmB\n4vJqduQVQVYRC3ct5p5/3U1hVSHRJpqLRsyi6vNr+cn1o7n4xNFkJWQRFxPnV1lw4k/C+50CGTXK\nbbgUSU9CpMMNIEJu2jT3dWAiZ2dGRYKiRA4VCRHAGv2W8hK8ImHnTpm2+Nhj/iEK60kIJRKCCYzW\nehK83QTHjZPQwJdfNhUI4Iqelqr3vOWLtlRx4ED/MsWEBCl7BOmPsG1b854EY0RslJTVEZWxl/e2\nb2frsDfYkvoYb+ypgx/Are/Ctcdfy+mDT+e84ecxMGUgtJBA2lZsG2cILRJiYlwvSWcNN4A0neqq\nqEhQlMihIiECWMMdGCIIxOYkVFfDJ5/A44/D737nfzfdkkgoKBAD9dZbYuDB9SR4RcKbb4oYCLxT\ndxwZQtTQIF6EDz8UY/3aa8HPubk7fS9JSXK8ujp/kbB+vetJiI8XkRAVJV0NX3jBPX5FbQVL9yyl\noLKATQWbKKkpYfPhzZTfsBkS9/JpVCPnPgM9U1Pos/XnnD5iCh+8kcaqD3NEGBwFhg2Tc09JaVqu\naTFGjHtVVef2JHRlVCQoSuQ4ZkVCJNsye8MNlmefhb/+1R0mBP6eBPuewPwEG24IlZOwfr0kCz74\noOQHJCc3FQkVFdLy+JFH4Oab/Y9TVOT+JikpYqSD9ScIVmLYHDZ58dAhf5EQH++2OE5IkLyNrJxc\ndme8hjlvM7cuPkBu5UFWH1pNUbV8gX5J/UiPT2dErxGk7r2Kwu1DOX1CDn//w1D+9rscXlkeRe9M\n6FcLA1NCnFAEiI2FIUNargKIjRWRcKQ5CSoSgqMiQVEixzErEo62J2HpUinFq6tzjaRXJNj3eMca\ng78noaJCqgsuvLCpqFi6VLLR33vPDTfYnIRdu8RjkJsrr/fulYqDQ4fc44NbChd4x9u3b+tFAjQV\nCSNHQt/sKt7Y8iFvbn2TXSfthtPXUZB8iH8V1zPg7BwOVAygX1I/bpl+C7PHzaZ/cn9S49wPnf4Q\nFK6AYRNgWC9I8SUuFhaG7oUQSSZMaNk42d/zSMMNkUpc7OqoSFCUyKEiIQIEEwk7d4qhPnjQ7fLn\nDTdYo9+cSFi7Fp54Qh52kI/9jG3bZLliRVNPws6dsszLg3/8Q0Ye//GP8Pvf+yer2TviwDvWzEwp\nw+zZM/y72WX7llE+9S0YWMov1x1g2ydfsrNuJ1VXV3HRfBiZMZKomCGw7mrGZA9gyWNX0yu+ZStv\nvRzeZkq2BLK5fIZI8fe/t5yfcaQiQT0JzaMiQVEih4qECBAs3GAT9Pbvd0VCa8INJSX+SYq23XFg\nrsKWLU0TF+1nHzrkhhsWLBDRsHix+14rEgKNWXKy5BgEu5MtqyljU8EmNhVsYmPBRtblrWN74XY2\nFmwkNjsLkjIpruvNmUPO5MbJN5KZkMmIXiOYPmA6l11meOUDmDEHeoV5lxzYDTA5WcRWXp7c1R9t\nwhEmR2rkj0biYldGRYKiRI5jTiTYXISj6UlobHT7AezfL96EDz8MLhK8noT6etfQFxf7iwQbSrAl\neJYtW8RgZmWJwGhsdD0J69aJCBk8GL74QtZ5+yAEEwne7nspKSIKFu1axK7iXSxYv4BP9n7y1b4D\nUwYyrvc4Zg6dyc9O/hlLHruGN16LZvEjwX8nKzpsOCIcrCfB20wJRDSdeWb4xzmaqCchsmjHRUWJ\nHMecSOiIcMOBA64I2L9fkhhvv90tOwwlEqwQyMgQj4G3J0JgWAKkQmDzZvEkTJsGS5ZIvN6KBNuT\n4OKLJYkxkCY5CaaBkSdtoSR7LdUnr6W2104GPvwGpTWl9IzuyaS+k3hq1lOM6z2O0ZmjSY71z3hM\n+Rr0aqYawn6eHaIUDoHhBvs6P79jchLCQUVCZFFPgqJEDhUJESAw3GDd/TExIhJs3bztVFhd7QoL\nb7jBhhqGDWsabvASHQ0rV0o+wpw5sm70aBEJRUXu51tspYPFliomJkKj08jcVU/AN9+HwYvYlFDI\nJiBmeH+SaofyvSnf46YpNzGs17AWf4fLLpNHKKyhb40nITDckOKpZuiuIkETF5tHRYKiRI5mJgt0\nTyIlEl57DR5+WJ4HehLsnfykSVKu6K0osPsH8yTY/YYObepJ8JKQINMObRdCgG98Q5Z79ohIGDNG\nXicmwqmnihfDJj+O9g0t3Dvgz0z820RufuNmohILSNjwfT647gPyb89n+pL9nLN3CQ/MfCAsgRAO\nR+JJsOEGb2fAjkhcDAfrAThST0Jb39/dUZGgKJFDRUIL7NrlP6UwFC++KJUD0NSTsG+fVAgMHy6e\nhMAxy6ESF+37hwzxz0kILEO0BnPsWFk+8ogIC4ArrpA/ntdfL6+zs8U4//WvcP/9AA6jJhTBpKdY\nkfUjRmSMYNH1i0h96SMGbP4fzso5i8yETP77v+H//b+Wf4fW0BZPQmC4YehQCZ9A5501EBsrhqyt\nRuzss+VadaVWyUcTFQmKEjk03NAC3/2u/HH+5z+b36+iwn+qY3KyW3lQVSWGfMAASRgM9AiEKoG0\nY5oHDJD15eVuhz9vVYM1mGlpcpwePVyBERcHixa559ZvcDnbC3OZeslhthfuwNx6N8+nb4fhMLL2\nmzx/5XyMMcTG+t+ZX3RReL9Xa7Du8yPxJADMny8lnSef3H7n1p7Exh6ZFyA9He68s/3Op7thRULM\nMffXTFEizzH33ypckXDHHXKXaqsLrJG1BhnEjV9ZKe2QrUhwHDHU2dnue6urxVhnZ4tXIbAiIVS4\nobxc8hfsqOL8fDE2Ni5vsQazur6aouoiykrLKK0p5c6/51GStpgHt+ey8eBO+MkWFiUfYvhf3feO\nzz6D7029j8fuG8KNF075avBRbGz4LZjbyrhxcMIJ/r9pSwTmJIB8/1/9qn3PrT2Ji9Okw0iingRF\niRzHrEhoqS3zG2/AxImuOJgzR+7Q//Uvd5+775bKhY8+ckWCPX6fPm4DJSsShg51hzlZYmL8Oy56\nww1lZWIUrbHOy5OGRn5tgE0DtYPe4+sLnuTVza9S1+ivfvoV9WNI2hAG9xrCFwvO5LLTR3DL9f3I\niM8gMyGT/sn9McbwvVP9mwIdDZFwwQXyaA2B4YauwJF6EpTmUZGgKJHjmBUJXk/Ct74F557rxu1B\nkgYrK+XOvqZGvAalpf7HOnjQdfuXl7v7grRIbmyU9TU1IhKG+fL9vJ6EXr2aDzckJ7sGsagIeqQU\nUjL8eehRRlRKHo1j57M5dS89D4/ngXMeYGTGSJJjk0mJTSE1NpXBaYOJMlE4Dhx+Am45Dc7Kafq7\nRAVkpyQlSR5FZ8OGQFKO4oyGI0VFQmRRkaAokUNFAhKzz8hwRUJjo5QfVla63oGGBqkUqK2Vu3mQ\nO3t7nIoK2WY9DzbJrLhYRIAdBmTJyJDPyMgInbhYUtZAzwGbeDt3Gcz5B69lHaJ65H4OR9fBkESc\nhnjYeAmnJNzAx7+c+lWoIBjGwAcfhP87zZ0rDZk6GzNmwKuv+ldydHaSkpqGiJT2Q5spKUrkaHV1\ngzHmVGPMq8aY/caYRmPMrIDtlxlj3jHGFPi2Hx/GMa/37dvgWzYaYypbe27hYI26t09BcbFr3O3r\nhgbXk1BcLPkADQ0yVtmSl+d2TbRLmzAYKBLi4iRRb8AAWT9+vCzT0/1FQllVDS9tfInb372d/03q\nza4Lx3HP6hugOpW0g5fTa/V9XLzlAPyuhEELDsHrj9Ofac0KhLYwebLkUHQ2oqKkmqGdv25Eue02\nmDevo8+i+6KeBEWJHG3xJCQCq4G/Ay+G2L4EeA6Y24rjlgAjAfvn32lm3zbj9SDU1UluQlWVv0iw\n/QmsJ6GhwW1fvGGDdDasrxdPgHV72+1WJPTu7b62IgEk5LB/v/RM+OQTiftX1zSQG/cJzFjJwqT5\nPLbgC9Li0sgp/g6xey5i7v0jmD5mACmj5A9h5gw5VrBMf6Xz0b+/m3yqtD8qEhQlcrRaJDiO8zbw\nNoAJcvvqOM4zvm2DcQ1+mId28lve7cgIFAk2ByCYSCgtbVoFsXGjLA8fFm9EebksrSfBVjR4PQk1\nNW4S4LBh8PHHcOMtpTROeYaX/rOM/PilVMXthLo46hpH8Nl3PuOEAScwa5bBGMjx5QaUlEi5oBUF\nwTL9FeVYQ0WCokSOzpSTkGSM2YWEQFYCP3ccZ0N7f0igSLCJh16RYJsdBXZGTEhwRYIdx2zDEoEN\nlIJ5EkqqS6gc+jbRp+znsjefYHvRdlLjppBWdDaDts9h8wfT6T8mmp8slgFQZWUSnrD9BIqLJa/B\nigT1JCiKigRFiSSdRSRsBuYAa4FU4HbgU2PMWMdxDrTnB3lLH+vqXKNuPQHgigPvqGeQPIIDvrOx\nIiHwuX1PSookKxYXQ3l9ETsy/s2Evz3A7obdxJ2bSEbCBF6d/Sr3/3QkW7b4Gic5Es6wx7TVDVYk\nVFdL0qT1IHTFckBFaW9UJChK5OgUIsFxnGXAMvvaGPMZsBH4LtBsm5wf//jHpAb04509ezazZ88O\nun+gJ8Ea9WDhhkDGjIFlvrMMJRJsuMH2GdhcvJb1J11JfdIOzsk8iw+u+4Ch6UO/SjSMi/MvgbSU\nlbl9EqKiRBzU1spxA8MN6klQjmVUJChK88yfP5/58+f7rSvxtu1thk4hEgJxHKfeGLMKGN7Svg8/\n/DCTJ08O+9htFQnR0TBihAxygtAiobC4AY57nls/+zeF16zl0cYd9GgcxZzKTcy9pulgpNhY/2ZK\nlrIyyXew3oL4eFckWHGgOQmKoiJBUVoi2I3zypUrmTJlSovvjfSApzZVKBhjooDxQBijlVpHa3IS\nvGRkSDLi4cMSsvAKg9xcYORrcOHNzO1xHFx5FcW1+WTmX8EZBfPp++I6+sYGn5xoRUIoT4JXJIB/\nx0UNNyiKigRFiSSt9iQYYxKRO3xbuTDUGDMBKHQcZ68xJh0YBAzw7TPaVwVxyHGcXN8x5gH7Hcf5\nue/1L5BwwzYgDbjDd4wnj+TLBcMrEurrQ3sSoqKkqZIlM9NtLlRQICIhNVVExksH/wxX/wjyR5NU\nOY6SBf/kjVXTufZlSKqADVWhe/fHxgYPN5SW+nsSvOOCNXFRUVy0mZKiRI62eBKmAquAFYin4EGk\nGuEe3/ZZvu2v+bbP923/rucY2YB3QHA68ASwAXgDSAJOdBxnUxvOr1nq6mQGg30eSiR469p79RJP\ngq1YyM+HdevgeF+bqJU1z8HGS+HRDYz98nnYP52ePSUnwZZAhmrLGxfnehJsJ0eAQ4dkGehJ0HCD\novijngRFiRytFgmO4yx2HCfKcZzogMcc3/Z5Ibbf6znGWXZ/3+vbHMfJcRwn3nGc/o7jXOw4ztr2\n+Yr+1NW5RtUrEqqr3Q6MZWXQ1yNhBg2SUIP1JOzYAcuX+4YTRdeSF70Sdp0BmCaJi4HNlALxhhu8\n+Ze2isIKgWDhhl69ZBmQt6koxxQqEhQlckQ6J6HTESgSvAmetrFSRYXrNQB48kn43e/cda+8IoLi\ngguAPmtojKqBfTNISnJFh/UkFBW5A56CYcMNNTXBRUIwT8LQoTB6NJx9Nrz1Fpx0Upt/DkXp8qhI\nUJTI0SmrGyJJME+CzT+orJQ79/Jyf5EwaZLs4zhi7BculO2jx9YRNeI9nIaemPyJpGbJ8WJiZP/U\nVDfBMZRIiItz8xG8kw2bEwlZWW5TJ233qxzrqEhQlMhxzHsSiovdFso2L8ErEuLi3DHKxoiBLq9o\nJPlbN5JwXzyNZ95F9KETSI6PJTFRPAc2/yAtzZ3pEConwYoAu78llEjw5i0oiqIiQVEiiYqEYvdu\n3I6FrqlxRYI1zpa9B6th1g3sSP0795xxD5lvvk/9v14lMVH2bWjwFwmWUJ4Em1cAbrihf38ZS+1d\n5/UkKIrioiJBUSLHMS8SCgvd8c2VlW57ZisSEhKgvrGery/4OtH3RsPd8TD+/3hq1tPcddpdZJSc\nDdVpJCa6x7V3++GIhIwM9/mUKTBjBowaJbkSPXtK6SWoSFCUUKhIUJTIcUzmJFgXfm2t5Azk5Mjr\nigo3PJCZCUTV4+R8xOXP/YU3t77JfWfdR3leJqOSZnDNpOMAt9LAKxKCeRJCGXevSJg6Fe66C668\nUl4PGOCGOjTcoCjBUZGgKJHjmBQJ1uDm50tDJSsSXn4ZTjsNwOH+nZfDL1/mAJBQMJxnLn+Gq8Zd\n1eR4ViSMGOFWR7Qm3OAVCVYAWBEzcKC7TT0JihIcbaakKJHjmBMJ9fXuHf/+/bIcMkSWf/oTfPwx\nMOYlluS/TMKy/2GoM5O1b037aiBTINXVsjz/fHjnHXk+aJAswxEJ3m6JgSLBhkG871eRoCj+qCdB\nUSLHMZ2TYEWC9SQA7NoFnH4Pp/U7n6yNd5FVOz2kQAD4z39kef75brLhHF+bqHBEgvfQVgA050nQ\ncIOi+KMiQVEixzEhEl580R3aVFfnGmwrErzGuDB6A/Rdy5zjv09CQsstjydOlKW3X8Hll8syLs41\n6uF4ADTcoCitR0WCokSOY0IkzJ4NCxbIczu7oUcPEQk9ekB6umfncf+G6lQuHHUeCQlNSyAD+egj\n3xRIRIysXesacmPcEsZQngRwkxNVJChK61GRoCiRo9vnJDiOVDHU1Mhrr0jYt09KHY0BYkvgiqth\n5Juw4kbSU2LJyfEPRQTD20q5Xz95eElLEy9GcyIhKUmmPlqRYDsvenMSNNygKMFRkaAokaPbioSP\nPoLp090/IHZEtFcklJTIHITSmlK47hzotQ1eepr4Hd8kOhqee+7Iz8PmJTTnAUhOFpFg97G9EQYP\ndvdRT4KiBMcOQdOR6YrS/nTLcENtLZxzjrj/7VyEYCIBILNvNZf++1Kie2+l7zuLYM31JMfLbX9U\nlBsKaCvhigRwvQQzZ8Lnn/t7JVQkKEpwJk+Gzz6DYcM6+kwUpfvRLT0JduxzZWVTkVBVJYY2ORkK\nCuvZdNzV5O/7jEU3vkvtmRM55xz3zqQ9SEuTz2umQOKrz7MiITpavCBeNNygKMExRjqVKorS/nRL\nT4LNP6ip8RcJhYVQViZu/PvuA87/EfsSX2XhlQs5dfCpXzU2am+R0Fw+Arh9Gqx3IxjqSVAURVGO\nNt3WkwAiEKxIqK2F7dvl+fDh0H/kIczm/+WOSQ9w0ciLADcXIBKehOaYOxcuuaT5csupU+HOO2H0\n6PY7N0VRFEVpjm4pEqwnwSsS6upg2zZ5PmwYPP3lc8RERXPHzDlfvS8SnoSZM91QRyjS0uCaa5rf\nJyEB7r+//c5LURRFUVqiW4oE60moqfFPWNy2TbwFySmNzFszjwtGXECveHdWc3y8GOP2FgkzZ7bf\n8RRFURTlaNGtcxICPQnbt0uo4cmVT7Lq0CpuPeHWJu/NzGxfkaAoiqIoXZVuKRKC5SRYT0Lv0dv4\n6bs/Zc7EOZyZc2aT944Y4Q5oUhRFUZRjmW4ZbghV3bBtu8Ouc66hT1IfHj7/4aDvff11twGToiiK\nohzLdEtzGKq6oShmA7Xmc14991VSYlOCvrelckVFURRFOVboluGGUDkJdcNfIM4kc+6wczvu5BRF\nURSli9CtRYI33FBdDc7oF5kQfxGxMdqRSFEURVFaotuIhIYGuP12Gf/sDTfYEsji6hLou4aJyed1\n3EkqiqIoShei2+QkbNkCf/wjjBolggH8ww0F0WsAGJE0uYPOUFEURVG6Ft3Gk/Dll7LctSt44mJx\n/Gqoj2VoivY1VhRFUZRw6DYiYd06We7aFTwnoSJ5FeSNIzGumSlKiqIoiqJ8RbcRCc16ElJ3U5O1\nDA5O0imKiqIoihIm3UYkrFsnc+W9noSS2C/5d8kP4dZhOBmbYNcZ9OzZoaepKIqiKF2GbpG4WFUl\ncxlmzIBly6C0FOi1lQ2nTiauNgk+/A2s+g5U9FZPgqIoiqKESbfwJBw4AI4DZ54py61bgXPuJLqq\nL3dE74el/w0VvQFUJCiKoihKmHQLkZCXJ8vp02W5svIVGPsi6Svux6mL99tXRYKiKIqihEe3EgmT\nJgHRNeSfcBNsmkXMpqu/qm6waE6CoiiKooRHtxAJ+fmStNi/P8QNWw5JebD4l9TVmiYiQT0JiqIo\nihIe3UIk5OVBRoaMeI4duRhqkuHQRL9mShYVCYqiKIoSHt1GJGRlyfPG7I9hzyngRKtIUBRFUZQj\noFuIhPx8yOrt8OgXj1KRuQR2nQ74d1y0aE6CoiiKooRHtxAJeXkQl72eW966hd6Vp8Hq/yImRsoh\nq6rc/aKj5aEoiqIoSsu0WiQYY041xrxqjNlvjGk0xswK2H6ZMeYdY0yBb/vxYR73SmPMRmNMlTFm\njTHma+GeU14eVPT5gNjoWC4sfxEqepOcLNvKy939NNSgKIqiKOHTFk9CIrAauBlwQmxfAtwRYnsT\njDEnAc8Cc4GJwCvAy8aYseG8Pz8f8pPf56Tsk+iTIX0RUlJkW1mZu5+KBEVRFEUJn1a3ZXYc523g\nbQBjjAmy/RnftsFAk+0h+CHwluM4D/le/9IYMxO4BREjIWlshLzaXRSZxVw/9E5iC2S9FQnl5VIe\n6Tiaj6AoiqIoraGz5CScCLwfsO4d3/pmWb1rNw03jScxOpXZ42aTkSHrvSIhIUGeqydBURRFUcKn\ns4iEvkBuwLpc3/pmufPN3xBV1Ycvvr2enPQcevWS9TYnoawMEhPluYoERVEURQmfLj8F8nCPVVzX\n93mGDhDXQTBPQmamPFeRoCiKoijh01lEwiGgT8C6Pr71zfM2rOn7CLM+mQfYaobZpKbOBqCiAgYP\nll01J0FRFEU51pg/fz7z58/3W1dSUhLWeyMtEsKqbgA+A84G/uJZN9O3vnnOh/uvepGvnZkOSDlk\nnz5uuKGxUXMSFEVRlGOX2bNnM3v2bL91K1euZMqUKS2+t9UiwRiTCAzHrVwYaoyZABQ6jrPXGJMO\nDAIG+PYZ7auCOOQ4Tq7vGPOA/Y7j/Nx3jD8DHxljbgPeAGYDU4AbWzyhhhh6JaR99TIjAy68EGbM\ncHdJSpKligRFURRFCZ+2JC5OBVYBKxBPwYPASuAe3/ZZvu2v+bbP923/rucY2XiSEh3H+Qy4GrgJ\n6cFwOXCJ4zgbWjybqkxiY91Ky+hoeP11mDrV3UUTFxVFURSl9bSlT8JimhEXjuPMA+a1cIyzgqx7\nAXihtedDZWbQXAOvILAiQXMSFEVRFCV8OksJZNupzAhq/L3r1JOgKIqiKK2n64uEKhUJiqIoihIJ\nur5IqAg/3KAiQVEURVHCp+uLhKpMevRourpHD4iXWU9kZclScxIURVEUJXy6vkgIkZMQFQWrV8PS\npXDddbJOPQmKoiiKEj6dpeNi26noE9JDMHKkPCor5bWKBEVRFEUJn67vSSgdEDTc4MVuV5GgKIqi\nKOHT5UVCdEMKUS18ixifv0RFgqIoiqKET5cXCS15EQCMkf00cVFRFEVRwqfLi4SYMLMqjjsORoyI\n7LkoiqIoSneiyycuhuNJAFi1KrLnoSiKoijdjS7vSQhXJCiKoiiK0jpUJCiKoiiKEhQVCYqiKIqi\nBKXLi4RwExcVRVEURWkdXV4kqCdBURRFUSKDigRFURRFUYKiIkFRFEVRlKCoSFAURVEUJSgqEhRF\nURRFCUqXFwla3aAoiqIokaHLiwT1JCiKoihKZOjyIkE9CYqiKIoSGbq8SFBPgqIoiqJEBhUJiqIo\niqIERUWCoiiKoihBUZGgKIqiKEpQurxI0MRFRVEURYkMXV4kqCdBURRFUSKDigRFURRFUYKiIkFR\nFEVRlKCoSFAURVEUJSgqEhRFURRFCUqXFwla3aAoiqIokaHLiwT1JCiKoihKZFCRoCiKoihKUFQk\nKIqiKIoSFBUJiqIoiqIEpcuLhOzsjj4DRVEURemeqEhQFEVRFCUoXV4kKJ2L+fPnd/QpKEHQ69L5\n0GvSOdHr4k+rRYIx5lRjzKvGmP3GmEZjzKwg+9xrjDlgjKk0xrxnjBnewjGv9x2rwbdsNMZUtvbc\nlI5H/4N1TvS6dD70mnRO9Lr40xZPQiKwGrgZcAI3GmN+BtwC3ARMByqAd4wxPVs4bgnQ1/MY3IZz\nUxRFURSlnWh1v0LHcd4G3gYwxpggu9wK/MZxnNd9+1wH5AKXAguaP7ST39rzURRFURQlMrRrToIx\nJgfxAnxg1zmOUwp8DpzYwtuTjDG7jDF7jDEvG2PGtue5KYqiKIrSOtp78kFfJASRG7A+17ctFJuB\nOcBaIBW4HfjUGDPWcZwDId4TB7Bx48YjOmGlfSkpKWHlypUdfRpKAHpdOh96TTonx8p18djOuOb2\nM47TJK0gbIwxjcCljuO86nt9IrAU6O84Tq5nv+eARsdxZod53BhgI/Cs4zi/CrHP1cD/tfnkFUVR\nFEX5luM4z4ba2N6ehEOAAfrg703oA6wK9yCO49QbY1YBzVVFvAN8C9gFVLf6TBVFURTZRCePAAAE\n0klEQVTl2CUOGILY0pC0q0hwHGenMeYQcDYSOsAYkwKcADwa7nGMMVHAeOCNZj7rMBBS/SiKoiiK\n0iyftrRDq0WCMSYRucO3lQ1DjTETgELHcfYCfwLuNsZsQ+7yfwPsA17xHGMesN9xnJ/7Xv8CWAZs\nA9KAO4BBwJOtPT9FURRFUdqHtngSpgKLkARFB3jQt34eMMdxnN8bYxKAxxGDvwT4muM4tZ5jZAMN\nntfpwBNIcmMRsAI40XGcTW04P0VRFEVR2oEjSlxUFEVRFKX7orMbFEVRFEUJiooERVEURVGC0iVF\ngjHmB8aYncaYKmPMMmPMtI4+p+5Kewz0MsbEGmMeNcYUGGPKjDHPG2N6H71v0b0wxvy3MeYLY0yp\nMSbXGPOSMWZkkP30uhxFjDHfM8asMcaU+B6fGmPOD9hHr0kHYoy50/d37KGA9XpdQtDlRIIx5ptI\nsuSvgEnAGmSAVGaHnlj3pT0Gev0JuBC4AjgN6A+8ENnT7tacCvwVKS0+B+gBvGuMibc76HXpEPYC\nPwMmA1OAD4FXjDFjQK9JR+O7mbwJsRne9XpdmsNxnC71QEol/+x5bZASyzs6+ty6+wNoBGYFrDsA\n/NjzOgWoAr7heV0DXObZZ5TvWNM7+jt1hweQ6fs9T9Hr0rkewGHgv/SadPh1SELa/5+FVOc95Nmm\n16WZR5fyJBhjeiAK3TtAygHep+UBUko7E+ZAr6lIqa13n83AHvSatRdpiJenEPS6dAaMMVHGmKuA\nBGQOjV6TjuVR4DXHcT70rtTr0jLt3ZY50mQC0QQfIDXq6J/OMU84A736ALW+/3ih9lHaiG9c+5+A\npY7jbPCt1uvSQRhjxgGfIS1vy5C7z82+uTZ6TToAn1ibiBj7QPT/Sgt0NZGgKIo/jwFjgZM7+kQU\nADYBE5Bptl8H/mmMOa1jT+nYxRgzEBHR5ziOU9fR59MV6VLhBqAA6dTYJ2B9H2S4lHJ08Q708uK9\nHoeAnr4ZHqH2UdqAMeYR4ALgDMdxDno26XXpIBzHqXccZ4fjOKscx7kLSZK7Fb0mHcUUIAtYaYyp\nM8bUAacDtxpjahFvgF6XZuhSIsGnBFcgA6SAr9ytZxPGoAqlfXEcZyfyn8R7PexAL3s9VgD1AfuM\nQmZzfHbUTrab4RMIlwBnOo6zx7tNr0unIgqI1WvSYbyPDAuciHh4JgDLgWeACY7j7ECvS7N0xXDD\nQ8DTxpgVwBfAj5HkoKc78qS6K0c60MtxnFJjzN+Bh4wxRUic9i/AJ47jfHFUv0w3wRjzGDAbmAVU\nGGPsXVCJ4zh2bLpel6OMMeY+4C0koS0ZGWV/OnCubxe9JkcZx3EqgA3edcaYCuCw4zgbfav0ujRH\nR5dXtOWB1OzvQspUPgOmdvQ5ddcH8keuEQnzeB9Pefb5NVJGVInMJh8ecIxYpK6/APkPthDo3dHf\nras+QlyPBuC6gP30uhzd6/IksMP3d+kQ8C5wll6TzvVA+lc8FLBOr0uIhw54UhRFURQlKF0qJ0FR\nFEVRlKOHigRFURRFUYKiIkFRFEVRlKCoSFAURVEUJSgqEhRFURRFCYqKBEVRFEVRgqIiQVEURVGU\noKhIUBRFURQlKCoSFEVRFEUJiooERVEURVGCoiJBURRFUZSg/H+CadyoSSXZUQAAAABJRU5ErkJg\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# initialize H2O GBM\n", "h2o_gbm_model = H2OGradientBoostingEstimator(\n", " ntrees = 10000,\n", " learn_rate = 0.005,\n", " sample_rate = 0.1, \n", " col_sample_rate = 0.8,\n", " max_depth = 5,\n", " nfolds = 3,\n", " keep_cross_validation_predictions=True,\n", " stopping_rounds = 10,\n", " seed = 12345)\n", "\n", "# execute training\n", "h2o_gbm_model.train(x=encoded_combined_nums,\n", " y='SalePrice',\n", " training_frame=train,\n", " validation_frame=valid)\n", "\n", "# print model information/create submission\n", "print(h2o_gbm_model)\n", "h2o_gbm_preds1_val = h2o_gbm_model.predict(valid)\n", "ranked_preds_plot('SalePrice', valid, h2o_gbm_preds1_val) # better validation error\n", "h2o_gbm_preds1_test = h2o_gbm_model.predict(test)\n", "gen_submission(h2o_gbm_preds1_test) # 0.15062 public leaderboard" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Train H2O XGBoost - very new!!" ] }, { "cell_type": "code", "execution_count": 194, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "xgboost Model Build progress: |███████████████████████████████████████████| 100%\n", "Model Details\n", "=============\n", "H2OXGBoostEstimator : XGBoost\n", "Model Key: XGBoost_model_python_1497530715156_42\n", "\n", "\n", "ModelMetricsRegression: xgboost\n", "** Reported on train data. **\n", "\n", "MSE: 0.00840358868692754\n", "RMSE: 0.09167108970077502\n", "MAE: 0.05488036133788087\n", "RMSLE: 0.007108057792476213\n", "Mean Residual Deviance: 0.00840358868692754\n", "\n", "ModelMetricsRegression: xgboost\n", "** Reported on validation data. **\n", "\n", "MSE: 0.020605834537669652\n", "RMSE: 0.1435473250801618\n", "MAE: 0.11459932348047726\n", "RMSLE: 0.011121763109013057\n", "Mean Residual Deviance: 0.020605834537669652\n", "\n", "ModelMetricsRegression: xgboost\n", "** Reported on cross-validation data. **\n", "\n", "MSE: 0.017285036067784806\n", "RMSE: 0.13147256773861538\n", "MAE: 0.08792207052895834\n", "RMSLE: 0.010168982730659084\n", "Mean Residual Deviance: 0.017285036067784806\n", "Cross-Validation Metrics Summary: \n" ] }, { "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", "
meansdcv_1_validcv_2_validcv_3_valid
mae0.08787870.00075030.08660270.08920050.0878330
mean_residual_deviance0.01724100.00157410.01856640.01905130.0141053
mse0.01724100.00157410.01856640.01905130.0141053
r20.88830150.00300240.88241320.89226440.8902271
residual_deviance0.01724100.00157410.01856640.01905130.0141053
rmse0.1310170.00614680.13625870.13802650.1187658
rmsle0.01012890.00051640.01057630.01071130.0090990
" ], "text/plain": [ " mean sd cv_1_valid cv_2_valid cv_3_valid\n", "---------------------- --------- ----------- ------------ ------------ ------------\n", "mae 0.0878787 0.000750285 0.0866027 0.0892005 0.087833\n", "mean_residual_deviance 0.017241 0.00157408 0.0185664 0.0190513 0.0141053\n", "mse 0.017241 0.00157408 0.0185664 0.0190513 0.0141053\n", "r2 0.888302 0.00300235 0.882413 0.892264 0.890227\n", "residual_deviance 0.017241 0.00157408 0.0185664 0.0190513 0.0141053\n", "rmse 0.131017 0.0061468 0.136259 0.138026 0.118766\n", "rmsle 0.0101289 0.000516397 0.0105763 0.0107113 0.00909901" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Scoring History: \n" ] }, { "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", "
timestampdurationnumber_of_treestraining_rmsetraining_maetraining_deviancevalidation_rmsevalidation_maevalidation_deviance
2017-06-15 17:05:02 5 min 50.591 sec0.011.539220811.5324996133.153616311.512946611.5056257132.5479390
2017-06-15 17:05:02 5 min 51.417 sec1.011.481972511.4752177131.835691711.455701311.4483439131.2330931
2017-06-15 17:05:02 5 min 51.437 sec2.011.425215011.4184267130.535538511.398947011.3915529129.9359924
2017-06-15 17:05:02 5 min 51.458 sec3.011.368889511.3620675129.251647411.342624511.3351937128.6551304
2017-06-15 17:05:02 5 min 51.479 sec4.011.312508411.3056524127.972846111.286246611.2787786127.3793613
------------------------------
2017-06-15 17:07:07 7 min 56.013 sec2934.00.09440300.05707180.00891190.14452200.11559290.0208866
2017-06-15 17:07:11 8 min 0.018 sec3015.00.09374200.05643780.00878760.14435550.11557530.0208385
2017-06-15 17:07:15 8 min 4.046 sec3096.00.09300690.05588110.00865030.14334800.11448980.0205486
2017-06-15 17:07:19 8 min 8.086 sec3178.00.09233690.05538750.00852610.14324910.11437040.0205203
2017-06-15 17:07:23 8 min 12.098 sec3260.00.09167110.05488040.00840360.14354730.11459930.0206058
" ], "text/plain": [ " timestamp duration number_of_trees training_rmse training_mae training_deviance validation_rmse validation_mae validation_deviance\n", "--- ------------------- ---------------- ----------------- ------------------- -------------------- -------------------- ------------------- ------------------- ---------------------\n", " 2017-06-15 17:05:02 5 min 50.591 sec 0.0 11.53922078459229 11.532499576305652 133.1536163155667 11.512946582875738 11.505625745569699 132.54793902015015\n", " 2017-06-15 17:05:02 5 min 51.417 sec 1.0 11.481972463980574 11.475217724537158 131.83569166360815 11.455701337489975 11.448343893801205 131.23309313376961\n", " 2017-06-15 17:05:02 5 min 51.437 sec 2.0 11.425215032111922 11.41842671701839 130.53553852999622 11.398946985752854 11.391552886282437 129.9359923840041\n", " 2017-06-15 17:05:02 5 min 51.458 sec 3.0 11.368889452544892 11.362067485546374 129.2516473841865 11.342624494141042 11.335193654810421 128.6551304150883\n", " 2017-06-15 17:05:02 5 min 51.479 sec 4.0 11.312508392481122 11.305652404522204 127.97284612995584 11.286246556740403 11.278778573786251 127.3793613395346\n", "--- --- --- --- --- --- --- --- --- ---\n", " 2017-06-15 17:07:07 7 min 56.013 sec 2934.0 0.09440304636653715 0.057071795353999026 0.008911935163282564 0.1445219798103446 0.11559287343409586 0.020886602648301653\n", " 2017-06-15 17:07:11 8 min 0.018 sec 3015.0 0.09374197694040097 0.056437849641203526 0.008787558240694668 0.1443554698747465 0.11557528551887064 0.020838501682758845\n", " 2017-06-15 17:07:15 8 min 4.046 sec 3096.0 0.09300692652368871 0.05588111439189473 0.008650288381382829 0.1433479879404267 0.11448975689790347 0.020548645646568713\n", " 2017-06-15 17:07:19 8 min 8.086 sec 3178.0 0.09233692702383729 0.05538754077343555 0.008526108092205454 0.14324911048599173 0.11437043748909612 0.02052030765502787\n", " 2017-06-15 17:07:23 8 min 12.098 sec 3260.0 0.09167108970077502 0.05488036133788087 0.00840358868692754 0.1435473250801618 0.11459932348047726 0.020605834537669652" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "Variable Importances: \n" ] }, { "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", "
variablerelative_importancescaled_importancepercentage
Neighborhood_Tencode|OverallCond87.01.00.0055042
MSSubClass|LotArea64.00.73563220.0040491
GrLivArea|OverallCond58.00.66666670.0036695
GrLivArea|MoSold55.00.63218390.0034797
LotArea|OverallCond55.00.63218390.0034797
------------
GarageArea|GarageCars1.00.01149430.0000633
KitchenAbvGr|OpenPorchSF1.00.01149430.0000633
BsmtFullBath|HalfBath1.00.01149430.0000633
KitchenAbvGr|2ndFlrSF1.00.01149430.0000633
FireplaceQu_Tencode|RoofMatl_Tencode1.00.01149430.0000633
" ], "text/plain": [ "variable relative_importance scaled_importance percentage\n", "------------------------------------ --------------------- -------------------- ---------------------\n", "Neighborhood_Tencode|OverallCond 87.0 1.0 0.005504238896621536\n", "MSSubClass|LotArea 64.0 0.735632183908046 0.004049095280273314\n", "GrLivArea|OverallCond 58.0 0.6666666666666666 0.0036694925977476906\n", "GrLivArea|MoSold 55.0 0.632183908045977 0.0034796912564848794\n", "LotArea|OverallCond 55.0 0.632183908045977 0.0034796912564848794\n", "--- --- --- ---\n", "GarageArea|GarageCars 1.0 0.011494252873563218 6.326711375427053e-05\n", "KitchenAbvGr|OpenPorchSF 1.0 0.011494252873563218 6.326711375427053e-05\n", "BsmtFullBath|HalfBath 1.0 0.011494252873563218 6.326711375427053e-05\n", "KitchenAbvGr|2ndFlrSF 1.0 0.011494252873563218 6.326711375427053e-05\n", "FireplaceQu_Tencode|RoofMatl_Tencode 1.0 0.011494252873563218 6.326711375427053e-05" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "\n", "xgboost prediction progress: |████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice predict
11.8494 11.977
12.2061 12.2466
11.6784 11.6435
11.7906 11.5821
11.9117 11.8348
11.9767 11.8584
11.8451 11.6547
11.1346 11.1257
11.914 11.7848
11.8845 11.8398
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "xgboost prediction progress: |████████████████████████████████████████████| 100%\n" ] }, { "data": { "image/png": "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\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# initialize XGB GBM\n", "h2o_xgb_model = H2OXGBoostEstimator(\n", " ntrees = 10000,\n", " learn_rate = 0.005,\n", " sample_rate = 0.1, \n", " col_sample_rate = 0.8,\n", " max_depth = 5,\n", " nfolds = 3,\n", " keep_cross_validation_predictions=True,\n", " stopping_rounds = 10,\n", " seed = 12345)\n", "\n", "# execute training \n", "h2o_xgb_model.train(x=encoded_combined_nums,\n", " y='SalePrice',\n", " training_frame=train,\n", " validation_frame=valid)\n", "\n", "# print model information/create submission\n", "print(h2o_xgb_model)\n", "h2o_xgb_preds1_val = h2o_xgb_model.predict(valid)\n", "ranked_preds_plot('SalePrice', valid, h2o_xgb_preds1_val) \n", "h2o_xgb_preds1_test = h2o_xgb_model.predict(test)\n", "gen_submission(h2o_xgb_preds1_test) # 0.16494 on public leaderboard" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create blend" ] }, { "cell_type": "code", "execution_count": 196, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Id SalePrice0 SalePrice1 SalePrice2 SalePrice3 \\\n", "0 1461 119081.074863 118567.449551 111874.076414 108450.225192 \n", "1 1462 150015.290818 144812.782606 152345.926941 147465.853860 \n", "2 1463 176503.892538 176940.325397 168826.171846 168720.909452 \n", "3 1464 185223.022830 185907.910302 185119.575064 177289.259208 \n", "4 1465 192687.508653 189991.207625 179623.201624 173343.132782 \n", "\n", " mean \n", "0 114493.206505 \n", "1 148659.963557 \n", "2 172747.824808 \n", "3 183384.941851 \n", "4 183911.262671 \n" ] } ], "source": [ "# create XGBoost blend\n", "pred_blender('../data',\n", " ['submission_Thu_Jun_15_15_58_31_2017.csv',\n", " 'submission_Thu_Jun_15_16_01_59_2017.csv',\n", " 'submission_Thu_Jun_15_16_27_42_2017.csv',\n", " 'submission_Thu_Jun_15_17_07_26_2017.csv'])\n", "# 0.14705 on public leaderboard" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Train H2O stacked ensemble" ] }, { "cell_type": "code", "execution_count": 195, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "stackedensemble Model Build progress: |███████████████████████████████████| 100%\n", "Model Details\n", "=============\n", "H2OStackedEnsembleEstimator : Stacked Ensemble\n", "Model Key: StackedEnsemble_model_python_1497530715156_43\n", "No model summary for this model\n", "\n", "\n", "ModelMetricsRegressionGLM: stackedensemble\n", "** Reported on train data. **\n", "\n", "MSE: 0.0037195951897363083\n", "RMSE: 0.06098848407475225\n", "MAE: 0.04305787492087697\n", "RMSLE: 0.004733690637851762\n", "R^2: 0.9760134192704554\n", "Mean Residual Deviance: 0.0037195951897363083\n", "Null degrees of freedom: 1000\n", "Residual degrees of freedom: 997\n", "Null deviance: 155.22490791465145\n", "Residual deviance: 3.7233147849260444\n", "AIC: -2749.019633542589\n", "\n", "ModelMetricsRegressionGLM: stackedensemble\n", "** Reported on validation data. **\n", "\n", "MSE: 0.016980254787969905\n", "RMSE: 0.13030830667294355\n", "MAE: 0.09925529488015572\n", "RMSLE: 0.01009315309820752\n", "R^2: 0.8992360780098589\n", "Mean Residual Deviance: 0.016980254787969905\n", "Null degrees of freedom: 458\n", "Residual degrees of freedom: 455\n", "Null deviance: 77.67997881888834\n", "Residual deviance: 7.793936947678187\n", "AIC: -558.1626052192096\n", "\n", "stackedensemble prediction progress: |████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice predict
11.8494 12.0728
12.2061 12.3159
11.6784 11.6697
11.7906 11.6571
11.9117 11.8351
11.9767 11.8878
11.8451 11.6624
11.1346 11.0312
11.914 11.7651
11.8845 11.8257
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "stackedensemble prediction progress: |████████████████████████████████████| 100%\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "stack = H2OStackedEnsembleEstimator(training_frame=train, \n", " validation_frame=valid, \n", " base_models=[rf_model1, ert_model1, \n", " h2o_gbm_model])\n", "\n", "stack.train(x=encoded_combined_nums,\n", " y='SalePrice',\n", " training_frame=train,\n", " validation_frame=valid)\n", "\n", "# print model information/create submission\n", "print(stack)\n", "stack_preds1_val = stack.predict(valid)\n", "ranked_preds_plot('SalePrice', valid, stack_preds1_val) \n", "stack_preds1_test = stack.predict(test)\n", "gen_submission(stack_preds1_test)\n", "# 0.14630 on public leaderboard" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Native XGBoost GBM model (for example)" ] }, { "cell_type": "code", "execution_count": 107, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0]\ttrain-rmse:0.394481\teval-rmse:0.386675\n", "Multiple eval metrics have been passed: 'eval-rmse' will be used for early stopping.\n", "\n", "Will train until eval-rmse hasn't improved in 50 rounds.\n", "[1]\ttrain-rmse:0.392907\teval-rmse:0.385508\n", "[2]\ttrain-rmse:0.391742\teval-rmse:0.384175\n", "[3]\ttrain-rmse:0.390294\teval-rmse:0.382704\n", "[4]\ttrain-rmse:0.388924\teval-rmse:0.381541\n", "[5]\ttrain-rmse:0.387633\teval-rmse:0.380214\n", "[6]\ttrain-rmse:0.386467\teval-rmse:0.379089\n", "[7]\ttrain-rmse:0.385057\teval-rmse:0.377412\n", "[8]\ttrain-rmse:0.383782\teval-rmse:0.376077\n", "[9]\ttrain-rmse:0.382354\teval-rmse:0.374844\n", "[10]\ttrain-rmse:0.381072\teval-rmse:0.373659\n", "[11]\ttrain-rmse:0.379447\teval-rmse:0.372006\n", "[12]\ttrain-rmse:0.377973\teval-rmse:0.370835\n", "[13]\ttrain-rmse:0.376468\teval-rmse:0.369565\n", "[14]\ttrain-rmse:0.374766\teval-rmse:0.368023\n", "[15]\ttrain-rmse:0.373482\teval-rmse:0.366748\n", "[16]\ttrain-rmse:0.372088\teval-rmse:0.365415\n", "[17]\ttrain-rmse:0.370921\teval-rmse:0.364812\n", "[18]\ttrain-rmse:0.369993\teval-rmse:0.364129\n", "[19]\ttrain-rmse:0.36835\teval-rmse:0.362271\n", "[20]\ttrain-rmse:0.367002\teval-rmse:0.361146\n", "[21]\ttrain-rmse:0.365714\teval-rmse:0.359928\n", "[22]\ttrain-rmse:0.364386\teval-rmse:0.358834\n", "[23]\ttrain-rmse:0.363024\teval-rmse:0.357736\n", "[24]\ttrain-rmse:0.361641\teval-rmse:0.356375\n", "[25]\ttrain-rmse:0.360185\teval-rmse:0.354883\n", "[26]\ttrain-rmse:0.358758\teval-rmse:0.353424\n", "[27]\ttrain-rmse:0.357644\teval-rmse:0.35236\n", "[28]\ttrain-rmse:0.3561\teval-rmse:0.350898\n", "[29]\ttrain-rmse:0.354605\teval-rmse:0.349334\n", "[30]\ttrain-rmse:0.353355\teval-rmse:0.348222\n", "[31]\ttrain-rmse:0.351953\teval-rmse:0.347099\n", "[32]\ttrain-rmse:0.350821\teval-rmse:0.34617\n", "[33]\ttrain-rmse:0.349655\teval-rmse:0.345241\n", "[34]\ttrain-rmse:0.34841\teval-rmse:0.34378\n", "[35]\ttrain-rmse:0.347057\teval-rmse:0.3424\n", "[36]\ttrain-rmse:0.345954\teval-rmse:0.341186\n", "[37]\ttrain-rmse:0.344484\teval-rmse:0.339761\n", "[38]\ttrain-rmse:0.343191\teval-rmse:0.338621\n", "[39]\ttrain-rmse:0.341834\teval-rmse:0.337323\n", "[40]\ttrain-rmse:0.340514\teval-rmse:0.336344\n", "[41]\ttrain-rmse:0.339287\teval-rmse:0.335169\n", "[42]\ttrain-rmse:0.338146\teval-rmse:0.334124\n", "[43]\ttrain-rmse:0.337179\teval-rmse:0.332952\n", "[44]\ttrain-rmse:0.335928\teval-rmse:0.331562\n", "[45]\ttrain-rmse:0.334645\teval-rmse:0.330224\n", "[46]\ttrain-rmse:0.333581\teval-rmse:0.329291\n", "[47]\ttrain-rmse:0.332334\teval-rmse:0.328114\n", "[48]\ttrain-rmse:0.3313\teval-rmse:0.327098\n", "[49]\ttrain-rmse:0.330103\teval-rmse:0.325924\n", "[50]\ttrain-rmse:0.329169\teval-rmse:0.324967\n", "[51]\ttrain-rmse:0.327828\teval-rmse:0.323649\n", "[52]\ttrain-rmse:0.326729\teval-rmse:0.322657\n", "[53]\ttrain-rmse:0.325602\teval-rmse:0.321635\n", "[54]\ttrain-rmse:0.324531\teval-rmse:0.320718\n", "[55]\ttrain-rmse:0.323367\teval-rmse:0.319721\n", "[56]\ttrain-rmse:0.32213\teval-rmse:0.318554\n", "[57]\ttrain-rmse:0.321197\teval-rmse:0.317656\n", "[58]\ttrain-rmse:0.320148\teval-rmse:0.316663\n", "[59]\ttrain-rmse:0.318972\teval-rmse:0.315537\n", "[60]\ttrain-rmse:0.317966\teval-rmse:0.314584\n", "[61]\ttrain-rmse:0.317116\teval-rmse:0.313679\n", "[62]\ttrain-rmse:0.316027\teval-rmse:0.312611\n", "[63]\ttrain-rmse:0.315021\teval-rmse:0.31169\n", "[64]\ttrain-rmse:0.314082\teval-rmse:0.310879\n", "[65]\ttrain-rmse:0.312947\teval-rmse:0.309758\n", "[66]\ttrain-rmse:0.312146\teval-rmse:0.309094\n", "[67]\ttrain-rmse:0.310966\teval-rmse:0.308016\n", "[68]\ttrain-rmse:0.309951\teval-rmse:0.307145\n", "[69]\ttrain-rmse:0.308693\teval-rmse:0.306213\n", "[70]\ttrain-rmse:0.307669\teval-rmse:0.304855\n", "[71]\ttrain-rmse:0.306661\teval-rmse:0.303947\n", "[72]\ttrain-rmse:0.305579\teval-rmse:0.302887\n", "[73]\ttrain-rmse:0.30454\teval-rmse:0.302028\n", "[74]\ttrain-rmse:0.303384\teval-rmse:0.300886\n", "[75]\ttrain-rmse:0.302557\teval-rmse:0.300095\n", "[76]\ttrain-rmse:0.301678\teval-rmse:0.299309\n", "[77]\ttrain-rmse:0.300654\teval-rmse:0.298313\n", "[78]\ttrain-rmse:0.29969\teval-rmse:0.297333\n", "[79]\ttrain-rmse:0.298653\teval-rmse:0.296232\n", "[80]\ttrain-rmse:0.29771\teval-rmse:0.295339\n", "[81]\ttrain-rmse:0.29677\teval-rmse:0.294592\n", "[82]\ttrain-rmse:0.295788\teval-rmse:0.293556\n", "[83]\ttrain-rmse:0.294856\teval-rmse:0.292755\n", "[84]\ttrain-rmse:0.293827\teval-rmse:0.291844\n", "[85]\ttrain-rmse:0.292828\teval-rmse:0.290974\n", "[86]\ttrain-rmse:0.291856\teval-rmse:0.290023\n", "[87]\ttrain-rmse:0.290942\teval-rmse:0.289289\n", "[88]\ttrain-rmse:0.289931\teval-rmse:0.288403\n", "[89]\ttrain-rmse:0.288876\teval-rmse:0.287558\n", "[90]\ttrain-rmse:0.288038\teval-rmse:0.286839\n", "[91]\ttrain-rmse:0.287023\teval-rmse:0.285803\n", "[92]\ttrain-rmse:0.286174\teval-rmse:0.285082\n", "[93]\ttrain-rmse:0.28521\teval-rmse:0.284306\n", "[94]\ttrain-rmse:0.284174\teval-rmse:0.283435\n", "[95]\ttrain-rmse:0.283309\teval-rmse:0.282843\n", "[96]\ttrain-rmse:0.282311\teval-rmse:0.281995\n", "[97]\ttrain-rmse:0.28136\teval-rmse:0.281121\n", "[98]\ttrain-rmse:0.280641\teval-rmse:0.279872\n", "[99]\ttrain-rmse:0.279617\teval-rmse:0.27891\n", "[100]\ttrain-rmse:0.278514\teval-rmse:0.277978\n", "[101]\ttrain-rmse:0.277729\teval-rmse:0.277252\n", "[102]\ttrain-rmse:0.277085\teval-rmse:0.276726\n", "[103]\ttrain-rmse:0.276109\teval-rmse:0.275851\n", "[104]\ttrain-rmse:0.275228\teval-rmse:0.275101\n", "[105]\ttrain-rmse:0.274252\teval-rmse:0.274194\n", "[106]\ttrain-rmse:0.273419\teval-rmse:0.273546\n", "[107]\ttrain-rmse:0.27278\teval-rmse:0.272938\n", "[108]\ttrain-rmse:0.271689\teval-rmse:0.271799\n", "[109]\ttrain-rmse:0.270753\teval-rmse:0.270933\n", "[110]\ttrain-rmse:0.269808\teval-rmse:0.270018\n", "[111]\ttrain-rmse:0.268751\teval-rmse:0.268814\n", "[112]\ttrain-rmse:0.2679\teval-rmse:0.268106\n", "[113]\ttrain-rmse:0.267224\teval-rmse:0.267608\n", "[114]\ttrain-rmse:0.266638\teval-rmse:0.267288\n", "[115]\ttrain-rmse:0.265662\teval-rmse:0.266006\n", "[116]\ttrain-rmse:0.264807\teval-rmse:0.265085\n", "[117]\ttrain-rmse:0.263956\teval-rmse:0.264114\n", "[118]\ttrain-rmse:0.263285\teval-rmse:0.263777\n", "[119]\ttrain-rmse:0.262444\teval-rmse:0.263158\n", "[120]\ttrain-rmse:0.261842\teval-rmse:0.262426\n", "[121]\ttrain-rmse:0.261068\teval-rmse:0.261821\n", "[122]\ttrain-rmse:0.260404\teval-rmse:0.261211\n", "[123]\ttrain-rmse:0.259732\teval-rmse:0.260533\n", "[124]\ttrain-rmse:0.258933\teval-rmse:0.259943\n", "[125]\ttrain-rmse:0.257944\teval-rmse:0.258987\n", "[126]\ttrain-rmse:0.257288\teval-rmse:0.258446\n", "[127]\ttrain-rmse:0.256666\teval-rmse:0.257901\n", "[128]\ttrain-rmse:0.255969\teval-rmse:0.257132\n", "[129]\ttrain-rmse:0.255062\teval-rmse:0.256245\n", "[130]\ttrain-rmse:0.254296\teval-rmse:0.255642\n", "[131]\ttrain-rmse:0.253697\teval-rmse:0.255297\n", "[132]\ttrain-rmse:0.252992\teval-rmse:0.254598\n", "[133]\ttrain-rmse:0.252244\teval-rmse:0.25383\n", "[134]\ttrain-rmse:0.251445\teval-rmse:0.253113\n", "[135]\ttrain-rmse:0.250598\teval-rmse:0.252351\n", "[136]\ttrain-rmse:0.249889\teval-rmse:0.251718\n", "[137]\ttrain-rmse:0.249237\teval-rmse:0.251024\n", "[138]\ttrain-rmse:0.248384\teval-rmse:0.2502\n", "[139]\ttrain-rmse:0.247657\teval-rmse:0.249506\n", "[140]\ttrain-rmse:0.246924\teval-rmse:0.248873\n", "[141]\ttrain-rmse:0.24613\teval-rmse:0.24819\n", "[142]\ttrain-rmse:0.24543\teval-rmse:0.24754\n", "[143]\ttrain-rmse:0.244576\teval-rmse:0.246903\n", "[144]\ttrain-rmse:0.243904\teval-rmse:0.246201\n", "[145]\ttrain-rmse:0.243302\teval-rmse:0.245704\n", "[146]\ttrain-rmse:0.242711\teval-rmse:0.245259\n", "[147]\ttrain-rmse:0.241985\teval-rmse:0.244758\n", "[148]\ttrain-rmse:0.241176\teval-rmse:0.243974\n", "[149]\ttrain-rmse:0.240489\teval-rmse:0.243233\n", "[150]\ttrain-rmse:0.239991\teval-rmse:0.242703\n", "[151]\ttrain-rmse:0.239281\teval-rmse:0.241943\n", "[152]\ttrain-rmse:0.238588\teval-rmse:0.241358\n", "[153]\ttrain-rmse:0.237822\teval-rmse:0.240559\n", "[154]\ttrain-rmse:0.236981\teval-rmse:0.239921\n", "[155]\ttrain-rmse:0.236364\teval-rmse:0.239298\n", "[156]\ttrain-rmse:0.235579\teval-rmse:0.238473\n", "[157]\ttrain-rmse:0.234594\teval-rmse:0.23756\n", "[158]\ttrain-rmse:0.233983\teval-rmse:0.237068\n", "[159]\ttrain-rmse:0.233418\teval-rmse:0.236585\n", "[160]\ttrain-rmse:0.232673\teval-rmse:0.235971\n", "[161]\ttrain-rmse:0.23201\teval-rmse:0.235364\n", "[162]\ttrain-rmse:0.231192\teval-rmse:0.234618\n", "[163]\ttrain-rmse:0.230762\teval-rmse:0.234389\n", "[164]\ttrain-rmse:0.230095\teval-rmse:0.233727\n", "[165]\ttrain-rmse:0.229522\teval-rmse:0.233286\n", "[166]\ttrain-rmse:0.228767\teval-rmse:0.232476\n", "[167]\ttrain-rmse:0.228206\teval-rmse:0.231826\n", "[168]\ttrain-rmse:0.227761\teval-rmse:0.231384\n", "[169]\ttrain-rmse:0.227161\teval-rmse:0.230829\n", "[170]\ttrain-rmse:0.226492\teval-rmse:0.230101\n", "[171]\ttrain-rmse:0.225764\teval-rmse:0.229369\n", "[172]\ttrain-rmse:0.225242\teval-rmse:0.229163\n", "[173]\ttrain-rmse:0.224389\teval-rmse:0.228337\n", "[174]\ttrain-rmse:0.223694\teval-rmse:0.227707\n", "[175]\ttrain-rmse:0.223284\teval-rmse:0.227453\n", "[176]\ttrain-rmse:0.222745\teval-rmse:0.22701\n", "[177]\ttrain-rmse:0.222067\teval-rmse:0.226363\n", "[178]\ttrain-rmse:0.221403\teval-rmse:0.22577\n", "[179]\ttrain-rmse:0.22079\teval-rmse:0.22522\n", "[180]\ttrain-rmse:0.220261\teval-rmse:0.224891\n", "[181]\ttrain-rmse:0.219611\teval-rmse:0.224217\n", "[182]\ttrain-rmse:0.218869\teval-rmse:0.223282\n", "[183]\ttrain-rmse:0.218293\teval-rmse:0.222731\n", "[184]\ttrain-rmse:0.217692\teval-rmse:0.222241\n", "[185]\ttrain-rmse:0.217051\teval-rmse:0.221572\n", "[186]\ttrain-rmse:0.216656\teval-rmse:0.221219\n", "[187]\ttrain-rmse:0.215919\teval-rmse:0.22053\n", "[188]\ttrain-rmse:0.215219\teval-rmse:0.219859\n", "[189]\ttrain-rmse:0.2146\teval-rmse:0.21931\n", "[190]\ttrain-rmse:0.214007\teval-rmse:0.218876\n", "[191]\ttrain-rmse:0.2135\teval-rmse:0.218387\n", "[192]\ttrain-rmse:0.212812\teval-rmse:0.217761\n", "[193]\ttrain-rmse:0.212145\teval-rmse:0.217161\n", "[194]\ttrain-rmse:0.211639\teval-rmse:0.216655\n", "[195]\ttrain-rmse:0.21104\teval-rmse:0.216083\n", "[196]\ttrain-rmse:0.210304\teval-rmse:0.215584\n", "[197]\ttrain-rmse:0.2095\teval-rmse:0.214969\n", "[198]\ttrain-rmse:0.208902\teval-rmse:0.214352\n", "[199]\ttrain-rmse:0.208245\teval-rmse:0.213788\n", "[200]\ttrain-rmse:0.207601\teval-rmse:0.213234\n", "[201]\ttrain-rmse:0.207219\teval-rmse:0.212918\n", "[202]\ttrain-rmse:0.206697\teval-rmse:0.213126\n", "[203]\ttrain-rmse:0.205964\teval-rmse:0.212401\n", "[204]\ttrain-rmse:0.205391\teval-rmse:0.211967\n", "[205]\ttrain-rmse:0.204886\teval-rmse:0.211686\n", "[206]\ttrain-rmse:0.204225\teval-rmse:0.211103\n", "[207]\ttrain-rmse:0.20364\teval-rmse:0.21063\n", "[208]\ttrain-rmse:0.202969\teval-rmse:0.21002\n", "[209]\ttrain-rmse:0.202294\teval-rmse:0.209401\n", "[210]\ttrain-rmse:0.201831\teval-rmse:0.209045\n", "[211]\ttrain-rmse:0.201443\teval-rmse:0.208717\n", "[212]\ttrain-rmse:0.200972\teval-rmse:0.208218\n", "[213]\ttrain-rmse:0.200571\teval-rmse:0.207886\n", "[214]\ttrain-rmse:0.199984\teval-rmse:0.207263\n", "[215]\ttrain-rmse:0.199415\teval-rmse:0.206828\n", "[216]\ttrain-rmse:0.198832\teval-rmse:0.206183\n", "[217]\ttrain-rmse:0.198166\teval-rmse:0.205559\n", "[218]\ttrain-rmse:0.197734\teval-rmse:0.205127\n", "[219]\ttrain-rmse:0.197314\teval-rmse:0.204675\n", "[220]\ttrain-rmse:0.196808\teval-rmse:0.204207\n", "[221]\ttrain-rmse:0.196255\teval-rmse:0.203911\n", "[222]\ttrain-rmse:0.19563\teval-rmse:0.204065\n", "[223]\ttrain-rmse:0.195141\teval-rmse:0.203558\n", "[224]\ttrain-rmse:0.194392\teval-rmse:0.202828\n", "[225]\ttrain-rmse:0.194008\teval-rmse:0.202405\n", "[226]\ttrain-rmse:0.193534\teval-rmse:0.201922\n", "[227]\ttrain-rmse:0.193002\teval-rmse:0.201499\n", "[228]\ttrain-rmse:0.192568\teval-rmse:0.201082\n", "[229]\ttrain-rmse:0.192141\teval-rmse:0.200722\n", "[230]\ttrain-rmse:0.191581\teval-rmse:0.200278\n", "[231]\ttrain-rmse:0.191023\teval-rmse:0.199795\n", "[232]\ttrain-rmse:0.190541\teval-rmse:0.199274\n", "[233]\ttrain-rmse:0.190036\teval-rmse:0.198812\n", "[234]\ttrain-rmse:0.189626\teval-rmse:0.19849\n", "[235]\ttrain-rmse:0.189134\teval-rmse:0.197919\n", "[236]\ttrain-rmse:0.188646\teval-rmse:0.197486\n", "[237]\ttrain-rmse:0.188232\teval-rmse:0.197153\n", "[238]\ttrain-rmse:0.18769\teval-rmse:0.196935\n", "[239]\ttrain-rmse:0.187098\teval-rmse:0.196511\n", "[240]\ttrain-rmse:0.186806\teval-rmse:0.196237\n", "[241]\ttrain-rmse:0.186088\teval-rmse:0.195657\n", "[242]\ttrain-rmse:0.185737\teval-rmse:0.19532\n", "[243]\ttrain-rmse:0.185319\teval-rmse:0.195058\n", "[244]\ttrain-rmse:0.184983\teval-rmse:0.194682\n", "[245]\ttrain-rmse:0.184452\teval-rmse:0.19422\n", "[246]\ttrain-rmse:0.184093\teval-rmse:0.194016\n", "[247]\ttrain-rmse:0.183593\teval-rmse:0.193575\n", "[248]\ttrain-rmse:0.183066\teval-rmse:0.19319\n", "[249]\ttrain-rmse:0.182633\teval-rmse:0.192895\n", "[250]\ttrain-rmse:0.182111\teval-rmse:0.192507\n", "[251]\ttrain-rmse:0.181815\teval-rmse:0.192424\n", "[252]\ttrain-rmse:0.181383\teval-rmse:0.192064\n", "[253]\ttrain-rmse:0.18083\teval-rmse:0.191663\n", "[254]\ttrain-rmse:0.180286\teval-rmse:0.1912\n", "[255]\ttrain-rmse:0.179843\teval-rmse:0.190705\n", "[256]\ttrain-rmse:0.179379\teval-rmse:0.190336\n", "[257]\ttrain-rmse:0.179051\teval-rmse:0.190123\n", "[258]\ttrain-rmse:0.178549\teval-rmse:0.189605\n", "[259]\ttrain-rmse:0.178155\teval-rmse:0.18931\n", "[260]\ttrain-rmse:0.177854\teval-rmse:0.189048\n", "[261]\ttrain-rmse:0.177506\teval-rmse:0.188698\n", "[262]\ttrain-rmse:0.176938\teval-rmse:0.18831\n", "[263]\ttrain-rmse:0.176564\teval-rmse:0.18797\n", "[264]\ttrain-rmse:0.176136\teval-rmse:0.187684\n", "[265]\ttrain-rmse:0.175722\teval-rmse:0.187304\n", "[266]\ttrain-rmse:0.175334\teval-rmse:0.18697\n", "[267]\ttrain-rmse:0.174871\teval-rmse:0.186276\n", "[268]\ttrain-rmse:0.174558\teval-rmse:0.186019\n", "[269]\ttrain-rmse:0.174056\teval-rmse:0.185649\n", "[270]\ttrain-rmse:0.173557\teval-rmse:0.185127\n", "[271]\ttrain-rmse:0.173123\teval-rmse:0.18479\n", "[272]\ttrain-rmse:0.172673\teval-rmse:0.184421\n", "[273]\ttrain-rmse:0.172224\teval-rmse:0.184008\n", "[274]\ttrain-rmse:0.171723\teval-rmse:0.183665\n", "[275]\ttrain-rmse:0.171374\teval-rmse:0.18331\n", "[276]\ttrain-rmse:0.170814\teval-rmse:0.182781\n", "[277]\ttrain-rmse:0.170279\teval-rmse:0.182293\n", "[278]\ttrain-rmse:0.169984\teval-rmse:0.182029\n", "[279]\ttrain-rmse:0.169582\teval-rmse:0.181702\n", "[280]\ttrain-rmse:0.169159\teval-rmse:0.181291\n", "[281]\ttrain-rmse:0.168798\teval-rmse:0.181035\n", "[282]\ttrain-rmse:0.168416\teval-rmse:0.180674\n", "[283]\ttrain-rmse:0.168125\teval-rmse:0.180558\n", "[284]\ttrain-rmse:0.167756\teval-rmse:0.180339\n", "[285]\ttrain-rmse:0.167336\teval-rmse:0.180048\n", "[286]\ttrain-rmse:0.167083\teval-rmse:0.179816\n", "[287]\ttrain-rmse:0.166665\teval-rmse:0.179532\n", "[288]\ttrain-rmse:0.166338\teval-rmse:0.179327\n", "[289]\ttrain-rmse:0.165875\teval-rmse:0.179011\n", "[290]\ttrain-rmse:0.165549\teval-rmse:0.178669\n", "[291]\ttrain-rmse:0.165018\teval-rmse:0.178122\n", "[292]\ttrain-rmse:0.16458\teval-rmse:0.177798\n", "[293]\ttrain-rmse:0.164186\teval-rmse:0.177518\n", "[294]\ttrain-rmse:0.163807\teval-rmse:0.1772\n", "[295]\ttrain-rmse:0.163491\teval-rmse:0.177112\n", "[296]\ttrain-rmse:0.163171\teval-rmse:0.176818\n", "[297]\ttrain-rmse:0.162773\teval-rmse:0.176513\n", "[298]\ttrain-rmse:0.1623\teval-rmse:0.176132\n", "[299]\ttrain-rmse:0.16188\teval-rmse:0.175785\n", "[300]\ttrain-rmse:0.16144\teval-rmse:0.175553\n", "[301]\ttrain-rmse:0.160995\teval-rmse:0.175275\n", "[302]\ttrain-rmse:0.160583\teval-rmse:0.175019\n", "[303]\ttrain-rmse:0.160237\teval-rmse:0.174684\n", "[304]\ttrain-rmse:0.159896\teval-rmse:0.174392\n", "[305]\ttrain-rmse:0.159489\teval-rmse:0.174033\n", "[306]\ttrain-rmse:0.159195\teval-rmse:0.173848\n", "[307]\ttrain-rmse:0.158922\teval-rmse:0.173677\n", "[308]\ttrain-rmse:0.158683\teval-rmse:0.173541\n", "[309]\ttrain-rmse:0.158494\teval-rmse:0.173395\n", "[310]\ttrain-rmse:0.158231\teval-rmse:0.17306\n", "[311]\ttrain-rmse:0.157852\teval-rmse:0.172753\n", "[312]\ttrain-rmse:0.157518\teval-rmse:0.172628\n", "[313]\ttrain-rmse:0.157185\teval-rmse:0.17243\n", "[314]\ttrain-rmse:0.156943\teval-rmse:0.172291\n", "[315]\ttrain-rmse:0.156535\teval-rmse:0.172582\n", "[316]\ttrain-rmse:0.156\teval-rmse:0.172263\n", "[317]\ttrain-rmse:0.155802\teval-rmse:0.172136\n", "[318]\ttrain-rmse:0.155433\teval-rmse:0.171909\n", "[319]\ttrain-rmse:0.155167\teval-rmse:0.171661\n", "[320]\ttrain-rmse:0.154667\teval-rmse:0.171265\n", "[321]\ttrain-rmse:0.154277\teval-rmse:0.171043\n", "[322]\ttrain-rmse:0.153912\teval-rmse:0.170828\n", "[323]\ttrain-rmse:0.153595\teval-rmse:0.170529\n", "[324]\ttrain-rmse:0.153324\teval-rmse:0.170327\n", "[325]\ttrain-rmse:0.152869\teval-rmse:0.170015\n", "[326]\ttrain-rmse:0.152562\teval-rmse:0.169781\n", "[327]\ttrain-rmse:0.15231\teval-rmse:0.169533\n", "[328]\ttrain-rmse:0.152029\teval-rmse:0.169213\n", "[329]\ttrain-rmse:0.151521\teval-rmse:0.169013\n", "[330]\ttrain-rmse:0.151228\teval-rmse:0.168837\n", "[331]\ttrain-rmse:0.151056\teval-rmse:0.168656\n", "[332]\ttrain-rmse:0.15059\teval-rmse:0.168267\n", "[333]\ttrain-rmse:0.150314\teval-rmse:0.168191\n", "[334]\ttrain-rmse:0.150043\teval-rmse:0.168014\n", "[335]\ttrain-rmse:0.149844\teval-rmse:0.167889\n", "[336]\ttrain-rmse:0.149452\teval-rmse:0.1676\n", "[337]\ttrain-rmse:0.149204\teval-rmse:0.167412\n", "[338]\ttrain-rmse:0.148955\teval-rmse:0.167212\n", "[339]\ttrain-rmse:0.148778\teval-rmse:0.167153\n", "[340]\ttrain-rmse:0.14853\teval-rmse:0.166938\n", "[341]\ttrain-rmse:0.148137\teval-rmse:0.166613\n", "[342]\ttrain-rmse:0.147883\teval-rmse:0.16638\n", "[343]\ttrain-rmse:0.147647\teval-rmse:0.16633\n", "[344]\ttrain-rmse:0.147371\teval-rmse:0.166127\n", "[345]\ttrain-rmse:0.146946\teval-rmse:0.165776\n", "[346]\ttrain-rmse:0.146615\teval-rmse:0.16565\n", "[347]\ttrain-rmse:0.146241\teval-rmse:0.165504\n", "[348]\ttrain-rmse:0.14598\teval-rmse:0.165506\n", "[349]\ttrain-rmse:0.14554\teval-rmse:0.165107\n", "[350]\ttrain-rmse:0.14536\teval-rmse:0.165028\n", "[351]\ttrain-rmse:0.145093\teval-rmse:0.164845\n", "[352]\ttrain-rmse:0.144754\teval-rmse:0.1646\n", "[353]\ttrain-rmse:0.1445\teval-rmse:0.164496\n", "[354]\ttrain-rmse:0.144246\teval-rmse:0.164325\n", "[355]\ttrain-rmse:0.144018\teval-rmse:0.164068\n", "[356]\ttrain-rmse:0.143749\teval-rmse:0.163849\n", "[357]\ttrain-rmse:0.143409\teval-rmse:0.163556\n", "[358]\ttrain-rmse:0.143103\teval-rmse:0.163381\n", "[359]\ttrain-rmse:0.14306\teval-rmse:0.16332\n", "[360]\ttrain-rmse:0.142791\teval-rmse:0.16303\n", "[361]\ttrain-rmse:0.142506\teval-rmse:0.162953\n", "[362]\ttrain-rmse:0.142228\teval-rmse:0.162734\n", "[363]\ttrain-rmse:0.142042\teval-rmse:0.162535\n", "[364]\ttrain-rmse:0.141633\teval-rmse:0.162326\n", "[365]\ttrain-rmse:0.14146\teval-rmse:0.162281\n", "[366]\ttrain-rmse:0.141299\teval-rmse:0.162184\n", "[367]\ttrain-rmse:0.141089\teval-rmse:0.162097\n", "[368]\ttrain-rmse:0.140731\teval-rmse:0.161788\n", "[369]\ttrain-rmse:0.140605\teval-rmse:0.161698\n", "[370]\ttrain-rmse:0.140563\teval-rmse:0.161675\n", "[371]\ttrain-rmse:0.140315\teval-rmse:0.161509\n", "[372]\ttrain-rmse:0.140061\teval-rmse:0.161334\n", "[373]\ttrain-rmse:0.139837\teval-rmse:0.161167\n", "[374]\ttrain-rmse:0.139704\teval-rmse:0.16111\n", "[375]\ttrain-rmse:0.139529\teval-rmse:0.161023\n", "[376]\ttrain-rmse:0.139278\teval-rmse:0.160643\n", "[377]\ttrain-rmse:0.139158\teval-rmse:0.160901\n", "[378]\ttrain-rmse:0.138959\teval-rmse:0.160707\n", "[379]\ttrain-rmse:0.138735\teval-rmse:0.160791\n", "[380]\ttrain-rmse:0.138516\teval-rmse:0.160677\n", "[381]\ttrain-rmse:0.138364\teval-rmse:0.160594\n", "[382]\ttrain-rmse:0.138088\teval-rmse:0.160389\n", "[383]\ttrain-rmse:0.137753\teval-rmse:0.160159\n", "[384]\ttrain-rmse:0.137465\teval-rmse:0.160024\n", "[385]\ttrain-rmse:0.13723\teval-rmse:0.159941\n", "[386]\ttrain-rmse:0.136904\teval-rmse:0.159606\n", "[387]\ttrain-rmse:0.136745\teval-rmse:0.159475\n", "[388]\ttrain-rmse:0.136484\teval-rmse:0.159277\n", "[389]\ttrain-rmse:0.136277\teval-rmse:0.159096\n", "[390]\ttrain-rmse:0.135982\teval-rmse:0.158869\n", "[391]\ttrain-rmse:0.135789\teval-rmse:0.158631\n", "[392]\ttrain-rmse:0.135594\teval-rmse:0.15849\n", "[393]\ttrain-rmse:0.135333\teval-rmse:0.158381\n", "[394]\ttrain-rmse:0.135089\teval-rmse:0.158392\n", "[395]\ttrain-rmse:0.13494\teval-rmse:0.158262\n", "[396]\ttrain-rmse:0.134744\teval-rmse:0.158041\n", "[397]\ttrain-rmse:0.134584\teval-rmse:0.158028\n", "[398]\ttrain-rmse:0.134423\teval-rmse:0.158167\n", "[399]\ttrain-rmse:0.134139\teval-rmse:0.157943\n", "[400]\ttrain-rmse:0.133877\teval-rmse:0.157822\n", "[401]\ttrain-rmse:0.133678\teval-rmse:0.157755\n", "[402]\ttrain-rmse:0.133478\teval-rmse:0.157586\n", "[403]\ttrain-rmse:0.133268\teval-rmse:0.15736\n", "[404]\ttrain-rmse:0.133069\teval-rmse:0.157199\n", "[405]\ttrain-rmse:0.132771\teval-rmse:0.157159\n", "[406]\ttrain-rmse:0.132469\teval-rmse:0.156936\n", "[407]\ttrain-rmse:0.132315\teval-rmse:0.156781\n", "[408]\ttrain-rmse:0.132094\teval-rmse:0.156556\n", "[409]\ttrain-rmse:0.132016\teval-rmse:0.156513\n", "[410]\ttrain-rmse:0.131691\teval-rmse:0.156306\n", "[411]\ttrain-rmse:0.131499\teval-rmse:0.156183\n", "[412]\ttrain-rmse:0.131374\teval-rmse:0.156187\n", "[413]\ttrain-rmse:0.131085\teval-rmse:0.15601\n", "[414]\ttrain-rmse:0.130915\teval-rmse:0.155848\n", "[415]\ttrain-rmse:0.130704\teval-rmse:0.155646\n", "[416]\ttrain-rmse:0.130662\teval-rmse:0.155593\n", "[417]\ttrain-rmse:0.130444\teval-rmse:0.155481\n", "[418]\ttrain-rmse:0.130333\teval-rmse:0.15536\n", "[419]\ttrain-rmse:0.130169\teval-rmse:0.155195\n", "[420]\ttrain-rmse:0.13004\teval-rmse:0.155122\n", "[421]\ttrain-rmse:0.129892\teval-rmse:0.155023\n", "[422]\ttrain-rmse:0.129731\teval-rmse:0.154872\n", "[423]\ttrain-rmse:0.129607\teval-rmse:0.154748\n", "[424]\ttrain-rmse:0.129414\teval-rmse:0.154543\n", "[425]\ttrain-rmse:0.129257\teval-rmse:0.154369\n", "[426]\ttrain-rmse:0.129131\teval-rmse:0.154272\n", "[427]\ttrain-rmse:0.128965\teval-rmse:0.154133\n", "[428]\ttrain-rmse:0.128865\teval-rmse:0.154043\n", "[429]\ttrain-rmse:0.128711\teval-rmse:0.153937\n", "[430]\ttrain-rmse:0.128574\teval-rmse:0.153877\n", "[431]\ttrain-rmse:0.128424\teval-rmse:0.153756\n", "[432]\ttrain-rmse:0.128118\teval-rmse:0.153566\n", "[433]\ttrain-rmse:0.127965\teval-rmse:0.153421\n", "[434]\ttrain-rmse:0.127893\teval-rmse:0.153453\n", "[435]\ttrain-rmse:0.127761\teval-rmse:0.153385\n", "[436]\ttrain-rmse:0.127633\teval-rmse:0.153391\n", "[437]\ttrain-rmse:0.127315\teval-rmse:0.153171\n", "[438]\ttrain-rmse:0.127177\teval-rmse:0.153046\n", "[439]\ttrain-rmse:0.126931\teval-rmse:0.153031\n", "[440]\ttrain-rmse:0.126691\teval-rmse:0.152968\n", "[441]\ttrain-rmse:0.12634\teval-rmse:0.152688\n", "[442]\ttrain-rmse:0.12625\teval-rmse:0.152596\n", "[443]\ttrain-rmse:0.126122\teval-rmse:0.152505\n", "[444]\ttrain-rmse:0.125816\teval-rmse:0.152187\n", "[445]\ttrain-rmse:0.125774\teval-rmse:0.152276\n", "[446]\ttrain-rmse:0.125564\teval-rmse:0.152024\n", "[447]\ttrain-rmse:0.125243\teval-rmse:0.151735\n", "[448]\ttrain-rmse:0.125057\teval-rmse:0.151566\n", "[449]\ttrain-rmse:0.124992\teval-rmse:0.151462\n", "[450]\ttrain-rmse:0.124733\teval-rmse:0.151442\n", "[451]\ttrain-rmse:0.124602\teval-rmse:0.151362\n", "[452]\ttrain-rmse:0.12447\teval-rmse:0.151229\n", "[453]\ttrain-rmse:0.124246\teval-rmse:0.1511\n", "[454]\ttrain-rmse:0.124123\teval-rmse:0.150938\n", "[455]\ttrain-rmse:0.124022\teval-rmse:0.150817\n", "[456]\ttrain-rmse:0.123892\teval-rmse:0.150699\n", "[457]\ttrain-rmse:0.123705\teval-rmse:0.150455\n", "[458]\ttrain-rmse:0.123578\teval-rmse:0.150334\n", "[459]\ttrain-rmse:0.123398\teval-rmse:0.150242\n", "[460]\ttrain-rmse:0.12324\teval-rmse:0.150169\n", "[461]\ttrain-rmse:0.122954\teval-rmse:0.149939\n", "[462]\ttrain-rmse:0.122851\teval-rmse:0.149865\n", "[463]\ttrain-rmse:0.122645\teval-rmse:0.149748\n", "[464]\ttrain-rmse:0.122589\teval-rmse:0.149675\n", "[465]\ttrain-rmse:0.122474\teval-rmse:0.149602\n", "[466]\ttrain-rmse:0.122319\teval-rmse:0.149373\n", "[467]\ttrain-rmse:0.122154\teval-rmse:0.149204\n", "[468]\ttrain-rmse:0.12195\teval-rmse:0.149024\n", "[469]\ttrain-rmse:0.121752\teval-rmse:0.148861\n", "[470]\ttrain-rmse:0.121626\teval-rmse:0.148889\n", "[471]\ttrain-rmse:0.121489\teval-rmse:0.148792\n", "[472]\ttrain-rmse:0.121255\teval-rmse:0.148589\n", "[473]\ttrain-rmse:0.121121\teval-rmse:0.148444\n", "[474]\ttrain-rmse:0.120946\teval-rmse:0.148394\n", "[475]\ttrain-rmse:0.120697\teval-rmse:0.148288\n", "[476]\ttrain-rmse:0.12049\teval-rmse:0.148033\n", "[477]\ttrain-rmse:0.120329\teval-rmse:0.14796\n", "[478]\ttrain-rmse:0.120295\teval-rmse:0.147929\n", "[479]\ttrain-rmse:0.120184\teval-rmse:0.147767\n", "[480]\ttrain-rmse:0.120032\teval-rmse:0.147619\n", "[481]\ttrain-rmse:0.11984\teval-rmse:0.147502\n", "[482]\ttrain-rmse:0.119673\teval-rmse:0.147376\n", "[483]\ttrain-rmse:0.119579\teval-rmse:0.147348\n", "[484]\ttrain-rmse:0.119478\teval-rmse:0.147249\n", "[485]\ttrain-rmse:0.119414\teval-rmse:0.147149\n", "[486]\ttrain-rmse:0.119218\teval-rmse:0.147043\n", "[487]\ttrain-rmse:0.11912\teval-rmse:0.146987\n", "[488]\ttrain-rmse:0.119034\teval-rmse:0.146885\n", "[489]\ttrain-rmse:0.118873\teval-rmse:0.146844\n", "[490]\ttrain-rmse:0.118794\teval-rmse:0.146816\n", "[491]\ttrain-rmse:0.118743\teval-rmse:0.146762\n", "[492]\ttrain-rmse:0.118562\teval-rmse:0.146661\n", "[493]\ttrain-rmse:0.118451\teval-rmse:0.1467\n", "[494]\ttrain-rmse:0.118341\teval-rmse:0.146641\n", "[495]\ttrain-rmse:0.118206\teval-rmse:0.146555\n", "[496]\ttrain-rmse:0.117945\teval-rmse:0.146471\n", "[497]\ttrain-rmse:0.117758\teval-rmse:0.146342\n", "[498]\ttrain-rmse:0.117566\teval-rmse:0.146357\n", "[499]\ttrain-rmse:0.117368\teval-rmse:0.146228\n", "[500]\ttrain-rmse:0.11728\teval-rmse:0.146136\n", "[501]\ttrain-rmse:0.117073\teval-rmse:0.146065\n", "[502]\ttrain-rmse:0.116956\teval-rmse:0.146011\n", "[503]\ttrain-rmse:0.116815\teval-rmse:0.146464\n", "[504]\ttrain-rmse:0.116575\teval-rmse:0.146433\n", "[505]\ttrain-rmse:0.116472\teval-rmse:0.146343\n", "[506]\ttrain-rmse:0.116388\teval-rmse:0.146276\n", "[507]\ttrain-rmse:0.116378\teval-rmse:0.146238\n", "[508]\ttrain-rmse:0.116252\teval-rmse:0.14617\n", "[509]\ttrain-rmse:0.116142\teval-rmse:0.146131\n", "[510]\ttrain-rmse:0.116041\teval-rmse:0.146065\n", "[511]\ttrain-rmse:0.115969\teval-rmse:0.145975\n", "[512]\ttrain-rmse:0.115936\teval-rmse:0.145975\n", "[513]\ttrain-rmse:0.11573\teval-rmse:0.14586\n", "[514]\ttrain-rmse:0.115568\teval-rmse:0.145789\n", "[515]\ttrain-rmse:0.115476\teval-rmse:0.145689\n", "[516]\ttrain-rmse:0.115368\teval-rmse:0.145562\n", "[517]\ttrain-rmse:0.115295\teval-rmse:0.145648\n", "[518]\ttrain-rmse:0.115257\teval-rmse:0.145591\n", "[519]\ttrain-rmse:0.115182\teval-rmse:0.14555\n", "[520]\ttrain-rmse:0.115126\teval-rmse:0.145519\n", "[521]\ttrain-rmse:0.115056\teval-rmse:0.145621\n", "[522]\ttrain-rmse:0.114988\teval-rmse:0.145566\n", "[523]\ttrain-rmse:0.114891\teval-rmse:0.145856\n", "[524]\ttrain-rmse:0.114771\teval-rmse:0.14573\n", "[525]\ttrain-rmse:0.114747\teval-rmse:0.145673\n", "[526]\ttrain-rmse:0.114637\teval-rmse:0.145607\n", "[527]\ttrain-rmse:0.114588\teval-rmse:0.145545\n", "[528]\ttrain-rmse:0.114558\teval-rmse:0.145445\n", "[529]\ttrain-rmse:0.114427\teval-rmse:0.145382\n", "[530]\ttrain-rmse:0.114339\teval-rmse:0.145249\n", "[531]\ttrain-rmse:0.114175\teval-rmse:0.145292\n", "[532]\ttrain-rmse:0.114021\teval-rmse:0.145265\n", "[533]\ttrain-rmse:0.113901\teval-rmse:0.145122\n", "[534]\ttrain-rmse:0.113783\teval-rmse:0.145031\n", "[535]\ttrain-rmse:0.113633\teval-rmse:0.145001\n", "[536]\ttrain-rmse:0.113533\teval-rmse:0.144934\n", "[537]\ttrain-rmse:0.113343\teval-rmse:0.144816\n", "[538]\ttrain-rmse:0.113327\teval-rmse:0.144808\n", "[539]\ttrain-rmse:0.113217\teval-rmse:0.144654\n", "[540]\ttrain-rmse:0.113099\teval-rmse:0.144636\n", "[541]\ttrain-rmse:0.113048\teval-rmse:0.144828\n", "[542]\ttrain-rmse:0.112952\teval-rmse:0.144827\n", "[543]\ttrain-rmse:0.112878\teval-rmse:0.144805\n", "[544]\ttrain-rmse:0.112809\teval-rmse:0.144779\n", "[545]\ttrain-rmse:0.112673\teval-rmse:0.144648\n", "[546]\ttrain-rmse:0.112586\teval-rmse:0.144766\n", "[547]\ttrain-rmse:0.112439\teval-rmse:0.144733\n", "[548]\ttrain-rmse:0.112347\teval-rmse:0.144637\n", "[549]\ttrain-rmse:0.112195\teval-rmse:0.144598\n", "[550]\ttrain-rmse:0.112144\teval-rmse:0.144626\n", "[551]\ttrain-rmse:0.112114\teval-rmse:0.14463\n", "[552]\ttrain-rmse:0.112016\teval-rmse:0.144566\n", "[553]\ttrain-rmse:0.111966\teval-rmse:0.144499\n", "[554]\ttrain-rmse:0.111843\teval-rmse:0.144386\n", "[555]\ttrain-rmse:0.111739\teval-rmse:0.144338\n", "[556]\ttrain-rmse:0.111649\teval-rmse:0.144307\n", "[557]\ttrain-rmse:0.111562\teval-rmse:0.144261\n", "[558]\ttrain-rmse:0.111407\teval-rmse:0.144164\n", "[559]\ttrain-rmse:0.111236\teval-rmse:0.144079\n", "[560]\ttrain-rmse:0.111126\teval-rmse:0.144041\n", "[561]\ttrain-rmse:0.111034\teval-rmse:0.143921\n", "[562]\ttrain-rmse:0.110926\teval-rmse:0.143885\n", "[563]\ttrain-rmse:0.110829\teval-rmse:0.143875\n", "[564]\ttrain-rmse:0.110734\teval-rmse:0.14381\n", "[565]\ttrain-rmse:0.110676\teval-rmse:0.143759\n", "[566]\ttrain-rmse:0.110535\teval-rmse:0.143624\n", "[567]\ttrain-rmse:0.110482\teval-rmse:0.143682\n", "[568]\ttrain-rmse:0.110409\teval-rmse:0.143583\n", "[569]\ttrain-rmse:0.110237\teval-rmse:0.143482\n", "[570]\ttrain-rmse:0.110103\teval-rmse:0.143321\n", "[571]\ttrain-rmse:0.110034\teval-rmse:0.143294\n", "[572]\ttrain-rmse:0.10991\teval-rmse:0.143211\n", "[573]\ttrain-rmse:0.109771\teval-rmse:0.143052\n", "[574]\ttrain-rmse:0.109669\teval-rmse:0.14306\n", "[575]\ttrain-rmse:0.109596\teval-rmse:0.142977\n", "[576]\ttrain-rmse:0.109569\teval-rmse:0.142938\n", "[577]\ttrain-rmse:0.109533\teval-rmse:0.142894\n", "[578]\ttrain-rmse:0.109463\teval-rmse:0.142906\n", "[579]\ttrain-rmse:0.109248\teval-rmse:0.142885\n", "[580]\ttrain-rmse:0.109176\teval-rmse:0.142963\n", "[581]\ttrain-rmse:0.109082\teval-rmse:0.142891\n", "[582]\ttrain-rmse:0.108984\teval-rmse:0.142851\n", "[583]\ttrain-rmse:0.108891\teval-rmse:0.14286\n", "[584]\ttrain-rmse:0.108859\teval-rmse:0.142708\n", "[585]\ttrain-rmse:0.108789\teval-rmse:0.142678\n", "[586]\ttrain-rmse:0.108692\teval-rmse:0.142658\n", "[587]\ttrain-rmse:0.108568\teval-rmse:0.142618\n", "[588]\ttrain-rmse:0.108482\teval-rmse:0.142567\n", "[589]\ttrain-rmse:0.108449\teval-rmse:0.14246\n", "[590]\ttrain-rmse:0.108344\teval-rmse:0.142397\n", "[591]\ttrain-rmse:0.108251\teval-rmse:0.142355\n", "[592]\ttrain-rmse:0.108193\teval-rmse:0.142306\n", "[593]\ttrain-rmse:0.108109\teval-rmse:0.142399\n", "[594]\ttrain-rmse:0.107955\teval-rmse:0.142319\n", "[595]\ttrain-rmse:0.107865\teval-rmse:0.14229\n", "[596]\ttrain-rmse:0.107835\teval-rmse:0.142314\n", "[597]\ttrain-rmse:0.107782\teval-rmse:0.14222\n", "[598]\ttrain-rmse:0.10768\teval-rmse:0.142201\n", "[599]\ttrain-rmse:0.107564\teval-rmse:0.142174\n", "[600]\ttrain-rmse:0.107516\teval-rmse:0.141989\n", "[601]\ttrain-rmse:0.107391\teval-rmse:0.141991\n", "[602]\ttrain-rmse:0.107289\teval-rmse:0.142024\n", "[603]\ttrain-rmse:0.1072\teval-rmse:0.142113\n", "[604]\ttrain-rmse:0.107088\teval-rmse:0.141963\n", "[605]\ttrain-rmse:0.106992\teval-rmse:0.141821\n", "[606]\ttrain-rmse:0.106925\teval-rmse:0.141791\n", "[607]\ttrain-rmse:0.106764\teval-rmse:0.141796\n", "[608]\ttrain-rmse:0.106651\teval-rmse:0.141696\n", "[609]\ttrain-rmse:0.10651\teval-rmse:0.141679\n", "[610]\ttrain-rmse:0.106401\teval-rmse:0.141745\n", "[611]\ttrain-rmse:0.106305\teval-rmse:0.141658\n", "[612]\ttrain-rmse:0.106288\teval-rmse:0.141636\n", "[613]\ttrain-rmse:0.106187\teval-rmse:0.14194\n", "[614]\ttrain-rmse:0.106097\teval-rmse:0.141845\n", "[615]\ttrain-rmse:0.106084\teval-rmse:0.14188\n", "[616]\ttrain-rmse:0.106031\teval-rmse:0.141804\n", "[617]\ttrain-rmse:0.10596\teval-rmse:0.141718\n", "[618]\ttrain-rmse:0.105883\teval-rmse:0.141726\n", "[619]\ttrain-rmse:0.105853\teval-rmse:0.141776\n", "[620]\ttrain-rmse:0.105803\teval-rmse:0.141633\n", "[621]\ttrain-rmse:0.105669\teval-rmse:0.141557\n", "[622]\ttrain-rmse:0.105629\teval-rmse:0.141493\n", "[623]\ttrain-rmse:0.105601\teval-rmse:0.141506\n", "[624]\ttrain-rmse:0.105571\teval-rmse:0.141459\n", "[625]\ttrain-rmse:0.105474\teval-rmse:0.141404\n", "[626]\ttrain-rmse:0.105382\teval-rmse:0.141386\n", "[627]\ttrain-rmse:0.105306\teval-rmse:0.141382\n", "[628]\ttrain-rmse:0.105209\teval-rmse:0.141274\n", "[629]\ttrain-rmse:0.105219\teval-rmse:0.141172\n", "[630]\ttrain-rmse:0.105172\teval-rmse:0.141226\n", "[631]\ttrain-rmse:0.105031\teval-rmse:0.141163\n", "[632]\ttrain-rmse:0.104908\teval-rmse:0.141172\n", "[633]\ttrain-rmse:0.104834\teval-rmse:0.141126\n", "[634]\ttrain-rmse:0.104872\teval-rmse:0.141139\n", "[635]\ttrain-rmse:0.104806\teval-rmse:0.141144\n", "[636]\ttrain-rmse:0.10475\teval-rmse:0.141107\n", "[637]\ttrain-rmse:0.104636\teval-rmse:0.141012\n", "[638]\ttrain-rmse:0.104567\teval-rmse:0.141082\n", "[639]\ttrain-rmse:0.10446\teval-rmse:0.141039\n", "[640]\ttrain-rmse:0.104388\teval-rmse:0.141024\n", "[641]\ttrain-rmse:0.104277\teval-rmse:0.141048\n", "[642]\ttrain-rmse:0.104261\teval-rmse:0.140937\n", "[643]\ttrain-rmse:0.104144\teval-rmse:0.140909\n", "[644]\ttrain-rmse:0.104094\teval-rmse:0.140992\n", "[645]\ttrain-rmse:0.104149\teval-rmse:0.141214\n", "[646]\ttrain-rmse:0.104089\teval-rmse:0.141283\n", "[647]\ttrain-rmse:0.104003\teval-rmse:0.141447\n", "[648]\ttrain-rmse:0.103862\teval-rmse:0.141344\n", "[649]\ttrain-rmse:0.103816\teval-rmse:0.141324\n", "[650]\ttrain-rmse:0.103834\teval-rmse:0.141365\n", "[651]\ttrain-rmse:0.103766\teval-rmse:0.141213\n", "[652]\ttrain-rmse:0.103679\teval-rmse:0.141129\n", "[653]\ttrain-rmse:0.103565\teval-rmse:0.140977\n", "[654]\ttrain-rmse:0.103459\teval-rmse:0.14097\n", "[655]\ttrain-rmse:0.103446\teval-rmse:0.140966\n", "[656]\ttrain-rmse:0.103404\teval-rmse:0.141164\n", "[657]\ttrain-rmse:0.103367\teval-rmse:0.141134\n", "[658]\ttrain-rmse:0.103298\teval-rmse:0.141071\n", "[659]\ttrain-rmse:0.103226\teval-rmse:0.141008\n", "[660]\ttrain-rmse:0.10319\teval-rmse:0.140994\n", "[661]\ttrain-rmse:0.103127\teval-rmse:0.140801\n", "[662]\ttrain-rmse:0.103033\teval-rmse:0.140784\n", "[663]\ttrain-rmse:0.102972\teval-rmse:0.140863\n", "[664]\ttrain-rmse:0.102954\teval-rmse:0.140875\n", "[665]\ttrain-rmse:0.102889\teval-rmse:0.140851\n", "[666]\ttrain-rmse:0.102771\teval-rmse:0.140823\n", "[667]\ttrain-rmse:0.102686\teval-rmse:0.140786\n", "[668]\ttrain-rmse:0.10271\teval-rmse:0.140723\n", "[669]\ttrain-rmse:0.102705\teval-rmse:0.140671\n", "[670]\ttrain-rmse:0.102602\teval-rmse:0.140618\n", "[671]\ttrain-rmse:0.102572\teval-rmse:0.140549\n", "[672]\ttrain-rmse:0.102523\teval-rmse:0.140514\n", "[673]\ttrain-rmse:0.102513\teval-rmse:0.140485\n", "[674]\ttrain-rmse:0.102448\teval-rmse:0.140066\n", "[675]\ttrain-rmse:0.102386\teval-rmse:0.140018\n", "[676]\ttrain-rmse:0.102267\teval-rmse:0.139987\n", "[677]\ttrain-rmse:0.102212\teval-rmse:0.139844\n", "[678]\ttrain-rmse:0.102188\teval-rmse:0.139848\n", "[679]\ttrain-rmse:0.102122\teval-rmse:0.139963\n", "[680]\ttrain-rmse:0.102039\teval-rmse:0.139897\n", "[681]\ttrain-rmse:0.102003\teval-rmse:0.139927\n", "[682]\ttrain-rmse:0.101956\teval-rmse:0.139922\n", "[683]\ttrain-rmse:0.101832\teval-rmse:0.139971\n", "[684]\ttrain-rmse:0.101829\teval-rmse:0.140033\n", "[685]\ttrain-rmse:0.101707\teval-rmse:0.139854\n", "[686]\ttrain-rmse:0.101643\teval-rmse:0.139878\n", "[687]\ttrain-rmse:0.101646\teval-rmse:0.139875\n", "[688]\ttrain-rmse:0.101565\teval-rmse:0.139861\n", "[689]\ttrain-rmse:0.101487\teval-rmse:0.139748\n", "[690]\ttrain-rmse:0.101446\teval-rmse:0.139892\n", "[691]\ttrain-rmse:0.101339\teval-rmse:0.139854\n", "[692]\ttrain-rmse:0.101299\teval-rmse:0.139921\n", "[693]\ttrain-rmse:0.101191\teval-rmse:0.139828\n", "[694]\ttrain-rmse:0.101062\teval-rmse:0.139671\n", "[695]\ttrain-rmse:0.100984\teval-rmse:0.139572\n", "[696]\ttrain-rmse:0.100951\teval-rmse:0.139536\n", "[697]\ttrain-rmse:0.100905\teval-rmse:0.139507\n", "[698]\ttrain-rmse:0.100824\teval-rmse:0.139564\n", "[699]\ttrain-rmse:0.100778\teval-rmse:0.13953\n", "[700]\ttrain-rmse:0.100752\teval-rmse:0.139526\n", "[701]\ttrain-rmse:0.100742\teval-rmse:0.139509\n", "[702]\ttrain-rmse:0.100693\teval-rmse:0.139404\n", "[703]\ttrain-rmse:0.100656\teval-rmse:0.139316\n", "[704]\ttrain-rmse:0.100596\teval-rmse:0.13932\n", "[705]\ttrain-rmse:0.100602\teval-rmse:0.139268\n", "[706]\ttrain-rmse:0.100577\teval-rmse:0.139252\n", "[707]\ttrain-rmse:0.100563\teval-rmse:0.139249\n", "[708]\ttrain-rmse:0.100533\teval-rmse:0.139185\n", "[709]\ttrain-rmse:0.100427\teval-rmse:0.139193\n", "[710]\ttrain-rmse:0.10038\teval-rmse:0.139038\n", "[711]\ttrain-rmse:0.100361\teval-rmse:0.139027\n", "[712]\ttrain-rmse:0.100265\teval-rmse:0.13895\n", "[713]\ttrain-rmse:0.10025\teval-rmse:0.138695\n", "[714]\ttrain-rmse:0.100193\teval-rmse:0.138618\n", "[715]\ttrain-rmse:0.100158\teval-rmse:0.138583\n", "[716]\ttrain-rmse:0.100103\teval-rmse:0.138526\n", "[717]\ttrain-rmse:0.100106\teval-rmse:0.13856\n", "[718]\ttrain-rmse:0.100082\teval-rmse:0.138557\n", "[719]\ttrain-rmse:0.10001\teval-rmse:0.138514\n", "[720]\ttrain-rmse:0.099988\teval-rmse:0.138486\n", "[721]\ttrain-rmse:0.099898\teval-rmse:0.138389\n", "[722]\ttrain-rmse:0.099897\teval-rmse:0.138372\n", "[723]\ttrain-rmse:0.09981\teval-rmse:0.138272\n", "[724]\ttrain-rmse:0.099725\teval-rmse:0.138318\n", "[725]\ttrain-rmse:0.099683\teval-rmse:0.138271\n", "[726]\ttrain-rmse:0.099661\teval-rmse:0.138455\n", "[727]\ttrain-rmse:0.099617\teval-rmse:0.138368\n", "[728]\ttrain-rmse:0.099583\teval-rmse:0.138338\n", "[729]\ttrain-rmse:0.099538\teval-rmse:0.138253\n", "[730]\ttrain-rmse:0.099502\teval-rmse:0.138011\n", "[731]\ttrain-rmse:0.099447\teval-rmse:0.138\n", "[732]\ttrain-rmse:0.099417\teval-rmse:0.138014\n", "[733]\ttrain-rmse:0.099371\teval-rmse:0.138029\n", "[734]\ttrain-rmse:0.099318\teval-rmse:0.138031\n", "[735]\ttrain-rmse:0.09928\teval-rmse:0.137982\n", "[736]\ttrain-rmse:0.099263\teval-rmse:0.137896\n", "[737]\ttrain-rmse:0.099229\teval-rmse:0.137907\n", "[738]\ttrain-rmse:0.099246\teval-rmse:0.137822\n", "[739]\ttrain-rmse:0.099155\teval-rmse:0.137662\n", "[740]\ttrain-rmse:0.099133\teval-rmse:0.137682\n", "[741]\ttrain-rmse:0.099071\teval-rmse:0.137679\n", "[742]\ttrain-rmse:0.099029\teval-rmse:0.137663\n", "[743]\ttrain-rmse:0.098997\teval-rmse:0.137691\n", "[744]\ttrain-rmse:0.098939\teval-rmse:0.137753\n", "[745]\ttrain-rmse:0.098931\teval-rmse:0.137666\n", "[746]\ttrain-rmse:0.098834\teval-rmse:0.137589\n", "[747]\ttrain-rmse:0.098781\teval-rmse:0.137541\n", "[748]\ttrain-rmse:0.098723\teval-rmse:0.137477\n", "[749]\ttrain-rmse:0.09868\teval-rmse:0.137563\n", "[750]\ttrain-rmse:0.098636\teval-rmse:0.137487\n", "[751]\ttrain-rmse:0.098518\teval-rmse:0.137452\n", "[752]\ttrain-rmse:0.098484\teval-rmse:0.137082\n", "[753]\ttrain-rmse:0.098446\teval-rmse:0.137135\n", "[754]\ttrain-rmse:0.098416\teval-rmse:0.13714\n", "[755]\ttrain-rmse:0.098411\teval-rmse:0.137089\n", "[756]\ttrain-rmse:0.098362\teval-rmse:0.137055\n", "[757]\ttrain-rmse:0.098316\teval-rmse:0.136908\n", "[758]\ttrain-rmse:0.098298\teval-rmse:0.136902\n", "[759]\ttrain-rmse:0.098273\teval-rmse:0.136971\n", "[760]\ttrain-rmse:0.09826\teval-rmse:0.136946\n", "[761]\ttrain-rmse:0.098256\teval-rmse:0.13691\n", "[762]\ttrain-rmse:0.098165\teval-rmse:0.136918\n", "[763]\ttrain-rmse:0.09815\teval-rmse:0.136852\n", "[764]\ttrain-rmse:0.098099\teval-rmse:0.136885\n", "[765]\ttrain-rmse:0.098057\teval-rmse:0.136791\n", "[766]\ttrain-rmse:0.098022\teval-rmse:0.136764\n", "[767]\ttrain-rmse:0.097925\teval-rmse:0.136697\n", "[768]\ttrain-rmse:0.097852\teval-rmse:0.136651\n", "[769]\ttrain-rmse:0.097788\teval-rmse:0.13664\n", "[770]\ttrain-rmse:0.097767\teval-rmse:0.136559\n", "[771]\ttrain-rmse:0.097726\teval-rmse:0.136597\n", "[772]\ttrain-rmse:0.097701\teval-rmse:0.136564\n", "[773]\ttrain-rmse:0.097602\teval-rmse:0.136545\n", "[774]\ttrain-rmse:0.097549\teval-rmse:0.136535\n", "[775]\ttrain-rmse:0.097517\teval-rmse:0.136598\n", "[776]\ttrain-rmse:0.0975\teval-rmse:0.136529\n", "[777]\ttrain-rmse:0.097417\teval-rmse:0.136595\n", "[778]\ttrain-rmse:0.097383\teval-rmse:0.136561\n", "[779]\ttrain-rmse:0.097337\teval-rmse:0.136595\n", "[780]\ttrain-rmse:0.097328\teval-rmse:0.136553\n", "[781]\ttrain-rmse:0.097241\teval-rmse:0.136579\n", "[782]\ttrain-rmse:0.097215\teval-rmse:0.136606\n", "[783]\ttrain-rmse:0.097175\teval-rmse:0.136595\n", "[784]\ttrain-rmse:0.097151\teval-rmse:0.136576\n", "[785]\ttrain-rmse:0.097105\teval-rmse:0.136492\n", "[786]\ttrain-rmse:0.096997\teval-rmse:0.136474\n", "[787]\ttrain-rmse:0.096983\teval-rmse:0.136364\n", "[788]\ttrain-rmse:0.096969\teval-rmse:0.136343\n", "[789]\ttrain-rmse:0.096907\teval-rmse:0.13636\n", "[790]\ttrain-rmse:0.096817\teval-rmse:0.136332\n", "[791]\ttrain-rmse:0.096742\teval-rmse:0.136275\n", "[792]\ttrain-rmse:0.096725\teval-rmse:0.136376\n", "[793]\ttrain-rmse:0.096636\teval-rmse:0.136403\n", "[794]\ttrain-rmse:0.096567\teval-rmse:0.136338\n", "[795]\ttrain-rmse:0.096524\teval-rmse:0.136387\n", "[796]\ttrain-rmse:0.096518\teval-rmse:0.1363\n", "[797]\ttrain-rmse:0.096451\teval-rmse:0.1363\n", "[798]\ttrain-rmse:0.096432\teval-rmse:0.136268\n", "[799]\ttrain-rmse:0.096403\teval-rmse:0.136258\n", "[800]\ttrain-rmse:0.096364\teval-rmse:0.136208\n", "[801]\ttrain-rmse:0.096314\teval-rmse:0.136191\n", "[802]\ttrain-rmse:0.096269\teval-rmse:0.1361\n", "[803]\ttrain-rmse:0.0962\teval-rmse:0.136212\n", "[804]\ttrain-rmse:0.096155\teval-rmse:0.136119\n", "[805]\ttrain-rmse:0.096105\teval-rmse:0.136056\n", "[806]\ttrain-rmse:0.096087\teval-rmse:0.136089\n", "[807]\ttrain-rmse:0.096082\teval-rmse:0.136039\n", "[808]\ttrain-rmse:0.09604\teval-rmse:0.136002\n", "[809]\ttrain-rmse:0.095965\teval-rmse:0.135967\n", "[810]\ttrain-rmse:0.095928\teval-rmse:0.136025\n", "[811]\ttrain-rmse:0.095915\teval-rmse:0.135979\n", "[812]\ttrain-rmse:0.095846\teval-rmse:0.135921\n", "[813]\ttrain-rmse:0.095811\teval-rmse:0.136085\n", "[814]\ttrain-rmse:0.095767\teval-rmse:0.135974\n", "[815]\ttrain-rmse:0.095766\teval-rmse:0.136042\n", "[816]\ttrain-rmse:0.09574\teval-rmse:0.136094\n", "[817]\ttrain-rmse:0.095701\teval-rmse:0.136054\n", "[818]\ttrain-rmse:0.095656\teval-rmse:0.135958\n", "[819]\ttrain-rmse:0.095617\teval-rmse:0.136001\n", "[820]\ttrain-rmse:0.095589\teval-rmse:0.135965\n", "[821]\ttrain-rmse:0.095576\teval-rmse:0.135976\n", "[822]\ttrain-rmse:0.09554\teval-rmse:0.13598\n", "[823]\ttrain-rmse:0.095509\teval-rmse:0.135917\n", "[824]\ttrain-rmse:0.095486\teval-rmse:0.135792\n", "[825]\ttrain-rmse:0.095483\teval-rmse:0.13597\n", "[826]\ttrain-rmse:0.095418\teval-rmse:0.135861\n", "[827]\ttrain-rmse:0.095395\teval-rmse:0.135832\n", "[828]\ttrain-rmse:0.095323\teval-rmse:0.135713\n", "[829]\ttrain-rmse:0.0953\teval-rmse:0.13557\n", "[830]\ttrain-rmse:0.095259\teval-rmse:0.135697\n", "[831]\ttrain-rmse:0.09527\teval-rmse:0.135825\n", "[832]\ttrain-rmse:0.095251\teval-rmse:0.135776\n", "[833]\ttrain-rmse:0.095254\teval-rmse:0.135761\n", "[834]\ttrain-rmse:0.095233\teval-rmse:0.135711\n", "[835]\ttrain-rmse:0.095201\teval-rmse:0.135648\n", "[836]\ttrain-rmse:0.095172\teval-rmse:0.135652\n", "[837]\ttrain-rmse:0.095131\teval-rmse:0.13564\n", "[838]\ttrain-rmse:0.095094\teval-rmse:0.135574\n", "[839]\ttrain-rmse:0.095048\teval-rmse:0.135535\n", "[840]\ttrain-rmse:0.09506\teval-rmse:0.135509\n", "[841]\ttrain-rmse:0.095007\teval-rmse:0.13542\n", "[842]\ttrain-rmse:0.094936\teval-rmse:0.135439\n", "[843]\ttrain-rmse:0.09487\teval-rmse:0.135374\n", "[844]\ttrain-rmse:0.094847\teval-rmse:0.13539\n", "[845]\ttrain-rmse:0.094822\teval-rmse:0.135353\n", "[846]\ttrain-rmse:0.094788\teval-rmse:0.135354\n", "[847]\ttrain-rmse:0.094777\teval-rmse:0.135289\n", "[848]\ttrain-rmse:0.094724\teval-rmse:0.135287\n", "[849]\ttrain-rmse:0.094632\teval-rmse:0.135185\n", "[850]\ttrain-rmse:0.094581\teval-rmse:0.135103\n", "[851]\ttrain-rmse:0.094537\teval-rmse:0.135069\n", "[852]\ttrain-rmse:0.094506\teval-rmse:0.135109\n", "[853]\ttrain-rmse:0.094487\teval-rmse:0.135107\n", "[854]\ttrain-rmse:0.094436\teval-rmse:0.1351\n", "[855]\ttrain-rmse:0.094372\teval-rmse:0.135061\n", "[856]\ttrain-rmse:0.094345\teval-rmse:0.135149\n", "[857]\ttrain-rmse:0.094266\teval-rmse:0.135183\n", "[858]\ttrain-rmse:0.094234\teval-rmse:0.135009\n", "[859]\ttrain-rmse:0.094224\teval-rmse:0.135063\n", "[860]\ttrain-rmse:0.09417\teval-rmse:0.135074\n", "[861]\ttrain-rmse:0.094161\teval-rmse:0.1351\n", "[862]\ttrain-rmse:0.094127\teval-rmse:0.135076\n", "[863]\ttrain-rmse:0.094104\teval-rmse:0.134969\n", "[864]\ttrain-rmse:0.094076\teval-rmse:0.134936\n", "[865]\ttrain-rmse:0.094058\teval-rmse:0.134769\n", "[866]\ttrain-rmse:0.094032\teval-rmse:0.13483\n", "[867]\ttrain-rmse:0.094019\teval-rmse:0.134902\n", "[868]\ttrain-rmse:0.09399\teval-rmse:0.134871\n", "[869]\ttrain-rmse:0.093917\teval-rmse:0.134836\n", "[870]\ttrain-rmse:0.093841\teval-rmse:0.13479\n", "[871]\ttrain-rmse:0.09377\teval-rmse:0.134734\n", "[872]\ttrain-rmse:0.093719\teval-rmse:0.134712\n", "[873]\ttrain-rmse:0.093654\teval-rmse:0.134749\n", "[874]\ttrain-rmse:0.093615\teval-rmse:0.134711\n", "[875]\ttrain-rmse:0.093557\teval-rmse:0.134718\n", "[876]\ttrain-rmse:0.093513\teval-rmse:0.134696\n", "[877]\ttrain-rmse:0.093517\teval-rmse:0.134644\n", "[878]\ttrain-rmse:0.093463\teval-rmse:0.134619\n", "[879]\ttrain-rmse:0.093398\teval-rmse:0.134533\n", "[880]\ttrain-rmse:0.093345\teval-rmse:0.134621\n", "[881]\ttrain-rmse:0.093338\teval-rmse:0.134648\n", "[882]\ttrain-rmse:0.093349\teval-rmse:0.134602\n", "[883]\ttrain-rmse:0.093311\teval-rmse:0.134533\n", "[884]\ttrain-rmse:0.093236\teval-rmse:0.134513\n", "[885]\ttrain-rmse:0.093183\teval-rmse:0.134473\n", "[886]\ttrain-rmse:0.09318\teval-rmse:0.134479\n", "[887]\ttrain-rmse:0.093146\teval-rmse:0.134403\n", "[888]\ttrain-rmse:0.09313\teval-rmse:0.134353\n", "[889]\ttrain-rmse:0.093107\teval-rmse:0.134326\n", "[890]\ttrain-rmse:0.093041\teval-rmse:0.13432\n", "[891]\ttrain-rmse:0.093025\teval-rmse:0.134346\n", "[892]\ttrain-rmse:0.092915\teval-rmse:0.134361\n", "[893]\ttrain-rmse:0.09291\teval-rmse:0.134306\n", "[894]\ttrain-rmse:0.092906\teval-rmse:0.134307\n", "[895]\ttrain-rmse:0.092912\teval-rmse:0.134255\n", "[896]\ttrain-rmse:0.092848\teval-rmse:0.134215\n", "[897]\ttrain-rmse:0.092786\teval-rmse:0.134159\n", "[898]\ttrain-rmse:0.092732\teval-rmse:0.134203\n", "[899]\ttrain-rmse:0.092715\teval-rmse:0.133997\n", "[900]\ttrain-rmse:0.092673\teval-rmse:0.133979\n", "[901]\ttrain-rmse:0.092648\teval-rmse:0.134025\n", "[902]\ttrain-rmse:0.092597\teval-rmse:0.134026\n", "[903]\ttrain-rmse:0.092604\teval-rmse:0.134019\n", "[904]\ttrain-rmse:0.09256\teval-rmse:0.133985\n", "[905]\ttrain-rmse:0.092502\teval-rmse:0.133957\n", "[906]\ttrain-rmse:0.092496\teval-rmse:0.133982\n", "[907]\ttrain-rmse:0.092447\teval-rmse:0.133938\n", "[908]\ttrain-rmse:0.092397\teval-rmse:0.133837\n", "[909]\ttrain-rmse:0.092393\teval-rmse:0.134019\n", "[910]\ttrain-rmse:0.092362\teval-rmse:0.134083\n", "[911]\ttrain-rmse:0.092316\teval-rmse:0.134073\n", "[912]\ttrain-rmse:0.092304\teval-rmse:0.134022\n", "[913]\ttrain-rmse:0.09231\teval-rmse:0.133987\n", "[914]\ttrain-rmse:0.092296\teval-rmse:0.133995\n", "[915]\ttrain-rmse:0.092285\teval-rmse:0.133948\n", "[916]\ttrain-rmse:0.092293\teval-rmse:0.133954\n", "[917]\ttrain-rmse:0.092266\teval-rmse:0.13393\n", "[918]\ttrain-rmse:0.092266\teval-rmse:0.133793\n", "[919]\ttrain-rmse:0.09223\teval-rmse:0.13378\n", "[920]\ttrain-rmse:0.092158\teval-rmse:0.133724\n", "[921]\ttrain-rmse:0.092126\teval-rmse:0.133692\n", "[922]\ttrain-rmse:0.092091\teval-rmse:0.133731\n", "[923]\ttrain-rmse:0.092062\teval-rmse:0.133759\n", "[924]\ttrain-rmse:0.09205\teval-rmse:0.133729\n", "[925]\ttrain-rmse:0.09201\teval-rmse:0.133655\n", "[926]\ttrain-rmse:0.091933\teval-rmse:0.134092\n", "[927]\ttrain-rmse:0.091916\teval-rmse:0.134102\n", "[928]\ttrain-rmse:0.091855\teval-rmse:0.134116\n", "[929]\ttrain-rmse:0.091841\teval-rmse:0.134129\n", "[930]\ttrain-rmse:0.091864\teval-rmse:0.134121\n", "[931]\ttrain-rmse:0.091828\teval-rmse:0.134086\n", "[932]\ttrain-rmse:0.09182\teval-rmse:0.134023\n", "[933]\ttrain-rmse:0.091761\teval-rmse:0.134145\n", "[934]\ttrain-rmse:0.091675\teval-rmse:0.134195\n", "[935]\ttrain-rmse:0.091597\teval-rmse:0.134165\n", "[936]\ttrain-rmse:0.091546\teval-rmse:0.134134\n", "[937]\ttrain-rmse:0.09152\teval-rmse:0.134083\n", "[938]\ttrain-rmse:0.091472\teval-rmse:0.134054\n", "[939]\ttrain-rmse:0.091415\teval-rmse:0.134067\n", "[940]\ttrain-rmse:0.091421\teval-rmse:0.133911\n", "[941]\ttrain-rmse:0.091361\teval-rmse:0.133942\n", "[942]\ttrain-rmse:0.091337\teval-rmse:0.133884\n", "[943]\ttrain-rmse:0.0913\teval-rmse:0.133951\n", "[944]\ttrain-rmse:0.091273\teval-rmse:0.133934\n", "[945]\ttrain-rmse:0.091265\teval-rmse:0.133824\n", "[946]\ttrain-rmse:0.091236\teval-rmse:0.133816\n", "[947]\ttrain-rmse:0.091171\teval-rmse:0.133836\n", "[948]\ttrain-rmse:0.091144\teval-rmse:0.134054\n", "[949]\ttrain-rmse:0.091082\teval-rmse:0.13401\n", "[950]\ttrain-rmse:0.091027\teval-rmse:0.133977\n", "[951]\ttrain-rmse:0.090986\teval-rmse:0.134029\n", "[952]\ttrain-rmse:0.090951\teval-rmse:0.13402\n", "[953]\ttrain-rmse:0.090914\teval-rmse:0.134031\n", "[954]\ttrain-rmse:0.090879\teval-rmse:0.134017\n", "[955]\ttrain-rmse:0.090839\teval-rmse:0.133978\n", "[956]\ttrain-rmse:0.090821\teval-rmse:0.133976\n", "[957]\ttrain-rmse:0.090779\teval-rmse:0.134107\n", "[958]\ttrain-rmse:0.090777\teval-rmse:0.134045\n", "[959]\ttrain-rmse:0.090765\teval-rmse:0.134028\n", "[960]\ttrain-rmse:0.090713\teval-rmse:0.134063\n", "[961]\ttrain-rmse:0.090692\teval-rmse:0.134127\n", "[962]\ttrain-rmse:0.090589\teval-rmse:0.134433\n", "[963]\ttrain-rmse:0.090581\teval-rmse:0.134354\n", "[964]\ttrain-rmse:0.090567\teval-rmse:0.134256\n", "[965]\ttrain-rmse:0.090565\teval-rmse:0.134323\n", "[966]\ttrain-rmse:0.090565\teval-rmse:0.134318\n", "[967]\ttrain-rmse:0.090536\teval-rmse:0.134438\n", "[968]\ttrain-rmse:0.090517\teval-rmse:0.134314\n", "[969]\ttrain-rmse:0.090491\teval-rmse:0.134259\n", "[970]\ttrain-rmse:0.090439\teval-rmse:0.134407\n", "[971]\ttrain-rmse:0.09042\teval-rmse:0.134423\n", "[972]\ttrain-rmse:0.090343\teval-rmse:0.13462\n", "[973]\ttrain-rmse:0.090285\teval-rmse:0.134816\n", "[974]\ttrain-rmse:0.090246\teval-rmse:0.134892\n", "[975]\ttrain-rmse:0.090211\teval-rmse:0.134909\n", "Stopping. Best iteration:\n", "[925]\ttrain-rmse:0.09201\teval-rmse:0.133655\n", "\n", "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice predict
11.8494 12.062
12.2061 12.306
11.6784 11.6806
11.914 11.7686
12.6758 12.487
12.861 12.5802
12.1035 11.9194
11.2898 11.4222
11.7714 11.6392
11.5843 11.6461
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] }, { "data": { "image/png": "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\n1ge2J4H8AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\"\"\"\n", "\n", "ave_y = half_train['SalePrice'].mean()[0]\n", "\n", "# XGBoost uses SVMLight data structure, not Numpy arrays or Pandas data frames \n", "dtrain1 = xgb.DMatrix(train.as_data_frame()[encoded_combined_nums],\n", " train.as_data_frame()['SalePrice'])\n", "dvalid1 = xgb.DMatrix(valid.as_data_frame()[encoded_combined_nums],\n", " valid.as_data_frame()['SalePrice'])\n", "dtest = xgb.DMatrix(test.as_data_frame()[encoded_combined_nums])\n", "\n", "# tuning parameters\n", "params1 = {\n", " 'objective': 'reg:linear',\n", " 'booster': 'gbtree', \n", " 'eval_metric': 'rmse',\n", " 'eta': 0.005,\n", " 'subsample': 0.1, \n", " 'colsample_bytree': 0.8,\n", " 'max_depth': 5,\n", " 'reg_alpha' : 0.007,\n", " 'reg_lambda' : 0.0,\n", " 'base_score': ave_y,\n", " 'silent': 0,\n", " 'seed': 12345,\n", "}\n", "\n", "# watchlist is used for early stopping\n", "watchlist = [(dtrain1, 'train'), (dvalid1, 'eval')]\n", "\n", "# train model\n", "xgb_model1 = xgb.train(params1, \n", " dtrain1, \n", " 10000,\n", " evals=watchlist, \n", " early_stopping_rounds=50, \n", " verbose_eval=True)\n", "\n", "# create assessment stats and submission file\n", "xgb_preds1_val = h2o.H2OFrame(xgb_model1.predict(dvalid1).tolist())\n", "ranked_preds_plot('SalePrice', valid, xgb_preds1_val) \n", "xgb_preds1_test = h2o.H2OFrame(xgb_model1.predict(dtest).tolist())\n", "gen_submission(xgb_preds1_test) \n", "\n", "\"\"\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Shutdown H2O" ] }, { "cell_type": "code", "execution_count": 122, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Are you sure you want to shutdown the H2O instance running at http://localhost:54321 (Y/N)? y\n", "H2O session _sid_942e closed.\n" ] } ], "source": [ "# Shutdown H2O - this will erase all your unsaved frames and models in H2O\n", "h2o.cluster().shutdown(prompt=True)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "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.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 04_decision_trees/xml/04_decision_trees.xml ================================================ <_ROOT_ EMVERSION="14.1" ORIENTATION="HORIZONTAL"> ================================================ FILE: 05_neural_networks/05_neural_networks.md ================================================ ## Section 05: Neural Networks Neural networks are important because of their ability to approximate **any** relationship between input variables and target variables. In practice they tend to be difficult to train and difficult to interpret, but excel at pattern recognition tasks in images and sound. A new field of neural networks, known as *deep learning*, has been responsible for some of the most important recent breakthroughs in machine learning and artificial intelligence. #### Class Materials * [Overview of neural networks](notes/instructor_notes.pdf) * Overview of training neural networks in Enterprise Miner - [Blackboard electronic reserves](https://blackboard.gwu.edu) * [More details on training neural networks](notes/tan_notes.pdf) * [Advanced notes](notes/msba_2017_ml_week_2_FINAL.pdf) * [Wen Phan's deep learning with CNN notes](notes/cnn-gwu.pdf) * [EM neural network example](xml/05_neural_networks.xml) * [H2O neural network examples](src/py_part_5_neural_networks.ipynb) * [Kaggle digit recognizer starter kit](src/py_part_5_MNIST_DNN.ipynb) * [H2O autoencoder example](src/py_part_5_MNIST_autoencoder.ipynb) * [MNIST data augmentation example](src/py_part_5_MNIST_data_augmentation.ipynb) * [Basic MLP example](src/py_part_5_basic_mlp_example.ipynb) * [Wen Phans's MNIST Keras example](src/py_part_5_MNIST_keras_lenet.ipynb) #### [Sample Quiz](quiz/sample/quiz_5.pdf) #### [Quiz key](quiz/key/quiz_5_key.pdf) #### [Assignment](assignment/assignment_3.pdf) #### [Assignment data](assignment/raw) #### [Assignment key](assignment/key) #### Supplementary References * [*Deep Learning with H2O*](http://h2o-release.s3.amazonaws.com/h2o/rel-ueno/1/docs-website/h2o-docs/booklets/DeepLearningBooklet.pdf) * [The Definitive Performance Tuning Guide for H2O Deep Learning](https://blog.h2o.ai/2015/02/deep-learning-performance/) * *Predictive Modeling and Neural Networks in Enterprise Miner* - [Blackboard electronic reserves](https://blackboard.gwu.edu) *** * *Introduction to Data Mining*
Section 5.4 * [*Elements of Statistical Learning*](https://web.stanford.edu/~hastie/ElemStatLearn/printings/ESLII_print12.pdf)
Chapter 11 * [*Pattern Recognition in Machine Learning*](http://users.isr.ist.utl.pt/~wurmd/Livros/school/Bishop%20-%20Pattern%20Recognition%20And%20Machine%20Learning%20-%20Springer%20%202006.pdf)
Chapter 5 * [*Deep Learning*](http://www.deeplearningbook.org/)
Chapters 6 - 9 * [Learning Representations by Back-Propogating Error](http://www.cs.toronto.edu/~fritz/absps/naturebp.pdf)
The seminal back-propagation paper by Geoffrey Hinton from 1986 * [Gradient-Based Learning Applied to Document Recognition](http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf)
The seminal deep learning and convolutional neural network paper from 1998 by Yann Lecun * [Reducing the Dimensionality of Data Using Neural Networks](https://www.cs.toronto.edu/~hinton/science.pdf)
The seminal deep learning paper from 2006 by Geoffrey Hinton * [Why Does Deep Cheap Learning Work So Well?](https://arxiv.org/pdf/1608.08225.pdf) * Papers about problems with neural networks: * [Intriguing Properties of Neural Networks](https://arxiv.org/pdf/1312.6199.pdf) * [Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable Images](http://arxiv.org/pdf/1412.1897v2.pdf) *** * [*Neural Network Zoo*](http://www.asimovinstitute.org/neural-network-zoo/) article
Quick summary of the many different types of neural networks * [An overview of gradient descent optimization algorithms](http://sebastianruder.com/optimizing-gradient-descent/index.html) *** * [My Quora answers regarding standard neural networks and deep learning](https://www.quora.com/profile/Patrick-Hall-4/answers/Artificial-Neural-Networks-ANNs) * Neural network FAQ by Warren Sarle: ftp://ftp.sas.com/pub/neural/FAQ.html#A2
More than you ever wanted to know about traditional neural networks (some info may be dated and/or obsolete.) * MNIST Data * [Yann LeCun's MNIST page](http://yann.lecun.com/exdb/mnist/) * [MNIST as CSV](https://pjreddie.com/projects/mnist-in-csv/) ================================================ FILE: 05_neural_networks/assignment/.gitignore ================================================ key ================================================ FILE: 05_neural_networks/data/.gitignore ================================================ *.csv *.png *.jpg *.tar.gz ================================================ FILE: 05_neural_networks/quiz/.gitignore ================================================ key ================================================ FILE: 05_neural_networks/quiz/sample/.gitignore ================================================ *.docx ================================================ FILE: 05_neural_networks/src/.gitignore ================================================ Keras\ MNIST\ MLP\ using\ Images\ Sample.ipynb Keras\ MNIST\ MLP.ipynb keras-mnist-lenet.py keras-mnist-mlp-image-sample.py keras-mnist-mlp.py ================================================ FILE: 05_neural_networks/src/py_part_5_MNIST_DNN.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# MLP Starter Kit for Kaggle Digit Recognizer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Imports and inits" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# imports\n", "import h2o \n", "from h2o.estimators.deeplearning import H2ODeepLearningEstimator\n", "from h2o.grid.grid_search import H2OGridSearch" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# display matplotlib graphics in notebook\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: java version \"1.8.0_112\"; Java(TM) SE Runtime Environment (build 1.8.0_112-b16); Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)\n", " Starting server from /Users/phall/anaconda/lib/python3.5/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmptx61xb53\n", " JVM stdout: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmptx61xb53/h2o_phall_started_from_python.out\n", " JVM stderr: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmptx61xb53/h2o_phall_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321... successful.\n" ] }, { "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", "
H2O cluster uptime:01 secs
H2O cluster timezone:America/New_York
H2O data parsing timezone:UTC
H2O cluster version:3.18.0.11
H2O cluster version age:7 days, 15 hours and 45 minutes
H2O cluster name:H2O_from_python_phall_2bf4zp
H2O cluster total nodes:1
H2O cluster free memory:3.556 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
H2O internal security:False
H2O API Extensions:XGBoost, Algos, AutoML, Core V3, Core V4
Python version:3.5.2 final
" ], "text/plain": [ "-------------------------- ----------------------------------------\n", "H2O cluster uptime: 01 secs\n", "H2O cluster timezone: America/New_York\n", "H2O data parsing timezone: UTC\n", "H2O cluster version: 3.18.0.11\n", "H2O cluster version age: 7 days, 15 hours and 45 minutes\n", "H2O cluster name: H2O_from_python_phall_2bf4zp\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 3.556 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "H2O API Extensions: XGBoost, Algos, AutoML, Core V3, Core V4\n", "Python version: 3.5.2 final\n", "-------------------------- ----------------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# start and connect to h2o server\n", "h2o.init()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import data" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# load clean data\n", "path = '../data/'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# define input variable measurement levels \n", "# strings automatically parsed as enums (nominal)\n", "# numbers automatically parsed as numeric\n", "col_types = {'label': 'enum'}" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n", "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "train = h2o.import_file(path=path + 'train.csv', col_types=col_types) # multi-threaded import\n", "test = h2o.import_file(path=path + 'test.csv')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rows:60000\n", "Cols:785\n", "\n", "\n" ] }, { "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", "
pixel0 pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 pixel7 pixel8 pixel9 pixel10 pixel11 pixel12 pixel13 pixel14 pixel15 pixel16 pixel17 pixel18 pixel19 pixel20 pixel21 pixel22 pixel23 pixel24 pixel25 pixel26 pixel27 pixel28 pixel29 pixel30 pixel31 pixel32 pixel33 pixel34 pixel35 pixel36 pixel37 pixel38 pixel39 pixel40 pixel41 pixel42 pixel43 pixel44 pixel45 pixel46 pixel47 pixel48 pixel49 pixel50 pixel51 pixel52 pixel53 pixel54 pixel55 pixel56 pixel57 pixel58 pixel59 pixel60 pixel61 pixel62 pixel63 pixel64 pixel65 pixel66 pixel67 pixel68 pixel69 pixel70 pixel71 pixel72 pixel73 pixel74 pixel75 pixel76 pixel77 pixel78 pixel79 pixel80 pixel81 pixel82 pixel83 pixel84 pixel85 pixel86 pixel87 pixel88 pixel89 pixel90 pixel91 pixel92 pixel93 pixel94 pixel95 pixel96 pixel97 pixel98 pixel99 pixel100 pixel101 pixel102 pixel103 pixel104 pixel105 pixel106 pixel107 pixel108 pixel109 pixel110 pixel111 pixel112 pixel113 pixel114 pixel115 pixel116 pixel117 pixel118 pixel119 pixel120 pixel121 pixel122 pixel123 pixel124 pixel125 pixel126 pixel127 pixel128 pixel129 pixel130 pixel131 pixel132 pixel133 pixel134 pixel135 pixel136 pixel137 pixel138 pixel139 pixel140 pixel141 pixel142 pixel143 pixel144 pixel145 pixel146 pixel147 pixel148 pixel149 pixel150 pixel151 pixel152 pixel153 pixel154 pixel155 pixel156 pixel157 pixel158 pixel159 pixel160 pixel161 pixel162 pixel163 pixel164 pixel165 pixel166 pixel167 pixel168 pixel169 pixel170 pixel171 pixel172 pixel173 pixel174 pixel175 pixel176 pixel177 pixel178 pixel179 pixel180 pixel181 pixel182 pixel183 pixel184 pixel185 pixel186 pixel187 pixel188 pixel189 pixel190 pixel191 pixel192 pixel193 pixel194 pixel195 pixel196 pixel197 pixel198 pixel199 pixel200 pixel201 pixel202 pixel203 pixel204 pixel205 pixel206 pixel207 pixel208 pixel209 pixel210 pixel211 pixel212 pixel213 pixel214 pixel215 pixel216 pixel217 pixel218 pixel219 pixel220 pixel221 pixel222 pixel223 pixel224 pixel225 pixel226 pixel227 pixel228 pixel229 pixel230 pixel231 pixel232 pixel233 pixel234 pixel235 pixel236 pixel237 pixel238 pixel239 pixel240 pixel241 pixel242 pixel243 pixel244 pixel245 pixel246 pixel247 pixel248 pixel249 pixel250 pixel251 pixel252 pixel253 pixel254 pixel255 pixel256 pixel257 pixel258 pixel259 pixel260 pixel261 pixel262 pixel263 pixel264 pixel265 pixel266 pixel267 pixel268 pixel269 pixel270 pixel271 pixel272 pixel273 pixel274 pixel275 pixel276 pixel277 pixel278 pixel279 pixel280 pixel281 pixel282 pixel283 pixel284 pixel285 pixel286 pixel287 pixel288 pixel289 pixel290 pixel291 pixel292 pixel293 pixel294 pixel295 pixel296 pixel297 pixel298 pixel299 pixel300 pixel301 pixel302 pixel303 pixel304 pixel305 pixel306 pixel307 pixel308 pixel309 pixel310 pixel311 pixel312 pixel313 pixel314 pixel315 pixel316 pixel317 pixel318 pixel319 pixel320 pixel321 pixel322 pixel323 pixel324 pixel325 pixel326 pixel327 pixel328 pixel329 pixel330 pixel331 pixel332 pixel333 pixel334 pixel335 pixel336 pixel337 pixel338 pixel339 pixel340 pixel341 pixel342 pixel343 pixel344 pixel345 pixel346 pixel347 pixel348 pixel349 pixel350 pixel351 pixel352 pixel353 pixel354 pixel355 pixel356 pixel357 pixel358 pixel359 pixel360 pixel361 pixel362 pixel363 pixel364 pixel365 pixel366 pixel367 pixel368 pixel369 pixel370 pixel371 pixel372 pixel373 pixel374 pixel375 pixel376 pixel377 pixel378 pixel379 pixel380 pixel381 pixel382 pixel383 pixel384 pixel385 pixel386 pixel387 pixel388 pixel389 pixel390 pixel391 pixel392 pixel393 pixel394 pixel395 pixel396 pixel397 pixel398 pixel399 pixel400 pixel401 pixel402 pixel403 pixel404 pixel405 pixel406 pixel407 pixel408 pixel409 pixel410 pixel411 pixel412 pixel413 pixel414 pixel415 pixel416 pixel417 pixel418 pixel419 pixel420 pixel421 pixel422 pixel423 pixel424 pixel425 pixel426 pixel427 pixel428 pixel429 pixel430 pixel431 pixel432 pixel433 pixel434 pixel435 pixel436 pixel437 pixel438 pixel439 pixel440 pixel441 pixel442 pixel443 pixel444 pixel445 pixel446 pixel447 pixel448 pixel449 pixel450 pixel451 pixel452 pixel453 pixel454 pixel455 pixel456 pixel457 pixel458 pixel459 pixel460 pixel461 pixel462 pixel463 pixel464 pixel465 pixel466 pixel467 pixel468 pixel469 pixel470 pixel471 pixel472 pixel473 pixel474 pixel475 pixel476 pixel477 pixel478 pixel479 pixel480 pixel481 pixel482 pixel483 pixel484 pixel485 pixel486 pixel487 pixel488 pixel489 pixel490 pixel491 pixel492 pixel493 pixel494 pixel495 pixel496 pixel497 pixel498 pixel499 pixel500 pixel501 pixel502 pixel503 pixel504 pixel505 pixel506 pixel507 pixel508 pixel509 pixel510 pixel511 pixel512 pixel513 pixel514 pixel515 pixel516 pixel517 pixel518 pixel519 pixel520 pixel521 pixel522 pixel523 pixel524 pixel525 pixel526 pixel527 pixel528 pixel529 pixel530 pixel531 pixel532 pixel533 pixel534 pixel535 pixel536 pixel537 pixel538 pixel539 pixel540 pixel541 pixel542 pixel543 pixel544 pixel545 pixel546 pixel547 pixel548 pixel549 pixel550 pixel551 pixel552 pixel553 pixel554 pixel555 pixel556 pixel557 pixel558 pixel559 pixel560 pixel561 pixel562 pixel563 pixel564 pixel565 pixel566 pixel567 pixel568 pixel569 pixel570 pixel571 pixel572 pixel573 pixel574 pixel575 pixel576 pixel577 pixel578 pixel579 pixel580 pixel581 pixel582 pixel583 pixel584 pixel585 pixel586 pixel587 pixel588 pixel589 pixel590 pixel591 pixel592 pixel593 pixel594 pixel595 pixel596 pixel597 pixel598 pixel599 pixel600 pixel601 pixel602 pixel603 pixel604 pixel605 pixel606 pixel607 pixel608 pixel609 pixel610 pixel611 pixel612 pixel613 pixel614 pixel615 pixel616 pixel617 pixel618 pixel619 pixel620 pixel621 pixel622 pixel623 pixel624 pixel625 pixel626 pixel627 pixel628 pixel629 pixel630 pixel631 pixel632 pixel633 pixel634 pixel635 pixel636 pixel637 pixel638 pixel639 pixel640 pixel641 pixel642 pixel643 pixel644 pixel645 pixel646 pixel647 pixel648 pixel649 pixel650 pixel651 pixel652 pixel653 pixel654 pixel655 pixel656 pixel657 pixel658 pixel659 pixel660 pixel661 pixel662 pixel663 pixel664 pixel665 pixel666 pixel667 pixel668 pixel669 pixel670 pixel671 pixel672 pixel673 pixel674 pixel675 pixel676 pixel677 pixel678 pixel679 pixel680 pixel681 pixel682 pixel683 pixel684 pixel685 pixel686 pixel687 pixel688 pixel689 pixel690 pixel691 pixel692 pixel693 pixel694 pixel695 pixel696 pixel697 pixel698 pixel699 pixel700 pixel701 pixel702 pixel703 pixel704 pixel705 pixel706 pixel707 pixel708 pixel709 pixel710 pixel711 pixel712 pixel713 pixel714 pixel715 pixel716 pixel717 pixel718 pixel719 pixel720 pixel721 pixel722 pixel723 pixel724 pixel725 pixel726 pixel727 pixel728 pixel729 pixel730 pixel731 pixel732 pixel733 pixel734 pixel735 pixel736 pixel737 pixel738 pixel739 pixel740 pixel741 pixel742 pixel743 pixel744 pixel745 pixel746 pixel747 pixel748 pixel749 pixel750 pixel751 pixel752 pixel753 pixel754 pixel755 pixel756 pixel757 pixel758 pixel759 pixel760 pixel761 pixel762 pixel763 pixel764 pixel765 pixel766 pixel767 pixel768 pixel769 pixel770 pixel771 pixel772 pixel773 pixel774 pixel775 pixel776 pixel777 pixel778 pixel779 pixel780 pixel781 pixel782 pixel783 label
type int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int int enum
mins 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
mean 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0021 0.0078333333333333330.0036 0.00015 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00026666666666666660.00091666666666666660.0092833333333333330.0242833333333333340.043716666666666670.0641 0.120133333333333330.160733333333333340.174183333333333330.177433333333333330.189316666666666660.17415 0.186933333333333340.15365 0.100116666666666670.071233333333333330.0538166666666666650.0213666666666666660.0100833333333333330.0035333333333333330.0 0.0 0.0 0.0 0.0 0.0 0.00106666666666666670.0007 0.00695 0.0054833333333333330.0471 0.1384 0.26418333333333330.50661666666666670.8668 1.29008333333333321.87035 2.52995 3.20161666666666683.62555 3.721983333333333 3.39255 2.80293333333333332.0443833333333331.20211666666666670.63345 0.29616666666666670.093983333333333340.035216666666666670.0086333333333333330.0 0.0 0.0 0.0 0.00323333333333333330.00585 0.0120166666666666670.069766666666666670.212083333333333350.5461 1.15441666666666662.2159 3.63963333333333335.438 7.40705 9.69673333333333311.88308333333333313.23736666666666713.12461666666666611.8135166666666679.5436666666666676.86305 4.19365 2.27463333333333351.06103333333333350.41306666666666670.162083333333333330.0277666666666666650.00280000000000000040.0 0.0 0.00063333333333333330.0052166666666666660.01435 0.080883333333333330.41021666666666671.04323333333333322.41928333333333354.77575 8.394416666666666 13.3102666666666719.47730000000000327.03668333333333335.2121666666666741.8408 45.2525999999999944.3388333333333339.1414499999999931.32821666666665522.92393333333333414.8310166666666678.6614 4.54796666666666652.137016666666667 0.8629 0.20775 0.02965 0.0020333333333333330.0 0.0 0.0103166666666666670.06335 0.39546666666666671.4634 3.58778333333333337.22781666666666713.01711666666666621.21791666666666431.50040000000001344.2063666666666758.90385000000000673.80415 85.1027333333333 90.59978333333333 88.92393333333337 80.18124999999996 65.9428166666666949.7938333333333334.3498333333333221.51 12.3903166666666656.639116666666666 2.99271666666666650.84366666666666670.141633333333333330.0047 0.0 0.000183333333333333340.0275 0.221433333333333341.11951666666666673.2899 7.43646666666666714.25443333333333524.13775 37.2885166666666653.1153999999999970.91281666666663 89.27846666666665106.23296666666666118.5061166666667 124.09814999999995121.71133333333334112.0333333333333396.10811666666665 75.1653666666666754.03711666666665535.3124833333333320.9919 11.4424333333333345.387766666666667 1.85558333333333340.3727 0.0303 0.00078333333333333340.0197333333333333320.107666666666666660.59565 2.3124 5.92876666666666612.43605000000000222.45180000000000236.29478333333333553.8984166666666773.76471666666671 94.1030833333333 111.5794833333333 124.99991666666668132.7591166666666 135.3987 133.33865000000006126.67753333333334113.5466666666666793.74426666666666 69.7779333333333446.83288333333333528.14391666666666615.2010500000000027.0336666666666672.58303333333333330.5131 0.031883333333333330.0040666666666666660.050816666666666670.329366666666666641.31735 3.74813333333333358.48346666666666716.81818333333333 29.5974 46.93015 68.10700000000001 90.29138333333331 108.47571666666668119.43541666666667123.39385 123.03804999999998122.34065 122.73004999999999122.1441 116.26093333333336100.6106000000000277.31803333333333 52.8976 31.81061666666667516.3576666666666677.1856666666666672.60661666666666660.48158333333333330.0271833333333333340.0048666666666666670.079466666666666670.51201666666666671.71938333333333334.44581666666666659.80663333333333419.52648333333333534.50481666666665654.7009 78.13803333333331 99.0387 110.60046666666668110.78755000000001104.5536166666666699.0472 99.38838333333334 104.33321666666667110.88206666666666111.0782666666666599.14691666666667 77.04055000000001 52.7057666666666531.44841666666666715.3927166666666655.961133333333334 1.89796666666666660.351833333333333330.0282166666666666680.0066666666666666670.098566666666666660.52303333333333341.67458333333333334.289083333333332 9.876433333333333 20.53931666666667537.1890333333333359.71511666666667483.39873333333334 100.2259 103.1688166666666793.89213333333336 82.95281666666664 79.42283333333334 84.52501666666667 93.86858333333333 104.42753333333333106.2811833333333594.22186666666667 71.8490666666666748.3172500000000128.47818333333333713.4981666666666664.6005 1.1501 0.221833333333333330.0187333333333333340.0059333333333333330.0764 0.420883333333333331.28036666666666673.64608333333333339.5539 21.13323333333332639.8545166666666864.0892166666666787.2096666666666498.78058333333334 94.86685 81.68353333333332 73.34276666666666 76.1450666666666685.42555000000002 97.29279999999999 107.48258333333338105.5094333333333689.02950000000001 64.9443500000000142.4968833333333425.3411 12.5802166666666673.98988333333333320.60453333333333340.1245 0.0081666666666666660.0038 0.043683333333333330.242033333333333320.87881666666666673.06883333333333359.60745 22.77798333333332443.5750333333333368.97133333333333 90.25669999999998 97.89381666666667 91.08273333333335 79.70675000000001 79.36911666666667 89.3387 101.71451666666667113.03786666666667117.58110000000002107.4267166666666684.5188833333333358.5871666666666838.26344999999998523.73923333333332412.7121 4.2947166666666670.44325 0.079783333333333330.0101666666666666660.00053333333333333330.01825 0.122616666666666670.60733333333333332.917833333333333310.63416666666666725.5538 47.5837166666666672.63223333333333 91.67364999999997 96.88841666666666 91.09773333333334 86.8673 96.96654999999998 111.37183333333333123.97206666666669129.80655 126.59955000000004108.8803333333333481.15763333333334 55.22586666666667637.20460000000000623.97279999999999213.64375 5.102683333333333 0.5847 0.082983333333333340.0108666666666666650.00188333333333333340.00825 0.054166666666666670.466183333333333343.065583333333333512.35126666666666828.52806666666667550.50838333333333573.7506166666667 90.36918333333335 95.0769833333333293.28853333333333 97.82895 115.42131666666667130.26725000000002139.5536 137.10063333333332128.08575000000002106.9945166666666779.55395 56.0965666666666638.9430666666666725.53746666666666314.61625 5.7215833333333330.8203 0.09245 0.00221666666666666670.00073333333333333330.00386666666666666670.0451 0.50558333333333343.56056666666666714.40815 30.98831666666666651.2096333333333471.44043333333333 85.73221666666667 91.38103333333336 94.24243333333334105.0471166666667 123.2042 135.6894333333333 139.1100500000001131.8045 121.43656666666666101.3403 78.3792666666667 58.2829 41.25093333333333626.98011666666666714.8905999999999975.8282833333333331.07956666666666660.148216666666666660.0108333333333333340.00066666666666666660.0039666666666666670.074333333333333330.62296666666666674.469966666666667 16.52896666666666532.55491666666666449.94473333333334666.31171666666665 77.88626666666663 83.70705 89.4484166666667 101.13601666666668115.8574 126.4734166666667 127.42665 121.05681666666669111.2181 95.37233333333332 77.3547833333333 59.6073333333333442.04033333333333626.72876666666666514.2431166666666675.61555 1.2871 0.1915 0.0123 0.0 0.00728333333333333350.1122 0.95335 5.95223333333333418.5244 33.45120000000001448.1763500000000160.4605333333333369.21803333333334 74.68141666666664 80.73669999999997 89.58655 101.95041666666667112.6165 115.43691666666665112.24483333333336104.52415 92.62658333333333 77.26148333333333 59.3285166666666740.8082999999999824.94275000000000712.8348 5.15665 1.41666666666666670.210033333333333320.0088833333333333330.00189999999999999980.0053166666666666670.1805 1.52015 7.62145 20.41786666666665834.9108333333333348.1825666666666558.2768500000000265.9944666666666571.74663333333334 76.5832833333333 83.12219999999996 95.12993333333335 106.5572 112.20138333333334111.3479333333333105.0182833333333393.61858333333332 76.62743333333333 56.7010833333333537.7625666666666522.5467166666666611.3823333333333334.57905 1.29855 0.153933333333333340.0121833333333333320.000249999999999999950.0121833333333333320.286316666666666662.043816666666667 8.723516666666667 21.73446666666666636.8331666666666650.9790666666666762.3501500000000171.27151666666668 77.88029999999995 82.63466666666669 89.96743333333333 101.40631666666667112.44548333333334117.80344999999997115.92461666666664107.4325 92.27738333333335 71.88329999999999 50.80025 32.6939666666666718.7729666666666659.15635 3.64005 1.0685 0.1467 0.0068333333333333340.0 0.0152666666666666660.332 2.25566666666666658.51305 20.69408333333332837.0852166666666653.7940333333333368.8695000000000381.15960000000003 90.40591666666667 97.8863 106.73456666666667117.33951666666665124.95241666666665125.55574999999997118.21625 103.8058333333333483.87638333333334 61.23564999999998540.9525 24.94403333333333413.6286166666666666.5375 2.71388333333333340.74916666666666660.111683333333333330.00168333333333333330.00053333333333333340.0127 0.284233333333333341.8392 6.632583333333334 16.90048333333333432.80946666666666551.5708833333333570.42373333333333 87.25199999999998 100.98513333333337112.45575000000001122.594 130.37229999999997131.8449 124.86803333333334110.0257999999999889.466 66.5912666666666845.5973833333333328.55666666666667616.2958166666666648.511483333333333 4.1090833333333331.70298333333333330.44381666666666670.05905 0.00065 0.00051666666666666670.00098333333333333320.187083333333333321.08796666666666673.944433333333333510.84536666666666723.39063333333333440.6385333333333560.9691833333333281.0054 99.11143333333334 113.10050000000003122.52431666666666125.30225000000002120.61356666666667107.1858666666667 87.70641666666667 65.9730500000000345.3337166666666728.73081666666666216.9034499999999969.16145 4.7089666666666672.2250166666666670.83513333333333330.189116666666666660.0178333333333333330.0012 0.0 0.0 0.064166666666666660.41876666666666671.7327 5.014733333333333 12.03091666666666623.94013333333332540.2565833333333358.8924833333333177.2688666666666792.0322 99.70438333333335 99.16466666666665 90.59210000000002 75.5835 57.5861333333333240.1938 25.49723333333333415.2398333333333358.5236833333333334.419233333333334 2.20506666666666670.98165 0.31036666666666670.0579666666666666660.0096166666666666670.0 0.0 0.0 0.01585 0.1222 0.54363333333333331.60085 4.203316666666667 9.14358333333333416.82761666666666827.07681666666666638.1033833333333347.0437833333333251.60875 50.96225 45.43758333333333636.7445333333333427.44178333333333319.10858333333333212.11415 7.2149 3.95933333333333251.99318333333333350.95123333333333340.399633333333333340.101816666666666670.0221833333333333330.00193333333333333330.0 0.0 0.0 0.00156666666666666670.0177833333333333350.127783333333333330.4745 1.4055 3.18078333333333336.1434 9.8287 13.86933333333333216.71833333333333418.10001666666666517.77540000000000515.80766666666666613.12355 10.49805 7.791166666666669 5.2219333333333333.16213333333333321.69133333333333340.82538333333333340.37058333333333330.139816666666666670.0312666666666666650.00356666666666666760.00173333333333333330.0 0.0 0.0 0.0 0.00063333333333333330.03545 0.163083333333333330.53828333333333331.19935 2.31608333333333333.511433333333333 4.850216666666666 5.98023333333333356.444816666666667 6.2592333333333335.570516666666666 4.45076666666666653.53493333333333352.591816666666667 1.70116666666666671.0086 0.54028333333333330.2384 0.075266666666666660.0161666666666666660.00051666666666666660.00098333333333333320.0 0.0 0.0 0.0 0.0 0.0 0.0025333333333333330.0155833333333333330.0416333333333333350.0892 0.128216666666666670.196733333333333340.33601666666666670.429966666666666660.52598333333333340.59068333333333330.68803333333333340.59206666666666660.482733333333333350.34351666666666670.200433333333333320.088866666666666660.045633333333333330.0192833333333333330.0151166666666666670.002 0.0 0.0 0.0 0.0
maxs 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 116.0 254.0 216.0 9.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16.0 47.0 157.0 254.0 255.0 254.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 244.0 255.0 184.0 197.0 0.0 0.0 0.0 0.0 0.0 0.0 64.0 29.0 134.0 62.0 234.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 165.0 0.0 0.0 0.0 0.0 141.0 101.0 96.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 192.0 121.0 0.0 0.0 38.0 144.0 101.0 254.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 254.0 221.0 63.0 0.0 0.0 95.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 93.0 0.0 7.0 210.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 254.0 253.0 47.0 191.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 253.0 191.0 252.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 254.0 221.0 184.0 254.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 220.0 214.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 254.0 203.0 150.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 253.0 131.0 163.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 254.0 252.0 152.0 32.0 253.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 254.0 252.0 247.0 113.0 188.0 254.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 254.0 52.0 37.0 226.0 254.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 190.0 40.0 107.0 254.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 254.0 223.0 0.0 133.0 254.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 253.0 104.0 60.0 197.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 153.0 15.0 166.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 253.0 128.0 0.0 185.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 51.0 32.0 185.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 252.0 39.0 31.0 38.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 254.0 225.0 72.0 0.0 0.0 217.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 254.0 150.0 0.0 0.0 0.0 253.0 253.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 254.0 252.0 98.0 0.0 0.0 0.0 42.0 254.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 253.0 127.0 104.0 0.0 0.0 0.0 0.0 38.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 137.0 28.0 59.0 0.0 0.0 0.0 0.0 0.0 0.0 94.0 252.0 245.0 254.0 254.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 255.0 254.0 254.0 253.0 253.0 254.0 62.0 0.0 0.0 0.0 0.0
sigma 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.47532377268357611.3611892543502753 0.88181630740194420.036742346141747670.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.06531972647421809 0.19463587655147987 1.0550113919793358 2.095113396626692 2.9620632026842095 3.3238795595291114.869298014081844 5.529033155294823 5.693679284913422 5.6935803931431215 5.923067384824885 5.7661202363353765.970411769091008 5.4134212930765824.330493336707095 3.716560599882697 3.208690079755707 1.9430833894714512 1.2112415578614975 0.806576112324583 0.0 0.0 0.0 0.0 0.0 0.0 0.26127890589687236 0.129742529208421440.81550359590577460.4575187665869585 2.668051767052234.9944663897399467.136273953529336 9.714447782966582 12.930434809487515.54011024982872518.82047495987978221.96458081497739624.79332932879411226.19739635136336326.79951791175344825.73187044600743423.27466419153617 20.0646228456427215.29327837948583211.1141058938628537.468139986467169 3.960830544557408 2.499722770619652 1.102487667447201 0.0 0.0 0.0 0.0 0.6022974831923672 0.65948694165775830.8540205436094832 3.1502166078911937 6.028546788626753 9.92490049576472414.59523058533116 20.58466134434515426.533975139988 32.54253636311326437.7896982609336343.1946457980536747.78964823056373 50.5019817885229 49.98050608190016 47.66323884335466 43.0001129074183136.659663940269628.40477653845687221.02959059500601713.8134748874796188.774667658023525 5.366692868945894 1.8218262805233367 0.5299341221663599 0.0 0.0 0.15513435037626794 0.6719600523052595 0.96353146500156783.3754058189294707 8.148843211185472 13.24457956525435320.82347581710301329.61774888117449639.60380191991459549.8705165310046459.80588708852588669.28249638548552 77.8905114086541583.7831750156334386.4549643894889185.6599388224013381.3923462032180874.0486442179389 64.25996241498316 52.28056090859397 39.9446852076460728.68962212088509719.64464494379163612.1668978851117095.33332891767631352.0803708827715070.35236997833562583 0.0 0.0 0.8668272162774252 2.8730194943387097.628947686035658 16.1418153587729425.68831950353514436.6744425062641649.23591940797952 62.27237396954113574.5514730362555 85.7702624559599595.61844637219473 103.08168552176956107.16691758653556108.49723900081929107.89396414529963105.1098441302861698.9309527008092689.5176856952845876.7350677405659261.87760699400164647.50182813984811 34.88681457776818522.83139033931433611.2721224369958884.435763887491832 0.57255279839078220.0 0.03291379311958004 1.7558649723227636.0891284464179405 14.16685606488733 24.6826466410597937.3405168963364851.75386882215851 66.4342502034718580.5234181784879392.40025602216633101.47826933085474107.7244758586794111.0196831618897 112.17243098681134112.33559114543708112.33178851984607112.15184181642286109.87045289518643103.740229360578193.0709921288367 78.0981823920032561.8645015713042845.96678404202475631.15427814650291817.8244304910917437.7136061414443782.06011795247253640.19187669651801562 1.491458235983624 4.102587201094523 10.06878215494479420.4630085394427833.2255402477416648.20124721486003 63.9818505883771 79.05734303135822 92.26958107678962101.75171160853581107.4687615824787109.95279248845534110.40843393372528110.43213306289043110.12256877972793110.22568799762183110.67403577300983110.98111447006815108.63278120261283101.057946239787987.88357590624251 70.7944470672334 52.84034030855181 35.7029160087204521.3072461565981939.0321567037398122.0716189272656345 0.8092142542928366 2.9339241864053704 7.645433831806417 15.4531146468936226.87658402826469 40.2285864235245456.05771906851164572.6712230873937488.06822225509998100.06556435467444107.23677995229048110.4157132725321 111.10973503049449111.36915603968986111.18749096233776110.80218451356927110.76564898084335111.02039389524045111.38473559297796110.20132231434731104.5990073439411192.6401591332006375.0839251141674 54.85583858872888636.3491680178398121.59890602396518 8.92892805748035 2.0127705417681834 0.8240677361010947 3.764499245999629 9.66277108729549 18.472555991934 29.56044645298224443.3558985402354860.33346888273687478.04267798962854 93.62702960613395104.38315817631086109.98900412614198111.4497766888489 111.335302611036 110.10874771875208108.97515817184349108.74854993288383109.32993536645169110.54164441202559111.13625509008666109.97980674404695104.5786956511246992.8597396198495874.84717278660312 53.04683864037408432.84717752968662618.0863974990911457.452078381012832 1.9968275526595027 1.1548496800530423 4.355173253858382 9.905421314701657 18.16151658510746 29.08829861493553543.45440103558800661.78621620670429 80.3753015725846996.46588146036133 106.33847959667722110.356358726122110.77160085836833107.97539816809683104.07441992062421102.95858076492755105.18904784448564107.40948015080804109.74264579485038110.46527114377865109.12052096947897102.448568955111589.9106095022486871.77545415597669 49.76826074888012428.87527886351040614.1537300899064876.003517636293663 1.5777696974450544 0.8409973742519139 3.6782045248293968.916421120371979 15.61362730506642826.52543093525834542.42782063052564562.43392946791594 82.5263214243099698.85996516250441107.6930370840791110.19047783429298108.81992242846032104.05949238367512100.12177344199833102.7675871823333106.48859009706709107.95254079460597109.93245221071227110.41864870714514107.9281477241588399.0031944616909485.1026938357105768.5691053815556348.67332277704997526.6535123604452559.89240636939694 4.4446292303726820.8949748535882809 0.71639894411153252.690147898285668 6.653231617572885 12.81420571075407 24.09433206349954 42.4842457429783364.67343892842024 85.848723170781 101.51143525606865108.97354415483342110.13875377987739108.18790088958133103.98411464917365103.05023124050895108.90489239195415110.83926577848527109.84282827551502111.10688233308665111.24624574192569106.383964342458894.9942689525239181.39965136586812 66.84820924151123 49.7722412748648327.9198182424343 8.4502861623993013.7098716067870243 1.0246694449171132 0.13063945294843618 1.66906062409052354.800104079049577 10.64141595611762323.4061476134225 44.58841405660619 68.4618990589197389.2532245569945 103.45170895292311109.46851572458212110.09210206462892108.31979367205813106.35282258951983108.71705886265333113.81400778072826111.60669523212262109.9477706411942112.14929817382802111.55060050113323104.6940038030167892.90376366292848 80.72051124418289 67.43449500820742 51.7697064344832131.0189148050720339.8248206783477413.5510806715638674 1.467623185353036 0.46132056822416523 1.0327631452380082.960525637577963 9.080489929220676 23.70076744747622847.96249908436308 72.22148395485446 91.76382787562952 104.2680954169671109.40010463149146109.5551425647716108.38221453228695108.21449578583487111.55106290959459113.7281479184667 109.5227582785865109.84015805070672112.37902835658919111.07364993190274104.2640014854804293.9606255382083682.5036906623683769.32608766803502 53.4760994665629732.9992623657206511.8983822752652453.75135142867993960.3173537956488769 0.15373089943809687 0.9229658245681567 2.4184768224033789.490658742667886 25.3566673879259251.981519775949975.17685042272242 92.43636457165444103.23766876524812108.16900688731148108.53707408933175108.3545599929082109.57744742252447112.60847043400818112.61613200706205109.3275944781527111.35671279739456112.61399206166918109.8448335639916104.1619541163678195.5798798186475384.74770066895643 70.8337354534384 53.50622873630594 33.2114670971563914.0157046372452095.002915713776272 1.1891479611203897 0.16329931618554522 0.5914023685288896 3.4411585135078377 10.26182736897144628.46729886116049755.62299158518387 77.08895075991896 91.52044222714024 100.61028703144954105.07501880746207106.17696261157904107.25739822960607110.0015072093387 112.92726822180045112.64448591178278111.2844392696087112.14668342477381111.23167238009297108.51202644048382104.0305808475673596.8254296777767885.26142561792248 70.36272460871923 52.07428258236654 32.3592557633009515.3136044754775865.6056178487172821.37590464612435510.0 0.815418932117802 4.41774864628108512.90061810702465433.4661045140912459.1114673651926477.97310101546579 90.0350357127996 97.39496054051187101.39109607869071103.22753518349674105.46198925187667108.58139362285566110.8900903373635 111.91682425210182111.7701355306789 111.06045514516181109.85181264074122108.27711350457001104.3629993678810596.7427363996069 84.1144199193612867.77204603134359 49.2170303949220630.63374258146141615.9999579853557035.844660412132123 0.8293868524989252 0.3217112291614684 0.8369986514333604 5.41717720282566716.6493067113238338.2782828378326962.25629755207074 79.5250295178246690.1536151834803896.17548959839418100.0826612274417102.81206451908129104.84874193267399106.41423808398221109.13384818931857111.17699702233573110.9544566159637 110.1974255610004110.20483882674151109.02140141164556104.6386449398395495.3110539345240781.4857704812650464.6467029643156546.29172139753199428.94476028143889615.1988739054455364.877837746779504 1.2482497887767265 0.06123724356957946 1.0799325614567377 7.201708397534547 19.68019017348350341.15270018737450664.4031758135146 81.5437591504289392.3321371400808798.67384736484163102.81246812567574105.47473135254988107.21688932211886108.55633628389151110.31238131079195111.46484992205329111.04948274481573110.60295633896459111.09334171134145109.01110845008328102.5122168021283591.4691853037686876.5539290435164659.25663545133973 41.4907808566244725.80569223175433513.6688583421637545.0270137216624580.8514294183448968 0.0 1.4761785959958718 7.67217420537472520.66270191294113440.7262888915044862.66720661270506681.5290003889298994.50945778964358102.3415244799354106.70542408252801109.08700143107981110.41873819211604111.20125362209579111.60574825018541111.47552870047926111.21619730347977111.2382189340817110.51108516481335106.5312017698832197.66673622887303 83.908962904155467.6085210329844 50.60944555797909 34.920478964081422.31327150571628711.2668051514405614.2901029804402055 0.2915737470630518 0.13063945294843615 1.26880476870649877.018385311054706 18.39496623915672335.24217769252060656.40473299879009 76.79311329856597 92.87921969621217103.29518179294998108.84990767584517111.13763721270266111.45965411833603111.08416040182418110.36132453480195110.59183236815656110.96464378651606110.61208064628272107.5020734168872699.8189586241206187.2359743363177771.55945524398669 54.92388660429738 40.03059507770808527.6347313864160617.5755686330941158.71413463108998 2.92120500047684350.159216833280906580.12655697004379754 0.16375636371756627 5.550435113444233 13.77664902893769726.69845299766942 44.5855946816881 64.91208155578143 83.5428973568501897.9574448149959 107.05118014339136111.52040887645701112.85647718595527112.45059949886965112.1344465236818 112.21631927212758111.29665255222208107.2649645583469299.2597805362173686.5823538117684171.44504692590822 55.77469804233094 41.3275507380367329.5483843559878920.2164371054482 11.9238020474375835.092636887595336 1.4615919094389462 0.29393876913398140.0 0.0 2.8219346840087507 8.067950132626292 17.32921970952324729.77335873691551546.21790809931658 64.73210527556203 82.1405498692653695.70325025150157104.5626679711316109.15037590362509110.54388597580525110.20762683940005107.88092674717468102.883768458619794.0073401604840381.6835773682417167.1112280046662 52.76676781367209 39.9349556876906828.75859919564958720.20677822481834 13.2479711059143087.165037438486543 2.9966797516108477 0.9244665653027849 0.0 0.0 0.0 1.53101420989764654.2504550657709319.443342403204031 16.7962892092178127.36383182209542440.9250483382253355.43145296748069569.69996951669992 81.0379383232148988.2425359191292491.1008552623665790.5546458996025286.19310505109458 78.5049863851357269.33214305010858 58.83424726130099 47.3758802311678637.07361719886803527.38639528061935419.58465716267860713.3180020260243358.364491971681323 3.953704241511081 1.9494412631340112 0.4067747369863731 0.0 0.0 0.0 0.23508537450844819 1.621956924662298 4.629122872211501 9.20408939933917816.19778511260235724.77419955119531 34.9504753716189844.0644983818450852.01557926778922 56.70271319655071 58.86129337290067658.24608769367142 54.65443129033439 49.8560004320157144.9168931285209438.75698118230308631.9014191001680324.76900491559893417.99973309233812212.5662189029694828.069114150250638 4.868510690104441 1.9924077286116681 0.6284588516609708 0.42457822208241747 0.0 0.0 0.0 0.0 0.15513435037626794 2.3443801382889855.19882079148877 10.09348299777498215.1380314300580821.37086380776532526.20903885763178630.79270614066876634.15245499885179 35.28982021759115634.6706936623551432.79184221441341429.06034097877240526.10116857241394722.25130157331814518.10705837691313 13.89710203114595510.3178543419498116.5525654804236483.5003055768329348 1.2417585668295295 0.11496355944046882 0.24086649137367916 0.0 0.0 0.0 0.0 0.0 0.0 0.43752726321604596 1.7211981878260227 2.6012201184554335 4.0326270669814024.776046900606069 6.177879795329056 7.680724316440212 9.093558537723476 9.898373157388454 10.43198240847211811.40301322505294710.5173032327688649.397895537631346 8.05773304042467 6.0424720385529715 3.956188852847255 2.839844833355075 1.686769764844296 1.678283378030611 0.346599676171601030.0 0.0 0.0 0.0
zeros 60000 60000 60000 60000 60000 60000 60000 60000 60000 60000 60000 60000 59998 59998 59999 59999 60000 60000 60000 60000 60000 60000 60000 60000 60000 60000 60000 60000 60000 60000 60000 60000 59999 59998 59994 59986 59981 59965 59950 59934 59917 59917 59920 59918 59920 59932 59952 59970 59978 59987 59995 59998 60000 60000 60000 60000 60000 60000 59999 59998 59992 59988 59968 59928 59866 59765 59604 59401 59163 58864 58649 58462 58461 58575 58838 59176 59495 59720 59862 59942 59983 59995 60000 60000 60000 60000 59997 59992 59982 59947 59870 59708 59401 58994 58429 57722 56930 56085 55397 54898 54889 55380 56219 57224 58216 58986 59466 59782 59915 59978 59998 60000 60000 59999 59994 59982 59918 59717 59352 58722 57657 56283 54394 52093 49455 46769 44768 43630 43794 45268 47825 50752 53660 56041 57723 58915 59520 59850 59981 59998 60000 60000 59990 59940 59703 59167 58194 56581 54324 51292 47620 43300 38941 34816 31917 30312 30538 32738 36439 41347 46437 50720 54309 56845 58426 59454 59903 59995 60000 59998 59975 59859 59391 58372 56616 53970 50364 45853 40438 34690 29643 25396 22662 21433 21945 24184 28242 33973 40395 46227 51246 54931 57409 59020 59778 59981 59999 59982 59929 59644 58829 57215 54577 50829 45856 39822 33078 27001 22489 19449 17987 17303 17648 19259 22679 28349 35437 42469 48657 53504 56686 58715 59713 59977 59998 59971 59813 59361 58305 56306 53016 48370 42435 35362 28612 23753 21280 20403 20370 20146 19923 20223 22206 26755 33617 41021 47762 53091 56675 58733 59751 59986 59997 59956 59750 59243 58077 55807 52136 46824 40066 32676 26908 23946 23723 24782 25826 25615 24263 23049 23664 27292 33823 41364 47987 53375 57122 59015 59790 59984 59997 59953 59746 59266 58142 55691 51707 45731 38505 31377 26777 25890 27410 29565 30475 29573 26801 24474 24732 28599 35209 42646 48959 54095 57702 59392 59869 59989 59996 59959 59806 59409 58357 55760 51324 44724 37242 30732 27301 27788 30266 31953 32223 29885 25772 23730 24921 29915 36897 44190 50246 54678 57955 59630 59921 59991 59998 59974 59876 59577 58544 55644 50772 43795 36191 30214 27763 29019 31030 30899 29997 26103 21955 21613 24606 30779 38334 45393 50882 54931 57943 59716 59953 59993 59999 59985 59938 59691 58625 55307 50038 42798 35369 29967 28062 28966 29197 27034 25010 20299 18014 19992 24406 31314 39168 45940 50970 54787 57750 59658 59951 59995 59999 59993 59966 59734 58458 54655 49061 42079 35264 30457 28442 28081 25981 23040 20270 16598 16640 19985 24782 31827 39357 45586 50555 54478 57518 59554 59947 59996 59998 59998 59966 59715 58231 53910 48471 41983 35858 31702 29258 27654 24686 21652 18742 16436 18154 21563 25846 32429 39183 45116 50081 54186 57398 59467 59925 59993 59999 59996 59954 59630 57788 53225 48068 42308 37073 33544 31145 29109 26472 23438 20661 19283 20997 23415 27317 32993 39132 44882 49991 54248 57435 59391 59897 59991 60000 59993 59941 59490 57365 52696 47782 42751 38623 35812 33812 32228 29831 26461 23561 22406 22843 24520 28301 33483 39423 45210 50352 54575 57533 59320 59887 59989 59997 59993 59892 59270 56856 52235 47473 42915 39356 36955 35274 33819 31305 27966 24816 22946 22640 24660 28708 34057 40264 46173 51133 55131 57779 59345 59902 59992 59999 59991 59857 59092 56517 52055 47080 42266 38468 35725 33787 32129 29525 26131 23231 21385 21613 24649 29316 35298 41913 47794 52418 55963 58202 59464 59921 59995 60000 59990 59834 59014 56565 52160 46898 41597 36928 33036 29985 27456 24840 21956 19910 19599 21376 25686 31527 38435 44904 50153 54143 56943 58675 59590 59939 59998 59999 59992 59852 59118 56992 53122 47828 42192 36639 31576 27090 23360 20325 18329 18065 19863 23491 29315 36118 42933 48703 52953 56024 57984 59130 59739 59958 59999 59999 59996 59896 59392 57954 54879 50316 44770 39027 33410 28442 24483 21765 20846 22000 25325 30060 36271 42685 48315 52765 55744 57671 58857 59508 59858 59980 59999 60000 60000 59950 59700 58978 57269 54066 49623 44505 39021 33899 30144 28013 27901 29740 33513 38426 43961 49078 53194 56043 57845 58871 59461 59797 59954 59992 60000 60000 60000 59986 59904 59669 59063 57745 55670 52833 49481 46113 43313 41801 41891 43224 45654 48752 51884 54599 56763 58179 59052 59529 59790 59929 59988 59998 60000 60000 60000 59997 59989 59929 59740 59327 58601 57571 56251 54859 53789 53236 53303 53852 54758 55767 56810 57840 58666 59233 59617 59800 59916 59977 59998 59999 60000 60000 60000 60000 59999 59974 59903 59748 59467 59073 58558 58030 57606 57401 57452 57693 58081 58480 58889 59292 59567 59766 59875 59946 59983 59998 59999 60000 60000 60000 60000 60000 60000 59997 59994 59978 59959 59936 59912 59844 59812 59766 59722 59708 59735 59778 59837 59904 59947 59974 59986 59993 59998 60000 60000 60000 60000
missing0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 25.0 105.0 105.0 105.0 123.0 253.0 253.0 253.0 253.0 255.0 253.0 156.0 55.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 183.0 252.0 252.0 252.0 252.0 252.0 252.0 252.0 252.0 253.0 252.0 252.0 231.0 164.0 18.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 208.0 252.0 252.0 252.0 252.0 252.0 252.0 252.0 252.0 253.0 252.0 252.0 252.0 252.0 74.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 110.0 210.0 252.0 216.0 132.0 132.0 132.0 132.0 132.0 133.0 160.0 252.0 252.0 252.0 143.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 19.0 29.0 20.0 0.0 0.0 0.0 0.0 0.0 0.0 60.0 252.0 252.0 252.0 178.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13.0 170.0 252.0 252.0 243.0 65.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 183.0 252.0 252.0 252.0 177.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 53.0 253.0 252.0 252.0 209.0 27.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 61.0 228.0 253.0 252.0 240.0 31.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 193.0 252.0 253.0 216.0 97.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 56.0 245.0 253.0 253.0 255.0 131.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 61.0 231.0 252.0 252.0 252.0 44.0 8.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 49.0 226.0 252.0 252.0 249.0 148.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 57.0 158.0 252.0 252.0 252.0 136.0 0.0 0.0 0.0 0.0 0.0 0.0 85.0 120.0 120.0 28.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14.0 237.0 252.0 252.0 252.0 172.0 7.0 0.0 0.0 18.0 75.0 75.0 119.0 243.0 252.0 252.0 190.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15.0 252.0 252.0 252.0 252.0 85.0 30.0 30.0 179.0 196.0 252.0 252.0 252.0 252.0 252.0 252.0 207.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15.0 252.0 252.0 252.0 252.0 252.0 252.0 252.0 253.0 252.0 252.0 252.0 252.0 252.0 252.0 252.0 207.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15.0 252.0 252.0 252.0 252.0 252.0 252.0 252.0 253.0 252.0 252.0 209.0 162.0 162.0 162.0 162.0 133.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13.0 207.0 246.0 252.0 252.0 252.0 252.0 225.0 208.0 171.0 59.0 31.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 135.0 252.0 172.0 103.0 103.0 43.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2
1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7.0 210.0 253.0 205.0 78.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 89.0 252.0 252.0 252.0 229.0 49.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 213.0 252.0 252.0 252.0 253.0 212.0 17.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 67.0 230.0 230.0 249.0 253.0 252.0 201.0 6.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 125.0 253.0 252.0 252.0 35.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 128.0 252.0 252.0 121.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27.0 122.0 69.0 32.0 249.0 252.0 126.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7.0 214.0 252.0 209.0 20.0 176.0 252.0 211.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12.0 252.0 252.0 252.0 216.0 233.0 252.0 121.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12.0 252.0 252.0 252.0 253.0 252.0 252.0 121.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12.0 253.0 253.0 253.0 255.0 253.0 253.0 107.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.0 96.0 235.0 252.0 253.0 252.0 183.0 3.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 32.0 92.0 210.0 252.0 192.0 4.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 86.0 252.0 252.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 54.0 165.0 46.0 34.0 252.0 252.0 35.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9.0 231.0 252.0 229.0 72.0 252.0 252.0 121.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12.0 252.0 252.0 252.0 244.0 252.0 252.0 121.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12.0 252.0 252.0 252.0 253.0 252.0 252.0 102.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12.0 252.0 252.0 252.0 253.0 252.0 179.0 3.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 33.0 66.0 238.0 253.0 252.0 58.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3
2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 56.0 91.0 202.0 254.0 254.0 254.0 107.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.0 17.0 60.0 225.0 253.0 253.0 253.0 253.0 253.0 241.0 96.0 3.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 53.0 135.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 32.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 48.0 224.0 253.0 253.0 253.0 253.0 253.0 230.0 220.0 220.0 235.0 253.0 253.0 166.0 14.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 53.0 224.0 253.0 253.0 253.0 253.0 253.0 133.0 42.0 0.0 0.0 116.0 253.0 253.0 253.0 177.0 8.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.0 135.0 253.0 253.0 253.0 226.0 161.0 40.0 2.0 0.0 0.0 0.0 93.0 244.0 253.0 253.0 253.0 15.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 108.0 253.0 253.0 253.0 135.0 51.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 93.0 186.0 253.0 253.0 106.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 83.0 246.0 253.0 253.0 141.0 4.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12.0 224.0 253.0 198.0 24.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 91.0 253.0 253.0 131.0 50.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 222.0 253.0 253.0 89.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 143.0 253.0 149.0 2.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 222.0 253.0 253.0 89.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 254.0 253.0 146.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 222.0 253.0 253.0 89.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 254.0 253.0 146.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 222.0 253.0 253.0 89.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 254.0 253.0 146.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 222.0 253.0 253.0 89.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 254.0 253.0 146.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 60.0 236.0 253.0 219.0 49.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 255.0 253.0 233.0 78.0 22.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 61.0 230.0 253.0 253.0 179.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 169.0 253.0 253.0 253.0 194.0 21.0 0.0 0.0 0.0 0.0 0.0 0.0 99.0 131.0 230.0 253.0 253.0 253.0 94.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 70.0 236.0 253.0 253.0 253.0 226.0 222.0 222.0 222.0 222.0 222.0 222.0 245.0 253.0 253.0 253.0 253.0 253.0 15.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 85.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 219.0 106.0 7.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 15.0 37.0 179.0 193.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 193.0 179.0 32.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18.0 89.0 131.0 253.0 253.0 253.0 253.0 130.0 89.0 17.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0
3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10.0 216.0 163.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 174.0 254.0 162.0 40.0 148.0 185.0 40.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 127.0 252.0 181.0 133.0 233.0 254.0 254.0 226.0 39.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 115.0 254.0 245.0 88.0 233.0 251.0 185.0 207.0 254.0 189.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 44.0 230.0 254.0 123.0 163.0 225.0 66.0 0.0 67.0 251.0 189.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 120.0 254.0 254.0 21.0 163.0 162.0 0.0 0.0 0.0 193.0 248.0 39.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 187.0 254.0 200.0 8.0 132.0 131.0 0.0 0.0 0.0 136.0 254.0 43.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 28.0 237.0 254.0 84.0 0.0 0.0 0.0 0.0 0.0 0.0 136.0 254.0 90.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 135.0 254.0 209.0 5.0 0.0 0.0 0.0 0.0 0.0 0.0 236.0 254.0 43.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 190.0 254.0 205.0 0.0 0.0 0.0 0.0 0.0 0.0 21.0 247.0 241.0 34.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16.0 214.0 254.0 120.0 0.0 0.0 0.0 0.0 0.0 0.0 137.0 254.0 189.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 53.0 254.0 254.0 89.0 0.0 0.0 0.0 0.0 0.0 0.0 207.0 254.0 133.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 152.0 254.0 218.0 0.0 0.0 0.0 0.0 0.0 0.0 40.0 238.0 211.0 28.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.0 235.0 254.0 135.0 0.0 0.0 0.0 0.0 0.0 9.0 181.0 254.0 119.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6.0 254.0 254.0 135.0 0.0 0.0 0.0 0.0 0.0 34.0 254.0 254.0 61.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6.0 254.0 254.0 135.0 0.0 0.0 0.0 0.0 92.0 215.0 255.0 159.0 4.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6.0 254.0 254.0 179.0 0.0 0.0 7.0 173.0 246.0 254.0 160.0 8.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 94.0 254.0 254.0 250.0 250.0 250.0 254.0 254.0 159.0 2.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 13.0 179.0 254.0 254.0 254.0 254.0 254.0 159.0 5.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12.0 89.0 213.0 254.0 154.0 77.0 8.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0
4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 77.0 133.0 151.0 254.0 254.0 220.0 93.0 2.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 11.0 83.0 254.0 253.0 253.0 253.0 253.0 253.0 253.0 47.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 110.0 253.0 254.0 253.0 253.0 253.0 253.0 253.0 253.0 170.0 4.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 110.0 253.0 254.0 253.0 206.0 84.0 170.0 242.0 253.0 253.0 24.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 84.0 251.0 254.0 149.0 28.0 0.0 44.0 236.0 253.0 253.0 24.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 57.0 60.0 26.0 0.0 0.0 153.0 253.0 253.0 179.0 6.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 17.0 206.0 253.0 253.0 58.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 96.0 253.0 253.0 253.0 36.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 34.0 246.0 253.0 253.0 176.0 4.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12.0 140.0 253.0 253.0 218.0 30.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 146.0 254.0 254.0 254.0 175.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 19.0 207.0 253.0 253.0 236.0 54.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18.0 209.0 253.0 253.0 253.0 72.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7.0 49.0 135.0 169.0 169.0 169.0 169.0 210.0 254.0 253.0 253.0 198.0 24.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 124.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 254.0 253.0 253.0 125.0 90.0 182.0 182.0 55.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 19.0 231.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 254.0 253.0 253.0 253.0 253.0 253.0 253.0 184.0 7.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 25.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 254.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 24.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 4.0 171.0 253.0 253.0 253.0 253.0 253.0 253.0 160.0 36.0 36.0 111.0 175.0 253.0 253.0 253.0 170.0 15.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 157.0 253.0 253.0 253.0 253.0 253.0 103.0 1.0 0.0 0.0 0.0 5.0 24.0 24.0 24.0 4.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 42.0 253.0 253.0 253.0 155.0 28.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2
5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 22.0 159.0 244.0 255.0 248.0 165.0 137.0 77.0 77.0 11.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6.0 128.0 152.0 212.0 254.0 254.0 254.0 254.0 254.0 254.0 254.0 254.0 243.0 191.0 16.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 89.0 254.0 254.0 205.0 122.0 37.0 26.0 26.0 28.0 116.0 218.0 254.0 254.0 181.0 7.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 43.0 245.0 254.0 199.0 2.0 0.0 0.0 0.0 0.0 0.0 84.0 250.0 254.0 175.0 22.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 30.0 181.0 254.0 207.0 17.0 0.0 0.0 0.0 0.0 0.0 51.0 236.0 254.0 222.0 39.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 138.0 254.0 237.0 41.0 0.0 0.0 0.0 0.0 0.0 11.0 210.0 254.0 224.0 37.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 109.0 242.0 123.0 0.0 0.0 0.0 0.0 0.0 0.0 168.0 254.0 254.0 68.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 4.0 0.0 0.0 0.0 0.0 0.0 0.0 144.0 253.0 254.0 119.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 115.0 251.0 254.0 145.0 6.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 115.0 250.0 254.0 206.0 9.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 88.0 245.0 254.0 217.0 31.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 80.0 252.0 254.0 228.0 26.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 44.0 254.0 254.0 231.0 45.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 15.0 232.0 254.0 254.0 47.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 164.0 254.0 254.0 107.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 52.0 249.0 254.0 187.0 2.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 57.0 236.0 254.0 232.0 11.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 29.0 223.0 254.0 234.0 53.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 63.0 254.0 239.0 54.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 63.0 254.0 186.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 7
6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 211.0 254.0 254.0 254.0 254.0 255.0 223.0 141.0 14.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 249.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 64.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 127.0 252.0 253.0 253.0 253.0 253.0 253.0 253.0 245.0 48.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 194.0 253.0 253.0 253.0 253.0 248.0 224.0 133.0 37.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 165.0 253.0 253.0 143.0 79.0 58.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 84.0 253.0 253.0 94.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 249.0 253.0 128.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 249.0 253.0 193.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 249.0 253.0 193.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 249.0 253.0 205.0 8.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 249.0 253.0 205.0 8.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 249.0 253.0 231.0 25.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 249.0 253.0 203.0 6.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 18.0 156.0 102.0 35.0 0.0 0.0 0.0 249.0 253.0 193.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 65.0 253.0 253.0 227.0 84.0 0.0 47.0 251.0 253.0 184.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 45.0 243.0 253.0 253.0 229.0 113.0 95.0 253.0 253.0 94.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 25.0 212.0 253.0 253.0 251.0 242.0 253.0 253.0 94.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 45.0 200.0 253.0 253.0 253.0 253.0 253.0 94.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 17.0 196.0 253.0 253.0 253.0 192.0 4.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 19.0 125.0 253.0 253.0 71.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5
7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 42.0 118.0 143.0 255.0 254.0 254.0 254.0 210.0 118.0 35.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 102.0 241.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 253.0 217.0 37.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 78.0 177.0 239.0 253.0 253.0 210.0 177.0 208.0 253.0 253.0 253.0 136.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 61.0 61.0 27.0 0.0 25.0 124.0 253.0 253.0 232.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 27.0 217.0 253.0 232.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 199.0 253.0 232.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 43.0 227.0 253.0 232.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 83.0 253.0 253.0 232.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 131.0 253.0 253.0 232.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 66.0 229.0 253.0 242.0 95.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 33.0 49.0 49.0 49.0 49.0 49.0 49.0 43.0 0.0 24.0 243.0 253.0 253.0 186.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9.0 58.0 225.0 253.0 253.0 253.0 253.0 253.0 253.0 244.0 165.0 208.0 253.0 253.0 198.0 26.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3.0 81.0 253.0 253.0 249.0 246.0 112.0 157.0 248.0 253.0 253.0 253.0 253.0 253.0 206.0 24.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 163.0 253.0 253.0 169.0 53.0 0.0 0.0 0.0 69.0 253.0 253.0 253.0 253.0 253.0 170.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 234.0 253.0 144.0 4.0 0.0 0.0 0.0 93.0 219.0 253.0 253.0 253.0 253.0 253.0 170.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 234.0 212.0 91.0 27.0 5.0 83.0 142.0 250.0 253.0 253.0 244.0 173.0 253.0 253.0 242.0 92.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 234.0 253.0 253.0 217.0 202.0 253.0 253.0 253.0 253.0 181.0 48.0 2.0 122.0 250.0 253.0 206.0 19.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 196.0 224.0 253.0 253.0 253.0 253.0 235.0 163.0 75.0 20.0 0.0 0.0 0.0 241.0 253.0 253.0 75.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 29.0 96.0 188.0 225.0 96.0 54.0 0.0 0.0 0.0 0.0 0.0 0.0 241.0 253.0 253.0 75.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 166.0 253.0 253.0 75.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2
8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 5.0 13.0 185.0 197.0 253.0 253.0 84.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 109.0 252.0 252.0 253.0 252.0 252.0 84.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 128.0 239.0 252.0 252.0 253.0 231.0 141.0 32.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 14.0 214.0 252.0 252.0 206.0 222.0 36.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 159.0 252.0 252.0 252.0 11.0 92.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 47.0 238.0 252.0 252.0 134.0 3.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 158.0 252.0 252.0 173.0 5.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 19.0 208.0 252.0 220.0 97.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 49.0 252.0 252.0 167.0 0.0 0.0 53.0 53.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 49.0 252.0 252.0 208.0 167.0 241.0 246.0 248.0 241.0 224.0 40.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 107.0 253.0 253.0 253.0 253.0 253.0 253.0 255.0 253.0 253.0 253.0 167.0 32.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 49.0 252.0 252.0 252.0 252.0 252.0 241.0 253.0 252.0 252.0 252.0 252.0 71.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 49.0 252.0 252.0 199.0 96.0 96.0 50.0 104.0 252.0 252.0 252.0 252.0 190.0 7.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 49.0 252.0 252.0 184.0 7.0 0.0 0.0 4.0 84.0 188.0 252.0 252.0 252.0 48.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 49.0 252.0 252.0 252.0 64.0 0.0 0.0 0.0 0.0 157.0 252.0 252.0 252.0 48.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 12.0 163.0 252.0 252.0 229.0 53.0 0.0 10.0 193.0 230.0 252.0 252.0 197.0 12.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 41.0 232.0 252.0 252.0 232.0 205.0 208.0 252.0 252.0 252.0 252.0 82.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 120.0 188.0 252.0 252.0 252.0 253.0 252.0 252.0 252.0 154.0 9.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 49.0 237.0 252.0 252.0 253.0 252.0 236.0 121.0 7.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 159.0 142.0 189.0 132.0 121.0 10.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6
9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 19.0 29.0 128.0 204.0 228.0 104.0 4.0 0.0 0.0 0.0 0.0 0.0 7.0 79.0 4.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 45.0 225.0 252.0 252.0 253.0 252.0 252.0 28.0 0.0 0.0 0.0 0.0 19.0 187.0 252.0 28.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 89.0 229.0 252.0 252.0 252.0 253.0 252.0 252.0 65.0 0.0 0.0 0.0 38.0 204.0 252.0 252.0 28.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 38.0 225.0 253.0 252.0 252.0 252.0 253.0 252.0 252.0 90.0 0.0 0.0 89.0 225.0 253.0 252.0 214.0 15.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 198.0 253.0 255.0 253.0 253.0 228.0 226.0 200.0 163.0 25.0 41.0 216.0 253.0 253.0 254.0 247.0 50.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 26.0 222.0 252.0 253.0 252.0 121.0 9.0 0.0 0.0 19.0 144.0 253.0 252.0 252.0 252.0 253.0 121.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 19.0 215.0 252.0 253.0 208.0 13.0 0.0 0.0 57.0 191.0 252.0 253.0 252.0 252.0 252.0 194.0 19.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 32.0 228.0 252.0 253.0 246.0 137.0 113.0 226.0 243.0 252.0 252.0 253.0 252.0 252.0 202.0 63.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 126.0 250.0 254.0 253.0 253.0 253.0 254.0 253.0 253.0 253.0 254.0 234.0 187.0 63.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 150.0 253.0 252.0 252.0 252.0 253.0 252.0 252.0 177.0 84.0 28.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 113.0 253.0 252.0 252.0 252.0 253.0 252.0 252.0 139.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 89.0 225.0 253.0 252.0 252.0 252.0 253.0 252.0 252.0 240.0 51.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 32.0 229.0 253.0 254.0 247.0 137.0 63.0 13.0 188.0 247.0 253.0 126.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 82.0 252.0 252.0 247.0 152.0 0.0 0.0 0.0 13.0 209.0 252.0 225.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 23.0 234.0 252.0 252.0 187.0 0.0 0.0 0.0 98.0 209.0 252.0 252.0 187.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 128.0 252.0 252.0 252.0 175.0 113.0 150.0 225.0 253.0 252.0 252.0 252.0 13.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 141.0 253.0 253.0 253.0 254.0 253.0 253.0 253.0 254.0 253.0 244.0 125.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 116.0 252.0 252.0 252.0 253.0 252.0 252.0 252.0 253.0 240.0 81.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 19.0 224.0 252.0 252.0 253.0 252.0 252.0 252.0 244.0 81.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 19.0 28.0 128.0 153.0 252.0 164.0 90.0 25.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 8
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "train.describe()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# split into 40% training, 30% validation, and 30% test\n", "train, valid = train.split_frame([0.8])" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "label\n", "['pixel0', 'pixel1', 'pixel2', 'pixel3', 'pixel4', 'pixel5', 'pixel6', 'pixel7', 'pixel8', 'pixel9', 'pixel10', 'pixel11', 'pixel12', 'pixel13', 'pixel14', 'pixel15', 'pixel16', 'pixel17', 'pixel18', 'pixel19', 'pixel20', 'pixel21', 'pixel22', 'pixel23', 'pixel24', 'pixel25', 'pixel26', 'pixel27', 'pixel28', 'pixel29', 'pixel30', 'pixel31', 'pixel32', 'pixel33', 'pixel34', 'pixel35', 'pixel36', 'pixel37', 'pixel38', 'pixel39', 'pixel40', 'pixel41', 'pixel42', 'pixel43', 'pixel44', 'pixel45', 'pixel46', 'pixel47', 'pixel48', 'pixel49', 'pixel50', 'pixel51', 'pixel52', 'pixel53', 'pixel54', 'pixel55', 'pixel56', 'pixel57', 'pixel58', 'pixel59', 'pixel60', 'pixel61', 'pixel62', 'pixel63', 'pixel64', 'pixel65', 'pixel66', 'pixel67', 'pixel68', 'pixel69', 'pixel70', 'pixel71', 'pixel72', 'pixel73', 'pixel74', 'pixel75', 'pixel76', 'pixel77', 'pixel78', 'pixel79', 'pixel80', 'pixel81', 'pixel82', 'pixel83', 'pixel84', 'pixel85', 'pixel86', 'pixel87', 'pixel88', 'pixel89', 'pixel90', 'pixel91', 'pixel92', 'pixel93', 'pixel94', 'pixel95', 'pixel96', 'pixel97', 'pixel98', 'pixel99', 'pixel100', 'pixel101', 'pixel102', 'pixel103', 'pixel104', 'pixel105', 'pixel106', 'pixel107', 'pixel108', 'pixel109', 'pixel110', 'pixel111', 'pixel112', 'pixel113', 'pixel114', 'pixel115', 'pixel116', 'pixel117', 'pixel118', 'pixel119', 'pixel120', 'pixel121', 'pixel122', 'pixel123', 'pixel124', 'pixel125', 'pixel126', 'pixel127', 'pixel128', 'pixel129', 'pixel130', 'pixel131', 'pixel132', 'pixel133', 'pixel134', 'pixel135', 'pixel136', 'pixel137', 'pixel138', 'pixel139', 'pixel140', 'pixel141', 'pixel142', 'pixel143', 'pixel144', 'pixel145', 'pixel146', 'pixel147', 'pixel148', 'pixel149', 'pixel150', 'pixel151', 'pixel152', 'pixel153', 'pixel154', 'pixel155', 'pixel156', 'pixel157', 'pixel158', 'pixel159', 'pixel160', 'pixel161', 'pixel162', 'pixel163', 'pixel164', 'pixel165', 'pixel166', 'pixel167', 'pixel168', 'pixel169', 'pixel170', 'pixel171', 'pixel172', 'pixel173', 'pixel174', 'pixel175', 'pixel176', 'pixel177', 'pixel178', 'pixel179', 'pixel180', 'pixel181', 'pixel182', 'pixel183', 'pixel184', 'pixel185', 'pixel186', 'pixel187', 'pixel188', 'pixel189', 'pixel190', 'pixel191', 'pixel192', 'pixel193', 'pixel194', 'pixel195', 'pixel196', 'pixel197', 'pixel198', 'pixel199', 'pixel200', 'pixel201', 'pixel202', 'pixel203', 'pixel204', 'pixel205', 'pixel206', 'pixel207', 'pixel208', 'pixel209', 'pixel210', 'pixel211', 'pixel212', 'pixel213', 'pixel214', 'pixel215', 'pixel216', 'pixel217', 'pixel218', 'pixel219', 'pixel220', 'pixel221', 'pixel222', 'pixel223', 'pixel224', 'pixel225', 'pixel226', 'pixel227', 'pixel228', 'pixel229', 'pixel230', 'pixel231', 'pixel232', 'pixel233', 'pixel234', 'pixel235', 'pixel236', 'pixel237', 'pixel238', 'pixel239', 'pixel240', 'pixel241', 'pixel242', 'pixel243', 'pixel244', 'pixel245', 'pixel246', 'pixel247', 'pixel248', 'pixel249', 'pixel250', 'pixel251', 'pixel252', 'pixel253', 'pixel254', 'pixel255', 'pixel256', 'pixel257', 'pixel258', 'pixel259', 'pixel260', 'pixel261', 'pixel262', 'pixel263', 'pixel264', 'pixel265', 'pixel266', 'pixel267', 'pixel268', 'pixel269', 'pixel270', 'pixel271', 'pixel272', 'pixel273', 'pixel274', 'pixel275', 'pixel276', 'pixel277', 'pixel278', 'pixel279', 'pixel280', 'pixel281', 'pixel282', 'pixel283', 'pixel284', 'pixel285', 'pixel286', 'pixel287', 'pixel288', 'pixel289', 'pixel290', 'pixel291', 'pixel292', 'pixel293', 'pixel294', 'pixel295', 'pixel296', 'pixel297', 'pixel298', 'pixel299', 'pixel300', 'pixel301', 'pixel302', 'pixel303', 'pixel304', 'pixel305', 'pixel306', 'pixel307', 'pixel308', 'pixel309', 'pixel310', 'pixel311', 'pixel312', 'pixel313', 'pixel314', 'pixel315', 'pixel316', 'pixel317', 'pixel318', 'pixel319', 'pixel320', 'pixel321', 'pixel322', 'pixel323', 'pixel324', 'pixel325', 'pixel326', 'pixel327', 'pixel328', 'pixel329', 'pixel330', 'pixel331', 'pixel332', 'pixel333', 'pixel334', 'pixel335', 'pixel336', 'pixel337', 'pixel338', 'pixel339', 'pixel340', 'pixel341', 'pixel342', 'pixel343', 'pixel344', 'pixel345', 'pixel346', 'pixel347', 'pixel348', 'pixel349', 'pixel350', 'pixel351', 'pixel352', 'pixel353', 'pixel354', 'pixel355', 'pixel356', 'pixel357', 'pixel358', 'pixel359', 'pixel360', 'pixel361', 'pixel362', 'pixel363', 'pixel364', 'pixel365', 'pixel366', 'pixel367', 'pixel368', 'pixel369', 'pixel370', 'pixel371', 'pixel372', 'pixel373', 'pixel374', 'pixel375', 'pixel376', 'pixel377', 'pixel378', 'pixel379', 'pixel380', 'pixel381', 'pixel382', 'pixel383', 'pixel384', 'pixel385', 'pixel386', 'pixel387', 'pixel388', 'pixel389', 'pixel390', 'pixel391', 'pixel392', 'pixel393', 'pixel394', 'pixel395', 'pixel396', 'pixel397', 'pixel398', 'pixel399', 'pixel400', 'pixel401', 'pixel402', 'pixel403', 'pixel404', 'pixel405', 'pixel406', 'pixel407', 'pixel408', 'pixel409', 'pixel410', 'pixel411', 'pixel412', 'pixel413', 'pixel414', 'pixel415', 'pixel416', 'pixel417', 'pixel418', 'pixel419', 'pixel420', 'pixel421', 'pixel422', 'pixel423', 'pixel424', 'pixel425', 'pixel426', 'pixel427', 'pixel428', 'pixel429', 'pixel430', 'pixel431', 'pixel432', 'pixel433', 'pixel434', 'pixel435', 'pixel436', 'pixel437', 'pixel438', 'pixel439', 'pixel440', 'pixel441', 'pixel442', 'pixel443', 'pixel444', 'pixel445', 'pixel446', 'pixel447', 'pixel448', 'pixel449', 'pixel450', 'pixel451', 'pixel452', 'pixel453', 'pixel454', 'pixel455', 'pixel456', 'pixel457', 'pixel458', 'pixel459', 'pixel460', 'pixel461', 'pixel462', 'pixel463', 'pixel464', 'pixel465', 'pixel466', 'pixel467', 'pixel468', 'pixel469', 'pixel470', 'pixel471', 'pixel472', 'pixel473', 'pixel474', 'pixel475', 'pixel476', 'pixel477', 'pixel478', 'pixel479', 'pixel480', 'pixel481', 'pixel482', 'pixel483', 'pixel484', 'pixel485', 'pixel486', 'pixel487', 'pixel488', 'pixel489', 'pixel490', 'pixel491', 'pixel492', 'pixel493', 'pixel494', 'pixel495', 'pixel496', 'pixel497', 'pixel498', 'pixel499', 'pixel500', 'pixel501', 'pixel502', 'pixel503', 'pixel504', 'pixel505', 'pixel506', 'pixel507', 'pixel508', 'pixel509', 'pixel510', 'pixel511', 'pixel512', 'pixel513', 'pixel514', 'pixel515', 'pixel516', 'pixel517', 'pixel518', 'pixel519', 'pixel520', 'pixel521', 'pixel522', 'pixel523', 'pixel524', 'pixel525', 'pixel526', 'pixel527', 'pixel528', 'pixel529', 'pixel530', 'pixel531', 'pixel532', 'pixel533', 'pixel534', 'pixel535', 'pixel536', 'pixel537', 'pixel538', 'pixel539', 'pixel540', 'pixel541', 'pixel542', 'pixel543', 'pixel544', 'pixel545', 'pixel546', 'pixel547', 'pixel548', 'pixel549', 'pixel550', 'pixel551', 'pixel552', 'pixel553', 'pixel554', 'pixel555', 'pixel556', 'pixel557', 'pixel558', 'pixel559', 'pixel560', 'pixel561', 'pixel562', 'pixel563', 'pixel564', 'pixel565', 'pixel566', 'pixel567', 'pixel568', 'pixel569', 'pixel570', 'pixel571', 'pixel572', 'pixel573', 'pixel574', 'pixel575', 'pixel576', 'pixel577', 'pixel578', 'pixel579', 'pixel580', 'pixel581', 'pixel582', 'pixel583', 'pixel584', 'pixel585', 'pixel586', 'pixel587', 'pixel588', 'pixel589', 'pixel590', 'pixel591', 'pixel592', 'pixel593', 'pixel594', 'pixel595', 'pixel596', 'pixel597', 'pixel598', 'pixel599', 'pixel600', 'pixel601', 'pixel602', 'pixel603', 'pixel604', 'pixel605', 'pixel606', 'pixel607', 'pixel608', 'pixel609', 'pixel610', 'pixel611', 'pixel612', 'pixel613', 'pixel614', 'pixel615', 'pixel616', 'pixel617', 'pixel618', 'pixel619', 'pixel620', 'pixel621', 'pixel622', 'pixel623', 'pixel624', 'pixel625', 'pixel626', 'pixel627', 'pixel628', 'pixel629', 'pixel630', 'pixel631', 'pixel632', 'pixel633', 'pixel634', 'pixel635', 'pixel636', 'pixel637', 'pixel638', 'pixel639', 'pixel640', 'pixel641', 'pixel642', 'pixel643', 'pixel644', 'pixel645', 'pixel646', 'pixel647', 'pixel648', 'pixel649', 'pixel650', 'pixel651', 'pixel652', 'pixel653', 'pixel654', 'pixel655', 'pixel656', 'pixel657', 'pixel658', 'pixel659', 'pixel660', 'pixel661', 'pixel662', 'pixel663', 'pixel664', 'pixel665', 'pixel666', 'pixel667', 'pixel668', 'pixel669', 'pixel670', 'pixel671', 'pixel672', 'pixel673', 'pixel674', 'pixel675', 'pixel676', 'pixel677', 'pixel678', 'pixel679', 'pixel680', 'pixel681', 'pixel682', 'pixel683', 'pixel684', 'pixel685', 'pixel686', 'pixel687', 'pixel688', 'pixel689', 'pixel690', 'pixel691', 'pixel692', 'pixel693', 'pixel694', 'pixel695', 'pixel696', 'pixel697', 'pixel698', 'pixel699', 'pixel700', 'pixel701', 'pixel702', 'pixel703', 'pixel704', 'pixel705', 'pixel706', 'pixel707', 'pixel708', 'pixel709', 'pixel710', 'pixel711', 'pixel712', 'pixel713', 'pixel714', 'pixel715', 'pixel716', 'pixel717', 'pixel718', 'pixel719', 'pixel720', 'pixel721', 'pixel722', 'pixel723', 'pixel724', 'pixel725', 'pixel726', 'pixel727', 'pixel728', 'pixel729', 'pixel730', 'pixel731', 'pixel732', 'pixel733', 'pixel734', 'pixel735', 'pixel736', 'pixel737', 'pixel738', 'pixel739', 'pixel740', 'pixel741', 'pixel742', 'pixel743', 'pixel744', 'pixel745', 'pixel746', 'pixel747', 'pixel748', 'pixel749', 'pixel750', 'pixel751', 'pixel752', 'pixel753', 'pixel754', 'pixel755', 'pixel756', 'pixel757', 'pixel758', 'pixel759', 'pixel760', 'pixel761', 'pixel762', 'pixel763', 'pixel764', 'pixel765', 'pixel766', 'pixel767', 'pixel768', 'pixel769', 'pixel770', 'pixel771', 'pixel772', 'pixel773', 'pixel774', 'pixel775', 'pixel776', 'pixel777', 'pixel778', 'pixel779', 'pixel780', 'pixel781', 'pixel782', 'pixel783']\n" ] } ], "source": [ "# assign target and inputs\n", "y = 'label'\n", "X = [name for name in train.columns if name != y]\n", "print(y)\n", "print(X)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# set target to factor - for multinomial classification\n", "train[y] = train[y].asfactor()\n", "valid[y] = valid[y].asfactor()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train MLP using random grid search" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "deeplearning Grid Build progress: |███████████████████████████████████████| 100%\n" ] } ], "source": [ "# NN with random hyperparameter search\n", "# train many different NN models with random hyperparameters\n", "# and select best model based on validation error\n", "\n", "# define random grid search parameters\n", "hyper_parameters = {'hidden': [[500, 500], [250, 250, 250, 250], [1000, 500], [500, 1000], [1000, 500, 250], [1000, 1000]],\n", " 'l1':[s/1e4 for s in range(0, 1000, 100)],\n", " 'l2':[s/1e5 for s in range(0, 1000, 100)],\n", " 'input_dropout_ratio':[s/1e2 for s in range(0, 20, 2)]}\n", "\n", "# define search strategy\n", "search_criteria = {'strategy':'RandomDiscrete',\n", " 'max_models':100,\n", " 'max_runtime_secs':60000}\n", "\n", "# initialize grid search\n", "gsearch = H2OGridSearch(H2ODeepLearningEstimator,\n", " hyper_params=hyper_parameters,\n", " search_criteria=search_criteria)\n", "\n", "# execute training w/ grid search\n", "gsearch.train(x=X,\n", " y=y,\n", " training_frame=train,\n", " validation_frame=valid, \n", " activation='RectifierWithDropout', \n", " epochs=8000, \n", " stopping_rounds=20,\n", " sparse=True, # handles data w/ many zeros more efficiently \n", " ignore_const_cols=True, \n", " adaptive_rate=True)\n", "\n", "# view detailed results at http://host:ip/flow/index.html" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Select best model" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " hidden input_dropout_ratio l1 l2 \\\n", "0 [500, 1000] 0.02 0.0 0.004 \n", "1 [250, 250, 250, 250] 0.12 0.0 0.005 \n", "2 [250, 250, 250, 250] 0.14 0.0 0.004 \n", "3 [500, 500] 0.04 0.01 0.001 \n", "4 [1000, 1000] 0.08 0.01 0.007 \n", "5 [1000, 500] 0.1 0.05 0.003 \n", "6 [500, 500] 0.04 0.05 0.006 \n", "7 [1000, 500] 0.1 0.07 0.009 \n", "8 [1000, 1000] 0.02 0.05 0.008 \n", "9 [500, 500] 0.08 0.08 0.006 \n", "10 [1000, 500] 0.16 0.09 0.009 \n", "11 [500, 500] 0.12 0.05 0.004 \n", "12 [500, 1000] 0.14 0.07 0.006 \n", "13 [1000, 500, 250] 0.12 0.05 0.0 \n", "14 [1000, 500, 250] 0.18 0.04 0.005 \n", "15 [250, 250, 250, 250] 0.06 0.09 0.002 \n", "16 [250, 250, 250, 250] 0.08 0.05 0.004 \n", "17 [250, 250, 250, 250] 0.04 0.04 0.001 \n", "18 [1000, 1000] 0.02 0.06 0.004 \n", "\n", " model_ids \\\n", "0 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_5 \n", "1 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_10 \n", "2 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_0 \n", "3 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_6 \n", "4 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_17 \n", "5 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_13 \n", "6 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_8 \n", "7 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_3 \n", "8 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_12 \n", "9 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_7 \n", "10 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_4 \n", "11 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_15 \n", "12 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_1 \n", "13 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_14 \n", "14 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_2 \n", "15 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_16 \n", "16 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_11 \n", "17 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_9 \n", "18 Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_18 \n", "\n", " logloss \n", "0 0.0813791957775858 \n", "1 0.10150189183448939 \n", "2 0.10219182732179348 \n", "3 0.22270926824856263 \n", "4 0.23666966039908877 \n", "5 2.2672589076179572 \n", "6 2.29792389877742 \n", "7 2.298302732871996 \n", "8 2.3010391061790467 \n", "9 2.302220573253344 \n", "10 2.302367211172909 \n", "11 2.3025250080345563 \n", "12 2.302676933140575 \n", "13 2.306021931640824 \n", "14 2.3381326424124413 \n", "15 2.349169147514861 \n", "16 2.3560493101302833 \n", "17 2.3696788315812 \n", "18 2.6079328484740665 \n", "Model Details\n", "=============\n", "H2ODeepLearningEstimator : Deep Learning\n", "Model Key: Grid_DeepLearning_py_5_sid_a4f7_model_python_1527827232201_1_model_5\n", "\n", "\n", "ModelMetricsMultinomial: deeplearning\n", "** Reported on train data. **\n", "\n", "MSE: 0.003027974960375359\n", "RMSE: 0.05502703844816073\n", "LogLoss: 0.012548114077993484\n", "Mean Per-Class Error: 0.0030595719228275484\n", "Confusion Matrix: Row labels: Actual class; Column labels: Predicted class\n", "\n" ] }, { "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", "
0123456789ErrorRate
951.00.00.00.00.00.00.00.00.00.00.00 / 951
0.01119.01.00.00.00.00.00.01.00.00.00178412 / 1,121
0.00.0967.01.02.00.00.02.01.00.00.00616656 / 973
0.00.00.0990.00.00.00.03.00.01.00.00402414 / 994
0.01.00.00.0925.00.00.00.01.02.00.00430574 / 929
0.00.01.01.00.0892.00.00.01.00.00.00335203 / 895
3.00.00.00.00.01.01011.00.00.00.00.00394094 / 1,015
0.00.00.00.00.00.00.01035.00.00.00.00 / 1,035
0.00.00.00.00.00.00.00.01013.01.00.00098621 / 1,014
1.00.00.02.00.00.00.02.01.0988.00.00603626 / 994
955.01120.0969.0994.0927.0893.01011.01042.01018.0992.00.003023930 / 9,921
" ], "text/plain": [ "0 1 2 3 4 5 6 7 8 9 Error Rate\n", "--- ---- --- --- --- --- ---- ---- ---- --- ----------- ----------\n", "951 0 0 0 0 0 0 0 0 0 0 0 / 951\n", "0 1119 1 0 0 0 0 0 1 0 0.00178412 2 / 1,121\n", "0 0 967 1 2 0 0 2 1 0 0.0061665 6 / 973\n", "0 0 0 990 0 0 0 3 0 1 0.00402414 4 / 994\n", "0 1 0 0 925 0 0 0 1 2 0.00430571 4 / 929\n", "0 0 1 1 0 892 0 0 1 0 0.00335196 3 / 895\n", "3 0 0 0 0 1 1011 0 0 0 0.00394089 4 / 1,015\n", "0 0 0 0 0 0 0 1035 0 0 0 0 / 1,035\n", "0 0 0 0 0 0 0 0 1013 1 0.000986193 1 / 1,014\n", "1 0 0 2 0 0 0 2 1 988 0.00603622 6 / 994\n", "955 1120 969 994 927 893 1011 1042 1018 992 0.00302389 30 / 9,921" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Top-10 Hit Ratios: \n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
khit_ratio
10.9969761
20.9993952
30.9998992
41.0
51.0
61.0
71.0
81.0
91.0
101.0
" ], "text/plain": [ "k hit_ratio\n", "--- -----------\n", "1 0.996976\n", "2 0.999395\n", "3 0.999899\n", "4 1\n", "5 1\n", "6 1\n", "7 1\n", "8 1\n", "9 1\n", "10 1" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "ModelMetricsMultinomial: deeplearning\n", "** Reported on validation data. **\n", "\n", "MSE: 0.018297410138058034\n", "RMSE: 0.13526791984080347\n", "LogLoss: 0.0813791957775858\n", "Mean Per-Class Error: 0.020746734154994634\n", "Confusion Matrix: Row labels: Actual class; Column labels: Predicted class\n", "\n" ] }, { "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", "
0123456789ErrorRate
1166.01.01.00.00.02.07.02.01.00.00.011864414 / 1,180
0.01320.03.05.00.00.00.01.03.00.00.009009012 / 1,332
1.01.01205.04.03.00.03.09.05.00.00.021121026 / 1,231
0.02.06.01235.00.03.00.06.014.02.00.026025233 / 1,268
1.02.02.00.01124.02.06.05.03.09.00.025996530 / 1,154
2.01.01.014.01.01108.03.02.06.02.00.028070232 / 1,140
2.05.00.00.02.05.01139.00.05.00.00.016407619 / 1,158
0.02.04.00.02.00.00.01220.02.07.00.013742917 / 1,237
1.05.01.08.00.03.06.02.01113.02.00.024539928 / 1,141
2.02.00.03.06.06.00.012.05.01137.00.030690536 / 1,173
1175.01341.01223.01269.01138.01129.01164.01259.01157.01159.00.0205593247 / 12,014
" ], "text/plain": [ "0 1 2 3 4 5 6 7 8 9 Error Rate\n", "---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---------- ------------\n", "1166 1 1 0 0 2 7 2 1 0 0.0118644 14 / 1,180\n", "0 1320 3 5 0 0 0 1 3 0 0.00900901 12 / 1,332\n", "1 1 1205 4 3 0 3 9 5 0 0.021121 26 / 1,231\n", "0 2 6 1235 0 3 0 6 14 2 0.0260252 33 / 1,268\n", "1 2 2 0 1124 2 6 5 3 9 0.0259965 30 / 1,154\n", "2 1 1 14 1 1108 3 2 6 2 0.0280702 32 / 1,140\n", "2 5 0 0 2 5 1139 0 5 0 0.0164076 19 / 1,158\n", "0 2 4 0 2 0 0 1220 2 7 0.0137429 17 / 1,237\n", "1 5 1 8 0 3 6 2 1113 2 0.0245399 28 / 1,141\n", "2 2 0 3 6 6 0 12 5 1137 0.0306905 36 / 1,173\n", "1175 1341 1223 1269 1138 1129 1164 1259 1157 1159 0.0205593 247 / 12,014" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Top-10 Hit Ratios: \n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
khit_ratio
10.9794406
20.9946728
30.9975029
40.9988347
50.9995838
60.9997503
70.9998335
80.9999167
90.9999167
100.9999999
" ], "text/plain": [ "k hit_ratio\n", "--- -----------\n", "1 0.979441\n", "2 0.994673\n", "3 0.997503\n", "4 0.998835\n", "5 0.999584\n", "6 0.99975\n", "7 0.999833\n", "8 0.999917\n", "9 0.999917\n", "10 1" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Scoring History: \n" ] }, { "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", "
timestampdurationtraining_speedepochsiterationssamplestraining_rmsetraining_loglosstraining_classification_errorvalidation_rmsevalidation_loglossvalidation_classification_error
2018-06-01 05:52:33 0.000 secNone0.000.0nannannannannannan
2018-06-01 05:52:38 5:25:25.4361460 obs/sec0.127495516118.00.31370480.43656530.11702450.31452910.44609970.1158648
2018-06-01 05:53:56 5:26:44.2711727 obs/sec2.692681221129211.00.16666270.10139860.03074290.18468010.12443770.0388713
2018-06-01 05:55:20 5:28:08.1181874 obs/sec5.893031346282783.00.13129030.06506570.01915130.15954780.09880740.0293824
2018-06-01 05:56:41 5:29:27.5461925 obs/sec8.964489670430170.00.11267050.04692850.01461550.15135250.08969270.0258032
---------------------------------------
2018-06-01 06:45:55 6:18:42.7772142 obs/sec128.977868510036189132.00.04917150.00951910.00272150.13447230.08711300.0207258
2018-06-01 06:47:12 6:19:59.7552144 obs/sec132.179364810286342759.00.04217630.00809660.00120960.13621320.08584010.0211420
2018-06-01 06:48:33 6:21:20.2212151 obs/sec135.899074710576521253.00.04636550.00890800.00211670.13571180.08664370.0204761
2018-06-01 06:49:46 6:22:33.9122153 obs/sec138.979452310816669068.00.04423010.00824080.00241910.13308200.08499040.0193940
2018-06-01 06:49:54 6:22:40.8022153 obs/sec138.979452310816669068.00.05502700.01254810.00302390.13526790.08137920.0205593
" ], "text/plain": [ " timestamp duration training_speed epochs iterations samples training_rmse training_logloss training_classification_error validation_rmse validation_logloss validation_classification_error\n", "--- ------------------- ----------- ---------------- ------------------- ------------ --------- -------------------- -------------------- ------------------------------- ------------------- -------------------- ---------------------------------\n", " 2018-06-01 05:52:33 0.000 sec 0.0 0 0.0 nan nan nan nan nan nan\n", " 2018-06-01 05:52:38 5:25:25.436 1460 obs/sec 0.12749551952652857 1 6118.0 0.31370480565673636 0.4365652865343027 0.11702449349863925 0.3145291487557664 0.4460997442923294 0.1158648243715665\n", " 2018-06-01 05:53:56 5:26:44.271 1727 obs/sec 2.692681198682949 21 129211.0 0.16666265990391588 0.10139858644332032 0.030742868662433222 0.18468009128092813 0.12443765050316355 0.038871316797070087\n", " 2018-06-01 05:55:20 5:28:08.118 1874 obs/sec 5.893031300796065 46 282783.0 0.13129028722644362 0.06506565748845632 0.01915129523233545 0.1595477777806045 0.09880738959902666 0.02938238721491593\n", " 2018-06-01 05:56:41 5:29:27.546 1925 obs/sec 8.964489642812486 70 430170.0 0.1126704679139283 0.04692852124408101 0.014615462150992844 0.15135251946519723 0.0896926881171901 0.02580322956550691\n", "--- --- --- --- --- --- --- --- --- --- --- --- ---\n", " 2018-06-01 06:45:55 6:18:42.777 2142 obs/sec 128.97786854499228 1003 6189132.0 0.04917151849336363 0.009519056790545452 0.002721499848805564 0.13447234590519472 0.0871129833692534 0.020725819876810388\n", " 2018-06-01 06:47:12 6:19:59.755 2144 obs/sec 132.17936481473762 1028 6342759.0 0.04217626395432435 0.008096575466227237 0.0012095554883580285 0.13621322108913456 0.0858401386109092 0.021142000998834693\n", " 2018-06-01 06:48:33 6:21:20.221 2151 obs/sec 135.89907473012963 1057 6521253.0 0.04636546974903664 0.008907965404228241 0.0021167221046265497 0.13571184759786184 0.08664369396093144 0.020476111203595805\n", " 2018-06-01 06:49:46 6:22:33.912 2153 obs/sec 138.9794523402659 1081 6669068.0 0.044230096033693364 0.008240770504511103 0.002419110976716057 0.1330820309405669 0.08499042851030982 0.01939404028633261\n", " 2018-06-01 06:49:54 6:22:40.802 2153 obs/sec 138.9794523402659 1081 6669068.0 0.05502703844816073 0.012548114077993484 0.0030238887208950713 0.13526791984080347 0.0813791957775858 0.020559347428000665" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "Variable Importances: \n" ] }, { "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", "
variablerelative_importancescaled_importancepercentage
pixel2931.01.00.0019564
pixel2940.94321600.94321600.0018453
pixel3490.91590570.91590570.0017918
pixel3220.90677420.90677420.0017740
pixel5150.90330360.90330360.0017672
------------
pixel6010.50040870.50040870.0009790
pixel5740.49843250.49843250.0009751
pixel6280.49273540.49273540.0009640
pixel6580.49258280.49258280.0009637
pixel6290.46974970.46974970.0009190
" ], "text/plain": [ "variable relative_importance scaled_importance percentage\n", "---------- --------------------- ------------------- ---------------------\n", "pixel293 1.0 1.0 0.001956353705790875\n", "pixel294 0.9432160258293152 0.9432160258293152 0.0018452641674925223\n", "pixel349 0.9159056544303894 0.9159056544303894 0.0017918354211997089\n", "pixel322 0.9067741632461548 0.9067741632461548 0.0017739709945820347\n", "pixel515 0.9033035635948181 0.9033035635948181 0.0017671812740928257\n", "--- --- --- ---\n", "pixel601 0.5004087090492249 0.5004087090492249 0.0009789764323584788\n", "pixel574 0.4984325170516968 0.4984325170516968 0.0009751103018207605\n", "pixel628 0.4927354156970978 0.4927354156970978 0.0009639647564734245\n", "pixel658 0.4925828278064728 0.4925828278064728 0.0009636662405881415\n", "pixel629 0.46974968910217285 0.46974968910217285 0.0009189965450691473" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n" ] }, { "data": { "text/plain": [] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# show grid search results\n", "gsearch.show()\n", "\n", "# select best model\n", "mnist_model = gsearch.get_grid()[0]\n", "\n", "# print model information\n", "mnist_model\n", "\n", "# hit-ratio = ((TP + TN)/(TP + TN + FP + FN)), for two-classes\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Best known H2O MLP for MNIST\n", "* Can you train it?" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\"\\n\\nbest_model = H2ODeepLearningEstimator(\\n activation = 'RectifierWithDropout', \\n hidden = [1024,1024,2048],\\n epochs = 8000, \\n l1 = 1e-5, \\n input_dropout_ratio = 0.2,\\n train_samples_per_iteration = -1, \\n classification_stop = -1)\\n \\n\"" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"\"\"\n", "\n", "best_model = H2ODeepLearningEstimator(\n", " activation = 'RectifierWithDropout', \n", " hidden = [1024,1024,2048],\n", " epochs = 8000, \n", " l1 = 1e-5, \n", " input_dropout_ratio = 0.2,\n", " train_samples_per_iteration = -1, \n", " classification_stop = -1)\n", " \n", "\"\"\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create Submission" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\"\\n# create time stamp\\nimport re\\nimport time\\ntime_stamp = re.sub('[: ]', '_', time.asctime())\\n\\n# score unlabeled test data\\nsub = mnist_model.predict(test)\\n\\n# save file for submission\\nsub = sub['predict']\\n\\nimport numpy as np # create ID column\\nsub = h2o.H2OFrame(np.arange(1, 28001)).cbind(sub) \\n\\nsub.columns = ['ImageId', 'Label']\\n\\nprint(sub.head())\\n\\nsub_fname = '../data/submission_' + str(time_stamp) + '.csv'\\nh2o.download_csv(sub, sub_fname)\\n\"" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"\"\"\n", "# create time stamp\n", "import re\n", "import time\n", "time_stamp = re.sub('[: ]', '_', time.asctime())\n", "\n", "# score unlabeled test data\n", "sub = mnist_model.predict(test)\n", "\n", "# save file for submission\n", "sub = sub['predict']\n", "\n", "import numpy as np # create ID column\n", "sub = h2o.H2OFrame(np.arange(1, 28001)).cbind(sub) \n", "\n", "sub.columns = ['ImageId', 'Label']\n", "\n", "print(sub.head())\n", "\n", "sub_fname = '../data/submission_' + str(time_stamp) + '.csv'\n", "h2o.download_csv(sub, sub_fname)\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Are you sure you want to shutdown the H2O instance running at http://127.0.0.1:54321 (Y/N)? y\n", "H2O session _sid_a4f7 closed.\n" ] } ], "source": [ "# shutdown h2o - this will erase all your unsaved frames and models in H2O\n", "h2o.cluster().shutdown(prompt=True)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 05_neural_networks/src/py_part_5_MNIST_autoencoder.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Autoencoder for MNIST example" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: java version \"1.8.0_112\"; Java(TM) SE Runtime Environment (build 1.8.0_112-b16); Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)\n", " Starting server from /Users/phall/anaconda/lib/python3.5/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpm77pwnep\n", " JVM stdout: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpm77pwnep/h2o_phall_started_from_python.out\n", " JVM stderr: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpm77pwnep/h2o_phall_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321... successful.\n" ] }, { "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", "
H2O cluster uptime:04 secs
H2O cluster version:3.12.0.1
H2O cluster version age:2 months and 18 days
H2O cluster name:H2O_from_python_phall_hpeg44
H2O cluster total nodes:1
H2O cluster free memory:3.556 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
H2O internal security:False
Python version:3.5.2 final
" ], "text/plain": [ "-------------------------- ------------------------------\n", "H2O cluster uptime: 04 secs\n", "H2O cluster version: 3.12.0.1\n", "H2O cluster version age: 2 months and 18 days\n", "H2O cluster name: H2O_from_python_phall_hpeg44\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 3.556 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "Python version: 3.5.2 final\n", "-------------------------- ------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# imports and inits\n", "import h2o\n", "from h2o.estimators.deeplearning import H2ODeepLearningEstimator\n", "h2o.init()\n", "\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Import training data and assign all pixel columns to be inputs " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "train = h2o.import_file('../data/train.csv')\n", "X = [name for name in train.columns if name != 'label']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Train five level stacked denoising autoencoder model" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "deeplearning Model Build progress: |██████████████████████████████████████| 100%\n" ] } ], "source": [ "sdae = H2ODeepLearningEstimator(\n", " epochs=3, \n", " hidden=[250, 50, 2, 50, 250], # 5 layers, 2 in the middle for viz\n", " activation='rectifier', \n", " l2=0.2, # L2 for numeric stability and can help with plotting rectifier activations\n", " adaptive_rate=True,\n", " sparse=True, # handles data w/ many zeros more efficiently\n", " seed=88888, # enables exact reproducibility\n", " reproducible=True, # slow\n", " ignore_const_cols=True,\n", " autoencoder=True)\n", " \n", "sdae.train(x=X, training_frame=train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Extract and display deep features" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "deepfeatures progress: |██████████████████████████████████████████████████| 100%\n" ] }, { "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", "
DF.L3.C1DF.L3.C2label
01.7798244.7038542
110.83683720.0225693
20.2062604.7109940
30.6086921.1785800
41.9774060.9178252
\n", "
" ], "text/plain": [ " DF.L3.C1 DF.L3.C2 label\n", "0 1.779824 4.703854 2\n", "1 10.836837 20.022569 3\n", "2 0.206260 4.710994 0\n", "3 0.608692 1.178580 0\n", "4 1.977406 0.917825 2" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "deep_features = sdae.deepfeatures(train, 2)\n", "deep_features_pandas = deep_features.as_data_frame()\n", "deep_features_pandas['label'] = train['label'].as_data_frame()\n", "deep_features_pandas.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Display 1's and 7's in extracted feature space\n", "* 1's and 7's are typically hard to separate from one another\n", "* The 2-D plot below shows some overlap" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6IAAAM1CAYAAABqm0x8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3VmspHma3/Xvf3nfN5az5L5UZW1d3T1T0zOecTd4EchY\nBtnADSAhRMsjg5CFsGTJmitzYYFlS2wX2DdccMWigZGQuLAw2JYZIwQawHL3uKdnurq71qzMyj3z\nrBHxvu9/4yL+50xWdlZ1dy2n8lT9PjeljIgT8caJLCl/8Tz/5zGlFEREREREREROiv28L0BERERE\nRES+XBRERURERERE5EQpiIqIiIiIiMiJUhAVERERERGRE6UgKiIiIiIiIidKQVREREREREROlIKo\niIiIiIiInCgFURERERERETlRCqIiIiIiIiJyohRERURERERE5ER9KkHUGPMfGmOyMea/fOL2v2GM\nuWWMWRpj/qEx5qufxuuJiIiIiIjI6fWJg6gx5p8F/n3ge0/c/leBv1zv+2PAAvgHxpj2k76miIiI\niIiInF6fKIgaYzaA3wT+IrD7xN1/BfibpZS/W0r5feAvAM8B//oneU0RERERERE53T5pRfS/Av6X\nUso/evxGY8wrwBXgt49uK6XsA/8f8Cc/4WuKiIiIiIjIKeY/7g8aY/5t4NeAf+Ypd18BCnD3idvv\n1vs+7DnPA38OeBfoP+61iYiIiIjIqTcBXgb+QSnl4ed8LfIp+1hB1BhzDfjbwL9USgmf4vX8OeB/\n+BSfT0RERERETrc/D/yPn/dFyKfr41ZEvwVcBL5rjDH1Ngf8KWPMXwZ+ETDAZT5YFb0M/O5HPO+7\nAL/5m7/Ja6+99jEvTT4vv/Ebv8Hf+lt/6/O+DPk56XM7vfTZnV767E4vfXankz630+n111/n13/9\n16FmBPli+bhB9H8HfuWJ2/5b4HXgPyulvG2MuQP8i8DvARhjtoA/zvpc6YfpAV577TW++c1vfsxL\nk8/L9va2PrdTSJ/b6aXP7vTSZ3d66bM7nfS5nXo6svcF9LGCaCllAfzg8duMMQvgYSnl9XrT3wb+\nmjHmTdbfYvxN4Cbwdz721YqIiIiIiMip97GHFT1F+cAfSvkvjDEz4L8GzgD/F/CvlFLGT/E1RURE\nRERE5JT51IJoKeXPPOW2vw789U/rNUREREREROT0+6R7REWOffvb3/68L0E+Bn1up5c+u9NLn93p\npc/udNLnJvLsMaWUn/6oE2KM+Sbwne985zs6UC4iIiIi8iX23e9+l29961sA3yqlfPfzvh75dKki\nKiIiIiIiIidKQVREREREREROlIKoiIiIiIiInCgFURERERERETlRCqIiIiIiIiJyohRERURERERE\n5EQpiIqIiIiIiMiJUhAVERERERGRE6UgKiIiIiIiIidKQVREREREREROlIKoiIiIiIiInCgFURER\nERERETlRCqIiIiIiIiJyohRERURERERE5EQpiIqIiIiIiMiJUhAVERERERGRE6UgKiIiIiIiIidK\nQVREREREREROlIKoiIiIiIiInCgFURERERERETlRCqIiIiIiIiJyohRERURERERE5EQpiIqIiIiI\niMiJUhAVERERERGRE6UgKiIiIiIiIidKQVREREREREROlIKoiIiIiIiInCgFURERERERETlRCqIi\nIiIiIiJyohRERURERERE5EQpiIqIiIiIiMiJUhAVERERERGRE6UgKiIiIiIiIidKQVRERERERERO\nlIKoiIiIiIiInCgFURERERERETlRCqIiIiIiIiJyohRERURERERE5EQpiIqIiIiIiMiJUhAVERER\nERGRE6UgKiIiIiIiIidKQVREREREREROlIKoiIiIiIiInCgFURERERERETlRCqIiIiIiIiJyohRE\nRURERERE5EQpiIqIiIiIiMiJUhAVERERERGRE6UgKiIiIiIiIidKQVREREREREROlIKoiIiIiIiI\nnCgFURERERERETlRCqIiIiIiIiJyohRERURERERE5EQpiIqIiIiIiMiJUhAVERERERGRE6UgKiIi\nIiIiIidKQVREREREREROlP+8L0BERERE5MuilEJmXQ0yxnzelyPyuVEQFRERERH5jK1S4lEI3A+B\nBDjgYtNwrmmYOnf8OAVV+bJQEBURERER+QzthsDbfc9hSkytpTGGUApv9T13Q+DV6ZTWmJ8pqIp8\nUSiIioiIiIh8RlYp8XbfM+TMlbb9wH3bwMMQ+KcHBzTGEOFDg+q21z/b5YtFw4pERERERD4jj0Lg\nMCXON81T7587x49XKx6MI1falm3vmTnHtvdcaVuGnHlrtWKV0glfuchnS0FUREREROQzUErhfghM\nrf2J21MplFLYDYFSCsUYSik/8Rznm4bDlNgJ4aQuW+REqMYvIiIiIvIZyEACmjp0qM+Z3RDYiZFU\n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\nyRVfMVDLzmyU556OhhUXfMlIz5RP9L4o32i9jUhJmNJRseO5CqPMFybhHf398fDw8PDweBU8EfXw\n+AkxYD5iJ28ghnEQuI/ib6uJfsglSDfNkdwGZtcwp2HjtipfR2DfBWJyFjymZQsMVCp4admKXBnV\nb5BimilXakjOjoYNPa3Lm254SsVKyuHeTjnSU3LFiq+puKTgARERG56y4XsGOibcV860Zcv3ZByR\nMeOYL6Sefs8VX5HKEltyqcKdkY6SXiR4b/E1SmPKVJc3UjeX0gFjUgolH3sVABmtb8XXrDBNvnM+\nfaVCbdY/l1TKReYsCIjY8NypqqMUS7MZWmPerS8q0OaRrSV3D0MXrcI56DgbtmTMZO8diMkISIBO\n+cmEgYGEKRkzeipZnlMCKcJ2n9QqmUZlNa+VMQT3BLLSWvLZ6bjt87G/BhHr8YW/zQlTEqmvO57R\ny9qdMJGltwNCptyjIaehZMMTGjYUPCQkUn63JgOVIpmvekaXTTVfQpj3xAUNayY8ZHKQRzVnctDr\n0Uvtnr7yCxMPDw8PD48fCk9EPTx+QtihiHZ88UP1dXTjSBK8veb3oZcg/dg5kowFJRfsS23uHgkF\nOcdkbFjxjfKDISgTaXOHh8dpinAaSi7pqIgoKDhV6vJr5nxKxoKWLUu+YctTEY+Ac/5ZpTiw44KU\nCXM+VftpQUtFyXNatprdKDjh185ObJTOCrPfaXK1IRkbntNSUXDPHatpKr5kyzlbngM9ETMaSloC\nGiplJVMScsz2ZcyOC3Y8p2FDzpFIsi3KMRpuyYVmRIzmZxtfYzIiYgYGWio6Wr3PzTl9GW8q3LGE\naQTlVUuuGKVK2kXSUPuadgAmJqGnoVU+MyVjoKWlYRAp6xkItV1qCpFCRkcxbRuuUUv3xDgkoHeZ\n5lFKr7Egxyoygl6ZW/uVVEqhqZVMhVKV0rGmdChlQsqchhUtvyfjhFiTKzUrInJmPKBiychIRSMr\ndOzOYc4pMx5dy4uasqdK75I5E+4z59EP+jvq4eHh4eHxOtzpJ9AgCP498O9f+PE/jeP47+7ycT08\nfi4IgoAHScKXVcXRa65XDgOf5flbWWp9CdLdwZLLlCkbnhAQE5OTaw7jJtiSGENIzwkJKTgRMenZ\nccYZ/6KMptmc7ChlYl2KtETSqvattQk5IymdsoTWqlxwQkTCjudc8AcmnDAyEpOqX3ZOy5aGtay7\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x_label = 'DF.L3.C1'\n", "y_label = 'DF.L3.C2'\n", "samp = 10000 # show first 10000\n", "\n", "# figure size\n", "plt.figure(figsize=(10,10), dpi = 300)\n", "\n", "# baseline marker size\n", "s = 100\n", "\n", "# plot each number with different visual attributes\n", "\n", "_1 = plt.scatter(deep_features_pandas[deep_features_pandas.label == 1].loc[0:samp:, x_label], \n", " deep_features_pandas[deep_features_pandas.label == 1].loc[0:samp, y_label],\n", " color='c', s=s/2, alpha=.15)\n", "\n", "_7 = plt.scatter(deep_features_pandas[deep_features_pandas.label == 7].loc[0:samp:, x_label], \n", " deep_features_pandas[deep_features_pandas.label == 7].loc[0:samp, y_label],\n", " color='#99ff33', s=2*s, marker='h', alpha=.15)\n", "\n", "# legend\n", "_ = plt.legend([_1, _7], \n", " ['1','7'], \n", " bbox_to_anchor=(1.05, 0.0), \n", " loc=3, borderaxespad=0.)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Use reconstruction error to find anomolous 1's" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Reconstruction.MSE\n", "809 0.203727\n", "522 0.143500\n", "2364 0.141046\n", "2030 0.140258\n", "3326 0.139653\n" ] } ], "source": [ "# h2o anomoly function calculates row-wise reconstrunction MSE\n", "reconstruction_mse = sdae.anomaly(train[train['label'] == 1])\n", "\n", "# use pandas to sort reconstrunction MSE\n", "pandas_reconstruction_mse = reconstruction_mse.as_data_frame().sort_values(by='Reconstruction.MSE', ascending=False)\n", "print(pandas_reconstruction_mse.head())\n", "top = pandas_reconstruction_mse.idxmax().values[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Show most anomolous 1" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n+f/aSyw6ZgIqxwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ones = train[train['label'] == 1].as_data_frame().as_matrix()\n", "pixels = ones[top, 1:]\n", "pixels = np.array(pixels, dtype='uint8')\n", "pixels = pixels.reshape((28, 28))\n", "\n", "plt.imshow(pixels, cmap='gray')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Use reconstruction error to find anomolous 7's" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Reconstruction.MSE\n", "3150 0.222543\n", "4281 0.216492\n", "1047 0.210677\n", "1135 0.210584\n", "1035 0.207671\n" ] } ], "source": [ "# h2o anomoly function calculates row-wise reconstrunction MSE\n", "reconstruction_mse = sdae.anomaly(train[train['label'] == 7])\n", "\n", "# use pandas to sort reconstrunction MSE\n", "pandas_reconstruction_mse = reconstruction_mse.as_data_frame().sort_values(by='Reconstruction.MSE', ascending=False)\n", "print(pandas_reconstruction_mse.head())\n", "top = pandas_reconstruction_mse.idxmax().values[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Show most anomolous 7" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sevens = train[train['label'] == 7].as_data_frame().as_matrix()\n", "pixels = sevens[top, 1:]\n", "pixels = np.array(pixels, dtype='uint8')\n", "pixels = pixels.reshape((28, 28))\n", "\n", "plt.imshow(pixels, cmap='gray')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Are you sure you want to shutdown the H2O instance running at http://127.0.0.1:54321 (Y/N)? y\n", "H2O session _sid_8411 closed.\n" ] } ], "source": [ "# shutdown h2o\n", "h2o.cluster().shutdown(prompt=True)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 05_neural_networks/src/py_part_5_MNIST_data_augmentation.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Basic Data Augmentation for MNIST Example" ] }, { "cell_type": "code", "execution_count": 138, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# imports\n", "import cv2\n", "import csv\n", "import numpy\n", "import math\n", "\n", "# for showing images in the notebook\n", "from IPython.display import Image\n", "from IPython.display import display" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Assign global constants" ] }, { "cell_type": "code", "execution_count": 139, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# debug mode - prints the number images specified by debug_cutoff \n", "DEBUG = False # True displays pictures of new images; WILL OVER-WRITE OLD FILES \n", "DEBUG_CUTOFF = 20 # number of new images to display\n", "\n", "# train mode \n", "TRAIN = True # adds labels to first column; true for training data; false for test\n", "NORMALIZE_ONLY = True # does not add distorted records; only ever used for training data\n", "\n", "# io/file locations\n", "DIR = '/Users/phall/workspace/GWU_data_mining/05_neural_networks/data'\n", "FILE_IN = 'train.csv'\n", "FILE_OUT = 'train_augmented.csv'\n", "\n", "# probably never change below this line\n", "################################################################################\n", "\n", "# global magic numbers for images ... \n", "\n", "INPUT_SIZE = (28, 28) # size of input image, 2-tuple\n", "OUT_SIZE = (27, 27) # size of output image, 2-tuple\n", "\n", "NORM_SIZE = (21, 21) # final bounding box size for normalized images, 2-tuple, < OUT_SIZE \n", "NORM_EXPAND_SIZE = int((27-NORM_SIZE[0])/2)\n", " \n", "LARGE_SIZE = (25, 25) # final bounding box size for enlarged images, 2-tuple,< OUT_SIZE \n", "LARGE_EXPAND_SIZE = int((27-LARGE_SIZE[0])/2)\n", "\n", "RAND_PERCENT = 0.15 # noise injection, < 1.0\n", "RAND_THRESHOLD = int(OUT_SIZE[0]*OUT_SIZE[0]*RAND_PERCENT)\n", "\n", "DEGREE = 15 # rotation degree\n", "\n", "### more complicated ...\n", "\n", "# turning a 1, 7 or other skinny number into a square during normalization is dumb\n", "# to avoid doing so, don't resize numbers whose left most pixel is located\n", "# at a index >= to SKINNY_THRESHOLD \n", "SKINNY_THRESHOLD = 10 \n", "\n", "# difficult to see (and therefore test) the bounding box without this, 0-255\n", "TO_BLACK_THRESHOLD = 50 " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Helper functions for image augmentation" ] }, { "cell_type": "code", "execution_count": 140, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def write_image_to_record(src, out_csv, row_label=None):\n", " \n", " \"\"\" Writes an OpenCV image array to a single csv record.\n", " \n", " :param src: OpenCV image array.\n", " :param out_csv: Name of file to which to write record.\n", " :param row_label: Image label for training data.\n", " \n", " \"\"\"\n", " \n", " out = numpy.array(src).flatten()\n", " \n", " if (row_label != None): \n", " out = numpy.insert(out, 0, row_label)\n", " \n", " out_csv.writerow(out)\n" ] }, { "cell_type": "code", "execution_count": 141, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def normalize_scale(src, out_size=OUT_SIZE, norm_size=NORM_SIZE, norm_expand_size=NORM_EXPAND_SIZE, \n", " skinny_threshold=SKINNY_THRESHOLD, to_black_threshold=TO_BLACK_THRESHOLD):\n", " \n", " \"\"\" Normalizes OpenCV MNIST image arrays.\n", " \n", " :param src: OpenCV image array.\n", " :param out_size: Size of output image, 2-tuple.\n", " :param norm_size: Final bounding box size for normalized images, 2-tuple, < out_size.\n", " :param norm_expand_size: Amount of padding to leave outside normalized images.\n", " :param skinny_threshold: Don't resize numbers whose left most pixel is located\n", " at a index >= to skinny threshold. \n", " :param to_black_threshold: Difficult to see the bounding box without this, 0-255.\n", " :return: Normalized OpenCV MNIST image array.\n", "\n", " \"\"\"\n", "\n", " src[src < to_black_threshold] = 0\n", " \n", " bottom, top= numpy.min(numpy.nonzero(src)[0]), numpy.max(numpy.nonzero(src)[0])\n", " left, right= numpy.min(numpy.nonzero(src.T)[0]), numpy.max(numpy.nonzero(src.T)[0])\n", " \n", " bounding_box = src[bottom:top + 1, left:right + 1]\n", " \n", " if (left >= skinny_threshold): \n", " skinny = True \n", " else: \n", " skinny = False\n", " \n", " if skinny: \n", " return cv2.resize(src, (out_size))\n", " else:\n", " norm = cv2.resize(bounding_box, (norm_size))\n", " return cv2.copyMakeBorder(norm, norm_expand_size, norm_expand_size, norm_expand_size, norm_expand_size, 0)\n" ] }, { "cell_type": "code", "execution_count": 142, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def inject_noise(src, out_size=OUT_SIZE, rand_threshold=RAND_THRESHOLD):\n", " \n", " \"\"\" Performs noise injection on an OpenCV image arrays.\n", " \n", " :param src: OpenCV image array. \n", " :param out_size: Size of output image, 2-tuple.\n", " :param rand_threshold: Amount of random noise to inject, 0-1.\n", " :return: An OpenCV MNIST image array with random noise injection.\n", " \n", " \"\"\"\n", " \n", " noise=numpy.copy(src) # deep copy\n", " noise[numpy.random.randint(out_size[0]-1, size=rand_threshold), numpy.random.randint(out_size[0]-1, size=rand_threshold)] = 0\n", "\n", " return noise\n" ] }, { "cell_type": "code", "execution_count": 143, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def enlarge(src, skinny_threshold=SKINNY_THRESHOLD, input_size=INPUT_SIZE, out_size=OUT_SIZE, \n", " large_size=LARGE_SIZE, large_expand_size=LARGE_EXPAND_SIZE):\n", "\n", " \"\"\" Enlarges OpenCV image arrays.\n", " \n", " :param src: OpenCV image array.\n", " :param skinny_threshold: Don't resize numbers whose left most pixel is located\n", " at a index >= to skinny threshold. \n", " :param input_size: Size of input image, 2-tuple. \n", " :param out_size: Size of output image, 2-tuple.\n", " :param large_size: Bounding box for enlarged image.\n", " :param large_expand_size: Amount of padding to leave outside enlarged images.\n", " :return: Enlarged OpenCV MNIST image array.\n", " \n", " \"\"\"\n", " \n", " bottom, top = numpy.min(numpy.nonzero(src)[0]), numpy.max(numpy.nonzero(src)[0])\n", " left, right = numpy.min(numpy.nonzero(src.T)[0]), numpy.max(numpy.nonzero(src.T)[0])\n", " bounding_box = src[bottom:top + 1, left:right + 1]\n", " \n", " if (left >= skinny_threshold): \n", " skinny = True \n", " else: \n", " skinny = False\n", " \n", " if (skinny):\n", " tall_bounding_box = src[bottom - 1:top + 2, 0:input_size[0] - 1]\n", " return cv2.resize(tall_bounding_box, (out_size))\n", " else: \n", " large = cv2.resize(bounding_box, large_size) \n", " return cv2.copyMakeBorder(large, large_expand_size, large_expand_size, large_expand_size, large_expand_size, 0)\n" ] }, { "cell_type": "code", "execution_count": 144, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def rotate_about_center(src, angle, scale=1.0):\n", " \n", " \"\"\" Rotates OpenCV image arrays.\n", " \n", " :param src: OpenCV image array.\n", " :param angle: Rotation degree.\n", " :param scale: Factor by which to scale rotated images.\n", " :return: Rotated OpenCV MNIST image array.\n", " \n", " \"\"\"\n", " \n", " w = src.shape[1]\n", " h = src.shape[0]\n", " rangle = numpy.deg2rad(angle) # angle in rads\n", " \n", " # calculate new image dimensions \n", " nw = (abs(numpy.sin(rangle)*h) + abs(numpy.cos(rangle)*w))*scale\n", " nh = (abs(numpy.cos(rangle)*h) + abs(numpy.sin(rangle)*w))*scale\n", " \n", " # get rotation matrix \n", " rot_mat = cv2.getRotationMatrix2D((nw*0.5, nh*0.5), angle, scale)\n", " \n", " # old and new centers combined with rotation\n", " rot_move = numpy.dot(rot_mat, numpy.array([(nw - w) * 0.5, (nh - h) * 0.5, 0]))\n", " \n", " # update translation\n", " rot_mat[0,2] += rot_move[0]\n", " rot_mat[1,2] += rot_move[1]\n", " \n", " return cv2.warpAffine(src, rot_mat, (int(math.ceil(nw)), int(math.ceil(nh))), flags=cv2.INTER_LANCZOS4)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Display Transformed Images or Writes Transformed Image to File" ] }, { "cell_type": "code", "execution_count": 145, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Processing image 1000 ...\n", "Processing image 2000 ...\n", "Processing image 3000 ...\n", "Processing image 4000 ...\n", "Processing image 5000 ...\n", "Processing image 6000 ...\n", "Processing image 7000 ...\n", "Processing image 8000 ...\n", "Processing image 9000 ...\n", "Processing image 10000 ...\n", "Processing image 11000 ...\n", "Processing image 12000 ...\n", "Processing image 13000 ...\n", "Processing image 14000 ...\n", "Processing image 15000 ...\n", "Processing image 16000 ...\n", "Processing image 17000 ...\n", "Processing image 18000 ...\n", "Processing image 19000 ...\n", "Processing image 20000 ...\n", "Processing image 21000 ...\n", "Processing image 22000 ...\n", "Processing image 23000 ...\n", "Processing image 24000 ...\n", "Processing image 25000 ...\n", "Processing image 26000 ...\n", "Processing image 27000 ...\n", "Processing image 28000 ...\n", "Processing image 29000 ...\n", "Processing image 30000 ...\n", "Processing image 31000 ...\n", "Processing image 32000 ...\n", "Processing image 33000 ...\n", "Processing image 34000 ...\n", "Processing image 35000 ...\n", "Processing image 36000 ...\n", "Processing image 37000 ...\n", "Processing image 38000 ...\n", "Processing image 39000 ...\n", "Processing image 40000 ...\n", "Processing image 41000 ...\n", "Processing image 42000 ...\n", "Done.\n" ] } ], "source": [ "def main():\n", " \n", " \"\"\" Displays transformed images for debugging purposes or writes transformed images to file for model training or scoring. \"\"\"\n", "\n", " # i/o\n", " \n", " # input file for reading \n", " file_in = open(DIR + '/' + FILE_IN, 'rt')\n", " im_in_csv = csv.reader(file_in, dialect='excel')\n", " \n", " # output file for writing\n", " file_out = open(DIR + '/' + FILE_OUT, 'wt')\n", " im_out_csv = csv.writer(file_out, dialect='excel')\n", " \n", " # read through input file and create new images\n", " \n", " for i, row in enumerate(im_in_csv):\n", " \n", " if i > 0: # row 0 is not data\n", "\n", " if DEBUG:\n", " print()\n", " print('Image ' + str(i))\n", " print('====================')\n", " print()\n", " \n", " # progress indicator\n", " if i > 0 and i % 1000 == 0:\n", " print('Processing image ' + str(i) + ' ...')\n", "\n", " # read row and store label\n", " row_array = numpy.asarray(row)\n", " row_array = row_array.astype(numpy.float32)\n", " row_label = None\n", " \n", " if (TRAIN): \n", " row_label = row_array[0]\n", " img = numpy.reshape(row_array[1:], (INPUT_SIZE))\n", " else:\n", " img = numpy.reshape(row_array, (INPUT_SIZE))\n", " \n", " if (DEBUG): \n", " print('Original Image:')\n", " cv2.imwrite(DIR + '/' + 'raw' + str(i) + '.jpg', img)\n", " display(Image((DIR + '/' + 'raw' + str(i) + '.jpg')))\n", "\n", " # normalize \n", " norm = normalize_scale(img) \n", " write_image_to_record(norm, im_out_csv, row_label)\n", " if (DEBUG): \n", " print('Normalized Image:')\n", " cv2.imwrite(DIR + '/' + 'norm' + str(i) + '.jpg', norm)\n", " display(Image((DIR + '/' + 'norm' + str(i) + '.jpg')))\n", "\n", " if (TRAIN) and not (NORMALIZE_ONLY):\n", "\n", " # inject noise\n", " noise = inject_noise(norm)\n", " write_image_to_record(noise, im_out_csv, row_label)\n", " if (DEBUG): \n", " print('Noise Injected Image:')\n", " cv2.imwrite(DIR + '/' + 'noise' + str(i) + '.jpg', noise)\n", " display(Image((DIR + '/' + 'noise' + str(i) + '.jpg')))\n", "\n", " # enlarge\n", " large = enlarge(norm)\n", " if (DEBUG): \n", " print('Enlarged Image:')\n", " cv2.imwrite(DIR + '/' + 'large' + str(i) + '.jpg', large)\n", " display(Image((DIR + '/' + 'large' + str(i) + '.jpg')))\n", " \n", " large_noise = enlarge(noise)\n", " if (DEBUG): \n", " print('Noise Injected, Enlarged Image:')\n", " cv2.imwrite(DIR + '/' + 'large_noise' + str(i) + '.jpg', large_noise)\n", " display(Image((DIR + '/' + 'large_noise' + str(i) + '.jpg')))\n", "\n", " # rotate + degrees\n", " plus = cv2.resize(rotate_about_center(large, DEGREE), OUT_SIZE)\n", " write_image_to_record(plus, im_out_csv, row_label)\n", " \n", " if (DEBUG): \n", " print('Positively Rotated Image:')\n", " cv2.imwrite(DIR + '/' + 'rotate_p' + str(DEGREE) + '_' + str(i) + '.jpg', plus)\n", " display(Image((DIR + '/' + 'rotate_p' + str(DEGREE) + '_' + str(i) + '.jpg')))\n", "\n", " plus_noise = cv2.resize(rotate_about_center(large_noise, DEGREE), OUT_SIZE)\n", " write_image_to_record(plus_noise, im_out_csv, row_label)\n", " if (DEBUG): \n", " print('Noise Injected, Positively Rotated Image:')\n", " cv2.imwrite(DIR + '/' + 'rotate_noise_p' + str(DEGREE) + '_' + str(i) + '.jpg', plus_noise)\n", " display(Image((DIR + '/' + 'rotate_noise_p' + str(DEGREE) + '_' + str(i) + '.jpg')))\n", " \n", " # rotate - degrees\n", " minus = cv2.resize(rotate_about_center(large, -DEGREE), (OUT_SIZE))\n", " write_image_to_record(minus, im_out_csv, row_label)\n", " if (DEBUG): \n", " print('Negatively Rotated Image:')\n", " cv2.imwrite(DIR + '/' + 'rotate_m' + str(DEGREE) + '_' + str(i) + '.jpg', minus)\n", " display(Image((DIR + '/' + 'rotate_m' + str(DEGREE) + '_' + str(i) + '.jpg')))\n", " \n", " minus_noise= cv2.resize(rotate_about_center(large_noise, -DEGREE), (OUT_SIZE))\n", " write_image_to_record(minus_noise, im_out_csv, row_label)\n", " if (DEBUG): \n", " print('Noise Injected, Negatively Rotated Image:')\n", " cv2.imwrite(DIR + '/' + 'rotate_noise_m' + str(DEGREE) + '_' + str(i) + '.jpg', minus_noise)\n", " display(Image((DIR + '/' + 'rotate_noise_m' + str(DEGREE) + '_' + str(i) + '.jpg')))\n", " \n", " if (DEBUG):\n", " if (i >= DEBUG_CUTOFF):\n", " break \n", "\n", " else: \n", " if (TRAIN):\n", " im_out_csv.writerow(row[0:OUT_SIZE[0] * OUT_SIZE[0] + 1]) # write header w/ label\n", " else:\n", " im_out_csv.writerow(row[0:OUT_SIZE[0] * OUT_SIZE[0]]) # write just header\n", " \n", " file_in.close()\n", " file_out.close()\n", "\n", " print('Done.')\n", "\n", "if __name__ == \"__main__\":\n", " main()\n", " " ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 05_neural_networks/src/py_part_5_MNIST_keras_lenet.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os\n", "path = os.path.dirname(os.getcwd())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# MNIST Data" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "pd_train_data = pd.read_csv(path + os.sep + \"data/train.csv\") # must clone and unzip!\n", "pd_test_data = pd.read_csv(path + os.sep + \"data/test.csv\") # must clone and unzip!" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "train_data = pd_train_data.as_matrix()\n", "test_data = pd_test_data.as_matrix()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "x_train = train_data[:,0:784]\n", "y_train = train_data[:,784]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "x_test = test_data[:,0:784]\n", "y_test = test_data[:,784]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "x_train = x_train.reshape(x_train.shape[0], 28, 28, 1).astype('float32')\n", "x_test = x_test.reshape(x_test.shape[0], 28, 28, 1).astype('float32')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# Normalize data\n", "x_train /= 255\n", "x_test /= 255" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/patrickh/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n", " from ._conv import register_converters as _register_converters\n", "Using TensorFlow backend.\n" ] } ], "source": [ "from keras.utils import np_utils\n", "y_train = np_utils.to_categorical(y_train)\n", "y_test = np_utils.to_categorical(y_test)\n", "num_classes = y_test.shape[1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Build Model" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "import keras\n", "from keras.models import Sequential\n", "from keras.layers import Conv2D, MaxPooling2D, Activation, Flatten, Dense" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "scrolled": true }, "outputs": [], "source": [ "model = Sequential()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "scrolled": false }, "outputs": [], "source": [ "# Convolution and pooling 1\n", "model.add(Conv2D(filters=6, kernel_size=(2,2), input_shape=(28,28,1)))\n", "model.add(MaxPooling2D(pool_size=2))\n", "model.add(Activation(\"sigmoid\"))\n", "\n", "# Convolution and pooling 2\n", "model.add(Conv2D(filters=16, kernel_size=(5,5)))\n", "model.add(MaxPooling2D(pool_size=2))\n", "model.add(Activation(\"sigmoid\"))\n", "\n", "# Convolution 3\n", "model.add(Conv2D(filters=120, kernel_size=(4,4)))\n", "\n", "# Fully-Connected\n", "model.add(Flatten())\n", "model.add(Dense(84))\n", "model.add(Activation(\"tanh\"))\n", "\n", "# Output layer\n", "model.add(Dense(10))\n", "model.add(Activation('softmax'))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "model.compile(loss=\"categorical_crossentropy\", optimizer=\"sgd\", metrics=[\"accuracy\"])" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n", "60000/60000 [==============================] - 9s 145us/step - loss: 2.3032 - acc: 0.1104\n", "Epoch 2/20\n", "60000/60000 [==============================] - 9s 146us/step - loss: 2.3018 - acc: 0.1114\n", "Epoch 3/20\n", "60000/60000 [==============================] - 9s 152us/step - loss: 2.3008 - acc: 0.1129\n", "Epoch 4/20\n", "60000/60000 [==============================] - 9s 151us/step - loss: 2.2995 - acc: 0.1176\n", "Epoch 5/20\n", "60000/60000 [==============================] - 9s 154us/step - loss: 2.2970 - acc: 0.1242\n", "Epoch 6/20\n", "60000/60000 [==============================] - 11s 190us/step - loss: 2.2939 - acc: 0.1305\n", "Epoch 7/20\n", "60000/60000 [==============================] - 12s 203us/step - loss: 2.2885 - acc: 0.1375\n", "Epoch 8/20\n", "60000/60000 [==============================] - 11s 180us/step - loss: 2.2789 - acc: 0.1586\n", "Epoch 9/20\n", "60000/60000 [==============================] - 8s 135us/step - loss: 2.2578 - acc: 0.2244\n", "Epoch 10/20\n", "60000/60000 [==============================] - 9s 156us/step - loss: 2.1977 - acc: 0.3456\n", "Epoch 11/20\n", "60000/60000 [==============================] - 9s 148us/step - loss: 1.9397 - acc: 0.5439\n", "Epoch 12/20\n", "60000/60000 [==============================] - 9s 151us/step - loss: 1.2247 - acc: 0.7283\n", "Epoch 13/20\n", "60000/60000 [==============================] - 9s 150us/step - loss: 0.7466 - acc: 0.8088\n", "Epoch 14/20\n", "60000/60000 [==============================] - 9s 146us/step - loss: 0.5740 - acc: 0.8417\n", "Epoch 15/20\n", "60000/60000 [==============================] - 9s 151us/step - loss: 0.4883 - acc: 0.8618\n", "Epoch 16/20\n", "60000/60000 [==============================] - 9s 148us/step - loss: 0.4331 - acc: 0.8764\n", "Epoch 17/20\n", "60000/60000 [==============================] - 10s 173us/step - loss: 0.3927 - acc: 0.8861\n", "Epoch 18/20\n", "60000/60000 [==============================] - 9s 147us/step - loss: 0.3610 - acc: 0.8948\n", "Epoch 19/20\n", "60000/60000 [==============================] - 9s 149us/step - loss: 0.3356 - acc: 0.9022\n", "Epoch 20/20\n", "60000/60000 [==============================] - 10s 173us/step - loss: 0.3140 - acc: 0.9083\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.fit(x_train, y_train, epochs=20, batch_size=128)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10000/10000 [==============================] - 1s 64us/step\n" ] }, { "data": { "text/plain": [ "[0.2853667983055115, 0.9188]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.evaluate(x_test, y_test, batch_size=128)" ] } ], "metadata": { "anaconda-cloud": {}, "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.4" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 05_neural_networks/src/py_part_5_basic_mlp_example.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "_3FDEA7vB1_W" }, "source": [ "# License\n", "***\n", "Copyright (C) 2018 -- 2025 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": { "id": "pOgZ06KcB1_d" }, "source": [ "***\n", "## Simple multilayer perception (MLP) example" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "nKJ2PdBPB1_f" }, "outputs": [], "source": [ "# imports\n", "import urllib.request as urllib2\n", "import numpy as np\n", "import pandas as pd\n", "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "markdown", "metadata": { "id": "f6k-j6YQB1_h" }, "source": [ "#### Set simple hyperparameters" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "id": "UIpnTFDCB1_i" }, "outputs": [], "source": [ "LEARN_RATE = 0.005\n", "ITERATIONS = 600\n", "HIDDEN_UNITS = 30" ] }, { "cell_type": "markdown", "metadata": { "id": "N9EHsbkKB1_j" }, "source": [ "#### Fetch simple Iris dataset" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "R8e7Hy7zB1_k", "outputId": "907496d8-9090-4c9d-b75e-24763418f575" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Data inputs:\n", " [[5.1 3.5 1.4 0.2]\n", " [4.9 3. 1.4 0.2]\n", " [4.7 3.2 1.3 0.2]\n", " [4.6 3.1 1.5 0.2]\n", " [5. 3.6 1.4 0.2]\n", " [5.4 3.9 1.7 0.4]\n", " [4.6 3.4 1.4 0.3]\n", " [5. 3.4 1.5 0.2]\n", " [4.4 2.9 1.4 0.2]\n", " [4.9 3.1 1.5 0.1]\n", " [5.4 3.7 1.5 0.2]\n", " [4.8 3.4 1.6 0.2]\n", " [4.8 3. 1.4 0.1]\n", " [4.3 3. 1.1 0.1]\n", " [5.8 4. 1.2 0.2]\n", " [5.7 4.4 1.5 0.4]\n", " [5.4 3.9 1.3 0.4]\n", " [5.1 3.5 1.4 0.3]\n", " [5.7 3.8 1.7 0.3]\n", " [5.1 3.8 1.5 0.3]\n", " [5.4 3.4 1.7 0.2]\n", " [5.1 3.7 1.5 0.4]\n", " [4.6 3.6 1. 0.2]\n", " [5.1 3.3 1.7 0.5]\n", " [4.8 3.4 1.9 0.2]\n", " [5. 3. 1.6 0.2]\n", " [5. 3.4 1.6 0.4]\n", " [5.2 3.5 1.5 0.2]\n", " [5.2 3.4 1.4 0.2]\n", " [4.7 3.2 1.6 0.2]\n", " [4.8 3.1 1.6 0.2]\n", " [5.4 3.4 1.5 0.4]\n", " [5.2 4.1 1.5 0.1]\n", " [5.5 4.2 1.4 0.2]\n", " [4.9 3.1 1.5 0.1]\n", " [5. 3.2 1.2 0.2]\n", " [5.5 3.5 1.3 0.2]\n", " [4.9 3.1 1.5 0.1]\n", " [4.4 3. 1.3 0.2]\n", " [5.1 3.4 1.5 0.2]\n", " [5. 3.5 1.3 0.3]\n", " [4.5 2.3 1.3 0.3]\n", " [4.4 3.2 1.3 0.2]\n", " [5. 3.5 1.6 0.6]\n", " [5.1 3.8 1.9 0.4]\n", " [4.8 3. 1.4 0.3]\n", " [5.1 3.8 1.6 0.2]\n", " [4.6 3.2 1.4 0.2]\n", " [5.3 3.7 1.5 0.2]\n", " [5. 3.3 1.4 0.2]\n", " [7. 3.2 4.7 1.4]\n", " [6.4 3.2 4.5 1.5]\n", " [6.9 3.1 4.9 1.5]\n", " [5.5 2.3 4. 1.3]\n", " [6.5 2.8 4.6 1.5]\n", " [5.7 2.8 4.5 1.3]\n", " [6.3 3.3 4.7 1.6]\n", " [4.9 2.4 3.3 1. ]\n", " [6.6 2.9 4.6 1.3]\n", " [5.2 2.7 3.9 1.4]\n", " [5. 2. 3.5 1. ]\n", " [5.9 3. 4.2 1.5]\n", " [6. 2.2 4. 1. ]\n", " [6.1 2.9 4.7 1.4]\n", " [5.6 2.9 3.6 1.3]\n", " [6.7 3.1 4.4 1.4]\n", " [5.6 3. 4.5 1.5]\n", " [5.8 2.7 4.1 1. ]\n", " [6.2 2.2 4.5 1.5]\n", " [5.6 2.5 3.9 1.1]\n", " [5.9 3.2 4.8 1.8]\n", " [6.1 2.8 4. 1.3]\n", " [6.3 2.5 4.9 1.5]\n", " [6.1 2.8 4.7 1.2]\n", " [6.4 2.9 4.3 1.3]\n", " [6.6 3. 4.4 1.4]\n", " [6.8 2.8 4.8 1.4]\n", " [6.7 3. 5. 1.7]\n", " [6. 2.9 4.5 1.5]\n", " [5.7 2.6 3.5 1. ]\n", " [5.5 2.4 3.8 1.1]\n", " [5.5 2.4 3.7 1. ]\n", " [5.8 2.7 3.9 1.2]\n", " [6. 2.7 5.1 1.6]\n", " [5.4 3. 4.5 1.5]\n", " [6. 3.4 4.5 1.6]\n", " [6.7 3.1 4.7 1.5]\n", " [6.3 2.3 4.4 1.3]\n", " [5.6 3. 4.1 1.3]\n", " [5.5 2.5 4. 1.3]\n", " [5.5 2.6 4.4 1.2]\n", " [6.1 3. 4.6 1.4]\n", " [5.8 2.6 4. 1.2]\n", " [5. 2.3 3.3 1. ]\n", " [5.6 2.7 4.2 1.3]\n", " [5.7 3. 4.2 1.2]\n", " [5.7 2.9 4.2 1.3]\n", " [6.2 2.9 4.3 1.3]\n", " [5.1 2.5 3. 1.1]\n", " [5.7 2.8 4.1 1.3]]\n", "\n", "\n", "Data target:\n", " [[1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [1.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]\n", " [0.]]\n" ] } ], "source": [ "# load and preprocess Iris data set\n", "# easy binomial classification task: seperate Setosa irises from Versicolor irises\n", "\n", "# fetch data from UCI repository\n", "url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'\n", "connection = urllib2.urlopen(url)\n", "raw = connection.read()\n", "\n", "# initialize empty X and y arrays\n", "X = np.zeros((100, 4))\n", "y = np.zeros((100, 1))\n", "\n", "# load iris data into X and y arrays\n", "row_idx = 0\n", "for line in str(raw)[2:-5].split('\\\\n'):\n", " line = line.replace('Iris-setosa', '1').replace('Iris-versicolor', '0')\n", " line = line.split(',')\n", " # remove Virginica irises from data set\n", " if line[-1] != 'Iris-virginica':\n", " line = np.asarray(line)\n", " X[row_idx, :] = line[:-1]\n", " y[row_idx, :] = line[-1]\n", " row_idx += 1\n", "\n", "\n", "print('Data inputs:\\n', X)\n", "print('\\n')\n", "print('Data target:\\n', y)" ] }, { "cell_type": "markdown", "metadata": { "id": "moqbxBO2B1_m" }, "source": [ "#### Training routine" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "l4UkKIsDB1_m", "outputId": "a8df3fe6-3d36-44e6-82a9-892106380245" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "MLP architecture is: 4 input units -> 30 hidden units -> 1 output units.\n", "\n", "There are 120 hidden weights to optimize.\n", "Initial hidden weights:\n", " [[ 4.29616093e-01 -1.83624445e-01 -3.16081188e-01 -2.95439721e-01\n", " 6.77250291e-02 9.55447030e-02 4.64514520e-01 1.53177097e-01\n", " 2.48906638e-01 1.53569871e-01 2.47714809e-01 4.61306736e-01\n", " -4.91611702e-01 -3.93555623e-01 -2.01296286e-01 1.56411183e-01\n", " 3.09812553e-01 3.72175914e-01 4.64647597e-01 2.23685347e-01\n", " 1.42475328e-01 2.17453621e-01 -3.24009928e-02 -1.74415322e-01\n", " -6.03553941e-02 2.29689083e-01 4.94014586e-01 1.76873712e-01\n", " 2.90822518e-01 -3.29085742e-01]\n", " [-4.73150724e-01 3.00370244e-01 4.03722538e-01 -4.75323790e-01\n", " -8.25268155e-03 2.62551673e-02 9.63660104e-02 -4.48042455e-01\n", " 3.95089528e-01 2.28266180e-01 3.18350011e-01 2.22752834e-04\n", " 3.10189409e-01 -4.04031474e-01 -2.81049956e-01 -2.41280938e-01\n", " -3.18942460e-02 -4.06267974e-02 2.09509780e-01 -3.21946994e-01\n", " 3.14498844e-02 -3.32257771e-01 2.68813918e-01 4.28170549e-01\n", " 1.09493658e-01 -3.49816505e-01 -1.03732963e-02 -1.22655046e-01\n", " 3.48601412e-01 4.11097229e-01]\n", " [-1.16151279e-01 -1.84504097e-01 6.83941528e-02 -3.12181965e-01\n", " -3.74158456e-01 1.87595805e-01 2.99606718e-01 7.35365652e-02\n", " 4.73229982e-01 1.34054377e-01 3.88421725e-01 -4.58524124e-03\n", " -1.48383470e-01 2.14230369e-01 3.92911645e-03 -2.74362393e-01\n", " -2.55025560e-01 2.92800700e-01 -4.82758549e-03 4.15093673e-01\n", " 4.45371834e-01 3.32322297e-02 -2.47507405e-01 2.20862058e-01\n", " -1.32561236e-01 -1.35155709e-03 -2.73424953e-01 -1.46434353e-01\n", " 1.50851787e-01 -1.87067105e-01]\n", " [ 2.68735447e-01 2.81837103e-01 3.52409483e-01 4.49905740e-01\n", " -3.92677088e-01 4.10725356e-01 -1.63944838e-01 3.26380427e-01\n", " 3.98100635e-01 -4.57284696e-01 -3.04205001e-01 -2.05498678e-01\n", " 1.26999881e-01 -4.13776895e-01 -3.57054980e-01 1.58265192e-02\n", " 1.89341330e-01 3.56625811e-01 1.47361683e-01 8.16186755e-02\n", " 2.11115955e-01 -2.47583143e-01 4.00159683e-01 -5.77063071e-02\n", " -4.79479175e-01 4.59661014e-01 1.52225422e-01 1.32062501e-02\n", " 1.82356383e-01 -1.04596094e-02]]\n", "\n", "There are 30 output weights to optimize.\n", "Initial output weights:\n", " [[ 0.42649017]\n", " [ 0.01587977]\n", " [-0.42784012]\n", " [ 0.0675083 ]\n", " [ 0.11524318]\n", " [ 0.44154629]\n", " [-0.08463665]\n", " [-0.23556003]\n", " [-0.40260683]\n", " [-0.01415578]\n", " [-0.03533714]\n", " [-0.47024068]\n", " [ 0.19427746]\n", " [ 0.21694711]\n", " [ 0.22981142]\n", " [-0.08564898]\n", " [-0.48490116]\n", " [ 0.40897516]\n", " [ 0.28937872]\n", " [-0.33480083]\n", " [-0.18721404]\n", " [ 0.11094531]\n", " [-0.13550971]\n", " [-0.34396141]\n", " [-0.32269619]\n", " [ 0.36788967]\n", " [-0.20990533]\n", " [ 0.08517962]\n", " [-0.04600512]\n", " [-0.08882187]]\n", "\n", "Initial yhat:\n", " [[0.24753092]\n", " [0.25931333]\n", " [0.25272927]\n", " [0.25386176]\n", " [0.2440762 ]\n", " [0.24032274]\n", " [0.24705247]\n", " [0.24888208]\n", " [0.25845649]\n", " [0.25535009]\n", " [0.24460842]\n", " [0.24689153]\n", " [0.25774061]\n", " [0.25550082]\n", " [0.24242968]\n", " [0.23189508]\n", " [0.24214685]\n", " [0.24835111]\n", " [0.24486826]\n", " [0.24023051]\n", " [0.25156733]\n", " [0.24358553]\n", " [0.24275981]\n", " [0.25381345]\n", " [0.2458832 ]\n", " [0.25925736]\n", " [0.25005186]\n", " [0.24796707]\n", " [0.25104261]\n", " [0.25147818]\n", " [0.25494329]\n", " [0.25393003]\n", " [0.23195235]\n", " [0.23350859]\n", " [0.25535009]\n", " [0.25562701]\n", " [0.25168511]\n", " [0.25535009]\n", " [0.25609123]\n", " [0.24972576]\n", " [0.24797449]\n", " [0.2776847 ]\n", " [0.25058758]\n", " [0.24903445]\n", " [0.23953033]\n", " [0.25930852]\n", " [0.23899369]\n", " [0.25154877]\n", " [0.24368678]\n", " [0.25197602]\n", " [0.27088801]\n", " [0.26591219]\n", " [0.27252074]\n", " [0.28258432]\n", " [0.27653197]\n", " [0.27113881]\n", " [0.26290388]\n", " [0.27584151]\n", " [0.27499745]\n", " [0.27040464]\n", " [0.28762903]\n", " [0.26713655]\n", " [0.28820243]\n", " [0.27145341]\n", " [0.26738991]\n", " [0.270671 ]\n", " [0.26555881]\n", " [0.27362861]\n", " [0.28954755]\n", " [0.27758806]\n", " [0.26282735]\n", " [0.27338843]\n", " [0.28309697]\n", " [0.27404529]\n", " [0.27322464]\n", " [0.27231577]\n", " [0.27909192]\n", " [0.27316868]\n", " [0.2705194 ]\n", " [0.27533592]\n", " [0.27959107]\n", " [0.27939121]\n", " [0.27374183]\n", " [0.27643558]\n", " [0.26447254]\n", " [0.25827335]\n", " [0.27077494]\n", " [0.28781218]\n", " [0.26491407]\n", " [0.27725351]\n", " [0.27499742]\n", " [0.26879769]\n", " [0.27640164]\n", " [0.27914974]\n", " [0.27275717]\n", " [0.26548443]\n", " [0.26819554]\n", " [0.27172772]\n", " [0.27471698]\n", " [0.27069514]]\n", "\n", "Training ...\n", "Iteration 100, Error: 0.16\n", "Iteration 200, Error: 0.08\n", "Iteration 300, Error: 0.07\n", "Iteration 400, Error: 0.05\n", "Iteration 500, Error: 0.05\n", "Iteration 600, Error: 0.04\n", "Maximum iterations reached, done.\n" ] } ], "source": [ "# very simple MLP routine\n", "# with logistic activation for hidden and output layer\n", "\n", "# set random seed\n", "# always do this when working with random numbers\n", "np.random.seed(12345)\n", "\n", "# randomly initialize our weights with mean 0\n", "hidden_weights = np.random.random((4, HIDDEN_UNITS)) - 0.5 # 4 X HIDDEN_UNITS weights in hidden layer\n", "output_weights = np.random.random((HIDDEN_UNITS, 1)) - 0.5 # HIDDEN_UNITS X 1 weights in output layer\n", "\n", "print('MLP architecture is: 4 input units -> %d hidden units -> 1 output units.' % HIDDEN_UNITS)\n", "print()\n", "print('There are %d hidden weights to optimize.' % (4 * HIDDEN_UNITS))\n", "print('Initial hidden weights:\\n', hidden_weights)\n", "print()\n", "print('There are %d output weights to optimize.' % HIDDEN_UNITS)\n", "print('Initial output weights:\\n', output_weights)\n", "\n", "# initialize empty pandas DataFrame to hold iteration scores\n", "iter_frame = pd.DataFrame(columns=['Iteration', 'Error'])\n", "\n", "# activation function\n", "def logistic_activation_function(weights_times_inputs):\n", "\n", " return 1 / (1 + np.exp(-weights_times_inputs))\n", "\n", "# trainign loop\n", "for iteration in range(0, ITERATIONS):\n", "\n", " ### feed-forward phase ##########\n", " # run data through input, hidden, and output layers\n", "\n", " input_layer = X\n", " hidden_layer = logistic_activation_function(np.dot(input_layer, hidden_weights))\n", " output_layer = logistic_activation_function(np.dot(hidden_layer, output_weights))\n", "\n", " if iteration == 0:\n", " print('\\nInitial yhat:\\n', output_layer)\n", " print()\n", " print('Training ...')\n", "\n", " ### evaluate error function ##########\n", " output_logloss_error = -y * np.log(output_layer) + (1 - y)*np.log(1 - output_layer)\n", " if ((iteration + 1) % 100) == 0:\n", " print('Iteration %4i, Error: %5.2f' % (iteration + 1, np.sum(output_logloss_error)))\n", "\n", " # record iteration and error\n", " iter_frame = pd.concat([iter_frame, pd.DataFrame({'Iteration': iteration,\n", " 'Error': np.sum(output_logloss_error)},\n", " index=[iteration])],\n", " axis=0)\n", "\n", " ### back-propogation phase ##########\n", " # back-propogate error from output layer to hidden layer\n", " # chain rule\n", "\n", " # output layer gradient = dL/dw = dL/dy * dy/dz * dz/dw\n", " output_loss_gradient = output_layer - y # loss derivative wrt y, dL/dy\n", " output_layer_gradient = output_layer * (1 - output_layer) # y derivative wrt z, sigmoid derivative, dy/dz\n", " output_input = hidden_layer # z derivative wrt w, linear combo derivative, dz/dw\n", " output_total_gradient = output_input.T.dot(output_loss_gradient * output_layer_gradient) # apply chain rule: dL/dy * dy/dz * dz/dw\n", "\n", " # hidden layer gradient = dL/dw = dL/dy * dy/dz * dz/dw\n", " hidden_loss_gradient = output_loss_gradient.dot(output_weights.T) # loss derivative wrt y, backprop error/logloss derivative, dL/dy\n", " hidden_layer_gradient = hidden_layer * (1 - hidden_layer) # y derivative wrt z, hidden sigmoid derivative, dy/dz\n", " hidden_input = input_layer # z derivative wrt w, linear combo derivative, dw/dw\n", " hidden_total_gradient = hidden_input.T.dot(hidden_loss_gradient * hidden_layer_gradient) # apply chain rule: dL/dy * dy/dz * dz/dw\n", "\n", " ### update weights based on gradient ##########\n", " # update weights in direction that minimizes error using layerwise gradients\n", " # (input layer is never updated, b/c it is the data itself)\n", " # scale by learning rate\n", " output_weights -= LEARN_RATE * output_total_gradient\n", " hidden_weights -= LEARN_RATE * hidden_total_gradient\n", "\n", "print('Maximum iterations reached, done.')" ] }, { "cell_type": "markdown", "metadata": { "id": "EDo25iN9B1_n" }, "source": [ "#### Analyze results" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 424 }, "id": "DsLg2eSxB1_o", "outputId": "615c387e-8e9f-4339-db86-808bdc6a8546" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " y yhat\n", "0 1.0 0.984989\n", "1 1.0 0.977354\n", "2 1.0 0.982045\n", "3 1.0 0.973939\n", "4 1.0 0.985555\n", ".. ... ...\n", "95 0.0 0.019868\n", "96 0.0 0.017776\n", "97 0.0 0.017826\n", "98 0.0 0.070846\n", "99 0.0 0.018372\n", "\n", "[100 rows x 2 columns]" ], "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", "
yyhat
01.00.984989
11.00.977354
21.00.982045
31.00.973939
41.00.985555
.........
950.00.019868
960.00.017776
970.00.017826
980.00.070846
990.00.018372
\n", "

100 rows × 2 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\n" ], "application/vnd.google.colaboratory.intrinsic+json": { "type": "dataframe", "variable_name": "y_yhat_frame", "summary": "{\n \"name\": \"y_yhat_frame\",\n \"rows\": 100,\n \"fields\": [\n {\n \"column\": \"y\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.502518907629606,\n \"min\": 0.0,\n \"max\": 1.0,\n \"num_unique_values\": 2,\n \"samples\": [\n 0.0,\n 1.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"yhat\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.48314456867188915,\n \"min\": 0.009939775662035556,\n \"max\": 0.9902858218956593,\n \"num_unique_values\": 98,\n \"samples\": [\n 0.036975483802999434,\n 0.9806388850243675\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" } }, "metadata": {}, "execution_count": 5 } ], "source": [ "y_yhat_frame = pd.DataFrame(columns = ['y', 'yhat'])\n", "y_yhat_frame['y'] = y.reshape(-1)\n", "y_yhat_frame['yhat'] = output_layer.reshape(-1)\n", "y_yhat_frame" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 472 }, "id": "gXFcurGLB1_o", "outputId": "98e6256f-7e7d-458d-e0df-1f60022a0ffc" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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MzNTZWVlGj16tC644AJt2rRJy5YtU2lpqa677rqA7//2t7+V1+vV2rVr9fTTT0uSwsLC9NRTT2nr1q367W9/q5UrV+ree++VJF188cWaPXu2EhIS/Oe75557WtTl8/l09dVX6/PPP1dRUZGWL1+unTt3asKECQH7ffTRR1q6dKleffVVvfrqqyoqKtKjjz7aRa0FoCO47AJAkpSYmCiv16vY2Filp6f71//yl7/UBRdcoP/+7//2r3v22WeVmZmpf/7znzrrrLMkSWeeeaZ++tOfBhyz+fiR/v376+GHH9Ztt92mefPmyev1KjExUR6PJ+B8x1qxYoW2bNmiXbt2KTMzU5L03HPPafDgwdq4caMuvPBCSQ0hZeHChYqPj5ck3XDDDVqxYoUeeeSRjjUMgE5HzweAE/r73/+uVatWKS4uzv/Kzs6W1NDb0CQnJ6fFd998802NGTNGp512muLj43XDDTfos88+0+HDh9t8/m3btikzM9MfPCRp0KBBSkpK0rZt2/zr+vfv7w8ektSnTx/t378/qN8KIDTo+QBwQgcPHtRVV12lxx57rMW2Pn36+N/36NEjYNvHH3+sr3/967r99tv1yCOPKDk5WWvWrNFNN92kmpoaxcbGdmqdkZGRAZ89Ho98Pl+nngNA5yB8APDzer2qr68PWPeVr3xFf/zjH9W/f39FRLT9/zKKi4vl8/n0+OOPKyysoZP197///Zee71jnnHOO9uzZoz179vh7P95//32VlZVp0KBBba4HQPfBZRcAfv3799eGDRv08ccf68CBA/L5fCooKNDnn3+uiRMnauPGjfroo4/0xhtvaMqUKScMDgMHDlRtba1+8YtfaOfOnXr++ef9A1Gbn+/gwYNasWKFDhw40OrlmLy8PJ177rmaNGmS3nnnHb399tv6zne+o5EjR2rYsGGd3gYAuh7hA4DfPffco/DwcA0aNEgpKSnavXu3MjIytHbtWtXX1+uKK67Queeeq2nTpikpKcnfo9Ga8847T0888YQee+wxDRkyRC+88IIKCwsD9rn44ot12223acKECUpJSWkxYFVquHzy8ssvq2fPnrr88suVl5en008/XS+99FKn/34AoeExxhjbRQAAAHfQ8wEAAEKK8AEAAEKK8AEAAEKK8AEAAEKK8AEAAEKK8AEAAEKK8AEAAEKK8AEAAEKK8AEAAEKK8AEAAEKK8AEAAEKK8AEAAELq/wOFPSIqCNT+7wAAAABJRU5ErkJggg==\n" }, "metadata": {} } ], "source": [ "%matplotlib inline\n", "_ = iter_frame.plot(kind='line', x='Iteration', y='Error', title='Iteration Chart')" ] } ], "metadata": { "anaconda-cloud": {}, "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.4" }, "colab": { "provenance": [], "include_colab_link": true } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: 05_neural_networks/src/py_part_5_neural_networks.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# imports\n", "import h2o \n", "import numpy as np\n", "import pandas as pd\n", "from h2o.estimators.deeplearning import H2ODeepLearningEstimator\n", "from h2o.grid.grid_search import H2OGridSearch" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# display matplotlib graphics in notebook\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: java version \"1.8.0_112\"; Java(TM) SE Runtime Environment (build 1.8.0_112-b16); Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)\n", " Starting server from /Users/phall/anaconda/lib/python3.5/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpu7y9qi1u\n", " JVM stdout: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpu7y9qi1u/h2o_phall_started_from_python.out\n", " JVM stderr: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpu7y9qi1u/h2o_phall_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321... successful.\n" ] }, { "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", "
H2O cluster uptime:02 secs
H2O cluster version:3.10.3.4
H2O cluster version age:1 month and 2 days
H2O cluster name:H2O_from_python_phall_sxxj60
H2O cluster total nodes:1
H2O cluster free memory:3.556 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
Python version:3.5.2 final
" ], "text/plain": [ "-------------------------- ------------------------------\n", "H2O cluster uptime: 02 secs\n", "H2O cluster version: 3.10.3.4\n", "H2O cluster version age: 1 month and 2 days\n", "H2O cluster name: H2O_from_python_phall_sxxj60\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 3.556 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "Python version: 3.5.2 final\n", "-------------------------- ------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# start and connect to h2o server\n", "h2o.init()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# load clean data\n", "path = '/Users/phall/workspace/GWU_data_mining/03_regression/data/loan_clean.csv'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# define input variable measurement levels \n", "# strings automatically parsed as enums (nominal)\n", "# numbers automatically parsed as numeric\n", "col_types = {'bad_loan': 'enum'}" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "frame = h2o.import_file(path=path, col_types=col_types) # multi-threaded import" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rows:163987\n", "Cols:18\n", "\n", "\n" ] }, { "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", "
id bad_loan GRP_REP_home_ownership GRP_addr_state GRP_home_ownership GRP_purpose GRP_verification_status _WARN_ STD_IMP_REP_annual_inc STD_IMP_REP_delinq_2yrs STD_IMP_REP_dti STD_IMP_REP_emp_length STD_IMP_REP_int_rate STD_IMP_REP_loan_amnt STD_IMP_REP_longest_credit_lengt STD_IMP_REP_revol_util STD_IMP_REP_term_length STD_IMP_REP_total_acc
type int enum int int int int int int real real real real real real real real real real
mins 10001.0 1.0 1.0 1.0 1.0 1.0 NaN -1.767455639 -0.39219617 -2.119639396 -1.6213902740000001 -1.907046215 -1.587129405 -2.22445124 -2.164541326 -0.516495577 -2.058861889
mean 91994.0 2.5740028172964924 11.4093373255197032.5740028172964924 3.24494014769463452.340356247751345 0.0 2.38744452882879e-11 2.2959296297769782e-12 6.807013811211564e-11-3.566867876239133e-11 -8.948753565861857e-128.311927579716105e-11 5.0612534090153816e-11 -1.4734128080190765e-11 -1.5009542966560638e-10 8.060924856225354e-13
maxs 173987.0 5.0 37.0 5.0 14.0 3.0 NaN 4.6180619798 4.1566950661 3.0371487270000004 1.2288169612 2.8376799992 2.7671323946 3.1431598296 3.0363495275 1.9718787627 3.0684672884
sigma 47339.11363414683 0.6675260435449262 9.971926133461404 0.6675260435449262 2.26728920752597540.5040864341768772 -0.0 0.9999999999982868 0.9999999999212518 1.0000000000037712 1.0000000000339833 1.0000000000199503 0.999999999985285 0.9999999999850594 1.000000000017688 1.0000000000642086 1.0000000000331841
zeros 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
missing0 0 0 0 0 0 0 163987 0 0 0 0 0 0 0 0 0 0
0 10001.0 0 3.0 14.0 3.0 3.0 2.0 nan -1.1992995020000001 -0.39219617 1.5712460425 1.2288169612 -0.7047730510000001 -1.019182214 1.6839024850000002 1.1858716502 -0.516495577 -1.359278248
1 10002.0 1 3.0 10.0 3.0 8.0 2.0 nan -1.04507688 -0.39219617 -1.9861534850000002 -1.6213902740000001 0.3572732234 -1.3347084310000001 -0.42059567400000003 -1.7882703350000002 1.9718787627 -1.7965180230000002
2 10003.0 0 3.0 7.0 3.0 7.0 3.0 nan -1.501267394 -0.39219617 -0.9556422520000001 1.2288169612 0.5158905241 -1.34732948 -0.7212382690000001 1.7782983174 -0.516495577 -1.271830292
3 10004.0 0 3.0 2.0 3.0 4.0 2.0 nan -0.303921333 -0.39219617 0.5500788236 1.2288169612 -0.051913437 -0.388129779 0.0303682169 0.0325652593 -0.516495577 1.089264497
4 10005.0 0 3.0 14.0 3.0 10.0 2.0 nan -0.890854259 -0.39219617 -0.624597193 -0.7663281030000001 -1.3369434530000002 -1.019182214 -0.8220262690000001 -1.0317254690000002 -0.516495577 -1.0969343820000002
5 10006.0 0 3.0 2.0 3.0 8.0 2.0 nan -0.5824090160000001 -0.39219617 -1.4054897720000001 0.9437962377 1.1319693155000001 -1.271603188 -1.623166051 1.3379811999 -0.516495577 -1.7965180230000002
6 10007.0 1 4.0 2.0 4.0 7.0 2.0 nan -0.788039178 -0.39219617 -1.37879259 -0.48130738 1.7388529011 -0.9434559220000001 -1.17220216 -0.8596015050000001 1.9718787627 -1.0094864270000001
7 10008.0 1 3.0 4.0 3.0 4.0 2.0 nan -1.430633434 -0.39219617 0.2937858745 -1.6213902740000001 -0.235817553 -0.971853281 -1.17220216 -0.703489072 1.9718787627 -1.883965979
8 10009.0 0 4.0 14.0 4.0 2.0 3.0 nan 0.0344814697 -0.39219617 0.032153489 -0.196286656 0.2147475328 -0.8298664840000001 -0.270274377 -1.339947451 1.9718787627 -0.135006875
9 10010.0 0 4.0 2.0 4.0 2.0 2.0 nan 0.1115927805 -0.39219617 -0.680661276 1.2288169612 -0.235817553 -0.13570880500000002 1.0826172966 0.5213930910000001 -0.516495577 0.8269206315000001
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "frame.describe()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# split into 40% training, 30% validation, and 30% test\n", "train, valid, test = frame.split_frame([0.4, 0.3])" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bad_loan\n", "['GRP_REP_home_ownership', 'GRP_addr_state', 'GRP_home_ownership', 'GRP_purpose', 'GRP_verification_status', 'STD_IMP_REP_annual_inc', 'STD_IMP_REP_delinq_2yrs', 'STD_IMP_REP_dti', 'STD_IMP_REP_emp_length', 'STD_IMP_REP_int_rate', 'STD_IMP_REP_loan_amnt', 'STD_IMP_REP_longest_credit_lengt', 'STD_IMP_REP_revol_util', 'STD_IMP_REP_term_length', 'STD_IMP_REP_total_acc']\n" ] } ], "source": [ "# assign target and inputs\n", "y = 'bad_loan'\n", "X = [name for name in frame.columns if name not in ['id', '_WARN_', y]]\n", "print(y)\n", "print(X)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# set target to factor - for binary classification\n", "train[y] = train[y].asfactor()\n", "valid[y] = valid[y].asfactor()\n", "test[y] = test[y].asfactor()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "deeplearning Model Build progress: |██████████████████████████████████████| 100%\n", "Model Details\n", "=============\n", "H2ODeepLearningEstimator : Deep Learning\n", "Model Key: nn_model\n", "\n", "\n", "ModelMetricsBinomial: deeplearning\n", "** Reported on train data. **\n", "\n", "MSE: 0.14411464647275385\n", "RMSE: 0.3796243491568393\n", "LogLoss: 0.4545508130295154\n", "Mean Per-Class Error: 0.3641766804848612\n", "AUC: 0.6879894198982001\n", "Gini: 0.3759788397964001\n", "Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.20919837042173123: \n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
01ErrorRate
05628.02396.00.2986 (2396.0/8024.0)
1818.01082.00.4305 (818.0/1900.0)
Total6446.03478.00.3239 (3214.0/9924.0)
" ], "text/plain": [ " 0 1 Error Rate\n", "----- ---- ---- ------- ---------------\n", "0 5628 2396 0.2986 (2396.0/8024.0)\n", "1 818 1082 0.4305 (818.0/1900.0)\n", "Total 6446 3478 0.3239 (3214.0/9924.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Maximum Metrics: Maximum metrics at their respective thresholds\n", "\n" ] }, { "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", "
metricthresholdvalueidx
max f10.20919840.4023801210.0
max f20.13110330.5748118311.0
max f0point50.26997990.3646270145.0
max accuracy0.46763360.80894807.0
max precision0.48769670.71428572.0
max recall0.06416741.0396.0
max specificity0.49604720.99987540.0
max absolute_mcc0.22378590.2257185192.0
max min_per_class_accuracy0.19059670.6314806234.0
max mean_per_class_accuracy0.17488150.6358233254.0
" ], "text/plain": [ "metric threshold value idx\n", "--------------------------- ----------- -------- -----\n", "max f1 0.209198 0.40238 210\n", "max f2 0.131103 0.574812 311\n", "max f0point5 0.26998 0.364627 145\n", "max accuracy 0.467634 0.808948 7\n", "max precision 0.487697 0.714286 2\n", "max recall 0.0641674 1 396\n", "max specificity 0.496047 0.999875 0\n", "max absolute_mcc 0.223786 0.225718 192\n", "max min_per_class_accuracy 0.190597 0.631481 234\n", "max mean_per_class_accuracy 0.174882 0.635823 254" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Gains/Lift Table: Avg response rate: 19.15 %\n", "\n" ] }, { "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", "
groupcumulative_data_fractionlower_thresholdliftcumulative_liftresponse_ratecumulative_response_ratecapture_ratecumulative_capture_rategaincumulative_gain
10.01007660.44332532.61157892.61157890.50.50.02631580.0263158161.1578947161.1578947
20.02005240.42164532.37416272.49346730.45454550.47738690.02368420.05137.4162679149.3467337
30.03002820.40548762.69071772.55899680.51515150.48993290.02684210.0768421169.0717703155.8996821
40.04000400.39127291.89933012.39449560.36363640.45843830.01894740.095789589.9330144139.4495559
50.05008060.37585402.19372632.35409930.420.45070420.02210530.1178947119.3726316135.4099333
60.10006050.32651511.84284802.09873110.35282260.40181270.09210530.2184.2848048109.8731118
70.15004030.29287961.63223681.94333750.31250.37206180.08157890.291578963.223684294.3337457
80.20002020.26544481.65329801.87086410.31653230.35818640.08263160.374210565.329796387.0864112
90.29997980.22511971.36370761.70186870.26108870.32583140.13631580.510526336.370755570.1868713
100.40004030.19527771.04673561.53800290.20040280.29445840.10473680.61526324.673557053.8002917
110.50.17095841.03726021.43789470.19858870.27529220.10368420.71894743.726018743.7894737
120.59995970.14886870.82664901.33605470.15826610.25579440.08263160.8015789-17.335101933.6054665
130.70002020.12976430.76795671.25485110.14702920.24024760.07684210.8784211-23.204325025.4851091
140.79997980.11115190.46334471.15595020.08870970.22131250.04631580.9247368-53.665534815.5950173
150.89993950.09225710.45281411.07785020.08669350.20635990.04526320.97-54.71859087.7850185
161.00.05967730.29981871.00.05740180.19145510.031.0-70.01812690.0
" ], "text/plain": [ " group cumulative_data_fraction lower_threshold lift cumulative_lift response_rate cumulative_response_rate capture_rate cumulative_capture_rate gain cumulative_gain\n", "-- ------- -------------------------- ----------------- -------- ----------------- --------------- -------------------------- -------------- ------------------------- -------- -----------------\n", " 1 0.0100766 0.443325 2.61158 2.61158 0.5 0.5 0.0263158 0.0263158 161.158 161.158\n", " 2 0.0200524 0.421645 2.37416 2.49347 0.454545 0.477387 0.0236842 0.05 137.416 149.347\n", " 3 0.0300282 0.405488 2.69072 2.559 0.515152 0.489933 0.0268421 0.0768421 169.072 155.9\n", " 4 0.040004 0.391273 1.89933 2.3945 0.363636 0.458438 0.0189474 0.0957895 89.933 139.45\n", " 5 0.0500806 0.375854 2.19373 2.3541 0.42 0.450704 0.0221053 0.117895 119.373 135.41\n", " 6 0.10006 0.326515 1.84285 2.09873 0.352823 0.401813 0.0921053 0.21 84.2848 109.873\n", " 7 0.15004 0.29288 1.63224 1.94334 0.3125 0.372062 0.0815789 0.291579 63.2237 94.3337\n", " 8 0.20002 0.265445 1.6533 1.87086 0.316532 0.358186 0.0826316 0.374211 65.3298 87.0864\n", " 9 0.29998 0.22512 1.36371 1.70187 0.261089 0.325831 0.136316 0.510526 36.3708 70.1869\n", " 10 0.40004 0.195278 1.04674 1.538 0.200403 0.294458 0.104737 0.615263 4.67356 53.8003\n", " 11 0.5 0.170958 1.03726 1.43789 0.198589 0.275292 0.103684 0.718947 3.72602 43.7895\n", " 12 0.59996 0.148869 0.826649 1.33605 0.158266 0.255794 0.0826316 0.801579 -17.3351 33.6055\n", " 13 0.70002 0.129764 0.767957 1.25485 0.147029 0.240248 0.0768421 0.878421 -23.2043 25.4851\n", " 14 0.79998 0.111152 0.463345 1.15595 0.0887097 0.221313 0.0463158 0.924737 -53.6655 15.595\n", " 15 0.89994 0.0922571 0.452814 1.07785 0.0866935 0.20636 0.0452632 0.97 -54.7186 7.78502\n", " 16 1 0.0596773 0.299819 1 0.0574018 0.191455 0.03 1 -70.0181 0" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "ModelMetricsBinomial: deeplearning\n", "** Reported on validation data. **\n", "\n", "MSE: 0.14716412316013278\n", "RMSE: 0.38361976377675433\n", "LogLoss: 0.46347712915408495\n", "Mean Per-Class Error: 0.3757937526837185\n", "AUC: 0.6690848124829848\n", "Gini: 0.3381696249659696\n", "Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.1974456585232734: \n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
01ErrorRate
026099.013560.00.3419 (13560.0/39659.0)
13905.05627.00.4097 (3905.0/9532.0)
Total30004.019187.00.355 (17465.0/49191.0)
" ], "text/plain": [ " 0 1 Error Rate\n", "----- ----- ----- ------- -----------------\n", "0 26099 13560 0.3419 (13560.0/39659.0)\n", "1 3905 5627 0.4097 (3905.0/9532.0)\n", "Total 30004 19187 0.355 (17465.0/49191.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Maximum Metrics: Maximum metrics at their respective thresholds\n", "\n" ] }, { "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", "
metricthresholdvalueidx
max f10.19744570.3918660230.0
max f20.11169280.5627238338.0
max f0point50.28425870.3550024137.0
max accuracy0.45182330.806509319.0
max precision0.47273660.520833310.0
max recall0.06031671.0399.0
max specificity0.50919840.99992440.0
max absolute_mcc0.20299960.2017317223.0
max min_per_class_accuracy0.18890880.6219052240.0
max mean_per_class_accuracy0.19744570.6242062230.0
" ], "text/plain": [ "metric threshold value idx\n", "--------------------------- ----------- -------- -----\n", "max f1 0.197446 0.391866 230\n", "max f2 0.111693 0.562724 338\n", "max f0point5 0.284259 0.355002 137\n", "max accuracy 0.451823 0.806509 19\n", "max precision 0.472737 0.520833 10\n", "max recall 0.0603167 1 399\n", "max specificity 0.509198 0.999924 0\n", "max absolute_mcc 0.203 0.201732 223\n", "max min_per_class_accuracy 0.188909 0.621905 240\n", "max mean_per_class_accuracy 0.197446 0.624206 230" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Gains/Lift Table: Avg response rate: 19.38 %\n", "\n" ] }, { "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", "
groupcumulative_data_fractionlower_thresholdliftcumulative_liftresponse_ratecumulative_response_ratecapture_ratecumulative_capture_rategaincumulative_gain
10.01000180.44490252.60128662.60128660.50406500.50406500.02601760.0260176160.1286552160.1286552
20.02000370.42142642.16074612.38101630.41869920.46138210.02161140.0476290116.0746088138.1016320
30.03000550.40278772.07683362.27962210.40243900.44173440.02077210.0684012107.6833618127.9622086
40.04000730.38861232.01389932.21319140.39024390.42886180.02014270.0885439101.3899266121.3191381
50.05000910.37566321.99292112.16913730.38617890.42032520.01993290.108476799.2921149116.9137335
60.10001830.32587141.83558532.00236130.35569110.38800810.09179610.200272883.5585269100.2361302
70.15000710.29072101.78806251.93094770.34648230.37416990.08938310.289655978.806245393.0947713
80.20001630.26374211.40763171.80010540.27276420.34881590.07039450.360050440.763167580.0105407
90.30001420.22350131.25264821.61763200.24273230.31345710.12526230.485312625.264820961.7632039
100.40001220.19445641.13409781.49675460.21976010.29003400.11340750.598720113.409775149.6754611
110.50001020.17007300.95889491.38918700.18581010.26919010.09588750.6946076-4.110514038.9187034
120.60000810.14883760.81621471.29369490.15816220.25068610.08161980.7762274-18.378533829.3694874
130.70000610.12935340.74382541.21514440.14413500.23546490.07438100.8506085-25.617455621.5144380
140.80000410.11081830.64101181.14337960.12421220.22155870.06409990.9147084-35.898822814.3379628
150.90000200.09276160.46895621.06844540.09087210.20703830.04689470.9616030-53.10437616.8445388
161.00.05900420.38397761.00.07440540.19377530.03839701.0-61.60224080.0
" ], "text/plain": [ " group cumulative_data_fraction lower_threshold lift cumulative_lift response_rate cumulative_response_rate capture_rate cumulative_capture_rate gain cumulative_gain\n", "-- ------- -------------------------- ----------------- -------- ----------------- --------------- -------------------------- -------------- ------------------------- -------- -----------------\n", " 1 0.0100018 0.444902 2.60129 2.60129 0.504065 0.504065 0.0260176 0.0260176 160.129 160.129\n", " 2 0.0200037 0.421426 2.16075 2.38102 0.418699 0.461382 0.0216114 0.047629 116.075 138.102\n", " 3 0.0300055 0.402788 2.07683 2.27962 0.402439 0.441734 0.0207721 0.0684012 107.683 127.962\n", " 4 0.0400073 0.388612 2.0139 2.21319 0.390244 0.428862 0.0201427 0.0885439 101.39 121.319\n", " 5 0.0500091 0.375663 1.99292 2.16914 0.386179 0.420325 0.0199329 0.108477 99.2921 116.914\n", " 6 0.100018 0.325871 1.83559 2.00236 0.355691 0.388008 0.0917961 0.200273 83.5585 100.236\n", " 7 0.150007 0.290721 1.78806 1.93095 0.346482 0.37417 0.0893831 0.289656 78.8062 93.0948\n", " 8 0.200016 0.263742 1.40763 1.80011 0.272764 0.348816 0.0703945 0.36005 40.7632 80.0105\n", " 9 0.300014 0.223501 1.25265 1.61763 0.242732 0.313457 0.125262 0.485313 25.2648 61.7632\n", " 10 0.400012 0.194456 1.1341 1.49675 0.21976 0.290034 0.113407 0.59872 13.4098 49.6755\n", " 11 0.50001 0.170073 0.958895 1.38919 0.18581 0.26919 0.0958875 0.694608 -4.11051 38.9187\n", " 12 0.600008 0.148838 0.816215 1.29369 0.158162 0.250686 0.0816198 0.776227 -18.3785 29.3695\n", " 13 0.700006 0.129353 0.743825 1.21514 0.144135 0.235465 0.074381 0.850608 -25.6175 21.5144\n", " 14 0.800004 0.110818 0.641012 1.14338 0.124212 0.221559 0.0640999 0.914708 -35.8988 14.338\n", " 15 0.900002 0.0927616 0.468956 1.06845 0.0908721 0.207038 0.0468947 0.961603 -53.1044 6.84454\n", " 16 1 0.0590042 0.383978 1 0.0744054 0.193775 0.038397 1 -61.6022 0" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Scoring History: \n" ] }, { "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", "
timestampdurationtraining_speedepochsiterationssamplestraining_rmsetraining_loglosstraining_auctraining_lifttraining_classification_errorvalidation_rmsevalidation_loglossvalidation_aucvalidation_liftvalidation_classification_error
2017-03-05 14:57:57 0.000 secNone0.000.0nannannannannannannannannannan
2017-03-05 14:57:59 3.062 sec76298 obs/sec1.5226220199951.00.38027830.45535970.68595342.61157890.34522370.38442280.46455500.66884022.50688500.3755972
2017-03-05 14:58:01 4.515 sec81583 obs/sec3.04490892199880.00.37978840.45519460.68933692.45488420.34320840.38371570.46371020.67073542.45443970.3816552
2017-03-05 14:58:02 5.929 sec82905 obs/sec4.56180313299455.00.37981080.45466440.68729532.55934740.36608220.38419540.46462530.66669722.64324280.3563863
2017-03-05 14:58:03 7.582 sec85776 obs/sec6.08785274399631.00.38333280.46240140.68821862.55934740.37505040.38713300.47188120.67011152.46492880.3870627
2017-03-05 14:58:0610.107 sec71733 obs/sec7.61218095499694.00.37983770.45451020.68818842.50711580.34048770.38408240.46429120.66915572.53835220.3875912
2017-03-05 14:58:0811.420 sec74286 obs/sec9.13591496599718.00.38033890.45672690.68989392.55934740.36920600.38451550.46561830.66928892.51737410.3575857
2017-03-05 14:58:0912.670 sec76750 obs/sec10.66070017699811.00.38006110.45562080.68472442.35042110.34451830.38399160.46403500.66819222.39150540.3925108
2017-03-05 14:58:1013.871 sec78923 obs/sec12.18405348799810.00.38005290.45589970.68505402.82050530.31207170.38411830.46483430.66580782.61177560.3621801
2017-03-05 14:58:1115.033 sec81064 obs/sec13.70867109899892.00.37967600.45429790.68903182.66381050.37585650.38390980.46430720.67043572.66422090.3624850
2017-03-05 14:58:1316.193 sec82809 obs/sec15.232466010999920.00.38089940.45661820.68660722.55934740.31479240.38558630.46762740.66734282.34954910.4046269
2017-03-05 14:58:1417.374 sec84153 obs/sec16.7539912111099799.00.38032670.45563010.68753462.40265260.34935510.38458160.46503650.66773902.39150540.4101157
2017-03-05 14:58:1518.601 sec85075 obs/sec18.2777710121199826.00.37962430.45455080.68798942.61157890.32386130.38361980.46347710.66908482.60128660.3550446
2017-03-05 14:58:1619.737 sec86261 obs/sec19.7992200131299700.00.38083490.45751950.68481412.50711580.37162430.38500060.46631610.66655592.53835220.3568742
2017-03-05 14:58:1720.930 sec87106 obs/sec21.3266864141399969.00.38434920.46528620.68185012.71604210.34784360.38819000.47330230.66405042.55933030.3793987
2017-03-05 14:58:1721.125 sec87078 obs/sec21.3266864141399969.00.37962430.45455080.68798942.61157890.32386130.38361980.46347710.66908482.60128660.3550446
" ], "text/plain": [ " timestamp duration training_speed epochs iterations samples training_rmse training_logloss training_auc training_lift training_classification_error validation_rmse validation_logloss validation_auc validation_lift validation_classification_error\n", "-- ------------------- ---------- ---------------- -------- ------------ ----------- --------------- ------------------ -------------- --------------- ------------------------------- ----------------- -------------------- ---------------- ----------------- ---------------------------------\n", " 2017-03-05 14:57:57 0.000 sec 0 0 0 nan nan nan nan nan nan nan nan nan nan\n", " 2017-03-05 14:57:59 3.062 sec 76298 obs/sec 1.52262 1 99951 0.380278 0.45536 0.685953 2.61158 0.345224 0.384423 0.464555 0.66884 2.50689 0.375597\n", " 2017-03-05 14:58:01 4.515 sec 81583 obs/sec 3.04491 2 199880 0.379788 0.455195 0.689337 2.45488 0.343208 0.383716 0.46371 0.670735 2.45444 0.381655\n", " 2017-03-05 14:58:02 5.929 sec 82905 obs/sec 4.5618 3 299455 0.379811 0.454664 0.687295 2.55935 0.366082 0.384195 0.464625 0.666697 2.64324 0.356386\n", " 2017-03-05 14:58:03 7.582 sec 85776 obs/sec 6.08785 4 399631 0.383333 0.462401 0.688219 2.55935 0.37505 0.387133 0.471881 0.670112 2.46493 0.387063\n", " 2017-03-05 14:58:06 10.107 sec 71733 obs/sec 7.61218 5 499694 0.379838 0.45451 0.688188 2.50712 0.340488 0.384082 0.464291 0.669156 2.53835 0.387591\n", " 2017-03-05 14:58:08 11.420 sec 74286 obs/sec 9.13591 6 599718 0.380339 0.456727 0.689894 2.55935 0.369206 0.384516 0.465618 0.669289 2.51737 0.357586\n", " 2017-03-05 14:58:09 12.670 sec 76750 obs/sec 10.6607 7 699811 0.380061 0.455621 0.684724 2.35042 0.344518 0.383992 0.464035 0.668192 2.39151 0.392511\n", " 2017-03-05 14:58:10 13.871 sec 78923 obs/sec 12.1841 8 799810 0.380053 0.4559 0.685054 2.82051 0.312072 0.384118 0.464834 0.665808 2.61178 0.36218\n", " 2017-03-05 14:58:11 15.033 sec 81064 obs/sec 13.7087 9 899892 0.379676 0.454298 0.689032 2.66381 0.375857 0.38391 0.464307 0.670436 2.66422 0.362485\n", " 2017-03-05 14:58:13 16.193 sec 82809 obs/sec 15.2325 10 999920 0.380899 0.456618 0.686607 2.55935 0.314792 0.385586 0.467627 0.667343 2.34955 0.404627\n", " 2017-03-05 14:58:14 17.374 sec 84153 obs/sec 16.754 11 1.0998e+06 0.380327 0.45563 0.687535 2.40265 0.349355 0.384582 0.465036 0.667739 2.39151 0.410116\n", " 2017-03-05 14:58:15 18.601 sec 85075 obs/sec 18.2778 12 1.19983e+06 0.379624 0.454551 0.687989 2.61158 0.323861 0.38362 0.463477 0.669085 2.60129 0.355045\n", " 2017-03-05 14:58:16 19.737 sec 86261 obs/sec 19.7992 13 1.2997e+06 0.380835 0.45752 0.684814 2.50712 0.371624 0.385001 0.466316 0.666556 2.53835 0.356874\n", " 2017-03-05 14:58:17 20.930 sec 87106 obs/sec 21.3267 14 1.39997e+06 0.384349 0.465286 0.68185 2.71604 0.347844 0.38819 0.473302 0.66405 2.55933 0.379399\n", " 2017-03-05 14:58:17 21.125 sec 87078 obs/sec 21.3267 14 1.39997e+06 0.379624 0.454551 0.687989 2.61158 0.323861 0.38362 0.463477 0.669085 2.60129 0.355045" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# neural network\n", "\n", "# initialize nn model\n", "nn_model = H2ODeepLearningEstimator(\n", " epochs=50, # read over the data 50 times, but in mini-batches\n", " hidden=[100], # 100 hidden units in 1 hidden layer\n", " input_dropout_ratio=0.2, # randomly drop 20% of inputs for each iteration, helps w/ generalization\n", " hidden_dropout_ratios=[0.05], # randomly set 5% of hidden weights to 0 each iteration, helps w/ generalization\n", " activation='TanhWithDropout', # bounded activation function that allows for dropout, tanh\n", " l1=0.001, # L1 penalty can help generalization \n", " l2=0.01, # L2 penalty can increase stability in presence of highly correlated inputs\n", " adaptive_rate=True, # adjust magnitude of weight updates automatically (+stability, +accuracy)\n", " stopping_rounds=5, # stop after validation error does not decrease for 5 iterations\n", " score_each_iteration=True, # score validation error on every iteration\n", " model_id='nn_model') # for easy lookup in flow\n", "\n", "# train nn model\n", "nn_model.train(\n", " x=X,\n", " y=y,\n", " training_frame=train,\n", " validation_frame=valid)\n", "\n", "# print model information\n", "nn_model\n", "\n", "# view detailed results at http://localhost:54321/flow/index.html" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.6879894198982001\n", "0.6690848124829848\n", "0.6768012585175186\n" ] } ], "source": [ "# measure nn AUC\n", "print(nn_model.auc(train=True))\n", "print(nn_model.auc(valid=True))\n", "print(nn_model.model_performance(test_data=test).auc())" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "deeplearning Grid Build progress: |███████████████████████████████████████| 100%\n" ] } ], "source": [ "# NN with random hyperparameter search\n", "# train many different NN models with random hyperparameters\n", "# and select best model based on validation error\n", "\n", "# define random grid search parameters\n", "hyper_parameters = {'hidden':[[170, 320], [80, 190], [320, 160, 80], [100], [50, 50, 50, 50]],\n", " 'l1':[s/1e4 for s in range(0, 1000, 100)],\n", " 'l2':[s/1e5 for s in range(0, 1000, 100)],\n", " 'input_dropout_ratio':[s/1e2 for s in range(0, 20, 2)]}\n", "\n", "# define search strategy\n", "search_criteria = {'strategy':'RandomDiscrete',\n", " 'max_models':20,\n", " 'max_runtime_secs':600}\n", "\n", "# initialize grid search\n", "gsearch = H2OGridSearch(H2ODeepLearningEstimator,\n", " hyper_params=hyper_parameters,\n", " search_criteria=search_criteria)\n", "\n", "# execute training w/ grid search\n", "gsearch.train(x=X,\n", " y=y,\n", " training_frame=train,\n", " validation_frame=valid)\n", "\n", "# view detailed results at http://localhost:54321/flow/index.html" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " hidden input_dropout_ratio l1 l2 \\\n", "0 [100] 0.18 0.02 0.008 \n", "1 [100] 0.1 0.02 0.008 \n", "2 [100] 0.1 0.06 0.006 \n", "3 [320, 160, 80] 0.0 0.01 0.001 \n", "4 [170, 320] 0.06 0.01 0.007 \n", "5 [170, 320] 0.12 0.03 0.004 \n", "6 [80, 190] 0.18 0.02 0.008 \n", "7 [80, 190] 0.1 0.03 0.009 \n", "8 [50, 50, 50, 50] 0.08 0.05 0.004 \n", "9 [80, 190] 0.18 0.06 0.005 \n", "10 [80, 190] 0.0 0.06 0.008 \n", "11 [100] 0.02 0.04 0.006 \n", "12 [100] 0.02 0.06 0.004 \n", "13 [80, 190] 0.18 0.06 0.007 \n", "14 [170, 320] 0.06 0.07 0.007 \n", "15 [80, 190] 0.14 0.03 0.004 \n", "16 [50, 50, 50, 50] 0.12 0.01 0.007 \n", "17 [320, 160, 80] 0.02 0.01 0.0 \n", "18 [50, 50, 50, 50] 0.1 0.06 0.0 \n", "19 [320, 160, 80] 0.16 0.01 0.003 \n", "\n", " model_ids \\\n", "0 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_model_9 \n", "1 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_mode... \n", "2 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_model_4 \n", "3 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_mode... \n", "4 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_model_6 \n", "5 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_model_3 \n", "6 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_mode... \n", "7 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_mode... \n", "8 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_mode... \n", "9 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_model_7 \n", "10 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_mode... \n", "11 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_mode... \n", "12 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_mode... \n", "13 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_model_1 \n", "14 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_model_8 \n", "15 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_mode... \n", "16 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_model_0 \n", "17 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_model_5 \n", "18 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_model_2 \n", "19 Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_mode... \n", "\n", " logloss \n", "0 0.4665108466360082 \n", "1 0.4672577727589049 \n", "2 0.49180760688559993 \n", "3 0.49340422513101256 \n", "4 0.4935917111436136 \n", "5 0.4940674960651805 \n", "6 0.4943429023102421 \n", "7 0.4952134113980504 \n", "8 0.497018064417741 \n", "9 0.49821296269581355 \n", "10 0.49823191879660195 \n", "11 0.498394425377021 \n", "12 0.49845713499201155 \n", "13 0.4985832770417643 \n", "14 0.49956120207440785 \n", "15 0.5065674270865724 \n", "16 0.5123765682901726 \n", "17 0.5143173692053821 \n", "18 0.5622461586498995 \n", "19 0.6299455225981917 \n", "Model Details\n", "=============\n", "H2ODeepLearningEstimator : Deep Learning\n", "Model Key: Grid_DeepLearning_py_7_sid_bc2c_model_python_1488743871002_32_model_9\n", "\n", "\n", "ModelMetricsBinomial: deeplearning\n", "** Reported on train data. **\n", "\n", "MSE: 0.14725977717296032\n", "RMSE: 0.38374441647138047\n", "LogLoss: 0.46372711571707503\n", "Mean Per-Class Error: 0.3731369293059327\n", "AUC: 0.6717227633960028\n", "Gini: 0.3434455267920056\n", "Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.19698055628842004: \n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
01ErrorRate
05491.02663.00.3266 (2663.0/8154.0)
1818.01130.00.4199 (818.0/1948.0)
Total6309.03793.00.3446 (3481.0/10102.0)
" ], "text/plain": [ " 0 1 Error Rate\n", "----- ---- ---- ------- ----------------\n", "0 5491 2663 0.3266 (2663.0/8154.0)\n", "1 818 1130 0.4199 (818.0/1948.0)\n", "Total 6309 3793 0.3446 (3481.0/10102.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Maximum Metrics: Maximum metrics at their respective thresholds\n", "\n" ] }, { "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", "
metricthresholdvalueidx
max f10.19698060.3936596201.0
max f20.12049210.5644273328.0
max f0point50.24455480.3516508131.0
max accuracy0.34557960.808057833.0
max precision0.39779740.55263164.0
max recall0.06699541.0392.0
max specificity0.40625460.99852830.0
max absolute_mcc0.21072210.2120594178.0
max min_per_class_accuracy0.18894170.6232033214.0
max mean_per_class_accuracy0.19149470.6268631209.0
" ], "text/plain": [ "metric threshold value idx\n", "--------------------------- ----------- -------- -----\n", "max f1 0.196981 0.39366 201\n", "max f2 0.120492 0.564427 328\n", "max f0point5 0.244555 0.351651 131\n", "max accuracy 0.34558 0.808058 33\n", "max precision 0.397797 0.552632 4\n", "max recall 0.0669954 1 392\n", "max specificity 0.406255 0.998528 0\n", "max absolute_mcc 0.210722 0.212059 178\n", "max min_per_class_accuracy 0.188942 0.623203 214\n", "max mean_per_class_accuracy 0.191495 0.626863 209" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Gains/Lift Table: Avg response rate: 19.28 %\n", "\n" ] }, { "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", "
groupcumulative_data_fractionlower_thresholdliftcumulative_liftresponse_ratecumulative_response_ratecapture_ratecumulative_capture_rategaincumulative_gain
10.01009700.36865372.59291582.59291580.50.50.02618070.0261807159.2915811159.2915811
20.02009500.35109922.56724342.58014280.49504950.49753690.02566740.0518480156.7243377158.0142827
30.03009310.33445232.46455362.54173980.47524750.49013160.02464070.0764887146.4553642154.1739841
40.04009110.32377291.95110502.39444570.37623760.46172840.01950720.095995995.1104967139.4445712
50.05008910.31167072.36186392.38794220.45544550.46047430.02361400.1196099136.1863907138.7942229
60.10007920.27308951.77653242.08253970.34257430.40158260.08880900.208418977.6532417108.2539702
70.15006930.25073781.48900121.88482400.28712870.36345650.07443530.282854248.900115988.4824026
80.20005940.23545861.54034601.79874710.29702970.34685800.07700210.359856354.034602679.8747139
90.30003960.21068721.38117691.65960300.26633660.32002640.13809030.497946638.117693765.9602994
100.40001980.19269371.02689741.50146570.19801980.28953230.10266940.60061602.689735150.1465726
110.50.17644880.89853521.38090350.17326730.26628390.08983570.6904517-10.146481838.0903491
120.59998020.16189270.90366971.30137760.17425740.25094870.09034910.7808008-9.633033130.1377644
130.69996040.14664390.68802121.21376770.13267330.23405460.06878850.8495893-31.197877521.3767690
140.79994060.12947170.63154191.14099850.12178220.22002230.06314170.9127310-36.845812914.0998469
150.89992080.10923140.53912111.07413060.10396040.20712790.05390140.9666324-46.08788917.4130563
161.00.05072880.33341151.00.06429280.19283310.03336761.0-66.65884710.0
" ], "text/plain": [ " group cumulative_data_fraction lower_threshold lift cumulative_lift response_rate cumulative_response_rate capture_rate cumulative_capture_rate gain cumulative_gain\n", "-- ------- -------------------------- ----------------- -------- ----------------- --------------- -------------------------- -------------- ------------------------- -------- -----------------\n", " 1 0.010097 0.368654 2.59292 2.59292 0.5 0.5 0.0261807 0.0261807 159.292 159.292\n", " 2 0.020095 0.351099 2.56724 2.58014 0.49505 0.497537 0.0256674 0.051848 156.724 158.014\n", " 3 0.0300931 0.334452 2.46455 2.54174 0.475248 0.490132 0.0246407 0.0764887 146.455 154.174\n", " 4 0.0400911 0.323773 1.9511 2.39445 0.376238 0.461728 0.0195072 0.0959959 95.1105 139.445\n", " 5 0.0500891 0.311671 2.36186 2.38794 0.455446 0.460474 0.023614 0.11961 136.186 138.794\n", " 6 0.100079 0.273089 1.77653 2.08254 0.342574 0.401583 0.088809 0.208419 77.6532 108.254\n", " 7 0.150069 0.250738 1.489 1.88482 0.287129 0.363456 0.0744353 0.282854 48.9001 88.4824\n", " 8 0.200059 0.235459 1.54035 1.79875 0.29703 0.346858 0.0770021 0.359856 54.0346 79.8747\n", " 9 0.30004 0.210687 1.38118 1.6596 0.266337 0.320026 0.13809 0.497947 38.1177 65.9603\n", " 10 0.40002 0.192694 1.0269 1.50147 0.19802 0.289532 0.102669 0.600616 2.68974 50.1466\n", " 11 0.5 0.176449 0.898535 1.3809 0.173267 0.266284 0.0898357 0.690452 -10.1465 38.0903\n", " 12 0.59998 0.161893 0.90367 1.30138 0.174257 0.250949 0.0903491 0.780801 -9.63303 30.1378\n", " 13 0.69996 0.146644 0.688021 1.21377 0.132673 0.234055 0.0687885 0.849589 -31.1979 21.3768\n", " 14 0.799941 0.129472 0.631542 1.141 0.121782 0.220022 0.0631417 0.912731 -36.8458 14.0998\n", " 15 0.899921 0.109231 0.539121 1.07413 0.10396 0.207128 0.0539014 0.966632 -46.0879 7.41306\n", " 16 1 0.0507288 0.333412 1 0.0642928 0.192833 0.0333676 1 -66.6588 0" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "ModelMetricsBinomial: deeplearning\n", "** Reported on validation data. **\n", "\n", "MSE: 0.14836589527056177\n", "RMSE: 0.3851829374083979\n", "LogLoss: 0.4665108466360082\n", "Mean Per-Class Error: 0.37686646501331533\n", "AUC: 0.669025639866052\n", "Gini: 0.338051279732104\n", "Confusion Matrix (Act/Pred) for max f1 @ threshold = 0.18331602718201165: \n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
01ErrorRate
023892.015767.00.3976 (15767.0/39659.0)
13395.06137.00.3562 (3395.0/9532.0)
Total27287.021904.00.3895 (19162.0/49191.0)
" ], "text/plain": [ " 0 1 Error Rate\n", "----- ----- ----- ------- -----------------\n", "0 23892 15767 0.3976 (15767.0/39659.0)\n", "1 3395 6137 0.3562 (3395.0/9532.0)\n", "Total 27287 21904 0.3895 (19162.0/49191.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Maximum Metrics: Maximum metrics at their respective thresholds\n", "\n" ] }, { "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", "
metricthresholdvalueidx
max f10.18331600.3904441222.0
max f20.13323250.5648486306.0
max f0point50.22653550.3486420157.0
max accuracy0.40634810.80612310.0
max precision0.40634810.47863250.0
max recall0.05926091.0396.0
max specificity0.40634810.99846190.0
max absolute_mcc0.21174990.1999202178.0
max min_per_class_accuracy0.18607780.6189516218.0
max mean_per_class_accuracy0.18331600.6231335222.0
" ], "text/plain": [ "metric threshold value idx\n", "--------------------------- ----------- -------- -----\n", "max f1 0.183316 0.390444 222\n", "max f2 0.133233 0.564849 306\n", "max f0point5 0.226536 0.348642 157\n", "max accuracy 0.406348 0.806123 0\n", "max precision 0.406348 0.478632 0\n", "max recall 0.0592609 1 396\n", "max specificity 0.406348 0.998462 0\n", "max absolute_mcc 0.21175 0.19992 178\n", "max min_per_class_accuracy 0.186078 0.618952 218\n", "max mean_per_class_accuracy 0.183316 0.623134 222" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Gains/Lift Table: Avg response rate: 19.38 %\n", "\n" ] }, { "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", "
groupcumulative_data_fractionlower_thresholdliftcumulative_liftresponse_ratecumulative_response_ratecapture_ratecumulative_capture_rategaincumulative_gain
10.01000180.37180312.31808202.31808200.44918700.44918700.02318510.0231851131.8081968131.8081968
20.02000370.34905292.22368042.27088120.43089430.44004070.02224090.0454259122.3680440127.0881204
30.03000550.33288782.00341022.18172420.38821140.42276420.02003780.0654637100.3410207118.1724205
40.04000730.31904512.16074612.17647970.41869920.42174800.02161140.0870751116.0746088117.6479676
50.05000910.30842062.08732272.15864830.40447150.41829270.02087700.1079522108.7322677115.8648276
60.10001830.27107561.83978091.99921460.35650410.38739840.09200590.199958083.978089299.9214584
70.15000710.24893771.66004391.88618830.32167550.36549670.08298360.282941766.004389788.6188331
80.20001630.23302951.46007701.77964970.28292680.34485210.07301720.355958946.007696877.9649663
90.30001420.20873751.29566211.61833140.25106730.31359260.12956360.485522529.566209361.8331405
100.40001220.19037851.08688741.48547720.21061190.28784880.10868650.59420908.688739148.5477153
110.50001020.17481600.99351581.38708890.19251880.26878350.09934960.6935585-0.648420938.7088881
120.60000810.16041520.84873741.29736670.16446430.25139760.08487200.7784305-15.126264529.7366667
130.70000610.14534770.75221841.21949060.14576130.23630710.07522030.8536509-24.778160321.9490604
140.80000410.12827960.63052061.14587120.12217930.22204150.06305080.9167016-36.947941914.5871222
150.90000200.10907390.48259481.07217550.09351490.20776110.04825850.9649601-51.74052127.2175505
161.00.04896600.35040581.00.06790000.19377530.03503991.0-64.95942190.0
" ], "text/plain": [ " group cumulative_data_fraction lower_threshold lift cumulative_lift response_rate cumulative_response_rate capture_rate cumulative_capture_rate gain cumulative_gain\n", "-- ------- -------------------------- ----------------- -------- ----------------- --------------- -------------------------- -------------- ------------------------- --------- -----------------\n", " 1 0.0100018 0.371803 2.31808 2.31808 0.449187 0.449187 0.0231851 0.0231851 131.808 131.808\n", " 2 0.0200037 0.349053 2.22368 2.27088 0.430894 0.440041 0.0222409 0.0454259 122.368 127.088\n", " 3 0.0300055 0.332888 2.00341 2.18172 0.388211 0.422764 0.0200378 0.0654637 100.341 118.172\n", " 4 0.0400073 0.319045 2.16075 2.17648 0.418699 0.421748 0.0216114 0.0870751 116.075 117.648\n", " 5 0.0500091 0.308421 2.08732 2.15865 0.404472 0.418293 0.020877 0.107952 108.732 115.865\n", " 6 0.100018 0.271076 1.83978 1.99921 0.356504 0.387398 0.0920059 0.199958 83.9781 99.9215\n", " 7 0.150007 0.248938 1.66004 1.88619 0.321675 0.365497 0.0829836 0.282942 66.0044 88.6188\n", " 8 0.200016 0.23303 1.46008 1.77965 0.282927 0.344852 0.0730172 0.355959 46.0077 77.965\n", " 9 0.300014 0.208737 1.29566 1.61833 0.251067 0.313593 0.129564 0.485522 29.5662 61.8331\n", " 10 0.400012 0.190378 1.08689 1.48548 0.210612 0.287849 0.108687 0.594209 8.68874 48.5477\n", " 11 0.50001 0.174816 0.993516 1.38709 0.192519 0.268784 0.0993496 0.693559 -0.648421 38.7089\n", " 12 0.600008 0.160415 0.848737 1.29737 0.164464 0.251398 0.084872 0.778431 -15.1263 29.7367\n", " 13 0.700006 0.145348 0.752218 1.21949 0.145761 0.236307 0.0752203 0.853651 -24.7782 21.9491\n", " 14 0.800004 0.12828 0.630521 1.14587 0.122179 0.222042 0.0630508 0.916702 -36.9479 14.5871\n", " 15 0.900002 0.109074 0.482595 1.07218 0.0935149 0.207761 0.0482585 0.96496 -51.7405 7.21755\n", " 16 1 0.048966 0.350406 1 0.0679 0.193775 0.0350399 1 -64.9594 0" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Scoring History: \n" ] }, { "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", "
timestampdurationtraining_speedepochsiterationssamplestraining_rmsetraining_loglosstraining_auctraining_lifttraining_classification_errorvalidation_rmsevalidation_loglossvalidation_aucvalidation_liftvalidation_classification_error
2017-03-05 14:59:33 0.000 secNone0.000.0nannannannannannannannannannan
2017-03-05 14:59:33 1 min 14.205 sec160107 obs/sec1.0165644.00.38397850.46529940.67006432.28786690.37576720.38507450.46747970.66749732.30759290.3717753
2017-03-05 14:59:36 1 min 17.521 sec183568 obs/sec10.010656440.00.38374440.46372710.67172282.59291580.34458520.38518290.46651080.66902562.31808200.3895428
" ], "text/plain": [ " timestamp duration training_speed epochs iterations samples training_rmse training_logloss training_auc training_lift training_classification_error validation_rmse validation_logloss validation_auc validation_lift validation_classification_error\n", "-- ------------------- ---------------- ---------------- -------- ------------ --------- --------------- ------------------ -------------- --------------- ------------------------------- ----------------- -------------------- ---------------- ----------------- ---------------------------------\n", " 2017-03-05 14:59:33 0.000 sec 0 0 0 nan nan nan nan nan nan nan nan nan nan\n", " 2017-03-05 14:59:33 1 min 14.205 sec 160107 obs/sec 1 1 65644 0.383978 0.465299 0.670064 2.28787 0.375767 0.385075 0.46748 0.667497 2.30759 0.371775\n", " 2017-03-05 14:59:36 1 min 17.521 sec 183568 obs/sec 10 10 656440 0.383744 0.463727 0.671723 2.59292 0.344585 0.385183 0.466511 0.669026 2.31808 0.389543" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# show grid search results\n", "gsearch.show()\n", "\n", "# select best model\n", "nn_model2 = gsearch.get_grid()[0]\n", "\n", "# print model information\n", "nn_model2" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.6717227633960028\n", "0.669025639866052\n", "0.675823306490083\n" ] } ], "source": [ "# measure nn AUC\n", "print(nn_model2.auc(train=True))\n", "print(nn_model2.auc(valid=True))\n", "print(nn_model2.model_performance(test_data=test).auc())" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PartialDependencePlot progress: |█████████████████████████████████████████| 100%\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# partial dependence plots are a powerful machine learning interpretation tool\n", "# to calculate partial dependence across the domain a variable\n", "# hold column of interest at constant value\n", "# find the mean prediction of the model with this column constant\n", "# repeat for multiple values of the variable of interest\n", "# h2o has a built-in function for partial dependence as well\n", "par_dep_dti1 = nn_model2.partial_plot(data=train, cols=['STD_IMP_REP_dti'], server=True, plot=True)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "H2O session _sid_bc2c closed.\n" ] } ], "source": [ "# shutdown h2o\n", "h2o.cluster().shutdown(prompt=False)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 05_neural_networks/xml/05_neural_networks.xml ================================================ <_ROOT_ EMVERSION="14.1" ORIENTATION="HORIZONTAL"> ================================================ FILE: 06_clustering/06_clustering.md ================================================ ## Section 06: Clustering Clustering enables us to group the rows of a data set together based on their similarities without knowing anything about the true class labels of the rows in the data set. Clustering is useful in market segmentation, anomaly detection, and other **unsupervised** learning tasks. Clustering is also useful as a data preprocessing step for **supervised** learning tasks. #### Class Notes * Overview of clustering techniques - [Blackboard electronic reserves](https://blackboard.gwu.edu) * [*Introduction to Data Mining* clustering notes](notes/tan_notes.pdf) * [EM clustering example](xml/06_clustering.xml) * [H2o clustering example](src/py_part_6_clustering.ipynb) #### [Sample Quiz](quiz/sample/quiz_6.pdf) #### [Quiz Key](quiz/key/quiz_6.pdf) #### [Assignment](assignment/assignment_4.pdf) #### Supplementary References * [*Introduction to Statistical Learning*](http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Fourth%20Printing.pdf)
Section 10.3 * [*Introduction to Data Mining*](http://www-users.cs.umn.edu/~kumar/dmbook/ch8.pdf)
Chapter 8 * [My Quora answers regarding clustering](https://www.quora.com/profile/Patrick-Hall-4/answers/Cluster-analysis) * [Estimating the Number of Clusters in a Data Det via the Gap Statistic](https://web.stanford.edu/~hastie/Papers/gap.pdf)
by Robert Tibshirani, Guenther Walther, and Trevor Hastie * [A Tutorial on Spectral Clustering](https://pdfs.semanticscholar.org/1437/415df29d3927c7851c7a0db0edd4a472d6e1.pdf) * [*K*-means tutorial with numpy](http://flothesof.github.io/k-means-numpy.html) ================================================ FILE: 06_clustering/assignment/key/.gitignore ================================================ assignment_4_key.ipynb ================================================ FILE: 06_clustering/quiz/.gitignore ================================================ key ================================================ FILE: 06_clustering/src/py_part_6_clustering.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# imports\n", "import h2o \n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "from h2o.estimators.deeplearning import H2ODeepLearningEstimator\n", "from h2o.estimators.kmeans import H2OKMeansEstimator\n", "from h2o.estimators.pca import H2OPrincipalComponentAnalysisEstimator" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# display matplotlib graphics in notebook\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: java version \"1.8.0_112\"; Java(TM) SE Runtime Environment (build 1.8.0_112-b16); Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)\n", " Starting server from /Users/phall/anaconda/lib/python3.5/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpwcyoy_n6\n", " JVM stdout: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpwcyoy_n6/h2o_phall_started_from_python.out\n", " JVM stderr: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpwcyoy_n6/h2o_phall_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321... successful.\n" ] }, { "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", "
H2O cluster uptime:02 secs
H2O cluster version:3.10.4.1
H2O cluster version age:15 days
H2O cluster name:H2O_from_python_phall_3uj259
H2O cluster total nodes:1
H2O cluster free memory:3.556 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
H2O internal security:False
Python version:3.5.2 final
" ], "text/plain": [ "-------------------------- ------------------------------\n", "H2O cluster uptime: 02 secs\n", "H2O cluster version: 3.10.4.1\n", "H2O cluster version age: 15 days\n", "H2O cluster name: H2O_from_python_phall_3uj259\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 3.556 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "Python version: 3.5.2 final\n", "-------------------------- ------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# start and connect to h2o server\n", "h2o.init()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# load clean data\n", "path = '/Users/phall/workspace/GWU_data_mining/03_regression/data/loan_clean.csv'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# define input variable measurement levels \n", "# strings automatically parsed as enums (nominal)\n", "# numbers automatically parsed as numeric\n", "col_types = {'bad_loan': 'enum',\n", " 'GRP_addr_state': 'enum',\n", " 'GRP_home_ownership': 'enum',\n", " 'GRP_verification_status': 'enum',\n", " 'GRP_REP_home_ownership': 'enum',\n", " 'GRP_purpose': 'enum'}" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "frame = h2o.import_file(path=path, col_types=col_types) # multi-threaded import" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rows:163987\n", "Cols:18\n", "\n", "\n" ] }, { "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", "
id bad_loan GRP_REP_home_ownership GRP_addr_state GRP_home_ownership GRP_purpose GRP_verification_status _WARN_ STD_IMP_REP_annual_inc STD_IMP_REP_delinq_2yrs STD_IMP_REP_dti STD_IMP_REP_emp_length STD_IMP_REP_int_rate STD_IMP_REP_loan_amnt STD_IMP_REP_longest_credit_lengt STD_IMP_REP_revol_util STD_IMP_REP_term_length STD_IMP_REP_total_acc
type int enum enum enum enum enum enum int real real real real real real real real real real
mins 10001.0 NaN -1.767455639 -0.39219617 -2.119639396 -1.6213902740000001 -1.907046215 -1.587129405 -2.22445124 -2.164541326 -0.516495577 -2.058861889
mean 91994.0 0.0 2.38744452882879e-11 2.2959296297769782e-12 6.807013811211564e-11-3.566867876239133e-11 -8.948753565861857e-128.311927579716105e-11 5.0612534090153816e-11 -1.4734128080190765e-11 -1.5009542966560638e-10 8.060924856225354e-13
maxs 173987.0 NaN 4.6180619798 4.1566950661 3.0371487270000004 1.2288169612 2.8376799992 2.7671323946 3.1431598296 3.0363495275 1.9718787627 3.0684672884
sigma 47339.11363414683 -0.0 0.9999999999982868 0.9999999999212518 1.0000000000037712 1.0000000000339833 1.0000000000199503 0.999999999985285 0.9999999999850594 1.000000000017688 1.0000000000642086 1.0000000000331841
zeros 0 0 0 0 0 0 0 0 0 0 0 0
missing0 0 0 0 0 0 0 163987 0 0 0 0 0 0 0 0 0 0
0 10001.0 0 3 14 3 3 2 nan -1.1992995020000001 -0.39219617 1.5712460425 1.2288169612 -0.7047730510000001 -1.019182214 1.6839024850000002 1.1858716502 -0.516495577 -1.359278248
1 10002.0 1 3 10 3 8 2 nan -1.04507688 -0.39219617 -1.9861534850000002 -1.6213902740000001 0.3572732234 -1.3347084310000001 -0.42059567400000003 -1.7882703350000002 1.9718787627 -1.7965180230000002
2 10003.0 0 3 7 3 7 3 nan -1.501267394 -0.39219617 -0.9556422520000001 1.2288169612 0.5158905241 -1.34732948 -0.7212382690000001 1.7782983174 -0.516495577 -1.271830292
3 10004.0 0 3 2 3 4 2 nan -0.303921333 -0.39219617 0.5500788236 1.2288169612 -0.051913437 -0.388129779 0.0303682169 0.0325652593 -0.516495577 1.089264497
4 10005.0 0 3 14 3 10 2 nan -0.890854259 -0.39219617 -0.624597193 -0.7663281030000001 -1.3369434530000002 -1.019182214 -0.8220262690000001 -1.0317254690000002 -0.516495577 -1.0969343820000002
5 10006.0 0 3 2 3 8 2 nan -0.5824090160000001 -0.39219617 -1.4054897720000001 0.9437962377 1.1319693155000001 -1.271603188 -1.623166051 1.3379811999 -0.516495577 -1.7965180230000002
6 10007.0 1 4 2 4 7 2 nan -0.788039178 -0.39219617 -1.37879259 -0.48130738 1.7388529011 -0.9434559220000001 -1.17220216 -0.8596015050000001 1.9718787627 -1.0094864270000001
7 10008.0 1 3 4 3 4 2 nan -1.430633434 -0.39219617 0.2937858745 -1.6213902740000001 -0.235817553 -0.971853281 -1.17220216 -0.703489072 1.9718787627 -1.883965979
8 10009.0 0 4 14 4 2 3 nan 0.0344814697 -0.39219617 0.032153489 -0.196286656 0.2147475328 -0.8298664840000001 -0.270274377 -1.339947451 1.9718787627 -0.135006875
9 10010.0 0 4 2 4 2 2 nan 0.1115927805 -0.39219617 -0.680661276 1.2288169612 -0.235817553 -0.13570880500000002 1.0826172966 0.5213930910000001 -0.516495577 0.8269206315000001
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "frame.describe()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bad_loan\n", "['GRP_REP_home_ownership', 'GRP_addr_state', 'GRP_home_ownership', 'GRP_purpose', 'GRP_verification_status', 'STD_IMP_REP_annual_inc', 'STD_IMP_REP_delinq_2yrs', 'STD_IMP_REP_dti', 'STD_IMP_REP_emp_length', 'STD_IMP_REP_int_rate', 'STD_IMP_REP_loan_amnt', 'STD_IMP_REP_longest_credit_lengt', 'STD_IMP_REP_revol_util', 'STD_IMP_REP_term_length', 'STD_IMP_REP_total_acc']\n" ] } ], "source": [ "# assign target and inputs\n", "y = 'bad_loan'\n", "X = [name for name in frame.columns if name not in ['id', '_WARN_', y]]\n", "print(y)\n", "print(X)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "kmeans Model Build progress: |████████████████████████████████████████████| 100%\n", "Model Details\n", "=============\n", "H2OKMeansEstimator : K-means\n", "Model Key: KMeans_model_python_1489875889040_1\n", "\n", "\n", "ModelMetricsClustering: kmeans\n", "** Reported on train data. **\n", "\n", "MSE: NaN\n", "RMSE: NaN\n", "Total Within Cluster Sum of Square Error: 1624356.9966350778\n", "Total Sum of Square Error to Grand Mean: 2079508.988208857\n", "Between Cluster Sum of Square Error: 455151.99157377915\n", "Centroid Statistics: \n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
centroidsizewithin_cluster_sum_of_squares
1.032540.0348350.7501940
2.062511.0698165.9424155
3.068936.0577840.3040256
" ], "text/plain": [ " centroid size within_cluster_sum_of_squares\n", "-- ---------- ------ -------------------------------\n", " 1 32540 348351\n", " 2 62511 698166\n", " 3 68936 577840" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Scoring History: \n" ] }, { "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", "
timestampdurationiterationnumber_of_reassigned_observationswithin_cluster_sum_of_squares
2017-03-18 18:24:54 0.013 sec0.0nannan
2017-03-18 18:24:55 0.732 sec1.0163987.03066962.6306723
2017-03-18 18:24:55 0.929 sec2.027188.01685109.9572629
2017-03-18 18:24:55 0.968 sec3.012103.01639657.0563031
2017-03-18 18:24:55 1.007 sec4.05808.01629782.4700017
2017-03-18 18:24:55 1.042 sec5.03207.01626920.9520747
2017-03-18 18:24:55 1.069 sec6.02227.01625699.4497081
2017-03-18 18:24:55 1.099 sec7.01620.01625066.3038514
2017-03-18 18:24:55 1.142 sec8.01245.01624713.2196611
2017-03-18 18:24:55 1.173 sec9.0905.01624514.2903116
2017-03-18 18:24:55 1.199 sec10.0646.01624407.3879321
" ], "text/plain": [ " timestamp duration iteration number_of_reassigned_observations within_cluster_sum_of_squares\n", "-- ------------------- ---------- ----------- ----------------------------------- -------------------------------\n", " 2017-03-18 18:24:54 0.013 sec 0 nan nan\n", " 2017-03-18 18:24:55 0.732 sec 1 163987 3.06696e+06\n", " 2017-03-18 18:24:55 0.929 sec 2 27188 1.68511e+06\n", " 2017-03-18 18:24:55 0.968 sec 3 12103 1.63966e+06\n", " 2017-03-18 18:24:55 1.007 sec 4 5808 1.62978e+06\n", " 2017-03-18 18:24:55 1.042 sec 5 3207 1.62692e+06\n", " 2017-03-18 18:24:55 1.069 sec 6 2227 1.6257e+06\n", " 2017-03-18 18:24:55 1.099 sec 7 1620 1.62507e+06\n", " 2017-03-18 18:24:55 1.142 sec 8 1245 1.62471e+06\n", " 2017-03-18 18:24:55 1.173 sec 9 905 1.62451e+06\n", " 2017-03-18 18:24:55 1.199 sec 10 646 1.62441e+06" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "# train k-means cluster model\n", "# data is already standardized\n", "# w/ 3 clusters\n", "# print summary\n", "clusters = H2OKMeansEstimator(standardize=False, k=3, seed=12345)\n", "clusters.train(x=X, training_frame=frame)\n", "print(clusters)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "kmeans prediction progress: |█████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
predict
2
2
2
1
2
2
2
2
0
1
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# join cluster labels to original data for further analysis\n", "labels = clusters.predict(frame)\n", "labeled_frame = frame.cbind(labels)\n", "labeled_frame[-1].head()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['GRP_home_ownership', 'GRP_verification_status', 'GRP_REP_home_ownership', 'GRP_addr_state', 'GRP_purpose']\n", "['STD_IMP_REP_loan_amnt', 'STD_IMP_REP_delinq_2yrs', 'STD_IMP_REP_dti', 'STD_IMP_REP_revol_util', 'STD_IMP_REP_term_length', 'STD_IMP_REP_total_acc', 'STD_IMP_REP_annual_inc', 'STD_IMP_REP_emp_length', 'STD_IMP_REP_longest_credit_lengt', 'STD_IMP_REP_int_rate']\n" ] } ], "source": [ "# determine column types\n", "reals, enums = [], []\n", "for key, val in labeled_frame.types.items():\n", " if key in X:\n", " if val == 'enum':\n", " enums.append(key)\n", " else: \n", " reals.append(key)\n", "\n", "print(enums)\n", "print(reals)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
predict mean_STD_IMP_REP_total_acc mean_STD_IMP_REP_revol_util mean_STD_IMP_REP_term_length mean_STD_IMP_REP_int_rate mean_STD_IMP_REP_longest_credit_lengt mean_STD_IMP_REP_emp_length mean_STD_IMP_REP_loan_amnt mean_STD_IMP_REP_dti mean_STD_IMP_REP_delinq_2yrs mean_STD_IMP_REP_annual_inc
0 0.272192 0.201244 1.8669 0.983326 0.18154 0.218872 0.958654 0.199811 0.0510284 0.284059
1 0.524552 -0.114655 -0.492683 -0.404329 0.540815 0.407858 0.0761135 0.00485871 0.165756 0.412678
2 -0.604146 0.00897536 -0.434474 -0.097517 -0.576103 -0.47316 -0.521535 -0.0987232 -0.174395 -0.5083
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "# profile clusters by means\n", "grouped = labeled_frame.group_by(by=['predict'])\n", "means = grouped.mean(col=reals).get_frame()\n", "print(means)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
predict mode_GRP_purpose mode_GRP_home_ownership mode_GRP_verification_status mode_GRP_addr_state mode_GRP_REP_home_ownership
0 6 1 1 11 1
1 6 1 1 11 1
2 6 2 1 11 2
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "# profile clusters by modes\n", "grouped = labeled_frame.group_by(by=['predict'])\n", "modes = grouped.mode(col=enums).get_frame()\n", "print(modes)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# define a function for plotting clusters in 2-d\n", "def plot(_2d_labeled_frame):\n", "\n", " _0 = plt.scatter(features_pandas[_2d_labeled_frame.label == 0].iloc[0:750, 0], \n", " features_pandas[_2d_labeled_frame.label == 0].iloc[0:750, 1],\n", " color='m', marker='^', alpha=.15)\n", "\n", " _1 = plt.scatter(features_pandas[_2d_labeled_frame.label == 1].iloc[0:750, 0], \n", " features_pandas[_2d_labeled_frame.label == 1].iloc[0:750, 1],\n", " color='c', alpha=.15)\n", "\n", " _2 = plt.scatter(features_pandas[_2d_labeled_frame.label == 2].iloc[0:750, 0], \n", " features_pandas[_2d_labeled_frame.label == 2].iloc[0:750, 1],\n", " color='g', marker='s', alpha=.15) \n", " \n", " plt.legend([_0, _1, _2], \n", " ['Cluster 0', 'Cluster 1', 'Cluster 2'],\n", " bbox_to_anchor=(1.05, 0.0), \n", " loc=3, borderaxespad=0.)\n", " \n", " plt.xlabel('Dimension 1')\n", " plt.ylabel('Dimension 2')" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pca Model Build progress: |███████████████████████████████████████████████| 100%\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/phall/anaconda/lib/python3.5/site-packages/h2o/job.py:65: UserWarning: _train: Dataset used may contain fewer number of rows due to removal of rows with NA/missing values. If this is not desirable, set impute_missing argument in pca call to TRUE/True/true/... depending on the client language.\n", " warnings.warn(w)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "pca prediction progress: |████████████████████████████████████████████████| 100%\n", " PC1 PC2 label\n", "0 -0.512426 -1.499444 2\n", "1 -1.953714 -1.687145 2\n", "2 -1.760159 -1.681276 2\n", "3 0.306453 -1.133484 1\n", "4 -2.389103 -1.432739 2\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# project training data onto 2-D using principal components\n", "# join with clusters labels\n", "# plot\n", "pca = H2OPrincipalComponentAnalysisEstimator(k=2) # project onto 2 PCs\n", "pca.train(x=X, training_frame=labeled_frame)\n", "features = pca.predict(labeled_frame)\n", "features_pandas = features.as_data_frame()\n", "features_pandas['label'] = labeled_frame[-1].as_data_frame()\n", "print(features_pandas.head())\n", "plot(features_pandas)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "H2O session _sid_b862 closed.\n" ] } ], "source": [ "# shutdown h2o\n", "h2o.cluster().shutdown(prompt=False)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 06_clustering/xml/06_clustering.xml ================================================ <_ROOT_ EMVERSION="14.1" ORIENTATION="HORIZONTAL"> ================================================ FILE: 07_association_rules/07_association_rules.md ================================================ ## Section 07: Association Rules Association rules, sometimes referred to as market basket analysis, tell us which items or entities occur together the most often in a large database of transactions. Transactions are typically financial, as in sales and purchases, or technological, as in calls or web links. Association rules have applications in many fields, but especially in marketing, anomaly detection and recommendation, giving us the original *those who watched/bought X also watched/bought Y and Z* recommendations. #### Class Notes * [Overview of association rules](notes/instructor_notes.pdf) * Overview of association rules in Enterprise Miner - [Blackboard electronic reserves](https://blackboard.gwu.edu) * [More details on association rules](notes/tan_notes.pdf) * [EM association rules example](xml/07_association_rules.xml) #### [Sample Quiz](quiz/sample/quiz_7.pdf) #### [Quiz Key](quiz/key/quiz_7.pdf) #### Supplementary References * *Association Rules in SAS Enterprise Miner* - [Blackboard electronic reserves](https://blackboard.gwu.edu) * [*Introduction to Data Mining*](http://www-users.cs.umn.edu/~kumar/dmbook/ch6.pdf)
Chapter 6 * [R package for association rules](https://cran.r-project.org/web/packages/arules/index.html) * [Spark MLlib frequent pattern mining](https://spark.apache.org/docs/latest/mllib-frequent-pattern-mining.html) ================================================ FILE: 07_association_rules/assignment/.gitignore ================================================ key ================================================ FILE: 07_association_rules/quiz/.gitignore ================================================ key ================================================ FILE: 07_association_rules/xml/07_association_rules.xml ================================================ <_ROOT_ EMVERSION="14.1" ORIENTATION="HORIZONTAL"> ================================================ FILE: 08_text_mining/08_text_mining.md ================================================ ## Section 08: Text Mining Text mining essentially means converting a group of documents into a meaningful numeric representation (i.e. data set). This data set can be joined with more standard structured data or be left on its own, and then statistical or machine learning analysis is conducted on this data set for inferential or predictive purposes. #### Class notes * [Overview of text mining techniques](notes/instructor_notes.pdf) * Text Mining with SAS Text Miner - [Blackboard electronic reserves](https://blackboard.gwu.edu) * [SAS Code Basic Text Manipulation example](https://github.com/sassoftware/enlighten-apply/blob/master/SAS_GWU_examples/3_xml_json_text.sas)
(Beginning at Line 140; also available on SODA environment in 'SAS_Workshop' folder.) * Python Code Basic Text Manipulation example * [Part 1](https://github.com/jphall663/bellarmine_py_intro/blob/master/solutions/solution_2.py) * [Part 2](https://github.com/jphall663/bellarmine_py_intro/blob/master/solutions/solution_3.py) * [EM Text Miner example](xml/08_text_mining.xml) * Enron Sample Data - [Blackboard electronic reserves](https://blackboard.gwu.edu) #### [Sample Quiz](quiz/sample/quiz_8.pdf) #### [Quiz Key](quiz/key/quiz_8.pdf) #### Supplementary References * *Text Analytics Using SAS Enterprise Miner* - [Blackboard electronic reserves](https://blackboard.gwu.edu) * Term Embedding References * [GloVe](https://nlp.stanford.edu/projects/glove/)
by Jeffrey Pennington, Richard Socher, and Christopher D. Manning * Word2Vec * [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/pdf/1301.3781.pdf)
by Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean * [Linguistic Regularities in Continuous Space Word Representations](http://www.aclweb.org/anthology/N13-1090)
by Tomas Mikolov, Wen-tau Yih, and Geoffrey Zweig * [Word2Vec software](https://code.google.com/archive/p/word2vec/) ================================================ FILE: 08_text_mining/quiz/.gitignore ================================================ key ================================================ FILE: 08_text_mining/quiz/sample/.gitignore ================================================ key ================================================ FILE: 08_text_mining/xml/08_text_mining.xml ================================================ <_ROOT_ EMVERSION="13.2" ORIENTATION="HORIZONTAL"> ================================================ FILE: 09_matrix_factorization/09_matrix_factorization.md ================================================ ## Section 09: Matrix factorization Matrix factorization enables us to represent sparse or high-dimensional data sets and high cardinality features with a small number of dense of numeric features suitable for modeling and visualization. #### Class Notes * Basic PCA examples * [One component with back-projection](../02_analytical_data_prep/src/py_part_2_feature_extraction.ipynb) * [Iris data with visualization](src/py_part_9_iris_pca.ipynb) * [Kaggle House Prices example notebook](src/py_part_9_kaggle_GLRM_example.ipynb) * [Advanced notes](notes/msba_2017_ml_week_5_FINAL.pdf) #### Supplementary References * [Generalized Low Rank Models (GLRM) with H2O](http://docs.h2o.ai/h2o-tutorials/latest-stable/tutorials/glrm/glrm-tutorial.html) * [LibFM for Factorization Machines](http://libfm.org/) *** * [*Elements of Statistical Learning*](https://web.stanford.edu/~hastie/ElemStatLearn/printings/ESLII_print12.pdf)
Sections 14.5 - 14.6, 14.8 * [*Pattern Recognition in Machine Learning*](http://users.isr.ist.utl.pt/~wurmd/Livros/school/Bishop%20-%20Pattern%20Recognition%20And%20Machine%20Learning%20-%20Springer%20%202006.pdf)
Chapter 12 *** #### Generalized Low Rank Models (GLRM) * [Generalized Low Rank Models (Book)](http://www.web.stanford.edu/~boyd/papers/pdf/glrm.pdf)
by Madeleine Udell, Corinne Horn, Reza Zadeh, and Stephen Boyd * [Generalized Low Rank Models (Paper)](https://stanford.edu/~rezab/nips2014workshop/submits/glrm.pdf)
by Madeleine Udell, Corinne Horn, Reza Zadeh, and Stephen Boyd * [Learning the Parts of Objects by Nonnegative Matrix Factorization](https://www.cs.princeton.edu/courses/archive/spring12/cos424/pdf/lee-seung.pdf)
by Daniel D. Lee and H. Sebastian Seung * [Sparse Principal Component Analysis](http://www.web.stanford.edu/~hastie/Papers/sparsepc.pdf)
by Hui Zou, Trevor Hastie, and Robert Tibshirani * [Robust Principal Component Analysis?](https://statweb.stanford.edu/~candes/papers/RobustPCA.pdf)
by Emmanuel J. Candes, Xiaodong Li, Yi Ma, and John Wright *** * [Factorization Machines](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.393.8529&rep=rep1&type=pdf)
by Steffen Rendle * [Near Optimal Signal Recovery From Random Projections: Universal Encoding Strategies?](http://statweb.stanford.edu/~candes/papers/OptimalRecovery.pdf)
by Emmanuel Candes and Terence Tao *** * [SAS random projections example](https://github.com/jphall663/enlighten-apply/tree/master/SAS_UE_Random_Projections) * [Quora answer regarding feature extraction](https://www.quora.com/How-do-you-attack-a-machine-learning-problem-with-a-large-number-of-features/answer/Patrick-Hall-4) ================================================ FILE: 09_matrix_factorization/src/py_part_9_iris_pca.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Simple feature extraction with PCA - numpy and scikit-Learn" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Imports " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# numpy for matrix operations\n", "import numpy as np\n", "\n", "# matplotlib for plotting\n", "from matplotlib import pyplot as plt\n", "from mpl_toolkits.mplot3d import Axes3D\n", "from mpl_toolkits.mplot3d import proj3d\n", "%matplotlib inline\n", "\n", "# scikit for data set and easy standardization\n", "from sklearn import datasets\n", "from sklearn import preprocessing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Load 4-dimensional iris data set \n", "* 4 dimensions is too many to plot" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input features: \n", " ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']\n", "\n", "Target classes: \n", " ['setosa' 'versicolor' 'virginica']\n" ] } ], "source": [ "print('Input features: \\n', datasets.load_iris().feature_names)\n", "print()\n", "print('Target classes: \\n', datasets.load_iris().target_names)\n", "\n", "# load and standardize data\n", "iris = datasets.load_iris().data\n", "iris = preprocessing.scale(iris)\n", "species = datasets.load_iris().target" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create symmetrical covariance matrix for PCA \n", "Covariance $C_{i,j}$ measures the amount one feature $x_i$ changes with another feature $x_j$ for all the features $j$ in the data set $X$.\n", "\n", "\\begin{equation}\n", "C_{i, j} = \\frac{1}{N} x_i x_j, \\text{ } x_i, x_j \\in X_j\n", "\\end{equation}" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Covariance Matrix:\n", " [[ 1.00671141 -0.11010327 0.87760486 0.82344326]\n", " [-0.11010327 1.00671141 -0.42333835 -0.358937 ]\n", " [ 0.87760486 -0.42333835 1.00671141 0.96921855]\n", " [ 0.82344326 -0.358937 0.96921855 1.00671141]]\n" ] } ], "source": [ "covariance_matrix = np.cov(iris, rowvar=False)\n", "print('Covariance Matrix:\\n', covariance_matrix) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Eigen decomposition (a very important type of matrix factorization in machine learning)\n", "Eigen decomposition of a covariance or correlation matrix is known as principal components analysis (PCA). Eigen decomposition involves calculating two matrices $\\mathbf{Q}$ and $\\mathbf{\\Lambda}$, such that the covariance or correlation matrix $\\mathbf{C} = \\mathbf{Q}\\mathbf{\\Lambda}\\mathbf{Q}^{-1}$, where $\\mathbf{Q}$ is a *p* x *p* matrix of *eigenvectors* and $\\mathbf{\\Lambda}$ is a diagonal, *p* x *p* matrix of *eigenvalues*. Eigenvectors are orthogonal vectors in the directions of the highest variance in the data matrix. Eigenvalues determine the length of the eigenvectors and eigenvectors are ranked by the magnitude of their corresponsing eigenvalue. The eigenvalue with the largest magnitude corresponds to the eigenvector which spans the direction of the highest variance in the original data set and so on.\n", "\n", "\n", "**Eigen decomposition** \n", "\\begin{equation}\n", "\\mathbf{C} = \\mathbf{Q}\\mathbf{\\Lambda}\\mathbf{Q}^{-1}\n", "\\end{equation}\n", "\\begin{equation}\n", "\\mathbf{C}\\mathbf{Q} = \\mathbf{Q}\\mathbf{\\Lambda}\\mathbf{Q}^{-1}\\mathbf{Q}\n", "\\end{equation}\n", "\\begin{equation}\n", "\\mathbf{C}\\mathbf{Q} = \\mathbf{Q}\\mathbf{\\Lambda}\n", "\\end{equation}\n", "\n", "The above equation can be decomposed in sets of simultaneous equations. For *any* eigenvector, $\\mathbf{q}_j$:\n", "\n", "\\begin{equation}\n", "\\mathbf{C}\\mathbf{q}_j = \\mathbf{q}_j\\lambda_j\n", "\\end{equation}\n", "\n", "\\begin{equation}\n", "\\mathbf{C}\\mathbf{q}_j = \\lambda_j\\mathbf{q}_j\n", "\\end{equation}\n", "\n", "\\begin{equation}\n", "\\mathbf{C}\\mathbf{q}_j - \\lambda_j\\mathbf{q}_j = 0\n", "\\end{equation}\n", "\n", "\\begin{equation}\n", "(\\mathbf{C} - \\lambda_j\\mathbf{I})\\mathbf{q}_j = 0\n", "\\end{equation}\n", "\n", "Because $\\mathbf{q}$ comes from the non-singular matrix of eigenvectors, $(\\mathbf{C} - \\lambda_j\\mathbf{I})$, and thus $det(\\mathbf{C} - \\lambda\\mathbf{I})$, must equal 0. Which implies a polynomial equation in which roots $\\lambda_{j}$ can be determined using:\n", "\n", "\\begin{equation}\n", "\\prod_{j} (\\mathbf{c}_{j,j} - \\lambda_{j}) = 0, \\text{for } j \\leq p\n", "\\end{equation}\n", "\n", "Once all $\\lambda_{j}$, and hence $\\mathbf{\\Lambda}$, have been determined, $\\mathbf{Q}$ can also be determined by back-solving for the columns of $\\mathbf{Q}$ using $(\\mathbf{C} - \\lambda_j\\mathbf{I})\\mathbf{q}_j = 0$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Use numpy to find eigenvalues and eigenvectors\n", "* Numpy ranks eigenvectors by their correct magnitude automatically." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Eigen Values:\n", " [ 2.93035378 0.92740362 0.14834223 0.02074601]\n", "\n", "Eigen Vectors:\n", " [[ 0.52237162 -0.37231836 -0.72101681 0.26199559]\n", " [-0.26335492 -0.92555649 0.24203288 -0.12413481]\n", " [ 0.58125401 -0.02109478 0.14089226 -0.80115427]\n", " [ 0.56561105 -0.06541577 0.6338014 0.52354627]]\n" ] } ], "source": [ "eigen_values, eigen_vectors = np.linalg.eig(covariance_matrix)\n", "print('Eigen Values:\\n', eigen_values) \n", "print()\n", "print('Eigen Vectors:\\n', eigen_vectors) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Use eigenvectors to perform feature extraction\n", "\n", "The original data $\\mathbf{X}$ can be projected onto the new space defined by the eigenvectors $\\mathbf{Q}$ using the dot product $\\mathbf{XQ}$. These new vectors are known as the *principal components* of $\\mathbf{X}$.\n", "\n", "Using a reduced set of *n* eigenvectors (i.e. the first *n* columns of $Q$) to carry out the dot product $\\mathbf{XQ_{n}}$, will result in a compressed, *n*-dimensional representation of $\\mathbf{X}$ in which the proportion of total variance has been maximized." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Extract two features and plot\n", "* We could not plot the four dimensions in the data set easily before performing PCA" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "two_PCs = iris.dot(eigen_vectors[:, :2])" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\noUPp27cvCxYs4I477igPNDynipaVlXHMMcfwz3/+02dA0K5du0p/x/lo3oyLi2P16tV8+OGHLF26\nlPfee48FCxZw1lln8d5779XrNTQWp9PZ1FUopwGGUkpFulatbOvF/v2QlFRRvn+/7Spp27by9u3b\nw4UXwuuvw4YNNqA4ehQGDIBzzqm6/0OHqgYdYMdf1GH6Z02mTJnCvffey4YNG1iwYAG9evVi2LBh\n5ff36NGDVatWcdppp1XqSqgrEWHs2LGMHTuWv/71rzz00EPcf//9rFy5klGjRlXZvkePHgB88803\n1e4zLS2NFi1asHnz5ir3bdq0iaioKDq5AzkvXbt2xRjD5s2bOe200yrdt3nzZrp27VqXl9eotItE\nKaUindMJ48bZxDA7d9ouk5wc+/uJJ1a0UngaPx5uv92Olh41Cq67Dm67zWaw83bccTYvv+fYjKIi\nG2C4B4nWk7ub5N577+Wrr77iyiuvrHR/eno6R44cYfbs2VUeW1JSUmWqqi95PpLmDBo0CIDDhw/7\nfExaWhqnnnoqL774Irt37/a5TXR0NGeeeSaLFy+u1BXy008/8frrrzNmzBifLSoAw4cPJzU1lWef\nfZYSj+P773//m6ysLCZMmFDr62oq2oKhlFLNwTnn2MGYH3wAP/1kR0BPnAiXXOJ7poeIbbGoYWxB\nuVNPhTVr7CyT1q2hrMx2y5x0EgwdGpTqd+vWjVNPPZUlS5YgIlUyaY4dO5bp06cze/Zs1q1bxxln\nnEF0dDTff/89ixYt4tlnn+WCCy6o8Tnuu+8+Pv30U84991y6du3Kzz//zDPPPEPXrl059dRTq33c\n3LlzGT16NEOGDOG6666jW7dubNu2jf/85z988cUXADz88MN8+OGHnHrqqcycORMR4bnnnqO0tJQ/\n//nPlfbn2cUTGxvLo48+ynXXXceoUaOYPHkyP/74I3PmzKFnz57MmjWrroey0WiAoZRSzUF0tA0o\nxo2z+fOTkqpOTw1USgr87nfw3//aWSbR0TBpEowdG9SpXFOmTGHNmjWcdNJJdPfRMvLCCy8wfPhw\nnn/+ee6++25iYmLo1q0bV199NSeffHL5diLic72Piy66iF27dvHyyy+zb98+2rZty7hx43jggQdo\n2bJlpcd7GjJkCGvWrOGee+7h2Wef5fDhw3Tt2pXLL7+8fJuBAweycuVK7rzzTv70pz8BdqppRkYG\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(6,6))\n", "setosa = plt.scatter(two_PCs[0:50, 0], two_PCs[0:50, 1], alpha=0.5, color='blue')\n", "versicolor = plt.scatter(two_PCs[50:100, 0], two_PCs[50:100, 1], alpha=0.5, color='red')\n", "virginica = plt.scatter(two_PCs[100:150, 0], two_PCs[100:150, 1], alpha=0.5, color='green')\n", "plt.title('Two Dimensional Feature Extraction from Iris Data')\n", "plt.xlabel('First Principal Component')\n", "plt.ylabel('Second Principal Component')\n", "plt.legend([setosa, versicolor, virginica], ['Setosa', 'Versicolor', 'virginica'])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Extract three features and plot" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "three_PCs = iris.dot(eigen_vectors[:, :3])" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtwAAAIyCAYAAAD45x2bAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzsnXmYFNW5/79VvS8zwyIMCggDiiIqIiiLMoCoEC/h5hEx\nmBhlUUK8KihuqPG6RAN6VcQ9RiOKAUVJJKIRUECjGEMUIS6g7KhsI7P0Wl1d5/cHv1NW9/Q+XUt3\nv5/n4VGqi65Tp09Vfc9b7/m+AmMMBEEQBEEQBEHog2h2AwiCIAiCIAiinCHBTRAEQRAEQRA6QoKb\nIAiCIAiCIHSEBDdBEARBEARB6AgJboIgCIIgCILQERLcBEEQBEEQBKEjJLgJgiAIgiAIQkdIcBME\nQRAEQRCEjpDgJgiCIAiCIAgdseexL5WkJAiCIAjCSASzG0AQxYAi3ARBEARBEAShIyS4CYIgCIIg\nCEJHSHATBEEQBEEQhI6Q4CYIgiAIgiAIHSHBTRAEQRAEQRA6QoKbIAiCIAiCIHSEBDdBEARBEARB\n6AgJboIgCIIgCILQERLcBEEQBEEQBKEjJLgJgiAIgiAIQkdIcBMEQRAEQRCEjpDgJgiCIAiCIAgd\nIcFNEARBEARBEDpCgpsgCIIgCIIgdIQEN0EQBEEQBEHoCAlugiAIgiAIgtAREtwEQRAEQRAEoSMk\nuAmCIAiCIAhCR0hwEwRBEARBEISOkOAmCIIgCIIgCB0hwU0QBEEQBEEQOkKCOw/WrVsHURSxbNky\ns5uiC7t27YIoinjhhRfMbkqbGTlyJEaNGmV2MwAAzz//PERRxO7du81uCmFxevbsialTp5py7A0b\nNuCss86C3++HzWbDpk2bTGmHHvB793vvvWd2UwiCqFAqXnCLopj1j81mU2/UgiCY3OLc0Z6Dw+FA\nx44dMWjQIMyaNQtffvllyn9TSueXCUEQIIrWGN6CIOTUr3fddVfa8feHP/xBt/YtXrwYjzzyiG7f\n3xa4UErXL6+88kpe3xcOh3HXXXeZKrzWr1+Pu+66C83Nza0+E0XRlGtQlmVcdNFFOHz4MObPn48X\nX3wRPXr0MLwd+SCKIq699tqc9y9Wv06ZMiVhHFZVVaF3796YOHEili1bBsZYwd9t5WuRIIi2YTe7\nAWazaNGihL8vXLgQq1evxqJFixJunH379sUXX3zRppupGZx//vm47LLLwBhDU1MTPvvsM7zwwgt4\n4oknMG/ePFx33XXqvj169EA4HIbD4TCxxcVh1apVZjehIARBwFNPPQWfz5ewffDgwbod889//jM+\n//xzzJw5U7djtJVZs2Zh0KBBrbYPHTo0r+8JhUK46667IAgC6uvri9W8vPjwww9x9913Y8qUKaiu\nrk74bMuWLaZMFLdt24bdu3fj2WefxZQpUww/vt6MGDEC4XAYTqezKN/ndrvx7LPPgjGGcDiMXbt2\n4W9/+xsuuugijBw5EsuXL4ff78/7e0vhWiQIojAqXnD/4he/SPj7+vXrsXr1alxyySVFP1Y4HIbH\n4yn692aiT58+rc5x7ty5GDduHG644Qb07dsXY8eOVT8r1gPJbOz20h3aEyZMQIcOHcxuRpsp5ng/\n++yzceGFF7b5e/KdMIdCIXi93jYfN9c2mDXZ3b9/PwCgpqYm67569IleRKNROJ1OCIJQ1Hub3W5v\n9Yy4++67cf/99+OWW27BlVdeicWLFxfteARBlD7WeOdeQgiCAEVRcO+996J79+7weDw499xzsW3b\ntoT9Ro4ciVNPPRWffPIJ6uvr4fP5cNttt6mfv/XWW6ivr4ff70d1dTXGjRuHL774otXxtmzZgosu\nuggdO3aEx+PBGWecgb/97W9tOof27dtjyZIlsNlsuPfee9XtqXK4J0+ejKqqKuzZswfjxo1DVVUV\nunXrhieeeAIAsHnzZowePRp+vx89e/ZM+ZBpamrCrFmzcOyxx8LtduP444/H/fffnyA8+LEfeugh\nPPPMMzjuuOPgdrtx5plnYsOGDQnft3//fkyZMgXdu3eH2+3GMcccg5/97GcJOdIjR47EOeeck/Dv\nDh48iGnTpqFLly7weDw47bTTWuWr59OOzZs3Y8qUKejduzc8Hg+OPvpoTJs2DT/88EOuP0VBMMYw\nf/58nHzyyfB4POjSpQtmzJiBxsbGhP2WL1+OcePGoWvXrnC73TjuuOPwu9/9DoqiqPuMGjUKK1as\nUM9bFEX06tULQPrc81T5sMUa74XC2/r8888nbL/vvvsgiiL+/ve/Y9euXejcuTMEQcCdd96pnu/d\nd98N4Mexvn37dlxwwQWorq7GpZdeCgD4xz/+gYsvvhg9evSA2+3Gsccei+uvvx6RSKRVW7Zs2YKL\nL74YnTt3htfrxYknnojbb78dwJG0oZtuugnAkXxtnhrD+zhVDveOHTswceJEdOzYET6fD0OHDsWb\nb76ZsA//TZYuXZr13pTMlClTMHLkSAiCgIsuugiiKKrXTqY+AYClS5di0KBB8Hq96NSpE371q1/h\nu+++S/j+YtxDcoH3wcsvv4zbb78d3bp1g8/nQ0tLS8ox+80332DChAk4+uij4fF40L17d1xyySVo\naWkp6PgAcNNNN+H888/H0qVL8c0336jb23otxmIx3HHHHRg0aBDatWsHv9+P+vp6rF27tuC2EgRh\nLKUbBjQJxhh+//vfw2az4cYbb0RTUxPmzZuHSy+9FOvXr1f3EwQBhw4dwgUXXIBJkybhsssuQ21t\nLQDgxRdfxOTJkzF27Fjcf//9CIVCePLJJzF8+HB8+umnOPbYYwEAn3/+Oc4++2x069YNc+bMgc/n\nwyuvvIKf/exnWLZsGf77v/+74PPo3r07RowYgbVr1yIQCKR9/cknGD/5yU8wYsQIPPDAA3jppZdw\nzTXXqKLq0ksvxYQJE/DUU0/h8ssvx7Bhw9T8z3A4jPr6enz//feYMWMGunfvjg8//BBz5szBvn37\n8NBDDyUc76WXXkIgEMCMGTMgCALmzZuHCRMmYPv27bDZbACACy+8EF9++SWuvfZa9OjRAwcOHMCq\nVauwe/dute+S8zUjkQhGjBiB7du345prrkHPnj2xdOlSTJ48GU1NTbjmmmvybseqVauwY8cOTJ06\nFV26dMHnn3+Op59+Gl988UXCWMiXhoaGhMmIzWZDu3bt1L9Pnz4dL7zwAqZOnYqZM2dix44dePTR\nR7Fx40Z88MEHavuef/55VFVVYfbs2fD7/Xj33Xdxxx13oKWlBfPmzQMA3H777WhqasK3336L+fPn\ngzGmjoVMuefJ24sx3jPR0tKChoaGVts7duwI4IioW7ZsGa6//nqcd9556Nq1KzZv3oy7774bV155\nJcaOHYtQKISnnnoKM2bMwIUXXqhGzE899VT1HGRZxpgxYzB8+HA8+OCDaiR36dKlCIfDuOqqq9Cx\nY0d8/PHHePTRR/Htt9/i5ZdfVtuzadMmDB8+HC6XC7/+9a/Ro0cPbNu2DW+88QZ+97vf4cILL8TW\nrVuxZMkSPPLII2r7O3XqlLJfDxw4gKFDhyISiWDmzJno0KEDFi5ciPHjx+O1115rdQ+YO3du1ntT\nMjNmzEC3bt1w7733YubMmTjjjDPU3y5Tnzz//POYOnUqBg8ejLlz52L//v2YP38+PvzwQ3z66adq\nukxb7yH5cs8998DlcuHGG29UI9zJfRuLxXD++ecjFovh2muvRZcuXfDtt9/ijTfeQGNjI6qqqgo6\nNgD86le/wsqVK7Fq1Socd9xxal+15Vpsbm7Gc889h0suuQTTp09HS0sLnn32WYwdOxYff/yxOoYJ\ngrAwjLFc/1QEV199NRNFMeVna9euZYIgsH79+jFZltXtCxYsYKIoss8//1zdNnLkSCaKInvmmWcS\nviMQCLD27duzGTNmJGw/cOAAa9euHfv1r3+tbhs9ejQ77bTTWCwWS9j3rLPOYieccELWcxEEgV1z\nzTVpP581axYTRZFt3ryZMcbYzp07mSAIbOHCheo+kydPZqIosnnz5qnbGhsbmdfrZTabjS1dulTd\nvmXLFiYIArvrrrvUbffccw+rqqpi27ZtSzj2nDlzmMPhYHv37k04dqdOnVhTU5O63/Lly5koimzF\nihXqsQVBYA8++GDGcx85ciQbNWqU+vf58+czURTZ4sWL1W2yLLNhw4ax6upqFggE8moHY4xFIpFW\nx12yZAkTRZH94x//ULc9//zzTBRFtmvXroxtvvPOO5kgCK3+1NXVqfu8//77TBAEtmTJkoR/u3Ll\nSiYIQsL5pWrfjBkzmN/vZ5IkqdvGjRuXcIxs7V67di0TRZGtW7dO3VaM8Z4Kfs2JotiqX0RRZPv3\n71f33bdvH+vYsSMbM2YMkySJDRgwgNXV1bGWlhZ1n0OHDrUaoxw+1m+77bZWn6Xqy7lz5zKbzcb2\n7Nmjbquvr2c1NTXquE7F//3f/6UdDz179mRTpkxR/86v0Q8//FDdFggEWK9evVivXr1a9VMu96ZU\n8H//2muvJWxP1yexWIzV1tay/v37s2g0qm5fsWIFEwSB3Xnnna2+o9B7SDqS72/8HI477riENvHP\ntGN248aNTBAEtmzZsqzHSWby5Mmsqqoq7ef8u2fPnq1ua+u1qChKq+dAU1MT69KlC7viiivyPocS\nIx+dQn/oj2X/UEpJAUydOlWNIgLA8OHDwRjD9u3bE/ZzuVyYPHlywrZVq1ahqakJkyZNQkNDg/pH\nEAQMHjwYa9asAQAcPnwYa9aswcSJE9HU1JSw7/nnn4+vv/4a33//fZvOg0dPcnmFOm3aNPX/a2pq\ncMIJJ8Dn8+Giiy5St/fp0wft2rVL6IdXX30Vw4cPR01NTcI5jB49GrIst3KLmDRpUsJCsuS+9Xg8\ncDqdWLt2basUiky89dZb6NKlCyZNmqRus9lsuPbaaxEIBLBu3bq82gEc+X050WgUDQ0NGDx4MBhj\n+OSTT3JumxZBEPCXv/wFq1evVv+89NJL6uevvvoq2rVrh9GjRyf054ABA+D3+9Xxk9y+QCCAhoYG\nnH322QiFQvjqq68Kal8m2jLes/G///u/CX2yevVqrFq1KiHXvba2Fo8//jhWrlyJ4cOHY9OmTXju\nuefyXrw2Y8aMlOfGCYVCaGhowNChQ6EoCj799FMAwKFDh/D+++9j2rRp6Nq1a17HTMdbb72FM888\nM2FxqM/nw/Tp07Fz585WaTm53pvyJblPNmzYgAMHDuCqq65KyI2+4IILcOKJJ2LFihWtvqPQe0i+\nTJ48OWu+Ns9V//vf/45wOFzwsVKR6r7a1mtREAR1XQpjDIcPH4YkSRg0aFDB9xqCIIyFUkoKoHv3\n7gl/b9++PYAjIllL165dWy3e+/rrr8EYS+kRLQiC+iD45ptvwBjDb3/7WzX/M3nfAwcO4Oijjy74\nPAKBAABkfX3qdrvVV9+cmpoadOvWrdW+NTU1Cf3w9ddfY/Pmzeorcy38HLQk9y1PpeDf6XQ6MW/e\nPNxwww2ora3FkCFDMG7cuIQUhlTs2rULxx9/fKvtffv2BWMMu3btyqsd/P/vvPNOvPzyywnnIQgC\nmpqa0rYlG8OHD0+7aPLrr79GY2MjOnfu3Oqz5P784osvcNttt2HNmjUJFnRtbV862jLes3HyySe3\nyslPxc9//nMsWrQIK1aswK9//WuMHDkyp+/n2O32lON6z549+O1vf4u//e1vCWNA25dcJPbr1y+v\nY2Zi165dGDJkSKvtffv2VT8/6aST1O253pvyIVWf7Nq1C4IgoE+fPq32P/HEE/HBBx8kbGvLPSRf\nevbsmdM+s2fPxkMPPYRFixZh+PDhGD9+PC699NJWzjH5kuq+WoxrceHChXjooYfw1VdfIRaLqdt5\nnjdBENaGBHcBaCNIWhhLdB9I5dCgKAoEQcCiRYtSCkQuWPhimhtuuAFjxoxJeTyeH1gomzdvhs1m\nQ11dXcb90p1vLv2gKArOO+883Hzzza36B0CrB3Yu3zlz5kyMHz8ef/3rX/H222/jjjvuwO9//3us\nWbMG/fv3z3guuZJLOyZOnIiPPvoIN910E/r37w+/3w9FUTBmzJiExVDFRFEU1NbW4s9//nPK/uQT\nm6amJtTX16Ndu3b43e9+h169esHtduPf//43brnllpzaly5/Ox6Pp9zelvFeLH744Qds2LABgiAU\ntChTG4nkKIqCc889F42NjZgzZ44amf32229x+eWX6/ZbF0Ku96Z8SNUn+dKWe0i+5OqM88ADD2Dy\n5Ml4/fXXsXLlSlx77bWYO3cuPvroIxxzzDEFH/8///kPgB/vz8W4FhctWoQpU6bgwgsvxE033YTO\nnTvDZrPhvvvua/PbC4IgjIEEt8H07t0bjDF06tQpY8SORy0cDkdOkb182b17N9577z0MGzasledz\nMenduzcCgUDRqz7W1dXhuuuuw3XXXYdt27ahf//+ePDBB9NWyezRowc2b97cajsvAJTvAq3Gxka8\n++67uOeeexLcOLTOBHrQu3dvvPPOOxg2bFhGIbR27VocPnwYr7/+Os466yx1eyrHinTCmkdHGxsb\nExY27ty5M6/25jLei8VVV12FQCCA3//+97jlllswf/58zJo1S/28kOInmzdvxtdff40XX3wRv/zl\nL9Xtq1evTtiPX7NccKUjnzb06NEDW7ZsabW90HFbLHr06AHGGLZs2dLqLcKWLVssXzSH069fP/Tr\n1w+33norPvroIwwbNgxPPfWU6lxTCC+88AJEUcR5550HoDjX4muvvYbevXvj1VdfTdh+xx13FNxO\ngiCMhXK4DWbMmDGorq7GfffdB1mWW31+6NAhAEcilSNHjsTTTz+Nffv2pd2vEH744QdccsklUBQl\nQSzqwcUXX4z169dj5cqVrT5rampKGy1NRzgcRjQaTdhWV1eHqqqqVtu1XHDBBdi3b1+Co0Q8Hsej\njz6KqqoqjBgxIq928MhccnTq4Ycf1rVS4MUXXwxZllMKgng8rr6ettlsYIwltE+SJNWKTYvP50v5\nWpuLZW2evaIoeVW9zHW8F4NXX30Vr7zyCubNm4ebbroJkyZNwu23354wCeIOG/nk/6f7refPn5/w\nWx911FGor6/Hc889hz179qT9Pj7BzaUNF1xwAT7++GP885//VLcFg0H84Q9/QF1dXUI6iZEMGjQI\nnTt3xlNPPZWQ3vDWW2/hyy+/xLhx40xpV660tLS0uvf069cPoihmvI9kY+7cuVi1ahUmTZqE3r17\nAyjOtZjqTcA///nPNrkhEQRhLBThNpiqqio8+eSTuOyyy3D66adj0qRJ6NSpE3bv3o0VK1bg7LPP\n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\n54rYbIpXVKvV0K2bQNeuflNHX7TIssy3h75laf5SLI6zkiiNnis6X8HU/lMxaA3KjmYzrptuguuv\nB5cLDAa/5+vToQ9PX/E0e07vweK00DG2I31S+uByuNr0PvwFX6ryEzhXFtvbOLlYJ1jtTTh6uIO5\nCtfW2O12Jk2aRFxcHHq9HoPBgF6vx2g0YjAYMBqNGI1G9Ho9cXFxPPvss6FucvCwWGD9eti+XYkh\nGTwYhg9XgnnaCaPRyO23387cuXM5c+YMHTp08Pl87ty5xMXFcdNNNwFKn3v77bf59NNPyc/PJykp\nidtuu43XX3+deC8dZJcuXRg2bBgPPvggzz77LHv27OF///d/mTFjBsuWLePVV19l7969uFwuOnfu\nzIQJE3j55ZeBxjXcP//8M88//zyrV6+mtraWrKwsJkyYwEsvveTZZ+vWrcyaNYuNGzciyzKXX345\nf/jDHxg6dOh5n8VXX33Fm2++yc8//0xcXBy/+MUveOONN3wKPt1zzz0sWbKEzZs38+ijj7J+/Xqu\nu+46FixY0LIvwIuowd0CIt3gdrvdWCwW3G43ZrMZQyPGR1sSSsO+rfTa9dHrISFBprhYAM7dq8Oh\njL2qnPjwYYHdu0VycmRP/F9mJmzaBG+8oaNTJxM6nRazWWT4cImJE50+9mJZmcjp0wLp6RBhjq9W\nc7D8IEvzl2LWmclOyAagxlHDusJ1mHVm3LKbU7Wn6Brflcs7X05WQlaTGU0AEo2JXJV5lc82F21r\ncHvjresGsFgsHq+fv+BLVQIWKQZYcwm1pCXU1L//urq6iPJwC4LALbfc4km1arVaPX8VFRXYbDaP\npMpsNvPss8+G94qd0wmHDinB2J07Q2OFempr4f33YfNmZYIvy/DTT7BrFzz8cKOT/rZg8uTJfPHF\nFyxYsMAnM01FRQX//ve/mTx5sscOmDZtGvPmzWPatGn85je/4ciRI7z33nvs3LmTH374weOYEgSB\nvXv3cs899/CrX/2Khx56iN69e7N7925uueUWBg8ezCuvvILBYODQoUNs2LChyTbu2LGDkSNHYjQa\nefjhh+natSuHDx9myZIlHoN7165djBw5kuTkZGbNmoUoinz00UeMHDmSdevWcemllzZ6/j//+c88\n+OCDXH755bz55pucPHmSd955hw0bNrB9+3Ziz758BUHA6XRy7bXXMnr0aP73f/+3VSk4vYka3AHg\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(7, 7))\n", "ax = plt.axes(projection='3d')\n", "\n", "setosa = ax.scatter(three_PCs [0:50, 0], three_PCs [0:50, 1], three_PCs [0:50, 2], alpha=0.5, color='blue')\n", "versicolor = ax.scatter(three_PCs [50:100, 0], three_PCs [50:100, 1], three_PCs [50:100, 2], alpha=0.5, color='red')\n", "virginica = ax.scatter(three_PCs [100:150, 0], three_PCs [100:150, 1], three_PCs [100:150, 2], alpha=0.5, color='green')\n", "\n", "plt.title('Three Dimensional Feature Extraction from Iris Data')\n", "ax.set_xlabel('First Principal Component')\n", "ax.set_ylabel('Second Principal Component')\n", "ax.set_zlabel('Third Principal Component')\n", "\n", "plt.legend([setosa, versicolor, virginica], ['Setosa', 'Versicolor', 'virginica'], bbox_to_anchor=(1.05, 0.5), loc=3,\n", " borderaxespad=0.)\n", "\n", "_ = plt.show()" ] } ], "metadata": { "anaconda-cloud": {}, "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.4" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 09_matrix_factorization/src/py_part_9_kaggle_GLRM_example.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright (C) 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "# Kaggle House Prices with GLRM Matrix Factorization Example" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Imports and inits" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321 ..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: java version \"1.8.0_112\"; Java(TM) SE Runtime Environment (build 1.8.0_112-b16); Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)\n", " Starting server from /Users/phall/anaconda3/lib/python3.6/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpd4usa_h6\n", " JVM stdout: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpd4usa_h6/h2o_phall_started_from_python.out\n", " JVM stderr: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpd4usa_h6/h2o_phall_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321 ... successful.\n" ] }, { "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", "
H2O cluster uptime:01 secs
H2O cluster timezone:America/New_York
H2O data parsing timezone:UTC
H2O cluster version:3.26.0.1
H2O cluster version age:2 months and 21 days
H2O cluster name:H2O_from_python_phall_2hxc3t
H2O cluster total nodes:1
H2O cluster free memory:10.67 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
H2O internal security:False
H2O API Extensions:Amazon S3, XGBoost, Algos, AutoML, Core V3, Core V4
Python version:3.6.4 final
" ], "text/plain": [ "-------------------------- ---------------------------------------------------\n", "H2O cluster uptime: 01 secs\n", "H2O cluster timezone: America/New_York\n", "H2O data parsing timezone: UTC\n", "H2O cluster version: 3.26.0.1\n", "H2O cluster version age: 2 months and 21 days\n", "H2O cluster name: H2O_from_python_phall_2hxc3t\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 10.67 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "H2O API Extensions: Amazon S3, XGBoost, Algos, AutoML, Core V3, Core V4\n", "Python version: 3.6.4 final\n", "-------------------------- ---------------------------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import h2o\n", "from h2o.estimators.glrm import H2OGeneralizedLowRankEstimator\n", "from h2o.estimators.glm import H2OGeneralizedLinearEstimator\n", "from h2o.grid.grid_search import H2OGridSearch \n", "h2o.init(max_mem_size='12G') # give h2o as much memory as possible\n", "h2o.no_progress() # turn off h2o progress bars\n", "\n", "import matplotlib as plt\n", "%matplotlib inline\n", "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Helper Functions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Determine data types" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def get_type_lists(frame, rejects=['Id', 'SalePrice']):\n", "\n", " \"\"\"Creates lists of numeric and categorical variables.\n", " \n", " :param frame: The frame from which to determine types.\n", " :param rejects: Variable names not to be included in returned lists.\n", " :return: Tuple of lists for numeric and categorical variables in the frame.\n", " \n", " \"\"\"\n", " \n", " nums, cats = [], []\n", " for key, val in frame.types.items():\n", " if key not in rejects:\n", " if val == 'enum':\n", " cats.append(key)\n", " else: \n", " nums.append(key)\n", " \n", " print('Numeric =', nums) \n", " print()\n", " print('Categorical =', cats)\n", " \n", " return nums, cats" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Impute with GLRM" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def glrm_num_impute(role, frame):\n", "\n", " \"\"\" Helper function for imputing numeric variables using GLRM.\n", " \n", " :param role: Role of frame to be imputed.\n", " :param frame: H2OFrame to be imputed.\n", " :return: H2OFrame of imputed numeric features.\n", " \n", " \"\"\"\n", " \n", " # count missing values in training data numeric columns\n", " print(role + ' missing:\\n', [cnt for cnt in frame.nacnt() if cnt != 0.0])\n", "\n", " # initialize GLRM\n", " matrix_complete_glrm = H2OGeneralizedLowRankEstimator(\n", " k=10, # create 10 features \n", " transform='STANDARDIZE', # <- seems very important\n", " gamma_x=0.001, # regularization on values in X\n", " gamma_y=0.05, # regularization on values in Y\n", " impute_original=True)\n", "\n", " # train GLRM\n", " matrix_complete_glrm.train(training_frame=frame, x=original_nums)\n", "\n", " # plot iteration history to ensure convergence\n", " matrix_complete_glrm.score_history().plot(x='iterations', y='objective', title='GLRM Score History')\n", "\n", " # impute numeric inputs by multiply the calculated xi and yj for the missing values in train\n", " num_impute = matrix_complete_glrm.predict(frame)\n", "\n", " # count missing values in imputed set\n", " print('imputed ' + role + ' missing:\\n', [cnt for cnt in num_impute.nacnt() if cnt != 0.0])\n", " \n", " return num_impute" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Embed with GLRM " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def glrm_cat_embed(frame):\n", " \n", " \"\"\" Helper function for embedding caetgorical variables using GLRM.\n", " \n", " :param frame: H2OFrame to be embedded.\n", " :return: H2OFrame of embedded categorical features.\n", " \n", " \"\"\"\n", " \n", " # initialize GLRM\n", " cat_embed_glrm = H2OGeneralizedLowRankEstimator(\n", " k=50,\n", " transform='STANDARDIZE',\n", " loss='Quadratic',\n", " regularization_x='Quadratic',\n", " regularization_y='L1',\n", " gamma_x=0.25,\n", " gamma_y=0.5)\n", "\n", " # train GLRM\n", " cat_embed_glrm.train(training_frame=frame, x=cats)\n", "\n", " # plot iteration history to ensure convergence\n", " cat_embed_glrm.score_history().plot(x='iterations', y='objective', title='GLRM Score History')\n", "\n", " # extracted embedded features\n", " cat_embed = h2o.get_frame(cat_embed_glrm._model_json['output']['representation_name'])\n", " \n", " return cat_embed" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import data" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1460, 81)\n", "(1459, 81)\n" ] } ], "source": [ "train = h2o.import_file('../../03_regression/data/train.csv')\n", "test = h2o.import_file('../../03_regression/data/test.csv')\n", "\n", "# bug fix - from Keston\n", "dummy_col = np.random.rand(test.shape[0])\n", "test = test.cbind(h2o.H2OFrame(dummy_col))\n", "cols = test.columns\n", "cols[-1] = 'SalePrice'\n", "test.columns = cols\n", "print(train.shape)\n", "print(test.shape)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Numeric = ['MSSubClass', 'LotFrontage', 'LotArea', 'OverallQual', 'OverallCond', 'YearBuilt', 'YearRemodAdd', 'MasVnrArea', 'BsmtFinSF1', 'BsmtFinSF2', 'BsmtUnfSF', 'TotalBsmtSF', '1stFlrSF', '2ndFlrSF', 'LowQualFinSF', 'GrLivArea', 'BsmtFullBath', 'BsmtHalfBath', 'FullBath', 'HalfBath', 'BedroomAbvGr', 'KitchenAbvGr', 'TotRmsAbvGrd', 'Fireplaces', 'GarageYrBlt', 'GarageCars', 'GarageArea', 'WoodDeckSF', 'OpenPorchSF', 'EnclosedPorch', '3SsnPorch', 'ScreenPorch', 'PoolArea', 'MiscVal', 'MoSold', 'YrSold']\n", "\n", "Categorical = ['MSZoning', 'Street', 'Alley', 'LotShape', 'LandContour', 'Utilities', 'LotConfig', 'LandSlope', 'Neighborhood', 'Condition1', 'Condition2', 'BldgType', 'HouseStyle', 'RoofStyle', 'RoofMatl', 'Exterior1st', 'Exterior2nd', 'MasVnrType', 'ExterQual', 'ExterCond', 'Foundation', 'BsmtQual', 'BsmtCond', 'BsmtExposure', 'BsmtFinType1', 'BsmtFinType2', 'Heating', 'HeatingQC', 'CentralAir', 'Electrical', 'KitchenQual', 'Functional', 'FireplaceQu', 'GarageType', 'GarageFinish', 'GarageQual', 'GarageCond', 'PavedDrive', 'PoolQC', 'Fence', 'MiscFeature', 'SaleType', 'SaleCondition']\n" ] } ], "source": [ "original_nums, cats = get_type_lists(train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Split into to train and validation (before doing data prep!!!)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1001, 81)\n", "(459, 81)\n" ] } ], "source": [ "train, valid = train.split_frame([0.7], seed=12345)\n", "print(train.shape)\n", "print(valid.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Impute numeric missing using GLRM matrix completion" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Training data" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "training missing:\n", " [179.0, 7.0, 48.0]\n", "imputed training missing:\n", " []\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "train_num_impute = glrm_num_impute('training', train)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
reconstr_MSSubClass reconstr_LotFrontage reconstr_LotArea reconstr_OverallQual reconstr_OverallCond reconstr_YearBuilt reconstr_YearRemodAdd reconstr_MasVnrArea reconstr_BsmtFinSF1 reconstr_BsmtFinSF2 reconstr_BsmtUnfSF reconstr_TotalBsmtSF reconstr_1stFlrSF reconstr_2ndFlrSF reconstr_LowQualFinSF reconstr_GrLivArea reconstr_BsmtFullBath reconstr_BsmtHalfBath reconstr_FullBath reconstr_HalfBath reconstr_BedroomAbvGr reconstr_KitchenAbvGr reconstr_TotRmsAbvGrd reconstr_Fireplaces reconstr_GarageYrBlt reconstr_GarageCars reconstr_GarageArea reconstr_WoodDeckSF reconstr_OpenPorchSF reconstr_EnclosedPorch reconstr_3SsnPorch reconstr_ScreenPorch reconstr_PoolArea reconstr_MiscVal reconstr_MoSold reconstr_YrSold
104.504 64.8044 6360.69 6.9754 5.17927 1997.99 1999.77 174.377 613.114 19.2989 253.903 886.316 945.281 793.879 8.95363 1748.11 0.733379 -0.0649383 1.86618 0.918167 2.87459 1.04048 7.00835 0.57749 2002.43 2.18697 573.498 128.382 50.5196 11.6872 -8.16975 0.356668 5.26623 -4.46426 4.10318 2008.79
19.4412 80.5638 21404.5 6.06692 7.70725 1962.9 1997.73 107.351 728.082 -14.1552 454.697 1168.62 1298.74 151.815 -2.08887 1448.47 0.369932 0.528449 1.43773 0.0490104 2.90186 0.839826 6.03521 0.716508 1970.88 1.55755 430.801 261.983 16.096 2.40177 36.5739 -38.8968 5.9997 52.2959 6.9103 2007.55
90.6237 68.2925 7259.58 7.03308 5.16735 1997.82 1997.44 178.618 584.487 -0.150073 370.745 955.081 1026.7 711.007 -12.868 1724.83 0.588434 0.0144578 1.8157 0.89706 2.79496 1.01207 6.81454 0.768934 1999.01 2.23034 579.877 91.7029 73.8497 -2.33926 2.78188 31.9139 2.71965 9.76937 7.31605 2007.56
86.669 84.7268 14097.6 7.81757 5.30479 2003.46 2004.68 277.549 761.973 9.03047 476.396 1247.4 1357.24 999.341 -19.8209 2336.76 0.629789 0.0798523 2.28589 1.0445 3.53589 1.10435 8.645 1.15543 2004.09 2.63527 691.52 156.579 102.906 -22.9468 8.42115 36.8409 10.9329 20.2672 8.4503 2007.31
92.3162 80.0501 8379.14 6.19802 6.42653 1988.03 1998.01 202.08 1100.92 -316.275 -3.37955 781.266 961.368 134.646 -63.4591 1032.55 0.688383 0.453183 1.33461 0.246228 1.79755 1.02575 4.4557 0.448428 1987.24 1.84721 483.131 100.752 -8.75176 -14.0468 62.0409 -15.29 -20.6762 -91.3456 10.8463 2006.59
47.3638 75.6473 16761.6 7.25111 5.25647 2004.64 2002.5 213.349 1145.91 69.0016 468.636 1683.55 1710.71 37.1101 0.00898378 1747.83 1.05894 0.114304 1.93063 0.0923605 2.56238 1.0485 6.64063 0.848451 2004.35 2.42649 690.301 187.859 72.3739 -11.067 15.0015 1.9677 19.8544 79.8152 7.44838 2007.4
72.8631 52.1558 8841.09 5.55062 4.72346 1926.14 1953.18 191.87 266.098 -128.907 972.483 1109.67 1377.28 534.304 32.6896 1944.27 0.0732666 -0.101733 1.63799 0.190902 3.60332 1.45341 8.33323 0.684233 1943.26 1.5906 425.14 -77.654 -12.5005 122.77 1.04417 18.503 12.6647 125.022 4.70042 2008.5
54.9512 70.2932 9518.92 4.97935 5.65433 1955.99 1971.32 39.217 712.248 82.7401 193.712 988.7 1108.28 -116.6 12.8143 1004.49 0.866169 -0.0198973 1.06864 -0.0243434 2.2786 1.09455 5.07327 0.336137 1964.39 1.30886 372.057 69.319 -0.349669 40.2895 -2.63471 5.66505 -0.93817 28.3024 4.27315 2008.84
92.7438 85.2366 16339.9 8.1064 5.17688 2003.59 2006.64 320.466 964.17 -19.175 496.493 1441.49 1547.68 1015.84 4.12377 2567.64 0.761821 0.100786 2.48515 0.890942 3.68423 1.17133 9.22112 1.15337 2006.4 2.74504 740.187 186.834 95.1685 0.332892 11.4106 8.06974 30.3652 36.9043 7.56584 2007.36
38.193 83.2008 10172.4 4.77541 5.88067 1955.03 1966.02 21.1455 730.585 123.219 56.9419 910.746 1043.41 -175.604 -34.585 833.219 0.858877 0.041454 0.779515 0.18209 2.0487 0.9927 4.40351 0.683735 1957.04 1.25507 344.403 22.3964 37.3544 1.97712 3.53325 75.4028 -15.3073 15.4705 8.31853 2007.66
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_num_impute.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Validation data" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "validation missing:\n", " [80.0, 1.0, 33.0]\n", "imputed validation missing:\n", " []\n" ] }, { "data": { "image/png": "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T3ziE+y9996ceuqprFq1CoAjjzxyw+WVfvWrX3HYYYdx4IEHctppp7FiRTbd/sgjj/D+97+f/fffn4MPPpilS5fyjW98g1tuuYXx48dzyy23MHXqVC644AKWLl3KnnvuSVv6h/LKlSsZNWoULS0tzJ07l0mTJjFhwgSOOOIInn766QKOTolHIABtDhCznd4//98nmf3qsi5tc593DOCSv9p3i3VmzpzJj3/8Yx5++GEigkMOOYQPfehDPPPMM1x77bUcfvjhnH322fzgBz/ga1/72ob9Fi1axLe+9S1+/etfs8suu/Dtb3+byy+/nAsvvJDTTz+dW265hYMOOohly5bRr18/Lr30UpqamvjP//xPAKZOnQrAwIEDGT9+PL///e856qijuOuuuzj22GNpbGzk3HPP5eqrr2bs2LE8/PDDnH/++fzmNx3+8vN2VeoAyX6a2cys6z3wwAOccsop7LLLLgB87GMf4/7772fUqFEcfvjhAHzyk5/kiiuu2CRAZsyYwezZszfUWbduHYcddhjPPPMMw4cP56CDDgJgwIABnfahEjhHHXUUN998M+effz4rVqzgj3/8I6eddtqGemvXru2y9701Sh0gnsIy2/l1NlLobu1Pj23/PCI45phjuOmmmzYpf/zxx7f6tU488UQuvvhilixZwsyZM/nwhz/MypUrGTRoELNmzdr6znex0q6BgAPEzLafI444gl/+8pesWrWKlStXcscdd3DEEUfw8ssv89BDDwHws5/9jA984AOb7HfooYfy4IMPMmfOHCBbu3j22WfZa6+9mD9/Po888ggAy5cvp7W1lf79+7N8+fIO+7Drrrty0EEH8aUvfYkTTjiB+vp6BgwYwJgxY/j5z38OZIH1l7/8ZXsdhi0qbYAIEZ7CMrPt5MADD+Sss87i4IMP5pBDDuEzn/kMgwcPZq+99uLKK69k77335o033uDzn//8hn0kMWzYMKZOncrkyZN53/vex2GHHcbTTz9Nr169uOWWW/jiF7/I/vvvzzHHHMOaNWs46qijmD179oZF9PZOP/10fvrTn3L66advKLvxxhu59tpr2X///dl333258847u+WYtFfa30TfdeRe8fnv3sp3Ttu/6K6YWRd76qmn2HvvvYvuxlbZb7/9mDZt2na99tTW6ug4SpoZERO7ov3SjkDAS+hmtmM45phj2G+//Xao8OgOXkQ3M9tG06dPL7oLheh0BCJplKTfSpot6UlJX0rl35H0tKTHJN0haVAqHy1ptaRZ6XZ1rq0Jkh6XNEfSFUqnL0gaImm6pOfS/eBqOu81ELOdV1mn13cU3XH8qpnCagW+GhH7AIcCX5C0DzAdGBcR7wOeBS7K7TM3Isan23m58quAzwJj021SKr8QuC8ixgL3pedbJPAcltlOqk+fPixevNghUqPK74H06dNnu75Op1NYETEfmJ8eL5f0FDAiIn6VqzYDOHVL7UgaDgyIiBnp+Q3AycA9wEnAkanq9cDvgL/vrG9t/nCZ7ZRGjhxJc3MzCxcuLLorpVX5RcLtaavWQCSNBg4AHm636Wwgf/7ZGEmPAsuAf4yI+4ERQHOuTnMqA9g9BRXAa8Du1fTH8WG2c2psbOxxC9JlVHWASNoVuA34ckQsy5X/A9k0142paD6wR0QsljQB+KWkqr9KGhEhqcNskHQucC5A37e/y4voZmYFquo0XkmNZOFxY0Tcnis/CzgB+ESkycqIWBsRi9PjmcBc4D3AK0B+PDUylQG8nqa4KlNdCzrqR0RcExETI2JifUO9RyBmZgWq5iwsAdcCT0XE5bnyScDXgRMjYlWufJik+vT4nWSL5c+nKaplkg5NbZ4JVL4+OQ2Ykh5PyZVvvl/4LA0zsyJVM4V1OPAp4HFJlat3XQxcAfQGpqezcWekM64+CFwqqQVoA86LiCVpv/OBqUBfssXze1L5ZcCtks4BXgI+Xk3nHR9mZsWp5iysB0hnzbZzdwdlRMRtZNNdHW1rAt7ye5Bpyuvozvry1ga3eg8zM+siJb+UiRPEzKwo5Q4Q54eZWWFKGyBC/iKhmVmBShsg4BGImVmRyh0gRXfAzKwHK2+AyCMQM7MilTdAAI9BzMyKU+oA8QjEzKw4pQ0Q4fGHmVmRShsg4GthmZkVqdwBUnQHzMx6sHIHiBPEzKwwpQ4QfxPdzKw4pQ0QdXR9YDMz6zalDRDwFJaZWZHKHSBeRjczK0y5A8T5YWZWmNIGSPab6EX3wsys5yptgIA8hWVmVqBOA0TSKEm/lTRb0pOSvpTKh0iaLum5dD84lUvSFZLmSHpM0oG5tqak+s9JmpIrnyDp8bTPFVJ151h5BGJmVpxqRiCtwFcjYh/gUOALkvYBLgTui4ixwH3pOcBxwNh0Oxe4CrLAAS4BDgEOBi6phE6q89ncfpOq6bzzw8ysOJ0GSETMj4g/p8fLgaeAEcBJwPWp2vXAyenxScANkZkBDJI0HDgWmB4RSyLiDWA6MCltGxARMyK7uNUNubY66VyV79LMzLrcVq2BSBoNHAA8DOweEfPTpteA3dPjEcC83G7NqWxL5c0dlHf0+udKapLU1NKyzt9ENzMrUNUBImlX4DbgyxGxLL8tjRy2+1/ziLgmIiZGxMRevXp5AGJmVqCqAkRSI1l43BgRt6fi19P0E+l+QSp/BRiV231kKttS+cgOyjvly7mbmRWnmrOwBFwLPBURl+c2TQMqZ1JNAe7MlZ+ZzsY6FFiaprruBT4qaXBaPP8ocG/atkzSoem1zsy1tUWODzOz4jRUUedw4FPA45JmpbKLgcuAWyWdA7wEfDxtuxs4HpgDrAI+DRARSyR9E3gk1bs0Ipakx+cDU4G+wD3p1ikPQMzMitNpgETEA2Rf/O7I0R3UD+ALm2nrOuC6DsqbgHGd9eUt+23tDmZm1mVK+010gYcgZmYFKm2AgEcgZmZFKneAOEHMzApT3gCRf9LWzKxIpQ0QX87dzKxYpQ2Q7HLuZmZWlBIHiL+JbmZWpFIHiJmZFafUAeIBiJlZccodIF4FMTMrTGkDRPIIxMysSKUNEPA30c3MilTuAPEQxMysMCUPkKJ7YGbWc5U7QIrugJlZD1baAMkuZeIIMTMrSmkDBDwCMTMrUrkDxAliZlaY8gaI/EVCM7MidRogkq6TtEDSE7myWyTNSrcXJc1K5aMlrc5tuzq3zwRJj0uaI+kKSUrlQyRNl/Rcuh9cbec9AjEzK041I5CpwKR8QUScHhHjI2I8cBtwe27z3Mq2iDgvV34V8FlgbLpV2rwQuC8ixgL3pedVcYCYmRWn0wCJiD8ASzralkYRHwdu2lIbkoYDAyJiRmSnTt0AnJw2nwRcnx5fnyvfIqFqqpmZ2XayrWsgRwCvR8RzubIxkh6V9HtJR6SyEUBzrk5zKgPYPSLmp8evAbtv7sUknSupSVLTmjVrfBqvmVmBtjVAJrPp6GM+sEdEHAB8BfiZpAHVNpZGJ5tNhYi4JiImRsTEPn360Ob8MDMrTEOtO0pqAD4GTKiURcRaYG16PFPSXOA9wCvAyNzuI1MZwOuShkfE/DTVtaDaPvgsLDOz4mzLCOQjwNMRsWFqStIwSfXp8TvJFsufT1NUyyQdmtZNzgTuTLtNA6akx1Ny5VuUfRN9G3pvZmbbpJrTeG8CHgL2ktQs6Zy06Qzeunj+QeCxdFrvL4DzIqKyAH8+8CNgDjAXuCeVXwYcI+k5slC6rKqey99ENzMrUqdTWBExeTPlZ3VQdhvZab0d1W8CxnVQvhg4urN+dNxmLXuZmVlXKO830QGPQczMilPqAPFZWGZmxSltgPhy7mZmxSptgACs9xDEzKwwpQ0QSV5ENzMrUGkDBKDNCWJmVphSB8h6B4iZWWFKGyDCZ2GZmRWptAGCfBaWmVmRShsgHoGYmRWrtAECPo3XzKxIpQ4Q8DSWmVlRShsg2VXhPY1lZlaU0gZIhaexzMyKUdoAUbr3lwnNzIpR2gCpcH6YmRWjvAGShiAegZiZFaO0AVKZwvLlTMzMilHaAKmItqJ7YGbWM3UaIJKuk7RA0hO5sn+S9IqkWel2fG7bRZLmSHpG0rG58kmpbI6kC3PlYyQ9nMpvkdSrmo57Ed3MrFjVjECmApM6KP9uRIxPt7sBJO0DnAHsm/b5gaR6SfXAlcBxwD7A5FQX4NuprXcDbwDnVNXz9D0QT2GZmRWj0wCJiD8AS6ps7yTg5ohYGxEvAHOAg9NtTkQ8HxHrgJuBk5R9G/DDwC/S/tcDJ1fzQh6BmJkVa1vWQC6Q9Fia4hqcykYA83J1mlPZ5sqHAm9GRGu78g5JOldSk6SmFStWAD6N18ysKLUGyFXAu4DxwHzg37usR1sQEddExMSImLjrrrsCHoGYmRWloZadIuL1ymNJ/wXclZ6+AozKVR2ZythM+WJgkKSGNArJ19+iDafx+lImZmaFqGkEIml47ukpQOUMrWnAGZJ6SxoDjAX+BDwCjE1nXPUiW2ifFtmldH8LnJr2nwLcWV0nsjsPQMzMitHpCETSTcCRwG6SmoFLgCMljQcCeBH4HEBEPCnpVmA20Ap8ISLWp3YuAO4F6oHrIuLJ9BJ/D9ws6VvAo8C11XTci+hmZsXqNEAiYnIHxZv9Ix8R/wL8SwfldwN3d1D+PNlZWlspncbrKSwzs0KU/pvozg8zs2KUNkC0YQ3ECWJmVoTSBkiFRyBmZsUobYD4NF4zs2KVNkAqfBaWmVkxyhsg/h6ImVmhShsg/kEpM7NilTZAKhHiKSwzs2KUNkAqIxCfxmtmVozSBkglQXwSlplZMcobIIlP4zUzK0ZpA2TDxRQdIGZmhShvgKQEaXGAmJkVorwBksYgrevbCu6JmVnPVNoAqcxhtXoEYmZWiNIGyMYRiAPEzKwI5Q2QDSMQT2GZmRWhvAGS7j0CMTMrRqcBIuk6SQskPZEr+46kpyU9JukOSYNS+WhJqyXNSrerc/tMkPS4pDmSrpCyMYSkIZKmS3ou3Q+upuMegZiZFauaEchUYFK7sunAuIh4H/AscFFu29yIGJ9u5+XKrwI+C4xNt0qbFwL3RcRY4L70vFMb1kC8iG5mVohOAyQi/gAsaVf2q4hoTU9nACO31Iak4cCAiJgR2cWrbgBOTptPAq5Pj6/PlW9ZZQTiKSwzs0J0xRrI2cA9uedjJD0q6feSjkhlI4DmXJ3mVAawe0TMT49fA3bf3AtJOldSk6SmJYsXA9Di74GYmRVimwJE0j8ArcCNqWg+sEdEHAB8BfiZpAHVtpdGJ5sdUkTENRExMSIm7rbbUMDXwjIzK0pDrTtKOgs4ATg6/eEnItYCa9PjmZLmAu8BXmHTaa6RqQzgdUnDI2J+mupaUNXrew3EzKxQNY1AJE0Cvg6cGBGrcuXDJNWnx+8kWyx/Pk1RLZN0aDr76kzgzrTbNGBKejwlV95JH7J7T2GZmRWj0xGIpJuAI4HdJDUDl5CdddUbmJ7Oxp2Rzrj6IHCppBagDTgvIioL8OeTndHVl2zNpLJuchlwq6RzgJeAj1fbeclTWGZmRek0QCJicgfF126m7m3AbZvZ1gSM66B8MXB0Z/3oSGNdHS0+C8vMrBCl/SY6QEO9fDVeM7OClDpA6uvkRXQzs4KUOkB61dd5Ed3MrCClDpDeDXWsbXWAmJkVodQB0qexnjUt64vuhplZj1TqAOndWM+aFo9AzMyKUOoA6dtY5xGImVlBSh0gnsIyMytO+QOk1QFiZlaEkgdInddAzMwKUvIA8RSWmVlRHCBmZlaTcgdIg0/jNTMrSrkDxKfxmpkVptQB0rexnta28BV5zcwKUOoA6dNYD8AaXw/LzKzblTxAsu6vXudpLDOz7lbqAOldGYF4HcTMrNuVOkAqU1hr/W10M7NuV1WASLpO0gJJT+TKhkiaLum5dD84lUvSFZLmSHpM0oG5faak+s9JmpIrnyDp8bTPFZJUTb/6bhiBeA3EzKy7VTsCmQpMald2IXBfRIwF7kvPAY4DxqbbucBVkAUOcAlwCHAwcEkldFKdz+b2a/9aHaqsgXgKy8ys+1UVIBHxB2BJu+KTgOvT4+uBk3PlN0RmBjBI0nDgWGB6RCyJiDeA6cCktG1ARMyIiABuyLW1Rf16NQCwYm1rNdXNzKwLbcsayO4RMT89fg3YPT0eAczL1WtOZVsqb+6g/C0knSupSVLTwoULGdi3EYClq1u24W2YmVktumQRPY0coiva6uR1romIiRExcdiwYRsCZJkDxMys221LgLyepp9I9wtS+SvAqFy9kalsS+UjOyjvlEcgZmbF2ZYAmQZUzqSaAtyZKz8znY11KLA0TXXdC3xU0uC0eP5R4N60bZmkQ9PZV2fm2tqiXg119G2sd4CYmRWgoZpKkm4CjgR2k9RMdjbVZcCtks4BXgI+nqrfDRwPzAFWAZ8GiIglkr4JPJLqXRoRlYX588nO9OoL3JNuVRnYt9EBYmZWgKoCJCImb2bT0R3UDeALm2nnOuC6DsqbgHHV9KU9B4iZWTFK/U10cICYmRWl9AEyoG8jb65ygJiZdbfSB8jAvo0+jdfMrAClD5Chu/Zi8cp1ZEsvZmbWXUofIMMH9mFtaxtLVq4ruitmZj3KThAgfQGYv3RNwT0xM+tZSh8gIwZlAfLqm6sL7omZWc9S+gAZPqgP4AAxM+tupQ+Qobv0oldDHS8sWll0V8zMepTSB4gkxr1jANc/9BJPzV9WdHfMzHqM0gcIwAUffjcAcxeuKLgnZmY9x04RIPuNGATgU3nNzLrRThEgg/tlvwuyeIUDxMysu+wUAdJQX8egfo0sXrm26K6YmfUYO0WAAOw5pB/PL/SZWGZm3WWnCZC93t6fZ15bXnQ3zMx6jJ0oQAaweOU6Fi73NJaZWXfYaQJk77f3B+DJV5cW3BMzs55hpwmQ8XsMoldDHQ88t6jorpiZ9Qg1B4ikvSTNyt2WSfqypH+S9Equ/PjcPhdJmiPpGUnH5sonpbI5ki6spT/9ejVwyJgh/P7ZhbW+JTMz2wo1B0hEPBMR4yNiPDABWAXckTZ/t7ItIu4GkLQPcAawLzAJ+IGkekn1wJXAccA+wORUd6t96D3DeG7BCprfWFXr2zIzsyp11RTW0cDciHhpC3VOAm6OiLUR8QIwBzg43eZExPMRsQ64OdXd+k7svTsAV/52Dm1t/oVCM7PtqasC5AzgptzzCyQ9Juk6SYNT2QhgXq5OcyrbXPlbSDpXUpOkpoUL3zpVNWa3XThi7G7c9Kd5/PaZBdvwdszMrDPbHCCSegEnAj9PRVcB7wLGA/OBf9/W16iIiGsiYmJETBw2bFiHdX74qQkAPPzCkq56WTMz60BXjECOA/4cEa8DRMTrEbE+ItqA/yKbogJ4BRiV229kKttceU369WrgyL2Gcfufm1nTsr7WZszMrBNdESCTyU1fSRqe23YK8ER6PA04Q1JvSWOAscCfgEeAsZLGpNHMGaluzT73wXexaMU6LrvnaSK8FmJmtj00bMvOknYBjgE+lyv+V0njgQBerGyLiCcl3QrMBlqBL0TE+tTOBcC9QD1wXUQ8uS39OuxdQ/n04aP58YMv8qcXlvB3x+7FkXsNQ9K2NGtmZjkq67/QJ06cGE1NTZvdHhHc8NBLXPOH53nlzdXsM3wAp04YyYQ9B7PfiIHU1TlMzKznkTQzIiZ2SVs7a4BUrF63ntsfbeanM17e8JO3bx/Qh4PHDGH00H4c/77hvOdt/R0oZtYjOECoPkDy5i1ZxZ9eWMJvnl7ArHlvMn/patoCBvRpYMxuu/A/J4zkqL3exqgh/bZTr83MiuUAobYAae/1ZWu4/7lFPPryGzzy4hKefT37TfWRg/vy6cPH8MlD96B3Q31XdNfMbIfgAKFrAiQvInhh0Up+98xC7n58Pk0vvcHb+vfmlANG8MWjx7Jr720638DMbIfgAKHrAyQvInhwzmKu/v1cHpiziBGD+nLR8e/lf+w33GdymVmpOUDYvgGS1/TiEr5x55PMnr+MA/cYxJT3j+av3vcOL7qbWSk5QOi+AAFY3xbc2jSP705/lgXL17L38AF8+L3DOHn8CMbu3r9b+mBm1hUcIHRvgFS0tQW3P/oKP37wBZ58NTsl+L1v78+Bew5mjyH9GDW4H6OG9GWPIf0Y2LfR011mtsPpygDxyvBWqKsTp04YyakTRrJ4xVp+PrOZPzy7kHsen88bq1o2qduvVz2D+jYyoHLr08iAPg306VVPn4Z6+vaqo1+vBvo21tO3Vz29G+ro1VBH74Z6ejXU0au+jl4NoqGujoZ60au+job6OhrrRWN9HQ11orGhjsa0vaFODiwz61YegXSR5WtamLdkNfPeWMW8Jat49c01LFvTwtLVLSxb3cKyNa0sW93C2tb1rGlpY3XLetZ38W+W1NeJeom6Omioq6NOqayujvo6qJeor8/qZOWiTqKhvrJfFkSVsjplt6wemzxXartStmF7HcDG58rdq1JeJwRIm9arPM/XAza0v7GtSr3UlrL28vUqZRvvs1vWO218nLZTqUOlr5X6ym3btL38PuS2V/Zq315lw6av0b791MMNfW33HnL9ad/nzb+HjW3m29vc/vnj8pbtHbyHjuqzSX86OG6b6XOH79nAEPw5AAAIIElEQVT/MOpSHoHsgPr3aWSfdzSyzzsGVFU/Ili3vo3V69azat161rW2sW59G2tb2li3fj1rW9toXR+0rG+jJd23tuUe57a1rm+jpS1oawta24K2CNa35W4RrF+f7jsoy+/XmsrWtLTRlra1RbYO1BaVG6m8sj+0RRDBhu2Q6uXKI7L3vaGcds/L+W8Z62abhBmbhvam23NB1tG2Ktp66/7V7ad2Dby1fnX9oH39Lup/V3GAFEQSvRvq6d1QzyB/8X2DSqDkgwU2BlP77fn7aFcvCywINoZTJbSy+0pJpd6m9Tfuk9s/bd90n3x7aY98e2lDvv30v03azLe3oWcd9qf695Cv32H/270H2r8mvOU4RNp5k/7n+rOxfNPX3LQ/7Y9r5+9hQwXY5LUrfdv0+Vu3tbvb5DWraZP2+1XRh033b7e9yv067f9b6ne8vfLf9T66jgPEdiiSqM9NHZlZ17rqk13XVlf9pK2ZmfUwDhAzM6uJA8TMzGriADEzs5o4QMzMrCYOEDMzq4kDxMzMauIAMTOzmpT2WliSlgPPFN2PHcRuwKKiO7GD8LHYyMdiIx+LjfaKiC75HYoyfxP9ma66IFjZSWryscj4WGzkY7GRj8VGkrrsKrSewjIzs5o4QMzMrCZlDpBriu7ADsTHYiMfi418LDbysdioy45FaRfRzcysWGUegZiZWYEcIGZmVpPSBYikSZKekTRH0oVF92d7kzRK0m8lzZb0pKQvpfIhkqZLei7dD07lknRFOj6PSTqw2HfQ9STVS3pU0l3p+RhJD6f3fIukXqm8d3o+J20fXWS/u5qkQZJ+IelpSU9JOqynfi4k/W36/8cTkm6S1KcnfS4kXSdpgaQncmVb/VmQNCXVf07SlM5et1QBIqkeuBI4DtgHmCxpn2J7td21Al+NiH2AQ4EvpPd8IXBfRIwF7kvPITs2Y9PtXOCq7u/ydvcl4Knc828D342IdwNvAOek8nOAN1L5d1O9ncn3gf+OiPcC+5Mdkx73uZA0AvgbYGJEjAPqgTPoWZ+LqcCkdmVb9VmQNAS4BDgEOBi4pBI6m5X9dnQ5bsBhwL255xcBFxXdr24+BncCx5B9C394KhtO9sVKgB8Ck3P1N9TbGW7AyPR/hg8Dd5H99u0ioKH9ZwS4FzgsPW5I9VT0e+ii4zAQeKH9++mJnwtgBDAPGJL+O98FHNvTPhfAaOCJWj8LwGTgh7nyTep1dCvVCISNH5SK5lTWI6Sh9gHAw8DuETE/bXoN2D093tmP0feArwNt6flQ4M2IaE3P8+93w7FI25em+juDMcBC4MdpOu9HknahB34uIuIV4N+Al4H5ZP+dZ9IzPxd5W/tZ2OrPSNkCpMeStCtwG/DliFiW3xbZPxd2+vOxJZ0ALIiImUX3ZQfQABwIXBURBwAr2ThFAfSoz8Vg4CSyUH0HsAtvnc7p0bbXZ6FsAfIKMCr3fGQq26lJaiQLjxsj4vZU/Lqk4Wn7cGBBKt+Zj9HhwImSXgRuJpvG+j4wSFLlum7597vhWKTtA4HF3dnh7agZaI6Ih9PzX5AFSk/8XHwEeCEiFkZEC3A72WelJ34u8rb2s7DVn5GyBcgjwNh0dkUvsoWyaQX3abuSJOBa4KmIuDy3aRpQOUtiCtnaSKX8zHSmxaHA0twwttQi4qKIGBkRo8n+2/8mIj4B/BY4NVVrfywqx+jUVH+n+Bd5RLwGzJO0Vyo6GphND/xckE1dHSqpX/r/S+VY9LjPRTtb+1m4F/iopMFpVPfRVLZ5RS/81LBQdDzwLDAX+Iei+9MN7/cDZEPPx4BZ6XY82ZztfcBzwK+BIam+yM5Umws8TnZmSuHvYzsclyOBu9LjdwJ/AuYAPwd6p/I+6fmctP2dRfe7i4/BeKApfTZ+CQzuqZ8L4J+Bp4EngJ8AvXvS5wK4iWz9p4VsdHpOLZ8F4Ox0XOYAn+7sdX0pEzMzq0nZprDMzGwH4QAxM7OaOEDMzKwmDhAzM6uJA8TMzGriALEeSdIf0/1oSX/dxW1f3NFrme1sfBqv9WiSjgS+FhEnbMU+DbHxGksdbV8REbt2Rf/MdmQegViPJGlFengZcISkWek3JeolfUfSI+m3Ej6X6h8p6X5J08i+5YykX0qamX6H4txUdhnQN7V3Y/610jd/v5N+s+JxSafn2v6dNv62x43pG9VIukzZb8E8JunfuvMYmXWmofMqZju1C8mNQFIQLI2IgyT1Bh6U9KtU90BgXES8kJ6fHRFLJPUFHpF0W0RcKOmCiBjfwWt9jOzb4/sDu6V9/pC2HQDsC7wKPAgcLukp4BTgvRERkgZ1+bs32wYegZht6qNk1wmaRXbZ/KFkP7wD8KdceAD8jaS/ADPILkI3li37AHBTRKyPiNeB3wMH5dpujog2ssvVjCa7zPga4FpJHwNWbfO7M+tCDhCzTQn4YkSMT7cxEVEZgazcUClbO/kI2Q8T7Q88SnaNpVqtzT1eT/ZDSK1kvwz3C+AE4L+3oX2zLucAsZ5uOdA/9/xe4PPpEvpIek/6oab2BpL9LOoqSe8l+7nhipbK/u3cD5ye1lmGAR8ku5hfh9JvwAyMiLuBvyWb+jLbYXgNxHq6x4D1aSpqKtnvi4wG/pwWshcCJ3ew338D56V1imfIprEqrgEek/TnyC43X3EH2U+r/oXsCstfj4jXUgB1pD9wp6Q+ZCOjr9T2Fs22D5/Ga2ZmNfEUlpmZ1cQBYmZmNXGAmJlZTRwgZmZWEweImZnVxAFiZmY1cYCYmVlN/j9ZSAEFdNL2gQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "valid_num_impute = glrm_num_impute('validation', valid)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Test data" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "test missing:\n", " [227.0, 15.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 78.0, 1.0, 1.0]\n", "imputed test missing:\n", " []\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "test_num_impute = glrm_num_impute('test', test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Embed categorical vars using GLRM" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Training data" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "train_cat_embed = glrm_cat_embed(train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Validation data" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "valid_cat_embed = glrm_cat_embed(valid)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Test data" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "test_cat_embed = glrm_cat_embed(test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Merge imputed and embedded frames" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "imputed_embedded_train = train[['Id', 'SalePrice']].cbind(train_num_impute).cbind(train_cat_embed)\n", "imputed_embedded_valid = valid[['Id', 'SalePrice']].cbind(valid_num_impute).cbind(valid_cat_embed)\n", "imputed_embedded_test = test[['Id', 'SalePrice']].cbind(test_num_impute).cbind(test_cat_embed)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Redefine numerics and explore" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Numeric = ['reconstr_MSSubClass', 'reconstr_LotFrontage', 'reconstr_LotArea', 'reconstr_OverallQual', 'reconstr_OverallCond', 'reconstr_YearBuilt', 'reconstr_YearRemodAdd', 'reconstr_MasVnrArea', 'reconstr_BsmtFinSF1', 'reconstr_BsmtFinSF2', 'reconstr_BsmtUnfSF', 'reconstr_TotalBsmtSF', 'reconstr_1stFlrSF', 'reconstr_2ndFlrSF', 'reconstr_LowQualFinSF', 'reconstr_GrLivArea', 'reconstr_BsmtFullBath', 'reconstr_BsmtHalfBath', 'reconstr_FullBath', 'reconstr_HalfBath', 'reconstr_BedroomAbvGr', 'reconstr_KitchenAbvGr', 'reconstr_TotRmsAbvGrd', 'reconstr_Fireplaces', 'reconstr_GarageYrBlt', 'reconstr_GarageCars', 'reconstr_GarageArea', 'reconstr_WoodDeckSF', 'reconstr_OpenPorchSF', 'reconstr_EnclosedPorch', 'reconstr_3SsnPorch', 'reconstr_ScreenPorch', 'reconstr_PoolArea', 'reconstr_MiscVal', 'reconstr_MoSold', 'reconstr_YrSold', 'Arch1', 'Arch2', 'Arch3', 'Arch4', 'Arch5', 'Arch6', 'Arch7', 'Arch8', 'Arch9', 'Arch10', 'Arch11', 'Arch12', 'Arch13', 'Arch14', 'Arch15', 'Arch16', 'Arch17', 'Arch18', 'Arch19', 'Arch20', 'Arch21', 'Arch22', 'Arch23', 'Arch24', 'Arch25', 'Arch26', 'Arch27', 'Arch28', 'Arch29', 'Arch30', 'Arch31', 'Arch32', 'Arch33', 'Arch34', 'Arch35', 'Arch36', 'Arch37', 'Arch38', 'Arch39', 'Arch40', 'Arch41', 'Arch42', 'Arch43', 'Arch44', 'Arch45', 'Arch46', 'Arch47', 'Arch48', 'Arch49', 'Arch50']\n", "\n", "Categorical = []\n" ] } ], "source": [ "imputed_embedded_nums, cats = get_type_lists(imputed_embedded_train)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Imputed and encoded numeric training data:\n", "Rows:1001\n", "Cols:88\n", "\n", "\n" ] }, { "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", "
Id SalePrice reconstr_MSSubClass reconstr_LotFrontage reconstr_LotArea reconstr_OverallQual reconstr_OverallCond reconstr_YearBuilt reconstr_YearRemodAdd reconstr_MasVnrArea reconstr_BsmtFinSF1 reconstr_BsmtFinSF2 reconstr_BsmtUnfSF reconstr_TotalBsmtSF reconstr_1stFlrSF reconstr_2ndFlrSF reconstr_LowQualFinSF reconstr_GrLivArea reconstr_BsmtFullBath reconstr_BsmtHalfBath reconstr_FullBath reconstr_HalfBath reconstr_BedroomAbvGr reconstr_KitchenAbvGr reconstr_TotRmsAbvGrd reconstr_Fireplaces reconstr_GarageYrBlt reconstr_GarageCars reconstr_GarageArea reconstr_WoodDeckSF reconstr_OpenPorchSF reconstr_EnclosedPorch reconstr_3SsnPorch reconstr_ScreenPorch reconstr_PoolArea reconstr_MiscVal reconstr_MoSold reconstr_YrSold Arch1 Arch2 Arch3 Arch4 Arch5 Arch6 Arch7 Arch8 Arch9 Arch10 Arch11 Arch12 Arch13 Arch14 Arch15 Arch16 Arch17 Arch18 Arch19 Arch20 Arch21 Arch22 Arch23 Arch24 Arch25 Arch26 Arch27 Arch28 Arch29 Arch30 Arch31 Arch32 Arch33 Arch34 Arch35 Arch36 Arch37 Arch38 Arch39 Arch40 Arch41 Arch42 Arch43 Arch44 Arch45 Arch46 Arch47 Arch48 Arch49 Arch50
type int int real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real
mins 1.0 34900.0 -44.23133635943228 -4225.097446464598 -3976.10187974957443.3997334226630325 3.544019257749243 1896.3503616847709 1945.6320773393284 -189.37297988096122 -309.9032975957491 -516.1675956709398 -636.8709708640919 236.1836160533884 384.6864969893868 -374.9063165857346 -79.36199875046046 344.8267735855611 -0.4168946840058124 -0.43105002779860335 0.5873209083623488 -0.6010367789160089 1.304756925088727 0.5264212471860051 2.7045369788879574 -0.7665386938905427 1924.5407928190298 0.4493128280616925 122.77719368752912 -111.44383054611383 -56.16776509169834 -74.50483748720302 -74.05947885021281 -146.4225090597484 -56.34296126166621 -690.7344165546625-0.10678358648053712002.354095763163 -0.4687898220197418 -0.34360634991704014 -0.3045873955680723 -0.37940449690804373 -0.5116787657035613 -0.3873715788793161 -0.5551078336616105 -0.5101615979755374 -0.4566316170028562 -0.4142627287782314 -0.3701829969715028 -0.3809088576509194 -0.486780391952485 -0.41740843552411583 -0.4112451882631294 -0.4541860615984521 -0.6086107602024685 -0.3833517942843144 -0.5817784210121991 -0.6144218778576248 -0.3987088323519732 -0.4767109817088336 -0.3972698495578903 -0.35628115921299836 -0.4369454868451706 -0.3780863638592116 -0.3567010297649047 -0.37017008794301576-0.4199215078967578 -0.4123033896708443 -0.40969484578613946-0.5134560035054134 -0.3967699439253478 -0.41367767770234165 -0.41866197846637326 -0.4385784565849796 -0.34615708596196676 -0.40122567324152286 -0.3838900383470962 -0.40837401809828516-0.3808997149099292 -0.4976501795001665 -0.35880479094503137-0.34256394117821326-0.3558649162592849 -0.3969736216143713 -0.5461651301619685 -0.5548373151931274 -0.3307883894827866 -0.3912157818295665
mean 724.8291708291708 182171.9590409590556.99165174117779 67.85911675567769 10658.939424885144 6.138941714598302 5.589167678214504 1971.9775892138925 1984.9716074560897 107.0197713975476 446.0181071300255 41.36367763228622 575.4266876683594 1062.8084724306711 1172.3347866239785 342.1350869836496 5.893053022222092 1520.36292662985 0.4256049716205933 0.06033326119193199 1.5715953536698566 0.3811710120230708 2.8733196842312934 1.0475638619198469 6.515448194204085 0.6225314598923691 1978.4488302519555 1.7894501352005332 476.4975880873684 90.53910143697007 44.71366293407943 21.57793632388285 3.467119702006058 15.007357730135148 3.3962305155522667 49.87780208553257 6.362976999007829 2007.82836685831150.00611217477583627 0.01711433791626026 -0.0026216266627467560.054539927838606866 0.02630643489305638 0.03551007709251924 0.01350044987113438 0.018421515263264607 0.014513238370409659 0.04500387323772643 0.03559066856316917 0.059131428091480524 0.026840790891633517 0.03407480854443829 0.019782341837323095 -0.01300720512245459 0.06416921610176075 0.0535187208498512160.08115350728589137 0.07867235909233168 0.015451357213745126 0.0142727197062989580.06058033739271817 0.054614201820150185 0.013939562856027403 0.021251939994484558-0.0227234419314630840.013819714918072594-0.0277352839663225 0.031139086873220284 0.02020991649384961 0.08598288215934097 0.03398057792504859 0.013691452058646818 0.033495627882720036 0.005170327974313223 0.011670876689875152 -0.0163835700082540570.03604446523290951 0.04641423798557135 0.0089458957603345720.03725642483627229 -0.016233460489249080.03036085412713227 0.0144981442928120150.12044273331922442 0.07846378507702471 0.00122913896668032350.08570114595212082 -0.011346400742313358
maxs 1460.0 755000.0 165.04438011877207 310.2731412329531 57321.732502052604 12.226660380866939 9.556376623103784 2027.0321805977144 2019.2998789720923 924.4452076372256 4574.070688565167 868.0050181383804 1868.0899690586339 4636.501459838726 4378.052588720243 1744.8184525311747 391.22446038926665 5086.854683848831 3.6666998527986863 0.841439178271775 3.1911960183840495 1.8021116976126612 6.798316392893328 2.2433999190126404 13.625641762755933 4.1480201055697155 2021.418448622806 4.487058640933929 1517.4011276327553 527.7558542167659 272.9150834013371 503.3318875180782 93.85478466388521 246.98728402695903 355.1405751182516 15282.46701964951211.893158236166368 2010.11999330687830.7077160352735717 0.7405090039591002 0.7936941271188273 0.8773452599742452 0.9092434163787216 0.7341975733734115 0.8238002386124796 0.660335944692588 0.7262037171186438 0.7075985361387156 1.0461374731726418 1.0631983904145679 0.7887077687029248 0.914062508479115 0.8098695894630203 0.6876047959172337 1.2491027087989937 1.1617341807166217 1.203495927090624 1.4915009114441389 0.7542632211487091 0.8073895156900929 1.2936306206108168 0.8303504227579178 0.8550906981328271 0.7718123551674706 0.4403687630763456 1.0719916100166058 0.538180764018659 1.0237717623546263 0.923064149276387 1.2666050005552336 0.953568081821336 0.6214523123792489 0.6084094060239071 0.6718978952082143 0.7317165419265811 0.5666119513633753 1.1588070206872034 1.0725525957111688 0.6589235850924371 1.0332856017619583 0.5579565015007101 1.1161234807352332 0.859312506997353 1.2586812640869067 1.1590262885820604 0.7542989065616704 1.0022226074377236 0.7541589989368739
sigma 421.4954943866088780367.94618029828 30.498920819144054 139.9554103936592 5796.2870830793845 1.1628422463919703 0.7740724123149421 27.05080016485647 16.26960273548566 116.58562923971095 434.039793419302 111.25269423397182 405.9621482630885 406.08081336421054 365.96756592165934 408.483182229422 32.186167519116836 497.52867244459503 0.44157961582949606 0.1429361131681413 0.4507929695848515 0.40976757149391635 0.6409948751027755 0.19051646442612635 1.441556366206613 0.45690510120499483 22.86878106962172 0.5858821820565292 166.3256483868249 79.0946505522772 38.05513696781787 43.180254169203884 13.992318009944038 37.41304408194813 27.281610282432773 494.1972328346901 2.01850344648512 0.97412191249568550.19776519960507297 0.1592956573269191 0.16534055490114039 0.17572173865808063 0.16393892837292087 0.17095889234455616 0.1931707751431961 0.15985199829956476 0.17230530199990196 0.16711859710165275 0.166012493785914 0.16338620859123656 0.1711452734115428 0.16615228568029 0.16225187498522894 0.16200666236985017 0.17815347357215897 0.1489986964355718 0.1748280489993504 0.17292864614113448 0.17432659842775425 0.17476850739422492 0.17294775155607323 0.1738982233386707 0.16357217840450067 0.1615720696222126 0.13457520609191112 0.17214532817507824 0.14243061745199656 0.15684283474602337 0.17507525220609754 0.17383336266045968 0.16216149787699616 0.18029877007307857 0.17361386798001993 0.15253584220803643 0.16315646887023685 0.14300647645297132 0.18102167395741223 0.20495620260359595 0.16411710255866827 0.17504223935839971 0.1537481152866042 0.17485690963864173 0.14798296775131228 0.17738150977447603 0.22621301967540086 0.18933523327717716 0.18391058742659946 0.15075987419438056
zeros 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
missing0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1.0 208500.0 104.50354335291456 64.80440757062011 6360.692263770561 6.975400763921677 5.179274281824114 1997.9913252045753 1999.7720248207302 174.376580539808 613.1139900265091 19.298919247441635 253.90275311124265 886.3156623851935 945.2813635998417 793.8791105044418 8.953634122805461 1748.114108227089 0.7333790347574005 -0.06493834463414744 1.8661841722084243 0.9181672522846824 2.8745911333739333 1.0404841158009106 7.008351042899752 0.577489952112739 2002.4333932512598 2.186973365467253 573.4982601470832 128.38164973000855 50.519648371082546 11.68717587929879 -8.169750428007237 0.3566677563803715 5.2662318426668335 -4.4642618731479124.103176779244361 2008.78598065357660.5097151210996074 0.06479972212794836 -0.18855572936947235 -0.0008663485005209296-0.0324196520428019840.18951589923013604 0.13347306541541382 -0.18889852259975512 -0.21066680643215976 0.04393453629627573 -0.0375244740148318740.04074104536831588 0.09508913597644722 -0.07006266540515597 -0.0804090140208563 -0.11931459615730923 0.025763571889325782 0.0323651373044580170.05252381631832085 0.10139612268594617 -0.0256447083408263760.14139832239293149 -0.0210053827563199920.12583724071846047 -0.0873327130212978 -0.10660061692588294-0.05470037076772294 0.02963144320599707 -0.21869337815919954 -0.05832511400748364 0.0088620272946908550.1400969839881261 0.0199292383463959940.5224898487705146 0.2441104432566922 -0.09860623078920294 0.06907233672209752 -0.17091228674367184 0.2967362413576793 0.2525474074939651 0.33689009619461596 0.05655897194096529 -0.16602014693828887-0.0925825078195551 -0.1386285144200913 0.3038644841313081 0.17815690982761553 0.09058270729142882 0.047413014107310546-0.09934014959504242
1 2.0 181500.0 19.441214279726402 80.56380472376567 21404.456419490125 6.066919179799397 7.70724655157521 1962.9025141352843 1997.7315310353597 107.35057937216561 728.0821851689395 -14.155225961488469 454.69725321903684 1168.6242124264877 1298.743060218519 151.81538852800267 -2.088872051376377 1448.4695766951452 0.3699322768062732 0.5284490763903087 1.4377305429386573 0.04901038897076904 2.901863014446625 0.8398261491729678 6.035208894818924 0.7165082723477252 1970.8769297342235 1.5575494389894768 430.8012438092285 261.9829073840098 16.096005606870083 2.401765695776586 36.57392870335894 -38.8967972825059 5.999697519926957 52.29591560556911 6.910303846320683 2007.545752620533 0.10486088506218738 0.13784396122023712 -0.18807716285762782 0.37318140375369085 0.236774805751134 -0.2359840392210177 0.06193923105612584 0.0629292785632385 0.13496564232538857 0.08667109537891898 0.10552663871884067 0.007461992283568186 -0.0367058135071127440.00326495370248197250.04249331580410951 -0.05144241494764174 -0.15285573916438652 -0.075978970855686380.14458444967796852 0.12474130537179337 0.44431595602159535 -0.099252094737604870.34488337187642154 0.07761155047799022 0.05069803894948111 0.0109626723450536430.008910053639594465 -0.00735312427767793-0.09536074962868571 -0.19117579087297742 -0.167698665126549550.1440410868918387 -0.1499897768010528 -0.03233219902250955 -0.04399476335243723 -0.14805375923587485 -0.1679538887686746 -0.1746191302386284 -0.10713579169917424 0.09772230738412933 -0.130464451731767130.1368083631087589 0.08960651260468729 0.28114674926839633 0.09440417803089984 0.24121357930464823 0.016429261443668693 0.17826523408467304 -0.010343541628787 0.0298233529265462
2 3.0 223500.0 90.62372440076734 68.29249604774994 7259.582458526219 7.033081168622403 5.16734895734394 1997.821749775149 1997.444312805928 178.61794902319593 584.4866941274198 -0.15007333181985416 370.74453570453954 955.0811565001395 1026.696222655073 711.0065221326331 -12.868044060712142 1724.834700726994 0.5884342424501595 0.014457849713974895 1.8157024596513194 0.897060034952875 2.7949592015237883 1.0120748879303627 6.814536255369864 0.7689339093438123 1999.0050948351989 2.23034156985963 579.876845096996 91.70290711632106 73.8497483950382 -2.3392644329230343 2.7818756462808967 31.913945331157407 2.719652622737942 9.769371762333137 7.3160460150042965 2007.56149568133860.38730949862772296 0.10045928189926055 -0.15839030454821412 0.28704302001540466 -0.11334229530552185 0.2174116312511972 0.14351201539448524 0.0064379301293155935-0.13918062789011088 0.12579539120411773 -0.0431682001766682 -0.1422778565355369 0.17328116752737474 -0.19891479110911078 -0.1694467081139065 -0.12929067556413976 -0.0117449595565143910.0086035149527520640.08392508744705589 0.03934410101875233 0.014012908352551567 0.2650496868348118 0.10757199294459029 0.08865929238094832 -0.042681764532571526-0.15218696670144607-0.15957578836837497 -0.03734313831988259-0.23666827655364392 -0.04825105839668694 -0.083034369411114530.12829862980202608 0.04572038107034422 0.36827807836992593 0.38954834629861107 -0.21606679982274327 -0.07700070259797903 -0.1424272921428198 0.2065152010742415 0.15754459814791094 0.3435106593263627 0.2111051158076488 -0.22840644100291946-0.14625107737204743-0.130052040877365080.10309998723615382 0.00322189988675930730.19079222675019578 0.1348135173404952 -0.1093288285205031
3 5.0 250000.0 86.6689693124448 84.7267706910129 14097.6312442094 7.817573630712818 5.304794196487614 2003.4594564499428 2004.6840717704388 277.54905037434554 761.9730545819227 9.03047230890644 476.39610290271463 1247.3996297935437 1357.2361974656549 999.3411765446972 -19.82088902525279 2336.756484985099 0.6297893132233383 0.07985232418160804 2.285892053385097 1.0445048248885698 3.535891541344562 1.1043549727033763 8.64500460729124 1.1554341798126668 2004.0875347543442 2.6352696099445163 691.5201010954005 156.57851269534277 102.90561255620855 -22.94682184016493 8.421147240808473 36.84089617967279 10.9329398318159 20.2672384844484028.450296287635476 2007.31266391667650.33208327183779524 0.03550458655946885 -0.15000406138801053 0.2817975276453993 -0.13391182403552535 0.3240165941509285 0.10125487945601523 -0.04100307902083001 0.05832988227631785 0.22270933882436636 -0.06646693119922865 -0.0116972929937317750.09717057924130529 -0.2062282767631028 -0.03387623569102085 -0.17119985324387055 0.05172452873748982 -0.051107583455413590.1594435109506304 -0.045637824275622780.00066501535573888090.16930575464382994 0.2017296935342163 0.26444383066861754 0.08472381366173097 -0.15237347685952338-0.14801462932478313 -0.03840318539163934-0.2314424987669417 -0.08181625200204982 -0.07156962529119966-0.0278512075760868820.15219809064687578 0.27668374545215274 0.362633759217957 -0.22307660062734075 -0.10428048288875384 -0.13592480578995864 0.15346915246672652 0.14377031431417364 0.2958206743988251 0.11420525016239712 -0.22251936075246131-0.19450699148222061-0.13496525098184567-0.015983100398937904-0.07623612742595026 0.12905696527553728 0.020914456979717094-0.10978482312699776
4 6.0 143000.0 92.31618707789593 80.05008534273767 8379.138390784481 6.1980219139990655 6.42652591801523 1988.029754403849 1998.0128311045492 202.0798338564137 1100.9210252875696 -316.27511485061177 -3.3795521738301204 781.2663582631278 961.3675121200583 134.64587370138395 -63.45908433977675 1032.5543014816653 0.6883832952257838 0.4531831719256862 1.3346095533211288 0.24622812103814645 1.7975498969240837 1.025754412335673 4.455702741827944 0.44842834984304025 1987.237417777361 1.8472148237174069 483.13092449472214 100.75157422487605 -8.751761503643515 -14.046806121452889 62.04091454549086 -15.290035813838879 -20.67619202844513 -91.3455544814709710.846262945354937 2006.594994207124 -0.154453159915512760.18837427298375176 0.17570920667467954 -0.16835736038242977 0.010616995763422935 -0.014236796172726995-0.2027227714372586 -0.04675336298842177 0.25033250518238565 0.1444269827404034 0.05589679156469844 -0.02370677573094124 0.09054827264369193 -0.18379256782339554 -0.16134696999064496 -0.000325303181468257560.24339986658163443 0.08756286576393499 -0.090068009555900470.1111735839538218 -0.24464314102133458 -0.102746178909892420.14909969724196478 -0.0281412965711980920.29047277103317337 0.06540080382010409 0.12173397275966924 0.23582762157383114 -0.2308907226330709 -0.0026913072925283115-0.167250192412510930.25968444877303154 -0.117112032897282490.17829801611431442 -0.16033142558364338 0.11408760735314029 0.13034696423261788 0.06455326234375831 -0.07585531397734056 0.0827793802608221 0.15120253263603536 0.15339577804694535 -0.145085246049415780.024771761319644977-0.209316376614699260.2826801290010206 0.027408864981536427 0.33206667874468965 0.05498553096187407 0.024066171084378682
5 7.0 307000.0 47.363771971089 75.6472579742658 16761.640154890832 7.251109018659042 5.256469962590147 2004.635341687363 2002.5035491141691 213.34888259185686 1145.9128319132374 69.00164860182272 468.6364467654739 1683.5509272805343 1710.7065799999516 37.11006587860368 0.00898377532917305 1747.8256296538843 1.0589415481685098 0.11430442640547456 1.9306330609614188 0.0923605343416658 2.5623807152136293 1.0485001080602152 6.6406349362042745 0.848451186863096 2004.3546398729625 2.4264876960545183 690.3006908571915 187.85904962522775 72.37386070794366 -11.066978567975035 15.001505641704913 1.9677049513839098 19.85441742989765 79.81515708825879 7.4483801950194435 2007.39604848370960.3437646485196499 -0.046761642582423234-0.08993369681677468 0.10105613214801511 -0.03685622602474606 0.1249952878001699 0.2012446293095481 0.15242357598700876 0.09337025654434228 -0.1849611803709983 0.025940819956970434 -0.05781178411377525 -0.041497020080808106-0.08740944621077346 0.046829959535333816 -0.04874507563166765 0.12576029979694953 -0.036588976025227060.10286718524362341 0.07339220269435799 -0.03328925487219499 0.06370519925311705 -0.15934395833804715 0.4477206129991958 -0.13130041300150933 0.04705278454989523 -0.026719208960643864-0.07713459026138773-0.1234017258832738 -0.08275853458731414 -0.166032102275343730.22230773418999927 -0.203308251831313490.10890137226457881 -0.015979789072369226-0.17641219389667462 -0.014643243185455877-0.1566906038858888 0.20446607372536035 0.2412836601283034 0.3003988530187204 0.22771408022980252 -0.08832503538953329-0.058741707839043910.11439665764409414 0.0672448145100926 0.24420871324206922 -0.12818338742840032 0.38220961387053054 0.04330046654121632
6 9.0 129900.0 72.86307239737195 52.155840644668785 8841.087543366877 5.550615677247344 4.72346127092901 1926.1393030675758 1953.1834636687768 191.86958738900944 266.0984601542741 -128.9074512189303 972.4826870997724 1109.6736960351163 1377.2751647587015 534.3040851976687 32.68959968646573 1944.268849642836 0.07326659802508573 -0.10173283976910127 1.6379917513183793 0.19090246768219776 3.6033243913722406 1.4534091682370283 8.333232563738882 0.6842329049958631 1943.2600455927147 1.5906013484123485 425.14033973584753 -77.65403347348864 -12.500543894653688 122.76963374701955 1.044165476297624 18.5029880301367 12.664713556048515 125.0222301232073 4.700424485139948 2008.5045449071326-0.182440118228955640.06600908923073934 0.37343786787396915 0.11066451276040823 0.08750054907711326 -0.1834981848058688 0.0158004423524316060.13117157388614464 -0.015206006017612584-0.006952064718333799-0.12494865014588451 0.09931702768442142 0.15366046954665452 -0.0768153298140498 -0.0122506639022484910.5473647046052668 0.25362930219349766 0.26380430998180593 0.2098858433079907 0.07153319286014335 0.03922151707548682 -0.154704340753141660.022520295688671945 -0.2189632324522937 -0.1664956075525667 0.07291402333348002 0.0833128417521738 -0.05201002133157539-0.0281703580495116760.11942913872770028 -0.011221478048012740.04923848516938856 0.03698144834136736 -0.25779141593173316 0.15360026602446486 -0.05665943318925826 -0.15153924964253998 -0.0612207409912822950.16591969250445693 -0.18115556244287404-0.1277319802608718 -0.2907737172707998 -0.054909152952939870.28806991413271843 0.2630449226611018 0.08134037973663616 0.059913187617179176 0.18363096841804002 -0.10985074754381584-0.07224356433970858
7 11.0 129500.0 54.951159364303415 70.29322686364817 9518.91805253163 4.979351675567104 5.65432503665134 1955.9885324133045 1971.322123203679 39.21695120563956 712.2478559661299 82.74005462721324 193.71231253618777 988.7002231295311 1108.277502657446 -116.6001925952724612.814342443115134 1004.4916525052885 0.8661685669331688 -0.01989731485471883 1.0686403253941132 -0.024343405391961172.2785969341209658 1.0945528583393427 5.073269467294348 0.3361372112516745 1964.3855920738974 1.3088575766769346 372.0573099202217 69.319020315571 -0.3496687166681056 40.28951082617783 -2.6347108468852096 5.665045327847382 -0.938169790923927528.3023870561445464.273145019526041 2008.8416675014719-0.15931311795548425-0.26512138737940866 -0.0299762852344435 -0.03993195117770839 0.1268245045954337 0.013567702910096456 -0.20347168560108272-0.1357417506331065 0.3652486827659576 -0.2489192563670359 0.11277930718534707 0.05464697332747308 0.07367202080004402 0.19106632625787487 -0.0902094675106252 0.059558026101625035 -0.0702328246496931 0.19738630211700847 0.07671938466996947 0.1560934819445587 -0.020848826903323608-0.024090888325301330.09651904476210826 0.07894211045299417 0.15196165784474108 0.5320697425542597 -0.10081707267691789 -0.1321117146704471 -0.0076697720405022220.11703940233402568 0.18493212647629287 0.1332152720285416 -0.06524013810567032-0.15875295731436692 0.006622936773725941 0.23701390741018444 0.10976997264111785 0.08505656917580903 0.035397596300364854 0.043212938783876845-0.1853589596643536 -0.112188212515686610.11190963950675167 0.05458547582205207 0.14334529727199471 0.2129350119161703 0.1863097940254759 -0.13214496638049486 0.14508880921122916 0.15782200244294758
8 12.0 345000.0 92.743769511436 85.2366039385601 16339.891422138877 8.106395897712794 5.176877990238183 2003.5875126733029 2006.6426723222653 320.46591565993475 964.1696509183485 -19.175042494695752 496.4929435553701 1441.487551979023 1547.677418291177 1015.8399904197547 4.12376903070199 2567.641177741634 0.7618213919499395 0.10078644209011284 2.485146021077118 0.8909423307753017 3.6842256316686433 1.1713262145197691 9.221115932931053 1.1533667275187995 2006.4045494107065 2.7450417114100523 740.1868409427757 186.8336001027173 95.16851607854863 0.33289174195568094 11.410558845994094 8.069737744026803 30.36524183453281 36.90432664471248 7.565838751483942 2007.356655697874 -0.4003800697414992 -0.1662172760527319 0.05651630683991625 -0.18813407735313986 0.04020382832301052 0.07088747432487098 -0.072956330869657860.043295026880684984 0.139650157189785 0.020629099918208604 -0.1588196646990242 0.012515225155750867 0.09599826461651689 -0.02793831660133299 0.07924749091342038 -0.2334560657170934 -0.13834858784036427 0.04059618993081467 -0.10614512933195544-0.07331670299603703-0.018158496500535016-0.17895665436118946-0.20941610365226546 0.19134838130722215 0.019124897982532557 0.04677117909845555 -0.2649669367255626 -0.115842127887709190.00340771266757835870.06275073662055895 0.1371895460071925 0.03946640962333368 0.21749781536021634 -0.0241184923260568950.1209808792261672 -0.012647763364478017-0.1612674447027948 0.0746523390784604 -0.0041300647481165910.07784614659561406 0.1302335655086426 0.0051554062075138310.05688971952902437 0.04552892858594544 0.05076648314232423 -0.1422911972825133 0.9655739411774352 0.23708711690491113 0.5119600371861116 0.00437790611207807
9 13.0 144000.0 38.19304761616202 83.20080305659114 10172.409666310607 4.775412662627716 5.88067098083299 1955.0322556652168 1966.0249334019288 21.14545246523994 730.5848573041508 123.21942548964934 56.941906607028955 910.7461894008293 1043.4081024975392 -175.6038313003374 -34.584992961083955 833.2192782361176 0.8588769071329936 0.04145402813729814 0.7795150037641554 0.18209046979526763 2.048704607540846 0.9927001882254322 4.403512126841511 0.6837346580197146 1957.0435118219013 1.255071820371169 344.402516183865 22.396401819042225 37.354437641146085 1.977122549148838 3.5332493154612257 75.40280619047873 -15.30727283160470415.47052351289469 8.318525488067877 2007.662952088483 -0.28799398435906365-0.07600466970797996 0.04121132307852188 -0.019458215719511927 0.02883844288138176 -0.04622563346535802 -0.2522909040739628 0.028939216666891206 0.19858169783614507 -0.03610168379200259 0.04869611581725507 0.1304637574989054 -0.06636142529069304 0.1790082503072204 -0.04776394710884853 0.028268010198756792 -0.07539854251651959 0.13913128539550226 0.2055661801881381 0.11488384465124477 0.14376818862755406 0.04049840521796883 0.25134583261365406 -0.0469274670202179940.35083245184486966 0.22616907450391951 0.02291410998474035 -0.038810297503876430.10808024786589382 0.07410734395938802 0.25447513496145263 0.02611484578163388 0.08246526826446238 -0.24109569805172273 -0.13454165123309297 0.27487204223959316 -0.1444848591897812 0.5666119513633753 -0.07886147366979251 -0.11190314757424483-0.20072079785915264-0.141614008006639920.0089446233961930180.0544266225500511 0.15744494959671027 0.13184625172676537 0.052535562597255066 -0.14995654938960698 0.09013064214345112 -0.12353780870921198
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "--------------------------------------------------------------------------------\n", "Imputed and encoded numeric validation data:\n", "Rows:459\n", "Cols:88\n", "\n", "\n" ] }, { "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", "
Id SalePrice reconstr_MSSubClass reconstr_LotFrontage reconstr_LotArea reconstr_OverallQual reconstr_OverallCond reconstr_YearBuilt reconstr_YearRemodAdd reconstr_MasVnrArea reconstr_BsmtFinSF1 reconstr_BsmtFinSF2 reconstr_BsmtUnfSF reconstr_TotalBsmtSF reconstr_1stFlrSF reconstr_2ndFlrSF reconstr_LowQualFinSF reconstr_GrLivArea reconstr_BsmtFullBath reconstr_BsmtHalfBath reconstr_FullBath reconstr_HalfBath reconstr_BedroomAbvGr reconstr_KitchenAbvGr reconstr_TotRmsAbvGrd reconstr_Fireplaces reconstr_GarageYrBlt reconstr_GarageCars reconstr_GarageArea reconstr_WoodDeckSF reconstr_OpenPorchSF reconstr_EnclosedPorch reconstr_3SsnPorch reconstr_ScreenPorch reconstr_PoolArea reconstr_MiscVal reconstr_MoSold reconstr_YrSold Arch1 Arch2 Arch3 Arch4 Arch5 Arch6 Arch7 Arch8 Arch9 Arch10 Arch11 Arch12 Arch13 Arch14 Arch15 Arch16 Arch17 Arch18 Arch19 Arch20 Arch21 Arch22 Arch23 Arch24 Arch25 Arch26 Arch27 Arch28 Arch29 Arch30 Arch31 Arch32 Arch33 Arch34 Arch35 Arch36 Arch37 Arch38 Arch39 Arch40 Arch41 Arch42 Arch43 Arch44 Arch45 Arch46 Arch47 Arch48 Arch49 Arch50
type int int real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real
mins 4.0 39300.0 -142.20322115479217 15.813018985836067 -23393.9746557190672.379287728111687 2.8491948042188198 1869.1716746918141 1932.4861019288103 -244.1695218843334 -226.0544144524759 -294.9533908799977 -507.7457628406461 151.3645697509288 251.96510747210482 -240.9464647507753 -145.06831606760377 155.2333663873103 -0.3593072585406766 -0.3307167787076517 0.35428628652749894-0.5860717658257095 1.258633310967037 0.4805323838887454 2.769738244796342 -0.358932031064913 1915.5531683621457 0.2769688350878632 34.823015841805216 -169.1087767899383 -281.185293100756 -68.54275892947936 -45.03716219474586 -95.86333913642486 -85.92802349304816 -921.1401634677385 -8.2278714492890562005.7226262106904-1.0215656807024331 -0.7942317071965307 -0.9125888234649776 -0.6810045110675549 -0.6623900944385468 -0.49307392916216125-0.6425328542971805 -0.5691675579648764 -0.6823896127757941 -0.7096960065298188 -0.48315487097781684-0.5910370307868622 -0.5261068414991021 -0.8019462498761715 -0.5515495981055787 -0.6984378634940565 -0.6655503451871528 -0.5020415331913689 -0.49278488834045553-0.5896564547767593 -0.4392348709865277 -0.6773450283386849 -0.7887638542147085 -0.6044483414629664 -0.4427761774988994 -0.7121406669478941 -0.6925852300924551 -0.5549518215083713 -0.5017539005960532 -0.5304733326546767 -0.6334555572413609 -0.7113387044035526 -0.7677961407082217 -0.6345240419217852 -0.6088448222879502 -0.39341898201813497 -0.5255909821391301 -0.6390179429628006 -0.7180074907715046 -0.692995783726701 -0.8356807212628271 -0.5491594701710197 -0.47347449226829125 -0.9980502478397645 -0.6112586346175117 -0.6035618388247288 -0.5677431740668928 -0.6022443774755808 -0.6393056005307863 -0.8209632741799707
mean 742.8671023965142 178193.4967320261356.23471301138956 69.07372396037331 10379.125564143755 5.987391284335328 5.564732490625868 1968.4631175571105 1983.961995931503 96.1879980143225 441.14533050081207 58.03422704204475 546.1083389763347 1045.2878965191912 1143.6863209682685 357.5452149598564 5.762195016154026 1506.993730944279 0.42420655445281946 0.05292721724723629 1.5408754135505383 0.38178597659827124 2.8624914023757886 1.0472096707832133 6.536084359375435 0.5990237781067325 1977.5095118008014 1.703704006643457 461.8934379606489 100.41585221799424 50.30035157539565 24.079442707741254 3.419460493734725 15.980950866493378 1.3043267934179072 53.75784261313451 6.229440796143993 2007.790933671356 0.0276796655617547880.0238307399790329 0.03107720278479388 0.049103325217002544 0.023819463749379582 0.0552019825177823350.03256090896753255 0.0292247418408571950.06414828125975652 0.09847085331561976 0.06861955326050574 0.0692613499651419 0.06135377595815377 0.02002841530438539 0.04272661017556368 0.05512837686917094 0.033923346646543784 0.046343989407653226 0.0704503363809788 0.02445379160027231 0.07658074758224959 0.02786995636556699 0.0523997216339360940.0444079412800031450.04146325148969043 0.06068953139276865 0.040959616964477835 0.08439466175677712 0.05648860621234816 0.047067245637813795 0.058033741157084665 0.0294629246999584920.040617376517181 0.06983840086526036 0.0432342093689858650.08139871001404271 0.05486247113658049 0.04573130912214175 0.03722202155929734 0.023084660531218007 0.010959667434934338 0.06386350235096164 0.0445147515046221 0.03705682647079069 0.06325900774497138 0.05682236912612678 0.047215951559678004 0.04899125896730571 0.04607698500206872 0.05938426439868811
maxs 1459.0 538000.0 195.2304900949697 196.23623383072544 115455.00751405138 10.279285417605074 9.633589623641862 2016.2132369699843 2032.8777911622615 643.7481807571172 1845.7389061998463 1142.3014974465357 2057.483251604952 2780.593480930552 2919.936929284525 1935.8348482493143 324.3641075066456 3887.705053900261 2.6349368334143373 0.8840064950103613 3.085815695177142 1.4347696362948572 5.63249036415637 2.3502291043498325 13.011236855120714 3.0471449056652373 2020.4270067393854 3.4084261399986717 963.0931974621808 1036.945997165322 308.838652111128 180.43743252725972 161.00275670949463 270.48145053055674 370.59394232730295 2210.7081595735203 11.4911117600726132010.43802571095831.827389986831542 0.8956294381593868 1.0624617244089132 0.8553977630692765 1.1610017726226358 0.8787377661369224 1.417826575818416 1.135663384990855 1.9302799329022502 1.7676299246544462 1.014115692010713 2.1487722565877037 2.0457512681329226 1.334418739533348 1.7139566752861395 1.800009988427033 1.0755806018346532 0.7421143100324895 0.8739449073349027 1.3147938053771693 2.1212324443548 1.5563246617819737 2.2793922288084043 1.0368478741086207 1.2696350588942815 1.3040036631963632 0.82301736172018 1.5623555517866492 1.3190416739921853 0.8729309232326171 1.5149888908119804 1.5552268973985304 1.148926354241515 1.3868588893134255 1.2908135877346618 0.953447673128826 1.0743944161936685 1.3657899295313012 2.3962697755084097 1.3166562596192233 2.104560706691547 1.6468979529371541 1.3648284051366448 2.2641451129660872 1.2042046757976923 1.3699155702746513 1.129398679923386 0.9642293926762455 2.1125353315349735 1.4721361334129528
sigma 422.0549150232672677402.1917138425 34.78982253319212 17.246252077647878 8526.2415610872 1.242786536218756 1.0084779058583335 28.366122080112195 17.902531569786767 116.97453216763749 397.7300338208776 145.09363630473433 404.0558080878579 379.7568945755542 352.53706378483855 425.17103416329866 33.72023244516205 515.8351670163902 0.4476642617836917 0.18262118068323793 0.4489649024770903 0.41664639757555555 0.6815730589850606 0.1733227327538349 1.5874518258012533 0.43864710705454035 22.968589691392694 0.6482871823033934 179.1646294619745 91.92312548896183 45.306045779347556 40.36761738266639 18.50401552695023 32.8886684790806 22.71130323572022 230.531110101743 1.783514039323893 0.66174431113509360.25840766401558113 0.2594475054212199 0.23762195520210702 0.2345962483964625 0.24660766064179948 0.22562542528795343 0.2888551278464467 0.2681335691122442 0.24688906393841328 0.282615672157851 0.2298163635599381 0.2646893849620366 0.2394811633149869 0.26500344292492495 0.2443049201760853 0.2609012856867686 0.24570275414217235 0.22835308626338083 0.21815353043322303 0.22699213276704822 0.2396151340795468 0.2380693773543547 0.26411383858273285 0.24195466493769066 0.2583925932318072 0.24817334943873998 0.22018657486571702 0.2742532790473742 0.26507004450471355 0.20415673024724587 0.23195767516867835 0.25324998494601064 0.2788489983349481 0.2392517622645943 0.23871331072707117 0.2138373802471235 0.2576306424390267 0.24396849103874077 0.25685609616650096 0.2699273059763164 0.25503373956265823 0.2539971013731447 0.25407577449972035 0.2746859253493981 0.2232714325360845 0.24755189080102696 0.2246954783856906 0.24528345014887423 0.2563783033220896 0.265466556104245
zeros 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
missing0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 4.0 140000.0 58.83595316452947 77.44854475183969 9424.22279755044 5.853625669698889 5.87422894323807 1948.7739204635218 1979.5520255772028 102.84613776358533 549.7761390698008 -124.04154704733345 529.7777359137051 955.5123279361724 1098.9477242666712 562.8261364843067 17.799748030395243 1679.5736087813734 0.5881998940924611 -0.2138345832127784 1.519155365248266 0.41950601499133083 3.0909832785121254 1.1066550318287707 7.133916138273647 0.5854183002905977 1965.1433134913586 1.5382310013228424 437.2506717187868 41.580316152873856 68.95055915009284 82.22788044630845 14.63780062155142 -4.385769444783337 -0.8638844187911359109.33956779248638 3.618084558537603 2008.2601994439772-0.072208793730824 -0.562635451499844 -0.27558231616701845 0.679887728926239 -0.17896103464459398 -0.251742985361347370.5456871099197129 -0.3867866624163767 -0.33932570063620726-0.07884355973524801 -0.092952945260108150.24779783341637707 -0.12764047080953314 0.25074757411367965 -0.118554409260439450.09809582034930431 0.42132664290324234 -0.40197854739592304 0.04904694862667863 0.38166039361784 0.39845427705229447 0.11065733984333741 0.0159605519528958870.4169543728127164 0.17256469136757802 -0.2833727405411416 0.3690270989032044 0.029493523749564432 0.0551995917401677 0.25364517464624337 0.21076635615586223 0.06506649906863164 0.0928785356874427 0.5510179515793902 0.3682552939071741 0.34657399588705784 -0.2045949234751667 -0.263943531005777 -0.05783449854472097 0.16093794799016056 -0.13253629206176068 0.4816722471471893 -0.33048983186767505 0.15839001255783988 0.0008278661940690223-0.3344385155618321 0.14461364840049537 0.05815063683052621 -0.14887461221553563 0.14882203733226765
1 8.0 200000.0 81.60674047697627 80.43589557454365 19256.102716644767 7.098544381145544 6.40579172284646 1959.001904238791 1994.5776414032327 86.42485428499573 862.2494573837907 59.24225530038846 210.00650521205495 1131.4982178962339 1270.28257044132 904.9550892120133 32.05525328271344 2207.292912936047 0.9783816609331357 -0.10173443768923865 1.8807565070164334 0.7406609972252423 3.3299479851814704 1.0978496432145581 8.378657668752771 1.1283122841001663 1973.1797525424445 1.8956996374425161 525.9993391907755 120.13388468623879 124.17567053221532 65.35963556349496 -7.239189962517954 27.635274438679744 -20.31520615894785 270.81077886259084 6.040603964774953 2008.48640590282410.0283761832627967940.027975219249356604-0.06670229041181067 0.18744126205998551 -0.1561195443187228 0.0870506994968846 -0.18336073035190475 -0.49044242581484904-0.029470462473432720.045214096672303646 -0.05038351052641561-0.073723877486666620.26823207575620156 -0.2777240216491598 -0.2552811191050035 -0.25736157027658757-0.00934483814131197 -0.03825412690279982 0.2825008349162027 -0.1461437726348102 0.17959372447899355 -0.2472895527273065 -0.3379401881002531 0.06585833061444782 0.1409189368549507 0.44359266884576387 0.10762345361802303 0.17771023284980628 -0.068922623763409840.23616770170620036 0.11735184333062841 0.12382340796055329 0.5306471870620474 -0.2632323571106738 0.0131947346615388720.35414416430696394 -0.2771515872108005 0.036838065456856736 -0.09390858215939583 -0.1025157066620688 -0.049375097587628244-0.1043410938128237 -0.13058641082306352 -0.09133807359602943 0.2966885767985426 0.19593794359964462 -0.30178913436910054 -0.034205544001314120.03176089203079993 1.4721361334129528
2 10.0 118000.0 153.880829175926 39.61522634274515 -1804.38218813612734.338474865222382 5.172068692991408 1933.2193467922064 1954.3408470430224 138.44494642070373 1224.7249701599533 -84.28434854943471 -138.15628008289843 1002.2843415276196 1184.596697738845 67.45671743547558 -6.891338434020479 1245.1620767403003 1.1484292886242524 0.09394283970698976 1.2002809705486532 -0.096286877192872042.6376703657241136 1.603378692231298 6.156651709984341 0.5130661103847567 1936.4198815662014 0.8961890805353976 246.31849636395117 60.54912824632134 -12.186411757942302 78.53761888105002 -4.550911289414 -3.0413342851173564 -3.3862275387544116442.73498337604303 4.548814980588895 2008.01838530261260.10853757873073537 0.09459812024230375 0.21199663588579296 -0.36079995423588385 -0.27675860639327804 0.33298993816909994 0.30561786838181443 0.05431126382373309 0.07840671847890865 -0.01316993286377198 -0.1120112328545911 -0.19897412209070925-0.0025615798803463090.03311222128653946 0.30209991397668995 0.3946853713447443 -0.3546819180272932 -0.22432725466218204 0.11298209926047924 0.03964549831149283 0.13778095716832925 -0.27536032895392915-0.172553384154826380.0561292309642403560.41072584861192 -0.0176327897500035380.19222391353824317 -0.24617410478813964 0.0040529341284723890.017700019210206475 -0.11650491937437517 -0.133092388976174230.15199710131210975 0.46333111451583187 0.42854569520455993 0.43699415969575656 -0.04584734774609498 -0.13339118265739122 -0.0802311399592535 -0.5164456762549631 -0.8356807212628271 -0.11312520315327376 0.00085586310257703230.13381904859844426 0.03312365151030368 0.45637441541531365 0.004415991607803129 0.1653545251783004 0.28525928949644525 0.3517617349973451
3 16.0 132000.0 42.882749610234114 56.97667490962424 481.19156816322356 6.280568808417981 7.342508523551833 1962.4992868314719 2004.585775232641 19.634667423916028 99.32339681788113 -7.691986715033266 798.949315170218 890.5807252730657 932.0908849893302 78.19316587867468 9.087258453291835 1019.3713093212967 -0.03598876884925084 0.11407203423710596 1.3645114925945314 -0.032434474073607172.0327094479585552 0.8564251706970407 4.819285751488119 0.13400932873359833 1981.7357001259913 1.5686691698002555 428.89142130245625 12.813588772090498 89.56984060305888 33.673504974212136 4.88327302181103 25.202680315501404 -10.51347819480804 -122.723915653647986.645868877344476 2008.305450448558 0.09466263240133205 -0.23499353040609897-0.2552189655475593 0.38724627568442627 0.13410033591906692 0.12317121602885855 0.08193866296929854 -0.1424713830859946 0.7911085027180665 -0.014712819466607486-0.09100606866572793-0.19992913518573302-0.0419721397679387 0.23102355213184778 0.26415252880614387 -0.3196620378038048 -0.050771556029187766-0.10203837288552262 -0.052248066724165250.2596095329786757 0.3366702166243533 0.15909756626366026 -0.060654121894695810.3068186813096537 0.9950791876826282 0.09642623391451553 0.23922116340733085 0.05786004892625502 -0.17951031170342951-0.19190431508413522 0.1176844289904949 -0.1273342647280845 -0.0839252723804845 -0.101747041159919550.13149965745163886 -0.0830985699336651 -0.15350983293669979 0.2660094357372812 0.05794123516438466 -0.21620448078737403 -0.22928387902980676 -0.00501305921206414950.0630192907706205 0.0013474903556696752-0.01962276996171407 -0.05835476120639992-0.0052683124532963840.14392034061490966 0.24350455301364352 -0.013245633225553737
4 17.0 149000.0 34.981188106678346 76.79474769336645 12237.980741187097 5.518020747565561 6.41308053980832 1959.9563415884852 1986.3466424126332 87.07887597069488 788.015276539221 48.02970320009712 266.2958123869666 1102.3407921262844 1133.6444408222849 -13.137961659370262-23.74308886780067 1096.763390295114 0.8320118181095185 0.014733429223106186 1.1330462884700818 0.08476201960531421 2.1743389801827027 1.0011435644484346 5.117412181040438 0.3771374130314732 1970.1341075542423 1.6099042694901322 464.2582259933654 47.384219879113076 47.68907570359576 53.05295229488838 20.425902709666254 -2.8705371848008436 -1.438406058237557373.32513257091205 3.85787983882812662008.6246197970456-0.17714957619402047-0.28675779384239497-0.14094186372031509 0.7325535961399497 -0.6623900944385468 0.06333246017217767 -0.1368303631973826 -0.0767566889481529 0.166256844574693 0.17688246657392057 0.4797066369545912 -0.202002810841975 -0.19357048366711574 -0.2053511629958551 0.20796232172797374 0.0159015973699442970.16223428131589862 0.024365025280462037 0.2100817152277982 0.25321482343981144 0.31117249515242373 0.12957544711024305 0.20493698474454608 0.24146742436149374 0.07069343439120084 0.2301847080216994 0.17239036298044846 0.12668668000543204 -0.05326224321422438-0.13174892130959606 -0.34592930448960896 -0.139743627042346520.06477804190190571 -0.15600657229422574-0.071289886576642830.051048566256641524 -0.050645930803436726-0.025866148061895525-0.09168658926198943 -0.048732034947210304-0.3216386283196057 -0.2735722037698546 0.05067985189629986 0.5513540919506563 0.5442635219252195 -0.11786772552840599-0.09543944222993432 0.28097517264050154 -0.0309160287253764270.3070249970952896
5 19.0 159000.0 39.792685166956026 72.1195205125192 15266.396814931397 6.0990118213776885 5.0418912350402465 1994.6089946023212 1992.940934908034 96.4622247499795 580.5130563112862 59.140341848790314 405.5504876366738 1045.2038857967502 1023.4809651904549 238.359004597099 -25.18870116394988 1236.6512686236042 0.7198364418333063 -0.07265748509290873 1.4354737080560882 0.5437440486305893 2.2331391620917094 0.8999566297984443 5.420634594958322 0.44651187275664583 1997.9147822129892 1.9559729481216337 523.6507374339386 91.2633454871241 55.47528758425804 3.392286019328843 5.181560742179622 -12.573421418272828 -6.78626462669844 -20.2424114196624465.443824685152266 2008.010980310712 0.28021925380606844 0.2210175311104082 -0.1177359470740987 0.19209867990135404 -0.0031577656776739095-0.07023198020904223-0.05803755713580971 0.2071981503279089 0.12922494280667293 0.13992222524673584 -0.1264286621718065 -0.0849269233115856 0.2162676151885307 -0.018509658495204005-0.1656448617362767 0.1304324937675821 0.02716779096676522 -0.009695649093686068-0.102617063579271510.1693072616529992 0.2124489340273038 0.06225520413908156 -0.2894763265234486 0.05707197199413177 -0.020984061544973003-0.17800758682672696 0.3289242145094586 0.25218354357261 0.20766988911237913 -0.12782546541510545 -0.17205970196562156 0.02481087019472751 0.23970313046152686 0.21375179096250704 0.08079544516791945 -0.009272176129852592 0.18685215899599728 0.04589691493738059 -0.09240912601624718 -0.12509272234854774 0.20072423656362753 0.24121942141205086 0.05485554978611201 0.1337500382273989 -0.22509884621542842 0.02248064444774978 0.09942426542234237 0.02283707138918076 0.3868959187548341 0.1261359167481675
6 22.0 139400.0 40.14209663055422 68.74939730775488 6498.286448456765 4.778186040857321 6.606769017852955 1914.9421613201466 1965.8194647404537 -26.604454273940092 141.54536255510675 -20.457497008631492 730.8027794577963 851.8906450042714 1065.6819078249578 171.11120205420153 32.29329685413196 1269.0864067332914 0.0985978188376494 -0.020168976017825198 1.145604649383544 -0.191962299617175422.9895014389424137 1.102989751845602 6.141821201763995 0.3273745041607664 1937.9348180373017 0.7902326550385282 241.24523107837982 -3.9047506075352345 42.46121539804019 94.03206415554948 5.079771989728015 23.026529564745452 -2.391859842024218553.55080790633697 5.591136096263953 2008.135361884375 -0.3391482545787909 0.07379231293215889 -0.1176888371771539 0.07170566422025042 -0.006419963853781415 -0.11191547820466849-0.05183965416521908 0.07456967011113935 1.9302799329022502 -0.0088050756560663430.02113546945694907 -0.15991823613622397-0.0225917179244153230.1434532258685922 -0.076890217768965980.010319971199281646-0.13193587043960978 -0.13617301179460983 0.026648990718539656-0.0292978907582502860.16188594065353215 0.4838361086760216 -0.122707958820798840.1555020751775746 0.0619566273754845 0.11735224567181822 -0.0044159386777603265-0.1681429144033863 0.1965736939181418 0.11447792195641579 0.11807070623607956 -0.2123605902537163 -0.07109644843553585-0.1490971912408154 0.24642077863017142 -0.0005462239210928539-0.06405359735672711 -0.23286768398906388 -0.0076163073994859650.04142425503899989 0.1549724430027694 -0.11854977704093402 0.0008094457317010887-0.00676560480621438 0.012055868018597832 -0.06247817032251411-0.04906617988898167 0.0287478535171806420.38811734464199454 -0.15638539138615523
7 30.0 68500.0 34.11947016906402 57.50962210502306 5045.9974732639275 3.7047010765394117 6.010652607184183 1927.2155274448878 1961.291884232367 -60.84964656254026 85.39129780868114 4.167131658440972 442.9989208050197 532.5573502721417 666.8529301950105 -70.00467994047398 0.18767742787169617 597.0359276824083 0.13187824020810335 -0.002249930948111413 0.7022321046925899 -0.136826480972661982.1923239960405394 0.9924714496669226 4.045695956404501 -0.13120353022139164 1945.1306066481043 0.5345007573165135 154.18049296700082 -42.109144892550106 2.2812459911964353 62.603204770353145 8.41532855198048 -0.4523392330328573 -1.5079412684608668-61.5971615151803755.029644926621487 2008.0362527088496-0.33250356810948484-0.12354519905947561-0.0265641647881222670.3008752248351566 -0.03336715822098989 0.45800944129539733 -0.20466251158430535 -0.18387552214830233-0.235106612376287130.074854122196136 0.1566166747607768 0.0300353121672147330.017452298814626323 0.20388050416545053 0.04410771439962161 -0.29459291118134767-0.15671005324706289 -0.21412038941572806 -0.227113824832599811.3147938053771693 -0.24041096462795744 -0.43843642995175053-0.221697913492329340.2669019695180008 0.19865999121846026 -0.5392124548465401 0.205012648737194 0.00341827995170341850.1044331766279127 0.05533228089036908 -0.058532163494025034-0.067009716811010810.08022792177422147 0.2401519563649729 0.35253871707451745 -0.00192147612897013760.40405565056049175 0.04236962561397483 0.16837186693922332 -0.001708390858247591-0.32008988290738005 0.19549603360311954 0.02194347927161045 0.013412491245609122 -0.0266023618771987350.20350554297470883 0.3336673702723165 0.06480053571951262 0.6778467387736514 -0.1548000814517913
8 32.0 149350.0 22.493164615846958 70.86748192631566 9594.275364286834 5.661070749393572 5.820430312541511 1963.956586554541 1987.4136318094966 -5.063919480376583 -91.09934491376299 54.393767706259666 990.9449345818368 954.2393573743335 1042.2227658009433 194.9380659686527 -1.410498094810614 1235.7503336747855 -0.041207292137783014 -0.021579217936091098 1.4555102909804025 0.1569704373275014 2.7270420636965413 0.9525511941127173 5.867125733142922 0.18196404426338708 1977.3613556819753 1.454878570748503 394.0566449122757 56.788812875416774 44.79503377482079 43.452126780121446 3.917055082077848 -3.140580948977833 2.131874385214738 -4.270998769847061 6.196212820307827 2008.08624720557260.04765106788988415 -0.108870745436614820.01601586934163708 -0.0023654757872265870.06100630986885667 0.07713774102397133 -0.015749162313290682-0.1989751049540428 0.15639407656885454 -0.15327517978856503 -0.06965787463840782-0.071743937539238160.17128945425419773 -0.06450761144138756 0.06972769762693963 -0.203101198568589 0.06964509216543179 0.11518301564141617 0.3793181843287821 0.42132435095471676 -0.0523042556499486240.1984237993873052 0.2833741260620728 1.0368478741086207 -0.13155928840424877 -0.2501391874901927 0.03721312683073032 -0.1119413508015073 0.046428161363428276-0.020738135314220457-0.1925122746191746 -0.118636323434469680.0518705024077462660.2562375569270313 -0.142304440158535020.009828039628163025 0.2253696513427264 -0.0643846642699402 0.1180897129751635 -0.0256425349609056730.12393229827835713 0.025613626088259647 0.11529091853597204 0.11055348231408677 0.36391881158836475 0.02108979689904335 0.23833891029638082 0.029498874295526122-0.16759862159293956 0.01168247302695463
9 37.0 145000.0 4.0695346853805745 81.53108698867572 15233.3718597589 6.041791351660582 5.02493153496909 1992.3849120018465 1994.1489830341106 47.10150177726396 -4.457076593059583 147.60293209773442 957.558610423531 1100.7044659282058 1142.5157436716972 251.07883570694062 -20.7160494987896 1372.8785298798484 0.1559905571529454 -0.03536317016469059 1.5953020178567945 0.5046762966526328 2.820766257583286 0.8859431908987135 6.186035759802741 0.29936835972683556 1997.763838826006 1.9350341283140213 516.4074145731311 149.83059858740788 25.436858107045495 12.65931087923287 10.929351589565885 -21.696258573892784 22.597286997246208 -26.11377781344696 5.361208548425763 2008.04432072881060.28714825840324043 0.31882535504624077 0.07696963218152549 -0.07587300111357007 0.25270386640098347 0.08913805462148532 0.45003774525867624 0.13793800219931418 0.2345003542162439 0.09434084803666841 0.009571031237226258-0.22002734992713846-0.026316873969970504-0.16980227473925183 0.15772524466873125 0.20094089740691273 0.3045081735587638 -0.16084949795520173 0.09584992690124922 0.197926299814279 -0.18418763354549858 0.12758998689896345 0.3420727508917838 0.12756136089727102 0.3964823884015639 -0.05672348044145537 0.15796047808071526 0.006041506227757389 0.016892725236163093-0.21716443332094204 0.15319950189198164 0.4952337476836298 0.19173204215952563 -0.1833429512715961 -0.18510286118982575-0.19939342051575437 0.02235804048427566 0.31430840233390334 0.24726208173194458 0.07006300372227185 0.26296483826046835 0.04721971029832775 0.17259531847624882 0.08158782794818668 0.035124729400092695 0.004087102053020082-0.1649129558729994 0.29654696949187065 -0.0525894702181732150.3785346202262149
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "--------------------------------------------------------------------------------\n", "Imputed and encoded numeric test data:\n", "Rows:1459\n", "Cols:88\n", "\n", "\n" ] }, { "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", "
Id SalePrice reconstr_MSSubClass reconstr_LotFrontage reconstr_LotArea reconstr_OverallQual reconstr_OverallCond reconstr_YearBuilt reconstr_YearRemodAdd reconstr_MasVnrArea reconstr_BsmtFinSF1 reconstr_BsmtFinSF2 reconstr_BsmtUnfSF reconstr_TotalBsmtSF reconstr_1stFlrSF reconstr_2ndFlrSF reconstr_LowQualFinSF reconstr_GrLivArea reconstr_BsmtFullBath reconstr_BsmtHalfBath reconstr_FullBath reconstr_HalfBath reconstr_BedroomAbvGr reconstr_KitchenAbvGr reconstr_TotRmsAbvGrd reconstr_Fireplaces reconstr_GarageYrBlt reconstr_GarageCars reconstr_GarageArea reconstr_WoodDeckSF reconstr_OpenPorchSF reconstr_EnclosedPorch reconstr_3SsnPorch reconstr_ScreenPorch reconstr_PoolArea reconstr_MiscVal reconstr_MoSold reconstr_YrSold Arch1 Arch2 Arch3 Arch4 Arch5 Arch6 Arch7 Arch8 Arch9 Arch10 Arch11 Arch12 Arch13 Arch14 Arch15 Arch16 Arch17 Arch18 Arch19 Arch20 Arch21 Arch22 Arch23 Arch24 Arch25 Arch26 Arch27 Arch28 Arch29 Arch30 Arch31 Arch32 Arch33 Arch34 Arch35 Arch36 Arch37 Arch38 Arch39 Arch40 Arch41 Arch42 Arch43 Arch44 Arch45 Arch46 Arch47 Arch48 Arch49 Arch50
type int real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real real
mins 1461.0 0.0001814982952794697-92.75778470357287 10.930200897692558 -1331.74374403634282.7557680251062204 1.868240863422876 1864.1153532298931 1932.0938228826237 -184.20590467074112 -552.6524354753168 -519.1425733897424 -640.9065878879742 274.36792343653315 354.2023858894753 -253.0861487190012 -64.50845998993184 421.25616104577375 -0.5911469065786003 -0.6181047947362193 0.517928673078881 -1.34062723613920291.243113879390776 0.4605552504885261 3.2790239835460437 -0.4818708110749761 1895.9367652220767 -1.17636214665974 -204.85938854263344 -120.25666603864205 -91.53961598374241 -79.84534653127818 -33.09633644933002 -275.2192382287285 -69.77069778988368 -1213.8628013317505-3.98206542814584452003.6140682797518-0.4166041778134264 -0.5226229663876257 -0.5644178793992695 -0.47746362379677 -0.6200476850509885 -0.542828977428711 -0.46725843619426594 -0.5610938046432569 -0.49975782202100105 -0.4685342114878999 -0.5324549963174952 -0.5249635202184685 -0.416823613619831 -0.4768342591557421-0.5996960864774387 -0.4843235350358953 -0.3892974360979692 -0.6409060729692047 -0.3924330777074916 -0.6767115193350141 -0.6528612873280284 -0.6303654821458606 -0.51494528542572 -0.5006854901947662 -0.6180047495511283 -0.6611939646887504 -0.8045495784620555 -0.6492570321710167 -0.6338249495548767 -0.4793499957491692 -0.6615361022366946 -0.5944230484391473 -0.5671665579344716 -0.5373953230584934 -0.5247918641863867 -0.4924268389516594 -0.6156364210474966 -0.8511422382401028 -0.4917246780542121 -0.6385807551642991 -0.4416754934851361 -0.6267183132815487 -0.7069812994045146 -0.6044150159644555 -0.4803790575557538 -0.4218341603345212 -0.6539968807557834 -0.5007766031608373 -0.5234044238319067 -0.404778407713814
mean 2190.0 0.5001421069577299 56.950131445989044 68.87221929280068 9882.396951926889 6.065463343691031 5.558182218965061 1970.8923539282152 1983.3897953145033 100.63920599500369 439.8380462586054 52.77286746692447 553.1506803838961 1045.761594109426 1157.962767683342 325.87223687256983 3.603035344070155 1487.4380398999824 0.43537130247271927 0.0638972807556665 1.5671563237693258 0.376445945281300652.8600526473898964 1.043289750989343 6.393923735991169 0.583506381314772 1977.282970054829 1.7615189607156536 471.8775622777642 92.63687391732235 48.32429411962366 24.86457071839096 1.7805617652797048 17.385994544254288 1.7365025224936028 59.624624652248606 6.100535385316554 2007.77164678376630.022607935936278568 0.03413814300362256 0.0434464709643384 0.05531265535643861 0.05047425146711565 0.02233712279134068 0.05383059103008251 0.03146745167148696 0.03957152828980236 0.029958084380262137 0.03403598592652508 0.05925399126144059 0.0167301055456061870.045402830268011890.05279487438403366 0.02989958487547372 0.0258508571693149350.05140571378714471 0.01783234634035372 0.015110396850110555 0.05970889929160768 0.020729629044346838 0.03269516626607147 0.041498554065618136 0.09198092295832194 0.04869261813237057 0.07740328212525613 0.0397248869819044060.08588122239597422 0.04425501469237639 0.038036274375813764 0.03863709879040536 0.01614030551934629 0.048122834917806855 0.034688574669541575 0.0251658700314421270.07601088352391525 0.02948847768195268 0.008315062356458727 0.062209439366324275 0.01913378301550785 0.06843132676840698 0.06421950312212589 0.050146218362667555 0.04399473954995741 0.0181876862061324150.03652272186765314 0.035206270085996 0.023438976073850086 0.04717215069563228
maxs 2919.0 0.999731583390498 170.84994166123374 195.08742855582918 41664.010201714045 12.174603603637799 10.586591958837227 2052.130395446544 2033.531231272853 1416.4105490796994 4679.389940641277 1414.5226418291356 2090.9430162050276 5432.196477788613 5181.333679308999 1620.443413688817 203.5012950044721 4940.999515206571 2.0972362534798017 2.8653708491375545 3.1577897940089668 1.547187756361827 5.645563475989511 1.9572631982899682 14.141563373676409 3.002040114486395 2055.0288457543493 3.975862187458315 1072.4578986109896 991.2036487585689 836.7413716182423 375.8118209983831 88.60711918212374 317.33857089229656 425.68424646129336 12209.433373453283 12.105086595242792 2010.66026039535560.8356623762136406 0.9359755242734854 1.2471045214025671 1.0241843807939366 0.9618465288111633 0.929495149704072 1.307547368906171 0.9971181458752703 0.7425950582060233 0.9785272881483384 0.6663118995021827 1.0750871902859167 0.5915839040143218 0.8161136249278443 1.210539794028039 0.6928021601320009 0.7202429980326692 1.042918976575169 0.8968775025516169 0.9918498636297365 1.8857452806172608 1.170041245981357 0.8262716391789693 0.756039207293323 1.3420008738920628 1.3505227615008448 1.9608518250119993 0.7133125322335855 1.7492838827587371 1.1275767238325614 1.3068001184215614 0.8983371983783437 0.8140041685306412 1.2991542331846508 0.920760812121209 0.7907216559487 1.9291189598091865 1.1672842047862877 0.7364392442464415 2.1456631552437386 0.7263242234579617 2.1008857865451334 1.846968424644976 1.6432374189021715 1.2676946757707237 0.6566625229229253 0.9645973629665633 0.7515815333673989 0.7485512662547059 1.1949107388986602
sigma 421.321334217324760.2879740065007394 34.45038282996617 19.260872640359164 4119.034550504872 1.2415316831909173 0.8737241144050247 27.633867963058194 17.098286294179516 113.51453911584991 410.63527808563197 99.75865542623936 402.17456463995217 403.03212345795515 369.7121646174074 398.72498556101317 18.844309352925364 462.44795014447277 0.4580694042335748 0.20501162248030702 0.4462624636246074 0.4071998656887567 0.6561113135315982 0.17034939508177221 1.3588326537425863 0.45754787262266927 24.919725186936475 0.6593987242531609 179.22227812618402 84.63469048913626 42.81809672525315 40.02831726335123 10.351471477250074 43.83048269063403 21.91984494096517 505.4757617748645 2.1199444311868136 0.91007700331348710.17856353022304153 0.1841232936329908 0.18960231016359225 0.21453333899697813 0.19275378100787138 0.18286065192811624 0.20100800528817994 0.19141015257146646 0.19313626558048352 0.17041008500959468 0.1841892844111374 0.2058208797787568 0.14464921346549248 0.186924684516495520.1947662106735751 0.1612168550331605 0.16585134364907114 0.23028633705786947 0.1779908013209355 0.17937786909719775 0.2026479057769704 0.20403859410914948 0.1964793999209421 0.1726622021168516 0.23787204515884783 0.1902864928559706 0.19031110274311 0.19542603374622253 0.20187504943562098 0.19742484283976988 0.18388787602267173 0.2131636737001683 0.1824477066282195 0.18811381252532927 0.18417856140606242 0.18484127174746434 0.21967848067216114 0.202623549182537 0.183660185270941 0.19512866580634394 0.1487838111360455 0.20062072059565703 0.2052547295086559 0.21568250159938493 0.19228406621440194 0.1700751893658675 0.19581990634519728 0.20409167621088548 0.16113688860591407 0.17712677271483862
zeros 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
missing0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1461.0 0.1678549647030142 18.57257714194302 76.68851655393192 10697.391352768465 5.158303764734192 5.892112642945593 1952.8955977747164 1968.5019158353741 55.56363604334603 403.5836643408893 118.49459414797288 358.04610668417865 880.1243651730398 1031.9359149890147 -54.35077690348447 -4.587610588511543 972.9975274970785 0.44708390333961584 0.07732701406789132 0.9724885934268354 0.068806769830376262.2215924268375336 0.893402219981705 4.7711376024909 0.6043763901504196 1961.3364984556024 1.464081531111276 415.59059836978395 18.647012283689108 6.286427671739837 32.48069256166909 -3.2186239942516157 70.59875577812305 -4.294427495249186 -432.624658430669744.586553124020128 2008.30953397271670.12572491066612002 -0.16403207977474424-0.09217129516091649-0.15852447780631976 0.08989943540640181 -0.09745557648488806 0.3322611435896847 0.07786406483327084 -0.026140493224768392-0.09663584761463381 0.22300332767147682 -0.27948908079043905 0.2827854631202627 0.070809371698919090.1936789825515415 0.09283492085972385 -0.162195424054422050.43998159827763894 0.16695288970317965 -0.06718555257873451 0.49422165515833866 0.0586973237415085 0.037307504092170436-0.042655339181627325-0.3959608646283654 0.07239317969608319 0.03938577905298023 -0.082707379913641990.24836432568359607 -0.02917988070909352-0.07037580024390086 -0.174617751358186880.37868697449243577 -0.08785232627640144 -0.07018906153420633 -0.2803481659278279 0.03984853785686057 0.3017427661551518 -0.05232884348903021 0.2793374155144574 0.15409293937398688 0.18333250191915756 -0.131860836455951950.1935952072893946 0.05353422084528769 0.3087574940890635 0.05300398225839226 -0.10155474855900079 -0.06808273254294056 -0.14317824650149885
1 1462.0 0.1560907620781774 40.434787547175304 64.52315308816578 17868.058182309534 5.474842933531808 5.98636958059893 1941.147949052932 1979.1861459459396 372.37240032806835 1739.092640745333 -396.63710450604907 456.554567167275 1799.010103406563 1801.6602124779438 189.73984870409325 -47.73872909344296 1943.6613320883466 0.3839044667427364 0.4647287420673726 0.5890644914425749 0.847418337803274 2.3688756027288944 0.6215471921198088 7.009330884576529 -0.08320058944064113 1932.4125447157899 -1.17636214665974 -204.85938854263344 243.04639430090742 453.31563380461927 32.0431207001762 10.289060618296737 -139.1440495679385 30.38345883123487 6944.506688152086 6.199136707051479 2005.701795964905 0.1392590535613187 -0.316844706375547740.0772322223897177 0.017103525982339107 0.3349978425049885 -0.26734544885296624 -0.07623435096043651 0.07416182061160582 -0.05200781076734202 -0.16447998915758663 -0.0053056993929304530.00731608770622198340.1366904002603989 0.10027812494019267-0.035464884501701134-0.07663120556883714 0.35582419685313926 -0.13571444969816188 0.11417143340034325 -0.11462656427651602 0.06635539025957791 0.008730875026796505 0.35620586644992064 0.2236801388398335 0.05492429788423641 -0.04084119263387432 0.1890445432636007 -0.303811492788822250.0517494303881195 0.09224901767914148 -0.0624484439771646960.18277358416598585 0.030053702430094836 0.057871225944069064 0.1363880157803551 -0.098261860371149730.01726421098837526 0.06833158433005215 0.3582050798022135 0.01755288968502935 0.22703926272665637 0.06361521996734455 0.1815407550981625 -0.09495362035861124 -0.2764064147715777 0.12041573800968418 -0.046554036051332 -0.0079555802811732530.002614249047560161 0.18335686399988516
2 1463.0 0.15284795437147125 66.22798209823094 71.81824446354523 10737.705794677706 6.527499791935462 5.193175905321766 1986.6454949476192 1993.7223814273582 101.80943172680018 467.7954380236139 68.33760306486622 277.45101388001154 813.5840549684921 952.1088634712486 711.9772825905575 -10.53772989453881 1653.548416167248 0.5795350031153869 -0.05281397913155572 1.676528885067104 0.9065163403420999 2.8108731287154685 0.9552241332964966 6.5259944860586785 0.7653480942718638 1991.337128112699 2.0831455091832893 541.7143170337029 118.75595724944576 74.92557848990846 34.759519853668266 -2.4311281821429964 -3.2687276190849452 16.139220687774895 -106.495317386140192.6430701751003487 2008.95986894842960.00039805371648990080.0063952217182538370.17116882485599424 0.11232665638152611 0.0329052776540288 -0.05069358171609422 -0.0015967813196711184-0.019533691945049534-0.06599058932453826 -0.0296717259239038350.14828148434898802 0.24989360901878002 -0.114274738195492970.226428305846476020.1934604105677125 -0.06962079038747913 -0.3076745409381856 0.12712382504245234 -0.1455118351253209 0.11073678141547869 0.18062750297917 0.03604631828260077 0.29482224264016327 0.00739058139758107850.0022930736075367460.13747734715527593 0.0040348619715276870.5744167075968954 0.1592409561030462 -0.06061720097872752-0.0143797190301281980.01953521393836187 0.23869806918478562 -0.042791483597410584-0.036974926605236165 -0.163429584034734 0.13033146730011205 0.09086053405555763 -0.1617032444251355 0.2029024681232348 -0.06790608487012217 -0.14291009793494835-0.050280760311524570.2641716629381634 -0.07292115108989294-0.166019742548819130.39650258798439014 -0.2540368172327578 -0.028243509421691345-0.08677369803320949
3 1464.0 0.6563096508561072 69.45179207310326 65.99792674079391 9707.639036025053 6.896464497510072 5.937790181153537 1984.2325005685311 2000.2643020472585 100.18563949419615 418.01207017772657 64.66913524960391 379.2908114488963 861.9720168762274 967.3113890273881 779.1791163447249 5.26056112014758 1751.7510664922347 0.48005259397180816 0.004061080097503854 1.7766468922683503 0.8722645815562389 2.9469352809164335 0.9343018431535998 6.797118524548788 0.8477673683418856 1993.2628649184373 2.1984908026136942 569.3720149627173 172.05448797723312 65.3343504908494 35.63764259070224 6.638271586648161 -7.88454352202189 11.641251220585822 -84.40935382137101 4.613282230662123 2008.378469897979 -0.07602985228363052 -0.19187506375720045-0.2135019496064308 0.30099140543914504 0.24047960264356183 -0.06548924515452907 -0.13227234710602123 0.016170086393161302 0.06640843947108525 0.155536503102761 0.24963544788826159 0.010388464254492719 0.09510993734704189 0.3110022405806667 -0.1219676084621342 -0.2202578791208502 0.0119943955788515740.01763995328097867 -0.023095613544287477-0.1185821317844017 0.31524792696289305 0.29813280679764403 0.0428846848876473 0.08664738172857095 0.14223003336173903 0.4226622032763399 0.12611800927751673 0.32177098930533493 0.3324894101476253 -0.04546553055265691-0.0058890637148686850.32802308346058895 0.0023773273017294663-0.0875652785268291 -0.007418951743919825 0.21923178139696942 0.07105360837985657 -0.05123079401980432-0.20256359058068274 0.2832096767373099 -0.07153655822550817 0.12090108310724 0.0200351052793052780.24678268225390024 -0.05633417695516441-0.225819197768918070.2678121585111856 0.01428636677461883 0.038130333263728805 0.11100077442127271
4 1465.0 0.9853829106361928 82.12449027526193 43.07978443190717 3074.8540500248973 7.237510449082865 5.004674513020143 1994.2280477125007 1994.5538827187574 170.7190238893554 350.88854859191173 -54.61594429052322 1040.7899050158755 1337.0625093172607 1227.323276287253 53.55986936508509 -2.0102969065187826 1278.8728487460135 0.14808077751153936 0.1883683679632598 1.779623784779809 0.135176376287607042.209611173011699 1.0011193595005359 5.3724747532906925 0.5112983091074554 1995.143136308221 1.764436862561611 469.0693129731445 -37.32583950947149 47.616942356131446 -14.927722977870783 -10.599106869826997 57.66843345992207 -15.645098222541732-321.8292683551641 1.1739587921954895 2010.0130298501845-0.09789348320364023 0.05306430775110496 0.24893051148774212 -0.1516292190072639 -0.11859143103565964 -0.00305673075423509770.22927707591130883 -0.2830698765514177 0.07387733439990378 -0.0850343920426495 -0.16242285632511555 0.5612661381253755 0.02522744199458071 0.3585821468558244 -0.14285299405971494 -0.0503999403052744350.21924269976236832 -0.014487444928230382-0.3192649710015713 -0.09578272181425054 0.13142047106574137 0.03797399745987419 0.31314371455692447 0.1824095784854637 0.276745878671552 -0.009282613287232825-0.044023919988147260.02091927276007799 -0.0111522526235012830.3879623814834786 0.11784550088232966 0.019752182344459638-0.12881947102292066 -0.1792704415785233 -0.005933851381592316 0.0064557874300531380.4273921489391249 -0.16076319431891126-0.14600523893551012 0.10962268476684407 -0.0553225203286200760.21711272806466012 0.15618158790820866 -0.2681548118905264 0.113843037507996 0.21993969854039716 -0.10924598478984662 0.03326740534996491 -0.15597918501662436 -0.06281563851315312
5 1466.0 0.6808531118361746 67.26773347425801 67.1963794733468 9656.341861966546 6.655137548580502 5.275152009689533 1984.0817627380982 1996.9535035324482 74.89732141098453 63.10641445135377 -5.080859028284408 690.8140085887301 748.8395640117994 867.0817213191616 873.9349927145013 -3.5965309248639987 1737.4201831088017 0.06340289808230004 -0.043485477290930344 1.8314928841613796 0.9750497776060415 3.15243278099475 0.9580151485770342 6.957922660038789 0.598083689326561 1991.6494287874186 2.0409746947955907 522.1168477676248 79.45618956698561 79.3556532657982 34.854215664886055 -5.151960967146813 -7.012857211593499 9.605409658614803 -144.707377109052232.8159616758207155 2008.86129502530460.005795385265305378 0.0206777953176552170.14102764570385368 -0.0292032874082970230.25646297807172236 -0.039117880706662486 0.08980387128354789 0.08334155695682355 -0.27931469409910553 0.05082341104196343 -0.19544339243909753 0.37855464031406105 0.07486798095033227 0.3236890988959587 0.16319377633063067 -0.18710729446277463 -0.1809057316125836 -0.08375970206637982 0.10607848570352506 0.11705220634318364 -0.0212215768024806850.0652481559549139 0.40638479516141757 -0.04977987381924571 0.0161404785442153840.23512255510835722 -0.029314980851070980.6029415754882147 0.0859904942262641 -0.133254156515664770.061950114839498374 -0.13577531755556813-0.12968853298739197 0.04293134311361364 0.03879914125764924 -0.165807158996426450.2163917812268065 -0.089293023175569380.15768719648908422 -0.1867153225165771 -0.11704816413111017 0.19797461289821822 0.06667019694023105 0.07879772454300342 0.03757192144830897 -0.148861993308445160.12649485278535597 -0.0516574274969308 0.013067316795543356 0.0826385387318522
6 1467.0 0.7107044336240248 62.615056437442 58.21828893832685 8207.332110599136 6.84065943141426 6.357979630222782 1981.6061709058097 1999.9566407877603 99.67829955048641 860.1244327961681 47.08949138148593 323.01868887381283 1230.2326130514675 1229.54764983795 125.02601298209592 20.146680672369442 1374.7203434923845 0.978031782567741 -0.013536308785373957 1.5209250020824043 0.216973893878640132.074363833106767 0.9419323546711281 5.502416808820071 0.7112180564892737 1989.16840328784 1.9195908656298963 515.9545744054843 197.28864883580576 58.198485956339255 43.217362843474035 21.377538786149245 -38.45286734446614 10.653483536020088 212.06465252185856 4.1022714024679106 2008.9625737363972-0.12908524933677137 0.17504089557600028 -0.13909604270493617-0.10664568679254997 0.2084278140909548 0.17548593162018952 0.21582385372465784 -0.2763891131371249 -0.15328343938335054 -0.08524646696136574 -0.1667306588239072 0.2153603029848803 0.20281613544051708 0.250921274019802740.10849712055002529 -0.10276760350173406 0.2186928081425151 0.10327407410091727 -0.3271310869824725 -0.0282783226978273460.33791632174222336 -0.0273409343272118940.2001362320940273 0.22925464168753173 0.12068181462901884 -0.18651346011465506 0.18488293993350452 0.6289229075097886 0.2624794806571032 0.15228867241340815 0.22609138062017436 -0.009295628988025970.06112380591495132 -0.11661919680147774 -0.17428426814565984 -0.224446904861296560.08318719948527381 -0.04769754109948116-0.25344351287039224 -0.09298596292846222 -0.0147617761155462960.01515329367061012 0.43023393460455295 -0.012667889809710975 0.22348582711166806 0.026131463290416507-0.023761679157133668-0.3814257474186976 -0.10247749792487372 0.12844284023978386
7 1468.0 0.4131492820605839 72.3558849704721 61.29839223091506 8064.584133586301 6.6283204071478625 5.13120716625425 1986.9850177968533 1996.7054624510595 73.63219135047107 40.1570698663873 -33.405677746954325 779.1315185201618 785.8829106395942 864.6246100735409 755.5755697508434 -5.430525943955454 1614.76965388046 0.032735087646847294 -0.04561709956066441 1.8253885442846882 0.8579321932581419 3.023759847704123 0.9823330560909379 6.650413266719499 0.4493959007846429 1993.4000902381513 1.9523782450838705 496.54713537261733 43.51893605905216 71.78535193735348 17.50778587451246 -6.663344417463133 0.7686192848263111 0.04813939134588674-196.9770800893455 3.095902438650508 2008.81719409702280.056922943919637314 -0.041126669781632480.11088329691886048 0.20459265615984393 -0.024475290480262795-0.0759014843525344 0.022442191888577417 0.10995009611945528 -0.19373588563851069 0.149602104735905 -0.11170851442011706 0.04293514595868535 -0.067439355396465130.340451618574079130.23458007562170521 -0.07961662848958792 -0.1782226759605276 0.010205929760192859 0.1315345524432376 0.15400018207986665 0.1707617206925044 -0.05256044173336166 0.17844909559359215 0.02374931258312451 0.15632314127567656 0.27975176221784587 0.06626476697982872 0.5920808298016952 0.40712061409852185 0.0060334795388458560.09386854140678166 0.09800662685811111 0.005149021371045022 -0.11840306499772757 0.07099829255945751 -0.060938800199771620.05377672394552217 -0.13453864164055881-0.09030288093593736 0.10865863863212064 -0.0078320908364623470.05014732624751118 -0.08791996203886479-0.010315809537770003 0.017713166484633506-0.110591502759589760.09557057834603881 0.12724144434259385 -0.06655639441585172 -0.0649910994960804
8 1469.0 0.027242054883013123 32.4916438328064 77.5716031060331 11343.186577536606 6.647097250728652 5.313518890534236 1988.5381164556495 1992.9473992081962 125.30455881299342 716.6263709238697 55.829904662660624 415.613184506241 1188.0694600927711 1248.3527520533503 71.5470684336758 -5.8645586273688295 1314.0352618596646 0.8304227214820221 -0.08871379006369802 1.4395371691077934 0.335396142027526432.0591853828865525 0.8921523196618821 5.310884464284852 0.7348618186608415 1992.201184783345 2.082383001048304 571.7692651999545 90.20770313602738 63.91219410545907 30.300349906907257 2.707606736085225 7.243766766015236 8.147336242488603 -155.523360704854871.8321706154186712 2009.4828048110921-0.0181907292785094650.21832929285800604 0.13926600894284666 -0.22393863682965237 -0.2219597961348945 -0.18602825290037947 0.29382368125176367 -0.09013507254033788 -0.03542128191654783 -0.02934109565221962 0.1830188101286785 0.46537783571271935 0.09492786169353372 0.060932787817404080.13750477206672906 -0.06494118511427859 -0.171142035133278860.06015287572537608 -0.0053337626251163990.138130509755052 -0.09390564355918832 0.05332955861282522 0.19569582156081924 -0.0227293398230766460.38686705489913054 0.22775858387237452 0.2753712052718226 0.16899429706654898 0.176696949690979 -0.092322982071278650.02498891974334967 0.27991140586043095 -0.0592815683753185050.0902723668122398 -0.00739293838180150350.05789031641846084 -0.0778264965233039 -0.09347278402235518-0.0580239121227295040.09398358755722062 -0.04508680584500245 0.24706595126438574 0.1386304372042993 0.031412339785106956 -0.01886062352242195-0.1370984867229389 -0.13390304799767933 -0.1841880471266592 0.00786616325406368 0.4353805421272982
9 1470.0 0.14308853896882334 44.360143221337 69.81915541472996 9810.493334851746 5.1140039564228745 5.326707827778194 1970.7949927358861 1975.739118733864 13.325182804696851 731.0799320958679 135.22709491124613 -12.87955815285136 853.4274688542632 986.301575817419 -135.18221818313026-6.90352411251696 844.2158335217429 1.0494930789939594 -0.07984255937756167 1.0253001797205197 0.0809326010807273 1.7641896654142004 0.9773740033052815 4.283696962937599 0.3761819598278258 1974.6417848803262 1.5270645128282658 414.01729847627473 85.95976579838015 17.298751223932097 36.197245582173416 5.47845832674742 -7.132973659842175 13.13101430563533 -276.495797168535263.5250509836670085 2008.7712234605235-0.12146698850475895 -0.084424157844060140.12146729381778609 -0.16407555774069246 0.27019187260097555 -0.14955962348289362 0.0399151503835372 -0.04263644727950555 0.07484662144200913 -0.1756800134495128 -0.13987811002022804 -0.2840622828733403 -0.023522078933109060.063296582232709730.36437616052527166 0.2644406319536284 0.13982587548875494 0.23155382029456842 0.40737464592590406 -0.0338481071612464 0.13413659054121782 -0.13582895689163985 0.31755850246708245 0.09143307175967788 -0.159220322083414380.00033900155275640380.12256595707193231 -0.105536656395224860.13087290747913055 0.3170623540044205 -0.14276877385965464 -0.066397843913918560.3330780403326678 0.0926496306025121 -0.13668792573287294 -0.078839723000745 -0.0080253701122826070.32724127379240747 0.14385231239594456 -0.027237413999681766-0.04833758699582113 0.1656541964435659 0.2306778599546097 -0.00028851326875980160.01754183643726854 -0.077821327074024130.46858156329346834 -0.2810664119898676 -0.12616931433922793 -0.000685586743536885
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print('Imputed and encoded numeric training data:')\n", "imputed_embedded_train.describe() \n", "print('--------------------------------------------------------------------------------')\n", "print('Imputed and encoded numeric validation data:')\n", "imputed_embedded_valid.describe() \n", "print('--------------------------------------------------------------------------------')\n", "print('Imputed and encoded numeric test data:')\n", "imputed_embedded_test.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train model on imputed, embedded features" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "h2o.show_progress() # turn on progress bars" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice
12.2477
12.109
12.3172
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Check log transform - looks good\n", "%matplotlib inline\n", "imputed_embedded_train['SalePrice'].log().as_data_frame().hist()\n", "\n", "# Execute log transform\n", "imputed_embedded_train['SalePrice'] = imputed_embedded_train['SalePrice'].log()\n", "imputed_embedded_valid['SalePrice'] = imputed_embedded_valid['SalePrice'].log()\n", "print(imputed_embedded_train[0:3, 'SalePrice'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train GLM on imputed, embedded inputs" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glm Grid Build progress: |████████████████████████████████████████████████| 100%\n", " alpha model_ids \\\n", "0 [0.99] Grid_GLM_py_11_sid_acfd_model_python_1570481402793_13_model_4 \n", "1 [0.5] Grid_GLM_py_11_sid_acfd_model_python_1570481402793_13_model_3 \n", "2 [0.25] Grid_GLM_py_11_sid_acfd_model_python_1570481402793_13_model_2 \n", "3 [0.01] Grid_GLM_py_11_sid_acfd_model_python_1570481402793_13_model_1 \n", "\n", " residual_deviance \n", "0 12.38101208930572 \n", "1 13.145568466431087 \n", "2 14.063109332535952 \n", "3 21.25550121078205 \n", "None\n", "Model Details\n", "=============\n", "H2OGeneralizedLinearEstimator : Generalized Linear Modeling\n", "Model Key: Grid_GLM_py_11_sid_acfd_model_python_1570481402793_13_model_4\n", "\n", "GLM Model: summary\n", "\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
familylinkregularizationlambda_searchnumber_of_predictors_totalnumber_of_active_predictorsnumber_of_iterationstraining_frame
gaussianidentityElastic Net (alpha = 0.99, lambda = 0.04181 )nlambda = 100, lambda.max = 0.3392, lambda.min = 0.04181, lambda.1se = -1.086951py_11_sid_acfd
" ], "text/plain": [ " family link regularization lambda_search number_of_predictors_total number_of_active_predictors number_of_iterations training_frame\n", "-- -------- -------- --------------------------------------------- --------------------------------------------------------------------------- ---------------------------- ----------------------------- ---------------------- ----------------\n", " gaussian identity Elastic Net (alpha = 0.99, lambda = 0.04181 ) nlambda = 100, lambda.max = 0.3392, lambda.min = 0.04181, lambda.1se = -1.0 86 9 51 py_11_sid_acfd" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "ModelMetricsRegressionGLM: glm\n", "** Reported on train data. **\n", "\n", "MSE: 0.03425063277769166\n", "RMSE: 0.18506926481102057\n", "MAE: 0.12023366724435518\n", "RMSLE: 0.01422766263785756\n", "R^2: 0.7791276936732663\n", "Mean Residual Deviance: 0.03425063277769166\n", "Null degrees of freedom: 1000\n", "Residual degrees of freedom: 991\n", "Null deviance: 155.22490791465145\n", "Residual deviance: 34.28488341046935\n", "AIC: -514.7093459469268\n", "\n", "ModelMetricsRegressionGLM: glm\n", "** Reported on validation data. **\n", "\n", "MSE: 0.026973882547507017\n", "RMSE: 0.16423727514637784\n", "MAE: 0.11804303307594483\n", "RMSLE: 0.0127038502868127\n", "R^2: 0.8399320722377707\n", "Mean Residual Deviance: 0.026973882547507017\n", "Null degrees of freedom: 458\n", "Residual degrees of freedom: 449\n", "Null deviance: 77.67997881888829\n", "Residual deviance: 12.38101208930572\n", "AIC: -333.7291896477858\n", "Scoring History: \n" ] }, { "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", "
timestampdurationiterationlambdapredictorsdeviance_traindeviance_test
2019-10-07 17:00:07 0.000 sec1.34E010.15506980.1692374
2019-10-07 17:00:07 0.002 sec2.32E020.14507610.1573254
2019-10-07 17:00:07 0.005 sec3.31E020.13596610.1464519
2019-10-07 17:00:07 0.007 sec4.29E020.12766180.1365261
2019-10-07 17:00:07 0.009 sec5.28E020.12009210.1274650
------------------------
2019-10-07 17:00:07 0.104 sec47.4E-1110.03385530.0270511
2019-10-07 17:00:07 0.107 sec48.38E-1110.03346540.0271464
2019-10-07 17:00:07 0.109 sec49.36E-1120.03308180.0273076
2019-10-07 17:00:07 0.111 sec50.35E-1120.03272200.0275058
2019-10-07 17:00:07 0.114 sec51.33E-1130.03238540.0277000
" ], "text/plain": [ " timestamp duration iteration lambda predictors deviance_train deviance_test\n", "--- ------------------- ---------- ----------- -------- ------------ -------------------- --------------------\n", " 2019-10-07 17:00:07 0.000 sec 1 .34E0 1 0.15506983364475882 0.16923740924923492\n", " 2019-10-07 17:00:07 0.002 sec 2 .32E0 2 0.14507610446921868 0.15732537229620666\n", " 2019-10-07 17:00:07 0.005 sec 3 .31E0 2 0.1359660828119278 0.1464519401713121\n", " 2019-10-07 17:00:07 0.007 sec 4 .29E0 2 0.1276617954817094 0.13652613905981534\n", " 2019-10-07 17:00:07 0.009 sec 5 .28E0 2 0.12009212714905448 0.12746496632994203\n", "--- --- --- --- --- --- --- ---\n", " 2019-10-07 17:00:07 0.104 sec 47 .4E-1 11 0.03385527621578801 0.027051085622454858\n", " 2019-10-07 17:00:07 0.107 sec 48 .38E-1 11 0.03346535646233133 0.027146431459298778\n", " 2019-10-07 17:00:07 0.109 sec 49 .36E-1 12 0.033081750922096004 0.027307582216987147\n", " 2019-10-07 17:00:07 0.111 sec 50 .35E-1 12 0.03272196312141781 0.027505763881946706\n", " 2019-10-07 17:00:07 0.114 sec 51 .33E-1 13 0.032385366719668976 0.027700013369664236" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "\n", "glm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice predict
11.8494 11.9362
12.2061 12.2679
11.6784 11.6511
11.7906 11.9147
11.9117 11.8721
11.9767 12.045
11.8451 11.6592
11.1346 11.409
11.914 11.8427
11.8845 12.0384
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEICAYAAABYoZ8gAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4HNX1v9+7VV2ymmVZLjLulgtuQLDBgG1Mhx8OBhxaElpCS0IogQChBwiBEBIgweFLaKEEHEwzBmODe+/dllUsWb1r+/39MTur2dWummXLku/7PDxoZ+7M3FlLnzlzzrnnCCklCoVCoThxMHX1BBQKhUJxbFHCr1AoFCcYSvgVCoXiBEMJv0KhUJxgKOFXKBSKEwwl/AqFQnGCoYRfccwRQjwihHirk86VK4SY3hnnOpJrCyF+J4T4ZwfPs00IMa1TJ9dBhBDThBAFXT0PxdFFCb8iLH5RaxRC1AkhioUQbwgh4rp6Xu3BP2eX/x4qhBBfCyGGH41rSSmflFL+vI1zejzk2FFSyu+OxrwizOF6IYTX/73UCCE2CiEu7MB5mt2LonughF/REhdJKeOAccDJwP1dPJ+O8Iz/HrKAEuCNcIOEEJZjOanjgBX+7yUJeB14XwjRq4vnpDhGKOFXtIqUshj4Cu0BAIAQ4gIhxAa/xZgvhHjEsG+gEEIKIa4TQuQJIcqEEA+EO7cQwiqEeFcI8ZEQwiaEMAkh7hNC7BNClAsh3hdCJBvGXyOEOOjfF/acEe6hAXgHyPGf5xEhxIdCiLeEEDXA9Udy7VD3lRBiihBiuRCiyv/9XC+EuAmYC9zjt7Y/9Y81uozsQogXhBCH/P+9IISw+/dNE0IUCCF+I4QoEUIUCSFuMFzzfCHEdiFErRCiUAhxdxu+Fx8wD4gGTgrdL4QYIYT4zn8f24QQF/u3h70XRfdACb+iVYQQWcB5wF7D5nrgWjSL8QLgViHEpSGHTgGGAecADwkhRoScNxr4BHACV0gpXcDtwKXAmUAmUAm87B8/Evg7cI1/XwqaJd+We4hDE6oNhs2XAB/67+Htzrq2EGIA8AXwEpCG9sDcKKV8zX+dZ6SUcVLKi8Ic/gBwqv+YscBk4EHD/gwgEegL/Ax42WCpvw7cLKWMR3vAfduG78UC/ByoA/aE7LMCnwILgXT/9/O2EGJYG+9FcZyihF/REp8IIWqBfDQ3ycP6Dinld1LKLVJKn5RyM/AummAa+YOUslFKuQnYhCZkOgnAl8A+4AYppde//RbgASllgZTSCTwCzPYL1GxggZRyqX/f7wFfK/dwtxCiCu2hFQdcb9i3Qkr5if8eGjvx2lcDi6SU70op3VLKcinlxlbmqTMXeFRKWSKlLAX+gPaw0XH797ullJ+jCfYww76RQogEKWWllHJ9C9c51f+9FANXAZdJKatDx6B9Z09LKV1Sym+BBf7xim6MEn5FS1zqtx6nAcOBVH2HEOIUIcRiIUSpEKIaTTRTQ44vNvzcgCYiOqcCY9BExVgpcADwsd+1UAXsALxAbzRLO18fKKWsB8pbuYfnpJRJUsoMKeXFUsp9hn35IWM769r90B5oHSETOGj4fNC/TadcSukxfDZ+r5cD5wMHhRBLhBCntXCdlf7vJVVKeaqUclGEueT73UHG+fRt680ojk+U8CtaRUq5BC0o+pxh8zvA/4B+UspE4BVAtOO0C4GngG+EEL0N2/OB8/yipP8XJaUsBIrQRBUAIUQMmsulo4SWpu2sa+cTxl8e4ZqhHEJ7AOn0929rFSnlGinlJWhumU+A99tyXCtz6SeEMOpEf6BQv+QRnl/RRSjhV7SVF4AZQgjdXRMPVEgpHUKIyWjujXYhpXwG7QHyjRBCf1t4BXjC7ydHCJEmhLjEv+9D4EJ/4NQGPErn/g531rXfBqYLIa4QQliEEClCCD0wfhgY1MIc3gUe9F87FXgIaHXNgz8wPlcIkSildAM1tO4Ga41VaG8U9/iD8NOAi4D3/PtbuxfFcYoSfkWb8Pub30QTIoBfAI/6YwAP0UHrUkr5GJp1usifQfMi2pvEQv+5VwKn+MduA36J9rAoQgu+duZio065tpQyD83l8hugAthIU3zjdTQ/fJUQ4pMwhz8OrAU2A1uA9f5tbeEaINefpXQLWrygw/iD7RehBfbLgL8B10opd/qHtHYviuMUoRqxKBQKxYmFsvgVCoXiBEMJv0KhUJxgKOFXKBSKEwwl/AqFQnGCcVwWpkpNTZUDBw7s6mkoFApFt2HdunVlUsq0tow9LoV/4MCBrF27tqunoVAoFN0GIcTB1kdpKFePQqFQnGAo4VcoFIoTDCX8CoVCcYJxXPr4w+F2uykoKMDhcHT1VLotUVFRZGVlYbVau3oqCoWiC+k2wl9QUEB8fDwDBw5EiPYUgVQASCkpLy+noKCA7Ozsrp6OQqHoQrqNq8fhcJCSkqJEv4MIIUhJSVFvTAqFovsIP6BE/whR359CoYBuJvwKhUKhaM78jYWtDzKghL8dPPHEE4waNYoxY8Ywbtw4Vq1aFXHs9ddfz4cfftji+a6//nqys7MZN24c48ePZ8WKFWHHvfLKK7z55ptHNHeFQtEz2VtSy53vtbWls0a3Ce52NStWrGDBggWsX78eu91OWVkZLpfriM/77LPPMnv2bBYuXMjNN9/M5s2bg/Z7PB5uueWWI76OQqHomXSkpYqy+NtIUVERqamp2O12AFJTU8nMzOTRRx9l0qRJ5OTkcNNNNxGusc26des488wzmTBhAueeey5FRUXNxpxxxhns3bsXgGnTpnHXXXcxceJEXnzxRR555BGee05rd7t3716mT5/O2LFjGT9+PPv2aT29n332WSZNmsSYMWN4+OGHj9bXoFAojjO8HVD+bmnx/+HTbWw/VNOp5xyZmcDDF42KuH/mzJk8+uijDB06lOnTpzNnzhzOPPNMbrvtNh56SOtGeM0117BgwQIuuuiiwHFut5vbb7+d+fPnk5aWxn/+8x8eeOAB5s2bF3T+Tz/9lNGjRwc+u1yuQL2iRx55JLB97ty53HfffVx22WU4HA58Ph8LFy5kz549rF69GiklF198MUuXLuWMM87ojK9GoVAcx7g87W+t3C2FvyuIi4tj3bp1fP/99yxevJg5c+bw9NNPEx8fzzPPPENDQwMVFRWMGjUqSPh37drF1q1bmTFjBgBer5c+ffoE9v/2t7/l8ccfJy0tjddffz2wfc6cOc3mUFtbS2FhIZdddhmgLcgCWLhwIQsXLuTkk08GoK6ujj179ijhVyhOAJwnivC3ZJkfTcxmM9OmTWPatGmMHj2aV199lc2bN7N27Vr69evHI4880ixPXkrJqFGjIgZudR9/KLGxsW2el5SS+++/n5tvvrl9N6RQKLo9HbH4lY+/jezatYs9e/YEPm/cuJFhw4YBmr+/rq4ubBbPsGHDKC0tDQi/2+1m27ZtHZpDfHw8WVlZfPLJJwA4nU4aGho499xzmTdvHnV1dQAUFhZSUlLSoWsoFIruhdPjbfcx3dLi7wrq6uq4/fbbqaqqwmKxMHjwYF577TWSkpLIyckhIyODSZMmNTvOZrPx4Ycfcscdd1BdXY3H4+Guu+5i1KiOvbX8+9//5uabb+ahhx7CarXywQcfMHPmTHbs2MFpp50GaG6pt956i/T09CO6Z4VCcfzTEYtfhMtC6WomTpwoQxux7NixgxEjRnTRjHoO6ntUKHoW8zcWcud7Gzn4xwvXSSkntuUY5epRKBSKbkxHgrtK+BUKhaIbo4RfoVAoTjCOWlaPEGKeEKJECLHVsO0xIcRmIcRGIcRCIURmhGOvE0Ls8f93XbtnqFAoFIqIHM10zjeAWSHbnpVSjpFSjgMWAA+FHiSESAYeBk4BJgMPCyF6tXuWCoVCoQhLR9I52yT8UsqlQEXINmPNhFggXHrQucDXUsoKKWUl8DXNHyAKhUKh6CAujw+ruX29No7Ixy+EeEIIkQ/MJYzFD/QF8g2fC/zbwp3rJiHEWiHE2tLS0iOZVrcgLi4OgEOHDoVduWvkhRdeoKGh4VhMS6FQdDOcHh82c/uk/IiEX0r5gJSyH/A2cNsRnus1KeVEKeXEtLS0IzlVl+H1tv+VKzMzs9W6/Ur4FQpFOHYV1/LB2nzsVnO7juusrJ63gcvDbC8E+hk+Z/m3dTtyc3MZPnw4c+fOZcSIEcyePZuGhgYGDhzIvffey/jx4/nggw/Yt28fs2bNYsKECUydOpWdO3cCcODAAU477TRGjx7Ngw8+GHTenJwcQHtw3H333eTk5DBmzBheeukl/vKXv3Do0CHOOusszjrrrC65d4VC0XXkltVTUR/c++PFRXu44tUVnPvCUmocnnZb/B0u2SCEGCKl1IvXXALsDDPsK+BJQ0B3JnB/R68Z4Iv7oHjLEZ8miIzRcN7TLQ7ZtWsXr7/+Oqeffjo//elP+dvf/gZASkoK69evB+Ccc87hlVdeYciQIaxatYpf/OIXfPvtt9x5553ceuutXHvttbz88sthz//aa6+Rm5vLxo0bsVgsVFRUkJyczPPPP8/ixYtJTU3t3HtWKBTHPdOe+46EKAubHzk3sG3+pkL2l9YHPg/17CJyP8DmtEn4hRDvAtOAVCFEAVqmzvlCiGGADzgI3OIfOxG4RUr5cyllhRDiMWCN/1SPSikrml2gm9CvXz9OP/10AH7yk5/wl7/8BWgqoVxXV8fy5cv58Y9/HDjG6XQCsGzZMj766CNAq9t/7733Njv/okWLuOWWW7BYtH+W5OTko3czCoWi21Dj8AR/bgz+PNi9q13na5PwSymvCrP59TDbkFKuBX5u+DwPmBdubIdpxTI/Wgghwn7WSyj7fD6SkpLYuDF8/8vQ4xUKhaK9+HySinonJ/dPYkNeFQDpsqxd51Ard9tBXl5eoLzyO++8w5QpU4L2JyQkkJ2dzQcffABodfI3bdoEwOmnn857770HwNtvvx32/DNmzODVV1/F49Ge5hUV2stRfHw8tbW1nX9DCoXiuOLlxXvZURS5u6DD7eXejzbjk3DJ2Ew+v2MqAJmivF3XUcLfDoYNG8bLL7/MiBEjqKys5NZbb2025u233+b1119n7NixjBo1ivnz5wPw4osv8vLLLzN69GgKC8PHt3/+85/Tv39/xowZw9ixY3nnnXcAuOmmm5g1a5YK7ioUPZjqRjfPfrWLa15fRZ3TE3bM/zYd4oN1BQCkxNlJjbcB7Rd+VY+/HVgsFt56662gbbm5uUGfs7Oz+fLLL5sdm52dHdSF6/HHHwdg4MCBbN26NXD+559/nueffz7o2Ntvv53bb7+9M25BoVAcp+RXaCnbZXUuch7+igNPnd9sjNFZnBpnJzlGF37l6lEoFIrjkpJaB25v+No6BZXBa3UO1zhxe4MLIlQ3ugM/p8bZsJhNmPHSm8p2zUMJfxsxWuYKhULRXuqdHiY/8Q2Pfro97P78isagz/vL6vD4gh8SpXXOwM8pcXYAxiY6MIv2NdTqVsJ/PHYL606o709xIlJQ2XBc/O6X1mqi/e3O8P2w80Ms/gNl9bg9TfOWUlJW27SQKynaCsB/rz2p3XPpNsIfFRVFeXn5cfEP2B2RUlJeXk5UVFRXT0WhOGYUVzuY8sfFPPNV+/LcO5O/fruHDXmVlPmt9QS/YC/fW4bD3VTmpbAy2OI/UFqPy+AWcrh9lNU5GZOVSO7TF2Ay+T3+de2vbdZtgrtZWVkUFBRwIhRwO1pERUWRlZXV1dNQKI4ZjX5h/ef3+7l31vBjfn0pJc8t3M1zC3fzt7njAYiPsrD7cC1X/3MVV5/SnycvGw1AbcgirYMVDUHxgHqXh9JaJxmJIcZb3eF2z6vbCL/VaiU7O7urp6FQKLoRPr+HIDRIeqwwXld39SREWSiv01w2+0rqAvtD6+o73N4g4W9weimrc5LTNyH4IvXhXUct0W1cPQqFQtFevL4m4a1xuFsYeXRodDWJeUmtA4AoqzkwL4uhjr7DHRzIdbp9QcJf5/RQXu8i1R/UbdpRCvbEds1LCb9CoeixBAl/YxcIv8GHr1v8To8Ptz9bx2xqkuBmFr/Hi8sQ3D1U1YjXJ8MI/2GIS2/XvJTwKxSKHotR+LvC3WMU/hK/8DvcXrz+uVhMbbf4D/oXeKXGhwh/fakSfoVCodDxSaPwt78p+ZHS4GoK2FY1aG8cRt+92SD8oRb/rsO1XPLyssDnvHKtDHNqnK1p0NaPIH8VJA9q17yU8CsUih6Lx2DxuzydL/xSSn7/yVbWHQxfbV5P1xSi6edGtxeHX+RbsvhD2VGsFWpM0109Ph988xikj4QZj7Zr3t0mq0ehUCjai88o/B2w+P+7vgC7xcwFY/qE3V9S6+TfKw/y5bZi7po+hJRYO7NyMgL7G11+y16IgNvH4fY1bfcLv5Qy8DCIxOoD2sMl4OPfuwgqD8DseRDTvt4dSvgVCkWPJcjH3wGL/9fva2XVLxhzQdj9e/3pmGlxdh74WCvpkvt001jd1WM2iUCGT6PLG3gI6Ba/2yuRUnszCLdGNc5uoc7pwWoWJEZbwVEDi5+AuAwYcXG770u5ehQKRY/laAd3deGPsoaXUqPA6z87Pd6A28dsMrE2t4Jcv/8+Uu/ck/snadexmDHVFcGrZ0DRRjjtF2C2tnveyuJXKBQ9Fu9RDu7qwl8QUm4B4GB5fcDKN5lEk4/f5Q1sr250MfuVFfRO0Nw3dosJp8eHzWIKiknMnpDFmtwKLsxqgJcmgPTBnLdhePg3kdZQwq9QKHos3nb6+GscbtYdrOSsYW1Lj9QtdT1VU/e/bz9Uw/l/+Z6sXtHaQNn0xuHw+GjwC/+iHdqq28M12vE2ixnwYA8R/pP79WL7H2Yhlj4DhQ1w47fQd0Kb5hgO5epRKBTdjs+3FDHwvs8orGpuaRtpbzrnXe9t5IZ/reFwjaNN86iodwV91n32B8q0B4L+JqA/dJJirHh9ktoIq4j7J2sPiqxeMUHbrRaBySQQu7+ArElHJPqghF+hUHRDPtmgtS/dlF/V4jiPt33Cv9Pf77atqZ96br5OvT+YG1pH3+k/Xy9/x6zKhvDCf+PUQbx45TjmntI/aLvVbIKKA3BoQ4fdO0aU8CsUim5HXJTmpa5zhO9Nq2O0+Nsi5t5AUbe2Cn+wxd/o8iKlxBkhJ79XjBaIrQw5TifaZuaScX2JsZmDtttq8mHJH7UPo3/cprm1hBJ+hULR7Yi3+4U/QlNyHaN+u9qQ1aPHBJwhD4k/LdzV7GHg8viodwXn3nt8EpfXF9Qi0UiTxW9oqBLTlJUTZdUE324xI/BxstjDzeZPif/HJNj0Loy9GhKPvLS6Cu4qFIpuh27x17cm/LJ9efz6Sl9jgxSAl77dy+D0OC4Z1zewraoxvNXe6PJGtOiTdOE3xAYGp8Wx9qDWM9du0Wzx7LwP+dT2T3JMuQD4Bp6JuOhFSO6c0vTK4lcoFN2OKItmGbdu8TeJfUmtk/Ne/D4QeA0/Xhd+X7Nuf40h1n2of1+n3uWlKoLFnxRw9TTtNzZWibKaweNi6KanyTHl8oj7Ws52Poe45uNOE31Qwq9QKLohumVe04qP3+idWbD5EDuKavjb4r0tjNdTLr1BqaAAIR8Dwh9UNA1odHma+f51EqObL7aKtjb586OsZshdisVdx42uX/OGdxb7ZSbCZG523JGghF+hUHQ7dH97JIHVMdbqESL42HDoDxSn29tspW+o+0d35/RO0Cx2ffVuvdMb8W0gIaq5dz3aEMiNrdoF71+P1xrLD76ciPM8UpTwKxSKo0ad09PMcu4MdPEOzaMPxRPm2i0t5DIGd0PHhQZsq/3irgt/Sqy2eOudVXmsz6sMjLNZmmQ2IYzFHxWw+CW9Ft8HFht5F79PI1HNxnYWSvgVCsVRweXxkfPwVzz66bZOP7dujUcKoup4w1Q8M3a1ajbeENwNfTMIFf5Qiz/F7/L5z9r8oBLL/ZObFmMlRIUX/hkje3OaaTvWwlVw1gPQ5+QW7+tIaVX4hRDzhBAlQoithm3PCiF2CiE2CyE+FkIkRTg2VwixRQixUQixtjMnrlAojm/0ypT/XV/Y6lgpJY8t2M7uw7VtOrdujZfVNRf+VfvL2ehf2GV09ehx3raUbnCEdL+C5m6lqkY3VrMI5OanxDb5+v8+dzwj+2hN0QcYhT/I4pdMN61jeu5zvNp4N+/anoCYVBh3NYYy/Vw8NrPV+baXtlj8bwCzQrZ9DeRIKccAu4H7Wzj+LCnlOCnlxI5NUaFQdCeklCzafjiQ425sKB6J8noXr/9wgKteW9mma+ipmRX1rma+9zmvreRSf+cq3YK3W0yB6piR0jqNWTwOtxd3yJtBaKZOVYObpBgbdn+GkZ6qCXDe6D4BF0+gXg+QEK35+AeJQ3xtu4d/2v7EyKJPMFlsMOXXcMWbYI3WVuoCpw1K4S9Xdb7132oev5RyqRBiYMi2hYaPK4HZnTsthULRErll9TS4vIzMTOjqqTTjy63F3Pr2eq6arJUdsEYoNWxEX2Fb3orPXsdojZ/13He8/fNTGJQWF9TqEJqEP8pqDuyLFNw1vpk43M19/KEB26oGF0nRViTaNXSL//cXjgSacvLTE5p89TFWC2PFXv5p+xMgudt9MxMvuoUrTw1unZiZFM2LV47jjCFpLXwLHaczfPw/Bb6IsE8CC4UQ64QQN7V0EiHETUKItUKItaWlpZ0wLYWi5zLtue84/y/fd/U0wqIXONtVrNW9aYvwt7ctojHjpqjawatL9lPV4GLmn5cGjdN9/NFWc8DvHkn4f/PBpsDPTk9zH/+hqkZmvbCUDf7AbVWDm14xtkCaZ6zdwoGnzudnU7R8++fnjOO35w5jlP/h3C/WR+/5c5hvfwgPZq50/Z4PvWcSZQ9pnu7nknF96RVrC7vvSDki4RdCPAB4gLcjDJkipRwPnAf8UghxRqRzSSlfk1JOlFJOTEs7Ok85hUJx9BH+vMl6Z9tdPe1tkuLy+rAazts7MYoNeVWBaph6bn2TxW8yHNv6tRxuX1CBN9AWgO0sruV3H2+lpMZBZYOLxBhrwEVkEiJw7wB9k6L55VmDcVQeYoppC3+1vYQt73v+7L6cmc5n2Cf7NpvbsaLDJRuEENcDFwLnyNAlbn6klIX+/5cIIT4GJgNLw41VKBQ9A1379EqVbbH429skxe310a9XDPv9q3CllDgNPWvT4jX3is/g6tFxhfS2dXt9/LCnLGibw+ONGATeUVTD5Ce/oU9iFKOjrQE3lSn0+bb3G/jyPmaV7WaWDXxOG47pT/LiggFBw4zpnseKDl1RCDELuAe4WErZEGFMrBAiXv8ZmAlsDTdWoVD0HHTrXa+j015XT2hphPDX8AW5Qaoa3NT53zBGZSYESjV4wgh/6NvFE5/t4IY31gCaf75vUnRQOudPTu3P784f3mwOlQ0uesU2uXpMRuUv2gzvXQ0ImPk4XLcA0292wuSbm53HJFp/I+ps2pLO+S6wAhgmhCgQQvwM+CsQD3ztT9V8xT82Uwjxuf/Q3sAPQohNwGrgMynll0flLhQKxXGDLvh1AeFvXdiM1nVxG5qguD0Sm9nEwxdpgdTqRncgeJsYbQ24aXxSIkSwVd3o9gZl8KzcXx74Od5uIcpq4r/rC9l+SItRXDquLzmZic3m4HD7SDRY/AIJB76HZS/C27MhKglu+Bx+dDtkT4XYlLDfhcV0HLp6pJRXhdn8eoSxh4Dz/T/vB8Ye0ewUCkW3Qxd83bLeXFDN2D8sZMPvZwRbxQaMKZat1dgH7UGRYLNyw+nZfLLxEFWN7sB1k2Ks7D5cy+s/HMDtlZiFCGpiXuov1vblXVrI0bj6N9ZuCZRkfnTBdgAsZhPJEYKsvaItTBC7ibF8yLVbdsES/2K1AafDuU9CbGrQeHOY++8C3VdlmRUKRecSrmJmdaObdXmVTBqYHPYYo8Xv8LTN1aOLeWK0VbP4nV5MAuLsFsrqXDy2YDtZvaIxm0QzS3tncdNCMaPwx0VZmjVOt5pFUAVNgJPFHq63fMWMJbnENB7iFKsJIQbBxS/BwCmQHJyeqSPCuHWOS4tfoVAo2kMki/2zzUURhd8Y3A1dkAWQX9GAlNA/RVsF6/L4sFk0EU2KtpJXXk+d00OszRIUUyivc/mFP7y4ery+oHo+cfbmVTBtZhMxZslU02aGiEJOM21nhnkdlTKOhpTTiJn0MGLY+RDVvjUVv79wJHnl9UwY0Ktdx3UGSvgVCkWnEqlG/g5/P9twGOvnGOvc/G/TIUb2iWf681oyYO7TWr9Zt9cXEHPd4q93eoi1Bwt/o9tLvN0SNnPG4/Xxzuq8oG2xdgspsTbK613E4GCaaSMZS7+A/Z/xb1sFAFUylmfdV/Av7yzeOOcsUrPDP8xaIzs1JpDzf6xRwq9QdGOklEHug1qHm1Of/IZXrpnA1KO06rM1Igl/YVVj2O0Q4urxW/xSSu54d0PQOP1+3V4ZEPikGE3465weYu1mLCF+dLNZBGX16ORVNPDcV7uYMjiVH/Zq6ZxxdguLbh7Ji//4B5c55zPWtB/frmgYfj7kzOaGb80sznMD2jWiw5y3rdjMnVtjvz2o6pwKRTcmtOzw9kM11Lu8vPRN5GYjR5tIrp6iageeCLnxxuCuLvzhHiBF1VrGjyvE4vdJLRso1m7BGmLdm4UIlE+ItZl5+erxAPztu33UODzcd95w4mlgqmkzKWv/TK//O5NH3H9mqCjgHveNlP1iO8yeB8PPp5o4dNEHiLZ1XELbku10tFAWv0LRjfF4JUajU89IsR/F1aB7S+rokxhFrD28fNS7wgu/1yc5XOukb1J0s31BPn7/PZSHqby5p6SOzKRof3BXE069LPL+0npG9knAGmLxm0yaxZ9IHeNNRQwuK+Vy01Zy9tYxM2oPOZ88xib7TkxCIpcJ6DuBJxN+zxsHEnFh5XdRcYFzzcrJYH1eVeBzuDeJttIVC7d0lPArFN0Yt89HNE3iowu/2SRweryBypGdhZSS6c8vYdLAXnxwy4/CjqlzeDgpLZZ9pc172xZWNoYVfqOrx+m3+Mvrnc3G7Tlcy5lD03B7miz+Pv6Mm+pGt+bqCQls7zIcAAAgAElEQVTk2vEwrvpr7rA/TSINsBT+ZAOccJA+kJjDnw+NYr0cwtsP/QKiEih6dwMuDgHBC9BunDqIKKuZh+ZraZtH4uppy8K2o4USfoWim2FcfBRaT0YvW/DdrlKGPfhlIBjaUfaW1DIwJTYgpvqDZU1uZdjxUkpqHR5mT8xiqtvHG8tzARiUFsv+0noKqxqA4GDozuIaXl2y33APzWvtj+2XREFFA3sO1wHaGgHdpWNMtYy1W7CYYLLYwTjTXqJwc5lnJdl7Cigkhd+bfsWj18zgwtc2UiejiUpIY+VPzuGl+z7TTuDPzIkxCLpRoIUQZBiqbRrbJrYXZfErFIo2Y2xlGOozd7rbV/OmJfIrGpj+/FJuPmMQ958/AoCGVsop6C0LE6Ot/OK8wTS6vPxnbT6DUuPYX1pPQUXzAO+sF4KrjOo+fqOrJznGSrQ1jj0ltUgpg3z86XF2xpt2M1zkc9nhwwzPXc8v7IcCxx6gH4tynuH2talExyYQP2AcBVLb38+fEvr4pTlsym9y4cTYjcIf7DqyG5ujH8EblU1Z/AqFoq0Ya82EFhJztrO8cUuU1GqB1JUHKhh432dcOKYP953XvGYNQHmdkxibhRqHVrM+0d9pyuoX1sRoK6lxtmaZPaE5+zaLySD8Ta6eGLuFrF4xfLKxMHD/NrMAjwvbl7/lv7Y3tPPVxHI45RSeqD2fz72n0IidrNREbug7kMa127B6fZhNAotJ4PE1ZQb95NQB/OTUpuJpMX5LPjHa2mzRld1gqUdaidwWQoPQxxIl/ApFBN5ZlcfvPt7Ctj+cGzGQ2dk43F4sJtHMT23EKPaRXD06oeme7UF/e9DTIxdsLuLOc4YE9nt9ErNJIKXk7D8tIdZmZt4NkwCD8Pvvw2410TcpupnwX/+v1UGfY21NdfONTVl6x0eRnWzlR64V1H67hQcta5mxrRZWbwFHNf/ynMs/Pefzh2tmUVzr5L28pnqQJtFkmetvS1azCY/PizXCqtkYm/bvHa5Ug72TBFtZ/Ipui88n+XrHYWaO7N1hgTleeXXpPkCrw559jIR/+O+/5KxhafzrhskRxxgzYDy+li3+Rrc3IGLtpdLfccpYX8bo6impddAnMZq8igaqG91UN7r5aF0B0NRUXBe3KIuZrF4xQYu46pweVu6vQAjQwxZRVnPA4i+rc9I3MYq7BhVwUWohjk0fc41tOSyHuWYbjc6BMPxCGHkJB3f0JSG3knNG9ub9tflB92ExmQJZTnpjFpu/FaP+RhKKHrSNj2r+3XVWwFwJv6Lb8u6aPB74eCt/vHw0cyb17+rpdCq6JPjCt5s4aize1XIHOqPwh5YYDvXx1zs7LvxVjc3TKY3Cf6hKE35jdcuthZqwh7X4e0WzaMfhwFtIib8K58VjM5m/UfO5R1nNLNx+mJ/lFdOrcjMPmb7i3B2fww6wWuP4g/saMqf9jCe+KeSpC8YE2js+MrTp7SY0W0ZP54Smhuv6mEiZNbqrJ5zwd1bjlEgPnWOBEn7FEXG4RvPD6gtrehL6G0xnBkw7A2MT8NZcPfVOD2nx4Vv7GSmudpAUYw3KS9d7zBofNI1uj2G/9mDYmF9FrxgrdU4P+8u0rBtd+HUfuNWkZcM4PT5K65ykx0cFfndOSosjnUrONG9iiusQNs9hsl/fyGPC3+N2xEVw/nPUmZL412PfMHFvIyAYnhEfdA/6v1eom8wkmvLt9Tck3V0TSfj18fF2a7N99iNI4TSiLH5Ft6XJKu7SaRwVdM9VY5iiYV2J2+Decbfi6om0mMqIw+3l1Ke+4aKxmbx01cmU1Dp46vOdgWyWmsamJuNGi18P5BZVO+iXHENprTNgACT4hT/QltAkAvn7hZWNpMdHUVLrYLjIY86eV7nRvoJo4aLBFU2xSOS/3imsNE/gpGGjuOPHl4LJRIKURFlNrD1YicUkGNEnfFG00AVcDrc3IPT676l+b5HEV/83jwvr6ukcwQ5XovlYoYS/h+HzSe75aDNzT+nPyf2PftU/vXtQhO6b3Rr9z7ItHaGOJUGuHk+o8Ida/K3PfeluzbW0aPthAD7ZUMjHGwoD+0tqm7JrjML/t8X7MAnB4RptNa6UTW9+CX7B1N1kZiHISo7GhI/F/34Sn2UrZ3r2cYn9MN6KeD71TeTvnotpTBpCXqX/eh64I3VwoGC9EILeCVEcLG9gRJ+EiKtmQy1+h9vXbKyeQx+pH7D+b66/uRjpLOHvypiYEv4eRmWDiw/XFfDNjsNseGjmUb+ebrT0QN0P/GEeK4u/LQ/P+RsLqTHUwgmt1eMI9fG7PNz/383UODyBGjWhfLOjBGhaARv69lZruJ4xt35PSR13vreRlFgb4/snBdwocXZLQHy9Pkinkt71Oxi05jW+sc0n232Yfc4+LBcnsUOew40/u5+7/rwFgPiG4O86JS7YTaUHjScOjGzUhObdN7q9zfzyrfn4fzwxi62Hqrn97MHN9nX2auiuQAl/DyPQ//MYWRO6D/dYB0CPBaZj7Oppi7vszvc2Bn0ObVIe+nZS7/Tw7moty+Xlq8Of81C1lmK5v6yev323l5Ka5qUSdA77A7LGTJzyehfpcXYS6nPBtJkR1mpYvA4aKrhh62Lui9oL6wGzjXw5jGdcV/KFbzIgGJgSw11p/QBN+GtDCrOFplPuL9ViCGcPT484x1Axb3R5my200i3+SK6e+Cgrz18xLsL5j+xv6/FLc/hqW/ERneNIUcLfw9DzlI9kYUl70J8vPdLH73f2NLbBT94ZhKZmNtsfprJlaHA39CHVYHD1+Hwy8HtR5/RQ63DTJzE6yIf/zJe7mDokNWzOPUBRVQN2XIyIruEkx3YyRRmnmHbwo+W7MEkP2AAPsERAVAJucz8ec8/l1JPHMWPmhVz7ZHCZ5b7+DlmRSIkLFv6zhqezYHMRk1uogR9allmz+IOFv8nib//fyZG6aEIXi3UFSvh7GC6/z/dYxY10ceyRPn7d4j9GPn6j7l/9j5X8fe4EFu8qYVZOBje+uZa5pzRPlw19WITOtdog6mX1WjYNwPQ/LaG4xkHu0xdQ4/AQZTUF3EQ7imoYnpHA/NtO562VB3l70WqmmLbyE8siRhwoICaqEXxoIg8UyFQKh/yEDc4M3tgdxbWzTufSKePBbGHep9uZt+wAfXqPgIRMQBP+sf2S2JRfxbDe4QO0fRKjKKp20CsmWPif+/FYfn/hyBbdLeEWv4X65VvL6mkLk1pwNx3vKOHvYbi82h+++Vi5egIWf88TflPAx9/56ZwV9S5MApJibKw7WEFSjI10Q9rl8n3lTHpiES6vj6sO9Of7PWV8v6es2XlC8/gbQiz+gxVNFTKLqhykx0fh9voormlKv611uLlkVApZeZ/Qr3YDUU43A6pMpH5o46bi3dwVpQV99/n68CnTOCySKfdG84N7GPkyHRdWPps2hYkxNg6uK+DCKSeBWc+i0eanW8kf3nIaBZWNvP7DAYBmKZmf3jaF3YdrsZgFd763kb69git5RlnNrZZCDue+aRbcNevB3Y4J//rfzwjk+ndHlPD3MPR0vmOVMSB6cHBXv6Wj4eoZ/9jXgNZK8PK/rwBgVGaw9auXZvh+T+QFXaE+fkeIxb/fUBr5UFUjY/slsWpvKTE4iMaJ58AyfuZ8i6sOrCbJeYhCUwo1MoYkGQfeRKrSJ/Hcvl5s8A1mkzwJH1rpheIaR2AVLGg18VPj7NxuKOkATW+Cukdl4sBkJg6EFxbtBmBoiPCPzkpkdFYiAJeM6xvxvlsiXKZOqMWvW/q2Dvrrw5Vy6E4o4e9h6BZghBIknY6uOz3Rx6+nRh6r4O62Q+F70hZURm5ZGOTj9/mwO0oYJwrpLSpIE9UMLSzlRms+g0QRGfMdyE+cTPE62a5XFv4/uNUMpdZhlJz3H05/zwMInjpzNFdN7k/BgQrm7V4RdM0YmzmoQqjFJEiOCS+E54/uw/+tOMjpg1ODtt867STu/WgLQ9K1JierHzgHSyf90up+e7vFFDCEQmNetk5w9XRnlPD3MHQf/7Fy9egBx57m6pn6zLfk+0sIH18LuCQ2PPQVZUwxbeG0Na/B93vxOeuQzlr+hxcMGZAOaWW/yGSTPImNphTKXWaq3FZsUTGUOATXzZjEJV9Gcd+syVw2oi/wFQADU2IB6BXTlMeuB3xDyxikx9sjJhOcMiglbE+AOZP6B5X40GMPnYH+AImympstaMvpq71VBYK7XVghsytRwt/DcEWwcI4Wbr/l19OEP99QN761GvRG9MyZeT8c4GB5Pe+uyWfl/ee02TVgx8Us02qSRS3jTPvoK8pIoJ5kcyM2XyMxOLGIJjGrrc2CIaez9KCLrfU+imUyRTKZYplCqUyklESykmMZnpHA19sPkxZv57HZo3B7Jc+9u4E3v9TOEx9lCfJZZ6dqwp9ksOSTY7WyymcOTWfuKQP4zQebAEhP6DzR7gx0MQ+1fZbddzZJ/gVZNn+dHGXxK3oEenD3WOXx6z5mVyfWge9qQjOUQmvGR+JAWT1nPfcdD5w/gic+3xHYvqmgirOGhcs7l7B/Cc/a/sFwSzExnirSRDUJogGAMpnATl8/SuhLWlIaW0q9NGCnQdopJ5EVvpFcNe1MLh6XyV/f3cBaT3BXrOkj0jlreDqzRmXw75UH+Xr7Yc4Zns6snD4s3xccKE4IqTvfO0F7bUgyWPyD0mLZUljNBWMyGJwez+D0OC55eVlg7PGCXrIh9G/A2PJRv9fQ8g4nCkr4exhd5erpScLfrLRxGy3+J/1ibxR9ILjmu5TQWMkpYgdXWL6DN7/nXBHNAdMQdsj+rPDF8bVvIpt8g6ghFh/asTcPGcT11w+ktNZJndPDy4v3kre3nD9+uZM/frkzbB9bq9nE3FO0fPE5k/qxNreSO6drwVd9BaxO6OeAMBos4kcvyeHKSf0ZnK4FZPV6PL2PM4tfn7tJwPxfnt4sJRSaynEoV4+iR+Dy6ulzx+Z6ejDZGWZxUXcl1LUTztUjpWTB5iLOGp5OnL9Wf0lNcIVSEz5icdDr4BewZzMUbYLireCu5z9+I9kz4edMWjaFsZkZrD5QEXFOCdFW+iRG0ydRE/hJA5MZ8sAXgf3hFlsZ3X19EqN56+enBD6H+un12jovXhl+tSpodWtOOyml2THHm/Drt50aZ2dsv6SwY/S/D+XqiYAQYh5wIVAipczxb3sWuAhwAfuAG6SUVWGOnQW8CJiBf0opn+7EuSvC0LSA6xhZ/P4FRKHFwo5XpJRsKawmzm5hUFpcYPvS3aUs3lXCwxeNoqI+uA59OOHfWljD7e9u4A8Xj+K60waAs4bs+k3cYv2Yk017SaSeaOE/zw+ALQ4yRuMdN5eVlQnM2y7Z7DuJb2ZcgXPZQmJbyQlPCBHq0NWp4WjpdyA+xMLXP7cnhTIlzs5jl+YwY0TvNh9zLEiJs/PkZaNbLOugLzxsy/fYE2mLxf8G8FfgTcO2r4H7pZQeIcQfgfuBe40HCSHMwMvADKAAWCOE+J+UcntnTFwRnoCr5xj9QuvphKG9X3Ucbi/PfbWLO6YPaeZO6Aq+3FrMrW+vJzs1lndvPJUMf2Gya+dpLQBHZCRwz0ebg44xWtPS7UAUrsWxZAHzrCuYsLgQFlWBz80LQKUpjkXe8VQQT4OMoo4opv3oR5x+7pUcrnezYFMRT3zf5ArSa/3HtNLhKyE6vCumJVpKUTda/K/8ZHzge2gv13Rx6YFIXB1mlbOiiVaFX0q5VAgxMGTbQsPHlcDsMIdOBvZKKfcDCCHeAy4BlPB3Ekt2l9I3KSrgcwVw+XPPj1VWj6sVH/+H6wr4p3+V5oMXjmy2v8Hl4cFPtnLPucM7LD7tQRfxA2X1nPrUN7x45bggK/cf3+8PGp9MDZMbd+L8/DtK1vyXPvIwFrxMAnaLvmy0jOXMyTkQm8qvv6rgK+co6gn2t/fvNYqDawt58JOthNLgXxwW10qXrEgPzf7JMeRVNITd15LFb3RxzMrp0+K1U+NslNU178bVnWlaeNizstHaSmf4+H8K/CfM9r6AsfllAXBKmHGKDnKd30o15knrQnwkut/g8vD4Zzu499zhJMa0bKUHLP4Iwq+neYaWEtD5cF0B/11fSEKUlUcuHtXmOXp9klUHyjltUEq7VikbSwwDLN9bHiT8ej35LFHCuaa1/NK2gGRZhVwt2Osdw//kRG6+eg5T33NQ5Iom1WZn7YzpSCn5+NPPCScj9S4PayL472satfmENnMfnhHPzuLawOdwLQDX/34GVrNg9CMLg7bH2y3UOj2d9vD/9u5px11PgiNF/2ZOTNk/QuEXQjyAVovv7SOdiBDiJuAmgP79j9/XtMKqRi57eRkf3HIaA/yLXI4nAit3j8DH/+G6At5ZlUeM1RzWSjei+/gjuXp0l5MvwtLeQv+q1NS4ti+BX7itmEU7DvP+2gLunjmU284ewpsrctmYXxWxlC7A1sJqdhbXIPCRQi3ZooihVfv5x0v/46fmYrJEKZm+cvrZShhlOgiAI2kYc4pv59rLLuCX/9XeBiZFn0aRawVjshLZXFDNNa+v4owhaRHLVlQ3uiMGbvUuVrH2Jh//k5eNRgi4/79bAttCXT0QuWxAYoxVE/5WfgX+ePnoNv0OJ0RZjws3XWfSlU1Qjgc6LPxCiOvRgr7nyPDvS4VAP8PnLP+2sEgpXwNeA5g4ceJx+yD+ZEMhJbVO3luTz72zhnfZPCLllgdq9RzBufVjHZ7WrTx3GIt/3cFKUuNsDEiJDaSVhjYM0TkU0qqvLdz073WBn59buJvbzh7CQ/O3AYQX/qp85MZ3KPvmM+4RJTxrryJB+P32Bf4xVqiXdgpkGhUygSfdV3Hdz+4kpd9QVj/0JRMqmr7RX7+v1cSfM6kfmwuqwxZQs5pF4LvZWlhNvcvL5eOz+Gh9QdC4uf9cBRDUEH1gagzFIT2M2yO8ekGy1uI8xpWzJyonqKenY8Lvz9a5BzhTShnewQhrgCFCiGw0wb8SiNAKovugW9KRLNhjhbHcrhFdgL1H8ButVywMrfUejnB5/Jf/fTmguaACK3sjWvzar0/og6yqwcV7a/IZnBbH9JEtZ40Yry2lRAiBw+3l/eW7GFSzivHr7iUGJ/1EH3bI/izz5bBXZpIne1Mqk6ghmhoZSzWxGB+ZN6cPIspqZkByDCv3lwe2F1Q2cvUp/RmbFT5VELTUR90vnlum3eO0YWnNhF/HaPFbTKZmZYcToiP/qU4emIzFLLjpjEGs2F/O4p1aR60T3apVRKYt6ZzvAtOAVCFEAfAwWhaPHfja/8u1Ukp5ixAiEy1t83x/xs9taMU/zMA8KeW2o3Qfxww9JuY93oX/COanW+mR3DdGAnn8EXz8emXLcBb/R+sKWJ+nZQEbWwb6fJJr561mc0E1ybE2Fg+cxre7DnPZyVnNgnFmvFTvX8M000biacCxvIDowuV4dy3mWm81ADt9/fiZ624KSWv1fozofvdhGfF8te1wYPuozASevGw0VQ2RA56DUuMoq9PcO3pAeVRmAr1irFQ2NP+3izVY/GaTaFZNMrqFUsTv33Ja4Odpw9JZskur5nmsFvF1Z05Qg79NWT1Xhdn8eoSxh4DzDZ8/Bz7v8OyOQ3SL/0gs6s6gJpLw+0s2tMVaj4RelbIt5wiUbPCGf+DoOfDhHkRfbG1qP2e0+A/XOthcUO0/3sMDn2xhweYihmckkJEQBUiGiELGm/Zwk3kBae8U8Ybu7v4apD2BBa4JNMT2Y0VNCkt8Y3HS5A/vnWDncAvtBXV08R2ekRAQ/gcvGBFYDRupEbfT4yMpxkru0xdw4Uvfs7VQq7qZGm9nw0MzGXjfZ82OM1r8ZpMIVI8EeOOGSe2y3k2GlauK8KisHkW7aC1YeTQpqGxgV3Et54zoHdHid3u0ebXWxq8ldLF2e32sPlDBFa+uYMlvp4UNBOqWfGmtky+3FnHaSU3ldx/4eAtvr8oDYNm+MjbkVXJy/6auRaV1TqYOSWVDXhUOt4+i6kZ6xdgorXUCkqm9XXhL9zChuJKJln2kff5/RLnKWG/fRbLQeq+WyCS2TX6aB793UkMM8b3SqPDGked2cc+pw1j45a5mc87qFRMk/NFWc9gKnLrYjujTlC57zojeRPsXW4UT45RYG4eqHdj9Frruu7dbTMS3kKtv9PFbQiz+aWHr/ERGrxChXD2Rue2swZTUOJkzqV/rg3sgSvjbSVda/Be+9ANVDW5yn74gIPyhLgDd8vb4JOV1TiY8voh510/k7OFtX12pC7/L4+Pd1Zpwrz5QEV74De6gW95az7L7zg581kUfoKrBzWV/W86zs8dw+fgsTCZBWa2Tk9JiGWEpZED5fr7+8+OckVJLtreU7fb9xFQ7tfZ+NVBjjoaqTJyxGSz0TmSdHMo631DyZDpPpJ3MBunPgKkAbUG5FhB9/NKcZvnzxgyiaKuZs4an8fmWYn49Yyg/nZJNzsNfBY0/bVDTwyy0B2wovfzCr3d40lfkpsbZWxTiliz+9qK7eI7VIr7uSEqcnZfnju/qaXQZSvjbif7H1BWlaar8vmGP19ck/CFL/Y0+/uX7tIDkO6vy2iX8uvVb6/QEFvrERFhgZGz9Nzg9jlpH+DcRnd9+uJnkWBtn93FyVf1bzM7dQoZ3N+SCU1qpaBhIXVwGX3gHkDFoNP/eayN9YA7z9/u4f+II0hPs3JerlQO2mgUer4zYqCQ+ysIl4/qy+3Atb644SGZiFIeqHYHl+kLA4runUVzj4PMtxVw0NpM4u4Vvf3Nm0BtBYoyVX00fyvxNhc2s9oW/OoPKehdzXlsJNKVY2q3+780/Pi2+5QqWxjx+zeLveFs/oVw9ilZQwt9OdOHvSt+gw9Mk/KFBQD3I6vFKDpZrbfeyesUE9j/1xQ4KKxv569WRrR19NWlNozvwRhHJWHV7fZyXk4GUsL+srtkCqVEil1GmA6RTRbapmFgcTPjGC2Ub+IUJDtvG8TfvT9kgh7GyJoXJ2QMB+MZTwh+Gj2LF7m1M9vUCKiiqDm73ZzWbiLGZgtoLGtGLp+mLj7LTYjlU7cDj8zHv+omclBZHRmIUGYlRQYvgBqXFBdXxAbhz+pBAZUsjQ3trbqDRfRPZUlgdEH7d4u/n/+5DC7iFYgzumkwC+xGotv47eqxWbyu6H0r424n+t9SVWT2NLm9gxWfoPJpcPb5AUNE45tUl2iKkF6+UAYF4YdFu1uZWBqo36q6emkZ3IH/cWKispNbBjW+u44U54/D4JBazCZvZRL3TG7D4LXi42byA31g+wCS06x+WSVTKeA6UxbDUcynve6Zxz7QZfLZ0P9uLapDAN/5URGiynkvrNOu7uNrB9pD2hKlxNvaXhRd+3YqeOSqDD9YVcMaQNJbtLcftle16A2oLb9wwiXUHKwNvWbrFf+u0k3h16T4uG99y8TNjExSLSRzRAjz9d/RYFepTdD+U8LcT3U1gtDzX5FaQHGvjpBArsSO89M0eBqTGcvHYTAD2l9aRnRob5B9udHkDKz5DUy7dBlfP7hJtyX9lmLTDr7cfZlZOBgAvLNoTtE+3kGscnoDbp9Hlocbh5ostRRwsb2BTfhUfrM3H7fURg5ORzm3YHLmkbVvNryy7OM20jcmmXSzwnsLTnqsolUlBmTU6afF2oqzmsAtp9LcNLdgLG/OrKK5xMLJPAtuLtAdAnN1CfgRXj27xzxjZm92Pn8faXC290trBBtstkRJnZ+aoDNb4r2H3W/yJ0VZ2P35eq1Ugja6eI/Xx678rKp1TEYkeV4x68a4S6p2e1gd2EF3wfT5JrcONzyf58SsrOOdPSzrl/B+sK+CLLUWAFlA9+09L+GBt8KKfRrc34I5xGvLfaxzuQM642yup9scENuZXBURPtyxveWsdmwuqglxW+s+6dV/n9ARKFDe4vDz0yVbu/WgL/7c8F4DsXlYucC3k17k3cd2+X/MUf2H0lqe43fwx2aKY37pv4jb3nRTIdG48K3zph9Q4e8QcdX2udf5/z2K/u+TcURn++YLdag7M8YLRfYLqyccZxNRmMTE5O5kbp2bz+KWjw16vM9CtbLvhnqxmU6sZNjZD0TSLyYTd3HEfv1n5+BWt0KMs/tyyem741xouGNOHl1vwYRvZW1JHjcPNeEOaYUvo6Yv1Li+jH1nIjVOzOzzfcLg8vkBO+7ZDWi775sIqrjCknWnC78+88Vv8e0tqmf78UkBzfzS6vDS6tLkWVDYy+5UVrP7dOaTH28kt11aS7iyqDaqI2eDyEmu3BBXkCjxIGqrpVb6e+yyLGcc++trK6PtlJSbpocLch69GPMUfN1qZPXUszy09HOgcpXP3ucP4+dRsxj36NaCVzR3XL4kh6XFEWZvbH8/MHkNUhBr1Y/slAiCRQQ+N284eHOgVCxAXWsPebOKBC1quPXSk6I/RtmTU/OiklIBryOiPN5maXEUdQX/GKB+/IhI9Rvgfmr+VN1dohbUiBfvCMf15zVI3BvdawusXWv2t4r3VTQVIf/rGGtbnVbLxoZltvn4obq8vsIpV/39USIZHo8sbtDDqunmrWbJbW63ZJzGKWTkZ/GtZbrNz/2t5Lg63j/93cl/+t+kQ767J48+Ldgf21zo8xNotNLjcnJ3RSEbpcrJFEYNFIaev2YXN58BtNrNJnsRaOZTy/sN45WAGGTkXMjAlhv0btvPM0lIivUhGGUS6d3wUV0zUHmb2EIt/yuBUrpjYj53FTf78ASkxHPQ/sNLjmx5WRuGPs1uCgt1xrdS472reuGEyQx/8otl2i8kUeAMYnhHfbH9bUT5+RSSO77+MdqCLPhzdjBvd4tetcmO54W8NgcmO4vL6AsXR9ECpySSCFow1uj1BVrku+gCf3zE1qKa8EE2FqDbkVeLweIm3wekJJcQVrOAcSxGJlkqtyffbf8LZUMKHdTq77HkAAB+5SURBVIeJwgVWcEgr+2QmG5NmssI8gXn5fahGi2XcPWAoSw/s42qTaLWRCARnIBnz1kMfbHpdGqOon9wvKSD8ugtIyuB01li7JcilEprxdCxpSXLvOHswf/l2L1az4OYzBvHhumBXntkkMJkE7954KsOOQPhVHr8iEj1G+I8Ven153RpvKbunot5FfJSlXX093V5fwG+v+7SrG9xBD5hGly/g4w8lKcYaKLIGmgBJIM1Uy4WH3uJXvlxO3rIfm8+BHmt1Rfdif2McuytT2O8YQKkcQ0ZWNpV9z+GgL42FO0qZ3DuZWoebapoebg63D49Xy+oxWte/mj408CYxc2RvLj1Zy2gxirJxfKirR88kMop6dqr2sLl8fBYxxoeG4diYENdQV6xcbYvR8euZw/j1zGEA3H/+CO4/f0TQfj0QbOxv2xGUwa+IRI8U/qOZYh+w+FspWezx+jj7T99x6bi+TBjQi4vGZrIxv4r8igYu8mfshMPlabL49dK8lQ0u6gz58Y1ub8TGGEIIsuq2cJP5a7JEGVmilH6ilAHmUsw+N1vIZmvvS/isIpO1Nb34xz03kF/j4fK/ryBaNpUuuK7PAP5wUQ4Ay/YvocHlaWZBOtxe3D4fNrMIykq545zBZCZFcdbwdFLjwi9cig0Sfk2w9Ro6+mIxo8UfH2Vh52OzsJpNQeUVjCWIu9LC70w6y1JXWT2KSPRM4T+KNfe8ejVKd+Sluz6fpKLeRVWDmzeW5/LG8lwuGpvJpS8vA2gm/P9Zk4fdYuaisZn4JM0s/qoGN3XOphWxjW4v9S5v+BozJTv48aafIaySKhmLN7Efe5wDiB44k5s3D2abzOa3Q4dx1agMhuVVkt4rgUqnlvaZEG0JnK+/oTxDjM0SVJ1Sp97lRUr8Fn+TSAsh+PHElmugxIax2gekxHK4xhmogBrkv4+yBEQ+xmpm0sBe3HTGSWzIq/TP0Xxc1KbpDKPjSIVfn4Py8Ssi0TOFvwN/fPkVDfRLjml1nG7xR3K1gPY2oC860jHWjK93eoIs3ns/0urMHPYLvR4/0NMUKxtc/NsQw2h0urC7qhgR04jPU0qmKKefKCFLlMF/CvGY7ExteJZiUlj0kzM4NT2eg+X1bNv0HaD5vgenxzE4XXOf6G39jH1V/9/JTQuOwmXdQFOapcUsIpZ0iIRxparu4++doAVt9WwUo8tKXyGr7//glh8BsNOfz2+09l+8chw1jqOX0tsWjkRzO8tSV1k9ikj0TOFvwxifT/LSt3sDn6c+s5jnfjyW2ROyWj5ONqVzRqLR5W3WnFrPfQctRdIoZDpPfbETaBJ+l8dHCtVkVO2mclUZN5nLmWVew7jFB7jJ6gU3WlcEP5XmZIgezLKM6ylep/mH4/3+cmMHp6iQLBpd+PV4xbOzx9DL0Navsj58/R09s8lqavLxtzWTxvjgS46zYTUL+vhTS8MJ38g+CWHPo9+L0bo19tDtjnSWYCvdV0SiZwp/G0z+lQfKg1IZAVbuL29V+HWLP1JzcdDy4ctqgy3+Jz7fEfi5sLJJ+I116GNwkEA9p/h2w/8+Y4mYT1qUlsuvB2LzZRpL069mSSEkp2WyqsTEIZlC34FD+cdPp4DVzMHlubBO63mjC74xpz1U+GNtlkD2z+i+ic3cNIeqwq+M1eMOFrMIBGLHZCVG/F6MGB8Ql4/PYvLAZD7zL1wL5+qItJJVz/U/Xtwa1/1oIEv3lAYC2l2JyupRRKJHCn9bqHc2t9hbEnOdttToaXQ3d/UA3HnOEF78Zg8FBiEtqaxlmmkDZ5s2Mte8CLO/ro3caGGZbzK7zYPZ6upDoUzluZ/O4vp3dvKjhBS+yCvmvNQMfijWmplMSE4KCLrFUJJAd9MYM4tCg6AmkyDOZqHW6QlrsdeGWQmdGG0NbLeaTaTG2fnHtROZPDC51e8HCMnMMTOkdzxnOD28sGgP04Y1dcq6e+bQQEZPOKLb2F/2WNEvOYaFvzqzq6cBqHr8isj0SOFvi6snXLNyZ0imTp3Tw/82HuKqyf0Cf0Rt6UrVGGLxW/EwTOQxtW4fwrqZ4Rv/B+XxOCvy6V20iTdsmqW7wHsKy3057PT14/V7ruOuP67g9AEpLNurre7M7J1OtHUP5X7ff1JMk/vGajEu+W/6gw/3xx9q8YPW7LzW6Qm4fYzoeedGUuJsgXUGeu2bGa30xjUS7gEzvn+vZgvpbju7eUVMI61VDz2RUVk9ikj0TOFvg/KH6xFr3Pbop9uZt+wAAEN7xzHRb8n62nByV00pw/L/w1+tKxgj9tPf5F9gtQnGmwXOkhi8lVbyGmOpsPZhnutK1viGUUGTH7tOav7usVlJAeFPi7MTYzNT7n+bSIpp8sMba72Y/S2YeieET6UMF6ztkxhFYVVjszIHoOWd1zg8vGGIU6TG2gNF4Cym9qdRttRDtj3o93K8uHqOJ46TlyDFcUiPFP62ENbiN6Ro6qIPUNngprjawRdbiwI9ZnXMeDnHtJ5Jpl2cYdpMpign/oNGJgH5Io1N8iQ+cp/BftmHOZdeypNLyhjUtzcer+TLbcV6s6hm6NU3jXnwJpMgxm7mYJm2gjXJ0PPVFsbiN9bhNxLO4s/qFc3ag5VBQWAjxvRL0N42jD7+tjI5O5nVByo6zQ0RHQjudsrpehQqq0cRiR4p/G0J7oYT/tASxzqFlQ28umQfa/9/e3ceJVV1J3D8+6u9Fxq6WVu2hgYFwggKKoga14i7oo5xkhkn0RCTmDEeZxKTnCRn4iSTbdTxTBL1RMdlokkmjoYoCeNoDDO4EsQIAgqKyL7YAk2vVXXnj/de1avqelVF0dX1qP59zunTVa9eVV+u1q9u/e59v/teGwtamxjGQW4ILeXcwComy3YikiBhhBXJmaxIzmT+rBncvaWF3+0ZkfE6Vw1rIRnupDueZItdfsCLs6FJOBTgC2e1pnb8GtMQS9XZz0j1uIKv8+8Y11iT87WzSyRY51ofErk+FKDvDlw1kWBqovtwrkx++NMne24UX4rU5K4GuRTnOhb9FqS8VGfgL+KcXOu8O3oS0NkG7y7nltATNNBBg3Qw81Xh7APvUB/9kKHbOgjGrMC6PPEXPJ+czarkFFbHTmZ3t70cctLxvLJ+PdnD+UgwQCwcpKs3kap66cUZTUeCwj+cPy11fOywdDBvqkt/G4i4yvg6q3Dc57rlSvU4e8m6LxRzq8sqh+D+8DicwB8LBz0/XErhtEODXF+H8Z9FDTLVGfiLiPy59oa94uCj8KNfQ6KHLwaFdmo4QC10NLA1OI63eqZjog283xVjdbKVlSYdkCfEaqDDGsW3d8f5IMfmJ5FQgFg4wJ6D3bR3xxlRH2Fvew9DoqE+K2cO2gE4O38+1jWKn+C64CwcSgc+Z6noGcemV8eA9cHTk0jmDLzOt4e2jtyB312E7YoTxmaUDT6cVE9/c7pHB/x96Yeh8lKVgb8Y2XvDzg+sZXH8UfaNO4+m825l2j27uXxOCzv2d9HW0UMsFGTle21ECdCdIyXkTrVsa+vEGCvQu5eIRkPWiH/THqvMwPimWva29zB6aIyDu9tzti+ctfRy7LB0sHcHfvfk7gUzx/Dy185JXQnrbmNPInet95MnWRd8Xe5x8ZNzpe3pU0dw5zWz+a7ruoRwCZO7/cX5YHSXalYWDfzKS1V+GcxVq2drWwef+NlL/PT5TQB0dhziRHmLb4Ye5pHwd7k//CM2JZu5bv8N9I49hR4TYkJTLTPHDmX9joOpzc2zVwM5ZQ/c6Y4tH1gj/8+eMTnj3EgoQDQUoNdeEnrjR1tpHVnH353Td8niQVeqx80Z8TvfHtyv7RCRPkEfrG0OIXegHjushs3fu8hzSaaz7t5Z1RQL+WPEP2VUPf90+cyMnbeOVl88ewrnTh/Vb6+ngV95qcoRv5PqWbt9Pw+9sJnvLTqeR1/ewoqNe5natgLz1lP8ePsqiEKnibDBjGNJYj6/bfpbOkyMR16y6uLEwlbhtHv+uIm3s0bkjiU3LaC9K85dz77N+p3W8kYn8J9x7EjOmjaKRT95AUjn+B0nTmjk2VvPZNOevq99ILVGPjNIj7cD/6ITxmasjCkmz/7I9aewbO3OjHIMxXJy6c4FbNlbC1bSJ+dNrOjf7y+32qWa+4vm+JWXoz7wf/aRlX2OOYF/6Rs7+NXKrdz20VFctO4rfDq6ihGHDrAvMYFH4ot4NzmG55InchArZXLluHGsWLWV2596E7AC/8ThdUxoSu/+lK02EqI2EuJbl8zgyhPH8ZmHV/K+HfhH1kdThczAHqW7JkWH2ssx63IUOEulerLevcProzxzyxm0uLYYhMxUj5fxTbXccPrkgufl4lwZ6wT+WEbg15GlH+mVu8rLUR/4c5ULdjh7y0ZW/JCP7H+ex5OnsTYyi6W9p7MzxwVc9Vlr1Z3gNrQm99p2t2goyJyJjdS4Nv8eXh/JWCIaCQVS+fVIMJBKz9RG+062tnsEfoCpOQq8Zc8F9Dcn8DtLOKMZ1w3o0NKP9Mpd5aUq37HOOv7Qrtf59/D3qV99P8uHXMStvZ/nP7pOxwTDTM4aMUNmxUhIXxxUTOBPPSeSLiFQH83cfSsSSqd63BdENcTCPPqZUzJex1l1FAkV9+bNngvob+ObrBTTxcdbewnoiN+/UvX4q/LdrfpDwf81ROQBEdktImtcx64WkbUikhSRuXmeu1lE3hCR1SLSNydTBlF6OCf+v5gHFnLHh7cwM7CZXXNu5YGGGwHr4qZdB7q5cs64Phc4ZZcrcCZPswN/vp2enO3/asPWxiDuoBgJBlKTotkXRJ3amnmxV3u394jfzRnUeVWv7C+jhsRY9+2FfHpBC5B5LUBIk8m+pJO7yksxqZ4HgX8DHnYdWwMsAu4t4vlnGWP2Hn7TDs+VgeV8PvQbWgM7IAHx9mP5SeIyHohfwP3Hf4y2Lesyzm8dWdensFd24TCvVE9jbSS1O1Y251uCs+7dHZAjwUBqUrTQNoFeOf5s4YC1Nn8gJljde+BmXsClAcaPNPArLwUDvzFmuYi0ZB1bB/6YPLo08AKXBF/kvOCfWJ1s5c7eK9kXHsOiS7/EHfe8Clibgnd0xwkIOFWVW0fWZ23ecUyfSVavwD+sNuwZ+J0Rv3Olq3vSNeDaFzbfEsiAFB/4gwGBxMCvrIn5aFWPyk0Dv/JS7sldA/y3iBjgXmPMfV4nishiYDHAhAkT8r/qO8/D778GbZu5O3KIfWYIP41fwh3xq+klRG0wyJy29JWzXb0JDnXHOWZYDVvbrHIGk0bU4bwt7r72BC45vrnPRLFXqsddIyebMyqusT9EsoNienNw72BZFw2llnMWWq3jFGQrd6onW0aqRy+b9SX9z6K8lDvwn2aM2SYio4BnRGS9MWZ5rhPtD4X7AObOnZu/6MKzt8OH78HcT/G15Z38InEWSdd0RTxh2Lw3vfyyqzdJe3ec6c0NqcAfCgZS31iiIet2di36WFbaJvt4LjVh61xnxO8V+PMFy1g4yF679HKhi6Ocx4tZztmfoq5Uj+b4fUoDv/JQ1nesMWab/Xs38ARw8hG/aG8n7HgdTrqB+Lm382jinIygD9YE7uZ9h1JLELt6ExzqSaSuenW+ATvvCydH7bWqJ5oV2PK9n1KTu1FnxJ95djGpnlg4kFqZUTjV03eHrYHgHvFrjl+po0vZooWI1InIEOc28DGsSeEjs20VJHthwrycm6k43tlziEn2ks0PO3tJJA0Tm+oYEg3xw6tm2Y20fjnr0L3W8YezllTm+7s1WTn+7HmQ1GvmSPU4tffdE6eFRvJO0B34VI/m+JU6WhWznPMx4EXgOBHZKiLXi8gVIrIVmA88LSLL7HOPEZGl9lNHA/8nIq8DrwBPG2N+X0ojN+1pZ9FPVlh571UPQTAK40/JWVPfsXnvIabadXScHasa68K88Y/npzZUT4/4ncCfmbt3RrVD7ONODHcCf2OOXL/zLcErHeSM+HPtEbvsS6fzu5tPzwyqBdbxO98cBvpinajm+H1PNNejPBSzqudaj4eeyHHuduBC+/Y7wKwjap1tzbb9rNrSRs9vvwxrfwmn3QK1TXTlqWl/sDvOmKFWobJ97dZEb/aqHWfVQzrVk7vm/NnTRnHbBdOoi4b4xpNr6I4nePPb5+dcNeGkerxWVDhFznKleobXRxleH81KoxSa3LUejycLbxTfn9xzFX5Y3aWUKt5R8R29Zf3PeCl6EyPWPgAn3QBnfhXIvYuW24j6KCKw75A14s/O4TvxypmcrIuEMvLVzq5OgYBw40dbGW1Xt+yJJ6mNhHKO6mtdV+7m4tS6yTXid7hft9Bo+q5rZnPu9FGMb8q9zWK5FDNXoZTyJ//X6ml7j1nr72CTaWbjCV+h4bRbWPLiNj61YFLGHrm5NNSEiYWC7HVG/FkjeuercMgV4N/+zoW8sHEvy9/ue82Zc7VtV56/6+TavcKh8xrjPfbDhfSKmYhr5ZGXWeOH8bPrTsp7TjlYbatsLX6VWzE70KnBzf+Bf5c1H/z3vTeyuPUaXluxmfuWv0NDTThVC99LQyxELBxgl32x1bCazHLETkzNTsucOmUEp07JLKEA6WJq3fH83zTymTe5ibuumc3CmWM8z3Hy535eLSMixELBsheHU0r1P/+/a3euwSBsMOPp6Ekwyk63PPLiewVTPQ01YWLhIDv2W4G/sS5zMtYZTSeL2auR9BxBvlU9qQJZHiN1EeHyE8bmvRbAmVvwe1CNhQM6savUUcj/I/6df+bD2Dg6umJ09CZSgfWNbfvZ1pZ/w/KGWDi1ygagKWsDksMNWU7+vidf4Hde2/Xi93zyRBoOo8JnLFyZtfmHKxYOalkApY5C/o4sm56DDUt5d4hVALSrJ5GqBw+w5PXteZ8+tCaUURStJmuU3TLCyrPnG327OYE/3zcNZyXR5JHpss8LZzb3qb6Zj9Oegb4a93DFwkGd3FXqKOTvEf9rP4faESw95iZ4fxcdPYlU/ZGGWIiVm9vyPr0hFk6NnpvqIn0mSn9w1SwunXVMwbkCh7MqKJknM3TWcaP4+Q2nMH/y8KJeMxenzX4PqtFQIOODWPmLfhlTXvw9pHz/FZh4Ku1JK0XT0RtPBZqxjbV0FsjxD4mFU/nyxtq++8zWR0MsnNlcdHOcJYyFJl0XTBmRWgpaCqfNznyGX0XDQc3x+5Bz1Xi+JcNqcPPviP/Adti/BeZ9ju4tVk69qydBKCAEA8KoIVHW7cj/ErFwIFVJM3titxQiwu2XfYSTJjUd8Wvl/zvW7+nNDWX9O0cqFgqQ1BG/7/zgqlk8+vIW5k5srHRTlE/5d8S//mnrd8tpqeWTHT0J4glDyA782WrCQc6dPjp1X0SY22IF6c6e0pdguv31/BamjSlvQN64ux3wf+CfOXYoM3zexsFo5JAoN587Va+oVp78OeLv7YQ/fh+aZ0Pz8XT3WhuqdPQmaEgawsEAoxr6Bv43v30+IsJ3nn6Tle9Z+f9TW61c+/qdBweu/Udo4cwxPLl6O2ceN7LSTcnrGxfPqHQTlFIl8Gfgb9sMnTG44h4gvW6+qydBPJG0Uz3W6pnaSJAOezTvjHC+flE6IB03egizxw9j8RmTB/AfcGQWzmzm3X++UEdsSqmy8Gfgj3fBxffAlHMBMlM9SUM4KKnc/eSRdazZdsDzpQIB4ckvLCh/m/uZBn2lVLn4N8c//ZLUTac2TkevleMPBiRVu/686d6lD5RSSvXlz8AvAagZlrrrjPi7ehL0JpOEAgEWTBnBr2+cz+fObAVgwZTS180rpdRg4s9UTyCzWU6Ov6M3TsJO9QCpFTu/u/l0Jg4f2LLESil1tPJp4M8soeCUX+7sSad63Py+7FEppfzEn6mePiN+9+Ru0vfFy5RSys/8GUE9Uj2dvblH/EoppYp31AT+YEAwBtq746mtEpVSSh0+f0ZQV44/nkiSSBoa7XX7B7rihHXEr5RSJfNp4E+P+DvsCpxD7Y1MDnb1aqpHKaWOgO8D/7I1OwE42a6IebArrpO7Sil1BPwZQUPpAmyPr9rKlFH1nD3Nqrp5QEf8Sil1RPwZ+MPpi7H2tvdw7Oj61OYSxhTeCEUppZQ3fwZ+l0PdceoiIWKR9IRvKOD7ZiullG/5PoIe6o5TFw2lNjoHCOqIXymlSubrwG+M4VBPgrpokNpwesJXl3MqpVTpfB34u+PWGv7aSIhYJN3UoKZ6lFKqZAUjqIg8ICK7RWSN69jVIrJWRJIiMjfPcxeKyAYR2Sgitx1u4w51xwGoj4aojbhG/JrqUUqpkhUzdH4QWJh1bA2wCFju9SQRCQI/Bi4AZgDXikhRm7S+sW0/W9s6ONRtXbxVGwlSE3ZN7mrgV0qpkhUM/MaY5cAHWcfWGWM2FHjqycBGY8w7xpge4BfAZcU27Iwf/IFla62Lt+qjIYIBIRKymqurepRSqnTljKBjgfdd97fax3ISkcUislJEVgIkDTzx2jYAaqNWmsdZ2RPSyV2llCqZb4bOxpj7jDFzjTFzAaaNGcLGPe0A1EetgF9rp3t0OadSSpWunIF/GzDedX+cfawgAZqHxuix6/A7E7sNdqG2sKZ6lFKqZOWMoK8CU0VkkohEgI8DS4p5oojQPKwmdb/eTvU01kYAndxVSqkjUcxyzseAF4HjRGSriFwvIleIyFZgPvC0iCyzzz1GRJYCGGPiwE3AMmAd8CtjzNpiGiUCzQ2x1H0nt++UZtYcv1JKla7gZuvGmGs9Hnoix7nbgQtd95cCSw+3UQIZI/66qJPqsX7rDlxKKVU6X0ZQEaFleLpCZ9RextkQs0b8xlSkWUopVRUKjvgrQYA5Ext5/HPzGVYbQcRK7bh34VJKKVUafwZ+sUb9cyY2ZRx3VvXs79TAr5RSpfJnqofck7fOiP9AV3wgm6OUUlXFn4HfY9HOaHulz5CYL7+oKKXUUcGXEdQr8M+b3MS/XD2L82eOGdgGKaVUFfFn4PdI9YgIV84ZN8CtUUqp6nJUpXqUUkodOX8G/ko3QCmlqpg/A78O+ZVSqmx8Gvgr3QKllKpe/gz8lW6AUkpVMX8Gfh3yK6VU2fg08Fe6BUopVb38Gfgr3QCllKpi/gz8OuRXSqmy8Wfgr3QDlFKqivkz8GvkV0qpsvFp4NfIr5RS5eLPwF/pBiilVBXzZ+DXyK+UUmXjz8CvY36llCobfwZ+jftKKVU2GviVUmqQ8Wfg11SPUkqVjT8Dv8Z9pZQqG18G/nDQl81SSqmq4MsIWxsJVroJSilVtXwZ+JVSSpVPwcAvIg+IyG4RWeM61iQiz4jI2/bvRo/nJkRktf2zpD8brpRSqjTFjPgfBBZmHbsNeNYYMxV41r6fS6cxZrb9c2npzVRKKdVfCgZ+Y8xy4IOsw5cBD9m3HwIu7+d2KaWUKpNSc/yjjTE77Ns7gdEe58VEZKWIvCQieT8cRGSxfe7KPXv2lNgspZRShRzx5K4xxgDG4+GJxpi5wF8Bd4lIa57Xuc8YM9cYM3fkyJFH2iyllFIeSg38u0SkGcD+vTvXScaYbfbvd4DngRNK/HtKKaX6SamBfwlwnX37OuA32SeISKOIRO3bI4AFwJsl/j2llFL9RKxMTZ4TRB4DzgRGALuAbwFPAr8CJgDvAX9pjPlAROYCNxpjbhCRU4F7gSTWB8xdxpj7i2qUyEFgQ0n/osFjBLC30o3wOe2jwrSPCjta+miiMaaoPHnBwF8JIrLSnhtQHrSPCtM+Kkz7qLBq7CO9clcppQYZDfxKKTXI+DXw31fpBhwFtI8K0z4qTPuosKrrI1/m+JVSSpWPX0f8SimlykQDv1JKDTK+CvwislBENojIRhHxqvhZ9Q6nFLZY7rb77M8icmLlWj5wRGS8iPxBRN4UkbUicrN9XPvJJiIxEXlFRF63++gf7eOTRORluy9+KSIR+3jUvr/Rfrylku0fSCISFJHXROQp+35V95FvAr+IBIEfAxcAM4BrRWRGZVtVMQ9SfCnsC4Cp9s9i4KcD1MZKiwO3GmNmAPOAL9j/v2g/pXUDZxtjZgGzgYUiMg/4PnCnMWYK0AZcb59/PdBmH7/TPm+wuBlY57pf3X1kjPHFDzAfWOa6/1Xgq5VuVwX7owVY47q/AWi2bzcDG+zb9wLX5jpvMP1glQ05T/vJs39qgVXAKVhXoYbs46n3HbAMmG/fDtnnSaXbPgB9Mw5rkHA28BQg1d5HvhnxA2OB9133t9rHlMWrFPag7zf76/YJwMtoP2WwUxirsQopPgNsAj40xsTtU9z9kOoj+/H9wPCBbXFF3AV8Gau8DFj/5qruIz8FflUkYw03dB0uICL1wOPAl4wxB9yPaT+BMSZhjJmNNao9GZhW4Sb5iohcDOw2xvyp0m0ZSH4K/NuA8a774+xjyuJVCnvQ9puIhLGC/s+NMf9lH9Z+ysEY8yHwB6y0xTARCdkPufsh1Uf240OBfQPc1IG2ALhURDYDv8BK9/wrVd5Hfgr8rwJT7dn0CPBxrPLPyuJVCnsJ8Df2qpV5wH5XqqNqiYgA9wPrjDF3uB7SfrKJyEgRGWbfrsGaA1mH9QFwlX1adh85fXcV8Jz9ralqGWO+aowZZ4xpwYo5zxljPkG191GlJxmyJlkuBN7CykN+vdLtqWA/PAbsAHqx8ovXY+URnwXeBv4HaLLPFazVUJuAN4C5lW7/APXRaVhpnD8Dq+2fC7WfMvroeOA1u4/WAN+0j08GXgE2Av8JRO3jMfv+RvvxyZX+Nwxwf50JPDUY+khLNiil1CDjp1SPUkqpAaCBXymlBhkN/EopNcho4FdKqUFGA79SSg0yGviVUmqQ0cCvlFKDzP8Dspm93spPbnIAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "alpha_opts = [0.01, 0.25, 0.5, 0.99] # always keep some L2\n", "hyper_parameters = {\"alpha\":alpha_opts}\n", "\n", "# initialize grid search\n", "grid = H2OGridSearch(\n", " H2OGeneralizedLinearEstimator(\n", " family=\"gaussian\",\n", " lambda_search=True,\n", " seed=12345),\n", " hyper_params=hyper_parameters)\n", " \n", "# train grid\n", "grid.train(y='SalePrice',\n", " x=imputed_embedded_nums, \n", " training_frame=imputed_embedded_train,\n", " validation_frame=imputed_embedded_valid)\n", "\n", "# show grid search results\n", "print(grid.show())\n", "\n", "best = grid.get_grid()[0]\n", "print(best)\n", " \n", "# plot top frame values\n", "yhat_frame = imputed_embedded_valid.cbind(best.predict(imputed_embedded_valid))\n", "print(yhat_frame[0:10, ['SalePrice', 'predict']])\n", "\n", "# plot sorted predictions\n", "yhat_frame_df = yhat_frame[['SalePrice', 'predict']].as_data_frame()\n", "yhat_frame_df.sort_values(by='predict', inplace=True)\n", "yhat_frame_df.reset_index(inplace=True, drop=True)\n", "_ = yhat_frame_df.plot(title='Ranked Predictions Plot')" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Are you sure you want to shutdown the H2O instance running at http://127.0.0.1:54321 (Y/N)? y\n", "H2O session _sid_acfd closed.\n" ] } ], "source": [ "# Shutdown H2O - this will erase all your unsaved frames and models in H2O\n", "h2o.cluster().shutdown(prompt=True)" ] } ], "metadata": { "anaconda-cloud": {}, "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.4" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 10_model_interpretability/10_model_interpretability.md ================================================ ## Section 10: Practical Model Interpretability Machine learning algorithms create potentially more accurate models than linear models, but any increase in accuracy over more traditional, better-understood, and more easily explainable techniques is not practical for those who must explain their models to regulators or customers. For many decades, the models created by machine learning algorithms were taken to be black-boxes. However, a recent flurry of research has introduced credible techniques for interpreting complex, machine-learned models. Materials presented here illustrate applications or adaptations of these techniques for practicing data scientists. #### Class Notes * [2018 JSM Presentation](https://github.com/jphall663/jsm_2018_slides/blob/master/main.pdf) * [Interpretability: Good, Bad, and Ugly slides](notes/MLI_good_bad_ugly.pdf) * Practical ML interpretability examples * [Monotonic XGBoost models, partial dependence, and individual conditional expectation plots](https://github.com/jphall663/interpretable_machine_learning_with_python/blob/master/xgboost_pdp_ice.ipynb) * [Decision tree surrogates, reason codes, and ensembles of explanations](https://github.com/jphall663/interpretable_machine_learning_with_python/blob/master/dt_surrogate_loco.ipynb) * [Disparate impact analysis](https://github.com/jphall663/interpretable_machine_learning_with_python/blob/master/dia.ipynb) * [LIME](https://github.com/jphall663/interpretable_machine_learning_with_python/blob/master/lime.ipynb) * [Sensitivity and residual analysis](https://github.com/jphall663/interpretable_machine_learning_with_python/blob/master/resid_sens_analysis.ipynb) * [Comparison of LIME, Shapley, and treeinterpreter explanations](https://github.com/h2oai/mli-resources/tree/master/lime_shap_treeint_compare) #### [Sample Quiz](quiz/sample/quiz_10.pdf) #### [Quiz Key](quiz/key/quiz_10.pdf) #### References **General** * [Interpretable Machine Learning](https://christophm.github.io/interpretable-ml-book/) * [Towards A Rigorous Science of Interpretable Machine Learning](https://arxiv.org/pdf/1702.08608.pdf) * [Explaining Explanations: An Approach to Evaluating Interpretability of Machine Learning](https://arxiv.org/pdf/1806.00069.pdf) * [A Survey Of Methods For Explaining Black Box Models](https://arxiv.org/pdf/1802.01933.pdf) * [Trends and Trajectories for Explainable, Accountable and Intelligible Systems: An HCI Research Agenda](https://dl.acm.org/citation.cfm?id=3174156) * [UC Berkeley CS 294: Fairness in Machine Learning](https://fairmlclass.github.io/) *** * [Ideas for Machine Learning Interpretability](https://www.oreilly.com/ideas/ideas-on-interpreting-machine-learning) * [An Introduction to Machine Learning Interpretability](https://www.safaribooksonline.com/library/view/an-introduction-to/9781492033158/) (or [Blackboard](https://blackboard.gwu.edu) electronic reserves) * [On the Art and Science of Machine Learning Explanations](https://github.com/jphall663/jsm_2018_paper/blob/master/jsm_2018_paper.pdf) *** **Techniques** * **Partial Dependence**: *Elements of Statistical Learning*, Section 10.13 * **LIME**: [“Why Should I Trust You?” Explaining the Predictions of Any Classifier](http://www.kdd.org/kdd2016/papers/files/rfp0573-ribeiroA.pdf) * **LOCO**: [Distribution-Free Predictive Inference for Regression](http://www.stat.cmu.edu/~ryantibs/papers/conformal.pdf) * **ICE**: [Peeking inside the black box: Visualizing statistical learning with plots of individual conditional expectation](https://arxiv.org/pdf/1309.6392.pdf) * **Surrogate Models** * [Extracting tree structured representations of trained networks](https://papers.nips.cc/paper/1152-extracting-tree-structured-representations-of-trained-networks.pdf) * [Interpreting Blackbox Models via Model Extraction](https://arxiv.org/pdf/1705.08504.pdf) * **TreeInterpreter**: [Random forest interpretation with scikit-learn](http://blog.datadive.net/random-forest-interpretation-with-scikit-learn/) * **Shapley Explanations**: [A Unified Approach to Interpreting Model Predictions](http://papers.nips.cc/paper/7062-a-unified-approach-to-interpreting-model-predictions.pdf) * **Explainable neural networks (xNN)**: [Explainable Neural Networks based on Additive Index Models](https://arxiv.org/pdf/1806.01933.pdf) ================================================ FILE: 10_model_interpretability/quiz/.gitignore ================================================ key ================================================ FILE: 10_model_interpretability/src/dt_surrogate.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Decision Tree Surrogates (Global Surrogates)\n", "***\n", "Based on: Craven, Mark W. and Shavlik, Jude W. Extracting tree structured representations of trained networks. Advances in Neural Information Processing Systems, pp. 24–30, 1996.\n", "\n", "https://papers.nips.cc/paper/1152-extracting-tree-structured-representations-of-trained-networks.pdf\n", "\n", "** Requires GraphViz **\n", "\n", "For MacOS: brew install graphviz\n", "\n", "http://www.graphviz.org/" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminaries: imports, start H2O, load data" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# imports\n", "import h2o\n", "from h2o.estimators.gbm import H2OGradientBoostingEstimator\n", "from h2o.estimators.deeplearning import H2ODeepLearningEstimator\n", "from h2o.backend import H2OLocalServer\n", "\n", "from IPython.display import Image\n", "from IPython.display import display\n", "import os\n", "import re\n", "import subprocess\n", "from subprocess import CalledProcessError\n", "import time" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321. connected.\n" ] }, { "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", "
H2O cluster uptime:3 mins 26 secs
H2O cluster version:3.12.0.1
H2O cluster version age:18 days
H2O cluster name:H2O_from_python_phall_9dbhro
H2O cluster total nodes:1
H2O cluster free memory:10.38 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:locked, healthy
H2O connection url:http://localhost:54321
H2O connection proxy:None
H2O internal security:False
Python version:3.5.2 final
" ], "text/plain": [ "-------------------------- ----------------------------\n", "H2O cluster uptime: 3 mins 26 secs\n", "H2O cluster version: 3.12.0.1\n", "H2O cluster version age: 18 days\n", "H2O cluster name: H2O_from_python_phall_9dbhro\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 10.38 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: locked, healthy\n", "H2O connection url: http://localhost:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "Python version: 3.5.2 final\n", "-------------------------- ----------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# start and connect to h2o server\n", "h2o.init(max_mem_size='12G')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "# load clean data\n", "path = '../../03_regression/data/train.csv'\n", "frame = h2o.import_file(path=path)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Clean and prepare data for modeling" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# assign target and inputs\n", "y = 'SalePrice'\n", "X = [name for name in frame.columns if name not in [y, 'Id']]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# determine column types\n", "# impute\n", "reals, enums = [], []\n", "for key, val in frame.types.items():\n", " if key in X:\n", " if val == 'enum':\n", " enums.append(key)\n", " else: \n", " reals.append(key)\n", " \n", "_ = frame[reals].impute(method='median')\n", "_ = frame[enums].impute(method='mode')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# split into training an validation, and 30% test\n", "train, valid = frame.split_frame([0.7])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train a \"black box\" model " ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "deeplearning Model Build progress: |██████████████████████████████████████| 100%\n" ] } ], "source": [ "# initialize pre-tuned nn model\n", "nn_model = H2ODeepLearningEstimator(\n", " epochs=50, # read over the data 50 times, but in mini-batches\n", " hidden=[170, 320], # 100 hidden units in 1 hidden layer\n", " activation='Tanh', # bounded activation function that allows for dropout, tanh \n", " l2=0.007, # L2 penalty can increase stability in presence of highly correlated inputs\n", " adaptive_rate=True, # adjust magnitude of weight updates automatically (+stability, +accuracy)\n", " stopping_rounds=2, # stop after validation error does not decrease for 5 iterations\n", " score_each_iteration=True, # score validation error on every iteration\n", " reproducible=True,\n", " seed=12345) \n", " \n", "# train nn model\n", "nn_model.train(\n", " x=X,\n", " y=y,\n", " training_frame=train,\n", " validation_frame=valid)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.11630598893179232\n", "0.16642979501619798\n" ] } ], "source": [ "# measure nn AUC\n", "print(nn_model.rmsle(train=True))\n", "print(nn_model.rmsle(valid=True))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Use a decision tree surrogate to generate explanations of the \"black box\" model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### First bind the \"black box\" model predictions onto the training frame" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "deeplearning prediction progress: |███████████████████████████████████████| 100%\n" ] } ], "source": [ "# cbind predictions to training frame\n", "# give them a nice name\n", "preds = nn_model.predict(frame)\n", "preds.columns = ['predicted_SalePrice']\n", "frame_yhat = frame.cbind(preds)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Train decision tree surrogate model" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm Model Build progress: |███████████████████████████████████████████████| 100%\n", "Model Details\n", "=============\n", "H2OGradientBoostingEstimator : Gradient Boosting Machine\n", "Model Key: dt_surrogate_mojo\n", "\n", "\n", "ModelMetricsRegression: gbm\n", "** Reported on train data. **\n", "\n", "MSE: 5534559322.383154\n", "RMSE: 74394.6189074395\n", "MAE: 56783.64960536173\n", "RMSLE: 0.3829743881998093\n", "Mean Residual Deviance: 5534559322.383154\n", "Scoring History: \n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
timestampdurationnumber_of_treestraining_rmsetraining_maetraining_deviance
2017-06-25 13:48:16 0.000 sec0.080668.650073461677.57649626507431104.6606970
2017-06-25 13:48:16 0.022 sec1.074394.618907456783.64960545534559322.3831539
" ], "text/plain": [ " timestamp duration number_of_trees training_rmse training_mae training_deviance\n", "-- ------------------- ---------- ----------------- --------------- -------------- -------------------\n", " 2017-06-25 13:48:16 0.000 sec 0 80668.7 61677.6 6.50743e+09\n", " 2017-06-25 13:48:16 0.022 sec 1 74394.6 56783.6 5.53456e+09" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Variable Importances: \n" ] }, { "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", "
variablerelative_importancescaled_importancepercentage
OverallQual6693422366720.00000001.00.8953512
Neighborhood382922424320.00000000.05720880.0512219
GrLivArea166622543872.00000000.02489350.0222884
BsmtFinSF1148063469568.00000000.02212070.0198058
TotalBsmtSF84719640576.00000000.01265710.0113326
------------
MiscVal0.00.00.0
MoSold0.00.00.0
YrSold0.00.00.0
SaleType0.00.00.0
SaleCondition0.00.00.0
" ], "text/plain": [ "variable relative_importance scaled_importance percentage\n", "------------- --------------------- -------------------- --------------------\n", "OverallQual 6693422366720.0 1.0 0.8953512314133782\n", "Neighborhood 382922424320.0 0.057208764566226644 0.051221937802009065\n", "GrLivArea 166622543872.0 0.024893475227329872 0.022288403698948227\n", "BsmtFinSF1 148063469568.0 0.02212074204433569 0.01980583362917365\n", "TotalBsmtSF 84719640576.0 0.012657148456256085 0.011332593456490824\n", "--- --- --- ---\n", "MiscVal 0.0 0.0 0.0\n", "MoSold 0.0 0.0 0.0\n", "YrSold 0.0 0.0 0.0\n", "SaleType 0.0 0.0 0.0\n", "SaleCondition 0.0 0.0 0.0" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "See the whole table with table.as_data_frame()\n", "\n", "Generated MOJO path:\n", " /Users/phall/workspace/GWU_data_mining/10_model_interpretability/src/dt_surrogate_mojo.zip\n" ] } ], "source": [ "yhat = 'predicted_SalePrice'\n", "model_id = 'dt_surrogate_mojo'\n", "\n", "# train single tree surrogate model\n", "surrogate = H2OGradientBoostingEstimator(ntrees=1,\n", " sample_rate=1,\n", " col_sample_rate=1,\n", " max_depth=3,\n", " seed=12345,\n", " model_id=model_id)\n", "\n", "_ = surrogate.train(x=X, y=yhat, training_frame=frame_yhat)\n", "\n", "# persist MOJO (compiled, representation of trained model)\n", "# from which to generate plot of surrogate\n", "mojo_path = surrogate.download_mojo(path='.')\n", "\n", "print(surrogate)\n", "print('Generated MOJO path:\\n', mojo_path)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Generate GraphViz representation of MOJO" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Discovered H2O jar path:\n", " /Users/phall/anaconda/lib/python3.5/site-packages/h2o/backend/bin/h2o.jar\n", "\n", "Calling external process ...\n", "java -cp /Users/phall/anaconda/lib/python3.5/site-packages/h2o/backend/bin/h2o.jar hex.genmodel.tools.PrintMojo --tree 0 -i /Users/phall/workspace/GWU_data_mining/10_model_interpretability/src/dt_surrogate_mojo.zip -o dt_surrogate_mojo.gv --title Home Prices Decision Tree Surrogate\n" ] } ], "source": [ "details = False # print more info on tree, details = True\n", "title = 'Home Prices Decision Tree Surrogate'\n", "\n", "hs = H2OLocalServer()\n", "h2o_jar_path = hs._find_jar()\n", "print('Discovered H2O jar path:\\n', h2o_jar_path)\n", "\n", "gv_file_name = model_id + '.gv'\n", "gv_args = str('-cp ' + h2o_jar_path +\n", " ' hex.genmodel.tools.PrintMojo --tree 0 -i '\n", " + mojo_path + ' -o').split()\n", "gv_args.insert(0, 'java')\n", "gv_args.append(gv_file_name)\n", "\n", "if details:\n", " gv_args.append('--detail')\n", "\n", "if title is not None:\n", " gv_args = gv_args + ['--title', title]\n", " \n", "print()\n", "print('Calling external process ...')\n", "print(' '.join(gv_args))\n", " \n", "_ = subprocess.call(gv_args)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Generate PNG from GraphViz representation" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Calling external process ...\n", "dot -Tpng dt_surrogate_mojo.gv -o dt_surrogate_mojo.png\n" ] } ], "source": [ "png_file_name = model_id + '.png'\n", "png_args = str('dot -Tpng ' + gv_file_name + ' -o ' + png_file_name)\n", "png_args = png_args.split()\n", "\n", "print('Calling external process ...')\n", "print(' '.join(png_args))\n", "\n", "_ = subprocess.call(png_args)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Display decision tree surrogate" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABLgAAALNCAYAAAAsmtgeAAAAAXNSR0IArs4c6QAAQABJREFUeAHs\n3Qe81MTax/HHhr0r9oK9944i2NtVmlivWBAFsYDYUETs5WLHir1gQ/TaKyo27L1iwd67KJa77/zn\nvtmbzWb37G6Sc3bP+c3nAyebTSaT70x2s08mk6lyLhkJAQQQQAABBBBAAAEEEEAAAQQQQACBBhWY\nukHLTbERQAABBBBAAAEEEEAAAQQQQAABBBDwAgS4aAgIIIAAAggggAACCCCAAAIIIIAAAg0tQICr\noauPwiOAAAIIIIAAAggggAACCCCAAAIIEOCiDSCAAAIIIIAAAggggAACCCCAAAIINLQAAa6Grj4K\njwACCCCAAAIIIIAAAggggAACCCBAgIs2gAACCCCAAAIIIIAAAggggAACCCDQ0AIEuBq6+ig8Aggg\ngAACCCCAAAIIIIAAAggggAABLtoAAggggAACCCCAAAIIIIAAAggggEBDCxDgaujqo/AIIIAAAggg\ngAACCCCAAAIIIIAAAgS4aAMIIIAAAggggAACCCCAAAIIIIAAAg0tQICroauPwiOAAAIIIIAAAggg\ngAACCCCAAAIIEOCiDSCAAAIIIIAAAggggAACCCCAAAIINLQAAa6Grj4KjwACCCCAAAIIIIAAAggg\ngAACCCBAgIs2gAACCCCAAAIIIIAAAggggAACCCDQ0ALTJil9r1697Oabb06SBesigAACCCCAAAII\nIIAAAggggAACCLRxgR133NFuuummmhUSBbi01fXWW88GDRpUcwFYEQEEEEAAAQQQQAABBBBAAAEE\nEECg7QqceeaZiXc+cYBrkUUWMUXZSAgggAACCCCAAAIIIIAAAggggAACCFQrkMbdgYzBVa06yyOA\nAAIIIIAAAggggAACCCCAAAII1JUAAa66qg4KgwACCCCAAAIIIIAAAggggAACCCBQrQABrmrFWB4B\nBBBAAAEEEEAAAQQQQAABBBBAoK4ECHDVVXVQGAQQQAABBBBAAAEEEEAAAQQQQACBagUIcFUrxvII\nIIAAAggggAACCCCAAAIIIIAAAnUlQICrrqqDwiCAAAIIIIAAAggggAACCCCAAAIIVCtAgKtaMZZH\nAAEEEEAAAQQQQAABBBBAAAEEEKgrAQJcdVUdFAYBBBBAAAEEEEAAAQQQQAABBBBAoFoBAlzVirE8\nAggggAACCCCAAAIIIIAAAggggEBdCRDgqqvqoDAIIIBAfQv8/fff9thjj9krr7xS3wWldAhUIVBP\n7bqeylIFIYsikKmAjoumkpb5/fffm1qM9xFAAAEEWrHAtK1439g1BFIRmDx5sj366KM15TX//PPb\n6quvHrvuW2+9ZR988EHse03NXGeddWzuueduajHeb2GBJG1njjnmsEUWWcQWWGABm2aaaVp4T/67\n+VwuZ5tuumn+eOjYsaPdeeedprKS0hdI0n6mn356a9++vc0333z+s2LqqbmeVaqG6qld11NZSnnV\n4/z777/fKgmApF32jTbayGaZZZa0s23z+ek4uOWWW2zChAn2+uuv+3+ffPKJzTXXXLbUUkvZZptt\nZltttZVtsMEGFv5sO+aYY/x67777bps3BAABBBBoqwIEuNpqzbPfFQv8+OOPppOmd955x3755ZeK\n1ptqqql8cKJ3794lA1zjxo2zESNG2IcffljxifkMM8xgyyyzjF155ZUEuCqqiZZdSG1nyJAhpmBm\nrVeVFdxSoHThhRf2bapr167Wq1cvm2666Zp95x566KF8cEsbf+KJJ+zqq6+2gw46qNnL0hY2qPYz\ndOhQ/9nz888/17zLakPzzjuvD3Yp4LXeeutZ9+7dbdVVV605z9a0Yj2163oqSyPV8TbbbFPx92ia\n+/X888/bGmuskWaWbT4vnWvtu+++vqdwFOPbb781/VPg66STTvKfaT169LBNNtnEXn31Vbvgggvs\nr7/+iq7GawQQQACBNiTAJd02VNnsam0C6kGjk1j9wNRfXTUslWaddVYftNIP00mTJtnxxx9falHr\n16+fTZw40X799Ve7/PLLfRCj1MLqsfXII4/4ZV9++eWSQbNS6zO/ZQTUdl588UUfGNUP11K9+VS6\nRRdd1F+V3mKLLWzNNde0xRZbzNq1a+d/tH366af+hF5XtHfffXdbYokl7IwzzjC1s+ZMaoPRFDcv\nugyvaxNQ+3nuuefsp59+Mh3322+/fcmMFFTXD+3tttvO/vGPf5h6lqy00kq+F5d6tnzxxRc+D/V0\n0efSaqut5ntCHH744fb000+beky01RTXhuPmNYdP3Hbj5jVHWRplG3/++WeTwS0dH+ppqh5A+qeL\nRdE07bTT5t+fc845K+o5W+uFi+i2ef1fgXPPPdcH3nUbvJLqRMGum2++2d8Wr/nnn3++7bXXXr4O\nv/zySx/U6tmzpw0fPtx/Vqrn6w8//PDfDPkfAQQQQKDtCbiT2prTjjvumNM/EgJtScAFunLuBFm/\nBov+uROsmimuuOKKovy0DddTJ+eCZTXny4r1I/D+++/nXG+aonqeeeaZc1OmTCkqqDtRz9111125\n/v3757RMtM25gGruzDPPLFovqxmvvfZaURlc0C2rzZFvREDtwfXEKqoDtYs77rgjsvT/Xn788cc5\n1dPBBx9ccn1320/uwQcf/N9KbWiqntp1PZWlUZqACwAXHRMbbrhh7pprrsm5wHDu888/z7kgWMHu\nHHLIIUXrdO7cuWCZ//znP7lvvvkm9+abb+buvffe3M4775xzAZeC9dyFi4J1eFG7gOvVnnOByLxv\nhw4dvH2pHPW51qdPn9jvVHdbY6nVmI8AAgggUMcCacSX6MHlfhmQEKhGQONt6HaIuLTTTjvFza5o\nnq5AxqV1113X9+6Je495jSXgTthN9RlN6rGl3lrRNOOMM/q2NnLkSH+bY7du3QoWUa/CQYMG+X8F\nb2T0YsUVV/RXy5dddllbcMEFbdiwYbbDDjtktDWyjQqoPcT1INUtiFtuuWV08fxr3d6q23jOPvts\n0zg2119/ve/BlV/ATag3qca1cT8Y21zvh3pq1/VUlnD7qOfp3377LV88jcfkglE2fvx439t1lVVW\n8b2j1ROo2qReXxrrcrnllvPH1+jRo01jO6kHWJDowRVIJPurnuz77LNPviepPuvGjh3r7UvlrM+1\nSy+91Nf1TDPNVLCYej2TEEAAAQTapgABrrZZ7+x1QgGNiRSXdEtRrUmBM9dLp2j1UtsqWpAZDSEQ\n10Y0IHhTSSfzY8aM8eNvRZc966yz/FhY0flZvNattRpT7KOPPrLjjjvO30KSxXbIM14g7vNAwdFK\nx2TTsrvssos9++yzdsopp1i07V122WW2wgor2H333RdfgFY6t57adT2VpRGqOxzgUsC/XLA36f4s\nvvjips/bIBHgCiSS/dXFEtfDOZ+JAvmVjhG4/vrr2w033FBwS+lnn32Wz4sJBNIW0FhvCqKTEECg\nPgUIcNVnvVCqOhfQgM3RpB+Os802W3R2Va/nmWeeouXjtlW0EDMaRiCujistvHoUaFB3jc8VTRro\nXWM1NVdSryFS8wskaT/h0qpHy5FHHunHdos+kdXd0mXqLajxv9paqqd2XU9lqed2EAS49P174okn\n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\nlv3jH/8w5ROknXfemeBWgMFfBBBAAAEEEGg4AW5RbLgqo8AIIIAAAgikI/D7779bp06d7JVXXrEJ\nEyZYz549bbHFFvPzRo8ebdttt52fVlCpHtIss8zigzrrrrtuQXHWWGMNO+CAAwrm6UVT+7ftttva\nxhtvbE899VTRuklmlCpPkjyj6z744IOm8n/wwQc2ZcqU/L/777/fFl98cVMZyqUzzzzTHn74YR/M\nVEBTPeOuuOKKcqvwHgIIIIAAAgggUNcCBLjqunooHAIIIIAAAtkJHHPMMaaePMcdd5zNOeecRRs6\n9thjbY455rC99trLfvvtt6L3W2rGtNNOW9CDS+XQPKVwz65K9m/22We33r172+TJk/36af0XV55q\n8/7777/txhtvjF1Nwb6zzjrLB7N0m2Xw7/bbb7cePXrErhPM/OKLL3xQc6mllrJFF13U/1tkkUVs\nhhlmCBbhLwIIIIAAAggg0HAC3KLYcFVGgRFAAAEEEEgu8Ouvv/oAiQI83bt3j81w1lln9e9prCsF\nWtTDS7f0/fHHHzb11FPb1ltvbSuttJIfx+mqq67yQSLltfTSS/v8PvvsM7v33nvtk08+8bcBbrrp\npvntfP/996ZeYv3797d77rnHB1wOPfRQH6hSMO2RRx4xjZs1zTTT2D//+U9baKGF8utWMlHt/ukW\nxy233NJuvfVW0xhaGstLtzuOGzfOXn75Zb9J7ZsCQkF655137Omnn/Zl122O3bp1C95K9Pevv/6y\n6667zt8y+uWXX9pOO+1UlN/6669fNO8///mPL/8tt9xS9F54xnnnned77CmopdsYFchUkC8cHAwv\nzzQCCCCAAAIIINAIAvTgaoRaoowIIIAAAgikLPD666+bAiIK2ChYVSrplkUl3caoXkMbbrihHX30\n0fbQQw/54Jbem2222XwPIg1SHgS3FBhSz7DVV1/dll9+eevatWv+NkIFwxZeeGE/9tf5559vRx11\nlB155JH2xhtvmMbZUh4zzjijn6dgj4JH1fYgq3b/NG6WBtdv3769H4dMgSulLl26+ACexiZTb7cg\nnX322bbffvv54JsGZtd4ZRq3LElSYE3BxGWXXdYP9q6AWalB5OO2o1tJFaSKC36Fl9dtqYcddpiv\nSwUf1UNviy22MPUYIyGAAAIIIIAAAo0qUPqMtlH3iHIjgAACCCCAQJMCCgApKdBULgXvB8uvvfba\n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\nevHNN9/YSy+9ZJtttlnRe5rx/vvv24QJE/LvxW0v/yYTFQnMNddcftD59ddf31TXZ599dkXrsRAC\nCCCAAAIIIFDvAvTgqvcaonwIIIAAAgg0k8C1115r55xzjl122WW2yiqr2BNPPGG77rqrTTXVVNal\nSxdbeumlrWPHjvbWW2/5+Zr3zjvvFJRu9tlnt2WXXdZOOeUUO/HEE22BBRYo+fTFSy+91AdZCjII\nvWjfvr1tsMEGtsgii1jv3r3tmmuuCb3LZK0CqlvVsepadU5CAAEEEEAAAQRagwABrtZQi+wDAggg\ngAACCQVeeOEF69u3rw847bzzzgW5bb311jb//PPbbLPNZjPPPLMNHz7c2rVrZz/++KN17drVfv75\n5/zyCoatscYattNOO/l/nTt39gGy/AL/P/H333/bhRdeaC+//LKNGzcu+rZ/Pcsss9hiiy1mG264\noS200EKxyzCzNgHVsXpwqc5ffPHF2jJhLQQQQAABBBBAoI4ECHDVUWVQFAQQQAABBFpCQLcKauBx\n9ZY69dRTKyrCUkstZVtssYW9+eabtscee1gulytYb+655469LTFY6Pbbb7eNN97YB7+4TS5Qad6/\nqmvVebdu3fztos27dbaGAAIIIIAAAgikK0CAK11PckMAAQQQQKChBNSTSr2t1PPqxhtvtGmmmaai\n8k877bR2ww032JJLLmm33Xabvx0xvKIGNNe/Uumiiy6yM844w4+/deedd9rEiRNLLcr8jARU16pz\n1b3agNoCCQEEEEAAAQQQaFSB0meejbpHlBsBBBBAAAEEKhY4/PDD/YDyt956q6nXVTVJA8cruKVb\nCYcNG2YKVFWSXnvtNdNg57rtccCAAfaf//zHzj333EpWZZmUBVTnqns9VEBtgYQAAggggAACCDSq\nAAGuRq05yo0AAggggEBCgdGjR9uZZ55pGuw9+jTESrNeaaWV7KqrrvKL77777kWDzsflc95551n/\n/v39W9ttt50fZ+uKK67wY3rFLc+8bAVU92oDagtqEyQEEEAAAQQQQKARBQhwNWKtUWYEEEAAAQQS\nCmhw9z59+tghhxxiu+22W6LcNH7X0UcfHTvofDTjH374wV566SXr1KmTf0u3Mfbr189++eUXGzVq\nVHRxXjeTgNqA2oLahNoGCQEEEEAAAQQQaDQBAlyNVmOUFwEEEEAAgYQC3333nR9YfJ111vHjYCXM\nzq9+/PHH2z/+8Y+Sg84H27j88svt888/9wPMa5B5/bv55pv92+rZxThQgVTz/9WYaGoTGnRebYSE\nAAIIIIAAAgg0kgABrkaqLcqKAAIIIIBAQgEFkHbeeWcfSLrppptMg8WnkTRQ+bXXXmvLLbecH5fr\nnHPOKcpWY21dffXV9sYbb9ijjz6a//fcc89Zjx49bNKkSTZ27Nii9ZjRPAJqC2oT4TbSPFtmKwgg\ngAACCCCAQHIBAlzJDckBAQQQQACBhhEYMmSIjR8/3g8sPu+889ZU7lwuZ5MnTy5ad7bZZvPBrdln\nn9335IoucPvtt/seQhqUPpoOOuggP+vss8+OvsXrZhRQm9Cg82ojaiskBBBAAAEEEECgUQQIcDVK\nTVFOBBBAAAEEEgqod87pp59uF110ka255po156ZbDD/99FP7/fffi/JYdtll7brrrjONrRVOCoqd\nfPLJ/va38PxgWmNyLbzwwvbEE0/4f8F8/ja/gNqG2ojaSnD7aPOXgi0igAACCCCAAALVCRSefVa3\nLksjgAACCCCAQIMIvPbaa7b33nvbgQceaL1796651Lfccovtsssu9ttvv9n2229v48aNK8pr2223\ntRNOOCE//6uvvjLN062IF1xwgb3yyiv59zTxxx9/mG5p/P777/38PfbYw9Tbi9RyAmojait77bWX\nqe3Uml5//XV79tlna12d9RBAAAEEEEAAgYoFpnJXVHMVLx1ZsFevXn6OrgiTEEAAAQQQQKA+BRQ4\nWnvttW3BBRe0hx9+uOJxt9QTa/fddzc9+VC3HVabFNhq3759tavFLt+hQwff++vMM8+MfZ+Z6Qv8\n9ddftskmm9hnn33mg1Rzzjln1Ru5++67fXBTDxMYPHiwn9Z4bSQEEEAAAQQQQCAskEZ8KZ2RZcOl\nYhoBBBBAAAEE6kZAA7vvuuuuNmXKFH+7WS2DymvdWlJawS1tm6cr1lIDydZRW9EtimuttZZvQ3fd\ndVfRradNbWGbbbbxPfYUmNSDBJZcckk79NBDfeB0+umnL1hdgbT333+/YF70hYJjHTt2jM7mNQII\nIIAAAgggYAS4aAQIIIAAAgi0YoGhQ4f62wgfe+wxm2+++ara0+mmm840cHyfPn1s/fXX94GOzTff\nvKo8kiysW+Puvfde++ijj+ynn36yGWaYIUl2rFuDgNrMmDFjTGOkqS2ddNJJVeey8sor2xVXXOHH\nYDv//PPt8MMPt2OOOcbfArn//vvbXHPN5fO88cYbbdCgQWXzV5vULa0kBBBAAAEEEEAgKsAtilER\nXiOAAAIIINBKBPQ0vJ49e9qoUaP8+FutZLfYjRYQuPzyy32gU2Owde/ePVEJfv31Vx/w0hMzv/ji\nC982Bw4caIsssoj9+eefTeY944wzNrkMCyCAAAIIIIBAYwlwi2Jj1RelRQABBBBAoNkE3njjDT+Y\nvHrIaHB5EgJJBNSG9JAADT6/3HLL2QorrFBzdjPPPLP169fP5p13XlP7HDlypO+VpSc31nILbc0F\nYUUEEEAAAQQQaFUC3KLYqqqTnUEAAQQQQMDsxx9/tK5du9qqq67qn06ICQJpCOhJl3oCptqWnoxY\ny4MHJk+ebOoNdtZZZ9nnn3/uA2a6LXHppZf2eT744INlizrNNNP4WxzLLsSbCCCAAAIIINAmBQhw\ntclqZ6cRQAABBFqrgB6OrCcf6jYw3U6mMYtICKQhoLakNrXmmmv6Nvbvf//bKn0i4pdffmnnnXee\nXXjhhX6g+gMOOMD0T724gvTOO+/4/IPXcX/Vw0tjeJEQQAABBBBAAIGoAAGuqAivEUAAAQQQaGCB\n4447zu6//3575JFHbP7552/gPaHo9SigNqUgV+fOnU1tbfjw4WWLqScjDhs2zK655ho/xtaJJ55o\ne+65p8WNo7XbbruZ/pEQQAABBBBAAIFaBAhw1aLGOggggAACCNShwO23324nnHCCaSwjPfWQhEAW\nAmpb6o2l8bPWWGMN22GHHUpu5oknnrDXX3/dRo8e7ZebeuqpSy7LGwgggAACCCCAQBIBzjKS6LEu\nAggggAACdSLw1ltv2R577OGfdNe3b986KVVxMf7++2+78cYbi99gTkMJqI316dPHtzm1vVJJwa8n\nn3zSunXr5m9NLLUc8xFAAAEEEEAAgaQCBLiSCrI+AggggAACLSzw008/+QCCnmx3/vnnt3Bp4jf/\n119/2VVXXeWfvrfffvvFL8TchhJQW1ObU/BKbTAutWvXLm428xBAAAEEEEAAgdQFCHClTkqGCCCA\nAAIINJ+ABpVXz60ffvjBxowZY/UWUPjzzz9t1KhRtuyyy9qAAQN8MGTixInNB8SWMhNQW1ObU9tT\nG1RbJCGAAAIIIIAAAi0lQICrpeTZLgIIIIAAAikIaMytu+++2w/8veCCC6aQYzpZTJkyxT8xb6ml\nlrKBAwdar1697IMPPrBTTz3V5plnnnQ2Qi4tLqA2p0Hn1QbVFkkIIIAAAggggEBLCTDIfEvJs10E\nEEAAAQQSCtx5553+SXa6Vaxjx44Jc0tn9d9//90uueQSO/300/1tawceeKANGjTI5p577nQ2QC51\nJ6C2d/bZZ/seehp0frvttqu7MlIgBBBAAAEEEGj9AvTgav11zB4igAACCLRCgXfffdd2331323PP\nPa1///51s4ePPPKIDRs2zD799FPbd9997cgjjyS4VTe1k11B1AbVFtUm1TZJCCCAAAIIIIBAcwsQ\n4GpucbaHAAIIIIBAQoFffvnFunbtassss4y/DTBhdqmuvtVWW9mHH37ob1e78sorrUOHDnbKKafY\nzz//nOp2yKz+BC688ELfJtU21UZJCCCAAAIIIIBAcwoQ4GpObbaFAAIIIIBAQgEN5N27d2/75ptv\n7NZbb7Xpp58+YY7prz777LPbMcccY5MmTbLDDjvMzjrrrHygi8BH+t71kqPaotqk2qbaKIPO10vN\nUA4EEEAAAQTahgABrrZRz+wlAggggEArEVBvqH//+992880328ILL1zXezXLLLPYEUcc4Xt0DRky\nxM4991xbfPHF7bTTTqvrclO42gXUJtU21UbVVkkIIIAAAggggEBzCRDgai5ptoMAAggggEBCgXvv\nvdeGDh1qI0aMsE6dOiXMrflWn2mmmfxA83qKosbnuuiii5pv42yp2QXUNtVG1VbVZkkIIIAAAggg\ngEBzCBDgag5ltoEAAggggEBCgffee8923XVXP4j3QQcdlDC3lll9hhlmMD1V8e23326ZArDVZhNQ\nG9WA82qzarskBBBAAAEEEEAgawECXFkLkz8CCCCAAAIJBX799Vc/qLwGbL/44osT5tbyq7dr167l\nC0EJMhdQW1Wb1aDzasMkBBBAAAEEEEAgSwECXFnqkjcCCCCAAAIpCOy11172xRdf2NixY029oEgI\nNIKA2qrarNru3nvv3QhFpowIIIAAAggg0MACBLgauPIoOgIIIIBA6xfQgOx6Mt1NN91kiy66aOvf\nYfawVQmozartjhkzxk4//fRWtW/sDAIIIIAAAgjUlwABrvqqD0qDAAIIIIBAXuCBBx6wo48+2s44\n4wzr0qVLfj4TCDSSgNqu2rCepKk2TUIAAQQQQAABBLIQIMCVhSp5IoAAAgggkFBATxzceeedbaed\n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\n5JPVJ+L2PQymk29W3O2Ayq00812ogLaeHfA5I+sVzQNaeWgxwCIX9VaefNFWS2tj5YkrnWvRQGPL\nhK8RmXgP7SxRkwyti5LaXOJ9Jf1Gu6M8baykeDjOKjfbGNFqq2igr0FjkX4FzY2SAnZ0EjXn0r2v\npPg4juYgmjq0PV8jp7TrdS54BNCU4b2AHZhcBfpptGzpq1M9o5mky3sCTYvEZzyT+NK5Fy0VNFgI\nPFc8x2g6p3Kikk58ubwmW/0VW0EpJ1rDJQXev4xZ6GPtQkAx7eHEe8qKC0063ue+7U/iQ7OcdwpG\nsisa0DpjeykavWEPaPeiqet7qc5Fecoag6V69njOGetia5JAm6Aus/XOJM589idBedYzfY4xoYKp\nE0yB5Cvk6jlGq4/5kRW25asoSieABLIhX/r/PSkBLJyyJAJBJZAs3CKfbFtIV4hCx21XQt2gji1m\nbPfyAxPKigqM0xF8MOH2DXv6aWbzG0GEb6uktHjTyYddvS8S5mQiJCgtH2E5h9FiPkEI+RRuUV67\nalxisZMnvpkIt0gkmwP1bAiF6GtS9TfJQBKFW5xL977kePS/CJSXAP00IdvCLeLkPZHv4Au3SJfn\nKvnZynd+SksvW/0V45DShFvkgXd7OmOMsuJKFhTSZ/vOaEorq85ll0BZY7BUzx7CZl+4RW5oE9lq\ng37p8tmfBOVZz5QhJhDyHfQc55u40isvAQm4yktM14tAhgSwscPKkVWpd+7HmcBjj+Ddd9919ncq\n4u48wyzpdhEQAREQAREQAREQAREQAREQAREINQEJuEJdfcp8GAmgvYXhVwxVY1yTFSu2851zzjnO\nYHWmqzlhZKI8i4AIiIAIiIAIiIAIiIAIiIAIiEAmBCTgyoSe7hWBChBArRtva3ywXxD37XcVQKhb\nREAEREAEREAEREAEREAEREAERKAYgXWL/ad/REAE8kpAwq284lZiIiACIiACIiACIiACIiACIiAC\nESUgAVdEK1bFEgEREAEREAEREAEREAEREAEREAEREIG4EJCAKy41rXKKgAiIgAiIgAiIgAiIgAiI\ngAiIgAiIQEQJSMAV0YpVsURABERABERABERABERABERABERABEQgLgQk4IpLTaucIiACIiACIiAC\nIiACIiACIiACIiACIhBRAhJwRbRiVSwREAEREAEREAEREAEREAEREAEREAERiAsBCbjiUtMqpwiI\ngAiIgAiIgAiIgAiIgAiIgAiIgAhElIAEXBGtWBVLBERABERABERABERABERABERABERABOJCQAKu\nuNS0yikCIiACIiACIiACIiACIiACIiACIiACESUgAVdEK1bFEgEREAEREAEREAEREAEREAEREAER\nEIG4EJCAKy41rXKKgAiIgAiIgAiIgAiIgAiIgAiIgAiIQEQJSMAV0YpVsURABERABERABERABERA\nBERABERABEQgLgQqxaWgKmc8Cbz00ktmzpw58Sx8zEv9/fffB4bAn3/+acaMGROY/CgjIlAWAfWb\nZREKx/mffvpJfU84qkq5zIDAe++9l8Hdwbt1xYoVem6DVy3KUY4JfPrppzlOQdHHhYAEXHGp6ZiW\ns2vXrjEtuYodJALLly837dq1C1KWlBcREIEYEJg1a5b6nhjUs4pozCabbBIZDAsXLtRzG5naVEHK\nQ6BBgwbluVzXikBKAut4NqQ8k8ZBf8I2evToNK7WJSIgAt27dzf9+/c3jzzyiOnQoUNOgej5zCle\nRZ5HAkzS9913X8P33nvvnVHKX3/9tdl1113NfffdZy688MKM4tLNIiAC8SNw8sknm9WrV5vnnnsu\n48L/888/pn79+uaggw4yjz76aMbxKQIREIHMCKyzzjqGeW3btm0zi+h/d1966aXmscceM2+//XbG\n45esZEiRiEDACWRj/iobXAGvZGUvOgSuvvpqJ9xiEJtr4VZ0qKkkImDMW2+9ZTbddFOz5557Zoxj\np512coKtvn37mlWrVmUcnyIQARGID4E//vjDTJ482Zx00klZKfS6665revToYZ588kmD8F1BBEQg\nWgQGDRpkDjjgANOyZUvz66+/RqtwKo0IBJSABFwBrRhlK1oEunTpYu6++27z+OOPm7POOitahVNp\nRCDHBP773/+agw8+2DAZzEbo2bOnWbp0qdPiykZ8ikMERCAeBKZMmeIE4y1atMhagdu3b2922GEH\nc/vtt2ctTkUkAiIQDAKVKlVy9tTQDDvllFPM33//HYyMKRciEGEC2ZktRBiQiiYCmRLo1KmTm0g/\n9dRThoGsggiIQPkIoMF1yCGHlO+mUq6uWbOmufLKK02/fv3MsmXLSrlSp0RABETgXwL/+c9/TMOG\nDc0222zz78EMfzEBvu6668zw4cPNDz/8kGFsul0ERCBoBLbcckszYcIEM3PmTHPFFVcELXvKjwhE\n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\nYGYR+H9wHG+sy4qxnAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(Image((png_file_name)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### From this surrogate model we can see ...\n", "* Some of the most important variables\n", "* Important interactions \n", "* The decision path for the most expensive houses\n", "* The decision path for the least expensive houses\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# shutdown h2o\n", "h2o.cluster().shutdown(prompt=True)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 10_model_interpretability/src/lime.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Local Interpretable Model Agnostic Explanations (LIME)\n", "***\n", "\n", "Based on: Ribeiro, Marco Tulio, Sameer Singh, and Carlos Guestrin. \"Why should i trust you?: Explaining the predictions of any classifier.\" In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pp. 1135-1144. ACM, 2016.\n", "\n", "http://www.kdd.org/kdd2016/papers/files/rfp0573-ribeiroA.pdf\n", "\n", "**Instead of perturbing a sample of interest to create a local region in which to fit a linear model, some of these examples use a practical sample, say all one story homes, from the data to create an approximately local region in which to fit a linear model. That model can be validated and the region examined to explain local prediction behavior.**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminaries: imports, start h2o, load and clean data " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# imports\n", "import h2o \n", "import operator\n", "import numpy as np\n", "import pandas as pd\n", "from h2o.estimators.glm import H2OGeneralizedLinearEstimator\n", "from h2o.estimators.gbm import H2OGradientBoostingEstimator" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: java version \"1.8.0_112\"; Java(TM) SE Runtime Environment (build 1.8.0_112-b16); Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)\n", " Starting server from /Users/phall/anaconda/lib/python3.5/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpk5t7btqn\n", " JVM stdout: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpk5t7btqn/h2o_phall_started_from_python.out\n", " JVM stderr: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpk5t7btqn/h2o_phall_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321... successful.\n" ] }, { "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", "
H2O cluster uptime:01 secs
H2O cluster version:3.12.0.1
H2O cluster version age:2 months and 9 days
H2O cluster name:H2O_from_python_phall_og2isp
H2O cluster total nodes:1
H2O cluster free memory:3.556 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
H2O internal security:False
Python version:3.5.2 final
" ], "text/plain": [ "-------------------------- ------------------------------\n", "H2O cluster uptime: 01 secs\n", "H2O cluster version: 3.12.0.1\n", "H2O cluster version age: 2 months and 9 days\n", "H2O cluster name: H2O_from_python_phall_og2isp\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 3.556 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "Python version: 3.5.2 final\n", "-------------------------- ------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# start h2o\n", "h2o.init()\n", "h2o.remove_all()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Load and prepare data for modeling" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "# load data\n", "path = '../../03_regression/data/train.csv'\n", "frame = h2o.import_file(path=path)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# assign target and inputs\n", "y = 'SalePrice'\n", "X = [name for name in frame.columns if name not in [y, 'Id']]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### LIME is simpler to use with data containing no missing values" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# determine column types\n", "# impute\n", "reals, enums = [], []\n", "for key, val in frame.types.items():\n", " if key in X:\n", " if val == 'enum':\n", " enums.append(key)\n", " else: \n", " reals.append(key)\n", " \n", "_ = frame[reals].impute(method='median')\n", "_ = frame[enums].impute(method='mode')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# split into training and validation\n", "train, valid = frame.split_frame([0.7])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### LIME can be unstable with data in which strong correlations exist between input variables" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "YearBuilt GarageYrBlt\n", "GrLivArea TotRmsAbvGrd\n", "1stFlrSF TotalBsmtSF\n", "TotalBsmtSF 1stFlrSF\n", "TotRmsAbvGrd GrLivArea\n", "GarageCars GarageArea\n", "GarageArea GarageCars\n", "GarageYrBlt YearBuilt\n" ] } ], "source": [ "# print out correlated pairs\n", "corr = train[reals].cor().as_data_frame()\n", "for i in range(0, corr.shape[0]):\n", " for j in range(0, corr.shape[1]):\n", " if i != j:\n", " if np.abs(corr.iat[i, j]) > 0.7:\n", " print(corr.columns[i], corr.columns[j])" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "#### Remove one var from each correlated pair" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "X_reals_decorr = [i for i in reals if i not in ['GarageYrBlt', 'TotRmsAbvGrd', 'TotalBsmtSF', 'GarageCars']]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train a predictive model" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm Model Build progress: |███████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "# train GBM model\n", "model = H2OGradientBoostingEstimator(ntrees=100,\n", " max_depth=10,\n", " distribution='huber',\n", " learn_rate=0.1,\n", " stopping_rounds=5,\n", " seed=12345)\n", "\n", "model.train(y=y, x=X_reals_decorr, training_frame=train, validation_frame=valid)\n", "\n", "preds = valid['Id'].cbind(model.predict(valid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Build local linear surrogate models to help interpret the model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a local region based on HouseStyle" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Rows:209\n", "Cols:82\n", "\n", "\n" ] }, { "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", "
Id predict MSSubClass MSZoning LotFrontage LotArea Street Alley LotShape LandContour Utilities LotConfig LandSlope Neighborhood Condition1 Condition2 BldgType HouseStyle OverallQual OverallCond YearBuilt YearRemodAdd RoofStyle RoofMatl Exterior1st Exterior2nd MasVnrType MasVnrArea ExterQual ExterCond Foundation BsmtQual BsmtCond BsmtExposure BsmtFinType1 BsmtFinSF1 BsmtFinType2 BsmtFinSF2 BsmtUnfSF TotalBsmtSF Heating HeatingQC CentralAir Electrical 1stFlrSF 2ndFlrSF LowQualFinSF GrLivArea BsmtFullBath BsmtHalfBath FullBath HalfBath BedroomAbvGr KitchenAbvGr KitchenQual TotRmsAbvGrd Functional Fireplaces FireplaceQu GarageType GarageYrBlt GarageFinish GarageCars GarageArea GarageQual GarageCond PavedDrive WoodDeckSF OpenPorchSF EnclosedPorch 3SsnPorch ScreenPorch PoolArea PoolQC Fence MiscFeature MiscVal MoSold YrSold SaleType SaleCondition SalePrice
type int real int enum real int enum enum enum enum enum enum enum enum enum enum enum enum int int int int enum enum enum enum enum int enum enum enum enum enum enum enum int enum int int int enum enum enum enum int int int int int int int int int int enum int enum int enum enum real enum int int enum enum enum int int int int int int enum enum enum int int int enum enum int
mins 14.0 11.03654544159326920.0 32.0 3010.0 2.0 3.0 1913.0 1950.0 0.0 0.0 0.0 0.0 0.0 480.0 0.0 0.0 480.0 0.0 0.0 0.0 0.0 0.0 1.0 3.0 0.0 1920.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 2006.0 35311.0
mean 687.1291866028708 12.00554754120865342.057416267942585 70.779179232617159969.435406698565 5.947368421052632 5.4832535885167471974.60765550239241984.909090909091 89.69856459330144 574.1052631578947 53.61244019138756602.04306220095691229.7607655502393 1337.66028708133972.23444976076555 0.0 1339.89473684210520.57894736842105270.0430622009569378 1.47846889952153120.119617224880382772.650717703349282 1.0526315789473684 5.980861244019139 0.5358851674641149 1979.9238578680201 1.7272727272727273479.52153110047846 111.377990430622 38.79904306220096 17.2679425837320582.569377990430622 9.2296650717703343.1004784688995217 19.1387559808612446.555023923444976 2007.8086124401914 178322.78468899522
maxs 1452.0 12.985784787643702190.0 313.0 50271.0 10.0 9.0 2009.0 2010.0 922.0 1810.0 791.0 2336.0 3094.0 2898.0 467.0 0.0 2898.0 3.0 1.0 3.0 1.0 6.0 2.0 10.0 3.0 2009.0 4.0 1356.0 857.0 304.0 286.0 216.0 224.0 648.0 1200.0 12.0 2010.0 555000.0
sigma 422.432001309779140.391649246313495441.068382877079394 24.435571112959155321.718702537052 1.50706836630882310.98593812110746924.48997319854322520.1376599844756 150.47734958562475 488.1206585752494 155.9077267731607489.8865086996808457.11586457436033 398.8805542268284532.303065462545690.0 399.1265805830717 0.55011960422018090.203484550908893420.52875538753323140.325292541252000970.77677338154163290.22383300599978273 1.2746105079593406 0.612297302582734 21.14726636557282 0.7827913117569955229.0783598834146 135.5653606687560658.12203506948400653.86418976031431 21.58494445244393539.5973105193781244.823097258521635 114.005840270368032.84166901871504331.2978245436848066 77114.87392119177
zeros 0 0 0 0 0 0 0 0 0 114 39 182 22 7 0 208 209 0 93 200 2 184 2 0 0 109 0 14 14 95 104 184 206 198 208 202 0 0 0
missing0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 14.0 12.26860912318311820.0 RL 91.0 10652.0 Pave NA IR1 Lvl AllPub Inside Gtl CollgCr Norm Norm 1Fam 1Story 7.0 5.0 2006.0 2007.0 Gable CompShg VinylSd VinylSd Stone 306.0 Gd TA PConc Gd TA Av Unf 0.0 Unf 0.0 1494.0 1494.0 GasA Ex Y SBrkr 1494.0 0.0 0.0 1494.0 0.0 0.0 2.0 0.0 3.0 1.0 Gd 7.0 Typ 1.0 Gd Attchd 2006.0 RFn 3.0 840.0 TA TA Y 160.0 33.0 0.0 0.0 0.0 0.0 NA NA NA 0.0 8.0 2007.0 New Partial 279500.0
1 15.0 11.89861004166866 20.0 RL 70.0499583680266510920.0 Pave NA IR1 Lvl AllPub Corner Gtl NAmes Norm Norm 1Fam 1Story 6.0 5.0 1960.0 1960.0 Hip CompShg MetalSd MetalSd BrkFace 212.0 TA TA CBlock TA TA No BLQ 733.0 Unf 0.0 520.0 1253.0 GasA TA Y SBrkr 1253.0 0.0 0.0 1253.0 1.0 0.0 1.0 1.0 2.0 1.0 TA 5.0 Typ 1.0 Fa Attchd 1960.0 RFn 1.0 352.0 TA TA Y 0.0 213.0 176.0 0.0 0.0 0.0 NA GdWo NA 0.0 5.0 2008.0 WD Normal 157000.0
2 27.0 11.77105609163824920.0 RL 60.0 7200.0 Pave NA Reg Lvl AllPub Corner Gtl NAmes Norm Norm 1Fam 1Story 5.0 7.0 1951.0 2000.0 Gable CompShg Wd Sdng Wd Sdng None 0.0 TA TA CBlock TA TA Mn BLQ 234.0 Rec 486.0 180.0 900.0 GasA TA Y SBrkr 900.0 0.0 0.0 900.0 0.0 1.0 1.0 0.0 3.0 1.0 Gd 5.0 Typ 0.0 NA Detchd 2005.0 Unf 2.0 576.0 TA TA Y 222.0 32.0 0.0 0.0 0.0 0.0 NA NA NA 0.0 5.0 2010.0 WD Normal 134800.0
3 28.0 12.65471385490652320.0 RL 98.0 11478.0 Pave NA Reg Lvl AllPub Inside Gtl NridgHt Norm Norm 1Fam 1Story 8.0 5.0 2007.0 2008.0 Gable CompShg VinylSd VinylSd Stone 200.0 Gd TA PConc Ex TA No GLQ 1218.0 Unf 0.0 486.0 1704.0 GasA Ex Y SBrkr 1704.0 0.0 0.0 1704.0 1.0 0.0 2.0 0.0 3.0 1.0 Gd 7.0 Typ 1.0 Gd Attchd 2008.0 RFn 3.0 772.0 TA TA Y 0.0 50.0 0.0 0.0 0.0 0.0 NA NA NA 0.0 5.0 2010.0 WD Normal 306000.0
4 29.0 12.05939361069260820.0 RL 47.0 16321.0 Pave NA IR1 Lvl AllPub CulDSac Gtl NAmes Norm Norm 1Fam 1Story 5.0 6.0 1957.0 1997.0 Gable CompShg MetalSd MetalSd None 0.0 TA TA CBlock TA TA Gd BLQ 1277.0 Unf 0.0 207.0 1484.0 GasA TA Y SBrkr 1600.0 0.0 0.0 1600.0 1.0 0.0 1.0 0.0 2.0 1.0 TA 6.0 Typ 2.0 Gd Attchd 1957.0 RFn 1.0 319.0 TA TA Y 288.0 258.0 0.0 0.0 0.0 0.0 NA NA NA 0.0 12.0 2006.0 WD Normal 207500.0
5 30.0 11.17125449658085 30.0 RM 60.0 6324.0 Pave NA IR1 Lvl AllPub Inside Gtl BrkSide Feedr RRNn 1Fam 1Story 4.0 6.0 1927.0 1950.0 Gable CompShg MetalSd MetalSd None 0.0 TA TA BrkTil TA TA No Unf 0.0 Unf 0.0 520.0 520.0 GasA Fa N SBrkr 520.0 0.0 0.0 520.0 0.0 0.0 1.0 0.0 1.0 1.0 Fa 4.0 Typ 0.0 NA Detchd 1920.0 Unf 1.0 240.0 Fa TA Y 49.0 0.0 87.0 0.0 0.0 0.0 NA NA NA 0.0 5.0 2008.0 WD Normal 68500.0
6 32.0 11.81039945287562720.0 RL 70.049958368026658544.0 Pave NA IR1 Lvl AllPub CulDSac Gtl Sawyer Norm Norm 1Fam 1Story 5.0 6.0 1966.0 2006.0 Gable CompShg HdBoard HdBoard None 0.0 TA TA CBlock TA TA No Unf 0.0 Unf 0.0 1228.0 1228.0 GasA Gd Y SBrkr 1228.0 0.0 0.0 1228.0 0.0 0.0 1.0 1.0 3.0 1.0 Gd 6.0 Typ 0.0 NA Attchd 1966.0 Unf 1.0 271.0 TA TA Y 0.0 65.0 0.0 0.0 0.0 0.0 NA MnPrv NA 0.0 6.0 2008.0 WD Normal 149350.0
7 38.0 11.86714853764263120.0 RL 74.0 8532.0 Pave NA Reg Lvl AllPub Inside Gtl NAmes Norm Norm 1Fam 1Story 5.0 6.0 1954.0 1990.0 Hip CompShg Wd Sdng Wd Sdng BrkFace 650.0 TA TA CBlock TA TA No Rec 1213.0 Unf 0.0 84.0 1297.0 GasA Gd Y SBrkr 1297.0 0.0 0.0 1297.0 0.0 1.0 1.0 0.0 3.0 1.0 TA 5.0 Typ 1.0 TA Attchd 1954.0 Fin 2.0 498.0 TA TA Y 0.0 0.0 0.0 0.0 0.0 0.0 NA NA NA 0.0 10.0 2009.0 WD Normal 153000.0
8 39.0 11.8126303757069 20.0 RL 68.0 7922.0 Pave NA Reg Lvl AllPub Inside Gtl NAmes Norm Norm 1Fam 1Story 5.0 7.0 1953.0 2007.0 Gable CompShg VinylSd VinylSd None 0.0 TA Gd CBlock TA TA No GLQ 731.0 Unf 0.0 326.0 1057.0 GasA TA Y SBrkr 1057.0 0.0 0.0 1057.0 1.0 0.0 1.0 0.0 3.0 1.0 Gd 5.0 Typ 0.0 NA Detchd 1953.0 Unf 1.0 246.0 TA TA Y 0.0 52.0 0.0 0.0 0.0 0.0 NA NA NA 0.0 1.0 2010.0 WD Abnorml 109000.0
9 44.0 11.80154741421603520.0 RL 70.049958368026659200.0 Pave NA IR1 Lvl AllPub CulDSac Gtl CollgCr Norm Norm 1Fam 1Story 5.0 6.0 1975.0 1980.0 Hip CompShg VinylSd VinylSd None 0.0 TA TA CBlock Gd TA Av LwQ 280.0 BLQ 491.0 167.0 938.0 GasA TA Y SBrkr 938.0 0.0 0.0 938.0 1.0 0.0 1.0 0.0 3.0 1.0 TA 5.0 Typ 0.0 NA Detchd 1977.0 Unf 1.0 308.0 TA TA Y 145.0 0.0 0.0 0.0 0.0 0.0 NA MnPrv NA 0.0 7.0 2008.0 WD Normal 130250.0
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "local_frame = preds.cbind(valid.drop(['Id']))\n", "local_frame = local_frame[local_frame['HouseStyle'] == '1Story']\n", "local_frame['predict'] = local_frame['predict'].log()\n", "local_frame.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Train penalized linear model in local region \n", "* Check R2 to ensure surrogate model is a good fit for predictions\n", "* Use ranked predictions plot to ensure surrogate model is a good fit for predictions\n", "* Use trained GLM and coefficients to understand local region of response function" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glm Model Build progress: |███████████████████████████████████████████████| 100%\n", "\n", "Local GLM Coefficients:\n", "KitchenAbvGr: -0.1508258670073023\n", "YrSold: -0.0038514394943816705\n", "MSSubClass: -0.00011210487426281287\n", "EnclosedPorch: -9.130093138694107e-05\n", "2ndFlrSF: -3.9194722085630606e-05\n", "MoSold: -1.5547455415244997e-05\n", "LotArea: 3.329666938941041e-06\n", "MiscVal: 6.695561375680934e-06\n", "OpenPorchSF: 7.334408876566789e-05\n", "GrLivArea: 7.801707438135216e-05\n", "WoodDeckSF: 8.338161186914433e-05\n", "ScreenPorch: 9.387310676953871e-05\n", "BsmtFinSF1: 0.00010125805853647395\n", "GarageArea: 0.00016468298708688275\n", "1stFlrSF: 0.000240835733035765\n", "HalfBath: 0.0004316804511827515\n", "LotFrontage: 0.0005389665055779621\n", "YearRemodAdd: 0.0010353227962118725\n", "BsmtFullBath: 0.0019456452443123145\n", "YearBuilt: 0.003081698342094866\n", "BedroomAbvGr: 0.010692862700010637\n", "Fireplaces: 0.014672329995422593\n", "OverallCond: 0.016722109721306774\n", "OverallQual: 0.09232478225180206\n", "Intercept: 10.437151063047025\n", "\n", "Local GLM R-square:\n", "0.97\n" ] } ], "source": [ "# initialize\n", "local_glm = H2OGeneralizedLinearEstimator(lambda_search=True)\n", "\n", "# train \n", "local_glm.train(x=X_reals_decorr, y='predict', training_frame=local_frame)\n", "\n", "# coefs\n", "print('\\nLocal GLM Coefficients:')\n", "for c_name, c_val in sorted(local_glm.coef().items(), key=operator.itemgetter(1)):\n", " if c_val != 0.0:\n", " print('%s %s' % (str(c_name + ':').ljust(25), c_val))\n", " \n", "# r2\n", "print('\\nLocal GLM R-square:\\n%.2f' % local_glm.r2())" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "image/png": "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\nQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# ranked predictions plot\n", "pred_frame = local_frame.cbind(local_glm.predict(local_frame))\\\n", " .as_data_frame()[['predict', 'predict0']]\n", "pred_frame.columns = ['ML Preds.', 'Surrogate Preds.']\n", "pred_frame.sort_values(by='ML Preds.', inplace=True)\n", "pred_frame.reset_index(inplace=True, drop=True)\n", "_ = pred_frame.plot(title='Ranked Predictions Plot')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A ranked predictions plot is a way to visually check whether the surrogate model is a good fit for the complex model. The y-axis is the numeric prediction of both models for a given point. The x-axis is the rank of a point when the predictions are sorted by their GBM prediction, from lowest on the left to highest on the right. When both sets of predictions are aligned, as they are above, this a good indication that the linear model fits the complex, nonlinear GBM well in the approximately local region." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Both the R2 and ranked predictions plot show the linear model is a good fit in the practical, approximately local sample. This means the regression coefficients are likely a very accurate representation of the behavior of the nonlinear model in this region." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create explanations (or 'reason codes') for a row in the local set\n", "The local glm coefficient multiplied by the value in a specific row are estimates of how much each variable contributed to each prediction decision. These values can tell you how a variable and it's values were weighted in any given decision by the model. These values are crucially important for machine learning interpretability and are often to referred to \"local feature importance\", \"reason codes\", or \"turn-down codes.\" The latter phrases are borrowed from credit scoring. Credit lenders must provide reasons for turning down a credit application, even for automated decisions. Reason codes can be easily extracted from LIME local feature importance values, by simply ranking the variables that played the largest role in any given decision." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\ncKKZPQ88DIwERgMXlpyviIiIdKPs4H8E8F3gZ8AywAvAz9M6ERERmQtKDf7uPh04Ji0iIiIyDxh4\n8sknz+19eN8pp5yyHHDooYceynLLLdf069ZZZ53ydqqP8tAxzBt56BjmjTx0DHM//b7IQ8dQbB6T\nJk3iggsuALjg5JNPntTTtubuBexaMcxsJHDffffdV3onChERkfnJuHHjGDVqFMAodx/X07a6q5+I\niEjFKPiLiIhUjIK/iIhIxSj4i4iIVIyCv4iISMUo+IuIiFSMgr+IiEjFKPiLiIhUjIK/iIhIxSj4\ni4iIVIyCv4iISMUo+IuIiFSMgr+IiEjFKPiLiIhUjIK/iIhIxSj4i4iIVIyCv4iISMUo+IuIiFSM\ngr+IiEjFKPiLiIhUjIK/iIhIxSj4i4iIVIyCv4iISMUo+IuIiFSMgr+IiEjFlB78zWx5M7vMzCab\n2Qwze8DMRpadr4iIiDS2QJmJm9mSwD+AW4HtgMnAGsCUMvMVERGR7pUa/IHjgYnufnBm3bMl5yki\nIiI9KDv47wjcZGZXAVsA/wPOc/cLS85X+rGJEycyefLkprcfOnQow4YNK3GPRETmL2UH/1WBw4Ef\nA6cBGwE/MbO33f2ykvOWfmjixImMGD6cGTNnNv2awYMGMf6xx3QBICLSpLKD/wDgHnf/dnr8gJmt\nDRwGKPjLHCZPnsyMmTO5HBjRxPbjgb1nzmTy5MkK/iIiTSo7+E8izs9Z44Fde3rR6NGjGTJkSJd1\nHR0ddHR0FLt3Ms8aAWhIiIhIY2PHjmXs2LFd1k2dOrXp15cd/P8BDK9bN5xeOv2NGTOGkSN16hcR\nEWmkUYF43LhxjBo1qqnXlz3OfwzwCTP7ppmtZmZ7AgcDPy05XxEREelGqcHf3e8FdgE6gIeAE4Cj\n3P3KMvMVERGR7pVd7Y+73wDcUHY+IiIi0hzN7S8iIlIxCv4iIiIVo+AvIiJSMQr+IiIiFaPgLyIi\nUjEK/iIiIhWj4C8iIlIxCv4iIiIVo+AvIiJSMQr+IiIiFaPgLyIiUjEK/iIiIhWj4C8iIlIxCv4i\nIiIVo+AvIiJSMQr+IiIiFaPgLyIiUjEK/iIiIhWj4C8iIlIxCv4iIiIVo+AvIiJSMQr+IiIiFaPg\nLyIiUjEK/iIiIhWj4C8iIlIxCv4iIiIVo+AvIiJSMQr+IiIiFdNnwd/Mjjez2WZ2Vl/lKSIiInPq\n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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "row = 20 # select a row to describe\n", "local_contrib_frame = pd.DataFrame(columns=['Name', 'Local Contribution', 'Sign'])\n", "\n", "# multiply values in row by local glm coefficients\n", "for name in local_frame[row, :].columns:\n", " contrib = 0.0\n", " try:\n", " contrib = local_frame[row, name]*local_glm.coef()[name]\n", " except:\n", " pass\n", " if contrib != 0.0:\n", " local_contrib_frame = local_contrib_frame.append({'Name':name,\n", " 'Local Contribution': contrib,\n", " 'Sign': contrib > 0}, \n", " ignore_index=True)\n", "\n", "# plot\n", "_ = local_contrib_frame.plot(x = 'Name',\n", " y = 'Local Contribution',\n", " kind='bar', \n", " title='Local Contributions for Row ' + str(row) + '\\n', \n", " color=local_contrib_frame.Sign.map({True: 'r', False: 'b'}), \n", " legend=False) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create a local region based on predicted SalePrice quantiles" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n", "Rows:44\n", "Cols:82\n", "\n", "\n" ] }, { "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", "
Id predict MSSubClass MSZoning LotFrontage LotArea Street Alley LotShape LandContour Utilities LotConfig LandSlope Neighborhood Condition1 Condition2 BldgType HouseStyle OverallQual OverallCond YearBuilt YearRemodAdd RoofStyle RoofMatl Exterior1st Exterior2nd MasVnrType MasVnrArea ExterQual ExterCond Foundation BsmtQual BsmtCond BsmtExposure BsmtFinType1 BsmtFinSF1 BsmtFinType2 BsmtFinSF2 BsmtUnfSF TotalBsmtSF Heating HeatingQC CentralAir Electrical 1stFlrSF 2ndFlrSF LowQualFinSF GrLivArea BsmtFullBath BsmtHalfBath FullBath HalfBath BedroomAbvGr KitchenAbvGr KitchenQual TotRmsAbvGrd Functional Fireplaces FireplaceQu GarageType GarageYrBlt GarageFinish GarageCars GarageArea GarageQual GarageCond PavedDrive WoodDeckSF OpenPorchSF EnclosedPorch 3SsnPorch ScreenPorch PoolArea PoolQC Fence MiscFeature MiscVal MoSold YrSold SaleType SaleCondition SalePrice
type int real int enum real int enum enum enum enum enum enum enum enum enum enum enum enum int int int int enum enum enum enum enum int enum enum enum enum enum enum enum int enum int int int enum enum enum enum int int int int int int int int int int enum int enum int enum enum real enum int int enum enum enum int int int int int int enum enum enum int int int enum enum int
mins 30.0 10.968339120935102 20.0 21.0 1596.0 2.0 3.0 1892.0 1950.0 0.0 0.0 0.0 0.0 0.0 372.0 0.0 0.0 480.0 0.0 0.0 0.0 0.0 1.0 1.0 3.0 0.0 1920.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 2006.0 35311.0
mean 656.5454545454544 11.412471417415036 69.88636363636363 54.7749981076375866930.522727272727 4.340909090909091 5.454545454545455 1938.90909090909081964.4545454545455 14.068181818181818 183.11363636363637 25.886363636363637427.568181818182 636.5681818181822 784.2954545454546 209.500000000000035.318181818181818999.11363636363630.250000000000000060.0227272727272727281.0909090909090913 0.113636363636363632.340909090909091 1.1136363636363633 5.295454545454544 0.11363636363636363 1966.070423231591 0.8181818181818182223.54545454545453 42.8863636363636417.1590909090909137.659090909090910.0 0.0 0.0 90.9090909090909 6.25 2007.8863636363633 95765.61363636363
maxs 1405.0 11.592682530778966 190.0 140.0 21750.0 6.0 9.0 1977.0 2006.0 381.0 1440.0 499.0 994.0 1440.0 1440.0 994.0 234.0 2372.0 2.0 1.0 2.0 1.0 4.0 2.0 11.0 2.0 1998.0 3.0 936.0 321.0 287.0 286.0 0.0 0.0 0.0 3500.0 12.0 2010.0 150000.0
sigma 427.577407899786240.1691849754202543560.95641443595537 21.1543469370321 3959.5263370035746 0.93865767141246971.516644789161419223.89396944625402618.047037437033808 62.471722990177895 294.3891757291177 91.37482628980807 332.9897266190454306.01674963485647 214.22815261820085283.3505101952474 35.27682731559835315.365805752038 0.4882336459352794 0.15075567228888181 0.362047267772427630.321038220640550430.71343198754027450.32103822064055043 1.4560147177659126 0.3867520743564635 19.044164062233055 0.755529300763972 213.9337492043408 78.7079428955009354.0197824151263166.176980182923710.0 0.0 0.0 531.26360198977913.41082408374172231.3845645624108944 23115.542274867905
zeros 0 0 0 0 0 0 0 0 0 41 22 40 10 5 0 27 43 0 34 43 1 39 0 0 0 40 0 16 16 30 38 30 44 44 44 42 0 0 0
missing0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 706.0 10.968339120935102 190.0 RM 70.0 5600.0 Pave nan Reg Lvl AllPub Inside Gtl IDOTRR Norm Norm 2fmCon 2Story 4.0 5.0 1930.0 1950.0 Hip CompShg VinylSd Wd Shng None 0.0 Fa Fa Slab nan nan nan nan 0.0 nan 0.0 0.0 0.0 GasA Fa N SBrkr 372.0 720.0 0.0 1092.0 0.0 0.0 2.0 0.0 3.0 2.0 Fa 7.0 Mod 0.0 nan nan 1978.5061638868744nan 0.0 0.0 nan nan N 0.0 0.0 0.0 0.0 0.0 0.0 nan nan Othr 3500.0 7.0 2010.0 WD Normal 55000.0
1 621.0 11.036545441593269 30.0 RL 45.0 8248.0 Pave Grvl Reg Lvl AllPub Inside Gtl Edwards Norm Norm 1Fam 1Story 3.0 3.0 1914.0 1950.0 Gable CompShg Stucco Stucco None 0.0 TA TA BrkTil TA TA No BLQ 41.0 Unf 0.0 823.0 864.0 GasA TA N FuseF 864.0 0.0 0.0 864.0 1.0 0.0 1.0 0.0 2.0 1.0 TA 5.0 Typ 0.0 nan nan 1978.5061638868744nan 0.0 0.0 nan nan N 0.0 0.0 100.0 0.0 0.0 0.0 nan nan nan 0.0 9.0 2008.0 WD Normal 67000.0
2 1326.0 11.081865084108477 30.0 RM 40.0 3636.0 Pave nan Reg Lvl AllPub Inside Gtl IDOTRR Norm Norm 1Fam 1Story 4.0 4.0 1922.0 1950.0 Gable CompShg AsbShng AsbShng None 0.0 TA TA BrkTil TA Fa No Unf 0.0 Unf 0.0 796.0 796.0 GasA Fa N SBrkr 796.0 0.0 0.0 796.0 0.0 0.0 1.0 0.0 2.0 1.0 TA 5.0 Typ 0.0 nan nan 1978.5061638868744nan 0.0 0.0 nan nan N 0.0 0.0 100.0 0.0 0.0 0.0 nan MnPrv nan 0.0 1.0 2008.0 WD Normal 55000.0
3 1381.0 11.12330045348205 30.0 RL 45.0 8212.0 Pave Grvl Reg Lvl AllPub Inside Gtl Edwards Norm Norm 1Fam 1Story 3.0 3.0 1914.0 1950.0 Gable CompShg Stucco Stucco None 0.0 TA Fa BrkTil TA Fa No Rec 203.0 Unf 0.0 661.0 864.0 GasA TA N FuseF 864.0 0.0 0.0 864.0 1.0 0.0 1.0 0.0 2.0 1.0 TA 5.0 Typ 0.0 nan Detchd 1938.0 Unf 1.0 200.0 TA Fa Y 0.0 0.0 96.0 0.0 0.0 0.0 nan nan nan 0.0 6.0 2010.0 WD Normal 58500.0
4 30.0 11.17125449658085 30.0 RM 60.0 6324.0 Pave nan IR1 Lvl AllPub Inside Gtl BrkSide Feedr RRNn 1Fam 1Story 4.0 6.0 1927.0 1950.0 Gable CompShg MetalSd MetalSd None 0.0 TA TA BrkTil TA TA No Unf 0.0 Unf 0.0 520.0 520.0 GasA Fa N SBrkr 520.0 0.0 0.0 520.0 0.0 0.0 1.0 0.0 1.0 1.0 Fa 4.0 Typ 0.0 nan Detchd 1920.0 Unf 1.0 240.0 Fa TA Y 49.0 0.0 87.0 0.0 0.0 0.0 nan nan nan 0.0 5.0 2008.0 WD Normal 68500.0
5 917.0 11.177260209023242 20.0 C (all) 50.0 9000.0 Pave nan Reg Lvl AllPub Inside Gtl IDOTRR Norm Norm 1Fam 1Story 2.0 3.0 1949.0 1950.0 Gable CompShg AsbShng AsbShng None 0.0 TA TA CBlock TA TA Av BLQ 50.0 Unf 0.0 430.0 480.0 GasA TA N FuseA 480.0 0.0 0.0 480.0 1.0 0.0 0.0 0.0 1.0 1.0 TA 4.0 Typ 0.0 nan Detchd 1958.0 Unf 1.0 308.0 TA TA Y 0.0 0.0 0.0 0.0 0.0 0.0 nan nan nan 0.0 10.0 2006.0 WD Abnorml 35311.0
6 977.0 11.193205027446796 30.0 RL 51.0 5900.0 Pave nan IR1 Bnk AllPub Inside Gtl BrkSide Norm Norm 1Fam 1Story 4.0 7.0 1923.0 1958.0 Gable CompShg Wd Sdng Wd Sdng None 0.0 TA TA PConc Gd TA No Unf 0.0 Unf 0.0 440.0 440.0 GasA TA Y FuseA 869.0 0.0 0.0 869.0 0.0 0.0 1.0 0.0 2.0 1.0 Fa 4.0 Typ 0.0 nan nan 1978.5061638868744nan 0.0 0.0 nan nan Y 0.0 0.0 0.0 0.0 0.0 0.0 nan nan nan 0.0 8.0 2006.0 WD Normal 85500.0
7 1327.0 11.201453663593002 30.0 RH 70.0 4270.0 Pave nan Reg Bnk AllPub Inside Mod Edwards Norm Norm 1Fam 1Story 3.0 6.0 1931.0 2006.0 Gable CompShg MetalSd MetalSd None 0.0 TA TA BrkTil TA TA No Rec 544.0 Unf 0.0 0.0 544.0 GasA Ex Y SBrkr 774.0 0.0 0.0 774.0 0.0 0.0 1.0 0.0 3.0 1.0 Gd 6.0 Typ 0.0 nan nan 1978.5061638868744nan 0.0 0.0 nan nan Y 0.0 0.0 286.0 0.0 0.0 0.0 nan nan nan 0.0 5.0 2007.0 WD Normal 79000.0
8 1324.0 11.213968403112121 30.0 RL 50.0 5330.0 Pave nan Reg HLS AllPub Inside Gtl BrkSide Norm Norm 1Fam 1Story 4.0 7.0 1940.0 1950.0 Hip CompShg VinylSd VinylSd None 0.0 Fa TA CBlock TA TA No LwQ 280.0 Unf 0.0 140.0 420.0 GasA Gd Y SBrkr 708.0 0.0 0.0 708.0 0.0 0.0 1.0 0.0 2.0 1.0 Fa 5.0 Typ 0.0 nan nan 1978.5061638868744nan 0.0 0.0 nan nan Y 164.0 0.0 0.0 0.0 0.0 0.0 nan nan nan 0.0 12.0 2009.0 WD Normal 82500.0
9 1001.0 11.253681686666216 20.0 RL 74.0 10206.0 Pave nan Reg Lvl AllPub Corner Gtl Edwards Norm Norm 1Fam 1Story 3.0 3.0 1952.0 1952.0 Flat Tar&Grv BrkComm Brk Cmn None 0.0 TA TA Slab nan nan nan nan 0.0 nan 0.0 0.0 0.0 GasW Fa N FuseF 944.0 0.0 0.0 944.0 0.0 0.0 1.0 0.0 2.0 1.0 Fa 4.0 Min1 0.0 nan Detchd 1956.0 Unf 2.0 528.0 TA Fa Y 0.0 0.0 0.0 0.0 0.0 0.0 nan nan nan 0.0 7.0 2009.0 WD Normal 82000.0
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "local_frame = preds.cbind(valid.drop(['Id'])).as_data_frame()\n", "local_frame.sort_values('predict', axis=0, inplace=True)\n", "local_frame = local_frame.iloc[0: local_frame.shape[0]//10, :]\n", "local_frame = h2o.H2OFrame(local_frame)\n", "local_frame['predict'] = local_frame['predict'].log()\n", "local_frame.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Train penalized linear model in local region " ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "glm Model Build progress: |███████████████████████████████████████████████| 100%\n", "glm prediction progress: |████████████████████████████████████████████████| 100%\n", "\n", "Local GLM R-square:\n", "0.87\n", "\n", "Local GLM Coefficients:\n", "FullBath: -0.10560466842690448\n", "HalfBath: -0.1011673167208127\n", "MoSold: -0.008566732387828832\n", "YrSold: -0.002307356382236561\n", "EnclosedPorch: -0.00047646418589632216\n", "MiscVal: -7.659111768804664e-05\n", "BsmtFinSF2: -4.009348055311646e-06\n", "2ndFlrSF: 2.760992025667719e-07\n", "BsmtFinSF1: 1.0698104588444621e-05\n", "LowQualFinSF: 4.571947416837975e-05\n", "WoodDeckSF: 5.7321738441605914e-05\n", "GarageArea: 0.00017678332091345634\n", "GrLivArea: 0.0003117252960306305\n", "LotFrontage: 0.00095008001255757\n", "YearRemodAdd: 0.001492563117669517\n", "YearBuilt: 0.002536554911375407\n", "BedroomAbvGr: 0.023509735677891618\n", "OverallQual: 0.03550114547540719\n", "BsmtFullBath: 0.038584610439521966\n", "OverallCond: 0.04580958970433358\n", "Fireplaces: 0.11432285083629967\n", "BsmtHalfBath: 0.1795995633777401\n", "Intercept: 7.506954243761411\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgkAAAFyCAYAAAB/b0lnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzsnXlYVcX7wD9zAWURV1BUBMQNUNxwzz333LfEpVJTs9K0\n+llZ7plW39I0lzRT0zR3Tc0t9xJcwC3FLVcEBNxAUWSZ3x/ngiwXuMBl0/k8z3kud+add95z7uWe\n98y8846QUqJQKBQKhUKREl1eG6BQKBQKhSJ/opwEhUKhUCgUBlFOgkKhUCgUCoMoJ0GhUCgUCoVB\nlJOgUCgUCoXCIMpJUCgUCoVCYRDlJCgUCoVCoTCIchIUCoVCoVAYRDkJCoVCoVAoDKKcBIUiBxBC\ntBBCxAsheuZSP81zsh9TYMhWIcQyIcQ1E/bxlr4PJ1PpzAv05zAxr+1QKJSToHghEUK8qf+hTThi\nhBCBQoilQohyuWRGbuU8z7AfA9fjiRDiohBirhCidG4YqSelrRKIz6wSIcRnQohuaejPl7nmhRDO\nKT6DWCHEDSHERiFELRP14S6EmFTQnSRF/sE8rw1QKHIQCUwArgOWQCNgMPCKEKKGlPJZDvcvclh/\nZkl5PZoCI4GO+uvxNA9sepusPayMB9YBW1KU/wqszoXPNjusAv4EzAB34F2ggxCikZTyTDZ1ewCT\ngP3AzWzqUiiUk6B44dkppfTX//2LEOIuMA7oCqzPO7PyjJTX4x4wFugGrDHUQAhhLaWMygljpJRx\nQJwJ9UkgPzsIAP5SylUJb4QQR4A/0By2kdnULcinIymKgomablC8bBxG+yGtlLRQCNFVCLFNCHFb\nCPFUCHFFCPGFEEKXQu6AEOKMflh3vxDisX4a4/8y6lgIUUjfx30hRKMk5eWEEL8IIUL0ff8rhBhs\noH15IcRmIcQjIcQdIcT3QGGyN2KxT9++or6PhDn95kKI+UKIO8CtnLLVUEyC0PhAf52fCCFChRA7\nhBB19fXxgDWQYGu8EOKXFPY7pdD5rt7Wp/rP+EchRLEUMkZ/tkKIUXp9j4UQ94QQx4UQ/TJx3ZOy\nT/9aMT0hIUQd/XV4KISIFEL8JYRomKT+TWCt/u0B/XWIEwUgXkWRf1EjCYqXjYQf4vspyt8CIoHv\ngEdAa2AqYAt8kkROAiWBHcBG4HegNzBTCHFGSrnLUKdCCEu0p8W6wKsJT/P6eICjaE/Tc4BwoCOw\nRAhhK6Wck6T9PsAR+AEIBgbp7czOk2Nl/evdJOcHMB8IBaYANjloq6EYgl+AN4HtwGK036lmaNNF\n/sBAYInelkX6Nv+lpU8IMRmYCOzWn1c1tCH+ekKIV/SjGQltM/xshRDD9Oe1FpiNNnVTE2iob5NZ\nUn4GqRBCeACHgIfATCAWGIHmDDSXUh7X188BRgFfAhf0zQOyYJNCoSGlVIc6XrgD7SYTB7QCSgHl\ngV7AHeAxUC6FfGEDOhagOQ4WScr26/X2T1JmAQQBa5OUtUALyOuJdpM9oO/bM0UfPwOBQPEU5auA\newl2AR/o++2ZRMYSuKQvb56F6/E6EIbmFJVNIhevt1fktK3AUuBqkvet9P1/n8H5RAK/pHOeTvr3\ndsBT4M8Ucu/q5d7Mwme7CTiThe+ks/7cvtB/BqX13xN/fb/dksjGAxNT9PkEcE5S5oDmNOxPUtbL\nmO+DOtRh7KGmGxQvMgLYi3YjvIUW6PYI6CqlDEoqKKWMTmwkRBEhRCngb7RhbbcUeh/JJHPKUsoY\n4BjgmkJOAsWBPUBVoIWU8mwKmZ7AVsBMCFEq4UB76i2ONvIA2hN7sJRyY5J+n/L8SdoYUl6PVUAE\n0F1KGZzC7sVSypRP+Llhay+0G+TUTJxXerRBu9HPTlG+GM3ReC1FuTGf7QPAUQhRL4s2TUH7DELQ\nRlwqAuOklCmDMAHQT3m1BTZJKW8ksS0E7TNsKoQokkVbFIp0UdMNihcZifbEeBkoBgwBmmMgsE0/\nnDsd7Um2aAodxVKIBxro6z7gmVIt2s2pMFBHSnkhWaUQ9mg31+FoQ8eG7E9YnugMXDEgc9FAWVok\nvR6xwB0pZVrtr+eRra5AkJTygRGyxuCsf72UtFBKGSOEuJqkPgFjPtuvgVeBY0KIK2hO0iop5REj\nbVqE5rDGozkc5/TOSFrYozmrlwzUBaDFllVATSsocgDlJChedI7L5/P/W9BGB1YJIapJfcS+PoDt\nENoP9hfAVbQhai+0+d+UI25pReMbCiDcDPQDPkObl09Kgt6VwPI0dGZ3SVxKEq9HBjxJ8T4vbM0L\nMvxspZQXhBDVgM5AB7QRlneFEFOklFOM6OOylHJfxmIKRd6jnATFS4OUMl4I8Rna3PP7wDf6qpZA\nCbQ54X8S5IUQlVIpyTyb0Z40lwshIqSU7yWpC0Mb8jYz4qZxA6huoDzlVEhOkVu2/ge0E0IUz2A0\nwdhgzYTh+WokGR0RQligDfPvMVJP8s6lfII2GrBOCGGOFjPwuRBihjR9joYwIArtHFLijjYikbAC\nRS1/VJgUFZOgeKmQUh5Em2MeI4QopC+OQ3tSTPx/0Ne9a6I+VwKjgZFCiBlJyuOBDUAvIUSqm6oQ\nwi7J2z+BckKIXknqrYFhprAxI3LR1g1on8OkDOQeo01/ZMRfQAza9U/K22jTStuM0JEMIUTJpO+l\nlLFoQ/0CLf7BpOiv/W6gW9KlnUKIMoA3cFhK+Uhf/FhvhzHXRqHIEDWSoHiRSSt/wLdoT4Fvoc0P\nH0Gbd/5VCDFHLzMQEz6VSSnnCSGKAtP1IwoJzsKnaCMZR4UQi4HzaMvwvNCWDCbcfBejjX6s0AfM\nJSwrfJwJM4zNp5CWXI7bKqU8IIRYAYwWQlQFdqI5Dc2AfVLK+XpRP6CNEGIs2uqDa1LKYwb0hesd\ns4lCiJ1oy1Dd0JIWHQN+y8gmA+wWQoQA/6CtWPEA3gO2SSkz83lkhi/QgjD/EULMR3NshwOF0JKD\nJXBKX/eJEKI4EA3slVKG55BdihedvF5eoQ515MTB86VwdQ3UCbTgvUvol/mhrcH/B231wy3gK7Qf\n5ZRL9vYDpw3oXAr8l+R9C1IsA9SXz9SXj0xSZoe2vv06WizEbbQnxyEp2jqiDWtHot2cvkOLes/M\nEshU1yMzcqa2NeV1S/L5fAicQ4uNCEF74q+dRKaq/rN4pNf5Swr7nVLoHKnX9xTNqZgLFE0hY+xn\n+7ZeNhRtGuASMAMoksG1ddbbNtaI728cMCFFWS20UZqH+uu6B2hgoO0Q/ff7mTHfDXWoI70j4QdS\noVAoFAqFIhmZjkkQQjQTQvyhT20aL4TomqK+hxBilxAiXF9f0wid+0Xy3dESjq2ZtU+hUCgUCoVp\nyErgog3avNe7GJ6ztUHLjz8ujXpD9EDLHpZw1EAbJlubXiOFQqFQKBQ5R6YDF6WUO9GCiRBCpApw\nklokN0IIZ4wMlJIpljoJIfqjBTm9jLv0KRQKhUKRL8ivSyCHoO0JnzKhi0KhUCgUilwi3y2BFEI0\nQEvEkmr72RRypYD2PI+yVigUCoVCYRyWgAuwS0qZ5g6k+c5JAIYCZ6WUfhnItSdra5wVCoVCoVBo\nDEDbKMwg+cpJ0Gdlex0tcUhGXAdYuXIl7u7uOWlWrjN27FhmzZqV12aYHHVeBQt1XgULdV4Fi7w+\nr4CAAAYOHAgpNnNLSU47CZlNwtAXLYOYMSMETwHc3d2pW7duRrIFimLFir1w5wTqvAoa6rwKFuq8\nChb56LzSna7PtJMghLABKvN85YKrEKIWcE9KeUsIUQJwAsrrZdz0qyBCpJR39DqWA7ellONTqB8K\nbJZS3s+sXQqFQqFQKExLVlY31ANOouVOl2jpVv2BhC1Su+rrt+rrV+vrk+5BXwEtH0Ii+jztTYCf\ns2CTQqFQKBQKE5OVPAkHSce5kFIuJ+395hNkWhsouwSYZdYehUKhUCgUOUN+zZPwUuPt7Z3XJuQI\n6rwKFuq8ChbqvAoWBeW8CuwGT0KIuoCfn59ffgn+UCgUCoWiQODv74+XlxeAl5TSPy25fLUE0tTc\nvHmT8HC1jbpCkRI7OzucnJzy2gyFQpHPeWGdhJs3b+Lu7k5UVFRem6JQ5Dusra0JCAhQjoJCoUiX\nF9ZJCA8PJyoq6oVMtqRQZIeEJCrh4eHKSVAoFOnywjoJCbyIyZYUCoVCocgN1OoGhUKhUCgUBlFO\ngkKhUCgUCoMoJ0GhUCgUCoVBlJOgUCgUCoXCIMpJUBQYli1bhk6n4+bNm3ltikKhULwUKCehALJ8\n+XJ0Oh06nY4jR44YlKlQoQI6nY6uXbsmK9fpdIwePTrTfU6ZMiWxT51Oh42NDdWrV2fChAlERkZm\n6TwyixACbUNRhUKhUOQGL/wSyBcZKysrVq1aRZMmTZKVHzx4kNu3b2NpaWnS/oQQLFy4EBsbGx49\nesTu3buZPn06+/fv5++//zZpXwqFQqHIe9RIQgGmU6dOrFu3jvj4+GTlq1atol69ejg4OKTRMuv0\n6tWL/v37M3z4cNavX0/Pnj3x8fHh6NGjabZRWS8VCoWiYKKchAKKEAJvb2/u3r3Lnj17EstjYmJY\nv349/fv3Jzc272rdWtv1+9q1awBMnjwZnU5HQEAA/fv3p2TJkjRr1ixR/uLFi/Tu3ZtSpUphZWVF\n/fr12bp1ayq958+fp3Xr1lhbW1OhQgWmT5+eyhkCOHHiBO3bt8fe3h5ra2tcXV0ZOnRoDp2tQqFQ\nvFyo6YYCjIuLC40aNWL16tW0b98egD///JOIiAj69evHDz/8kOM2XLlyBYBSpUoBJMYM9OnTh6pV\nqzJjxoxEZ+XcuXM0bdoUR0dHPvvsM2xsbFi7di3du3dn48aNdOvWDYA7d+7QsmVL4uPjGT9+PNbW\n1ixatCjV9ElYWBjt27endOnSfPbZZxQvXpzr16+zcePGHD9vhUKheBlQTkIBp3///owfP57o6GgK\nFy7MqlWraNGiRY5MNQDcvXsXKSWPHj1i165dLFiwAAcHh2SjBQB16tRhxYoVyco++OADXFxcOH78\nOObm2ldv5MiRNG3alE8++STRSZg5cyZ3797l2LFjCVuZ8uabb1K5cuVk+o4cOcKDBw/466+/qFOn\nTmL51KlTTX7eCoVC8TKinAQ9UVFw4ULO9uHmBtbWptXZt29fxowZw7Zt22jfvj3btm3jxx9/NG0n\neqSUVKtWLfG9EIIaNWqwfPnyZE/5QghGjBiRrO39+/fZv38/06ZN4+HDh8nq2rVrx5QpUwgODqZs\n2bLs2LGDRo0aJToIoI1UDBgwgAULFiSWFS9eHCklf/zxB56enomOh0KhUChMg/pV1XPhAiS5J+UI\nfn5g6r2m7OzsaNOmDatWreLx48fEx8fTu3dv03aiRwjBxo0bsbW1xcLCAkdHRypWrGhQNmX5lStX\nkFIyYcIEvvjiC4O6Q0NDKVu2LDdu3KBRo0apZJI6KAAtWrSgd+/eTJ06lVmzZtGyZUu6d+9O//79\nKVSoUDbOVKFQKBSgnIRE3Ny0m3hO95ET9O/fn2HDhhEcHEzHjh2xtbXNmY6AZs2aUbJkyQzlrKys\nkr1PCDr8+OOPE+MnUpJyOsEY1q5dy7Fjx9i6dSu7du1iyJAhfP/99/j6+mJt6mEbhUKheMlQToIe\na2vTP+XnFj169GDEiBEcPXqUNWvW5LU5BnF1dQXAwsIicUVEWjg7O3P58uVU5RfSmA9q0KABDRo0\nYNq0aaxevZoBAwbw+++/M2TIkOwbrlAoFC8xagnkC4CNjQ0LFy5k8uTJdOnSJa/NMYi9vT0tW7bk\np59+IiQkJFV9eHh44t+dOnXC19eXEydOJJaFhYWxatWqZG0ePHiQSk+tWrUAiI6OTiy7evUqV69e\nzfY5KBQKxcuGGkkooKTMgTBo0CCj2544cYLp06enKm/ZsiWvvPJKtm1Li3nz5tGsWTM8PT0ZNmwY\nrq6u3LlzBx8fH27fvs3JkycBGDduHCtWrKB9+/Z88MEHWFtbs3jxYlxcXDhz5kyivuXLlzN//nx6\n9OhBpUqViIyMZPHixRQrVoxOnTolyrVu3RqdTqccBYVCocgkykkooBizh4GhvQ6EEBw9etRghsRp\n06blqJPg7u7OiRMnmDJlCsuXL+fu3buULl2aOnXqMGnSpEQ5BwcHDhw4wKhRo/j6668pVaoUI0eO\nxMHBgbfffjtRrkWLFhw/fpw1a9Zw584dihUrRsOGDVm1ahXOzs7Jzlnt+aBQKBSZR+RGVr6cQAhR\nF/Dz8/OjroFgAn9/f7y8vEirXqF4WVH/GwqFIuF3APCSUvqnJadiEhQKhcIAQZFBxMXH5bUZCkWe\nopwEhUKhSEG8jMdjngeL/RfntSkKRY5wOuS0UXLKSVAoFIoUhD4O5WH0Qw5cP5DXpigUJueXk78w\nZItxS8Qz7SQIIZoJIf4QQtwWQsQLIbqmqO8hhNglhAjX19c0Um8xIcQ8IUSQEOKpEOKCEKJDZu1T\nKBSK7BIYEQjAkVtH8tgShcK0bLu0jeFbh9PTvadR8lkZSbABTgHvAoaiHm2Aw8C4NOpTIYSwAP4C\nnICeQFVgGHA7C/YpFApFtkhwEm5F3OJ2hPoZUrwY+Nzyoe+6vnSt1pVPm35qVJtML4GUUu4EdgII\nA+vKpJQr9XXOgLHrzoYCxYFGUsqESKGbmbVNoVAoTEFgRCA6oSNexuMT6ENvj5zZD0WhyC0CwgLo\nvLoz9crVY1WvVZw/c96odvklJqEL4APMF0KECCHOCiE+E0LkF/sUCsVLRGBEIM7FnHEu5ozPLZ+8\nNkehyBaBEYG0X9mecrbl+MP7DyzNLTNupCe/JFNyBVoDK4GOQGVgAZp90/LQLoVC8RISGBGIY1FH\nyhctj0+gchIUBZf7T+7TYWUHhBDsHLCT4pbFM9U+vzgJOuAOMFxq2Z1OCiEcgY/JwEkYO3YsxYoV\nS1bm7e2dalthhUKhMJYEJ6GRYyM2BmwkOjaawuaF89oshSJTPIl5Qtffu3L97+s0uNeAkftGJtY9\nfPjQKB35xUkIBp7J5OkfAwAHIYS5lDI2rYazZs1KM+OiQqFQZIXAiEAalG9AY8fGPIt7xsmQkzRy\nbJTXZikURhMbH0v/jf3xC/Jj3zf7Un1/k2RcTJecdhKMzfn8D+CdoqwaEJyeg6BQKBSmRkqZOJJQ\ny6EWluaW+NzyUU6CosAgpeS97e+x9eJWFr+6BV1QI7aehDt3ICREe71wwThdmXYShBA2aDEDCSsX\nXIUQtYB7UspbQogSaEsZy+tl3PSrIEKklHf0OpYDt6WU4/U6FgDvCSHmAHPRlkB+BszOrH0KxYtA\ny5Yt0el07Nu3L69Neem4++Qu0XHROBZ1pJBZIeqVq4dPoA9jGZvXpikUBpESDh6EFSvgyhU4Zz+F\nu56LYPNShkx6LVFOCLCzgzJlwMrKON1ZWT1QDzgJ+KGNFHwH+ANT9PVd9fVb9fWr9fUjkuioADg8\nP0EZCLTX6z6N5hzMAr7Ogn0vBWfPnqV37964uLhgZWWFo6Mj7dq148cff8xr03KNGTNmsGXLFpPr\ndXFxQafTJR5lypShefPmbN682eR9pYXatTLvSMiR4FjUEYDGjo1V8KIiX3L7Nnz1FVSpAq1aweHD\n8KTGQu56TqGjxQyWj32LnTvh5EkIDoZnzyA0FM6ehYULjesjK3kSDpKOcyGlXA4sz0BHawNlR4Em\nmbXnZeTIkSO0bt0aZ2dnhg8fjoODA7du3cLX15c5c+bw/vvv57WJucJXX31Fnz596Natm0n1CiGo\nU6cOH3/8MVJKgoKC+Omnn+jZsycLFy5k+PDhJu1Pkb8w5CR8e+TbxCkIhSIviYmB7dvh559hxw4o\nXBj69oWlSyHMbhN91r3H6Pqjmd3hE0zxrJFfAhcVmWD69OkUL16cEydOYGtrm6wuPDzcZP1ERUVh\nbW2d6boXgfLly+Pt/TxMZtCgQVSuXJlZs2al6yQ8ffoUS0vj1yAr8h+BEYGYCTPK2JQBoHGFxoCW\nra5P9T55aZriJebiRViyBH79VYspqF8f5s+Hfv2gWDGIiI6g3HeD6OXei1kdZplsNFIlKyqAXL16\nlerVq6dyEADs7OwS/75x4wY6nY5ff/01lZxOp2Pq1KmJ7ydPnoxOpyMgIID+/ftTsmRJmjVrBsBb\nb72Fra0tV69epVOnThQtWpSBAwcmtl23bh316tXD2toae3t7Bg0aRFBQUKo+161bR/Xq1bGysqJm\nzZps3ryZt956i4oVKyaT+9///scrr7yCnZ0d1tbW1KtXjw0bNqSyPyoqimXLliVOCwwZ8nzDkqCg\nIIYMGYKDgwOWlpbUqFGDpUuXZnRp06RMmTK4u7tz7dq1xDIXFxe6du3K7t27qV+/PlZWVixatCix\nfuXKlYnXpVSpUnh7exMYGJhK96JFi6hcuTLW1tY0atSIv//+26ANc+fOpUaNGtjY2FCyZEnq16/P\n77//nuVzUhgmMCKQcrblMNOZAeBQxAGX4i5qykGR69y9qzkGzZqBm5s2evD663D6NBw7BiNGaA4C\nwLpz64iKieK7dt+hM2EeQjWSUABxdnbG19eXc+fOUb16dZPoTPA6+/TpQ9WqVZkxYwYJK1KFEMTG\nxtK+fXuaNWvGd999lziKsGzZMoYMGULDhg2ZOXMmd+7cYfbs2Rw5coSTJ09StGhRALZv306/fv2o\nVasWM2fO5P79+wwdOpTy5cun8njnzJlDt27dGDhwIM+ePeP333+nb9++bNu2jY4dOwLaDXjo0KE0\nbNgw8cm+UqVKAISGhtKwYUPMzMwYPXo0dnZ27Nixg6FDhxIZGcno0aMzfX1iY2O5desWpUqVSnbN\nLly4QP/+/RkxYgTDhw9PzM8xffp0Jk6cSL9+/Rg2bBhhYWHMmTOHFi1aJLsuS5Ys4Z133qFp06aM\nHTuWq1ev0rVrV0qWLImTk1NiX4sXL+aDDz6gb9++jBkzhqdPn3LmzBmOHj1Kv379Mn0+irQxNK2g\n4hIUucXdu7B5M6xbB3v3QlwcvPoqrF4N3btDWgOVy04vo22ltlQoVsG0BkkpC+QB1AWkn5+fNISf\nn59Mr74gs2fPHmlhYSHNzc1lkyZN5CeffCJ3794tY2Jiksldv35dCiHk8uXLU+kQQsgpU6Ykvp88\nebIUQsiBAwemkn3rrbekTqeTn3/+ebLymJgYWaZMGVmrVi0ZHR2dWL59+3YphJCTJ09OLPP09JRO\nTk4yKioqsezQoUNSCCErVqyYTO/Tp0+TvY+NjZWenp6yTZs2ycqLFCkiBw8enMreoUOHyvLly8v7\n9+8nK/f29pYlSpRIpT8lLi4uskOHDjI8PFyGh4fL06dPy379+kmdTifHjBmTTE6n08k9e/Yka3/j\nxg1pbm4uZ86cmaz83Llz0sLCQs6YMUNK+fz6eXl5Jfvsfv75ZymEkK1atUos6969u/T09EzXbmN5\nkf83TMGry1+Vfdb2SVY2x3eOLDStkHwak/53R6HICuHhUv78s5Tt20tpbi6lEFK2aCHlvHlSBgdn\n3P5S+CXJZOSqM6uM7jPhdwCoK9O516qRBD1RMVFcCDdy4WgWcbNzw9oi+/P4bdq0wcfHhxkzZrBr\n1y58fX355ptvsLe35+eff6ZLly5Z0iuEYMSIEWnWv/POO8nenzhxgtDQUKZOnUqhQoUSyzt16oSb\nmxvbt29n0qRJBAcH8++///LFF19glWTdTbNmzfD09CQyMjKZ3sKFn2e2e/DgAbGxsTRr1szoofWN\nGzfy+uuvExcXx927dxPL27Vrx5o1a/D396dx48bp6ti1axf29vaJ783NzXnjjTeYOXNmMrmKFSvS\npk2bZGUbNmxASkmfPn2S9V+6dGmqVKnC/v37+fTTTzl+/DihoaF8+eWXmJs//1d88803+fjjj5Pp\nLF68OIGBgZw4cYJ69eoZdR0UWeN25G1qlkm+w33jClpSJf9g/8QYhZxmU8Amdv23iwWvLVCrXV5A\nDI0YtGgBP/wAPXuCg0PGOhJYfno5xQoXo7tbd5PbqZwEPRfCL+C1KOPsU9nBb7gfdcumzg6ZFby8\nvFi/fj2xsbGcPn2aTZs2MWvWLPr06cOpU6dwc3PLkt6U8QEJmJub4+iYfAj2xo0bCCGoWrVqKnk3\nNzf++eefRDl4Ph2QlMqVK3Py5MlkZdu2bWP69OmcOnWK6OjoxHKdLuN5trCwMB48eMCiRYv46aef\nUtULIQgNDc1QT6NGjZg+fToA1tbWuLu7J04RJMXQ9bpy5Qrx8fFUrlzZYP8JDtXNmzcRQqSSMzc3\nx9XVNVnZJ598wt69e2nQoAGVK1emXbt29O/fnyZN1IIgUyKl5NbDW6mmG2qVqYWVuRU+gT655iQs\nPbWUrZe20qFyhxz58VeYlrh4bQPjhFiWpERHw7//gr+/thzR3x/8/CA+Hpo3z5pjkLTf5aeX069G\nP6wsjEx+kAmUk6DHzc4Nv+F+Od6HqTE3N8fLywsvLy+qVKnC4MGDWbduHRMmTEjz6SM+Pj5NfVZp\nZNhI+nSfkxw+fJhu3brRsmVLFixYQNmyZbGwsOCXX35h9erVGbZPOLeBAwfy5ptvGpSpWbOmwfKk\n2NnZ0apVqwzlDF2v+Ph4dDodO3fuNOjYFClSJEO9KXFzc+PixYts27aNnTt3snHjRubPn8+kSZOY\nNGlSpvUpDBMRHcHjmMepnAQLM4vEpEq5gZQS30BfzIQZH+/+mI6VO6q9I/KA0MehDP1jKA+ePiA6\nNprouOg0X2PjY9EJHRVsnbA3r0Thx5WIDqlE2KVKBJ6pRFy4K7qYori7Q5068Oab0KNH1hyDpOy7\nto/AiEDeqv2WSc45JcpJ0GNtYW2yp/y8ImEYOjg4GIASJUoA2pB9UhKe7LOLs7MzUkouXrxIy5Yt\nk9VdvHgRZ2fnRDnQnrBTkrJs48aNWFlZsWvXrmRD8EuWLEnV1pATZG9vj62tLXFxcbRunSodR65Q\nqVIlpJS4uLgYHE1IIOH6Xb58Odn1i42N5dq1a9SuXTuZvJWVFX369KFPnz7ExsbSo0cPpk+fzmef\nfZZsukf6q6N5AAAgAElEQVSRdRJyJJS3LZ+qrkmFJqw8szJX7Lh6/yphUWF82/ZbPv3rU+Yem8vH\nTT7OuKHCJISFaU/6Xx/7kb/j9lP2QS908YUhrjAirjAivjCWcYWxitXKiC2MjCvM4ycx3Hh2jRsl\n/kOUOo4o9TvxDSOgoaa3pJUdRUpWIr5kJcp69MHBIfsjRMtOL8PNzo2G5RtmW5ch1BLIAsiBAwcM\nlm/fvh0gMcLe1tYWOzs7Dh06lExu3rx5JpnjrFevHqVLl2bhwoXExMQklu/YsYOAgAA6d+4MQNmy\nZalRowa//vorUVFRiXIHDx7k7NmzyXSamZklrqZI4Pr16wYzK9rY2KRygHQ6Hb169WLDhg2cO3cu\nVRtT5pFIi549e6LT6ZgyZYrB+nv37gHa9bO3t2fhwoXJznfp0qWpziuhTQLm5ua4u7sjpUy89k+e\nPOHixYvJ4iAUmSNlIqWkNHZszO3I29x6eCvH7fAN9AVgcO3BjKw3kmmHphH6OONpMkXmCQ3VkhJ9\n+aX2ZO/kBKVLQ8cuTzn4eAGlbw+h+qXl1Li2iFq351In7H94PZhOg6iJNIr7hFfMxtDceiStiw/B\nu8oIlnjP5OT4dTz9wZ/YaQ8I+78wfIf68lvP3xjdcDRudm78G/ov/db3S/y+ZZUHTx+wMWAjb9V6\nK8fiVtRIQgFk1KhRREVF0aNHD9zc3Hj27Bn//PMPa9euxdXVlcGDByfKvv3228ycOZNhw4ZRr149\nDh06xOXLlxOXN2YHc3Nzvv76a4YMGULz5s3x9vYmJCSEOXPm4OrqypgxYxJlv/rqK7p3706TJk0Y\nPHgw9+7dY968eXh6evLo0aNEuddee43vv/+e9u3b079/f+7cucP8+fOpUqUKZ86cSda/l5cXf/31\nF7NmzaJcuXJUrFiRBg0aMHPmTA4cOEDDhg0ZNmwYHh4e3Lt3Dz8/P/bt25fjjoKrqytffvkl48eP\n59q1a3Tv3j0xz8TmzZsZMWIEH374Iebm5nz55Ze88847tGrVitdff51r166xdOnSVPEb7dq1w8HB\ngVdeeYUyZcpw/vx55s2bR+fOnbGxsQHg2LFjtGrVismTJzNx4sQcPccXlcCIQASCsrZlU9UlJlUK\n9DH9MrMU+AT6ULVUVUpZl2Jyy8msPLuSifsnsrCzkbl002FjwEZqO9TGtYRrxsIvAI8fa8mHkh7B\nwVquAT8/uKX3+YoXh7p1wdsbvLzgarFVjPe9y4Fxo6hSKv0+0kZgZ22HnbUdDR2fP+lHREdQ8YeK\nTD80nQWdF2T53NaeW8uzuGcMqjUoyzoyJL2lD/n54CVeArlr1y759ttvSw8PD1m0aFFpaWkpq1at\nKseMGSPDwsKSyT558kQOGzZMlihRQhYrVkx6e3vL8PBwqdPp5NSpUxPlJk+eLHU6nbx7926q/t56\n6y1ZtGjRNO1Zt26d9PLyklZWVtLOzk6+8cYbMigoKJXc2rVrpYeHh7S0tJQ1atSQW7Zskb1795Ye\nHh7J5JYuXSqrVasmrayspIeHh1y+fHmifUm5ePGibNmypbSxsZE6nS7ZcsiwsDA5atQo6ezsLAsX\nLizLlSsn27ZtK5csWZL+xZVSVqxYUXbt2jXbcps2bZLNmzeXtra20tbWVnp4eMjRo0fLy5cvJ5Nb\nuHChrFSpkrSyspINGjSQf//9t2zVqpVs3bp1oszixYtly5Ytpb29vbSyspJVqlSRn376qYyMjEyU\nOXDgQKrP1RAv8v9Gdpm8f7J0+J9DmvWuP7jKMTvGpFlvKrx+8pJvbHoj8f1sn9lSN0UnT4eczpbe\n3878JpmMdP3BVYY/Ds+umXlCfLyU9+5JeeGClIcOSbl+vbZUcNIkKd95R8oePaRs0kRKV1cpbWyk\n1LY/en7odFI6OEjZurWU48ZJuWaNlFeuaHqf9xEvPed7yi6ruuTYeXz999fSYqqFvHrvapZ1NPq5\nkey4smOW2hq7BFJIEzxR5gVCiLqAn5+fH3Xrpo4lSNgrO616Rf6gTp06lC5dml27duW1KS8N6n8j\nbYb9MYxTd05xfNhxg/UDNw7kyr0r+L7tm2M2RMVEUWxmMeZ2nMs79bRlxzFxMXgu8MSxqCN7Bu3J\n0tDy6ZDTNF7SmLaV2nLk1hFqlqnJzgE7sTCzMPUpZJv79+H4cTh6VNvVMDRUGwEIDdWOJLObAJib\ng729FgRYpkz6R6lSYJZ6AUIy9l7dS5sVbdj3xj5aVcw4gDkrPH72GNc5rrxW5TV+6fZLpttfCL+A\n+zx31vReQ9/qfTPdPuF3APCSUvqnJaemGxS5QmxsLEIIzJL8dx44cIDTp0/z1Vdf5aFlCsVzAiPT\n38SpsWNj1p5by9PYp1ia58weHSeCThAbH0tjx+dLLS3MLPiu3Xd0Xt2ZrZe20rVa10zpvPfkHj3W\n9KCaXTVW91rN8dvHabOiDR/t/og5HeeY+hQyxbNncOaM5hAkHJcuaXXFi4OHh3Zzb9hQixUoXVp7\nn/Tv4sUxyWZGCcw+OpuaZWrS0qWl6ZSmwKaQDeObjuej3R/xadNPqVoq9VLy9Fh2ahklLEtk+ruQ\nWZSToMgVbt++TZs2bRg4cCDlypUjICCAn376iXLlyqWbwEmhyE0CIwJp6dwyzfrGFRoTEx+DX5Af\nrzi9kiM2+Ab6YmNhQ/XSyVOud6rSiXaV2vHR7o/oULkDhcyMW9ESFx/HgI0DeBj9kL1v7MXawpoW\nLi2Y02EO7/75LrXK1GJo3aEms19KLS/A06dpH0FB2t4DR49qeQOio8HCAmrXhrZt4YsvNKegShXT\n3vyN4fLdy2y7tI1fuv6S40msRtQbwbdHvmXKwSn81vM3o9vFxcex4swKvGt455izmoByEhS5QokS\nJahXrx5LliwhLCwMGxsbunTpwowZMxKXaioUeU1G20HXLFMTawtrfAJ9csxJ8An0oUH5Bpjrkv88\nCyH4vt331FxYkx+P/ciHjT80St+kA5PY/d9udgzYQcUSz5N/jaw/ktN3TjNy+0jc7NwMnk98vDb0\nnzDMn3TIP+X78HB48kS74RtDpUqaI9Cvn/Zau3ba+xLkJnOOzsHe2h5vT++MhbOJpbklXzT/gne3\nv8v4puNTOYZpsefqHoIigxhcZ3DGwtlEOQmKXKFo0aJGJUNSKPKKR88e8eDpg3SdBHOdOfXL1c+x\npEpSn0RpcG3DP/7VS1fnHa93mHpwKoNqDsLext6gXAKbL2xm+uHpzHh1Bu0qtUtVP6fjHALCA+i5\ntifHhx3HqZgT0dGwcyf8/jts3aqtDkhKoULJh/qrVIFXXgE7O7C21m70CYeVVfL3CUeJElCyZJYv\nU47x4OkDlp5aykeNP8rxJ/QEhtQZwtf/fM3kg5NZ12edUW2WnlpKdfvqeJXN2SzBoJwEhUKhAOB2\nxG3AcI6EpDR2bMzy08u1yG8TD0ffeHiDkEchyeIRUjKl1RR+O/sbkw5MYv5r89OUuxB+gTc2vUEv\n91588sonBmUKmRVifZ/11F9cn9aLutM44G+2brTm4UOoVQs++wzc3ZPHARQtmvtTALnFEv8lPIt7\nxsj6I3Otz0JmhZjYfCJD/hjCqZBT1Haona78/Sf3Neev9fRc2dNDJVNSKBQK0k+klJTGFRoT/CiY\nmw9vmtyGhCRKjRwbpSljZ23HpBaT+MnvJ/4N/degTER0BN1/706FYhVY2m2pwZtJfDwcPAgTP7bn\n4cIt/PfgIlsYwugPJOfPw6lT8Pnn2p4CTZtqIwbFir24DkJsfCxzj83F29MbhyLZzJWcSQbVGkSV\nklWYuD/j/Car/11NXHwcA2sOzAXLlJOgUCgKOPJ57pRskZiSuWjqlMxJSbiB58SUg88tHyqVqJTh\nNMJ7Dd6jUolKjN01Vp91U9tVMCQEbtyMp/dvb3I7Ipiv627kvwBbjh+HI0c0p2DHDvjwQ6hQAVq2\nhD//hOHdavFNk+VEOq/Bqs1M3N1Nfmo5ztk7Z7nz6E6W22+5sIUbD2/wQcMPTGiVcZjrzJnccjJb\nL23laODRdGWXnVpGxyodc82RUdMNCoWiwCKlZOgfQ4mIjmB93/XZ0hUYEYidtV2Gc9GlbUpTqUQl\nfG750K9Gv2z1mRJDu0zGxWk3/1u3kh6FsHvwHX+5dKVU4+08ONaZRD+p2Qx4dTOs3kKXz6sZ7MfB\nAfr2fR40qO1D1ptI6wl8vu9zapSuQZdqWdtyPi8IjgymyS9NcCjiwJEhRzJ0sgwx++hsmjs3z7M9\nfF6v/jrTD09n4oGJ7BpoOG/MudBzHA86zoa+G3LNrhfeSQgICMhrExSKfMWL9D8x//h8lp5aSgnL\nEtmOEbgdeTvDqYYEGldobPKRhCcxTzgZcpJBNd9k925YsQIOHdKWCybZ2gNra20UwLFCZ8qVaUN0\nh4+YP7Qd9iULcSZqB9OuTqC/4wSG/dQVCwtSHYUKae0NJRSa3HIyZ0PPMmDjAHzf9sXD3sOk55hT\nfLHvCwqbFSYiOoKuv3dl3xv7MrVt8omgE/x982829t2Yg1amj5nOjKktp9J7XW8O3zhMM+dmqWSW\nnVpGKatSdK7aOfcMSy8dY34+yCAt840bN6S1tXVC2kl1qEMdSQ5ra2t548aNTKdyzU8cDTwqLaZa\nyBrza0gmI0MiQ7Klr8uqLrLzqs5Gyc47Nk+aTzWXUc+istVnUpbt+1syGWnn6SdBSjc3LW3w/PlS\nbt0q5alTUt69mzx98JmQM1I3RSdn+cySV+5ekcVnFpedfusk4+LjsmxHZHSkrDG/hqz0QyV5Nyp1\nmvb8hl+QnxSThZx3bJ48FnhMWk+3lj1+7yFj42KN1jFgwwDpMtslU21ygrj4OFl7YW3ZfGlzGZ/0\ng5ZSxsTFyDLflpGj/hxlkr6MTcv8wo4kODk5ERAQkCu7/ikUBQ07OzucnJyyrSc2PpbP937Oew3e\nw6lY9vUZy92ou/RZ1wevcl4sfG0htX+qTUB4AGWKlMmyzsCIQKO3223s2JjY+Fj8gv1o6tQ0y30G\nB8OqVdqowWlrX2htxesta/LmEqhXL+MgQc8yngyvO5wpB6ew5OQSSlmVYmWPlehE1sPNihQqwpZ+\nW6i/uD6vr3+dHQN2pMrZkF+QUjJ211jc7d0Z7jUcc505v/f6ne5ruvPR7o+Y3WF2hjqCIoNYc24N\n37T5BjNdBvmacxid0DGt1TS6rO7C3mt7aePaJrFu55Wd3Hl8J83lsTlF/vzkTYSTk5NJfggVCoVh\nNpzfwDdHvqG0TWk+avJRrvQZL+MZtGkQj589Zm3vtTgUccBcZ875sPPZSqMbGBFIL/deRsl6lvHE\nxsIGn1s+mXYSoqJg82b49VfYs0fbd6BrV7Bu6oO5bX1+HJK5n+Wpraay6t9VXL1/laNvH6WEVfaT\nk7mWcGV9n/W0/rU1686ty5XEQllhY8BGDt04xK6BuxIdmS7VujC341ze+/M9XIq7MKbRmHR1zD8+\nH0tzS4bUGZIbJmfIa1Veo2H5hkzYP4FXK76aOIW27NQyapapmeESSVOjVjcoFIosIaXkmyPfAOAf\nkub+MCbnq8NfsfPKTlb1WkWFYhWwMLOgcsnKBIRlPdbiaexTwqLCMlzZkIC5zpz65TNOqhQbC+fO\nwcqV8PHH8OqrWr6BAQO0JEULFmhBievWwc04X5o4pZ0fIS3sbez5o98f7Bm0hxqla2S6fVq0qtgK\nr7JebL642WQ6TcnT2Kf8357/47Uqr6VKFPVu/XcZ12QcH+76kA3n0w7yexLzhIUnFjKk9hCKWRbL\naZONQgjBtFbT8A305c/LfwIQHhXOHxf/YHDtwbmSGyEpL/RIgkKhyDn2XtuLf7A/NcvUxC/IL1f6\n/OvqX0zcP5FJLSYluzF42HsQEJ51JyEoMgjIOEdCUho7NmbpqaWJAZOPH8PZs9peBCdPankGzp7V\n9ioAqFgR6tSB8eO1lQWVKj3XdevhLW5H3k43P0J6tHBpkaV2GdGtWje+PfIt0bHRFDYvnCN9ZJUf\nfH/gVsQt/hzwp8H6GW1mcDPiJgM2DqCsbVmaVGiSSua3s79x78k9RjccndPmZoo2rm1o5tSMCfsn\n0KlKJ1afXY1E0t+zf67bopwEhUKRJb7+52vqONRhdMPRDNkyhMjoSGwL2+ZYf4ERgXhv8KZtpbZ8\n0fyLZHXudu78cjLz2+0m1Q1Qrogjd+9CWJi2F8HDhxAR8fyIjHz+9wXZmBCXGdR99QaPbrlw9aqW\noMjcHKpX1/YiGDBAe61VS9upMC2MSaKUF3Rz68bEAxM5cP0A7Su3z2tzEgl5FML0w9N5r/57uNm5\nGZTRCR3Lui0jKDKIrqu7cmTokWQ7LUopme07m67VulKpZCWDOvIKIQRftv6SFstasOnCJpadXsZr\nVV6jtE3pXLcl006CEKIZ8H+AF1AW6C6l/CNJfQ/gHX19SaC2lPJMBjrfBJaiRVomjKU8lVJaZ9Y+\nhUKR8/gH+/PX1b/4vdfveNh7IJGcDDlJc+fmOdJfTFwMr69/HUtzS37r+VuqADMPew+CHwXz8OlD\nLEUxHj3SbuiGXu/d0xyABEcgLAz+sw6ExlDDuTzyaer+hdDSESc9LEs2AhcoXsOHV+u64OGhjRR4\neEDhTD50+wT64FLcJdcz/WWEZ2lPKhavyJaLW/KVkzBh3wQszCyY2CL9DIWFzQuz6fVNvPLLK3T8\nrSM+Q30Sb7R7r+3lXNg5fuz0Y26YnGmaOzenjWsbRu0YRVBkEBObZ5yNMSfIykiCDXAKWAIYWlRq\nAxwG1gCLM6H3IVCV506CzIJtCoUiF/jmn2+oWLwivTy0QD9Lc0v8g/1zzEn4vz2fcCzwGPPrH2bf\nNjtu3tSSCiW8Bsa5Q3co5RZA3I30n8atrbXNiOzswN4enJxAOgZyj2L88INtYp2dnbYRUdGiWpvU\nU8H2VJlbGc8GPvyvY/YC+3wCfdLdryGvEELQrVo31p1fx7xO83J9PtwQp0JOseTkEn7o8AMlrTLe\nJaqkVUl2DNhBo58b0WV1F/a/uR9rC2tm+86mVplatHDOmakaUzCt1TQaL2mMvbU9nap0yhMbMu0k\nSCl3AjsBhIFvjJRypb7Omec3fCNVy7DM2qNQKHKX/+79x7rz65jbcW5iRHmtMrXwC85eXIKU2g3/\n9GntCAjQnIALug2Et54FO35g+CTNAShSRLu5OzlB3brQpkw1vkHQb9R52pduRJEiYGtLsteEw9BT\n/ugdgdy/5sjw4ZmzuUmFJtlOqhQdG41/sD/9a+T+fLMxdHPrxuyjs/EL9qNeuXp5aouUkjE7x1DN\nrhrv1HvH6HYuxV3Y3n87LZa1oP+G/nz16ldsv7w9zX0t8guNHBsxwmsEVUpWwcLMIk9syE8xCUWE\nENfRVlz4A+OllOfz1iSFQpGS732+p5RVqWTrtb3KerH/+n6jdTx9qkX9JzgEp0/DmTNw/75WX6KE\nNq9fovIlIpwHU7dwX6Z8MQpnZy1bYOqNhqxZ+4MLZd0DGJR6R+QMCYwIzFTQYgKNHRuz6uwqnsQ8\nyVSGv6ScDDnJs7hn+S4eIYGmTk0paVWSzRc257mTsPnCZg7eOMif/f/M9E3Tq5wXa/uspcvqLvgG\n+lLaprTJ02rnBAs7L8zT/vPLEsiLwBCgKzAAza4jQohyeWqVQqFIRujjUH459QujGoxKdlP0KufF\nhfALPHr2KM229+7BkCHazb9IES1Z0NtvaxsO2dvDRx/B1q3a6MHdu7BrXxTXG/Smol05Doz9mc6d\nBZ6eWgCgoYc/d3t3zodn7bkiO05CbHwsJ4JOZKlf0IIWLc0tqeVQK8s6chJznTmvVXmNLRe35Kkd\n0bHRfLznYzpU7kDHKh2zpKNTlU4seG0Bdx7fYWS9kRnu06HIJyMJUkpfwDfhvRDCBwgARgCT8sou\nhUKRnLlH52ImzHivwXvJyr3KeiGRnA45zStOrxhs+/nnsH49DBwIo0drEf+enmBjk1pWSsm729/l\nv/v/ceztY0atmvCw82BDQNY2vgmMCMzSnG+N0jUoUqgIPoE+BnPtG4NPoA9eZb0oZFYoS+1zg27V\nurHizAqu3r+KawnXPLFhztE53Hhwg63eW7OlZ7jXcGqVqUWdsnVMZNmLTb5wElIipYwVQpwEKmck\nO3bsWIoVS54Ew9vbG2/v/JkhTKEoqDx69oh5x+cxrO6wVAFjHvYeFDYrjF+wn0En4cwZWLQIvvsO\nxqSfAA+ALRe3sPz0cn7t/ivVS1c3yj53e3eu+1wnKiYKawvjF0bFxMUQ8igkSyMJZjozGpRvkK24\nBN9AX/p69M1y+9ygfeX2FDYrzJYLWxjbeGyu9x/6OJQvD3/JyHojTbLpVENH49JvvyisXr2a1atX\nJyt7+PChUW1z2knI0goFIYQO8AS2ZyQ7a9Ys6tbNm609FYqXiZ/9fybyWaTBm4SFmYWWVMlA8KKU\nmmNQtSq8916qaoNsubiFmmVqMqjWIKPtc7dzRyK5GH4xU0+JwY+CkcgsOQmgTTn87P9zlnahDIoM\n4ubDm6m2h85vFClUhFddX2XLxbxxEibun4hO6JjccnKu9/0iYOjB2d/fHy8vrwzbZjomQQhhI4So\nJYRISCDtqn9fQV9fQghRC6iOtrrBTV9fJomO5UKIr5K8nyCEaCuEqCiEqAP8BjgBP2fWPoVCYXpi\n4mL43ud7vGt4p7mRk1dZL/yDU6dn3rQJ9u+H77/Xtio2hoPXD9LKpVWmbHS3dwfIdObFhERK2XES\n7jy+w5V7VzLd1ueWNgKRX4MWk9KtWjcO3zzM3ai7udrvmTtnWOy/mMktJlPKulSu9q3IWuBiPeAk\n4Ic2UvAd2mqEKfr6rvr6rfr61fr6EUl0VACSZg0pASwCzqONHhQBGkspL2TBPoVCYWJ+//d3bkXc\n4v+a/F+aMnXL1uV82HmiYqISy54+1QISO3WCjkbGmt18eJNrD65lev16ccvilC1SlvNhmQtezK6T\n0Ny5OfbW9kw+ODnTbX0DfXEq5kQ52/wfo92lahfiZTzbL2c4wGsypJR8uOtDqpSswrv13821fhXP\nybSTIKU8KKXUSSnNUhxD9PXL06ifmkRH6wR5/fsPpZQVpZRWUspyUsouGWVpVCgUuUPCRk6dqnTC\ns4xnmnJe5byIl/GcDjmdWDZrFgQGaqMIxnLw+kGALAUCZmUPh9sRt7GxsKFY4axt8GNb2JZv237L\nqrOr2HdtX6ba+gT6FIhRBICytmVpWL5hrq5y+OPiH+y9tpfv2n2XZ3kCXnbyyxJIhUKRT/nz8p/8\nG/ovn7zySbpyNUrXoJBZocS4hKAgmD4dRo2CatWM7+/gjYPUKF0DO2u7TNvqbuee6d0gE5Y/Ziep\nzhu13qCpU1Pe+/M9nsU9M6rNs7hn+AX75ctMi2nRrVo3dl3ZxdNYA7mrTUzIoxDe2f4OHSp3yLNs\ngwrlJCgUigz45sg3NHJsRDOn9J/sC5kVwrO0Z2JcwvjxYGUFEzOZcv7gjYNZTpXrbu/O5XuXiYmL\nMbpNYGTWciQkRQjB/E7zuXz3Mt/7GDdscjrkNE9jnxYsJ8GtG49jHrP36t4c7Sc2PhbvDVqgXX7P\niviio5wEhUKRJr6Bvhy6cYhxTcYZ9UNdt2xd/IL9OHYMli+HL79Mf/fDlARFBnHl3pUsOwke9h7E\nxsdmKogwMCKQ8kXLZ6m/pHiW8eSDhh8w9eBUbjy4kaG8b6AvhcwKUduhdoay+QV3O3cql6yc41MO\nE/dP5PCNw6zpvSbfbXr1sqGcBIVCkSbf/PMNVUtVpZtbN6Pkvcp6cS70HKPGPqFmTS2jYmZIiEfI\n6kZR7naZX+EQGBGIo232RhISmNxyMiWsSjBmV8bJIBKSKBU2z+SWkXlIwoZPWy9tJV7G50gf2y5t\nY8bfM/jq1a9ybMMwhfEoJ0GhUBjkYvhFNl/YzP81+T90wrifCq9yXsTJOI7dOMsPP4CZWcZtknLg\n+gHc7dwpU6RMxsIGKG1TmpJWJY1e4RAXH0dQZFC2pxsSsC1sy6z2s9h8YTPbL6W/CqAgBS0mpVu1\nboQ8CuHY7WMm1339wXXe2PQGXat15eMmH5tcvyLzKCdBoSjAxMXHce/JvRzR/e2Rb3Eo4sCgmsYn\nNHK18YR4c2p38qNly8z3mZ14BNCedN3t3I0eSQh9HEpsfKzJnASAPh59aOvallE7RvEk5olBmZBH\nIVx/cL1AxSMk0KRCE+ys7dhywbRTDtGx0fRZ14filsVZ1m2Z0Y6pImdRn4JCUYAZuX0k5b8vz5yj\nc0w6/BsUGcSKMysY02hMpobDZ39XGBFag6otMr9tdMijEC7evUgLl6w7CaBNORg7kpDdHAmGEELw\nY6cfuR15mxl/zzAo4xuobVVTEEcSzHRmdK7a2eRxCR/u+pCzd86yvu96SliVMKluRdZRToJCUUDZ\nf20/i/0X08ixER/s/ID2K9sn3vSyy3dHvsPS3JIRXiMyFtZz4wZ8+y3UtPfi0qPMOwmHbhwCyNZI\nAmjBixfDLxrlNOWEkwBQtVRVxjUZx9f/fM3lu5dT1fsG+lLetjwVilUwab+5Rbdq3QgIDzB4bllh\n1dlVzD8xnzkd51C3rEqzn59QToJCkQ3+uvoXQZFBud7vk5gnDN82nGZOzdj7xl52D9xNQFgAngs8\nWX12dcYK0uDY7WO0XdGW732/54OGH1DM0vgEQ+PGQYkS8FY7L/4N/Zfo2OhM9X3w+kGqlKxCWduy\nmTU7Ge727jyJfWLUCoPAiEAKmRXKUk6GjBjfbDzlbcvz/o73kTL5NjY+gT75fr+G9Gjr2hZLc0uT\njCacDzvP8K3DGVRzEMPqDjOBdQpTopwEhSKL3I26S4eVHWi/sj2Pnj3K1b6nHZrGzYc3WdRlETqh\no22ltpwdeZaOlTvSf2N/vDd4ZypW4d/Qf+mxpgcNf25IUGQQm17fxJSWUzJuqOfwYVi7FmbOhMYu\ndSJAC00AACAASURBVImNj+Vs6NlMnVN24xESSNgl0JgpB1MkUkoLKwsr5nScw+7/drP+/PrE8tj4\nWI7fPk6j8gVvqiEBm0I2tHVtm20n4dGzR/Re2xuX4i4seG2ByoeQD1FOgkKRRbZc3EK8jOfa/Wu8\n/cfbqZ4Wc4rTIaf55p9v+KLZF7jZuSWWl7Aqwapeq1jdazU7r+zEc4Ene/7bk66uq/ev8samN6i5\noCanQ07za/dfOfPOGbq7dTf6BzsuDj74ABo0gIEDoWaZmpgJM/yCjJ9yCHscxrmwc7R0aWl0m7So\nULQCNhY2RgUvmiKRUnp0rtqZbtW6MXbXWCKjIwFtw6InsU8K9EgCQHe37hy5dYSwx2FZai+lZPjW\n4dyKuMX6vuuxKWRjYgsVpkA5CQpFFtkQsIFmzs1Y1n0Za86tMTrTXnaIi49j2NZhuNm58UlTw2mS\n+9Xox9mRZ6luX512K9sxesfoZJsugRaY+O72d6n2YzX+uvoX8zrN48L7FxhUaxBmusytW1y2DE6e\nhNmzQafTnqCrl65ucNvotEiMR8hm0CJogYNudm5GpWdOGEnISX7o8AP3ntxjykFtZMbnlg8WOosC\nP/feuWpnpJRsu7QtS+0XnljI6n9Xs7jL4mTOriJ/YZ7XBigUBZGHTx+y5789/K/d/+jt0ZtxTcYx\n7q9x1Clbh9YVW+dYv3OPzeVE0AmODD1CIbNCaco5FnVk58CdzDs2j3F/jWPP1T2s6LGCisUr8vU/\nXzP32FyszK2Y3no67zd4H2sL63T7jY6GW7e04MSbN5O/HjumjSA0TvJgnNa20Wlx8MZBXEu4muyG\n7WHvwflw46YbcnrY37m4MxOaT2DC/gm8VfstfG/7UqdsHSzNLXO035ymtE1pmlRowuaLmxlcZ3Cm\n2h6/fZwxu8bwfv336VejXw5ZqDAFyklQKLLA1ktbiYmPoad7TwCmvzod/xB/Xl//Ov7D/XMkav36\ng+t8vu9z3m/wvlFL53RCx6iGo2hbqS0DNw6k8ZLGWJlbES/jeb/O/zHQ9SPinxTj6N/w4AE8fKi9\nJhxBQc8dgZCQ5LodHMDJCZyd4f334eMUeW/qlq3Lb2d/41ncs3SdmQRMFY+QgLudO39c/AMpZZrT\nJlLKXBlJAPioyUcsP72ckdtHEhwZTOeqnXO8z9ygW7VuTDowiaiYqAwdzQTCo8Lps64PtR1q8792\n/8thCxXZRTkJCkUW2BCwgYblGybeYMx15qzutZp6i+rRc21PDg8+bNInRSkl72x7h1JWpZjeenpi\n+bVrsGoVREZCVJR2PH6c8tWNx098sKr0PU95SMzhMfzvcWkM/TxbW2t7LRQrBmXLgrs7dOjw3CFw\ncoIKFcAyg1PzKuvFs7hn/Bv6b4bD6vee3OPsnbN82OjDLFwZw3jYe/Aw+iHBj4IpZ1vOoEx4VDjP\n4p7lipNQyKwQ8zrNo82KNkDBzI9giG5u3bSRqv/2ZJi6OzY+lkV+i5h8YDLxMp6DvQ8WqJTULyvK\nSVAoMsmjZ4/YeWUn01pNS1ZuZ23Hxtc38sovr/D/7d13fFRV/v/x1wmhh94hIE0gIKIJKLGgAmJB\nEATEWNB1VURsyK4F11V/67qufhELYtcFWWMhuFIUMCigAhEIxYQmUhN6Cz2QzPn9cSeYwCSZSSaZ\nmeT9fDzywLnn3nM/10vIJ6eOnDmSD/p/4LfR2p/++imzf5/N9Ljp1KhcA3B+y+/Rw2kBaNjQ+QFf\nrRpUr+78Wb9+7s8VqVbtCWrUgNpDnCSgdu0/EoKcPytW9Eu4dGnchTATRvKO5EKThB+3/IjF+mU8\nQo6oBu49HPasyTdJSD+cDvh/jYT89Grdi7jz4ohPiQ/JlRY9aVevHR3qd+DrdV/nmyRYa5n520z+\n+t1fWbd3HXdecCcvXPWCXzbVkpKnJEHER9/+9i0nsk4wKGrQWWXRTaJ5p+873PX1XVzU7CKGd/V+\nMaL87D22l0dnP8rQTkNPN1Pv2QN9+jg/1Netc37rDybVKlYjqn4Uy7Yv457ognd5mrd5Hi1qtaBl\n7ZZ+u3/rOq2pVKESa/auoVfrXh7PKamFlAoy/vrxXH/u9ZxT+5xSu2dJu7H9jXy0/COyXdlnDXpd\nvmM5f/nuL3y/6Xt6tupJ/KD4kNr1UjS7QcRnCWsSuLDxhbSq08pj+Z0X3MnIbiN56NuHTi+/Wxyj\n54wm25XN69e+DsChQ04XQEYGfPdd8CUIOWKaxng1w2H+lvl+mfqYW3hYOO3qtStwrYS0Q2mEh4XT\nsHpDv967IHWr1uX2828vtfuVhhvb38ieY3tYlLbo9LG0Q2nc9b+7iHkvhh2HdzAjbgaJdyQqQQhB\nShJEfHD81HFmrJ/hsRUht1eveZVuzbox6ItB7Dqyq8j3m/P7HCatnMTYPmNpFNGI48ehf3/YuBFm\nz4Y2bYpcdYmLaRLDql2rOJV9Kt9zDp44yIqdK/w6aDFHYRs9pR1Ko0lEE5+nfEpeF0deTKPqjfh6\n7dcczjzMM98/Q7s32/HNb98woe8EVo1YRd92fbVQUohSkiDigzm/z+HoqaMM6lhwklCpQiW+HPIl\nLutiyJdDCvxBmZ+jJ49y/4z76dmqJ3ddcBdZWXDLLc6Uwxkz4Pzzi/oUpSOmSQyZ2ZkF/jb/09af\nnPEIJZAkdGzQsdCWhNLsaiirwkwY/dr1Y9KqSZz75rn836L/49Huj7Lh4Q3c3/V+wsPUqx3KlCSI\n+CBhTQIdG3T0avGXpjWaMmXIFBalLeKv3/3V53s9O+9ZdhzZwbs3vIu1hj//Gb75BqZOhUsvLUr0\npatL4y4YTIFdDvM3z6dZjWa0rtPa7/ePqh/F7qO7812eWkmC/9xy3i3sObqHq9tczboH1/Firxep\nWblmoMMSP1CSIEEly5XFB8kfkOXKCnQoZzmZfZJp66YxOGqw19dc2uJSXrvmNV5Pep3JqyZ7fd2y\n7csYt3gcz13xHG3qtGX0aPjkE+fr2muLEn3pi6gUQYf6HQpcnnn+lvlc0fKKEmmKzj3DwRMlCf7T\nq3UvDj55kE8GfkKLWi0CHY74kdqBJKj8sOkH7p1+L00imtC3Xd9Ah5PH3I1zycjMKLSr4UwPdHuA\nJduXcO/0e/lw+YfUqFSDGpVrOH+6/7tm5Zp5jo/5fgznNzqfx2If45//dJY8njDB6W4IJQUNXjyU\neYhlOwqf/VBU7eq1I8yEsXrPai5tkbfppTQXUiov1HJQNilJkKCSlJ4EOFvpBluSkLAmgbZ129K5\nYWefrjPG8Hbft2kS0YQtGVs4fPIw6YfSOXzyMIczD5/+8+ipo6evqVyhMj/d/RMfvFeRZ56Bf/wD\nRozw9xOVvOjG0UxZPYUsV9ZZfdM/b/0Zl3WVyHgEgCrhVWhdp7XHwYsZmRkcPXVUSYJIIZQkSFDJ\nnSQEkyxXFv9b+z/uib6nSE3jVStW5V+9/1XgOdmubI6cPMLhk4epGl6VOV/XY+RIePRRePrpokYe\nWDFNYziRdYI1e9bQuVHe5Gr+lvk0jmhMu3rtSuz+HRt09JgkBGKNBJFQpDEJEjSstSSlJVGnSh1+\nSf+FbFd2oEM6bcGWBew7vq/QqY/FUSGsArWq1CKyZiRJ8+oxbBgMGwZjx0Kozh67sPGF+Q5ezNmv\noSSnxkXVj/I4w0FJgoh3lCRI0Nh8cDN7ju3hvpj7OHLyCCm7UwId0mkJqxNoUasFXZt2LbF7ZGY6\niyM98ggMHgzXXw8ffOBsvxyqalSuQbt67c7aEfLoyaMs3b60xLoackTVj2JrxlaOnDyS53jaoTQM\nhiYRQboSlUiQCOF/fqSsyelqeKDbA4SHhbNw28IAR+RwWRdT105lUNQgv//Wu3MnfPQR3HSTs9dC\nnz7w1VcwfDh8/jmEl4EOwegm0We1JCzctpAsV5Zf92vwpGODjgCs3bs2z/G0Q2k0jmhMxQp+2qxC\npIzyOUkwxlxujJlmjEk3xriMMf3PKB9ojJltjNnrLvdpyRdjzC3u66b6GpuEtqS0JFrXaU2LWi24\noPEFQTMuYeG2hew8stMvXQ0uFyxdCs8/D926OUsq33MP7NoFY8bAypXO1szjxhW+02KoiGkSw4qd\nK/J0H83bPI8G1RoQVT+qRO+ds57FmdMgNbNBxDtF+T2lOrAC+BDw9IO8OvAj8Dnwvi8VG2NaAq8A\nC4oQl4S4pPQkLm52MQCxkbF8u+HbAEfkSFidQJOIJsQ2z3/nPpfL2UvhwAHna//+P/4752vHDqc7\nYedOZ8fFa691uhauvdZpRSirYprGcOzUMdbuXUunhp0AZzxCj3N6lPhSvTUq16B5zeZnDV5UkiDi\nHZ+TBGvtLGAWgPHwHW6tnewuOwfw+l8AY0wYMBn4O9ADqOVrbBK6TmafJHlHMkM7DQWcJOHNX95k\n99HdpboBz5mstUxdO5WBHQYSZvI2vG3fDrfe6vz2n5EB1p59fViYsw1znTpQrx7cfjvccANccon/\ntmUOdhc2vhCA5B3JdGrYiWOnjvFL+i+M7TO2VO4f1eDswYtph9Lo2apnqdxfJJQFU4/ns8Aua+3H\nxpgegQ5GSteqXavIzM7k4kinJeGS5pcAsDhtMf3b9y/o0hK1dPtStmZsPWsBpd9+c8YPZGXBk09C\n3bpOInDmV82aoT3w0B9qValF27ptWbZjGXd0uYPFaYs55Trl950f8xNVP+qsVim1JIh4JyiSBGPM\nZcCfgC6BjkUCIyktiYphFU9vJduiVguaRDRh0bZFAU0SpqyeQv1q9elxzh95a3IyXHedkxjMng0t\ntAptoWKa/LHy4vzN86lbte7proeS1rFBR8b/Mp7MrEwqh1fmyMkjZGRmKEkQ8ULAf8cxxkQAk4B7\nrbUHAh2PBEZSehIXNL6AKuHOaD1jDLHNYwM6eNFaS8KaBAa0H3B6tcAffoArr4SWLeHHH5UgeCum\nSQzLdyzHZV2nxyOc2X1TUqLqR5Fts/lt/28ApB9KB7RGgog3gqEloQ1wDjA91xiHMABjzEmgvbV2\nU34Xjxo1ilq18g5fiIuLIy4uroTClZKQlJ5En9Z98hyLjYzl7z/8nVPZpwIyVW3VrlX8fuB3xl8/\nHnB2X4yLgyuucP47IqLUQwpZ0U2iOXrqKKt2rWJx2mJe6v1Sqd07Zxrkmj1rOK/heVpIScqd+Ph4\n4uPj8xzLyMjw6tqSThI8DOU6yxrgzMXw/wlEAA8D2wq6eNy4cURHRxctOgkKB44fYP2+9TzT45k8\nxy9pfgnHs46zatcqYprGlHpcCWsSqFW5Fj1b9eT99+H++2HIEJg0CSpVKvVwQlp0E+d79O0lb5OZ\nnVniiyjlVq9aPRpUa3B68GJOktC0RtNSi0EkkDz94pycnExMTOH/rvqcJBhjqgNt+WPmQmtjTBdg\nv7V2mzGmDtACaOY+p4O7hWCntXaXu46JQLq1doy19iSw+ox7HASstdbzHq9SpvyS/gvA6emPOaKb\nRFMxrCKL0hYFLEno374/Y1+uxJgx8MAD8MYbUKFCqYcS8upUrUPrOq2ZtGoStSrX4vxGPi2fUmxR\nDaJOT4NMO5RG/Wr1T3dtiUj+itIp2BVYDizDaSkYCyQDz7vL+7vLp7vL493lw3PV0RxoXLSQpaxJ\nSnf2a2hbt22e41XCqxDdJDog4xLW7FnD6j2rObhwEGPGwHPPwfjxShCKI7pJNCeyTtDjnB5UCCvd\n/5Ed63fMkySoq0HEO0VZJ2E+BSQX1tqJwMRC6ihwgrK19k++xiWhKyk9iYuaXeRxYZ3YyFj+t+5/\npR7TFykJhLsimP56H956y2lFkOKJaRLDlNVTSrWrIUdUgyg+XvEx2a5s0g4rSRDxVsBnN0j5lrPz\n45ldDTkuaX4Jmw9uZueRnaUW07Fj8Oq3CWSv6ctnn1RVguAn3SO7AwRkEaOODTqSmZ3JpoObnJaE\nGkoSRLwRDLMbpBzbeGAj+47vO72I0plylkJetG0RA6MG+vXeLpezT8LatXm/Vm3byKE7V/C3gWMY\nOtSvtyzXrjjnClYMX0GXxqW/HErOHhGr96x2koQoJQki3lCSIAGVs/PjRc0u8lgeWTOSyJqRLEor\nepKQnQ3r1sGqVXmTgXXr4MQJ55yqVaF9e+jQASr3TGBBWBWeGHRdke4nnhljApIggDOToUalGizf\nsZy9x/aqu0HES0oSJKCS0pJoU6cN9avlv8NRbGSs19tGu1zOkslLlzpfy5Y5KyQePeqUN2rkJALd\nu8Of/uT8d4cO0Ly5s3xyZlYmnd9+n76NrieikhZCKCuMMXRs0JHETYmA1kgQ8ZaSBAmopPSkfLsa\nclzS/BKeTHySk9knqVQh7wIFv/8OS5b8kRAsWwaHDztlbdpA167Qr5/z5wUXOPspFOSln15i08FN\nfDX0q+I8lgShqAZRfLLyE0BJgoi3lCRIwGRmZbJ853Ju7XxrgefFRsaSmZ3Jip0rTndLZGXBgw/C\nu+8657Rs6SQCY8Y4f0ZHO3sr+GLd3nW8+NOLPH7J46W2r4CUnpzlmQGa1WwW4GhEQoOSBAmYlbtW\ncjL7ZL4zG3Jc2ORCKleozKJti7io2UUcOQJDh8KcOc7aBUOHQv38eyu8Yq1lxMwRRNaM5G89/la8\nyiQo5SzPXLtKbXUliXhJSYIETFJaEpUqVDq982N+KlWoREzTGBamLWTozkfo29cZd/DNN3D11f6J\n5ZNVn/DD5h+Yfftsqlas6p9KJajkzHBQV4OI97ROggRMzs6PlcMrF3ruJZGXsGDjIrp3h1274Kef\n/Jcg7D22l8dmP8atnW+lT5s+hV8gIall7ZZUCa+iJEHEB0oSJGCS0vNfROlMNQ/FsvP4Nqo2TGfx\nYjjfj0v/P/7d42TbbF7t86r/KpWgUyGsAl0adeHcuucGOhSRkKHuBgmIfcf2sWH/Bq+ShPh4+MfI\nWHgEnpqwiMjIwX6LY/7m+Xy84mPeveFdGkU08lu9EpymxU2jari6k0S8pZYECYjTOz8WMP3RWvj3\nv+HWWyGuXxPOqXUOK/Z5t16CNzKzMrl/5v1c0vwS7om+x2/1SvBqWL0hNSrXCHQYIiFDSYIERFJ6\nEvWq1qNNnTYey7OynE2VnnwS/v53+M9/nPUS/Lkj5Ms/v8yG/Rt494Z3CTP6VhAROZP+ZZSAKGjn\nxyNHYMAAeP99+OADeP55MMZZLyF5RzKZWZnFvv/6fev554//5C+xf+G8hucVuz4RkbJISYKUOmst\nv6T/4nE8wtGjcNVVMH8+zJwJf/7zH2WxzWM5mX2S5B3Jxb7/iJkjaFqjKc9c8Uyx6hIRKcuUJEip\n27B/A/uP7/c4HmHqVGeJ5R9+gGuuyVvWpVEXqoZX9Xofh/xMXjWZ7zd9z4S+E6hWsVqx6hIRKcuU\nJEipK2jnx4QEZ/Olrl3Pvq5ihYp0bdq1WOMS9h3bx2NzHuOW827h2rbXFrkeEZHyQEmClLqktCTO\nrXsudavm3Vzh8GGYNQsGFzDDMWfworW2SPd+IvEJTmWfYtw144p0vYhIeaIkQUpdfjs/fvMNZGbC\nTTflf21sZCzbD29n26FtPt93wZYFfLj8Q17q/RKNIxr7fL2ISHmjJCFEWWvZdGBToMPw2YmsE6zY\nucLjoMWEBGf3xlat8r8+tnksgM/jEjKzMhk+YzjdI7tzX8x9Pl0rIlJeKUkIUQu2LKDNG234ddev\ngQ7FJyt3ruSU69RZScKxY85shoK6GsBZDKd1ndYs2ub9uARrLU/NfYoN+zfw3g3vaU0EEREv6V/L\nELVsxzIsls9TPw90KD5JSk+icoXKdGncJc/x2bOdRGHQoMLr8GVRJWstTyY+ybjF4xjbZyydG3Uu\nStgiIuWSkoQQlbI7BYAvV39Z5EF8gZCUnsSFTS6kUoVKeY4nJEDnztCuXeF1xEbGsnznco6fOl7g\nedZa/vrdX3l54cu8ds1rPHzxw8UJXUSk3FGSEKJSdqcQWTOS9fvWn04YQkFS2tk7P2ZmwvTp3rUi\ngJMkZLmyWLp9ab7nWGsZPWc0YxeN5Y1r3+CR7o8UJ2wRkXJJSUIIclkXq/esZkTXEdSuUpspq6cE\nOiSv7D22l98P/H5WkpCYCIcOeZ8kdG7UmeoVq+fb5WCtZdTsUYxbPI7x143noYsfKm7oIiLlkpKE\nELTl4BaOnjrKhY0v5Mb2N/Ll6i9LPYZsVzZ3/e8uRs8ezYmsE15dk9/Oj1OmQPv20KmTd/cODwvn\nomYXeUwSrLU8MusRXk96nQnXT2DkRSO9q1RERM6iJCEEpe5JBeC8hucxuONg1uxdQ+ru1FKNYczc\nMXyy6hPeWvIW3d7v5tUsi6S0JOpXq0+r2n/McTx1Cr7+2mlF8LDXU75iI2NZtC3vokrWWh785kHe\n/OVN3r3hXUZ0G+HTM4mISF5KEkJQyu4UalauSWTNSK5ufTU1K9cs1S6Hz1I+4+WFL/PK1a+w5N4l\nAHR7vxuvL369wEGUSenOeITcOz/OmwcHDhQ+9fFMsc1j2XV0F5sOOmtFuKyLkd+MZMLSCbzf732t\nhSAi4gc+JwnGmMuNMdOMMenGGJcxpv8Z5QONMbONMXvd5ed7UedAY8wSY8wBY8wRY8xyY8ztvsZW\nXqTsTqFTg04YY6gcXpn+7fuXWpfDyp0rufvru7mt822M6j6Kzo06s+TeJQyPGc6jsx/l+k+vZ+eR\nnWddl9/Oj1OmOIsnXXCBb3F0j+wOwKJti3BZFyNmjOCdpe/wYf8PuSf6niI/n4iI/KEoLQnVgRXA\nA4CnXxurAz8Cj+dT7sk+4AWgO9AZ+Bj42BhzdRHiK/NS96RyXsPzTn8e0nEIqXtSWbNnTYned9+x\nfQz4fADt67fnvX7vnW4RqBJehdeve51vbv2G5TuW0/ntzsxYPyPPtb/t/40DJw7kGY+QnQ3/+5/v\nXQ0A9avVp129dvy87WeGTx/O+8nv89GNH3H3hXcX+zlFRMThc5JgrZ1lrf27tfZr4Kx/2q21k621\nLwBzPZXnU+cCa+3X1tp11tpN1to3gFXAZb7GV9Zlu7JZs2cNnRr8McqvT5s+1KhUo0S7HLJcWdyS\ncAuHMw/z1dCvPG6xfN2517FqxCq6R3anX3w/Rs4cybFTxwBnPALk3fnxp59g927fuxpyxEbG8t6y\n9/hw+Yf8Z8B/uOuCu4pWkYiIeBSUYxKMMb2AdsD8QMcSbH4/8DuZ2Zl5WhKqhFehX/t+TFlTcknC\nU4lP8cOmH/hiyBe0rN0y3/MaVm/ItFumMeH6CXy04iO6vteVFTtXkJSeRPt67aldpfbpc6dMgchI\n6NataDH1bNUTi2XSwEkM6zKsaJWIiEi+giZJMMbUNMYcNsacBKYDD1lrvw90XMEmZ+GkTg3zzhcc\nHDWYVbtWsX7fer/fM/7XeP5v0f/xytWv0LNVz0LPN8YwotsIku9LplKFSlz8wcV8lvJZnq4Glwum\nTnW6GsKK+LfwjvPvYNuobdx+voaviIiUhPBAB5DLYaALEAH0AsYZYzZaaxcUdNGoUaOoVatWnmNx\ncXHExcWVWKCBlLo7lXpV69GoeqM8x69tey0RlSL4MvVLnu7xtN/ut2LnCv487c/c1vk2Hu3+qE/X\nRjWIIumeJJ7+/mnGLhpLjxY9TpctXgzbt3u/gJInxhia1mha9ApERMqB+Ph44uPj8xzLyMjw6lpT\nnHX/jTEuYIC1dpqHsnOATcAF1tpVRaj7fSDSWntdPuXRwLJly5YRHR3ta/Uha+iUoew6sot5d807\nqywuIY61e9eyfPhyv9xr37F9dH2/K3Wr1uWnP/1E1YpVi1zX1oytRNaMPL0D4+jR8N//Qno6VKjg\nl3BFRMRLycnJxMTEAMRYa5PzO6+kuxuKs/NQGFDZX4GUFTnTHz0ZHDWYFTtXsGH/hmLfJ8uVxdAp\nQzly8ghfDf2qWAkCQItaLU4nCNY6GzrddJMSBBGRYFaUdRKqG2O6GGNyZra3dn9u7i6vY4zpAnTC\nmd3QwV3eKFcdE40xL+b6/KQxprcxppUxpoMxZjRwO/BJcR6urDmZfZL1+9bnGbSY23XnXke1itX8\nMsvhycQnmbd5Hl8O+ZIWtVoUu77cli2DLVuK19UgIiIlrygtCV2B5cAynJaCsUAy8Ly7vL+7fLq7\nPN5dPjxXHc2Bxrk+VwfeAlKAn4CBwG3W2o+LEF+ZtX7ferJcWWcNWsxRrWI1+p7bt9gLK33666eM\nXTSWsX3GcmXLK4tVlycJCVCvHlxxhd+rFhERP/J54KK1dj4FJBfW2onAxELq6HnG52eAZ3yNpbzJ\n2Z8hv+4GcBZWunnKzWw8sJHWdVr7fI8VO1dwz7R7GNZlGA9f/HCRY82Ptc7UxwEDIDyYhs2KiMhZ\ngmYKpBQuZXcKTSKaUK9avXzPuf7c66kaXrVIXQ77j+9n4OcDiWoQxTt938mzx4K//PorbNigrgYR\nkVCgJCGEpOxJyberIUf1StW5/tzrfU4SXNbFbVNv41DmIabePLXYAxXzk5AAtWpBr14lUr2IiPiR\nkoQQkro7lfMaeB60mNvgjoNZsn0Jmw9u9rru/zf//zF7w2ziB8VzTu1zihFlwaZMgf79oVKlEruF\niIj4iZKEEHH81HE27N9QaEsCwA3tbqBKeBWvWxNmrp/J8/Of5x9X/YM+bfoUN9R8rVkDq1erq0FE\nJFQoSQgRa/euxWLznf6YW0SlCK5re51XScLGAxu5/avb6deuH09d/pQ/Qs1XQgJERECfkstDRETE\nj5QkhIicPRs6Nujo1fmDOw4mKT2JrRlb8z3n2Klj3PT5TdSrWo9JAyedXuyopCQkQN++ULVkhjuI\niIifKUkIESm7U2hRqwU1K9f06vwb2t1A5QqVSVid4LHcWsuImSNYv289U4dOzbM7Y0n4/XdYsaLo\n20KLiEjpU5IQIlL3pHrV1ZCjZuWaXNP2mnwXVnp32btMWjmJ9/q9x/mNzvdXmPlKSHBaEK7zH+j8\n7gAAHJpJREFUuBOHiIgEIyUJIaKgPRvyM6TjEBalLSLtUFqe40lpSTz87cOM7DayVLZZTkuDTz+F\na6+F6tVL/HYiIuInShJCwOHMw2zJ2OJTSwJAv3b9qFShUp4uh91HdzP4y8HENI3h1Wte9XeoAGRl\nwY8/wlNPQZcu0Lw5pKTA8OGFXysiIsFDSUIIWL1nNYDPSUKtKrXo06bP6S6HLFcWt0y5hZPZJ/ly\nyJdUquC/xQp27oT//Aduvhnq14cePeCjj+CCC+Czz2DPHrjmGr/dTkRESoFWzw8BqXtSMRg61O/g\n87WDowZz19d3kX4onTd/eZMFWxaQOCyRyJqRxY5r7Vr473/h22+dnR2NgYsugsceg+uvh+hoCFMa\nKiISspQkhICU3Sm0qduGahWr+XztjR1upOL0igyfMZyZv83klatf8cvOjlu3QvfuUKGC00Lw6KPO\nnw0aFLtqEREJEkoSQkBRBi3mqF2lNle3uZqZv81kUNQgRseOLnY8LhfceSfUqAGrVkGdOsWuUkRE\ngpCShBCQuieVP13wpyJfP6r7KAA+vvFjv+zs+OqrMH8+zJ2rBEFEpCxTkhDkDhw/wPbD230etJhb\n79a96d26t1/iWbkSnn4aRo+Gq67yS5UiIhKkNKwsyKXuSQUocneDP504AbfdBh06wAsvBDoaEREp\naWpJCHIpu1MIDwunff32gQ6Fp56CDRtgyRKoXDnQ0YiISElTkhDkUnancG7dc/26pkFRfPcdvPYa\njBsHnTsHNBQRESkl6m4Icr7u2VAS9u2Du+6C3r3h4YcDGoqIiJQiJQlBLmV3SkCTBGud5ZSPH3dW\nVNTiSCIi5Ye6G4LY7qO72Xtsb0AHLU6a5Ozg+OWX0KxZwMIQEZEA0O+FQSxldwrg+54N/rJpEzz0\nkLNw0uDBAQlBREQCSElCEEvdnUqlCpVoU7dNqd87OxvuuAPq1YM33ij124uISBBQd0MQS9mdQlT9\nKMLDSv81/fvfsGiRs7JizZqlfnsREQkCakkIYil7UujUsPTHIyxdCs8+C08+CZddVuq3FxGRIKEk\nIUhZa0ndncp5DUp3PMLRo86qil26OImCiIiUX0oSglT64XQyMjNKbdCitTBrlrPd87ZtMHkyVArs\n+k0iIhJgPicJxpjLjTHTjDHpxhiXMab/GeUDjTGzjTF73eXne1HnPcaYBcaY/e6v74wx3XyNrSxJ\n3e3es6GEuxsyM+Gjj5xVFK+7ztmf4euvnf0ZRESkfCtKS0J1YAXwAGDzKf8ReDyfck+uAD4FrgS6\nA9uAOcaYJkWIr0xI2Z1CtYrVaFm7ZYnUv3cv/OMfcM45cM890KaNM0hxyRK4+uoSuaWIiIQYn4fN\nW2tnAbMAjDHGQ/lkd9k5wFnl+dR5R+7Pxph7gEFAL2CyrzGWBSl7UujYoCNhxr89QuvWOfsvTJzo\nfL7rLhg1Ctq18+ttRESkDAjWKZDVgYrA/kAHEiipu/23Z4O1sGABjB0L06dDw4YwZgyMGAH16/vl\nFiIiUgYFa5LwbyAdSAx0IIHgsi5S96QytNPQItdx4gT88APMnAkzZsCWLdCxI3zwgTN7oUoVPwYs\nIiJlUtAlCcaYJ4GbgSustScLO3/UqFHUqlUrz7G4uDji4uJKKMKSt+XgFo6dOubzoMX0dCcpmDkT\nEhPh2DFo2RL69YMBA6BnTzi7g0hERMqy+Ph44uPj8xzLyMjw6tqgShKMMX/BGfDYy1qb6s0148aN\nIzo6umQDK2Xe7tngcjkDDWfMcBKD5cudXRovvdRZ46BvX6f1QImBiEj55ekX5+TkZGJiYgq9tqST\nBG9nN2CMeRx4CuhjrV1eciEFv5TdKdSsXJNmNTxvu3jyJLz1lrN08q5dUKeOM33xr3911jmoW7eU\nAxYRkTLJ5yTBGFMdaMsfMxdaG2O6APuttduMMXWAFkAz9zkd3LMgdlprd7nrmAikW2vHuD8/ATwP\nxAFbjTGN3HUfsdYeLfrjhabUPc6gxTMnj1jrtBiMHg0bNsDddzs7NHbvDuFB1SYkIiJlQVHm13UF\nlgPLcFoKxgLJOD/kAfq7y6e7y+Pd5cNz1dEcaJzr8/04sxmmANtzfY0uQnxBZ87vc1i5c6XX56fs\nTjlrOebUVKeVoF8/aN4cVqyA99939lZQgiAiIiWhKOskzKeA5MJaOxGYWEgdPc/43MrXOELFgeMH\n6BffjyxXFo9e/CjPX/U8EZUi8j0/y5XF2r1rufvCuwFn0aNnn4V33oHWrZ3VEPv10zgDEREpedq7\noYR9kfoFWa4snrrsKd5e+jYd3+rI9HXT8z3/9/2/k5mdSfs65/Haa3Duuc4+Ci+/7LQm9O+vBEFE\nREqHkoQSNmnVJK5pcw0v9HyBlAecrZ/7f9afQV8MIv1Q+lnnp7j3bHhgSCdGj4ZbbnHGH4werQ2X\nRESkdClJKEEb9m9g4baFDOsyDIDWdVrzza3f8Pngz1m4bSFRb0XxZtKbZBzKZt48Z7bCX15OgaP1\nadmgIStWwNtvQ4MGgX0OEREpn5QklKBPVn5Czco1ubH9jaePuVyGjvZmxtRcQ+T+23n420eo/Zfu\nXBW3nBdegGMRKZzX6DwSvzN07hzA4EVEpNzTuPgS4rIuJq2axJCOQ/h1eVW++gqSkpzFj44cgbCw\n2nTqNIH+Pe5gWcvh7Li/K3+++BG++W0FV7Tpo3EHIiIScEoSSsjPW39m88HNXN1wGD16OAsexcbC\n3/4GF18MXbtCRARALKeylzFu8Tiem/ccx7OO81jsY4EOX0RERElCSZm0chIta7fk81cuo149Z4vm\niHxmPlasUJHHL32cIR2HMP6X8QzsMLB0gxUREfFASUIJOH7qOF+s/oL+DR9h8tQwJk/OP0HIrVWd\nVoy9ZmzJBygiIuIFDVwsAdPWTeNQ5iGS3r+DSy6BW28NdEQiIiK+U0tCCZi0ahKtwmPZkHQu8Uu0\n+JGIiIQmtSTksvHARqatm1asOnYe2cnsDbPZNWcYd98NXuzEKSIiEpSUJOTywoIXGPj5QJZtX1bk\nOuJ/jce6KlBh7c28+KIfgxMRESllShLcrLUkbkzEZV0MnzGcbFd2kep5N2kSrjX9eO6JujRs6Ocg\nRURESpGSBLff9v/GtkPbeKbHMyTvSObtpW/7XMfKnatYl7GCZnuH8eCDJRCkiIhIKVKS4Ja4MZHw\nsHAev/Rx7ou5jzFzx7D98Haf6nhmyidwtD5vj75WmzGJiEjIU5LglrgxkdjIWCIqRfCvXv+iasWq\njJo9yuvrDx/N4pttk2l5JI5+1ytDEBGR0KckAch2ZfP9pu/p3bo3AHWq1uHVPq/yReoXzNowy6s6\nRv7fXLKr7WTssGElGaqIiEipUZIALNuxjIzMjNNJAsCtnW+lV6tePDDzAY6fOl7g9Vu3wqepk6jn\nimLgxZrzKCIiZYOSBJyuhhqVatCtabfTx4wxTOg7gfTD6byw4IUCrx/15CGy233FQz2GYbRykoiI\nlBFKEnCShCtbXknFChXzHG9Xrx1jLhvDKwtfYfWe1R6vXbAApq5JwFQ8wd1dbyuNcEVEREpFuU8S\njp06xs/bfs7T1ZDbE5c9QcvaLRkxcwTW2jxl2dnw8MNQ4/JJ9GzVk+a1mpdGyCIiIqWi3CcJP2/9\nmZPZJ+nVqpfH8irhVZjQdwILtixg4sqJeco++ABWbt7C4XrzGNZFAxZFRKRsKfdJQuLGRBpHNKZj\ng475ntO7dW9u63wbf5nzF/Yd2wfAgQPw9NNw4Z2TqVaxGjdF3VRaIYuIiJQKJQmbEundunehAw7H\n9hlLts3m8e8eB+Dvf4cTmZaMVpMYFDWIiEoRpRGuiIhIqSnXScLeY3tZvmM5vVt5Ho+QW6OIRrzU\n6yU+WvERb379I+PHw73P/sLGjPXqahARkTKpXCcJP2z6AYulV2vP4xHOdG/MvXRr0p3R8+7n0h4n\nyYyaRLMazbiq5VUlHKmIiEjpK9dJQuLGRDrU70BkzUivzg8zYbRKfYdTNdcR8+i/+Dz1M24//3Yq\nhFUo4UhFRERKn89JgjHmcmPMNGNMujHGZYzpf0b5QGPMbGPMXnf5+V7U2dEYM8UYs8l9zcO+xlUU\niZsSvepqyDF3LnzxRhd6Vn+UN1Y9x/7j+7nj/DtKMEIREZHAKUpLQnVgBfAAYPMp/xF4PJ9yT6oB\nvwNPADuKEJPPNh7YyMYDG/NdH+FMhw7B3XfDVVfBVw8/R/OazYlpEkOnhp1KOFIREZHACPf1Amvt\nLGAWgPEwJcBaO9lddg7g1RrF1tqlwFL3df/2NaaimLtxLmEmjCtbXunV+aNHw/79MH8+1KwSwcI/\nLyzZAEVERALM5yShrEjclMhFzS6iVpVahZ47a5azcNK770LLls4xb8cxiIiIhKpyOXDRZV3M3TjX\nq/EIBw/CPfdAnz5w772lEJyIiEiQKJdJwsqdK9l3fJ9X4xEefRQOH3ZaErTBo4iIlCch390watQo\natXK22UQFxdHXFxcvtckbkykWsVqdI/sXmDd06bBxInw0UfQXHs3iYhICIqPjyc+Pj7PsYyMDK+u\nLekkwdvZDUU2btw4oqOjfbpm7qa59DinB5XDK+d7zr59MHw49O0Ld91VzCBFREQCxNMvzsnJycTE\nxBR6bVHWSahujOlijLnAfai1+3Nzd3kdY0wXoBPO7IYO7vJGueqYaIx5MdfnirnqrAQ0c39u42t8\nhcnMymTBlgWFjkd46CHIzIT33lM3g4iIlE9FGZPQFVgOLMNpKRgLJAPPu8v7u8unu8vj3eXDc9XR\nHGic63PTXHU2Bv7ivub9IsRXoEVpiziedbzA8QgJCRAfD2++CU2b+jsCERGR0FCUdRLmU0ByYa2d\nCEwspI6eZ3zeUlCd/pS4MZEG1RrQuVFnj+V79sCIETBgANx6a2lEJCIiEpzK3eyGxI2J9GzVkzBz\n9qNb6yQILhe88466GUREpHwrV0nCwRMHWbJ9Sb5dDV9+6XQ1TJgAjRp5PEVERKTcKFdJwrzN83BZ\nl8ck4eBBePhhuOkmuPnmAAQnIiISZMpVkpC4MZE2ddrQsnbLs8r+9jc4ehRef7304xIREQlGIb+Y\nki8SNyZ6bEVYssTpYnj1VYjUlgwiIiJAOWpJ2JaxjXX71p2VJGRnw/33Q5cu8OCDAQpOREQkCJWb\nloS5m+ZiMFzV8qo8xydMgOXLYdEiCC83/zdEREQKV25aEhI3JhLdJJp61eqdPrZ9Ozz9NNx3H1x8\ncQCDExERCULlIkmw1jJ309yzuhoeewyqVIF//StAgYmIiASxctHAvnrPanYe2ZknSZgzBz7/HD75\nBOrUCWBwIiIiQapctCQkbkykcoXKXNr8UgCOH4cHHoCrroLbbgtwcCIiIkGqXLQkJG5K5LIWl1G1\nYlUAXnoJtm6FGTO09LKIiEh+ynxLwqnsU8zbPO90V8P69U6S8Pjj0KFDgIMTEREJYmU+SVictpgj\nJ4/Qu3VvrHW6GSIjnVkNIiIikr8y393w8YqPaVGrBRc2vpD4eJg7F779FqpWDXRkIiIiwa1MtyTs\nO7aPT3/9lBFdR3D4UAVGjYLBg+HaawMdmYiISPAr0y0JHy7/EIA/X/hnnn4cjh2D114LcFAiIiIh\noswmCdmubN5e+ja3nHcLm1Ib8PbbzgZOzZoFOjIREZHQUGaThG9++4bNBzcTP/BL7h+gDZxERER8\nVWaThPFLxnNRs4tYP68ry5fD4sXawElERMQXZfLH5vp965nz+xwmDZjEW8Ph6qu1gZOIiIivymSS\nMGHJBBpUa8C5p4aQlARTpwY6IhERkdBT5qZAHjl5hI9XfMy90ffy8ftVaNYM+vULdFQiIiKhp8y1\nJExeNZkjJ49wa/vhXPxf+OtfNRZBRESkKMpUS4K1lvG/jOfG9jcy7+sWnDgB99wT6KhERERCU5lK\nEuZvmU/qnlRGdnuQd96B/v21LoKIiEhRlakk4a0lbxFVP4pK6VeRkgIjRgQ6IhERkdBVZpKEtENp\nfLXmK0Z2G8k77xjatoVevQIdlYiISOjyOUkwxlxujJlmjEk3xriMMf3PKB9ojJltjNnrLj/fy3qH\nGGPWGGOOG2NWGmOu8yWud5e+S7WK1bi+2TCmTIHhwyGszKRAIiIipa8oP0arAyuABwCbT/mPwOP5\nlJ/FGHMJ8CnwPnAB8DXwP2NMR2+uz8zK5L3k97izy518+d8aGAN/+pM3V4qIiEh+fJ4caK2dBcwC\nMMYYD+WT3WXnAGeV5+Nh4Ftr7avuz383xlwNPIiTjBQoYU0Cu4/uZkTXkfR7CG6+GerV8/LOIiIi\n4lGwNMjHAolnHJvtPl6o8b+Mp1erXmxN7sDGjRqwKCIi4g/BssxQY2DXGcd2uY8XaM2eNSxKW8RX\nQ7/i7Sfg/POhe/cSiVFERKRcCZaWhCL7PPVzWtRqQZeqNzBjhtOKcHYniIiIiPgqWFoSdgKNzjjW\nyH28QDPenEGHZh24ZsJNGAPTpkGtWnHExcWVSKAiIiKhJD4+nvj4+DzHMjIyvLrWWOvVBATPFxvj\nAgZYa6d5KDsH2AhcaK1dVUg9nwFVrbU35jr2M7DSWutx4KIxJhpYVnFERTa/mE7Xjg0YMAAmTCjy\n44iIiJQLycnJxMTEAMRYa5PzO8/nlgRjTHWgLX/MXGhtjOkC7LfWbjPG1AFaAM3c53Rwz4LYaa3d\n5a5jIpBurR3jruN1YJ4x5jFgJhAHxAD3FhZPnzZ9WJjYgB074P77fX0aERERyU9RxiR0BZYDy3DW\nQRgLJAPPu8v7u8unu8vj3eXDc9XRnFyDEq21i4Bbgftw1mC4CbjRWru6sGCGdhrKO+/AJZc4gxZF\nRETEP4qyTsJ8CkgurLUTgYmF1NHTw7EEIMHXeCKOd2LuXPjkE1+vFBERkYKE/OyGKVOchZMGDw50\nJCIiImVLyCcJ06fD3XdDlSqBjkRERKRsCfkk4fBhuO++QEchIiJS9oR8ktC9O7RtG+goREREyp6Q\nTxI0FkFERKRkhHyScPnlgY5ARESkbAr5JCE8WBaWFhERKWNCPkkQERGRkqEkQURERDxSkiAiIiIe\nKUkQERERj5QkiIiIiEdKEkRERMQjJQkiIiLikZIEERER8UhJgoiIiHikJEFEREQ8UpIgIiIiHilJ\nEBEREY+UJIiIiIhHShJERETEIyUJIiIi4pGSBBEREfFISYKIiIh4pCRBREREPFKSICIiIh4pSRAR\nERGPlCQEofj4+ECHUCL0XKFFzxVa9FyhJVSey+ckwRhzuTFmmjEm3RjjMsb093DO/zPGbDfGHDPG\nfGeMaVtIneHGmL8bYzYYY44bY5YbY67xNbayIlT+8vhKzxVa9FyhRc8VWkLluYrSklAdWAE8ANgz\nC40xTwAPAvcBFwFHgdnGmEoF1PlP4F5gJBAFvAt8ZYzpUoT4RERExA/Cfb3AWjsLmAVgjDEeTnkE\n+Ie1dob7nGHALmAA8EU+1d7uvma2+/M7xpjewGhgmK8xioiISPH5dUyCMaYV0BiYm3PMWnsISAJi\nC7i0MpB5xrHjwGX+jE9ERES853NLQiEa43RB7Drj+C53WX5mA48ZY34Efgd6AzdRcBJTBWDNmjVF\nDjZYZWRkkJycHOgw/E7PFVr0XKFFzxVaAv1cuX52VinoPGPtWcMKvGaMcQEDrLXT3J9jgZ+Aptba\nXbnO+xxwWWvj8qmnPvAe0B9w4SQKicDd1trq+VxzK/DfIgcvIiIit1lrP82v0N8tCTsBAzQib2tC\nI2B5fhdZa/cCN7kHN9az1u4wxrwEbCzgXrOB24DNwIlixi0iIlKeVAFa4vwszZdfkwRr7SZjzE6g\nF7AKwBhTE7gYeMuL608CO4wxFYFBwGcFnLsPyDf7ERERkQItLOwEn5MEY0x1oC1OiwFAa/dUxf3W\n2m3Aa8DfjDEbcH7L/weQBnydq46JQLq1doz780VAM5yplZHAs+76X/E1PhEREfGPorQkdAV+wBmg\naIGx7uMTccYQvGyMqYaz1kFt4EfgOncrQY7mQHauz1WAF4BWwBFgJnC7e2aEiIiIBECxBi6KiIhI\n2aW9G0RERMQjJQkiIiLiUUgmCcaYkcaYTe7NoBYbY7oFOqbiMMY8694sK/fX6kDH5auS2PwrGBT2\nXMaYjz28v28CFa+3jDFPGWN+McYcMsbsMsZ8ZYxp5+G8kHpn3jxXKL4zY8z9xpiVxpgM99dCY8y1\nZ5wTUu8KCn+uUHxXnhhjnnTH/uoZx4P6nYVckmCMGYozWPJZ4EJgJc4GUvUDGljxpeCsJ9HY/RWK\nS1KXxOZfwaDA53L7lrzvz+PCYUHmcuBNnCnKvYGKwBxjTNWcE0L0nRX6XG6h9s62AU8A0UAM8D3w\ntTEmCkL2XUEhz+UWau8qD/cvsvfh/LzKfTz435m1NqS+gMXA67k+G5wplo8HOrZiPNOzQHKg4/Dz\nM7mA/mcc2w6MyvW5Js4eHTcHOt5iPtfHwNRAx+aHZ6vvfr7Lytg78/RcZeWd7QP+VFbeVT7PFdLv\nCogA1gE9cWYGvpqrLOjfWUi1JLgXWYoh7wZSFmcJ54I2kAoF57qbs383xkw2xjQPdED+VIzNv0LF\nle6m7bXGmAnGmLqBDqgIauO0lOyHMvXO8jxXLiH7zowxYcaYW4BqwMKy8q7OfK5cRSH7rnAWEpxu\nrf0+98FQeWf+Xpa5pNUHKuB5A6n2pR+O3ywG7sLJNpsAzwELjDHnWWuPBjAufyrq5l+h4FsgAdgE\ntAH+BXxjjIl1J7FBzxhjcBZC+8lamzMeJuTfWT7PBSH6zowx5wGLcNaWOQwMtNauM86+OSH7rvJ7\nLndxSL4rAHfCcwHO+kJnConvr1BLEsoka23utbNTjDG/AFuAm3Ga2iSIWWu/yPUx1RjzK84mZVfi\nNC+GgglAR+DSQAfiZx6fK4Tf2VqgC1ALGAxMMsb0CGxIfuHxuay1a0P1XRljInES1N7W2lOBjqeo\nQqq7AdiLs1JjozOON8LZXKpMsNZmAOtxlr8uK3Jv/pVbmXp34OxhgvN3NSTenzFmPHA9cKW1dkeu\nopB+ZwU811lC5Z1Za7OstRuttcuttU/jDIR7hBB/VwU8l6dzQ+Jd4XSNNwCSjTGnjDGngCuAR4wx\nJ3FaDIL+nYVUkuDOxpbhbCAFnG5O7IUXG1WECmNMBM43QIH/sIUS9zd2zuZfQJ7Nv8rMu4PTv0HU\nIwTen/sH6Y3AVdbarbnLQvmdFfRc+ZwfMu/sDGFA5VB+V/kIAyp7Kgihd5UIdMbpbuji/loKTAa6\nWGs3EgLvLBS7G14F/mOMWQb8AozCGeTyn0AGVRzGmFeA6ThdDM2A54FTQHwg4/KV8cPmX8GooOdy\nfz2L02e6033ev3FaggrcgjXQjDETcKaS9QeOGmNyfqPJsNbmbL8ecu+ssOdyv8+Qe2fGmBdx+ue3\nAjWA23B+M+3jPiXk3hUU/Fyh+q4A3OPJ8qx3Y4w5Cuyz1q5xHwr+dxbo6RVF+cKZr74ZZ6rIIqBr\noGMq5vPE4/zFOI7zjfIp0CrQcRXhOa7AmWqWfcbXR7nOeQ5n2s8xnG/ytoGOuzjPhTPQahbOP2An\ngI3A20CDQMftxXN5eqZsYNgZ54XUOyvsuUL1nQEfuGM97o59DtAzlN9VYc8Vqu+qgGf9nlxTIEPh\nnWmDJxEREfEopMYkiIiISOlRkiAiIiIeKUkQERERj5QkiIiIiEdKEkRERMQjJQkiIiLikZIEERER\n8UhJgoiIiHikJEFEREQ8UpIgIiIiHilJEBEREY/+PxIWw96ddXZaAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# initialize\n", "local_glm = H2OGeneralizedLinearEstimator(lambda_search=True)\n", "\n", "# train \n", "local_glm.train(x=X_reals_decorr, y='predict', training_frame=local_frame)\n", "\n", "# ranked predictions plot\n", "pred_frame = local_frame.cbind(local_glm.predict(local_frame))\\\n", " .as_data_frame()[['predict', 'predict0']]\n", "pred_frame.columns = ['ML Preds.', 'Surrogate Preds.']\n", "pred_frame.sort_values(by='ML Preds.', inplace=True)\n", "pred_frame.reset_index(inplace=True, drop=True)\n", "_ = pred_frame.plot(title='Ranked Predictions Plot')\n", "\n", "# r2\n", "print('\\nLocal GLM R-square:\\n%.2f' % local_glm.r2())\n", "\n", "# coefs\n", "print('\\nLocal GLM Coefficients:')\n", "for c_name, c_val in sorted(local_glm.coef().items(), key=operator.itemgetter(1)):\n", " if c_val != 0.0:\n", " print('%s %s' % (str(c_name + ':').ljust(25), c_val))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here the R2 and ranked predictions plot show a slightly less accurate fit in the local sample. So the regression coefficients and reason codes may be a bit more approximate than those in the first example." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create explanations (or 'reason codes') for a row in the local set" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAf8AAAH5CAYAAACPqDejAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XmcHGW1//HPlzUCGq5GENSwKRCRxURUQETFFZfrcl0G\nQUEQUXGJeFGBK+LPfSHgguKCqEAU9SIqmwvgyhUhKCgRQZagoBDECISwnt8f52nS0+nZwnRVZer7\nfr3mlZnq6qqTnp4+Vc9yHkUEZmZm1h6r1R2AmZmZVcvJ38zMrGWc/M3MzFrGyd/MzKxlnPzNzMxa\nxsnfzMysZZz8zczMWsbJ38zMrGWc/M3MzFrGyd+mHEnnSTqn7jgGQdI+ku6TNLNr2zWSvl/R+Xcr\n539aFeebKEnrSvqypBtKnEfVHZNZEzn520qR9Lry4Tq77lj6GHfNakmrSdpX0rmSbpa0TNLVko6X\nNGeQQUp6k6TXTfBpwYr/v0mv0T1GbE2uCX4Y8Frgc8BewDcGebJy4XVf19dtkn4jae9Bnne8JG0k\n6URJf5L0b0m3lPheO8L+G0s6pey3RNL3JG1Wddw2eGvUHYCt0pqcBMYkaRpwKvBc4GfAh4B/ApsC\nrwReK2lmRFw/oBDeDNwEfG0Cz/k6MD8i7hpMSPfrG1tE/EzSgyo4/8p6BvB/EfHBis4XwMXAJwEB\nGwH7A1+TtFZEfKWiOEYyA9gY+DawCFgTeDZwgqQtI+Lwzo6S1gXOAx4MfBC4B3gncJ6kHSLilopj\ntwFy8rc2+yTwHODtEfGZ7gckHQnMrSWqPiStExFLI1fiqjXxNjjxA2wA/HGyDiZpdWC1iLh7lN3+\nFhHzu57zNeAq8v1Ta/KPiEuBZ/ZsPrZ0E71N0v/E8tXd3gJsAewYEQsAJJ0F/AE4GDgcmzLc7G8D\nJenhkr4i6e+S7pD0u35Njkpvl3RJ2e9GSWd2dyuU5vmfSvpHaZ7/o6QDVzKuRwIHAD/qTfwAkY7q\nvuuX9IQS0xJJt0r6iaQn9xy30x2ys6Sjyv/jNkn/K2lG135XA9sAT+9qMj6nPNbp13+apGMl/QO4\nruexmfSQ9GxJF5fX74+SXtrz+Psl3dfnecOOOUZsffv8Jb1C0oWSlkq6SdI3JG3cs88J5XXbuDQn\n31pen09IUs++ry7H+3d5vS+R9Lbe2Lv236383zYFXlhivLfr/zTm+1DSJuV57yzvxSuBZcCskc7b\nT0QsBv5EJtLeODeT9G1lF9Ptks6XtEfPPjdJ+mTXz5L0L0l3S3pI1/Z3l23rTCS+4lpgHWCtrm0v\nB37bSfzl/3I58FOyJcymEN/528Aom9V/BmwOfAa4BngF2eQ4vSfpHg+8Djgd+BL53twVeArQ+TA6\nkLwLOY1sknwReRejiPj8BMN7PrA6cOI4/y+PA34OLAE+Ws7/RrJJ9GkR8duep3yG7EJ4P5mQ5pZt\nQ+XxtwOfBW4lm1gF/KM81rkTOxa4ETgSWLfrsX7dLVsC3wS+AJwA7At8W9JzI+KnYzy3d/tosdGz\nL5L2IX9/vwHeA2wIvAPYWdITIuLfXc9bDTgb+D/ybvJZZNPylcBx5XjPBk4GfgwcUp47C9gZ+HSf\n+AEuI/v4jyYvlD5Vtt80wfchwOuBtUs8d5K/x3FTthY8CrilZ/sGwPnANOCYctzXAd+X9PKIOK3s\n+iug++JqO+AhwL3ALsCZZftTgQURsXQcMU0j30PrAU8H9gF+HRF3lsdVztOvpeIC4NmS1o2I28c6\nl60iIsJf/prwF/mhdS8we5R93l72eXXXttXJD7clwLpl2zOA+4Cjxjjn2n22nQlc0bPtXOCcMY71\nqRLbduP8/54K3AFs0rXtEeX/cW7P63IfcFaf890FPLhr26X94uw6xnmARnjdZ3Ztu7ps+8+ubQ8G\n/gZc2LXtCODeUX6XM8cR225l36eVn9cA/g78Dlira789yv/hiK5tXy3PPbTnmBcBF3T9PA+4ZSXf\nl1cD31/J9+EmJeZbgIdO4HxnAg8rX9uQ4zLuBY7p2Xde2b5T17Z1gb8Af+nadnB5r3TiOojsRjgf\n+HDZJvLi4ZPjjPPd5f/W+foR8Miuxx9Wth/W57lvKnE/dmV+J/5q5peb/W2Qng/8PSK+2dkQEfeS\nd2/rkYkEsrnxPuADox0syl0KgKSHSHoYeTe+uaQHTzC2TvPprWPtKGk1cpDUqRFxbVc8fyfvUJ8q\nab3uUIEv9hzmF2TC2WSc8QXwpSifvuNwfSy/cyQibiWT0BPKHeegPJHsZz82usYCRMQZZNP3C/o8\n57ien39B3pV3/AtYV9JzJynG8b4PO74TERO5238uOTjyJvKiaS/yQueQnv2eT17knN8Vx+3ke2XT\n0roE+XqsQbZ0QLaA/aJ87Vq2bQusX7aNx8lkK8sQcFLZ1t1d8KDy752saFnPPjYFOPnbIG0CXNFn\n+0LyzqWTCDcnk9e/RjuYpF1KP/ttZIK4iRyhDzB9grF1mqLHc9HwcPKD8s99HltI/h09umf7dT0/\nd5qA/2O8AZLN0+N1ZZ9tnXg3ncBxJmoT8kKl32vzJ1a82FkWETf3bLuF4a/LseV4Z0i6rvTVP5AL\ngfG+DzuumeDx/w/YnbwIOJjl/5/egZGbAJePEEfncchurqUsT/Tdyf+JktYq2wL45XgCjIjrIuKc\niPhWROxNtlj8RNLaZZc7yr9r93n6tJ59bApw8rdVgqTNgZ8ADyX7z/cg72TmlV0m+l7+E/nBv+1k\nxdjj3hG2a4Tt/Uz2h+1IrQirT/J5RjPS63K/iLgJ2AF4MTm+4+nAmZK+OtjQ7jfR131xRJwbET+O\niHnA3sBLye6GCYuIe8jxE0+TtAXZvfRzMtGvCTyZ7O//U58LqfH6DjkuoTO24J/kXf9GffbtbBvU\nlFergZO/DdK1wGP7bO+Mnr6m/PsXYGNJ649yrBeRI5NfFBFfioizIuIcljdJTtSZZCLaaxz73kTe\niW3V57FZZJdF753+eExmnYTH9NnWifea8u8tkF0mPftt2ue5443tWvKCpt9rs1V5fMIi4p6IOD0i\nDoqILciugteWi8CJGut9uFIxjqR0efwMOFRSd1P5tYz8HuqN4xfAk8gL3Jsi4s+R8+z/SCbsXckL\ngpX1IPL3Nr3EHGSXxRP77Ptk4KrwYL8pxcnfBukM4BGSXtXZUEZCv5Xsa+98eH2XfC8eMcqxOneM\n979nJU0nRy1PWET8lZxV8BxJB/U+XqZXvVPSxhHRGSD1nxpeVndDsg/1FxFx20qEcTvZbzsZNu6e\n2lcS/N7AxRFxY9n8F/ID/2ld+61LVsRb2dguJGckHChpza7jPp9Maj+c4P8DSQ/ts/nS8m+/Zumx\njPU+/NlKHHMsHyML7LyhJ44nqWt6aHn9DwCujojLuvb9Bdnc/g6GN+3/kvy9bsQ4+vvVNb20x/7k\nReuCrm3fAXbU8Om1W5F1Ak4Z61y2avFUP3sgBOxXPuh7HU0OZHojOaXqiSyfYrUTWVjndoCIOE/S\nN8iiI1sCZ5FJfldyxPmxZPK9G/ihpOPIvvr9ySloj1jJ+A8mxxscI+llZKK6BZhZ4twK6BRvOZy8\nC/uVpGPJi5EDyNaI3oFdIzXt926/iEyah5F99jdGxLljHGMkfwa+LGlH8jXZjxyI112i90dklbfj\nJX2C/PDfl0zevWMWxhVbRNwj6d3kVL+fS5pP/j7eRo5QP3qC/w/K/+OhwDnAX8mWiYPIC5mFoz1x\nBON6H06miDhL0h+Ad0r6XBlg+FHyYvEsSZ8mm9r3Ifv6X9ZziPPJ6aRbMnyA5M/J0ffB+Ab7HSZp\nF/JvahHZbfZy8g7/0xFxVde+x5IXK2eUOgP3kF1sNwBeI2GqqXu6gb9WzS+WTw8b6Wvjst8M4Mtk\nQrqDnBK2d5/jiZzv/cey39/JZLxD1z4vIEup3k7exR5Mfnj2TlM7F/jpOP8fIhPgeeSH8TIyORwP\nbN+z7/bk3dsS8o7xx8CTRnhdZvdsHzZFrmzbAPg+OXjxXsrUupGO0fNY9//3KrJv/Fnl9V1aXseX\n9nn+DsCvy2t8NZmk+x1zpNhW+H+U7f9FtgIsZXlZ4I169vkqsKRPTEcA93T9/FKyW+aGrjg/B2ww\njt/nVcBpfbaP+T4kk/C9wNwJ/B30PV957LXleK/t2rYp8C3g5vI+Ph943gjP/w2ZgJ/YtW3jcsyr\nxxnf7uW9cV15b/+LvIBY4W+w6/jfIi+ClwDfAzafzM8OfzXjS+UXbmZmZi3hPn8zM7OWcfI3MzNr\nGSd/MzOzlnHyNzMzaxknfzMzs5Zx8jczM2sZJ38zM7OWcfI3MzNrGSd/MzOzlnHyNzMzaxknfzMz\ns5Zx8jczM2sZJ38zM7OWcfI3MzNrGSd/MzOzlnHyNzMzaxknfzMzs5Zx8jczM2sZJ38zM7OWcfI3\nMzNrGSd/MzOzlhl48pe0saRvSFosaamk30uaPejzmpmZWX9rDPLgktYHfgX8FHgusBh4LHDLIM9r\nZmZmI1NEDO7g0keBnSJit4GdxMzMzCZk0M3+LwIulHSKpH9IWiBp/wGf08zMzEYx6Dv/O4AAPgV8\nB3gScAzwxoj4Rp/9H0Z2D1wDLBtYYGZmZlPPNGBT4OyIuHm0HQed/O8ELoiIXbu2HQM8MSJ26bP/\nnsBJAwvIzMxs6ntNRJw82g4DHfAH3AAs7Nm2EHjZCPtfA3DiiScya9asB3zyuXPnMm/evAd8nEFw\nbCunqbE1NS5wbCurqbE1NS5wbCtrsmJbuHAhe+21F5RcOppBJ/9fAVv1bNsKuHaE/ZcBzJo1i9mz\nH/hswOnTp0/KcQbBsa2cpsbW1LjAsa2spsbW1LjAsa2sAcQ2Zrf5oAf8zQOeIum9krYozfr7A58d\n8HnNzMxsBANN/hFxIfBSYAi4FDgMeHtEfHOQ5zUzM7ORDbrZn4g4Azhj0OcxMzOz8ZnStf2Hhobq\nDmFEjm3lNDW2psYFjm1lNTW2psYFjm1l1RHbQKf6TVSp+X/RRRdd1NiBGWZmZk20YMEC5syZAzAn\nIhaMtu+UvvM3MzOzFTn5m5mZtYyTv5mZWcs4+ZuZmbWMk7+ZmVnLOPmbmZm1jJO/mZlZyzj5m5mZ\ntYyTv5mZWcs4+ZuZmbWMk7+ZmVnLOPmbmZm1jJO/mZlZyzj5m5mZtYyTv5mZWcs4+ZuZmbWMk7+Z\nmVnLOPmbmZm1jJO/mZlZyzj5m5mZtcwadQdgBrBo0SIWL148KceaMWMGM2fOnJRjmZlNRU7+VrtF\nixYxa6utWLps2aQcb51p01h4+eW+ADAzG4GTv9Vu8eLFLF22jBOBWQ/wWAuBvZYtY/HixU7+ZmYj\ncPK3xpgFzK47CDOzFvCAPzMzs5Zx8jczM2sZJ38zM7OWcfI3MzNrGSd/MzOzlnHyNzMzaxknfzMz\ns5Zx8jczM2sZJ38zM7OWcfI3MzNrGSd/MzOzlnHyNzMzaxknfzMzs5Zx8jczM2uZypK/pPdIuk/S\nUVWd08zMzFZUSfKXtCNwAPD7Ks5nZmZmIxt48pe0HnAisD/wr0Gfz8zMzEZXxZ3/54AfRMQ5FZzL\nzMzMxrDGIA8u6dXADsATB3keMzMzG7+BJX9JjwKOBp4VEXcP6jxmZmY2MYO8858DPBxYIEll2+rA\n0yQdBKwdEdHviXPnzmX69OnDtg0NDTE0NDTAcM3MzFYN8+fPZ/78+cO2LVmyZNzPH2Ty/wmwbc+2\nE4CFwEdHSvwA8+bNY/bs2QMMzczMbNXV74Z4wYIFzJkzZ1zPH1jyj4jbgcu6t0m6Hbg5IhYO6rxm\nZmY2uqor/I14t29mZmbVGOho/14R8cwqz2dmZmYrcm1/MzOzlnHyNzMzaxknfzMzs5Zx8jczM2sZ\nJ38zM7OWcfI3MzNrGSd/MzOzlnHyNzMzaxknfzMzs5Zx8jczM2sZJ38zM7OWcfI3MzNrGSd/MzOz\nlnHyNzMzaxknfzMzs5Zx8jczM2sZJ38zM7OWcfI3MzNrGSd/MzOzlnHyNzMzaxknfzMzs5Zx8jcz\nM2uZNeoOwKzpFi1axOLFiyflWDNmzGDmzJmTciwzs5Xl5G82ikWLFjFrq61YumzZpBxvnWnTWHj5\n5b4AMLNaOfmbjWLx4sUsXbaME4FZD/BYC4G9li1j8eLFTv5mVisnf7NxmAXMrjsIM7NJ4gF/ZmZm\nLePkb2Zm1jJO/mZmZi3j5G9mZtYyTv5mZmYt4+RvZmbWMk7+ZmZmLePkb2Zm1jJO/mZmZi3j5G9m\nZtYyTv5mZmYt4+RvZmbWMk7+ZmZmLePkb2Zm1jJO/mZmZi0z0OQv6b2SLpD0b0n/kHSqpC0HeU4z\nMzMb3aDv/HcFPgM8GXgWsCbwI0kPGvB5zczMbARrDPLgEbFH98+S9gFuBOYAvxzkuc3MzKy/qvv8\n1wcC+GfF5zUzM7OisuQvScDRwC8j4rKqzmtmZmbDDbTZv8exwOOAXcbace7cuUyfPn3YtqGhIYaG\nhgYUmpmZ2apj/vz5zJ8/f9i2JUuWjPv5lSR/SZ8F9gB2jYgbxtp/3rx5zJ49e/CBmZmZrYL63RAv\nWLCAOXPmjOv5A0/+JfH/J7BbRCwa9PnMzMxsdANN/pKOBYaAFwO3S9qwPLQkIpYN8txmZmbW36AH\n/B0IPAQ4D7i+6+uVAz6vmZmZjWDQ8/xdPtjMzKxhnJzNzMxaxsnfzMysZZz8zczMWsbJ38zMrGWc\n/M3MzFrGyd/MzKxlnPzNzMxaxsnfzMysZZz8zczMWsbJ38zMrGWc/M3MzFrGyd/MzKxlnPzNzMxa\nxsnfzMysZZz8zczMWsbJ38zMrGWc/M3MzFrGyd/MzKxlnPzNzMxaxsnfzMysZZz8zczMWsbJ38zM\nrGWc/M3MzFrGyd/MzKxlnPzNzMxaxsnfzMysZZz8zczMWsbJ38zMrGWc/M3MzFrGyd/MzKxlnPzN\nzMxaxsnfzMysZZz8zczMWsbJ38zMrGWc/M3MzFrGyd/MzKxlnPzNzMxaZo26A7DqLFq0iMWLF0/a\n8WbMmMHMmTMn7XhmZlYNJ/+WWLRoEbO22oqly5ZN2jHXmTaNhZdf7gsAW4EvNM2azcm/JRYvXszS\nZcs4EZg1CcdbCOy1bBmLFy/2h7IN4wtNs+Zz8p9kTb/jmQXMnrSjma3IF5pmzTfw5C/pLcC7gEcA\nvwfeGhG/HfR56+A7HrPlfKFp1lwDTf6SXgV8CjgAuACYC5wtacuImLzb44bwHY+ZTUVNb9G0iRv0\nnf9c4LiI+DqApAOBFwCvBz4+4HPXxnc8ZrYyJjPJTlaCdYvm1DSw5C9pTWAO8OHOtogIST8Bdnqg\nx2/iH4mZ2cqa7CQ7WQnWLZpT0yDv/GcAqwP/6Nn+D2CrB3Lgpv6RdCyclKNM3nEGccymxjaIuCbr\nuJMd2w033MANN9wwacfbaKON2GijjSbteE19rzX1xqGTZA8HNnmAx7oW+GBLEmyTuySa+l6Dho72\nnzt3LtOnTx+2bWhoiKGhoZoiGp8ZM2awzrRp7DXJzWMzZsx4wMdpU2yTFRc0O7bjjjuOI488clKO\nBXDEEUfw/ve//wEfp8nvtUWLFrHVVrNYtmzpJEQF06atw+WXL5yUD+XO6/bBhr3X2vT7hMn7nQ76\nvTZ//nzmz58/bJ8lS5aM+3iKiEkJbIUDZ7P/UuDlEfH9ru0nANMj4qV9njMbuOiiiy5i9uzRe82b\nekXVlqtQaG5sk32F3NTYmnzn39T32oIFC5gzZw5MSiP2QmAvxvN5NV5Nfa819ffZ5ORfx3tt+TmZ\nExELRjviwO78I+JuSRcBuwPfB5Ck8vOnH+jxZ86c2cjmrKbGBY5tZTU1tslupp9MTX3Nmq6pr1uT\n47r88oWNvDBZrplDwAfd7H8UcEK5COhM9VsHOGHA5zUzW8GMGTOYNm0dli3ba1KON23aOpPWjWMr\np6kXJk030OQfEadImgF8ANgQ+B3w3Ii4aZDnNTPrZ7LvFD1TyFZVAx/wFxHHAscO+jxmZuPhO0Uz\nWK3uAMzMzKxaTv5mZmYt4+RvZmbWMk7+ZmZmLePkb2Zm1jJO/mZmZi3j5G9mZtYyTv5mZmYt4+Rv\nZmbWMk7+ZmZmLePkb2Zm1jJO/mZmZi3j5G9mZtYyTv5mZmYt4+RvZmbWMk7+ZmZmLePkb2Zm1jJO\n/mZmZi3j5G9mZtYyTv5mZmYt4+RvZmbWMk7+ZmZmLePkb2Zm1jJO/mZmZi3j5G9mZtYyTv5mZmYt\n4+RvZmbWMk7+ZmZmLePkb2Zm1jJO/mZmZi3j5G9mZtYyTv5mZmYt4+RvZmbWMk7+ZmZmLePkb2Zm\n1jJO/mZmZi3j5G9mZtYyTv5mZmYt4+RvZmbWMk7+ZmZmLTOQ5C9pE0lflnSVpKWSrpD0fklrDuJ8\nZmZmNn5rDOi4WwMC3gD8BXg88GVgHeCQAZ3TzMzMxmEgyT8izgbO7tp0jaRPAgfi5G9mZlarKvv8\n1wf+WeH5zMzMrI9Kkr+kxwAHAV+o4nxmZmY2sgklf0kfkXTfKF/3Stqy5zmPBM4EvhURx09m8GZm\nZjZxE+3z/yTw1TH2uarzjaSNgXOAX0bEG8d7krlz5zJ9+vRh24aGhhgaGppAqGZmZlPT/PnzmT9/\n/rBtS5YsGffzJ5T8I+Jm4Obx7Fvu+M8Bfgu8fiLnmTdvHrNnz57IU8zMzFqj3w3xggULmDNnzrie\nP5DR/uWO/zzganJ0/waSAIiIfwzinGZmZjY+g5rn/2xg8/J1XdkmIIDVB3ROMzMzG4eBjPaPiK9F\nxOo9X6tFhBO/mZlZzVzb38zMrGWc/M3MzFrGyd/MzKxlnPzNzMxaxsnfzMysZZz8zczMWsbJ38zM\nrGWc/M3MzFrGyd/MzKxlnPzNzMxaxsnfzMysZZz8zczMWsbJ38zMrGWc/M3MzFrGyd/MzKxlnPzN\nzMxaxsnfzMysZZz8zczMWsbJ38zMrGWc/M3MzFrGyd/MzKxlnPzNzMxaxsnfzMysZZz8zczMWsbJ\n38zMrGWc/M3MzFrGyd/MzKxlnPzNzMxaxsnfzMysZZz8zczMWsbJ38zMrGWc/M3MzFrGyd/MzKxl\nnPzNzMxaxsnfzMysZZz8zczMWsbJ38zMrGWc/M3MzFrGyd/MzKxlnPzNzMxaxsnfzMysZQae/CWt\nJel3ku6TtN2gz2dmZmajq+LO/+PAX4Go4FxmZmY2hoEmf0nPB54NvAvQIM9lZmZm47PGoA4saUPg\ni8CLgTsGdR4zMzObmEHe+X8VODYiLh7gOczMzGyCJnTnL+kjwLtH2SWAWcDzgPWAj3WeOpHzzJ07\nl+nTpw/bNjQ0xNDQ0EQOY2ZmNiXNnz+f+fPnD9u2ZMmScT9/os3+nyTv6EdzNfAMYCfgTmlY3r9Q\n0kkRse9oB5g3bx6zZ8+eYGhmZmbt0O+GeMGCBcyZM2dcz59Q8o+Im4Gbx9pP0luBw7o2bQycDbwS\nuGAi5zQzM7PJNZABfxHx1+6fJd1ONv1fFRHXD+KcZmZmNj5VVvjzPH8zM7MGGNhUv24RcS2wehXn\nMjMzs9G5tr+ZmVnLOPmbmZm1jJO/mZlZyzj5m5mZtYyTv5mZWcs4+ZuZmbWMk7+ZmVnLOPmbmZm1\njJO/mZlZyzj5m5mZtUwl5X3NzMzaaWFDjjGck7+ZmdkkmzFjBtOmrcOyZXtNyvGmTVuHGTNmTMqx\nwMnfzMxs0s2cOZPLL1/I4sWLJ+V4M2bMYObMmZNyLHDyNzMzG4iZM2dOasKeTB7wZ2Zm1jJO/mZm\n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\nzKzH/B+oeo7i0b8nywAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "row = 30 # select a row to describe\n", "local_contrib_frame = pd.DataFrame(columns=['Name', 'Local Contribution', 'Sign'])\n", "\n", "# multiply values in row by local glm coefficients\n", "for name in local_frame[row, :].columns:\n", " contrib = 0.0\n", " try:\n", " contrib = local_frame[row, name]*local_glm.coef()[name]\n", " except:\n", " pass\n", " if contrib != 0.0:\n", " local_contrib_frame = local_contrib_frame.append({'Name':name,\n", " 'Local Contribution': contrib,\n", " 'Sign': contrib > 0}, \n", " ignore_index=True)\n", "# plot \n", "_ = local_contrib_frame.plot(x = 'Name',\n", " y = 'Local Contribution',\n", " kind='bar', \n", " title='Local Contributions for Row ' + str(row) + '\\n', \n", " color=local_contrib_frame.Sign.map({True: 'r', False: 'b'}),\n", " legend=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Shutdown H2O" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Are you sure you want to shutdown the H2O instance running at http://127.0.0.1:54321 (Y/N)? y\n", "H2O session _sid_bca1 closed.\n" ] } ], "source": [ "h2o.cluster().shutdown(prompt=True)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 10_model_interpretability/src/loco.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Local Feature Importance and Reason Codes using LOCO\n", "***\n", "\n", "Based on: Lei, Jing, G’Sell, Max, Rinaldo, Alessandro, Tibshirani, Ryan J., and Wasserman, Larry. Distribution-free predictive inference for regression. *Journal of the American Statistical Association*, 2017.\n", "\n", "http://www.stat.cmu.edu/~ryantibs/papers/conformal.pdf\n", "\n", "** Instead of dropping one variable and retraining a model to understand the importance of that variable in a model, these examples set a variable to missing and rescore this new, corrupted sample with the original model. This is approach may be more appropriate for nonlineaer models in which nonlinear dependencies can allow variables to nearly completely replace one another when a model is retrained. **" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminaries: imports, start h2o, load and clean data " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# imports\n", "import h2o \n", "import numpy as np\n", "import pandas as pd\n", "from h2o.estimators.gbm import H2OGradientBoostingEstimator" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: java version \"1.8.0_112\"; Java(TM) SE Runtime Environment (build 1.8.0_112-b16); Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)\n", " Starting server from /Users/phall/anaconda/lib/python3.5/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpoidcpxm3\n", " JVM stdout: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpoidcpxm3/h2o_phall_started_from_python.out\n", " JVM stderr: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmpoidcpxm3/h2o_phall_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321... successful.\n" ] }, { "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", "
H2O cluster uptime:01 secs
H2O cluster version:3.12.0.1
H2O cluster version age:2 months and 7 days
H2O cluster name:H2O_from_python_phall_tff9kq
H2O cluster total nodes:1
H2O cluster free memory:3.556 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
H2O internal security:False
Python version:3.5.2 final
" ], "text/plain": [ "-------------------------- ------------------------------\n", "H2O cluster uptime: 01 secs\n", "H2O cluster version: 3.12.0.1\n", "H2O cluster version age: 2 months and 7 days\n", "H2O cluster name: H2O_from_python_phall_tff9kq\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 3.556 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "Python version: 3.5.2 final\n", "-------------------------- ------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# start h2o\n", "h2o.init()\n", "h2o.remove_all()\n", "h2o.show_progress()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Load and prepare data for modeling" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "# load clean data\n", "path = '../../03_regression/data/train.csv'\n", "frame = h2o.import_file(path=path)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# assign target and inputs\n", "y = 'SalePrice'\n", "X = [name for name in frame.columns if name not in [y, 'Id']]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### LOCO is simpler to use with data containing no missing values" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# determine column types\n", "# impute\n", "reals, enums = [], []\n", "for key, val in frame.types.items():\n", " if key in X:\n", " if val == 'enum':\n", " enums.append(key)\n", " else: \n", " reals.append(key)\n", " \n", "_ = frame[reals].impute(method='median')\n", "_ = frame[enums].impute(method='mode')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# split into training and validation\n", "train, valid = frame.split_frame([0.7])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Understanding linear correlation and nonlinear dependencies are important for LOCO.\n", "* If strong relationships are present, retraining the model after removing an input will simply allow the linearly correlated or nonlinearly dependent variables to make up for the impact of the removed input. This why we will set to missing here, and **not** drop and retrain.\n", "* If such relationships are present, models must be regularized to prevent correlation or other dependencies from creating instability in model parameters or rules. (H2O GBM is regularized by column and row sampling.)\n", "* For H2O GBM, setting a variable to missing causes it to follow the majority path in each decision tree. The interpretation of LOCO becomes the numeric difference between the local behavior of the variable and the most common local behavior.\n", "* Because of linear correlation and nonlinear dependence, LOCO values are valid only for a given data and feature set. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "GarageYrBlt YearBuilt\n", "GrLivArea TotRmsAbvGrd\n", "TotalBsmtSF 1stFlrSF\n", "1stFlrSF TotalBsmtSF\n", "GarageCars GarageArea\n", "YearBuilt GarageYrBlt\n", "GarageArea GarageCars\n", "TotRmsAbvGrd GrLivArea\n" ] } ], "source": [ "# print out linearly correlated pairs\n", "corr = train[reals].cor().as_data_frame()\n", "for i in range(0, corr.shape[0]):\n", " for j in range(0, corr.shape[1]):\n", " if i != j:\n", " if np.abs(corr.iat[i, j]) > 0.7:\n", " print(corr.columns[i], corr.columns[j])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It's likely that even more nonlinearly dependent relationships exist between inputs. Nonlinearly relationships can also behave differently at global and local scales." ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "#### Removing one var from each correlated pair may increase stability in the model and its explanations" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "X_reals_decorr = [i for i in reals if i not in ['GarageYrBlt', 'TotRmsAbvGrd', 'TotalBsmtSF', 'GarageCars']]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train a predictive model" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm Model Build progress: |███████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "# train GBM model\n", "model = H2OGradientBoostingEstimator(ntrees=100,\n", " max_depth=10,\n", " distribution='huber',\n", " learn_rate=0.1,\n", " stopping_rounds=5,\n", " seed=12345)\n", "\n", "model.train(y=y, x=X_reals_decorr, training_frame=train, validation_frame=valid)\n", "\n", "preds = valid['Id'].cbind(model.predict(valid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Rescore predictive model\n", "* Each time leaving one input (covariate) out by setting it to missing\n", "* To generate local feature importance values for each decision" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LOCO Progress: HalfBath (1/32) ...\n", "LOCO Progress: BsmtFinSF1 (2/32) ...\n", "LOCO Progress: MoSold (3/32) ...\n", "LOCO Progress: PoolArea (4/32) ...\n", "LOCO Progress: BsmtHalfBath (5/32) ...\n", "LOCO Progress: BedroomAbvGr (6/32) ...\n", "LOCO Progress: BsmtFinSF2 (7/32) ...\n", "LOCO Progress: GrLivArea (8/32) ...\n", "LOCO Progress: KitchenAbvGr (9/32) ...\n", "LOCO Progress: LotFrontage (10/32) ...\n", "LOCO Progress: MSSubClass (11/32) ...\n", "LOCO Progress: BsmtUnfSF (12/32) ...\n", "LOCO Progress: LotArea (13/32) ...\n", "LOCO Progress: OpenPorchSF (14/32) ...\n", "LOCO Progress: 1stFlrSF (15/32) ...\n", "LOCO Progress: 3SsnPorch (16/32) ...\n", "LOCO Progress: Fireplaces (17/32) ...\n", "LOCO Progress: EnclosedPorch (18/32) ...\n", "LOCO Progress: LowQualFinSF (19/32) ...\n", "LOCO Progress: 2ndFlrSF (20/32) ...\n", "LOCO Progress: YearBuilt (21/32) ...\n", "LOCO Progress: YrSold (22/32) ...\n", "LOCO Progress: BsmtFullBath (23/32) ...\n", "LOCO Progress: WoodDeckSF (24/32) ...\n", "LOCO Progress: OverallCond (25/32) ...\n", "LOCO Progress: GarageArea (26/32) ...\n", "LOCO Progress: ScreenPorch (27/32) ...\n", "LOCO Progress: MasVnrArea (28/32) ...\n", "LOCO Progress: MiscVal (29/32) ...\n", "LOCO Progress: OverallQual (30/32) ...\n", "LOCO Progress: YearRemodAdd (31/32) ...\n", "LOCO Progress: FullBath (32/32) ...\n", "Done.\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Id predict HalfBath BsmtFinSF1 MoSold PoolArea BsmtHalfBath BedroomAbvGr BsmtFinSF2 GrLivArea KitchenAbvGr LotFrontage MSSubClass BsmtUnfSF LotArea OpenPorchSF 1stFlrSF 3SsnPorch Fireplaces EnclosedPorch LowQualFinSF 2ndFlrSF YearBuilt YrSold BsmtFullBath WoodDeckSF OverallCond GarageArea ScreenPorch MasVnrArea MiscVal OverallQual YearRemodAdd FullBath
4 162737 0 5426.69 1307.74 0 0 0 0 2825.75 0 719.187 836.729 1734.61 0 727.522 683.734 0 -294.17 -79.2358 0 -810.712 12167.3 -5918.04 -1459.14 -635.263 5173.29 -8044.2 0 0 0 -36467.5 21993.6 0
5 321949 -708.329 12408.5 27137.8 0 0 0 0 -7560.51 0 -3064.35 0 -321.035-11176.7 -6596.96 13893.5 0 -3.02205 0 0 -3952.2 -7019.57 1599.46 -2264.6 -3086.45 0 -39288.8 0 609.803 0 -80951.9 4742.61 0
7 288940 4286.86 -38286.6 0 0 0 0 0 521.262 0 0 -716.772 275.934 229.391 -912.311-10971 0 224.838 0 0 0 664.773 -297.844 -1.47215 -112.298 0 -9753.45 0 -139.076 0 -83533.4 -411.94 0
8 214558 -2934.78 -2155.88 -1596.35 0 0 0 0 -34924.2 0 824.924 0 -3677.11 5894.01 -2393.04 -717.704 0 1019.98 2054.01 0 -1302.45 1471.64 0 -525.598 -6039.15 -1901.71 -6247.74 0 1615.11 0 -14857.3 25196.1 0
11 130570 0 -1501.59 373.448 0 0 0 0 -772.792 0 -58.044 420.323 1796.17 24.6083 0 -7408.69 0 0 0 0 0 706.53 0 -1356.89 0 5717.06 2281.01 0 0 0 1182.2 2090.64 0
13 132042 0 -3415.88 -313.206 0 0 150.151 0 -733.679 0 447.161 180.826 -1629.84 -3467.46 0 0 0 0 0 0 0 220.939 0 -1251 262.766 -927.486 -469.974 -2031.6 0 0 1709.63 6448.98 0
18 124058 140.167 7117.68 1132.37 0 0 1359.23 0 315.657 1959.07 -58.044 4142.5 5807.16 265.833 0 -11407.5 0 922.09 0 0 0 -17613.7 1225.79 0 0 538.854 561.559 0 0 0 8583.6 896.597 -1646.95
21 315667 105.762 12636.7 25091.7 0 0 0 0 -30379.8 0 -2426.85 0 13761.8 -6041.51 -5266.2 9589.59 0 433.176 0 0 -6544.59 -8300.07 0 2814.84 1723.94 0 -18974.7 0 -2872.53 0 -107036 -2016.31 0
38 139593 140.167 -11190.9 3093.13 0 -60.0012 0 0 -1225.85 0 840.328 75.9954 3984.55 3999.82 0 4484.02 0 -3524.89 0 0 0 10936.9 240.289 0 0 -445.479 1442.54 0 -822.334 0 2498.6 2362.87 162.936
41 158223 -557.072 538.874 3711.56 0 0 0 0 -2371.64 0 -3263.31 1773.37 538.58 -1101.54 -2713.6 -18880.1 0 -8196.03 0 0 0 -3437.71 -496.612 2685.87 0 955.21 0 0 -1095.96 0 -9173.71 -579.85 -2707.86
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h2o.no_progress()\n", "\n", "for k, i in enumerate(X_reals_decorr):\n", "\n", " # train and predict with Xi set to missing\n", " valid_loco = h2o.deep_copy(valid, 'valid_loco')\n", " valid_loco[i] = np.nan\n", " preds_loco = model.predict(valid_loco)\n", " \n", " # create a new, named column for the LOCO prediction\n", " preds_loco.columns = [i]\n", " preds = preds.cbind(preds_loco)\n", " \n", " # subtract the LOCO prediction from \n", " preds[i] = preds[i] - preds['predict']\n", " \n", " print('LOCO Progress: ' + i + ' (' + str(k+1) + '/' + str(len(X_reals_decorr)) + ') ...')\n", " \n", "print('Done.') \n", "\n", "preds.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The numeric values in each column are an estimate of how much each variable contributed to each decision. These values can tell you how a variable and it's values were weighted in any given decision by the model. These values are crucially important for machine learning interpretability and are often to referred to \"local feature importance\", \"reason codes\", or \"turn-down codes.\" The latter phrases are borrowed from credit scoring. Credit lenders must provide reasons for turning down a credit application, even for automated decisions. Reason codes can be easily extracted from LOCO local feature importance values, by simply ranking the variables that played the largest role in any given decision." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Helper function for finding quantile indices" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{0: 621.0, 80: 606.0, 50: 744.0, 99: 1299.0, 20: 372.0, 70: 849.0, 40: 207.0, 10: 996.0, 60: 983.0, 90: 1343.0, 30: 38.0}\n" ] } ], "source": [ "def get_quantile_dict(y, id_, frame):\n", "\n", " \"\"\" Returns the percentiles of a column y as the indices for another column id_.\n", " \n", " Args:\n", " y: Column in which to find percentiles.\n", " id_: Id column that stores indices for percentiles of y.\n", " frame: H2OFrame containing y and id_. \n", " \n", " Returns:\n", " Dictionary of percentile values and index column values.\n", " \n", " \"\"\"\n", " \n", " quantiles_df = frame.as_data_frame()\n", " quantiles_df.sort_values(y, inplace=True)\n", " quantiles_df.reset_index(inplace=True)\n", " \n", " percentiles_dict = {}\n", " percentiles_dict[0] = quantiles_df.loc[0, id_]\n", " percentiles_dict[99] = quantiles_df.loc[quantiles_df.shape[0]-1, id_]\n", " inc = quantiles_df.shape[0]//10\n", " \n", " for i in range(1, 10):\n", " percentiles_dict[i * 10] = quantiles_df.loc[i * inc, id_]\n", "\n", " return percentiles_dict\n", "\n", "quantile_dict = get_quantile_dict('predict', 'Id', preds)\n", "print(quantile_dict)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plot some reason codes for a representative row" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nSLpG0pOSeiT9XNKudTGbSrpe0mJJ8yWdIWmdupjtJM2Q9JykRyQd1WBZu0q6W9ISSQ9KOrjNq2dm\nZmZDRNktPNcDw4BdgbHAvcB1kl4PkBObG4B1gZ2Ag4GPAifVZiBpQ2A6MDfP4yhgiqSPF2JGA9cB\ntwDbA+cAF0qa0MZ1MzMzsyGitIRH0uuANwOnRcTvI+Jh4EvACGCbHLYH8Dbg3yPivoiYDnwF+LSk\ndXPMJGA94NCImBURVwHnAkcWFncYMCcijo6I2RHxTeB/gcltXk0zMzMbAkpLeCJiIfAH4COSRuQE\n5jDgCeDuHLYTcF9ELCi8dDowEti6EDMjIl6qixkjaWQh5ua6KkwHxg/U+piZmdnQVXaX1gRSN9Qz\nwHPA54A9I6InT9+YlAAVPVGYtroxG0laf5Vrb2ZmZmuEdZuH9I+kU4Fj+ggJYMuIeBD4FinxeDew\nBPg4aQzP2yOiPkHpd1VW8/Uvmzx5MiNHjlyhrKuri66uroFahJmZ2Rqru7ub7u7uFcp6enp6iS7H\ngCc8wJnAJU1i5kjaHdgbeHVELM7ln5E0kTQ4+QxgPvCOuteOyn/nF/6OahATLcQsiojnm9SVqVOn\nMnbs2GZhZmZma6VGjQAzZ85k3LhxJdVoZQOe8OSxOQubxUl6JSkpWVY3aRnLu9ruAI6V1FEYxzMR\n6AEeKMScImlYRCwtxMwudI3dAexVt5yJudzMzMwqrswxPHcAfwMuz/fReYukrwOjSZerA9xISmyu\nyDF7ACcD50XEizlmGvACcLGkrSQdCBwBnFVY1vnAFpJOlzRG0uHA/sDZbV5HMzMzGwLKvkprT2AD\n0v1xfgO8C/iXiLgvxywD3g8sBW4HLgcuBU4ozGcRqbVmNHAX8HVgSkRcVIiZB+wDvA+4h3Q5+qER\nUX/llpmZmVVQO8bwtCwiZrJyV1N9zKOkpKevmPuBXZrEzACGTmeimZmZDZqyL0s3MzMzazsnPGZm\nZlZ5TnjMzMys8pzwmJmZWeU54TEzM7PKc8JjZmZmleeEx8zMzCrPCY+ZmZlVnhMeMzMzqzwnPGZm\nZlZ5TnjMzMys8pzwmJmZWeU54TEzM7PKc8JjZmZmleeEx8zMzCrPCY+ZmZlVnhMeMzMzqzwnPGZm\nZlZ5TnjMzMys8pzwmJmZWeU54TEzM7PKc8JjZmZmleeEx8zMzCrPCY+ZmZlVnhMeMzMzqzwnPGZm\n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\nZPbsWSxYsKDsqvRbR0cHnZ2dZVfDzGyN5YTH1iqdnZ1OHMzM1kIetGxmZmaV54THzMzMKs8Jj5mZ\nmVWeEx4zMzOrPCc8ZmZmVnlOeMzMzKzy2pbwSDpW0i8lLZb0VJPY10p6TNJSSRvVTdtO0gxJz0l6\nRNJRDV6/q6S7JS2R9KCkgxvEHCBpVp7PvZL2Wv21NDMzszVBO1t41gOuAr7dQuxFwD31hZI2BKYD\nc4GxwFHAFEkfL8SMBq4DbgG2B84BLpQ0oRDzLmAacAGwA3AtcI2krVZhvczMzGwN07YbD0bEiQCN\nWluKJB0GjAROBupbXSaREqdDI+IlYJakHYEjgQtzzGHAnIg4Oj+fLWlnYDJwUy47AvhxRJydnx+f\nE6LPAIev4iqamZnZGqLUMTy5heU44MPAsgYhOwEzcrJTMx0YI2lkIebmutdNB8YXno9vIcbMzMwq\nqrSER9IrSN1MX4yIP/cStjHwRF3ZE4VpfcVsJGn9JjEbY2ZmZpXXry4tSacCx/QREsCWEfFgC7M7\nDXggIrprs6/722dVWogZMJMnT2bkyJErlHV1ddHV1TWY1TAzMxuSuru76e7uXqGsp6enpNo01t8x\nPGcClzSJmdPivHYDtpF0QH6u/HhS0lfzGKD5wKi6140iJVbz8/PeYhZFxPNNYubTgqlTpzJ27NhW\nQs3MzNY6jRoBZs6cybhx40qq0cr6lfBExEJg4QAte1/glYXn7yRdrbUzy5OmO4BTJA2LiKW5bCIw\nOyJ6CjH1g50n5nIKMbsD5xbKJtTFmJmZWUW17SotSZsCrwU2A4ZJ2j5P+mNELI6IuXXx/0Bq4flD\nRCzKxdOA44GLJZ0ObEu64upzhZeeD3w6T7+YlNjsD+xdiDkHuE3SkcD1QBcwDvjEQK2vmZmZDV1t\nS3iAk4CPFJ7PzH93A2b08ppY4UnEIkkTgW8CdwELgCkRcVEhZp6kfYCppGToMdJl7DcXYu6QdBDw\n1fx4CPhgRDywGutnZmZma4h23ofnEOCQfsT/DBjWoPx+YJcmr51BarHpK+Zq4OpW62NmZmbV4d/S\nMjMzs8pzwmNmZmaV54THzMzMKs8Jj5mZmVWeEx4zMzOrPCc8ZmZmVnlOeMzMzKzy2nnjQWvJrLIr\n0E9rWn3NzMyc8JSmo6OD4cNHsGTJpLKr0m/Dh4+go6Oj7GqYmZm1zAlPSTo7O5k9exYLFiwouyr9\n1tHRQWdnZ9nVMDMza5kTnhJ1dnY6cTAzMxsEHrRsZmZmleeEx8zMzCrPCY+ZmZlVnhMeMzMzqzwn\nPGZmZlZ5TnjMzMys8pzwmJmZWeU54TEzM7PKc8JjZmZmleeEx8zMzCrPCY+ZmZlVnhMeMzMzqzwn\nPGZmZlZ5TnjMzMys8pzwmJmZWeU54TEzM7PKc8JTUd3d3WVXYa3jbT74vM0Hn7f54PM2HxhtS3gk\nHSvpl5IWS3qqj7iPSrpX0nOS5kv6r7rp20makac/IumoBvPYVdLdkpZIelDSwQ1iDpA0K8/nXkl7\nDcyaDk1+gww+b/PB520++LzNB5+3+cBoZwvPesBVwLd7C5B0JHAy8DVgK+B9wPTC9A3z87nAWOAo\nYIqkjxdiRgPXAbcA2wPnABdKmlCIeRcwDbgA2AG4FrhG0larv5pmZmY21K3brhlHxIkAjVpbcvmr\nScnOPhFxW2HS/YX/J5ESp0Mj4iVglqQdgSOBC3PMYcCciDg6P58taWdgMnBTLjsC+HFEnJ2fH58T\nos8Ah6/6WpqZmdmaoMwxPBMAAZtKekDSo5KulPSPhZidgBk52amZDoyRNLIQc3PdvKcD4wvPx7cQ\nY2ZmZhXVthaeFmwBDAO+TGqBWQR8FbhJ0rY5ydkYmFP3uify342Bnvz3iQYxG0laPyKe7yNm4yZ1\nHA4wa9asVtdpyOjp6WHmzJllV2Ot4m0++LzNB5+3+eBbU7d54bNzeJn1qOlXwiPpVOCYPkIC2DIi\nHmxhduvk5X82Im7J8+8C5gO7sbw7qmFVWqvxahsNMGnSpEFa3MAaN25c2VVY63ibDz5v88HnbT74\n1vBtPhq4vexK9LeF50zgkiYx9S0yvflL/vtyChgRCyQtADpz0XxgVN3rRpESq/lNYhbl1p2+YubT\nt+nAvwPzgCVNYs3MzGy54aRkZ3qTuEHRr4QnIhYCCwdo2b/Mf8cAjwNIei3QQUowAO4ATpE0LCKW\n5rKJwOyI6CnE1F9iPjGXU4jZHTi3UDahLmYleX2ntbg+ZmZmtqLSW3Zq2nkfnk0lbQ9sBgyTtH1+\nvAogIh4CfgScI2m8pG2Ay4AHgNvybKYBLwAXS9pK0oGk8T5nFRZ1PrCFpNMljZF0OLA/cHYh5hxg\nT0lH5pgpwDjgvPasvZmZmQ0lioj2zFi6BPhIg0m7RcSMHLMBMBXYF1hGSnQ+HxF/LsxnG+CbwDuA\nBcC5EXFm3bLem+ezFfAYcFJEXFEXsx9pUPRmwEPAURExJJrZzMzMrL3alvCYmZmZDRX+LS0zMzOr\nPCc8ZmZmVnll3njQzMxsrdef33WMiAfaWZcq8xges9WQrzrchXTvqFcUp0XEuQ1fZP0m6STgtIh4\nNj9/TUQ8XXK11lqSNoiIv5ddj6qQtIx0fznlv72KiGGDUqkKcsJTIZL2Bz5E4w/fsaVUqsLyD9ne\nAIwAXgU8RbqP1LPAXyNiixKrVymSlgJviIi/5ueLgB0iotUbndoqkvRF4E8RcVV+Pg04EPgz6cef\n7yuzflUg6U2Fp9sDXyfdWqV2r7jxpB/EPjoifjDI1asMj+GpCElHkO6C/QSwI3An6SaRWwA/LrFq\nVTYV+D/gNcBzpB+y3Qy4G/hiifWqovqfkxmsn5cxOJyU3CBpd2Bv4APALaS779tqioiHaw/Szzcd\nERHfjIiZ+fFN4POk3560VeSEpzoOBz4ZEZ8l3azxjIiYQLq79Mg+X2mragfgrIhYBiwF1o+IR4Gj\nga+VWjOzgfMG4E/5/w8AV0XEDcCpwDtLq1V1bQc83KD8j8A2g1yXSnHCUx2dLL+F93PAhvn/K4Cu\nUmpUfS+SbpgJ8FeW/wZcD7BpKTWqrgA2lLSRpJH5+Qb5+cuPkutYVU8D/5j/3xO4uTDN40kG3h+A\nYyStVyvI/x+Tp9kq8lVa1TEfeC3wCOnb2E7AvcDmuPm/XX5LugP4Q8DPgJMkdQAfBu4vs2IVJODB\nuue/rXse+AO4Ha4FvifpQeD1LO8i34HGLRG2eg4jdZU/KumeXLYD6dj+QGm1qgAnPNVxK/AvpA+B\nS4CpeRDz2wEPcmuPY1nekvafwOXAt0kJ0MfKqlRF7VZ2BdZinwOOJLVaHhcRz+TyTUm/ZWgDKCJ+\nJWlz0k8zvS0XXwt8t7DtbRX4Kq2KkLQOsE5EvJSf/xvwLtKH73ci4oUy62dmZlYmJzxmq0HSusCu\nwJuAaRHxjKRNgEW+T8nAydt5WEQ8XygbBfwH6ZYAP4qIX5RVv6qT1AV8inTV53si4pF8ZejciPi/\ncmu35pO0d6uxecC4rQJ3aVWIpPeQTkpvAvaPiD9L+jDppOQPgwEmaTPgJ6TByusDNwHPkAYXrk/6\nMLaBcQHp6sNPAUjaEPgNMBz4CzBZ0gf9YTDwJH2SdEXWuaSrsmrjpP5OujeME57Vd13d89pNCIvP\nazxObRX5Kq2KkLQfMJ10hdaOpA9cSJekH1tWvSruHOAult+Hp+aHwO6l1Ki63g1cXXj+EdKJ/y0R\nsT3pJm1HlVGxtcDngI9HxImk2y/U/AbYtpwqVc56hccewO9IA5Q78uNfgHuAvcqqYBU44amO44D/\niIhPkC6Xrvkl4Lsst8d7gFMajI+aB7xx8KtTaW8kjUer2R24OiJ68vPLgK0HvVZrhy2AmQ3KlwAb\nDHJdKikiltYepOT9cxFxfUQ8lR/XkwaOf6Pcmq7ZnPBUxxhgRoPyHuDVg1yXtcU6NG5e/kdS15YN\nnCXAKwvPdwJ+XTfdH77tMY/0cwf1JgKzBrcqa4U3k+6SX+8p0m1GbBU54amO+aQ3Sr2dAf/eUHvc\nSLrde01I2gA4kfQbWzZw7iHd36g2Vm0U6VYMNW8CHi+hXmuDbwDn5W5zAWMlHQOcBpxVas2q6S7g\n6/meXgDk/0/P02wVedBydVwAnCPpY6QBbptIGk/6rZuTS61ZdX0BmC7pAdLg2WnAW4AF+O7WA+0k\n4MeSPkT6qYNLI+Ivhen/j9R9awMsIr4jaQnpXDICuIr0m31fjIjvlVq5ajqUdN+dxyTNy2WjgbnA\nB0uqUyX4svSKkCTS4OQvk05KAM8DZ0bEV0qrWMXly6UPJDX5b0Aa6/C9iHiuzxdav0naktSNMh/4\nfv4Ns9q0TwJ3RsQ9vb3eVl/++Y4NIsKtaW2U76u2J8tvPDgLmF485q3/nPBUjKRXkLq2NgAe8L1g\n2iP/ts13gJMjYm7Z9VlbSNooIhb1Mu3NEfHHwa5T1eXbL6ybf8m7WP4m4MWI+FPjV9pAysnmQRHh\nu1uvIo/hqQBJ60l6SdI2EfFCRDwQEXc62WmfiHgR2K/seqyFrpe0fn2hpDHAbYNfnbXCZaTbAtR7\nN3Dp4FZl7SNpF0mXk1o2Tyu7PmsyJzwVkD98/4RvSDXYrgH+texKrGX+DvwwdyUCL3d13caK9+mx\ngbMjcHuD8tvxLS/aQtImko6V9EfS4Pz1gQ+RfrzVVpEHLVfHV4GvSfpwRDxVdmXWEg8Bx0t6N3A3\nsLg4MSLOLaVW1bYvcDPp17v/jXTvnVtI46aOLLVm1dbokv+N8JesASNpGOkGgx8H/pl05/bjgCuA\nEyPigRKrVwkew1MRkn5LGruzHvAIK3/4+pvYAJPU19idiIgtBq0yaxFJrya16DwEvBe4PCJ8l+U2\nkXQ96b5SB9UGzeZBtd3AyIjYs8z6VYWk+aRbiHwXuDIiFubyF4HtnfCsPrfwVMc1ZVdgbRMRvgnY\nIMiDNYuWka6Mu4nUjXVyLaa3Ac22Wo4h3dR0lqTazU3fC7yO1BJhA2M46SdqniP9bpwNMLfwrAUk\nDcu3LLdBkMeUHBoRXyy7LlUgaRkr/njiy5Py39oPLUZEuIulDSRtCnyWdPuF50i/9XRuRCwotWIV\nImkEcADpPjzjSD8o+l1SUr+DW3hWnxOeCpP0VtKb5yMR8Yay61Nlkl4F/Btpe+9EuiXANuXWqhok\n7dJqbET8rJ11MRsM+arDQ0g/krsxKfG5BPiZ78Wz6pzwVEz+lnAg8DFgPOlW5FdHxNdLrVhF5QHL\nh5KuoHglMBW4MCL+UGrFzAZYvh3ApsAriuVueWifPJB5H9L5fG/gbxHhK7VWkROeipC0E2l0/wGk\nS9S3BHaLiJ+XWrEKkvR64KOkk9BI0uDNacAdeHBhW0k6BPh7RHy/rvwAYEREXFZOzaor/47ThcAH\nGk13N+LgkLQxqbX+jLLrsqbyfXjWcJK+IOn3wP8CTwPvjYhtSeMaGv3irq2+R4Btgc8Bb4yIIyPC\nP+o3OL78/9u79yC7y/qO4+8PFEQuFVFRi1FQigEkQUBsuDvEWxUEK60geAFRKtQ66jitVBTHisoI\nEizVjsh4AQUVRYugclEUEdCoCIabgRAQCaMhAlUI9NM/nme7m8Pmsrtn99nz289rZie7z+/88ZkE\nzn7Pc/k+lHucei2jXK0S/Xcqpf/LnpT9O6+kzGreSu52mjK2f5diZ2JySmvwfbR+nZCNyVNmCeUW\n+jvq91m+mjrPpPy991pSn0X/zQcOsn113UB+q+2LJN0HvIeyuTYmQNK9jL4x/zGypDV+KXgG3/so\nm9uOkPQl4Au2r2+cqdNszx6xd+daSTdTNhXCOr5pxbgtA+YAt/eMzyUzmpNlU4Zn1ZZTZntuAX4J\n7NYqVMf8y4jvnwgcT2mweVUdmwfsD3x4inN1SgqeAWf7JOCkepLlSODq2o5clP9xYhLYvhK4UtLb\ngUMpRef6wBmSzgG+Yfvelhk76kvAAkn3U3rDAOwLnAZ8uVmqbrsJ2I5SZF4HvLm+xxxNud8pJsj2\nmUPfS/oK8P7eTu31vWa/KY7WKdm03DGSNgMOoxQ/uwLXAF+1fUrTYDPAUP8d4AhgC9sbNI7UOZI2\npLTaPwR4pA6vB3weOMZ2Grb1maTXU25L/6ykFwAXA5sDK4EjbZ/TNGDHSHqA0nfn1p7xbYFf2B7t\nmlIpWiUAAA7OSURBVI9YByl4OkzSTpRfwIdl3Xfq1IstD7R9fussXVV7TA01wfuV7SWNI80Y9UPV\n9sAS26NtII8JkHQHcIrtT/SMvwN4l+1ZbZINvhQ8HVE/hZ1r+6Ge8Q0pRxk/0yZZd0m6hLJ35/xc\naTC16n/X2wC/sf3I2l4fMSgkHQV8GvgWcHUdfiHldNwxI5e/YmxS8HSEpEeBp9te1jP+JGBZemX0\nn6TTKA0HnwBcSCl+vm17ZdNgHVYba54OvKEObWd7saTTgbtsf6Rduu6QtM7Hn22/ZzKzzESS9qC0\nvdi+Di2iXOVxZbtUgy8FT0fU46JP7d0oK2kucLntLdok67Z6a/R8yr6pg4FHKT2Rzs41B/1Xi8w9\ngXdQ9pLMqQXPq4AP2H5+04AdIWldG5ba9j6TGiaiT1LwDDhJP6cchZ4L3MDwRk4op4a2AS62/fcN\n4s0okjaidKM9Htgps2r9J2kJ8A+2f1JPas2tBc+2wELbvTerRwyc+kHqAIZneG4ALsw9WhOTY+mD\n7xv1z52B7wAPjHj2MOUo6demONOMU9u+vxY4nNIn5pq2iTrrKZRePL02IT2QJp2kpwPYvrt1lq6S\n9GzKEvnWlH5HAH8NLJb0Stu3tco26FLwDDjbJwJIup2yafnPbRPNHJL+Evg7ynLWfsBi4GzKDMRv\nGkbrsp9SLlM8vf48VOS8meEmbdFH9QLLf6PsKXlCHVsBLAA+lE3jfbeA0k18n6EtCvX+vi/WZ6Pe\naRZrlyWtjpG0KyOmQW3/vGWeLpP0J0rn2XMpe3Zyn9Ykk7QXcBHlzf+NlNMsOwB7APva/lm7dN0k\n6ZOUzfknsmrn3xOAr9g+rlW2Lqp9ePawfV3P+FzgR7Y3a5Ns8GWGpyPqJ4AvU2Ya7qvDm0u6HHht\nuv5OigOBS7OuPnVs/0jSzpRW/L8CXgIsBObZ/lXTcN11OPA62xeOGFtYZ5XPBlLw9NdKYONRxjeu\nz2KcMsPTEZLOBZ5N6bmzqI7tAHyOctnfoS3zRcRgkrSMsrxyY8/4bMqMw5PbJOsmSV+k7AN809CM\npaTdgDOBX9p+fct8gywFT0fUNfX5tq/tGd8d+K7tzdsk6xZJC4H9bS8fcUJuVLZ3mbpkM4OkJwAv\npmzoNGXf1KVp/Dh5JJ1I+TB11NDVHZI2AD5D6bZ8Qst8XSPpiZQl25cDQ41kNwS+TflAu7xVtkGX\nJa3uWI/RpztX1mfRHxcw/Cb0jTW9MPpL0uHAJ4Heo+crJB1j+9wGsWaCHYCXAi+pRT6UU6GPB74j\n6byhF6b9xcTVguYV9W6+2XV4Ue8MW4xdZng6QtIFlAv9DrX92zq2FWWN/T7bB7XMN5PUu7S2HPp3\niImTtAulzf7ZwKnAjYAov4zfQWkJ8ALbv2wWsqMkfWFdX2v7iMnMEjERKXg6QtIs4JvAjsDSOjyL\nsrHzVbbvbJVtpqmnKRam8WD/SDoL2NT2Iat5/lXgj7aPnNpkEf0n6WDgRcCW9MzQZxZt/LKk1RG2\nl9ZPwfMZMQ1K+SR8AvCWVtki+mBP4G1reP4p4IwpyjLj1M6/+wDPAc6zfb+kpwIP2H6wbbpukXQK\ncCxwBXAPaajZN5nh6bjMNky9/J33X+1NsoPtO1bz/JmUfQ6bTG2y7quzxxdRip0NWPXC1vVtr6kQ\njTGS9HvgDbb/u3WWrslm1ogYBBsDa+oi/hCw0RRlmWkWANdR9gj+acT4+ZQZ5eiv+4FbW4fooixp\nRYyRpDlreclzpyTIzPPS2n5hNGm7MHn2Bvay/ZCkkeO3Ac9oE6nTPgi8T9JRuSqov1LwRIzdLyjr\n6hrl2dB41or773NreZ6/88mxPqOvBmxFmY2I/jqHcpXHPZIW09NuxPbuTVJ1QAqeASfp/LW8JJ98\n+2+b1gFmGttZfm/nEuCfgH+sP1vSJsAHKHt7or/OAnYDziOblvsqm5YHXD2uu1a23zTZWWaS2mvn\nvcBnc+Q/ukzSs4DvAA9TLib+CbAdsALY2/Y9DeN1jqQHgZfZ/mHrLF2TgidinOrJoefZvr11li6T\ndOC6vtb2Nyczy0xVr5I4DJgLbEq5sPULOZLef5JuAl6Ty3D7LwVPxDjV7tbn217b3pKYAEm9t9H3\n7p/6/zextALor1ro/Afw4RT2U0PSAZTlw7dk9ri/UvBEjJOkY4D3U647+BmwyqfdzDb0n6T5wEcp\ny4lX1eF5wIeA99r+XqtsXVVPxu1s+7bWWWYCSfcCm1F6Hv2Rx25a3rJFri5IwRMxTqPMPIzkzDb0\nn6TrgWNs/6hnfG/gv2xv3yZZd9W7tH5q+7TWWWYCSUet6bntM6cqS9fklFbEOOXkUBPPAe4bZXwF\nsPXURpkxfg28X9I8Rp/JzJUefZSCZvJkhidijCQ9Hth/qPW7pJOAx414ySPACWka1n+SrqB0XD5i\n6HRQvdPp88BGtvdtma+LJC1dw2PbfuaUhZkhJG0NvJFS4L/L9jJJLwGW2l7UMNpAS8ETMUZ1784r\nbB9Qf74fuIHhtvuzgZNtn9IoYmdJ2hb4OuVY9NAv4lnALcBBttOSPwZaXZ69GLgG2APYvt5d9q/A\nLrYPaRpwgKXgiRgjST8EPmb7W/Xn+4G5thfXnw8HjrU9r2HMzlK53+DFlMISYBFwifNmFh0g6cfA\n122fPPK9RdLuwNdsz2occWBlD0/E2G0LjOyR8Wdg5AbmayhHeWMS1MLmu/UrJoGkjwEn2n6wfr9a\ntt8zRbFmijnA60YZXwY8ZYqzdEoKnoix25wRe3Zs974Jrceqe3qijyTtC7yb0vUXyqbak9OZtq/m\nUY5FD32/OplV678VwNMol7OONBe4a+rjdEcKnoixuxN4HnDTap7Pqa+JPqvLhWcB5wML6vBewKWS\n3mj7nGbhOsT23pKeLWmF7b1b55lhzgU+Iuk11IJS0guBjwNfbBls0GUPT8QYSToNmA/s2nsSq57g\n+illT8k/t8jXZZIWUfrtnNoz/k7g6PTh6R9JjwJPt72s/nwu8PbcnTW5JD0O+BRwOOWm+ocps23n\nUU4nPtIw3kBLwRMxRvUY9C8ob0SfBG6uj54LHEeZOX1+fjH0n6SHgB17T2PV01vX296oTbLuqY01\nnzai4Fllc35Mrno0fQ717jLbNzYN1AFZ0ooYI9v3SNoD+E/gIwzf62Tge8DbUuxMmqXA/kDv8fP5\nDB9Tjxh49e6y20eOSXq+7Z83CdQBKXgixqHeK/QySVtQTm0B3Gr7Dw1jzQQfBxZI2hn4cR3bk9Kk\nLUuI/WUeuyk5SwKTrC6LP2r74RFjOwEfBA6kLHPFOGRJKyIGiqSDgXcxfEprEeWU1gXtUnVPXdK6\nCHioDh0AXMZjr5Z49RRH6yRJzwC+RDkV9yhwGnACcAZlP883gVNtX9ks5IBLwRMREY8h6ax1eZ3t\nN012lplA0jmU059nAq+mnD78GbAQOMn2kobxOiEFT0QMHEm7MjzDc0P2NcSgk3QXcIjtH9eDEXcD\n784VNf2TgiciBoakLYEvA/sxfGv65sDlwGtt39soWsSE1DYAW9n+Xf35AUrri9X1+4oxWq91gIiI\nMTgd2IxyNH0L21tQlgH+kuFGhBGD6tER3/8vpfVF9ElmeCJiYEhaAcy3fW3P+O7Ad21v3iZZxMTU\nTeK/Z/gk3JOBP7DqPX3Y3nKKo3VGjqVHxCBZD1g5yvhKMmMdg+3o1gG6LjM8ETEwJF1A2bNzqO3f\n1rGtgLOB5bYPbpkvYiIkrQ+8kLIRf0XrPF2TgiciBoakWZR+JDsy3Fl5FnA9cKDtXNoaA61enzK7\nNjeNPsqSVkRMe5K2sX2b7aWSdqFcJTG7Pl5k+5KG8SL66XpgayAFT59lhicipr26oXMJ5fj5ZcD3\nM5sTXSTppcCHgeMpjQd7O1v/T4tcXZCCJyKmPUn7UXrv7EfZ47AhsJhS/FwOXJ4LW6MLanE/5DG/\noG3nLq1xSsETEQNF0kbAHgwXQLsDGwA32t6xXbKIiZO0/5qe2750qrJ0TQqeiBhIkjak3JT+cuCt\nwKb59BsRq5OCJyIGQi1w/gZ4EcNLW0uBK+rXD2zf0SxgRB9JehzlBOKGI8dt/7pNosGXgicipj1J\nl1EKnNuAHwA/pBQ4dzcNFtFnkp4MfAY4YLTnmcUcv3QmjYhBsDel7f5lwKXA91LsREedCmxJWa79\nE/BK4CjgVuBVDXMNvMzwRMS0J2kTStGzH2VJa2fgZspsz/cpsz25KT0GnqS7gYNsXy3pj5Qb02+R\ndBDwTtv7NI44sFLwRMTAkbQZsBfD+3nmArfYfl7LXBETJel+YCfbt0taAhxm+0pJ21CunNi4ccSB\nlSWtiBhED1Jukv4DsBx4BNi+aaKI/rgJ2K5+fx3wZklPpVwu+rtmqTogV0tExLQnaT1gN4aXtPYE\nNgHuojQePLb+GTHoFgDPqN9/ELgYeD2wEjiyVaguyJJWREx7dS/DJpRPuJfXr+/b/k3TYBGTrC7f\nbg8sSTfxiUnBExHTnqS3Uq6PuLl1loipIOkvgGdRCp1HWufpghQ8ERER04SkxwOfoCxfCdjO9mJJ\npwF32j65acABlk3LERER08e/Ay8AXgz8ecT45cChTRJ1RDYtR0RETB+vBg61fZWkkUsw1wPPaZSp\nEzLDExERMX1syejHzzemLHHFOKXgiYiImD4WAn874uehWZ6jgKumPk53ZEkrIiJi+ngvcKGk2ZTf\n0cdK2hHYt37FOGWGJyIiojFJfwVg+wpgV2BTYBFwILACmGf72nYJB1+OpUdERDQmaTlwrO1zWmfp\nqszwREREtHc88GlJX5G0ReswXZSCJyIiojHbZwBzgCcBv5Z0QONInZMlrYiIiGlE0nHAqZQ9PKtc\nK2F7lyahOiCntCIiIqYJSc+iNB9cDlxAT8ET45eCJyIiYhqQdDTwceASYEfb9zaO1CkpeCIiIhqT\ndDGwO3Cc7c+3ztNFKXgiIiLaWx+YY/vO1kG6KpuWIyIiovNyLD0iIiI6LwVPREREdF4KnoiIiOi8\nFDwRERHReSl4IiIiovNS8ERERETnpeCJiIiIzkvBExEREZ33f1uH6r+balSiAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "median_loco = preds[preds['Id'] == int(quantile_dict[50]), :].as_data_frame().drop(['Id', 'predict'], axis=1)\n", "median_loco = median_loco.T.sort_values(by=0)[:5]\n", "_ = median_loco.plot(kind='bar', \n", " title='Negative Reason Codes for the Median of Predicted Sale Price\\n', \n", " legend=False)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "median_loco = preds[preds['Id'] == int(quantile_dict[50]), :].as_data_frame().drop(['Id', 'predict'], axis=1)\n", "median_loco = median_loco.T.sort_values(by=0, ascending=False)[:5]\n", "_ = median_loco.plot(kind='bar', \n", " title='Positive Reason Codes for the Median of Predicted Sale Price\\n', \n", " color='r',\n", " legend=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ensembling explantions to reduce local variance\n", "Explanations derived from high variance machine learning models can be unstable. One general way to decrease variance is to ensemble the results of many models." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Train multiple models" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training Progress: model 1/10 ...\n", "Training Progress: model 2/10 ...\n", "Training Progress: model 3/10 ...\n", "Training Progress: model 4/10 ...\n", "Training Progress: model 5/10 ...\n", "Training Progress: model 6/10 ...\n", "Training Progress: model 7/10 ...\n", "Training Progress: model 8/10 ...\n", "Training Progress: model 9/10 ...\n", "Training Progress: model 10/10 ...\n", "Done.\n" ] } ], "source": [ "n_models = 10 # select number of models\n", "\n", "models = []\n", "pred_frames = []\n", "\n", "for i in range(0, n_models):\n", "\n", " # store models\n", " models.append(H2OGradientBoostingEstimator(ntrees=500,\n", " max_depth=2 * (i + 1),\n", " distribution='huber',\n", " learn_rate=0.01 * (i + 1),\n", " stopping_rounds=5,\n", " seed=i + 1))\n", " \n", " # train models\n", " models[i].train(y=y, x=X_reals_decorr, training_frame=train, validation_frame=valid)\n", " \n", " # store predictions\n", " pred_frames.append(valid['Id'].cbind(models[i].predict(valid)))\n", "\n", " print('Training Progress: model %d/%d ...' % (i + 1, n_models))\n", "\n", "print('Done.')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Calculate LOCO for each model" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LOCO Progress: model 1/10 ...\n", "LOCO Progress: model 2/10 ...\n", "LOCO Progress: model 3/10 ...\n", "LOCO Progress: model 4/10 ...\n", "LOCO Progress: model 5/10 ...\n", "LOCO Progress: model 6/10 ...\n", "LOCO Progress: model 7/10 ...\n", "LOCO Progress: model 8/10 ...\n", "LOCO Progress: model 9/10 ...\n", "LOCO Progress: model 10/10 ...\n", "Done.\n" ] } ], "source": [ "for k, model in enumerate(models):\n", "\n", " for i in X_reals_decorr:\n", "\n", " # train and predict with Xi set to missing\n", " valid_loco = h2o.deep_copy(valid, 'valid_loco')\n", " valid_loco[i] = np.nan\n", " preds_loco = model.predict(valid_loco)\n", "\n", " # create a new, named column for the LOCO prediction\n", " preds_loco.columns = [i]\n", " pred_frames[k] = pred_frames[k].cbind(preds_loco)\n", "\n", " # subtract the LOCO prediction from \n", " pred_frames[k][i] = pred_frames[k][i] - pred_frames[k]['predict']\n", " \n", " print('LOCO Progress: model %d/%d ...' % (k + 1, n_models))\n", "\n", "print('Done.')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Collect LOCO values for each model for the median home" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Loco 1Loco 2Loco 3Loco 4Loco 5Loco 6Loco 7Loco 8Loco 9Loco 10Mean Local ImportanceStd. Dev. Local Importance
HalfBath0.0000000.0000000.0000000.00000017.40797826.615154-0.6541880.0000000.0000000.0000004.3368949.076043
BsmtFinSF10.000000680.464241-336.981845315.1374841214.512703956.42574776.6302811519.8252181531.2213801996.006836795.324205733.805730
MoSold0.000000595.3582501787.2710713230.6979853303.8980133550.5436003850.2483533415.7692275072.9668552902.9532322770.9706581462.174367
PoolArea0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
BsmtHalfBath0.000000-324.321083-905.862109-916.352115-1350.069398-610.558753-1009.995516-1744.493128-285.008494-496.417082-764.307768501.027368
BedroomAbvGr0.0000000.0000000.0000000.0000000.0000000.00000022.6602680.0000000.0000000.0000002.2660276.798080
BsmtFinSF20.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
GrLivArea-9814.912363-3293.085560-15809.346302-11922.584258-16613.081561-15301.129244-9991.529671-19807.260831-13970.186814-14553.987621-13107.7104224363.503123
KitchenAbvGr0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
LotFrontage0.0000000.0000000.000000200.8597720.000000-15.328415-173.339762-238.470665444.862839187.60421840.618799185.497698
MSSubClass0.0000000.000000-709.661157-213.455500-2214.50502816.975995-682.1363230.000000-331.997725384.716454-375.006328690.705773
BsmtUnfSF121.1644202647.4153643674.8750894124.2556834699.0587845641.6897686299.4262783633.9744635917.5910172262.5451353902.1996001794.475306
LotArea-9108.242034-3173.464452-8563.072269-10691.301457-7911.315177-8419.845015-5652.362702-14777.721228-5995.706427-9938.346915-8423.1377682995.008619
OpenPorchSF0.000000355.176453-1089.777695130.642463-548.384396-785.343713266.417814748.838837-388.206953-702.716066-201.335326558.499491
1stFlrSF-12816.035657-4749.720377-4650.553413-3123.249856-3961.233045-1524.936389-1415.375563-3122.871154-1500.447717-5490.038249-4235.4461423177.533381
3SsnPorch0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
Fireplaces-2643.482971-5933.319113-3037.572496-2628.585165-3402.100046-2305.288406-3088.624344-3892.029889-8849.192387-2399.433849-3817.9628671954.528206
EnclosedPorch0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
LowQualFinSF0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
2ndFlrSF0.0000000.0000000.0000000.000000-608.084846-592.995049-625.048765-712.6487580.0000000.000000-253.877742312.318017
YearBuilt0.000000100.6372531514.6106301348.3966482445.5876272074.8932151530.2633801744.224174761.7386954507.8438721602.8195501224.869322
YrSold0.000000456.844194257.992503831.0957331597.267298-151.615834597.1215471987.846712-823.560783-14.832626473.815874792.577017
BsmtFullBath0.000000247.7174560.000000-297.483564914.217367348.857594288.1744860.000000-248.795288-462.69191078.999614374.696339
WoodDeckSF-1605.896414-4872.201764-6925.043301-6380.796316-5369.324640-7617.595119-4263.532391-6881.978770-4553.882088-4736.891539-5320.7142341657.129032
OverallCond0.000000-644.256906-1229.180650-395.593688-469.863885-258.986919274.0872250.000000721.658834216.195011-178.594098519.036582
GarageArea731.6040330.000000395.115519399.249884-358.596918219.872650794.4795360.0000001466.5910260.000000364.831573497.871785
ScreenPorch0.0000001342.053231329.1643282211.6830962088.1599951362.8307404055.699565907.492787819.242192397.3028641351.3628801133.937876
MasVnrArea0.0000000.0000000.0000000.000000-654.8798520.000000-9.1699210.0000000.000000-361.344009-102.539378213.161432
MiscVal0.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
OverallQual5605.0385367845.8865894061.5705923172.1574053868.0770971652.4372493540.2373963780.340014775.1596044246.1692513854.7073731846.436805
YearRemodAdd-952.580441-2956.527016-7692.476658-2060.712163-4456.392792-2488.663940-1805.367599-3281.516177-4713.228129-2263.878578-3267.1343491837.056771
FullBath0.000000-1323.125640546.54109648.387112-183.3125721162.542391258.270741-916.3319851426.9760993106.391031412.6338271196.931310
\n", "
" ], "text/plain": [ " Loco 1 Loco 2 Loco 3 Loco 4 \\\n", "HalfBath 0.000000 0.000000 0.000000 0.000000 \n", "BsmtFinSF1 0.000000 680.464241 -336.981845 315.137484 \n", "MoSold 0.000000 595.358250 1787.271071 3230.697985 \n", "PoolArea 0.000000 0.000000 0.000000 0.000000 \n", "BsmtHalfBath 0.000000 -324.321083 -905.862109 -916.352115 \n", "BedroomAbvGr 0.000000 0.000000 0.000000 0.000000 \n", "BsmtFinSF2 0.000000 0.000000 0.000000 0.000000 \n", "GrLivArea -9814.912363 -3293.085560 -15809.346302 -11922.584258 \n", "KitchenAbvGr 0.000000 0.000000 0.000000 0.000000 \n", "LotFrontage 0.000000 0.000000 0.000000 200.859772 \n", "MSSubClass 0.000000 0.000000 -709.661157 -213.455500 \n", "BsmtUnfSF 121.164420 2647.415364 3674.875089 4124.255683 \n", "LotArea -9108.242034 -3173.464452 -8563.072269 -10691.301457 \n", "OpenPorchSF 0.000000 355.176453 -1089.777695 130.642463 \n", "1stFlrSF -12816.035657 -4749.720377 -4650.553413 -3123.249856 \n", "3SsnPorch 0.000000 0.000000 0.000000 0.000000 \n", "Fireplaces -2643.482971 -5933.319113 -3037.572496 -2628.585165 \n", "EnclosedPorch 0.000000 0.000000 0.000000 0.000000 \n", "LowQualFinSF 0.000000 0.000000 0.000000 0.000000 \n", "2ndFlrSF 0.000000 0.000000 0.000000 0.000000 \n", "YearBuilt 0.000000 100.637253 1514.610630 1348.396648 \n", "YrSold 0.000000 456.844194 257.992503 831.095733 \n", "BsmtFullBath 0.000000 247.717456 0.000000 -297.483564 \n", "WoodDeckSF -1605.896414 -4872.201764 -6925.043301 -6380.796316 \n", "OverallCond 0.000000 -644.256906 -1229.180650 -395.593688 \n", "GarageArea 731.604033 0.000000 395.115519 399.249884 \n", "ScreenPorch 0.000000 1342.053231 329.164328 2211.683096 \n", "MasVnrArea 0.000000 0.000000 0.000000 0.000000 \n", "MiscVal 0.000000 0.000000 0.000000 0.000000 \n", "OverallQual 5605.038536 7845.886589 4061.570592 3172.157405 \n", "YearRemodAdd -952.580441 -2956.527016 -7692.476658 -2060.712163 \n", "FullBath 0.000000 -1323.125640 546.541096 48.387112 \n", "\n", " Loco 5 Loco 6 Loco 7 Loco 8 \\\n", "HalfBath 17.407978 26.615154 -0.654188 0.000000 \n", "BsmtFinSF1 1214.512703 956.425747 76.630281 1519.825218 \n", "MoSold 3303.898013 3550.543600 3850.248353 3415.769227 \n", "PoolArea 0.000000 0.000000 0.000000 0.000000 \n", "BsmtHalfBath -1350.069398 -610.558753 -1009.995516 -1744.493128 \n", "BedroomAbvGr 0.000000 0.000000 22.660268 0.000000 \n", "BsmtFinSF2 0.000000 0.000000 0.000000 0.000000 \n", "GrLivArea -16613.081561 -15301.129244 -9991.529671 -19807.260831 \n", "KitchenAbvGr 0.000000 0.000000 0.000000 0.000000 \n", "LotFrontage 0.000000 -15.328415 -173.339762 -238.470665 \n", "MSSubClass -2214.505028 16.975995 -682.136323 0.000000 \n", "BsmtUnfSF 4699.058784 5641.689768 6299.426278 3633.974463 \n", "LotArea -7911.315177 -8419.845015 -5652.362702 -14777.721228 \n", "OpenPorchSF -548.384396 -785.343713 266.417814 748.838837 \n", "1stFlrSF -3961.233045 -1524.936389 -1415.375563 -3122.871154 \n", "3SsnPorch 0.000000 0.000000 0.000000 0.000000 \n", "Fireplaces -3402.100046 -2305.288406 -3088.624344 -3892.029889 \n", "EnclosedPorch 0.000000 0.000000 0.000000 0.000000 \n", "LowQualFinSF 0.000000 0.000000 0.000000 0.000000 \n", "2ndFlrSF -608.084846 -592.995049 -625.048765 -712.648758 \n", "YearBuilt 2445.587627 2074.893215 1530.263380 1744.224174 \n", "YrSold 1597.267298 -151.615834 597.121547 1987.846712 \n", "BsmtFullBath 914.217367 348.857594 288.174486 0.000000 \n", "WoodDeckSF -5369.324640 -7617.595119 -4263.532391 -6881.978770 \n", "OverallCond -469.863885 -258.986919 274.087225 0.000000 \n", "GarageArea -358.596918 219.872650 794.479536 0.000000 \n", "ScreenPorch 2088.159995 1362.830740 4055.699565 907.492787 \n", "MasVnrArea -654.879852 0.000000 -9.169921 0.000000 \n", "MiscVal 0.000000 0.000000 0.000000 0.000000 \n", "OverallQual 3868.077097 1652.437249 3540.237396 3780.340014 \n", "YearRemodAdd -4456.392792 -2488.663940 -1805.367599 -3281.516177 \n", "FullBath -183.312572 1162.542391 258.270741 -916.331985 \n", "\n", " Loco 9 Loco 10 Mean Local Importance \\\n", "HalfBath 0.000000 0.000000 4.336894 \n", "BsmtFinSF1 1531.221380 1996.006836 795.324205 \n", "MoSold 5072.966855 2902.953232 2770.970658 \n", "PoolArea 0.000000 0.000000 0.000000 \n", "BsmtHalfBath -285.008494 -496.417082 -764.307768 \n", "BedroomAbvGr 0.000000 0.000000 2.266027 \n", "BsmtFinSF2 0.000000 0.000000 0.000000 \n", "GrLivArea -13970.186814 -14553.987621 -13107.710422 \n", "KitchenAbvGr 0.000000 0.000000 0.000000 \n", "LotFrontage 444.862839 187.604218 40.618799 \n", "MSSubClass -331.997725 384.716454 -375.006328 \n", "BsmtUnfSF 5917.591017 2262.545135 3902.199600 \n", "LotArea -5995.706427 -9938.346915 -8423.137768 \n", "OpenPorchSF -388.206953 -702.716066 -201.335326 \n", "1stFlrSF -1500.447717 -5490.038249 -4235.446142 \n", "3SsnPorch 0.000000 0.000000 0.000000 \n", "Fireplaces -8849.192387 -2399.433849 -3817.962867 \n", "EnclosedPorch 0.000000 0.000000 0.000000 \n", "LowQualFinSF 0.000000 0.000000 0.000000 \n", "2ndFlrSF 0.000000 0.000000 -253.877742 \n", "YearBuilt 761.738695 4507.843872 1602.819550 \n", "YrSold -823.560783 -14.832626 473.815874 \n", "BsmtFullBath -248.795288 -462.691910 78.999614 \n", "WoodDeckSF -4553.882088 -4736.891539 -5320.714234 \n", "OverallCond 721.658834 216.195011 -178.594098 \n", "GarageArea 1466.591026 0.000000 364.831573 \n", "ScreenPorch 819.242192 397.302864 1351.362880 \n", "MasVnrArea 0.000000 -361.344009 -102.539378 \n", "MiscVal 0.000000 0.000000 0.000000 \n", "OverallQual 775.159604 4246.169251 3854.707373 \n", "YearRemodAdd -4713.228129 -2263.878578 -3267.134349 \n", "FullBath 1426.976099 3106.391031 412.633827 \n", "\n", " Std. Dev. Local Importance \n", "HalfBath 9.076043 \n", "BsmtFinSF1 733.805730 \n", "MoSold 1462.174367 \n", "PoolArea 0.000000 \n", "BsmtHalfBath 501.027368 \n", "BedroomAbvGr 6.798080 \n", "BsmtFinSF2 0.000000 \n", "GrLivArea 4363.503123 \n", "KitchenAbvGr 0.000000 \n", "LotFrontage 185.497698 \n", "MSSubClass 690.705773 \n", "BsmtUnfSF 1794.475306 \n", "LotArea 2995.008619 \n", "OpenPorchSF 558.499491 \n", "1stFlrSF 3177.533381 \n", "3SsnPorch 0.000000 \n", "Fireplaces 1954.528206 \n", "EnclosedPorch 0.000000 \n", "LowQualFinSF 0.000000 \n", "2ndFlrSF 312.318017 \n", "YearBuilt 1224.869322 \n", "YrSold 792.577017 \n", "BsmtFullBath 374.696339 \n", "WoodDeckSF 1657.129032 \n", "OverallCond 519.036582 \n", "GarageArea 497.871785 \n", "ScreenPorch 1133.937876 \n", "MasVnrArea 213.161432 \n", "MiscVal 0.000000 \n", "OverallQual 1846.436805 \n", "YearRemodAdd 1837.056771 \n", "FullBath 1196.931310 " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "median_loco_frames = []\n", "col_names = ['Loco ' + str(i) for i in range(1, n_models + 1)]\n", "\n", "for i in range(0, n_models):\n", " \n", " # collect LOCO as a column vector in a Pandas df\n", " preds = pred_frames[i]\n", " median_loco_frames.append(preds[preds['Id'] == int(quantile_dict[50]), :]\\\n", " .as_data_frame()\\\n", " .drop(['Id', 'predict'], axis=1)\n", " .T)\n", " \n", "loco_ensemble = pd.concat(median_loco_frames, axis=1) \n", "loco_ensemble.columns = col_names\n", "loco_ensemble['Mean Local Importance'] = loco_ensemble.mean(axis=1)\n", "loco_ensemble['Std. Dev. Local Importance'] = loco_ensemble.std(axis=1)\n", "loco_ensemble" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Negative mean reason codes" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n/JZUuKxZiFuNdIdOYxDMmaQOrWs0WebxpALoeVLLweZ523y/FLc26ZLr9LzuOfl9/EWWjCfU0jbr\n5rV1917pIA2XMScv8x7SZalm23Fcb+spPOdt+X34fH7upT19flhyXOosTW/puNNk/d0e51rcLi0d\nH1rZvzQfUmEkqa9OV972F5L69S31fiV9brqa5Nft8a9J7GF5uy0kFbj/RWmcr+72SzfLa/UY2GMc\n6bN9Gek4spB088LPgH8rxW1J+iIxP8d8lSXDEJSHVLil9Ny1SF8QG5/Vv5G+PI0oxDQ9x/RHjt1s\nh4+RCtyH8vuoMS7ZyeRhTQqxnyQV5f/M+/QTlIYXKryv+3yM6SHHW2lSF/Qlbnn3T18+jz39KS9o\nlSdJpG9uV0dEszvHzMzMzPpNW/tUVUVSs34dB5IuE61MHeTMzMxskFglW6qUfvl9AmnAtHmk/jaf\nIjVTvitq/kFFMzMzG3zaPaRCVWaSrid/gdQ69TSp0/NXXVCZmZlZHVbJliozMzOzlc0q2afKzMzM\nbGXjosrMzMysAi6qzMzMzCrgosrMzMysAi6qzMzMzCrgosrMzMysAi6qzMzMzCrgosrMzMysAi6q\nzMzMzCrgosrMzMysAi6qzMzMzCrgosrMzMysAi6qzMzMzCrgosrMzMysAi6qzMzMzCrgosrMzMys\nAi6qzMzMzCow6IoqSZ+T9KikBZJ+J+nddedkZmZmq75BVVRJ2h84BzgJ2Ba4F5gsqaPWxMzMzGyV\np4ioO4e2kfQ74PcRcWR+LOAx4PyIOLPW5MzMzGyVNmhaqiStAYwGbmlMi1RR3gxsX1deZmZmNjCs\nXncCbdQBDAHmlKbPAUY2e4KkDYDdgZnAwv5MzszMbIAZCowAJkfEvJpzaYvBVFQtj92BH9WdhJmZ\n2SrsP4GJdSfRDoOpqJoLLAKGl6YPB2Z385yZAD/84Q/ZfPPNK01m2rRpjB07FjgVeHOly07OAb7U\nD8t9FDihX7ZJf/M2bz9v8/bzNm8/b/PmlmyXdC4dDAZNURURL0m6G9gF+Dm80lF9F+D8bp62EGDz\nzTdn1KhR/ZTZh4H+WPaPSV8OqjYVOKGft0l/8zZvP2/z9vM2bz9v824Mmu4zg6aoys4FLs/F1Z3A\nOGBt4PI6kzIzM7NV36AqqiLiqjwm1Smky373ALtHxFP1ZmZmZmarukFVVAFExHeA79Sdh5mZmQ0s\ng2acqsFnTN0JDELe5u3nbd5+3ubt522+qnBRNWD5Q9h+3ubt523eft7m7edtvqpwUWVmZmZWARdV\nZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZW\nARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVm\nZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVw\nUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWgdqKKkmb\nSLpE0gxJ/5T0sKTxktYoxW0s6XpJ8yXNlnSmpNVKMVtLmiJpgaRZko5usr6dJN0taaGkhyQd2N+v\n0czMzAaP1Wtc99sBAZ8GHgG2Ai4B1gaOAcjF0w3AE8B2wBuAK4EXgeNzzHrAZOBG4DPAO4DLJD0T\nEZfkmBHAdcB3gAOADwKXSHoiIm7q/5dqZmZmA11tRVVETCYVQw0zJZ0NfJZcVAG7k4qvnSNiLnCf\npBOAb0oaHxEvA2OBNYCD8+NpkrYFjiIVaQCHATMiorHc6ZJ2AMYBLqrMzMxsha1sfapeDTxdeLwd\ncF8uqBomA8OALQsxU3JBVYwZKWlYIebm0romA9tXlbiZmZkNbitNUSXprcDngYsKkzcC5pRC5xTm\nrWjM+pLWWt6czczMzBoqv/wn6XTg2B5CAtg8Ih4qPOeNwC+BH0fEpVWlUtFyGDduHMOGDVtq2pgx\nYxgzZkxVqzAzM1tlTZo0iUmTJi01raurq6Zs6tMffarOBi7rJWZG4z+S3gD8Gvi/iPhMKW428O7S\ntOGFeY1/hzeJiRZino2IF3rJlQkTJjBq1KjewszMzAalZg0NU6dOZfTo0TVlVI/Ki6qImAfMayU2\nt1D9GvgD8KkmIXcAx0nqKPSr2g3oAh4oxJwmaUhELCrETI+IrkLMHqVl75anm5mZma2wOsepegNw\nGzCLdLffhpKGSyq2KN1IKp6uzGNR7Q6cClwQES/lmImkIRYulbSFpP2BI4BzCsu5CNhU0hmSRko6\nHNgXOLcfX6KZmZkNInWOU7UrsGn+eyxPE+my3RCAiFgsaS/gQuB2YD5wOXBSYyER8ayk3YBvA3cB\nc4HxEfH9QsxMSXsCE0gF1+OkIRjKdwSamZmZLZc6x6n6AfCDFuIeA/bqJeZ+YMdeYqYAg+virpmZ\nmbXNSjOkgpmZmdmqzEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlV\nwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZ\nmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVc\nVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZ\nWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVYKUoqiStKekeSYslbV2at7Gk6yXNlzRb0pmSVivFbC1p\niqQFkmZJOrrJOnaSdLekhZIeknRgf78uMzMzGzxWrzuB7EzgceAdxYm5eLoBeALYDngDcCXwInB8\njlkPmAzcCHwmL+MySc9ExCU5ZgRwHfAd4ADgg8Alkp6IiJv6+bWZmdmgMK3uBPpoVct35Vd7USVp\nD2BXYB/gw6XZuwNvB3aOiLnAfZJOAL4paXxEvAyMBdYADs6Pp0naFjgKuCQv5zBgRkQckx9Pl7QD\nMA5wUWVmZsuto6ODoUPXZuHCsXWn0mdDh65NR0dH3WkMGLUWVZKGA98DPgosaBKyHXBfLqgaJgMX\nAlsC9+aYKbmgKsYcI2lYRHTlmJtLy54MTKjkhZiZ2aDV2dnJ9OnTmDt3bu/BK5mOjg46OzvrTmPA\nqLul6jLgOxHxR0mbNJm/ETCnNG1OYd69+d8ZPcR09bCc9SWtFREvLGf+ZmZmdHZ2ujix6juqSzo9\ndzjv7m+RpLdJOgJYFzij8dSqU6l4eWZmZmbd6o+WqrNJLVA9eRTYGdgeeEFaqv65S9KPIuIgYDbw\n7tJzh+d/Zxf+Hd4kJlqIebaVVqpx48YxbNiwpaaNGTOGMWPG9PZUMzOzAW/SpElMmjRpqWldXV01\nZVOfyouqiJgHzOstTtIXgK8VJr2B1M/pY8CdedodwHGSOgr9qnYjXdJ7oBBzmqQhEbGoEDM996dq\nxOxRSmG3PL1XEyZMYNSoUa2EmpmZDTrNGhqmTp3K6NGja8qoHrWNUxURj0fEA40/4GHSJbsZEfFE\nDruRVDxdmcei2h04FbggIl7KMRNJQyxcKmkLSfsDRwDnFFZ3EbCppDMkjZR0OLAvcG6/v1AzMzMb\nFFaKwT/b6Ey0AAAgAElEQVQLYqkHEYuBvYBFwO3AFcDlwEmFmGdJrU4jgLuAs4DxEfH9QsxMYE/S\n+FT3kIZSODgiyncEmpmZmS2Xuu/+e0VEzAKGNJn+GKmw6um59wM79hIzBRhc7ZBmNoitagM7rmr5\nmi1rpSmqzMxsxXkgSrP6uKgyMxtAPBClWX1cVJmZDTAeiNKsHitbR3UzMzOzVZKLKjMzM7MKuKgy\nMzMzq4CLKjMzM7MKuKgyMzMzq4CLKjMzM7MKuKgyMzMzq4CLKjMzM7MKuKgyMzMzq4CLKjMzM7MK\nuKgyMzMzq4CLKjMzM7MKuKgyMzMzq4CLKjMzM7MKuKgyMzMzq4CLKjMzM7MKuKgyMzMzq4CLKjMz\nM7MKuKgyMzMzq4CLKjMzM7MKrF53AmY2GEyrO4E+WtXyNbOVgYsqM+s3HR0dDB26NgsXjq07lT4b\nOnRtOjo66k7DzFYhLqrMrN90dnYyffo05s6dW3cqfdbR0UFnZ2fdaZjZKsRFlZn1q87OThcnZjYo\nuKO6mZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVqL6ok\n7Snpd5L+KelpSdeU5m8s6XpJ8yXNlnSmpNVKMVtLmiJpgaRZko5usp6dJN0taaGkhyQd2N+vzczM\nzAaPWgf/lLQP8D3gK8CvgTWArQrzVwNuAJ4AtgPeAFwJvAgcn2PWAyYDNwKfAd4BXCbpmYi4JMeM\nAK4DvgMcAHwQuETSExFxU3+/TjMzMxv4aiuqJA0BvgV8KSIuL8x6sPD/3YG3AztHxFzgPkknAN+U\nND4iXgbGkoqxg/PjaZK2BY4CLsnLOQyYERHH5MfTJe0AjANcVJmZmdkKq/Py3yhSyxOSpkp6QtIN\nkrYsxGwH3JcLqobJwDBgy0LMlFxQFWNGShpWiLm5tP7JwPbVvBQzMzMb7OosqjYFBJwEnALsCTwD\n3Cbp1TlmI2BO6XlzCvNWNGZ9SWst7wswMzMza6j88p+k04FjewgJYHOWFHSnRcS1+bkHAY8D+wEX\nr2gqK/j8V4wbN45hw4YtNW3MmDGMGTOmqlWYmZmtsiZNmsSkSZOWmtbV1VVTNvXpjz5VZwOX9RIz\ng3zpD5jWmBgRL0qaATR+0n428O7Sc4cX5jX+Hd4kJlqIeTYiXuglVyZMmMCoUaN6CzMzMxuUmjU0\nTJ06ldGjR9eUUT0qL6oiYh4wr7c4SXcDLwAjgdvztDWAEcCsHHYHcJykjkK/qt2ALuCBQsxpkoZE\nxKJCzPSI6CrE7FFKYbc83czMzGyF1danKiKeAy4CTpa0q6S3AReSWph+ksNuJBVPV+axqHYHTgUu\niIiXcsxE0hALl0raQtL+wBHAOYXVXQRsKukMSSMlHQ7sC5zbzy/TzMzMBolax6kCvgy8BFwBvAr4\nPfCBRgtTRCyWtBep2LodmA9cTurcTo55VtJuwLeBu4C5wPiI+H4hZqakPYEJpILrcdIQDOU7As3M\nzMyWS61FVb5cd0z+6y7mMWCvXpZzP7BjLzFTgMF1cdfMzMzapvafqTEzMzMbCFxUmZmZmVXARZWZ\nmZlZBVxUmZmZmVXARZWZmZlZBVxUmZmZmVXARZWZmZlZBVxUmZmZmVXARZWZmZlZBVxUmZmZmVXA\nRZWZmZlZBVxUmZmZmVXARZWZmZlZBVxUmZmZmVXARZWZmZlZBVxUmZmZmVXARZWZmZlZBVxUmZmZ\nmVXARZWZmZlZBVxUmZmZmVXARZWZmZlZBVxUmZmZmVXARZWZmZlZBVxUmZmZmVXARZWZmZlZBVxU\nmZmZmVXARZWZmZlZBVxUmZmZmVXARZWZmZlZBVxUmZmZmVXARZWZmZlZBVxUmZmZmVXARZWZmZlZ\nBWotqiRtJulaSU9J6pL0G0k7lWI2lnS9pPmSZks6U9JqpZitJU2RtEDSLElHN1nXTpLulrRQ0kOS\nDuznl2dmZmaDSN0tVdcDQ4CdgFHAvcB1kjYEyMXTDcDqwHbAgcAngVMaC5C0HjAZeDQv42hgvKRD\nCjEjgOuAW4BtgPOASyTt2o+vzczMzAaR2ooqSRsAbwW+GRF/johHgK8AawNb5bDdgbcD/xkR90XE\nZOAE4HOSVs8xY4E1gIMjYlpEXAWcDxxVWN1hwIyIOCYipkfEt4GfAuP6+WWamZnZIFFbURUR84AH\ngU9IWjsXSYcBc4C7c9h2wH0RMbfw1MnAMGDLQsyUiHi5FDNS0rBCzM2lFCYD21f1eszMzGxwq/vy\n366kS3bPAQuAI4EPRURXnr8RqcgqmlOYt6Ix60taa7mzNzMzM8tW7z2kbySdDhzbQ0gAm0fEQ8B3\nSMXN+4CFwCGkPlXviohyEdTnVFbw+a8YN24cw4YNW2ramDFjGDNmTFWrMDMzW2VNmjSJSZMmLTWt\nq6urm+iBq/KiCjgbuKyXmBmSdgE+DLw6Iubn6Z+XtBupQ/qZwGzg3aXnDs//zi78O7xJTLQQ82xE\nvNBLrkyYMIFRo0b1FmZmZjYoNWtomDp1KqNHj64po3pUXlTlvlLzeouT9CpS4bO4NGsxSy5L3gEc\nJ6mj0K9qN6ALeKAQc5qkIRGxqBAzvXAZ8Q5gj9J6dsvTzczMzFZYnX2q7gD+AVyRx5naTNJZwAjS\nUAsAN5KKpytzzO7AqcAFEfFSjpkIvAhcKmkLSfsDRwDnFNZ1EbCppDMkjZR0OLAvcG4/v0YzMzMb\nJOq+++9DwLqk8aP+ALwX+GhE3JdjFgN7AYuA24ErgMuBkwrLeZbU6jQCuAs4CxgfEd8vxMwE9gQ+\nCNxDGkrh4Igo3xFoZmZmtlz6o09VyyJiKstelivHPEYqrHqKuR/YsZeYKcDgurhrZmZmbVP3kApm\nZmZmA4KLKjMzM7MKuKgyMzMzq0CtfarM6jGt7gT6aFXL18xscHJRZYNGR0cHQ4euzcKFY+tOpc+G\nDl2bjo6OutMwM7MeuKiyQaOzs5Pp06cxd+7c3oNXMh0dHXR2dtadhpmZ9cBFlQ0qnZ2dLk7MzKxf\nuKO6mZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZ\nmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVc\nVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVwEWVmZmZ\nWQVcVJmZmZlVwEWVmZmZWQVcVJmZmZlVoN+KKknHSfqtpPmSnu4mZmNJ1+eY2ZLOlLRaKWZrSVMk\nLZA0S9LRTZazk6S7JS2U9JCkA5vE7CdpWl7OvZL2qO7VmpmZ2WDXny1VawBXARc2m5mLpxuA1YHt\ngAOBTwKnFGLWAyYDjwKjgKOB8ZIOKcSMAK4DbgG2Ac4DLpG0ayHmvcBE4GLgncDPgGslbVHFCzUz\nMzNbvb8WHBEnAzRrNcp2B94O7BwRc4H7JJ0AfFPS+Ih4GRhLKs4Ozo+nSdoWOAq4JC/nMGBGRByT\nH0+XtAMwDrgpTzsC+GVEnJsfn5iLrs8Dh1f0ks3MzGwQq7NP1XbAfbmgapgMDAO2LMRMyQVVMWak\npGGFmJtLy54MbF94vH0LMWZmZmbLrc6iaiNgTmnanMK8FY1ZX9JavcRshJmZmVkF+nT5T9LpwLE9\nhASweUQ8tEJZtZBKPy9/KePGjWPYsGFLTRszZgxjxoxpZxpmZmYrpUmTJjFp0qSlpnV1ddWUTX36\n2qfqbOCyXmJmtLis2cC7S9OGF+Y1/h3eJCZaiHk2Il7oJWY2LZgwYQKjRo1qJdTMzGzQadbQMHXq\nVEaPHl1TRvXoU1EVEfOAeRWt+w7gOEkdhX5VuwFdwAOFmNMkDYmIRYWY6RHRVYgpD4+wW55eXNcu\nwPmFabuWYszMzMyWW3+OU7WxpG2ATYAhkrbJf+vkkBtJxdOVeSyq3YFTgQsi4qUcMxF4EbhU0haS\n9ifdyXdOYVUXAZtKOkPSSEmHA/sC5xZizgM+JOmoHDMeGA1c0C8v3szMzAad/uyofgowFTgJWDf/\nfyqpmCEiFgN7AYuA24ErgMtzPDnmWVKr0wjgLuAsYHxEfL8QMxPYE/ggcA9pKIWDI+LmQswdwAHA\noTlmb+BfI6LRImZmZma2QvpznKqDgIN6iXmMVFj1FHM/sGMvMVPIxVoPMVcDV/cUY2ZmZra8/Nt/\nZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZW\nARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVm\nZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVw\nUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZm\nZhVwUWVmZmZWARdVZmZmZhXot6JK0nGSfitpvqSnm8zfWtJESX+V9E9Jf5Z0RDdxUyQtkDRL0tFN\nYnaSdLekhZIeknRgk5j9JE3Ly7lX0h7VvVozMzMb7PqzpWoN4Crgwm7mjwbmAP8JbAF8HThd0uGN\nAEnrAZOBR4FRwNHAeEmHFGJGANcBtwDbAOcBl0jatRDzXmAicDHwTuBnwLWStqjgdZqZmZmxen8t\nOCJOBmjWapTnX1aaNDMXP3sD38nTxpKKs4Mj4mVgmqRtgaOAS3LMYcCMiDgmP54uaQdgHHBTnnYE\n8MuIODc/PjEXXZ8HXinizMzMzJbXytanahhQvFS4HTAlF1QNk4GRkoYVYm4uLWcysH3h8fYtxJiZ\nmZktt5WmqMqtVB8DvluYvBHpEmHRnMK8nmLWl7RWLzEbYWZmZlaBPhVVkk6XtLiHv0WS3tbXJCRt\nBVwLjI+IW1p5Sl/XYWZmZtaf+tqn6myg3BeqbEZfFpg7i98MXBQRp5dmzwaGl6YNByLP6ynm2Yh4\noZeY2bRg3LhxDBs2bKlpY8aMYcyYMa083czMbECbNGkSkyZNWmpaV1dXTdnUp09FVUTMA+ZVtXJJ\nW5Lu2rssIk5sEnIHcJqkIRGxKE/bDZgeEV2FmPLwCLvl6cXl7AKcX5i2aymmWxMmTGDUqFGthJqZ\nmQ06zRoapk6dyujRo2vKqB79OU7VxpK2ATYBhkjaJv+tk+dvBdxK6jD+LUnD819HYTETgReBSyVt\nIWl/0p185xRiLgI2lXSGpJF5SIZ9gXMLMecBH5J0VI4ZTxrS4YJ+efFmZmY26PRnR/VTgKnAScC6\n+f9TScUMwD7ABqRhE54o/N3ZWEBEPEtqdRoB3AWcRep39f1CzExgT+CDwD2koRQOjoibCzF3AAcA\nh+aYvYF/jYgHqn3JZmZmNlj15zhVBwEH9TD/ZODkFpZzP7BjLzFTWFKsdRdzNXB1b+szMzMzWx4r\nzZAKZmZmZqsyF1VmZmZmFXBRZWZmZlYBF1VmZmZmFXBRZWZmZlYBF1VmZmZmFXBRZWZmZlYBF1Vm\nZmZmFXBRZWZmZlYBF1VmZmZmFXBRZWZmZlYBF1VmZmZmFXBRZWZmZlYBF1VmZmZmFXBRZWZmZlYB\nF1VmZmZmFXBRZWZmZlYBF1VmZmZmFVi97gRsWt0J9NGqlq+ZmVl7uKiqSUdHB0OHrs3ChWPrTqXP\nhg5dm46OjrrTMDMzW6m4qKpJZ2cn06dPY+7cuXWn0mcdHR10dnbWnYaZmdlKxUVVjTo7O12cmJmZ\nDRDuqG5mZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdV\nZmZmZhVwUWVmZmZWARdVZmZmZhVwUWVmZmZWARdVA9SkSZPqTmHQ8TZvP2/z9vM2bz9v81VHvxVV\n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\nzD+HGfqC1wAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "median_mean_loco = loco_ensemble['Mean Local Importance'].sort_values()[:5]\n", "_ = median_mean_loco.plot(kind='bar', \n", " title='Negative Mean Reason Codes for the Median of Predicted Sale Price\\n', \n", " legend=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Positive mean reason codes" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nRAyd/wd0mq8qmyMNuAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "median_mean_loco = loco_ensemble['Mean Local Importance'].sort_values(ascending=False)[:5]\n", "_ = median_mean_loco.plot(kind='bar', \n", " title='Positive Mean Reason Codes for the Median of Predicted Sale Price\\n', \n", " color='r',\n", " legend=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Shutdown H2O" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Are you sure you want to shutdown the H2O instance running at http://127.0.0.1:54321 (Y/N)? y\n", "H2O session _sid_8094 closed.\n" ] } ], "source": [ "h2o.cluster().shutdown(prompt=True)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 10_model_interpretability/src/mono_xgboost.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Monotonic Gradient Boosting using XGBoost \n", "***\n", "http://xgboost.readthedocs.io/en/latest//tutorials/monotonic.html" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Monotonicity is an important facet of intepretability. Monotonicity constraints ensure that the modeled relationship between inputs and the target move in only direction, i.e. as an input increases the target can only increase or as input increases the target can only decrease. Such monotonic relationships are usually easier to explain and understand than non-monotonic relationships. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminaries: imports, start h2o, load and clean data " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# imports\n", "import h2o\n", "from h2o.estimators.xgboost import H2OXGBoostEstimator\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "import numpy as np\n", "import pandas as pd\n", "import xgboost as xgb" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321..... not found.\n", "Attempting to start a local H2O server...\n", "; Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)\n", " Starting server from C:\\Anaconda3\\lib\\site-packages\\h2o\\backend\\bin\\h2o.jar\n", " Ice root: C:\\Users\\p\\AppData\\Local\\Temp\\tmp92vc54ht\n", " JVM stdout: C:\\Users\\p\\AppData\\Local\\Temp\\tmp92vc54ht\\h2o_p_started_from_python.out\n", " JVM stderr: C:\\Users\\p\\AppData\\Local\\Temp\\tmp92vc54ht\\h2o_p_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321... successful.\n" ] }, { "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", "
H2O cluster uptime:01 secs
H2O cluster version:3.10.5.4
H2O cluster version age:6 days
H2O cluster name:H2O_from_python_p_q2okdx
H2O cluster total nodes:1
H2O cluster free memory:3.538 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
H2O internal security:False
Python version:3.5.2 final
" ], "text/plain": [ "-------------------------- ------------------------------\n", "H2O cluster uptime: 01 secs\n", "H2O cluster version: 3.10.5.4\n", "H2O cluster version age: 6 days\n", "H2O cluster name: H2O_from_python_p_q2okdx\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 3.538 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "Python version: 3.5.2 final\n", "-------------------------- ------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# start h2o\n", "h2o.init()\n", "h2o.remove_all()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Load and prepare data for modeling" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "# load clean data\n", "path = '../../03_regression/data/train.csv'\n", "frame = h2o.import_file(path=path)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# assign target and inputs\n", "y = 'SalePrice'\n", "X = [name for name in frame.columns if name not in [y, 'Id']]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Monotonic constraints are easier to understand for numeric inputs without missing values" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# determine column types\n", "# impute\n", "reals, enums = [], []\n", "for key, val in frame.types.items():\n", " if key in X:\n", " if val == 'enum':\n", " enums.append(key)\n", " else: \n", " reals.append(key)\n", " \n", "_ = frame[reals].impute(method='median')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# split into training and validation\n", "train, valid = frame.split_frame([0.7], seed=12345)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# for convenience create a tuple for xgboost monotone_constraints parameter\n", "mono_constraints = tuple(int(i) for i in np.ones(shape=(int(1), len(reals))).tolist()[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train a monotonic predictive model\n", "* In this XGBoost GBM all the modeled relationships between the inputs and the target are forced to be monotonically increasing." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Log transform for better regression results and easy RMSLE in XGBoost" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice
12.2477
12.109
12.3172
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhQAAAFyCAYAAACtP0M/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3X+cXXV95/HXhyI/4opao0SrcXHZYrrWHxmLpC2oqw0Y\nt1dcVmJKFp1si2iCbtom2qpNgrvWxC0iSey6NoIsOkFhHShVE+WH2/iLbib+apO0KjjKj8gICjoG\nkHz2j3MG7tyZzOTMnfv9nns/7+fjMQ/Iuefe+3nnM2fmk3PPD3N3RERERNpxVO4CREREpPtpoBAR\nEZG2aaAQERGRtmmgEBERkbZpoBAREZG2aaAQERGRtmmgEBERkbZpoBAREZG2aaAQERGRtmmgEEnE\nzN5oZofMbH6H3+dUM3vQzJ7Vwfd4dpnl/E69xzTv/9Ly/c/o0OufaWYPmNlTOvH6Ir1IA4VIOl5+\nddp/Az7u7j8YW2CF883sq2b2YzO738z2m9nHzOwlCWp6VNMwMPb1kJl9t6zlpAov1bG/S3ffAXwH\n+LNOvYdIrzk6dwEiMnvM7IXAK4HTWh7aDLwFGASuAn4JnAK8Cvgu8LWEZY65FPh/wOOAhcCbgCVm\n9pvufvdUT3T3L5rZ8e7+UAfr+zDwfjNb5+4/7+D7iPQEDRQivaUf+L673zq2wMyeBrwZ+LC7v7ll\n/dVmNjdlgU12ufv/Kf//Y2b2L8AHgTcAGyd7gpkdCzzkhU4OEwDXUgxirwOu6PB7iXQ9feQhkpGZ\nvcXMvm1mB83sDjPbYmZPnGS9leXHAqPlxxa/a2a3mNlNLau+BmhddhJgwJcnq8HdR5re58lm9j/M\n7JvlMQQ/NbPPmNnzjzDPKWZ2Tfmxyi/M7B/M7PeP5Lll3VbW2/zRyFIz+29m9kPg58ATDncMhZm9\npKz3XjP7mZl9w8zeOpMa3f0e4JsUf6ciMg0NFCKZmNl6YAvwQ+CPgWsodvvvMLNfaVrvzRT/Uh4G\n1gB/T/HRxa+1vN4zgPnAUMtbfb/87+vM7PhpynoO0AD+FlgNbAKeB9xiZvOmyfPvgK9SfJTyl2Wm\nnwGDZnYkv5RPLv/745bl76b4aOb9wJ8DY3smxh1DYWa/B3wReC7Fxyl/TDGkvLqNGncDv30EtYuE\np488RDIoP2Z4B/A5d1/StHw/xfCwnOJjgMcBF1Mc4/AKdz9UrvdN4GPAD5pe9rnlf29rfi93v9vM\nrgT+M/BDM7sF+BLwd+6+v6W0b7r7r7fU+r+B/cB/Af77FLE+CNwO/Ja7/7Jc9tdmtoviI4zrWtZ/\nQnkWxdgxFB8EDlF81NDsWGBh80ccZjZuBTM7iuKYhzuAF7r7A7NU4/eAuWY2t3lPjohMpD0UInm8\nkuIX6aUtyz8CPMBj/6r+LeApwEfGhonSJ4D7Wp77FIp/tbcux93fCKyi+AV5NsW/9vea2RfKPRtj\n6z089v9mdpSZ/SowSjFQLDxcGDN7MvBy4FPAE83sKWNfwE7g35rZ01ue9lHgHuBOij0ixwPnu3vr\nHpYrjuB4iRcB/xq49HDDxAxrHPu7zHWciUjX0B4KkTyeXf73n5sXuvvDZva9psfnUwwJ321Z7xEz\nu/0wr22TLXT3v6b41/iTgd8BLgSWAAPAS6E4vRT4rxQHcZ4EjH304sBU/0I/uXzf91Cctjrh7YGn\nAXc1LdsA7AIeKV97b8vQNOb2Kd53zL8p3+MfZ7lGa3pMRKaggUKkd/yY4hfgk6dayd3vA24AbjCz\nm4EzzOxZ5XUr3knxEcvfAO8C7qX4GOKDTL1Hc+yx/wHsOMw632n587fdvfUA0sn84gjWORIzqXHs\n71Ifd4hMQwOFSB7fp/jlfwpN/wIvj5k4Cfh8y3onUxxwOLber1Ds4v9G02vuK/9b5eJQ/w84A3g6\nxfEY5wA3ufsFzSuZ2ZMoPp44nO+V/334CIeE2fZdir+n5zHxLJcxM6nxJGDE3VsPFBWRFjqGQiSP\nL1CcrfDWluV/CJxAsQcBil/4Pwb+qDzwcMxyWvZEuPudFEPBi5uXm9mJZragtYByeHklxR6IsX+Z\nP0LLRyZm9jpazihpVZ5ieQvwpsnOBklwrYshioNR/+tkp93CjGvsA74yi3WK9CztoRDJwN1HzOwv\ngb8ws88B11OcpfFm4Fbg4+V6D5enl14G3Gxmn6TYM9FPMQS0frZ/HcVBl82eCdxaXrPiRuBuimMF\nlgHPBz7g7veW694AvNvMPkpx3YrfBM6j5RiOw1hJcUrrt8zsIxR7BE4EFlEMJC86gteo4tHBx929\nPL32euDrZnY5xbEQzwV+w91fVbVGM3sqxd/P5lmuW6QnaaAQycTdN5jZjyjOvriE4niF/wm8090f\naVpva3ma5J9QnJ3xLYprRXwQONjysh8FVprZb7v72IWs9gNvozgA880Uv0APAt8G/tDdL296/nuB\nOcAfAOdSXIdhCfA+Jg4v4/7s7nvN7MXAOoqrXT4F+BGwh+IAzMM+dwpTrdf6/jvN7OXl+/8xxR7Y\n7wL/a4Y1nkPx9/SpI6xVJDRz18HLIt2mPBvjHuBad39Ty2NfAO509yx3Au0VZjZEcTzJn+auRaQb\nVDqGwswuLC9l+9Py68tmdlbT45fb+LsIHjKzz7S8xrFmttXMRspL+15jxb0GRGQSVty/otUbgF8F\nbp7ksT8HzrUO3r6815nZmRQHwr4vdy0i3aLSHgozezXFQVv/QvH55RspLgX8wnJX4uUUn82+kcc+\n33zQ3X/a9Bp/TXEZ3TcA9wNbgUfc/fR2w4j0IjN7KfABil3vP6Y4UHAFxTUXXtx0xUcRkWza/sjD\nzH4M/Km7X14OFE909/94mHVPoNhN+3p3/3S57BRgL3Ba8x0SRaRgZs+mOF7iVIq9EvcCfwf8mS4H\nLSJ1MeODMstT2M6lOICr+S6GLzOzAxSXrL0JeFfTEeR95XveOLayu+83s2GKo6w1UIi0cPfvM/HM\nDRGRWqk8UJjZ8yjOyz6O4p4Dr226wdBnKW7scxvFpXD/EviMmS3yYlfIPOAhd7+/5WUPlI8d7j2f\nApxJcQGg1qPaRURE5PCOozjdfEcnL9I2kz0U+4AXAE8E/hNwpZmd4e773P2TTev9o5l9i+K0rZcx\n+cFjR+pMyvPyRUREZEbOo7ixYEdUHijKA8DGLmG7x8xOpTjH/c2TrHubmY1QHC19M8UFdY4xsxNa\n9lKcWD52OLcDXHXVVSxYMOGCfz1l9erVfOADH8hdRsdFyQlxsipnb1HO3rF3716WL18OR3ajvRmb\njQtbHQVMdlobZvZMigvHjN29bzfwS+AVQPNBmfOZ+vK2BwEWLFjAwoWHvYNyT3jiE5/Y8xkhTk6I\nk1U5e4ty9qSOHjJQaaAws/dSHCcxDDyBYvfJS4HFZvZ4iqvPXUuxt+FkYCPF7Zl3ALj7/Wa2DbjE\nzO6jOAbjMuBLOsOjcPfdU+2o6R1RckKcrMrZW5RTqqq6h+JpwMco7kz4U+CbwGJ3v8nMjqO47v35\nwJOAOykGib9w94ebXmM1xbUsrqHYs/E5iuvrC3DHHXfkLiGJKDkhTlbl7C3KKVVVGijc/Q+neOwg\ncNbhHm9a70HgovJLWvT19eUuIYkoOSFOVuXsLcopVen25TWzbNmy3CUkESUnxMmqnL1FOaWqrrg5\nmJktBHbv3r070sEzIiIibRsaGhrbE9Pn7kOdeh/toRAREZG2aaComf7+/twlJBElJ8TJqpy9RTml\nKg0UNbN48eLcJSQRJSfEyaqcvUU5pSodQyEiItLDdAyFiIiIdA0NFCIiItI2DRQ1s2vXrtwlJBEl\nJ8TJqpy9RTmlKg0UNbNp06bcJSQRJSfEyaqcvUU5pSodlFkzo6OjzJkzJ3cZHRclJ8TJqpy9RTl7\nhw7KDKrXv7HHRMkJcbIqZ29RTqlKA4WIiIi0TQOFiIiItE0DRc2sWbMmdwlJRMkJcbIqZ29RTqlK\nA0XNzJ8/P3cJSUTJCXGyKmdvUU6pSmd5iIiI9DCd5SEiIiJdQwOFiIiItE0DRc3s27cvdwlJRMkJ\ncbIqZ29RTqnq6NwFyHhr167l+uuvz11Gx0XJCZ3LOjw8zMjIyKy/7kzMnTs3TE+Vs7dEyZmCBoqa\n2bJlS+4SkoiSEzqTdXh4mFNOWcDBg6Oz/tozcdxxc7jppi/kLiOJKN+7yilVaaComSinMEXJCZ3J\nOjIyUg4TVwELZv31q9nLwYPLOfbYYzPXkUaU713llKo0UIh0tQWATqUWkfx0UKaIiIi0TQNFzWzc\nuDF3CUlEyQlxsl5xxRW5S0giSj+VU6rSQFEzo6P1OMiu06LkhDhZDx48mLuEJKL0UzmlKl16W6QL\nPXYp3d3kP4ZiCOhD26dIPenS2yIiItI1NFCIiIhI2zRQ1ExdrnzYaVFyQpys9913X+4SkojST+WU\nqjRQ1MyKFStyl5BElJwQJ+vFF1+cu4QkovRTOaUqDRQ1s379+twlJBElJ8TJesEFF+QuIYko/VRO\nqarSQGFmF5rZN8zsp+XXl83srJZ1LjazO81s1Mw+b2Yntzx+rJltNbMRM3vAzK4xs6fNRpheEOUo\n+Sg5IU7WBQtyXwI8jSj9VE6pquoeih8Ab6c4T60PuAm4zswWAJjZ24FVwAXAqcDPgR1mdkzTa1wK\nvBo4BzgDeAZwbRsZREREJLNK9/Jw979rWfQuM3szcBqwF3gb8B53vwHAzM4HDgBnA580sxOAFcDr\n3f2L5Tr9wF4zO9Xdb20rjYiIiGQx42MozOwoM3s9MAf4spmdBMwDbhxbx93vB74GLCoXvZhiiGle\nZz8w3LROaNu2bctdQhJRckKcrIODg7lLSCJKP5VTqqo8UJjZ88zsAeBB4EPAa8uhYB7gFHskmh0o\nHwM4EXioHDQOt05oQ0Mdu4hZrUTJCXGy7tu3L3cJSUTpp3JKVTO5ffk+4AXAE4H/BFxpZmfMalWB\nbd26NXcJSUTJCXGyvuMd78hdQhJR+qmcUlXlPRTu/kt3/56773H3dwLfoDh24m7AKPZCNDuxfIzy\nv8eUx1Icbp3DWrJkCY1GY9zXokWLJuxq3blzJ41GY8LzV65cOWH31tDQEI1GY8LFTdatWzfhLnTD\nw8M0Go0J/xLbvHkza9asGbdsdHSURqPBrl27xi0fGBigv79/Qm1Lly5VDuU44hx79uxpqWIAmJgD\nlgKtH0XsBCbmgJVA6+7foXLd1ov/rAPG57jrrrvC9kM5lKMuOQYGBh793Thv3jwajQarV6+e8JxO\naPvmYGZ2I/B9d19hZncC73f3D5SPnUDxccb57v6p8s/3UByU+elynVMoDug87XAHZermYCLj6eZg\nInKkUt0crNJHHmb2XuCzFAdRPgE4D3gpsLhc5VKKMz++A9wOvAf4IXAdFAdpmtk24BIzuw94ALgM\n+JLO8BAREeleVT/yeBrwMYrjKL5AcS2Kxe5+E4C7bwI2Ax+mOLvjeOBV7v5Q02usBm4ArgFuAe6k\nuCaFwKS72npRlJwQJ2uq3aq5RemnckpVVa9D8YdHsM56YP0Ujz8IXFR+SYtVq1blLiGJKDkhTtZz\nzz03dwlJROmnckpVupdHzSxevHj6lXpAlJwQJ+uiRTEuJROln8opVWmgEBERkbZpoBAREZG2aaCo\nmSiXL46SE+Jkvfnmm3OXkESUfiqnVKWBomYGBgZyl5BElJwQJ+uOHTtyl5BElH4qp1TV9oWtUtCF\nrUTG04WtRORIpbqwlfZQiIiISNtmcnMwEZEJ9u7dm7uER82dO5f58+fnLkMkFA0UItKmu4CjWL58\nee5CHnXccXPYv3+vhgqRhPSRR81Mdie5XhQlJ0TI+hPgEHA6xTEdub+u4uDB0Ql3gJwtvd/PgnJK\nVdpDUTNRrtoWJSdEynoW+Q8Q7bwo/VROqUp7KGpm2bJluUtIIkpOiJT1rNwFJBGln8opVWmgEBER\nkbZpoBAREZG2aaComV27duUuIYkoOSFS1j25C0giSj+VU6rSQFEzmzZtyl1CElFyQqSsV+YuIIko\n/VROqUoDRc1s3749dwlJRMkJkbK+N3cBSUTpp3JKVRooambOnDm5S0giSk6IlPX43AUkEaWfyilV\naaAQERGRtmmgEBERkbZpoKiZNWvW5C4hiSg5IVLWS3MXkESUfiqnVKWBomai3MwoSk6IlHVe7gKS\niNJP5ZSqzN1z1zAtM1sI7N69ezcLF/b+vQJEpjM0NERfXx/FzbBybxMfB5bXpBaAIaAP/bwQKTz2\n84I+dx/q1PtoD4WIiIi0TQOFiIiItE0DRc3s27cvdwlJRMkJkbLelruAJKL0UzmlKg0UNbN27drc\nJSQRJSdEynpZ7gKSiNJP5ZSqNFDUzJYtW3KXkESUnBApa4wfzFH6qZxSlQaKmolyClOUnBAp69Nz\nF5BElH4qp1SlgUJERETapoFCRERE2qaBomY2btyYu4QkouSESFmvyF1AElH6qZxSlQaKmhkdHc1d\nQhJRckKkrAdzF5BElH4qp1SlS2+LdCFdensquvS2SLNaXnrbzP7MzG41s/vN7ICZfdrMfr1lncvN\n7FDL12da1jnWzLaa2YiZPWBm15jZ02YjkIiIiKRX9SOP04HNwEuAVwKPA3aa2fEt630WOJHi9oPz\ngGUtj18KvBo4BzgDeAZwbcVaREREpCYqDRTuvsTd/7e773X3bwFvBOYDfS2rPuju97j7j8qvn449\nYGYnACuA1e7+RXffA/QDv2Nmp7aVpgeMjIzkLiGJKDkhUtb7cheQRJR+KqdU1e5BmU8CHLi3ZfnL\nyo9E9pnZh8zsV5se6wOOBm4cW+Du+4FhYFGb9XS9FStW5C4hiSg5IVLWi3MXkESUfiqnVHX0TJ9o\nZkbx0cUud/+npoc+S/HxxW3AvwH+EviMmS3y4gjQecBD7n5/y0seKB8Lbf369blLSCJKToiU9YLc\nBSQRpZ/KKVW1s4fiQ8BvAK9vXujun3T3G9z9H939euA/AKcCL2vjvQBYsmQJjUZj3NeiRYsYHBwc\nt97OnTtpNBoTnr9y5Uq2bds2btnQ0BCNRmPCbq9169ZNOD95eHiYRqMx4e50mzdvZs2aNeOWjY6O\n0mg02LVr17jlAwMD9Pf3T6ht6dKlDA4OjjsqvZtzNJssx8KFC3siB0zfj+aezlaOPXv2tFQxQPHJ\n4YQkwGDLsp3AxBywEtjWsmyoXLd1t/A6oPX8/SeV67bevXEzsKZl2Wi57q6W5bOR430Tlszm91Vz\nP3N+X7Wbo9lkORYuXNgTOWDqfgwPD/dEjrF+DAwMPPq7cd68eTQaDVavXj3hOZ0wo9NGzWwL8PvA\n6e4+fATr/wh4p7t/xMxeDnwBeHLzXgozux34gLt/cJLn67RRkSY6bXQqOm1UpFktTxuFR4eJ1wAv\nP8Jh4pnAU4C7ykW7gV8Cr2ha5xSKgzu/UrUeERERya/qdSg+BJwH/AHwczM7sfw6rnz88Wa2ycxe\nYmbPNrNXUOyn/GdgB0C5V2IbcImZvczM+oCPAl9y91tnL1p3at2l1qui5IRIWVs/kuhNUfqpnFJV\n1T0UFwInALcAdzZ9nVs+/gjwfOA6YD/wEeAfgDPc/eGm11kN3ABc0/Ra58wkQK8ZGurY3qhaiZIT\nImVtPXaiN0Xpp3JKVbr0tkgX0jEUU9ExFCLNansMhYiIiEgrDRQiIiLSNg0UIiIi0jYNFDUz2QVV\nelGUnBApa5qL5+QWpZ/KKVVpoKiZVatW5S4hiSg5IVLWc6dfpQdE6adySlUaKGpm8eLFuUtIIkpO\niJQ1xr39ovRTOaUqDRQiIiLSNg0UIiIi0jYNFDXTege/XhUlJ0TKenPuApKI0k/llKo0UNTMwMBA\n7hKSiJITImXdkbuAJKL0UzmlKg0UNXP11VfnLiGJKDkhUtb35S4giSj9VE6pSgOFiIiItE0DhYiI\niLRNA4WIiIi0TQNFzfT39+cuIYkoOSFS1vW5C0giSj+VU6rSQFEzUa7aFiUnRMp6Wu4CkojST+WU\nqjRQ1MyyZctyl5BElJwQKetZuQtIIko/lVOq0kAhIiIibdNAISIiIm3TQFEzu3btyl1CElFyQqSs\ne3IXkESUfiqnVKWBomY2bdqUu4QkouSESFmvzF1AElH6qZxSlQaKmtm+fXvuEpKIkhMiZX1v7gKS\niNJP5ZSqNFDUzJw5c3KXkESUnBAp6/G5C0giSj+VU6rSQCEiIiJt00AhIiIibdNAUTNr1qzJXUIS\nUXJCpKyX5i4giSj9VE6pSgNFzcyfPz93CUlEyQmRss7LXUASUfqpnFKVuXvuGqZlZguB3bt372bh\nwoW5yxHJbmhoiL6+PmA3kHub+DiwvCa1AAwBfejnhUjhsZ8X9Ln7UKfeR3soREREpG0aKERERKRt\nGihqZt++fblLSCJKToiU9bbcBSQRpZ/KKVVpoKiZtWvX5i4hiSg5IVLWy3IXkESUfiqnVKWBoma2\nbNmSu4QkouSESFlj/GCO0k/llKoqDRRm9mdmdquZ3W9mB8zs02b265Osd7GZ3Wlmo2b2eTM7ueXx\nY81sq5mNmNkDZnaNmT2t3TC9IMopTFFyQqSsT89dQBJR+qmcUlXVPRSnA5uBlwCvBB4H7DSzRy/i\nb2ZvB1YBFwCnAj8HdpjZMU2vcynwauAc4AzgGcC1M8wgIiIimR1dZWV3X9L8ZzN7I/AjoA8Yu6n8\n24D3uPsN5TrnAweAs4FPmtkJwArg9e7+xXKdfmCvmZ3q7rfOPI6IiIjk0O4xFE8CHLgXwMxOorhc\n3o1jK7j7/cDXgEXlohdTDDLN6+wHhpvWCWvjxo25S0giSk6IlPWK3AUkEaWfyilVzXigMDOj+Ohi\nl7v/U7l4HsWAcaBl9QM8dl3eE4GHykHjcOuENTo6mruEJKLkhEhZD+YuIIko/VROqaqdPRQfAn4D\neP0s1TKtJUuW0Gg0xn0tWrSIwcHBcevt3LmTRqMx4fkrV65k27Zt45YNDQ3RaDQYGRkZt3zdunUT\nJtfh4WEajcaE85Y3b9484QYzo6OjNBoNdu3aNW75wMAA/f39E2pbunQpg4ODbNiwoSdyNJssx4YN\nG3oiB0zfj+aezlaOPXv2tFQxAEzMAUuBwZZlO4GJOWAlsK1l2VC57kjL8nVA67/sXlOu23pe/2ag\n9QZMo+W6u1qWz0aO901YMpvfV839zPl91W6OZpPl2LBhQ0/kgKn78aIXvagncoz1Y2Bg4NHfjfPm\nzaPRaLB69eoJz+mEGd3Lw8y2AL8PnO7uw03LTwK+C7zQ3b/ZtPwWYI+7rzazlwNfAJ7cvJfCzG4H\nPuDuH5zk/XQvD5EmupfHVHQvD5Fmtb2XRzlMvAZ4efMwAeDutwF3A69oWv8EirNCvlwu2g38smWd\nU4D5wFeq1iMiIiL5Vb0OxYeA84A/AH5uZieWX8c1rXYp8C4z+30z+03gSuCHwHXw6EGa24BLzOxl\nZtYHfBT4ks7wYMKus14VJSdEynpf7gKSiNJP5ZSqqu6huBA4AbgFuLPp69yxFdx9E8WHph+mOLvj\neOBV7v5Q0+usBm4Arml6rXNmEqDXrFixIncJSUTJCZGyXpy7gCSi9FM5paqq16E4ogHE3dcD66d4\n/EHgovJLmqxfvz53CUlEyQmRsl6Qu4AkovRTOaUq3cujZqIcRBYlJ0TKuiB3AUlE6adySlUaKERE\nRKRtGihERESkbRooaqb1wim9KkpOiJS19cJTvSlKP5VTqtJAUTNDQx275kitRMkJkbK2XiGzN0Xp\np3JKVTO6UmZqulKmyHi6UuZUdKVMkWa1vVKmiIiISCsNFCIiItI2DRQiIiLSNg0UNTPZbXN7UZSc\nEClrmlsk5xaln8opVWmgqJlVq1blLiGJKDkhUtZzp1+lB0Tpp3JKVRooambx4sW5S0giSk6IlHVR\n7gKSiNJP5ZSqNFCIiIhI2zRQiIiISNs0UNTM4GCMyxdHyQmRst6cu4AkovRTOaUqDRQ1MzAwkLuE\nJKLkhEhZd+QuIIko/VROqUoDRc1cffXVuUtIIkpOiJT1fbkLSCJKP5VTqtJAISIiIm3TQCEiIiJt\n00AhIiIibdNAUTP9/f25S0giSk6IlHV97gKSiNJP5ZSqNFDUTJSrtkXJCZGynpa7gCSi9FM5pSoN\nFDWzbNmy3CUkESUnRMp6Vu4CkojST+WUqjRQiIiISNs0UIiIiEjbNFDUzK5du3KXkESUnBAp657c\nBSQRpZ/KKVVpoKiZTZs25S4hiSg5IVLWK3MXkESUfiqnVKWBoma2b9+eu4QkouSESFnfm7uAJKL0\nUzmlKg0UNTNnzpzcJSQRJSdEynp87gKSiNJP5ZSqNFCIiIhI2zRQiIiISNs0UNTMmjVrcpeQRJSc\nECnrpbkLSCJKP5VTqtJAUTPz58/PXUISUXJCpKzzcheQRJR+KqdUZe5e7QlmpwNrgD7g6cDZ7n59\n0+OXA29oedrn3H1J0zrHApcAS4FjgR3AW9z9R4d5z4XA7t27d7Nw4cJK9Yr0oqGhIfr6+oDdQO5t\n4uPA8prUAjAE9HHVVVexYMGC3MUAMHfuXP3ikmwe+3lBn7sPdep9jp7Bcx4PfB3YBvyfw6zzWeCN\ngJV/frDl8UuBVwHnAPcDW4FrgdNnUI+ISJO7gKNYvnx57kIeddxxc9i/f6+GCulplQcKd/8c8DkA\nM7PDrPagu98z2QNmdgKwAni9u3+xXNYP7DWzU9391qo1iYg85ifAIeAqoA57KPZy8OByRkZGNFBI\nT5vJHooj8TIzOwDcB9wEvMvd7y0f6yvf98axld19v5kNA4uA0APFvn37eO5zn5u7jI6LkhMiZb2N\nenzkMWYBnalnH9D7/YzyfRslZwqdOCjzs8D5wL8H1gIvBT7TtDdjHvCQu9/f8rwDRDmqawpr167N\nXUISUXJCpKyX5S4gkRj9jPJ9GyVnCrO+h8LdP9n0x380s28B3wVeBtw82+/Xa7Zs2ZK7hCSi5IRI\nWaP8YI7Rzyjft1FyptDx00bd/TZgBDi5XHQ3cEx5LEWzE8vHDmvJkiU0Go1xX4sWLWJwcHDcejt3\n7qTRaEygL60CAAAZAUlEQVR4/sqVK9m2bdu4ZUNDQzQaDUZGRsYtX7duHRs3bhy3bHh4mEajwb59\n+8Yt37x584RzmUdHR2k0GhPuZDcwMEB/f/+E2pYuXcrg4OC4z1i7OUezyXLMnz+/J3LA9P1o7uls\n5dizp/XOngPAxBzFiVSDLct2AhNzwEqKY63HJSnXHWlZvg7YyEQNio8Emm2mODGs2Wi5buudHmcj\nxxWTLKuSY5ipczQfB1Etx2x+X41L0YHtY/78+Um2j07ngKm386Gh8Sc9dGuOsX4MDAw8+rtx3rx5\nNBoNVq9ePeE5nVD5tNFxTzY7RMtpo5Os80zg+8Br3P2GcpC4h+KgzE+X65wC7AVOm+ygTJ02KjKe\nThudSt3qKU5j1c8vyaW2p42a2eMp9jaMHRPxHDN7AXBv+bWO4hTQu8v1NgL/THGtCdz9fjPbBlxi\nZvcBD1B8+PolneEhIiLSnWbykceLgT0U478Df0Uxgm8AHgGeD1wH7Ac+AvwDcIa7P9z0GquBG4Br\ngFuAOymuSRFe626yXhUlJ0TKekXuAhKJ0c8o37dRcqYwk+tQfJGpB5GzjuA1HgQuKr+kyejoaO4S\nkoiSEyJlPZi7gERi9DPK922UnCnoXh41s2HDhtwlJBElJ0TKemHuAhKJ0c8o37dRcqaggUJERETa\npoFCRERE2qaBomZaz2fuVVFyQqSs9+UuIJEY/YzyfRslZwoaKGpmxYoVuUtIIkpOiJT14twFJBKj\nn1G+b6PkTEEDRc2sX78+dwlJRMkJkbJekLuARNbnLiCJKN+3UXKmoIGiZqJcSS9KToiUtQ63Ck8h\nRj+jfN9GyZmCBgoRERFpmwYKERERaZsGipppvZtdr4qSEyJlbb0baK+K0c8o37dRcqaggaJmWm+l\n26ui5IRIWVtv992rYvQzyvdtlJwpaKComa1bt+YuIYkoOSFS1nfkLiCRGP2M8n0bJWcKGihERESk\nbRooREREpG0aKERERKRtGihqptFo5C4hiSg5IVLW1bkLSCRGP6N830bJmYIGippZtWpV7hKSiJIT\nImU9N3cBicToZ5Tv2yg5U9BAUTOLFy/OXUISUXJCpKyLcheQSIx+Rvm+jZIzhaNzFyDSLYaHh2tz\nq+O9e/fmLkFEZBwNFCJHYHh4mFNOWcDBg6O5SxERqSUNFDUzODjI2WefnbuMjuu2nCMjI+UwcRXV\n76p5M/DyWa7oM8C7Z/k123UzMe7EOQh0z/fuTHXbNjpTUXKmoIGiZgYGBkJ8c3dvzgVU/6W5EfiT\nWa6jjh957GD2c9bRABEGiu7dRquJkjMFHZRZM1dffXXuEpKIkrMQJev7cheQSIx+RtlGo+RMQQOF\niIiItE0DhYiIiLRNA4WIiIi0TQNFzfT39+cuIYkoOQtRsq7PXUAiMfoZZRuNkjMFDRQ1E+WqbVFy\nFqJkPS13AYnE6GeUbTRKzhQ0UNTMsmXLcpeQRJSchShZz8pdQCIx+hllG42SMwUNFCIiItI2DRQi\nIiLSNg0UNbNr167cJSQRJWchStY9uQtIJEY/o2yjUXKmoIGiZjZt2pS7hCSi5CxEyXpl7gISidHP\nKNtolJwpVB4ozOx0M7vezO4ws0Nm1phknYvN7E4zGzWzz5vZyS2PH2tmW81sxMweMLNrzOxp7QTp\nFdu3b89dQhJRchaiZH1v7gISidHPKNtolJwpzGQPxeOBrwNvAbz1QTN7O7AKuAA4Ffg5sMPMjmla\n7VLg1cA5wBnAM4BrZ1BLz5kzZ07uEpKIkrMQJevxuQtIJEY/o2yjUXKmUPluo+7+OeBzAGZmk6zy\nNuA97n5Duc75wAGK2/N90sxOAFYAr3f3L5br9AN7zexUd791RklEREQkm1k9hsLMTgLmATeOLXP3\n+4GvAYvKRS+mGGSa19kPDDetIyIiIl1ktg/KnEfxMciBluUHyscATgQeKgeNw60T1po1a3KXkESU\nnIUoWS/NXUAiMfoZZRuNkjMFneVRM/Pnz89dQhJRchaiZI3y74EY/YyyjUbJmcJsDxR3A0axF6LZ\nieVjY+scUx5Lcbh1JrVkyRIajca4r0WLFjE4ODhuvZ07d9JoTDj5hJUrV7Jt27Zxy4aGhmg0GoyM\njIxbvm7dOjZu3Dhu2fDwMI1Gg3379o1bvnnz5glT7ujoKI1GY8I5zgMDA5PejGbp0qUMDg5y0UUX\n9USOZpPluOiii7ouR2H1JMtWAttalg0BDWAEuKhp+TpgY8u6w+W6+1qWb2biv4ZHy3X3tywfYPKb\nVi0FWnPsLF+j1XQ5mk2W46VUz9F6DYDZyHHFJMuq5JiuH839rJbjSLcPyL+dX3TRRW1v53XIAVNv\n58961rN6IsdYPwYGBh793Thv3jwajQarV0/2c6sD3H3GX8AhoNGy7E5gddOfTwB+Abyu6c8PAq9t\nWueU8rVOPcz7LAR89+7dLpLD7t27HXDY7eA1+LqqRvXUqZY61lN87+jnl+Ty2M8vFrrP/Hf+dF+V\nz/Iws8cDJ1PsiQB4jpm9ALjX3X9A8UHqu8zsO8DtwHuAHwLXlQPM/Wa2DbjEzO4DHgAuA77kOsND\nRESkK83kI48XU1xjdzfFxPNXFPsTNwC4+yaKfYMfpji743jgVe7+UNNrrAZuAK4BbqHYq3HOjBL0\nmNbdYb0qSs5ClKy35S4gkRj9jLKNRsmZQuWBwt2/6O5HufuvtHytaFpnvbs/w93nuPuZ7v6dltd4\n0N0vcve57v4Ed3+du/9oNgJ1u7Vr1+YuIYkoOQtRsl6Wu4BEYvQzyjYaJWcKOsujZrZs2ZK7hCSi\n5CxEyRrlB3OMfkbZRqPkTEEDRc1EOYUpSs5ClKxPz11AIjH6GWUbjZIzBQ0UIiIi0jYNFCIiItI2\nDRQ103oxlF4VJWchStYrcheQSIx+RtlGo+RMQQNFzYyOjuYuIYkoOQtRsh7MXUAiMfoZZRuNkjMF\nDRQ1s2HDhtwlJBElZyFK1gtzF5BIjH5G2Uaj5ExBA4WIiIi0TQOFiIiItE0DRc203rWuV0XJWYiS\n9b7cBSQSo59RttEoOVPQQFEzK1asmH6lHhAlZyFK1otzF5BIjH5G2Uaj5ExBA0XNrF+/PncJSUTJ\nWVifu4BELshdQCLrcxeQRJRtNErOFDRQ1MzChQtzl5BElJyFKFkX5C4gkRj9jLKNRsmZggYKERER\naZsGChEREWmbBoqa2bZtW+4SkoiSsxAl62DuAhKJ0c8o22iUnClooKiZoaGh3CUkESVnIUrWfbkL\nSCRGP6Nso1FypqCBoma2bt2au4QkouQsRMn6jtwFJBKjn1G20Sg5U9BAISIiIm3TQCEiIiJt00Ah\nIiIibdNAUTONRiN3CUlEyVmIknV17gISidHPKNtolJwpaKComVWrVuUuIYkoOQtRsp6bu4BEYvQz\nyjYaJWcKGihqZvHixblLSCJKzkKUrItyF5BIjH5G2Uaj5ExBA4WIiIi0TQOFiIiItE0DRc0MDsa4\nfHGUnIUoWW/OXUAiMfoZZRuNkjMFDRQ1MzAwkLuEJKLkLETJuiN3AYnE6GeUbTRKzhQ0UNTM1Vdf\nnbuEJKLkLETJ+r7cBSQSo59RttEoOVPQQCEiIiJtOzp3ASIiEezduzd3CY+aO3cu8+fPz12G9BgN\nFCIiHXUXcBTLly/PXcijjjtuDvv379VQIbNKA0XN9Pf3c/nll+cuo+Oi5Cz0AxGyrgeuz11EAlX7\n+RPgEHAVsKAjFVWzl4MHlzMyMjLlQBFlG42SMwUNFDUT5aptUXIWomQ9LXcBicy0nwuAhbNZSEdF\n2Uaj5Exh1g/KNLN1Znao5eufWta52MzuNLNRM/u8mZ0823V0q2XLluUuIYkoOQtRsp6Vu4BEYvQz\nyjYaJWcKnTrL49vAicC88ut3xx4ws7dT3F3nAuBU4OfADjM7pkO1iIiISId16iOPX7r7PYd57G3A\ne9z9BgAzOx84AJwNfLJD9YiIiEgHdWoPxb81szvM7LtmdpWZPQvAzE6i2GNx49iK7n4/8DXi3Kpw\nSrt27cpdQhJRchaiZN2Tu4BEYvQzyjYaJWcKnRgovgq8ETgTuBA4Cfi/ZvZ4imHCKfZINDtQPhbe\npk2bcpeQRJSchShZr8xdQCIx+hllG42SM4VZHyjcfYe7X+vu33b3zwNLgCcD57b72kuWLKHRaIz7\nWrRo0YSbu+zcuZNGozHh+StXrmTbtm3jlg0NDdFoNBgZGRm3fN26dWzcuHHcsuHhYRqNBvv27Ru3\nfPPmzaxZs2bcstHRURqNxoTpd2BggP7+/gm1LV26lMHBQbZv394TOZpNlmP79u1dl6OwepJlK4Ft\nLcuGgAYwAmxvWr4O2Niy7nC57r6W5ZuBNS3LRst197csH6A4nbHVUibezGpn+RqtpsvRbLIcb6V6\njtZ/Hc5GjismWVYlx3T9aO5nJ3O024/D5dhOq8m2j+3bt7e9nUP9f16dd955PZFjrB8DAwOP/m6c\nN28ejUaD1asn+7k1+8zdO/8mZrcCnwf+Bvgu8EJ3/2bT47cAe9x90tRmthDYvXv3bhYu7J7TrqR3\nDA0N0dfXB+ymHqf+fRxYTj3qqVMtoHqmMwT0oZ+ncTz284s+dx/q1Pt0/F4eZvavgJOBO939NuBu\n4BVNj58AvAT4cqdrERERkc6Y9bM8zOz9wN8C3wd+DdgAPMxj+9kuBd5lZt8BbgfeA/wQuG62axER\nEZE0OrGH4pnAJyg+uNsO3AOc5u4/BnD3TRQfRn6Y4uyO44FXuftDHail67R+ltarouQsRMl6ae4C\nEonRzyjbaJScKcz6Hgp3n/ayY+6+nuLC/9Iiys16ouQsRMka5UStGP2Mso1GyZlCx4+hkGouuuii\n3CUkESVnIUrW1+cuIJEY/YyyjUbJmYIGChEREWmbBgoRERFpmwaKmmm96EmvipKzECXrbbkLSCRG\nP6Nso1FypqCBombWrl2bu4QkouQsRMl6We4CEonRzyjbaJScKWigqJktW7bkLiGJKDkLUbJG+cEc\no59RttEoOVPQQFEzUU5hipKzECXr03MXkEiMfkbZRqPkTEEDhYiIiLRt1i9sJTJbhoeHJ9zFL5e9\ne/fmLkFEpNY0UNTMxo0befvb3567jI6bLufw8DCnnLKAgwdHE1bVKRuB3u9pcdvwCHevjNFP/SyS\nqjRQ1MzoaC/8Ap3edDlHRkbKYeIqYEGSmqb2GeDdM3xujJ7CwdwFJBKjn/pZJFVpoKiZDRs25C4h\niSPPuYB6/Ku3nY88YvQULsxdQCIx+qmfRVKVDsoUERGRtmmgEBERkbZpoKiZupzV0GlRchaiZL0v\ndwGJxOhnlG00Ss4UNFDUzIoVK3KXkESUnIUoWS/OXUAiMfoZZRuNkjMFDRQ1s379+twlJBElZ2F9\n7gISuSB3AYmsz11AElG20Sg5U9BAUTMLF9bhjIbOi5KzECVrHU7vTSFGP6Nso1FypqCBQkRERNqm\ngUJERETapoGiZrZt25a7hCSi5CxEyTqYu4BEYvQzyjYaJWcKGihqZmhoKHcJSUTJWYiSdV/uAhKJ\n0c8o22iUnClooKiZrVu35i4hiSg5C1GyviN3AYnE6GeUbTRKzhQ0UIiIiEjbNFCIiIhI2zRQiIiI\nSNs0UNRMo9HIXUISUXIWomRdnbuARGL0M8o2GiVnCkfnLkDGW7VqVe4SkoiSsxAl67m5C0ikN/q5\nd+/eKR8/88wzk5wBMXfuXObPn9/x9zmcWD+LOksDRc0sXrw4dwlJRMlZiJJ1Ue4CEun2ft4FHMXy\n5ctzFwLAccfNYf/+vdmGilg/izpLA4WISCg/AQ4BV5H//it7OXhwOSMjI1n3Usjs0EAhIhLSAqLc\n6EzS0EGZNTM4GOPyxVFyFqJkvTl3AYlE6WeMnLF+FnWW9lDUzMaNGzn77LNzl9FxUXIWNgIRsl4B\n/EnuIhKI0s90Oac7QLST3v3ud4/7uCX3QaLdLOtAYWYrgT8F5gHfAC5y93/IWVNuT33qU7O99/Dw\nMCMjI0ne65hjjpnyCPKcP2BmX76epvWruQtIJEo/U+SsxwGifX19j/5/7oNEu1m2gcLMlgJ/BVwA\n3EpxEvsOM/t1d0/zWy0jd+etb13N3//9l8Ytv+22f+GFL/yt5PU89NCD7N+/j0OHHk72ns0bsYhE\nVIcDRFcDHyj/XweJtiPnHorVwIfd/UoAM7sQeDWwAtiUsa4kDh06xJYtHwTOAJ7b9MiP+MY3chwo\n9W3gYdJt2M0b8WQ+A7w7QR0ikl/OA0SfmPG9e0uWgcLMHgf0Ae8dW+bubmZfIM7J7KU3Av1Nf24A\nH85Qx1bgy6TbsKfbiHvpIw8Rkd6Xaw/FXOBXgAMtyw8Ap0yy/nHQW5+rP/LII+X/3UKxZ2DMLuB/\nJa+neF8o9gyk+Hv+EvDxaR6HdPVMp516pss6E3X6+xmr5evMfs6Z6PTfTdV+1qlXcOT1dOL7dqa1\ndLqGsZy3Ab31uwbG5Tmuk+9j7t7J15/8Tc2eDtwBLHL3rzUt3wic4e6LWtb/A+rxk0pERKRbnefu\nn+jUi+faQzECPAKc2LL8RODuSdbfAZwH3A4c7GhlIiIiveU44F9T/C7tmCx7KADM7KvA19z9beWf\nDRgGLnP392cpSkRERGYk51kelwBXmNluHjttdA7F1XFERESki2QbKNz9k2Y2F7iY4qOOrwNnuvs9\nuWoSERGRmcn2kYeIiIj0Dt0cTERERNqmgUJERETalnygMLPTzex6M7vDzA6ZWWOSdS42szvNbNTM\nPm9mJx/B677OzPaa2S/M7Btm9qrOJDgynchpZm8oX+uR8r+HzGy0cymmN11OM3utme0ws5Hy8ecf\n4evWqp9lTbOetdt6amZHm9lGM/ummf2sXOdj5bVlpnvdWvW0Ezm7rZ/l4+vKvvzMzO4tfxadegSv\n2zX9LB+vnLMb+9my7v8s13nrEbxu2/3MsYfi8RQHYL4FmHAAh5m9HVhFcdOwU4GfU9w07JjDvaCZ\n/TbwCeAjwAuB64BBM/uNWa/+yM16ztJPKe7OOvb17FmseSamzFk+/vfA2sM8PkFN+wkdyFrqpp7O\noejJBuBFwGsprm573VQvWNOeznrOUjf1E2A/sBJ4HvA7FNf72WlmTzncC3ZhP2EGOUvd1k+g+AcO\n8BKKi0hOadb66e7ZvihuM9doWXYnsLrpzycAvwDOneJ1tgPXtyz7CvChnPk6kPMNwL2581TJ2fTY\ns8vHn38Er1Prfs5y1q7tadM6L6a4UN0zu7Wns5izF/r5hHK9l/d4P48kZ1f2E/g1ius6LaC4nvhb\np3mdWelnrY6hMLOTKCbAG8eWufv9wNeY+qZhi4AvtCzbMc1zsmkjJ8C/MrPbzWzYzHL/i6BTuqqf\ns6Dbe/okin8p/WSKdXqhp0eSE7q4n1bcuPFNFBm/McWqXd3PCjmhy/ppZgZcCWxy9yO9Kcms9LNW\nAwXFL1ln8puGzZvmeVWfk9NMc+6nuL17g+JS5EcBXzazZ3SiyIy6rZ/t6OqemtmxwPuAT7j7z6ZY\ntat7WiFnV/bTzF5tZg9Q3NrgbcDvufu9UzylK/s5g5zd2M93AA+5+5YKz5mVfua8UqZU5O5fBb46\n9mcz+wrFLfreBKzLVZfMXDf31MyOBj5FMRy/JXM5HVMlZxf38ybgBRR3gv4j4FNmdqq7j+Qta9ZV\nytlt/TSzPuCtFMf9JFe3PRR3A8aR3zSs+XlVn5PTTHOO4+6/BPYA054F02W6rZ+zplt62vRL9lnA\n4mn+1Q5d2tMZ5BynW/rp7r9w9++5+63u/kfAL4H/MsVTurKfM8jZ+vy69/N3gacCPzCzh83sYYpj\nui4xs+9N8bxZ6WetBgp3v40iwCvGlpnZCRRHqn55iqd+pfk5pd8rl9dOGznHMbOjgN8E7prtGjvk\nSM986Kp+HsaMLkHbDT1t+iX7HOAV7n7fETyt63o6w5ytr1H7fh7GUcCxUzzedf08jOlyjtMF/bwS\neD7FXpixrzuBTcCZUzxvVvqZ/CMPM3s8xXRn5aLnmNkLKI6k/QFwKfAuM/sOxWk97wF+SNPpWmb2\nMeAOd//zctEHgVvM7I+BvwOWAX0Uu7Sy6EROM3s3xe6371AcILYWmA/8TYpMk5kup5k9uazx18p1\nnlseNHS3ux8oX6P2/YTOZO22nlL8IL2W4tSy/wA8zszG/mVzr7s/XL5G7XvaiZxd2M8fA+8ErqfI\nPJfidPZnUAxTY6/R7f2cUc5u62f5u+W+lvUfpvgZ9C9NyzrTzwynubyU4lSXR1q+Ptq0znqKqWqU\n4kjTk1te46bm9ctl5wD7KE69/CbFjcZyns4z6zkp7tB6W5nxTuBvOYJTE3PmpDjtarLH/6Kb+tmp\nrN3WUx47JbZ5+difz+imnnYiZxf281iKwekHZc0/BD4NLGx5jW7v54xydls/D7P+92g5bbRT/dTN\nwURERKRttTqGQkRERLqTBgoRERFpmwYKERERaZsGChEREWmbBgoRERFpmwYKERERaZsGChEREWmb\nBgoRERFpmwYKERERaZsGChEREWmbBgoRERFp2/8HfsCRZcyWXVUAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Check log transform - looks good\n", "%matplotlib inline\n", "train['SalePrice'].log().as_data_frame().hist()\n", "\n", "# Execute log transform\n", "train['SalePrice'] = train['SalePrice'].log()\n", "valid['SalePrice'] = valid['SalePrice'].log()\n", "print(train[0:3, 'SalePrice'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Train XGBoost with monotonicity Constraints" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0]\ttrain-rmse:0.3924\teval-rmse:0.410023\n", "Multiple eval metrics have been passed: 'eval-rmse' will be used for early stopping.\n", "\n", "Will train until eval-rmse hasn't improved in 50 rounds.\n", "[1]\ttrain-rmse:0.390954\teval-rmse:0.408467\n", "[2]\ttrain-rmse:0.389618\teval-rmse:0.407106\n", "[3]\ttrain-rmse:0.388497\teval-rmse:0.405756\n", "[4]\ttrain-rmse:0.387136\teval-rmse:0.404236\n", "[5]\ttrain-rmse:0.385714\teval-rmse:0.402831\n", "[6]\ttrain-rmse:0.384449\teval-rmse:0.401643\n", "[7]\ttrain-rmse:0.382743\teval-rmse:0.399816\n", "[8]\ttrain-rmse:0.381471\teval-rmse:0.398484\n", "[9]\ttrain-rmse:0.380089\teval-rmse:0.397062\n", "[10]\ttrain-rmse:0.378992\teval-rmse:0.395882\n", "[11]\ttrain-rmse:0.377797\teval-rmse:0.394543\n", "[12]\ttrain-rmse:0.376604\teval-rmse:0.39328\n", "[13]\ttrain-rmse:0.37533\teval-rmse:0.391908\n", "[14]\ttrain-rmse:0.373751\teval-rmse:0.390438\n", "[15]\ttrain-rmse:0.37246\teval-rmse:0.389129\n", "[16]\ttrain-rmse:0.371113\teval-rmse:0.38778\n", "[17]\ttrain-rmse:0.369844\teval-rmse:0.386449\n", "[18]\ttrain-rmse:0.368511\teval-rmse:0.385084\n", "[19]\ttrain-rmse:0.36718\teval-rmse:0.383684\n", "[20]\ttrain-rmse:0.365808\teval-rmse:0.382153\n", "[21]\ttrain-rmse:0.364398\teval-rmse:0.380706\n", "[22]\ttrain-rmse:0.363094\teval-rmse:0.379213\n", "[23]\ttrain-rmse:0.361733\teval-rmse:0.377871\n", "[24]\ttrain-rmse:0.360402\teval-rmse:0.376537\n", "[25]\ttrain-rmse:0.359047\teval-rmse:0.37518\n", "[26]\ttrain-rmse:0.357816\teval-rmse:0.373909\n", "[27]\ttrain-rmse:0.356583\teval-rmse:0.372763\n", "[28]\ttrain-rmse:0.355392\teval-rmse:0.371539\n", "[29]\ttrain-rmse:0.354017\teval-rmse:0.370001\n", "[30]\ttrain-rmse:0.352962\teval-rmse:0.368869\n", "[31]\ttrain-rmse:0.351735\teval-rmse:0.367572\n", "[32]\ttrain-rmse:0.350414\teval-rmse:0.366278\n", "[33]\ttrain-rmse:0.34909\teval-rmse:0.364852\n", "[34]\ttrain-rmse:0.348044\teval-rmse:0.363857\n", "[35]\ttrain-rmse:0.346958\teval-rmse:0.362709\n", "[36]\ttrain-rmse:0.345771\teval-rmse:0.361432\n", "[37]\ttrain-rmse:0.344657\teval-rmse:0.360253\n", "[38]\ttrain-rmse:0.343384\teval-rmse:0.358927\n", "[39]\ttrain-rmse:0.342106\teval-rmse:0.357613\n", "[40]\ttrain-rmse:0.340843\teval-rmse:0.356215\n", "[41]\ttrain-rmse:0.339678\teval-rmse:0.354896\n", "[42]\ttrain-rmse:0.338493\teval-rmse:0.353594\n", "[43]\ttrain-rmse:0.337334\teval-rmse:0.352363\n", "[44]\ttrain-rmse:0.336152\teval-rmse:0.35105\n", "[45]\ttrain-rmse:0.334906\teval-rmse:0.34972\n", "[46]\ttrain-rmse:0.333908\teval-rmse:0.348785\n", "[47]\ttrain-rmse:0.332783\teval-rmse:0.347465\n", "[48]\ttrain-rmse:0.331776\teval-rmse:0.346471\n", "[49]\ttrain-rmse:0.330468\teval-rmse:0.345205\n", "[50]\ttrain-rmse:0.329272\teval-rmse:0.343932\n", "[51]\ttrain-rmse:0.328072\teval-rmse:0.342741\n", "[52]\ttrain-rmse:0.326961\teval-rmse:0.341641\n", "[53]\ttrain-rmse:0.325797\teval-rmse:0.340275\n", "[54]\ttrain-rmse:0.324647\teval-rmse:0.339084\n", "[55]\ttrain-rmse:0.323357\teval-rmse:0.337551\n", "[56]\ttrain-rmse:0.32236\teval-rmse:0.336513\n", "[57]\ttrain-rmse:0.321196\teval-rmse:0.335334\n", "[58]\ttrain-rmse:0.320245\teval-rmse:0.33428\n", "[59]\ttrain-rmse:0.319255\teval-rmse:0.333335\n", "[60]\ttrain-rmse:0.318107\teval-rmse:0.331977\n", "[61]\ttrain-rmse:0.316973\teval-rmse:0.330865\n", "[62]\ttrain-rmse:0.315922\teval-rmse:0.329654\n", "[63]\ttrain-rmse:0.314727\teval-rmse:0.328422\n", "[64]\ttrain-rmse:0.313633\teval-rmse:0.327252\n", "[65]\ttrain-rmse:0.312645\teval-rmse:0.326283\n", "[66]\ttrain-rmse:0.311411\teval-rmse:0.324992\n", "[67]\ttrain-rmse:0.310406\teval-rmse:0.323971\n", "[68]\ttrain-rmse:0.309295\teval-rmse:0.322864\n", "[69]\ttrain-rmse:0.3084\teval-rmse:0.321954\n", "[70]\ttrain-rmse:0.307538\teval-rmse:0.321043\n", "[71]\ttrain-rmse:0.306586\teval-rmse:0.319932\n", "[72]\ttrain-rmse:0.305433\teval-rmse:0.318684\n", "[73]\ttrain-rmse:0.304577\teval-rmse:0.317955\n", "[74]\ttrain-rmse:0.303391\teval-rmse:0.316781\n", "[75]\ttrain-rmse:0.302433\teval-rmse:0.315815\n", "[76]\ttrain-rmse:0.301417\teval-rmse:0.314746\n", "[77]\ttrain-rmse:0.300425\teval-rmse:0.313772\n", "[78]\ttrain-rmse:0.299632\teval-rmse:0.312921\n", "[79]\ttrain-rmse:0.298593\teval-rmse:0.311855\n", "[80]\ttrain-rmse:0.297476\teval-rmse:0.310512\n", "[81]\ttrain-rmse:0.296454\teval-rmse:0.309488\n", "[82]\ttrain-rmse:0.295476\teval-rmse:0.308448\n", "[83]\ttrain-rmse:0.294545\teval-rmse:0.307467\n", "[84]\ttrain-rmse:0.293698\teval-rmse:0.306618\n", "[85]\ttrain-rmse:0.292919\teval-rmse:0.3058\n", "[86]\ttrain-rmse:0.291839\teval-rmse:0.304714\n", "[87]\ttrain-rmse:0.29112\teval-rmse:0.30394\n", "[88]\ttrain-rmse:0.290434\teval-rmse:0.303167\n", "[89]\ttrain-rmse:0.289413\teval-rmse:0.301853\n", "[90]\ttrain-rmse:0.288591\teval-rmse:0.300972\n", "[91]\ttrain-rmse:0.287797\teval-rmse:0.3003\n", "[92]\ttrain-rmse:0.287085\teval-rmse:0.299615\n", "[93]\ttrain-rmse:0.286334\teval-rmse:0.298834\n", "[94]\ttrain-rmse:0.285387\teval-rmse:0.297891\n", "[95]\ttrain-rmse:0.284492\teval-rmse:0.296876\n", "[96]\ttrain-rmse:0.283575\teval-rmse:0.29586\n", "[97]\ttrain-rmse:0.282698\teval-rmse:0.295007\n", "[98]\ttrain-rmse:0.281767\teval-rmse:0.293973\n", "[99]\ttrain-rmse:0.280898\teval-rmse:0.293025\n", "[100]\ttrain-rmse:0.279944\teval-rmse:0.291954\n", "[101]\ttrain-rmse:0.278922\teval-rmse:0.290909\n", "[102]\ttrain-rmse:0.277925\teval-rmse:0.289707\n", "[103]\ttrain-rmse:0.277078\teval-rmse:0.288749\n", "[104]\ttrain-rmse:0.276306\teval-rmse:0.287823\n", "[105]\ttrain-rmse:0.275496\teval-rmse:0.287069\n", "[106]\ttrain-rmse:0.274698\teval-rmse:0.286221\n", "[107]\ttrain-rmse:0.273866\teval-rmse:0.285274\n", "[108]\ttrain-rmse:0.273091\teval-rmse:0.284503\n", "[109]\ttrain-rmse:0.272268\teval-rmse:0.283633\n", "[110]\ttrain-rmse:0.27163\teval-rmse:0.282928\n", "[111]\ttrain-rmse:0.270892\teval-rmse:0.282141\n", "[112]\ttrain-rmse:0.270112\teval-rmse:0.281381\n", "[113]\ttrain-rmse:0.269582\teval-rmse:0.280827\n", "[114]\ttrain-rmse:0.268758\teval-rmse:0.280047\n", "[115]\ttrain-rmse:0.267932\teval-rmse:0.279143\n", "[116]\ttrain-rmse:0.267085\teval-rmse:0.278244\n", "[117]\ttrain-rmse:0.266338\teval-rmse:0.277479\n", "[118]\ttrain-rmse:0.265643\teval-rmse:0.276677\n", "[119]\ttrain-rmse:0.264955\teval-rmse:0.275966\n", "[120]\ttrain-rmse:0.26422\teval-rmse:0.275228\n", "[121]\ttrain-rmse:0.263567\teval-rmse:0.274551\n", "[122]\ttrain-rmse:0.26288\teval-rmse:0.273894\n", "[123]\ttrain-rmse:0.262087\teval-rmse:0.273105\n", "[124]\ttrain-rmse:0.261296\teval-rmse:0.272233\n", "[125]\ttrain-rmse:0.260619\teval-rmse:0.271463\n", "[126]\ttrain-rmse:0.259946\teval-rmse:0.270694\n", "[127]\ttrain-rmse:0.259205\teval-rmse:0.269923\n", "[128]\ttrain-rmse:0.258388\teval-rmse:0.269018\n", "[129]\ttrain-rmse:0.257643\teval-rmse:0.268309\n", "[130]\ttrain-rmse:0.256697\teval-rmse:0.267332\n", "[131]\ttrain-rmse:0.255963\teval-rmse:0.26669\n", "[132]\ttrain-rmse:0.255326\teval-rmse:0.265973\n", "[133]\ttrain-rmse:0.254567\teval-rmse:0.265155\n", "[134]\ttrain-rmse:0.253865\teval-rmse:0.264362\n", "[135]\ttrain-rmse:0.25307\teval-rmse:0.263556\n", "[136]\ttrain-rmse:0.252377\teval-rmse:0.262872\n", "[137]\ttrain-rmse:0.251536\teval-rmse:0.26203\n", "[138]\ttrain-rmse:0.250944\teval-rmse:0.261465\n", "[139]\ttrain-rmse:0.250208\teval-rmse:0.260754\n", "[140]\ttrain-rmse:0.249587\teval-rmse:0.260099\n", "[141]\ttrain-rmse:0.248974\teval-rmse:0.259413\n", "[142]\ttrain-rmse:0.248352\teval-rmse:0.258791\n", "[143]\ttrain-rmse:0.247759\teval-rmse:0.258198\n", "[144]\ttrain-rmse:0.247017\teval-rmse:0.257496\n", "[145]\ttrain-rmse:0.246287\teval-rmse:0.256718\n", "[146]\ttrain-rmse:0.245688\teval-rmse:0.256152\n", "[147]\ttrain-rmse:0.244938\teval-rmse:0.255274\n", "[148]\ttrain-rmse:0.244268\teval-rmse:0.254508\n", "[149]\ttrain-rmse:0.243695\teval-rmse:0.253796\n", "[150]\ttrain-rmse:0.243007\teval-rmse:0.252967\n", "[151]\ttrain-rmse:0.242488\teval-rmse:0.252324\n", "[152]\ttrain-rmse:0.241913\teval-rmse:0.251672\n", "[153]\ttrain-rmse:0.241123\teval-rmse:0.250736\n", "[154]\ttrain-rmse:0.240559\teval-rmse:0.250131\n", "[155]\ttrain-rmse:0.239988\teval-rmse:0.249553\n", "[156]\ttrain-rmse:0.239331\teval-rmse:0.248683\n", "[157]\ttrain-rmse:0.23872\teval-rmse:0.247863\n", "[158]\ttrain-rmse:0.237997\teval-rmse:0.247032\n", "[159]\ttrain-rmse:0.237253\teval-rmse:0.246289\n", "[160]\ttrain-rmse:0.236633\teval-rmse:0.245547\n", "[161]\ttrain-rmse:0.236091\teval-rmse:0.244908\n", "[162]\ttrain-rmse:0.235566\teval-rmse:0.244327\n", "[163]\ttrain-rmse:0.23486\teval-rmse:0.243538\n", "[164]\ttrain-rmse:0.234117\teval-rmse:0.242741\n", "[165]\ttrain-rmse:0.233493\teval-rmse:0.242019\n", "[166]\ttrain-rmse:0.232785\teval-rmse:0.241236\n", "[167]\ttrain-rmse:0.232113\teval-rmse:0.240538\n", "[168]\ttrain-rmse:0.231448\teval-rmse:0.239996\n", "[169]\ttrain-rmse:0.230898\teval-rmse:0.239428\n", "[170]\ttrain-rmse:0.230326\teval-rmse:0.238819\n", "[171]\ttrain-rmse:0.229715\teval-rmse:0.238149\n", "[172]\ttrain-rmse:0.229058\teval-rmse:0.237391\n", "[173]\ttrain-rmse:0.228336\teval-rmse:0.236686\n", "[174]\ttrain-rmse:0.227743\teval-rmse:0.236005\n", "[175]\ttrain-rmse:0.227188\teval-rmse:0.235316\n", "[176]\ttrain-rmse:0.226576\teval-rmse:0.234718\n", "[177]\ttrain-rmse:0.225921\teval-rmse:0.233964\n", "[178]\ttrain-rmse:0.225286\teval-rmse:0.233209\n", "[179]\ttrain-rmse:0.224611\teval-rmse:0.232514\n", "[180]\ttrain-rmse:0.224121\teval-rmse:0.231974\n", "[181]\ttrain-rmse:0.223554\teval-rmse:0.231389\n", "[182]\ttrain-rmse:0.222938\teval-rmse:0.230591\n", "[183]\ttrain-rmse:0.222368\teval-rmse:0.230006\n", "[184]\ttrain-rmse:0.221852\teval-rmse:0.229488\n", "[185]\ttrain-rmse:0.221213\teval-rmse:0.22879\n", "[186]\ttrain-rmse:0.220518\teval-rmse:0.227971\n", "[187]\ttrain-rmse:0.220076\teval-rmse:0.227468\n", "[188]\ttrain-rmse:0.219669\teval-rmse:0.227056\n", "[189]\ttrain-rmse:0.21918\teval-rmse:0.226464\n", "[190]\ttrain-rmse:0.21871\teval-rmse:0.225987\n", "[191]\ttrain-rmse:0.218218\teval-rmse:0.225402\n", "[192]\ttrain-rmse:0.217701\teval-rmse:0.224801\n", "[193]\ttrain-rmse:0.217214\teval-rmse:0.224224\n", "[194]\ttrain-rmse:0.216694\teval-rmse:0.223686\n", "[195]\ttrain-rmse:0.216036\teval-rmse:0.223017\n", "[196]\ttrain-rmse:0.215364\teval-rmse:0.222351\n", "[197]\ttrain-rmse:0.214899\teval-rmse:0.221838\n", "[198]\ttrain-rmse:0.214338\teval-rmse:0.221244\n", "[199]\ttrain-rmse:0.213877\teval-rmse:0.220764\n", "[200]\ttrain-rmse:0.213324\teval-rmse:0.220193\n", "[201]\ttrain-rmse:0.212605\teval-rmse:0.219451\n", "[202]\ttrain-rmse:0.212054\teval-rmse:0.218773\n", "[203]\ttrain-rmse:0.211368\teval-rmse:0.218094\n", "[204]\ttrain-rmse:0.210884\teval-rmse:0.217538\n", "[205]\ttrain-rmse:0.210421\teval-rmse:0.217114\n", "[206]\ttrain-rmse:0.209907\teval-rmse:0.216516\n", "[207]\ttrain-rmse:0.209387\teval-rmse:0.215891\n", "[208]\ttrain-rmse:0.208686\teval-rmse:0.214936\n", "[209]\ttrain-rmse:0.208159\teval-rmse:0.214348\n", "[210]\ttrain-rmse:0.207863\teval-rmse:0.214075\n", "[211]\ttrain-rmse:0.207414\teval-rmse:0.213616\n", "[212]\ttrain-rmse:0.206923\teval-rmse:0.213013\n", "[213]\ttrain-rmse:0.206341\teval-rmse:0.212406\n", "[214]\ttrain-rmse:0.205881\teval-rmse:0.211968\n", "[215]\ttrain-rmse:0.205259\teval-rmse:0.21123\n", "[216]\ttrain-rmse:0.204775\teval-rmse:0.210702\n", "[217]\ttrain-rmse:0.20435\teval-rmse:0.21011\n", "[218]\ttrain-rmse:0.203849\teval-rmse:0.209552\n", "[219]\ttrain-rmse:0.203468\teval-rmse:0.209204\n", "[220]\ttrain-rmse:0.202964\teval-rmse:0.208647\n", "[221]\ttrain-rmse:0.20258\teval-rmse:0.208229\n", "[222]\ttrain-rmse:0.202187\teval-rmse:0.207791\n", "[223]\ttrain-rmse:0.201756\teval-rmse:0.20726\n", "[224]\ttrain-rmse:0.201325\teval-rmse:0.206733\n", "[225]\ttrain-rmse:0.200918\teval-rmse:0.206284\n", "[226]\ttrain-rmse:0.200547\teval-rmse:0.205834\n", "[227]\ttrain-rmse:0.200003\teval-rmse:0.205323\n", "[228]\ttrain-rmse:0.199743\teval-rmse:0.204965\n", "[229]\ttrain-rmse:0.199318\teval-rmse:0.204527\n", "[230]\ttrain-rmse:0.19873\teval-rmse:0.203787\n", "[231]\ttrain-rmse:0.198261\teval-rmse:0.203157\n", "[232]\ttrain-rmse:0.197734\teval-rmse:0.20245\n", "[233]\ttrain-rmse:0.197388\teval-rmse:0.202029\n", "[234]\ttrain-rmse:0.197017\teval-rmse:0.20157\n", "[235]\ttrain-rmse:0.196598\teval-rmse:0.201135\n", "[236]\ttrain-rmse:0.196114\teval-rmse:0.200748\n", "[237]\ttrain-rmse:0.195742\teval-rmse:0.200389\n", "[238]\ttrain-rmse:0.195308\teval-rmse:0.199833\n", "[239]\ttrain-rmse:0.194935\teval-rmse:0.199443\n", "[240]\ttrain-rmse:0.194592\teval-rmse:0.198978\n", "[241]\ttrain-rmse:0.193996\teval-rmse:0.198277\n", "[242]\ttrain-rmse:0.193602\teval-rmse:0.197903\n", "[243]\ttrain-rmse:0.193149\teval-rmse:0.197439\n", "[244]\ttrain-rmse:0.192726\teval-rmse:0.196872\n", "[245]\ttrain-rmse:0.192395\teval-rmse:0.196441\n", "[246]\ttrain-rmse:0.19214\teval-rmse:0.196092\n", "[247]\ttrain-rmse:0.191754\teval-rmse:0.19566\n", "[248]\ttrain-rmse:0.191368\teval-rmse:0.195321\n", "[249]\ttrain-rmse:0.190934\teval-rmse:0.194774\n", "[250]\ttrain-rmse:0.190518\teval-rmse:0.194258\n", "[251]\ttrain-rmse:0.190115\teval-rmse:0.193791\n", "[252]\ttrain-rmse:0.189729\teval-rmse:0.193406\n", "[253]\ttrain-rmse:0.189412\teval-rmse:0.193034\n", "[254]\ttrain-rmse:0.188999\teval-rmse:0.192507\n", "[255]\ttrain-rmse:0.188653\teval-rmse:0.192147\n", "[256]\ttrain-rmse:0.188278\teval-rmse:0.191794\n", "[257]\ttrain-rmse:0.187767\teval-rmse:0.191309\n", "[258]\ttrain-rmse:0.187474\teval-rmse:0.191003\n", "[259]\ttrain-rmse:0.18708\teval-rmse:0.19056\n", "[260]\ttrain-rmse:0.186751\teval-rmse:0.190134\n", "[261]\ttrain-rmse:0.18632\teval-rmse:0.18964\n", "[262]\ttrain-rmse:0.185957\teval-rmse:0.189304\n", "[263]\ttrain-rmse:0.185497\teval-rmse:0.188872\n", "[264]\ttrain-rmse:0.18518\teval-rmse:0.188537\n", "[265]\ttrain-rmse:0.184851\teval-rmse:0.188166\n", "[266]\ttrain-rmse:0.184492\teval-rmse:0.187696\n", "[267]\ttrain-rmse:0.184162\teval-rmse:0.187351\n", "[268]\ttrain-rmse:0.183756\teval-rmse:0.186909\n", "[269]\ttrain-rmse:0.183425\teval-rmse:0.186566\n", "[270]\ttrain-rmse:0.183157\teval-rmse:0.186233\n", "[271]\ttrain-rmse:0.182845\teval-rmse:0.185848\n", "[272]\ttrain-rmse:0.182382\teval-rmse:0.185321\n", "[273]\ttrain-rmse:0.181988\teval-rmse:0.184951\n", "[274]\ttrain-rmse:0.18166\teval-rmse:0.184534\n", "[275]\ttrain-rmse:0.181327\teval-rmse:0.184128\n", "[276]\ttrain-rmse:0.180906\teval-rmse:0.183577\n", "[277]\ttrain-rmse:0.180485\teval-rmse:0.183009\n", "[278]\ttrain-rmse:0.18008\teval-rmse:0.182563\n", "[279]\ttrain-rmse:0.179739\teval-rmse:0.182097\n", "[280]\ttrain-rmse:0.179393\teval-rmse:0.181688\n", "[281]\ttrain-rmse:0.179023\teval-rmse:0.181365\n", "[282]\ttrain-rmse:0.178572\teval-rmse:0.180867\n", "[283]\ttrain-rmse:0.178326\teval-rmse:0.18053\n", "[284]\ttrain-rmse:0.178034\teval-rmse:0.180175\n", "[285]\ttrain-rmse:0.177641\teval-rmse:0.17966\n", "[286]\ttrain-rmse:0.177327\teval-rmse:0.179176\n", "[287]\ttrain-rmse:0.176989\teval-rmse:0.17889\n", "[288]\ttrain-rmse:0.176747\teval-rmse:0.178603\n", "[289]\ttrain-rmse:0.176487\teval-rmse:0.178302\n", "[290]\ttrain-rmse:0.17609\teval-rmse:0.177954\n", "[291]\ttrain-rmse:0.175773\teval-rmse:0.177582\n", "[292]\ttrain-rmse:0.175445\teval-rmse:0.177289\n", "[293]\ttrain-rmse:0.175207\teval-rmse:0.177089\n", "[294]\ttrain-rmse:0.174892\teval-rmse:0.176631\n", "[295]\ttrain-rmse:0.174567\teval-rmse:0.176259\n", "[296]\ttrain-rmse:0.174219\teval-rmse:0.175851\n", "[297]\ttrain-rmse:0.173919\teval-rmse:0.175445\n", "[298]\ttrain-rmse:0.173607\teval-rmse:0.175114\n", "[299]\ttrain-rmse:0.173319\teval-rmse:0.174804\n", "[300]\ttrain-rmse:0.17305\teval-rmse:0.174532\n", "[301]\ttrain-rmse:0.172741\teval-rmse:0.174241\n", "[302]\ttrain-rmse:0.172493\teval-rmse:0.173963\n", "[303]\ttrain-rmse:0.172104\teval-rmse:0.173566\n", "[304]\ttrain-rmse:0.171852\teval-rmse:0.173254\n", "[305]\ttrain-rmse:0.171537\teval-rmse:0.172841\n", "[306]\ttrain-rmse:0.171339\teval-rmse:0.172652\n", "[307]\ttrain-rmse:0.170964\teval-rmse:0.172193\n", "[308]\ttrain-rmse:0.170696\teval-rmse:0.171894\n", "[309]\ttrain-rmse:0.170394\teval-rmse:0.171555\n", "[310]\ttrain-rmse:0.170058\teval-rmse:0.17119\n", "[311]\ttrain-rmse:0.169682\teval-rmse:0.170843\n", "[312]\ttrain-rmse:0.1693\teval-rmse:0.170432\n", "[313]\ttrain-rmse:0.169042\teval-rmse:0.170165\n", "[314]\ttrain-rmse:0.168781\teval-rmse:0.169887\n", "[315]\ttrain-rmse:0.168508\teval-rmse:0.169491\n", "[316]\ttrain-rmse:0.168253\teval-rmse:0.169193\n", "[317]\ttrain-rmse:0.167968\teval-rmse:0.16884\n", "[318]\ttrain-rmse:0.167764\teval-rmse:0.168594\n", "[319]\ttrain-rmse:0.167357\teval-rmse:0.1682\n", "[320]\ttrain-rmse:0.167047\teval-rmse:0.167865\n", "[321]\ttrain-rmse:0.1668\teval-rmse:0.16759\n", "[322]\ttrain-rmse:0.166481\teval-rmse:0.167166\n", "[323]\ttrain-rmse:0.166182\teval-rmse:0.166894\n", "[324]\ttrain-rmse:0.166005\teval-rmse:0.166694\n", "[325]\ttrain-rmse:0.165763\teval-rmse:0.166461\n", "[326]\ttrain-rmse:0.165443\teval-rmse:0.166138\n", "[327]\ttrain-rmse:0.165182\teval-rmse:0.165808\n", "[328]\ttrain-rmse:0.16489\teval-rmse:0.165487\n", "[329]\ttrain-rmse:0.16466\teval-rmse:0.165233\n", "[330]\ttrain-rmse:0.16438\teval-rmse:0.164916\n", "[331]\ttrain-rmse:0.164039\teval-rmse:0.164527\n", "[332]\ttrain-rmse:0.163831\teval-rmse:0.164288\n", "[333]\ttrain-rmse:0.16359\teval-rmse:0.164008\n", "[334]\ttrain-rmse:0.163367\teval-rmse:0.163699\n", "[335]\ttrain-rmse:0.163133\teval-rmse:0.163415\n", "[336]\ttrain-rmse:0.162833\teval-rmse:0.163104\n", "[337]\ttrain-rmse:0.162578\teval-rmse:0.162879\n", "[338]\ttrain-rmse:0.162447\teval-rmse:0.162746\n", "[339]\ttrain-rmse:0.162206\teval-rmse:0.162486\n", "[340]\ttrain-rmse:0.161988\teval-rmse:0.162203\n", "[341]\ttrain-rmse:0.161837\teval-rmse:0.162007\n", "[342]\ttrain-rmse:0.16166\teval-rmse:0.161807\n", "[343]\ttrain-rmse:0.161418\teval-rmse:0.161502\n", "[344]\ttrain-rmse:0.161222\teval-rmse:0.161321\n", "[345]\ttrain-rmse:0.16107\teval-rmse:0.161146\n", "[346]\ttrain-rmse:0.160776\teval-rmse:0.160854\n", "[347]\ttrain-rmse:0.160607\teval-rmse:0.160657\n", "[348]\ttrain-rmse:0.160397\teval-rmse:0.160369\n", "[349]\ttrain-rmse:0.160109\teval-rmse:0.160017\n", "[350]\ttrain-rmse:0.15985\teval-rmse:0.159681\n", "[351]\ttrain-rmse:0.159681\teval-rmse:0.159486\n", "[352]\ttrain-rmse:0.159438\teval-rmse:0.15911\n", "[353]\ttrain-rmse:0.159154\teval-rmse:0.158708\n", "[354]\ttrain-rmse:0.158934\teval-rmse:0.15845\n", "[355]\ttrain-rmse:0.158735\teval-rmse:0.158236\n", "[356]\ttrain-rmse:0.158474\teval-rmse:0.157874\n", "[357]\ttrain-rmse:0.158275\teval-rmse:0.157645\n", "[358]\ttrain-rmse:0.158049\teval-rmse:0.157418\n", "[359]\ttrain-rmse:0.157843\teval-rmse:0.157232\n", "[360]\ttrain-rmse:0.157664\teval-rmse:0.157026\n", "[361]\ttrain-rmse:0.157488\teval-rmse:0.156811\n", "[362]\ttrain-rmse:0.15728\teval-rmse:0.156613\n", "[363]\ttrain-rmse:0.157064\teval-rmse:0.156373\n", "[364]\ttrain-rmse:0.156831\teval-rmse:0.156136\n", "[365]\ttrain-rmse:0.156649\teval-rmse:0.155935\n", "[366]\ttrain-rmse:0.156479\teval-rmse:0.155737\n", "[367]\ttrain-rmse:0.156294\teval-rmse:0.155528\n", "[368]\ttrain-rmse:0.156066\teval-rmse:0.155179\n", "[369]\ttrain-rmse:0.155858\teval-rmse:0.154915\n", "[370]\ttrain-rmse:0.155605\teval-rmse:0.154658\n", "[371]\ttrain-rmse:0.155392\teval-rmse:0.154364\n", "[372]\ttrain-rmse:0.155214\teval-rmse:0.154156\n", "[373]\ttrain-rmse:0.154991\teval-rmse:0.153916\n", "[374]\ttrain-rmse:0.154794\teval-rmse:0.153693\n", "[375]\ttrain-rmse:0.154607\teval-rmse:0.153476\n", "[376]\ttrain-rmse:0.154451\teval-rmse:0.153326\n", "[377]\ttrain-rmse:0.154257\teval-rmse:0.153135\n", "[378]\ttrain-rmse:0.154011\teval-rmse:0.152844\n", "[379]\ttrain-rmse:0.153769\teval-rmse:0.152616\n", "[380]\ttrain-rmse:0.153571\teval-rmse:0.152468\n", "[381]\ttrain-rmse:0.153365\teval-rmse:0.152261\n", "[382]\ttrain-rmse:0.153188\teval-rmse:0.151991\n", "[383]\ttrain-rmse:0.153047\teval-rmse:0.151824\n", "[384]\ttrain-rmse:0.152912\teval-rmse:0.151676\n", "[385]\ttrain-rmse:0.152731\teval-rmse:0.151519\n", "[386]\ttrain-rmse:0.152538\teval-rmse:0.151273\n", "[387]\ttrain-rmse:0.152372\teval-rmse:0.151109\n", "[388]\ttrain-rmse:0.152256\teval-rmse:0.150997\n", "[389]\ttrain-rmse:0.152091\teval-rmse:0.150779\n", "[390]\ttrain-rmse:0.151871\teval-rmse:0.15056\n", "[391]\ttrain-rmse:0.151691\teval-rmse:0.150345\n", "[392]\ttrain-rmse:0.151489\teval-rmse:0.149996\n", "[393]\ttrain-rmse:0.151336\teval-rmse:0.149807\n", "[394]\ttrain-rmse:0.151202\teval-rmse:0.149678\n", "[395]\ttrain-rmse:0.150981\teval-rmse:0.14938\n", "[396]\ttrain-rmse:0.150718\teval-rmse:0.149044\n", "[397]\ttrain-rmse:0.150566\teval-rmse:0.148879\n", "[398]\ttrain-rmse:0.150394\teval-rmse:0.148657\n", "[399]\ttrain-rmse:0.150228\teval-rmse:0.148461\n", "[400]\ttrain-rmse:0.150131\teval-rmse:0.148315\n", "[401]\ttrain-rmse:0.149968\teval-rmse:0.148157\n", "[402]\ttrain-rmse:0.149775\teval-rmse:0.147935\n", "[403]\ttrain-rmse:0.149626\teval-rmse:0.14775\n", "[404]\ttrain-rmse:0.149504\teval-rmse:0.147572\n", "[405]\ttrain-rmse:0.149313\teval-rmse:0.14743\n", "[406]\ttrain-rmse:0.14915\teval-rmse:0.147247\n", "[407]\ttrain-rmse:0.148981\teval-rmse:0.147044\n", "[408]\ttrain-rmse:0.148801\teval-rmse:0.146836\n", "[409]\ttrain-rmse:0.148638\teval-rmse:0.14664\n", "[410]\ttrain-rmse:0.148482\teval-rmse:0.146484\n", "[411]\ttrain-rmse:0.148286\teval-rmse:0.146268\n", "[412]\ttrain-rmse:0.148149\teval-rmse:0.146109\n", "[413]\ttrain-rmse:0.147988\teval-rmse:0.145895\n", "[414]\ttrain-rmse:0.147817\teval-rmse:0.145679\n", "[415]\ttrain-rmse:0.147605\teval-rmse:0.145547\n", "[416]\ttrain-rmse:0.147463\teval-rmse:0.145402\n", "[417]\ttrain-rmse:0.147277\teval-rmse:0.145244\n", "[418]\ttrain-rmse:0.147105\teval-rmse:0.145054\n", "[419]\ttrain-rmse:0.146989\teval-rmse:0.144866\n", "[420]\ttrain-rmse:0.146794\teval-rmse:0.144706\n", "[421]\ttrain-rmse:0.146701\teval-rmse:0.144627\n", "[422]\ttrain-rmse:0.146477\teval-rmse:0.14436\n", "[423]\ttrain-rmse:0.146313\teval-rmse:0.144221\n", "[424]\ttrain-rmse:0.1462\teval-rmse:0.144085\n", "[425]\ttrain-rmse:0.146066\teval-rmse:0.143929\n", "[426]\ttrain-rmse:0.145882\teval-rmse:0.143765\n", "[427]\ttrain-rmse:0.145744\teval-rmse:0.143639\n", "[428]\ttrain-rmse:0.145639\teval-rmse:0.143595\n", "[429]\ttrain-rmse:0.145516\teval-rmse:0.143452\n", "[430]\ttrain-rmse:0.14531\teval-rmse:0.143175\n", "[431]\ttrain-rmse:0.145142\teval-rmse:0.142957\n", "[432]\ttrain-rmse:0.144966\teval-rmse:0.142784\n", "[433]\ttrain-rmse:0.144853\teval-rmse:0.142675\n", "[434]\ttrain-rmse:0.144798\teval-rmse:0.142609\n", "[435]\ttrain-rmse:0.14464\teval-rmse:0.142401\n", "[436]\ttrain-rmse:0.14451\teval-rmse:0.14226\n", "[437]\ttrain-rmse:0.144391\teval-rmse:0.142137\n", "[438]\ttrain-rmse:0.144201\teval-rmse:0.141939\n", "[439]\ttrain-rmse:0.144007\teval-rmse:0.141804\n", "[440]\ttrain-rmse:0.143864\teval-rmse:0.141624\n", "[441]\ttrain-rmse:0.143744\teval-rmse:0.141481\n", "[442]\ttrain-rmse:0.143591\teval-rmse:0.141358\n", "[443]\ttrain-rmse:0.143476\teval-rmse:0.141262\n", "[444]\ttrain-rmse:0.143322\teval-rmse:0.141109\n", "[445]\ttrain-rmse:0.143195\teval-rmse:0.140984\n", "[446]\ttrain-rmse:0.143047\teval-rmse:0.140853\n", "[447]\ttrain-rmse:0.142952\teval-rmse:0.140742\n", "[448]\ttrain-rmse:0.142756\teval-rmse:0.140562\n", "[449]\ttrain-rmse:0.142683\teval-rmse:0.140447\n", "[450]\ttrain-rmse:0.142557\teval-rmse:0.140325\n", "[451]\ttrain-rmse:0.14243\teval-rmse:0.140195\n", "[452]\ttrain-rmse:0.142261\teval-rmse:0.140004\n", "[453]\ttrain-rmse:0.142111\teval-rmse:0.139803\n", "[454]\ttrain-rmse:0.141881\teval-rmse:0.139646\n", "[455]\ttrain-rmse:0.141826\teval-rmse:0.139634\n", "[456]\ttrain-rmse:0.141733\teval-rmse:0.139536\n", "[457]\ttrain-rmse:0.14164\teval-rmse:0.139422\n", "[458]\ttrain-rmse:0.141556\teval-rmse:0.139311\n", "[459]\ttrain-rmse:0.141471\teval-rmse:0.139167\n", "[460]\ttrain-rmse:0.141333\teval-rmse:0.138978\n", "[461]\ttrain-rmse:0.141208\teval-rmse:0.138892\n", "[462]\ttrain-rmse:0.141105\teval-rmse:0.138723\n", "[463]\ttrain-rmse:0.141\teval-rmse:0.138614\n", "[464]\ttrain-rmse:0.140925\teval-rmse:0.13854\n", "[465]\ttrain-rmse:0.140808\teval-rmse:0.138414\n", "[466]\ttrain-rmse:0.140659\teval-rmse:0.138241\n", "[467]\ttrain-rmse:0.140581\teval-rmse:0.138138\n", "[468]\ttrain-rmse:0.140456\teval-rmse:0.138026\n", "[469]\ttrain-rmse:0.140302\teval-rmse:0.137855\n", "[470]\ttrain-rmse:0.140268\teval-rmse:0.137789\n", "[471]\ttrain-rmse:0.140139\teval-rmse:0.137658\n", "[472]\ttrain-rmse:0.140028\teval-rmse:0.137502\n", "[473]\ttrain-rmse:0.139964\teval-rmse:0.137423\n", "[474]\ttrain-rmse:0.13974\teval-rmse:0.137208\n", "[475]\ttrain-rmse:0.139642\teval-rmse:0.137097\n", "[476]\ttrain-rmse:0.139547\teval-rmse:0.136999\n", "[477]\ttrain-rmse:0.139401\teval-rmse:0.136779\n", "[478]\ttrain-rmse:0.139243\teval-rmse:0.136595\n", "[479]\ttrain-rmse:0.139154\teval-rmse:0.136534\n", "[480]\ttrain-rmse:0.139077\teval-rmse:0.136447\n", "[481]\ttrain-rmse:0.138903\teval-rmse:0.136302\n", "[482]\ttrain-rmse:0.138778\teval-rmse:0.136166\n", "[483]\ttrain-rmse:0.138677\teval-rmse:0.136073\n", "[484]\ttrain-rmse:0.138499\teval-rmse:0.135908\n", "[485]\ttrain-rmse:0.13844\teval-rmse:0.135864\n", "[486]\ttrain-rmse:0.138372\teval-rmse:0.135812\n", "[487]\ttrain-rmse:0.138238\teval-rmse:0.135707\n", "[488]\ttrain-rmse:0.138142\teval-rmse:0.135636\n", "[489]\ttrain-rmse:0.138062\teval-rmse:0.135539\n", "[490]\ttrain-rmse:0.137959\teval-rmse:0.135437\n", "[491]\ttrain-rmse:0.137842\teval-rmse:0.135278\n", "[492]\ttrain-rmse:0.137752\teval-rmse:0.135162\n", "[493]\ttrain-rmse:0.13763\teval-rmse:0.135039\n", "[494]\ttrain-rmse:0.137496\teval-rmse:0.134938\n", "[495]\ttrain-rmse:0.137383\teval-rmse:0.134751\n", "[496]\ttrain-rmse:0.137294\teval-rmse:0.134767\n", "[497]\ttrain-rmse:0.137201\teval-rmse:0.134714\n", "[498]\ttrain-rmse:0.137112\teval-rmse:0.134662\n", "[499]\ttrain-rmse:0.137042\teval-rmse:0.134608\n", "[500]\ttrain-rmse:0.136936\teval-rmse:0.134494\n", "[501]\ttrain-rmse:0.136829\teval-rmse:0.13441\n", "[502]\ttrain-rmse:0.136721\teval-rmse:0.134388\n", "[503]\ttrain-rmse:0.136617\teval-rmse:0.134281\n", "[504]\ttrain-rmse:0.136537\teval-rmse:0.134204\n", "[505]\ttrain-rmse:0.136442\teval-rmse:0.134118\n", "[506]\ttrain-rmse:0.136328\teval-rmse:0.134026\n", "[507]\ttrain-rmse:0.136283\teval-rmse:0.134006\n", "[508]\ttrain-rmse:0.136236\teval-rmse:0.133974\n", "[509]\ttrain-rmse:0.136128\teval-rmse:0.133824\n", "[510]\ttrain-rmse:0.136039\teval-rmse:0.133748\n", "[511]\ttrain-rmse:0.135982\teval-rmse:0.133682\n", "[512]\ttrain-rmse:0.135946\teval-rmse:0.133637\n", "[513]\ttrain-rmse:0.135872\teval-rmse:0.133543\n", "[514]\ttrain-rmse:0.135791\teval-rmse:0.13345\n", "[515]\ttrain-rmse:0.135724\teval-rmse:0.133427\n", "[516]\ttrain-rmse:0.135664\teval-rmse:0.133392\n", "[517]\ttrain-rmse:0.135633\teval-rmse:0.13336\n", "[518]\ttrain-rmse:0.135557\teval-rmse:0.133304\n", "[519]\ttrain-rmse:0.13548\teval-rmse:0.133242\n", "[520]\ttrain-rmse:0.135435\teval-rmse:0.133236\n", "[521]\ttrain-rmse:0.135412\teval-rmse:0.133198\n", "[522]\ttrain-rmse:0.135357\teval-rmse:0.13327\n", "[523]\ttrain-rmse:0.135278\teval-rmse:0.133177\n", "[524]\ttrain-rmse:0.1352\teval-rmse:0.133176\n", "[525]\ttrain-rmse:0.13515\teval-rmse:0.133152\n", "[526]\ttrain-rmse:0.135064\teval-rmse:0.133027\n", "[527]\ttrain-rmse:0.135008\teval-rmse:0.132949\n", "[528]\ttrain-rmse:0.134937\teval-rmse:0.132853\n", "[529]\ttrain-rmse:0.134825\teval-rmse:0.132765\n", "[530]\ttrain-rmse:0.134749\teval-rmse:0.132718\n", "[531]\ttrain-rmse:0.134694\teval-rmse:0.132664\n", "[532]\ttrain-rmse:0.134569\teval-rmse:0.132543\n", "[533]\ttrain-rmse:0.134457\teval-rmse:0.132402\n", "[534]\ttrain-rmse:0.134356\teval-rmse:0.132294\n", "[535]\ttrain-rmse:0.134261\teval-rmse:0.132259\n", "[536]\ttrain-rmse:0.134173\teval-rmse:0.132232\n", "[537]\ttrain-rmse:0.134118\teval-rmse:0.132198\n", "[538]\ttrain-rmse:0.134042\teval-rmse:0.132123\n", "[539]\ttrain-rmse:0.133966\teval-rmse:0.132089\n", "[540]\ttrain-rmse:0.133888\teval-rmse:0.132023\n", "[541]\ttrain-rmse:0.133848\teval-rmse:0.131931\n", "[542]\ttrain-rmse:0.133798\teval-rmse:0.131853\n", "[543]\ttrain-rmse:0.133732\teval-rmse:0.131796\n", "[544]\ttrain-rmse:0.133714\teval-rmse:0.131772\n", "[545]\ttrain-rmse:0.13365\teval-rmse:0.131721\n", "[546]\ttrain-rmse:0.133571\teval-rmse:0.131642\n", "[547]\ttrain-rmse:0.133493\teval-rmse:0.131581\n", "[548]\ttrain-rmse:0.133409\teval-rmse:0.131504\n", "[549]\ttrain-rmse:0.133372\teval-rmse:0.131453\n", "[550]\ttrain-rmse:0.133294\teval-rmse:0.13139\n", "[551]\ttrain-rmse:0.133213\teval-rmse:0.131307\n", "[552]\ttrain-rmse:0.133161\teval-rmse:0.131212\n", "[553]\ttrain-rmse:0.133084\teval-rmse:0.131121\n", "[554]\ttrain-rmse:0.133002\teval-rmse:0.131035\n", "[555]\ttrain-rmse:0.132957\teval-rmse:0.131009\n", "[556]\ttrain-rmse:0.132899\teval-rmse:0.130947\n", "[557]\ttrain-rmse:0.132824\teval-rmse:0.130891\n", "[558]\ttrain-rmse:0.132743\teval-rmse:0.130756\n", "[559]\ttrain-rmse:0.132666\teval-rmse:0.130715\n", "[560]\ttrain-rmse:0.132608\teval-rmse:0.130645\n", "[561]\ttrain-rmse:0.132564\teval-rmse:0.130556\n", "[562]\ttrain-rmse:0.132518\teval-rmse:0.130528\n", "[563]\ttrain-rmse:0.132473\teval-rmse:0.130462\n", "[564]\ttrain-rmse:0.13241\teval-rmse:0.130401\n", "[565]\ttrain-rmse:0.132367\teval-rmse:0.130295\n", "[566]\ttrain-rmse:0.132298\teval-rmse:0.130249\n", "[567]\ttrain-rmse:0.132252\teval-rmse:0.13019\n", "[568]\ttrain-rmse:0.132208\teval-rmse:0.130173\n", "[569]\ttrain-rmse:0.132163\teval-rmse:0.130095\n", "[570]\ttrain-rmse:0.132095\teval-rmse:0.13007\n", "[571]\ttrain-rmse:0.132026\teval-rmse:0.130016\n", "[572]\ttrain-rmse:0.131994\teval-rmse:0.129973\n", "[573]\ttrain-rmse:0.131936\teval-rmse:0.129909\n", "[574]\ttrain-rmse:0.131894\teval-rmse:0.129874\n", "[575]\ttrain-rmse:0.131807\teval-rmse:0.129826\n", "[576]\ttrain-rmse:0.131764\teval-rmse:0.129829\n", "[577]\ttrain-rmse:0.131717\teval-rmse:0.129797\n", "[578]\ttrain-rmse:0.131634\teval-rmse:0.129687\n", "[579]\ttrain-rmse:0.131569\teval-rmse:0.129628\n", "[580]\ttrain-rmse:0.131499\teval-rmse:0.129587\n", "[581]\ttrain-rmse:0.13144\teval-rmse:0.12953\n", "[582]\ttrain-rmse:0.131373\teval-rmse:0.129445\n", "[583]\ttrain-rmse:0.131319\teval-rmse:0.129521\n", "[584]\ttrain-rmse:0.131285\teval-rmse:0.129478\n", "[585]\ttrain-rmse:0.131226\teval-rmse:0.129535\n", "[586]\ttrain-rmse:0.131181\teval-rmse:0.129483\n", "[587]\ttrain-rmse:0.131121\teval-rmse:0.129461\n", "[588]\ttrain-rmse:0.13107\teval-rmse:0.129397\n", "[589]\ttrain-rmse:0.131016\teval-rmse:0.129338\n", "[590]\ttrain-rmse:0.130979\teval-rmse:0.129289\n", "[591]\ttrain-rmse:0.130928\teval-rmse:0.129258\n", "[592]\ttrain-rmse:0.130892\teval-rmse:0.129269\n", "[593]\ttrain-rmse:0.130867\teval-rmse:0.129196\n", "[594]\ttrain-rmse:0.130839\teval-rmse:0.129169\n", "[595]\ttrain-rmse:0.130815\teval-rmse:0.129138\n", "[596]\ttrain-rmse:0.130775\teval-rmse:0.129102\n", "[597]\ttrain-rmse:0.130755\teval-rmse:0.129136\n", "[598]\ttrain-rmse:0.130732\teval-rmse:0.129105\n", "[599]\ttrain-rmse:0.130681\teval-rmse:0.129074\n", "[600]\ttrain-rmse:0.130635\teval-rmse:0.129027\n", "[601]\ttrain-rmse:0.130597\teval-rmse:0.129008\n", "[602]\ttrain-rmse:0.130599\teval-rmse:0.128936\n", "[603]\ttrain-rmse:0.130559\teval-rmse:0.128924\n", "[604]\ttrain-rmse:0.13054\teval-rmse:0.128921\n", "[605]\ttrain-rmse:0.130514\teval-rmse:0.128905\n", "[606]\ttrain-rmse:0.130473\teval-rmse:0.128888\n", "[607]\ttrain-rmse:0.130415\teval-rmse:0.128885\n", "[608]\ttrain-rmse:0.130377\teval-rmse:0.128834\n", "[609]\ttrain-rmse:0.130337\teval-rmse:0.128791\n", "[610]\ttrain-rmse:0.130314\teval-rmse:0.128775\n", "[611]\ttrain-rmse:0.130303\teval-rmse:0.128767\n", "[612]\ttrain-rmse:0.130256\teval-rmse:0.128678\n", "[613]\ttrain-rmse:0.130236\teval-rmse:0.128645\n", "[614]\ttrain-rmse:0.130202\teval-rmse:0.128623\n", "[615]\ttrain-rmse:0.130143\teval-rmse:0.128765\n", "[616]\ttrain-rmse:0.130115\teval-rmse:0.128728\n", "[617]\ttrain-rmse:0.130074\teval-rmse:0.128698\n", "[618]\ttrain-rmse:0.130041\teval-rmse:0.128687\n", "[619]\ttrain-rmse:0.130008\teval-rmse:0.128623\n", "[620]\ttrain-rmse:0.129996\teval-rmse:0.128626\n", "[621]\ttrain-rmse:0.129944\teval-rmse:0.128559\n", "[622]\ttrain-rmse:0.129922\teval-rmse:0.128529\n", "[623]\ttrain-rmse:0.129914\teval-rmse:0.128674\n", "[624]\ttrain-rmse:0.129852\teval-rmse:0.128786\n", "[625]\ttrain-rmse:0.129807\teval-rmse:0.12879\n", "[626]\ttrain-rmse:0.129769\teval-rmse:0.128772\n", "[627]\ttrain-rmse:0.12977\teval-rmse:0.128738\n", "[628]\ttrain-rmse:0.129712\teval-rmse:0.128763\n", "[629]\ttrain-rmse:0.129662\teval-rmse:0.128724\n", "[630]\ttrain-rmse:0.129646\teval-rmse:0.128697\n", "[631]\ttrain-rmse:0.129638\teval-rmse:0.128685\n", "[632]\ttrain-rmse:0.129613\teval-rmse:0.128704\n", "[633]\ttrain-rmse:0.129574\teval-rmse:0.128689\n", "[634]\ttrain-rmse:0.129563\teval-rmse:0.128682\n", "[635]\ttrain-rmse:0.129542\teval-rmse:0.128676\n", "[636]\ttrain-rmse:0.129525\teval-rmse:0.128666\n", "[637]\ttrain-rmse:0.129498\teval-rmse:0.128644\n", "[638]\ttrain-rmse:0.129471\teval-rmse:0.128598\n", "[639]\ttrain-rmse:0.129443\teval-rmse:0.128546\n", "[640]\ttrain-rmse:0.129447\teval-rmse:0.128526\n", "[641]\ttrain-rmse:0.129423\teval-rmse:0.128514\n", "[642]\ttrain-rmse:0.129409\teval-rmse:0.12843\n", "[643]\ttrain-rmse:0.129375\teval-rmse:0.128396\n", "[644]\ttrain-rmse:0.129351\teval-rmse:0.128385\n", "[645]\ttrain-rmse:0.129324\teval-rmse:0.128344\n", "[646]\ttrain-rmse:0.129305\teval-rmse:0.128311\n", "[647]\ttrain-rmse:0.129311\teval-rmse:0.128371\n", "[648]\ttrain-rmse:0.129296\teval-rmse:0.12839\n", "[649]\ttrain-rmse:0.129274\teval-rmse:0.128388\n", "[650]\ttrain-rmse:0.129198\teval-rmse:0.12839\n", "[651]\ttrain-rmse:0.129169\teval-rmse:0.128392\n", "[652]\ttrain-rmse:0.129138\teval-rmse:0.128373\n", "[653]\ttrain-rmse:0.129122\teval-rmse:0.128363\n", "[654]\ttrain-rmse:0.129106\teval-rmse:0.128338\n", "[655]\ttrain-rmse:0.129088\teval-rmse:0.128335\n", "[656]\ttrain-rmse:0.129077\teval-rmse:0.128329\n", "[657]\ttrain-rmse:0.129061\teval-rmse:0.128335\n", "[658]\ttrain-rmse:0.129046\teval-rmse:0.128396\n", "[659]\ttrain-rmse:0.129042\teval-rmse:0.1284\n", "[660]\ttrain-rmse:0.129036\teval-rmse:0.128382\n", "[661]\ttrain-rmse:0.128992\teval-rmse:0.128364\n", "[662]\ttrain-rmse:0.128975\teval-rmse:0.128357\n", "[663]\ttrain-rmse:0.128968\teval-rmse:0.128432\n", "[664]\ttrain-rmse:0.128942\teval-rmse:0.128374\n", "[665]\ttrain-rmse:0.128907\teval-rmse:0.12835\n", "[666]\ttrain-rmse:0.12888\teval-rmse:0.128407\n", "[667]\ttrain-rmse:0.128839\teval-rmse:0.128392\n", "[668]\ttrain-rmse:0.128809\teval-rmse:0.128371\n", "[669]\ttrain-rmse:0.128787\teval-rmse:0.128366\n", "[670]\ttrain-rmse:0.128771\teval-rmse:0.128343\n", "[671]\ttrain-rmse:0.128772\teval-rmse:0.128314\n", "[672]\ttrain-rmse:0.128753\teval-rmse:0.128321\n", "[673]\ttrain-rmse:0.128724\teval-rmse:0.128291\n", "[674]\ttrain-rmse:0.12873\teval-rmse:0.128288\n", "[675]\ttrain-rmse:0.128672\teval-rmse:0.128273\n", "[676]\ttrain-rmse:0.128654\teval-rmse:0.12825\n", "[677]\ttrain-rmse:0.128644\teval-rmse:0.128257\n", "[678]\ttrain-rmse:0.128622\teval-rmse:0.128256\n", "[679]\ttrain-rmse:0.128604\teval-rmse:0.128277\n", "[680]\ttrain-rmse:0.12861\teval-rmse:0.128363\n", "[681]\ttrain-rmse:0.128581\teval-rmse:0.128333\n", "[682]\ttrain-rmse:0.128568\teval-rmse:0.128346\n", "[683]\ttrain-rmse:0.128569\teval-rmse:0.128332\n", "[684]\ttrain-rmse:0.128572\teval-rmse:0.128371\n", "[685]\ttrain-rmse:0.128524\teval-rmse:0.128304\n", "[686]\ttrain-rmse:0.128494\teval-rmse:0.128296\n", "[687]\ttrain-rmse:0.128476\teval-rmse:0.128289\n", "[688]\ttrain-rmse:0.128437\teval-rmse:0.12829\n", "[689]\ttrain-rmse:0.128452\teval-rmse:0.128377\n", "[690]\ttrain-rmse:0.128412\teval-rmse:0.128444\n", "[691]\ttrain-rmse:0.128379\teval-rmse:0.128408\n", "[692]\ttrain-rmse:0.128377\teval-rmse:0.128449\n", "[693]\ttrain-rmse:0.128345\teval-rmse:0.128448\n", "[694]\ttrain-rmse:0.128316\teval-rmse:0.128414\n", "[695]\ttrain-rmse:0.128302\teval-rmse:0.128396\n", "[696]\ttrain-rmse:0.128267\teval-rmse:0.128439\n", "[697]\ttrain-rmse:0.128233\teval-rmse:0.128498\n", "[698]\ttrain-rmse:0.12825\teval-rmse:0.128482\n", "[699]\ttrain-rmse:0.128203\teval-rmse:0.128429\n", "[700]\ttrain-rmse:0.1282\teval-rmse:0.128433\n", "[701]\ttrain-rmse:0.128185\teval-rmse:0.128468\n", "[702]\ttrain-rmse:0.128156\teval-rmse:0.128457\n", "[703]\ttrain-rmse:0.128131\teval-rmse:0.128482\n", "[704]\ttrain-rmse:0.128111\teval-rmse:0.128505\n", "[705]\ttrain-rmse:0.128101\teval-rmse:0.12853\n", "[706]\ttrain-rmse:0.128093\teval-rmse:0.128544\n", "[707]\ttrain-rmse:0.128066\teval-rmse:0.128551\n", "[708]\ttrain-rmse:0.128064\teval-rmse:0.128559\n", "[709]\ttrain-rmse:0.128027\teval-rmse:0.128572\n", "[710]\ttrain-rmse:0.128\teval-rmse:0.128569\n", "[711]\ttrain-rmse:0.127968\teval-rmse:0.128541\n", "[712]\ttrain-rmse:0.127961\teval-rmse:0.128529\n", "[713]\ttrain-rmse:0.127967\teval-rmse:0.128513\n", "[714]\ttrain-rmse:0.127971\teval-rmse:0.12853\n", "[715]\ttrain-rmse:0.127981\teval-rmse:0.128579\n", "[716]\ttrain-rmse:0.127963\teval-rmse:0.128577\n", "[717]\ttrain-rmse:0.12791\teval-rmse:0.128532\n", "[718]\ttrain-rmse:0.127894\teval-rmse:0.128544\n", "[719]\ttrain-rmse:0.127882\teval-rmse:0.128576\n", "[720]\ttrain-rmse:0.127869\teval-rmse:0.128561\n", "[721]\ttrain-rmse:0.127884\teval-rmse:0.128586\n", "[722]\ttrain-rmse:0.127902\teval-rmse:0.128597\n", "[723]\ttrain-rmse:0.127907\teval-rmse:0.128563\n", "[724]\ttrain-rmse:0.127915\teval-rmse:0.128552\n", "[725]\ttrain-rmse:0.127913\teval-rmse:0.128525\n", "[726]\ttrain-rmse:0.127869\teval-rmse:0.128499\n", "Stopping. Best iteration:\n", "[676]\ttrain-rmse:0.128654\teval-rmse:0.12825\n", "\n" ] } ], "source": [ "ave_y = train['SalePrice'].mean()[0]\n", "\n", "# XGBoost uses SVMLight data structure, not Numpy arrays or Pandas data frames \n", "dtrain = xgb.DMatrix(train.as_data_frame()[reals],\n", " train.as_data_frame()['SalePrice'])\n", "dvalid = xgb.DMatrix(valid.as_data_frame()[reals],\n", " valid.as_data_frame()['SalePrice'])\n", "\n", "# tuning parameters\n", "params = {\n", " 'objective': 'reg:linear',\n", " 'booster': 'gbtree', \n", " 'eval_metric': 'rmse',\n", " 'eta': 0.005,\n", " 'subsample': 0.1, \n", " 'colsample_bytree': 0.8,\n", " 'max_depth': 5,\n", " 'reg_alpha' : 0.01,\n", " 'reg_lambda' : 0.0,\n", " 'monotone_constraints':mono_constraints,\n", " 'base_score': ave_y,\n", " 'silent': 0,\n", " 'seed': 12345,\n", "}\n", "\n", "# watchlist is used for early stopping\n", "watchlist = [(dtrain, 'train'), (dvalid, 'eval')]\n", "\n", "# train model\n", "xgb_model1 = xgb.train(params, \n", " dtrain, \n", " 1000,\n", " evals=watchlist, \n", " early_stopping_rounds=50, \n", " verbose_eval=True)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plot variable importance" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "_ = xgb.plot_importance(xgb_model1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Examine monotonic behavior with partial dependence and ICE\n", "* Partial dependence is used to view the global, average behavior of a variable under the monotonic model.\n", "* ICE is used to view the local behavior of a single instance and single variable under the monotonic model.\n", "* Overlaying partial dependence onto ICE in a plot is a convenient way to validate and understand both global and local monotonic behavior." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Helper function for calculating partial dependence" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def par_dep(xs, frame, model, resolution=20, bins=None):\n", " \n", " \"\"\" Creates Pandas dataframe containing partial dependence for a single variable.\n", " \n", " Args:\n", " xs: Variable for which to calculate partial dependence.\n", " frame: H2OFrame for which to calculate partial dependence.\n", " model: XGBoost model for which to calculate partial dependence.\n", " resolution: The number of points across the domain of xs for which to calculate partial dependence.\n", " \n", " Returns:\n", " Pandas dataframe containing partial dependence values.\n", " \n", " \"\"\"\n", " \n", " # don't show progress bars for parse\n", " h2o.no_progress()\n", " \n", " # init empty Pandas frame w/ correct col names\n", " par_dep_frame = pd.DataFrame(columns=[xs, 'partial_dependence'])\n", " \n", " # cache original data \n", " col_cache = h2o.deep_copy(frame[xs], xid='col_cache')\n", " \n", " # determine values at which to calculate partial dependency\n", " if bins == None:\n", " min_ = frame[xs].min()\n", " max_ = frame[xs].max()\n", " by = (max_ - min_)/resolution\n", " bins = np.arange(min_, max_, by)\n", " \n", " # calculate partial dependency \n", " # by setting column of interest to constant \n", " for j in bins:\n", " frame[xs] = j\n", " dframe = xgb.DMatrix(frame.as_data_frame(),)\n", " par_dep_i = h2o.H2OFrame(model.predict(dframe).tolist())\n", " par_dep_j = par_dep_i.mean()[0]\n", " par_dep_frame = par_dep_frame.append({xs:j,\n", " 'partial_dependence': par_dep_j}, \n", " ignore_index=True)\n", " \n", " # return input frame to original cached state \n", " frame[xs] = h2o.get_frame('col_cache')\n", "\n", " return par_dep_frame\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Calculate partial dependence for 3 important variables" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "par_dep_OverallCond = par_dep('OverallCond', valid[reals], xgb_model1)\n", "par_dep_GrLivArea = par_dep('GrLivArea', valid[reals], xgb_model1)\n", "par_dep_LotArea = par_dep('LotArea', valid[reals], xgb_model1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Helper function for finding decile indices" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def get_quantile_dict(y, id_, frame):\n", "\n", " \"\"\" Returns the percentiles of a column y as the indices for another column id_.\n", " \n", " Args:\n", " y: Column in which to find percentiles.\n", " id_: Id column that stores indices for percentiles of y.\n", " frame: H2OFrame containing y and id_. \n", " \n", " Returns:\n", " Dictionary of percentile values and index column values.\n", " \n", " \"\"\"\n", " \n", " quantiles_df = frame.as_data_frame()\n", " quantiles_df.sort_values(y, inplace=True)\n", " quantiles_df.reset_index(inplace=True)\n", " \n", " percentiles_dict = {}\n", " percentiles_dict[0] = quantiles_df.loc[0, id_]\n", " percentiles_dict[99] = quantiles_df.loc[quantiles_df.shape[0]-1, id_]\n", " inc = quantiles_df.shape[0]//10\n", " \n", " for i in range(1, 10):\n", " percentiles_dict[i * 10] = quantiles_df.loc[i * inc, id_]\n", "\n", " return percentiles_dict\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Calculate deciles of SaleProce" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "quantile_dict = get_quantile_dict('SalePrice', 'Id', valid)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Calculate values for ICE" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [], "source": [ "bins_OverallCond = list(par_dep_OverallCond['OverallCond'])\n", "bins_GrLivArea = list(par_dep_GrLivArea['GrLivArea'])\n", "bins_LotArea = list(par_dep_LotArea['LotArea'])\n", "\n", "for i in sorted(quantile_dict.keys()):\n", " \n", " col_name = 'Percentile_' + str(i)\n", " \n", " par_dep_OverallCond[col_name] = par_dep('OverallCond', \n", " valid[valid['Id'] == int(quantile_dict[i])][reals], \n", " xgb_model1, \n", " bins=bins_OverallCond)['partial_dependence']\n", " \n", " par_dep_GrLivArea[col_name] = par_dep('GrLivArea', \n", " valid[valid['Id'] == int(quantile_dict[i])][reals], \n", " xgb_model1, \n", " bins=bins_GrLivArea)['partial_dependence']\n", " \n", " par_dep_LotArea[col_name] = par_dep('LotArea', \n", " valid[valid['Id'] == int(quantile_dict[i])][reals], \n", " xgb_model1, \n", " bins=bins_LotArea)['partial_dependence']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plot Partial Dependence and ICE" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAwEAAAGHCAYAAADoaV75AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xl8VNXd+PHPd5IYhiiBsISAYFgD/ERZtQJJgSDYomJl\nUWxFFtlcAFFEBIqBIouIKAqmTwkGFHyApoJtaQWMRRA3II+gIAEBKwaQCBEwIGTO7497Z5iZTJYJ\nIQHyfb9e85q5555777l3tnPOPYsYY1BKKaWUUkpVHI7yToBSSimllFKqbGkhQCmllFJKqQpGCwFK\nKaWUUkpVMFoIUEoppZRSqoLRQoBSSimllFIVjBYClFJKKaWUqmC0EKCUUkoppVQFo4UApZRSSiml\nKhgtBCillFJKKVXBaCFAeYjIByKSXsJtXSLyx9JO05VORA6ISEp5p+NKISID7c9S/fJOS1FE5A4R\n2S4iuSKSJyJVyjtNlzsR+bX9/iZ4hb0hIvvLM13Fpb9zSqmriRYCLgMi8pD95+J+5IrI1yIyX0Rq\nlfKxmovIlAIyWQZwlebx/I59g995/iIiP4jIZhGZLiL1LtWxy5Ep7wRcYQzFuGYi8pz9GYoKsK6z\niKSJSJaInBWRIyKyRkR+5xXH/7Po/3i6iONHAf8L/Aw8AjwInA72ZIMlIi1E5E0R+U5EzojIIXu5\nxaU+dinyf38DvuciEi4iT4jIxyJywu93sUnZJFUppa5eoeWdAOVhgMnAAaAS0AkYCfxGRG40xpwp\npeO0AKYA6cC3futuL6VjFGUZ8E+sQmg1oD0wGhgtIkOMMf9bRulQV66CMo5JWN+jPcDrwEGgOvBb\nYJWI/N4Y87bXJu7Por/tRRy/PXAtMMkYU6K7Z8ESkXux0psNLAL2A7HAEKCPiNxnjFldFmm51ESk\nOvBvoDXwd+At4BQQB9wPDMX6nVRKKVVCWgi4vPzLGLPNfp0iIj8CTwC9sGodS0xEwoFfAKGAmlZj\nzPmLOUYQthljlnkHiMhEYB3whoh8ZYzZUUZpUVcJEemDVQBYAfzeGJPntfpFEbkdCPPbLN9nsZii\n7eecEmwbkIhUNsb8XMC6hsASYC+QYIz50Wvdy8AmYKmI3GSMOVBaaSpKYWm+SKnAzUBvY8w7fsec\nDEy/BMdUSqkKRZsDXd7ex8q0NwAQkWoiMkdEvhCRkyKSIyL/FJGbvDfyand7n4j8SUS+w2qqMAor\ngwTwgR0nz90+1+4T8L7XfsJEZKqIfG7fjj8lIhtFpHNpn6gx5r/AQCAc8GmKISKRIjJPRL61m0Bk\nisjTIiJecdzNO8aKyBi7Lf7P9jn9P//jiUiciKwSkWy7mcFnInKXXxx3M60OIjJXRI7a1yDNrqn0\n3+ckEfmviJwWkQ0FNdEowfkMFZG9dtxPRaRdAeezwk7jzyKyW0T+5BenjoikiMhhe187RWRQQe+J\n37aD7HM6Ym/7pYiMCBDvgFhNbzqKyCf2td0nIg8GiNtCRN630/tfuyB4Mb9J07BqyYf4FQAAMMas\nM8YEqvUPilj9Zt6wFz+336cUr/V97e/Mz2I1d1sqInX89vGG/R1uaH+HfwLeLOSwTwNOYJh3AcA+\nrx+B4Vh3Jp6299/bTld8gPQPt9e18AoL5vuQICILROQI8F97XX07bLd93sfsz+MNRVzOfETkFqw7\nN3/xLwDY53vOGOP/G9FVRD60v5/HReQdEWnmF8fdhKyRff2Pi/W7liIilfziXiMiL9nfp5/s/dUN\n9lyUUupypncCLm+N7eds+7khcDewEqspQDTWn/8HItLCGHPYb/vJwFngBazM9b+BV4DHgT8Bu+14\nu+xn/zsEVYDBwHLgz8B1WE0P/iUitxhjvrjYE/RmjPlYRPbh1SxJRJzARiAGq3nHf4EOwAygNjDW\nbzcPYWWGXsVqLjAa2CAiLY0xP9j7/H9YNaff2fs5DfQD3hGRewM0qZgP/Ag8h9X84gl7//290jkN\nmIjVdGEt0AZ4D7+a5xKcz+/t83kd6/0ZD/xVRBq6M7piFQI/xHqvk7GawDQC7gQm2XFqAZ8AeVif\ngWPAb4BFInKdMeYVCjcC2AmsBs4DdwELRESMMQu94hmgCdZndBFWZnkwsFhEPjfG7LLTEw18gJXp\nfx6rbf0woETN3kSkMVZTkb8YY4Jpm19ZAhTogBOBChK2PwFfYzVJmYTVhG+fnY6BQArWtX4G6zs6\nBuggIq2NMT/Z+zBYv7//xnrvnsS6BgW5EzhgjPko0EpjzIcicgDoaQf9A6v5TD97/976ATuNMV/Z\naQ72+7AAOAokARF2WHvgV1i/Fd9hfU8eAdLt36Zg3te7sa5PYYUiDxHphtWkax9WU0cnVoXHJhFp\nY4xxN3t0/76tAL7Ben/aAA8DR4AJXrtdBDyA1QxpC9AV65pqH59iEqvfWY3yTodSFdQxr9++ghlj\n9FHOD6yMax7QBav9cl3gPuAHrD/yGDteWIBt6wO5wESvsF9jdfDNBK7xi9/bPlZCgH2lA+97LQsQ\n6henCpAF/I9fuAv4YxHneYMdb2whcf5mp+9ae3kS8BPQ0C/e81jNm+r67fsUUNsrXns7fI5X2Hqs\nNt/+57YJ2O33vriwmml5x3vRPvZ19nINrMzrar94f7K3T/EKC/Z8jgJVvOLdZV+f33qF/Qc44d62\ngOv6F6zMWVW/8GVYBZzwIt67fOuxCjuZfmH77fR18AqrYX9GZ3uFvWTHa+sVVh04bofXLyI9U+x4\nUV7XxQWMKuZ3zn198+xn70cecEsxv7NtvMJCgcNABl7fO6xabRcwxStssb39n4qR1ir29mlFxHvH\n3meEvfwW1ndVvOJEYxXinr2I78MH3vss5PNxix3/915hv8bv98e+Ft94Lf/VjlOlsPP1ir/dPs9I\nr7CW9nku9vvMuIA/+23/V+Co1/JNdrxX/OK9aaer0N85fVj/Sw6HI5cLfXf0oQ99lOHD/v4V+j9q\njNE7AZcRATZ4LRusGsb+xpgsAGPMOU9kEQdQFav28GusGi1/bxhjfilpgoz1a37ePp7YxwsBPi/g\neKXhlP18nf26D1ZNZo5fje0GrJq8BKzaR7e/Ga87IsaYz0TkE6yM2FMiUg2rsDUZiJQLLXDAqrmf\nIiIx7muO9T782S+NH2LV7t6AVTveDavGf75fvHnAs35hwZ7P2+ZC7bH72IJ1VwgRqQHEAy8ZYw5R\nsHux+pWE+B33PawCZxusGs+AjDFn3a/FGgozDOuORnf7TsJJr+hfGa8aa2PMMRH52p1m22+Aj40x\nW73iZYvIW1gd4oPlHp7zZKGx8vsz1l0Lf1+VIA3tgFpYmUTP984Y808R2Y1VS5/kt83rxdjvdfZz\nUefmXl8Fqzb/f7E60XbGKuAD9MX6/KwAq4khwX8f/sf+bfDw+3yE2mn4Bqtw2garQFJcxX4vRaQ2\nVt+BmcYYT/8MY8wOEVmH9b33SSrW3TJvHwL3iMi1xphT9jaGwN/nB4p9FhVbDZfLVenNN9+kefPm\n5Z0WpSqUXbt28Yc//KESVgVcoXcDtBBw+TBYt88zsTLeR4wxX3tHsDPiY7AySQ2wMuTubY8F2OeB\ni02UiDyE1USlGb5NW7652H0X4Fr72Z0BaIJVq/dDgLgGK9PlbW+AeHuwMj9gNbESrPbjfwoQ173P\nLK+w//rFOW4/V7Ofbwh0bDvzexxfwZ6Pz7GNMSfsjJr72O6M9ZcB9geAiNTEKsANw2o+Vpzj+u+j\nI1YG9ldAZb9tI/HNsAX60TnulWawrtnHAeJ9HSCsONwFpesKjZVfpjHm/aKjFcsNWNdjT4B1u4GO\nfmHnjTHfFWO/7mtb1Ln5Fxb+hXVd7uNCIaAfkGGMcX9WS/J9OOAfyW5T/yxWv5669j7d20cWkW5/\n3u/lT4VF5MJ3L9A134VVSHUaY3K9wv0/n97f51NcuEu0zy9eST+bFVbz5s1p0+ZS1RcppS6WFgIu\nL5+ZC6MDBTIRmIrVtGMSVjMOF/AygTtU5gYIKzYR+QPWrfo0YDZW05Q8rD/7hoVsejFuxLo1774j\n4MAaNWgWFzIW3gL9+RfGfZ3mYLXHDsS/IBGobbgUkJ7iHD+Y8ymoXXowx3af85tYo64EUmD/DrFG\nplmPlal6Aqtg8gtWzfYY8n/2SiPNwXL3b2l5CY9R2s4WHQWMMT+JSBZWM5XC3AQccn93jDG/iMg7\nwO9E5BGsfigdse44uZXk+xDod+VVrOZCL2EV7nKwCgD/S/Cdvb3fy81Bblsc5fH5VEqpy44WAq4s\nvbHa7A/zDhSRqgSuWQ7EFB3F53j7jDF9/I43NYh9FJuI3IbVoXWJV/A+rP4B6YG3yifQJEJNuVB7\n6b6Dce4ia4C9r+NBr2O7j+NuquNd+w3Bn09R3OdzYyFxfsCqHQ4p4TnfBVwD3OXd5EhEEkuwL7eD\nBH6vmgUIK5IxJtNuctRLREabSzNsZVEOYmUk47DazXuL48LnpCT+DjwsIh1MgM7B9ihAscBCv1X/\nCwwAEgH3KFkrvNaX1vehN1bzQ8+oPWINS1y1BPt6F6uT7h8ouhDgvqZxAdY1w+ocF2xlyEGsgksj\nrDuz3vtTSqmrhg4RemXJw6+2SkT6Yt1+L67T9j6K8+ecr8ZMRG4FbgvieMViDyX4Blbt6ByvVSuA\n20Ske4BtIkUkxC/4HvEajtEebvBW7AmhjDVC0AfAcLs9sf8+SzKaxXqsJlyP+4U/ESBusOdTKGPM\nMay2+YOlgBmXjTEurM6PvSXwcKlFnbP7c+D5vRCRSKymHyX1T+BX4jXcqd1s6WLaXE/BagO5KNB1\nFJHbRaRn/s1KzedYd8tGiIin6ZyI/AZojpWRL6kXsDqfJ4vfLMn28utY3+05ftutx2rucj9WU6BP\njTGewkgpfh/yyP9/MooLTRaLzRjzMVZTpodFpFeANF0jIi/Ycd0dsR+y+6q449wIdMca0SdYa7F+\nI0f5hY8huEoUpZS6rOmdgMtHcW5F/x2YLNaY5B9h3S7/PfnbrhYmA+sPe7x9B+EssMHOTAY63r12\nk4J/YDUBGo7V/vzaAPGLq62I/B4r01AVawSf3lhNm/5gjNnpFfcFrCED/y4ibwBbsYYlvAmrs2ss\nVrMot71YQwMu5MIQoT/Y+3F7FKsz4A4R+R+s2tBorMJNXaxZSt0Kel884Xbb/znAMyLyd6wMbmvg\nDvLfoQn2fIpjlH0+20Tkz1gj9DTAGkHIfS7PYHUQ/cQ+56+AKKAt1vCHhWX23gPO2WlOxmqr7R5W\nMV/GsZhmAw8C/xZrsqufsYbcPEDRzV4CMsasEJGWWM3VWovIci7MGHwH1nn6FzLcn0V/++zMaGF8\nPhvGmPMiMh5riNCN9vFrY70/32B1LC0RY8xeu3/Om1ifW/eMwQ2whmCtDtxvjNkfIE1pWIWAylhD\nkforje/D34EHxZrv4Ct720QC91Uqzm/dAKzmSX+1v1MbsAo5TexzqQ2Ms+OOw/rOfWxfl8rAY1iF\nH/+O2EUyxvyf/d49Yv9GfmSfS6Nipl0ppa4IWgi4fBSnhul5rD+4B7Bq9bZijWQxM8D2AfdnjDki\nIsOxbrf/BaumrgtWbbLPdsaYN+zx3Idj1ap9hVXo6Ic1io3/8YpzDgbrT/x+rNrzn7Buuc8Fkv07\nShpjcsWazOxZrM69D9rb7AH+SP4ZW5dgFSbGYHVo/AR43BhzxGufu+wa6ClY7ZirY9Xgbsfqc+Gf\n3oLOwzudE0UkF2s8/c5Y7aLdNZHe1zSY8ynomvqEG2O+EJFfYXXuHIFV+DmI1yzTxpij9l2RPwK/\nw+pcno1VoPOZeCnfwYzZIyK9sTqOvoA1DOYCe/tFhaUtwDr3Pg+LNencfKy5D7KxmrIcxvpclogx\nZrKIbMDKeI/AKuicAD4DfmeMWeOXHvdn0V8qgTsu+xwuwPFTReQ0VqFrJlbG9a/AM36jPAXcvtCD\nGbNKRHZhfXcHYxXcsrEmFZxh7HH/A/hfrPk9XAQYCamUvg+jsL7PD2B9/jZhjZr17wDbFPSZ9k7T\nMRHpgDVYwn1Yn71rsPqj/B2vApUxZoOI3IGV4U/CKrB+gHXNS9oEaxDWNfg91oztG7D6wPy3gPQr\npdQVR/xGelPqimQ3J9oPPGWMmVve6VFKqYpKRNoAW7du3aqjA11lOnfujIiQnm51azt48CANGjTg\njTfeYMCAAeWcOgWwbds22rZtC9Y8PIUNNhN8nwARiReRNSJySKwp2O/2Wz9FRHaJNX37jyKyzq6B\nLGyf7uno8+xnl4iUR8c+pZRSSqkCpaam4nA4PA+n00lcXByPP/44R48eLe/kXbRdu3aRlJTEt9/m\nH+1ZRHA4yrY76UcffUSnTp2IiIggJiaG0aNHc/p0MBPDq4KUpDlQBFa78kVYQ0f6+xqrjek3WNO3\njwXeE5FGxpjsQvabgzWKi/f40koppZRSlxURYdq0acTGxnLmzBk2bdrEwoULWbt2LTt37qRSpUrl\nncQS++qrr0hKSqJLly7Ur1/fZ926devKNC0ZGRl069aNFi1a8NJLL/Hdd9/xwgsvsHfvXv7xj5L0\n+1fegi4EGGP+hTVyg3vyKv/1b3svi8hYrPaoN3FhwpoCdm2KO8ylUoEUt1+CUkopdVHuuOMOT3On\nwYMHExUVxUsvvcTq1au57777SrzfvLw8XC4XYWFhRUe+BIwxBMjeARAaWrZdSZ999lmioqL4z3/+\nQ0REBAA33HADw4YNY/369XTr1q1M03O1uaT3dOxh8oZjdcz7vyKiXysiB0TkWxF5R0RaXMq0qauL\nMeagMSbEGPNSeadFKaVUxdO1a1eMMezfbw3SlZOTw5gxY6hfvz6VKlWiSZMmzJ49G+++mAcPHsTh\ncDB37lxefvllGjduTKVKldi1axcAZ8+e5bnnniMuLg6n00mdOnXo3bu35xhgZdrnzZvHjTfeiNPp\npHbt2owYMYITJ074pC82Npa7776bzZs3c+utt+J0OmnUqBFLly71xElNTaVfv36A1f7f4XAQEhLC\nxo0bPWFdu3Yt8lp8/fXX9OnTh+rVq+N0Omnfvj3vvvtuUNfz5MmTrF+/ngcffNBTAAAYMGAAERER\nrFixopCtVXFckiKdPRb321gj2XwP3G6MKWzYw6+xRrv4AmuK+XHARyLSwhjzfQHHqIw1ecvucpoY\nSCmllLoi6X9o6du715pcu0aNGuTm5pKQkEBWVhYjRoygXr16fPTRR0yYMIHDhw8zd67v+BUpKSmc\nPXuW4cOHEx4eTlRUFC6Xi549e5Kenk7//v0ZM2YMJ0+eZN26dezcuZMGDRoAMGzYMJYsWcLgwYMZ\nPXo0+/fvZ/78+WRkZLB582ZCQqzpOkSEzMxM+vbty5AhQxg4cCApKSkMGjSIdu3a0bx5cxISEhg1\nahTz589n0qRJNGtmzZHXvHlzzz6K8uWXX9KpUyeuv/56JkyY4Mmw33PPPaSlpdGrV77pPwLasWMH\n58+fd3dy9QgLC6NVq1Zs3769WPtRBbtU93XeB27GGsJuKLBSRG4pYCx69+QwnuH4RGQLsAvrLsKU\nAo7RCms2yW0icspv3b+whqZTSimlKroeWHNleLsWaAN0xJoLoVz8/PPP7N69+5Ifp1mzZlSuXLlU\n95mTk0N2dranT8C0adOIiIigZ8+evPjii+zfv5+MjAwaNmwIwNChQ4mJiWHOnDk8+eST1K17YZ7P\nQ4cOsW/fPqKiLswFuHjxYt5//33mzZvHqFEX5q57+ukLozpv2rSJRYsWsXz5cp8mSF26dKFHjx6s\nXLmS+++/MArynj17+PDDD+nQoQMAffv2pV69eixevJjZs2fToEED4uPjmT9/Pt26dSMhwX808KKN\nHj2a2NhYPvvsM0/zoZEjR9KpUyfGjx9f7EJAVlYWIkJMTEy+dTExMWzatCnotClfl6QQYE/T/o39\n+FRE9mD1C5hVzO3Pi8h2oHEh0WLt50DjjyVgjamvlFJKqYLFUo6FgN27d+er6b0USnu4UmMMiYmJ\nnmURITY2luXLlxMTE8OqVauIj48nMjKS7OwLY6IkJiYyc+ZMNm7cSP/+/T3hffr08SkAAKSlpVGz\nZk0ee+yxAtOxatUqqlatSmJios9xWrduzbXXXkt6erpPIaBFixaeAgBYdy3i4uL45ptvSnYh/Bw/\nfpz09HSmTZtGTo7vND7du3cnKSmJrKysgBl7f7m5uQCEh4fnW1epUiXPelVyZdXDwwHkfxcLICIO\nrNlwC+v6fQDgzTff9NymqgieeOIJXnqpYjV713OuGPScK46KeN6X2znv2rWLP/zhD2D/l5aXZs2a\nsXXr1jI5TmkSERYsWECTJk0IDQ0lOjqauLg4z/rMzEx27NhBzZo1A27rP5RobGxsvnj79u0jLi6u\n0CE5MzMzOXHiBLVq1SrWcfxH+wGoVq0ax48fL/AYwdi7dy/GGCZPnsykSZMKTFNxCgFOpxOw+kX4\nO3PmjGe9KrmgCwEiEoFVQ+9uGNZQRG4GfsSavXIisAbIwmoO9BhQB6+ZKkUkFThkjHnWXp6M1Rxo\nL1AVawbT+hQ+c+gZsNqpVaTJSCIjIyvU+YKec0Wh51xxVMTzvozP+Ux5Hrxy5cqX63UpUvv27QtM\nu8vl4vbbb2f8+PEEmpS1adOmPsslzdC6XC6io6NZtmxZwOP4F0Lc/QP8ldbEsS6XC4CnnnqKHj16\nBIzTuHFhjTwuiImJwRhDVlZWvnVZWVnUqVOn5AlVQMnuBLTDGurTPRzji3Z4KjASq6PRAC5Maf8Z\n0MkYs8trH/WAPK/lasCfgdrAcWArcJsx5tI3FFRKKaWUKkWNGjXi1KlTdOnS5aL28emnn5KXl1dg\n5r1Ro0Zs2LCBDh06BGw2UxLF6fxbEHf/h7CwsGKNIlSYG2+8kdDQUD7//HP69OnjCT937hwZGRkX\nNQyrsgQ9RKgx5j/GGIc9HKP3Y7Ax5qwxprcxpp4xxmmMud4Y8zv/aYuNMV2NMYO9lscaYxrY29Qx\nxtxljPmiNE5QKaWUUqos9evXjy1btvDee+/lW5eTk0NeXl6ArXz17t2bH374gVdffbXQ45w/f56p\nU6fmW5eXl5evXX5xREREYIzJN8RocdSsWZPOnTuTnJzM4cOH860/dizg+DABValShW7duvHmm2/6\nzBC8ZMkSTp8+7RnKVJVc2c76oJRSSil1hSuq+cy4ceNYs2YNd955JwMHDqRt27acPn2aL774grS0\nNA4cOJCvI7C/AQMGsGTJEsaOHcsnn3xCfHw8p06dYsOGDTz66KPcddddJCQkMHz4cGbOnElGRgbd\nu3cnLCyMPXv2sGrVKl555RXuvffeoM6tVatWhISEMGvWLE6cOEF4eDiJiYnUqFGjWNu/9tprxMfH\n07JlS4YOHUrDhg05cuQIW7Zs4dChQ0EN7Tl9+nQ6duxIQkICw4YN47///S9z586lR48e3H777UGd\nl8pPCwFXGO/RBCoKPeeKQc+54qiI510Rz/lqVlSTGafTycaNG3n++edZuXIlS5cupUqVKjRt2pSp\nU6cSGRnps69A+3M4HKxdu5bp06ezbNky0tLSqF69uieD7bZw4ULatWtHcnIyEydOJDQ0lNjYWAYM\nGEDHjh2LPI7/+URHR5OcnMyMGTN4+OGHycvLIz093TNcqP8+/JebN2/O559/TlJSEqmpqWRnZ1Or\nVi1at27NlCkFjfoeWOvWrVm/fj3jx49n7NixXHfddQwdOpTnn9cBIEuDlFZnkLImIm2AraU97JdS\nSil1tdu2bZt7aM62/k12L5b+PytVfoL5bgfdJ0AppZRSSil1ZdPmQEoppZRSqswcOXKk0PVOp5Mq\nVaqUUWoqLi0EKKWUUkqpMhMTE4OIBOxgLSI89NBDpKSklEPKKhYtBCillFJKqTKzfv36QtfrRGBl\nQwsBSimllFKqzFzsRGKqdGjHYKWUUkoppSoYLQQopZRSSilVwWghQCmllFJKqQpGCwFKKaWUUkpV\nMFoIUEoppZRSqoLRQoBSSimllFIVjBYClFJKKaVUkTp37kyXLl08ywcPHsThcLBkyZJyTJUqKS0E\nKKWUUkoVU2pqKg6Hw/NwOp3ExcXx+OOPc/To0fJO3kXbtWsXSUlJfPvtt/nWiQgOR9llHdetW8eQ\nIUNo2bIloaGhNGzYsMC4xhhmz55Nw4YNcTqd3Hzzzbz99ttlltYrkU4WppRSSikVBBFh2rRpxMbG\ncubMGTZt2sTChQtZu3YtO3fupFKlSuWdxBL76quvSEpKokuXLtSvX99n3bp168o0LcuWLWPFihW0\nadOGunXrFhr32WefZdasWQwfPpx27dqxevVqHnjgARwOB/369SujFF9Z9E6AUkoppVSQ7rjjDh54\n4AEGDx5MSkoKY8aMYf/+/axevfqi9puXl8e5c+dKKZXBM8YgIgHXhYaGEhpadvXHM2bM4KeffuLD\nDz/kpptuKjDe999/z9y5c3n88cdZuHAhQ4YMYc2aNcTHxzNu3DiMMWWW5iuJFgKUUkoppS5S165d\nMcawf/9+AHJychgzZgz169enUqVKNGnShNmzZ/tkSN1t6ufOncvLL79M48aNqVSpErt27QLg7Nmz\nPPfcc8TFxeF0OqlTpw69e/f2HAOsTPu8efO48cYbcTqd1K5dmxEjRnDixAmf9MXGxnL33XezefNm\nbr31VpxOJ40aNWLp0qWeOKmpqZ5a886dO+NwOAgJCWHjxo2esK5duxZ5Lb7++mv69OlD9erVcTqd\ntG/fnnfffTfoa1q7dm1CQkKKjPfOO+9w/vx5Ro4c6RM+cuRIvvvuO7Zs2RL0sSsCbQ6klFJKKXWR\n9u7dC0CNGjXIzc0lISGBrKwsRowYQb169fjoo4+YMGEChw8fZu7cuT7bpqSkcPbsWYYPH054eDhR\nUVG4XC569uxJeno6/fv3Z8yYMZw8eZJ169axc+dOGjRoAMCwYcNYsmQJgwcPZvTo0ezfv5/58+eT\nkZHB5s2bPZloESEzM5O+ffsyZMgQBg4cSEpKCoMGDaJdu3Y0b96chIQERo0axfz585k0aRLNmjUD\noHnz5p6sVpnmAAAgAElEQVR9FOXLL7+kU6dOXH/99UyYMIGIiAhWrFjBPffcQ1paGr169Sq1a+6W\nkZFBRESEJ71ut9xyC8YYtm/fTocOHUr9uFc6LQQopZRSSgUpJyeH7OxsT5+AadOmERERQc+ePXnx\nxRfZv38/GRkZns6sQ4cOJSYmhjlz5vDkk0/6tHE/dOgQ+/btIyoqyhO2ePFi3n//febNm8eoUaM8\n4U8//bTn9aZNm1i0aBHLly/nvvvu84R36dKFHj16sHLlSu6//35P+J49e/jwww89GeK+fftSr149\nFi9ezOzZs2nQoAHx8fHMnz+fbt26kZCQEPR1GT16NLGxsXz22WeepkMjR46kU6dOjB8//pIUArKy\nsoiOjs4XHhMTA1jNhVR+WghQSimlVLk4+/M5vtt9/JIf5/pm1QivHFZq+zPGkJiY6FkWEWJjY1m+\nfDkxMTGsWrWK+Ph4IiMjyc7O9sRLTExk5syZbNy4kf79+3vC+/Tp41MAAEhLS6NmzZo89thjBaZj\n1apVVK1alcTERJ/jtG7dmmuvvZb09HSfQkCLFi18asRr1KhBXFwc33zzTckuhJ/jx4+Tnp7OtGnT\nyMnJ8VnXvXt3kpKSyMrK8mTOS0tubi7h4eH5wt0dtHNzc0v1eFcLLQQopZRSqlx8t/s4T7VdccmP\nM2drPxq1qVVq+xMRFixYQJMmTQgNDSU6Opq4uDjP+szMTHbs2EHNmjUDbus/lGhsbGy+ePv27SMu\nLq7QITkzMzM5ceIEtWrlP7dAx/Ef7QegWrVqHD9eOgWxvXv3Yoxh8uTJTJo0qcA0lXYhwOl0cvbs\n2XzhZ86c8axX+WkhQCmllFLl4vpm1Ziz9dIP33h9s2qlvs/27dvTpk2bgOtcLhe3334748ePDzgy\nTdOmTX2WS5pJdblcREdHs2zZsoDH8S+EFNTJtrRGz3G5XAA89dRT9OjRI2Ccxo0bl8qxvMXExPDB\nBx/kC8/KygKgTp06pX7Mq4EWApRSSilVLsIrh5VqDf3lolGjRpw6dcpndt2S7OPTTz8lLy+vwMx7\no0aN2LBhAx06dAjYHKYkitP5tyDu/g9hYWHFGkWotLRq1YpFixaxe/dun87BH3/8MSJCq1atyiwt\nVxIdIlQppZRSqhT169ePLVu28N577+Vbl5OTQ15eXpH76N27Nz/88AOvvvpqocc5f/48U6dOzbcu\nLy8vX7v84oiIiMAYk2+I0eKoWbMmnTt3Jjk5mcOHD+dbf+zYsaD3WRy9evUiNDSUBQsW+IS//vrr\n1K1bV0cGKoDeCVBKKaWUCkJRzWfGjRvHmjVruPPOOxk4cCBt27bl9OnTfPHFF6SlpXHgwIF8HYH9\nDRgwgCVLljB27Fg++eQT4uPjOXXqFBs2bODRRx/lrrvuIiEhgeHDhzNz5kwyMjLo3r07YWFh7Nmz\nh1WrVvHKK69w7733BnVurVq1IiQkhFmzZnHixAnCw8NJTEykRo0axdr+tddeIz4+npYtWzJ06FAa\nNmzIkSNH2LJlC4cOHWL79u3FTsuOHTtYs2YNYPU3yMnJYfr06QDcfPPN3HnnnQDUrVuXMWPGMGfO\nHH755Rfat2/P3/72NzZv3syyZcsu6u7G1UwLAUoppZRSQSgqU+l0Otm4cSPPP/88K1euZOnSpVSp\nUoWmTZsydepUIiMjffYVaH8Oh4O1a9cyffp0li1bRlpaGtWrV/dksN0WLlxIu3btSE5OZuLEiYSG\nhhIbG8uAAQPo2LFjkcfxP5/o6GiSk5OZMWMGDz/8MHl5eaSnp3uGC/Xfh/9y8+bN+fzzz0lKSiI1\nNZXs7Gxq1apF69atmTJlSqHXzd+2bdv44x//6BPmXn7ooYc8hQCAWbNmERUVRXJyMqmpqTRp0oS3\n3nrLZ+hU5Uuu1KmURaQNsHXr1q0FdsxRSimlVH7btm2jbdu2AG2NMdtKc9/6/6xU+Qnmu619ApRS\nSimllKpgtDmQUkoppZQqM0eOHCl0vdPppEqVKmWUmopLCwFKKaWUUqrMxMTEICIBO1iLCA899BAp\nKSnlkLKKRQsBSimllFKqzKxfv77Q9Tq5V9kIuhAgIvHAOKAtEAPcY4xZ47V+CnA/UA/4BdgKTDTG\nfFrEfvsCU4FYYA/wjDFmbbDpU0opVVIGOFfeiSgFLuA8kGc/F/d1MNtcanlYf6Hn/J4DhZVk3eky\nOAelAivLicRUwUpyJyACyAAWAWkB1n8NPAp8AziBscB7ItLIGJMdaIci0gFYBowH/gH8HnhHRFob\nY74qQRqVUqqCM8BJ4BiQbT8X9No77GooBFwtQoFrgDC/56LCKhcj/g+A78RKSqmKJehCgDHmX8C/\nACTAgLPGmLe9l0VkLDAEuAlIL2C3o4C1xpi59vIfReR24DHgkWDTqJRSZc8AZ7BqoV32cqDHxaxz\nATkUnal3vw6Uoa8M1ACq28+1gRu9wq4DrvSJdQTr7837EVLA62DWuZdDuPTXSLi0A/htQwsBSlVs\nl7RPgIiEAcOBE8D/FRL1NuBFv7B/A70uUdKUUqoIBjiFVWN61Ou5oNc/UPa16BH4ZuhjgJZ+Yd6v\nq2PdoFVKKVXRXZJCgIj0BN7GqnL6HrjdGPNjIZvUBvzHizpihyulVCnJpfgZ+qNYNfv+qgM1gVr2\no7HX60is2lsHVk1uoEdJ1nmHR3IhQ1/p4i+JUkqpCulS3Ql4H7gZ659qKLBSRG4xxhy7RMdTSpWK\nHCDTfuzxep0J/FyO6SoNBqtTpL9IrAy8O2Pf1uu1d2a/JtZPmg6qppRS6sp3Sf7NjDG5WB2DvwE+\nFZE9WP0CZhWwyWEg2i8s2g4v1BNPPEFkZKRPWP/+/enfv3+wyVaqgvgZ2ItvJt/9+qhXvJpAU6AF\nVsu8q2Hilqr4ZuxrAOHlmiKlLrXly5ezfPlyn7CcnJxySo1S6nJRVlVaDgr/p90CJAKveIXdbocX\n6qWXXqJNmzYXlzqlrjpnscrggWr1v/OKF4mV0W+C9ZVr4vWoWobpVUpdKoEqxrZt20bbtm3LKUVK\nqctBSeYJiMBqBOseGqGhiNwM/Ig1HMVEYA2QhVXN9hhQB1jptY9U4JAx5lk76GXgA3skoX8A/bHu\nyQ8twTkpdRnJBb7A+moUZySYgkaHKSquu3bfneE/aK8Hq2tOE6zM/m1er5tgfUWv9JFglFJKlYXO\nnTsjIqSnW4M9Hjx4kAYNGvDGG28wYMCAck6dClZJ7gS0wxrq0537cI/qkwqMBJoBA7ByF9nAZ0An\nY8wur33Uw2u2FWPMFhF5AJhuPzKBXjpHgLqynAV2AJ97PXZSNhMLhQONsDL2vbmQyW+KNWKMZvSV\nUqo0pKamMmjQIM9yeHg49evXp3v37kyePJlatWqVY+ou3q5du1ixYgWDBg2ifv36PutEBIfjUg5d\ne0Fubi4pKSmsWbOGHTt2cOrUKRo3bsywYcMYNmxYvnQYY3jhhRd4/fXXycrKomnTpkyYMIH777+/\nTNJ7JSrJPAH/ofDBi3sXYx/5poozxvwV+Guw6VGqfJwDvuJCZv8zrBr/c1hjiLcE2mOVi92Taxc2\nCkxRy4XFUUopVZZEhGnTphEbG8uZM2fYtGkTCxcuZO3atezcuZNKla7ckbu++uorkpKS6NKlS75C\nwLp168osHd988w2jRo2iW7duPPnkk1SpUoV///vfPPLII3zyyScsXrzYJ/6zzz7LrFmzGD58OO3a\ntWP16tU88MADOBwO+vXrV2bpvpLoMBdKFSkP2I1vDX8G1vCRDqyOs+2AQfbzTehY7EopdXW74447\nPH0SBw8eTFRUFC+99BKrV6/mvvvuK/F+8/LycLlchIWFlVZSg2KMIcBcsACEhpZdtrF27drs3LmT\n5s2be8KGDh3KkCFDeOONN5g8eTINGzYE4Pvvv2fu3Lk8/vjjvPzyywAMGTKEX//614wbN46+ffsW\neE4VWdnc01HqiuHCalO/DBgLJGB1nr0RGAisw2p2MwP4EGtIzR3AYuBR4Fa0AKCUUhVP165dMcaw\nf/9+wBqBacyYMdSvX59KlSrRpEkTZs+ejTHGs83BgwdxOBzMnTuXl19+mcaNG1OpUiV27bJaUJ89\ne5bnnnuOuLg4nE4nderUoXfv3p5jgJVpnzdvHjfeeCNOp5PatWszYsQITpw44ZO+2NhY7r77bjZv\n3sytt96K0+mkUaNGLF261BMnNTXVU2veuXNnHA4HISEhbNy40RPWtWu+xhz5fP311/Tp04fq1avj\ndDpp37497777blDXs3r16j4FALff/e53AJ5rBPDOO+9w/vx5Ro4c6RN35MiRfPfdd2zZUuQ4MxXS\nVXAnYCPWfGRKldRJYDtWDf9W4Cc7vCFWk567sWr4W2MVCJRSSilfe/fuBaBGjRrk5uaSkJBAVlYW\nI0aMoF69enz00UdMmDCBw4cPM3fuXJ9tU1JSOHv2LMOHDyc8PJyoqChcLhc9e/YkPT2d/v37M2bM\nGE6ePMm6devYuXMnDRo0AGDYsGEsWbKEwYMHM3r0aPbv38/8+fPJyMhg8+bNhISEAFYTpszMTPr2\n7cuQIUMYOHAgKSkpDBo0iHbt2tG8eXMSEhIYNWoU8+fPZ9KkSTRr1gzAkxkvTm36l19+SadOnbj+\n+uuZMGECERERrFixgnvuuYe0tDR69ep1Udc5KyvLc53dMjIyiIiI8KTX7ZZbbsEYw/bt2+nQocNF\nHfdqdBUUAp4o7wSoq0J9rIz+M/ZzWyCqXFOklFJXu19+Nhzd7So64kWq1czBNZVLtzlITk4O2dnZ\nnj4B06ZNIyIigp49e/Liiy+yf/9+MjIyPE1Whg4dSkxMDHPmzOHJJ5+kbt26nn0dOnSIffv2ERV1\n4X9n8eLFvP/++8ybN49Ro0Z5wp9++mnP602bNrFo0SKWL1/u0wSpS5cu9OjRg5UrV/p0jN2zZw8f\nfvihJ0Pct29f6tWrx+LFi5k9ezYNGjQgPj6e+fPn061bNxISEoK+LqNHjyY2NpbPPvvM03xo5MiR\ndOrUifHjx19UIeDcuXPMmzePhg0b0r59e094VlYW0dH+001BTEwMYDUXUvldBYWA97DaYCtVUuHo\nmPhKKVX2ju528VL73Et+nCc+c3J9m5BS258xhsTERM+yiBAbG8vy5cuJiYlh1apVxMfHExkZSXZ2\ntideYmIiM2fOZOPGjT5zN/Tp08enAACQlpZGzZo1eeyxxwpMx6pVq6hatSqJiYk+x2ndujXXXnst\n6enpPoWAFi1a+NSI16hRg7i4OL755puSXQg/x48fJz09nWnTpuWbkK579+4kJSWRlZXlyZwH69FH\nH2X37t3885//9BkdKDc3l/Dw/NNRuTto5+Ze+s/YlegqKARUJ/9kw0oppZS63NVq5uCJzy59P6pa\nzUq3C6SIsGDBApo0aUJoaCjR0dHExcV51mdmZrJjxw5q1qwZcNujR4/6hMXGxuaLt2/fPuLi4god\nkjMzM5MTJ04EHJY00HH8R/sBqFatGsePHy/wGMHYu3cvxhgmT57MpEmTCkxTSQoBL7zwAn/5y1+Y\nPn06PXr08FnndDo5e/Zsvm3OnDnjWa/yuwoKAUoppZS6El1TWUq1hr4stW/f3jM6kD+Xy8Xtt9/O\n+PHjfToCuzVt2tRnuaSZVJfLRXR0NMuWLQt4HP9CiLt/gL9A25Y0PQBPPfVUvoy6W+PGjYPe7xtv\nvMEzzzzDI488woQJE/Ktj4mJ4YMPPsgX7u4/UKdOnaCPWRFoIUAppZRSqhQ1atSIU6dO0aVLl4va\nx6effkpeXl6BmfdGjRqxYcMGOnToELA5TElczFCa7v4PYWFhxRpFqDhWr17N0KFD6dOnD6+++mrA\nOK1atWLRokXs3r3bp3Pwxx9/jIjQqlWrUknL1UaHCFVKKaWUKkX9+vVjy5YtvPfee/nW5eTkkJdX\n9EzyvXv35ocffigw4+s+zvnz55k6dWq+dXl5efna5RdHREQExph8Q4wWR82aNencuTPJyckcPnw4\n3/pjx44FtT9334nOnTvz5ptvFhivV69ehIaGsmDBAp/w119/nbp16+rIQAXQOwFKKaWUUkEoqvnM\nuHHjWLNmDXfeeScDBw6kbdu2nD59mi+++IK0tDQOHDiQryOwvwEDBrBkyRLGjh3LJ598Qnx8PKdO\nnWLDhg08+uij3HXXXSQkJDB8+HBmzpxJRkYG3bt3JywsjD179rBq1SpeeeUV7r333qDOrVWrVoSE\nhDBr1ixOnDhBeHg4iYmJPkNyFua1114jPj6eli1bMnToUBo2bMiRI0fYsmULhw4dYvv27cXaz7ff\nfsvdd9+Nw+Hg3nvvZcWKFT7rb7rpJlq2bAlA3bp1GTNmDHPmzOGXX36hffv2/O1vf2Pz5s0sW7ZM\nJworgBYClFJKKaWCUFSm0ul0snHjRp5//nlWrlzJ0qVLqVKlCk2bNmXq1KlERl6Yc0ZEAu7P4XCw\ndu1apk+fzrJly0hLS6N69eqeDLbbwoULadeuHcnJyUycOJHQ0FBiY2MZMGAAHTt2LPI4/ucTHR1N\ncnIyM2bM4OGHHyYvL4/09HTPcKH++/Bfbt68OZ9//jlJSUmkpqaSnZ1NrVq1aN26NVOmTCn0unnb\nv38/J0+eBAg4QtKUKVN8rsOsWbOIiooiOTmZ1NRUmjRpwltvvXVRszdf7aS0OoOUNRFpA2zdunVr\ngR1zlFJKKZXftm3baNu2LUBbY8y20ty3/j8rVX6C+W5rnwCllFJKKaUqGG0OpJRSSimlysyRI0cK\nXe90OqlSpUoZpabi0kKAUkoppZQqMzExMYhIwA7WIsJDDz1ESkpKOaSsYtFCgFJKKaWUKjPr168v\ndL1O7lU2tBCglFJKKaXKTGlNJKYujnYMVkoppZRSqoLRQoBSSimllFIVjBYClFJKKaWUqmC0EKCU\nUkoppVQFo4UApZRSSimlKhgtBCillFJKKVXBaCFAKaWUUkoVqXPnznTp0sWzfPDgQRwOB0uWLCnH\nVKmS0kKAUkoppVQxpaam4nA4PA+n00lcXByPP/44R48eLe/kXbRdu3aRlJTEt99+m2+diOBwlF3W\nccaMGdx2223UqlULp9NJ06ZNeeKJJzh27Fi+uMYYZs+eTcOGDXE6ndx88828/fbbZZbWK5FOFqaU\nUkpVAMa4wHUWXGdxnfuxvJNzRRMRpk2bRmxsLGfOnGHTpk0sXLiQtWvXsnPnTipVqlTeSSyxr776\niqSkJLp06UL9+vV91q1bt65M07J161Zat25N//79ue6669i1axd//vOf+ec//0lGRgZOp9MT99ln\nn2XWrFkMHz6cdu3asXr1ah544AEcDgf9+vUr03RfKbQQoJRSCrAziXk/+4cGt2yKil8GjAtDHpjz\nYC48G79l92tDHrjOA77r8se390Oe13l6n1+AMFOS9VjpsjPsmF8uvHadtV4b9+tfLoQbr/WesAvr\nMec9u8/NLOnFVW533HEHbdq0AWDw4MFERUXx0ksvsXr1au67774S7zcvLw+Xy0VYWFhpJTUoxhhE\nJOC60NCyzTauWrUqX9ivfvUr+vbty7vvvuvJ3H///ffMnTuXxx9/nJdffhmAIUOG8Otf/5px48bR\nt2/fAs+pItNCgFJKXYWM6xfMuR8x545hzmVfePzit2yv51w25txxwFXeSb9CeDWJ8MlcFON1gfG9\nliUEcYSD/RC55sJrd7iEI45KEBoJjnAcnvBrfLf17ONCWLh8BzxxMRdA+enatStz585l//79AOTk\n5DBlyhTS0tI4evQo9erVY+jQoYwbN86TIT148CANGjRgzpw5hISEMH/+fA4ePMjWrVu56aabOHv2\nLDNmzGD58uV8++23VKtWjdtuu405c+bQoEEDwMq0v/zyy/zlL39h3759REZGcs899zBz5kyqVq3q\nSV9sbCw33XQT48ePZ+zYsXzxxRfUqVOH5557jgcffBCwmjoNGjQIEaFz586AddcjPT2dhIQEOnfu\njMPh4P333y/0Wnz99ddMnDiR9PR0fv75Z2688Ub++Mc/ctddd130db7hhhswxnDixAlP2DvvvMP5\n8+cZOXKkT9yRI0fy+9//ni1bttChQ4eLPvbVRgsBSilVCoxxwfkcuxbaAC67ltcFGL/XgZ9Nvm3y\nP5vzJwJm4v0z+eSdDJBKgbBqSFgNJKw6ElYdR+WmPssSeh0Bu4vlq0ULVKtW3LBLTASRUJAQkFDA\nfpYQ33ApPFwIKSDuld+dLvTQtvJOwlVn7969ANSoUYPc3FwSEhLIyspixIgR1KtXj48++ogJEyZw\n+PBh5s6d67NtSkoKZ8+eZfjw4YSHhxMVFYXL5aJnz56kp6fTv39/xowZw8mTJ1m3bh07d+70FAKG\nDRvGkiVLGDx4MKNHj2b//v3Mnz+fjIwMNm/eTEhICGBl5jMzM+nbty9Dhgxh4MCBpKSkMGjQINq1\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# OverallCond\n", "\n", "fig, ax = plt.subplots()\n", "par_dep_OverallCond.drop('partial_dependence', axis=1).plot(x='OverallCond', colormap='gnuplot', ax=ax)\n", "\n", "par_dep_OverallCond.plot(title='Partial Dependence and ICE for OverallCond',\n", " x='OverallCond', \n", " y='partial_dependence',\n", " style='r-', \n", " linewidth=3, \n", " ax=ax)\n", "\n", "_ = plt.legend(bbox_to_anchor=(1.05, 0),\n", " loc=3, \n", " borderaxespad=0.)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nlFJKKaWuMFoJUEoppZRS6gqjlQCllFJKKVWkzp0706VLF+/24cOHcTgcLFmypAJzpUpLKwFKKaWU\nUsWUlJSEw+HwvpxOJ3FxcTz22GN89913FZ29C7Z7926mTp3K119/nW+fiOBwlF/Rce3atQwZMoSW\nLVsSGhpKo0aNCjzWGMOsWbNo1KgRTqeTG2+8kb/85S/lltdLkS4WppRSSilVAiLC9OnTiY2N5ezZ\ns2zcuJH58+ezZs0adu7cSaVKlSo6i6X25ZdfMnXqVLp06UKDBg389q1du7Zc87J06VKWL19OmzZt\nqFu3bqHHPvXUU8ycOZPhw4fTrl07Vq1axX333YfD4aBfv37llONLiz4JUEoppZQqodtuu4377ruP\nwYMHs2jRIsaMGUNaWhqrVq26oHhzc3M5f/58GeWy5IwxiEjQfaGhoYSGll/78XPPPcdPP/3ERx99\nxA033FDgcd9++y1z5szhscceY/78+QwZMoTVq1cTHx/PuHHjMMaUW54vJVoJUEoppZS6QF27dsUY\nQ1paGgAZGRmMGTOGBg0aUKlSJZo2bcqsWbP8CqSePvVz5szhpZdeokmTJlSqVIndu3cDkJ2dzdNP\nP01cXBxOp5M6derQu3dvbxpgC+1z587l+uuvx+l0cs011zBixAhOnjzpl7/Y2FjuvPNONm3axM03\n34zT6aRx48a8+eab3mOSkpK8readO3fG4XAQEhLChg0bvGFdu3Yt8l7s3buXPn36ULNmTZxOJ+3b\nt+fdd98t8T295pprCAkJKfK4d955h5ycHEaOHOkXPnLkSL755hs2b95c4rSvBNodSCmllFLqAh04\ncACAqKgosrKySEhIID09nREjRlC/fn0+/vhjJkyYwNGjR5kzZ47fuYsWLSI7O5vhw4cTHh5OZGQk\nLpeLnj17kpKSQv/+/RkzZgynTp1i7dq17Ny5k4YNGwIwbNgwlixZwuDBgxk9ejRpaWnMmzeP1NRU\nNm3a5C1Eiwj79++nb9++DBkyhIEDB7Jo0SIGDRpEu3btaNGiBQkJCYwaNYp58+YxadIkmjdvDkCL\nFi28cRRl165ddOrUiXr16jFhwgQiIiJYvnw5d911F8nJyfTq1avM7rlHamoqERER3vx63HTTTRhj\n2L59Ox06dCjzdC91WglQSimllCqhjIwMjh8/7h0TMH36dCIiIujZsycvvPACaWlppKamegezDh06\n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\npJlBWtkBhLvKZboXK6tymY1hpW17vpxvK7lGiX3NkUjvrtEewbHHueeey4MPPkhrq5pgRaNR7rrr\nLlauXMmePXtoamri2muv5dZbby0I0rxP/ZIlS3A4HDzyyCNs27aNtWvXMmPGDNLpNPfddx8rVqxg\n+/btVFVVcdZZZ7FkyRJaWloA9XP88MMP89Of/pTNmzcTCoW4+OKLuf/++wmHw4XxNTc3M2PGDG67\n7TZuueUW3n33XcaOHcs///M/8w//8A+AcnW66qqrEEIwf/58gMIegHnz5jF//nwMw+DVV18d8rv4\n+9//zne+8x1WrVpFIpHg5JNP5s477+TCCy8c1nd700038dnPfpY5c+ao31t9eP7558nlclx//fVl\n9uuvv57LL7+cNWvWcPbZZw/r2ccyehKg0Wg0o4CUFjITR2bjhdwqKRftMayCLYE002BmkGYWLCXe\n8/lANswsssyWVddbKt9/BMIdRHgqMFwqF64gwh3EEWhAuCeXt7mDGG6VC3cFhp0LVwBh2H96hADE\nfpdFP7sa18BlzVC0vbMeHps72sM4pti0aRMAtbW1JJNJ5s2bR1tbG1/96ldpamrij3/8I7fffju7\nd+/mwQcfLLv2ySefJJ1Oc9111+HxeKiursayLC644AJWrVrFZZddxs0330xvby8vvfQS7733XmES\n8JWvfIWnn36aq6++mptuuonW1lYeeeQR1q9fz+uvv47D4QDUz8/GjRu55JJLuOaaa7jyyit58skn\nueqqq5g9ezbTp09n3rx53HjjjTzyyCN897vf5cQTTwRg+vTphXvsi7/85S/MmTOH8ePHc/vttxMI\nBHjmmWe4+OKLWblyJRdddNEBfa/PPvssb7zxBu+//z5btmwZsM/69esJBAKF8eY588wzkVLyzjvv\n6EnAAOhJgEaj0ewnUkpkNoGV7EKmurCSJSnVhZWK2OI9pkR9P0FfUs4l9+OJAuHyI9wBJZ5dAYTT\ng3C4wXAhDBc43AiHSwntvN3hKvZxuMBw97c53Op6w7Y71P2E06PEeqlwdwfVOLTAPmYwXP7RHsJR\nTzQapbOzs7An4J577iEQCHDBBRfwgx/8gNbWVtavX8+kSZMAuPbaa2lsbGTJkiV885vfZNy4cYV7\n7dy5k82bN1NdXV2wPfXUU7z66qv827/9GzfeeGPB/q1vfatQXr16NU888QQrVqwoc0FasGAB5513\n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\n/+Yna/5DpUqVCrSKUEFlTUwGWL58ebiTlVNsbCydO3cO769atYrY2Fi6du1aYmUpTwq9RKi7r3f3\ngLtXyLGNyhZnirs3dveq7t7H3T/NkUbPHPF/7u7x7h4bOq+fu28tXtWkLEtNTWXLli0sXLiQO+64\ng/r169OnTx9WrlzJ8OHD2bBhAwcOHGDGjBn07NlTHQAREfnOGDJkCBs3bmTlypW5jqWkpOT5xduc\nBg0axLFjx/jLX/5y3nzS09N56KGHch3LyMgo0gTwatWq4e65lhgtiHr16tG9e3dmzZrF4cOHcx3/\n8ssvC51mdl9//TW//vWvady4ccRch7xs2LCBV155hbvuuosaNWoUK9/ySndOUqpOnDjBjh07cm37\n9u0Lv55s06YN48eP59Zbb+Xaa68t1lMKERGR4rrQ8Jn777+f1157jVtuuYWRI0fSoUMHvvrqK7Zu\n3cqSJUvYu3dvnktaZjdixAj++te/8vOf/5x//vOfdOvWjbNnz7JmzRruu+8++vXrR1JSEmPGjOGx\nxx7jww8/5Ac/+AGVKlXik08+YfHixUyfPp1bb721UHVr164dFSpU4PHHH+fUqVNUqVKFXr16Ubdu\n3QKdP2PGDLp160bbtm25++67ad68OUeOHGHjxo188cUXbNlS4HViuO2222jcuDFt2rTh9OnTPP/8\n8yQnJ7N8+fKIVYD279/PkCFD6N+/Pw0bNuSjjz5i1qxZtGvXjocffrhQ9Y8m6gTIRefuHDx4MHyD\nv3379vDPWZOWAoEA8fHxJCYmMnjwYBITE0lMTKR169ZcdtllpVwDERGRf7nQw6jY2FjeeustHnnk\nEV566SXmz59PXFwcCQkJPPTQQxFLm5tZnukFAgFef/11Hn74YRYtWsSSJUuoU6dO+AY7y9NPP03H\njh2ZNWsWkyZNomLFijRr1owRI0ZEDIPJL5+c9WnQoAGzZs3i0Ucf5a677iIjI4O1a9eGlwvNmUbO\n/cTERD744AN++9vfMm/ePI4fP079+vVp3759+Mu/BdWpUyfmzJnDM888Q2xsLElJSfzP//xPRP0B\n4uLiaNy4MTNmzODEiRNcfvnlTJw4kV/96lcRnQWJZCU1GeRSM7PrgE2bNm3SEqHfERkZGezZsyfX\nU/2dO3dy+vRpIDjbPyEhIXyTn7UlJCRoMq+IyCWSbYnQDu6+uSTT1t9nkdJTmN9tvQmQAktPT+fI\n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\nFMKhTyO9yLwAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# GrLivArea\n", "\n", "fig, ax = plt.subplots()\n", "par_dep_GrLivArea.drop('partial_dependence', axis=1).plot(x='GrLivArea', colormap='gnuplot', ax=ax)\n", "\n", "par_dep_GrLivArea.plot(title='Partial Dependence and ICE for GrLivArea',\n", " x='GrLivArea', \n", " y='partial_dependence',\n", " style='r-', \n", " linewidth=3, \n", " ax=ax)\n", "\n", "_ = plt.legend(bbox_to_anchor=(1.05, 0),\n", " loc=3, \n", " borderaxespad=0.)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nfEEeE4qttfG4AoK86sh29a21HwEfFbQ/IiIiIiJSMFodSERERESkjFEQICIiIiJSxigIEBEREREp\nYxQEiIiIiIiUMQoCRERERETKGAUBIiIiIiJljIIAEREREbmqjh070qlTJ/f+t99+i8PhYO7cuSXY\nKyksBQEiIiIi+RQfH4/D4XBvTqeTiIgIhg0bxokTJ0q6e9ds586djB8/nkOHDmXLM8bgcBTfrWNq\nairjx48nPDycgIAAwsPDmTRpEmlpadnKWmuZOnUqYWFhOJ1OfvnLX/L+++8XW19vRIV5Y7CIiIhI\nmWWMYeLEiYSGhvLTTz+xdu1a3nzzTZYvX86OHTsICAgo6S4W2jfffMP48ePp1KkT9erV88pbsWJF\nsfbl97//PR999BGDBg0iMjKSDRs28MILL/Ddd98xe/Zsr7J//vOfmTJlCoMHD6ZNmzYsXryY3/3u\ndzgcDvr27Vus/b5RKAgQERERKaDu3bvTunVrAAYOHEiVKlWYPn06ixcv5v777y90vWlpaaSnp+Pn\n51dUXS0Qay3GmBzzfH2L77Zx48aNLFy4kLFjxzJ27FgAHnvsMapWrcr06dN58sknad68OQBHjhxh\n2rRpDBs2jNdeew2AQYMG8etf/5qRI0fSp0+fXM+pLNNwIBEREZFr1LlzZ6y1JCcnA5CSksKIESOo\nV68eAQEBNGrUiKlTp2KtdR+TOaZ+2rRpvPbaazRs2JCAgAB27twJwOXLlxk3bhwRERE4nU5q165N\nr1693G2A66b91VdfpXnz5jidTmrWrMmQIUM4c+aMV/9CQ0Pp0aMH69ato127djidTsLDw5k3b567\nTHx8vPupeceOHXE4HPj4+LB69Wp3WufOna/6WezevZvevXtTtWpVnE4nbdu2ZenSpQX6PNesWYMx\nJltA9cADD5Cens4HH3zgTvvXv/5FamoqQ4cO9So7dOhQvv/+e5KSkgrUdlmhXwJERERErtG+ffsA\nqFatGpcuXSI6OpqjR48yZMgQ6taty/r16xk9ejTHjh1j2rRpXsfOmTOHy5cvM3jwYPz9/alSpQrp\n6encddddJCYm0q9fP0aMGMG5c+dYsWIFO3bsoEGDBoDr6fjcuXMZOHAgTz31FMnJybz++uts3bqV\ndevW4ePjA7iGMO3du5c+ffowaNAgBgwYwJw5c3j44Ydp06YNTZs2JTo6muHDh/P6668zZswYmjRp\nAkDTpk3ddVzN119/TYcOHfjFL37B6NGjCQwM5MMPP+Tee+8lISGBnj175uvzvHz5MgBOp9MrvXz5\n8gBs2rTJnbZ161YCAwPd/c106623Yq1ly5YttG/fPl/tliUKAkREREQKKCUlhVOnTrnnBEycOJHA\nwEDuuusu/va3v5GcnMzWrVsJCwsD4NFHH6VWrVq88sor/PGPf6ROnTruug4fPsz+/fupUqWKOy0u\nLo7PP/+cV199leHDh7vTn3vuOfe/165dyzvvvMOCBQu8nph36tSJbt26sXDhQh544AF3+p49e1iz\nZo37hrhPnz7UrVuXuLg4pk6dSoMGDYiKiuL111/njjvuIDo6usCfy1NPPUVoaCj//e9/3cOHhg4d\nSocOHRg1alS+g4CIiAistaxbt4769eu70zN/lTh8+LA77ejRo4SEhGSro1atWoBruJBkpyBARERE\nSoRNu0j6hV3XvR1HYBOMT/kiq89aS0xMjHvfGENoaCgLFiygVq1aLFq0iKioKIKDgzl16pS7XExM\nDJMnT2b16tX069fPnd67d2+vAAAgISGB6tWr8+STT+baj0WLFlGpUiViYmK82mnVqhUVKlQgMTHR\nKwho1qyZ1xPxatWqERERwYEDBwr3QWRx+vRpEhMTmThxIikpKV55Xbt2Zfz48Rw9etR9c56XO++8\nk/r16/Pss8/idDrdE4PHjBmDn58fly5dcpe9dOkS/v7+2erInKDtWVb+R0GAiIiIlIj0C7u4+FXk\ndW+n/K2b8AlqXWT1GWOYNWsWjRo1wtfXl5CQECIiItz5e/fuZfv27VSvXj3HY7MuJRoaGpqt3P79\n+4mIiMhzSc69e/dy5swZatSoka92sq72A1C5cmVOnz6daxsFsW/fPqy1vPDCC4wZMybXPuUnCPD3\n92fZsmX07duX3r17Y60lICCAqVOn8uKLL1KhQgV3WafT6R4+5Omnn35y50t2CgJERESkRDgCm1D+\n1k1XL1gE7RS1tm3bulcHyio9PZ0uXbowatQor4nAmRo3buy1X9ib1PT0dEJCQpg/f36O7WQNQjLn\nB2SV07GF7Q/As88+S7du3XIs07Bhw3zX17RpU7Zv387OnTs5ffo0zZo1IyAggBEjRtCxY0d3uVq1\narFq1apsxx89ehSA2rVr5/8kyhAFASIiIlIijE/5In1CX1qEh4dz/vx5r7frFqaOr776irS0tFxv\n3sPDw1m5ciXt27fPcThMYVzLUpqZ8x/8/PzytYpQfmVOTAZYtmyZO8jK1LJlS9555x127drlNTl4\nw4YNGGNo2bJlkfXlZqIlQkVERESKUN++fUlKSuLTTz/NlpeSkpLjG2+z6tWrFydPnuSNN97Is53U\n1FQmTJiQLS8tLS3buPz8CAwMxFqbbYnR/KhevTodO3YkNjaWY8eOZcv/4YcfClynp0uXLvHCCy9Q\nu3Ztr7kOPXv2xNfXl1mzZnmVnz17NnXq1NHKQLnQLwEiIiIiBXC14TMjR45kyZIl3H333QwYMIDI\nyEguXLjAtm3bSEhI4ODBg9kmAmfVv39/5s6dyzPPPMOXX35JVFQU58+fZ+XKlTzxxBPcc889REdH\nM3jwYCZPnszWrVvp2rUrfn5+7Nmzh0WLFjFjxgzuu+++Ap1by5Yt8fHxYcqUKZw5cwZ/f39iYmKo\nVq1avo6fOXMmUVFRtGjRgkcffZSwsDCOHz9OUlIShw8fZsuWLfnuy/3330/t2rVp1qwZZ8+eZc6c\nOSQnJ7Ns2TICAwPd5erUqcOIESN45ZVXuHLlCm3btuWf//wn69atY/78+XpRWC4UBIiIiIgUwNVu\nKp1OJ6tXr+all15i4cKFzJs3j6CgIBo3bsyECRMIDg72qiun+hwOB8uXL2fSpEnMnz+fhIQEqlat\n6r7BzvTmm2/Spk0bYmNjef755/H19SU0NJT+/ftz++23X7WdrOcTEhJCbGwsL7/8Mo888ghpaWkk\nJia6lwvNWkfW/aZNm7Jx40bGjx9PfHw8p06dokaNGrRq1cr95t/8atu2LXFxcbz11ls4nU6io6N5\n//33vc4/05QpU6hSpQqxsbHEx8fTqFEj3nvvvWt6e/PNzhTVZJDiZoxpDWzatGlTrhNzREREJLvN\nmzcTGRkJEGmt3VyUdevvs0jJKch3W3MCRERERETKGA0HEhEREZFic/z48TzznU4nQUFBxdSbsktB\ngIiIiIgUm1q1amGMyXGCtTGGhx56iDlz5pRAz8oWBQEiIiIiUmw+++yzPPP1cq/ioSBARERERIpN\nUb5ITApPE4NFRERERMoYBQEiIiIiImWMggARERERkTJGQYCIiIiISBmjIEBEREREpIxRECAiIiIi\nUsYoCBARERERKWMUBIiIiIjIVXXs2JFOnTq597/99lscDgdz584twV5JYRU4CDDGRBljlhhjDhtj\n0o0xPXIoM8EYc8QYc9EYs8IY0/AqdT6UUVdaxn/TjTEXC9o3ERERkespPj4eh8Ph3pxOJxEREQwb\nNowTJ06UdPeu2c6dOxk/fjyHDh3KlmeMweEovufHqampjB8/nvDwcAICAggPD2fSpEmkpaVlK7t/\n/3569+5NlSpVCAwMJCoqilWrVhVbX29EhXljcCCwFXgHSMiaaYwZBTwJ9AcOAi8Cnxhjmlprr+RR\nbwrQGDAZ+7YQfRMRERG5rowxTJw4kdDQUH766SfWrl3Lm2++yfLly9mxYwcBAQEl3cVC++abbxg/\nfjydOnWiXr16XnkrVqwo1r78/ve/56OPPmLQoEFERkayYcMGXnjhBb777jtmz57tLvf999/zq1/9\nCj8/P0aNGkX58uWJi4uja9eufP7553To0KFY+32jKHAQYK39GPgYwBhjcijyFDDRWvvvjDL9gePA\nvcCHeVdtTxa0PyIiIiLFrXv37rRu3RqAgQMHUqVKFaZPn87ixYu5//77C11vWloa6enp+Pn5FVVX\nC8RaS863d+DrW5hnx4WzceNGFi5cyNixYxk7diwAjz32GFWrVmX69Ok8+eSTNG/eHICXX36Zs2fP\n8vXXX9OwoWvwySOPPEKTJk14+umn+e9//1ts/b6RFOlvOsaYBkBNYGVmmrX2LPAlcNtVDq9gjDlo\njDlkjPmXMaZZUfZNRERE5Hrp3Lkz1lqSk5MBSElJYcSIEdSrV4+AgAAaNWrE1KlTsfZ/Ax0yx9RP\nmzaN1157jYYNGxIQEMDOnTsBuHz5MuPGjSMiIgKn00nt2rXp1auXuw1w3bS/+uqrNG/eHKfTSc2a\nNRkyZAhnzpzx6l9oaCg9evRg3bp1tGvXDqfTSXh4OPPmzXOXiY+Pp2/fvoBr/L/D4cDHx4fVq1e7\n0zp37nzVz2L37t307t2bqlWr4nQ6adu2LUuXLi3Q57lmzRqMMdkCqgceeID09HQ++OADd9ratWtp\n1aqVOwAAcDqd9OjRg82bN7N///4CtV1WFHVIVxPXMJ7jWdKPZ+TlZjcwENgGBAMjgfXGmGbW2iNF\n3EcRERGRIrVv3z4AqlWrxqVLl4iOjubo0aMMGTKEunXrsn79ekaPHs2xY8eYNm2a17Fz5szh8uXL\nDB48GH9/f6pUqUJ6ejp33XUXiYmJ9OvXjxEjRnDu3DlWrFjBjh07aNCgAeB6Oj537lwGDhzIU089\nRXJyMq+//jpbt25l3bp1+Pj4AK4hTHv37qVPnz4MGjSIAQMGMGfOHB5++GHatGlD06ZNiY6OZvjw\n4bz++uuMGTOGJk2aANC0aVN3HVfz9ddf06FDB37xi18wevRoAgMD+fDDD7n33ntJSEigZ8+e+fo8\nL1++DLhu5j2VL18egE2bNnmVrVKlSrY6PMuGh4fnq92ypPh+18mDtXYDsCFz3xiTBOwEBgNj8zr2\n6aefJjg42CutX79+9OvX7zr0VERE5MayYMECFixY4JWWkpJSQr3J6iKwqxjaaQKUL9IaU1JSOHXq\nlHtOwMSJEwkMDOSuu+7ib3/7G8nJyWzdupWwsDAAHn30UWrVqsUrr7zCH//4R+rUqeOu6/Dhw+zf\nv9/rRjYuLo7PP/+cV199leHDh7vTn3vuOfe/165dyzvvvMOCBQu8nph36tSJbt26sXDhQh544AF3\n+p49e1izZg3t27cHoE+fPtStW5e4uDimTp1KgwYNiIqK4vXXX+eOO+4gOjq6wJ/LU089RWhoKP/9\n73/dw4eGDh1Khw4dGDVqVL6DgIiICKy1rFu3jvr167vTM3+VOHz4sFfZtWvXcuHCBQIDA93pa9as\nyVZW/qeog4BjuCb2huD9a0AIsCW/lVhrU40xW4A8VxUCmD59untMnoiIiHjL6cHY5s2biYyMLKEe\nedoFFEc/NgFFd69grSUmJsa9b4whNDSUBQsWUKtWLRYtWkRUVBTBwcGcOnXKXS4mJobJkyezevVq\nr2uSuaqNp4SEBKpXr86TTz6Zaz8WLVpEpUqViImJ8WqnVatWVKhQgcTERK8goFmzZu4AAFy/WkRE\nRHDgwIHCfRBZnD59msTERCZOnJgt0OzatSvjx4/n6NGj1KpV66p13XnnndSvX59nn30Wp9Ppnhg8\nZswY/Pz8uHTpkrvs0KFDWbp0KX379mXSpEkEBgYyc+ZM968FnmXlf4o0CLDWJhtjjgExuIb2YIwJ\nAtoBM/NbjzHGAbQA/lOU/RMREZHSpAmuG/TiaKfoGGOYNWsWjRo1wtfXl5CQECIiItz5e/fuZfv2\n7VSvXj3HY7MuJRoaGpqt3P79+4mIiMhzSc69e/dy5swZatSoka92sq72A1C5cmVOnz6daxsFsW/f\nPqy1vPDCC4wZMybXPuUnCPD392fZsmX07duX3r17Y60lICCAqVOn8uKLL1KhQgV32e7du/PGG2/w\npz/9icjISKy1NGrUiJdeeomRI0d6lZX/KXAQYIwJxPWEPnNgWJgx5pfAj9ba74BXgTHGmH24lgid\nCHwPLPaoIx44bK39c8b+C7iGA+0DKgHPAfWAtwt3WiIiIlL6lacon9AXp7Zt2+Y6EiE9PZ0uXbow\natQor4nAmRo3buy1n3Xce36lp6cTEhLC/Pnzc2wnaxCSOT8gq5yOLWx/AJ599lm6deuWYxnPybtX\n07RpU7Zv387OnTs5ffo0zZo1IyAggBEjRtCxY0evso8//jgPP/ww27Zto1y5crRs2ZK3334bY0y2\nz1tcCvNLQBsgEdcEYAv8LSM9HhhorZ1qjCkPxOK6oV8D/CbLOwLqAp5veqgMvIVr8vBpXI8FbrPW\nFsdAQREREZEiEx4ezvnz573erluYOr766ivS0tJyvXkPDw9n5cqVtG/fHn9//0K35Sk/k39zkzn/\nwc/PL1+rCOVX5sRkgGXLlrmDrKycTift2rVz769YsQKn08ntt99eZH25mRR4iVBr7RfWWoe11ifL\nNtCjzDhrbW1rbXlrbTdr7b4sdXTOUv4Za20Da60z47h7rLXbru3URERERIpf3759SUpK4tNPP82W\nl5KSkuMbb7Pq1asXJ0+e5I033sizndTUVCZMmJAtLy0trVATwAMDA7HWZltiND+qV69Ox44diY2N\n5dixY9nyf/jhhwLX6enSpUu88MIL1K5d22uuQ07Wr1/PP//5Tx555BEqVqx4Te3erErF6kAiIiIi\nN4qrDZ8ZOXIkS5Ys4e6772bAgAFERkZy4cIFtm3bRkJCAgcPHsxxSUtP/fv3Z+7cuTzzzDN8+eWX\nREVFcf78eVauXMkTTzzBPffcQ3R0NIMHD2by5Mls3bqVrl274ufnx549e1i0aBEzZszgvvvuK9C5\ntWzZEh8fH6ZMmcKZM2fw9/cnJiaGatWq5ev4mTNnEhUVRYsWLXj00UcJCwvj+PHjJCUlcfjwYbZs\nyfc6Mdx///3Url2bZs2acfbsWebMmUNycjLLli3zWgXo0KFD9O3blx49elCzZk127NhBbGwsLVu2\nZNKkSQU6/7JEQYCIiIhIAVxtyIzT6WT16tW89NJLLFy4kHnz5hEUFETjxo2ZMGGC19Lmxpgc63M4\nHCxfvpxJkyYxf/58EhISqFq1qvsGO9Obb75JmzZtiI2N5fnnn8fX15fQ0FD69+/vNQwmt3aynk9I\nSAixsbG8/PLLPPLII6SlpZGYmOheLjRrHVn3mzZtysaNGxk/fjzx8fGcOnWKGsF5ov0AABpySURB\nVDVq0KpVK/ebf/Orbdu2xMXF8dZbb+F0OomOjub999/3On+AoKAgateuzcyZM/nxxx+pU6cOI0aM\n4M9//rNXsCDeTFFNBiluxpjWwKZNmzZpiVAREZEC8FgiNNJau7ko69bfZ5GSU5DvdoHnBIiIiIiI\nyI1Nw4FEREREpNgcP348z3yn00lQUFAx9absUhAgIiIiIsWmVq1aGGNynGBtjOGhhx5izpw5JdCz\nskVBwE3GWkt6ejrp6emkpaWRmprKzz//fNUtv+VyOi6zvcy2rbVe/77WvOL4zDL/6/nvosorDp7t\nZG2zKPJE5OZy9uzZku6ClGGfffZZnvm1a9cupp6UbQoCisjly5c5c+YMZ86cISUlJV//Pnv2rNdN\ndOaNu+d+Tml5lbmefH198fPz89p8fX3x8fHBGIPD4cjzv/kpk9Mx1/LikvzKbMOzvZz+W9C84uq/\nZ7vXa19Ebh4K8qUkFeWLxKTwFATkIC0tjc2bN7Nnz55839D/9NNPOdZljCE4OJjg4GAqVark3sLC\nwggKCsLPzw+Hw5Ft8/HxKZL03G7cs6ZdbfP19dVNoYjITcJjBRERKaMUBOB6IrJr1y5WrlzJypUr\nSUxMdL9lz9fX1+vmvVKlSgQHB1O3bl33v7Pmef67YsWKOBxahElERERESo8yGwR899137pv+lStX\ncvToUfz8/Ljtttt45plniImJoWXLlpQvX15PwEVERETkplJmgoBTp06RmJjovunfu3cvxhhatWrF\ngw8+SExMDB06dNCb5URERETkpnfTBgEXLlxgzZo17pv+rVu3Yq2lcePG3HHHHbz88st07NiRqlWr\nlnRXRURERESK1U0TBPz88898+eWX7pv+DRs28PPPP1OrVi1iYmIYPnw4MTEx1K1bt6S7KiIiIiJS\nom74Gavz5s3jzjvvpHLlykRFRTF9+nSqVq3KtGnT+Oabbzh8+DDz5s1jwIABCgBERETkhvfuu+/i\ncDg4dOhQgY8dMGAADRo0KJJ+dOzY8aZa7vNmO5+rueF/CZg1axbR0dGMGTOGmJgYWrdujY+PT0l3\nS0REROSavPzyyzRr1oyePXt6pV/LO2iK8v01N9vCKTfb+VzNDR8ErFq1ittuu62kuyEiIiJSpF56\n6SX69OmTLQjo378//fr1o1y5ciXUM7kZ3PDDgfz9/Uu6CyIiIiJFJrcXkGYyxigAkGt2wwcBIiIi\nIsVl3LhxOBwOdu/eTd++fQkODqZatWqMGDGCy5cvu8vFxcURExNDSEgIAQEB3HLLLcyePTtbfaGh\nofTo0YNPP/2Utm3bUr58eWJjY3E4HFy8eNE9/t/hcDBw4EAg5zkBS5Ys4e6776ZOnToEBATQsGFD\nXnzxRdLT04vkvN966y0aNmxI+fLl+dWvfsXatWtzLHflyhXGjh1Lo0aNCAgIoF69eowaNYorV654\nlXM4HAwfPpz58+fTpEkTnE4nbdq0Yc2aNdnqPHLkCAMHDqRmzZoEBATQvHlz4uLivMp88cUXOBwO\nFi5cyKRJk6hbty5Op5M77riD/fv3F9v5LF68mBYtWrj7+cknn+R4PoMGDXJfq7CwMB5//HFSU1Pd\nZVJSUhgxYgT16tUjICCARo0aMXXqVKy1OfazMG744UAiIiJyg0lPh1OnirfNqlXBce3PPjPHjfft\n25cGDRowefJkNmzYwIwZMzhz5gzvvvsuALNnz6Z58+b07NkTX19fli5dyuOPP461lqFDh3rVt2vX\nLn73u98xePBgHnvsMSIiIvjHP/7BoEGDaNeuHY899hgA4eHh7mOyjl9/9913qVixIn/84x+pUKEC\nn3/+OX/5y184d+4cU6ZMuaZzfueddxgyZAgdOnTg6aef5sCBA/To0YMqVapQr149dzlrLffccw/r\n169n8ODBNGnShO3btzN9+nT27t1LQkKCV72rVq3igw8+YPjw4fj7+zNr1ix+85vf8NVXX9GsWTMA\nTpw4Qbt27fDx8WH48OFUq1aN5cuXM2jQIM6dO8fw4cO96pw8eTI+Pj6MHDmSlJQUpkyZwoMPPkhS\nUtJ1P581a9aQkJDA448/TsWKFZkxYwa9e/fm0KFDVK5cGYCjR4/Stm1bzp49y+DBg4mIiODw4cMs\nWrSIixcvEhQUxKVLl4iOjubo0aMMGTKEunXrsn79ekaPHs2xY8eYNm3aNV1PrxO8ETegNWA3bdpk\nRUREJP82bdpkAQu0tiXx9/nECWuheLcTJ4rksxs3bpw1xtjf/va3XulPPPGEdTgcdvv27dZaa3/6\n6adsx3bv3t02bNjQKy00NNQ6HA67YsWKbOUrVKhgH3744Wzp7777rnU4HPbbb791p+XU3pAhQ2yF\nChXslStX3GkDBgywDRo0uMpZ/s/PP/9sQ0JCbGRkpP3555/d6W+//bY1xthOnTq50+bNm2d9fX3t\n+vXrveqIjY21DofDJiUludOMMdbhcNgtW7a40w4dOmSdTqft1auXO23QoEG2Tp069vTp01519uvX\nz1auXNl93qtWrbLGGHvLLbfY1NRUd7kZM2ZYh8Nhv/766+t+PgEBATY5Odmdtm3bNmuMsTNnznSn\n9e/f3/r6+trNmzfb3EycONFWrFjR7t+/3yt99OjR1s/Pz37//fe5HluQ77aGA4mIiIgUgDGGJ554\nwitt2LBhWGtZtmwZ4D1n8ezZs5w6dYro6GgOHDjAuXPnvI5t0KABd9xxxzX1ybO98+fPc+rUKTp0\n6MDFixfZtWtXoevduHEjJ06cYMiQIfj6/m8AyUMPPURwcLBX2UWLFtG0aVMaN27MqVOn3FunTp2w\n1pKYmOhVvn379rRs2dK9X7duXXr27Mknn3ziHvaSkJDAPffcQ1pamledXbt2JSUlhc2bN3vVOXDg\nQK9VIqOiorDWcuDAget+Pl26dCE0NNS936JFC4KCgtxtW2tZvHgxPXr0oFWrVrl+5osWLSIqKorg\n4GCvdmNiYkhNTWX16tW5HlsQGg4kIiIiUkANGzb02g8PD8fhcHDw4EEA1q1bx9ixY9mwYQMXL150\nlzPGkJKSQsWKFd1pRbFu/zfffMPzzz9PYmIiZ8+ezdZeYX377bcYY7Kdr6+vL2FhYV5pe/fuZdeu\nXVSvXj1bPcYYTpw44ZWWtU6Axo0bc/HiRU6ePIkxhjNnzvDWW28RGxubrzqzvhMqcxjO6dOnr/v5\n5PQ+qsqVK7vbPnnyJGfPnuWWW27JVi5ru9u3b893u4WlIEBERETkGnmO0T9w4AB33HEHTZs2Zfr0\n6dStW5dy5crxn//8h1dffTXbZF2n03lNbaekpBAdHU2lSpV48cUXCQsLIyAggE2bNvGnP/2pyCYH\nX016ejotWrRg+vTpOU5gLehLWzP7/eCDD/LQQw/lWOb//u//vPZze1dUTv3JT/sFOZ+iajs9PZ0u\nXbowatSoHI9t3LhxgerLjYIAERERKV5Vq0IRPc0sUJtFaO/evdSvX9+9v2/fPtLT0wkNDWXp0qVc\nuXKFpUuXUqdOHXeZlStXFqiN/L68atWqVZw+fZrFixdz++23u9NzWhWnoOrXr4+1lr1799KxY0d3\nempqKsnJyV7DecLDw9m2bRudOnXKV9179+7NlrZ7927Kly9P9erVsdZSsWJF0tLSiuxNvtfzfK6m\nevXqBAUFsWPHjjzLhYeHc/78+SJrNzeaEyAiIiLFy+GA6tWLdyuClYEyWWuZOXOmV9qMGTMwxvCb\n3/zG/UTY8wl8SkqKe+Wg/AoMDOTMmTNXLefj44O11qu9K1euMGvWrAK1l5M2bdpQvXp1Zs+e7bWE\nZVxcXLa+9e3bl++//56///3v2er56aefvIZFASQlJbFlyxb3/nfffceSJUvo1q0bxhgcDge9evXi\no48+4uuvv85W5w8//FCqzudqjDHce++9LF26NNtchqztJiUl8emnn2bLS0lJIS0trUDt5ka/BIiI\niIgUUHJyMj179qR79+6sX7+e9957jwcffJAWLVrg7++Pn58fd999N4MHD+bcuXO8/fbbhISEcOzY\nsXy3ERkZyWeffcb06dOpXbs2DRo04NZbb81Wrn379lSuXJn+/fu7l8z8xz/+ke9fEvLi6+vLiy++\nyJAhQ+jUqRP3338/ycnJxMXFuZcszfSHP/yBDz/8kKFDh5KYmMjtt99OWloaO3fuZOHChXz66ae0\nbt3aXb558+Z0796dYcOGUa5cOd58802MMYwbN85dZvLkyaxatYp27drx6KOP0qxZM3788Uc2bdrE\n559/XuBA4HqeT3689NJLrFixgujoaB577DGaNm3KkSNHWLRoEevWrSMoKIiRI0e63/swYMAAIiMj\nuXDhAtu2bSMhIYGDBw9SpUqVArWbo6stH1RaN7REqIiISKGU+BKhN7Bx48ZZh8Nhd+3aZfv06WOD\ng4Nt1apV7VNPPWUvX77sLvfvf//btmzZ0pYvX96GhYXZV155xcbFxWVb2rNBgwa2R48eOba1e/du\n27FjRxsYGGgdDod7udCclghNSkqy7du3t4GBgfYXv/iFHT16tF2xYoV1OBz2iy++cJcbMGCADQsL\nK/B5z54924aHh1un02lvvfVWu3btWtupUyfbuXNnr3Kpqan2r3/9q23RooV1Op22atWqtm3btvbF\nF1+0586dc5czxthhw4bZ+fPn28aNG1un02nbtGljV69ena3tkydP2mHDhtn69etbf39/W7t2bdul\nSxf7zjvvuMusWrXKOhwO+9FHH3kde/DgQetwOGx8fPx1PR+Hw2GHDx+ere8NGjSwAwcO9Er77rvv\n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\nrkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# LotArea\n", "\n", "fig, ax = plt.subplots()\n", "par_dep_LotArea.drop('partial_dependence', axis=1).plot(x='LotArea', colormap='gnuplot', ax=ax)\n", "\n", "par_dep_LotArea.plot(title='Partial Dependence and ICE for LotArea',\n", " x='LotArea', \n", " y='partial_dependence',\n", " style='r-', \n", " linewidth=3, \n", " ax=ax)\n", "\n", "_ = plt.legend(bbox_to_anchor=(1.05, 0),\n", " loc=3, \n", " borderaxespad=0.)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Shutdown H2O" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Are you sure you want to shutdown the H2O instance running at http://127.0.0.1:54321 (Y/N)? y\n", "H2O session _sid_91ac closed.\n" ] } ], "source": [ "h2o.cluster().shutdown(prompt=True)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 10_model_interpretability/src/pdp_ice.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Partial Dependence and ICE Plots\n", "***\n", "\n", "Based on:\n", "\n", "Goldstein, Alex, Kapelner, Adam, Bleich, Justin, and Pitkin, Emil. Peeking inside the black box: Visualizing statistical learning with plots of individual conditional expectation. Journal of Computational and Graphical Statistics, 24(1):44–65, 2015.\n", "https://arxiv.org/pdf/1309.6392.pdf\n", "\n", "Hastie, Trevor, Tibshirani, Robert, and Friedman, Jerome. *The Elements of Statistical Learning.* Springer, 2008.\n", "https://statweb.stanford.edu/~tibs/ElemStatLearn/printings/ESLII_print10.pdf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminaries: imports, start h2o, load and clean data " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# imports\n", "import h2o \n", "import numpy as np\n", "import pandas as pd\n", "from h2o.estimators.gbm import H2OGradientBoostingEstimator\n", "\n", "# display matplotlib graphics in notebook\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: java version \"1.8.0_112\"; Java(TM) SE Runtime Environment (build 1.8.0_112-b16); Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)\n", " Starting server from /Users/phall/anaconda/lib/python3.5/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmph48jzbiz\n", " JVM stdout: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmph48jzbiz/h2o_phall_started_from_python.out\n", " JVM stderr: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmph48jzbiz/h2o_phall_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321... successful.\n" ] }, { "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", "
H2O cluster uptime:02 secs
H2O cluster version:3.12.0.1
H2O cluster version age:19 days
H2O cluster name:H2O_from_python_phall_midt3r
H2O cluster total nodes:1
H2O cluster free memory:3.556 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
H2O internal security:False
Python version:3.5.2 final
" ], "text/plain": [ "-------------------------- ------------------------------\n", "H2O cluster uptime: 02 secs\n", "H2O cluster version: 3.12.0.1\n", "H2O cluster version age: 19 days\n", "H2O cluster name: H2O_from_python_phall_midt3r\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 3.556 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "Python version: 3.5.2 final\n", "-------------------------- ------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# start h2o\n", "h2o.init()\n", "h2o.remove_all()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Load and prepare data for modeling" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "# load clean data\n", "path = '../../03_regression/data/train.csv'\n", "frame = h2o.import_file(path=path)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# assign target and inputs\n", "y = 'SalePrice'\n", "X = [name for name in frame.columns if name not in [y, 'Id']]" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# determine column types\n", "# impute\n", "reals, enums = [], []\n", "for key, val in frame.types.items():\n", " if key in X:\n", " if val == 'enum':\n", " enums.append(key)\n", " else: \n", " reals.append(key)\n", " \n", "_ = frame[reals].impute(method='median')\n", "_ = frame[enums].impute(method='mode')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# split into training an validation, and 30% test\n", "train, valid = frame.split_frame([0.7])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train a predictive model" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm Model Build progress: |███████████████████████████████████████████████| 100%\n" ] } ], "source": [ "# train GBM model\n", "model = H2OGradientBoostingEstimator(ntrees=100,\n", " max_depth=10,\n", " distribution='huber',\n", " learn_rate=0.1,\n", " stopping_rounds=5,\n", " seed=12345)\n", "\n", "model.train(y=y, x=X, training_frame=train, validation_frame=valid)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nuXpUVb2htbbPXJ2uqtcm2Sdrr88ZOyTZMclzq+oZrbX5pgK3JNepqkOSPGGqnukFvGe7pjLLe29I\nDzum398y/Zq5e5I9q2qP1tpcd8mb/Ex2TV+PasuJ7TdJX4PqkVW1V2vtXXMdYFU9I8k7k2w21act\nk9w7ffH4x6Sft+l91+n6rL5I+8xUu8Nba384Vz+voSZDntnWxHr6xPP9llDvQUnenOTmSZ5QVX/Z\nWvvVYnceAsg/G16en9UZsTt5p80fLFS4tXZOVX0x/bp5SvoU1GlPHX5+orV2Uc0+gAyA9Whj/gsX\nAPxb+l/ek7VTIOcyM5XyovQv5NPWJPll+pe7v0xfpPke6V/UX5YeTLUkr6mJ0V1zuE762js3S/LW\n9NEDuwx9OHWBfSfruCLJZ5O8JMkjktwzPcz68yTfGPrzh7nqNJ+5vCl95Meh6YHBLunTeL481HPX\nzL1Wzryqavuhnq3Tpzm9Lj2s2yXJ/03yniSXp6/L8/Fa/98Mb5fk4PS77D03PSR5UJJ3pR/rrZLs\nX1X3T58+dmJ6GHCv9M/qI0M9d0w/b/O5UXrodv0kr0/ywCT3TfKiof0keXlV/cVsO1fVi5O8Oj2g\nOjvJC4b9HzTUd0l6oHdgVc01vW3G36R/pl9MD4d3SQ95DhkeOyX5wFD20iR3Gd6bedw1yWTwt0n6\ndf/O9DD5fkOdj0uf1nZR+vpSH6k+1W0+t03/nbgk/Xq+f3qA9bIkvxjKvKWqrjZqKUmG8/f+9HNx\ncfo1/8j039Fd0++k+IXMEvSs8PV5bb0j4K4Tz2dbP+tBE88PXWylrbXLs/aPCJumX7tLcY+sXaz/\niNbapUvcf50MYdzM4vtXZPHHfkD67+zjhj9cTNZ50/R/r9tQDoDV0Frz8PDw8PDYaB/pwcWV6V9k\n7jRHmZ0mynxgjjI3S3LDedq5bvoX6iuTnDhHmTcO269MX2T5AQv0/eyhT++eZdsmSW67wP5vyNo7\nld1mlu2PmDjuK5L8wxz1HDBR7unzHNclc+x/9LDvV5NsOUeZ3Sf68aRlftZHLdCPme1XJvnubH1J\n8o6JYz0nw8Lis5T75ExbSW40y/aDJ9q6JMm9ZymzTZIfD2UumK4nPZT71dCX05NsNUsd904Pf65I\n8v0kNbV926nP+J8WOIfzfpZTZW+b5DrzbP/diWt4/0V8JiclufksZf5g4hjeOMd5vGTYflbm+D0f\nyt56fVyfE+f5yiSHLef6Hep59sSxvjh95N9Cj+8s9jOb53O6aKjjrCSbTG1fM3Hspy6j/r0njumF\nS9z3mRP7vny553WOumeuze/Pck7vmR7w/tdE+6+ap66Z6/iE4fUNklw42/WS5PlD2bNnfn8m+rLs\na8fDw8PDY2kPI8MA2NhNLk481+iwp048n/Uv9a21n7bWfjlXI62PWJhZb+nOw2iTOYunhwP/PU+Z\nebXWrmitnblAsdekj6rZJMmjFyj7w6zt/7TnpYc1SbLnojuZpKoemj66oyV5SmvtF7OVa619Ksmn\n00dTPH0pbSxDS/K8Ofoysz5bpU/Re1abfTTKPw0/r5ceSM3X1jtaa9+42obWzsrac36jXP1GD3+e\ntdPX9mqtnTO1PUO9bx36e/v0kYBzOS99RNqKaK2d2foC43Nt/0H6CK1KH204b3VJ9mytnTdLPV9K\nD3wqfWTdtBelj7xLkme01k6Zp08/mny9wtfn9HTTdfWWJMcu4rGshemTZBjl9t6snVr6mtba9Oi5\nm2Tt4vA/WUYzk9ftnOvszWFyrcerXRszqmqTqtpxnsd833l+L1c/p99M/2/BA9ND0t1ba69bbKdb\nnwr68fTzNv17/eT0c33QfL8/AKxfwjAANnafTf8yVul/6b+K4cvgnw4vf9ha+/J0mdlU1fWGxb63\nn/nClbVfGJO+1tZ8DlpMO4s1LGa+9bBg+kx/tk0febSY/hzcWrtstg2ttQuz9ovdPapqy9nKzWH3\n4ed3W7/D3Hy+Mvxc6lSqpTqntXbkbBtaayelj9prSb45T+D4vxPPF5oC+MF5tv1b+siupN99b9LM\n63Nba/NNz/rnWfaZzSfawmvHLVtV3aiqbl9VO0xcgzPHdvOquuU8u587hF5zOWb4Odu53m34eWJr\nbbb1meazItdna+3k1tomw2O36e3L1JbwWK6/S58q25L8Z2vtA7OUueHE84uW0cbkPjeas9TsJtu+\neM5SPTSbKyz8bq4aqk1b6NzeN8nzh3XhlmLmDysPqaqtkqSq7pS14fm/LrE+AFaQMAyAjdowymEm\neLrdsA7UpIekrxXUssCXk6raoqr2qarvpn/BOzPJ8Vn7peuoieLz3r0y/QvaOqnu6VV1xNCfH6av\n9zP5JXBmhNpC/fnmAttnRjZV+lpSi7XL8PNuNfvdCX/7SB8JkySbVdUWS2hjqb63wPYLF1Hu5xPP\n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\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model.varimp_plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## One-dimensional partial dependence plots\n", "* One-dimensional partial depedence plots (PDPs) show us the average behavior of a complex response function w.r.t a single input\n", "* They allow us to compare this average behavior to domain knowledge and expected behavior\n", "* The average behavior of PDPs can be misleading in the presence of strong interactions or for highly nonlinear response functions\n", "* Great to explore most important variables in model" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n", "\n", " OverallQual partial_dependence\n", "0 1.00 151437.643035\n", "1 1.45 151437.643035\n", "2 1.90 151437.643035\n", "3 2.35 151437.643035\n", "4 2.80 151437.643035\n", "5 3.25 151437.643035\n", "6 3.70 151526.212627\n", "7 4.15 151526.212627\n", "8 4.60 157213.127763\n", "9 5.05 157213.127763\n", "10 5.50 161758.685364\n", "11 5.95 161758.685364\n", "12 6.40 161758.685364\n", "13 6.85 198475.498142\n", "14 7.30 198475.498142\n", "15 7.75 211158.071701\n", "16 8.20 211158.071701\n", "17 8.65 211906.491402\n", "18 9.10 211906.491402\n", "19 9.55 211906.491402\n" ] }, { "data": { "image/png": "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\nT1ZWFo8++ij/8z//Q4cOHWjRogVnnHEG77//fr2156mnnqJ3797lec6ZM6fS9owcObL8z6pLly5c\nd911lJaWlseUlJTw4x//mI4dO9K8eXO6d+/OnXfeifaaEmkYtMKpVBAbF3DxxRfTuXNnbr/9dt58\n800mTZrEF198wYwZMwC45557OOaYYzj//PNp3LgxzzzzDNdddx3uzrXXXlvhesuXL+eyyy7jmmuu\n4eqrr6Znz548/PDDjBw5kn79+nH11VcD0LVr1/LPJI5PmDFjBq1bt+a///u/OeCAA3j55Zf59a9/\nzZYtW7jjjjtq1OZp06YxatQoTj31VMaOHcsHH3zAsGHDOPDAAys8+nF3zjvvPN544w2uueYajjzy\nSJYuXcqECRNYsWIFjz/+eIXrzps3j7/97W+MGTOGZs2aMXXqVM455xwWLVrEUUcdBcD69evp168f\njRo1YsyYMbRr145//OMfjBw5ki1btjBmzJgK17z99ttp1KgRN954IyUlJdxxxx0MHz6chQsX1nl7\nXn31VR5//HGuu+46WrduzaRJk/iv//ov1qxZQ9u2bQH49NNP6du3L5s3b+aaa66hZ8+efPzxx8ya\nNYtt27aRnZ3NV199xYABA/j0008ZNWoUHTp04I033uDmm29m7dq13HXXXTX68xSRNODuesW9gD6A\nFxYWemUKCwu9qvPpbvz48W5mfuGFF1Y4fv3113tWVpYvXbrU3d23b9++x2fPPvts79atW4VjnTp1\n8qysLH/hhRf2iD/ggAP8yiuv3OP4jBkzPCsry1evXl1+rLL7jRo1yg844ADfuXNn+bERI0Z4586d\n99HKr+3atctzc3M9Ly/Pd+3aVX78/vvvdzPzQYMGlR976KGHvHHjxv7GG29UuMa9997rWVlZvnDh\nwvJjZuZZWVm+ZMmS8mNr1qzxFi1a+EUXXVR+bOTIkX7YYYf5pk2bKlwzPz/f27ZtW97uefPmuZn5\n0Ucf7aWlpeVxkyZN8qysLH/33XfrvD3Nmzf3lStXlh9755133Mx8ypQp5ccuv/xyb9y4sS9evNj3\n5tZbb/XWrVv7+++/X+H4zTff7E2aNPGPPvpor591z/x/gyLpLPbvE+jjVfys1WOXOrZtGyxeXLev\n2t5g18y4/vrrKxwbPXo07s5zzz0HQLNmzcrPbd68mc8//5wBAwbwwQcfsGXLlgqf7dy5M2eccUaN\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# manually calculate 1-D partial dependence\n", "# for educational purposes\n", "\n", "def par_dep(xs, frame, model, resolution=20, bins=None):\n", " \n", " \"\"\" Creates Pandas dataframe containing partial dependence for a single variable.\n", " \n", " Args:\n", " xs: Variable for which to calculate partial dependence.\n", " frame: Data for which to calculate partial dependence.\n", " model: Model for which to calculate partial dependence.\n", " resolution: The number of points across the domain of xs for which to calculate partial dependence.\n", " \n", " Returns:\n", " Pandas dataframe containing partial dependence values.\n", " \n", " \"\"\"\n", " \n", " # init empty Pandas frame w/ correct col names\n", " par_dep_frame = pd.DataFrame(columns=[xs, 'partial_dependence'])\n", " \n", " # cache original data \n", " col_cache = h2o.deep_copy(frame[xs], xid='col_cache')\n", " \n", " # determine values at which to calculate partial dependency\n", " if bins == None:\n", " min_ = frame[xs].min()\n", " max_ = frame[xs].max()\n", " by = (max_ - min_)/resolution\n", " bins = np.arange(min_, max_, by)\n", " \n", " # calculate partial dependency \n", " # by setting column of interest to constant \n", " for j in bins:\n", " frame[xs] = j\n", " par_dep_i = model.predict(frame)\n", " par_dep_j = par_dep_i.mean()[0]\n", " par_dep_frame = par_dep_frame.append({xs:j,\n", " 'partial_dependence': par_dep_j}, \n", " ignore_index=True)\n", " \n", " # return input frame to original cached state \n", " frame[xs] = h2o.get_frame('col_cache')\n", "\n", " return par_dep_frame\n", "\n", "# show some output\n", "par_dep_OverallQual = par_dep('OverallQual', valid, model)\n", "par_dep_OverallQual.plot.line(x='OverallQual', y='partial_dependence')\n", "print()\n", "print(par_dep_OverallQual)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PartialDependencePlot progress: |█████████████████████████████████████████| 100%\n", "PartialDependence: Partial Dependence Plot of model GBM_model_python_1498482425595_1 on column 'OverallQual'\n", "\n" ] }, { "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", "
overallqualmean_responsestddev_response
1.0151437.643034737683.0437868
2.0151437.643034737683.0437868
3.0151437.643034737683.0437868
4.0151526.212626937557.9397916
5.0157213.127763137105.1150207
6.0161758.685364238097.4935331
7.0198475.498142252565.7395587
8.0211158.071700753105.2466757
9.0211906.491402154723.6048025
10.0211906.491402154723.6048025
" ], "text/plain": [ "overallqual mean_response stddev_response\n", "------------- --------------- -----------------\n", "1 151438 37683\n", "2 151438 37683\n", "3 151438 37683\n", "4 151526 37557.9\n", "5 157213 37105.1\n", "6 161759 38097.5\n", "7 198475 52565.7\n", "8 211158 53105.2\n", "9 211906 54723.6\n", "10 211906 54723.6" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsUAAAPxCAYAAAASV9AXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XmYHVWZx/HfmwQCgUBAUEAMLiyCCAMoyBYgmyzSChnE\nGVRMcBA1DuJMgiJKVFASAR0BnRkJZEaGOMgSBVHoRAg0iiwtSoQGZGtgZAlbAk0ISc78cap9by7d\nnV6q61Tf+n6ep5+Q29X3nvvtuuR0ddW5FkIQAAAAUGXDUg8AAAAASI1JMQAAACqPSTEAAAAqj0kx\nAAAAKo9JMQAAACqPSTEAAAAqj0kxAAAAKo9JMQAAACqPSTEAAAAqj0kxAJnZTWZ2Yz+/do2ZfT3v\nMQ11ZvaomV2cehxFyfah36QeB3rHzD6VvXbH1txWyu+hmc0yszWpx4HGx6QYSMjMjs/+Yer8eNXM\n7jez883szTk/1s5mdkbtP4I1gqRB+0fHzLare54rzexZM7vVzM4ys7cN1mMnFFIPIA/Z5L72e/e0\nmd1sZh+p27Rfz9fMNsz2y3G93P6guvHUflzWnzH0h5ntb2ZXm9lTZrbCzB4xs38fQvty0Bu/Z11+\nD81sczP7rpm1Zf+Pes7Mfm1mhw/+MP82roZ4PaHcRqQeAAAFSV+T9KikDSQdIOmzkg4zs11DCCty\nepxdJJ0h6UZJ7XWfm5TTY6zLZZKuU/yBfDNJ75d0sqSTzeyEEML/FjQO9F6Q9AdJ50gySdtI+oyk\nq8zspBDCfw7w/kcp7pdB0s19+LrvS7qz7rZHBziWXjGzL2SP/5CkH0j6q6SdJX1a0rFmdlgI4bYi\nxjLYzGwnSYskvUnSxZLukjRG0nGSrjWzs0MIpyUcIpAbJsVAOfw6hNCa/ffFZva8pFMkfVjSgCaK\nZjZS0krFCU2XR1tCCKsG8hh90BpCWOtonpl9VVKzpHlmdm8I4Z6CxoLeezKEML/zL2b2E0l/UdxH\nBzoptn5+XUsI4aoBPnaXzGzDEMKr3Xxuf0nfU5zAH1b7Q6uZ/UjSbyVdYWbvCSG8NBjj62Zco0II\nHTnf5whJV0jaVNKBIYQ7az73PcUfck81s7tCCFfm+dhACpw+AZTTbxQnC++QJDPbzMzOMbM/mdly\nM3vJzK4zs91qv6jmV8vHmtmZZvaEpFck/bOky7PNbsq2Wd35K+v6cwnNbD0z+6aZ3WlmL5rZy9mv\nzA/O+4mGEB6X9ClJIyXNrHs+m5rZ982sPfsV9YNmNtPMrGabzlMzvmRmX8x+3d+RPaf31D+eme1k\nZldkvwJ+1czuMLMj67bpPK1lPzM7z8yeyRpcZWZv6uI+Tzezx83sFTNbZGa7dPVc+/F8/snM/pJt\ne7uZva+b53N5NsaO7FfcZ9Zts42ZXVzzq/4lZja1u+/JuoQQnpZ0n7L9sztmtqWZzc0e91Uzu9vM\nPln7XCU9o/jD2izz0yByOUfdzD6XPdcVZvakmV1gZpvWbXNT9rraM9vHX5F0Vg93+zXFU42Or/8t\nTgjhEcV9uPNouszsX7Ln9IbTKszsO2b2Wu2YzGwfi6cmvJjtTzeZ2X51X9fZamczu8ziD9G3ZJ97\nr5ldYmYPZc3/mn0PNu9Lu8zfS3qPpO/UToiz5xqy5/iSpG/UjO0N5ypnt3f+v2lczW0HZPvuY9n3\nqD17vW3Qj7ECA8aRYqCcts/+fC77852SmiT9TNIjkt6i+A/STWa2Swjhqbqv/5qk1yR9V3Gyeb3i\nr3m/IOlMSW3Zdvdlf9YfQd5E0jRJ8xWPBI6WdIKkX5vZ3iGEPw30CdYKIdxmZg+p5jQOM9tQ8Wjc\n1pL+XdLjkvaT9B1JW0n6Ut3dHC9pY0kXKJ6GcrKkRWb23hDCs9l9vkdSi6Qnsvt5RdJHJS0ws6ND\nCD+vu8/zJT0vaZaktyseGb1A0j/UjPNbkr4q6VpJv5K0p6QbJK1Xe0f9eD7HZc/n3xW/P6dKutLM\n3hlCWJ3d526Kk6HXJP2HpMckvUvShySdnm3zZkm/l7RacR9YKukwSXPNbHQI4QfqI4tHEN8m3z+7\n2mYDSYsV993zFU9tOEbxNwKbhhDOl/SspJOy53hV9iFJvdm/RnfxA8rz2WRNZjZL0tcVvxc/lLST\npM9Jep+Z7d/ZULHtFoqn9fxU0n9Lerqb57ShpPGSbgkh1J+C1Ol/FV8zH5I0R/GH0TmK+9m5ddse\no/hbopey+x+fjeNOxX1ujaSpkn5jZgfUTEw7X68/k/SApK/Ij7hPUvxh5WJJTylOaj+jePrUvt2M\nuTtHZo/1k64+GUJYZmY/l/RJM3tH9kNBT+f/1t9+jKQNFb8/z0naW/H/UW+VdGwfxwoMXAiBDz74\nSPShOJFbLekQxXP2Ov8xeFbSy5K2zrZbr4uvHSvpVUlfrbntIMV/SB+UtH7d9lOyxxrXxX3dKOk3\nNX83SSPqttlE8dzJH9fdvkbS19fxPLfLtvtSD9tcnY1v4+zvp0taJumdddt9W/F0kLfW3ffLkraq\n2e792e3n1Ny2UPH82Prn1iKpre77skZxwlK73bnZY4/O/r6FpBWSfl633ZnZ119cc1tfn88zkjap\n2e7IrM/hNbctlvRi59d20/UixR8CxtTdfpnihH/kOr53jyhO9t+Ufeym+MPSaknf62EfOjnb5mM1\ntw2XdKvi0cWNstve1Jt9qIt9fHX255qav4+t+75cV/e1n8u2O75u3KslfboXj71b9ljnrWO7uyU9\nW/P3WyXdXrdN5/75jzW33S/pl3XbjVQ8d/nXNbedkX3tT7p47Dd8PxX/n7Ja0v51+/jfmnXzPWxV\n/EGjp+f6xex+jujufmu+b2v9/6ebsZ4qaZWkbeue7+re7B988DGQD06fANIzxQtZnlU8eniZ4uTp\nIyGEv0pSCOH1v21sNiz7VWiH4j+ie3Zxn/NCCCv7O6AQrcoez8xsM0nrKx7B6urx8vBy9ufo7M+/\nVzwK+pKZvanzQ7HVCEn1qxVcHWqOmIcQ7lA8Qnp49jw2U/zh42eSNq27zxsk7WBmW9fcX9Abz5e9\nRXFit13294mKR4TPr9vu+108v74+n5+GEJbVPbYpHnmVmW0h6UBJc0MIT3bxeJ2OlnSNpOFdPOdN\n1bvv5wcV989nFSd8UxSPqH65h685TNJTIYSfdt4Q4tHZHygeAT+oF4/bk28o9u/8mKR4ZFTy70v9\n9+HHkpZLOqLu9tckzevFY3bum8vXsd1yxR8iO/2vpL3MrPZ0k2MVJ+6/kCQz+ztJO0iaX/d9Gq24\nj9TvH0HxtwNr3xjCa53/bWYjs/v4veK+09fX7mj17rl2btsndWMdlY31d4qndu7R1/sDBorTJ4D0\nguIRrAcVj5A8HUK4v3YDMzPFIzKfVfzV6PCar13axX0+OtBBmdnxir/Sf7fWPhXg4YHedzc2zv7s\n/Ed2B0nvVZyI1QuS6pes+0sX2z2g+CtaKZ6SYpK+pXgkt7v7/GvNbY/XbfNC9udm2Z+dk+O1HjuE\nsNTMXtDa+vp81nrsEMKLcTf422O/M/vzz13cn6R4Tq/iSgEnKjvHtReP25XbFE8RkeIPY/fVTdi7\nsp3iPl3vPsXvw3ZdfK4vloQQultTt/O+H6i9MYTwupk93MVjPxl6d7FpbyeA9ZPJn0k6T3EifHZ2\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# use h2o to calculate 1-D partial dependence\n", "# (easy, fast)\n", "model.partial_plot(data=valid, cols=['OverallQual'], plot=True, plot_stddev=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Two-dimensional partial dependence plots\n", "* Most machine learning algorithms implicity model high degree interactions \n", "* Two-dimensional PDPs allow us see two-way interactions in a complex model \n", "* A significant drawback of PDPs is that they can only visualize 2nd degree interactions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Investigate one dimensional behavior" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PartialDependencePlot progress: |█████████████████████████████████████████| 100%\n" ] }, { "data": { "image/png": "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\nF2h+eeABmD4d5s6FZZYpZn233ppBBx4IW29drBVee+3cVasBuGWSUpgXpTAv5WdTrPJqb4e//31+\n43v//cWf//pX8Xr//kXDu8su8LWvFTtGbLFF8bwkSVICm2KVw6xZCy1/4MEHiyOVAdZdt5j1Pfzw\n4s+tty62SuvXL2/dkiSpErzRTvX3wgtw661w9tlw2GGw1VbwrnfB9tvDl74Et9wCG2wA3/42TJ4M\nM2bAc88Vp8udeWaxLvgDH1hsQzxmzJg6XZCqwswohXlRCvNSfs4Ua/Ha22HOHJg9e/6fKY+33lpw\nGcSzzxbv278/DB4MH/0ojBhRzP5uuSUMGNArZbe1tfXK+6h5mBmlMC9KYV7Kz2Oe6+CdY5732Ydt\n11ij/gXECG+/3fOm9u23l76Gtdcu1vxus8385Q8bbeTyB0mS1Gc85rmsZswojhDOYdllYfnli8e7\n3z3/70vzWG65JR+33HJ5rluSJGkJ2BTX02WXwbbb5q5CkiRJnXijnSpr5syZuUtQgzEzSmFelMK8\nlJ9NsSpr+PDhuUtQgzEzSmFelMK8lJ9NsSpr9OjRuUtQgzEzSmFelMK8lJ9NsSprW9dvK5GZUQrz\nohTmpfxsiiVJktT0bIolSZLU9GyKVVnjx4/PXYIajJlRCvOiFOal/GyKVVnTpnV7cI20EDOjFOZF\nKcxL+XnMcx28c8zz1KkutJckSaqTlGOenSmWJElS07MpliRJUtOzKZYkSVLTsylWZbW0tOQuQQ3G\nzCiFeVEK81J+NsWqrBEjRuQuQQ3GzCiFeVEK81J+7j5RB+4+IUmSVH/uPiFJkiQlsCmWJElS07Mp\nVmVNnDgxdwlqMGZGKcyLUpiX8rMpVmW1trbmLkENxswohXlRCvNSft5oVwfeaCdJklR/3mgnSZIk\nJbApliRJUtOzKZYkSVLTsylWZQ0bNix3CWowZkYpzItSmJfysylWZQ0ZMiR3CWowZkYpzItSmJfy\nc/eJOnD3CUmSpPpz9wlJkiQpgU2xJEmSmp5NsSprypQpuUtQgzEzSmFelMK8lJ9NsSpr7NixuUtQ\ngzEzSmFelMK8lJ9NsSprwoQJuUtQgzEzSmFelMK8lJ9NsSqrf//+uUtQgzEzSmFelMK8lJ9NsSRJ\nkpqeTbEkSZKank2xKmvkyJG5S1CDMTNKYV6UwryUn02xKmvQoEG5S1CDMTNKYV6UwryUn8c814HH\nPEuSJNWfxzxLkiRJCWyKJUmS1PRsilVZ06dPz12CGoyZUQrzohTmpfxsilVZo0aNyl2CGoyZUQrz\nohTmpfxsilVZ48aNy12CGoyZUQrzohTmpfxsilVZbn+jVGZGKcyLUpiX8itFUxxC+FgIYVII4V8h\nhPYQQkun16+oPd/x8YdOY1YIIVwUQpgZQngthHB1CGHtTmNWCyH8KoTwSgjhpRDCZSGEAZ3GvCeE\ncH0I4Y0QwowQwtgQwjKdxgwOIdwZQngzhPB0CMEduSVJkhpYKZpiYADwAHA00NXGyTcAA4F1ao/P\ndnr9PGA/4CBgF2A94LedxlwJbAbsXhu7C/DjeS/Wmt8/AMsCOwJHAF8ATu8wZmVgMvB3YFtgJDA6\nhPDFJb9cSZIklUkpmuIY440xxu/EGH8PhC6GvRVj/E+M8d+1xyvzXgghvBsYDhwfY7wjxng/MAzY\nOYSwQ23MZsBewJExxvtijH8CjgUOCSGsU3urvYBNgc/HGB+KMU4GTgGOCSEsWxtzKLBc7X0ejTFe\nBVwAfKP3/omoN4wZMyZ3CWowZkYpzItSmJfyK0VTvIR2DSE8H0KYHkK4OISweofXtqOY3b113hMx\nxseAZ4Cdak/tCLxUa5jnuYViZvrDHcY8FGOc2WHMZGAVYIsOY+6MMb7dacwmIYRVluoK1ava2tpy\nl6AGY2aUwrwohXkpv0Zpim8ADgc+AYwCPg78IYQwb1Z5HWB2jPHVTr/3fO21eWP+3fHFGONc4MVO\nY55fxHuQOEYlcNppp+UuQQ3GzCiFeVEK81J+yy5+SH61JQrzPBJCeAj4G7ArcHuWoiRJklQZjTJT\nvIAY49+BmcBGtadmAMvX1hZ3NLD22rwxnXej6Aes3mnMwEW8B4ljFmnfffelpaVlgcdOO+3ExIkT\nFxh300030dLSstDvH3PMMYwfP36B56ZNm0ZLSwszZ85c4PlTTz11ofVLzzzzDC0tLQudqnPhhRcy\ncuSCG2i0tbXR0tLClClTFni+tbWVYcOGLVTb0KFDvQ6vw+vwOrwOr8Pr8DqyXUdra+s7/dX666/P\nDjvswPHHH79Q3V0JMXa12UMeIYR24JMxxkndjNkAeBo4MMZ4Xa0Z/g9wSIzxd7UxmwCPAjvGGO8N\nIWwKPAJsP29dcQhhCMVuExvEGGeEEPYGrgXWnbeuOIRwFDAGWDvGOCeE8BXgu8DA2vILQghn1mre\nvIt6twWmTp06lW233XYp/wlpSc2cOZM111wzdxlqIGZGKcyLUpiXPKZNm8Z2220HsF2McVp3Y0sx\nUxxCGBBC+GAIYevaU/9V+/k9tdfGhhA+HELYMISwOzAReJziBjdqa4nHA+eEEHYNIWwHXA7cHWO8\ntzZmem38pSGED4UQdgYuBFpjjPNmeG8C/gr8orYX8V7AGcC4GOOc2pgrgdnA5SGEzUMIQ4GvAWf3\n5T8jpRs+fHjuEtRgzIxSmBelMC/lV5Y1xdtTrA2Otce8BvNnFHsXD6a40W5V4DmK5vY7HRpVgOOB\nucDVwArAjcAxnT7nc8A4il0n2mtjj5v3YoyxPYSwP/Aj4E/AG8BPgVM7jHm1NsN8EXAfxTKO0THG\nBf/7gbIbPXp07hLUYMyMUpgXpTAv5Ve65RNV5PIJSZKk+mu45ROSJElSTjbFkiRJano2xaqsztvE\nSItjZpTCvCiFeSk/m2JV1rRp3S4dkhZiZpTCvCiFeSk/b7SrA2+0kyRJqj9vtJMkSZIS2BRLkiSp\n6dkUS5IkqenZFKuyWlpacpegBmNmlMK8KIV5KT+bYlXWiBEjcpegBmNmlMK8KIV5KT93n6gDd5+Q\nJEmqP3efkCRJkhLYFEuSJKnp2RSrsiZOnJi7BDUYM6MU5kUpzEv52RSrslpbW3OXoAZjZpTCvCiF\neSk/b7SrA2+0kyRJqj9vtJMkSZIS2BRLkiSp6dkUS5IkqenZFKuyhg0blrsENRgzoxTmRSnMS/nZ\nFKuyhgwZkrsENRgzoxTmRSnMS/m5+0QduPuEJElS/bn7hCRJkpTApliSJElNz6ZYlTVlypTcJajB\nmBmlMC9KYV7Kz6ZYlTV27NjcJajBmBmlMC9KYV7Kz6ZYlTVhwoTcJajBmBmlMC9KYV7Kz6ZYldW/\nf//cJajBmBmlMC9KYV7Kz6ZYkiRJTc+mWJIkSU3PpliVNXLkyNwlqMGYGaUwL0phXsrPpliVNWjQ\noNwlqMGYGaUwL0phXsrPY57rwGOeJUmS6s9jniVJkqQENsWSJElqejbFqqzp06fnLkENxswohXlR\nCvNSfjbFqqxRo0blLkENxswohXlRCvNSfjbFqqxx48blLkENxswohXlRCvNSfjbFqiy3v1EqM6MU\n5kUpzEv52RRLkiSp6dkUS5IkqenZFKuyxowZk7sENRgzoxTmRSnMS/ktm7sAqa+0tbXlLkENxsyU\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "GrLivArea_housingMedianAge = model.partial_plot(data=valid, cols=['GrLivArea'], plot=True, plot_stddev=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Simple function for two-dimensional partial dependence \n", "* Using H2O for speed and scalability" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " OverallQual GrLivArea partial_dependence\n", "0 1.00 334.0 137143.703321\n", "1 1.00 551.1 137143.703321\n", "2 1.00 768.2 137322.618404\n", "3 1.00 985.3 139150.945907\n", "4 1.00 1202.4 142498.408185\n", "5 1.00 1419.5 151866.473420\n", "6 1.00 1636.6 154826.462650\n", "7 1.00 1853.7 159341.580057\n", "8 1.00 2070.8 166334.613333\n", "9 1.00 2287.9 168582.463353\n", "10 1.00 2505.0 169098.297178\n", "11 1.00 2722.1 176320.530250\n", "12 1.00 2939.2 176320.530250\n", "13 1.00 3156.3 176320.530250\n", "14 1.00 3373.4 176320.530250\n", "15 1.00 3590.5 176320.530250\n", "16 1.00 3807.6 176320.530250\n", "17 1.00 4024.7 176320.530250\n", "18 1.00 4241.8 176320.530250\n", "19 1.00 4458.9 176320.530250\n", "20 1.45 334.0 137143.703321\n", "21 1.45 551.1 137143.703321\n", "22 1.45 768.2 137322.618404\n", "23 1.45 985.3 139150.945907\n", "24 1.45 1202.4 142498.408185\n", "25 1.45 1419.5 151866.473420\n", "26 1.45 1636.6 154826.462650\n", "27 1.45 1853.7 159341.580057\n", "28 1.45 2070.8 166334.613333\n", "29 1.45 2287.9 168582.463353\n", ".. ... ... ...\n", "370 9.10 2505.0 236354.889346\n", "371 9.10 2722.1 245117.310207\n", "372 9.10 2939.2 245117.310207\n", "373 9.10 3156.3 245117.310207\n", "374 9.10 3373.4 245117.310207\n", "375 9.10 3590.5 245117.310207\n", "376 9.10 3807.6 245117.310207\n", "377 9.10 4024.7 245117.310207\n", "378 9.10 4241.8 245117.310207\n", "379 9.10 4458.9 245117.310207\n", "380 9.55 334.0 197712.466050\n", "381 9.55 551.1 197712.466050\n", "382 9.55 768.2 197891.381133\n", "383 9.55 985.3 197972.276900\n", "384 9.55 1202.4 198033.452319\n", "385 9.55 1419.5 201088.716622\n", "386 9.55 1636.6 209804.896203\n", "387 9.55 1853.7 221979.026028\n", "388 9.55 2070.8 227824.230335\n", "389 9.55 2287.9 232312.456973\n", "390 9.55 2505.0 236354.889346\n", "391 9.55 2722.1 245117.310207\n", "392 9.55 2939.2 245117.310207\n", "393 9.55 3156.3 245117.310207\n", "394 9.55 3373.4 245117.310207\n", "395 9.55 3590.5 245117.310207\n", "396 9.55 3807.6 245117.310207\n", "397 9.55 4024.7 245117.310207\n", "398 9.55 4241.8 245117.310207\n", "399 9.55 4458.9 245117.310207\n", "\n", "[400 rows x 3 columns]\n" ] } ], "source": [ "# manually calculate 2-D partial dependence\n", "\n", "def par_dep_2d(xs1, xs2, frame, model, resolution=20):\n", " \n", " \"\"\" Creates Pandas dataframe containing partial dependence for a two variables.\n", " \n", " Args:\n", " xs1: First variable for which to calculate partial dependence.\n", " xs2: Second variable for which to calculate partial dependence.\n", " frame: Data for which to calculate partial dependence.\n", " model: Model for which to calculate partial dependence.\n", " resolution: The number of points across the domain of xs for which to calculate partial dependence.\n", " \n", " Returns:\n", " Pandas dataframe containing partial dependence values.\n", " \n", " \"\"\"\n", " \n", " # init empty Pandas frame w/ correct col names\n", " par_dep_frame = pd.DataFrame(columns=[xs1, xs2, 'partial_dependence'])\n", " \n", " # cache original data \n", " col_cache1 = frame[xs1]\n", " col_cache2 = frame[xs2] \n", " \n", " # determine values at which to calculate partial dependency\n", " # for xs1\n", " min1_ = frame[xs1].min()\n", " max1_ = frame[xs1].max()\n", " by1 = float((max1_ - min1_)/resolution)\n", " range1 = np.arange(min1_, max1_, by1)\n", " \n", " # determine values at which to calculate partial dependency\n", " # for xs2\n", " min2_ = frame[xs2].min()\n", " max2_ = frame[xs2].max()\n", " by2 = float((max2_ - min2_)/resolution)\n", " range2 = np.arange(min2_, max2_, by2) \n", " \n", " # calculate partial dependency \n", " for j in range1:\n", " for k in range2:\n", " frame[xs1] = j\n", " frame[xs2] = k\n", " par_dep_i = model.predict(frame)\n", " par_dep_j = par_dep_i.mean()[0]\n", " std_j = model.predict(frame).sd()[0]\n", " pos_std, neg_std = par_dep_j + std_j, par_dep_j - std_j\n", " par_dep_frame = par_dep_frame.append({xs1:j,\n", " xs2:k,\n", " 'partial_dependence': par_dep_j}, \n", " ignore_index=True)\n", "\n", " # return input frame to original cached state \n", " frame[xs1] = col_cache1\n", " frame[xs2] = col_cache2\n", "\n", " return par_dep_frame\n", "\n", "# calculate 2-D partial dependence\n", "h2o.no_progress()\n", "resolution = 20\n", "par_dep_OverallQual_v_GrLivArea = par_dep_2d('OverallQual', \n", " 'GrLivArea', \n", " valid, \n", " model, \n", " resolution=resolution)\n", "print()\n", "print(par_dep_OverallQual_v_GrLivArea)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Use matplotlib to plot two-dimensional partial dependence" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n4dktTH6dr50TwVJu9Kpg6dmzZ5w4cYLAwEAOHjzImTNnSExMJH/+/NSrV48mTZrg7e1N48aNcXBw\nMNG7yN0WLFhAq1atXjrI9c8//+S7777DwcGB7du3Gz135swZpk6dypgxY2jWrNnbWK7495DAQojc\nrk+fPjg6OvLjjz/SokULCSxyMX3+/4kTJ4xmaRQpUsRoR6NixYqvnKXxsg5Ihjsa+gtRwwJtc2q3\najiRWV/I/Ca9bmFyVr3JYMmUslIncvv2bfr06UP+/PlZv3490dHRBAYGcvjwYQIDA7l37x4A33zz\nDTNmzHibbyPXS05OplKlSpQsWRJfX1/s7OzU5wzrLVauXMm8efPo2rUrU6dOBf6v7axOpzObnxMi\nV8nUDzL55AlhIlu2bOHs2bPMnDnT1EsRmaDRaChYsCDNmjVj0qRJ7N+/n4cPH7Jt2zbq1KnDH3/8\nQatWrShfvjwff/wxixcv5vz5888N4tOnRBUoUAAbGxvs7e2xsbFRh24lJiYSFxdHTEwMMTEx6t1e\ncwkq9AFaXFwcWq0WW1vbNx5UwP+ddysrK2xsbLCzs8PW1pYCBQqg1WpJTk4mPj6ep0+f8vTpUxIS\nEkhKSlJrNzIjJSWF2NhYUlNTsba2Nqt0tYSEBBISErC0tMTW1vaFQYWiKOzbtw9vb2+aNm3KwYMH\nKVu2LDVr1mT48OFs2bKFO3fucOPGDdauXUv79u1zZH2BgYF06tSJkiVLotVq2bNnj9Hz/fr1Q6vV\nGv3p0KGD0TGJiYkMGzaMYsWKYWdnR/fu3YmMjDQ65smTJ3z88ccUKlSIIkWK8NlnnxEXF5cj70Ff\nKJ8/f37279/PtWvX8PHxMTpGo9Gon8du3brRpUsXfvnlF7Zt2wag/puYw88JkXfJjoUQJnDnzh3q\n1avHgQMH1HkKsmOR96WkpHDp0iUCAgLUgvBnz57h5eWl7mjUqlUrwzajqampJCYmkpycDKRdTLyJ\nO+umkJu7WSmKoqatpe/49apC/PStf80lCITM14kkJyczY8YMVq9ezapVq+jYseNb+7fdt28fR48e\npW7dunTt2pWdO3fSqVMn9fl+/foRGRnJmjVr1O8lKysrChUqpB4zZMgQfH19Wbt2Lfb29gwbNgwL\nCwujCdnt27cnIiKC5cuXk5SURN++ffH09GTDhg059l5OnDhBwYIFuX79Ol27dmXLli307Nnzhcde\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# create 2-D partial dependence plot\n", "\n", "# imports\n", "from mpl_toolkits.mplot3d import Axes3D\n", "from matplotlib import cm\n", "from matplotlib.ticker import LinearLocator, FormatStrFormatter\n", "\n", "# create 3-D grid \n", "new_shape = (resolution, resolution)\n", "x = np.asarray(par_dep_OverallQual_v_GrLivArea['OverallQual']).reshape(new_shape)\n", "y = np.asarray(par_dep_OverallQual_v_GrLivArea['GrLivArea']).reshape(new_shape)\n", "z = np.asarray(par_dep_OverallQual_v_GrLivArea['partial_dependence']).reshape(new_shape)\n", "\n", "\n", "fig = plt.figure(figsize=(8,6))\n", "ax = plt.axes(projection='3d')\n", "\n", "# set axes labels\n", "ax.set_title('Partial Dependence for Sale Price')\n", "ax.set_xlabel('OverallQual')\n", "ax.set_ylabel('GrLivArea')\n", "ax.set_zlabel('\\nSale Price')\n", "\n", "# axis decorators/details\n", "#ax.zaxis.set_major_locator(LinearLocator(10))\n", "#ax.zaxis.set_major_formatter(FormatStrFormatter('%.1f'))\n", "\n", "# surface\n", "surf = ax.plot_surface(x, y, z, \n", " cmap=cm.coolwarm, \n", " linewidth=0.05, \n", " rstride=1, \n", " cstride=1, \n", " antialiased=True)\n", "plt.tight_layout()\n", "\n", "_ = plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ICE Plots" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Helper function for finding quantile indices" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def get_quantile_dict(y, id_, frame):\n", "\n", " \"\"\" Returns the percentiles of a column y as the indices for another column id_.\n", " \n", " Args:\n", " y: Column in which to find percentiles.\n", " id_: Id column that stores indices for percentiles of y.\n", " frame: H2OFrame containing y and id_. \n", " \n", " Returns:\n", " Dictionary of percentile values and index column values.\n", " \n", " \"\"\"\n", " \n", " quantiles_df = frame.as_data_frame()\n", " quantiles_df.sort_values(y, inplace=True)\n", " quantiles_df.reset_index(inplace=True)\n", " \n", " percentiles_dict = {}\n", " percentiles_dict[0] = quantiles_df.loc[0, id_]\n", " percentiles_dict[99] = quantiles_df.loc[quantiles_df.shape[0]-1, id_]\n", " inc = quantiles_df.shape[0]//10\n", " \n", " for i in range(1, 10):\n", " percentiles_dict[i * 10] = quantiles_df.loc[i * inc, id_]\n", "\n", " return percentiles_dict\n", "\n", "quantile_dict = get_quantile_dict('SalePrice', 'Id', valid)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Find ICE values for each quantile" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OverallQualpartial_dependencePercentile_0Percentile_10Percentile_20Percentile_30Percentile_40Percentile_50Percentile_60Percentile_70Percentile_80Percentile_90Percentile_99
01.00151437.64303575966.25863294848.191445123093.450807129613.260252127672.796017162987.893141177709.078304178622.762375186350.199401194177.794341244319.947630
11.45151437.64303575966.25863294848.191445123093.450807129613.260252127672.796017162987.893141177709.078304178622.762375186350.199401194177.794341244319.947630
21.90151437.64303575966.25863294848.191445123093.450807129613.260252127672.796017162987.893141177709.078304178622.762375186350.199401194177.794341244319.947630
32.35151437.64303575966.25863294848.191445123093.450807129613.260252127672.796017162987.893141177709.078304178622.762375186350.199401194177.794341244319.947630
42.80151437.64303575966.25863294848.191445123093.450807129613.260252127672.796017162987.893141177709.078304178622.762375186350.199401194177.794341244319.947630
53.25151437.64303575966.25863294848.191445123093.450807129613.260252127672.796017162987.893141177709.078304178622.762375186350.199401194177.794341244319.947630
63.70151526.21262775966.25863294848.191445123093.450807129613.260252127672.796017162987.893141177709.078304178622.762375186350.199401194177.794341244319.947630
74.15151526.21262775966.25863294848.191445123093.450807129613.260252127672.796017162987.893141177709.078304178622.762375186350.199401194177.794341244319.947630
84.60157213.12776377381.10805094428.826455123563.904725133502.252095139240.513318167623.233904179171.509762190754.300217198245.411620194177.794341256650.243223
95.05157213.12776377381.10805094428.826455123563.904725133502.252095139240.513318167623.233904179171.509762190754.300217198245.411620194177.794341256650.243223
105.50161758.68536479713.94350098371.159341126021.151582139515.874767139790.649457167528.228821188466.736328188510.848602202360.317672198726.615233263326.008787
115.95161758.68536479713.94350098371.159341126021.151582139515.874767139790.649457167528.228821188466.736328188510.848602202360.317672198726.615233263326.008787
126.40161758.68536479713.94350098371.159341126021.151582139515.874767139790.649457167528.228821188466.736328188510.848602202360.317672198726.615233263326.008787
136.85198475.498142126972.039554134495.260415166897.020936181825.236823169497.131167187360.470391185575.895393248233.438707243207.699761292355.610014425611.825651
147.30198475.498142126972.039554134495.260415166897.020936181825.236823169497.131167187360.470391185575.895393248233.438707243207.699761292355.610014425611.825651
157.75211158.071701138568.949756146092.170617177201.501405196608.407951178882.231448217044.215188189258.465279260042.203691260228.943017317723.213530450280.959669
168.20211158.071701138568.949756146092.170617177201.501405196608.407951178882.231448217044.215188189258.465279260042.203691260228.943017317723.213530450280.959669
178.65211906.491402138568.949756146092.170617177201.501405196608.407951178882.231448217044.215188189258.465279260042.203691260228.943017324034.819487451183.023146
189.10211906.491402138568.949756146092.170617177201.501405196608.407951178882.231448217044.215188189258.465279260042.203691260228.943017324034.819487451183.023146
199.55211906.491402138568.949756146092.170617177201.501405196608.407951178882.231448217044.215188189258.465279260042.203691260228.943017324034.819487451183.023146
\n", "
" ], "text/plain": [ " OverallQual partial_dependence Percentile_0 Percentile_10 \\\n", "0 1.00 151437.643035 75966.258632 94848.191445 \n", "1 1.45 151437.643035 75966.258632 94848.191445 \n", "2 1.90 151437.643035 75966.258632 94848.191445 \n", "3 2.35 151437.643035 75966.258632 94848.191445 \n", "4 2.80 151437.643035 75966.258632 94848.191445 \n", "5 3.25 151437.643035 75966.258632 94848.191445 \n", "6 3.70 151526.212627 75966.258632 94848.191445 \n", "7 4.15 151526.212627 75966.258632 94848.191445 \n", "8 4.60 157213.127763 77381.108050 94428.826455 \n", "9 5.05 157213.127763 77381.108050 94428.826455 \n", "10 5.50 161758.685364 79713.943500 98371.159341 \n", "11 5.95 161758.685364 79713.943500 98371.159341 \n", "12 6.40 161758.685364 79713.943500 98371.159341 \n", "13 6.85 198475.498142 126972.039554 134495.260415 \n", "14 7.30 198475.498142 126972.039554 134495.260415 \n", "15 7.75 211158.071701 138568.949756 146092.170617 \n", "16 8.20 211158.071701 138568.949756 146092.170617 \n", "17 8.65 211906.491402 138568.949756 146092.170617 \n", "18 9.10 211906.491402 138568.949756 146092.170617 \n", "19 9.55 211906.491402 138568.949756 146092.170617 \n", "\n", " Percentile_20 Percentile_30 Percentile_40 Percentile_50 Percentile_60 \\\n", "0 123093.450807 129613.260252 127672.796017 162987.893141 177709.078304 \n", "1 123093.450807 129613.260252 127672.796017 162987.893141 177709.078304 \n", "2 123093.450807 129613.260252 127672.796017 162987.893141 177709.078304 \n", "3 123093.450807 129613.260252 127672.796017 162987.893141 177709.078304 \n", "4 123093.450807 129613.260252 127672.796017 162987.893141 177709.078304 \n", "5 123093.450807 129613.260252 127672.796017 162987.893141 177709.078304 \n", "6 123093.450807 129613.260252 127672.796017 162987.893141 177709.078304 \n", "7 123093.450807 129613.260252 127672.796017 162987.893141 177709.078304 \n", "8 123563.904725 133502.252095 139240.513318 167623.233904 179171.509762 \n", "9 123563.904725 133502.252095 139240.513318 167623.233904 179171.509762 \n", "10 126021.151582 139515.874767 139790.649457 167528.228821 188466.736328 \n", "11 126021.151582 139515.874767 139790.649457 167528.228821 188466.736328 \n", "12 126021.151582 139515.874767 139790.649457 167528.228821 188466.736328 \n", "13 166897.020936 181825.236823 169497.131167 187360.470391 185575.895393 \n", "14 166897.020936 181825.236823 169497.131167 187360.470391 185575.895393 \n", "15 177201.501405 196608.407951 178882.231448 217044.215188 189258.465279 \n", "16 177201.501405 196608.407951 178882.231448 217044.215188 189258.465279 \n", "17 177201.501405 196608.407951 178882.231448 217044.215188 189258.465279 \n", "18 177201.501405 196608.407951 178882.231448 217044.215188 189258.465279 \n", "19 177201.501405 196608.407951 178882.231448 217044.215188 189258.465279 \n", "\n", " Percentile_70 Percentile_80 Percentile_90 Percentile_99 \n", "0 178622.762375 186350.199401 194177.794341 244319.947630 \n", "1 178622.762375 186350.199401 194177.794341 244319.947630 \n", "2 178622.762375 186350.199401 194177.794341 244319.947630 \n", "3 178622.762375 186350.199401 194177.794341 244319.947630 \n", "4 178622.762375 186350.199401 194177.794341 244319.947630 \n", "5 178622.762375 186350.199401 194177.794341 244319.947630 \n", "6 178622.762375 186350.199401 194177.794341 244319.947630 \n", "7 178622.762375 186350.199401 194177.794341 244319.947630 \n", "8 190754.300217 198245.411620 194177.794341 256650.243223 \n", "9 190754.300217 198245.411620 194177.794341 256650.243223 \n", "10 188510.848602 202360.317672 198726.615233 263326.008787 \n", "11 188510.848602 202360.317672 198726.615233 263326.008787 \n", "12 188510.848602 202360.317672 198726.615233 263326.008787 \n", "13 248233.438707 243207.699761 292355.610014 425611.825651 \n", "14 248233.438707 243207.699761 292355.610014 425611.825651 \n", "15 260042.203691 260228.943017 317723.213530 450280.959669 \n", "16 260042.203691 260228.943017 317723.213530 450280.959669 \n", "17 260042.203691 260228.943017 324034.819487 451183.023146 \n", "18 260042.203691 260228.943017 324034.819487 451183.023146 \n", "19 260042.203691 260228.943017 324034.819487 451183.023146 " ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bins = list(par_dep_OverallQual['OverallQual'])\n", "for i in sorted(quantile_dict.keys()):\n", " col_name = 'Percentile_' + str(i)\n", " par_dep_OverallQual[col_name] = par_dep('OverallQual', \n", " valid[valid['Id'] == int(quantile_dict[i])], \n", " model, \n", " bins=bins)['partial_dependence']\n", "par_dep_OverallQual" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Plot partial dependence and ICE for each quantile" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n4IMPPuDee++1TRsaN24cWVlZdvH5+/szcOBAkpKSeOCBBzAajbRr1441a9bY6sTExNi+5Q8LC8Ng\nMODk5MS2bdts1/r27XvN1+Lw4cMMGTKEpk2bYjQaCQ4O5ssvv6zS66m1ZsmSJTz11FN069YNk8lE\nbm5uuXU///xzioqKGD9+vN318ePHc+rUKZKTk6vU9+1CkgshhLjl/QacAf5Uo1YKM9aAcsbF95la\niUoIceMdPXoUAG9vb3JzcwkNDSU2NpZRo0axdOlSevfuzYwZM3jllVfKPHblypV8+OGHRERE8N57\n7+Hl5YXZbKZ///7MmTOH4OBgoqKimDJlCpcuXWLfvn22x7744otMnz6dkJAQlixZwujRo1m7di2P\nPfYYJpPJVk8pRVpaGkOHDqVfv35ERUXh5eXF888/b0tmQkNDmTRpEgCzZs3i008/Zc2aNQQGBtra\nuJb9+/fz4IMPcvjwYWbMmEFUVBQeHh48+eSTbNy48bpfzwMHDpCenk7nzp158cUXcXd3x93dnfvv\nv5/vvvvOrm5qairu7u506tTJ7nqPHj3QWrN79+7r7ve2orWWW4kb0BXQO3fu1EIIcWtYpy1/os5W\nuwWz2axzkjrpq3ueqbWohCht586dGstQW1ct789V8sknn2iDwaC//fZbfeHCBX3q1Cm9bt067e3t\nrT08PHR6erqeM2eOvuOOO/SxY8fsHjtjxgzt4uKiT506pbXW+sSJE1oppRs3bqwzMzPt6q5cuVIr\npfTixYsrjOWHH37QSim9bt06u+ubN2/WSikdFxdnu+bv768NBoNOSkqyXTt//rx2c3PT06ZNs12L\nj4/XBoNBf//992X6CwsL03369LHdL44/JibGdi08PFwHBQXpwsJCu8f26tVLBwQEVPhcStuwYYNW\nSmlvb28dEBCgV69erWNiYnRAQIB2c3PTe/futdUdMGCAbt++fZk2rl69qpVSeubMmdfdb11Xld9t\nWXMhhBC3vBSgLVD9A+/Ml3ZgvnoI14DFtRaVELcyU95Vck8cuqF9GP074eTWsNba01oTHh5uu6+U\nwt/fn7i4OPz8/IiPjyckJARPT08yMzNt9cLDw5k/fz7btm1j+PDhtutDhgzBy8vLro+EhAR8fHx4\n6aWXKowjPj6exo0bEx4ebtdPly5d8PDwIDExkWee+WME9O6776Znz562+97e3gQEBPDrr79W74Uo\n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\nFBcAP//8M8uWLUvznqZfv37UqFGDHj16XDafBQsW+LTXt29fSpQowYwZM4iOjqZgwYJX1M+EhARG\njRpF48aNWbFiRcoKeJGRkTzyyCM+b8bnzZvHihUrWLNmDTfddFPK8Xr16tG/f382bNjAjTfemHL8\nhx9+YNOmTTRs2BCA7t27U6dOHZ555hliYmIAGDlyJKrKli1bKF68eErfevTowbhx4+jXr59Pv8+f\nP893332XMoJcvHhxBg8ezI8//khkZGSO9mfHjh1s376datWqAc7qUzfccAMLFixgwIABAAwfPpzD\nhw+zceNGGjVqlPJa72XLX375Zfbs2cOWLVuoUaMGAI888gjly5fnpZde4qmnnqJixYqZ+wZeghUX\nGZgyZUpKJW/MtSooKCilIEivMLDlSo0xJvcQER577DGfYwMHDmTGjBksXbqU+vXr+7zhPXHiBBcv\nXiQqKorly5dz8uRJihYtmnK+evXq2f6w1Lu9U6dOcf78eVq1asXs2bPZsWMHDRo0uKLrfvPNNxw+\nfJjo6Gif31W9evViyJAhPrExMTHUrVuX2rVrc9RrVKpNmzaoKitXrvR5M96yZcuUwgKgcuXK3HHH\nHXz00UeoKiLCwoUL6d69O4mJiT7X7NChA++++y6bN2/2eePfp08fn1tTW7dujaqye/duIiMjc7Q/\n7du3TyksABo0aEB4eDi7d+8GnJGQRYsW0bVrV5/CIrWYmBhat25NsWLFfNpt27YtkydPZs2aNdx3\n330Zvj6z7J1HBm655RYaN24c6DSMMcYYk4/UrFnTZz8iIgKPx8PevXsB+Oqrrxg7diwbNmzgzJkz\nKXEiQnx8fJriIrt+/PFHRo0axcqVKzlx4kSa9q7UL7/8goik6W+BAgVSPlVPtmvXLnbs2EHpdEaI\nRITDhw/7HEt9TYDatWtz5swZYmNjERGOHz/O7NmzmTVrVqauWblyZZ/95NuR4uLicrw/qdtObj+5\n7djYWE6cOEG9evXSxKVud9u2bZlu90pZcWGMMcYYc43yvkV09+7dtGvXjrp16zJ16lQqV65MoUKF\n+Pjjj3nllVfSTLIODQ3NVtvx8fFERUVRvHhxoqOjqVGjBiEhIWzatInhw4dftZX4kpKSaNCgAVOn\nTk134nF6b74vdz2A+++/n169eqUb86c//clnP6MFNa5kInRW++OvtpOSkmjfvj3Dhg1L97W1a9fO\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "par_dep_OverallQual.drop('partial_dependence', axis=1).plot(x='OverallQual', colormap='gnuplot', ax=ax)\n", "\n", "par_dep_OverallQual.plot(title='Partial Dependence and ICE for Sales Price',\n", " x='OverallQual', \n", " y='partial_dependence',\n", " style='r-', \n", " linewidth=3, \n", " ax=ax)\n", "\n", "_ = plt.legend(bbox_to_anchor=(1.05, 0),\n", " loc=3, \n", " borderaxespad=0.)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From this partial dependence and ICE plot, it can be seen that most individual percentiles of predicted sale price are well-represented by partial dependence, except for the most expensive houses, above the 90th percentile. Pricing for these homes appears to behave differently than the average behavior of other homes under the model." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Shutdown H2O" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Are you sure you want to shutdown the H2O instance running at http://127.0.0.1:54321 (Y/N)? y\n", "H2O session _sid_bc16 closed.\n" ] } ], "source": [ "h2o.cluster().shutdown(prompt=True)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 10_model_interpretability/src/sensitivity_analysis.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# License \n", "***\n", "Copyright 2017 J. Patrick Hall, jphall@gwu.edu\n", "\n", "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Sensitivity Analysis\n", "***" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminaries: imports, start h2o, load and clean data " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# imports\n", "import h2o \n", "import numpy as np\n", "import pandas as pd\n", "from h2o.estimators.gbm import H2OGradientBoostingEstimator" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Checking whether there is an H2O instance running at http://localhost:54321..... not found.\n", "Attempting to start a local H2O server...\n", " Java Version: java version \"1.8.0_112\"; Java(TM) SE Runtime Environment (build 1.8.0_112-b16); Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)\n", " Starting server from /Users/phall/anaconda/lib/python3.5/site-packages/h2o/backend/bin/h2o.jar\n", " Ice root: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmp0fuw9n45\n", " JVM stdout: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmp0fuw9n45/h2o_phall_started_from_python.out\n", " JVM stderr: /var/folders/tc/0ss1l73113j3wdyjsxmy1j2r0000gn/T/tmp0fuw9n45/h2o_phall_started_from_python.err\n", " Server is running at http://127.0.0.1:54321\n", "Connecting to H2O server at http://127.0.0.1:54321... successful.\n" ] }, { "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", "
H2O cluster uptime:05 secs
H2O cluster version:3.12.0.1
H2O cluster version age:20 days
H2O cluster name:H2O_from_python_phall_8skrjw
H2O cluster total nodes:1
H2O cluster free memory:3.556 Gb
H2O cluster total cores:8
H2O cluster allowed cores:8
H2O cluster status:accepting new members, healthy
H2O connection url:http://127.0.0.1:54321
H2O connection proxy:None
H2O internal security:False
Python version:3.5.2 final
" ], "text/plain": [ "-------------------------- ------------------------------\n", "H2O cluster uptime: 05 secs\n", "H2O cluster version: 3.12.0.1\n", "H2O cluster version age: 20 days\n", "H2O cluster name: H2O_from_python_phall_8skrjw\n", "H2O cluster total nodes: 1\n", "H2O cluster free memory: 3.556 Gb\n", "H2O cluster total cores: 8\n", "H2O cluster allowed cores: 8\n", "H2O cluster status: accepting new members, healthy\n", "H2O connection url: http://127.0.0.1:54321\n", "H2O connection proxy:\n", "H2O internal security: False\n", "Python version: 3.5.2 final\n", "-------------------------- ------------------------------" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# start h2o\n", "h2o.init()\n", "h2o.remove_all()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Load and prepare data for modeling" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parse progress: |█████████████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "# load data\n", "path = '../../03_regression/data/train.csv'\n", "frame = h2o.import_file(path=path)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# assign target and inputs\n", "y = 'SalePrice'\n", "X = [name for name in frame.columns if name not in [y, 'Id']]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Impute missing values" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# determine column types\n", "# impute\n", "reals, enums = [], []\n", "for key, val in frame.types.items():\n", " if key in X:\n", " if val == 'enum':\n", " enums.append(key)\n", " else: \n", " reals.append(key)\n", " \n", "_ = frame[reals].impute(method='median')\n", "_ = frame[enums].impute(method='mode')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# split into training and validation\n", "train, valid = frame.split_frame([0.7], seed=12345)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Train a predictive model" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm Model Build progress: |███████████████████████████████████████████████| 100%\n", "gbm prediction progress: |████████████████████████████████████████████████| 100%\n" ] } ], "source": [ "# train GBM model\n", "model = H2OGradientBoostingEstimator(ntrees=100,\n", " max_depth=10,\n", " distribution='huber',\n", " learn_rate=0.1,\n", " stopping_rounds=5,\n", " seed=12345)\n", "\n", "model.train(y=y, x=X, training_frame=train, validation_frame=valid)\n", "\n", "preds = valid.cbind(model.predict(valid))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Determine important variables for use in sensitivity analysis" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n7C2vjutz4jxfkeSo5Vy/Qz1PnzjW56aP/Fvo8fXFfmbzfE4XDXV8J8kmU9vXTBz7mcuo/9kTx/RX\nS9z3KRP7vmi553WOumeuzW/Nck7vlh7w/vdE+y+dp66Z6/jU4fX1kvxituslybOGsj+Y+f2Z6Muy\nrx0PDw8Pj6U9jAwDYGM3uTjxXKPDnjDxfNa/1LfWftJau3CuRlofsTCz3tIdhtEmcxZPDwc+P0+Z\nebXWftNaO3eBYi9LH1WzSZKHLVD2u1nb/2nPTA9rkmS/RXcySVU9IH10R0vy+Nbaz2cr11r7aJKP\npY+meNJS2liGluSZc/RlZn22Sp+i99Q2+2iUfx1+Xic9kJqvrTe21r58lQ2tfSdrz/mWueqNHv48\na6ev7d9a+9HU9gz1/tPQ39ukjwScy3npI9JWRGvt3NYXGJ9r+7fTR2hV+mjDeatLsl9r7bxZ6vl0\neuBT6SPrpj0nfeRdkjy5tXbGPH363uTrFb4+p6ebrqvXJTlpEY9lLUyfJMMot7dl7dTSl7XWpkfP\n3ShrF4f/4TKambxu51xnbw6Taz1e5dqYUVWbVNVO8zzm+87ze7nqOf1K+n8Ldk8PSfdqrb1isZ1u\nfSroh9PP2/Tv9ePSz/Xh8/3+AHD1EoYBsLH7RPqXsUr/S/+VDF8GHz28/G5r7TPTZWZTVdcZFvve\nYeYLV9Z+YUz6WlvzOXwx7SzWsJj51sOC6TP92S595NFi+vO+1tqvZ9vQWvtF1n6xu2tVbTVbuTns\nNfw8sfU7zM3ns8PPpU6lWqoftdY+N9uG1to30kfttSRfmSdw/L+J5wtNAXz3PNv+PX1kV9Lvvjdp\n5vWPW2vzTc96+yz7zOYjbeG145atqrasqttU1Y4T1+DMsd2kqm4+z+4/HkKvuZww/JztXO85/Dyt\ntTbb+kzzWZHrs7V2emttk+Gx5/T2ZWpLeCzX36dPlW1J/qu19q5Zylx/4vlFy2hjcp8t5yw1u8m2\nL56zVA/N5goLT8yVQ7VpC53beyV51rAu3FLM/GHl/lV1sySpqttnbXj+3iXWB8AKEoYBsFEbRjnM\nBE+3HtaBmnT/9LWCWhb4clJVW1TVAVV1YvoXvHOTnJK1X7q+MFF83rtXpn9BWyfVPamqjhv68930\n9X4mvwTOjFBbqD9fWWD7zMimSl9LarF2HX7euWa/O+FvH+kjYZJks6raYgltLNU3F9j+i0WU+9nE\n8+vPWSq5aAjYZtVa+1X651Tp03Un3TH9ujx+nvpnRpjNjNiZ77NZ52tu2hB+vbmqzk0/J2cmOTlr\nr8GDJ4rPdw2evkBTM4vWX+lcV9Vm6TevaElmDTgXsCFenzP2mQjY5nxk7e/mklTVU5K8JP3cnZ4r\nj5CdNDkidjnHPbnPL+YstXDbmy9Qdrkh4emznNNN06ffPjn939UHJ/nf4a6ai/XpJN9LH5k7cxOA\nJw4/T22tfW0JdQGwwoRhAIzBfFMlJ1/PuZjx8Bf9U9JHUuyUtXf2m+vL1/Wm65hweWvtkoW7Pbdh\nUeZj0hc83z19Ot18o0bm60+S/HiB7ZNTnW60hK7edJ5+zffYbAltLEVLX19qPjNTl+YrNzm9aZN5\nys12p8lpM+f2t+d1GLF4g+HlQp9N0sOwmamdc7lgnm1LVlV7p/9OPCNr74q6nN+JpXwm0+d6MmD7\nwcK9vooN7fqcdLXdSKKq/jj9LqktfZ2wB7W57+J6ftZ+jvON7pvLzSae/3SJ+06Wv8lchVprP5ol\n0Jrv7qrzaq1d0Vr7fmvtkPSbOfwi/fdx0Qvet9Za+t0vK2v/OzMzRfKQufYDYP1Ys3ARALhma639\nX1WdlD7y5pFVtX9r7dfDqJI/Tv9ycsJ8I3jSR5dtk/6l/G3pdwj8RpKfzEwvHAKqmak8832Rvcod\n7Zbh79MXFm/pi7y/JcnXkvxwcipcVX0pffTLQl+sV2qdo2kz4cVX0hfDXqzFhEjXBCtxXlfqs1mJ\n6y5JMkz7OjQ9hP15+l01j00fGfaL1u8imKp6SJKPz+y2Uu2voNFdn1X1oPR/zzZJX4frQa21785V\nvrV2eVWdlmTH9NG1W821ttoc7jrx/P/mLDW7yfJ3WeK+K6K19r2qel/6zQ1uX1X3WcJ6j4em3xF1\nl6raL/1mBZOjlQFYJcIwAMbikCSvTf/r/sPS18D64/SpNy3Je+basap2Sb+7WEu/o9ir5yi6lBFT\nyzYsBv3koT/HtNb+3zzFF9unmy1h+1wjSGbz0/S7Dm7WWjt1CfttLOYczTJh5tz+9ry21lpV/Sz9\nel3os0n6iJ2WpX0262Kf9OlvLckftda+MEe5q/t3YjKUusUy9h/V9VlV90n/t+/a6dNaH9RaW2ja\ncNLXS9txeP6wLHK9q6pak2Tm36dfJ/nikjqcfDV9quT1k9yvqjada23Dq9nkH0p2TrKoMKy1dkpV\nfS3JndOn2bYkx03fyAGA9c80SQDG4rCsHRkzc3evmakrv07y/nn23Wni+XxTb3adZ9tKunnWhgz/\nMVehqrphFl7cfcZCa+FMbj95kXUmfbRakmxfVTeYt+TGaYuq2n6ujVV17fS7AbZc9byenD6aat7r\nqqpulbXT15by2cxmsaPQZn4nvj9PEJZczb8Tw3Tjb6afp/suo4rRXJ9VdbckR6ZP8bwoPcRc7Eit\nd088f9YSmn101k5F/ffhLouLNtxtcWYU1e9k7dpb69uaOZ4vxqHp1+fMHU9NkQTYAAjDABiF1toP\n06dxVZI/Gu50NzPN8OjW2nxr2Ux++ZlvEed917mji7PY/jw9i5+atk9VbTrbhqq6fpI/ST9XX13i\nFKmPDj83SbL/EvbbmDxxnm1/lrWf4fSdEGde37SqHjpPHX8xyz7LNTPFdtZrYcLMNTjn2lnDIvPr\nI7z42PBz+2EK4FKM4vqsqh2THJ1+N8dfJtmrtbboUVqttS8n+e/0f0/uXlXPXkSbN0+fPpv0P0S8\nbp7i83ld+h8sKslrq+qWy6xnXUyGut9Z4r6Hp4ePv0xft+/DK9UpAJZPGAbAmMz8RX7T9JFgm0y9\nP5czJp4/abYCVfWcJEv9Ir5c38/atckeW1VXWcB9uGvmS7P4kT7bJJlr+ue/JLnh8PzNS+hnWmsf\nS1/3p5K8pKr2mq98Vd25quab9nlNU0meXVVXGSE1jOiaOecX5qpTz96R5FdDHQdV1U1nqWPXJM8b\nXp6V5Kh17O/MIvTXqqpbz1Nu5nfiBrN9psM1+e4sbprounpjetBQSd5ZVXeYq+B0kLJS12dVbTdx\n58l1/QxWVFX9XpJPpo+suizJn7bWjltGVU9Nv04ryT9V1TPmafO26cHszdL/DXpla21ZdzNtrZ2Z\ntdf4jdPv6njP+fYZbkCx1XLam6Wue6VPqU/6dfbppezfWvtxa23L1tpmrbUbt9YuXngvAK5u1gwD\nYEz+M/3L3BZZu/7NBVk7smQuX0qfinWHJH9VVTdJ8r704GDb9JE/e6evI3Ofle/2lQ0LWr8//cvp\n3ZN8rqrekL54+Q2S7JXkaenrR12c5HaLqPb4JM8dgoS3Jfle+rHtn+QP0r/QfrG19m/L6PI+Sb6Q\n/uX0P6vqI+nTO7+VfkOCm6Uvsr13+giMV6aPYtkYfD/9GI+rqn9K8on0US67JXlh1oYFfzM94q61\n9oOqenGSf0pymyRfraoD06/HTZM8OD0k2Cx95M1fDHewWxf/O/H84KG9H2VtqHrW0Mb7k7x86Mfh\nVfX6JJ9KHwFzp/Tr5k5ZD78TrbXvVNX+6dftLdPP01vTz/WP0teb2jnJw9PvernTVBUreX1eXTei\nWJYhQD02fT21luTAJOcOI2Pncn5r7Sp35mytnVVVf5LkQ+n/hr65qp6Y/seEk9LvCHrLJHumT0G/\nXtaux/iKdTmO1tq/VNUt0n9ntknyhar6ZPrNGU5J/7duTfp04bulj7icmZ786+Exl2vPcj42ST9n\nD0of8btp1oZ6v1iXYwFgwyAMA2A0Wmu/rKoPpi8+P+MDCy3I3Fq7oqoelz66Yqskjx0evy2SHiY9\nOkufQrNcL0hyz/Qv9vfKVdc8+1H6aIY3ZHFh2AuS/G36F9npKXktyYnpYcCStdZOH0aqfSjJdkke\nMTyuUnR4XJ1fNtf3HQ1/kX6XwiPTR+q9dGLbzPH+Y2vtrbPt3Fp7fVVtmeSA9C/nb5wukh5CPHmZ\no32m2zulqj6avkj6nsNj0s2T/Li1dvYwVe5N6aHHS4bHZL/ekx4qfTzzW+fPpLX2zj4YKG8c+vOc\n4XGlYrnyQugz+67k9bmh3THzLkluPfH6b4fHfN6SZL/ZNrTWjq2q+yZ5e3rodI/0f4euUjT9Dw+v\naK0td3rkdNsvGRajf016UP/AzD0at6UHmUemB80XzFGu0tdVPGm+pjNM85zn5ikrYUO7dgA2asIw\nAMbmPVk71bGlL268oNba8VV1lyQvSh+Rc4v0L8VnpAdRb8na5QfmGx3SFtg+1z7T/blgmL7z/CR/\nmuS26aMfvpM+0u2g1tqPhoBgvjZntl2a/uVy3/QbDGyXPhrijPQ1bw5aIDSc97haa6dV1R3TA8NH\npI+wuUn6OftJktOTfC7Jh1tr830xXchC53cp538x5RYs01r7YlXdNf2zekj66JmL0u+s94bW2rzT\nrlprfzeMVnpWkvulX3u/SXJu+gilgxa4O91Sr7lHpgdJf5I+GvL66V/Ur1RHa+2tVXXycFy7pQfF\nP0lflP4drbUjqurBi2h/sf1b6Bp7Z1X9V/p5elD6aLot0n9Pv5E+cm3W3/cVuj7b1M/lWu6/EfP9\nji+1rrk39kX37zGsY/fw9M/+5ukLxP8kfRTtUUkOba2dt8S25+9Yax+sqv9MD/ofnB7E3Sz92rs4\n/e6gJ6aP9PtAa22hP07MdaxXpF83Z6V/7u9srZ2yiLrW5bNf1/0BWIJa99H0AABMqqr3pU/V+kZr\nbceFygMAsP5YQB8AAACA0RCGAQAAADAawjAAAAAARkMYBgAAAMBouJvkRuCAAw7YLMn2Sb7xyle+\n8pLV7g8AkMTd4QAANkjCsI3D9klO2G+//Va7HwBAkom7de8YgRgAwLqqlazMNEkAAAAARkMYBgAA\nAMBoCMMAAAAAGA1hGAAAAACjIQwDAAAAYDSEYQAAAACMhjAMAAAAgNEQhgEAAAAwGsIwAAAAAEZD\nGAYAAADAaAjDAAAAABgNYRgAAAAAoyEMAwAAAGA0hGEAAAAAjIYwDAAAAIDREIYBAAAAMBrCMAAA\nAABGQxgGAAAAwGgIwwAAAAAYDWEYAAAAAKMhDAMAAABgNIRhAAAAAIyGMAwAAACA0RCGAQAAADAa\nwjAAAAAARkMYBgAAAMBoCMMAAAAAGA1hGAAAAACjIQwDAAAAYDSEYQAAAACMhjAMAAAAgNEQhgEA\nAAAwGsIwAAAAAEZDGAYAAADAaAjDAAAAABgNYRgAAAAAoyEMAwAAAGA0hGEAAAAAjIYwDAAAAIDR\nEIYBAAAAMBrCMAAAAABGQxgGAAAAwGisWe0OsHIe+sbP5fxssdrdAAAAAFgx5xy454rWZ2QYAAAA\nAKMhDAMAAABgNIRhAAAAAIyGMAwAAACA0RCGAQAAADAawjAAAAAARkMYBgAAAMBoCMMAAAAAGA1h\nGAAAAACjIQwDAAAAYDSEYQAAAACMhjAMAAAAgNEQhgEAAAAwGsIwAAAAAEZDGAYAAADAaAjDAAAA\nABgNYRgAAAAAoyEMAwAAAGA0hGEAAAAAjIYwDAAAAIDREIYBAAAAMBrCsFlU1Weq6p8nXp9dVc/e\nUPoDAAAAwPKsShhWVbeqqndV1feq6ldVdU5VvaGqbrQa/VmOqtqtqj5eVedX1aVVdWJVPaeqBIwA\nAAAAG6j1HtxU1W2SHJ/ktkn+bPj59CT3T/KFqrrB1dj2mhWq5xFJjkvy7ST3S7JdkjckOSDJ+1ai\nDQAAAABW3mqMYnpzkl8leWBr7fOtte+21j6R5AFJbpnkVVX1D1X1xekdq+r/quqAidd/XlWnDiOz\nTq2qfSe2bVtVV1TVo6rquKq6JMljqupGVXV4VX23qi4eRnTts9jOV9VmSd6W5COttX1baye21r7d\nWntXkicmeWRVPXIou8fQhy0n9t9leO93h9fr1B8AAAAAFm+9hmFVdcMkD0ryptbaZZPbWms/SnJY\nkkcleW+SewyjyGb23SnJHYcyqarHJnl5khcl2T7Ji5P8fVU9fqrZVyd5fZIdknwiyXXTR6Y9JMlO\nSd6a5JCq2nWRh/HgJDdK8rrpDa21I5N8M8mjJ9+epY7J99a1PwAAAAAs0opMG1yC2yepJN+YY/tp\nSW6Y5Lwk/5fkMUn+Ydj22CRfaq2dPbx+eZLntdaOGF6fOwRmz0hy6ESdr58oM2NyMfo3VdX/Sw/h\njl/kMWSeY/hGkjssop4kSWvt++vYHwAAAAAWaX2HYTNqEWUOS/LkrA3D9skwGmuYqnjbJO+sqndM\n7LNJkp9N1XPClRruC9y/JMkj06dlXnt4XLy0Q5j3GC6bZ9uVK1mh/pxyyik58+Sj8+tscqX3N99h\nj2y+4x5LqQoAAABgo7W+w7BvpU8R3CHJ9GitJNkxyQWttZ9U1fuSHFhVd06yeZJbJfn3odwWw88/\nT/LlqTp+M/V6OlR6QZL9k/xlkpOH7QelB1CLccbwc4ckV1nXbHj/a8PzK4afk8HZpivcnyTJTjvt\nlHO32yfn//bUAAAAADBtva4Z1lo7P8kxSfarqutMbquqm6dPi3z/UPZ7Sf47yeOG949prf1k2Pbj\nJN9PctvW2llTj3Mnm5ylG7slOaK19r7W2klJzs4SpjWmrzt2QZLnTW+oqr2S3C7Jvw1vnZcehN1i\nothdVrg/AAAAACzSatxN8llJrpPkE1W1e1Xdalgj65NJvpPkgImyh6dPj3xkhoXzJ7wsyYuqav+q\nun1V3bGqnlRVfzVRZrapjGckeWBV/X5V7ZC+YP3NFtv51tolSZ6eZO+qektV7TzcufKp6SHY24a7\nYyZ9JNx3kry8qm5XVXsmee5K9gcAAACAxVvvYVhr7VtJdk1yVpIPpAdGb0nyqSS7tdYm1/z6YJLf\nSb/j4kem6nln+jTJJyc5MclxSZ6YPrLqt8Vm6cIrk3w1ydFJPp3kB0n+c7qb871urX0oyR8k+d0k\nnx2O5W1JXt1a23ei3OXpYd726TcE+Ov09cHWtT8AAAAALEO1JmdZV1V17fQ10LZJskdr7afrs/0D\nDjjgrklOOOryna0ZBgAAAGxUzjlwz8XciHHRVmOa5EantXZZkr2THJLkvqvcHQAAAADmsL7vJrnR\nGgKx16x2PwAAAACYm5FhAAAAAIyGMAwAAACA0RCGAQAAADAawjAAAAAARkMYBgAAAMBoCMMAAAAA\nGA1hGAAyBbOaAAAgAElEQVQAAACjIQwDAAAAYDSEYQAAAACMhjAMAAAAgNEQhgEAAAAwGsIwAAAA\nAEZDGAYAAADAaAjDAAAAABgNYRgAAAAAoyEMAwAAAGA0hGEAAAAAjIYwDAAAAIDREIYBAAAAMBrC\nMAAAAABGY81qd4CVc+Szd8/WW2+92t0AAAAA2GAZGQYAAADAaAjDAAAAABgNYRgAAAAAoyEMAwAA\nAGA0hGEAAAAAjIYwDAAAAIDREIYBAAAAMBrCMAAAAABGQxgGAAAAwGgIwwAAAAAYDWEYAAAAAKMh\nDAMAAABgNIRhAAAAAIzGmtXuACvnoW/8XM7PFqvdDWADdM6Be652FwAAADYIRoYBAAAAMBrCMAAA\nAABGQxgGAAAAwGgIwwAAAAAYDWEYAAAAAKMhDAMAAABgNIRhAAAAAIyGMAwAAACA0RCGAQAAADAa\nwjAAAAAARkMYBgAAAMBoCMMAAAAAGA1hGAAAAACjIQwDAAAAYDSEYQAAAACMhjAMAAAAgNEQhgEA\nAAAwGsIwAAAAAEZDGAYAAADAaAjDAAAAABgNYRgAAAAAo7EqYVhVnV1Vz15C+W2r6oqqutM8ZZ5Y\nVResTA+vUvceQ/tbXh31L9D2y6rqa+u7XQAAAICN0ZLCsKp69xAKvWDq/b2r6oolVLVrkrctpe0k\nbYXKLNfVWfeG3DYAAADARmOpI8NakkuT/E1VbTXLtsVV0tpPW2u/XGLbtcTyK6Kq1qxGuwAAAACs\nvOVMkzw2yQ+TvHiuAlV1n6r6bFVdUlXnVtVBVbXZxPYrTZOsqu2q6vNVdWlVnVRV9xtGoO01VfVt\nq+rTVXVxVX29qu41S9t7V9U3h7qOrqpbTW3ft6q+VVW/qqrTqupxU9uvqKpnVNURVXXh1HHuWlVf\nGdr/n6q6/RLr3mam3qr6eVV9oKpuOlXmhVX1w2H7O5Jcd67zDAAAAMDSLCcM+016QLR/VW09vbGq\nbpvkv5L8R5I7JvmzJPdOcvBslVXVtZIckeTCJHdP8vQkB2b2kWavTPKaJLsk+WaSw4f9Z2w+9O1x\nSXZLcoMk75to6xFJ3pDktUl2Sp+q+W9VtcdUOy9L8uEkOyd518zuQ/vPSXK3JJdPbFuw7qqqJB8d\n+rR7kgck+b0k75+o41FD2y9Mn0r6gyT7zXbeAAAAAFi6ZU0BbK0dUVVfT/J3Sf5iavMLk7y3tTYT\nfp1VVX+V5Liq2re1dtlU+QcluU2S3Vtr5yVJVb0kyTGzNP3a1trRQ5mXJTk5ye3Sg7GZ43lma+34\nocwTk5xWVbsO7z0vybtaa28dyr9+GF32/CT/PdHOYa2198y8GAK+luTFrbXPD+8dmOTIqrr2cEwL\n1f2A9JDs1q217w91PCHJKVV1t9baCUn+MsnbW2vvHup4aVU9IMl1ZjkXAAAAACzRuqyH9TdJPlVV\nr5t6f5ckO09NEZxZ7+s2SU6fKn+HJN+ZCcIGX56jzZMmnv9gqPemWRuGXT4ThCVJa+30qvpZkh2S\nHD/8fGuu7H+STN/Z8oRFtp+h/e8uou7t04/z+xP9O22ifycMP/91qo4vJLnfHP35rVNOOSVnnnx0\nfp1NrvT+5jvskc13nB74BgAAADBOyw7DWmufq6pPpE9pfPfEpi3SQ6GDctVF77+93PYGv57swvBz\nOVM9F3LxKre/ZDvttFPO3W6fnJ8tVrsrAAAAABusdQ1yXpTkYUl+f+K9rybZsbV2dmvtrKnH5bPU\ncXqSbarqJhPv3WOWcou5W+Waqtp15kVVbZe+Rtepw1unpa9fNuneE9vXxWx132eq7W2q6pYT/dtx\n6N8pE2XuOVXHVW4SAAAAAMDyrMs0ybTWTq6qw3LlaYb/mOQLVXVwknekj7LaKckDWmv7z1LNMUnO\nSnJIVb0gyZbpC9W3XDkAmx5lNpvLkxxcVX+ZvtD/wUn+d1iPK+mL239gWO/s2CR7JXlEkvsvou7Z\n2p98b7a6Hz5Td2vt2Ko6OclhVfWcJJsmeVOSz7TWvjbUcVD6ovsnpE+xfFz6uTtzEf0DAAAAYAEr\nMcXvb4d6WpK01k5KskeS2yf5bPpIsZcn+d7EPr8NuVprVyTZO/1OkF9OvwvjK9ODpl/Ots88712c\nHsYdnuRzSX6RZJ+Jto5IX6T+eemL7/9Fkie11j63QDsLtr/IuvdKckH6gvqfTPKtqf79e5JXDMdw\nfJJtkrx5jv4AAAAAsETV2mJmH65fVXXv9CDtdq21s1e7Pxu6Aw444K5JTjjq8p2tGQbM6pwD91zt\nLgAAACzXYmYLLto6TZNcKVX18CQXJTkjfUTZG5J8XhAGAAAAwEraIMKwJNdPnxq4TZKfpK8j9vxV\n7REAAAAAG50NIgxrrR2a5NDV7gcAAAAAG7eVWEAfAAAAAK4RhGEAAAAAjIYwDAAAAIDREIYBAAAA\nMBrCMAAAAABGQxgGAAAAwGgIwwAAAAAYDWEYAAAAAKMhDAMAAABgNIRhAAAAAIyGMAwAAACA0RCG\nAQAAADAawjAAAAAARkMYBgAAAMBoCMMAAAAAGA1hGAAAAACjIQwDAAAAYDSEYQAAAACMhjAMAAAA\ngNEQhgEAAAAwGmtWuwOsnCOfvXu23nrr1e4GAAAAwAbLyDAAAAAARkMYBgAAAMBoCMMAAAAAGA1h\nGAAAAACjIQwDAAAAYDSEYQAAAACMhjAMAAAAgNEQhgEAAAAwGsIwAAAAAEZDGAYAAADAaAjDAAAA\nABgNYRgAAAAAoyEMAwAAAGA01qx2B1g5D33j53J+tljtbrCBOufAPVe7CwAAALDqjAwDAAAAYDSE\nYQAAAACMhjAMAAAAgNEQhgEAAAAwGsIwAAAAAEZDGAYAAADAaAjDAAAAABgNYRgAAAAAoyEMAwAA\nAGA0hGEAAAAAjIYwDAAAAIDREIYBAAAAMBrCMAAAAABGQxgGAAAAwGgIwwAAAAAYDWEYAAAAAKMh\nDAMAAABgNIRhAAAAAIyGMAwAAACA0RCGAQAAADAaow/DquplVfXV1e4HAAAAAFe/a0wYVlU3q6qD\nquqMqrq0qn5QVZ+rqmdU1fXm2W/bqrqiqu40R5HXJrn/Mvv0jaEvN13O/gAAAACsX9eIMKyqbpPk\n60kekOSFSe6c5PeTvCbJnpkjzKqqNcPTNlfdrbVLWmsXLKNP905ynSQfTPKkRZTfdKltAAAAALCy\nrhFhWJJ/TXJZkru11j7UWju9tXZOa+1jrbWHtdaOTJJhBNgzquqIqrooyYuH/Wuuiodpkl8bnj9w\nGOm15VSZg6rq2Kldn5rk8CTvTfKUWeo9u6oOqKr3VNXPk7x1eP9WVfWBqrqgqn5aVR+pqm0n9tu1\nqj5ZVedV1c+q6riqussSzxcAAAAAs9jgw7CqulGSByb5l9baLxexy8uSfDjJHZO8a5HNzIwc+1SS\nC5L8yUT710ryqPTQa+a9LZI8MsmhSY5JstUwUmza89JHtN05ySuGkWqfSPLzJPdOsluSC5McPTGK\n7fpJ3j1su2eSbyY5qqo2X+SxAAAAADCHDT4MS3K79JFd35x8cxg5deHwePXEpsNaa+8ZRo59dykN\ntdauSPKBJI+ZePsBSbZKD9hmPDrJN1tr3xj2eV/6SLFpn2qtvb61dnZr7ewkf5akWmtPa62d2lo7\nfdjvd5Pcb+jDZ1prh7fWzhi2PyPJZkn2WMqxAAAAAHBV14QwbC53T7JLklPS1+6accI61ntYkvtV\n1c2H149J8vHW2i8myjw5EyPF0qdLPmqW0VvTfdklye0nQrwLk/x06P9tk6SqblpVb6+qb1bVz9JH\nkW2eHpgBAAAAsA7WLFxk1X0rfRrjdpNvttbOSZKqunSq/MXr0lhr7fiqOivJPlX1liSPSPKEme1V\ntUOSeyW5e1W9ZmLXayXZJ8k75+nLFkmOTw/YptcxO2/4eUiSGybZP8m3k/wqyReTXHu+fp9yyik5\n8+Sj8+tscqX3N99hj2y+o0FlAAAAAMk1IAxrrZ1fVcckeVZVHdxamw6/FlXNEssfluRxSb6X5DdJ\njprY9tQk/51kv1w50HrKsG0yDJv21fT1x85rrV00R5ndkuzbWvtEklTVNkluvFCHd9ppp5y73T45\nP1ssVBQAAABgtK4p0yT3Sw/ujq+qR1XV9lV1h6p6XJLtk1y+wP6VZPuq2mXqMVcYeFiSuyZ5SZIP\nttZ+nSRD+ccnOby1dtqw7teprbVTk7wjyb2GkWNzOSzJT5IcUVX3qapbV9X9hrtVbj2UOSPJ44dj\nvGf6dMxLFjg+AAAAABbhGhGGtdbOSnKXJMcmeVX6HRq/kuSZSV6b5G9nis5VRfoi91+detx0jvbO\nTPLlJDunB1gz9kpyoyQfmWWfbyQ5NWsX0r9KX4ZRbfdNn/74oaH829PXDJtZk+wp6dMkT0jyniQH\nJfnxHMcFAAAAwBJUa0udQciG5oADDrhrkhOOunxn0ySZ0zkH7rnaXQAAAIDlmF53fZ1cI0aGAQAA\nAMBKEIYBAAAAMBrCMAAAAABGQxgGAAAAwGgIwwAAAAAYDWEYAAAAAKMhDAMAAABgNIRhAAAAAIyG\nMAwAAACA0RCGAQAAADAawjAAAAAARkMYBgAAAMBoCMMAAAAAGA1hGAAAAACjIQwDAAAAYDSEYQAA\nAACMhjAMAAAAgNEQhgEAAAAwGsIwAAAAAEZDGAYAAADAaAjDAAAAABgNYRgAAAAAoyEMAwAAAGA0\n1qx2B1g5Rz5792y99dar3Q0AAACADZaRYQAAAACMhjAMAAAAgNEQhgEAAAAwGsIwAAAAAEZDGAYA\nAADAaAjDAAAAABgNYRgAAAAAoyEMAwAAAGA0hGEAAAAAjIYwDAAAAIDREIYBAAAAMBrCMAAAAABG\nQxgGAAAAwGisWe0OsHIe+sbP5fxssdrd4GpwzoF7rnYXAAAAYKNgZBgAAAAAoyEMAwAAAGA0hGEA\nAAAAjIYwDAAAAIDREIYBAAAAMBrCMAAAAABGQxgGAAAAwGgIwwAAAAAYDWEYAAAAAKMhDAMAAABg\nNIRhAAAAAIyGMAwAAACA0RCGAQAAADAawjAAAAAARkMYBgAAAMBoCMMAAAAAGA1hGAAAAACjIQwD\nAAAAYDSEYQAAAACMhjAMAAAAgNEQhgEAAAAwGsIwAAAAAEZjvYZhVXWzqjqoqs6oqkur6gdV9bmq\nekZVXW999mVdVdUtq+pXVXXiavcFAAAAgMVZb2FYVd0mydeTPCDJC5PcOcnvJ3lNkj2T3H+Z9V6r\nqmql+rkET0rygSRbVtXdFypcVWuu9h4BAAAAMK/1OTLsX5NcluRurbUPtdZOb62d01r7WGvtYa21\nI5Okqp5TVSdW1UVV9e2qelNVbT5TSVU9saouqKqHVdUpSX6ZZJuq2rWqPllV51XVz6rquKq6y2QH\nqmq7qvr8MCrtpKq6X1VdUVV7TZS5VVV9YGjjp1X1karadpbjeXKSQ5McnuTPp9rZdqj3UUM/Lkny\nmGHbfarqs1V1SVWdO4yU22xi38dV1Veq6hfDyLnDquom63juAQAAAMh6CsOq6kZJHpjkX1prv1yg\n+G+S7J9kxyRPSPIHSf5xqsxmSV6Q5KlJdkry4yTXT/LuJLsluWeSbyY5aiZIq6prJTkiyYVJ7p7k\n6UkOTNIm+rkmySeS/DzJvYe6Lkxy9OTIrqr6wyTXS3JsksOS7DPHNM9XJ3lDkh2SfKKqfi/JfyX5\njyR3TPJnQzsHT+yzJskBSe6UZO8k2yb5twXOGQAAAACLsL6m7t0uSaUHVL9VVeclue7w8l9aay9q\nrb1xosi3q+ql6aPKnjXx/pok+7bWTp547zNTdT8jPWzaI8lRSR6U5DZJdm+tnTeUeUmSYyZ22ydJ\ntdaeNlHPU5NckOR+6eFXkjwlyftaay3JKVV1ZpJHJjlk6rhf31r7yERdb0/y3tbaTPh1VlX9VZLj\nqmrf1tplrbV3T+x/zrD9S1W1WWvtkgAAAACwbKu9jtXd00enHZ7kOklSVTNrim2fZMv0Pl6nqq47\n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\nauHY8zJ1yv14klcm+auquu/C+X+Yn/PBmTrSTkxydFXtscw6AAAAANiMXdEZdscklSmg+r656+mi\n+fOyJOnu13T3v3T3Gd390SQvSPLoJeOtSfLb3f3p7j65uy/t7mO6+x3z95OSPDlTmHTgfM/PJNkr\nyeO6+4Tu/mSS5891bXJIkuruJ3X3l+dxnpjktkkesMxnfVeStUketnDs8UmW7if24e5+VXef0t2v\nTPL+JM+cfy8PTrJvkl/p7n/r7lPmc1ckeeQy6wAAAABgM1bzbZL3TLJ/kg1Jrp9MQVBVHV1VX6+q\nC5McnuRmVXWDhfsu6+4TFgeqqltW1Rur6qtVdX6m7q61mYKsZNrb68zuPmfhts8uqeeuSfZeCOgu\nSnLuXNuPLueBuvu7Sd6Z5AlzXQckucP8HIs+veT7pzIFYJvquGmS8xfquDDJrZdbBwAAAACbtys2\n0D8l03LEfRYPdvfGJKmqS+aft8vUIfW6JH+QaV+u+2Vaeni9TPuDJZvfqP6tSW6SaYnlGZk25//0\nfN9y7ZHkc0l+NVfvGEuSc/7r5Vv0piSfqKqbJ/mNJB/s7m9uZx2nZepmW1rHt7d004YNG/K1E47M\n5d/f43+ydt8Ds/YuB27hLgAAAICx7PQwrLvPq6qjkjytqv68u7f01sW7Z1qm+OxNB6rqkGVOc0Cm\npZMfmu+7TZKbL5w/KdNG+7dY6A77ySVjfD7TksxzuvviZc77X3T356rqy5n2JfulTHufLXXvzXw/\ncaGO309yaXeftdx5161bl9P3OSTnxbZiAAAAAFuyq5ZJPiVT8Pa5qnp0Vd25qu5UVY9JcudM+2Gd\nkuS6VfWMqtqrqh6bKVBajpOTPHYe915J3pbkuwvnj0pyapK3VtV+VXWfJC/O1LG2aRP9tyf5VpL3\nVdV9q+r28xsnX11Ve25mzqVdW4v+OtN+Z5ck+afNnH9gVT2zqvauqmcmOTjJq+ZzH0jyhbmOB811\n3LeqDq2qH1vG7wIAAACALdglYVh3n5rkJ5IcneSlmcKef03y1CQvT/LC7v5ikt/N9KbILyX5lUxv\nXVyOJ2RaJnlckrckeXWmt0xumv+qJI/ItI/YZ5O8IVMYVpmXX84da/fPtMzyPUm+nOSNmfYMu3Bz\nj7WVet42/zy8u6/czPlDMy0B/UKS/53kKd398YVaf2au862ZOsYOT3KrbN9yTQAAAACWqO6tZTq7\nr7k77GNJ7tjdp63w2HfKFKb9WHd/Zcm5s5K8qLvfsFLzrV+//m5JjvvAFfvtdsskNx560GqXAAAA\nAKyura3O2267YgP9a4WqemSSizMtqdw707LEj69kEFZVa5LcIslLknxkaRAGAAAAwOoaJgxLcuMk\nhyW5Taa9wY5K8uyt3rH9HpRpz68vJ3nUFq4ZsxUPAAAA4FpgmDCsuw/PtPfWzpzjQ0mus41rNrcZ\nPwAAAAC7wK56myQAAAAArDphGAAAAADDEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADDEIYB\nAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADD\nEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADDWLPaBbByjnjG/bLn\nnnuudhkAAAAA11o6wwAAAAAYhjAMAAAAgGEIwwAAAAAYhjAMAAAAgGEIwwAAAAAYhjAMAAAAgGEI\nwwAAAAAYhjAMAAAAgGEIwwAAAAAYhjAMAAAAgGEIwwAAAAAYhjAMAAAAgGEIwwAAAAAYxprVLoCV\n8/DXHJvzssdql7EiNh560GqXAAAAAOyGdIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADDEIYB\nAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADD\nEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAA\nAADDEIYBAAAAMAxh2BZU1XWq6qqqethq1wIAAADAytjlYVhV/e0cMm36fKuqPlhV++3EOV9UVcdv\n5vjGJbVcVVVnJEl3X5nkh5IctZ1z/VZVfaGqLq6qb1fVcVX17IXzfzzPc+XCnFdW1f3n8z9WVe9Z\nqO0p1+zpAQAAANhktTrDPpjkVpnCpgcmuSLJ+3fynL2FY+vnOjZ9fuL7J7vP7u7LlztBVT0pycuT\n/FmS/ZIckOQVSf7nkku/sGTOWyf55HxubZKTk/xekrOXOzcAAAAA27ZaYdj3uvucOWz6YpJDk9ym\nqm5WVdetqtdW1Teq6pKqOq2qnrvpxrlb6klV9f6q+k5Vfbmq7l1VP1pVx8wdWZ+oqr3m6x+f5EVJ\n9l/ownrcQi0Xz3Vs+pw733e1ZZLz+FdV1SOq6qPz3MdX1U8ujHVwkr/r7rd292ndfWJ3/113v3DJ\n8yjJl+sAACAASURBVF+x8PybPlckSXd/pruf193vTrLsIA4AAACAbVv1PcOqao8kj01y8hxE/U6S\nhyd5VJI7Jfm1JBuX3LY+yZuT7J/kxCTvSPJXSV6S5O5JKslr52vfleRPk2zI1I126/nYjnpxkpfO\nc5+a5O1VVfO5/0jyU1V1m2swPgAAAAA7yWqFYQdX1UVVdVGSCzOFX4fM526TKRj7ZHefOf9cGl79\nTXe/p7tPybQs8fZJ3tbdR3f3SUleneQBSdLdlya5OFfvxvrewliHbaqlqi6sqqdto/bDuvuf57n/\nMMkdkuw1n3tRku8kOb2qTqyqv6mq/7WZMe42z7Vp3o9vY04AAAAAVsCaVZr3I0menKmD6yZJnpLk\nyKq6Z6aOr6Oq6qQkRyY5oruXbmL/pYV/f3P+ecKSYzeoqj26++Jt1PKKec5NvrWN6xfnPmt+hlsm\nObW7v5GpM2xdkvtn2jPs8Kr6je5++MJ9G5I8cr43SRbDuR2yYcOGfO2EI3N5rnO142v3PTBr73Lg\nNR0eAAAAYLewWmHYd7r7tE1fquo3k1yQ5De7+4VVdfskP5fkwUn+T1Ud3d2/tHD/4l5avZVjy+l8\n+1Z3n7odtW9znu7ekCnw+suqelOSY6rqPt39ifmS7y0+/0pYt25dTt/nkJyXPVZyWAAAAIDdymqF\nYZvTSW6YJHM317uTvLuq3pOpa+wHu/v8rdy7NZclS1qmdrzG7XXi/HPtCswPAAAAwDWwWmHY9avq\nVvO/b5Lk6UlulOT9VfWsTMsPj88UPj06yVlbCcKS/1xuuKVjG5PsVVX7J/l6kou6+7IdqHtz8/zn\nyaq/SnJmkmPmeX44yQsybaz/mWVNUHXdJHeZ57pukh+e675oOzvYAAAAAFhitTbQ/9kk35g/n870\nBshHdffHklyU5DlJ/jVTgHTbJA9buHdz3VnbOvaeTPuPHZPk7PznZv3b6vRaen5b8xyV5KcydbWd\nlOmtlRcmeVB3X7CNuTa5baYg8Lgkt0jyvCSfz/S2TAAAAACugerekZV/XJusX7/+bkmO+8AV++02\ne4ZtPPSg1S4BAAAAuHbY6kq97bVanWEAAAAAsMsJwwAAAAAYhjAMAAAAgGEIwwAAAAAYhjAMAAAA\ngGEIwwAAAAAYhjAMAAAAgGEIwwAAAAAYhjAMAAAAgGEIwwAAAAAYhjAMAAAAgGEIwwAAAAAYhjAM\nAAAAgGEIwwAAAAAYhjAMAAAAgGEIwwAAAAAYhjAMAAAAgGEIwwAAAAAYhjAMAAAAgGEIwwAAAAAY\nhjAMAAAAgGEIwwAAAAAYxprVLoCVc8Qz7pc999xztcsAAAAAuNbSGQYAAADAMIRhAAAAAAxDGAYA\nAADAMIRhAAAAAAxDGAYAAADAMIRhAAAAAAxDGAYAAADAMIRhAAAAAAxDGAYAAADAMIRhAAAAAAxD\nGAYAAADAMIRhAAAAAAxDGAYAAADAMNasdgGsnIe/5ticlz1Wu4zttvHQg1a7BAAAAGAQOsMAAAAA\nGIYwDAAAAIBhCMMAAAAAGIYwDAAAAIBhCMMAAAAAGIYwDAAAAIBhCMMAAAAAGIYwDAAAAIBhCMMA\nAAAAGIYwDAAAAIBhCMMAAAAAGIYwDAAAAIBhCMMAAAAAGIYwDAAAAIBhCMMAAAAAGIYwDAAAAIBh\nCMMAAAAAGIYwDAAAAIBhCMMAAAAAGIYwDAAAAIBhCMMAAAAAGMZuGYZV1Tur6h2rXQcAAAAA1y47\nJQyrqquq6sr559LPlVX1wmWO86mqeukK1PN3S2o4p6qOqKp9r+nY25j3ZVX1qc0cv/s8/9lV9d2q\nOrWq3l5VPzif32cLv7c37Mx6AQAAAHZ3O6sz7IeS3Hr++cwkFyS51cLxP9lJ825JJ3nvXMOtkzwk\nyZr52K6Y+/uq6tZJjkry9SQPSrJvkicmOSfJDZfcd59Mv7NNv7ff3QX1AgAAAOy2dkoY1t1nb/pk\nCsK6u89ZOP7dJKmqB1fV56rq0qr696r6/6uq5nPvTHKvJM9d6Iy6ZVVdr6r+tqo2zl1VJ1bVby+j\nrEvnGr7Z3V9I8ookd6yqtfN816+q11fVWVV1SVV9raqetXDuqqr6jar6YFV9p6q+NHd47VNVx1bV\nxVX1saq6zXzPbyV5bpJ7LdT/6CT3T3Ld7n5yd3+pu0/v7mO6+5ndfdaSms9d/F1298XX9L8NAAAA\nwMhWbc+wqrpdkvcn+WiSuyZ5WpKnJvm9+ZLfSvL5JK/N3Bk1h2trknwtySMzdVW9NMmfVNXDt2Pu\nGyd5TJIN3f2d+fDvZerUemSSOyV5fJIzl9z6wiR/lWT/JGckeXuS183H75mps+tV87VvmWv/fP6z\n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\nLskVSR6Q5LCq+nB3X7iDY1+nu69cqVoBAAAA+E+7ujPsL5NcluTu3f2e7j6puzd29/u7++DuPiJJ\nqupZVfXFqrq4qs6oqtdV1dpNg1TV46vq21V1cFVtSHJpkttU1T3m7qxzqur8qvpoVf3EYgFVtU9V\nfXzu5vpSVT2gqq6qqp9fuOZHqupd8xznVtV7q+p2C8O8LMltk/xkd7+tu7/S3ad095uS/HiSi+dx\nHlNV/1pVF84dcG+vqlsszHPgPPfPVtXnqurSJPepqrtW1Ufm+y6Yx7jbSv/HAAAAABjNLgvDquqm\nSR6S5LXdfek2Lr8yydOT3CXJ45L8dJLDllxzoyTPSfLEJOuSnJ2pU+vNSQ5Icq8kX03ygU1B2txB\n9r4kFyW5Z5LfSnJoku93lFXVmiQfSnJBkvvMY12U5MiqWlNVleSXk7ytu7+5tPDu/m53XzV/XZNk\nfZK7JnlEktsl+dvNPO/Lkjw3yb5JvpTk7UnOTHL3JHeba7x8q78xAAAAALZpVy6TvGOSyhRQfV9V\nnZPkBvPX13b373f3axYuOaOqXpCpq+xpC8fXJPnt7j5h4dgxS8Z+cqbg6sAkH0jyM0n2SnK/7j5n\nvub5SY5auO2QJNXdT1oY54lJvp1pGeS/JblJkpO29cDd/eaFrxur6plJPlNVN+ru7y6ce0F3f3hh\nvtsmeXl3nzwf+tq25gIAAABg264Nb5O8Z5L9k2xIcv0kqaoHV9XRVfX1qrowyeFJblZVN1i477Il\nQViq6pZV9caq+mpVnZ+pu2ttpiWNSXKnJGduCsJmn11Sz12T7F1VF236JDl3ru1HMwV6y1JVd6+q\nf6yq0+fn+Oh86rYLl3WS45bc+mdJ/rqqjqqq51bVHZY7JwAAAABbtis7w07JFPzss3iwuzcmSVVd\nMv+8XZL3J3ldkj/ItNn+/ZK8Kcn1Mu0PliSXbGaOt2bq2np6kjMybc7/6fm+5doj04b4v5r/Gnyd\nk2k/sPOT3Hlrg1TVjZIcmeSD81jnZFomeeRm6vnO4pfu/qOqenuSg5I8LMkfVtUh3f2+Lc23YcOG\nfO2EI3N5rnO142v3PTBr73Lg1koFAAAAGMYuC8O6+7yqOirJ06rqz7t7c2FWMu2TVd397E0HquqQ\nZU5zQKalkx+a77tNkpsvnD8p00b7t1joDvvJJWN8Psmjk5zT3RdvbpKq+rskj6mqP+ru/1hybm2m\noO7OSW6a5Pe7+9/nc0vn2qLuPiXJq5O8uqrekeQ3Mu13tlnr1q3L6fsckvOyx3KnAAAAABjOrl4m\n+ZRMAdznqurRVXXnqrpTVT0mU3h0RaYOsutW1TOqaq+qemymje6X4+Qkj53HvVeStyVZ3JvrqCSn\nJnlrVe1XVfdJ8uJMHWubNtF/e5JvJXlfVd23qm4/v3Hy1VW153zN8zNtcP+ZqnpsVe1bVXesqick\nOT5Td9kZmd6cuek5fj7TZvpLXa37rKpuUFV/Pr9p8rZzjfdM8uVl/g4AAAAA2IJdGoZ196lJfiLJ\n0UlemuQLSf41yVOTvDzJC7v7i0l+N9ObIr+U5FeSPG+ZUzwh0zLJ45K8JVNn1dkL81+V6a2OazPt\nFfaGTGFYZV5+OXes3T9TmPWeTCHUGzPtGXbhfM23k9w7U9j2/EzdZB/LtBzyhd19YXd/K8mvJ3lU\npv3QnpPkf2/u17Lk+5VJbjbXf1KSv0vyT0n+cJm/AwAAAAC2oLqXZjFjmTuvPpbkjt192mrXsyPW\nr19/tyTHfeCK/XbZMsmNhx60S+YBAAAAhrfslxkux67cQP9aoaoemWkT/JOT7J3kVUk+/t81CAMA\nAABg+YYLw5LcOMlhSW6TaW+wo5I8e6t3AAAAALBbGC4M6+7Dkxy+2nUAAAAAsOvt6rdJAgAAAMCq\nEYYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAA\nAADDEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxhGAAAAADDEIYBAAAAMAxh\nGAAAAADDEIYBAAAAMAxhGAAAAADDEIYBAAAAMIw1q10AK+eIZ9wve+6552qXAQAAAHCtpTMMAAAA\ngGEIwwAAAAAYhjAMAAAAgGEIwwAAAAAYhjAMAAAAgGEIwwAAAAAYhjAMAAAAgGEIwwAAAAAYhjAM\nAAAAgGEIwwAAAAAYhjAMAAAAgGEIwwAAAAAYhjAMAAAAgGGsWe0CWDkPf82xOS97rMhYGw89aEXG\nAQAAALg20RkGAAAAwDCEYQAAAAAMQxgGAAAAwDCEYQAAAAAMQxgGAAAAwDCEYQAAAAAMQxgGAAAA\nwDCEYQAAAAAMQxgGAAAAwDCEYQAAAAAMQxgGAAAAwDCEYQAAAAAMQxgGAAAAwDCEYQAAAAAMQxgG\nAAAAwDCEYQAAAAAMQxgGAAAAwDCEYQAAAAAMQxgGAAAAwDCEYQAAAAAMQxi2gqrqRVV1/GrXAQAA\nAMDmrVgYVlU/UlV/U1X/XlXfq6qNVfWqqrrpSs2xHbX8bVVdVVVXzrWcXFUvqKpdEf71Nmq7eVX9\nZVWdXlWXVtVZVfXBqvqphWs2zvUvfs7Y+aUDAAAA7N7WrMQgVbVXkk8lOSnJLyfZmGRdkj9J8nNV\nda/uPn8l5toOH0zy60lukOTnkvxFku8lefmODFZV1+3uy1egrr/P9Ht/bJLTktwqyYOS3Gzhmk6y\nPsmbFo5duQJzAwAAAAxtpTqlNgVND+nuj3f317v7Q0kenOSHk7wkSarqtKpaX1XvqKqLq+rrVfWU\nxYGq6geq6k1VdXZVXVBVR1fVXRfOv6iqjq+qx8zjnV9V76yqtUtq+l53n9PdZ3b3G5IcneQRC+P8\nr6o6Ye7OOq2qfndJHZtqfUtVXZDk9fPxH57nO3d+hs9W1T2X3LvZ2qrqB5LcN8lzu/tjc22f6+7D\nuvuIJfVf3N1nL3zO3b7/JAAAAAAsdY3DsKq6SZKfSfK67r5s8Vx3fzPJ2zN1i23y7CTHJ/nxJIcm\neXVVPWjh/P/N1CX10CR3S/L5JEdX1Q8uXPOjmYKthyU5KMmBSZ63jVIvTXK9uea7J3lXknck+bEk\nL0ryx1X1uCX3/O8kX5hr/eM51PpYklsneXiS/ZK8LFf/Pd5xK7VdPH8eWVXX20a9AAAAAKywlegM\n2ztJJfnKFs6fmOQmVXXz+fsnuvsV3X1Kd782U/j1rCSpqvsmuUeSR3f38d39te5+TpILkjxqYcxK\n8vjuPrG7P5Hk8ExLDTerqh6cKVz78HzoWUmO7u6XznW8Nclrk/zekls/3N2v7O7Tuvu0JL+WKah7\nRHd/aj7+D939meXU1t1XJnn8/Dm/qj5eVS+pqv02U/ZhVXXR/Lmwqp62pecDAAAAYHlWckP5WuZ1\nn9rM933nf981yY2TnLcQBF2U5PaZusE22djd3134flaSWy4Z9+D5/kuT/FOSdyb5o/ncvkk+seT6\nTyTZu6oWn+O4Jdfsn+T47r5gK8+31dq6+x+S7Jnk4Ez7mh2Y5POb6Up7xTzf/pk60966lTkBAAAA\nWIaV2ED/lEwbvu+b5H2bOX+XJN/u7m9dPWfarD2SfCNTQLT04sUN+JduZN/5r8HeR5I8eb72G919\n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\nrkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model.varimp_plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Helper function for finding quantile indices" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SalePrice quantiles:\n", " {0: 534, 80: 148, 50: 348, 99: 770, 20: 1137, 70: 1441, 40: 1369, 10: 1136, 60: 488, 90: 818, 30: 1114}\n", "\n", "prediction quantiles:\n", " {0: 534, 80: 471, 50: 270, 99: 225, 20: 873, 70: 488, 40: 1351, 10: 69, 60: 392, 90: 641, 30: 1130}\n" ] } ], "source": [ "def get_quantile_dict(y, id_, frame):\n", "\n", " \"\"\" Returns the percentiles of a column y as the indices for another column id_.\n", " \n", " Args:\n", " y: Column in which to find percentiles.\n", " id_: Id column that stores indices for percentiles of y.\n", " frame: H2OFrame containing y and id_. \n", " \n", " Returns:\n", " Dictionary of percentile values and index column values.\n", " \n", " \"\"\"\n", " \n", " quantiles_df = frame.as_data_frame()\n", " quantiles_df.sort_values(y, inplace=True)\n", " quantiles_df.reset_index(inplace=True)\n", " \n", " percentiles_dict = {}\n", " percentiles_dict[0] = quantiles_df.loc[0, id_]\n", " percentiles_dict[99] = quantiles_df.loc[quantiles_df.shape[0]-1, id_]\n", " inc = quantiles_df.shape[0]//10\n", " \n", " for i in range(1, 10):\n", " percentiles_dict[i * 10] = quantiles_df.loc[i * inc, id_]\n", "\n", " return percentiles_dict\n", "\n", "sale_quantile_dict = get_quantile_dict('SalePrice', 'Id', preds)\n", "pred_quantile_dict = get_quantile_dict('predict', 'Id', preds)\n", "\n", "print('SalePrice quantiles:\\n', sale_quantile_dict)\n", "print()\n", "print('prediction quantiles:\\n',pred_quantile_dict)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Get validation data ranges" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "lowest SalePrice:\n", " " ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice
39300
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "lowest prediction:\n", " " ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
predict
65629.6
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "highest SalePrice:\n", " " ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
SalePrice
538000
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "highest prediction:\n", " " ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
predict
440843
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "print('lowest SalePrice:\\n', preds[preds['Id'] == int(sale_quantile_dict[0])]['SalePrice'])\n", "print('lowest prediction:\\n', preds[preds['Id'] == int(pred_quantile_dict[0])]['predict'])\n", "print('highest SalePrice:\\n', preds[preds['Id'] == int(sale_quantile_dict[99])]['SalePrice'])\n", "print('highest prediction:\\n', preds[preds['Id'] == int(pred_quantile_dict[99])]['predict'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This result alone is interesting. The model appears to be struggling to accurately predict low and high values for SalePrice. This behavior should be corrected to increase the accuracy of predictions. A strategy for improving predictions for these homes with extreme values might be to weight them higher during training using observation weights, or they may need their own models." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Now use trained model to test predictions for interesting situations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### How will the model handle making the home with the lowest predicted price even less desirable?" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Id MSSubClassMSZoning LotFrontage LotAreaStreet Alley LotShape LandContour Utilities LotConfig LandSlope Neighborhood Condition1 Condition2 BldgType HouseStyle OverallQual OverallCond YearBuilt YearRemodAddRoofStyle RoofMatl Exterior1st Exterior2nd MasVnrType MasVnrAreaExterQual ExterCond Foundation BsmtQual BsmtCond BsmtExposure BsmtFinType1 BsmtFinSF1BsmtFinType2 BsmtFinSF2 BsmtUnfSF TotalBsmtSFHeating HeatingQC CentralAir Electrical 1stFlrSF 2ndFlrSF LowQualFinSF GrLivArea BsmtFullBath BsmtHalfBath FullBath HalfBath BedroomAbvGr KitchenAbvGrKitchenQual TotRmsAbvGrdFunctional FireplacesFireplaceQu GarageType GarageYrBltGarageFinish GarageCars GarageAreaGarageQual GarageCond PavedDrive WoodDeckSF OpenPorchSF EnclosedPorch 3SsnPorch ScreenPorch PoolAreaPoolQC Fence MiscFeature MiscVal MoSold YrSoldSaleType SaleCondition SalePrice predict
534 20RL 50 5000Pave NA Reg Low AllPub Inside Mod BrkSide Norm Norm 1Fam 1Story 1 3 1946 1950Gable CompShg VinylSd VinylSd None 0Fa Fa Slab NA NA NA NA 0NA 0 0 0GasA Fa N FuseF 334 0 0 334 0 0 1 0 1 1Fa 2Typ 0NA NA 1978.51NA 0 0NA NA N 0 0 0 0 0 0NA NA NA 0 1 2007WD Normal 39300 65629.6
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "# look at current row\n", "print(preds[preds['Id'] == int(pred_quantile_dict[0])])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Error: 67.00%\n" ] } ], "source": [ "# find current error\n", "observed = preds[preds['Id'] == int(pred_quantile_dict[0])]['SalePrice'][0,0]\n", "predicted = preds[preds['Id'] == int(pred_quantile_dict[0])]['predict'][0,0]\n", "print('Error: %.2f%%' % (100*(abs(observed - predicted)/observed)))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Id MSSubClassMSZoning LotFrontage LotAreaStreet Alley LotShape LandContour Utilities LotConfig LandSlope Neighborhood Condition1 Condition2 BldgType HouseStyle OverallQual OverallCond YearBuilt YearRemodAddRoofStyle RoofMatl Exterior1st Exterior2nd MasVnrType MasVnrAreaExterQual ExterCond Foundation BsmtQual BsmtCond BsmtExposure BsmtFinType1 BsmtFinSF1BsmtFinType2 BsmtFinSF2 BsmtUnfSF TotalBsmtSFHeating HeatingQC CentralAir Electrical 1stFlrSF 2ndFlrSF LowQualFinSF GrLivArea BsmtFullBath BsmtHalfBath FullBath HalfBath BedroomAbvGr KitchenAbvGrKitchenQual TotRmsAbvGrdFunctional FireplacesFireplaceQu GarageType GarageYrBltGarageFinish GarageCars GarageAreaGarageQual GarageCond PavedDrive WoodDeckSF OpenPorchSF EnclosedPorch 3SsnPorch ScreenPorch PoolAreaPoolQC Fence MiscFeature MiscVal MoSold YrSoldSaleType SaleCondition SalePrice predict
534 20RL 50 5000Pave NA Reg Low AllPub Inside Mod IDOTRR Norm Norm 1Fam 1Story 0 3 1946 1950Gable CompShg VinylSd VinylSd None 0Fa Fa Slab NA NA NA NA 0NA 0 0 0GasA Fa N FuseF 334 0 0 500 0 0 1 0 1 1Fa 2Typ 0NA NA 1978.51NA 0 0NA NA N 0 0 0 0 0 0NA NA NA 0 1 2007WD Normal 39300 50466
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Error: 28.41%\n" ] } ], "source": [ "# change value of important variables\n", "test_case = preds[preds['Id'] == int(pred_quantile_dict[0])]\n", "test_case = test_case.drop('predict')\n", "test_case['OverallQual'] = 0\n", "test_case['Neighborhood'] = 'IDOTRR'\n", "test_case['GrLivArea'] = 500\n", "test_case = test_case.cbind(model.predict(test_case))\n", "print(test_case)\n", "\n", "# recalculate error\n", "observed = test_case['SalePrice'][0,0]\n", "predicted = test_case['predict'][0,0]\n", "print('Error: %.2f%%' % (100*(abs(observed - predicted)/observed)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While the model does not seem to handle low-valued homes very well, making the home with the lowest predicted price less appealling does not seem to make the model's predictions any worse. While this prediction behavior appears somewhat stable, which would normally be desirable, this is not particularly good news as the underlying prediction is so inaccurate. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### How will the model handle making the home with the highest predicted price even more desirable?" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Id MSSubClassMSZoning LotFrontage LotAreaStreet Alley LotShape LandContour Utilities LotConfig LandSlope Neighborhood Condition1 Condition2 BldgType HouseStyle OverallQual OverallCond YearBuilt YearRemodAddRoofStyle RoofMatl Exterior1st Exterior2nd MasVnrType MasVnrAreaExterQual ExterCond Foundation BsmtQual BsmtCond BsmtExposure BsmtFinType1 BsmtFinSF1BsmtFinType2 BsmtFinSF2 BsmtUnfSF TotalBsmtSFHeating HeatingQC CentralAir Electrical 1stFlrSF 2ndFlrSF LowQualFinSF GrLivArea BsmtFullBath BsmtHalfBath FullBath HalfBath BedroomAbvGr KitchenAbvGrKitchenQual TotRmsAbvGrdFunctional FireplacesFireplaceQu GarageType GarageYrBltGarageFinish GarageCars GarageAreaGarageQual GarageCond PavedDrive WoodDeckSF OpenPorchSF EnclosedPorch 3SsnPorch ScreenPorch PoolAreaPoolQC Fence MiscFeature MiscVal MoSold YrSoldSaleType SaleCondition SalePrice predict
225 20RL 103 13472Pave NA Reg Lvl AllPub Inside Gtl NridgHt Norm Norm 1Fam 1Story 10 5 2003 2003Hip CompShg VinylSd VinylSd BrkFace 922Ex TA PConc Ex TA Gd GLQ 56Unf 0 2336 2392GasA Ex Y SBrkr 2392 0 0 2392 0 0 2 0 3 1Ex 8Typ 1Ex Attchd 2003Fin 3 968TA TA Y 248 105 0 0 0 0NA NA NA 0 6 2009WD Normal 386250 440843
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "# look at current row\n", "print(preds[preds['Id'] == int(pred_quantile_dict[99])])" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Error: 14.13%\n" ] } ], "source": [ "# find current error\n", "observed = preds[preds['Id'] == int(pred_quantile_dict[99])]['SalePrice'][0,0]\n", "predicted = preds[preds['Id'] == int(pred_quantile_dict[99])]['predict'][0,0]\n", "print('Error: %.2f%%' % (100*(abs(observed - predicted)/observed)))" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "gbm prediction progress: |████████████████████████████████████████████████| 100%\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Id MSSubClassMSZoning LotFrontage LotAreaStreet Alley LotShape LandContour Utilities LotConfig LandSlope Neighborhood Condition1 Condition2 BldgType HouseStyle OverallQual OverallCond YearBuilt YearRemodAddRoofStyle RoofMatl Exterior1st Exterior2nd MasVnrType MasVnrAreaExterQual ExterCond Foundation BsmtQual BsmtCond BsmtExposure BsmtFinType1 BsmtFinSF1BsmtFinType2 BsmtFinSF2 BsmtUnfSF TotalBsmtSFHeating HeatingQC CentralAir Electrical 1stFlrSF 2ndFlrSF LowQualFinSF GrLivArea BsmtFullBath BsmtHalfBath FullBath HalfBath BedroomAbvGr KitchenAbvGrKitchenQual TotRmsAbvGrdFunctional FireplacesFireplaceQu GarageType GarageYrBltGarageFinish GarageCars GarageAreaGarageQual GarageCond PavedDrive WoodDeckSF OpenPorchSF EnclosedPorch 3SsnPorch ScreenPorch PoolAreaPoolQC Fence MiscFeature MiscVal MoSold YrSoldSaleType SaleCondition SalePrice predict
225 20RL 103 13472Pave NA Reg Lvl AllPub Inside Gtl StoneBr Norm Norm 1Fam 1Story 10 5 2003 2003Hip CompShg VinylSd VinylSd BrkFace 922Ex TA PConc Ex TA Gd GLQ 56Unf 0 2336 2392GasA Ex Y SBrkr 2392 0 0 5000 0 0 2 0 3 1Ex 8Typ 1Ex Attchd 2003Fin 3 968TA TA Y 248 105 0 0 0 0NA NA NA 0 6 2009WD Normal 386250 478120
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Error: 23.78%\n" ] } ], "source": [ "# change value of important variables\n", "test_case = preds[preds['Id'] == int(pred_quantile_dict[99])]\n", "test_case = test_case.drop('predict')\n", "test_case['Neighborhood'] = 'StoneBr'\n", "test_case['GrLivArea'] = 5000\n", "test_case = test_case.cbind(model.predict(test_case))\n", "print(test_case)\n", "\n", "# recalculate error\n", "observed = test_case['SalePrice'][0,0]\n", "predicted = test_case['predict'][0,0]\n", "print('Error: %.2f%%' % (100*(abs(observed - predicted)/observed)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This result may point to unstable predictions for the higher end of SalesPrice." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Shutdown H2O" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Are you sure you want to shutdown the H2O instance running at http://127.0.0.1:54321 (Y/N)? y\n", "H2O session _sid_bf11 closed.\n" ] } ], "source": [ "h2o.cluster().shutdown(prompt=True)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: README.md ================================================ # Materials for GWU DNSC 6279 and 6290 **DNSC 6279 ("Data Mining")** provides exposure to various data preprocessing, statistics, and machine learning techniques that can be used both to discover relationships in large data sets and to build predictive models. Techniques covered will include basic and analytical data preprocessing, regression models, decision trees, neural networks, clustering, association analysis, and basic text mining. Techniques will be presented in the context of data driven organizational decision making using statistical and machine learning approaches. **DNSC 6290 ("Machine Learning")** provides a follow up course to DNSC 6279 that will expand on both the theoretical and practical aspects of subjects covered in the pre-requisite course while optionally introducing new materials. Techniques covered may include feature engineering, penalized regression, neural networks and deep learning, ensemble models including stacked generalization and super learner approaches, matrix factorization, model validation, and model interpretation. Classes will be taught as workshops where groups of students will apply lecture materials to the ongoing [Kaggle](https://www.kaggle.com) [Advanced Regression](https://www.kaggle.com/c/house-prices-advanced-regression-techniques) and [Digit Recognizer](https://www.kaggle.com/c/digit-recognizer) contests. ## Course Topics | Topics | |---| | [Section 00: Intro and History](00_intro_and_history/00_intro_and_history.md) | | [Section 01: Basic Data Prep](01_basic_data_prep/01_basic_data_prep.md) | | [Section 02: Analytical Data Prep](02_analytical_data_prep/02_analytical_data_prep.md) | | [Section 03: Regression](03_regression/03_regression.md) | | [Section 04: Decision Trees and Ensembles](04_decision_trees/04_decision_trees.md) | | [Section 05: Neural Networks](05_neural_networks/05_neural_networks.md) | | [Section 06: Clustering](06_clustering/06_clustering.md) | | [Section 07: Association Rules](07_association_rules/07_association_rules.md) | | [Section 08: Text Mining](08_text_mining/08_text_mining.md) | | [Section 09: Matrix Factorization](09_matrix_factorization/09_matrix_factorization.md) | [Section 10: Model Interpretability](10_model_interpretability/10_model_interpretability.md) #### Some external reference material * [AutoML](https://github.com/jphall663/automl_resources) * A Few Kaggle Grandmasters Pointers: * [How to become a Kaggle #1: An introduction to model stacking](https://www.youtube.com/watch?v=9Vk1rXLhG48) by [Marios Michailidis](https://www.kaggle.com/kazanova) * [Kaggle Tips](https://github.com/h2oai/h2o-meetups/blob/master/2016_12_15_SV_BigDataScience/2016_12_15_H2O_Meetup_Kaggle_Tips.pdf) by [Dmitry Larko](https://www.kaggle.com/dmitrylarko) * [Learn Kaggle techniques from Kaggle #1](https://www.youtube.com/watch?v=LgLcfZjNF44) by [Owen Zhang](https://www.kaggle.com/owenzhang1) * [Data visualization](https://github.com/jphall663/basic_data_viz_rules_and_links) * [Data science quick references](https://github.com/jphall663/ds_quick_refs) * [Data science interview questions](https://github.com/jphall663/ds_interview_qs) * [Python introductory materials](https://github.com/jphall663/bellarmine_py_intro) ## Course Syllabi (Outdated/Unofficial) #### Pre-requisite Courses * **DNSC 6279 ("Data Mining")**: Stochastics for Analytics I, Statistics for Analytics, or equivalent (JUD/DAD), MSBA Program Candidacy or instructor approval. * **DNSC 6290 ("Machine Learning")**: Stochastics for Analytics I, Statistics for Analytics, or equivalent (JUD/DAD), Data Mining, MSBA Program Candidacy or instructor approval. #### Instructor Mr. Patrick Hall **E-mail**: jphall@gwu.edu **Twitter**: [@jpatrickhall](https://twitter.com/jpatrickhall) **Linkedin**: https://www.linkedin.com/in/jpatrickhall/ #### Course Location **Location**: Duques Hall, Room 255 Thursdays 6:10-8:40 PM **Office Hours**: Funger Hall, Room 415 Thursdays 5:00 - 6:00 PM #### Copyrights and Licenses Some teaching materials are copyrighted by the instructor. Some copyrights are owned by other individuals and entities. Most code examples are copyrighted by the instructor and provided with an [MIT license](https://opensource.org/licenses/MIT), meaning they can be used for almost anything as long as the copyright and license notice are preserved. Some code examples are copyrighted by other entities, and usually provided with an [Apache Version 2 license](https://opensource.org/licenses/Apache-2.0). These code examples can be also used for nearly any purpose, even commercially, as long as the copyright and license notice are preserved. #### Recommended Textbooks ###### DNSC 6279 ("Data Mining") * [*Introduction to Data Mining*](http://www-users.cs.umn.edu/~kumar/dmbook/index.php), by Pang-Ning Tan, Michael Steinbach, and Vipin Kumar * [*An Introduction to Statistical Learning with Applications in R*](http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Fourth%20Printing.pdf), by Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani ###### DNSC 6290 ("Machine Learning") * [*Elements of Statistical Learning*](https://web.stanford.edu/~hastie/ElemStatLearn/printings/ESLII_print12.pdf), by Trevor Hastie, Robert Tibshirani, and Jerome Friedman
* [*Pattern Recognition and Machine Learning*](http://www.springer.com/us/book/9780387310732), by Christopher Bishop
([Freely available PDF](http://users.isr.ist.utl.pt/~wurmd/Livros/school/Bishop%20-%20Pattern%20Recognition%20And%20Machine%20Learning%20-%20Springer%20%202006.pdf)) * [*A Primer on Scientific Programming with Python*](http://www.springer.com/us/book/9783642549595), by Hans Petter Langtangen * [Related Free Materials](https://hplgit.github.io/primer.html/doc/pub/half/book.pdf) * [GWU Libraries EBook](https://link-springer-com.proxygw.wrlc.org/book/10.1007%2F978-3-662-49887-3) #### Reading Assignments The student is responsible for studying and understanding all assigned materials. If reading generates questions that are not discussed in class, the student has the responsibility of addressing the instructor privately or raising the issue in an appropriate digital medium. #### Blackboard Some materials for this class have personal or corporate copyrights or licenses that prevent them from being shared on GitHub. Those materials or other internal information will be shared with students via [Blackboard](https://blackboard.gwu.edu/). #### Grading ###### DNSC 6279 ("Data Mining") * The course grade will be based on team homework assignments, a midterm and final exam, and a team project. Each grading component is described in detail below. * **Homework Assignments**: You will be given several homework assignments during the semester. Homework assignments will typically require the use of software. A typical homework assignment will consist of a few problems with several parts. Homework assignments may be completed in groups of 2-4 students. You may be given up to several weeks to complete the assignment. Late homework assignments may be rejected. In preparing your homework assignments, please follow these guidelines: * Ensure any submitted computer program solutions are commented and runnable in a standard Python, R, or SAS environment. * Ensure any written solutions are typed or easily readable by anyone. * Ensure a clear logical flow and mark your answers. * Print/type your name(s) on the top right hand corner of every page or in a header of any papers submitted. * **Midterm and Final Exam**: A midterm exam will address content from the first half of the class and a final exam will address content from the second half of the class. The final exam will be scheduled during finals' week. Graduate final exams are scheduled by the university late in the semester. The final exam date will be made known at that time. No make-up midterm or final exams will be given. The exams are individual assignments. *If you are taking the class remotely and cannot attend the exams in-person, make arrangements with the instructor immediately.* * **Project**: The project is designed to serve as an exercise in applying one or more of the data mining techniques covered in the course to analyze real life data sets. A primary objective is to understand the complexities that arise in mining large, real life datasets that are often inconsistent, incomplete, and unclean. Students can use a variety of software tools to perform the analysis, including standard Python, R, or SAS packages. This is a semester long project, and students have the option to work in 2-4 person teams. The deliverables include a formal project proposal (due mid-semester), and a final report or presentation (due at the end of the semester). Projects can be a group or individual assignment. As the project for this class, students may select: * A current [Kaggle contest](https://www.kaggle.com/) * Their MSBA practicum project * **Grading Weights** * Group homework assignments: 25% * Midterm exam: 30% * Final exam: 30% * Group semester Project: 15% * **Grading Scale** Numeric Grade | Letter grade --------------|------------- 94-100: | A 90-93.99: | A- 87-89.99: | B+ 84-86.99: | B 80-83.99: | B- 77-79.99: | C+ 74-76.99: | C 70-73.99: | C- <= 69.99: | F ###### DNSC 6290 ("Machine Learning") * **In class Participation**: As this will be a 6 week, workshop based course, student attendance and participation in class is expected. * **Kaggle Performance**: Lecture materials and hands on workshop materials will be geared toward application to the [Kaggle](https://www.kaggle.com) [Advanced Regression](https://www.kaggle.com/c/house-prices-advanced-regression-techniques) and [Digit Recognizer](https://www.kaggle.com/c/digit-recognizer) contests. Students are expected to participate in these contests as individuals or in groups and to do reasonably well. * **Public Github Contributions**: Students are expected to write code and generate other artifacts (i.e. notebooks, visualizations, markdown) and to store them in a publicly accessible GitHub repository (or other public location, i.e. personal website). * **Grading Weights** * In class participation: 1/3 * Kaggle Performance: 1/3 * Public Github Contributions: 1/3 #### Academic Integrity **If you are struggling with an assignment or class materials, require extra time for an assignment, or simply require additional assistance, see the instructor immediately.** Cheating and plagiarism will not be tolerated. Any case will automatically result in loss of all the points for the assignment, and may be a reason for a failing grade and/or grounds for dismissal. In case of a group assignment, all group members will receive a zero grade. Any suspected case of cheating or plagiarism or behavior in violation of the rules of this course will be reported to the Office of Academic Integrity. Students are expected to know and understand all college policies, especially the code of [academic integrity](http://www.gwu.edu/~ntegrity/code.html). #### Disability Services Please contact the [Disability Support Services](http://disabilitysupport.gwu.edu/) to establish eligibility and to coordinate reasonable accommodation. #### Attendance Regular attendance is expected, except for remote students. All students are held responsible for all of the work of the courses in which they are registered, and all absences must be excused by the instructor before provision is made to make up the work missed. #### Class Policy Changes The instructor reserves the right to revise any item on this syllabus, including, but not limited to any class policy, course outline or schedule, grading policy, tests, etc. Note that the requirements for deliverables may be clarified and expanded in class, via email, on GitHub, or on Blackboard. Students are expected to complete the deliverables incorporating such additions. ## Software * [Anaconda Python](https://www.continuum.io/downloads) Python is an approachable, general purpose programming language with excellent add on libraries for math and data analysis. Anaconda Python is a commercial version of Python that bundles these add on packages (and many other packages) together with convenient development utilities like the Spyder IDE. * [H2o.ai](http://www.h2o.ai) is a package of high performance functions and algorithms for preprocessing data and training statistical and machine learning models. It can be accessed without the need for coding through a standalone, web browser client or by installing additional coding interfaces for R and/or Python. * [PySpark](http://spark.apache.org/docs/2.2.0/api/python/pyspark.html) is a convenient, Python-based way to use the extremely powerful and scalable Spark platform. (Spark is becoming the new standard commercial data engineering tool.) * [R](https://cran.r-project.org/) is a tremendously popular language for data analysis, with thousands of user contributed packages for different types of data analysis tasks. * [R Studio](https://www.rstudio.com/products/rstudio/#Desktop) is the standard IDE for the R language. * [SAS 9.4 and Enterprise Miner](http://www.sas.com/en_us/software/analytics/enterprise-miner.html) is a commercial package for preprocessing data and training statistical and machine learning models. Enterprise Miner allows for the construction of complex data mining workflows without writing code. Enterprise Miner is a proprietary commercial product and not freely available. You may access Enterprise Miner through the [SAS on Demand for Academics portal](https://odamid.oda.sas.com) or by contacting the [GWU Instructional Technology Lab](https://itl.gwu.edu/sas-software-distribution). * [SAS 9.4 University Edition](http://www.sas.com/en_ph/software/university-edition/download-software.html) is a free edition of SAS' proprietary commercial data analysis software. SAS University Edition contains the newest version of several SAS software packages along with learning tools and utilities for new users. It also requires a virtual machine player which you may need to install separately. * [TensorFlow](https://www.tensorflow.org/) + [Keras](https://keras.io/) are two of several popular deep learning toolkits and libraries; this particular combination will work on Windows. TensorFlow is a lower-level library for performing mathematical operations. It is GPU-enabled. (GPU support is optional but helpful for this class.) Keras is a higher level library that makes TensorFlow easier to use for building and training common deep learning architectures. They are both available as Python packages. * [XGBoost](https://github.com/dmlc/xgboost) is an optimized and highly accurate library for gradient boosted regression and classification. There are Python and R packages available for available XGBoost. (I have found XGBoost is easiest to install as R an package, but if you get stuck with Python and Windows, you can try following the directions in [this blog post](https://datanoord.wordpress.com/2016/02/06/setup-xgboost-on-windows-python/).) #### Using Git for this Material You are welcome to use git and/or GitHub to save and manage your own copies of class materials. The easiest way to do so is to download this entire repository as a zip file. However you will need to download a new copy of the repository whenever changes are made to this repository. To download the course repository, navigate to the [course GitHub repository (i.e. this page)](https://github.com/jphall663/GWU_data_mining) and click the 'Clone or Download' button and then select 'Download Zip'. ![alt text](readme_pics/download.png "Download this repo.") If you would like to take advantage of the version control capabilities of git then you need to follow these steps. ###### Install required software * [Git client](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) * [Git lfs client](https://git-lfs.github.com) ###### Fork and pull materials Navigate to the [course GitHub repository (i.e. this page)](https://github.com/jphall663/GWU_data_mining) and click the 'Fork' button. ![alt text](readme_pics/fork.png "Fork this repo!") Enter the following statements on the git bash command line: `$ cd ` `$ mkdir GWU_data_mining` `$ cd GWU_data_mining` `$ git init` `$ git remote add origin https://github.com//GWU_data_mining.git` `$ git remote add upstream https://github.com/jphall663/GWU_data_mining.git` `$ git pull origin master` `$ git lfs install` `$ git lfs track '*.jpg' '*.png' '*.csv' '*.sas7bdat'` #### Docker [Dockerfile](./anaconda_py35_h2o_xgboost_graphviz) to create Anaconda Python 3.5 environment with H2O, XGBoost, and GraphViz. Start the image with: `docker run -i -t -p 8888:8888 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && /opt/conda/bin/jupyter notebook --notebook-dir=/GWU_data_mining --ip='*' --port=8888 --no-browser"` ================================================ FILE: anaconda_py35_h2o_xgboost_graphviz/Dockerfile ================================================ # Base debian system FROM debian:8.5 ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 # Update OS RUN apt-get update --fix-missing && apt-get install -y wget bzip2 ca-certificates \ libglib2.0-0 libxext6 libsm6 libxrender1 \ git mercurial subversion # Anaconda Python 3.5 RUN echo 'export PATH=/opt/conda/bin:$PATH' > /etc/profile.d/conda.sh && \ wget --quiet https://repo.continuum.io/archive/Anaconda3-4.2.0-Linux-x86_64.sh -O ~/anaconda.sh && \ /bin/bash ~/anaconda.sh -b -p /opt/conda && \ rm ~/anaconda.sh RUN apt-get install -y curl grep sed dpkg && \ TINI_VERSION=`curl https://github.com/krallin/tini/releases/latest | grep -o "/v.*\"" | sed 's:^..\(.*\).$:\1:'` && \ curl -L "https://github.com/krallin/tini/releases/download/v${TINI_VERSION}/tini_${TINI_VERSION}.deb" > tini.deb && \ dpkg -i tini.deb && \ rm tini.deb && \ apt-get clean ENV PATH /opt/conda/bin:$PATH ENTRYPOINT [ "/usr/bin/tini", "--" ] CMD [ "/bin/bash" ] # Java RUN apt-get -y -f install default-jdk # H2o deps RUN pip install requests && \ pip install tabulate && \ pip install six && \ pip install future && \ pip install colorama # H2o RUN pip uninstall h2o || true && \ pip install -f https://h2o-release.s3.amazonaws.com/h2o/rel-weierstrass/2/Python/h2o-3.14.0.2-py2.py3-none-any.whl --trusted-host h2o-release.s3.amazonaws.com h2o # Git RUN apt-get -y install git RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \ apt-get install git-lfs # Examples and data RUN mkdir GWU_data_mining && \ cd GWU_data_mining && \ git init && \ git remote add origin https://github.com/jphall663/GWU_data_mining.git && \ git pull origin master && \ git lfs install && \ git lfs track '*.jpg' '*.png' '*.csv' '*.sas7bdat' # XGBoost RUN apt-get -y install gcc g++ make && \ conda install -y libgcc && \ git clone --recursive https://github.com/dmlc/xgboost.git && \ cd xgboost && \ make && \ cd python-package && \ python setup.py install --user # GraphViz RUN apt-get -y install graphviz ================================================ FILE: cold_call.py ================================================ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # specify blackboard roster as command line arg import numpy as np import pandas as pd import sys def main(argv): roster = pd.read_excel(argv[0]) row = np.random.choice(roster.shape[0]) name = ' '.join(['|', roster.iloc[row, 1], roster.iloc[row, 0], '!!', '|']) pad = '| ' + ' ' * (len(name)-4) + ' |' border = '-' * len(name) print('\n'.join([border, pad, name, pad, border])) if __name__ == '__main__': main(sys.argv[1:]) ================================================ FILE: requirements.txt ================================================ # Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49) # [GCC 7.2.0] on linux # also required: `apt-get -y install graphviz` h2o==3.26.0.3 jupyter==1.0.0 matplotlib==2.1.0 numpy==1.16.0 pandas==0.23.4 scikit-learn==0.19.1 seaborn==0.8.1 shap==0.28.0 xgboost==0.7.post3 xlrd==1.1.0