Plotagem manual de linhas de contorno retas no Perceptron

[O material pertence aoCurso Coursera Machine Learning de Andrew Ng]

Eu fiz um dos exercícios para trabalhar em R (eu poderia ter optado pelo Python - não essencial para a pergunta), usando uma metodologia diferente, e obtive o seguinte gráfico com a linha de decisão do limite:

Os pontos vermelhos foram admitidos em uma faculdade, enquanto o resto não.

A questão não é como obter a linha no gráfico, mas por que a seguinte linha no código adaptada a R a partir dos materiais do curso funciona:

y = c((-1/coefs[3]) * (coefs[2] * x + coefs[1]))

Então, na realidade, é perguntar sobre a matemática subjacente a este comando. Os coeficientes correspondem aos coeficientes de regressão logística.

Aqui está o conjunto de dadose aqui está o código inteiro:

dat = read.csv("perceptron.txt", header=F)
is.data.frame(dat)
colnames(dat) = c("test1","test2","y")
head(dat)

plot(test2 ~ test1, col = as.factor(y), pch = 20, data=dat)

fit = glm(y ~ test1 + test2, family = "binomial", data = dat)
coefs = coef(fit)
(x = c(min(dat[,1])-2,  max(dat[,1])+2))
(y = c((-1/coefs[3]) * (coefs[2] * x + coefs[1])))
lines(x, y)

questionAnswers(1)

yourAnswerToTheQuestion