👋🏻 I'm Pamela Fox (@pamelafox everywhere)
Today we will..
import urllib.request
import zipfile
import pandas as pd
url = 'https://info.stackoverflowsolutions.com/rs/719-EMH-566/images/stack-overflow-developer-survey-2022.zip'
filehandle, _ = urllib.request.urlretrieve(url)
zip_file_object = zipfile.ZipFile(filehandle, 'r')
file = zip_file_object.open('survey_results_public.csv')
survey_data = pd.read_csv(file)
pd.set_option('display.max_columns', None)
pd.set_option('display.float_format', lambda x: '%.5f' % x)
survey_data.tail(3)
ResponseId | MainBranch | Employment | RemoteWork | CodingActivities | EdLevel | LearnCode | LearnCodeOnline | LearnCodeCoursesCert | YearsCode | YearsCodePro | DevType | OrgSize | PurchaseInfluence | BuyNewTool | Country | Currency | CompTotal | CompFreq | LanguageHaveWorkedWith | LanguageWantToWorkWith | DatabaseHaveWorkedWith | DatabaseWantToWorkWith | PlatformHaveWorkedWith | PlatformWantToWorkWith | WebframeHaveWorkedWith | WebframeWantToWorkWith | MiscTechHaveWorkedWith | MiscTechWantToWorkWith | ToolsTechHaveWorkedWith | ToolsTechWantToWorkWith | NEWCollabToolsHaveWorkedWith | NEWCollabToolsWantToWorkWith | OpSysProfessional use | OpSysPersonal use | VersionControlSystem | VCInteraction | VCHostingPersonal use | VCHostingProfessional use | OfficeStackAsyncHaveWorkedWith | OfficeStackAsyncWantToWorkWith | OfficeStackSyncHaveWorkedWith | OfficeStackSyncWantToWorkWith | Blockchain | NEWSOSites | SOVisitFreq | SOAccount | SOPartFreq | SOComm | Age | Gender | Trans | Sexuality | Ethnicity | Accessibility | MentalHealth | TBranch | ICorPM | WorkExp | Knowledge_1 | Knowledge_2 | Knowledge_3 | Knowledge_4 | Knowledge_5 | Knowledge_6 | Knowledge_7 | Frequency_1 | Frequency_2 | Frequency_3 | TimeSearching | TimeAnswering | Onboarding | ProfessionalTech | TrueFalse_1 | TrueFalse_2 | TrueFalse_3 | SurveyLength | SurveyEase | ConvertedCompYearly | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
73265 | 73266 | I am not primarily a developer, but I write co... | Employed, full-time | Hybrid (some remote, some in-person) | Hobby;School or academic work | Bachelor’s degree (B.A., B.S., B.Eng., etc.) | Books / Physical media;Other online resources ... | Technical documentation;Programming Games;Stac... | Udemy;Codecademy;Pluralsight;edX | 42 | 33 | Developer, full-stack;Developer, desktop or en... | 20 to 99 employees | I have a great deal of influence | Start a free trial;Ask developers I know/work ... | United States of America | USD\tUnited States dollar | NaN | NaN | HTML/CSS;JavaScript;PHP;Python;SQL | C#;HTML/CSS;JavaScript;PHP;Python;SQL | MariaDB;Microsoft SQL Server;MySQL;PostgreSQL;... | MariaDB;Microsoft SQL Server;MySQL;PostgreSQL;... | Managed Hosting;Microsoft Azure;VMware | Firebase;Linode;Managed Hosting;Microsoft Azur... | ASP.NET;React.js | ASP.NET;ASP.NET Core ;Blazor;Laravel;Next.js;R... | .NET;Pandas;React Native | .NET;Cordova;Ionic;Pandas;React Native;Xamarin | npm | npm;Unreal Engine | Spyder;Visual Studio;Visual Studio Code | Spyder;Visual Studio;Visual Studio Code | Windows | Windows | Git | Code editor;Command-line;Version control hosti... | NaN | NaN | Microsoft Lists | Microsoft Lists | Microsoft Teams;Zoom | Microsoft Teams;Zoom | Very unfavorable | Stack Overflow;Stack Exchange | Multiple times per day | Yes | Less than once per month or monthly | Yes, somewhat | 55-64 years old | Man | No | Straight / Heterosexual | Multiracial | None of the above | None of the above | Yes | Independent contributor | 42.00000 | Disagree | Neither agree nor disagree | Disagree | Agree | Agree | Agree | Neither agree nor disagree | Never | Never | Never | 30-60 minutes a day | 60-120 minutes a day | Just right | None of these | No | No | No | Appropriate in length | Easy | NaN |
73266 | 73267 | I am a developer by profession | Employed, full-time | Hybrid (some remote, some in-person) | Hobby | Bachelor’s degree (B.A., B.S., B.Eng., etc.) | Books / Physical media;On the job training | NaN | NaN | 50 | 31 | Developer, front-end;Developer, desktop or ent... | 10 to 19 employees | I have a great deal of influence | Start a free trial;Visit developer communities... | United Kingdom of Great Britain and Northern I... | GBP\tPound sterling | 58500.00000 | Yearly | C#;Delphi;VBA | Delphi | Microsoft SQL Server;MongoDB;Oracle | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | RAD Studio (Delphi, C++ Builder);Visual Studio | RAD Studio (Delphi, C++ Builder);Visual Studio | Windows | Windows | SVN | Dedicated version control GUI application | NaN | NaN | NaN | NaN | Zoom | Zoom | Indifferent | Stack Overflow | Daily or almost daily | Yes | I have never participated in Q&A on Stack Over... | No, not at all | 55-64 years old | Man | No | Straight / Heterosexual | European | None of the above | None of the above | No | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Appropriate in length | Easy | NaN |
73267 | 73268 | I used to be a developer by profession, but no... | Independent contractor, freelancer, or self-em... | Fully remote | Hobby;Contribute to open-source projects;Boots... | Bachelor’s degree (B.A., B.S., B.Eng., etc.) | Books / Physical media;Friend or family member... | Technical documentation;Blogs;Programming Game... | Udemy;Pluralsight | 16 | 5 | Developer, front-end;Engineer, data;Engineer, ... | NaN | NaN | Start a free trial;Visit developer communities... | Canada | NaN | NaN | NaN | C#;JavaScript;Lua;PowerShell;SQL;TypeScript | PowerShell;Rust;TypeScript | Microsoft SQL Server;Neo4j;Redis | Neo4j;Redis | Microsoft Azure | AWS;Google Cloud;Microsoft Azure;OpenStack | ASP.NET Core ;Blazor;Node.js;React.js;Svelte | ASP.NET Core ;Node.js;Svelte | Apache Kafka;Apache Spark | NaN | Docker;Kubernetes;npm;Pulumi;Terraform | Docker;Kubernetes;npm;Pulumi;Terraform | Visual Studio;Visual Studio Code | Neovim;Visual Studio Code | Linux-based;Windows | Linux-based;Windows | Git | Code editor;Command-line;Version control hosti... | NaN | NaN | Confluence;Jira Work Management;Trello;Wrike | NaN | Microsoft Teams;Slack;Zoom | Slack;Zoom | Favorable | Collectives on Stack Overflow;Stack Overflow;S... | Daily or almost daily | Yes | Less than once per month or monthly | Yes, somewhat | 25-34 years old | Man | No | Straight / Heterosexual | Or, in your own words: | None of the above | None of the above | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Appropriate in length | Easy | NaN |
label = "ConvertedCompYearly"
# Drop rows with no data
survey_data = survey_data.dropna(subset = [label])
# Drop rows with extreme outliers
survey_data = survey_data.drop(survey_data[survey_data[label] > 400000].index)
# Check if the numbers look reasonable
survey_data[[label]].describe()
ConvertedCompYearly | |
---|---|
count | 36260.00000 |
mean | 80720.59956 |
std | 65852.55164 |
min | 1.00000 |
25% | 33888.75000 |
50% | 63986.00000 |
75% | 110000.00000 |
max | 400000.00000 |
numeric_features = ['YearsCode', 'YearsCodePro']
for col_name in numeric_features:
survey_data[col_name] = pd.to_numeric(survey_data[col_name], errors='coerce')
survey_data = survey_data.dropna(subset = [col_name])
survey_data[numeric_features].describe()
YearsCode | YearsCodePro | |
---|---|---|
count | 34685.00000 | 34685.00000 |
mean | 14.65435 | 9.84965 |
std | 9.39327 | 8.06248 |
min | 1.00000 | 1.00000 |
25% | 8.00000 | 4.00000 |
50% | 12.00000 | 7.00000 |
75% | 20.00000 | 14.00000 |
max | 50.00000 | 50.00000 |
import matplotlib.pyplot as plt
label_data = survey_data[label]
fig = plt.figure(figsize=(6, 4))
ax = fig.gca()
ax.hist(label_data, bins=100)
ax.set_ylabel('Frequency')
ax.axvline(label_data.mean(), color='magenta', linestyle='dashed', linewidth=2)
ax.axvline(label_data.median(), color='cyan', linestyle='dashed', linewidth=2)
<matplotlib.lines.Line2D at 0x7f69c069bbe0>
fig, axes = plt.subplots(nrows=1, ncols=len(numeric_features), figsize=(12, 4))
for ind, col_name in enumerate(numeric_features):
feature = survey_data[col_name]
axis = axes[ind]
feature.hist(bins=100, ax = axis)
axis.axvline(feature.mean(), color='magenta', linestyle='dashed', linewidth=2)
axis.axvline(feature.median(), color='cyan', linestyle='dashed', linewidth=2)
axis.set_title(col_name)
fig, axes = plt.subplots(nrows=1, ncols=len(numeric_features), figsize=(12, 4), sharey=True)
for ind, feature in enumerate(numeric_features):
label_data = survey_data[label]
feature_data = survey_data[feature]
correlation = feature_data.corr(label_data)
axis = axes[ind]
axis.scatter(x=feature_data, y=label_data)
axis.set_xlabel(feature)
axis.set_ylabel(label)
axis.set_title(f'{label} vs {feature}\n Correlation: {correlation}')
# Separate features and labels
X = survey_data[numeric_features].values
y = survey_data[label].values
print('Features:', X[:5], '\nLabels:', y[:5], sep='\n')
Features: [[14. 5.] [20. 17.] [ 6. 6.] [ 5. 2.] [12. 10.]] Labels: [ 40205. 215232. 49056. 60307. 194400.]
from sklearn.model_selection import train_test_split
# Split data 70%-30% into training set and test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
print(f'Training Set: {X_train.shape[0]} rows\n Test Set: {X_test.shape[0]} rows')
Training Set: 24279 rows Test Set: 10406 rows
from sklearn.linear_model import LinearRegression
model = LinearRegression().fit(X_train, y_train)
print(model.coef_)
print(model.intercept_)
[1217.86632664 1368.82985741] 50980.52584717244
import numpy as np
predictions = model.predict(X_test)
np.set_printoptions(suppress=True)
print('Predicted labels: ', np.round(predictions)[:8])
print('Actual labels : ', y_test[:8])
Predicted labels: [83853. 61176. 72590. 59958. 78679. 65897. 67266. 65897.] Actual labels : [47350. 51763. 13212. 50. 38392. 3864. 14952. 58654.]
plt.scatter(y_test, predictions)
plt.xlabel(f'Actual {label}')
plt.ylabel(f'Predicted {label}')
# Overlay the regression line
z = np.polyfit(y_test, predictions, 1)
p = np.poly1d(z)
plt.plot(y_test, p(y_test), color='magenta')
[<matplotlib.lines.Line2D at 0x7f69aa140730>]
from sklearn.metrics import mean_squared_error, r2_score
mse = mean_squared_error(y_test, predictions)
print(" MSE:", mse)
rmse = mean_squared_error(y_test, predictions, squared=False)
print("RMSE:", rmse)
r2 = r2_score(y_test, predictions)
print(" R2:", r2)
MSE: 3842062015.322757 RMSE: 61984.36912095465 R2: 0.11560901481494401
https://scikit-learn.org/stable/tutorial/machine_learning_map/index.html
eval_results = pd.DataFrame(columns=['Model', 'RMSE', 'R2'])
def evaluate_model():
predictions = model.predict(X_test)
rmse = mean_squared_error(y_test, predictions, squared=False)
r2 = r2_score(y_test, predictions)
eval_results.loc[len(eval_results.index)] = [str(model), round(rmse, 4), round(r2, 4)]
print(eval_results)
# Plot predicted vs actual
plt.figure(figsize=(4, 3))
plt.scatter(y_test, predictions)
plt.xlabel(f'Actual {label}')
plt.ylabel(f'Predicted {label}')
# Overlay the regression line
z = np.polyfit(y_test, predictions, 1)
p = np.poly1d(z)
plt.plot(y_test,p(y_test), color='magenta')
evaluate_model()
Model RMSE R2 0 LinearRegression() 61984.36910 0.11560
from sklearn.linear_model import Lasso
model = Lasso().fit(X_train, y_train)
evaluate_model()
Model RMSE R2 0 LinearRegression() 61984.36910 0.11560 1 Lasso() 61984.38170 0.11560
Decision trees can be used for both regression and classification problems.
from sklearn.tree import DecisionTreeRegressor
from sklearn.tree import export_text, plot_tree
model = DecisionTreeRegressor().fit(X_train, y_train)
print(export_text(model))
|--- feature_1 <= 5.50 | |--- feature_1 <= 3.50 | | |--- feature_0 <= 5.50 | | | |--- feature_1 <= 2.50 | | | | |--- feature_1 <= 1.50 | | | | | |--- feature_0 <= 4.50 | | | | | | |--- feature_0 <= 2.50 | | | | | | | |--- feature_0 <= 1.50 | | | | | | | | |--- value: [37270.89] | | | | | | | |--- feature_0 > 1.50 | | | | | | | | |--- value: [36898.44] | | | | | | |--- feature_0 > 2.50 | | | | | | | |--- feature_0 <= 3.50 | | | | | | | | |--- value: [35367.96] | | | | | | | |--- feature_0 > 3.50 | | | | | | | | |--- value: [33697.34] | | | | | |--- feature_0 > 4.50 | | | | | | |--- value: [40808.42] | | | | |--- feature_1 > 1.50 | | | | | |--- feature_0 <= 1.50 | | | | | | |--- value: [11964.00] | | | | | |--- feature_0 > 1.50 | | | | | | |--- feature_0 <= 3.50 | | | | | | | |--- feature_0 <= 2.50 | | | | | | | | |--- value: [39385.97] | | | | | | | |--- feature_0 > 2.50 | | | | | | | | |--- value: [44161.23] | | | | | | |--- feature_0 > 3.50 | | | | | | | |--- feature_0 <= 4.50 | | | | | | | | |--- value: [40965.31] | | | | | | | |--- feature_0 > 4.50 | | | | | | | | |--- value: [41233.60] | | | |--- feature_1 > 2.50 | | | | |--- feature_0 <= 1.50 | | | | | |--- value: [7342.33] | | | | |--- feature_0 > 1.50 | | | | | |--- feature_0 <= 3.50 | | | | | | |--- feature_0 <= 2.50 | | | | | | | |--- value: [49890.40] | | | | | | |--- feature_0 > 2.50 | | | | | | | |--- value: [51303.05] | | | | | |--- feature_0 > 3.50 | | | | | | |--- feature_0 <= 4.50 | | | | | | | |--- value: [49140.62] | | | | | | |--- feature_0 > 4.50 | | | | | | | |--- value: [47903.70] | | |--- feature_0 > 5.50 | | | |--- feature_0 <= 7.50 | | | | |--- feature_1 <= 2.50 | | | | | |--- feature_1 <= 1.50 | | | | | | |--- feature_0 <= 6.50 | | | | | | | |--- value: [50489.73] | | | | | | |--- feature_0 > 6.50 | | | | | | | |--- value: [57876.80] | | | | | |--- feature_1 > 1.50 | | | | | | |--- feature_0 <= 6.50 | | | | | | | |--- value: [51929.98] | | | | | | |--- feature_0 > 6.50 | | | | | | | |--- value: [49263.41] | | | | |--- feature_1 > 2.50 | | | | | |--- feature_0 <= 6.50 | | | | | | |--- value: [54447.70] | | | | | |--- feature_0 > 6.50 | | | | | | |--- value: [51662.45] | | | |--- feature_0 > 7.50 | | | | |--- feature_0 <= 9.50 | | | | | |--- feature_1 <= 2.50 | | | | | | |--- feature_1 <= 1.50 | | | | | | | |--- feature_0 <= 8.50 | | | | | | | | |--- value: [62745.59] | | | | | | | |--- feature_0 > 8.50 | | | | | | | | |--- value: [60201.12] | | | | | | |--- feature_1 > 1.50 | | | | | | | |--- feature_0 <= 8.50 | | | | | | | | |--- value: [50811.06] | | | | | | | |--- feature_0 > 8.50 | | | | | | | | |--- value: [59180.19] | | | | | |--- feature_1 > 2.50 | | | | | | |--- feature_0 <= 8.50 | | | | | | | |--- value: [62011.19] | | | | | | |--- feature_0 > 8.50 | | | | | | | |--- value: [59750.55] | | | | |--- feature_0 > 9.50 | | | | | |--- feature_0 <= 11.50 | | | | | | |--- feature_1 <= 2.50 | | | | | | | |--- feature_0 <= 10.50 | | | | | | | | |--- feature_1 <= 1.50 | | | | | | | | | |--- value: [55476.51] | | | | | | | | |--- feature_1 > 1.50 | | | | | | | | | |--- value: [60625.45] | | | | | | | |--- feature_0 > 10.50 | | | | | | | | |--- feature_1 <= 1.50 | | | | | | | | | |--- value: [65397.75] | | | | | | | | |--- feature_1 > 1.50 | | | | | | | | | |--- value: [69882.32] | | | | | | |--- feature_1 > 2.50 | | | | | | | |--- feature_0 <= 10.50 | | | | | | | | |--- value: [70844.88] | | | | | | | |--- feature_0 > 10.50 | | | | | | | | |--- value: [81321.95] | | | | | |--- feature_0 > 11.50 | | | | | | |--- feature_1 <= 2.50 | | | | | | | |--- feature_0 <= 23.50 | | | | | | | | |--- feature_0 <= 20.50 | | | | | | | | | |--- feature_1 <= 1.50 | | | | | | | | | | |--- feature_0 <= 19.00 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- feature_0 > 19.00 | | | | | | | | | | | |--- value: [140000.00] | | | | | | | | | |--- feature_1 > 1.50 | | | | | | | | | | |--- feature_0 <= 12.50 | | | | | | | | | | | |--- value: [56428.32] | | | | | | | | | | |--- feature_0 > 12.50 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | |--- feature_0 > 20.50 | | | | | | | | | |--- feature_1 <= 1.50 | | | | | | | | | | |--- feature_0 <= 22.50 | | | | | | | | | | | |--- value: [35138.00] | | | | | | | | | | |--- feature_0 > 22.50 | | | | | | | | | | | |--- value: [39210.00] | | | | | | | | | |--- feature_1 > 1.50 | | | | | | | | | | |--- value: [18552.00] | | | | | | | |--- feature_0 > 23.50 | | | | | | | | |--- feature_0 <= 26.50 | | | | | | | | | |--- feature_0 <= 25.50 | | | | | | | | | | |--- feature_0 <= 24.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_0 > 24.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- feature_0 > 25.50 | | | | | | | | | | |--- value: [125639.00] | | | | | | | | |--- feature_0 > 26.50 | | | | | | | | | |--- feature_0 <= 28.50 | | | | | | | | | | |--- value: [56538.00] | | | | | | | | | |--- feature_0 > 28.50 | | | | | | | | | | |--- feature_0 <= 31.00 | | | | | | | | | | | |--- value: [93000.00] | | | | | | | | | | |--- feature_0 > 31.00 | | | | | | | | | | | |--- value: [61853.00] | | | | | | |--- feature_1 > 2.50 | | | | | | | |--- feature_0 <= 12.50 | | | | | | | | |--- value: [66735.76] | | | | | | | |--- feature_0 > 12.50 | | | | | | | | |--- feature_0 <= 25.50 | | | | | | | | | |--- feature_0 <= 17.50 | | | | | | | | | | |--- feature_0 <= 16.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- feature_0 > 16.50 | | | | | | | | | | | |--- value: [63424.17] | | | | | | | | | |--- feature_0 > 17.50 | | | | | | | | | | |--- feature_0 <= 19.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_0 > 19.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | |--- feature_0 > 25.50 | | | | | | | | | |--- feature_0 <= 32.50 | | | | | | | | | | |--- feature_0 <= 28.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_0 > 28.50 | | | | | | | | | | | |--- value: [33976.00] | | | | | | | | | |--- feature_0 > 32.50 | | | | | | | | | | |--- value: [10716.00] | |--- feature_1 > 3.50 | | |--- feature_0 <= 17.50 | | | |--- feature_1 <= 4.50 | | | | |--- feature_0 <= 11.50 | | | | | |--- feature_0 <= 2.50 | | | | | | |--- feature_0 <= 1.50 | | | | | | | |--- value: [8112.00] | | | | | | |--- feature_0 > 1.50 | | | | | | | |--- value: [22749.00] | | | | | |--- feature_0 > 2.50 | | | | | | |--- feature_0 <= 5.50 | | | | | | | |--- feature_0 <= 4.50 | | | | | | | | |--- feature_0 <= 3.50 | | | | | | | | | |--- value: [61238.55] | | | | | | | | |--- feature_0 > 3.50 | | | | | | | | | |--- value: [59011.41] | | | | | | | |--- feature_0 > 4.50 | | | | | | | | |--- value: [69155.02] | | | | | | |--- feature_0 > 5.50 | | | | | | | |--- feature_0 <= 7.50 | | | | | | | | |--- feature_0 <= 6.50 | | | | | | | | | |--- value: [56760.06] | | | | | | | | |--- feature_0 > 6.50 | | | | | | | | | |--- value: [58390.93] | | | | | | | |--- feature_0 > 7.50 | | | | | | | | |--- feature_0 <= 8.50 | | | | | | | | | |--- value: [60900.99] | | | | | | | | |--- feature_0 > 8.50 | | | | | | | | | |--- feature_0 <= 9.50 | | | | | | | | | | |--- value: [62614.07] | | | | | | | | | |--- feature_0 > 9.50 | | | | | | | | | | |--- feature_0 <= 10.50 | | | | | | | | | | | |--- value: [61737.77] | | | | | | | | | | |--- feature_0 > 10.50 | | | | | | | | | | | |--- value: [61338.88] | | | | |--- feature_0 > 11.50 | | | | | |--- feature_0 <= 12.50 | | | | | | |--- value: [85789.59] | | | | | |--- feature_0 > 12.50 | | | | | | |--- feature_0 <= 16.50 | | | | | | | |--- feature_0 <= 13.50 | | | | | | | | |--- value: [62401.15] | | | | | | | |--- feature_0 > 13.50 | | | | | | | | |--- feature_0 <= 14.50 | | | | | | | | | |--- value: [71848.38] | | | | | | | | |--- feature_0 > 14.50 | | | | | | | | | |--- feature_0 <= 15.50 | | | | | | | | | | |--- value: [62095.58] | | | | | | | | | |--- feature_0 > 15.50 | | | | | | | | | | |--- value: [69123.57] | | | | | | |--- feature_0 > 16.50 | | | | | | | |--- value: [98242.50] | | | |--- feature_1 > 4.50 | | | | |--- feature_0 <= 4.50 | | | | | |--- feature_0 <= 1.50 | | | | | | |--- value: [6270.00] | | | | | |--- feature_0 > 1.50 | | | | | | |--- feature_0 <= 3.50 | | | | | | | |--- feature_0 <= 2.50 | | | | | | | | |--- value: [48948.00] | | | | | | | |--- feature_0 > 2.50 | | | | | | | | |--- value: [69546.50] | | | | | | |--- feature_0 > 3.50 | | | | | | | |--- value: [30560.14] | | | | |--- feature_0 > 4.50 | | | | | |--- feature_0 <= 7.50 | | | | | | |--- feature_0 <= 5.50 | | | | | | | |--- value: [66301.90] | | | | | | |--- feature_0 > 5.50 | | | | | | | |--- feature_0 <= 6.50 | | | | | | | | |--- value: [71395.08] | | | | | | | |--- feature_0 > 6.50 | | | | | | | | |--- value: [72325.06] | | | | | |--- feature_0 > 7.50 | | | | | | |--- feature_0 <= 8.50 | | | | | | | |--- value: [62850.38] | | | | | | |--- feature_0 > 8.50 | | | | | | | |--- feature_0 <= 9.50 | | | | | | | | |--- value: [73502.41] | | | | | | | |--- feature_0 > 9.50 | | | | | | | | |--- feature_0 <= 12.50 | | | | | | | | | |--- feature_0 <= 11.50 | | | | | | | | | | |--- feature_0 <= 10.50 | | | | | | | | | | | |--- value: [67141.14] | | | | | | | | | | |--- feature_0 > 10.50 | | | | | | | | | | | |--- value: [66073.46] | | | | | | | | | |--- feature_0 > 11.50 | | | | | | | | | | |--- value: [62369.34] | | | | | | | | |--- feature_0 > 12.50 | | | | | | | | | |--- feature_0 <= 16.50 | | | | | | | | | | |--- feature_0 <= 13.50 | | | | | | | | | | | |--- value: [76903.76] | | | | | | | | | | |--- feature_0 > 13.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- feature_0 > 16.50 | | | | | | | | | | |--- value: [56244.67] | | |--- feature_0 > 17.50 | | | |--- feature_0 <= 39.50 | | | | |--- feature_0 <= 31.50 | | | | | |--- feature_0 <= 26.50 | | | | | | |--- feature_0 <= 25.50 | | | | | | | |--- feature_0 <= 23.50 | | | | | | | | |--- feature_0 <= 21.50 | | | | | | | | | |--- feature_0 <= 19.50 | | | | | | | | | | |--- feature_0 <= 18.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_0 > 18.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- feature_0 > 19.50 | | | | | | | | | | |--- feature_1 <= 4.50 | | | | | | | | | | | |--- value: [113629.44] | | | | | | | | | | |--- feature_1 > 4.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- feature_0 > 21.50 | | | | | | | | | |--- feature_1 <= 4.50 | | | | | | | | | | |--- feature_0 <= 22.50 | | | | | | | | | | | |--- value: [69487.67] | | | | | | | | | | |--- feature_0 > 22.50 | | | | | | | | | | | |--- value: [53421.50] | | | | | | | | | |--- feature_1 > 4.50 | | | | | | | | | | |--- feature_0 <= 22.50 | | | | | | | | | | | |--- value: [70791.00] | | | | | | | | | | |--- feature_0 > 22.50 | | | | | | | | | | | |--- value: [75503.60] | | | | | | | |--- feature_0 > 23.50 | | | | | | | | |--- feature_1 <= 4.50 | | | | | | | | | |--- feature_0 <= 24.50 | | | | | | | | | | |--- value: [210000.00] | | | | | | | | | |--- feature_0 > 24.50 | | | | | | | | | | |--- value: [102000.00] | | | | | | | | |--- feature_1 > 4.50 | | | | | | | | | |--- feature_0 <= 24.50 | | | | | | | | | | |--- value: [30000.00] | | | | | | | | | |--- feature_0 > 24.50 | | | | | | | | | | |--- value: [110430.50] | | | | | | |--- feature_0 > 25.50 | | | | | | | |--- value: [18528.00] | | | | | |--- feature_0 > 26.50 | | | | | | |--- feature_1 <= 4.50 | | | | | | | |--- feature_0 <= 29.50 | | | | | | | | |--- value: [67186.00] | | | | | | | |--- feature_0 > 29.50 | | | | | | | | |--- value: [55782.00] | | | | | | |--- feature_1 > 4.50 | | | | | | | |--- feature_0 <= 27.50 | | | | | | | | |--- value: [180580.67] | | | | | | | |--- feature_0 > 27.50 | | | | | | | | |--- feature_0 <= 29.00 | | | | | | | | | |--- value: [106157.00] | | | | | | | | |--- feature_0 > 29.00 | | | | | | | | | |--- value: [129192.50] | | | | |--- feature_0 > 31.50 | | | | | |--- feature_0 <= 38.50 | | | | | | |--- feature_1 <= 4.50 | | | | | | | |--- value: [47772.00] | | | | | | |--- feature_1 > 4.50 | | | | | | | |--- feature_0 <= 35.00 | | | | | | | | |--- value: [63000.00] | | | | | | | |--- feature_0 > 35.00 | | | | | | | | |--- feature_0 <= 37.50 | | | | | | | | | |--- value: [53322.00] | | | | | | | | |--- feature_0 > 37.50 | | | | | | | | | |--- value: [58654.00] | | | | | |--- feature_0 > 38.50 | | | | | | |--- value: [19200.00] | | | |--- feature_0 > 39.50 | | | | |--- feature_0 <= 43.00 | | | | | |--- value: [200000.00] | | | | |--- feature_0 > 43.00 | | | | | |--- value: [276407.00] |--- feature_1 > 5.50 | |--- feature_0 <= 19.50 | | |--- feature_1 <= 8.50 | | | |--- feature_0 <= 5.50 | | | | |--- feature_0 <= 2.50 | | | | | |--- feature_0 <= 1.50 | | | | | | |--- feature_1 <= 6.50 | | | | | | | |--- value: [10056.00] | | | | | | |--- feature_1 > 6.50 | | | | | | | |--- value: [45230.00] | | | | | |--- feature_0 > 1.50 | | | | | | |--- feature_1 <= 7.50 | | | | | | | |--- feature_1 <= 6.50 | | | | | | | | |--- value: [74651.00] | | | | | | | |--- feature_1 > 6.50 | | | | | | | | |--- value: [149101.50] | | | | | | |--- feature_1 > 7.50 | | | | | | | |--- value: [20124.00] | | | | |--- feature_0 > 2.50 | | | | | |--- feature_0 <= 4.50 | | | | | | |--- feature_0 <= 3.50 | | | | | | | |--- feature_1 <= 7.00 | | | | | | | | |--- value: [26684.00] | | | | | | | |--- feature_1 > 7.00 | | | | | | | | |--- value: [23513.00] | | | | | | |--- feature_0 > 3.50 | | | | | | | |--- feature_1 <= 6.50 | | | | | | | | |--- value: [56303.00] | | | | | | | |--- feature_1 > 6.50 | | | | | | | | |--- feature_1 <= 7.50 | | | | | | | | | |--- value: [40803.67] | | | | | | | | |--- feature_1 > 7.50 | | | | | | | | | |--- value: [51324.33] | | | | | |--- feature_0 > 4.50 | | | | | | |--- feature_1 <= 6.50 | | | | | | | |--- value: [13128.00] | | | | | | |--- feature_1 > 6.50 | | | | | | | |--- feature_1 <= 7.50 | | | | | | | | |--- value: [40025.33] | | | | | | | |--- feature_1 > 7.50 | | | | | | | | |--- value: [29270.80] | | | |--- feature_0 > 5.50 | | | | |--- feature_0 <= 13.50 | | | | | |--- feature_1 <= 6.50 | | | | | | |--- feature_0 <= 11.50 | | | | | | | |--- feature_0 <= 10.50 | | | | | | | | |--- feature_0 <= 9.50 | | | | | | | | | |--- feature_0 <= 8.50 | | | | | | | | | | |--- feature_0 <= 7.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_0 > 7.50 | | | | | | | | | | | |--- value: [75655.17] | | | | | | | | | |--- feature_0 > 8.50 | | | | | | | | | | |--- value: [68790.96] | | | | | | | | |--- feature_0 > 9.50 | | | | | | | | | |--- value: [80716.18] | | | | | | | |--- feature_0 > 10.50 | | | | | | | | |--- value: [71193.77] | | | | | | |--- feature_0 > 11.50 | | | | | | | |--- feature_0 <= 12.50 | | | | | | | | |--- value: [88607.60] | | | | | | | |--- feature_0 > 12.50 | | | | | | | | |--- value: [82968.30] | | | | | |--- feature_1 > 6.50 | | | | | | |--- feature_0 <= 6.50 | | | | | | | |--- feature_1 <= 7.50 | | | | | | | | |--- value: [36515.00] | | | | | | | |--- feature_1 > 7.50 | | | | | | | | |--- value: [28471.50] | | | | | | |--- feature_0 > 6.50 | | | | | | | |--- feature_0 <= 12.50 | | | | | | | | |--- feature_0 <= 9.50 | | | | | | | | | |--- feature_0 <= 7.50 | | | | | | | | | | |--- feature_1 <= 7.50 | | | | | | | | | | | |--- value: [80075.20] | | | | | | | | | | |--- feature_1 > 7.50 | | | | | | | | | | | |--- value: [73154.00] | | | | | | | | | |--- feature_0 > 7.50 | | | | | | | | | | |--- feature_1 <= 7.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_1 > 7.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- feature_0 > 9.50 | | | | | | | | | |--- feature_1 <= 7.50 | | | | | | | | | | |--- feature_0 <= 10.50 | | | | | | | | | | | |--- value: [80104.82] | | | | | | | | | | |--- feature_0 > 10.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- feature_1 > 7.50 | | | | | | | | | | |--- feature_0 <= 10.50 | | | | | | | | | | | |--- value: [81408.60] | | | | | | | | | | |--- feature_0 > 10.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | |--- feature_0 > 12.50 | | | | | | | | |--- feature_1 <= 7.50 | | | | | | | | | |--- value: [67261.49] | | | | | | | | |--- feature_1 > 7.50 | | | | | | | | | |--- value: [85483.88] | | | | |--- feature_0 > 13.50 | | | | | |--- feature_0 <= 17.50 | | | | | | |--- feature_0 <= 14.50 | | | | | | | |--- feature_1 <= 7.50 | | | | | | | | |--- feature_1 <= 6.50 | | | | | | | | | |--- value: [88952.04] | | | | | | | | |--- feature_1 > 6.50 | | | | | | | | | |--- value: [85756.15] | | | | | | | |--- feature_1 > 7.50 | | | | | | | | |--- value: [96456.45] | | | | | | |--- feature_0 > 14.50 | | | | | | | |--- feature_0 <= 16.50 | | | | | | | | |--- feature_0 <= 15.50 | | | | | | | | | |--- feature_1 <= 6.50 | | | | | | | | | | |--- value: [91810.31] | | | | | | | | | |--- feature_1 > 6.50 | | | | | | | | | | |--- feature_1 <= 7.50 | | | | | | | | | | | |--- value: [76975.14] | | | | | | | | | | |--- feature_1 > 7.50 | | | | | | | | | | | |--- value: [85768.50] | | | | | | | | |--- feature_0 > 15.50 | | | | | | | | | |--- feature_1 <= 6.50 | | | | | | | | | | |--- value: [69859.35] | | | | | | | | | |--- feature_1 > 6.50 | | | | | | | | | | |--- feature_1 <= 7.50 | | | | | | | | | | | |--- value: [103722.58] | | | | | | | | | | |--- feature_1 > 7.50 | | | | | | | | | | | |--- value: [79903.42] | | | | | | | |--- feature_0 > 16.50 | | | | | | | | |--- feature_1 <= 6.50 | | | | | | | | | |--- value: [72882.11] | | | | | | | | |--- feature_1 > 6.50 | | | | | | | | | |--- feature_1 <= 7.50 | | | | | | | | | | |--- value: [86950.23] | | | | | | | | | |--- feature_1 > 7.50 | | | | | | | | | | |--- value: [99023.78] | | | | | |--- feature_0 > 17.50 | | | | | | |--- feature_1 <= 6.50 | | | | | | | |--- feature_0 <= 18.50 | | | | | | | | |--- value: [133479.65] | | | | | | | |--- feature_0 > 18.50 | | | | | | | | |--- value: [49904.50] | | | | | | |--- feature_1 > 6.50 | | | | | | | |--- feature_1 <= 7.50 | | | | | | | | |--- feature_0 <= 18.50 | | | | | | | | | |--- value: [88563.89] | | | | | | | | |--- feature_0 > 18.50 | | | | | | | | | |--- value: [112462.14] | | | | | | | |--- feature_1 > 7.50 | | | | | | | | |--- feature_0 <= 18.50 | | | | | | | | | |--- value: [76315.25] | | | | | | | | |--- feature_0 > 18.50 | | | | | | | | | |--- value: [87300.67] | | |--- feature_1 > 8.50 | | | |--- feature_1 <= 10.50 | | | | |--- feature_0 <= 8.50 | | | | | |--- feature_0 <= 1.50 | | | | | | |--- value: [65433.00] | | | | | |--- feature_0 > 1.50 | | | | | | |--- feature_0 <= 5.00 | | | | | | | |--- feature_0 <= 2.50 | | | | | | | | |--- value: [31968.00] | | | | | | | |--- feature_0 > 2.50 | | | | | | | | |--- feature_0 <= 3.50 | | | | | | | | | |--- value: [15480.00] | | | | | | | | |--- feature_0 > 3.50 | | | | | | | | | |--- value: [4096.00] | | | | | | |--- feature_0 > 5.00 | | | | | | | |--- feature_0 <= 7.50 | | | | | | | | |--- feature_0 <= 6.50 | | | | | | | | | |--- value: [40188.00] | | | | | | | | |--- feature_0 > 6.50 | | | | | | | | | |--- value: [53112.00] | | | | | | | |--- feature_0 > 7.50 | | | | | | | | |--- value: [38538.00] | | | | |--- feature_0 > 8.50 | | | | | |--- feature_0 <= 13.50 | | | | | | |--- feature_0 <= 10.50 | | | | | | | |--- feature_1 <= 9.50 | | | | | | | | |--- feature_0 <= 9.50 | | | | | | | | | |--- value: [94047.95] | | | | | | | | |--- feature_0 > 9.50 | | | | | | | | | |--- value: [85484.10] | | | | | | | |--- feature_1 > 9.50 | | | | | | | | |--- feature_0 <= 9.50 | | | | | | | | | |--- value: [63903.00] | | | | | | | | |--- feature_0 > 9.50 | | | | | | | | | |--- value: [95114.31] | | | | | | |--- feature_0 > 10.50 | | | | | | | |--- feature_0 <= 11.50 | | | | | | | | |--- feature_1 <= 9.50 | | | | | | | | | |--- value: [91335.11] | | | | | | | | |--- feature_1 > 9.50 | | | | | | | | | |--- value: [73761.88] | | | | | | | |--- feature_0 > 11.50 | | | | | | | | |--- feature_1 <= 9.50 | | | | | | | | | |--- feature_0 <= 12.50 | | | | | | | | | | |--- value: [82751.88] | | | | | | | | | |--- feature_0 > 12.50 | | | | | | | | | | |--- value: [85572.50] | | | | | | | | |--- feature_1 > 9.50 | | | | | | | | | |--- feature_0 <= 12.50 | | | | | | | | | | |--- value: [95552.22] | | | | | | | | | |--- feature_0 > 12.50 | | | | | | | | | | |--- value: [86408.14] | | | | | |--- feature_0 > 13.50 | | | | | | |--- feature_0 <= 17.50 | | | | | | | |--- feature_1 <= 9.50 | | | | | | | | |--- feature_0 <= 14.50 | | | | | | | | | |--- value: [86368.74] | | | | | | | | |--- feature_0 > 14.50 | | | | | | | | | |--- feature_0 <= 16.50 | | | | | | | | | | |--- feature_0 <= 15.50 | | | | | | | | | | | |--- value: [98423.71] | | | | | | | | | | |--- feature_0 > 15.50 | | | | | | | | | | | |--- value: [94715.04] | | | | | | | | | |--- feature_0 > 16.50 | | | | | | | | | | |--- value: [100216.53] | | | | | | | |--- feature_1 > 9.50 | | | | | | | | |--- feature_0 <= 15.50 | | | | | | | | | |--- feature_0 <= 14.50 | | | | | | | | | | |--- value: [92609.31] | | | | | | | | | |--- feature_0 > 14.50 | | | | | | | | | | |--- value: [90807.90] | | | | | | | | |--- feature_0 > 15.50 | | | | | | | | | |--- feature_0 <= 16.50 | | | | | | | | | | |--- value: [86561.01] | | | | | | | | | |--- feature_0 > 16.50 | | | | | | | | | | |--- value: [89418.60] | | | | | | |--- feature_0 > 17.50 | | | | | | | |--- feature_1 <= 9.50 | | | | | | | | |--- feature_0 <= 18.50 | | | | | | | | | |--- value: [89401.05] | | | | | | | | |--- feature_0 > 18.50 | | | | | | | | | |--- value: [70036.10] | | | | | | | |--- feature_1 > 9.50 | | | | | | | | |--- feature_0 <= 18.50 | | | | | | | | | |--- value: [105519.88] | | | | | | | | |--- feature_0 > 18.50 | | | | | | | | | |--- value: [93141.80] | | | |--- feature_1 > 10.50 | | | | |--- feature_1 <= 15.50 | | | | | |--- feature_0 <= 12.50 | | | | | | |--- feature_1 <= 12.50 | | | | | | | |--- feature_0 <= 11.50 | | | | | | | | |--- feature_0 <= 7.50 | | | | | | | | | |--- feature_1 <= 11.50 | | | | | | | | | | |--- value: [75717.00] | | | | | | | | | |--- feature_1 > 11.50 | | | | | | | | | | |--- feature_0 <= 6.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- feature_0 > 6.50 | | | | | | | | | | | |--- value: [176628.00] | | | | | | | | |--- feature_0 > 7.50 | | | | | | | | | |--- feature_0 <= 10.50 | | | | | | | | | | |--- feature_1 <= 11.50 | | | | | | | | | | | |--- value: [122641.00] | | | | | | | | | | |--- feature_1 > 11.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- feature_0 > 10.50 | | | | | | | | | | |--- feature_1 <= 11.50 | | | | | | | | | | | |--- value: [87681.79] | | | | | | | | | | |--- feature_1 > 11.50 | | | | | | | | | | | |--- value: [185000.00] | | | | | | | |--- feature_0 > 11.50 | | | | | | | | |--- feature_1 <= 11.50 | | | | | | | | | |--- value: [135786.17] | | | | | | | | |--- feature_1 > 11.50 | | | | | | | | | |--- value: [108813.10] | | | | | | |--- feature_1 > 12.50 | | | | | | | |--- feature_1 <= 14.50 | | | | | | | | |--- feature_1 <= 13.50 | | | | | | | | | |--- feature_0 <= 10.50 | | | | | | | | | | |--- feature_0 <= 7.50 | | | | | | | | | | | |--- value: [59032.00] | | | | | | | | | | |--- feature_0 > 7.50 | | | | | | | | | | | |--- value: [8784.00] | | | | | | | | | |--- feature_0 > 10.50 | | | | | | | | | | |--- feature_0 <= 11.50 | | | | | | | | | | | |--- value: [59262.67] | | | | | | | | | | |--- feature_0 > 11.50 | | | | | | | | | | | |--- value: [60132.00] | | | | | | | | |--- feature_1 > 13.50 | | | | | | | | | |--- feature_0 <= 8.50 | | | | | | | | | | |--- value: [157836.00] | | | | | | | | | |--- feature_0 > 8.50 | | | | | | | | | | |--- value: [100000.00] | | | | | | | |--- feature_1 > 14.50 | | | | | | | | |--- feature_0 <= 6.00 | | | | | | | | | |--- feature_0 <= 4.00 | | | | | | | | | | |--- value: [37740.00] | | | | | | | | | |--- feature_0 > 4.00 | | | | | | | | | | |--- value: [7496.00] | | | | | | | | |--- feature_0 > 6.00 | | | | | | | | | |--- feature_0 <= 9.50 | | | | | | | | | | |--- value: [42657.00] | | | | | | | | | |--- feature_0 > 9.50 | | | | | | | | | | |--- value: [42003.67] | | | | | |--- feature_0 > 12.50 | | | | | | |--- feature_1 <= 13.50 | | | | | | | |--- feature_0 <= 15.50 | | | | | | | | |--- feature_0 <= 13.50 | | | | | | | | | |--- feature_1 <= 12.50 | | | | | | | | | | |--- feature_1 <= 11.50 | | | | | | | | | | | |--- value: [94498.45] | | | | | | | | | | |--- feature_1 > 11.50 | | | | | | | | | | | |--- value: [85448.43] | | | | | | | | | |--- feature_1 > 12.50 | | | | | | | | | | |--- value: [111978.16] | | | | | | | | |--- feature_0 > 13.50 | | | | | | | | | |--- feature_1 <= 12.50 | | | | | | | | | | |--- feature_0 <= 14.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_0 > 14.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- feature_1 > 12.50 | | | | | | | | | | |--- feature_0 <= 14.50 | | | | | | | | | | | |--- value: [82309.15] | | | | | | | | | | |--- feature_0 > 14.50 | | | | | | | | | | | |--- value: [78303.12] | | | | | | | |--- feature_0 > 15.50 | | | | | | | | |--- feature_1 <= 11.50 | | | | | | | | | |--- feature_0 <= 17.50 | | | | | | | | | | |--- feature_0 <= 16.50 | | | | | | | | | | | |--- value: [99169.47] | | | | | | | | | | |--- feature_0 > 16.50 | | | | | | | | | | | |--- value: [107152.30] | | | | | | | | | |--- feature_0 > 17.50 | | | | | | | | | | |--- feature_0 <= 18.50 | | | | | | | | | | | |--- value: [87812.84] | | | | | | | | | | |--- feature_0 > 18.50 | | | | | | | | | | | |--- value: [99527.41] | | | | | | | | |--- feature_1 > 11.50 | | | | | | | | | |--- feature_1 <= 12.50 | | | | | | | | | | |--- feature_0 <= 16.50 | | | | | | | | | | | |--- value: [99115.90] | | | | | | | | | | |--- feature_0 > 16.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- feature_1 > 12.50 | | | | | | | | | | |--- feature_0 <= 17.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_0 > 17.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | |--- feature_1 > 13.50 | | | | | | | |--- feature_0 <= 13.50 | | | | | | | | |--- feature_1 <= 14.50 | | | | | | | | | |--- value: [49956.00] | | | | | | | | |--- feature_1 > 14.50 | | | | | | | | | |--- value: [12024.00] | | | | | | | |--- feature_0 > 13.50 | | | | | | | | |--- feature_0 <= 18.50 | | | | | | | | | |--- feature_0 <= 15.50 | | | | | | | | | | |--- feature_0 <= 14.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_0 > 14.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- feature_0 > 15.50 | | | | | | | | | | |--- feature_0 <= 16.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_0 > 16.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | |--- feature_0 > 18.50 | | | | | | | | | |--- feature_1 <= 14.50 | | | | | | | | | | |--- value: [107201.12] | | | | | | | | | |--- feature_1 > 14.50 | | | | | | | | | | |--- value: [108224.74] | | | | |--- feature_1 > 15.50 | | | | | |--- feature_1 <= 23.50 | | | | | | |--- feature_0 <= 18.50 | | | | | | | |--- feature_0 <= 4.00 | | | | | | | | |--- feature_1 <= 19.00 | | | | | | | | | |--- value: [13908.00] | | | | | | | | |--- feature_1 > 19.00 | | | | | | | | | |--- value: [63986.00] | | | | | | | |--- feature_0 > 4.00 | | | | | | | | |--- feature_0 <= 8.00 | | | | | | | | | |--- value: [220000.00] | | | | | | | | |--- feature_0 > 8.00 | | | | | | | | | |--- feature_1 <= 18.50 | | | | | | | | | | |--- feature_0 <= 11.00 | | | | | | | | | | | |--- value: [180000.00] | | | | | | | | | | |--- feature_0 > 11.00 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | |--- feature_1 > 18.50 | | | | | | | | | | |--- feature_0 <= 15.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- feature_0 > 15.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | |--- feature_0 > 18.50 | | | | | | | |--- feature_1 <= 21.00 | | | | | | | | |--- feature_1 <= 18.50 | | | | | | | | | |--- feature_1 <= 17.50 | | | | | | | | | | |--- feature_1 <= 16.50 | | | | | | | | | | | |--- value: [80254.50] | | | | | | | | | | |--- feature_1 > 16.50 | | | | | | | | | | | |--- value: [80477.50] | | | | | | | | | |--- feature_1 > 17.50 | | | | | | | | | | |--- value: [74679.20] | | | | | | | | |--- feature_1 > 18.50 | | | | | | | | | |--- feature_1 <= 19.50 | | | | | | | | | | |--- value: [64942.67] | | | | | | | | | |--- feature_1 > 19.50 | | | | | | | | | | |--- value: [41580.00] | | | | | | | |--- feature_1 > 21.00 | | | | | | | | |--- value: [220000.00] | | | | | |--- feature_1 > 23.50 | | | | | | |--- feature_1 <= 30.00 | | | | | | | |--- value: [35196.00] | | | | | | |--- feature_1 > 30.00 | | | | | | | |--- value: [24928.00] | |--- feature_0 > 19.50 | | |--- feature_1 <= 22.50 | | | |--- feature_1 <= 13.50 | | | | |--- feature_0 <= 29.50 | | | | | |--- feature_0 <= 27.50 | | | | | | |--- feature_1 <= 12.50 | | | | | | | |--- feature_1 <= 6.50 | | | | | | | | |--- feature_0 <= 22.50 | | | | | | | | | |--- feature_0 <= 21.50 | | | | | | | | | | |--- feature_0 <= 20.50 | | | | | | | | | | | |--- value: [88233.48] | | | | | | | | | | |--- feature_0 > 20.50 | | | | | | | | | | | |--- value: [44796.00] | | | | | | | | | |--- feature_0 > 21.50 | | | | | | | | | | |--- value: [119659.75] | | | | | | | | |--- feature_0 > 22.50 | | | | | | | | | |--- feature_0 <= 26.00 | | | | | | | | | | |--- feature_0 <= 24.00 | | | | | | | | | | | |--- value: [59512.00] | | | | | | | | | | |--- feature_0 > 24.00 | | | | | | | | | | | |--- value: [63986.00] | | | | | | | | | |--- feature_0 > 26.00 | | | | | | | | | | |--- value: [115600.00] | | | | | | | |--- feature_1 > 6.50 | | | | | | | | |--- feature_0 <= 23.50 | | | | | | | | | |--- feature_0 <= 22.50 | | | | | | | | | | |--- feature_0 <= 21.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- feature_0 > 21.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | |--- feature_0 > 22.50 | | | | | | | | | | |--- feature_1 <= 8.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_1 > 8.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | |--- feature_0 > 23.50 | | | | | | | | | |--- feature_1 <= 11.50 | | | | | | | | | | |--- feature_1 <= 9.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- feature_1 > 9.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | |--- feature_1 > 11.50 | | | | | | | | | | |--- feature_0 <= 26.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- feature_0 > 26.50 | | | | | | | | | | | |--- value: [158997.00] | | | | | | |--- feature_1 > 12.50 | | | | | | | |--- feature_0 <= 22.50 | | | | | | | | |--- feature_0 <= 21.50 | | | | | | | | | |--- feature_0 <= 20.50 | | | | | | | | | | |--- value: [90337.61] | | | | | | | | | |--- feature_0 > 20.50 | | | | | | | | | | |--- value: [92938.50] | | | | | | | | |--- feature_0 > 21.50 | | | | | | | | | |--- value: [110061.26] | | | | | | | |--- feature_0 > 22.50 | | | | | | | | |--- feature_0 <= 26.50 | | | | | | | | | |--- feature_0 <= 25.50 | | | | | | | | | | |--- feature_0 <= 24.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_0 > 24.50 | | | | | | | | | | | |--- value: [93772.60] | | | | | | | | | |--- feature_0 > 25.50 | | | | | | | | | | |--- value: [51799.00] | | | | | | | | |--- feature_0 > 26.50 | | | | | | | | | |--- value: [98024.15] | | | | | |--- feature_0 > 27.50 | | | | | | |--- feature_1 <= 12.50 | | | | | | | |--- feature_1 <= 9.50 | | | | | | | | |--- feature_0 <= 28.50 | | | | | | | | | |--- value: [350000.00] | | | | | | | | |--- feature_0 > 28.50 | | | | | | | | | |--- feature_1 <= 8.50 | | | | | | | | | | |--- feature_1 <= 7.50 | | | | | | | | | | | |--- value: [99000.00] | | | | | | | | | | |--- feature_1 > 7.50 | | | | | | | | | | | |--- value: [96801.00] | | | | | | | | | |--- feature_1 > 8.50 | | | | | | | | | | |--- value: [145000.00] | | | | | | | |--- feature_1 > 9.50 | | | | | | | | |--- feature_1 <= 10.50 | | | | | | | | | |--- feature_0 <= 28.50 | | | | | | | | | | |--- value: [83828.67] | | | | | | | | | |--- feature_0 > 28.50 | | | | | | | | | | |--- value: [80553.67] | | | | | | | | |--- feature_1 > 10.50 | | | | | | | | | |--- feature_0 <= 28.50 | | | | | | | | | | |--- value: [129634.25] | | | | | | | | | |--- feature_0 > 28.50 | | | | | | | | | | |--- value: [101318.00] | | | | | | |--- feature_1 > 12.50 | | | | | | | |--- feature_0 <= 28.50 | | | | | | | | |--- value: [193408.00] | | | | | | | |--- feature_0 > 28.50 | | | | | | | | |--- value: [156168.00] | | | | |--- feature_0 > 29.50 | | | | | |--- feature_1 <= 10.50 | | | | | | |--- feature_0 <= 37.50 | | | | | | | |--- feature_1 <= 8.50 | | | | | | | | |--- feature_0 <= 36.00 | | | | | | | | | |--- feature_0 <= 34.00 | | | | | | | | | | |--- feature_0 <= 31.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- feature_0 > 31.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- feature_0 > 34.00 | | | | | | | | | | |--- feature_1 <= 6.50 | | | | | | | | | | | |--- value: [67845.00] | | | | | | | | | | |--- feature_1 > 6.50 | | | | | | | | | | | |--- value: [182850.00] | | | | | | | | |--- feature_0 > 36.00 | | | | | | | | | |--- feature_1 <= 6.50 | | | | | | | | | | |--- value: [65000.00] | | | | | | | | | |--- feature_1 > 6.50 | | | | | | | | | | |--- value: [49908.00] | | | | | | | |--- feature_1 > 8.50 | | | | | | | | |--- feature_0 <= 34.00 | | | | | | | | | |--- feature_0 <= 30.50 | | | | | | | | | | |--- feature_1 <= 9.50 | | | | | | | | | | | |--- value: [130000.00] | | | | | | | | | | |--- feature_1 > 9.50 | | | | | | | | | | | |--- value: [61990.71] | | | | | | | | | |--- feature_0 > 30.50 | | | | | | | | | | |--- feature_1 <= 9.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- feature_1 > 9.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | |--- feature_0 > 34.00 | | | | | | | | | |--- feature_1 <= 9.50 | | | | | | | | | | |--- value: [56538.00] | | | | | | | | | |--- feature_1 > 9.50 | | | | | | | | | | |--- value: [46850.00] | | | | | | |--- feature_0 > 37.50 | | | | | | | |--- feature_1 <= 8.50 | | | | | | | | |--- feature_0 <= 42.00 | | | | | | | | | |--- feature_1 <= 6.50 | | | | | | | | | | |--- value: [82728.00] | | | | | | | | | |--- feature_1 > 6.50 | | | | | | | | | | |--- feature_0 <= 40.50 | | | | | | | | | | | |--- value: [42634.00] | | | | | | | | | | |--- feature_0 > 40.50 | | | | | | | | | | | |--- value: [17916.00] | | | | | | | | |--- feature_0 > 42.00 | | | | | | | | | |--- value: [147000.00] | | | | | | | |--- feature_1 > 8.50 | | | | | | | | |--- feature_0 <= 39.50 | | | | | | | | | |--- feature_0 <= 38.50 | | | | | | | | | | |--- value: [112744.00] | | | | | | | | | |--- feature_0 > 38.50 | | | | | | | | | | |--- value: [60787.00] | | | | | | | | |--- feature_0 > 39.50 | | | | | | | | | |--- feature_1 <= 9.50 | | | | | | | | | | |--- value: [101550.50] | | | | | | | | | |--- feature_1 > 9.50 | | | | | | | | | | |--- value: [173950.50] | | | | | |--- feature_1 > 10.50 | | | | | | |--- feature_0 <= 33.50 | | | | | | | |--- feature_0 <= 31.00 | | | | | | | | |--- feature_1 <= 12.50 | | | | | | | | | |--- feature_1 <= 11.50 | | | | | | | | | | |--- value: [84325.33] | | | | | | | | | |--- feature_1 > 11.50 | | | | | | | | | | |--- value: [89986.43] | | | | | | | | |--- feature_1 > 12.50 | | | | | | | | | |--- value: [135019.00] | | | | | | | |--- feature_0 > 31.00 | | | | | | | | |--- feature_1 <= 11.50 | | | | | | | | | |--- value: [346000.00] | | | | | | | | |--- feature_1 > 11.50 | | | | | | | | | |--- feature_0 <= 32.50 | | | | | | | | | | |--- feature_1 <= 12.50 | | | | | | | | | | | |--- value: [43512.00] | | | | | | | | | | |--- feature_1 > 12.50 | | | | | | | | | | | |--- value: [95979.00] | | | | | | | | | |--- feature_0 > 32.50 | | | | | | | | | | |--- value: [199424.00] | | | | | | |--- feature_0 > 33.50 | | | | | | | |--- feature_0 <= 34.50 | | | | | | | | |--- feature_1 <= 11.50 | | | | | | | | | |--- value: [62828.50] | | | | | | | | |--- feature_1 > 11.50 | | | | | | | | | |--- value: [47646.00] | | | | | | | |--- feature_0 > 34.50 | | | | | | | | |--- feature_0 <= 41.00 | | | | | | | | | |--- feature_0 <= 39.00 | | | | | | | | | | |--- feature_0 <= 36.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- feature_0 > 36.50 | | | | | | | | | | | |--- value: [95979.00] | | | | | | | | | |--- feature_0 > 39.00 | | | | | | | | | | |--- feature_1 <= 12.50 | | | | | | | | | | | |--- value: [59724.00] | | | | | | | | | | |--- feature_1 > 12.50 | | | | | | | | | | | |--- value: [80000.00] | | | | | | | | |--- feature_0 > 41.00 | | | | | | | | | |--- value: [94230.00] | | | |--- feature_1 > 13.50 | | | | |--- feature_0 <= 20.50 | | | | | |--- feature_1 <= 15.50 | | | | | | |--- feature_1 <= 14.50 | | | | | | | |--- value: [97828.80] | | | | | | |--- feature_1 > 14.50 | | | | | | | |--- value: [98075.09] | | | | | |--- feature_1 > 15.50 | | | | | | |--- feature_1 <= 21.00 | | | | | | | |--- feature_1 <= 18.50 | | | | | | | | |--- feature_1 <= 17.50 | | | | | | | | | |--- feature_1 <= 16.50 | | | | | | | | | | |--- value: [111379.70] | | | | | | | | | |--- feature_1 > 16.50 | | | | | | | | | | |--- value: [112060.26] | | | | | | | | |--- feature_1 > 17.50 | | | | | | | | | |--- value: [102288.51] | | | | | | | |--- feature_1 > 18.50 | | | | | | | | |--- feature_1 <= 19.50 | | | | | | | | | |--- value: [120266.40] | | | | | | | | |--- feature_1 > 19.50 | | | | | | | | | |--- value: [113223.48] | | | | | | |--- feature_1 > 21.00 | | | | | | | |--- value: [85867.40] | | | | |--- feature_0 > 20.50 | | | | | |--- feature_0 <= 42.50 | | | | | | |--- feature_0 <= 36.50 | | | | | | | |--- feature_0 <= 24.50 | | | | | | | | |--- feature_1 <= 16.50 | | | | | | | | | |--- feature_0 <= 21.50 | | | | | | | | | | |--- feature_1 <= 14.50 | | | | | | | | | | | |--- value: [130558.29] | | | | | | | | | | |--- feature_1 > 14.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- feature_0 > 21.50 | | | | | | | | | | |--- feature_0 <= 22.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- feature_0 > 22.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | |--- feature_1 > 16.50 | | | | | | | | | |--- feature_1 <= 17.50 | | | | | | | | | | |--- feature_0 <= 22.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_0 > 22.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- feature_1 > 17.50 | | | | | | | | | | |--- feature_0 <= 23.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- feature_0 > 23.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | |--- feature_0 > 24.50 | | | | | | | | |--- feature_0 <= 26.50 | | | | | | | | | |--- feature_1 <= 16.50 | | | | | | | | | | |--- feature_1 <= 14.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_1 > 14.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- feature_1 > 16.50 | | | | | | | | | | |--- feature_1 <= 19.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- feature_1 > 19.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | |--- feature_0 > 26.50 | | | | | | | | | |--- feature_0 <= 27.50 | | | | | | | | | | |--- feature_1 <= 19.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- feature_1 > 19.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- feature_0 > 27.50 | | | | | | | | | | |--- feature_0 <= 35.50 | | | | | | | | | | | |--- truncated branch of depth 12 | | | | | | | | | | |--- feature_0 > 35.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | |--- feature_0 > 36.50 | | | | | | | |--- feature_1 <= 14.50 | | | | | | | | |--- value: [31993.00] | | | | | | | |--- feature_1 > 14.50 | | | | | | | | |--- feature_1 <= 16.50 | | | | | | | | | |--- feature_0 <= 39.50 | | | | | | | | | | |--- feature_0 <= 37.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_0 > 37.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- feature_0 > 39.50 | | | | | | | | | | |--- feature_1 <= 15.50 | | | | | | | | | | | |--- value: [99516.00] | | | | | | | | | | |--- feature_1 > 15.50 | | | | | | | | | | | |--- value: [59554.00] | | | | | | | | |--- feature_1 > 16.50 | | | | | | | | | |--- feature_1 <= 20.50 | | | | | | | | | | |--- feature_0 <= 37.50 | | | | | | | | | | | |--- value: [46708.00] | | | | | | | | | | |--- feature_0 > 37.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | |--- feature_1 > 20.50 | | | | | | | | | | |--- feature_1 <= 21.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- feature_1 > 21.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | |--- feature_0 > 42.50 | | | | | | |--- feature_0 <= 45.50 | | | | | | | |--- feature_0 <= 44.00 | | | | | | | | |--- value: [160000.00] | | | | | | | |--- feature_0 > 44.00 | | | | | | | | |--- feature_1 <= 17.50 | | | | | | | | | |--- value: [180000.00] | | | | | | | | |--- feature_1 > 17.50 | | | | | | | | | |--- value: [200000.00] | | | | | | |--- feature_0 > 45.50 | | | | | | | |--- value: [95979.00] | | |--- feature_1 > 22.50 | | | |--- feature_0 <= 37.50 | | | | |--- feature_0 <= 25.50 | | | | | |--- feature_0 <= 21.00 | | | | | | |--- feature_1 <= 26.00 | | | | | | | |--- feature_1 <= 24.00 | | | | | | | | |--- value: [79934.00] | | | | | | | |--- feature_1 > 24.00 | | | | | | | | |--- value: [10332.00] | | | | | | |--- feature_1 > 26.00 | | | | | | | |--- feature_1 <= 28.50 | | | | | | | | |--- value: [149301.00] | | | | | | | |--- feature_1 > 28.50 | | | | | | | | |--- value: [61627.67] | | | | | |--- feature_0 > 21.00 | | | | | | |--- feature_1 <= 24.50 | | | | | | | |--- feature_1 <= 23.50 | | | | | | | | |--- feature_0 <= 24.50 | | | | | | | | | |--- feature_0 <= 23.50 | | | | | | | | | | |--- value: [136610.43] | | | | | | | | | |--- feature_0 > 23.50 | | | | | | | | | | |--- value: [163801.29] | | | | | | | | |--- feature_0 > 24.50 | | | | | | | | | |--- value: [126186.66] | | | | | | | |--- feature_1 > 23.50 | | | | | | | | |--- feature_0 <= 24.50 | | | | | | | | | |--- value: [130249.84] | | | | | | | | |--- feature_0 > 24.50 | | | | | | | | | |--- value: [173364.60] | | | | | | |--- feature_1 > 24.50 | | | | | | | |--- feature_0 <= 22.50 | | | | | | | | |--- feature_1 <= 26.50 | | | | | | | | | |--- value: [178229.50] | | | | | | | | |--- feature_1 > 26.50 | | | | | | | | | |--- feature_1 <= 30.50 | | | | | | | | | | |--- value: [125973.00] | | | | | | | | | |--- feature_1 > 30.50 | | | | | | | | | | |--- value: [184005.00] | | | | | | | |--- feature_0 > 22.50 | | | | | | | | |--- feature_0 <= 24.00 | | | | | | | | | |--- value: [74651.00] | | | | | | | | |--- feature_0 > 24.00 | | | | | | | | | |--- feature_1 <= 32.50 | | | | | | | | | | |--- feature_1 <= 27.50 | | | | | | | | | | | |--- value: [120378.40] | | | | | | | | | | |--- feature_1 > 27.50 | | | | | | | | | | | |--- value: [124103.00] | | | | | | | | | |--- feature_1 > 32.50 | | | | | | | | | | |--- value: [85435.00] | | | | |--- feature_0 > 25.50 | | | | | |--- feature_0 <= 33.50 | | | | | | |--- feature_1 <= 32.50 | | | | | | | |--- feature_0 <= 31.50 | | | | | | | | |--- feature_1 <= 25.50 | | | | | | | | | |--- feature_0 <= 30.50 | | | | | | | | | | |--- feature_0 <= 27.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- feature_0 > 27.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | |--- feature_0 > 30.50 | | | | | | | | | | |--- feature_1 <= 23.50 | | | | | | | | | | | |--- value: [67538.40] | | | | | | | | | | |--- feature_1 > 23.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- feature_1 > 25.50 | | | | | | | | | |--- feature_1 <= 31.50 | | | | | | | | | | |--- feature_1 <= 29.50 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | | |--- feature_1 > 29.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | |--- feature_1 > 31.50 | | | | | | | | | | |--- feature_0 <= 28.00 | | | | | | | | | | | |--- value: [166368.00] | | | | | | | | | | |--- feature_0 > 28.00 | | | | | | | | | | | |--- value: [200000.00] | | | | | | | |--- feature_0 > 31.50 | | | | | | | | |--- feature_1 <= 24.50 | | | | | | | | | |--- feature_1 <= 23.50 | | | | | | | | | | |--- feature_0 <= 32.50 | | | | | | | | | | | |--- value: [121892.62] | | | | | | | | | | |--- feature_0 > 32.50 | | | | | | | | | | | |--- value: [70806.67] | | | | | | | | | |--- feature_1 > 23.50 | | | | | | | | | | |--- feature_0 <= 32.50 | | | | | | | | | | | |--- value: [131631.14] | | | | | | | | | | |--- feature_0 > 32.50 | | | | | | | | | | | |--- value: [219110.25] | | | | | | | | |--- feature_1 > 24.50 | | | | | | | | | |--- feature_1 <= 31.50 | | | | | | | | | | |--- feature_1 <= 30.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- feature_1 > 30.50 | | | | | | | | | | | |--- value: [71287.00] | | | | | | | | | |--- feature_1 > 31.50 | | | | | | | | | | |--- value: [127642.56] | | | | | | |--- feature_1 > 32.50 | | | | | | | |--- feature_1 <= 34.00 | | | | | | | | |--- value: [52916.67] | | | | | | | |--- feature_1 > 34.00 | | | | | | | | |--- feature_1 <= 38.00 | | | | | | | | | |--- feature_0 <= 28.50 | | | | | | | | | | |--- value: [85000.00] | | | | | | | | | |--- feature_0 > 28.50 | | | | | | | | | | |--- value: [79983.00] | | | | | | | | |--- feature_1 > 38.00 | | | | | | | | | |--- value: [57588.00] | | | | | |--- feature_0 > 33.50 | | | | | | |--- feature_1 <= 39.00 | | | | | | | |--- feature_1 <= 35.50 | | | | | | | | |--- feature_1 <= 33.50 | | | | | | | | | |--- feature_1 <= 28.50 | | | | | | | | | | |--- feature_1 <= 26.50 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | | |--- feature_1 > 26.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | |--- feature_1 > 28.50 | | | | | | | | | | |--- feature_1 <= 29.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | | | | |--- feature_1 > 29.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | |--- feature_1 > 33.50 | | | | | | | | | |--- feature_0 <= 34.50 | | | | | | | | | | |--- value: [180000.00] | | | | | | | | | |--- feature_0 > 34.50 | | | | | | | | | | |--- feature_1 <= 34.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- feature_1 > 34.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | |--- feature_1 > 35.50 | | | | | | | | |--- feature_1 <= 36.50 | | | | | | | | | |--- value: [80674.60] | | | | | | | | |--- feature_1 > 36.50 | | | | | | | | | |--- feature_1 <= 37.50 | | | | | | | | | | |--- value: [93625.20] | | | | | | | | | |--- feature_1 > 37.50 | | | | | | | | | | |--- value: [90456.00] | | | | | | |--- feature_1 > 39.00 | | | | | | | |--- value: [250000.00] | | | |--- feature_0 > 37.50 | | | | |--- feature_1 <= 45.50 | | | | | |--- feature_1 <= 44.50 | | | | | | |--- feature_0 <= 40.50 | | | | | | | |--- feature_1 <= 41.00 | | | | | | | | |--- feature_1 <= 35.50 | | | | | | | | | |--- feature_1 <= 24.50 | | | | | | | | | | |--- feature_0 <= 39.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- feature_0 > 39.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- feature_1 > 24.50 | | | | | | | | | | |--- feature_0 <= 39.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- feature_0 > 39.50 | | | | | | | | | | | |--- truncated branch of depth 9 | | | | | | | | |--- feature_1 > 35.50 | | | | | | | | | |--- feature_0 <= 38.50 | | | | | | | | | | |--- feature_1 <= 36.50 | | | | | | | | | | | |--- value: [65817.00] | | | | | | | | | | |--- feature_1 > 36.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | |--- feature_0 > 38.50 | | | | | | | | | | |--- feature_1 <= 37.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | | | |--- feature_1 > 37.50 | | | | | | | | | | | |--- truncated branch of depth 4 | | | | | | | |--- feature_1 > 41.00 | | | | | | | | |--- value: [300000.00] | | | | | | |--- feature_0 > 40.50 | | | | | | | |--- feature_0 <= 42.50 | | | | | | | | |--- feature_1 <= 25.50 | | | | | | | | | |--- feature_1 <= 23.50 | | | | | | | | | | |--- value: [135000.00] | | | | | | | | | |--- feature_1 > 23.50 | | | | | | | | | | |--- feature_0 <= 41.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | | | |--- feature_0 > 41.50 | | | | | | | | | | | |--- truncated branch of depth 2 | | | | | | | | |--- feature_1 > 25.50 | | | | | | | | | |--- feature_1 <= 26.50 | | | | | | | | | | |--- feature_0 <= 41.50 | | | | | | | | | | | |--- value: [103610.20] | | | | | | | | | | |--- feature_0 > 41.50 | | | | | | | | | | | |--- value: [93701.00] | | | | | | | | | |--- feature_1 > 26.50 | | | | | | | | | | |--- feature_1 <= 33.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | | |--- feature_1 > 33.50 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | |--- feature_0 > 42.50 | | | | | | | | |--- feature_1 <= 38.50 | | | | | | | | | |--- feature_1 <= 34.50 | | | | | | | | | | |--- feature_1 <= 30.50 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | | |--- feature_1 > 30.50 | | | | | | | | | | | |--- truncated branch of depth 6 | | | | | | | | | |--- feature_1 > 34.50 | | | | | | | | | | |--- feature_0 <= 47.50 | | | | | | | | | | | |--- truncated branch of depth 7 | | | | | | | | | | |--- feature_0 > 47.50 | | | | | | | | | | | |--- truncated branch of depth 3 | | | | | | | | |--- feature_1 > 38.50 | | | | | | | | | |--- feature_0 <= 49.50 | | | | | | | | | | |--- feature_1 <= 39.50 | | | | | | | | | | | |--- truncated branch of depth 5 | | | | | | | | | | |--- feature_1 > 39.50 | | | | | | | | | | | |--- truncated branch of depth 8 | | | | | | | | | |--- feature_0 > 49.50 | | | | | | | | | | |--- feature_1 <= 40.50 | | | | | | | | | | | |--- value: [212214.67] | | | | | | | | | | |--- feature_1 > 40.50 | | | | | | | | | | | |--- value: [185000.00] | | | | | |--- feature_1 > 44.50 | | | | | | |--- feature_0 <= 47.50 | | | | | | | |--- feature_0 <= 46.00 | | | | | | | | |--- value: [171211.00] | | | | | | | |--- feature_0 > 46.00 | | | | | | | | |--- value: [180000.00] | | | | | | |--- feature_0 > 47.50 | | | | | | | |--- feature_0 <= 48.50 | | | | | | | | |--- value: [400000.00] | | | | | | | |--- feature_0 > 48.50 | | | | | | | | |--- feature_0 <= 49.50 | | | | | | | | | |--- value: [202500.00] | | | | | | | | |--- feature_0 > 49.50 | | | | | | | | | |--- value: [175000.00] | | | | |--- feature_1 > 45.50 | | | | | |--- feature_0 <= 48.50 | | | | | | |--- feature_1 <= 47.50 | | | | | | | |--- feature_0 <= 45.00 | | | | | | | | |--- value: [135000.00] | | | | | | | |--- feature_0 > 45.00 | | | | | | | | |--- feature_0 <= 47.50 | | | | | | | | | |--- feature_0 <= 46.50 | | | | | | | | | | |--- value: [80000.00] | | | | | | | | | |--- feature_0 > 46.50 | | | | | | | | | | |--- value: [72492.00] | | | | | | | | |--- feature_0 > 47.50 | | | | | | | | | |--- value: [100000.00] | | | | | | |--- feature_1 > 47.50 | | | | | | | |--- value: [142618.00] | | | | | |--- feature_0 > 48.50 | | | | | | |--- feature_1 <= 49.50 | | | | | | | |--- feature_1 <= 48.50 | | | | | | | | |--- feature_0 <= 49.50 | | | | | | | | | |--- value: [75010.00] | | | | | | | | |--- feature_0 > 49.50 | | | | | | | | | |--- value: [42657.00] | | | | | | | |--- feature_1 > 48.50 | | | | | | | | |--- value: [7500.00] | | | | | | |--- feature_1 > 49.50 | | | | | | | |--- value: [86096.00]
plot_tree(model)
plt.show()
evaluate_model()
Model RMSE R2 0 LinearRegression() 61984.36910 0.11560 1 Lasso() 61984.38170 0.11560 2 DecisionTreeRegressor() 62859.92650 0.09040
Random forest applies an averaging function to multiple Decision Tree models for a better overall model.
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor().fit(X_train, y_train)
evaluate_model()
Model RMSE R2 0 LinearRegression() 61984.36910 0.11560 1 Lasso() 61984.38170 0.11560 2 DecisionTreeRegressor() 62859.92650 0.09040 3 RandomForestRegressor() 62486.58220 0.10120
Gradient tree boosting iterates on tree models to find the best one.
from sklearn.ensemble import GradientBoostingRegressor
model = GradientBoostingRegressor().fit(X_train, y_train)
evaluate_model()
Model RMSE R2 0 LinearRegression() 61984.36910 0.11560 1 Lasso() 61984.38170 0.11560 2 DecisionTreeRegressor() 62859.92650 0.09040 3 RandomForestRegressor() 62486.58220 0.10120 4 GradientBoostingRegressor() 61289.18180 0.13530
https://learn.microsoft.com/en-us/training/modules/train-evaluate-regression-models/6-improve-models
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import make_scorer, r2_score
# Use a Gradient Boosting algorithm
alg = GradientBoostingRegressor()
# Try these hyperparameter values
params = {
'learning_rate': [0.1, 0.5, 1.0],
'n_estimators' : [50, 100, 150]
}
# Find the best hyperparameter combination to optimize the R2 metric
score = make_scorer(r2_score)
gridsearch = GridSearchCV(alg, params, scoring=score, cv=3, return_train_score=True)
gridsearch.fit(X_train, y_train)
print("Best parameter combination:", gridsearch.best_params_, "\n")
# Get the best model
model = gridsearch.best_estimator_
print(model, "\n")
Best parameter combination: {'learning_rate': 0.1, 'n_estimators': 50} GradientBoostingRegressor(n_estimators=50)
evaluate_model()
Model RMSE R2 0 LinearRegression() 61984.36910 0.11560 1 Lasso() 61984.38170 0.11560 2 DecisionTreeRegressor() 62859.92650 0.09040 3 RandomForestRegressor() 62486.58220 0.10120 4 GradientBoostingRegressor() 61289.18180 0.13530 5 GradientBoostingRegressor(n_estimators=50) 61241.50650 0.13670
categorical_features = ['EdLevel', 'MainBranch', 'Country']
for col_name in categorical_features:
survey_data = survey_data.dropna(subset = [col_name])
fig, axes = plt.subplots(nrows=1, ncols=len(categorical_features), figsize=(12, 4))
for ind, col_name in enumerate(categorical_features):
counts = survey_data[col_name].value_counts().sort_index()
axis = axes[ind]
counts.plot.bar(ax=axis, color='steelblue')
axis.set_title(col_name + ' counts')
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler, OneHotEncoder
# Separate features and labels
X = survey_data[numeric_features + categorical_features].values
y = survey_data[label].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=0)
# Define preprocessing for numeric columns (scale them)
numeric_features_indices = [0, 1]
numeric_transformer = Pipeline(steps=[
('scaler', StandardScaler())])
# Define preprocessing for categorical features (encode them)
categorical_features_indices = [2, 3, 4]
categorical_transformer = Pipeline(steps=[
('onehot', OneHotEncoder(handle_unknown='ignore'))])
# Combine preprocessing steps
preprocessor = ColumnTransformer(
transformers=[
('num', numeric_transformer, numeric_features_indices),
('cat', categorical_transformer, categorical_features_indices)])
# Create preprocessing and training pipeline
pipeline = Pipeline(steps=[('preprocessor', preprocessor),
('regressor', model)])
model = pipeline.fit(X_train, (y_train))
evaluate_model()
Model RMSE R2 0 LinearRegression() 61984.36910 0.11560 1 Lasso() 61984.38170 0.11560 2 DecisionTreeRegressor() 62859.92650 0.09040 3 RandomForestRegressor() 62486.58220 0.10120 4 GradientBoostingRegressor() 61289.18180 0.13530 5 GradientBoostingRegressor(n_estimators=50) 61241.50650 0.13670 6 Pipeline(steps=[('preprocessor',\n ... 48715.09900 0.45580
import joblib
# Save the model as a pickle file
filename = '../function/model_predict/model.pkl'
joblib.dump(model, filename)
['../function/model_predict/model.pkl']
# Load the model from the file
loaded_model = joblib.load(filename)
# Create a numpy array containing a new observation (for example tomorrow's seasonal and weather forecast information)
X_new = np.array([[25, 15, 'Master’s degree (M.A., M.S., M.Eng., MBA, etc.)','I am a developer by profession', 'United States of America']])
print(f'New sample: {X_new[0]}')
# Use the model to predict tomorrow's rentals
result = loaded_model.predict(X_new)
print(f'Prediction: {np.round(result[0])}')
New sample: ['25' '15' 'Master’s degree (M.A., M.S., M.Eng., MBA, etc.)' 'I am a developer by profession' 'United States of America'] Prediction: 174335.0
import os
import azure.functions
import fastapi
import joblib
import nest_asyncio
import numpy
app = fastapi.FastAPI()
nest_asyncio.apply()
model = joblib.load(f"{os.path.dirname(os.path.realpath(__file__))}/model.pkl")
@app.get("/model_predict")
async def predict(years_coding: int, years_coding_pro: int, ed_level: str, dev_status: str, country: str):
X_new = numpy.array([[years_coding, years_coding_pro, ed_level, dev_status, country]])
result = model.predict(X_new)
return {"salary": round(result[0], 2)}
async def main(
req: azure.functions.HttpRequest, context: azure.functions.Context
) -> azure.functions.HttpResponse:
return azure.functions.AsgiMiddleware(app).handle(req, context)
Many ways to deploy: Azure Tools VS Code extension, Azure CLI, Azure Dev CLI (In public preview).
Using the Azure Dev CLI:
% azd up
Provisioning Azure resources can take some time.
You can view detailed progress in the Azure Portal:
https://portal.azure.com/#blade/HubsExtension/DeploymentDetailsBlade/...
Created Resource group: salary-model1-rg
Created App Service plan: salary-model1-dtlpju3kmywzs-plan
Created Log Analytics workspace: salary-model1-dtlpju3kmywzs-logworkspace
Created Application Insights: salary-model1-dtlpju3kmywzs-appinsights
Created Storage account: salarymodel1dtlpjstorage
Created Web App: salary-model1-dtlpju3kmywzs-function-app
Azure resource provisioning completed successfully
Deployed service api
- Endpoint: https://salary-model1-dtlpju3kmywzs-function-app.azurewebsites.net/
View the resources created under the resource group salary-model1-rg in Azure Portal:
https://portal.azure.com/#@/resource/subscriptions/32ea8a26-5b40-4838-b6cb-be5c89a57c16/resourceGroups/salary-model1-rg/overview
Results:
{"salary":171993.74}
# import ...
from . import categories
app = fastapi.FastAPI()
nest_asyncio.apply()
model = joblib.load(f"{os.path.dirname(os.path.realpath(__file__))}/model.pkl")
@app.get("/model_predict")
async def model_predict(
years_coding: int,
years_coding_pro: int,
ed_level: categories.EdLevel,
dev_status: categories.MainBranch,
country: categories.Country,
):
X_new = numpy.array([[years_coding, years_coding_pro, ed_level.value, dev_status.value, country.value]])
result = model.predict(X_new)
return {"salary": round(result[0], 2)}
async def main(
req: azure.functions.HttpRequest, context: azure.functions.Context
) -> azure.functions.HttpResponse:
return azure.functions.AsgiMiddleware(app).handle(req, context)
from enum import Enum
class EdLevel(str, Enum):
EDLEVEL_0 = "Associate degree (A.A., A.S., etc.)"
EDLEVEL_1 = "Bachelor’s degree (B.A., B.S., B.Eng., etc.)"
EDLEVEL_2 = "Master’s degree (M.A., M.S., M.Eng., MBA, etc.)"
EDLEVEL_3 = "Other doctoral degree (Ph.D., Ed.D., etc.)"
EDLEVEL_4 = "Primary/elementary school"
EDLEVEL_5 = "Professional degree (JD, MD, etc.)"
EDLEVEL_6 = "Secondary school (e.g. American high school, German Realschule or Gymnasium, etc.)"
EDLEVEL_7 = "Some college/university study without earning a degree"
EDLEVEL_8 = "Something else"
class MainBranch(str, Enum):
MAINBRANCH_0 = "I am a developer by profession"
MAINBRANCH_1 = "I am not primarily a developer, but I write code sometimes as part of my work"
class Country(str, Enum):
COUNTRY_0 = "Afghanistan"
COUNTRY_1 = "Albania"
COUNTRY_2 = "Algeria"
...
enums_lines = []
for feature in categorical_features:
enums_lines.append(f'class {feature}(str, Enum):')
for ind, value in enumerate(sorted(survey_data[feature].unique())):
enum_name = f'{feature.upper()}_{ind}'
enums_lines.append(f' {enum_name} = "{value}"')
enums_lines.append('\n')
enums_module = 'from enum import Enum\n\n' + '\n'.join(enums_lines)
f = open("../function/model_predict/categories.py", "w")
f.write(enums_module)
f.close()
Since the only change is code, I can just run:
% azd deploy
Deploying service api...
Deployed service api
- Endpoint: https://salary-model1-dtlpju3kmywzs-function-app.azurewebsites.net/
The categories in the docs are now dropdowns with all available options.