感知器算法未收敛(R)

时间:2019-10-17 08:43:26

标签: r machine-learning neural-network data-science perceptron

我正在尝试在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>

任何帮助将不胜枚举。谢谢!

0 个答案:

没有答案