import pandas as pd
import numpy as np
import joblib
import os
from sklearn. preprocessing import PowerTransformer, PolynomialFeatures, StandardScaler, LabelEncoder
from sklearn. ensemble import RandomForestRegressor
from sklearn. ensemble import IsolationForest
from sklearn. feature_selection import variance_threshold
from sklearn. decomposition import PCA
from sklearn. model_selection import train_test_split, cross_val_score, KFold
from sklearn. linear_model import Lasso, Ridge, LinearRegression
from xgboost import XGBRegressor
from lightgbm import LGBMRegressor
from mlxtend import regressor
from sklearn. metrics import mean_absolute_error, r2_score, mean_squared_error
from hyperopt import Trials, tpe, pyll, fmin, hp
import functools
import time
import matplotlib. pyplot as plt
E:\anaconda\envs\pd\lib\site-packages\sklearn\utils\deprecation.py:144: FutureWarning: The sklearn.feature_selection.variance_threshold module is deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.feature_selection. Anything that cannot be imported from sklearn.feature_selection is now part of the private API.
warnings.warn(message, FutureWarning)
'''
# 注:
# 1.以下数据处理均为非先验数据处理,即行业小白不主观合并特征,只有常规数据处理。
# 2.限于时间关系,这个程序没有进行模块化和严格调参,只是为了得到较高的R2以及验证思路的正确。
# 创新点1: 发现lasso回归更偏向于提取相关特征,而随机森林更偏向提取非相关特征,set(feature(随机森林)>阈值)-set(feature(Lasso)>阈值)可以提取非相关性特征。
# 由于特征处理一般会用相关系数提取特征的方法,加上这些非相关特征有奇效。
# 创新点2:数据小的话,可以遍历,去除对分数影响大的离群点;数量大的话时间会变慢,解决办法:一个是应用分布式来计算,
# 另一个可以将数据划分N份,观察每份均值。比如150个数据,分为 15组*10个(记为a1~15) 或者 10组*15个(记为:b1~10),分别测定。
# 如果a1和b1偏离均值,说明a1前五个可能含有离群点,分别测定。
'''
pd. set_option( "display.max_columns" , 500 )
pd. set_option( "display.width" , 1000 )
pd. set_option( "display.max_rows" , 500 )
train = pd. read_csv( "E:/python/house_predict/data/train.csv" )
x_test = pd. read_csv( "E:/python/house_predict/data/test.csv" )
y_test = pd. read_csv( 'E:/python/house_predict/data/sample_submission.csv' )
train. shape, x_test. shape, y_test. shape
((1460, 81), (1459, 80), (1459, 2))
test = pd. concat( [ x_test, y_test. iloc[ : , [ - 1 ] ] ] , axis= 1 )
test. shape
(1459, 81)
str_col_list = [ "MSSubClass" , "OverallCond" , "YrSold" , "MoSold" , "OverallQual" ]
for col in str_col_list:
train. loc[ : , col] = train. loc[ : , col] . astype( str )
train. head( )
Id 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 0 1 60 RL 65.0 8450 Pave NaN Reg Lvl AllPub Inside Gtl CollgCr Norm Norm 1Fam 2Story 7 5 2003 2003 Gable CompShg VinylSd VinylSd BrkFace 196.0 Gd TA PConc Gd TA No GLQ 706 Unf 0 150 856 GasA Ex Y SBrkr 856 854 0 1710 1 0 2 1 3 1 Gd 8 Typ 0 NaN Attchd 2003.0 RFn 2 548 TA TA Y 0 61 0 0 0 0 NaN NaN NaN 0 2 2008 WD Normal 208500 1 2 20 RL 80.0 9600 Pave NaN Reg Lvl AllPub FR2 Gtl Veenker Feedr Norm 1Fam 1Story 6 8 1976 1976 Gable CompShg MetalSd MetalSd None 0.0 TA TA CBlock Gd TA Gd ALQ 978 Unf 0 284 1262 GasA Ex Y SBrkr 1262 0 0 1262 0 1 2 0 3 1 TA 6 Typ 1 TA Attchd 1976.0 RFn 2 460 TA TA Y 298 0 0 0 0 0 NaN NaN NaN 0 5 2007 WD Normal 181500 2 3 60 RL 68.0 11250 Pave NaN IR1 Lvl AllPub Inside Gtl CollgCr Norm Norm 1Fam 2Story 7 5 2001 2002 Gable CompShg VinylSd VinylSd BrkFace 162.0 Gd TA PConc Gd TA Mn GLQ 486 Unf 0 434 920 GasA Ex Y SBrkr 920 866 0 1786 1 0 2 1 3 1 Gd 6 Typ 1 TA Attchd 2001.0 RFn 2 608 TA TA Y 0 42 0 0 0 0 NaN NaN NaN 0 9 2008 WD Normal 223500 3 4 70 RL 60.0 9550 Pave NaN IR1 Lvl AllPub Corner Gtl Crawfor Norm Norm 1Fam 2Story 7 5 1915 1970 Gable CompShg Wd Sdng Wd Shng None 0.0 TA TA BrkTil TA Gd No ALQ 216 Unf 0 540 756 GasA Gd Y SBrkr 961 756 0 1717 1 0 1 0 3 1 Gd 7 Typ 1 Gd Detchd 1998.0 Unf 3 642 TA TA Y 0 35 272 0 0 0 NaN NaN NaN 0 2 2006 WD Abnorml 140000 4 5 60 RL 84.0 14260 Pave NaN IR1 Lvl AllPub FR2 Gtl NoRidge Norm Norm 1Fam 2Story 8 5 2000 2000 Gable CompShg VinylSd VinylSd BrkFace 350.0 Gd TA PConc Gd TA Av GLQ 655 Unf 0 490 1145 GasA Ex Y SBrkr 1145 1053 0 2198 1 0 2 1 4 1 Gd 9 Typ 1 TA Attchd 2000.0 RFn 3 836 TA TA Y 192 84 0 0 0 0 NaN NaN NaN 0 12 2008 WD Normal 250000
missinglist = train. isnull( ) . sum ( ) [ train. isnull( ) . sum ( ) != 0 ]
pd. concat( [ missinglist, train. loc[ : , missinglist. index] . dtypes] , axis= 1 )
0 1 LotFrontage 259 float64 Alley 1369 object MasVnrType 8 object MasVnrArea 8 float64 BsmtQual 37 object BsmtCond 37 object BsmtExposure 38 object BsmtFinType1 37 object BsmtFinType2 38 object Electrical 1 object FireplaceQu 690 object GarageType 81 object GarageYrBlt 81 float64 GarageFinish 81 object GarageQual 81 object GarageCond 81 object PoolQC 1453 object Fence 1179 object MiscFeature 1406 object
missing_df = pd. concat( [ missinglist, train. loc[ : , missinglist. index] . dtypes] , axis= 1 )
missing_int_list = missing_df. loc[ missing_df. iloc[ : , 1 ] != 'object' , : ] . index. tolist( )
missing_str_list = missing_df. loc[ missing_df. iloc[ : , 1 ] == 'object' , : ] . index. tolist( )
missing_int_list, missing_str_list
(['LotFrontage', 'MasVnrArea', 'GarageYrBlt'],
['Alley',
'MasVnrType',
'BsmtQual',
'BsmtCond',
'BsmtExposure',
'BsmtFinType1',
'BsmtFinType2',
'Electrical',
'FireplaceQu',
'GarageType',
'GarageFinish',
'GarageQual',
'GarageCond',
'PoolQC',
'Fence',
'MiscFeature'])
train. loc[ : , missing_int_list] = train. loc[ : , missing_int_list] . fillna( 0 )
train. loc[ : , missing_str_list] = train. loc[ : , missing_str_list] . fillna( 'AN' )
train. info( )
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1460 entries, 0 to 1459
Data columns (total 81 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Id 1460 non-null int64
1 MSSubClass 1460 non-null object
2 MSZoning 1460 non-null object
3 LotFrontage 1460 non-null float64
4 LotArea 1460 non-null int64
5 Street 1460 non-null object
6 Alley 1460 non-null object
7 LotShape 1460 non-null object
8 LandContour 1460 non-null object
9 Utilities 1460 non-null object
10 LotConfig 1460 non-null object
11 LandSlope 1460 non-null object
12 Neighborhood 1460 non-null object
13 Condition1 1460 non-null object
14 Condition2 1460 non-null object
15 BldgType 1460 non-null object
16 HouseStyle 1460 non-null object
17 OverallQual 1460 non-null object
18 OverallCond 1460 non-null object
19 YearBuilt 1460 non-null int64
20 YearRemodAdd 1460 non-null int64
21 RoofStyle 1460 non-null object
22 RoofMatl 1460 non-null object
23 Exterior1st 1460 non-null object
24 Exterior2nd 1460 non-null object
25 MasVnrType 1460 non-null object
26 MasVnrArea 1460 non-null float64
27 ExterQual 1460 non-null object
28 ExterCond 1460 non-null object
29 Foundation 1460 non-null object
30 BsmtQual 1460 non-null object
31 BsmtCond 1460 non-null object
32 BsmtExposure 1460 non-null object
33 BsmtFinType1 1460 non-null object
34 BsmtFinSF1 1460 non-null int64
35 BsmtFinType2 1460 non-null object
36 BsmtFinSF2 1460 non-null int64
37 BsmtUnfSF 1460 non-null int64
38 TotalBsmtSF 1460 non-null int64
39 Heating 1460 non-null object
40 HeatingQC 1460 non-null object
41 CentralAir 1460 non-null object
42 Electrical 1460 non-null object
43 1stFlrSF 1460 non-null int64
44 2ndFlrSF 1460 non-null int64
45 LowQualFinSF 1460 non-null int64
46 GrLivArea 1460 non-null int64
47 BsmtFullBath 1460 non-null int64
48 BsmtHalfBath 1460 non-null int64
49 FullBath 1460 non-null int64
50 HalfBath 1460 non-null int64
51 BedroomAbvGr 1460 non-null int64
52 KitchenAbvGr 1460 non-null int64
53 KitchenQual 1460 non-null object
54 TotRmsAbvGrd 1460 non-null int64
55 Functional 1460 non-null object
56 Fireplaces 1460 non-null int64
57 FireplaceQu 1460 non-null object
58 GarageType 1460 non-null object
59 GarageYrBlt 1460 non-null float64
60 GarageFinish 1460 non-null object
61 GarageCars 1460 non-null int64
62 GarageArea 1460 non-null int64
63 GarageQual 1460 non-null object
64 GarageCond 1460 non-null object
65 PavedDrive 1460 non-null object
66 WoodDeckSF 1460 non-null int64
67 OpenPorchSF 1460 non-null int64
68 EnclosedPorch 1460 non-null int64
69 3SsnPorch 1460 non-null int64
70 ScreenPorch 1460 non-null int64
71 PoolArea 1460 non-null int64
72 PoolQC 1460 non-null object
73 Fence 1460 non-null object
74 MiscFeature 1460 non-null object
75 MiscVal 1460 non-null int64
76 MoSold 1460 non-null object
77 YrSold 1460 non-null object
78 SaleType 1460 non-null object
79 SaleCondition 1460 non-null object
80 SalePrice 1460 non-null int64
dtypes: float64(3), int64(30), object(48)
memory usage: 924.0+ KB
rfr = RandomForestRegressor( 500 , n_jobs= - 1 , random_state= 42 )
train. drop( [ 'Id' ] , axis= 1 , inplace= True )
train. shape
(1460, 80)
rfr. fit( train. iloc[ : , 0 : - 1 ] , train. iloc[ : , [ - 1 ] ] )
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-20-21f43b35ac6b> in <module>
----> 1 rfr.fit(train.iloc[:, 0:-1], train.iloc[:, [-1]])
E:\anaconda\envs\pd\lib\site-packages\sklearn\ensemble\_forest.py in fit(self, X, y, sample_weight)
293 """
294 # Validate or convert input data
--> 295 X = check_array(X, accept_sparse="csc", dtype=DTYPE)
296 y = check_array(y, accept_sparse='csc', ensure_2d=False, dtype=None)
297 if sample_weight is not None:
E:\anaconda\envs\pd\lib\site-packages\sklearn\utils\validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
529 array = array.astype(dtype, casting="unsafe", copy=False)
530 else:
--> 531 array = np.asarray(array, order=order, dtype=dtype)
532 except ComplexWarning:
533 raise ValueError("Complex data not supported\n"
E:\anaconda\envs\pd\lib\site-packages\numpy\core\_asarray.py in asarray(a, dtype, order)
83
84 """
---> 85 return array(a, dtype, copy=False, order=order)
86
87
ValueError: could not convert string to float: 'RL'
train. corr( )
LotFrontage LotArea 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 SalePrice LotFrontage 1.000000 0.100739 0.036853 0.078686 0.105010 0.076670 -0.009312 0.160829 0.238274 0.245181 0.042549 0.049981 0.220347 0.010514 -0.027856 0.120548 -0.012952 0.144494 0.034425 0.221396 0.044018 0.019317 0.165229 0.201473 -0.016780 0.069605 0.027366 0.023499 0.022969 0.114106 -0.059606 0.209624 LotArea 0.100739 1.000000 0.014228 0.013788 0.103321 0.214103 0.111170 -0.002618 0.260833 0.299475 0.050986 0.004779 0.263116 0.158155 0.048046 0.126031 0.014259 0.119690 -0.017784 0.190015 0.271364 0.072599 0.154871 0.180403 0.171698 0.084774 -0.018340 0.020423 0.043160 0.077672 0.038068 0.263843 YearBuilt 0.036853 0.014228 1.000000 0.592855 0.311600 0.249503 -0.049107 0.149040 0.391452 0.281986 0.010308 -0.183784 0.199010 0.187599 -0.038162 0.468271 0.242656 -0.070651 -0.174800 0.095589 0.147716 0.272029 0.537850 0.478954 0.224880 0.188686 -0.387268 0.031355 -0.050364 0.004950 -0.034383 0.522897 YearRemodAdd 0.078686 0.013788 0.592855 1.000000 0.176529 0.128451 -0.067759 0.181133 0.291066 0.240379 0.140024 -0.062419 0.287389 0.119470 -0.012337 0.439046 0.183331 -0.040581 -0.149598 0.191740 0.112581 0.146357 0.420622 0.371600 0.205726 0.226298 -0.193919 0.045286 -0.038740 0.005829 -0.010286 0.507101 MasVnrArea 0.105010 0.103321 0.311600 0.176529 1.000000 0.261256 -0.071330 0.113862 0.360067 0.339850 0.173800 -0.068628 0.388052 0.083010 0.027403 0.272999 0.199108 0.102775 -0.038450 0.279568 0.247015 0.132696 0.361945 0.370884 0.159991 0.122528 -0.109907 0.019144 0.062248 0.011928 -0.029512 0.472614 BsmtFinSF1 0.076670 0.214103 0.249503 0.128451 0.261256 1.000000 -0.050117 -0.495251 0.522396 0.445863 -0.137079 -0.064503 0.208171 0.649212 0.067418 0.058543 0.004262 -0.107355 -0.081007 0.044316 0.260011 0.115843 0.224054 0.296970 0.204306 0.111761 -0.102303 0.026451 0.062021 0.140491 0.003571 0.386420 BsmtFinSF2 -0.009312 0.111170 -0.049107 -0.067759 -0.071330 -0.050117 1.000000 -0.209294 0.104810 0.097117 -0.099260 0.014807 -0.009640 0.158678 0.070948 -0.076444 -0.032148 -0.015728 -0.040751 -0.035227 0.046921 0.035070 -0.038264 -0.018227 0.067898 0.003093 0.036543 -0.029993 0.088871 0.041709 0.004940 -0.011378 BsmtUnfSF 0.160829 -0.002618 0.149040 0.181133 0.113862 -0.495251 -0.209294 1.000000 0.415360 0.317987 0.004469 0.028167 0.240257 -0.422900 -0.095804 0.288886 -0.041118 0.166643 0.030086 0.250647 0.051575 0.042720 0.214175 0.183303 -0.005316 0.129005 -0.002538 0.020764 -0.012579 -0.035092 -0.023837 0.214479 TotalBsmtSF 0.238274 0.260833 0.391452 0.291066 0.360067 0.522396 0.104810 0.415360 1.000000 0.819530 -0.174512 -0.033245 0.454868 0.307351 -0.000315 0.323722 -0.048804 0.050450 -0.068901 0.285573 0.339519 0.176359 0.434585 0.486665 0.232019 0.247264 -0.095478 0.037384 0.084489 0.126053 -0.018479 0.613581 1stFlrSF 0.245181 0.299475 0.281986 0.240379 0.339850 0.445863 0.097117 0.317987 0.819530 1.000000 -0.202646 -0.014241 0.566024 0.244671 0.001956 0.380637 -0.119916 0.127401 0.068101 0.409516 0.410531 0.166642 0.439317 0.489782 0.235459 0.211671 -0.065292 0.056104 0.088758 0.131525 -0.021096 0.605852 2ndFlrSF 0.042549 0.050986 0.010308 0.140024 0.173800 -0.137079 -0.099260 0.004469 -0.174512 -0.202646 1.000000 0.063353 0.687501 -0.169494 -0.023855 0.421378 0.609707 0.502901 0.059306 0.616423 0.194561 0.064402 0.183926 0.138347 0.092165 0.208026 0.061989 -0.024358 0.040606 0.081487 0.016197 0.319334 LowQualFinSF 0.049981 0.004779 -0.183784 -0.062419 -0.068628 -0.064503 0.014807 0.028167 -0.033245 -0.014241 0.063353 1.000000 0.134683 -0.047143 -0.005842 -0.000710 -0.027080 0.105607 0.007522 0.131185 -0.021272 -0.146467 -0.094480 -0.067601 -0.025444 0.018251 0.061081 -0.004296 0.026799 0.062157 -0.003793 -0.025606 GrLivArea 0.220347 0.263116 0.199010 0.287389 0.388052 0.208171 -0.009640 0.240257 0.454868 0.566024 0.687501 0.134683 1.000000 0.034836 -0.018918 0.630012 0.415772 0.521270 0.100063 0.825489 0.461679 0.162543 0.467247 0.468997 0.247433 0.330224 0.009113 0.020643 0.101510 0.170205 -0.002416 0.708624 BsmtFullBath 0.010514 0.158155 0.187599 0.119470 0.083010 0.649212 0.158678 -0.422900 0.307351 0.244671 -0.169494 -0.047143 0.034836 1.000000 -0.147871 -0.064512 -0.030905 -0.150673 -0.041503 -0.053275 0.137928 0.049270 0.131881 0.179189 0.175315 0.067341 -0.049911 -0.000106 0.023148 0.067616 -0.023047 0.227122 BsmtHalfBath -0.027856 0.048046 -0.038162 -0.012337 0.027403 0.067418 0.070948 -0.095804 -0.000315 0.001956 -0.023855 -0.005842 -0.018918 -0.147871 1.000000 -0.054536 -0.012340 0.046519 -0.037944 -0.023836 0.028976 0.016811 -0.020891 -0.024536 0.040161 -0.025324 -0.008555 0.035114 0.032121 0.020025 -0.007367 -0.016844 FullBath 0.120548 0.126031 0.468271 0.439046 0.272999 0.058543 -0.076444 0.288886 0.323722 0.380637 0.421378 -0.000710 0.630012 -0.064512 -0.054536 1.000000 0.136381 0.363252 0.133115 0.554784 0.243671 0.137464 0.469672 0.405656 0.187703 0.259977 -0.115093 0.035353 -0.008106 0.049604 -0.014290 0.560664 HalfBath -0.012952 0.014259 0.242656 0.183331 0.199108 0.004262 -0.032148 -0.041118 -0.048804 -0.119916 0.609707 -0.027080 0.415772 -0.030905 -0.012340 0.136381 1.000000 0.226651 -0.068263 0.343415 0.203649 0.117166 0.219178 0.163549 0.108080 0.199740 -0.095317 -0.004972 0.072426 0.022381 0.001290 0.284108 BedroomAbvGr 0.144494 0.119690 -0.070651 -0.040581 0.102775 -0.107355 -0.015728 0.166643 0.050450 0.127401 0.502901 0.105607 0.521270 -0.150673 0.046519 0.363252 0.226651 1.000000 0.198597 0.676620 0.107570 -0.009850 0.086106 0.065253 0.046854 0.093810 0.041570 -0.024478 0.044300 0.070703 0.007767 0.168213 KitchenAbvGr 0.034425 -0.017784 -0.174800 -0.149598 -0.038450 -0.081007 -0.040751 0.030086 -0.068901 0.068101 0.059306 0.007522 0.100063 -0.041503 -0.037944 0.133115 -0.068263 0.198597 1.000000 0.256045 -0.123936 -0.157991 -0.050634 -0.064433 -0.090130 -0.070091 0.037312 -0.024600 -0.051613 -0.014525 0.062341 -0.135907 TotRmsAbvGrd 0.221396 0.190015 0.095589 0.191740 0.279568 0.044316 -0.035227 0.250647 0.285573 0.409516 0.616423 0.131185 0.825489 -0.053275 -0.023836 0.554784 0.343415 0.676620 0.256045 1.000000 0.326114 0.095607 0.362289 0.337822 0.165984 0.234192 0.004151 -0.006683 0.059383 0.083757 0.024763 0.533723 Fireplaces 0.044018 0.271364 0.147716 0.112581 0.247015 0.260011 0.046921 0.051575 0.339519 0.410531 0.194561 -0.021272 0.461679 0.137928 0.028976 0.243671 0.203649 0.107570 -0.123936 0.326114 1.000000 0.186264 0.300789 0.269141 0.200019 0.169405 -0.024822 0.011257 0.184530 0.095074 0.001409 0.466929 GarageYrBlt 0.019317 0.072599 0.272029 0.146357 0.132696 0.115843 0.035070 0.042720 0.176359 0.166642 0.064402 -0.146467 0.162543 0.049270 0.016811 0.137464 0.117166 -0.009850 -0.157991 0.095607 0.186264 1.000000 0.598005 0.560783 0.117305 0.049877 -0.076822 0.029401 0.061416 0.015858 -0.006669 0.261366 GarageCars 0.165229 0.154871 0.537850 0.420622 0.361945 0.224054 -0.038264 0.214175 0.434585 0.439317 0.183926 -0.094480 0.467247 0.131881 -0.020891 0.469672 0.219178 0.086106 -0.050634 0.362289 0.300789 0.598005 1.000000 0.882475 0.226342 0.213569 -0.151434 0.035765 0.050494 0.020934 -0.043080 0.640409 GarageArea 0.201473 0.180403 0.478954 0.371600 0.370884 0.296970 -0.018227 0.183303 0.486665 0.489782 0.138347 -0.067601 0.468997 0.179189 -0.024536 0.405656 0.163549 0.065253 -0.064433 0.337822 0.269141 0.560783 0.882475 1.000000 0.224666 0.241435 -0.121777 0.035087 0.051412 0.061047 -0.027400 0.623431 WoodDeckSF -0.016780 0.171698 0.224880 0.205726 0.159991 0.204306 0.067898 -0.005316 0.232019 0.235459 0.092165 -0.025444 0.247433 0.175315 0.040161 0.187703 0.108080 0.046854 -0.090130 0.165984 0.200019 0.117305 0.226342 0.224666 1.000000 0.058661 -0.125989 -0.032771 -0.074181 0.073378 -0.009551 0.324413 OpenPorchSF 0.069605 0.084774 0.188686 0.226298 0.122528 0.111761 0.003093 0.129005 0.247264 0.211671 0.208026 0.018251 0.330224 0.067341 -0.025324 0.259977 0.199740 0.093810 -0.070091 0.234192 0.169405 0.049877 0.213569 0.241435 0.058661 1.000000 -0.093079 -0.005842 0.074304 0.060762 -0.018584 0.315856 EnclosedPorch 0.027366 -0.018340 -0.387268 -0.193919 -0.109907 -0.102303 0.036543 -0.002538 -0.095478 -0.065292 0.061989 0.061081 0.009113 -0.049911 -0.008555 -0.115093 -0.095317 0.041570 0.037312 0.004151 -0.024822 -0.076822 -0.151434 -0.121777 -0.125989 -0.093079 1.000000 -0.037305 -0.082864 0.054203 0.018361 -0.128578 3SsnPorch 0.023499 0.020423 0.031355 0.045286 0.019144 0.026451 -0.029993 0.020764 0.037384 0.056104 -0.024358 -0.004296 0.020643 -0.000106 0.035114 0.035353 -0.004972 -0.024478 -0.024600 -0.006683 0.011257 0.029401 0.035765 0.035087 -0.032771 -0.005842 -0.037305 1.000000 -0.031436 -0.007992 0.000354 0.044584 ScreenPorch 0.022969 0.043160 -0.050364 -0.038740 0.062248 0.062021 0.088871 -0.012579 0.084489 0.088758 0.040606 0.026799 0.101510 0.023148 0.032121 -0.008106 0.072426 0.044300 -0.051613 0.059383 0.184530 0.061416 0.050494 0.051412 -0.074181 0.074304 -0.082864 -0.031436 1.000000 0.051307 0.031946 0.111447 PoolArea 0.114106 0.077672 0.004950 0.005829 0.011928 0.140491 0.041709 -0.035092 0.126053 0.131525 0.081487 0.062157 0.170205 0.067616 0.020025 0.049604 0.022381 0.070703 -0.014525 0.083757 0.095074 0.015858 0.020934 0.061047 0.073378 0.060762 0.054203 -0.007992 0.051307 1.000000 0.029669 0.092404 MiscVal -0.059606 0.038068 -0.034383 -0.010286 -0.029512 0.003571 0.004940 -0.023837 -0.018479 -0.021096 0.016197 -0.003793 -0.002416 -0.023047 -0.007367 -0.014290 0.001290 0.007767 0.062341 0.024763 0.001409 -0.006669 -0.043080 -0.027400 -0.009551 -0.018584 0.018361 0.000354 0.031946 0.029669 1.000000 -0.021190 SalePrice 0.209624 0.263843 0.522897 0.507101 0.472614 0.386420 -0.011378 0.214479 0.613581 0.605852 0.319334 -0.025606 0.708624 0.227122 -0.016844 0.560664 0.284108 0.168213 -0.135907 0.533723 0.466929 0.261366 0.640409 0.623431 0.324413 0.315856 -0.128578 0.044584 0.111447 0.092404 -0.021190 1.000000
train. corr( ) . shape
(32, 32)
corr_int_sr = train. corr( ) . sort_values( by= 'SalePrice' ) . iloc[ : , - 1 ] . sort_values( ascending= False )
train. corr( ) . sort_values( by= 'SalePrice' ) . iloc[ : , - 1 ] . sort_values( ascending= False )
SalePrice 1.000000
GrLivArea 0.708624
GarageCars 0.640409
GarageArea 0.623431
TotalBsmtSF 0.613581
1stFlrSF 0.605852
FullBath 0.560664
TotRmsAbvGrd 0.533723
YearBuilt 0.522897
YearRemodAdd 0.507101
MasVnrArea 0.472614
Fireplaces 0.466929
BsmtFinSF1 0.386420
WoodDeckSF 0.324413
2ndFlrSF 0.319334
OpenPorchSF 0.315856
HalfBath 0.284108
LotArea 0.263843
GarageYrBlt 0.261366
BsmtFullBath 0.227122
BsmtUnfSF 0.214479
LotFrontage 0.209624
BedroomAbvGr 0.168213
ScreenPorch 0.111447
PoolArea 0.092404
3SsnPorch 0.044584
BsmtFinSF2 -0.011378
BsmtHalfBath -0.016844
MiscVal -0.021190
LowQualFinSF -0.025606
EnclosedPorch -0.128578
KitchenAbvGr -0.135907
Name: SalePrice, dtype: float64
train_int = train. loc[ : , train. dtypes != 'object' ]
train_str = train. loc[ : , train. dtypes == 'object' ]
list ( train. loc[ : , 'SalePrice' ] . groupby( train_str. loc[ : , 'OverallQual' ] ) . mean( ) . sort_values( ) . index)
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
train_new = train. copy( )
corr_str_list = [ ]
lbl = LabelEncoder( )
for col in list ( train_str. columns) :
lbl. classes_ = list ( train. loc[ : , 'SalePrice' ] . groupby( train_str. loc[ : , col] ) . mean( ) . sort_values( ) . index)
train_new. loc[ : , col] = lbl. transform( train. loc[ : , col] )
corr_str_list. append( pd. concat( [ pd. DataFrame( lbl. transform( train. loc[ : , col] ) ) , np. log1p( train. iloc[ : , - 1 ] ) ] , axis= 1 ) . corr( 'spearman' ) . iloc[ 0 , 1 ] )
corr_str_sr = pd. Series( data= corr_str_list, index= train_str. columns)
corr_str_sr. sort_values( ascending= False )
OverallQual 0.809829
Neighborhood 0.755779
ExterQual 0.684014
BsmtQual 0.678026
KitchenQual 0.672849
GarageFinish 0.633974
GarageType 0.598814
MSSubClass 0.583130
Foundation 0.573580
FireplaceQu 0.542237
HeatingQC 0.491392
BsmtFinType1 0.454237
Exterior1st 0.435284
MasVnrType 0.433267
Exterior2nd 0.423422
MSZoning 0.422232
OverallCond 0.387181
GarageCond 0.351653
GarageQual 0.351110
BsmtExposure 0.344207
HouseStyle 0.340038
LotShape 0.321184
SaleCondition 0.320496
CentralAir 0.313286
SaleType 0.307845
Electrical 0.297578
PavedDrive 0.280602
BsmtCond 0.269474
Fence 0.209028
Condition1 0.202877
RoofStyle 0.163782
BsmtFinType2 0.155398
LandContour 0.154423
BldgType 0.151785
Functional 0.136477
ExterCond 0.130370
Alley 0.130207
Heating 0.121949
Condition2 0.107173
LotConfig 0.105029
RoofMatl 0.090497
MoSold 0.081074
MiscFeature 0.078318
PoolQC 0.058495
LandSlope 0.050310
Street 0.045814
YrSold 0.024302
Utilities 0.016710
dtype: float64
pd. concat( [ corr_int_sr, corr_str_sr] , axis= 0 ) . sort_values( ascending= False )
SalePrice 1.000000
OverallQual 0.809829
Neighborhood 0.755779
GrLivArea 0.708624
ExterQual 0.684014
BsmtQual 0.678026
KitchenQual 0.672849
GarageCars 0.640409
GarageFinish 0.633974
GarageArea 0.623431
TotalBsmtSF 0.613581
1stFlrSF 0.605852
GarageType 0.598814
MSSubClass 0.583130
Foundation 0.573580
FullBath 0.560664
FireplaceQu 0.542237
TotRmsAbvGrd 0.533723
YearBuilt 0.522897
YearRemodAdd 0.507101
HeatingQC 0.491392
MasVnrArea 0.472614
Fireplaces 0.466929
BsmtFinType1 0.454237
Exterior1st 0.435284
MasVnrType 0.433267
Exterior2nd 0.423422
MSZoning 0.422232
OverallCond 0.387181
BsmtFinSF1 0.386420
GarageCond 0.351653
GarageQual 0.351110
BsmtExposure 0.344207
HouseStyle 0.340038
WoodDeckSF 0.324413
LotShape 0.321184
SaleCondition 0.320496
2ndFlrSF 0.319334
OpenPorchSF 0.315856
CentralAir 0.313286
SaleType 0.307845
Electrical 0.297578
HalfBath 0.284108
PavedDrive 0.280602
BsmtCond 0.269474
LotArea 0.263843
GarageYrBlt 0.261366
BsmtFullBath 0.227122
BsmtUnfSF 0.214479
LotFrontage 0.209624
Fence 0.209028
Condition1 0.202877
BedroomAbvGr 0.168213
RoofStyle 0.163782
BsmtFinType2 0.155398
LandContour 0.154423
BldgType 0.151785
Functional 0.136477
ExterCond 0.130370
Alley 0.130207
Heating 0.121949
ScreenPorch 0.111447
Condition2 0.107173
LotConfig 0.105029
PoolArea 0.092404
RoofMatl 0.090497
MoSold 0.081074
MiscFeature 0.078318
PoolQC 0.058495
LandSlope 0.050310
Street 0.045814
3SsnPorch 0.044584
YrSold 0.024302
Utilities 0.016710
BsmtFinSF2 -0.011378
BsmtHalfBath -0.016844
MiscVal -0.021190
LowQualFinSF -0.025606
EnclosedPorch -0.128578
KitchenAbvGr -0.135907
dtype: float64
feature_list = list ( pd. concat( [ corr_int_sr, corr_str_sr] , axis= 0 ) . sort_values( ascending= False ) . index[ 0 : 41 ] )
feature_list. reverse( )
feature_list
['SaleType',
'CentralAir',
'OpenPorchSF',
'2ndFlrSF',
'SaleCondition',
'LotShape',
'WoodDeckSF',
'HouseStyle',
'BsmtExposure',
'GarageQual',
'GarageCond',
'BsmtFinSF1',
'OverallCond',
'MSZoning',
'Exterior2nd',
'MasVnrType',
'Exterior1st',
'BsmtFinType1',
'Fireplaces',
'MasVnrArea',
'HeatingQC',
'YearRemodAdd',
'YearBuilt',
'TotRmsAbvGrd',
'FireplaceQu',
'FullBath',
'Foundation',
'MSSubClass',
'GarageType',
'1stFlrSF',
'TotalBsmtSF',
'GarageArea',
'GarageFinish',
'GarageCars',
'KitchenQual',
'BsmtQual',
'ExterQual',
'GrLivArea',
'Neighborhood',
'OverallQual',
'SalePrice']
train_last = train_new. loc[ : , feature_list]
train_last
SaleType CentralAir OpenPorchSF 2ndFlrSF SaleCondition LotShape WoodDeckSF HouseStyle BsmtExposure GarageQual GarageCond BsmtFinSF1 OverallCond MSZoning Exterior2nd MasVnrType Exterior1st BsmtFinType1 Fireplaces MasVnrArea HeatingQC YearRemodAdd YearBuilt TotRmsAbvGrd FireplaceQu FullBath Foundation MSSubClass GarageType 1stFlrSF TotalBsmtSF GarageArea GarageFinish GarageCars KitchenQual BsmtQual ExterQual GrLivArea Neighborhood OverallQual SalePrice 0 4 1 61 854 4 0 0 6 1 3 5 706 7 3 12 2 11 6 0 196.0 4 2003 2003 8 1 2 5 14 5 856 856 548 2 2 2 3 2 1710 16 6 208500 1 4 1 0 0 4 0 298 5 4 3 5 978 5 3 5 1 4 4 1 0.0 4 1976 1976 6 3 2 2 11 5 1262 1262 460 2 2 1 3 1 1262 20 5 181500 2 4 1 42 866 4 1 0 6 2 3 5 486 7 3 12 2 11 6 1 162.0 4 2002 2001 6 3 2 5 14 5 920 920 608 2 2 2 3 2 1786 16 6 223500 3 4 1 35 756 1 1 0 6 1 3 5 216 7 3 8 1 5 4 1 0.0 3 1970 1915 7 4 1 1 9 2 961 756 642 1 3 2 2 1 1717 17 6 140000 4 4 1 84 1053 4 1 192 6 3 3 5 655 7 3 12 2 11 6 1 350.0 4 2000 2000 9 3 2 5 14 5 1145 1145 836 2 3 2 3 2 2198 24 7 250000 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 1455 4 1 40 694 4 0 0 6 1 3 5 0 7 3 12 1 11 5 1 0.0 4 2000 1999 7 3 2 5 14 5 953 953 460 2 2 1 3 1 1647 14 5 175000 1456 4 1 0 0 4 0 349 5 1 3 5 790 4 3 10 4 9 4 2 119.0 2 1988 1978 7 3 2 2 11 5 2073 1542 500 1 2 1 3 1 2073 13 5 210000 1457 4 1 60 1152 4 0 0 6 1 3 5 275 8 3 13 1 12 6 2 0.0 4 2006 1941 9 4 2 3 9 5 1188 1152 252 2 1 2 2 3 2340 17 6 266500 1458 4 1 0 0 4 0 366 5 2 3 5 49 4 3 5 1 4 6 0 0.0 3 1996 1950 5 1 1 2 11 5 1078 1078 240 1 1 2 2 1 1078 10 4 142125 1459 4 1 68 0 4 0 736 5 1 3 5 830 4 3 9 1 8 2 0 0.0 3 1965 1965 6 1 1 2 11 5 1256 1256 276 3 1 1 2 2 1256 4 4 147500
1460 rows × 41 columns
X_train, X_test, y_train, y_test = train_test_split( train_last. iloc[ : , 0 : - 1 ] , train_last. iloc[ : , [ - 1 ] ] , test_size= 0.2 , random_state= 7 )
lr = LinearRegression( )
lr. fit( X_train, y_train)
print ( lr. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( lr. score( X_test, y_test) )
print ( lr. score( X_train, y_train) )
[[127789.21407131]]
SalePrice
99 128950
0.8449398174883179
0.8236402408131976
ls = Lasso( alpha= 1 , max_iter= 100000 )
ls. fit( X_train, y_train)
print ( ls. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( ls. score( X_test, y_test) )
print ( ls. score( X_train, y_train) )
[127780.18771703]
SalePrice
99 128950
0.8449411977832546
0.8236402205170005
rg = Ridge( alpha= 50 )
rg. fit( X_train, y_train)
print ( rg. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( rg. score( X_test, y_test) )
print ( rg. score( X_train, y_train) )
[[126604.3116898]]
SalePrice
99 128950
0.8453340855508833
0.8230610246916847
xgb = XGBRegressor( )
xgb. fit( X_train, y_train)
print ( xgb. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( xgb. score( X_test, y_test) )
print ( xgb. score( X_train, y_train) )
[125012.68]
SalePrice
99 128950
0.8980734270131909
0.9997334320624469
rfr. fit( train_new. iloc[ : , 0 : - 1 ] , train_new. iloc[ : , - 1 ] )
RandomForestRegressor(bootstrap=True, ccp_alpha=0.0, criterion='mse',
max_depth=None, max_features='auto', max_leaf_nodes=None,
max_samples=None, min_impurity_decrease=0.0,
min_impurity_split=None, min_samples_leaf=1,
min_samples_split=2, min_weight_fraction_leaf=0.0,
n_estimators=500, n_jobs=-1, oob_score=False,
random_state=42, verbose=0, warm_start=False)
rfr. feature_importances_
array([4.02810692e-03, 9.87158518e-04, 5.80719799e-03, 1.10726065e-02,
5.66349085e-06, 3.40831981e-04, 8.68797202e-04, 1.09590646e-03,
1.03940738e-06, 7.77616131e-04, 4.06918767e-04, 8.89175416e-02,
5.44486278e-04, 1.69459949e-04, 3.63927429e-04, 4.60310666e-04,
5.27892083e-01, 2.88893586e-03, 4.78030371e-03, 6.30284045e-03,
8.49322248e-04, 3.16173901e-04, 1.74585304e-03, 1.86844967e-03,
1.08696824e-03, 4.68242529e-03, 3.20662289e-03, 5.49993600e-04,
4.63504712e-04, 5.21659255e-03, 1.15031549e-03, 2.90474717e-03,
1.12174740e-03, 2.55563048e-02, 3.60971127e-04, 5.25565579e-04,
5.10778467e-03, 3.30246235e-02, 7.82016430e-05, 7.70467614e-04,
1.72899855e-03, 2.09468873e-04, 2.69327020e-02, 3.60331201e-02,
1.05300010e-04, 1.01772805e-01, 1.08479918e-03, 3.05482508e-04,
4.48049307e-03, 8.98748530e-04, 1.90311062e-03, 3.47992453e-04,
4.37312822e-03, 6.27560636e-03, 4.09108527e-04, 1.61260129e-03,
2.74604972e-03, 2.35392831e-03, 4.44715688e-03, 1.67374818e-03,
1.84101275e-02, 1.33559120e-02, 4.84571362e-04, 3.86757072e-04,
4.28789849e-04, 4.46564334e-03, 4.28807668e-03, 8.05120185e-04,
3.47685029e-04, 1.19347586e-03, 3.37271377e-04, 4.24336200e-04,
4.46354910e-04, 3.06589136e-05, 4.68966462e-05, 2.26130147e-03,
1.70978149e-03, 1.15257113e-03, 1.43195285e-03])
plt. bar( np. arange( train_new. shape[ 1 ] - 1 ) , rfr. feature_importances_)
<BarContainer object of 79 artists>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uq8E0y1k-1615021016029)(output_38_1.png)]
imp_sr = pd. Series( data= rfr. feature_importances_, index= train_new. columns[ 0 : - 1 ] ) . sort_values( ascending= False )
imp_sr_list = imp_sr. index[ 0 : 40 ]
feature_list = list ( pd. concat( [ corr_int_sr, corr_str_sr] , axis= 0 ) . sort_values( ascending= False ) . index[ 0 : 41 ] )
feature_list. pop( 0 )
'SalePrice'
non_corr_imp_list = set ( imp_sr_list) - set ( feature_list)
set ( imp_sr_list) - set ( feature_list)
{'BedroomAbvGr',
'BsmtCond',
'BsmtUnfSF',
'GarageYrBlt',
'LotArea',
'LotFrontage',
'MoSold',
'ScreenPorch',
'YrSold'}
corr_imp_list = set ( list ( imp_sr_list) + list ( feature_list) )
set ( list ( imp_sr_list) + list ( feature_list) )
{'1stFlrSF',
'2ndFlrSF',
'BedroomAbvGr',
'BsmtCond',
'BsmtExposure',
'BsmtFinSF1',
'BsmtFinType1',
'BsmtQual',
'BsmtUnfSF',
'CentralAir',
'ExterQual',
'Exterior1st',
'Exterior2nd',
'FireplaceQu',
'Fireplaces',
'Foundation',
'FullBath',
'GarageArea',
'GarageCars',
'GarageCond',
'GarageFinish',
'GarageQual',
'GarageType',
'GarageYrBlt',
'GrLivArea',
'HeatingQC',
'HouseStyle',
'KitchenQual',
'LotArea',
'LotFrontage',
'LotShape',
'MSSubClass',
'MSZoning',
'MasVnrArea',
'MasVnrType',
'MoSold',
'Neighborhood',
'OpenPorchSF',
'OverallCond',
'OverallQual',
'SaleCondition',
'SaleType',
'ScreenPorch',
'TotRmsAbvGrd',
'TotalBsmtSF',
'WoodDeckSF',
'YearBuilt',
'YearRemodAdd',
'YrSold'}
train_last = train_new. loc[ : , list ( corr_imp_list) + [ 'SalePrice' ] ]
train_last
MoSold MSZoning BsmtFinSF1 GarageCond MSSubClass LotArea WoodDeckSF GarageFinish SaleCondition SaleType YearBuilt GarageArea BedroomAbvGr Foundation CentralAir BsmtFinType1 Exterior1st FullBath GarageType GarageQual ExterQual Fireplaces KitchenQual 1stFlrSF BsmtCond GrLivArea HeatingQC HouseStyle LotFrontage BsmtExposure OpenPorchSF BsmtQual LotShape MasVnrType OverallQual MasVnrArea TotalBsmtSF YrSold BsmtUnfSF Neighborhood 2ndFlrSF Exterior2nd TotRmsAbvGrd ScreenPorch GarageCars FireplaceQu GarageYrBlt OverallCond YearRemodAdd SalePrice 0 3 3 706 5 14 8450 0 2 4 4 2003 548 3 5 1 6 11 2 5 3 2 0 2 856 3 1710 4 6 65.0 1 61 3 0 2 6 196.0 856 0 150 16 854 12 8 0 2 1 2003.0 7 2003 208500 1 1 3 978 5 11 9600 298 2 4 4 1976 460 3 2 1 4 4 2 5 3 1 1 1 1262 3 1262 4 5 80.0 4 0 3 0 1 5 0.0 1262 4 284 20 0 5 6 0 2 3 1976.0 5 1976 181500 2 11 3 486 5 14 11250 0 2 4 4 2001 608 3 5 1 6 11 2 5 3 2 1 2 920 3 1786 4 6 68.0 2 42 3 1 2 6 162.0 920 0 434 16 866 12 6 0 2 3 2001.0 7 2002 223500 3 3 3 216 5 9 9550 0 1 1 4 1915 642 3 1 1 4 5 1 2 3 1 1 2 961 4 1717 3 6 60.0 1 35 2 1 1 6 0.0 756 3 540 17 756 8 7 0 3 4 1998.0 7 1970 140000 4 9 3 655 5 14 14260 192 2 4 4 2000 836 4 5 1 6 11 2 5 3 2 1 2 1145 3 2198 4 6 84.0 3 84 3 1 2 7 350.0 1145 0 490 24 1053 12 9 0 3 3 2000.0 7 2000 250000 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 1455 7 3 0 5 14 7917 0 2 4 4 1999 460 3 5 1 5 11 2 5 3 1 1 1 953 3 1647 4 6 62.0 1 40 3 0 1 5 0.0 953 4 953 14 694 12 7 0 2 3 1999.0 7 2000 175000 1456 3 3 790 5 11 13175 349 1 4 4 1978 500 3 2 1 4 9 2 5 3 1 2 1 2073 3 2073 2 5 85.0 1 0 3 0 4 5 119.0 1542 1 589 13 0 10 7 0 2 3 1978.0 4 1988 210000 1457 1 3 275 5 9 9042 0 2 4 4 1941 252 4 3 1 6 12 2 5 3 3 2 2 1188 4 2340 4 6 66.0 1 60 2 0 1 6 0.0 1152 1 877 17 1152 13 9 0 1 4 1941.0 8 2006 266500 1458 0 3 49 5 11 9717 366 1 4 4 1950 240 2 2 1 6 4 1 5 3 1 0 2 1078 3 1078 3 5 68.0 2 0 2 0 1 4 0.0 1078 1 0 10 0 5 5 0 1 1 1950.0 4 1996 142125 1459 2 3 830 5 11 9937 736 3 4 4 1965 276 3 2 1 2 8 1 5 3 2 0 1 1256 3 1256 3 5 75.0 1 68 2 0 1 4 0.0 1256 0 136 4 0 9 6 0 1 1 1965.0 4 1965 147500
1460 rows × 50 columns
X_train, X_test, y_train, y_test = train_test_split( train_last. iloc[ : , 0 : - 1 ] , train_last. iloc[ : , [ - 1 ] ] , test_size= 0.2 , random_state= 7 )
lr = LinearRegression( )
lr. fit( X_train, y_train)
print ( lr. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( lr. score( X_test, y_test) )
print ( lr. score( X_train, y_train) )
[[128705.97633884]]
SalePrice
99 128950
0.8519543734556843
0.8266965527930652
ls = Lasso( alpha= 100 , max_iter= 100000 )
ls. fit( X_train, y_train)
print ( ls. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( ls. score( X_test, y_test) )
print ( ls. score( X_train, y_train) )
[128194.41905277]
SalePrice
99 128950
0.8524312721810778
0.8264674896727493
xgb = XGBRegressor( )
xgb. fit( X_train, y_train)
print ( xgb. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( xgb. score( X_test, y_test) )
print ( xgb. score( X_train, y_train) )
[137806.88]
SalePrice
99 128950
0.9013816373209745
0.99986585398344
rg = Ridge( alpha= 50 )
rg. fit( X_train, y_train)
print ( rg. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( rg. score( X_test, y_test) )
print ( rg. score( X_train, y_train) )
[[128224.40637062]]
SalePrice
99 128950
0.8519237019479504
0.8260130780293145
lgbm = LGBMRegressor( )
lgbm. fit( X_train, y_train)
print ( lgbm. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( lgbm. score( X_test, y_test) )
print ( lgbm. score( X_train, y_train) )
[122699.63086328]
SalePrice
99 128950
0.9084717579343212
0.9805903170794543
stack = regressor. StackingRegressor( regressors= [ ls, xgb, lgbm] , meta_regressor= rg)
stack. fit( X_train, y_train)
print ( stack. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( stack. score( X_test, y_test) )
print ( stack. score( X_train, y_train) )
[[137983.58172137]]
SalePrice
99 128950
0.9008161248536086
0.9998717981042333
X_train, X_test, y_train, y_test = train_test_split( train_last. iloc[ : , 0 : - 1 ] , np. log1p( train_last. iloc[ : , [ - 1 ] ] ) , test_size= 0.2 , random_state= 7 )
lr = LinearRegression( )
lr. fit( X_train, y_train)
print ( lr. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( lr. score( X_test, y_test) )
print ( lr. score( X_train, y_train) )
print ( np. sqrt( mean_squared_error( np. expm1( y_test) , np. expm1( lr. predict( X_test) ) ) ) )
print ( np. sqrt( cross_val_score( lr, X_train, y_train, scoring= 'r2' , cv= 5 ) ) )
[[11.6323596]]
SalePrice
99 11.767188
0.9014287370300434
0.8814179338517563
27407.459338824414
[0.94578428 0.76389078 0.93094413 0.94086894 0.95391384]
ls = Lasso( alpha= 0.002 , max_iter= 100000 )
ls. fit( X_train, y_train)
print ( ls. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( ls. score( X_test, y_test) )
print ( ls. score( X_train, y_train) )
print ( np. sqrt( mean_squared_error( np. expm1( y_test) , np. expm1( ls. predict( X_test) ) ) ) )
time_1 = time. time( )
error_list = np. sqrt( - cross_val_score( lr, X_train, y_train, scoring= 'neg_mean_squared_error' , cv= len ( X_train) ) )
print ( error_list)
time_2 = time. time( )
print ( time_2- time_1)
print ( np. sqrt( cross_val_score( ls, X_train, y_train, scoring= 'r2' , cv= 5 ) ) )
[11.6227277]
SalePrice
99 11.767188
0.9023902700479108
0.8795640077417723
27517.076624711135
[0.07372533 0.05254256 0.06465484 ... 0.09983587 0.04480408 0.20046456]
12.748914957046509
[0.94626087 0.75131723 0.92972572 0.94094776 0.95548991]
rg = Ridge( alpha= 1 )
rg. fit( X_train, y_train)
print ( rg. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( rg. score( X_test, y_test) )
print ( rg. score( X_train, y_train) )
print ( np. sqrt( mean_squared_error( np. expm1( y_test) , np. expm1( rg. predict( X_test) ) ) ) )
print ( np. sqrt( - cross_val_score( rg, X_train, y_train, scoring= 'neg_mean_squared_error' , cv= 5 ) ) )
print ( np. sqrt( cross_val_score( rg, X_train, y_train, scoring= 'r2' , cv= 5 ) ) )
[[11.63177696]]
SalePrice
99 11.767188
0.9015510582176212
0.8814164537644407
27409.814767861015
[0.12599009 0.24197056 0.14567151 0.12624434 0.13110084]
[0.9457901 0.76392329 0.93089761 0.9408726 0.9540249 ]
xgb = XGBRegressor( learning_rate= 0.02 , max_depth= 3 , n_estimators= 1000 )
xgb. fit( X_train, y_train)
print ( xgb. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( xgb. score( X_test, y_test) )
print ( xgb. score( X_train, y_train) )
print ( np. sqrt( mean_squared_error( np. expm1( y_test) , np. expm1( xgb. predict( X_test) ) ) ) )
print ( np. sqrt( mean_squared_error( np. expm1( y_train) , np. expm1( xgb. predict( X_train) ) ) ) )
print ( np. sqrt( - cross_val_score( xgb, X_train, y_train, scoring= 'neg_mean_squared_error' , cv= 5 ) ) )
print ( np. sqrt( cross_val_score( xgb, X_train, y_train, scoring= 'r2' , cv= 5 ) ) )
[11.665708]
SalePrice
99 11.767188
0.9192435376855344
0.9698160291558459
25198.975648759053
12138.937999540736
[0.12729575 0.15484294 0.14307831 0.1093134 0.11721916]
[0.94462762 0.91075464 0.93342307 0.95601169 0.96342153]
lgbm = LGBMRegressor( num_leaves= 7 , learning_rate= 0.01 , n_estimators= 1000 )
lgbm. fit( X_train, y_train)
print ( lgbm. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( lgbm. score( X_test, y_test) )
print ( lgbm. score( X_train, y_train) )
print ( np. sqrt( mean_squared_error( np. expm1( y_test) , np. expm1( lgbm. predict( X_test) ) ) ) )
print ( np. sqrt( - cross_val_score( lgbm, X_train, y_train, scoring= 'neg_mean_squared_error' , cv= 5 ) ) )
print ( np. sqrt( cross_val_score( lgbm, X_train, y_train, scoring= 'r2' , cv= 5 ) ) )
[11.67980588]
SalePrice
99 11.767188
0.9123717713040634
0.9507868084209785
27571.85575283145
[0.12858805 0.15503547 0.14073726 0.11536931 0.12916114]
[0.94346381 0.91052166 0.9356583 0.95087378 0.95540682]
stack = regressor. StackingRegressor( regressors= [ ls, xgb, lgbm] , meta_regressor= rg)
stack. fit( X_train, y_train)
print ( stack. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( stack. score( X_test, y_test) )
print ( stack. score( X_train, y_train) )
print ( np. sqrt( - cross_val_score( stack, X_train, y_train, scoring= 'neg_mean_squared_error' , cv= 5 ) ) )
print ( np. sqrt( cross_val_score( stack, X_train, y_train, scoring= 'r2' , cv= 5 ) ) )
[[11.67493043]]
SalePrice
99 11.767188
0.9161487095970527
0.9711736239829509
[0.12989797 0.14590182 0.14341223 0.10997372 0.12084481]
[0.94227063 0.92119425 0.93310079 0.95546623 0.96107729]
X_train
MoSold MSZoning BsmtFinSF1 GarageCond MSSubClass LotArea WoodDeckSF GarageFinish SaleCondition SaleType YearBuilt GarageArea BedroomAbvGr Foundation CentralAir BsmtFinType1 Exterior1st FullBath GarageType GarageQual ExterQual Fireplaces KitchenQual 1stFlrSF BsmtCond GrLivArea HeatingQC HouseStyle LotFrontage BsmtExposure OpenPorchSF BsmtQual LotShape MasVnrType OverallQual MasVnrArea TotalBsmtSF YrSold BsmtUnfSF Neighborhood 2ndFlrSF Exterior2nd TotRmsAbvGrd ScreenPorch GarageCars FireplaceQu GarageYrBlt OverallCond YearRemodAdd 1087 1 4 0 5 14 10574 160 2 4 4 2005 1043 3 5 1 5 11 2 5 3 2 1 2 1082 3 1953 4 6 85.0 2 50 3 0 1 7 0.0 1082 2 1082 19 871 12 9 0 3 4 2005.0 7 2006 187 7 3 0 2 6 10410 0 1 4 4 1916 180 3 2 1 5 8 2 2 2 1 0 1 808 3 1656 4 2 60.0 1 0 1 0 1 4 0.0 660 2 660 5 704 9 8 0 1 1 1916.0 6 1987 671 8 2 551 5 9 6629 147 1 4 4 1925 300 3 1 0 2 5 2 2 3 1 0 1 697 3 1369 2 6 54.0 1 0 2 0 1 5 0.0 672 2 121 4 672 4 6 0 1 1 1930.0 4 1950 652 8 3 0 5 14 8750 0 2 4 4 1996 512 2 5 1 5 11 2 5 3 2 1 2 909 3 1716 4 6 70.0 1 120 3 0 1 6 0.0 880 2 880 16 807 12 7 0 2 3 1996.0 7 1996 1266 6 1 0 5 3 10120 0 1 4 4 1910 308 4 2 0 5 5 1 2 3 0 1 1 964 3 1889 2 3 60.0 1 0 2 1 1 6 0.0 925 4 925 5 925 4 9 0 1 4 1960.0 2 1950 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 211 5 3 36 5 11 10420 100 2 4 4 2009 460 3 5 1 6 11 2 5 3 1 0 2 1212 3 1212 4 5 83.0 2 22 3 0 1 5 0.0 1212 1 1176 4 0 12 6 0 2 1 2009.0 7 2009 502 0 3 698 2 11 9170 0 1 4 4 1965 461 2 2 1 4 4 1 2 2 1 0 1 1214 3 1214 4 5 70.0 1 0 2 0 1 4 0.0 1214 4 420 4 0 5 6 0 2 1 1965.0 6 1965 537 0 3 600 5 11 12735 216 1 4 3 1972 576 3 2 1 2 4 1 2 3 1 0 1 864 3 864 2 5 0.0 1 0 2 1 1 3 0.0 864 0 264 10 0 5 5 0 2 1 1980.0 7 1972 1220 10 3 312 5 11 7800 0 1 1 4 1964 288 2 2 1 1 5 1 5 3 1 0 1 912 3 912 2 5 66.0 1 0 2 1 1 4 0.0 912 3 0 10 0 4 5 0 1 1 1964.0 7 1964 175 2 3 477 5 11 12615 0 1 4 4 1950 576 4 2 1 4 6 2 5 3 1 1 2 2158 4 2158 2 5 84.0 3 29 2 0 1 5 0.0 1202 4 725 4 0 8 7 0 2 4 1950.0 6 2001
1168 rows × 49 columns
def cross_test_score ( X_train, y_train) :
mean_list = [ ]
lr = LinearRegression( )
cv= len ( X_train)
for index in [ x for x in range ( cv) ] :
if index == 0 :
lr. fit( X_train. iloc[ 1 : cv, : ] , y_train. iloc[ 1 : cv, : ] )
elif index == ( cv- 1 ) :
lr. fit( X_train. iloc[ 0 : cv, : ] , y_train. iloc[ 0 : cv, : ] )
else :
a = np. arange( X_train. shape[ 0 ] ) . tolist( )
a. pop( index)
lr. fit( X_train. iloc[ a, : ] , y_train. iloc[ a, : ] )
y_pred = lr. predict( X_train. iloc[ [ index] , : ] )
mean_abs_error = np. sqrt( mean_squared_error( y_train. iloc[ [ index] , : ] , y_pred) )
mean_list. append( mean_abs_error)
return mean_list
X_train. index = range ( X_train. shape[ 0 ] )
y_train. index = range ( y_train. shape[ 0 ] )
mean_list = cross_test_score( X_train, y_train)
plt. plot( range ( len ( mean_list) ) , mean_list)
[<matplotlib.lines.Line2D at 0x16af3208d68>]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R3M1If7S-1615021016040)(output_62_1.png)]
a = pd. Series( mean_list, index= range ( len ( mean_list) ) ) . sort_values( )
a
212 0.000084
816 0.000101
312 0.000261
983 0.000311
111 0.000443
...
1061 0.695339
515 0.750419
437 0.761170
342 1.269573
464 2.359217
Length: 1168, dtype: float64
X_train. iloc[ [ 342 , 464 ] , : ]
MoSold MSZoning BsmtFinSF1 GarageCond MSSubClass LotArea WoodDeckSF GarageFinish SaleCondition SaleType YearBuilt GarageArea BedroomAbvGr Foundation CentralAir BsmtFinType1 Exterior1st FullBath GarageType GarageQual ExterQual Fireplaces KitchenQual 1stFlrSF BsmtCond GrLivArea HeatingQC HouseStyle LotFrontage BsmtExposure OpenPorchSF BsmtQual LotShape MasVnrType OverallQual MasVnrArea TotalBsmtSF YrSold BsmtUnfSF Neighborhood 2ndFlrSF Exterior2nd TotRmsAbvGrd ScreenPorch GarageCars FireplaceQu GarageYrBlt OverallCond YearRemodAdd 342 4 3 2260 5 14 40094 208 3 5 8 2007 884 3 5 1 6 12 3 6 3 3 1 3 3138 3 4676 4 6 130.0 4 406 4 1 4 9 762.0 3138 4 878 4 1538 13 11 0 3 4 2007.0 7 2008 464 6 3 5644 5 14 63887 214 3 5 8 2008 1418 3 5 1 6 7 2 5 3 3 3 3 4692 3 5642 4 6 313.0 4 292 4 2 4 9 796.0 6110 0 466 4 950 6 12 0 2 4 2008.0 7 2008
X_train. drop( [ 342 , 464 ] , axis= 0 , inplace= True )
y_train. drop( [ 342 , 464 ] , axis= 0 , inplace= True )
rg = Ridge( alpha= 1 )
rg. fit( X_train, y_train)
print ( rg. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( rg. score( X_test, y_test) )
print ( rg. score( X_train, y_train) )
print ( np. sqrt( mean_squared_error( np. expm1( y_test) , np. expm1( rg. predict( X_test) ) ) ) )
print ( np. sqrt( - cross_val_score( rg, X_train, y_train, scoring= 'neg_mean_squared_error' , cv= 5 ) ) )
print ( np. sqrt( cross_val_score( rg, X_train, y_train, scoring= 'r2' , cv= 5 ) ) )
[[11.64851484]]
SalePrice
99 11.767188
0.9151227578383072
0.9144284746375823
21680.19889202489
[0.11325024 0.12770313 0.13376579 0.11558958 0.12319022]
[0.95643737 0.94056018 0.94224296 0.95068114 0.95951961]
ls = Lasso( alpha= 0.002 , max_iter= 100000 )
ls. fit( X_train, y_train)
print ( ls. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( ls. score( X_test, y_test) )
print ( ls. score( X_train, y_train) )
print ( np. sqrt( mean_squared_error( np. expm1( y_test) , np. expm1( ls. predict( X_test) ) ) ) )
time_1 = time. time( )
error_list = np. sqrt( - cross_val_score( lr, X_train, y_train, scoring= 'neg_mean_squared_error' , cv= len ( X_train) ) )
print ( error_list)
time_2 = time. time( )
print ( time_2- time_1)
print ( np. sqrt( cross_val_score( ls, X_train, y_train, scoring= 'r2' , cv= 5 ) ) )
[11.63326364]
SalePrice
99 11.767188
0.9143217824770862
0.912713281276043
22220.831580976675
[0.04530086 0.04875491 0.07250084 ... 0.06706882 0.04069486 0.16519963]
12.84067153930664
[0.95639987 0.94282027 0.94192452 0.9501967 0.9602258 ]
xgb = XGBRegressor( learning_rate= 0.02 , max_depth= 3 , n_estimators= 1000 )
xgb. fit( X_train, y_train)
print ( xgb. predict( X_test. iloc[ [ 142 ] , : ] ) )
print ( y_test. iloc[ [ 142 ] , : ] )
print ( xgb. score( X_test, y_test) )
print ( xgb. score( X_train, y_train) )
print ( np. sqrt( mean_squared_error( np. expm1( y_test) , np. expm1( xgb. predict( X_test) ) ) ) )
print ( np. sqrt( mean_squared_error( np. expm1( y_train) , np. expm1( xgb. predict( X_train) ) ) ) )
print ( np. sqrt( - cross_val_score( xgb, X_train, y_train, scoring= 'neg_mean_squared_error' , cv= 5 ) ) )
print ( np. sqrt( cross_val_score( xgb, X_train, y_train, scoring= 'r2' , cv= 5 ) ) )
[11.663737]
SalePrice
99 11.767188
0.92229859972357
0.9710584050678127
23644.2496823488
11613.610958582125
[0.12072391 0.1213991 0.13657591 0.10816418 0.11720516]
[0.95034336 0.94644622 0.93971222 0.95695243 0.96343044]
train_concat = pd. concat( [ X_train, y_train] , axis= 1 )
train_concat
MoSold MSZoning BsmtFinSF1 GarageCond MSSubClass LotArea WoodDeckSF GarageFinish SaleCondition SaleType YearBuilt GarageArea BedroomAbvGr Foundation CentralAir BsmtFinType1 Exterior1st FullBath GarageType GarageQual ExterQual Fireplaces KitchenQual 1stFlrSF BsmtCond GrLivArea HeatingQC HouseStyle LotFrontage BsmtExposure OpenPorchSF BsmtQual LotShape MasVnrType OverallQual MasVnrArea TotalBsmtSF YrSold BsmtUnfSF Neighborhood 2ndFlrSF Exterior2nd TotRmsAbvGrd ScreenPorch GarageCars FireplaceQu GarageYrBlt OverallCond YearRemodAdd SalePrice 0 1 4 0 5 14 10574 160 2 4 4 2005 1043 3 5 1 5 11 2 5 3 2 1 2 1082 3 1953 4 6 85.0 2 50 3 0 1 7 0.0 1082 2 1082 19 871 12 9 0 3 4 2005.0 7 2006 12.437188 1 7 3 0 2 6 10410 0 1 4 4 1916 180 3 2 1 5 8 2 2 2 1 0 1 808 3 1656 4 2 60.0 1 0 1 0 1 4 0.0 660 2 660 5 704 9 8 0 1 1 1916.0 6 1987 11.813037 2 8 2 551 5 9 6629 147 1 4 4 1925 300 3 1 0 2 5 2 2 3 1 0 1 697 3 1369 2 6 54.0 1 0 2 0 1 5 0.0 672 2 121 4 672 4 6 0 1 1 1930.0 4 1950 11.548302 3 8 3 0 5 14 8750 0 2 4 4 1996 512 2 5 1 5 11 2 5 3 2 1 2 909 3 1716 4 6 70.0 1 120 3 0 1 6 0.0 880 2 880 16 807 12 7 0 2 3 1996.0 7 1996 12.160034 4 6 1 0 5 3 10120 0 1 4 4 1910 308 4 2 0 5 5 1 2 3 0 1 1 964 3 1889 2 3 60.0 1 0 2 1 1 6 0.0 925 4 925 5 925 4 9 0 1 4 1960.0 2 1950 11.711785 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 1163 5 3 36 5 11 10420 100 2 4 4 2009 460 3 5 1 6 11 2 5 3 1 0 2 1212 3 1212 4 5 83.0 2 22 3 0 1 5 0.0 1212 1 1176 4 0 12 6 0 2 1 2009.0 7 2009 12.133507 1164 0 3 698 2 11 9170 0 1 4 4 1965 461 2 2 1 4 4 1 2 2 1 0 1 1214 3 1214 4 5 70.0 1 0 2 0 1 4 0.0 1214 4 420 4 0 5 6 0 2 1 1965.0 6 1965 11.849405 1165 0 3 600 5 11 12735 216 1 4 3 1972 576 3 2 1 2 4 1 2 3 1 0 1 864 3 864 2 5 0.0 1 0 2 1 1 3 0.0 864 0 264 10 0 5 5 0 2 1 1980.0 7 1972 11.619544 1166 10 3 312 5 11 7800 0 1 1 4 1964 288 2 2 1 1 5 1 5 3 1 0 1 912 3 912 2 5 66.0 1 0 2 1 1 4 0.0 912 3 0 10 0 4 5 0 1 1 1964.0 7 1964 11.652696 1167 2 3 477 5 11 12615 0 1 4 4 1950 576 4 2 1 4 6 2 5 3 1 1 2 2158 4 2158 2 5 84.0 3 29 2 0 1 5 0.0 1202 4 725 4 0 8 7 0 2 4 1950.0 6 2001 12.400821
1166 rows × 50 columns
corr_last_list = train_concat. corr( ) . iloc[ : , - 1 ] . sort_values( ascending= False )
corr_last_list
SalePrice 1.000000
OverallQual 0.818545
Neighborhood 0.743155
GrLivArea 0.724649
GarageCars 0.687718
ExterQual 0.679473
KitchenQual 0.664916
GarageArea 0.660270
BsmtQual 0.637945
TotalBsmtSF 0.633197
1stFlrSF 0.605800
FullBath 0.602931
GarageFinish 0.599941
YearBuilt 0.586915
GarageType 0.580333
YearRemodAdd 0.569444
MSSubClass 0.553671
TotRmsAbvGrd 0.545820
Foundation 0.542097
FireplaceQu 0.537695
Fireplaces 0.478249
HeatingQC 0.469827
MasVnrType 0.441539
MasVnrArea 0.414464
MSZoning 0.405073
Exterior1st 0.404112
GarageCond 0.391892
Exterior2nd 0.391754
OverallCond 0.389876
BsmtFinType1 0.381671
BsmtFinSF1 0.375696
GarageQual 0.372400
CentralAir 0.371996
GarageYrBlt 0.368714
WoodDeckSF 0.342925
BsmtExposure 0.334175
2ndFlrSF 0.332800
SaleType 0.324187
OpenPorchSF 0.308198
BsmtCond 0.292069
LotArea 0.291945
HouseStyle 0.291766
LotShape 0.287286
SaleCondition 0.264004
BedroomAbvGr 0.236127
BsmtUnfSF 0.230587
LotFrontage 0.177707
ScreenPorch 0.098918
MoSold 0.075277
YrSold 0.048146
Name: SalePrice, dtype: float64
pf = PolynomialFeatures( )
pd. DataFrame( pf. fit_transform( X_train) )
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 ... 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 0 1.0 1.0 4.0 0.0 5.0 14.0 10574.0 160.0 2.0 4.0 4.0 2005.0 1043.0 3.0 5.0 1.0 5.0 11.0 2.0 5.0 3.0 2.0 1.0 2.0 1082.0 3.0 1953.0 4.0 6.0 85.0 2.0 50.0 3.0 0.0 1.0 7.0 0.0 1082.0 2.0 1082.0 19.0 871.0 12.0 9.0 0.0 3.0 4.0 2005.0 7.0 2006.0 1.0 4.0 0.0 5.0 14.0 10574.0 160.0 2.0 4.0 4.0 2005.0 1043.0 3.0 5.0 1.0 5.0 11.0 2.0 5.0 3.0 2.0 1.0 2.0 1082.0 3.0 1953.0 4.0 6.0 85.0 2.0 50.0 3.0 0.0 1.0 7.0 0.0 1082.0 2.0 1082.0 19.0 871.0 12.0 9.0 0.0 3.0 4.0 2005.0 7.0 2006.0 16.0 0.0 20.0 56.0 42296.0 640.0 8.0 16.0 16.0 8020.0 4172.0 12.0 20.0 4.0 20.0 44.0 8.0 20.0 12.0 8.0 4.0 8.0 4328.0 12.0 7812.0 16.0 24.0 340.0 8.0 200.0 12.0 0.0 4.0 28.0 0.0 4328.0 8.0 4328.0 76.0 3484.0 48.0 36.0 0.0 12.0 16.0 8020.0 28.0 8024.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 70.0 52870.0 800.0 10.0 20.0 20.0 10025.0 5215.0 15.0 25.0 5.0 25.0 55.0 10.0 25.0 15.0 10.0 5.0 10.0 5410.0 15.0 9765.0 20.0 30.0 425.0 10.0 250.0 15.0 0.0 5.0 35.0 0.0 5410.0 10.0 5410.0 95.0 4355.0 60.0 45.0 0.0 15.0 20.0 10025.0 35.0 10030.0 196.0 148036.0 2240.0 28.0 56.0 56.0 28070.0 14602.0 42.0 70.0 ... 300.0 18.0 0.0 6.0 42.0 0.0 6492.0 12.0 6492.0 114.0 5226.0 72.0 54.0 0.0 18.0 24.0 12030.0 42.0 12036.0 7225.0 170.0 4250.0 255.0 0.0 85.0 595.0 0.0 91970.0 170.0 91970.0 1615.0 74035.0 1020.0 765.0 0.0 255.0 340.0 170425.0 595.0 170510.0 4.0 100.0 6.0 0.0 2.0 14.0 0.0 2164.0 4.0 2164.0 38.0 1742.0 24.0 18.0 0.0 6.0 8.0 4010.0 14.0 4012.0 2500.0 150.0 0.0 50.0 350.0 0.0 54100.0 100.0 54100.0 950.0 43550.0 600.0 450.0 0.0 150.0 200.0 100250.0 350.0 100300.0 9.0 0.0 3.0 21.0 0.0 3246.0 6.0 3246.0 57.0 2613.0 36.0 27.0 0.0 9.0 12.0 6015.0 21.0 6018.0 0.0 0.0 0.0 0.0 0.0 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 7.0 0.0 1082.0 2.0 1082.0 19.0 871.0 12.0 9.0 0.0 3.0 4.0 2005.0 7.0 2006.0 49.0 0.0 7574.0 14.0 7574.0 133.0 6097.0 84.0 63.0 0.0 21.0 28.0 14035.0 49.0 14042.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1170724.0 2164.0 1170724.0 20558.0 942422.0 12984.0 9738.0 0.0 3246.0 4328.0 2169410.0 7574.0 2170492.0 4.0 2164.0 38.0 1742.0 24.0 18.0 0.0 6.0 8.0 4010.0 14.0 4012.0 1170724.0 20558.0 942422.0 12984.0 9738.0 0.0 3246.0 4328.0 2169410.0 7574.0 2170492.0 361.0 16549.0 228.0 171.0 0.0 57.0 76.0 38095.0 133.0 38114.0 758641.0 10452.0 7839.0 0.0 2613.0 3484.0 1746355.0 6097.0 1747226.0 144.0 108.0 0.0 36.0 48.0 24060.0 84.0 24072.0 81.0 0.0 27.0 36.0 18045.0 63.0 18054.0 0.0 0.0 0.0 0.0 0.0 0.0 9.0 12.0 6015.0 21.0 6018.0 16.0 8020.0 28.0 8024.0 4020025.0 14035.0 4022030.0 49.0 14042.0 4024036.0 1 1.0 7.0 3.0 0.0 2.0 6.0 10410.0 0.0 1.0 4.0 4.0 1916.0 180.0 3.0 2.0 1.0 5.0 8.0 2.0 2.0 2.0 1.0 0.0 1.0 808.0 3.0 1656.0 4.0 2.0 60.0 1.0 0.0 1.0 0.0 1.0 4.0 0.0 660.0 2.0 660.0 5.0 704.0 9.0 8.0 0.0 1.0 1.0 1916.0 6.0 1987.0 49.0 21.0 0.0 14.0 42.0 72870.0 0.0 7.0 28.0 28.0 13412.0 1260.0 21.0 14.0 7.0 35.0 56.0 14.0 14.0 14.0 7.0 0.0 7.0 5656.0 21.0 11592.0 28.0 14.0 420.0 7.0 0.0 7.0 0.0 7.0 28.0 0.0 4620.0 14.0 4620.0 35.0 4928.0 63.0 56.0 0.0 7.0 7.0 13412.0 42.0 13909.0 9.0 0.0 6.0 18.0 31230.0 0.0 3.0 12.0 12.0 5748.0 540.0 9.0 6.0 3.0 15.0 24.0 6.0 6.0 6.0 3.0 0.0 3.0 2424.0 9.0 4968.0 12.0 6.0 180.0 3.0 0.0 3.0 0.0 3.0 12.0 0.0 1980.0 6.0 1980.0 15.0 2112.0 27.0 24.0 0.0 3.0 3.0 5748.0 18.0 5961.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 12.0 20820.0 0.0 2.0 8.0 8.0 3832.0 360.0 6.0 4.0 2.0 10.0 16.0 4.0 4.0 4.0 2.0 0.0 2.0 1616.0 6.0 3312.0 8.0 4.0 120.0 2.0 0.0 2.0 0.0 2.0 8.0 0.0 1320.0 4.0 1320.0 10.0 1408.0 18.0 16.0 0.0 2.0 2.0 3832.0 12.0 3974.0 36.0 62460.0 0.0 6.0 24.0 24.0 11496.0 1080.0 18.0 12.0 ... 0.0 2.0 0.0 2.0 8.0 0.0 1320.0 4.0 1320.0 10.0 1408.0 18.0 16.0 0.0 2.0 2.0 3832.0 12.0 3974.0 3600.0 60.0 0.0 60.0 0.0 60.0 240.0 0.0 39600.0 120.0 39600.0 300.0 42240.0 540.0 480.0 0.0 60.0 60.0 114960.0 360.0 119220.0 1.0 0.0 1.0 0.0 1.0 4.0 0.0 660.0 2.0 660.0 5.0 704.0 9.0 8.0 0.0 1.0 1.0 1916.0 6.0 1987.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 4.0 0.0 660.0 2.0 660.0 5.0 704.0 9.0 8.0 0.0 1.0 1.0 1916.0 6.0 1987.0 0.0 0.0 0.0 0.0 0.0 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 660.0 2.0 660.0 5.0 704.0 9.0 8.0 0.0 1.0 1.0 1916.0 6.0 1987.0 16.0 0.0 2640.0 8.0 2640.0 20.0 2816.0 36.0 32.0 0.0 4.0 4.0 7664.0 24.0 7948.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 435600.0 1320.0 435600.0 3300.0 464640.0 5940.0 5280.0 0.0 660.0 660.0 1264560.0 3960.0 1311420.0 4.0 1320.0 10.0 1408.0 18.0 16.0 0.0 2.0 2.0 3832.0 12.0 3974.0 435600.0 3300.0 464640.0 5940.0 5280.0 0.0 660.0 660.0 1264560.0 3960.0 1311420.0 25.0 3520.0 45.0 40.0 0.0 5.0 5.0 9580.0 30.0 9935.0 495616.0 6336.0 5632.0 0.0 704.0 704.0 1348864.0 4224.0 1398848.0 81.0 72.0 0.0 9.0 9.0 17244.0 54.0 17883.0 64.0 0.0 8.0 8.0 15328.0 48.0 15896.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1916.0 6.0 1987.0 1.0 1916.0 6.0 1987.0 3671056.0 11496.0 3807092.0 36.0 11922.0 3948169.0 2 1.0 8.0 2.0 551.0 5.0 9.0 6629.0 147.0 1.0 4.0 4.0 1925.0 300.0 3.0 1.0 0.0 2.0 5.0 2.0 2.0 3.0 1.0 0.0 1.0 697.0 3.0 1369.0 2.0 6.0 54.0 1.0 0.0 2.0 0.0 1.0 5.0 0.0 672.0 2.0 121.0 4.0 672.0 4.0 6.0 0.0 1.0 1.0 1930.0 4.0 1950.0 64.0 16.0 4408.0 40.0 72.0 53032.0 1176.0 8.0 32.0 32.0 15400.0 2400.0 24.0 8.0 0.0 16.0 40.0 16.0 16.0 24.0 8.0 0.0 8.0 5576.0 24.0 10952.0 16.0 48.0 432.0 8.0 0.0 16.0 0.0 8.0 40.0 0.0 5376.0 16.0 968.0 32.0 5376.0 32.0 48.0 0.0 8.0 8.0 15440.0 32.0 15600.0 4.0 1102.0 10.0 18.0 13258.0 294.0 2.0 8.0 8.0 3850.0 600.0 6.0 2.0 0.0 4.0 10.0 4.0 4.0 6.0 2.0 0.0 2.0 1394.0 6.0 2738.0 4.0 12.0 108.0 2.0 0.0 4.0 0.0 2.0 10.0 0.0 1344.0 4.0 242.0 8.0 1344.0 8.0 12.0 0.0 2.0 2.0 3860.0 8.0 3900.0 303601.0 2755.0 4959.0 3652579.0 80997.0 551.0 2204.0 2204.0 1060675.0 165300.0 1653.0 551.0 0.0 1102.0 2755.0 1102.0 1102.0 1653.0 551.0 0.0 551.0 384047.0 1653.0 754319.0 1102.0 3306.0 29754.0 551.0 0.0 1102.0 0.0 551.0 2755.0 0.0 370272.0 1102.0 66671.0 2204.0 370272.0 2204.0 3306.0 0.0 551.0 551.0 1063430.0 2204.0 1074450.0 25.0 45.0 33145.0 735.0 5.0 20.0 20.0 9625.0 1500.0 15.0 5.0 0.0 10.0 25.0 10.0 10.0 15.0 5.0 0.0 5.0 3485.0 15.0 6845.0 10.0 30.0 270.0 5.0 0.0 10.0 0.0 5.0 25.0 0.0 3360.0 10.0 605.0 20.0 3360.0 20.0 30.0 0.0 5.0 5.0 9650.0 20.0 9750.0 81.0 59661.0 1323.0 9.0 36.0 36.0 17325.0 2700.0 27.0 9.0 ... 0.0 12.0 0.0 6.0 30.0 0.0 4032.0 12.0 726.0 24.0 4032.0 24.0 36.0 0.0 6.0 6.0 11580.0 24.0 11700.0 2916.0 54.0 0.0 108.0 0.0 54.0 270.0 0.0 36288.0 108.0 6534.0 216.0 36288.0 216.0 324.0 0.0 54.0 54.0 104220.0 216.0 105300.0 1.0 0.0 2.0 0.0 1.0 5.0 0.0 672.0 2.0 121.0 4.0 672.0 4.0 6.0 0.0 1.0 1.0 1930.0 4.0 1950.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 2.0 10.0 0.0 1344.0 4.0 242.0 8.0 1344.0 8.0 12.0 0.0 2.0 2.0 3860.0 8.0 3900.0 0.0 0.0 0.0 0.0 0.0 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 5.0 0.0 672.0 2.0 121.0 4.0 672.0 4.0 6.0 0.0 1.0 1.0 1930.0 4.0 1950.0 25.0 0.0 3360.0 10.0 605.0 20.0 3360.0 20.0 30.0 0.0 5.0 5.0 9650.0 20.0 9750.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 451584.0 1344.0 81312.0 2688.0 451584.0 2688.0 4032.0 0.0 672.0 672.0 1296960.0 2688.0 1310400.0 4.0 242.0 8.0 1344.0 8.0 12.0 0.0 2.0 2.0 3860.0 8.0 3900.0 14641.0 484.0 81312.0 484.0 726.0 0.0 121.0 121.0 233530.0 484.0 235950.0 16.0 2688.0 16.0 24.0 0.0 4.0 4.0 7720.0 16.0 7800.0 451584.0 2688.0 4032.0 0.0 672.0 672.0 1296960.0 2688.0 1310400.0 16.0 24.0 0.0 4.0 4.0 7720.0 16.0 7800.0 36.0 0.0 6.0 6.0 11580.0 24.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1930.0 4.0 1950.0 1.0 1930.0 4.0 1950.0 3724900.0 7720.0 3763500.0 16.0 7800.0 3802500.0 3 1.0 8.0 3.0 0.0 5.0 14.0 8750.0 0.0 2.0 4.0 4.0 1996.0 512.0 2.0 5.0 1.0 5.0 11.0 2.0 5.0 3.0 2.0 1.0 2.0 909.0 3.0 1716.0 4.0 6.0 70.0 1.0 120.0 3.0 0.0 1.0 6.0 0.0 880.0 2.0 880.0 16.0 807.0 12.0 7.0 0.0 2.0 3.0 1996.0 7.0 1996.0 64.0 24.0 0.0 40.0 112.0 70000.0 0.0 16.0 32.0 32.0 15968.0 4096.0 16.0 40.0 8.0 40.0 88.0 16.0 40.0 24.0 16.0 8.0 16.0 7272.0 24.0 13728.0 32.0 48.0 560.0 8.0 960.0 24.0 0.0 8.0 48.0 0.0 7040.0 16.0 7040.0 128.0 6456.0 96.0 56.0 0.0 16.0 24.0 15968.0 56.0 15968.0 9.0 0.0 15.0 42.0 26250.0 0.0 6.0 12.0 12.0 5988.0 1536.0 6.0 15.0 3.0 15.0 33.0 6.0 15.0 9.0 6.0 3.0 6.0 2727.0 9.0 5148.0 12.0 18.0 210.0 3.0 360.0 9.0 0.0 3.0 18.0 0.0 2640.0 6.0 2640.0 48.0 2421.0 36.0 21.0 0.0 6.0 9.0 5988.0 21.0 5988.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 70.0 43750.0 0.0 10.0 20.0 20.0 9980.0 2560.0 10.0 25.0 5.0 25.0 55.0 10.0 25.0 15.0 10.0 5.0 10.0 4545.0 15.0 8580.0 20.0 30.0 350.0 5.0 600.0 15.0 0.0 5.0 30.0 0.0 4400.0 10.0 4400.0 80.0 4035.0 60.0 35.0 0.0 10.0 15.0 9980.0 35.0 9980.0 196.0 122500.0 0.0 28.0 56.0 56.0 27944.0 7168.0 28.0 70.0 ... 720.0 18.0 0.0 6.0 36.0 0.0 5280.0 12.0 5280.0 96.0 4842.0 72.0 42.0 0.0 12.0 18.0 11976.0 42.0 11976.0 4900.0 70.0 8400.0 210.0 0.0 70.0 420.0 0.0 61600.0 140.0 61600.0 1120.0 56490.0 840.0 490.0 0.0 140.0 210.0 139720.0 490.0 139720.0 1.0 120.0 3.0 0.0 1.0 6.0 0.0 880.0 2.0 880.0 16.0 807.0 12.0 7.0 0.0 2.0 3.0 1996.0 7.0 1996.0 14400.0 360.0 0.0 120.0 720.0 0.0 105600.0 240.0 105600.0 1920.0 96840.0 1440.0 840.0 0.0 240.0 360.0 239520.0 840.0 239520.0 9.0 0.0 3.0 18.0 0.0 2640.0 6.0 2640.0 48.0 2421.0 36.0 21.0 0.0 6.0 9.0 5988.0 21.0 5988.0 0.0 0.0 0.0 0.0 0.0 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 6.0 0.0 880.0 2.0 880.0 16.0 807.0 12.0 7.0 0.0 2.0 3.0 1996.0 7.0 1996.0 36.0 0.0 5280.0 12.0 5280.0 96.0 4842.0 72.0 42.0 0.0 12.0 18.0 11976.0 42.0 11976.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 774400.0 1760.0 774400.0 14080.0 710160.0 10560.0 6160.0 0.0 1760.0 2640.0 1756480.0 6160.0 1756480.0 4.0 1760.0 32.0 1614.0 24.0 14.0 0.0 4.0 6.0 3992.0 14.0 3992.0 774400.0 14080.0 710160.0 10560.0 6160.0 0.0 1760.0 2640.0 1756480.0 6160.0 1756480.0 256.0 12912.0 192.0 112.0 0.0 32.0 48.0 31936.0 112.0 31936.0 651249.0 9684.0 5649.0 0.0 1614.0 2421.0 1610772.0 5649.0 1610772.0 144.0 84.0 0.0 24.0 36.0 23952.0 84.0 23952.0 49.0 0.0 14.0 21.0 13972.0 49.0 13972.0 0.0 0.0 0.0 0.0 0.0 0.0 4.0 6.0 3992.0 14.0 3992.0 9.0 5988.0 21.0 5988.0 3984016.0 13972.0 3984016.0 49.0 13972.0 3984016.0 4 1.0 6.0 1.0 0.0 5.0 3.0 10120.0 0.0 1.0 4.0 4.0 1910.0 308.0 4.0 2.0 0.0 5.0 5.0 1.0 2.0 3.0 0.0 1.0 1.0 964.0 3.0 1889.0 2.0 3.0 60.0 1.0 0.0 2.0 1.0 1.0 6.0 0.0 925.0 4.0 925.0 5.0 925.0 4.0 9.0 0.0 1.0 4.0 1960.0 2.0 1950.0 36.0 6.0 0.0 30.0 18.0 60720.0 0.0 6.0 24.0 24.0 11460.0 1848.0 24.0 12.0 0.0 30.0 30.0 6.0 12.0 18.0 0.0 6.0 6.0 5784.0 18.0 11334.0 12.0 18.0 360.0 6.0 0.0 12.0 6.0 6.0 36.0 0.0 5550.0 24.0 5550.0 30.0 5550.0 24.0 54.0 0.0 6.0 24.0 11760.0 12.0 11700.0 1.0 0.0 5.0 3.0 10120.0 0.0 1.0 4.0 4.0 1910.0 308.0 4.0 2.0 0.0 5.0 5.0 1.0 2.0 3.0 0.0 1.0 1.0 964.0 3.0 1889.0 2.0 3.0 60.0 1.0 0.0 2.0 1.0 1.0 6.0 0.0 925.0 4.0 925.0 5.0 925.0 4.0 9.0 0.0 1.0 4.0 1960.0 2.0 1950.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 15.0 50600.0 0.0 5.0 20.0 20.0 9550.0 1540.0 20.0 10.0 0.0 25.0 25.0 5.0 10.0 15.0 0.0 5.0 5.0 4820.0 15.0 9445.0 10.0 15.0 300.0 5.0 0.0 10.0 5.0 5.0 30.0 0.0 4625.0 20.0 4625.0 25.0 4625.0 20.0 45.0 0.0 5.0 20.0 9800.0 10.0 9750.0 9.0 30360.0 0.0 3.0 12.0 12.0 5730.0 924.0 12.0 6.0 ... 0.0 6.0 3.0 3.0 18.0 0.0 2775.0 12.0 2775.0 15.0 2775.0 12.0 27.0 0.0 3.0 12.0 5880.0 6.0 5850.0 3600.0 60.0 0.0 120.0 60.0 60.0 360.0 0.0 55500.0 240.0 55500.0 300.0 55500.0 240.0 540.0 0.0 60.0 240.0 117600.0 120.0 117000.0 1.0 0.0 2.0 1.0 1.0 6.0 0.0 925.0 4.0 925.0 5.0 925.0 4.0 9.0 0.0 1.0 4.0 1960.0 2.0 1950.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 2.0 2.0 12.0 0.0 1850.0 8.0 1850.0 10.0 1850.0 8.0 18.0 0.0 2.0 8.0 3920.0 4.0 3900.0 1.0 1.0 6.0 0.0 925.0 4.0 925.0 5.0 925.0 4.0 9.0 0.0 1.0 4.0 1960.0 2.0 1950.0 1.0 6.0 0.0 925.0 4.0 925.0 5.0 925.0 4.0 9.0 0.0 1.0 4.0 1960.0 2.0 1950.0 36.0 0.0 5550.0 24.0 5550.0 30.0 5550.0 24.0 54.0 0.0 6.0 24.0 11760.0 12.0 11700.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 855625.0 3700.0 855625.0 4625.0 855625.0 3700.0 8325.0 0.0 925.0 3700.0 1813000.0 1850.0 1803750.0 16.0 3700.0 20.0 3700.0 16.0 36.0 0.0 4.0 16.0 7840.0 8.0 7800.0 855625.0 4625.0 855625.0 3700.0 8325.0 0.0 925.0 3700.0 1813000.0 1850.0 1803750.0 25.0 4625.0 20.0 45.0 0.0 5.0 20.0 9800.0 10.0 9750.0 855625.0 3700.0 8325.0 0.0 925.0 3700.0 1813000.0 1850.0 1803750.0 16.0 36.0 0.0 4.0 16.0 7840.0 8.0 7800.0 81.0 0.0 9.0 36.0 17640.0 18.0 17550.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 4.0 1960.0 2.0 1950.0 16.0 7840.0 8.0 7800.0 3841600.0 3920.0 3822000.0 4.0 3900.0 3802500.0 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 1161 1.0 5.0 3.0 36.0 5.0 11.0 10420.0 100.0 2.0 4.0 4.0 2009.0 460.0 3.0 5.0 1.0 6.0 11.0 2.0 5.0 3.0 1.0 0.0 2.0 1212.0 3.0 1212.0 4.0 5.0 83.0 2.0 22.0 3.0 0.0 1.0 5.0 0.0 1212.0 1.0 1176.0 4.0 0.0 12.0 6.0 0.0 2.0 1.0 2009.0 7.0 2009.0 25.0 15.0 180.0 25.0 55.0 52100.0 500.0 10.0 20.0 20.0 10045.0 2300.0 15.0 25.0 5.0 30.0 55.0 10.0 25.0 15.0 5.0 0.0 10.0 6060.0 15.0 6060.0 20.0 25.0 415.0 10.0 110.0 15.0 0.0 5.0 25.0 0.0 6060.0 5.0 5880.0 20.0 0.0 60.0 30.0 0.0 10.0 5.0 10045.0 35.0 10045.0 9.0 108.0 15.0 33.0 31260.0 300.0 6.0 12.0 12.0 6027.0 1380.0 9.0 15.0 3.0 18.0 33.0 6.0 15.0 9.0 3.0 0.0 6.0 3636.0 9.0 3636.0 12.0 15.0 249.0 6.0 66.0 9.0 0.0 3.0 15.0 0.0 3636.0 3.0 3528.0 12.0 0.0 36.0 18.0 0.0 6.0 3.0 6027.0 21.0 6027.0 1296.0 180.0 396.0 375120.0 3600.0 72.0 144.0 144.0 72324.0 16560.0 108.0 180.0 36.0 216.0 396.0 72.0 180.0 108.0 36.0 0.0 72.0 43632.0 108.0 43632.0 144.0 180.0 2988.0 72.0 792.0 108.0 0.0 36.0 180.0 0.0 43632.0 36.0 42336.0 144.0 0.0 432.0 216.0 0.0 72.0 36.0 72324.0 252.0 72324.0 25.0 55.0 52100.0 500.0 10.0 20.0 20.0 10045.0 2300.0 15.0 25.0 5.0 30.0 55.0 10.0 25.0 15.0 5.0 0.0 10.0 6060.0 15.0 6060.0 20.0 25.0 415.0 10.0 110.0 15.0 0.0 5.0 25.0 0.0 6060.0 5.0 5880.0 20.0 0.0 60.0 30.0 0.0 10.0 5.0 10045.0 35.0 10045.0 121.0 114620.0 1100.0 22.0 44.0 44.0 22099.0 5060.0 33.0 55.0 ... 110.0 15.0 0.0 5.0 25.0 0.0 6060.0 5.0 5880.0 20.0 0.0 60.0 30.0 0.0 10.0 5.0 10045.0 35.0 10045.0 6889.0 166.0 1826.0 249.0 0.0 83.0 415.0 0.0 100596.0 83.0 97608.0 332.0 0.0 996.0 498.0 0.0 166.0 83.0 166747.0 581.0 166747.0 4.0 44.0 6.0 0.0 2.0 10.0 0.0 2424.0 2.0 2352.0 8.0 0.0 24.0 12.0 0.0 4.0 2.0 4018.0 14.0 4018.0 484.0 66.0 0.0 22.0 110.0 0.0 26664.0 22.0 25872.0 88.0 0.0 264.0 132.0 0.0 44.0 22.0 44198.0 154.0 44198.0 9.0 0.0 3.0 15.0 0.0 3636.0 3.0 3528.0 12.0 0.0 36.0 18.0 0.0 6.0 3.0 6027.0 21.0 6027.0 0.0 0.0 0.0 0.0 0.0 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 5.0 0.0 1212.0 1.0 1176.0 4.0 0.0 12.0 6.0 0.0 2.0 1.0 2009.0 7.0 2009.0 25.0 0.0 6060.0 5.0 5880.0 20.0 0.0 60.0 30.0 0.0 10.0 5.0 10045.0 35.0 10045.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1468944.0 1212.0 1425312.0 4848.0 0.0 14544.0 7272.0 0.0 2424.0 1212.0 2434908.0 8484.0 2434908.0 1.0 1176.0 4.0 0.0 12.0 6.0 0.0 2.0 1.0 2009.0 7.0 2009.0 1382976.0 4704.0 0.0 14112.0 7056.0 0.0 2352.0 1176.0 2362584.0 8232.0 2362584.0 16.0 0.0 48.0 24.0 0.0 8.0 4.0 8036.0 28.0 8036.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 144.0 72.0 0.0 24.0 12.0 24108.0 84.0 24108.0 36.0 0.0 12.0 6.0 12054.0 42.0 12054.0 0.0 0.0 0.0 0.0 0.0 0.0 4.0 2.0 4018.0 14.0 4018.0 1.0 2009.0 7.0 2009.0 4036081.0 14063.0 4036081.0 49.0 14063.0 4036081.0 1162 1.0 0.0 3.0 698.0 2.0 11.0 9170.0 0.0 1.0 4.0 4.0 1965.0 461.0 2.0 2.0 1.0 4.0 4.0 1.0 2.0 2.0 1.0 0.0 1.0 1214.0 3.0 1214.0 4.0 5.0 70.0 1.0 0.0 2.0 0.0 1.0 4.0 0.0 1214.0 4.0 420.0 4.0 0.0 5.0 6.0 0.0 2.0 1.0 1965.0 6.0 1965.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 2094.0 6.0 33.0 27510.0 0.0 3.0 12.0 12.0 5895.0 1383.0 6.0 6.0 3.0 12.0 12.0 3.0 6.0 6.0 3.0 0.0 3.0 3642.0 9.0 3642.0 12.0 15.0 210.0 3.0 0.0 6.0 0.0 3.0 12.0 0.0 3642.0 12.0 1260.0 12.0 0.0 15.0 18.0 0.0 6.0 3.0 5895.0 18.0 5895.0 487204.0 1396.0 7678.0 6400660.0 0.0 698.0 2792.0 2792.0 1371570.0 321778.0 1396.0 1396.0 698.0 2792.0 2792.0 698.0 1396.0 1396.0 698.0 0.0 698.0 847372.0 2094.0 847372.0 2792.0 3490.0 48860.0 698.0 0.0 1396.0 0.0 698.0 2792.0 0.0 847372.0 2792.0 293160.0 2792.0 0.0 3490.0 4188.0 0.0 1396.0 698.0 1371570.0 4188.0 1371570.0 4.0 22.0 18340.0 0.0 2.0 8.0 8.0 3930.0 922.0 4.0 4.0 2.0 8.0 8.0 2.0 4.0 4.0 2.0 0.0 2.0 2428.0 6.0 2428.0 8.0 10.0 140.0 2.0 0.0 4.0 0.0 2.0 8.0 0.0 2428.0 8.0 840.0 8.0 0.0 10.0 12.0 0.0 4.0 2.0 3930.0 12.0 3930.0 121.0 100870.0 0.0 11.0 44.0 44.0 21615.0 5071.0 22.0 22.0 ... 0.0 10.0 0.0 5.0 20.0 0.0 6070.0 20.0 2100.0 20.0 0.0 25.0 30.0 0.0 10.0 5.0 9825.0 30.0 9825.0 4900.0 70.0 0.0 140.0 0.0 70.0 280.0 0.0 84980.0 280.0 29400.0 280.0 0.0 350.0 420.0 0.0 140.0 70.0 137550.0 420.0 137550.0 1.0 0.0 2.0 0.0 1.0 4.0 0.0 1214.0 4.0 420.0 4.0 0.0 5.0 6.0 0.0 2.0 1.0 1965.0 6.0 1965.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 2.0 8.0 0.0 2428.0 8.0 840.0 8.0 0.0 10.0 12.0 0.0 4.0 2.0 3930.0 12.0 3930.0 0.0 0.0 0.0 0.0 0.0 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 1214.0 4.0 420.0 4.0 0.0 5.0 6.0 0.0 2.0 1.0 1965.0 6.0 1965.0 16.0 0.0 4856.0 16.0 1680.0 16.0 0.0 20.0 24.0 0.0 8.0 4.0 7860.0 24.0 7860.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1473796.0 4856.0 509880.0 4856.0 0.0 6070.0 7284.0 0.0 2428.0 1214.0 2385510.0 7284.0 2385510.0 16.0 1680.0 16.0 0.0 20.0 24.0 0.0 8.0 4.0 7860.0 24.0 7860.0 176400.0 1680.0 0.0 2100.0 2520.0 0.0 840.0 420.0 825300.0 2520.0 825300.0 16.0 0.0 20.0 24.0 0.0 8.0 4.0 7860.0 24.0 7860.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 25.0 30.0 0.0 10.0 5.0 9825.0 30.0 9825.0 36.0 0.0 12.0 6.0 11790.0 36.0 11790.0 0.0 0.0 0.0 0.0 0.0 0.0 4.0 2.0 3930.0 12.0 3930.0 1.0 1965.0 6.0 1965.0 3861225.0 11790.0 3861225.0 36.0 11790.0 3861225.0 1163 1.0 0.0 3.0 600.0 5.0 11.0 12735.0 216.0 1.0 4.0 3.0 1972.0 576.0 3.0 2.0 1.0 2.0 4.0 1.0 2.0 3.0 1.0 0.0 1.0 864.0 3.0 864.0 2.0 5.0 0.0 1.0 0.0 2.0 1.0 1.0 3.0 0.0 864.0 0.0 264.0 10.0 0.0 5.0 5.0 0.0 2.0 1.0 1980.0 7.0 1972.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 1800.0 15.0 33.0 38205.0 648.0 3.0 12.0 9.0 5916.0 1728.0 9.0 6.0 3.0 6.0 12.0 3.0 6.0 9.0 3.0 0.0 3.0 2592.0 9.0 2592.0 6.0 15.0 0.0 3.0 0.0 6.0 3.0 3.0 9.0 0.0 2592.0 0.0 792.0 30.0 0.0 15.0 15.0 0.0 6.0 3.0 5940.0 21.0 5916.0 360000.0 3000.0 6600.0 7641000.0 129600.0 600.0 2400.0 1800.0 1183200.0 345600.0 1800.0 1200.0 600.0 1200.0 2400.0 600.0 1200.0 1800.0 600.0 0.0 600.0 518400.0 1800.0 518400.0 1200.0 3000.0 0.0 600.0 0.0 1200.0 600.0 600.0 1800.0 0.0 518400.0 0.0 158400.0 6000.0 0.0 3000.0 3000.0 0.0 1200.0 600.0 1188000.0 4200.0 1183200.0 25.0 55.0 63675.0 1080.0 5.0 20.0 15.0 9860.0 2880.0 15.0 10.0 5.0 10.0 20.0 5.0 10.0 15.0 5.0 0.0 5.0 4320.0 15.0 4320.0 10.0 25.0 0.0 5.0 0.0 10.0 5.0 5.0 15.0 0.0 4320.0 0.0 1320.0 50.0 0.0 25.0 25.0 0.0 10.0 5.0 9900.0 35.0 9860.0 121.0 140085.0 2376.0 11.0 44.0 33.0 21692.0 6336.0 33.0 22.0 ... 0.0 10.0 5.0 5.0 15.0 0.0 4320.0 0.0 1320.0 50.0 0.0 25.0 25.0 0.0 10.0 5.0 9900.0 35.0 9860.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 2.0 1.0 1.0 3.0 0.0 864.0 0.0 264.0 10.0 0.0 5.0 5.0 0.0 2.0 1.0 1980.0 7.0 1972.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 2.0 2.0 6.0 0.0 1728.0 0.0 528.0 20.0 0.0 10.0 10.0 0.0 4.0 2.0 3960.0 14.0 3944.0 1.0 1.0 3.0 0.0 864.0 0.0 264.0 10.0 0.0 5.0 5.0 0.0 2.0 1.0 1980.0 7.0 1972.0 1.0 3.0 0.0 864.0 0.0 264.0 10.0 0.0 5.0 5.0 0.0 2.0 1.0 1980.0 7.0 1972.0 9.0 0.0 2592.0 0.0 792.0 30.0 0.0 15.0 15.0 0.0 6.0 3.0 5940.0 21.0 5916.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 746496.0 0.0 228096.0 8640.0 0.0 4320.0 4320.0 0.0 1728.0 864.0 1710720.0 6048.0 1703808.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 69696.0 2640.0 0.0 1320.0 1320.0 0.0 528.0 264.0 522720.0 1848.0 520608.0 100.0 0.0 50.0 50.0 0.0 20.0 10.0 19800.0 70.0 19720.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 25.0 25.0 0.0 10.0 5.0 9900.0 35.0 9860.0 25.0 0.0 10.0 5.0 9900.0 35.0 9860.0 0.0 0.0 0.0 0.0 0.0 0.0 4.0 2.0 3960.0 14.0 3944.0 1.0 1980.0 7.0 1972.0 3920400.0 13860.0 3904560.0 49.0 13804.0 3888784.0 1164 1.0 10.0 3.0 312.0 5.0 11.0 7800.0 0.0 1.0 1.0 4.0 1964.0 288.0 2.0 2.0 1.0 1.0 5.0 1.0 5.0 3.0 1.0 0.0 1.0 912.0 3.0 912.0 2.0 5.0 66.0 1.0 0.0 2.0 1.0 1.0 4.0 0.0 912.0 3.0 0.0 10.0 0.0 4.0 5.0 0.0 1.0 1.0 1964.0 7.0 1964.0 100.0 30.0 3120.0 50.0 110.0 78000.0 0.0 10.0 10.0 40.0 19640.0 2880.0 20.0 20.0 10.0 10.0 50.0 10.0 50.0 30.0 10.0 0.0 10.0 9120.0 30.0 9120.0 20.0 50.0 660.0 10.0 0.0 20.0 10.0 10.0 40.0 0.0 9120.0 30.0 0.0 100.0 0.0 40.0 50.0 0.0 10.0 10.0 19640.0 70.0 19640.0 9.0 936.0 15.0 33.0 23400.0 0.0 3.0 3.0 12.0 5892.0 864.0 6.0 6.0 3.0 3.0 15.0 3.0 15.0 9.0 3.0 0.0 3.0 2736.0 9.0 2736.0 6.0 15.0 198.0 3.0 0.0 6.0 3.0 3.0 12.0 0.0 2736.0 9.0 0.0 30.0 0.0 12.0 15.0 0.0 3.0 3.0 5892.0 21.0 5892.0 97344.0 1560.0 3432.0 2433600.0 0.0 312.0 312.0 1248.0 612768.0 89856.0 624.0 624.0 312.0 312.0 1560.0 312.0 1560.0 936.0 312.0 0.0 312.0 284544.0 936.0 284544.0 624.0 1560.0 20592.0 312.0 0.0 624.0 312.0 312.0 1248.0 0.0 284544.0 936.0 0.0 3120.0 0.0 1248.0 1560.0 0.0 312.0 312.0 612768.0 2184.0 612768.0 25.0 55.0 39000.0 0.0 5.0 5.0 20.0 9820.0 1440.0 10.0 10.0 5.0 5.0 25.0 5.0 25.0 15.0 5.0 0.0 5.0 4560.0 15.0 4560.0 10.0 25.0 330.0 5.0 0.0 10.0 5.0 5.0 20.0 0.0 4560.0 15.0 0.0 50.0 0.0 20.0 25.0 0.0 5.0 5.0 9820.0 35.0 9820.0 121.0 85800.0 0.0 11.0 11.0 44.0 21604.0 3168.0 22.0 22.0 ... 0.0 10.0 5.0 5.0 20.0 0.0 4560.0 15.0 0.0 50.0 0.0 20.0 25.0 0.0 5.0 5.0 9820.0 35.0 9820.0 4356.0 66.0 0.0 132.0 66.0 66.0 264.0 0.0 60192.0 198.0 0.0 660.0 0.0 264.0 330.0 0.0 66.0 66.0 129624.0 462.0 129624.0 1.0 0.0 2.0 1.0 1.0 4.0 0.0 912.0 3.0 0.0 10.0 0.0 4.0 5.0 0.0 1.0 1.0 1964.0 7.0 1964.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 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 2.0 2.0 8.0 0.0 1824.0 6.0 0.0 20.0 0.0 8.0 10.0 0.0 2.0 2.0 3928.0 14.0 3928.0 1.0 1.0 4.0 0.0 912.0 3.0 0.0 10.0 0.0 4.0 5.0 0.0 1.0 1.0 1964.0 7.0 1964.0 1.0 4.0 0.0 912.0 3.0 0.0 10.0 0.0 4.0 5.0 0.0 1.0 1.0 1964.0 7.0 1964.0 16.0 0.0 3648.0 12.0 0.0 40.0 0.0 16.0 20.0 0.0 4.0 4.0 7856.0 28.0 7856.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 831744.0 2736.0 0.0 9120.0 0.0 3648.0 4560.0 0.0 912.0 912.0 1791168.0 6384.0 1791168.0 9.0 0.0 30.0 0.0 12.0 15.0 0.0 3.0 3.0 5892.0 21.0 5892.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 100.0 0.0 40.0 50.0 0.0 10.0 10.0 19640.0 70.0 19640.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 16.0 20.0 0.0 4.0 4.0 7856.0 28.0 7856.0 25.0 0.0 5.0 5.0 9820.0 35.0 9820.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1964.0 7.0 1964.0 1.0 1964.0 7.0 1964.0 3857296.0 13748.0 3857296.0 49.0 13748.0 3857296.0 1165 1.0 2.0 3.0 477.0 5.0 11.0 12615.0 0.0 1.0 4.0 4.0 1950.0 576.0 4.0 2.0 1.0 4.0 6.0 2.0 5.0 3.0 1.0 1.0 2.0 2158.0 4.0 2158.0 2.0 5.0 84.0 3.0 29.0 2.0 0.0 1.0 5.0 0.0 1202.0 4.0 725.0 4.0 0.0 8.0 7.0 0.0 2.0 4.0 1950.0 6.0 2001.0 4.0 6.0 954.0 10.0 22.0 25230.0 0.0 2.0 8.0 8.0 3900.0 1152.0 8.0 4.0 2.0 8.0 12.0 4.0 10.0 6.0 2.0 2.0 4.0 4316.0 8.0 4316.0 4.0 10.0 168.0 6.0 58.0 4.0 0.0 2.0 10.0 0.0 2404.0 8.0 1450.0 8.0 0.0 16.0 14.0 0.0 4.0 8.0 3900.0 12.0 4002.0 9.0 1431.0 15.0 33.0 37845.0 0.0 3.0 12.0 12.0 5850.0 1728.0 12.0 6.0 3.0 12.0 18.0 6.0 15.0 9.0 3.0 3.0 6.0 6474.0 12.0 6474.0 6.0 15.0 252.0 9.0 87.0 6.0 0.0 3.0 15.0 0.0 3606.0 12.0 2175.0 12.0 0.0 24.0 21.0 0.0 6.0 12.0 5850.0 18.0 6003.0 227529.0 2385.0 5247.0 6017355.0 0.0 477.0 1908.0 1908.0 930150.0 274752.0 1908.0 954.0 477.0 1908.0 2862.0 954.0 2385.0 1431.0 477.0 477.0 954.0 1029366.0 1908.0 1029366.0 954.0 2385.0 40068.0 1431.0 13833.0 954.0 0.0 477.0 2385.0 0.0 573354.0 1908.0 345825.0 1908.0 0.0 3816.0 3339.0 0.0 954.0 1908.0 930150.0 2862.0 954477.0 25.0 55.0 63075.0 0.0 5.0 20.0 20.0 9750.0 2880.0 20.0 10.0 5.0 20.0 30.0 10.0 25.0 15.0 5.0 5.0 10.0 10790.0 20.0 10790.0 10.0 25.0 420.0 15.0 145.0 10.0 0.0 5.0 25.0 0.0 6010.0 20.0 3625.0 20.0 0.0 40.0 35.0 0.0 10.0 20.0 9750.0 30.0 10005.0 121.0 138765.0 0.0 11.0 44.0 44.0 21450.0 6336.0 44.0 22.0 ... 145.0 10.0 0.0 5.0 25.0 0.0 6010.0 20.0 3625.0 20.0 0.0 40.0 35.0 0.0 10.0 20.0 9750.0 30.0 10005.0 7056.0 252.0 2436.0 168.0 0.0 84.0 420.0 0.0 100968.0 336.0 60900.0 336.0 0.0 672.0 588.0 0.0 168.0 336.0 163800.0 504.0 168084.0 9.0 87.0 6.0 0.0 3.0 15.0 0.0 3606.0 12.0 2175.0 12.0 0.0 24.0 21.0 0.0 6.0 12.0 5850.0 18.0 6003.0 841.0 58.0 0.0 29.0 145.0 0.0 34858.0 116.0 21025.0 116.0 0.0 232.0 203.0 0.0 58.0 116.0 56550.0 174.0 58029.0 4.0 0.0 2.0 10.0 0.0 2404.0 8.0 1450.0 8.0 0.0 16.0 14.0 0.0 4.0 8.0 3900.0 12.0 4002.0 0.0 0.0 0.0 0.0 0.0 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 5.0 0.0 1202.0 4.0 725.0 4.0 0.0 8.0 7.0 0.0 2.0 4.0 1950.0 6.0 2001.0 25.0 0.0 6010.0 20.0 3625.0 20.0 0.0 40.0 35.0 0.0 10.0 20.0 9750.0 30.0 10005.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1444804.0 4808.0 871450.0 4808.0 0.0 9616.0 8414.0 0.0 2404.0 4808.0 2343900.0 7212.0 2405202.0 16.0 2900.0 16.0 0.0 32.0 28.0 0.0 8.0 16.0 7800.0 24.0 8004.0 525625.0 2900.0 0.0 5800.0 5075.0 0.0 1450.0 2900.0 1413750.0 4350.0 1450725.0 16.0 0.0 32.0 28.0 0.0 8.0 16.0 7800.0 24.0 8004.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 64.0 56.0 0.0 16.0 32.0 15600.0 48.0 16008.0 49.0 0.0 14.0 28.0 13650.0 42.0 14007.0 0.0 0.0 0.0 0.0 0.0 0.0 4.0 8.0 3900.0 12.0 4002.0 16.0 7800.0 24.0 8004.0 3802500.0 11700.0 3901950.0 36.0 12006.0 4004001.0
1166 rows × 1275 columns
X_train_new = X_train. copy( )
pf = PolynomialFeatures( include_bias= False )
for index_1, col_1 in enumerate ( X_train. columns) :
for index_2, col_2 in enumerate ( X_train. columns) :
if index_1 >= index_2:
continue
col_corr = max ( corr_last_list[ col_1] , corr_last_list[ col_2] )
pd_df = pd. concat( [ pd. DataFrame( pf. fit_transform( X_train. loc[ : , [ col_1, col_2] ] ) ) , y_train] , axis= 1 )
a = ( ( pd_df. corr( ) . iloc[ : , - 1 ] - col_corr) > 0 ) . value_counts( )
if a[ True ] > 1 :
index_3 = ( pd_df. corr( ) . iloc[ 0 : - 1 , - 1 ] ) [ ( pd_df. corr( ) . iloc[ 0 : - 1 , - 1 ] ) . values == max ( ( pd_df. corr( ) . iloc[ 0 : - 1 , - 1 ] ) ) ] . index
X_train_new[ col_1 + 'PnFt' + col_2] = pd_df. iloc[ : , index_3[ 0 ] ]
X_train_new
MoSold MSZoning BsmtFinSF1 GarageCond MSSubClass LotArea WoodDeckSF GarageFinish SaleCondition SaleType YearBuilt GarageArea BedroomAbvGr Foundation CentralAir BsmtFinType1 Exterior1st FullBath GarageType GarageQual ExterQual Fireplaces KitchenQual 1stFlrSF BsmtCond GrLivArea HeatingQC HouseStyle LotFrontage BsmtExposure OpenPorchSF BsmtQual LotShape MasVnrType OverallQual MasVnrArea TotalBsmtSF YrSold BsmtUnfSF Neighborhood 2ndFlrSF Exterior2nd TotRmsAbvGrd ScreenPorch GarageCars FireplaceQu GarageYrBlt OverallCond YearRemodAdd 0 1 4 0 5 14 10574 160 2 4 4 2005 1043 3 5 1 5 11 2 5 3 2 1 2 1082 3 1953 4 6 85.0 2 50 3 0 1 7 0.0 1082 2 1082 19 871 12 9 0 3 4 2005.0 7 2006 1 7 3 0 2 6 10410 0 1 4 4 1916 180 3 2 1 5 8 2 2 2 1 0 1 808 3 1656 4 2 60.0 1 0 1 0 1 4 0.0 660 2 660 5 70