Menu
CoddyTech

Predicciones de sí o no

Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 16 de 58.

Este capítulo responde preguntas de sí o no con probabilidades. Termina con un filtro de spam que tú construyes y que clasifica los correos electrónicos así:

Ocho correos electrónicos representados como barras según su probabilidad de ser spam, desde 0.02 para Mom hasta 0.97 para WIN NOW. Las barras por encima de una línea discontinua en 0.5 son rojas: spam

¿Se cancelará una reserva en un restaurante? LogisticRegression lo aprende a partir de 60 reservas anteriores: días de antelación con que se reservó y si se canceló (1) o se mantuvo (0):

Sesenta reservas representadas como puntos en 0 (se mantuvo) y 1 (se canceló) en función de los días de antelación con que se reservó, y una curva S naranja que sube de 0.07 a 0.93. Indica 0.09 a los 3 días y 0.72 a los 40 días

from sklearn.linear_model import LogisticRegression

model = LogisticRegression(max_iter=1000)  # pasos suficientes para completar el aprendizaje
model.fit(X, cancelled)  # X: días de antelación, una columna
print(np.round(model.predict_proba([[3], [40]]), 2))

Esto imprime:

[[0.91 0.09]
 [0.28 0.72]]

La fila de cada reserva contiene la probabilidad de la clase 0 y después la de la clase 1. [:, 1] conserva las probabilidades de la clase 1, una cancelación.

Siguen una S: nunca por debajo de 0 ni por encima de 1, como deben ser las probabilidades.

challenge icon

Desafío

Intermedio

Un club de cometas reserva tres turnos de lanzamiento para mañana. kites.csv contiene 90 lanzamientos anteriores: wind_kmh y flew, 1 si la cometa llegó a volar. El programa lee el viento pronosticado para cada turno en slots.

  1. Ajusta una LogisticRegression (max_iter=1000) a los vientos.
  2. Imprime la probabilidad de vuelo de cada turno, en un porcentaje entero.
  3. Imprime los vuelos esperados: la suma de las probabilidades (1 decimal).

Para otro club:

6 km/h: 9% chance the kite flies
18 km/h: 64% chance the kite flies
30 km/h: 97% chance the kite flies
Expected flights: 1.7 of 3

Pruébalo tú mismo

import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression

# 90 lanzamientos anteriores: el viento en km/h y flew (1 si la cometa despegó)
kites = pd.read_csv("kites.csv")
# Las tres franjas de lanzamiento de mañana, según el viento previsto
winds = []
for i in range(3):
    winds.append(int(input()))
slots = pd.DataFrame({"wind_kmh": winds})

# Escribe tu código a continuación
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Aprendizaje supervisado

Practica por tu cuenta: Compilador de Python online