Cómo ganar una competición de Kaggle con Python
Yauhen Babakhin
Kaggle Grandmaster


# Lee los datos
taxi_train = pd.read_csv('taxi_train.csv')
taxi_test = pd.read_csv('taxi_test.csv')
from sklearn.model_selection import train_test_split
# Crea validación local
validation_train, validation_test = train_test_split(taxi_train,
test_size=0.3,
random_state=123)
import numpy as np # Asigna la tarifa media a todas las filas de test taxi_test['fare_amount'] = np.mean(taxi_train.fare_amount)# Escribe las predicciones al archivo taxi_test[['id','fare_amount']].to_csv('mean_sub.csv', index=False)
| RMSE validación | RMSE LB público | Posición LB público |
|---|---|---|
| 9.986 | 9.409 | 1449 / 1500 |
# Calcula la tarifa media por grupo
naive_prediction_groups = taxi_train.groupby('passenger_count').fare_amount.mean()
# Predice en el conjunto de test taxi_test['fare_amount'] = taxi_test.passenger_count.map(naive_prediction_groups)# Escribe las predicciones al archivo taxi_test[['id','fare_amount']].to_csv('mean_group_sub.csv', index=False)
| RMSE validación | RMSE LB público | Posición LB público |
|---|---|---|
| 9.978 | 9.407 | 1411 / 1500 |
# Selecciona solo variables numéricas
features = ['pickup_longitude', 'pickup_latitude',
'dropoff_longitude', 'dropoff_latitude', 'passenger_count']
from sklearn.ensemble import GradientBoostingRegressor # Entrena un modelo de Gradient Boosting gb = GradientBoostingRegressor() gb.fit(taxi_train[features], taxi_train.fare_amount)# Predice en el conjunto de test taxi_test['fare_amount'] = gb.predict(taxi_test[features])
# Escribe las predicciones al archivo
taxi_test[['id','fare_amount']].to_csv('gb_sub.csv', index=False)
| RMSE validación | RMSE LB público | Posición LB público |
|---|---|---|
| 5.996 | 4.595 | 1109 / 1500 |
| Modelo | RMSE validación | RMSE LB público |
|---|---|---|
| Media simple | 9.986 | 9.409 |
| Media por grupo | 9.978 | 9.407 |
| Gradient Boosting | 5.996 | 4.595 |
| Modelo | RMSE validación | RMSE LB público |
|---|---|---|
| Modelo A | 3.500 | 3.800 |
| Modelo B | 3.300 | 4.100 |
| Modelo C | 3.200 | 3.900 |
| Modelo | RMSE validación | RMSE LB público |
|---|---|---|
| Modelo A | 3.400 | 3.900 |
| Modelo B | 3.100 | 3.400 |
| Modelo C | 2.900 | 3.300 |
Cómo ganar una competición de Kaggle con Python