TL; DR Un pequeño libro sobre matemáticas para programadores. Versión electrónica y en papel por referencia .He estado enseñando en universidades por 9 años. Durante este tiempo, los estudiantes han cambiado. Mi impresión subjetiva es que un estudiante de primer año moderno aprecia mucho más su tiempo. En condiciones de asistencia gratuita, incluso los estudiantes excelentes deben estar seguros de que una conferencia en particular los beneficiará, comparable a 1.5 horas en Kaggle o Coursera. Parece que la disponibilidad de explicaciones de calidad garantizadas ya está
matando el formato de clase clásico . Por lo tanto, la segunda clase del curso para muchos profesores generalmente tiene lugar frente a una audiencia significativamente más pequeña. En una audiencia más pequeña, los estudiantes tienen una mayor maniobra para las preguntas, y la pregunta más común que escuché en pares sobre algoritmos y discretización es "¿Por qué?".
¿Por qué fórmulas combinatorias? ¿Cuál es el truco de todas estas probabilidades condicionales, que generalmente se explican en canastas y pelotas? ¿Por qué multiplicar matrices? ¿Y por qué se necesitan matrices inversas? Bueno, vale, aquí hay una búsqueda de amplitud, y cho?No quiero decir que durante mis propios estudiantes de TI recibí respuestas claras a todas estas preguntas. Pero la experiencia en compañías de tipos completamente diferentes me acercó parcialmente a la comprensión. En mis parejas trato de dar ejemplos que no sean sobre gatos, para construir analogías no obvias y en general de alguna manera acercar la industria a las matemáticas. Además, es poco probable que la audiencia total de todas mis clases a lo largo de los años haya superado las 1000 personas. Entonces se me ocurrieron muchas explicaciones y escribí un libro con ejemplos para programadores.
A continuación daré un pequeño fragmento. Puede tomar posesión del libro en papel o en formato electrónico haciendo
clic en el enlace . Comentarios son bienvenidos! Perseguido.
Pistas de hielo de Moscú
Moscú Afuera es invierno, no muy frío, soleado. Domingo por la mañana Has pasado la prueba o incluso un examen de álgebra lineal, y tienes tus propios patines. ¿Qué más se necesita para la felicidad?
¿Quieres ir a la pista?
Con una taza de té, desarrollaste un plan. Usted está interesado en las pistas de patinaje lo suficientemente cerca de la casa, pero esto no es suficiente, aún necesita comodidades. Mejor deje que estas pistas de patinaje sean gratuitas, con Wi-Fi y un inodoro.
Llamó a muchas pistas de hielo cercanas
A , y a otras convenientes:
B. Y dado que estamos interesados tanto en la proximidad como en la conveniencia, nuestro objetivo es cruzar estos conjuntos
A ∩
B. ¿Dónde obtenemos estos conjuntos?
Ir a través de los sitios de la pista o leer reseñas de pósters no es su método. Por lo tanto, va al portal de
datos abiertos de Moscú , o más bien, un script de Python lo hace por usted, un ejemplo del cual se puede encontrar en el sitio web del libro en el documento
M02 - vectores (patinaje) . Usted encuentra que hay muchas pistas de hielo en Moscú - 1350. ¿Cómo vamos a buscar? Aquí recuerda un libro de texto sobre álgebra lineal y comprende que necesita asignar los rodillos a los dos espacios de signos que necesita: coordenadas bidimensionales
(latitud, longitud) y tridimensionales: servicios
(Wi-Fi, inodoro, gratis) .
En el segundo espacio, la presencia del atributo será la unidad, y la ausencia será cero, lo que significa que ya no es necesario normalizar estos datos. Tampoco normalizaremos las coordenadas, ya que son comparables en nuestras latitudes (de lo contrario, tendríamos que elegir un punto de referencia y convertir grados a metros). Y luego elija solo las opciones más interesantes: ¿por qué necesita una pista de patinaje, que está al otro lado de la ciudad o en la que obviamente no hay servicios? Para cualquiera de los espacios tomaremos solo los datos con la menor distancia euclidiana al objetivo.
def topN(expected, data, N): norms = list(map( lambda row, number: (np.linalg.norm(row - expected), number), data, range(len(data))))
Todo esta listo. Solo queda mirar en algún lugar nuestras propias coordenadas (ahora se puede hacer en cualquier aplicación con mapas) y encontrar todas las pistas de patinaje adecuadas en
La intersección de los conjuntos
A y
B :
me_geo = np.array([37.676289, 55.772266])
Para los datos del ejemplo, entre las 30 pistas más cercanas, tenemos una pista en Staraya Basmannaya, pero con todas las comodidades. Y hasta puedes caminar.

Intente usar el portal de datos abiertos de Moscú para encontrar el Wi-Fi abierto más cercano, un cine de verano o cámaras de vigilancia al aire libre más cercanas a usted.