TL; DR Um pequeno livro sobre matemática para programadores. Versão eletrônica e em papel por referência .Eu ensino nas universidades há 9 anos. Durante esse período, os alunos mudaram. Minha impressão subjetiva é que um calouro moderno aprecia muito mais seu tempo. Em condições de participação gratuita, até estudantes excelentes devem ter certeza de que uma aula em particular os beneficiará, comparável a 1,5 horas em Kaggle ou Coursera. Parece que a disponibilidade de explicações de qualidade garantida já está
matando o formato clássico de palestras . Portanto, a segunda palestra do curso para muitos palestrantes geralmente ocorre na frente de um público significativamente menor. Em uma audiência menor, os alunos têm uma manobra maior para perguntas, e a pergunta mais comum que ouvi em pares sobre algoritmos e discretização é "Por quê?"
Por que fórmulas combinatórias? Qual é o problema de todas essas probabilidades condicionais, que geralmente são explicadas em cestas e bolas? Por que multiplicar matrizes? E por que são necessárias matrizes inversas? Bem, ok, aqui está uma busca pela primeira vez, e cho?Para não dizer que, durante meus próprios alunos de TI, recebi respostas claras para todas essas perguntas. Mas a experiência em empresas de tipos completamente diferentes me aproximou parcialmente do entendimento. Nos meus pares, tento dar exemplos que não são sobre gatos, construir analogias não óbvias e, geralmente, aproximar a indústria da matemática. Além disso, é improvável que o público total de todas as minhas aulas ao longo dos anos tenha excedido 1000 pessoas. Então, eu vim com várias explicações e escrevi um livro com exemplos para programadores.
Abaixo darei um pequeno fragmento. Você pode se apossar do livro em papel ou em formato eletrônico,
clicando no link . Comentários são bem-vindos! Perseguido.
Pistas de gelo de Moscou
Moscovo Lá fora é inverno, não muito frio, ensolarado. Domingo de manhã. Você passou no teste ou mesmo em um exame de álgebra linear e tem seus próprios patins. O que mais é necessário para a felicidade?
Você quer ir para a pista!
Em uma xícara de chá, você planejou um plano. Você está interessado em pistas de patinação perto o suficiente da casa, mas isso não é suficiente, você ainda precisa de comodidades. Melhor deixar essas pistas de skate gratuitas, com Wi-Fi e um banheiro.
Você chamou muitas pistas de gelo próximas
A e convenientes -
B. E como estamos interessados em proximidade e conveniência, nosso objetivo é cruzar esses conjuntos
A ∩
B. Onde conseguimos esses conjuntos?
Percorrer os sites de pistas ou ler resenhas de pôsteres não é o seu método. Portanto, você acessa o portal de
dados abertos de Moscou , ou melhor, um script Python faz isso por você, um exemplo do qual pode ser encontrado no site do livro no documento
M02 - vetores (patinação) . Você acha que existem muitas pistas de gelo em Moscou - 1350. Como vamos procurar? Aqui, você se lembra de um livro sobre álgebra linear e entende que precisa mapear os rolos para os dois espaços de atributos necessários: coordenada bidimensional
(latitude, longitude) e tridimensional - comodidades
(Wi-Fi, banheiro, gratuito) .
No segundo espaço, a presença do atributo será unidade e a ausência será zero, o que significa que a normalização desses dados não é mais necessária. Também não normalizaremos as coordenadas, pois elas são comparáveis em nossas latitudes (caso contrário, teríamos que escolher um ponto de referência e converter graus em metros). E escolha apenas as opções mais interessantes - por que você precisa de uma pista de patinação, que fica do outro lado da cidade ou na qual obviamente não há comodidades? Para qualquer um dos espaços, levaremos apenas os dados com a menor distância euclidiana até o alvo.
def topN(expected, data, N): norms = list(map( lambda row, number: (np.linalg.norm(row - expected), number), data, range(len(data))))
Está tudo pronto. Resta apenas espiar em algum lugar nossas próprias coordenadas (agora isso pode ser feito em qualquer aplicativo com mapas) e encontrar todas as pistas de patinação adequadas em
a interseção dos conjuntos
A e
B :
me_geo = np.array([37.676289, 55.772266])
Para os dados do exemplo, entre as 30 pistas mais próximas, temos uma pista em Staraya Basmannaya, mas com todas as comodidades. E você pode até andar.

Tente usar o portal de dados abertos de Moscou para encontrar independentemente o Wi-Fi aberto mais próximo, um cinema de verão ou as câmeras de vigilância do pátio mais próximas a você.