Я пытаюсь реализовать персептрон в 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>
Любая помощь будет очень ценной. Спасибо!