Aula 1 Video 1 - Entendendo os seus dados


In [256]:
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import numpy as np

Você pode baixar o arquivo CSV regressao_linear_alura.csv.


In [257]:
movies = pd.read_csv('datasets/regressao_linear_alura.csv')

In [258]:
movies.head()


Out[258]:
movieId Titulo Investimento (em milhoes) Bilheteria (pessoas)
0 1 Toy Story (1995) 11.048216 5623234.602
1 2 Jumanji (1995) 14.927678 5714951.757
2 3 Grumpier Old Men (1995) 27.114597 9524339.124
3 4 Waiting to Exhale (1995) 4.994242 6331568.779
4 5 Father of the Bride Part II (1995) 19.142246 6409617.277

In [259]:
movies.shape


Out[259]:
(9125, 4)

In [260]:
x = movies['Investimento (em milhoes)']

In [261]:
y = movies['Bilheteria (pessoas)']

In [262]:
plt.scatter(x,y)


Out[262]:
<matplotlib.collections.PathCollection at 0x10f891240>

In [263]:
sample = movies.sample(n=200)

In [264]:
x = sample['Investimento (em milhoes)']

In [265]:
y = sample['Bilheteria (pessoas)']

In [266]:
plt.scatter(x,y)


Out[266]:
<matplotlib.collections.PathCollection at 0x10f90dd30>

Aula 1 - Video 2 - A regressão linear


In [267]:
filmes_investimento = movies['Investimento (em milhoes)']
filmes_bilheteria = movies['Bilheteria (pessoas)']

In [268]:
type(filmes_investimento)


Out[268]:
pandas.core.series.Series

In [269]:
filmes_investimento.head(10)


Out[269]:
0    11.048216
1    14.927678
2    27.114597
3     4.994242
4    19.142246
5     9.977311
6    14.257461
7     8.871800
8    29.112800
9     3.695241
Name: Investimento (em milhoes), dtype: float64

In [270]:
filmes_bilheteria.head(10)


Out[270]:
0    5623234.602
1    5714951.757
2    9524339.124
3    6331568.779
4    6409617.277
5    4956557.317
6    4654565.066
7    3950017.325
8    6850971.551
9    5157865.850
Name: Bilheteria (pessoas), dtype: float64

In [271]:
treino, teste, treino_bilheteria, teste_bilheteria = train_test_split(filmes_investimento, filmes_bilheteria)

In [272]:
print('Tamanho treino: {0} Tamanho teste: {1} Total: {2} ({0} + {1})'.format(len(treino), len(teste), len(filmes_investimento)))


Tamanho treino: 6843 Tamanho teste: 2282 Total: 9125 (6843 + 2282)

In [273]:
print('Porcentagem treino {}'.format(len(treino)/len(filmes_investimento)))


Porcentagem treino 0.7499178082191781

In [274]:
type(treino)


Out[274]:
pandas.core.series.Series

In [275]:
treino = np.array(treino).reshape(len(treino),1)

In [276]:
type(treino)


Out[276]:
numpy.ndarray

In [277]:
teste = np.array(teste).reshape(len(teste),1)

In [278]:
type(teste)


Out[278]:
numpy.ndarray

In [279]:
treino_bilheteria = np.array(treino_bilheteria).reshape(len(treino_bilheteria),1)
teste_bilheteria= np.array(teste_bilheteria).reshape(len(teste_bilheteria),1)

In [280]:
modelo = LinearRegression()
modelo.fit(treino, treino_bilheteria)
modelo


Out[280]:
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)

In [281]:
modelo.intercept_


Out[281]:
array([ 5035154.26227927])

In [282]:
modelo.coef_


Out[282]:
array([[ 99976.87734099]])

Investimento Zootopia 27.74456356


In [283]:
modelo.predict(27.74456356)


Out[283]:
array([[ 7808969.09019682]])

In [284]:
modelo.coef_ * 27.74456356 + modelo.intercept_


Out[284]:
array([[ 7808969.09019682]])

In [285]:
modelo.score(treino, treino_bilheteria)


Out[285]:
0.54457208158176706

In [286]:
modelo.score(teste, teste_bilheteria)


Out[286]:
0.50228766437088179

Testando split dos dados de treino e teste com 10%


In [287]:
treino, teste, treino_bilheteria, teste_bilheteria = train_test_split(filmes_investimento, filmes_bilheteria, test_size=0.10)

In [288]:
treino = np.array(treino).reshape(len(treino),1)
treino_bilheteria = np.array(treino_bilheteria).reshape(len(treino_bilheteria),1)
teste_bilheteria= np.array(teste_bilheteria).reshape(len(teste_bilheteria),1)
teste = np.array(teste).reshape(len(teste),1)

In [289]:
modelo_10 = LinearRegression()
modelo_10.fit(treino, treino_bilheteria)
modelo_10


Out[289]:
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)

In [290]:
modelo_10.score(treino, treino_bilheteria)


Out[290]:
0.53326487609719342

In [291]:
modelo_10.score(teste, teste_bilheteria)


Out[291]:
0.54755925931782312

In [ ]: