File size: 5,654 Bytes
183f85c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dc67ee6
 
183f85c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dc67ee6
183f85c
dc67ee6
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# -*- coding: utf-8 -*-
"""Regressao_california_housing.ipynb

Automatically generated by Colaboratory.

Original file is located at
    https://colab.research.google.com/drive/1scAuuquey_Jr4vD3oBLVzLHQ_Hd6VLJb

# **Regressao california housing**

Dados de habitação da Califórnia ou o conjunto de dados de habitação de Ames.

Este conjunto de dados contém informações sobre habitação na Califórnia. Ele inclui atributos como a renda média, idade média da casa, número médio de quartos, número médio de ocupantes por casa, latitude e longitude.
"""

! pip install datasets

# Importando as bibliotecas necessárias
import pandas as pd
import numpy as np
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import fetch_california_housing

# Carregando o conjunto de dados de habitação da Califórnia
housing = fetch_california_housing()

# Convertendo para um DataFrame pandas
df = pd.DataFrame(housing.data, columns=housing.feature_names)
df['target'] = housing.target

df.head()

# Pré-processamento de Dados: Normalização das variáveis numéricas
scaler = StandardScaler()
df[housing.feature_names] = scaler.fit_transform(df[housing.feature_names])

X_train, X_test, y_train, y_test = train_test_split(df.drop('target', axis=1), df['target'], test_size=0.2, random_state=42)

# Treinando o modelo com os dados de treinamento
model = LinearRegression()
model.fit(X_train, y_train)

# Fazendo previsões com os dados de teste
y_pred = model.predict(X_test)

# Calculando o erro quadrático médio das previsões
mse = mean_squared_error(y_test, y_pred)
print(f'Erro Quadrático Médio: {mse}')

"""Erro Quadrático Médio (MSE): O MSE é uma medida comum de erro de previsão que penaliza grandes erros mais do que pequenos erros. Seu valor é 0.5558915986952441, o que significa que, em média, as previsões do seu modelo estão cerca de 0.56 unidades distantes do valor real."""

# Calculando o erro absoluto médio das previsões
mae = mean_absolute_error(y_test, y_pred)
print(f'Erro Absoluto Médio: {mae}')

"""Erro Absoluto Médio (MAE): O MAE é outra medida de erro de previsão que é menos sensível a grandes erros do que o MSE. Seu valor é 0.5332001304956565, o que significa que, em média, as previsões do seu modelo estão cerca de 0.53 unidades distantes do valor real."""

# Calculando o coeficiente de determinação das previsões
r2 = r2_score(y_test, y_pred)
print(f'Coeficiente de Determinação (R^2): {r2}')

"""Coeficiente de Determinação (R^2): O R^2 é uma medida de quão bem as previsões do seu modelo se ajustam aos dados reais. Seu valor é 0.575787706032451, o que significa que seu modelo explica cerca de 57.6% da variância na variável alvo."""

# Realizando a validação cruzada
scores = cross_val_score(model, df.drop('target', axis=1), df['target'], cv=5, scoring='neg_mean_squared_error')
avg_mse = np.mean(scores)
print(f'Erro Quadrático Médio Médio da Validação Cruzada: {-avg_mse}')

"""Erro Quadrático Médio Médio da Validação Cruzada: Este é o MSE médio calculado através da validação cruzada. Seu valor é 0.5582901717686553, o que é ligeiramente maior do que o MSE calculado no conjunto de teste. Isso sugere que seu modelo pode estar um pouco sobreajustado aos dados de treinamento."""

# Imprimindo os coeficientes do modelo
coefficients = pd.DataFrame(model.coef_, index=housing.feature_names, columns=['Coefficient'])
print(coefficients)

"""Os coeficientes do modelo de regressão linear representam a relação entre as características (ou variáveis independentes) e a variável alvo (ou variável dependente).

*   MedInc: Um aumento de uma unidade em MedInc está associado a um aumento de 0.
852382 na variável alvo. Isso sugere que a renda média é um forte preditor positivo da variável alvo.
*   HouseAge: Um aumento de uma unidade em HouseAge está associado a um aumento de 0.122382 na variável alvo. Isso indica que a idade da casa tem uma relação positiva com a variável alvo, mas não tão forte quanto MedInc.
*   AveRooms: Um aumento de uma unidade em AveRooms está associado a uma diminuição de 0.305116 na variável alvo. Isso sugere que o número médio de quartos tem uma relação negativa com a variável alvo.
*   AveBedrms: Um aumento de uma unidade em AveBedrms está associado a um aumento de 0.371132 na variável alvo. Isso indica que o número médio de quartos tem uma relação positiva com a variável alvo.
*   Population: Um aumento de uma unidade em Population está associado a uma diminuição de 0.002298 na variável alvo. Isso sugere que a população tem uma relação negativa muito fraca com a variável alvo.
*   AveOccup: Um aumento de uma unidade em AveOccup está associado a uma diminuição de 0.036624 na variável alvo. Isso indica que a ocupação média tem uma relação negativa com a variável alvo.
*   Latitude: Um aumento de uma unidade em Latitude está associado a uma diminuição de 0.896635 na variável alvo. Isso sugere que a latitude tem uma forte relação negativa com a variável alvo.
*   Longitude: Um aumento de uma unidade em Longitude está associado a uma diminuição de 0.868927 na variável alvo. Isso indica que a longitude também tem uma forte relação negativa com a variável alvo.
"""

# Salvando o modelo
import pickle

with open('model.pkl', 'wb') as file:
    pickle.dump(model, file)