Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.15 KB | None | 0 0
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {
  6. "collapsed": true
  7. },
  8. "source": [
  9. "###REGRESION LINEAR "
  10. ]
  11. },
  12. {
  13. "cell_type": "code",
  14. "execution_count": 1,
  15. "metadata": {},
  16. "outputs": [],
  17. "source": [
  18. "import math\n",
  19. "from matplotlib import pyplot as plt\n",
  20. "import numpy as np\n",
  21. "import random\n",
  22. "from collections import Counter"
  23. ]
  24. },
  25. {
  26. "cell_type": "code",
  27. "execution_count": 2,
  28. "metadata": {},
  29. "outputs": [],
  30. "source": [
  31. "def dot(v, w):\n",
  32. " \"\"\"v_1 * w_1 + ... + v_n * w_n\"\"\"\n",
  33. " return sum(v_i * w_i for v_i, w_i in zip(v, w))\n",
  34. "def sum_of_squares(v):\n",
  35. " \"\"\"v_1 * v_1 + ... + v_n * v_n\"\"\"\n",
  36. " return dot(v, v)\n",
  37. "def mean(x):\n",
  38. " return sum(x)/len(x)\n",
  39. "def de_mean(x):\n",
  40. " x_bar=mean(x)\n",
  41. " return [x_i-x_bar for x_i in x]\n",
  42. "def covariance(x,y):\n",
  43. " n=len(x)\n",
  44. " return dot(de_mean(x),de_mean(y))/(n-1)\n",
  45. "def variance(x):\n",
  46. " n = len(x)\n",
  47. " deviations = de_mean(x)\n",
  48. " return sum_of_squares(deviations) / (n - 1) #esta sum_of_squares \n",
  49. " # viene de la hoja python Algebra linear!!!!!!!!!!!!!!!\n",
  50. "def standard_deviation(x):\n",
  51. " return math.sqrt(variance(x))\n",
  52. "def correlation(x,y):\n",
  53. " stdev_x=standard_deviation(x)\n",
  54. " stdev_y=standard_deviation(y)\n",
  55. " if stdev_x>0 and stdev_y>0:\n",
  56. " return covariance(x,y)/stdev_x/stdev_y\n",
  57. " else:\n",
  58. " return 0"
  59. ]
  60. },
  61. {
  62. "cell_type": "markdown",
  63. "metadata": {},
  64. "source": [
  65. "###1-definiendo la funcion predictora"
  66. ]
  67. },
  68. {
  69. "cell_type": "code",
  70. "execution_count": 3,
  71. "metadata": {},
  72. "outputs": [],
  73. "source": [
  74. "def predict(alpha,beta,x_i):\n",
  75. " return beta*x_i+alpha"
  76. ]
  77. },
  78. {
  79. "cell_type": "markdown",
  80. "metadata": {},
  81. "source": [
  82. "###2-definiendo la funcion para el calculo de error"
  83. ]
  84. },
  85. {
  86. "cell_type": "code",
  87. "execution_count": 4,
  88. "metadata": {},
  89. "outputs": [],
  90. "source": [
  91. "def error(alpha,beta, x_i,y_i):\n",
  92. " #error de prever beta*x_i+alpha quando o valor real é y_i\n",
  93. " return y_i-predict(alpha,beta,x_i)"
  94. ]
  95. },
  96. {
  97. "cell_type": "markdown",
  98. "metadata": {},
  99. "source": [
  100. "###3-definiendo la funcion para la suma de los cuadrados de los errores"
  101. ]
  102. },
  103. {
  104. "cell_type": "code",
  105. "execution_count": 5,
  106. "metadata": {},
  107. "outputs": [],
  108. "source": [
  109. "def sum_of_squared_errors(alpha, beta, x, y):\n",
  110. " return sum(error(alpha, beta, x_i, y_i) ** 2\n",
  111. " for x_i, y_i in zip(x, y))"
  112. ]
  113. },
  114. {
  115. "cell_type": "markdown",
  116. "metadata": {},
  117. "source": [
  118. "###4-definiendo la funcion que minimiza los errores de alpha y beta"
  119. ]
  120. },
  121. {
  122. "cell_type": "code",
  123. "execution_count": 6,
  124. "metadata": {},
  125. "outputs": [],
  126. "source": [
  127. "def least_squares_fit(x,y):\n",
  128. " #datos y valores en entrenamiento para 'x' y 'y' encuentran los valores minimos de los cuadrados de alpha y beta\n",
  129. " beta=correlation(x,y)*standard_deviation(y)/standard_deviation(x)\n",
  130. " alpha=mean(y)-beta*mean(x)\n",
  131. " return alpha, beta"
  132. ]
  133. },
  134. {
  135. "cell_type": "markdown",
  136. "metadata": {},
  137. "source": [
  138. "###datos para realizar el analisis"
  139. ]
  140. },
  141. {
  142. "cell_type": "code",
  143. "execution_count": 7,
  144. "metadata": {},
  145. "outputs": [],
  146. "source": [
  147. "num_friends = [100,49,41,40,25,21,21,19,19,18,18,16,15,15,15,15,14,14,13,13,13,13,12,12,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]\n",
  148. "daily_minutes = [1,68.77,51.25,52.08,38.36,44.54,57.13,51.4,41.42,31.22,34.76,54.01,38.79,47.59,49.1,27.66,41.03,36.73,48.65,28.12,46.62,35.57,32.98,35,26.07,23.77,39.73,40.57,31.65,31.21,36.32,20.45,21.93,26.02,27.34,23.49,46.94,30.5,33.8,24.23,21.4,27.94,32.24,40.57,25.07,19.42,22.39,18.42,46.96,23.72,26.41,26.97,36.76,40.32,35.02,29.47,30.2,31,38.11,38.18,36.31,21.03,30.86,36.07,28.66,29.08,37.28,15.28,24.17,22.31,30.17,25.53,19.85,35.37,44.6,17.23,13.47,26.33,35.02,32.09,24.81,19.33,28.77,24.26,31.98,25.73,24.86,16.28,34.51,15.23,39.72,40.8,26.06,35.76,34.76,16.13,44.04,18.03,19.65,32.62,35.59,39.43,14.18,35.24,40.13,41.82,35.45,36.07,43.67,24.61,20.9,21.9,18.79,27.61,27.21,26.61,29.77,20.59,27.53,13.82,33.2,25,33.1,36.65,18.63,14.87,22.2,36.81,25.53,24.62,26.25,18.21,28.08,19.42,29.79,32.8,35.99,28.32,27.79,35.88,29.06,36.28,14.1,36.63,37.49,26.9,18.58,38.48,24.48,18.95,33.55,14.24,29.04,32.51,25.63,22.22,19,32.73,15.16,13.9,27.2,32.01,29.27,33,13.74,20.42,27.32,18.23,35.35,28.48,9.08,24.62,20.12,35.26,19.92,31.02,16.49,12.16,30.7,31.22,34.65,13.13,27.51,33.2,31.57,14.1,33.42,17.44,10.12,24.42,9.82,23.39,30.93,15.03,21.67,31.09,33.29,22.61,26.89,23.48,8.38,27.81,32.35,23.84]"
  149. ]
  150. },
  151. {
  152. "cell_type": "code",
  153. "execution_count": 8,
  154. "metadata": {},
  155. "outputs": [],
  156. "source": [
  157. "#calculo de la correlacion sin outliers\n",
  158. "outlier=num_friends.index(100)\n",
  159. "num_friends_good=[x for i,x in enumerate(num_friends)\n",
  160. " if i !=outlier]\n",
  161. "daily_minutes_good=[x for i,x in enumerate(daily_minutes)\n",
  162. " if i !=outlier]"
  163. ]
  164. },
  165. {
  166. "cell_type": "markdown",
  167. "metadata": {},
  168. "source": [
  169. "###5-determinando alpha y beta"
  170. ]
  171. },
  172. {
  173. "cell_type": "code",
  174. "execution_count": 9,
  175. "metadata": {},
  176. "outputs": [],
  177. "source": [
  178. "#aqui estamos haciendo el calculo tomando el ejemplo del capitulo 5.\n",
  179. "alpha,beta=least_squares_fit(num_friends_good,daily_minutes_good)"
  180. ]
  181. },
  182. {
  183. "cell_type": "code",
  184. "execution_count": 10,
  185. "metadata": {},
  186. "outputs": [
  187. {
  188. "data": {
  189. "text/plain": [
  190. "22.94755241346903"
  191. ]
  192. },
  193. "execution_count": 10,
  194. "metadata": {},
  195. "output_type": "execute_result"
  196. }
  197. ],
  198. "source": [
  199. "alpha"
  200. ]
  201. },
  202. {
  203. "cell_type": "code",
  204. "execution_count": 11,
  205. "metadata": {},
  206. "outputs": [
  207. {
  208. "data": {
  209. "text/plain": [
  210. "0.903865945605865"
  211. ]
  212. },
  213. "execution_count": 11,
  214. "metadata": {},
  215. "output_type": "execute_result"
  216. }
  217. ],
  218. "source": [
  219. "beta"
  220. ]
  221. },
  222. {
  223. "cell_type": "markdown",
  224. "metadata": {},
  225. "source": [
  226. "###6-determinando la suma de cuadrados totales"
  227. ]
  228. },
  229. {
  230. "cell_type": "code",
  231. "execution_count": 12,
  232. "metadata": {},
  233. "outputs": [],
  234. "source": [
  235. "def total_sum_of_squares(y):\n",
  236. " #la suma total de los cuadrados de las variaciones de y_i a partir se sus medias\n",
  237. " return sum(v**2 for v in de_mean(y))"
  238. ]
  239. },
  240. {
  241. "cell_type": "markdown",
  242. "metadata": {},
  243. "source": [
  244. "#7-definiendo R cuadrado"
  245. ]
  246. },
  247. {
  248. "cell_type": "code",
  249. "execution_count": 13,
  250. "metadata": {},
  251. "outputs": [],
  252. "source": [
  253. "def r_squared(alpha,beta,x,y):\n",
  254. " return 1.0-(sum_of_squared_errors(alpha,beta,x,y)/total_sum_of_squares(y))"
  255. ]
  256. },
  257. {
  258. "cell_type": "code",
  259. "execution_count": 15,
  260. "metadata": {},
  261. "outputs": [
  262. {
  263. "data": {
  264. "text/plain": [
  265. "0.3291078377836305"
  266. ]
  267. },
  268. "execution_count": 15,
  269. "metadata": {},
  270. "output_type": "execute_result"
  271. }
  272. ],
  273. "source": [
  274. "r_squared(alpha,beta,num_friends_good,daily_minutes_good)"
  275. ]
  276. },
  277. {
  278. "cell_type": "code",
  279. "execution_count": null,
  280. "metadata": {},
  281. "outputs": [],
  282. "source": [
  283. ""
  284. ]
  285. }
  286. ],
  287. "metadata": {
  288. "kernelspec": {
  289. "display_name": "Python 2",
  290. "language": "python",
  291. "name": "python2"
  292. },
  293. "language_info": {
  294. "codemirror_mode": {
  295. "name": "ipython",
  296. "version": 2.0
  297. },
  298. "file_extension": ".py",
  299. "mimetype": "text/x-python",
  300. "name": "python",
  301. "nbconvert_exporter": "python",
  302. "pygments_lexer": "ipython2",
  303. "version": "2.7.6"
  304. }
  305. },
  306. "nbformat": 4,
  307. "nbformat_minor": 0
  308. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement