#!/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')