#!/usr/bin/env python
# coding: utf-8
# In[1]:
import pandas as pd
# In[3]:
get_ipython().run_line_magic('pinfo', 'pd')
# In[12]:
# dataframe ou quadra de dados
df = pd.DataFrame(
[
#{"nome": "JAYME", "altura": 171, "peso": 62},
{"altura": 173.1, "peso": 100}, #guilherme
{"altura": 181.6, "peso": 111}, # julian
{"altura": 189, "peso": 100}, #jackes
{"altura": 172.1, "peso": 71}, #marino
{"altura": 181.6, "peso": 102}, # dieison
{"altura": 167, "peso": 56}, # jayme
],
index = ["STALLONE", "SCHWARZENEGGER", "JOHNSON", "CRUISE", "DIESEL", "LINDA HAMILTON"]
)
df
# In[10]:
type(df)
# In[13]:
df.shape
# In[14]:
# prever o peso dos atores/atrizes com base na altura
# In[16]:
df.describe()
# In[20]:
df.altura.min(), df.altura.max()
# In[21]:
df.peso.min(), df.peso.max()
# In[23]:
df.peso.plot(kind="hist")
# In[24]:
df.altura.plot(kind="hist")
# In[27]:
df.plot()
# In[29]:
df.plot(kind="scatter", x="altura", y="peso")
# In[30]:
import seaborn as sns
sns.lmplot(x='altura',y='peso',data=df,fit_reg=True)
# In[60]:
import matplotlib.pyplot as plt
plt.scatter(df.altura, df.peso)
plt.xlim(0)
plt.ylim(-300)
# In[61]:
import matplotlib.pyplot as plt
plt.scatter(df.altura, df.peso)
plt.xlim(0)
plt.ylim(0)
# In[56]:
import seaborn as sns
sns.lmplot(x='altura',y='peso',data=df.append(pd.DataFrame([{"altura":0, "peso":-273}])), fit_reg=True)
# In[32]:
# y = ax + b
# b é onde passa a linha no eixo vertical
# a é o ângulo
# b está mais ou menos no ~65-70, 68
# a ~1.3, ou seja, para cada cm de altura, "ganha-se" `a` kg
# In[33]:
# botando a idade?
# quanto mais variáveis explicativas melhor
# exemplo: cor dos olhos, nos ajuda?
# In[34]:
from sklearn.linear_model import LinearRegression
# In[35]:
regressao_linear = LinearRegression()
# In[39]:
X = pd.DataFrame(df.altura)
y = df.peso
# In[43]:
X.shape
# In[42]:
y.shape
# In[44]:
# y é o que eu vou tentar entender, nesse peso
# X é o que eu vou usar/o que eu sei, nesse caso altura (pode ser idade, sexo etc)
regressao_linear.fit(X, y)
# In[45]:
# b é o intercepto
# a é o ângulo que é o parâmetro ligado a variável altura
# In[49]:
# b ou intercepto
# se eu tiver uma altura igual a zero, meu peso é -273
regressao_linear.intercept_
# In[51]:
# a ou coeficiente
# para cada cm que eu tiver, eu "ganho" ~2kg
regressao_linear.coef_
# In[62]:
# vou testar como está o meu modelo
teste = pd.DataFrame(
[
{"altura": 171, "peso": 62} # jayme
]
)
X_teste = pd.DataFrame(teste.altura)
# In[67]:
# predição em cima de um dado novo
regressao_linear.predict(X_teste)
# In[69]:
teste.loc[:, "predicao_peso"] = regressao_linear.predict(X_teste)
teste
# In[71]:
teste.loc[:, "erro_absoluto"] = teste.predicao_peso - teste.peso
teste
# In[ ]:
# In[72]:
# vou testar como está o meu modelo
teste = pd.DataFrame(
[
{"altura": 170, "peso": 53},
{"altura": 169, "peso": 65},
{"altura": 179, "peso": 75},
],
index = ["lily james", "messi", "lee daniels"]
)
X_teste = pd.DataFrame(teste.altura)
# In[73]:
teste.loc[:, "predicao_peso"] = regressao_linear.predict(X_teste)
teste
# In[74]:
teste.loc[:, "erro_absoluto"] = teste.predicao_peso - teste.peso
teste
# In[75]:
# erro medio de 16kg - para cima
teste.erro_absoluto.mean()
# In[77]:
teste.erro_absoluto.min(), teste.erro_absoluto.max()
# In[78]:
from sklearn.metrics import mean_absolute_error
# In[79]:
mean_absolute_error(y_true=teste.peso, y_pred=teste.predicao_peso)
# In[80]:
from sklearn.metrics import mean_squared_error
# In[81]:
mean_squared_error(y_true=teste.peso, y_pred=teste.predicao_peso)
# In[82]:
290 ** (1/2)
# In[83]:
pd.DataFrame(
[
{"filmes": "rambo I", "usuario": 1},
{"filmes": "rambo II", "usuario": 1},
{"filmes": "duro de matar", "usuario": 1},
{"filmes": "alien", "usuario": 2},
{"filmes": "rambo I", "usuario": 2}
]
)
# In[87]:
df = pd.DataFrame(
[
{"filmes": "rambo I", "usuario": 1, "filme_anterior": None},
{"filmes": "rambo II", "usuario": 1, "filme_anterior": "rambo I"},
{"filmes": "duro de matar", "usuario": 1, "filme_anterior": "rambo II"},
{"filmes": "alien", "usuario": 2, "filme_anterior": None},
{"filmes": "rambo I", "usuario": 2, "filme_anterior": "alien"},
{"filmes": None, "usuario": 2, "filme_anterior": "rambo I"},
]
)
df
# In[88]:
X = df.filme_anterior
y = df.filmes
X, y
# In[89]:
get_ipython().run_line_magic('pinfo', 'pd.read_sql')