我正在尝试在R中为示例数据集实现感知器,但是它没有收敛。我没有收到任何错误,但是代码没有停止运行,并且似乎卡在了一个循环中。这是代码:
p_train = read.csv("data-10.csv")
Classify <- function(x, weights) {
return(sign((x) %*% weights))
}
Perceptron <- function(data, threshold) {
w <- c(-threshold, runif(ncol(data) - 2))
n <- nrow(data)
label <- data[ , 1]
obs <- data[ , 2:ncol(data)]
misclassfied <- TRUE
epoc <- 0
while (misclassfied) {
misclassfied <- FALSE
for (i in 1:n) {
if (label[i] * Classify(as.matrix(obs[i , ]), as.numeric(w)) <= 0) {
w <- as.numeric(w + label[i]) * as.numeric(obs[i , ])
misclassfied <- TRUE
}
}
epoc <- epoc + 1
}
print(paste("EPOC: ", as.character(epoc)))
return(w)
}
Perceptron(p_train, 0.75)
这是数据集的样子:
<table border=1>
<tr>
<th>Label</th>
<th>Bias</th>
<th>X1</th>
<th>X2</th>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>.433</td>
<td>.454</td>
</tr>
<tr>
<td>-1</td>
<td>1</td>
<td>.673</td>
<td>.324</td>
</tr>
</table>
任何帮助将不胜枚举。谢谢!