1. Repaso de cálculo y matemáticas básicas
Basic Math and Calculus Review Comenzaremos el primer capítulo que cubre qué son los
números y cómo funcionan las variables y funciones en un sistema cartesiano. Luego
cubriremos exponentes y logaritmos. Después de eso, aprenderemos las dos operaciones
básicas del cálculo: derivadas e integrales.
Antes de sumergirnos en las áreas aplicadas de las matemáticas esenciales, como la
probabilidad, el álgebra lineal, las estadísticas y el aprendizaje automático, probablemente
deberíamos revisar algunos conceptos básicos de matemáticas y cálculo. Antes de que
dejes caer este libro y corras gritando, ¡no te preocupes! Presentaré cómo calcular
derivadas e integrales para una función de una manera que probablemente no te enseñaron
en la universidad. Tenemos a Python de nuestro lado, no a lápiz y papel. Incluso si no está
familiarizado con las derivadas y las integrales, no necesita preocuparse.
Haré que estos temas sean lo más precisos y prácticos posible, centrándome solo en lo
que nos ayudará en capítulos posteriores y lo que cae bajo el paraguas de las "matemáticas
esenciales".
¡ESTE NO ES UN CURSO ACELERADO COMPLETO DE MATEMÁTICAS!
Esto no es de ninguna manera una revisión exhaustiva de las matemáticas de la escuela secundaria y la
universidad. Si quieres eso, un gran libro para leer es No Bullshit Guide to Math and Physics de Ivan Savov
(perdón por mi francés). Los primeros capítulos contienen el mejor curso intensivo de matemáticas de la escuela
secundaria y la universidad que he visto. El libro Matemáticas 1001 del Dr. Richard Elwes también tiene un
gran contenido y explicaciones breves.
Teoría de los números
¿Qué son los números? Prometo no ser demasiado filosófico en este libro, pero ¿no son
los números una construcción que hemos definido? ¿Por qué tenemos los dígitos del 0 al
9 y no tenemos más dígitos que esos? ¿Por qué tenemos fracciones y decimales y no solo
números enteros? Estaárea de las matemáticas en la que reflexionamos sobre los números
y por qué los diseñamos de cierta manera se conoce como teoría de números.
La teoría de los números se remonta a la antigüedad, cuando los matemáticos estudiaban
diferentes sistemas numéricos, y explica por qué los hemos aceptado de la forma en que lo
hacemos hoy. Aquí hay diferentes sistemas numéricos que puede reconocer:
Números naturales
Estos son los números 1, 2, 3, 4, 5… y así sucesivamente. Aquí solo se incluyen números
positivos, y son el sistema más antiguo conocido. Los números naturales son tan antiguos
que los hombres de las cavernas marcaban los huesos y las paredes de las cuevas para
llevar registros.
Números enteros
Sumado a los números naturales, posteriormente se aceptó el concepto de “0”; los
llamamos "números enteros". Los babilonios también desarrollaron la útil idea de la notación
de reserva de lugar para "columnas" vacías en números mayores que 9, como "10", "1000"
o "1090". Esos ceros indican que ningún valor ocupa esa columna.
enteros
Los números enteros incluyen números naturales positivos y negativos, así como el 0.
Podemos darlos por sentado, pero los antiguos matemáticos desconfiaban profundamente
de la idea de los números negativos. Pero cuando restas 5 de 3, obtienes -2. Esto es útil
especialmente cuando se trata de finanzas donde medimos ganancias y pérdidas. En 628
d. C., un matemático indio llamado Brahmagupta demostró por qué los números negativos
eran necesarios para que la aritmética progresara con la fórmula cuadrática y, por lo tanto,
se aceptaron los números enteros.
2. Numeros racionales
Cualquier número que puedas expresar como una fracción, como 2/3, es un número
racional. Esto incluye todos los decimales y enteros finitos, ya que también se pueden
expresar como fracciones, como 687/100 = 6,87 y 2/1 = 2, respectivamente. Se llaman
racionales porque son razones. Los números racionales se consideraron necesarios
rápidamente porque el tiempo, los recursos y otras cantidades no siempre se podían medir
en unidades discretas. La leche no siempre viene en galones. Es posible que tengamos
que medirlo como partes de un galón. Si corro durante 12 minutos, no se me puede obligar
a medir en millas enteras cuando en realidad corrí 9/10 de milla.
Numeros irracionales
Los números irracionales no se pueden expresar comouna fracción. Esto incluye el famoso
π, las raíces cuadradas de ciertos números como 2 y el número e de Euler , del que
aprenderemos más adelante. Estos números tienen un número infinito de dígitos decimales,
como 3.141592653589793238462…
Hay una historia interesante detrás de los números irracionales. El matemático griego
Pitágoras creía que todos los números son racionales. Creía esto tan fervientemente que
hizo una religión que rezaba al número 10. “¡Bendícenos, número divino, tú que
engendraste dioses y hombres!” él y sus seguidores rezaban (por qué el “10” era tan
especial, no lo sé). Existe la leyenda de que uno de sus seguidores, Hippasus, demostró
que no todos los números son racionales simplemente demostrando la raíz cuadrada de 2.
Esto alteró gravemente el sistema de creencias de Pitágoras, y respondió ahogando a
Hippassus en el mar.
Independientemente, ahora sabemos que no todos los números son racionales.
Numeros reales
Los números reales incluyen tanto números racionales como irracionales. En la práctica,
cuando realiza cualquier trabajo de ciencia de datos, puede tratar cualquier decimal con el
que trabaje como números reales.
Números complejos e imaginarios
Te encuentras con este tipo de número cuando sacas la raíz cuadrada de un número
negativo. Si bien los números imaginarios y complejos tienen relevancia en ciertos tipos de
problemas, en su mayoría nos mantendremos alejados de ellos.
En ciencia de datos, encontrará que la mayoría (si no todo) de su trabajo utilizará números
enteros, números naturales, enteros y números reales. Los números imaginarios se pueden
encontrar en casos de uso más avanzados, como la descomposición de matrices, que
abordaremos en el Capítulo 4.
NÚMEROS COMPLEJOS E IMAGINARIOS
Si desea aprender sobre los números imaginarios, hay una gran lista de reproducción Los números imaginarios
son reales en YouTube (Imaginary Numbers Are Real [Part 1: Introduction] - YouTube).
Orden de operaciones
Con suerte, está familiarizado con el orden de las operaciones, que es el orden en que
resuelve cada parte de una expresión matemática. Como un breve repaso, recuerda que
evalúas los componentes entre paréntesis, seguidos de los exponentes, luego la
multiplicación, la división, la suma y la resta. Puede recordar el orden de las operaciones
mediante el recurso mnemotécnico PEMDAS (Por favor, disculpe a mi querida tía Sally),
que corresponde al orden de paréntesis, exponentes, multiplicación, división, suma y resta.
Tomemos por ejemplo esta expresión:
3. Primero evaluamos los paréntesis (3 + 2), que es igual a 5:
A continuación resolvemos el exponente, que podemos ver está elevando al cuadrado ese
5 que acabamos de sumar. Eso es 25:
A continuación tenemos la multiplicación y la división. El orden de estos dos es
intercambiable ya que la división también es multiplicación (usando fracciones).Prosigamos
y multipliquemos el 2 con el , dando :
A continuación realizaremos la división, dividiendo 50 entre 5, lo que nos dará 10:
10 - 4
Y por último, realizamos cualquier suma y resta. Por supuesto, 10 - 4 nos dará 6:
10 - 4 = 6
Efectivamente, si tuviéramos que expresar esto en Python imprimiríamos un valor de 6.0
como se muestra en el Ejemplo 1-1.
Ejemplo 1-1. Resolver una expresión en Python
my_value = 2 * (3 + 2)**2 / 5 - 4
print(my_value) # prints 6.0
Esto puede ser elemental, pero sigue siendo crítico. En el código, incluso si obtiene el
resultado correcto sin ellos, es una buena práctica usar paréntesis generosamente en
expresiones complejas para establecer el control del orden de evaluación.
Aquí agrupo la parte fraccionaria de mi expresión entre paréntesis, lo que ayuda a
diferenciarla del resto de la expresión en el ejemplo 1-2.
Ejemplo 1-2. Haciendo uso de paréntesis para mayor claridad en Python
my_value = 2 * ((3 + 2)**2 / 5) – 4
print(my_value) # prints 6.0
Si bien ambos ejemplos son técnicamente correctos, el último es más claro para nosotros,
los humanos que se confunden fácilmente. Si usted u otra persona realiza cambios en su
código, los paréntesis brindan una referencia fácil del orden de operación a medida que
realiza los cambios. Esto proporciona una línea de defensa contra los cambios de código
para evitar errores también.
Variables
Si ha realizado algunos scripts con Python u otro lenguaje de programación, tiene una idea
de lo que es una variable. En matemáticas, una variable es un marcador de posición con
nombre para un número no especificado o desconocido.
Puede tener una variable x que represente cualquier número real y puede multiplicar esa
variable sin declarar cuál es. En el Ejemplo 1-3, tomamos una entrada variable x de un
usuario y la multiplicamos por 3.
Ejemplo 1-3. Una variable en Python que luego se multiplica
x = int(input("Please input a numbern"))
product = 3 * x
print(product)
4. Hay algunos nombres de variables estándar para ciertos tipos de variables. Si estos
nombres de variables y conceptos no le son familiares, ¡no se preocupe! Pero algunos
lectores pueden reconocer que usamos theta θ para denotar ángulos y beta β para un
parámetro en una regresión lineal. Los símbolos griegos crean nombres de variables
incómodos en Python, por lo que probablemente nombraríamos a estas variables theta y
beta en Python como se muestra en el Ejemplo 1-4.
Ejemplo 1-4. Nombres de variables griegas en Python
beta = 1.75
theta = 30.0
Tenga en cuenta también que los nombres de las variables se pueden subíndice para que
se puedan usar varias instancias de un nombre de variable. Para propósitos prácticos,
simplemente trátelos como variables separadas. Si encuentra variables x 1, x2 y x3,
simplemente trátelas como tres variables separadas como se muestra en el Ejemplo 1-5.
Ejemplo 1-5. Expresando variables con subíndice en Python
x1 = 3 # or x_1 = 3
x2 = 10 # or x_2 = 10
x3 = 44 # or x_3 = 44
Funciones
Las funciones son expresiones que definen relaciones entre dos o más variables. Más
específicamente, una función toma variables de entrada (también llamadas variables de
dominio o variables independientes ), las inserta en una expresión y luego da como
resultado una variable de salida (también llamada variable dependiente ).
Tome esta función lineal simple:
y = 2 x + 1
Para cualquier valor de x dado, resolvemos la expresión conesa x para encontrar y. Cuando
x = 1, entonces y = 3. Cuando x = 2, y = 5. Cuando x = 3, y = 7 y así sucesivamente, como
se muestra en la Tabla 1-1.
Diferentes valores para y = 2x + 1
X 2x + 1 y
0 2(0) + 1 1
1 2(1) + 1 3
2 2(2) + 1 5
3 2(3) + 1 7
Las funciones son útiles porque modelan una relación predecible entre variables, como
cuántos incendios podemos esperar a una temperatura x. Usaremos funciones lineales para
realizar regresiones lineales en el Capítulo 5.
Otra convención que puede ver para la variable dependiente y es etiquetarla explícitamente
como una función de x, como f(x). Entonces, en lugar de expresar una función como y = 2
x + 1, también podemos expresarla como:
f ( x ) = 2 x + 1
El ejemplo 1-6 muestra cómo podemos declarar una función matemática e iterarla en
Python.
Ejemplo 1-6. Declarar una función lineal en Python
def f(x):
return 2 * x + 1
x_values = [0, 1, 2, 3]
5. for x in x_values:
y = f(x)
print(y)
Cuando setrata de números reales, una característica sutil pero importante de las funciones
es que a menudo tienen un número infinito de valores de x y valores de y resultantes.
Pregúntese esto: ¿cuántos valores de x podemos poner a través de la función y = 2 x + 1
? En lugar de solo 0, 1, 2, 3.. ¿por qué no 0, 0,5, 1, 1,5, 2, 2,5, 3 como se muestra en la
Tabla 1-2 ?
Tabla 1-2. Diferentes valores para y = 2x + 1
X 2x + 1 y
0.0 2(0) + 1 1
0.5 2(.5) + 1 2
1.0 2(1) + 1 3
1.5 2(1.5) + 1 4
2.0 2(2) + 1 5
2.5 2(2.5) + 1 6
3.0 2(3) + 1 7
¿O por qué no hacer cuartos de paso para x ? ¿O 1/10 de un paso? Podemos hacer que
estos pasos sean infinitamente pequeños, demostrando efectivamente que y = 2 x + 1
es una función continua, donde para cada valor posible de x hay un valor para y. Esto nos
lleva muy bien a visualizar nuestra función como una línea, como se muestra en la Figura
1-1.
Figura 1-1. Gráfico para la función y = 2x + 1
Cuando graficamos en un plano bidimensional con dos rectas numéricas (una para cada
variable) se conoce como plano cartesiano, plano xy o plano de coordenadas. Trazamos
un valor x dado y luego buscamos el valor y correspondiente, y trazamos las intersecciones
como una línea. Tenga en cuenta que debido a la naturaleza de los números reales (o
decimales, si lo prefiere), hay una cantidad infinita de valores de x. Es por eso que cuando
trazamos la función f ( x ) obtenemos una línea continua sin interrupciones. Hay un número
infinito de puntos en esa línea, o cualquier parte de esa línea.
Si desea trazar esto usando Python, hay varias bibliotecas de gráficos desde Plotly hasta
matplotlib. A lo largo de este libro usaremos SymPy para realizar muchas tareas, y la
6. primera que usaremos es trazar una función. SymPy usa matplotlib, así que asegúrese de
tener ese paquete instalado. De lo contrario, imprimirá un gráfico feo basado en texto en su
consola. Después de eso, simplemente declare la variable x en SymPy usando símbolos(),
declare su función y luego trácela como se muestra en el Ejemplo 1-7 y la Figura 1-2.
Ejemplo 1-7. Trazar una función lineal en Python usando SymPy
from sympy import *
x = symbols('x')
f = 2*x + 1
plot(f)
Figura 1-2. Usando SymPy para graficar una función lineal
El ejemplo 1-8 y la figura 1-3 son otro ejemplo que muestra la función f (x) = x2 + 1.
Ejemplo 1-8. Graficar una función exponencial
from sympy import *
x = symbols('x')
f = x**2 + 1
plot(f)
Tenga en cuenta que en la figura 1-3 no obtenemos una línea recta, sino una curva suave
y simétrica conocida como parábola. Es continuo pero no lineal, ya que no produce valores
en línea recta. Funciones con curvas como esta son matemáticamente más difíciles de
trabajar, pero aprenderemos algunos trucos para que no sea tan malo.
FUNCIONES CURVILÍNEAS
Cuando una función es continua pero con curvas, en lugar de lineal y recta, la llamamos función curvilínea.
7. Figura 1-3. Usando SymPy para graficar una función exponencial
Tenga en cuenta que las funciones utilizan múltiples variables de entrada, no solo una. Por
ejemplo, podemos tener una función con variables independientes x e y. Tenga en cuenta
que y no es dependiente como en los ejemplos anteriores.
f( x, y ) = 2x + 3y
Como tenemos dos variables independientes ( x e y ) y una variable dependiente (la salida
de f ( x, y )), necesitamos trazar este gráfico en tres dimensiones para producir un plano de
valores en lugar de una línea, como se muestra en Ejemplo 1-9 y Figura 1-4.
Ejemplo 1-9. Declarar una función con dos variables independientes en Python
fromsympy import*
fromsympy.plottingimportplot3d
x, y = symbols('x y')
f = 2*x + 3*y
plot3d(f)
Figura 1-4. Usando SymPy para graficar una función tridimensional
No importa cuántas variables independientes tenga, su función generalmente generará solo
una variable dependiente. Cuando resuelva múltiples variables dependientes,
probablemente usará funciones separadas para cada una.
sumatorias
8. Prometí no usar ecuaciones llenas de símbolos griegos en este libro. Sin embargo, hay uno
que es tan común y útil que sería negligente no cubrirlo. Una suma se expresa como sigma
Σ y suma elementos.
Por ejemplo, si quiero iterar los números del 1 al 5, multiplicar cada uno por 2 y sumarlos,
así es como lo expresaría usando una suma. El ejemplo 1-10 muestra cómo ejecutar esto
en Python.
Ejemplo 1-10. Realizando una suma en Python
summation = sum(2*i for i in range(1,6))
print(summation)
Tenga en cuenta que i es una variable de marcador de posición que representa cada valor
de índice consecutivo que estamos iterando en el bucle, que multiplicamos por 2 y luego
sumamos todos juntos. Cuando está iterando datos, puede ver variables como x i que
indican un elemento en una colección en el índice i.
LA FUNCIÓN RANGE()
Recuerde que la función range() en Python es exclusiva al final, lo que significa que si
invoca range(1,4) iterará los números 1, 2 y 3. Excluye el 4 como límite superior.
También es común ver que n representa la cantidad de elementos en una colección, como
la cantidad de registros en un conjunto de datos. Aquí hay uno de esos ejemplos donde
iteramos una colección de números de tamaño n, multiplicamos cada uno por 10 y los
sumamos:
En el Ejemplo 1-11 usamos Python para ejecutar esta expresión en una colección de cuatro
números. Tenga en cuenta que en Python (y la mayoría de los lenguajes de programación
en general) normalmente hacemos referencia a elementos que comienzan en el índice 0,
mientras que en matemáticas comenzamos en el índice 1. Por lo tanto, cambiamos en
consecuencia en nuestra iteración comenzando en 0 en nuestro RANGE().
Ejemplo 1-11. Suma de elementos en Python
x = [1, 4, 6, 2]
n = len(x)
summation = sum(10*x[i] for i in range(0,n))
print(summation)
Esa es la esencia de la suma. En pocas palabras, una suma Σ dice, "suma un montón de
cosas juntas", y usa un índice i y un valor máximo n para expresar cada iteración que
alimenta la suma. Los veremos a lo largo de este libro.