Escolar Documentos
Profissional Documentos
Cultura Documentos
Resumo
O código feito é usado para descobrir se irá chover no dia seguinte ao
disponibilizado na entrada do programa, baseado nas informações oferecidas
pelo banco de dados dos arquivos disponibilizados (weatherAUS_training.csv e
weatherAUS_testing-alunos.csv). Utilizando como saída = 1 (vai chover no dia
seguinte) ou saída = 0 (não vai chover no dia seguinte). Utilizando como
método de cálculos, a técnica dos mínimos quadrados, como fórmula base
Y=Ax.
Introdução
Foi calculado utilizar o arquivo “weatherAUS_training.csv” para achar o
x e o arquivo “weatherAUS_testing-alunos.csv” para utilizar como dados base
do cálculo que leva em consideração a soma das multiplicações dos dados com
o x, gerando um Y que se for 0<=Y<0,5 será a opção 0 (não vai chover no dia
seguinte) e se for 0,5<=Y será a opção 1 (vai chover no dia seguinte).
Desenvolvimento do sistema
O sistema foi desenvolvido utilizando a técnica dos mínimos quadrados,
utilizando o cálculo que leva em consideração a soma das multiplicações dos
dados disponibilizados com o x calculado no próprio código com a fórmula
Y=Ax.
Resultado
Resultado disponível ao usar o programa é um Y = 0 ou 1, onde se no
final for encontrado 0<=Y<0,5 será a opção 0 (não vai chover no dia seguinte) e
se for 0,5<=Y será a opção 1 (vai chover no dia seguinte).
Conclusões
Referências
Anexo
import numpy as np
import pandas as pd
# Para rodar o programa no seu PC é necessário copiar o local do arquivo onde estão os
dados e substituir a linha
# da variável dados (9° linha) por: dados = pd.read_csv(r"local_do_seu_arquivo").
def calcularMinimosQuadrados():
dados = pd.read_csv(r"D:\Caio\Documentos\UFRJ\2022.2\Álgebra
Linear\Programação\weatherAUS_training.csv")
# Ax = b
# Analisando a matriz "dados", temos que a nossa matriz A será as 23 primeiras colunas da
matriz dados, portanto, estamos
# trabalhando no R23. A ultima coluna é o resultado da combinação das 23 primeiras
colunas, portanto, será o nosso vetor b.
b = dados['RainTomorrow']
# Analisando os dados da matriz A, podemos observar que, para os dias que choveram e os
dias que não choveram, podemos
# desconsiderar as colunas "Date"; "Location"; "WindGustDir"; "WindGustSpeed";
"RainTomorrow", devido o local dos testes sempre será Sydney
# e tanto a data, quanto os valores da direção e da velocidade não influênciam na conta e
que o "RainTomorrow" será nosso y. Logo iremos
# trabalhar no R18.
# Vamos obter a matriz A transposta para podermos resolver a Equação Normal (A^t * A *
x = A^t * B)
transpostaA = A.T
B = transpostaB.T
R = transpostaA @ A
inversaR = np.linalg.inv(R)
x = inversaR @ transpostaA @ B
x = list(np.float_(x))
# Vamos obter a matriz A transposta para podermos resolver a Equação Normal (A^t * A *
x = A^t * B).
transpostaA = A.T
B = transpostaB.T
R = transpostaA @ A
# Para usar na conta final devemos usar os dados deste próximo arquivo, logo teremos:
# Para rodar o programa no seu PC é necessário copiar o local do arquivo onde estão os
dados e substituir a linha
# da variável dados (77° linha) por: dados = pd.read_csv(r"local_do_seu_arquivo").
dados2 = pd.read_csv(r"D:\Caio\Documentos\UFRJ\2022.2\Álgebra
Linear\Programação\weatherAUS_testing-alunos.csv")
# Agora vamos substituir os dados obtidos no modelo proposto e resolver o cálculo dos
mínimos quadrados:
# Agora, vamos comparar o valor obtido em y para ver se está mais perto de 0 (não vai
chover no dia seguinte) ou de 1 (vai chover no dia seguinte):
# Lembrando que o y é igual ao "RainTomorrow".
print(calcularMinimosQuadrados())
Observação
O código também foi disponibilizado em formato .py para teste, no email
enviado.