在Perceptron中手动绘制直线边界线

时间:2016-06-24 14:13:00

标签: r plot machine-learning

[该材料属于Coursera Machine Learning course by Andrew Ng]

我得到了一个在R中工作的练习(我可以选择使用Python - 对于这个问题不是必不可少的),使用不同的方法,并使用边界决策线得到以下情节:

enter image description here

红点被录取进了大学,其余则没有。

问题不在于如何在剧情中获得这条线,而是为什么代码中的以下行适用于课程材料中的R:

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

所以实际上是在询问支持这个命令的数学。系数对应于逻辑回归系数。

Here is the dataset,这是整个代码:

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)

1 个答案:

答案 0 :(得分:0)

答案实际上非常简单:

边界位于:

0 = theta_0 + theta_1 x_1 + theta_2 x_2

因此,由于情节是x_2x_1,我们选择x_1的两个极值点并在决策边界计算预期的x_2

x_2 = (- 1 / theta_2) * (theta_0 + theta_1 x_1)