Time to change the job —leave it to spreadsheet or convert it to ML

John Gakhokidze
2 min readFeb 10, 2022


Forbes published excellent article back in 2017


The best part in that article, that you can keep spreadsheet and add new values, for example, once a quarter. Assign values to each feature on the same scale : 0 to 1, 0 to 10, 0 to 100 using either The less the better, or The bigger, the better.

Aside, you can add some extra features, which may be important for you — for example “Does company still provide free gim pass?”

Example spreadsheet

In my case I am using simple SUM on Label (“Time to go?”) and The bigger, the better approach, but you can go truly ML with Regression Model, or any other- in this case you will need, to manually specify several lines based on your priorities and off we go :)

Example: scikit-learn

Say, we have many lines in decision.csv (to make it faster I changed columns name -still recognizable).

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor

file_path = ‘./decision.csv’
decision_data = pd.read_csv(file_path)

#Your final one

y = decision_data.TimeToGo
# Features
features = [‘LearAndFun’, ‘NotValued, ‘ROI’, ‘Feelings’, ‘IsThisAll’, ‘Health’, ‘ItFeelsLikeWork’, ‘Advancement’, ‘WastingTime’,’Happiness’,’ToxicEnv’,’Recession’]

X = decision_data[features]

# Split data
#Technically there is no validation data, so it is just your feeling when you would be leaving
trainingX, validationX, trainingY, validationY = train_test_split(X, y, random_state=1)

togo_model = RandomForestRegressor(random_state=1)

# fit your model
togo_model.fit(trainingX, trainingY)

# Validation
oracle = togo_model.predict(validationX)

# Tune model if required, or try different one


oracle = togo_model.predict(oracle_data)

# You can convert output to boolean, or something readable — I am ok with numbers

Let your “oracle” value will be always desired one!