├── .gitignore ├── all ├── test.csv.gz ├── train.csv.gz ├── sample_submission.csv.gz ├── data_description.txt └── sample_submission.csv ├── README.md ├── utils.py └── predict-house-prices.ipynb /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | .ipynb_checkpoints 3 | .DS_store 4 | .idea -------------------------------------------------------------------------------- /all/test.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/L1aoXingyu/kaggle-house-price/HEAD/all/test.csv.gz -------------------------------------------------------------------------------- /all/train.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/L1aoXingyu/kaggle-house-price/HEAD/all/train.csv.gz -------------------------------------------------------------------------------- /all/sample_submission.csv.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/L1aoXingyu/kaggle-house-price/HEAD/all/sample_submission.csv.gz -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # kaggle 房价预测比赛 2 | 3 | ## 项目介绍 4 | 5 | 在这个项目中,我们给定一个一层神经网络的baseline以及一些帮助函数,大家可以自由建立任意的神经网络来对[kaggle房价预测](https://www.kaggle.com/c/house-prices-advanced-regression-techniques)的比赛进行预测,通过该项目,我们能够对神经网络以及调参有一个更加全面的了解。 6 | 7 | ## 项目下载 8 | 9 | 打开终端,运行 10 | ```bash 11 | git clone https://github.com/L1aoXingyu/kaggle-house-price.git 12 | ``` 13 | 能够自动下载项目,或者网页直接下载 14 | 15 |
16 | 17 |
18 | 19 | 通过上面的过程,我们准备好了项目,在开始之前,需要根据 [StartKit](https://github.com/sharedeeply/DeepLearning-StartKit) 配置好了深度学习环境,所以请按照操作完成深度学习环境的配置,当你完成好环境配置之后,你可以直接进入 `predict-house-prices.ipynb` 完成项目。 20 | 21 | ## 数据下载 22 | 我们已经将数据集放在了项目中,大家根据上面下载好项目之后,便能在`all`中看到所有的数据集。 23 | 24 | ## 评估与提交 25 | 26 | 通过`predict-house-prices.ipynb`,你会建立一个模型进行房价的预测,同时在测试集上能够看到模型的效果,最后可以得到一个最优的模型,并在 testset 上面运行结果,在 kaggle 的[提交页面](https://www.kaggle.com/c/house-prices-advanced-regression-techniques)上面按照下面的步骤提交。 27 | 28 | 1. 点击提交结果 29 | 30 |
31 | 32 |
33 | 34 | 2. 提交本地生成的文件 35 | 36 |
37 | 38 |
39 | 40 | 3. 提交结果 41 | 42 |
43 | 44 |
45 | 46 | 4. 查看结果 47 | 48 |
49 | 50 |
51 | 52 | 可以考虑在 Github 上为该项目创建一个仓库,记录训练的过程、所使用的库以及数据等的 README 文档,构建一个完善的 Github 简历。 53 | -------------------------------------------------------------------------------- /utils.py: -------------------------------------------------------------------------------- 1 | # encoding: utf-8 2 | """ 3 | @author: sherlock 4 | @contact: sherlockliao01@gmail.com 5 | """ 6 | 7 | from __future__ import absolute_import 8 | from __future__ import division 9 | from __future__ import print_function 10 | from __future__ import unicode_literals 11 | 12 | from collections import defaultdict 13 | 14 | import numpy as np 15 | import matplotlib.pyplot as plt 16 | import pandas as pd 17 | import torch 18 | from torch import nn 19 | from torch.utils.data import DataLoader 20 | from torch.utils.data import TensorDataset 21 | 22 | 23 | def get_data(x, y, batch_size, shuffle): 24 | dataset = TensorDataset(x, y) 25 | return DataLoader(dataset, batch_size, shuffle=shuffle, num_workers=4) 26 | 27 | 28 | def train_model(model, x_train, y_train, x_valid, y_valid, epochs, batch_size, lr, weight_decay, use_gpu): 29 | if use_gpu: 30 | model = model.cuda() 31 | metric_log = defaultdict(list) 32 | 33 | train_data = get_data(x_train, y_train, batch_size, True) 34 | if x_valid is not None: 35 | valid_data = get_data(x_valid, y_valid, batch_size, False) 36 | else: 37 | valid_data = None 38 | 39 | optimizer = torch.optim.Adam(model.parameters(), lr=lr, weight_decay=weight_decay) 40 | criterion = nn.MSELoss() 41 | 42 | for e in range(epochs): 43 | # 训练模型 44 | model.train() 45 | for data in train_data: 46 | x, y = data 47 | if use_gpu: 48 | x = x.cuda() 49 | y = y.cuda() 50 | # forward 51 | out = model(x) 52 | loss = criterion(out, y) 53 | # backward 54 | optimizer.zero_grad() 55 | loss.backward() 56 | optimizer.step() 57 | 58 | metric_log['train_rmse'].append(get_rmse(model, x_train, y_train, use_gpu)) 59 | 60 | # 测试模型 61 | if x_valid is not None: 62 | metric_log['valid_rmse'].append(get_rmse(model, x_valid, y_valid, use_gpu)) 63 | print_str = 'epoch: {}, train rmse: {:.3f}, valid rmse: {:.3f}' \ 64 | .format(e + 1, metric_log['train_rmse'][-1], metric_log['valid_rmse'][-1]) 65 | else: 66 | print_str = 'epoch: {}, train rmse: {:.3f}'.format(e + 1, metric_log['train_rmse'][-1]) 67 | if (e + 1) % 10 == 0: 68 | print(print_str) 69 | print() 70 | 71 | # 可视化 72 | figsize = (10, 5) 73 | fig = plt.figure(figsize=figsize) 74 | plt.plot(metric_log['train_rmse'], color='red', label='train') 75 | if valid_data is not None: 76 | plt.plot(metric_log['valid_rmse'], color='blue', label='valid') 77 | plt.legend(loc='best') 78 | plt.xlabel('epochs') 79 | plt.ylabel('loss') 80 | plt.show() 81 | 82 | 83 | def get_rmse(model, feature, label, use_gpu): 84 | if use_gpu: 85 | feature = feature.cuda() 86 | label = label.cuda() 87 | model.eval() 88 | mse_loss = nn.MSELoss() 89 | with torch.no_grad(): 90 | pred = model(feature) 91 | # clipped_pred = pred.clamp(1, float('inf')) 92 | rmse = (mse_loss(pred, label)).sqrt() 93 | return rmse.item() 94 | 95 | 96 | def pred(net, test_data, test_features): 97 | net = net.eval() 98 | net = net.cpu() 99 | with torch.no_grad(): 100 | preds = net(test_features) 101 | preds = np.exp(preds.numpy()) 102 | test_data['SalePrice'] = pd.Series(preds.reshape(1, -1)[0]) 103 | submission = pd.concat([test_data['Id'], test_data['SalePrice']], axis=1) 104 | submission.to_csv('submission.csv', index=False) 105 | -------------------------------------------------------------------------------- /all/data_description.txt: -------------------------------------------------------------------------------- 1 | MSSubClass: Identifies the type of dwelling involved in the sale. 2 | 3 | 20 1-STORY 1946 & NEWER ALL STYLES 4 | 30 1-STORY 1945 & OLDER 5 | 40 1-STORY W/FINISHED ATTIC ALL AGES 6 | 45 1-1/2 STORY - UNFINISHED ALL AGES 7 | 50 1-1/2 STORY FINISHED ALL AGES 8 | 60 2-STORY 1946 & NEWER 9 | 70 2-STORY 1945 & OLDER 10 | 75 2-1/2 STORY ALL AGES 11 | 80 SPLIT OR MULTI-LEVEL 12 | 85 SPLIT FOYER 13 | 90 DUPLEX - ALL STYLES AND AGES 14 | 120 1-STORY PUD (Planned Unit Development) - 1946 & NEWER 15 | 150 1-1/2 STORY PUD - ALL AGES 16 | 160 2-STORY PUD - 1946 & NEWER 17 | 180 PUD - MULTILEVEL - INCL SPLIT LEV/FOYER 18 | 190 2 FAMILY CONVERSION - ALL STYLES AND AGES 19 | 20 | MSZoning: Identifies the general zoning classification of the sale. 21 | 22 | A Agriculture 23 | C Commercial 24 | FV Floating Village Residential 25 | I Industrial 26 | RH Residential High Density 27 | RL Residential Low Density 28 | RP Residential Low Density Park 29 | RM Residential Medium Density 30 | 31 | LotFrontage: Linear feet of street connected to property 32 | 33 | LotArea: Lot size in square feet 34 | 35 | Street: Type of road access to property 36 | 37 | Grvl Gravel 38 | Pave Paved 39 | 40 | Alley: Type of alley access to property 41 | 42 | Grvl Gravel 43 | Pave Paved 44 | NA No alley access 45 | 46 | LotShape: General shape of property 47 | 48 | Reg Regular 49 | IR1 Slightly irregular 50 | IR2 Moderately Irregular 51 | IR3 Irregular 52 | 53 | LandContour: Flatness of the property 54 | 55 | Lvl Near Flat/Level 56 | Bnk Banked - Quick and significant rise from street grade to building 57 | HLS Hillside - Significant slope from side to side 58 | Low Depression 59 | 60 | Utilities: Type of utilities available 61 | 62 | AllPub All public Utilities (E,G,W,& S) 63 | NoSewr Electricity, Gas, and Water (Septic Tank) 64 | NoSeWa Electricity and Gas Only 65 | ELO Electricity only 66 | 67 | LotConfig: Lot configuration 68 | 69 | Inside Inside lot 70 | Corner Corner lot 71 | CulDSac Cul-de-sac 72 | FR2 Frontage on 2 sides of property 73 | FR3 Frontage on 3 sides of property 74 | 75 | LandSlope: Slope of property 76 | 77 | Gtl Gentle slope 78 | Mod Moderate Slope 79 | Sev Severe Slope 80 | 81 | Neighborhood: Physical locations within Ames city limits 82 | 83 | Blmngtn Bloomington Heights 84 | Blueste Bluestem 85 | BrDale Briardale 86 | BrkSide Brookside 87 | ClearCr Clear Creek 88 | CollgCr College Creek 89 | Crawfor Crawford 90 | Edwards Edwards 91 | Gilbert Gilbert 92 | IDOTRR Iowa DOT and Rail Road 93 | MeadowV Meadow Village 94 | Mitchel Mitchell 95 | Names North Ames 96 | NoRidge Northridge 97 | NPkVill Northpark Villa 98 | NridgHt Northridge Heights 99 | NWAmes Northwest Ames 100 | OldTown Old Town 101 | SWISU South & West of Iowa State University 102 | Sawyer Sawyer 103 | SawyerW Sawyer West 104 | Somerst Somerset 105 | StoneBr Stone Brook 106 | Timber Timberland 107 | Veenker Veenker 108 | 109 | Condition1: Proximity to various conditions 110 | 111 | Artery Adjacent to arterial street 112 | Feedr Adjacent to feeder street 113 | Norm Normal 114 | RRNn Within 200' of North-South Railroad 115 | RRAn Adjacent to North-South Railroad 116 | PosN Near positive off-site feature--park, greenbelt, etc. 117 | PosA Adjacent to postive off-site feature 118 | RRNe Within 200' of East-West Railroad 119 | RRAe Adjacent to East-West Railroad 120 | 121 | Condition2: Proximity to various conditions (if more than one is present) 122 | 123 | Artery Adjacent to arterial street 124 | Feedr Adjacent to feeder street 125 | Norm Normal 126 | RRNn Within 200' of North-South Railroad 127 | RRAn Adjacent to North-South Railroad 128 | PosN Near positive off-site feature--park, greenbelt, etc. 129 | PosA Adjacent to postive off-site feature 130 | RRNe Within 200' of East-West Railroad 131 | RRAe Adjacent to East-West Railroad 132 | 133 | BldgType: Type of dwelling 134 | 135 | 1Fam Single-family Detached 136 | 2FmCon Two-family Conversion; originally built as one-family dwelling 137 | Duplx Duplex 138 | TwnhsE Townhouse End Unit 139 | TwnhsI Townhouse Inside Unit 140 | 141 | HouseStyle: Style of dwelling 142 | 143 | 1Story One story 144 | 1.5Fin One and one-half story: 2nd level finished 145 | 1.5Unf One and one-half story: 2nd level unfinished 146 | 2Story Two story 147 | 2.5Fin Two and one-half story: 2nd level finished 148 | 2.5Unf Two and one-half story: 2nd level unfinished 149 | SFoyer Split Foyer 150 | SLvl Split Level 151 | 152 | OverallQual: Rates the overall material and finish of the house 153 | 154 | 10 Very Excellent 155 | 9 Excellent 156 | 8 Very Good 157 | 7 Good 158 | 6 Above Average 159 | 5 Average 160 | 4 Below Average 161 | 3 Fair 162 | 2 Poor 163 | 1 Very Poor 164 | 165 | OverallCond: Rates the overall condition of the house 166 | 167 | 10 Very Excellent 168 | 9 Excellent 169 | 8 Very Good 170 | 7 Good 171 | 6 Above Average 172 | 5 Average 173 | 4 Below Average 174 | 3 Fair 175 | 2 Poor 176 | 1 Very Poor 177 | 178 | YearBuilt: Original construction date 179 | 180 | YearRemodAdd: Remodel date (same as construction date if no remodeling or additions) 181 | 182 | RoofStyle: Type of roof 183 | 184 | Flat Flat 185 | Gable Gable 186 | Gambrel Gabrel (Barn) 187 | Hip Hip 188 | Mansard Mansard 189 | Shed Shed 190 | 191 | RoofMatl: Roof material 192 | 193 | ClyTile Clay or Tile 194 | CompShg Standard (Composite) Shingle 195 | Membran Membrane 196 | Metal Metal 197 | Roll Roll 198 | Tar&Grv Gravel & Tar 199 | WdShake Wood Shakes 200 | WdShngl Wood Shingles 201 | 202 | Exterior1st: Exterior covering on house 203 | 204 | AsbShng Asbestos Shingles 205 | AsphShn Asphalt Shingles 206 | BrkComm Brick Common 207 | BrkFace Brick Face 208 | CBlock Cinder Block 209 | CemntBd Cement Board 210 | HdBoard Hard Board 211 | ImStucc Imitation Stucco 212 | MetalSd Metal Siding 213 | Other Other 214 | Plywood Plywood 215 | PreCast PreCast 216 | Stone Stone 217 | Stucco Stucco 218 | VinylSd Vinyl Siding 219 | Wd Sdng Wood Siding 220 | WdShing Wood Shingles 221 | 222 | Exterior2nd: Exterior covering on house (if more than one material) 223 | 224 | AsbShng Asbestos Shingles 225 | AsphShn Asphalt Shingles 226 | BrkComm Brick Common 227 | BrkFace Brick Face 228 | CBlock Cinder Block 229 | CemntBd Cement Board 230 | HdBoard Hard Board 231 | ImStucc Imitation Stucco 232 | MetalSd Metal Siding 233 | Other Other 234 | Plywood Plywood 235 | PreCast PreCast 236 | Stone Stone 237 | Stucco Stucco 238 | VinylSd Vinyl Siding 239 | Wd Sdng Wood Siding 240 | WdShing Wood Shingles 241 | 242 | MasVnrType: Masonry veneer type 243 | 244 | BrkCmn Brick Common 245 | BrkFace Brick Face 246 | CBlock Cinder Block 247 | None None 248 | Stone Stone 249 | 250 | MasVnrArea: Masonry veneer area in square feet 251 | 252 | ExterQual: Evaluates the quality of the material on the exterior 253 | 254 | Ex Excellent 255 | Gd Good 256 | TA Average/Typical 257 | Fa Fair 258 | Po Poor 259 | 260 | ExterCond: Evaluates the present condition of the material on the exterior 261 | 262 | Ex Excellent 263 | Gd Good 264 | TA Average/Typical 265 | Fa Fair 266 | Po Poor 267 | 268 | Foundation: Type of foundation 269 | 270 | BrkTil Brick & Tile 271 | CBlock Cinder Block 272 | PConc Poured Contrete 273 | Slab Slab 274 | Stone Stone 275 | Wood Wood 276 | 277 | BsmtQual: Evaluates the height of the basement 278 | 279 | Ex Excellent (100+ inches) 280 | Gd Good (90-99 inches) 281 | TA Typical (80-89 inches) 282 | Fa Fair (70-79 inches) 283 | Po Poor (<70 inches 284 | NA No Basement 285 | 286 | BsmtCond: Evaluates the general condition of the basement 287 | 288 | Ex Excellent 289 | Gd Good 290 | TA Typical - slight dampness allowed 291 | Fa Fair - dampness or some cracking or settling 292 | Po Poor - Severe cracking, settling, or wetness 293 | NA No Basement 294 | 295 | BsmtExposure: Refers to walkout or garden level walls 296 | 297 | Gd Good Exposure 298 | Av Average Exposure (split levels or foyers typically score average or above) 299 | Mn Mimimum Exposure 300 | No No Exposure 301 | NA No Basement 302 | 303 | BsmtFinType1: Rating of basement finished area 304 | 305 | GLQ Good Living Quarters 306 | ALQ Average Living Quarters 307 | BLQ Below Average Living Quarters 308 | Rec Average Rec Room 309 | LwQ Low Quality 310 | Unf Unfinshed 311 | NA No Basement 312 | 313 | BsmtFinSF1: Type 1 finished square feet 314 | 315 | BsmtFinType2: Rating of basement finished area (if multiple types) 316 | 317 | GLQ Good Living Quarters 318 | ALQ Average Living Quarters 319 | BLQ Below Average Living Quarters 320 | Rec Average Rec Room 321 | LwQ Low Quality 322 | Unf Unfinshed 323 | NA No Basement 324 | 325 | BsmtFinSF2: Type 2 finished square feet 326 | 327 | BsmtUnfSF: Unfinished square feet of basement area 328 | 329 | TotalBsmtSF: Total square feet of basement area 330 | 331 | Heating: Type of heating 332 | 333 | Floor Floor Furnace 334 | GasA Gas forced warm air furnace 335 | GasW Gas hot water or steam heat 336 | Grav Gravity furnace 337 | OthW Hot water or steam heat other than gas 338 | Wall Wall furnace 339 | 340 | HeatingQC: Heating quality and condition 341 | 342 | Ex Excellent 343 | Gd Good 344 | TA Average/Typical 345 | Fa Fair 346 | Po Poor 347 | 348 | CentralAir: Central air conditioning 349 | 350 | N No 351 | Y Yes 352 | 353 | Electrical: Electrical system 354 | 355 | SBrkr Standard Circuit Breakers & Romex 356 | FuseA Fuse Box over 60 AMP and all Romex wiring (Average) 357 | FuseF 60 AMP Fuse Box and mostly Romex wiring (Fair) 358 | FuseP 60 AMP Fuse Box and mostly knob & tube wiring (poor) 359 | Mix Mixed 360 | 361 | 1stFlrSF: First Floor square feet 362 | 363 | 2ndFlrSF: Second floor square feet 364 | 365 | LowQualFinSF: Low quality finished square feet (all floors) 366 | 367 | GrLivArea: Above grade (ground) living area square feet 368 | 369 | BsmtFullBath: Basement full bathrooms 370 | 371 | BsmtHalfBath: Basement half bathrooms 372 | 373 | FullBath: Full bathrooms above grade 374 | 375 | HalfBath: Half baths above grade 376 | 377 | Bedroom: Bedrooms above grade (does NOT include basement bedrooms) 378 | 379 | Kitchen: Kitchens above grade 380 | 381 | KitchenQual: Kitchen quality 382 | 383 | Ex Excellent 384 | Gd Good 385 | TA Typical/Average 386 | Fa Fair 387 | Po Poor 388 | 389 | TotRmsAbvGrd: Total rooms above grade (does not include bathrooms) 390 | 391 | Functional: Home functionality (Assume typical unless deductions are warranted) 392 | 393 | Typ Typical Functionality 394 | Min1 Minor Deductions 1 395 | Min2 Minor Deductions 2 396 | Mod Moderate Deductions 397 | Maj1 Major Deductions 1 398 | Maj2 Major Deductions 2 399 | Sev Severely Damaged 400 | Sal Salvage only 401 | 402 | Fireplaces: Number of fireplaces 403 | 404 | FireplaceQu: Fireplace quality 405 | 406 | Ex Excellent - Exceptional Masonry Fireplace 407 | Gd Good - Masonry Fireplace in main level 408 | TA Average - Prefabricated Fireplace in main living area or Masonry Fireplace in basement 409 | Fa Fair - Prefabricated Fireplace in basement 410 | Po Poor - Ben Franklin Stove 411 | NA No Fireplace 412 | 413 | GarageType: Garage location 414 | 415 | 2Types More than one type of garage 416 | Attchd Attached to home 417 | Basment Basement Garage 418 | BuiltIn Built-In (Garage part of house - typically has room above garage) 419 | CarPort Car Port 420 | Detchd Detached from home 421 | NA No Garage 422 | 423 | GarageYrBlt: Year garage was built 424 | 425 | GarageFinish: Interior finish of the garage 426 | 427 | Fin Finished 428 | RFn Rough Finished 429 | Unf Unfinished 430 | NA No Garage 431 | 432 | GarageCars: Size of garage in car capacity 433 | 434 | GarageArea: Size of garage in square feet 435 | 436 | GarageQual: Garage quality 437 | 438 | Ex Excellent 439 | Gd Good 440 | TA Typical/Average 441 | Fa Fair 442 | Po Poor 443 | NA No Garage 444 | 445 | GarageCond: Garage condition 446 | 447 | Ex Excellent 448 | Gd Good 449 | TA Typical/Average 450 | Fa Fair 451 | Po Poor 452 | NA No Garage 453 | 454 | PavedDrive: Paved driveway 455 | 456 | Y Paved 457 | P Partial Pavement 458 | N Dirt/Gravel 459 | 460 | WoodDeckSF: Wood deck area in square feet 461 | 462 | OpenPorchSF: Open porch area in square feet 463 | 464 | EnclosedPorch: Enclosed porch area in square feet 465 | 466 | 3SsnPorch: Three season porch area in square feet 467 | 468 | ScreenPorch: Screen porch area in square feet 469 | 470 | PoolArea: Pool area in square feet 471 | 472 | PoolQC: Pool quality 473 | 474 | Ex Excellent 475 | Gd Good 476 | TA Average/Typical 477 | Fa Fair 478 | NA No Pool 479 | 480 | Fence: Fence quality 481 | 482 | GdPrv Good Privacy 483 | MnPrv Minimum Privacy 484 | GdWo Good Wood 485 | MnWw Minimum Wood/Wire 486 | NA No Fence 487 | 488 | MiscFeature: Miscellaneous feature not covered in other categories 489 | 490 | Elev Elevator 491 | Gar2 2nd Garage (if not described in garage section) 492 | Othr Other 493 | Shed Shed (over 100 SF) 494 | TenC Tennis Court 495 | NA None 496 | 497 | MiscVal: $Value of miscellaneous feature 498 | 499 | MoSold: Month Sold (MM) 500 | 501 | YrSold: Year Sold (YYYY) 502 | 503 | SaleType: Type of sale 504 | 505 | WD Warranty Deed - Conventional 506 | CWD Warranty Deed - Cash 507 | VWD Warranty Deed - VA Loan 508 | New Home just constructed and sold 509 | COD Court Officer Deed/Estate 510 | Con Contract 15% Down payment regular terms 511 | ConLw Contract Low Down payment and low interest 512 | ConLI Contract Low Interest 513 | ConLD Contract Low Down 514 | Oth Other 515 | 516 | SaleCondition: Condition of sale 517 | 518 | Normal Normal Sale 519 | Abnorml Abnormal Sale - trade, foreclosure, short sale 520 | AdjLand Adjoining Land Purchase 521 | Alloca Allocation - two linked properties with separate deeds, typically condo with a garage unit 522 | Family Sale between family members 523 | Partial Home was not completed when last assessed (associated with New Homes) 524 | -------------------------------------------------------------------------------- /all/sample_submission.csv: -------------------------------------------------------------------------------- 1 | Id,SalePrice 2 | 1461,169277.0524984 3 | 1462,187758.393988768 4 | 1463,183583.683569555 5 | 1464,179317.47751083 6 | 1465,150730.079976501 7 | 1466,177150.989247307 8 | 1467,172070.659229164 9 | 1468,175110.956519547 10 | 1469,162011.698831665 11 | 1470,160726.247831419 12 | 1471,157933.279456005 13 | 1472,145291.245020389 14 | 1473,159672.017631819 15 | 1474,164167.518301885 16 | 1475,150891.638244053 17 | 1476,179460.96518734 18 | 1477,185034.62891405 19 | 1478,182352.192644656 20 | 1479,183053.458213802 21 | 1480,187823.339254278 22 | 1481,186544.114327568 23 | 1482,158230.77520516 24 | 1483,190552.829321091 25 | 1484,147183.67487199 26 | 1485,185855.300905493 27 | 1486,174350.470676986 28 | 1487,201740.620690863 29 | 1488,162986.378895754 30 | 1489,162330.199085679 31 | 1490,165845.938616539 32 | 1491,180929.622876974 33 | 1492,163481.501519718 34 | 1493,187798.076714233 35 | 1494,198822.198942566 36 | 1495,194868.409899858 37 | 1496,152605.298564403 38 | 1497,147797.702836811 39 | 1498,150521.96899297 40 | 1499,146991.630153739 41 | 1500,150306.307814534 42 | 1501,151164.372534604 43 | 1502,151133.706960953 44 | 1503,156214.042540726 45 | 1504,171992.760735142 46 | 1505,173214.912549738 47 | 1506,192429.187345783 48 | 1507,190878.69508543 49 | 1508,194542.544135519 50 | 1509,191849.439072822 51 | 1510,176363.773907793 52 | 1511,176954.185412429 53 | 1512,176521.216975696 54 | 1513,179436.704810176 55 | 1514,220079.756777048 56 | 1515,175502.918109444 57 | 1516,188321.073833569 58 | 1517,163276.324450004 59 | 1518,185911.366293097 60 | 1519,171392.830997252 61 | 1520,174418.207020775 62 | 1521,179682.709603774 63 | 1522,179423.751581665 64 | 1523,171756.918091777 65 | 1524,166849.638174419 66 | 1525,181122.168676666 67 | 1526,170934.462746566 68 | 1527,159738.292580329 69 | 1528,174445.759557658 70 | 1529,174706.363659627 71 | 1530,164507.672539365 72 | 1531,163602.512172832 73 | 1532,154126.270249525 74 | 1533,171104.853481351 75 | 1534,167735.39270528 76 | 1535,183003.613338104 77 | 1536,172580.381161499 78 | 1537,165407.889104689 79 | 1538,176363.773907793 80 | 1539,175182.950898522 81 | 1540,190757.177789246 82 | 1541,167186.995771991 83 | 1542,167839.376779276 84 | 1543,173912.421165137 85 | 1544,154034.917445551 86 | 1545,156002.955794336 87 | 1546,168173.94329857 88 | 1547,168882.437104132 89 | 1548,168173.94329857 90 | 1549,157580.177551642 91 | 1550,181922.15256011 92 | 1551,155134.227842592 93 | 1552,188885.573319552 94 | 1553,183963.193012381 95 | 1554,161298.762306335 96 | 1555,188613.66763056 97 | 1556,175080.111822945 98 | 1557,174744.400305232 99 | 1558,168175.911336919 100 | 1559,182333.472575006 101 | 1560,158307.206742274 102 | 1561,193053.055502348 103 | 1562,175031.089987177 104 | 1563,160713.294602908 105 | 1564,173186.215014436 106 | 1565,191736.7598055 107 | 1566,170401.630997116 108 | 1567,164626.577880222 109 | 1568,205469.409444832 110 | 1569,209561.784211885 111 | 1570,182271.503072356 112 | 1571,178081.549427793 113 | 1572,178425.956138831 114 | 1573,162015.318511503 115 | 1574,181722.420373045 116 | 1575,156705.730169433 117 | 1576,182902.420342386 118 | 1577,157574.595395085 119 | 1578,184380.739100813 120 | 1579,169364.469225677 121 | 1580,175846.179822063 122 | 1581,189673.295302136 123 | 1582,174401.317715566 124 | 1583,179021.448718583 125 | 1584,189196.845337149 126 | 1585,139647.095720655 127 | 1586,161468.198288911 128 | 1587,171557.32317862 129 | 1588,179447.36804185 130 | 1589,169611.619017694 131 | 1590,172088.872655744 132 | 1591,171190.624128768 133 | 1592,154850.508361878 134 | 1593,158617.655719941 135 | 1594,209258.33693701 136 | 1595,177939.027626751 137 | 1596,194631.100299584 138 | 1597,213618.871562568 139 | 1598,198342.504228533 140 | 1599,138607.971472497 141 | 1600,150778.958976731 142 | 1601,146966.230339786 143 | 1602,162182.59620952 144 | 1603,176825.940961269 145 | 1604,152799.812402444 146 | 1605,180322.322067129 147 | 1606,177508.027228367 148 | 1607,208029.642652019 149 | 1608,181987.282510201 150 | 1609,160172.72797397 151 | 1610,176761.317654248 152 | 1611,176515.497545231 153 | 1612,176270.453065471 154 | 1613,183050.846258475 155 | 1614,150011.102062216 156 | 1615,159270.537808667 157 | 1616,163419.663729346 158 | 1617,163399.983345859 159 | 1618,173364.161505756 160 | 1619,169556.835902417 161 | 1620,183690.595995738 162 | 1621,176980.914909382 163 | 1622,204773.36222471 164 | 1623,174728.655998442 165 | 1624,181873.458244461 166 | 1625,177322.000823979 167 | 1626,193927.939041863 168 | 1627,181715.622732304 169 | 1628,199270.841200324 170 | 1629,177109.589956218 171 | 1630,153909.578271486 172 | 1631,162931.203336223 173 | 1632,166386.7567182 174 | 1633,173719.30379824 175 | 1634,179757.925656704 176 | 1635,179007.601964376 177 | 1636,180370.808623106 178 | 1637,185102.616730563 179 | 1638,198825.563452058 180 | 1639,184294.576009142 181 | 1640,200443.7920562 182 | 1641,181294.784484153 183 | 1642,174354.336267919 184 | 1643,172023.677781517 185 | 1644,181666.922855025 186 | 1645,179024.491269586 187 | 1646,178324.191575907 188 | 1647,184534.676687694 189 | 1648,159397.250378784 190 | 1649,178430.966728182 191 | 1650,177743.799385967 192 | 1651,179395.305519087 193 | 1652,151713.38474815 194 | 1653,151713.38474815 195 | 1654,168434.977996215 196 | 1655,153999.100311019 197 | 1656,164096.097354123 198 | 1657,166335.403036551 199 | 1658,163020.725375757 200 | 1659,155862.510668829 201 | 1660,182760.651095509 202 | 1661,201912.270622883 203 | 1662,185988.233987516 204 | 1663,183778.44888032 205 | 1664,170935.85921771 206 | 1665,184468.908382254 207 | 1666,191569.089663229 208 | 1667,232991.025583822 209 | 1668,180980.721388278 210 | 1669,164279.13048219 211 | 1670,183859.460411109 212 | 1671,185922.465682076 213 | 1672,191742.778119363 214 | 1673,199954.072465842 215 | 1674,180690.274752587 216 | 1675,163099.3096358 217 | 1676,140791.922472443 218 | 1677,166481.86647592 219 | 1678,172080.434496773 220 | 1679,191719.161659178 221 | 1680,160741.098612515 222 | 1681,157829.546854733 223 | 1682,196896.748596341 224 | 1683,159675.423990355 225 | 1684,182084.790901946 226 | 1685,179233.926374487 227 | 1686,155774.270901623 228 | 1687,181354.326716058 229 | 1688,179605.563663918 230 | 1689,181609.34866147 231 | 1690,178221.531623281 232 | 1691,175559.920735795 233 | 1692,200328.822792041 234 | 1693,178630.060559899 235 | 1694,177174.535221728 236 | 1695,172515.687368714 237 | 1696,204032.992922943 238 | 1697,176023.232787689 239 | 1698,202202.073341595 240 | 1699,181734.480075862 241 | 1700,183982.158993126 242 | 1701,188007.94241481 243 | 1702,185922.966763517 244 | 1703,183978.544874918 245 | 1704,177199.618638821 246 | 1705,181878.647956764 247 | 1706,173622.088728263 248 | 1707,180728.168562655 249 | 1708,176477.026606328 250 | 1709,184282.266697609 251 | 1710,162062.47538448 252 | 1711,182550.070992189 253 | 1712,180987.949624695 254 | 1713,178173.79762147 255 | 1714,179980.635948606 256 | 1715,173257.637826205 257 | 1716,177271.291059307 258 | 1717,175338.355442312 259 | 1718,177548.140549508 260 | 1719,175969.91662932 261 | 1720,175011.481953462 262 | 1721,185199.372568143 263 | 1722,188514.050228937 264 | 1723,185080.145268797 265 | 1724,157304.402574096 266 | 1725,194260.859481297 267 | 1726,181262.329995106 268 | 1727,157003.292706732 269 | 1728,182924.499359899 270 | 1729,181902.586375439 271 | 1730,188985.371708134 272 | 1731,185290.904495068 273 | 1732,177304.425752748 274 | 1733,166274.900490809 275 | 1734,177807.420530107 276 | 1735,180330.624816201 277 | 1736,179069.112234629 278 | 1737,175943.371816948 279 | 1738,185199.050609653 280 | 1739,167350.910824524 281 | 1740,149315.311876449 282 | 1741,139010.847766793 283 | 1742,155412.151845447 284 | 1743,171308.313985441 285 | 1744,176220.543265638 286 | 1745,177643.434991809 287 | 1746,187222.653264601 288 | 1747,185635.132083154 289 | 1748,206492.534215854 290 | 1749,181681.021081956 291 | 1750,180500.198072685 292 | 1751,206486.17086841 293 | 1752,161334.301195429 294 | 1753,176156.558313965 295 | 1754,191642.223478994 296 | 1755,191945.808027777 297 | 1756,164146.306037354 298 | 1757,179883.057071096 299 | 1758,178071.137668844 300 | 1759,188241.637896875 301 | 1760,174559.656173171 302 | 1761,182347.363042264 303 | 1762,191507.251872857 304 | 1763,199751.865597358 305 | 1764,162106.416145131 306 | 1765,164575.982314367 307 | 1766,179176.352180931 308 | 1767,177327.403857584 309 | 1768,177818.083761781 310 | 1769,186965.204048443 311 | 1770,178762.742169197 312 | 1771,183322.866146283 313 | 1772,178903.295931891 314 | 1773,186570.129421778 315 | 1774,199144.242829024 316 | 1775,172154.713310956 317 | 1776,177444.019201603 318 | 1777,166200.938073485 319 | 1778,158995.770555632 320 | 1779,168273.282454755 321 | 1780,189680.453052788 322 | 1781,181681.021081956 323 | 1782,160277.142643643 324 | 1783,197318.54715833 325 | 1784,162228.935604196 326 | 1785,187340.455456083 327 | 1786,181065.347037275 328 | 1787,190233.609102705 329 | 1788,157929.594852031 330 | 1789,168557.001935469 331 | 1790,160805.584645628 332 | 1791,221648.391978216 333 | 1792,180539.88079815 334 | 1793,182105.616283853 335 | 1794,166380.852603154 336 | 1795,178942.155617426 337 | 1796,162804.747800461 338 | 1797,183077.684392615 339 | 1798,171728.4720292 340 | 1799,164786.741540638 341 | 1800,177427.267170302 342 | 1801,197318.54715833 343 | 1802,178658.114178223 344 | 1803,185437.320523764 345 | 1804,169759.652489529 346 | 1805,173986.635055186 347 | 1806,168607.664289468 348 | 1807,194138.519145183 349 | 1808,192502.440921994 350 | 1809,176746.969818601 351 | 1810,177604.891703134 352 | 1811,193283.746584832 353 | 1812,181627.061006609 354 | 1813,169071.62025834 355 | 1814,167398.006470987 356 | 1815,150106.505141704 357 | 1816,159650.304285848 358 | 1817,179471.23597476 359 | 1818,177109.589956218 360 | 1819,166558.113328453 361 | 1820,153796.714319583 362 | 1821,174520.152570658 363 | 1822,196297.95829524 364 | 1823,169100.681601175 365 | 1824,176911.319164431 366 | 1825,169234.6454828 367 | 1826,172386.297919134 368 | 1827,156031.904802362 369 | 1828,168202.892306596 370 | 1829,166505.984017547 371 | 1830,176507.37022149 372 | 1831,180116.752553161 373 | 1832,183072.740591406 374 | 1833,189595.964677698 375 | 1834,167523.919076265 376 | 1835,210817.775863413 377 | 1836,172942.930813351 378 | 1837,145286.278144089 379 | 1838,176468.653371492 380 | 1839,159040.069562187 381 | 1840,178518.204332507 382 | 1841,169163.980786825 383 | 1842,189786.685274579 384 | 1843,181246.728523853 385 | 1844,176349.927153587 386 | 1845,205266.631009142 387 | 1846,187397.993362224 388 | 1847,208943.427726113 389 | 1848,165014.532907657 390 | 1849,182492.037566236 391 | 1850,161718.71259042 392 | 1851,180084.118941162 393 | 1852,178534.950802179 394 | 1853,151217.259961305 395 | 1854,156342.717587562 396 | 1855,188511.443835239 397 | 1856,183570.337896789 398 | 1857,225810.160292177 399 | 1858,214217.401131694 400 | 1859,187665.64101603 401 | 1860,161157.177744039 402 | 1861,187643.992594193 403 | 1862,228156.372839158 404 | 1863,220449.534665317 405 | 1864,220522.352084222 406 | 1865,156647.763531624 407 | 1866,187388.833374873 408 | 1867,178640.723791573 409 | 1868,180847.216739049 410 | 1869,159505.170529478 411 | 1870,164305.538020654 412 | 1871,180181.19673723 413 | 1872,184602.734989972 414 | 1873,193440.372174434 415 | 1874,184199.788209911 416 | 1875,196241.892907637 417 | 1876,175588.618271096 418 | 1877,179503.046546829 419 | 1878,183658.076582555 420 | 1879,193700.976276404 421 | 1880,165399.62450704 422 | 1881,186847.944787446 423 | 1882,198127.73287817 424 | 1883,183320.898107934 425 | 1884,181613.606696657 426 | 1885,178298.791761954 427 | 1886,185733.534000593 428 | 1887,180008.188485489 429 | 1888,175127.59621604 430 | 1889,183467.176862723 431 | 1890,182705.546021743 432 | 1891,152324.943593181 433 | 1892,169878.515981342 434 | 1893,183735.975076576 435 | 1894,224118.280105941 436 | 1895,169355.202465146 437 | 1896,180054.276407441 438 | 1897,174081.601977368 439 | 1898,168494.985022146 440 | 1899,181871.598843299 441 | 1900,173554.489658383 442 | 1901,169805.382165577 443 | 1902,176192.990728755 444 | 1903,204264.39284654 445 | 1904,169630.906956928 446 | 1905,185724.838807268 447 | 1906,195699.036281861 448 | 1907,189494.276162169 449 | 1908,149607.905673439 450 | 1909,154650.199045978 451 | 1910,151579.558140433 452 | 1911,185147.380531144 453 | 1912,196314.53120359 454 | 1913,210802.395364155 455 | 1914,166271.2863726 456 | 1915,154865.359142973 457 | 1916,173575.5052865 458 | 1917,179399.563554274 459 | 1918,164280.776562049 460 | 1919,171247.48948121 461 | 1920,166878.587182445 462 | 1921,188129.459710994 463 | 1922,183517.34369691 464 | 1923,175522.026925727 465 | 1924,190060.105331152 466 | 1925,174179.824771856 467 | 1926,171059.523675194 468 | 1927,183004.186769318 469 | 1928,183601.647387418 470 | 1929,163539.327185998 471 | 1930,164677.676391525 472 | 1931,162395.073865424 473 | 1932,182207.6323195 474 | 1933,192223.939790304 475 | 1934,176391.829390125 476 | 1935,181913.179121348 477 | 1936,179136.097888261 478 | 1937,196595.568243212 479 | 1938,194822.365690957 480 | 1939,148356.669440918 481 | 1940,160387.604263899 482 | 1941,181276.500571809 483 | 1942,192474.817899346 484 | 1943,157699.907796437 485 | 1944,215785.540813051 486 | 1945,181824.300998793 487 | 1946,221813.00948166 488 | 1947,165281.292597397 489 | 1948,255629.49047034 490 | 1949,173154.590990955 491 | 1950,183884.65246539 492 | 1951,200210.353608489 493 | 1952,186599.221265342 494 | 1953,192718.532696106 495 | 1954,178628.665952764 496 | 1955,180650.342418406 497 | 1956,206003.107947263 498 | 1957,166457.67844853 499 | 1958,202916.221653487 500 | 1959,192463.969983091 501 | 1960,171775.497189898 502 | 1961,175249.222149411 503 | 1962,147086.59893993 504 | 1963,149709.672100371 505 | 1964,171411.404533743 506 | 1965,178188.964799425 507 | 1966,156491.711373235 508 | 1967,180953.241201168 509 | 1968,203909.759061135 510 | 1969,175470.149087545 511 | 1970,205578.333622415 512 | 1971,199428.857699441 513 | 1972,187599.163869476 514 | 1973,192265.198109864 515 | 1974,196666.554897677 516 | 1975,155537.862252682 517 | 1976,169543.240620935 518 | 1977,202487.010170501 519 | 1978,208232.716273485 520 | 1979,173621.195202569 521 | 1980,172414.608571812 522 | 1981,164400.75641556 523 | 1982,160480.424024781 524 | 1983,156060.853810389 525 | 1984,157437.192820581 526 | 1985,158163.720929772 527 | 1986,154849.043268978 528 | 1987,152186.609341561 529 | 1988,180340.215399228 530 | 1989,178344.62451356 531 | 1990,190170.382266827 532 | 1991,168092.975480832 533 | 1992,178757.912566805 534 | 1993,174518.256882082 535 | 1994,198168.490116289 536 | 1995,176882.693978902 537 | 1996,183801.672896251 538 | 1997,196400.046680661 539 | 1998,172281.605004025 540 | 1999,196380.366297173 541 | 2000,198228.354306682 542 | 2001,195556.581268962 543 | 2002,186453.264469043 544 | 2003,181869.381196234 545 | 2004,175610.840124147 546 | 2005,183438.730800145 547 | 2006,179584.488673295 548 | 2007,182386.152242034 549 | 2008,160750.367237054 550 | 2009,182477.505046008 551 | 2010,187720.359207171 552 | 2011,187201.942081511 553 | 2012,176385.102235149 554 | 2013,175901.787841278 555 | 2014,182584.280198283 556 | 2015,195664.686104237 557 | 2016,181420.346494222 558 | 2017,176676.04995228 559 | 2018,181594.678867334 560 | 2019,178521.747964951 561 | 2020,175895.883726231 562 | 2021,168468.005916477 563 | 2022,200973.129447888 564 | 2023,197030.641992202 565 | 2024,192867.417844592 566 | 2025,196449.247639381 567 | 2026,141684.196398607 568 | 2027,153353.334123901 569 | 2028,151143.549016705 570 | 2029,163753.087114229 571 | 2030,158682.460013921 572 | 2031,144959.835250915 573 | 2032,160144.390548579 574 | 2033,156286.534303521 575 | 2034,165726.707619571 576 | 2035,182427.481047359 577 | 2036,173310.56154032 578 | 2037,173310.56154032 579 | 2038,151556.01403002 580 | 2039,158908.146068683 581 | 2040,209834.383092536 582 | 2041,192410.516550815 583 | 2042,174026.247294886 584 | 2043,195499.830115336 585 | 2044,200918.018812493 586 | 2045,207243.616023976 587 | 2046,196149.783851876 588 | 2047,192097.914850217 589 | 2048,178570.948923671 590 | 2049,228617.968325428 591 | 2050,199929.884438451 592 | 2051,160206.365612859 593 | 2052,179854.431885567 594 | 2053,185987.340461822 595 | 2054,161122.505607926 596 | 2055,175949.342720138 597 | 2056,183683.590595324 598 | 2057,176401.34762338 599 | 2058,205832.532527897 600 | 2059,177799.799849436 601 | 2060,167565.362080406 602 | 2061,186348.958436557 603 | 2062,179782.759465081 604 | 2063,169837.623333323 605 | 2064,178817.275675758 606 | 2065,174444.479149339 607 | 2066,192834.968917174 608 | 2067,196564.717984981 609 | 2068,206977.567039357 610 | 2069,157054.253944128 611 | 2070,175142.948078577 612 | 2071,159932.1643654 613 | 2072,182801.408333628 614 | 2073,181510.375176825 615 | 2074,181613.035129451 616 | 2075,186920.512597635 617 | 2076,157950.170625222 618 | 2077,176115.159022876 619 | 2078,182744.514344465 620 | 2079,180660.683691591 621 | 2080,160775.629777099 622 | 2081,186711.715848082 623 | 2082,223581.758190888 624 | 2083,172330.943236652 625 | 2084,163474.633393212 626 | 2085,175308.263299874 627 | 2086,187462.725306432 628 | 2087,180655.101535034 629 | 2088,152121.98603454 630 | 2089,159856.233909727 631 | 2090,186559.854936737 632 | 2091,183962.550959411 633 | 2092,162107.168699296 634 | 2093,162582.288981283 635 | 2094,154407.701597409 636 | 2095,181625.666399474 637 | 2096,164810.609473548 638 | 2097,176429.401241704 639 | 2098,179188.089925259 640 | 2099,145997.635377703 641 | 2100,218676.768270367 642 | 2101,188323.861214226 643 | 2102,168690.0722914 644 | 2103,165088.746797705 645 | 2104,191435.007885166 646 | 2105,168864.404664512 647 | 2106,176041.882371574 648 | 2107,215911.674390325 649 | 2108,167388.238629016 650 | 2109,163854.786753017 651 | 2110,163299.477980171 652 | 2111,178298.214633119 653 | 2112,176376.586164775 654 | 2113,170211.043976522 655 | 2114,170818.344786366 656 | 2115,174388.867432503 657 | 2116,161112.987374671 658 | 2117,172179.082325307 659 | 2118,157798.309713876 660 | 2119,169106.151422924 661 | 2120,170129.531364292 662 | 2121,157680.227412949 663 | 2122,162690.209131977 664 | 2123,146968.379365095 665 | 2124,181507.721372455 666 | 2125,191215.589752983 667 | 2126,189432.689844522 668 | 2127,207271.484957719 669 | 2128,170030.807488363 670 | 2129,148409.806476335 671 | 2130,193850.613979055 672 | 2131,193808.319298263 673 | 2132,166300.235380627 674 | 2133,163474.633393212 675 | 2134,177473.606564978 676 | 2135,157443.925537187 677 | 2136,180681.007992057 678 | 2137,183463.17030026 679 | 2138,182481.763081195 680 | 2139,193717.15117887 681 | 2140,182782.55099007 682 | 2141,175530.651633287 683 | 2142,177804.057884623 684 | 2143,159448.670848577 685 | 2144,181338.976717529 686 | 2145,178553.558537021 687 | 2146,162820.928264556 688 | 2147,188832.479997186 689 | 2148,164682.185899437 690 | 2149,181549.735943801 691 | 2150,199158.097008868 692 | 2151,152889.520990566 693 | 2152,181150.551679116 694 | 2153,181416.732376013 695 | 2154,164391.238182305 696 | 2155,185421.046498812 697 | 2156,193981.327550004 698 | 2157,178824.324789223 699 | 2158,209270.051606246 700 | 2159,177801.266806344 701 | 2160,179053.762236101 702 | 2161,178762.170601992 703 | 2162,184655.300458183 704 | 2163,191284.655779772 705 | 2164,179598.085818785 706 | 2165,167517.628078595 707 | 2166,182873.903794044 708 | 2167,177484.91371363 709 | 2168,188444.597319524 710 | 2169,179184.153848562 711 | 2170,184365.175780982 712 | 2171,184479.322005212 713 | 2172,182927.863869391 714 | 2173,178611.639373646 715 | 2174,181943.343613558 716 | 2175,175080.614768394 717 | 2176,190720.794649138 718 | 2177,198422.868144723 719 | 2178,184482.11308349 720 | 2179,139214.952187861 721 | 2180,169233.113601757 722 | 2181,180664.118686848 723 | 2182,178818.742632666 724 | 2183,180422.049969947 725 | 2184,178601.93645581 726 | 2185,183083.159775993 727 | 2186,173163.101499699 728 | 2187,185968.161159774 729 | 2188,171226.050683054 730 | 2189,281643.976116786 731 | 2190,160031.711281258 732 | 2191,162775.979779394 733 | 2192,160735.445970193 734 | 2193,166646.109048572 735 | 2194,188384.548444549 736 | 2195,165830.697255197 737 | 2196,182138.358533039 738 | 2197,171595.397975647 739 | 2198,160337.079183809 740 | 2199,191215.088671543 741 | 2200,166956.093232213 742 | 2201,186581.830878692 743 | 2202,176450.548582099 744 | 2203,193743.194909801 745 | 2204,198882.566078408 746 | 2205,176385.102235149 747 | 2206,162447.639333636 748 | 2207,193782.555676777 749 | 2208,183653.890897141 750 | 2209,210578.623546866 751 | 2210,158527.164107319 752 | 2211,163081.025723456 753 | 2212,174388.867432503 754 | 2213,191905.870131966 755 | 2214,174388.867432503 756 | 2215,161642.711648983 757 | 2216,186939.507215101 758 | 2217,172482.165792649 759 | 2218,159695.999763546 760 | 2219,157230.369671007 761 | 2220,179188.089925259 762 | 2221,157972.82120994 763 | 2222,156804.951429181 764 | 2223,211491.972463654 765 | 2224,186537.246201062 766 | 2225,200468.161070551 767 | 2226,182241.340444154 768 | 2227,157342.225898399 769 | 2228,182022.387105998 770 | 2229,181244.510876788 771 | 2230,178556.671573788 772 | 2231,189547.199876284 773 | 2232,187948.65165563 774 | 2233,194107.287565956 775 | 2234,183521.710369283 776 | 2235,183682.123638416 777 | 2236,178483.353073443 778 | 2237,184003.879764736 779 | 2238,171318.59033449 780 | 2239,162039.754313997 781 | 2240,154846.252190699 782 | 2241,194822.365690957 783 | 2242,169788.738771463 784 | 2243,178891.554489941 785 | 2244,152084.772428865 786 | 2245,139169.86642879 787 | 2246,192439.536044606 788 | 2247,161067.859766557 789 | 2248,158762.648504781 790 | 2249,175569.690441774 791 | 2250,183659.795012187 792 | 2251,280618.132617258 793 | 2252,180051.809151659 794 | 2253,176519.18031559 795 | 2254,179028.429210291 796 | 2255,177161.583857224 797 | 2256,180081.508849842 798 | 2257,205895.254584712 799 | 2258,183389.78131415 800 | 2259,178543.647859512 801 | 2260,194798.320499104 802 | 2261,162845.613675766 803 | 2262,148103.867006579 804 | 2263,201016.171121215 805 | 2264,277936.12694354 806 | 2265,249768.279823405 807 | 2266,161596.052159825 808 | 2267,158011.114889899 809 | 2268,194089.683858004 810 | 2269,181733.336941451 811 | 2270,182852.32772198 812 | 2271,189893.003058465 813 | 2272,194650.210979875 814 | 2273,187904.461286262 815 | 2274,171774.925622692 816 | 2275,177998.685921479 817 | 2276,175648.484325498 818 | 2277,196918.071362067 819 | 2278,184299.838071218 820 | 2279,182379.855682734 821 | 2280,184050.725802482 822 | 2281,158296.975970284 823 | 2282,175053.355553278 824 | 2283,162293.376090644 825 | 2284,186328.880047186 826 | 2285,151422.116936538 827 | 2286,181969.358707768 828 | 2287,189122.67702416 829 | 2288,185645.475220346 830 | 2289,182829.898109257 831 | 2290,195848.788183328 832 | 2291,198785.059550672 833 | 2292,181676.126555428 834 | 2293,194131.012663328 835 | 2294,201416.004864508 836 | 2295,185096.577205616 837 | 2296,195158.972598372 838 | 2297,184795.783735112 839 | 2298,189168.263864671 840 | 2299,216855.260149095 841 | 2300,184946.642483576 842 | 2301,189317.51282069 843 | 2302,180803.277842406 844 | 2303,175061.18585763 845 | 2304,179074.839090732 846 | 2305,145708.764336107 847 | 2306,142398.022752011 848 | 2307,161474.534863641 849 | 2308,157025.945155458 850 | 2309,163424.037827357 851 | 2310,164692.778645345 852 | 2311,152163.2443541 853 | 2312,192383.215486656 854 | 2313,182520.230322476 855 | 2314,187254.507549722 856 | 2315,176489.659740359 857 | 2316,181520.466841293 858 | 2317,186414.978214721 859 | 2318,185197.764639705 860 | 2319,178657.794083741 861 | 2320,179731.198023759 862 | 2321,161748.271317074 863 | 2322,158608.749069322 864 | 2323,178807.370559878 865 | 2324,184187.158803897 866 | 2325,181686.10402108 867 | 2326,190311.050228337 868 | 2327,192252.496354076 869 | 2328,193954.849525775 870 | 2329,181044.201560887 871 | 2330,180258.131219792 872 | 2331,199641.657313834 873 | 2332,197530.775205517 874 | 2333,191777.196949138 875 | 2334,195779.543033588 876 | 2335,202112.046522999 877 | 2336,192343.34807661 878 | 2337,185191.359443218 879 | 2338,186760.207965688 880 | 2339,177733.78193528 881 | 2340,164430.391189608 882 | 2341,185299.601552401 883 | 2342,186414.012339254 884 | 2343,176401.921054593 885 | 2344,182381.322639642 886 | 2345,176334.184710805 887 | 2346,184901.735847457 888 | 2347,180085.766885029 889 | 2348,184901.735847457 890 | 2349,183967.561548763 891 | 2350,193046.301574659 892 | 2351,168538.969495849 893 | 2352,170157.842016969 894 | 2353,196559.709259637 895 | 2354,177133.709361852 896 | 2355,181553.279576244 897 | 2356,185770.606634739 898 | 2357,177017.595099274 899 | 2358,184123.358536806 900 | 2359,165970.357492196 901 | 2360,158151.985049452 902 | 2361,177086.476441481 903 | 2362,196373.896176551 904 | 2363,172465.707083115 905 | 2364,168590.782409896 906 | 2365,158820.474171061 907 | 2366,151611.37057651 908 | 2367,152125.028585543 909 | 2368,158404.073081048 910 | 2369,160692.078640755 911 | 2370,170175.22684199 912 | 2371,169854.436591138 913 | 2372,183410.785819008 914 | 2373,180347.194026928 915 | 2374,178930.528374292 916 | 2375,153346.220086301 917 | 2376,182675.204270589 918 | 2377,180770.649792036 919 | 2378,188714.148087543 920 | 2379,191393.608594076 921 | 2380,174016.157494425 922 | 2381,183189.685319552 923 | 2382,183621.508757866 924 | 2383,168991.29635758 925 | 2384,185306.650665866 926 | 2385,189030.680303208 927 | 2386,179208.665698449 928 | 2387,174901.452792889 929 | 2388,168337.406544343 930 | 2389,158234.96461859 931 | 2390,179562.453368834 932 | 2391,174176.391640607 933 | 2392,173931.531845427 934 | 2393,184111.729429665 935 | 2394,179374.482001188 936 | 2395,207348.811884535 937 | 2396,186983.419339031 938 | 2397,206779.094049527 939 | 2398,177472.074683935 940 | 2399,156727.948324862 941 | 2400,157090.568462479 942 | 2401,160387.032696693 943 | 2402,172410.28005086 944 | 2403,191603.365657467 945 | 2404,182152.207151253 946 | 2405,180161.697340702 947 | 2406,169652.235284283 948 | 2407,182503.520140218 949 | 2408,179714.630677039 950 | 2409,180282.570719908 951 | 2410,192600.338060371 952 | 2411,166115.491248565 953 | 2412,186379.553524443 954 | 2413,184361.992258449 955 | 2414,186220.965458121 956 | 2415,198176.47090687 957 | 2416,168437.776500131 958 | 2417,178003.582312015 959 | 2418,179180.469244588 960 | 2419,191930.561104806 961 | 2420,175590.266214964 962 | 2421,176713.19307219 963 | 2422,180159.090947005 964 | 2423,188090.100808026 965 | 2424,186184.717727913 966 | 2425,223055.588672278 967 | 2426,158270.753116401 968 | 2427,184733.12846644 969 | 2428,199926.378957429 970 | 2429,175075.785166001 971 | 2430,180917.925148076 972 | 2431,182067.760625207 973 | 2432,178238.60191545 974 | 2433,173454.944606532 975 | 2434,176821.936262814 976 | 2435,183642.191304235 977 | 2436,177254.582741058 978 | 2437,168715.950111702 979 | 2438,180096.931198144 980 | 2439,160620.728178758 981 | 2440,175286.544392273 982 | 2441,153494.783276297 983 | 2442,156407.65915545 984 | 2443,162162.525245786 985 | 2444,166809.886827197 986 | 2445,172929.156408918 987 | 2446,193514.330894137 988 | 2447,181612.141603756 989 | 2448,191745.386377068 990 | 2449,171369.325038261 991 | 2450,184425.470567051 992 | 2451,170563.252355189 993 | 2452,184522.369240168 994 | 2453,164968.947931153 995 | 2454,157939.621592364 996 | 2455,151520.381580069 997 | 2456,176129.508722531 998 | 2457,171112.978971478 999 | 2458,169762.081624282 1000 | 2459,162246.828936295 1001 | 2460,171339.303381589 1002 | 2461,189034.753653813 1003 | 2462,175758.873595981 1004 | 2463,163351.721489893 1005 | 2464,189806.546645026 1006 | 2465,175370.990918319 1007 | 2466,196895.599900301 1008 | 2467,176905.917994834 1009 | 2468,176866.557227858 1010 | 2469,163590.677170026 1011 | 2470,212693.502958393 1012 | 2471,192686.931747717 1013 | 2472,181578.684951827 1014 | 2473,166475.457581812 1015 | 2474,185998.255166219 1016 | 2475,185527.714877908 1017 | 2476,159027.118197683 1018 | 2477,181169.654933769 1019 | 2478,176732.915304722 1020 | 2479,191619.294648838 1021 | 2480,189114.303789324 1022 | 2481,180934.635330334 1023 | 2482,164573.372223048 1024 | 2483,173902.011270196 1025 | 2484,165625.127741229 1026 | 2485,179555.219570787 1027 | 2486,196899.720661579 1028 | 2487,207566.12470446 1029 | 2488,163899.981149274 1030 | 2489,189179.428177786 1031 | 2490,193892.880023125 1032 | 2491,178980.874331431 1033 | 2492,179749.876244365 1034 | 2493,197999.674975598 1035 | 2494,203717.470295797 1036 | 2495,185249.261156892 1037 | 2496,201691.208274848 1038 | 2497,181956.548314794 1039 | 2498,171895.936275806 1040 | 2499,187245.168439419 1041 | 2500,157816.77461318 1042 | 2501,191702.912573325 1043 | 2502,198599.420028908 1044 | 2503,187193.313676329 1045 | 2504,220514.993999535 1046 | 2505,181814.527595192 1047 | 2506,183750.755371907 1048 | 2507,183000.431679579 1049 | 2508,185830.971906573 1050 | 2509,185497.872344187 1051 | 2510,179613.437681321 1052 | 2511,164454.967963631 1053 | 2512,185127.237217638 1054 | 2513,178750.613844623 1055 | 2514,160927.61044889 1056 | 2515,192562.808057836 1057 | 2516,180990.24148554 1058 | 2517,180064.941503122 1059 | 2518,196070.997393789 1060 | 2519,180352.919019023 1061 | 2520,183367.953769362 1062 | 2521,176734.841494027 1063 | 2522,180848.220765939 1064 | 2523,187806.059368823 1065 | 2524,180521.52640004 1066 | 2525,181502.754496154 1067 | 2526,174525.87942676 1068 | 2527,188927.984063168 1069 | 2528,184728.870431253 1070 | 2529,179857.975518011 1071 | 2530,180962.868071609 1072 | 2531,179194.066390078 1073 | 2532,179591.789259484 1074 | 2533,180638.463702549 1075 | 2534,185846.215131922 1076 | 2535,195174.031139141 1077 | 2536,192474.56829063 1078 | 2537,164200.595496827 1079 | 2538,178403.094096818 1080 | 2539,170774.84018302 1081 | 2540,179879.945898337 1082 | 2541,177668.192752792 1083 | 2542,180174.328610725 1084 | 2543,170643.303572141 1085 | 2544,165448.004289838 1086 | 2545,195531.754886222 1087 | 2546,165314.177682121 1088 | 2547,172532.757660882 1089 | 2548,203310.218069877 1090 | 2549,175090.062515883 1091 | 2550,230841.338626282 1092 | 2551,155225.19006632 1093 | 2552,168322.342441945 1094 | 2553,165956.259265265 1095 | 2554,193956.817564124 1096 | 2555,171070.367893827 1097 | 2556,166285.243628001 1098 | 2557,182875.801346628 1099 | 2558,218108.536769738 1100 | 2559,174378.777632042 1101 | 2560,164731.316372391 1102 | 2561,156969.695083273 1103 | 2562,173388.854342604 1104 | 2563,177559.628685119 1105 | 2564,194297.789279905 1106 | 2565,174894.588364005 1107 | 2566,196544.144075798 1108 | 2567,179036.158528149 1109 | 2568,211423.986511149 1110 | 2569,208156.398935188 1111 | 2570,159233.941347257 1112 | 2571,210820.115134931 1113 | 2572,140196.10979821 1114 | 2573,198678.469082978 1115 | 2574,186818.610760803 1116 | 2575,175044.797633861 1117 | 2576,180031.162892704 1118 | 2577,176889.171525162 1119 | 2578,159638.856165666 1120 | 2579,154287.264375509 1121 | 2580,191885.618181273 1122 | 2581,177503.378612934 1123 | 2582,166548.31684976 1124 | 2583,164475.14942856 1125 | 2584,167484.744857879 1126 | 2585,188683.160555403 1127 | 2586,162243.399502668 1128 | 2587,180807.213919103 1129 | 2588,176279.079637039 1130 | 2589,163438.959094218 1131 | 2590,161495.5393685 1132 | 2591,216032.303722443 1133 | 2592,176632.181541401 1134 | 2593,168743.001567144 1135 | 2594,183810.11848086 1136 | 2595,156794.36054728 1137 | 2596,169136.43011395 1138 | 2597,183203.318752456 1139 | 2598,213252.926930889 1140 | 2599,190550.327866959 1141 | 2600,234707.209860273 1142 | 2601,135751.318892816 1143 | 2602,164228.45886894 1144 | 2603,153219.437030419 1145 | 2604,164210.746523801 1146 | 2605,163883.229117973 1147 | 2606,154892.776269956 1148 | 2607,197092.08733832 1149 | 2608,228148.376399122 1150 | 2609,178680.587503997 1151 | 2610,165643.341167808 1152 | 2611,222406.642660249 1153 | 2612,184021.843582599 1154 | 2613,170871.094939159 1155 | 2614,189562.873697309 1156 | 2615,170591.884966356 1157 | 2616,172934.351682851 1158 | 2617,186425.069879189 1159 | 2618,218648.131133006 1160 | 2619,183035.606761141 1161 | 2620,178378.906069427 1162 | 2621,184516.716597846 1163 | 2622,181419.5253183 1164 | 2623,196858.923438425 1165 | 2624,189228.701486278 1166 | 2625,208973.380761028 1167 | 2626,180269.86896412 1168 | 2627,159488.713683953 1169 | 2628,191490.299507521 1170 | 2629,228684.245137946 1171 | 2630,201842.998700429 1172 | 2631,209242.82289186 1173 | 2632,202357.62258493 1174 | 2633,168238.61218265 1175 | 2634,202524.12465369 1176 | 2635,170588.771929588 1177 | 2636,198375.31512987 1178 | 2637,170636.827889889 1179 | 2638,181991.079479377 1180 | 2639,183994.54251844 1181 | 2640,182951.482193584 1182 | 2641,174126.297156192 1183 | 2642,170575.496742588 1184 | 2643,175332.239869971 1185 | 2644,167522.061539111 1186 | 2645,168095.583738538 1187 | 2646,154406.415627461 1188 | 2647,170996.973346087 1189 | 2648,159056.890245639 1190 | 2649,181373.6165193 1191 | 2650,152272.560975937 1192 | 2651,168664.346821336 1193 | 2652,211007.008292301 1194 | 2653,182909.515032911 1195 | 2654,203926.829353303 1196 | 2655,179082.825442944 1197 | 2656,206260.099795032 1198 | 2657,181732.443415757 1199 | 2658,189698.740693148 1200 | 2659,203074.34678979 1201 | 2660,201670.634365666 1202 | 2661,173756.812589691 1203 | 2662,181387.076390881 1204 | 2663,184859.155270535 1205 | 2664,158313.615666777 1206 | 2665,151951.955409666 1207 | 2666,162537.52704471 1208 | 2667,178998.337067854 1209 | 2668,186732.584943041 1210 | 2669,187323.318406165 1211 | 2670,199437.232798284 1212 | 2671,185546.680858653 1213 | 2672,161595.015798593 1214 | 2673,154672.422763036 1215 | 2674,159355.710116165 1216 | 2675,155919.014077746 1217 | 2676,182424.87095604 1218 | 2677,178100.589622319 1219 | 2678,202577.900044456 1220 | 2679,177862.778940605 1221 | 2680,182056.024744887 1222 | 2681,191403.199177104 1223 | 2682,196264.754980043 1224 | 2683,209375.003419718 1225 | 2684,196691.81930173 1226 | 2685,192458.431539585 1227 | 2686,182242.80926507 1228 | 2687,183259.503900506 1229 | 2688,188108.243748841 1230 | 2689,171418.640195797 1231 | 2690,194698.882220432 1232 | 2691,174841.84007522 1233 | 2692,172965.476488899 1234 | 2693,189386.323677132 1235 | 2694,185682.618340257 1236 | 2695,176412.012719061 1237 | 2696,174976.489722867 1238 | 2697,180718.581707643 1239 | 2698,186131.188248242 1240 | 2699,165220.786354033 1241 | 2700,164115.893800435 1242 | 2701,182125.729127024 1243 | 2702,182285.140233276 1244 | 2703,196325.442210366 1245 | 2704,164865.215329881 1246 | 2705,182694.492209823 1247 | 2706,185425.485520958 1248 | 2707,171414.7041191 1249 | 2708,183433.472466085 1250 | 2709,176844.981155794 1251 | 2710,180568.187753206 1252 | 2711,185948.625475832 1253 | 2712,189388.291715481 1254 | 2713,142754.489165865 1255 | 2714,156106.800760811 1256 | 2715,155895.397617561 1257 | 2716,159851.977738548 1258 | 2717,185157.832305524 1259 | 2718,180716.291710805 1260 | 2719,176901.093954071 1261 | 2720,181017.222455218 1262 | 2721,183269.159407668 1263 | 2722,193550.830097069 1264 | 2723,170625.842699726 1265 | 2724,182012.405942725 1266 | 2725,179162.507290733 1267 | 2726,183269.159407668 1268 | 2727,180589.836175042 1269 | 2728,181465.935198741 1270 | 2729,196053.029878304 1271 | 2730,183421.020319014 1272 | 2731,167926.839083612 1273 | 2732,168027.530997889 1274 | 2733,182164.26685407 1275 | 2734,172469.071592608 1276 | 2735,181059.374300472 1277 | 2736,182997.570115536 1278 | 2737,166140.504179894 1279 | 2738,198515.546934075 1280 | 2739,193789.648503294 1281 | 2740,173550.025727531 1282 | 2741,176487.943174734 1283 | 2742,188813.302559147 1284 | 2743,178531.911979192 1285 | 2744,182145.731469001 1286 | 2745,179196.465024103 1287 | 2746,169618.349900686 1288 | 2747,170010.168655046 1289 | 2748,181739.671652174 1290 | 2749,172846.934955574 1291 | 2750,195560.8830172 1292 | 2751,180358.114292956 1293 | 2752,211817.702818093 1294 | 2753,176170.128686742 1295 | 2754,234492.248263699 1296 | 2755,182450.956536015 1297 | 2756,174902.068073146 1298 | 2757,173684.174293738 1299 | 2758,147196.673677562 1300 | 2759,175231.189709791 1301 | 2760,193417.64740633 1302 | 2761,183313.601249761 1303 | 2762,180882.250849082 1304 | 2763,186735.697979808 1305 | 2764,172922.865411247 1306 | 2765,202551.677190573 1307 | 2766,190485.634074173 1308 | 2767,173439.49362151 1309 | 2768,196613.598849219 1310 | 2769,178152.259700828 1311 | 2770,174519.904825949 1312 | 2771,172627.796932837 1313 | 2772,173732.689486435 1314 | 2773,209219.844787023 1315 | 2774,181059.374300472 1316 | 2775,188515.443002459 1317 | 2776,182164.26685407 1318 | 2777,188137.901597981 1319 | 2778,158893.54306269 1320 | 2779,189579.65066771 1321 | 2780,165229.803505847 1322 | 2781,162186.071220207 1323 | 2782,166374.879866351 1324 | 2783,161665.184974757 1325 | 2784,175079.328798445 1326 | 2785,203840.874021305 1327 | 2786,152129.078861057 1328 | 2787,181012.141380101 1329 | 2788,161305.53503837 1330 | 2789,203326.392972343 1331 | 2790,168385.571141831 1332 | 2791,183564.365159986 1333 | 2792,163784.619440861 1334 | 2793,171989.192193993 1335 | 2794,180839.95616829 1336 | 2795,170895.923185907 1337 | 2796,174071.054808518 1338 | 2797,259423.859147546 1339 | 2798,188000.824679588 1340 | 2799,179171.703565498 1341 | 2800,171022.241447762 1342 | 2801,174126.297156192 1343 | 2802,187625.573271948 1344 | 2803,199567.946369234 1345 | 2804,205328.078219268 1346 | 2805,166231.535025379 1347 | 2806,154743.91606057 1348 | 2807,159714.537012622 1349 | 2808,185563.069082422 1350 | 2809,171500.796725006 1351 | 2810,180983.443844799 1352 | 2811,183141.236914997 1353 | 2812,178498.634450214 1354 | 2813,224323.710512388 1355 | 2814,218200.642127877 1356 | 2815,182283.177756557 1357 | 2816,190054.639237419 1358 | 2817,160192.453934518 1359 | 2818,171289.393581756 1360 | 2819,151131.098733642 1361 | 2820,181721.458225594 1362 | 2821,172725.053851858 1363 | 2822,222438.699143414 1364 | 2823,235419.373448928 1365 | 2824,185150.926027596 1366 | 2825,184772.239624699 1367 | 2826,180658.216435809 1368 | 2827,209673.316647174 1369 | 2828,205939.810625621 1370 | 2829,165633.573325837 1371 | 2830,186030.317211014 1372 | 2831,160312.319589212 1373 | 2832,190702.440251029 1374 | 2833,175122.810326699 1375 | 2834,183783.13937519 1376 | 2835,178290.666302221 1377 | 2836,181605.343963015 1378 | 2837,187992.451444752 1379 | 2838,188885.11781517 1380 | 2839,189959.344795118 1381 | 2840,179258.619211334 1382 | 2841,181518.750275669 1383 | 2842,193008.659237315 1384 | 2843,186313.89385619 1385 | 2844,181499.39185067 1386 | 2845,174126.297156192 1387 | 2846,183918.612062767 1388 | 2847,184114.270899227 1389 | 2848,158540.947801398 1390 | 2849,197034.759055859 1391 | 2850,185170.284452595 1392 | 2851,221134.533635148 1393 | 2852,184306.637575967 1394 | 2853,199792.302740996 1395 | 2854,143237.803559736 1396 | 2855,177294.838897736 1397 | 2856,182368.620883855 1398 | 2857,176487.943174734 1399 | 2858,183849.408762071 1400 | 2859,184964.141507413 1401 | 2860,196395.969632434 1402 | 2861,188374.936650438 1403 | 2862,176261.296806135 1404 | 2863,163628.142248426 1405 | 2864,180618.032628904 1406 | 2865,161647.329794081 1407 | 2866,167129.598867773 1408 | 2867,174750.988352687 1409 | 2868,177560.202116333 1410 | 2869,192577.796112839 1411 | 2870,199202.898960871 1412 | 2871,182818.156667308 1413 | 2872,148217.262540651 1414 | 2873,188997.797082492 1415 | 2874,185807.928877601 1416 | 2875,177030.477842021 1417 | 2876,175942.474593632 1418 | 2877,172912.518576433 1419 | 2878,198359.248864591 1420 | 2879,184379.133036383 1421 | 2880,194255.566948886 1422 | 2881,209449.651603064 1423 | 2882,169979.323958443 1424 | 2883,188206.281858748 1425 | 2884,186412.438609167 1426 | 2885,196761.386409959 1427 | 2886,208353.269558209 1428 | 2887,166548.067241044 1429 | 2888,175942.474593632 1430 | 2889,166790.457916434 1431 | 2890,160515.850579067 1432 | 2891,192167.621096362 1433 | 2892,178751.551083369 1434 | 2893,198678.894117024 1435 | 2894,164553.120272354 1436 | 2895,156887.932862327 1437 | 2896,164185.777305524 1438 | 2897,212992.120630876 1439 | 2898,197468.550532521 1440 | 2899,180106.84373966 1441 | 2900,183972.071056674 1442 | 2901,245283.198337927 1443 | 2902,170351.963410756 1444 | 2903,195596.307707478 1445 | 2904,189369.756330412 1446 | 2905,223667.404551664 1447 | 2906,169335.310624364 1448 | 2907,167411.02835165 1449 | 2908,187709.555003968 1450 | 2909,196526.002998991 1451 | 2910,137402.569855589 1452 | 2911,165086.775061735 1453 | 2912,188506.431412274 1454 | 2913,172917.456816012 1455 | 2914,166274.325225982 1456 | 2915,167081.220948984 1457 | 2916,164788.778231138 1458 | 2917,219222.423400059 1459 | 2918,184924.279658997 1460 | 2919,187741.866657478 1461 | -------------------------------------------------------------------------------- /predict-house-prices.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "## 通过神经网络预测房价\n", 8 | "在这个项目中,我们希望能够构建神经网络来预测房屋的价格" 9 | ] 10 | }, 11 | { 12 | "cell_type": "markdown", 13 | "metadata": {}, 14 | "source": [ 15 | "首先,我们导入一些必要的库" 16 | ] 17 | }, 18 | { 19 | "cell_type": "code", 20 | "execution_count": 1, 21 | "metadata": {}, 22 | "outputs": [], 23 | "source": [ 24 | "import pandas as pd\n", 25 | "import numpy as np\n", 26 | "import matplotlib.pyplot as plt\n", 27 | "import torch\n", 28 | "from torch import nn\n", 29 | "\n", 30 | "%matplotlib inline\n", 31 | "%load_ext autoreload\n", 32 | "%autoreload 2" 33 | ] 34 | }, 35 | { 36 | "cell_type": "markdown", 37 | "metadata": {}, 38 | "source": [ 39 | "读取训练集和测试集的数据" 40 | ] 41 | }, 42 | { 43 | "cell_type": "code", 44 | "execution_count": 2, 45 | "metadata": {}, 46 | "outputs": [], 47 | "source": [ 48 | "train = pd.read_csv('./all/train.csv')\n", 49 | "test = pd.read_csv('./all/test.csv')" 50 | ] 51 | }, 52 | { 53 | "cell_type": "markdown", 54 | "metadata": {}, 55 | "source": [ 56 | "可以具体看看前面 5 个训练集长什么样子,可以看到,前面都是这个房屋的属性,最后是房屋的价格" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": 3, 62 | "metadata": {}, 63 | "outputs": [ 64 | { 65 | "data": { 66 | "text/html": [ 67 | "
\n", 68 | "\n", 81 | "\n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | "
IdMSSubClassMSZoningLotFrontageLotAreaStreetAlleyLotShapeLandContourUtilities...PoolAreaPoolQCFenceMiscFeatureMiscValMoSoldYrSoldSaleTypeSaleConditionSalePrice
0160RL65.08450PaveNaNRegLvlAllPub...0NaNNaNNaN022008WDNormal208500
1220RL80.09600PaveNaNRegLvlAllPub...0NaNNaNNaN052007WDNormal181500
2360RL68.011250PaveNaNIR1LvlAllPub...0NaNNaNNaN092008WDNormal223500
3470RL60.09550PaveNaNIR1LvlAllPub...0NaNNaNNaN022006WDAbnorml140000
4560RL84.014260PaveNaNIR1LvlAllPub...0NaNNaNNaN0122008WDNormal250000
\n", 231 | "

5 rows × 81 columns

\n", 232 | "
" 233 | ], 234 | "text/plain": [ 235 | " Id MSSubClass MSZoning LotFrontage LotArea Street Alley LotShape \\\n", 236 | "0 1 60 RL 65.0 8450 Pave NaN Reg \n", 237 | "1 2 20 RL 80.0 9600 Pave NaN Reg \n", 238 | "2 3 60 RL 68.0 11250 Pave NaN IR1 \n", 239 | "3 4 70 RL 60.0 9550 Pave NaN IR1 \n", 240 | "4 5 60 RL 84.0 14260 Pave NaN IR1 \n", 241 | "\n", 242 | " LandContour Utilities ... PoolArea PoolQC Fence MiscFeature MiscVal \\\n", 243 | "0 Lvl AllPub ... 0 NaN NaN NaN 0 \n", 244 | "1 Lvl AllPub ... 0 NaN NaN NaN 0 \n", 245 | "2 Lvl AllPub ... 0 NaN NaN NaN 0 \n", 246 | "3 Lvl AllPub ... 0 NaN NaN NaN 0 \n", 247 | "4 Lvl AllPub ... 0 NaN NaN NaN 0 \n", 248 | "\n", 249 | " MoSold YrSold SaleType SaleCondition SalePrice \n", 250 | "0 2 2008 WD Normal 208500 \n", 251 | "1 5 2007 WD Normal 181500 \n", 252 | "2 9 2008 WD Normal 223500 \n", 253 | "3 2 2006 WD Abnorml 140000 \n", 254 | "4 12 2008 WD Normal 250000 \n", 255 | "\n", 256 | "[5 rows x 81 columns]" 257 | ] 258 | }, 259 | "execution_count": 3, 260 | "metadata": {}, 261 | "output_type": "execute_result" 262 | } 263 | ], 264 | "source": [ 265 | "train.head()" 266 | ] 267 | }, 268 | { 269 | "cell_type": "markdown", 270 | "metadata": {}, 271 | "source": [ 272 | "接着我们可以看看训练集和测试集分别有多少个样本" 273 | ] 274 | }, 275 | { 276 | "cell_type": "code", 277 | "execution_count": 4, 278 | "metadata": {}, 279 | "outputs": [ 280 | { 281 | "name": "stdout", 282 | "output_type": "stream", 283 | "text": [ 284 | "一共有 1460 个训练集样本\n", 285 | "一共有 1459 个测试集样本\n" 286 | ] 287 | } 288 | ], 289 | "source": [ 290 | "print('一共有 {} 个训练集样本'.format(train.shape[0]))\n", 291 | "print('一共有 {} 个测试集样本'.format(test.shape[0]))" 292 | ] 293 | }, 294 | { 295 | "cell_type": "markdown", 296 | "metadata": {}, 297 | "source": [ 298 | "接着我们开始对数据进行处理,首先我们取出**第二个特征**到**倒数第二个特征**,这些特征作为我们神经网络的输入特征" 299 | ] 300 | }, 301 | { 302 | "cell_type": "code", 303 | "execution_count": 5, 304 | "metadata": {}, 305 | "outputs": [], 306 | "source": [ 307 | "all_features = pd.concat((train.loc[:, 'MSSubClass':'SaleCondition'],\n", 308 | " test.loc[:, 'MSSubClass':'SaleCondition']))" 309 | ] 310 | }, 311 | { 312 | "cell_type": "markdown", 313 | "metadata": {}, 314 | "source": [ 315 | "接着我们需要进行数据标准化,对于所有的数值特征,我们都会减去均值,除以方差" 316 | ] 317 | }, 318 | { 319 | "cell_type": "code", 320 | "execution_count": 6, 321 | "metadata": {}, 322 | "outputs": [], 323 | "source": [ 324 | "numeric_feats = all_features.dtypes[all_features.dtypes != \"object\"].index # 取出所有的数值特征\n", 325 | "\n", 326 | "# 减去均值,除以方差\n", 327 | "all_features[numeric_feats] = all_features[numeric_feats].apply(lambda x: (x - x.mean()) \n", 328 | " / (x.std()))" 329 | ] 330 | }, 331 | { 332 | "cell_type": "code", 333 | "execution_count": 7, 334 | "metadata": {}, 335 | "outputs": [], 336 | "source": [ 337 | "# 对预测的价格取 log\n", 338 | "train['SalePrice'] = np.log(train['SalePrice'])" 339 | ] 340 | }, 341 | { 342 | "cell_type": "markdown", 343 | "metadata": {}, 344 | "source": [ 345 | "如果你仔细看看上面的特征,你会发现,除了数值特征之外,还有很多非数值特征,这些特征我们没有办法将其转换成数值表示,所以我们通过 pandas 的内置函数将其转换成种类表示\n", 346 | "\n", 347 | "比如 **MSZoning** 有两种可能,一种是 RL,一种是 RM,那么我们就将这个特征变成两个新的特征,RL 和 RM,如果这个数据在 **MSZoning** 上是 RL,那么 RL 取 1,RM 取 0;反之如果这个特征是 RM,那么 RL 取 0,RM 取 1.\n", 348 | "\n", 349 | "| RL | RM |\n", 350 | "|-|-|\n", 351 | "| 0 | 1 |\n", 352 | "| 1 | 0 |" 353 | ] 354 | }, 355 | { 356 | "cell_type": "code", 357 | "execution_count": 8, 358 | "metadata": {}, 359 | "outputs": [], 360 | "source": [ 361 | "all_features = pd.get_dummies(all_features, dummy_na=True)" 362 | ] 363 | }, 364 | { 365 | "cell_type": "markdown", 366 | "metadata": {}, 367 | "source": [ 368 | "除此之外,我们会发现整个数据中有一些丢失数据,这些丢失数据都是 'NA',我们没有办法将这些数据输入到网络中,所以需要对这些丢失数据进行赋值,这里我们将数据的均值填入到丢失数据中" 369 | ] 370 | }, 371 | { 372 | "cell_type": "code", 373 | "execution_count": 9, 374 | "metadata": {}, 375 | "outputs": [], 376 | "source": [ 377 | "all_features = all_features.fillna(all_features.mean())\n", 378 | "feat_dim = all_features.shape[1]" 379 | ] 380 | }, 381 | { 382 | "cell_type": "markdown", 383 | "metadata": {}, 384 | "source": [ 385 | "前面我们已经做好了数据的预处理,下面我们将所有的训练集和验证集都取出成为一个 numpy 的数组" 386 | ] 387 | }, 388 | { 389 | "cell_type": "code", 390 | "execution_count": 10, 391 | "metadata": {}, 392 | "outputs": [], 393 | "source": [ 394 | "num_train = int(0.9 * train.shape[0]) # 划分训练样本和验证集样本\n", 395 | "indices = np.arange(train.shape[0])\n", 396 | "np.random.shuffle(indices) # shuffle 顺序\n", 397 | "train_indices = indices[:num_train]\n", 398 | "valid_indices = indices[num_train:]\n", 399 | "\n", 400 | "# 提取训练集和验证集的特征\n", 401 | "train_features = all_features.iloc[train_indices].values.astype(np.float32)\n", 402 | "train_features = torch.from_numpy(train_features)\n", 403 | "valid_features = all_features.iloc[valid_indices].values.astype(np.float32)\n", 404 | "valid_features = torch.from_numpy(valid_features)\n", 405 | "train_valid_features = all_features[:train.shape[0]].values.astype(np.float32)\n", 406 | "train_valid_features = torch.from_numpy(train_valid_features)\n", 407 | "\n", 408 | "# 提取训练集和验证集的label\n", 409 | "train_labels = train['SalePrice'].values[train_indices, None].astype(np.float32)\n", 410 | "train_labels = torch.from_numpy(train_labels)\n", 411 | "valid_labels = train['SalePrice'].values[valid_indices, None].astype(np.float32)\n", 412 | "valid_labels = torch.from_numpy(valid_labels)\n", 413 | "train_valid_labels = train['SalePrice'].values[:, None].astype(np.float32)\n", 414 | "train_valid_labels = torch.from_numpy(train_valid_labels)" 415 | ] 416 | }, 417 | { 418 | "cell_type": "code", 419 | "execution_count": 11, 420 | "metadata": {}, 421 | "outputs": [], 422 | "source": [ 423 | "test_features = all_features[train.shape[0]:].values.astype(np.float32)\n", 424 | "test_features = torch.from_numpy(test_features)" 425 | ] 426 | }, 427 | { 428 | "cell_type": "markdown", 429 | "metadata": {}, 430 | "source": [ 431 | "下面是构建神经网络的地方,可以构建任意想要的神经网络" 432 | ] 433 | }, 434 | { 435 | "cell_type": "code", 436 | "execution_count": 12, 437 | "metadata": {}, 438 | "outputs": [ 439 | { 440 | "name": "stdout", 441 | "output_type": "stream", 442 | "text": [ 443 | "Sequential(\n", 444 | " (0): Linear(in_features=331, out_features=1, bias=True)\n", 445 | ")\n" 446 | ] 447 | } 448 | ], 449 | "source": [ 450 | "def get_model():\n", 451 | " net = nn.Sequential(\n", 452 | " nn.Linear(feat_dim, 1)\n", 453 | " )\n", 454 | " return net\n", 455 | "\n", 456 | "net = get_model()\n", 457 | "print(net)" 458 | ] 459 | }, 460 | { 461 | "cell_type": "markdown", 462 | "metadata": {}, 463 | "source": [ 464 | "在评估模型的时候,为了保证大的价格和小的价格对模型都有着近似相同的影响,我们不会直接使用前面定义的均方误差作为最后的评价函数,我们会对预测的价格和真实的价格取 log,然后计算他们之间均方误差的平方根来作为评价指标,这里的指标我们已经在 `utils.py` 中实现了,感兴趣的同学可以去看看。" 465 | ] 466 | }, 467 | { 468 | "cell_type": "code", 469 | "execution_count": 13, 470 | "metadata": {}, 471 | "outputs": [], 472 | "source": [ 473 | "from utils import train_model, pred" 474 | ] 475 | }, 476 | { 477 | "cell_type": "code", 478 | "execution_count": 15, 479 | "metadata": { 480 | "scrolled": false 481 | }, 482 | "outputs": [ 483 | { 484 | "name": "stdout", 485 | "output_type": "stream", 486 | "text": [ 487 | "epoch: 10, train rmse: 0.176, valid rmse: 0.164\n", 488 | "\n", 489 | "epoch: 20, train rmse: 0.142, valid rmse: 0.145\n", 490 | "\n", 491 | "epoch: 30, train rmse: 0.125, valid rmse: 0.138\n", 492 | "\n", 493 | "epoch: 40, train rmse: 0.115, valid rmse: 0.132\n", 494 | "\n", 495 | "epoch: 50, train rmse: 0.109, valid rmse: 0.130\n", 496 | "\n", 497 | "epoch: 60, train rmse: 0.105, valid rmse: 0.123\n", 498 | "\n", 499 | "epoch: 70, train rmse: 0.102, valid rmse: 0.122\n", 500 | "\n", 501 | "epoch: 80, train rmse: 0.101, valid rmse: 0.119\n", 502 | "\n", 503 | "epoch: 90, train rmse: 0.099, valid rmse: 0.118\n", 504 | "\n", 505 | "epoch: 100, train rmse: 0.098, valid rmse: 0.116\n", 506 | "\n" 507 | ] 508 | }, 509 | { 510 | "data": { 511 | "image/png": "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\n", 512 | "text/plain": [ 513 | "
" 514 | ] 515 | }, 516 | "metadata": {}, 517 | "output_type": "display_data" 518 | } 519 | ], 520 | "source": [ 521 | "# 可以调整的超参\n", 522 | "batch_size = 128\n", 523 | "epochs = 100\n", 524 | "lr = 0.01\n", 525 | "wd = 0\n", 526 | "use_gpu = False\n", 527 | "\n", 528 | "net = get_model()\n", 529 | "train_model(net, train_features, train_labels, valid_features, valid_labels, epochs, \n", 530 | " batch_size, lr, wd, use_gpu)" 531 | ] 532 | }, 533 | { 534 | "cell_type": "markdown", 535 | "metadata": {}, 536 | "source": [ 537 | "当我们构建好了训练的过程,下面就开始了不断地调参尝试,最后得到一个效果最好的模型" 538 | ] 539 | }, 540 | { 541 | "cell_type": "code", 542 | "execution_count": 16, 543 | "metadata": {}, 544 | "outputs": [ 545 | { 546 | "name": "stdout", 547 | "output_type": "stream", 548 | "text": [ 549 | "epoch: 10, train rmse: 0.178\n", 550 | "\n", 551 | "epoch: 20, train rmse: 0.137\n", 552 | "\n", 553 | "epoch: 30, train rmse: 0.120\n", 554 | "\n", 555 | "epoch: 40, train rmse: 0.111\n", 556 | "\n", 557 | "epoch: 50, train rmse: 0.106\n", 558 | "\n", 559 | "epoch: 60, train rmse: 0.103\n", 560 | "\n", 561 | "epoch: 70, train rmse: 0.101\n", 562 | "\n", 563 | "epoch: 80, train rmse: 0.099\n", 564 | "\n", 565 | "epoch: 90, train rmse: 0.098\n", 566 | "\n", 567 | "epoch: 100, train rmse: 0.098\n", 568 | "\n" 569 | ] 570 | }, 571 | { 572 | "data": { 573 | "image/png": "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\n", 574 | "text/plain": [ 575 | "
" 576 | ] 577 | }, 578 | "metadata": {}, 579 | "output_type": "display_data" 580 | } 581 | ], 582 | "source": [ 583 | "net = get_model()\n", 584 | "train_model(net, train_valid_features, train_valid_labels, None, None, epochs, \n", 585 | " batch_size, lr, wd, use_gpu)" 586 | ] 587 | }, 588 | { 589 | "cell_type": "markdown", 590 | "metadata": {}, 591 | "source": [ 592 | "运行下面的代码,可以通过训练好的模型预测 testset 的结果,会在当前目录生成 `submission.csv` 用于提交" 593 | ] 594 | }, 595 | { 596 | "cell_type": "code", 597 | "execution_count": 17, 598 | "metadata": {}, 599 | "outputs": [], 600 | "source": [ 601 | "pred(net, test, test_features)" 602 | ] 603 | } 604 | ], 605 | "metadata": { 606 | "kernelspec": { 607 | "display_name": "Python 3", 608 | "language": "python", 609 | "name": "python3" 610 | }, 611 | "language_info": { 612 | "codemirror_mode": { 613 | "name": "ipython", 614 | "version": 3 615 | }, 616 | "file_extension": ".py", 617 | "mimetype": "text/x-python", 618 | "name": "python", 619 | "nbconvert_exporter": "python", 620 | "pygments_lexer": "ipython3", 621 | "version": "3.5.0" 622 | } 623 | }, 624 | "nbformat": 4, 625 | "nbformat_minor": 2 626 | } 627 | --------------------------------------------------------------------------------