Menu
CoddyTech

Predicción de números

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

Los modelos de este capítulo predicen números. Al terminarlo, un gráfico de los errores de un modelo dejará al descubierto lo que pasó por alto:

Un gráfico de los errores de un modelo frente a la temperatura: los puntos forman un arco desde -280 hasta +140 y vuelven a bajar, alrededor de una línea discontinua en 0, etiquetada: el modelo pasó por alto una curva

Empieza con una línea que conozcas. LinearRegression la aprende a partir de una tabla X, con una fila por muestra y una columna por característica:

from sklearn.linear_model import LinearRegression

area = np.array([60, 75, 90, 110, 130, 150])  # casas, en m²
price = np.array([215, 248, 290, 335, 385, 428])  # miles de dólares
X = area.reshape(-1, 1)  # 6 filas, 1 columna
model = LinearRegression()
model.fit(X, price)
print(np.round(model.coef_, 2), np.round(model.intercept_, 2))
print(np.round(np.polyfit(area, price, 1), 2))

Esto imprime la misma línea dos veces:

[2.39] 71.59
[ 2.39 71.59]

Seis casas representadas como puntos, precio frente a superficie, con la gruesa línea naranja de LinearRegression y la línea negra discontinua de np.polyfit exactamente una encima de la otra: precio = 2.39 * superficie + 71.59

coef_ contiene una pendiente por característica: cada m² adicional suma 2.39 miles de dólares. intercept_ es el inicio de la recta, en 0 m². Después, model.predict([[100]]) calcula un precio de unos 310.85 miles para 100 m².

challenge icon

Desafío

Intermedio

Una imprenta nunca publicó sus precios, pero tienes 10 trabajos anteriores: pages y price en dólares. El programa lee las páginas de un trabajo nuevo.

  1. Ajusta un LinearRegression con las páginas, como una tabla de una columna.
  2. Imprime el precio por página (3 decimales) y la tarifa de preparación, el intercepto (2 decimales).
  3. Imprime el precio predicho del trabajo nuevo (2 decimales).

Para otra imprenta y 120:

Per page: 0.095 dollars
Setup fee: 4.1 dollars
120 pages: 15.5 dollars

Pruébalo tú mismo

import numpy as np
from sklearn.linear_model import LinearRegression

# 10 trabajos de impresión anteriores: páginas impresas y precio pagado, en dólares
pages = np.array([40, 75, 120, 160, 210, 260, 300, 380, 450, 520])
price = np.array([7.38, 12.6, 17.65, 20.69, 26.63, 32.18, 37.76, 46.4, 55.17, 60.89])
new_pages = int(input())

# 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