Facebook
From Innocent Porcupine, 2 Years ago, written in Python.
Embed
Download Paste or View Raw
Hits: 150
  1. #!/usr/bin/env python
  2. # coding: utf-8
  3.  
  4. # In[1]:
  5.  
  6.  
  7. import pandas as pd
  8.  
  9.  
  10. # In[3]:
  11.  
  12.  
  13. get_ipython().run_line_magic('pinfo', 'pd')
  14.  
  15.  
  16. # In[12]:
  17.  
  18.  
  19. # dataframe ou quadra de dados
  20. df = pd.DataFrame(
  21.     [
  22.         #{"nome": "JAYME", "altura": 171, "peso": 62},
  23.         {"altura": 173.1, "peso": 100}, #guilherme
  24.         {"altura": 181.6, "peso": 111}, # julian
  25.         {"altura": 189, "peso": 100}, #jackes
  26.         {"altura": 172.1, "peso": 71}, #marino
  27.         {"altura": 181.6, "peso": 102}, # dieison
  28.         {"altura": 167, "peso": 56}, # jayme
  29.     ],
  30.     index = ["STALLONE", "SCHWARZENEGGER", "JOHNSON", "CRUISE", "DIESEL", "LINDA HAMILTON"]
  31. )
  32. df
  33.  
  34.  
  35. # In[10]:
  36.  
  37.  
  38. type(df)
  39.  
  40.  
  41. # In[13]:
  42.  
  43.  
  44. df.shape
  45.  
  46.  
  47. # In[14]:
  48.  
  49.  
  50. # prever o peso dos atores/atrizes com base na altura
  51.  
  52.  
  53. # In[16]:
  54.  
  55.  
  56. df.describe()
  57.  
  58.  
  59. # In[20]:
  60.  
  61.  
  62. df.altura.min(), df.altura.max()
  63.  
  64.  
  65. # In[21]:
  66.  
  67.  
  68. df.peso.min(), df.peso.max()
  69.  
  70.  
  71. # In[23]:
  72.  
  73.  
  74. df.peso.plot(kind="hist")
  75.  
  76.  
  77. # In[24]:
  78.  
  79.  
  80. df.altura.plot(kind="hist")
  81.  
  82.  
  83. # In[27]:
  84.  
  85.  
  86. df.plot()
  87.  
  88.  
  89. # In[29]:
  90.  
  91.  
  92. df.plot(kind="scatter", x="altura", y="peso")
  93.  
  94.  
  95. # In[30]:
  96.  
  97.  
  98. import seaborn as sns
  99. sns.lmplot(x='altura',y='peso',data=df,fit_reg=True)
  100.  
  101.  
  102. # In[60]:
  103.  
  104.  
  105. import matplotlib.pyplot as plt
  106. plt.scatter(df.altura, df.peso)
  107. plt.xlim(0)
  108. plt.ylim(-300)
  109.  
  110.  
  111. # In[61]:
  112.  
  113.  
  114. import matplotlib.pyplot as plt
  115. plt.scatter(df.altura, df.peso)
  116. plt.xlim(0)
  117. plt.ylim(0)
  118.  
  119.  
  120. # In[56]:
  121.  
  122.  
  123. import seaborn as sns
  124. sns.lmplot(x='altura',y='peso',data=df.append(pd.DataFrame([{"altura":0, "peso":-273}])), fit_reg=True)
  125.  
  126.  
  127. # In[32]:
  128.  
  129.  
  130. # y = ax + b
  131. # b é onde passa a linha no eixo vertical
  132. # a é o ângulo
  133. # b está mais ou menos no ~65-70, 68
  134. # a ~1.3, ou seja, para cada cm de altura, "ganha-se" `a` kg
  135.  
  136.  
  137. # In[33]:
  138.  
  139.  
  140. # botando a idade?
  141. # quanto mais variáveis explicativas melhor
  142. # exemplo: cor dos olhos, nos ajuda?
  143.  
  144.  
  145. # In[34]:
  146.  
  147.  
  148. from sklearn.linear_model import LinearRegression
  149.  
  150.  
  151. # In[35]:
  152.  
  153.  
  154. regressao_linear = LinearRegression()
  155.  
  156.  
  157. # In[39]:
  158.  
  159.  
  160. X = pd.DataFrame(df.altura)
  161. y = df.peso
  162.  
  163.  
  164. # In[43]:
  165.  
  166.  
  167. X.shape
  168.  
  169.  
  170. # In[42]:
  171.  
  172.  
  173. y.shape
  174.  
  175.  
  176. # In[44]:
  177.  
  178.  
  179. # y é o que eu vou tentar entender, nesse peso
  180. # X é o que eu vou usar/o que eu sei, nesse caso altura (pode ser idade, sexo etc)
  181. regressao_linear.fit(X, y)
  182.  
  183.  
  184. # In[45]:
  185.  
  186.  
  187. # b é o intercepto
  188. # a é o ângulo que é o parâmetro ligado a variável altura
  189.  
  190.  
  191. # In[49]:
  192.  
  193.  
  194. # b ou intercepto
  195. # se eu tiver uma altura igual a zero, meu peso é -273
  196. regressao_linear.intercept_
  197.  
  198.  
  199. # In[51]:
  200.  
  201.  
  202. # a ou coeficiente
  203. # para cada cm que eu tiver, eu "ganho" ~2kg
  204. regressao_linear.coef_
  205.  
  206.  
  207. # In[62]:
  208.  
  209.  
  210. # vou testar como está o meu modelo
  211. teste = pd.DataFrame(
  212.     [
  213.         {"altura": 171, "peso": 62} # jayme
  214.     ]
  215. )
  216.  
  217. X_teste = pd.DataFrame(teste.altura)
  218.  
  219.  
  220. # In[67]:
  221.  
  222.  
  223. # predição em cima de um dado novo
  224. regressao_linear.predict(X_teste)
  225.  
  226.  
  227. # In[69]:
  228.  
  229.  
  230. teste.loc[:, "predicao_peso"] = regressao_linear.predict(X_teste)
  231. teste
  232.  
  233.  
  234. # In[71]:
  235.  
  236.  
  237. teste.loc[:, "erro_absoluto"] = teste.predicao_peso - teste.peso
  238. teste
  239.  
  240.  
  241. # In[ ]:
  242.  
  243.  
  244.  
  245.  
  246.  
  247. # In[72]:
  248.  
  249.  
  250. # vou testar como está o meu modelo
  251. teste = pd.DataFrame(
  252.     [
  253.         {"altura": 170, "peso": 53},
  254.         {"altura": 169, "peso": 65},
  255.         {"altura": 179, "peso": 75},
  256.     ],
  257.     index = ["lily james", "messi", "lee daniels"]
  258. )
  259.  
  260. X_teste = pd.DataFrame(teste.altura)
  261.  
  262.  
  263. # In[73]:
  264.  
  265.  
  266. teste.loc[:, "predicao_peso"] = regressao_linear.predict(X_teste)
  267. teste
  268.  
  269.  
  270. # In[74]:
  271.  
  272.  
  273. teste.loc[:, "erro_absoluto"] = teste.predicao_peso - teste.peso
  274. teste
  275.  
  276.  
  277. # In[75]:
  278.  
  279.  
  280. # erro medio de 16kg - para cima
  281. teste.erro_absoluto.mean()
  282.  
  283.  
  284. # In[77]:
  285.  
  286.  
  287. teste.erro_absoluto.min(), teste.erro_absoluto.max()
  288.  
  289.  
  290. # In[78]:
  291.  
  292.  
  293. from sklearn.metrics import mean_absolute_error
  294.  
  295.  
  296. # In[79]:
  297.  
  298.  
  299. mean_absolute_error(y_true=teste.peso, y_pred=teste.predicao_peso)
  300.  
  301.  
  302. # In[80]:
  303.  
  304.  
  305. from sklearn.metrics import mean_squared_error
  306.  
  307.  
  308. # In[81]:
  309.  
  310.  
  311. mean_squared_error(y_true=teste.peso, y_pred=teste.predicao_peso)
  312.  
  313.  
  314. # In[82]:
  315.  
  316.  
  317. 290 ** (1/2)
  318.  
  319.  
  320. # In[83]:
  321.  
  322.  
  323. pd.DataFrame(
  324.     [
  325.         {"filmes": "rambo I", "usuario": 1},
  326.         {"filmes": "rambo II", "usuario": 1},
  327.         {"filmes": "duro de matar", "usuario": 1},
  328.         {"filmes": "alien", "usuario": 2},
  329.         {"filmes": "rambo I", "usuario": 2}
  330.     ]
  331. )
  332.  
  333.  
  334. # In[87]:
  335.  
  336.  
  337. df = pd.DataFrame(
  338.     [
  339.         {"filmes": "rambo I", "usuario": 1, "filme_anterior": None},
  340.         {"filmes": "rambo II", "usuario": 1, "filme_anterior": "rambo I"},
  341.         {"filmes": "duro de matar", "usuario": 1, "filme_anterior": "rambo II"},
  342.         {"filmes": "alien", "usuario": 2, "filme_anterior": None},
  343.         {"filmes": "rambo I", "usuario": 2, "filme_anterior": "alien"},
  344.         {"filmes": None, "usuario": 2, "filme_anterior": "rambo I"},
  345.     ]
  346. )
  347. df
  348.  
  349.  
  350. # In[88]:
  351.  
  352.  
  353. X = df.filme_anterior
  354. y = df.filmes
  355. X, y
  356.  
  357.  
  358. # In[89]:
  359.  
  360.  
  361. get_ipython().run_line_magic('pinfo', 'pd.read_sql')
  362.  
  363.