Quão bom é o ajuste?
Parte da seção Estatística para ML do Journey de Machine Learning da Coddy. Lição 39 de 64.
Toda nuvem recebe uma linha, então os ajustes precisam de notas. Um marinheiro registrou as velocidades do vento e do barco: compare os erros quadráticos da linha com os da média, o palpite mais preguiçoso:
R ao quadrado é a parcela dessa variação que a linha explica:
wind = np.array([6, 8, 10, 12, 15, 18])
boat = np.array([3.1, 4.4, 4.9, 6.2, 6.8, 8.1])
slope, intercept = np.polyfit(wind, boat, 1)
predicted = slope * wind + intercept
ss_res = ((boat - predicted) ** 2).sum() # o ajuste: 0.35
ss_tot = ((boat - boat.mean()) ** 2).sum() # a média: 16.23
print(np.round(1 - ss_res / ss_tot, 3))Isso imprime 0.979: a linha explica 98% da variação da velocidade. 1 representa uma linha perfeita, 0 não é melhor do que a média.
É a pontuação padrão de um modelo que prevê números. Para uma reta ajustada, ela é igual ao r ao quadrado.
Desafio
MédioUma fazenda de cogumelos registrou 16 canteiros de cultivo em mushrooms.csv. O programa lê o nome de uma coluna, e o código inicial ajusta a reta que prevê harvest_kg com base nela. O relatório precisa de r_squared, que ainda está vazio.
- Complete
r_squared(y, predicted)para que retorne o R quadrado. - No final, imprima a verificação: a correlação entre
xey, elevada ao quadrado, multiplicada por 100 e arredondada para 1 casa decimal.
Para outra fazenda e a entrada humidity:
humidity explains 27.0% of the harvest variation
Check with r squared: 27.0%Experimente você mesmo
import numpy as np
import pandas as pd
# Retorna o R ao quadrado das previsões para y
def r_squared(y, predicted):
# Escreva seu código aqui
return 0
beds = pd.read_csv("mushrooms.csv")
column = input()
# Não altere as linhas abaixo
x = beds[column]
y = beds["harvest_kg"]
slope, intercept = np.polyfit(x, y, 1)
predicted = slope * x + intercept
r2 = r_squared(y, predicted)
print(f"{column} explains {np.round(r2 * 100, 1)}% of the harvest variation")
# Escreva seu código abaixo
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Estatística para ML
1Centro e dispersão
Média e medianaPercentis e quartisVariância e desvio padrãoAmostra ou população?O valor mais frequenteRevisão: tempos de entrega4Amostras e Populações
População e AmostraAs médias amostrais variamA distribuição amostralAmostras maiores, menos ruídoRevisão: pesquisa de opinião em uma cidade7Linhas de tendência
ResíduosAjuste por mínimos quadradosTraçando o ajusteFazendo previsões com uma linhaQuão bom é o ajuste?Revisão: horas de prática10Codificação de Categorias
Categorias como NúmerosCodificação One-HotAgrupamento de Números em FaixasRecapitulação: Anúncios de Carros2Distribuições
Histogramas de densidadeFormatos dos dadosA curva normalA regra 68-95-99,7Escores ZRecapitulando: duração da bateria5Valores atípicos
Diagramas de caixaA regra do IQRA regra do Z-scoreComo lidar com valores atípicosRevisão: falhas nos sensores8Comparando grupos
Gráficos de caixa por grupoDiferença entre médiasPode ser acaso?Valores-pO teste tRevisão: teste A/B11Explorando um conjunto de dados
Um primeiro olharTodos os atributos de uma vezAtributos em relação ao rótuloOs dois melhores atributosRevisão: dados de diabetes3Probabilidade por Simulação
Probabilidade como frequênciaA Lei dos Grandes NúmerosSomas de dadosValor esperadoProbabilidade condicionalRevisão: chances na barraca de dados6Relações
Lendo gráficos de dispersãoCorrelaçãoMatriz de correlaçãoMapas de calor de correlaçãoCorrelação não é causalidadeRevisão: sorvete e sol9Escalonamento de Recursos
Por que escalar os recursosEscalonamento Min-MaxPadronizaçãoStandardScalerRevisão: Parceiros de escaladaPratique por conta própria: Compilador de Python online