In [1]:
# Versão da Linguagem Python
from platform import python_version
print('Versão da Linguagem Python Usada Neste Jupyter Notebook:', python_version())
In [2]:
# Versão da Linguagem Python
from platform import python_version
print('Versão da Linguagem Python Usada Neste Jupyter Notebook:', python_version())
In [3]:
from IPython.display import Image
Image('ml_map.png')
Out[3]:
In [4]:
# Importando Matplotlib e Numpy
import matplotlib.pyplot as plt
import matplotlib as mat
import numpy as np
%matplotlib inline
In [5]:
mat.__version__
Out[5]:
In [6]:
np.__version__
Out[6]:
Instância | Diâmetro(cm) | Preço(R$) |
1 |
7 | 8 |
2 |
10 | 11 |
3 |
15 | 16 |
4 |
30 | 38.5 |
5 |
45 | 52 |
In [7]:
# Diâmetros (cm)
Diametros = [[7], [10], [15], [30], [45]]
# Preços (R$)
Precos = [[8], [11], [16], [38.5], [52]]
In [8]:
plt.figure()
plt.xlabel('Diâmetro(cm)')
plt.ylabel('Preço(R$)')
plt.title('Diâmetro x Preço')
plt.plot(Diametros, Precos, 'k.')
plt.axis([0, 60, 0, 60])
plt.grid(True)
plt.show()
In [9]:
import sklearn
sklearn.__version__
Out[9]:
In [10]:
# Importando o módulo de Regressão Linear do scikit-learn
from sklearn.linear_model import LinearRegression
In [11]:
# Preparando os dados de treino
# Vamos chamar de X os dados de diâmetro da Pizza.
X = [[7], [10], [15], [30], [45]]
# Vamos chamar de Y os dados de preço da Pizza.
Y = [[8], [11], [16], [38.5], [52]]
In [12]:
# Criando o modelo
modelo = LinearRegression()
In [13]:
type(modelo)
Out[13]:
In [14]:
# Treinando o modelo
modelo.fit(X, Y)
Out[14]:
In [15]:
# Prevendo o preço de uma pizza de 20 cm de diâmetro
# Não usamos mais esta sintaxe:
# print("Uma pizza de 20 cm de diâmetro deve custar: R$%.2f" % modelo.predict([20][0]))
# Usamos agora esta sintaxe:
print("Uma pizza de 20 cm de diâmetro deve custar: R$%.2f" % modelo.predict([[20]]))
In [16]:
from IPython.display import Image
Image('linear.png')
Out[16]:
In [17]:
# Coeficientes
print('Coeficiente: \n', modelo.coef_)
# MSE (mean square error)
print("MSE: %.2f" % np.mean((modelo.predict(X) - Y) ** 2))
# Score de variação: 1 representa predição perfeita
print('Score de variação: %.2f' % modelo.score(X, Y))
In [18]:
# Scatter Plot representando a regressão linear
plt.scatter(X, Y, color = 'black')
plt.plot(X, modelo.predict(X), color = 'blue', linewidth = 3)
plt.xlabel('X')
plt.ylabel('Y')
plt.xticks(())
plt.yticks(())
plt.show()
In [19]:
# Importando os módulos necessários
import numpy as np
import pandas as pd
import scipy.stats as stats
import matplotlib.pyplot as plt
import sklearn
%matplotlib inline
In [20]:
np.__version__
Out[20]:
In [21]:
pd.__version__
Out[21]:
In [22]:
# O dataset boston já está disponível no scikit-learn. Precisamos apenas carregá-lo.
from sklearn.datasets import load_boston
boston = load_boston()
In [23]:
# Verificando o tipo da variável boston
type(boston)
Out[23]:
In [24]:
# Visualizando o shape do dataset, neste caso 506 instâncias (linhas) e 13 atributos (colunas)
boston.data.shape
Out[24]:
In [25]:
# Descrição do Dataset
print(boston.DESCR)
In [26]:
print(boston.feature_names)
In [27]:
# Convertendo o dataset em um DataFrame pandas
df = pd.DataFrame(boston.data)
df.head()
Out[27]:
In [28]:
# Convertendo o título das colunas
df.columns = boston.feature_names
df.head()
Out[28]:
In [29]:
# boston.target é uma array com o preço das casas
boston.target
Out[29]:
In [30]:
# Adicionando o preço da casa ao DataFrame
df['PRICE'] = boston.target
df.head()
Out[30]:
In [31]:
# Importando o módulo de regressão linear
from sklearn.linear_model import LinearRegression
In [32]:
# Não queremos o preço da casa como variável dependente
X = df.drop('PRICE', axis = 1)
In [33]:
# Definindo Y
Y = df.PRICE
In [34]:
plt.scatter(df.RM, Y)
plt.xlabel("Média do Número de Quartos por Casa")
plt.ylabel("Preço da Casa")
plt.title("Relação entre Número de Quartos e Preço")
plt.show()
In [35]:
# Criando o objeto de regressão linear
regr = LinearRegression()
In [36]:
# Tipo do objeto
type(regr)
Out[36]:
In [37]:
# Treinando o modelo
regr.fit(X, Y)
Out[37]:
In [38]:
# Coeficientes
print("Coeficiente: ", regr.intercept_)
print("Número de Coeficientes: ", len(regr.coef_))
In [39]:
# Prevendo o preço da casa
regr.predict(X)
Out[39]:
In [40]:
# Comparando preços originais x preços previstos
plt.scatter(df.PRICE, regr.predict(X))
plt.xlabel("Preço Original")
plt.ylabel("Preço Previsto")
plt.title("Preço Original x Preço Previsto")
plt.show()
In [41]:
# Vamos calcular o MSE (Mean Squared Error)
mse1 = np.mean((df.PRICE - regr.predict(X)) ** 2)
print(mse1)
In [42]:
# Aplicando regressão linear para apenas uma variável e calculando o MSE
regr = LinearRegression()
regr.fit(X[['PTRATIO']], df.PRICE)
mse2 = np.mean((df.PRICE - regr.predict(X[['PTRATIO']])) ** 2)
print(mse2)
In [43]:
# Dividindo X em dados de treino e de teste
X_treino = X[:-50]
X_teste = X[-50:]
# Dividindo Y em dados de treino e de teste
Y_treino = df.PRICE[:-50]
Y_teste = df.PRICE[-50:]
# Imprimindo o shape dos datasets
print(X_treino.shape, X_teste.shape, Y_treino.shape, Y_teste.shape)
In [44]:
from sklearn.model_selection import train_test_split
In [45]:
# Dividindo X e Y em dados de treino e de teste
X_treino, X_teste, Y_treino, Y_teste = train_test_split(X, df.PRICE, test_size = 0.33, random_state = 5)
In [46]:
# Imprimindo o shape dos datasets
print(X_treino.shape, X_teste.shape, Y_treino.shape, Y_teste.shape)
In [47]:
# Construindo um modelo de regressão
regr = LinearRegression()
In [48]:
# Treinando o modelo
regr.fit(X_treino, Y_treino)
Out[48]:
In [49]:
# Definindo os dados de treino e teste
pred_treino = regr.predict(X_treino)
pred_teste = regr.predict(X_teste)
In [50]:
# Comparando preços originais x preços previstos
plt.scatter(regr.predict(X_treino), regr.predict(X_treino) - Y_treino, c = 'b', s = 40, alpha = 0.5)
plt.scatter(regr.predict(X_teste), regr.predict(X_teste) - Y_teste, c = 'g', s = 40, alpha = 0.5)
plt.hlines(y = 0, xmin = 0, xmax = 50)
plt.ylabel("Resíduo")
plt.title("Residual Plot - Treino(Azul), Teste(Verde)")
plt.show()
Conheça a Formação Cientista de Dados, um programa completo, 100% online e 100% em português, com mais de 400 horas de carga horária, mais de 1.200 aulas em vídeos e 26 projetos, que vão ajudá-lo a se tornar um dos profissionais mais cobiçados do mercado de análise de dados. Clique no link abaixo, faça sua inscrição, comece hoje mesmo e aumente sua empregabilidade:
https://www.datascienceacademy.com.br/pages/formacao-cientista-de-dados