R コードを Julia に変換しようとしましたが、Julia コードのパーセプトロン関数が無限ループになっていて、間違いを見つけることができません。
コードの動作: 1. [-1,1]^2 で 100 個のランダムなデータ ポイントを作成します。 fの上下2クラス(-1と1)で100点、ylistはクラスに応じた-1と1のリスト。4. 知覚アルゴリズムで f の仮説を立てる
R コード:
#library(MASS)
#library(ggplot2)
n <- 100
datam <- matrix(c(rep(1,n), 2*runif(n)-1, 2*runif(n)-1), n)
a <- 2*runif(2)-1
b <- 2*runif(2)-1
f <- lm(a ~ b)
fff <- coef(f)
test <- c(1, fff[1], fff[2])
ylist <- sign(datam %*% test)
perceptron = function(datam, ylist) {
w <- c(1,0,0)
made.mistake = TRUE
while (made.mistake) {
made.mistake=FALSE
for (i in 1:n) {
if (ylist[i] != sign(t(w) %*% datam[i,])) {
w <- w + ylist[i]*datam[i,]
made.mistake=TRUE
}
}
}
return(w=w)
}
perceptron(datam,ylist)
ジュリアコード:
n = 100
fp = [2*rand(2)-1 for i = 1:2 ]
A = [ones(n,1) c=2*rand(n)-1 d=2*rand(n)-1]
m = (fp[2][2]-fp[1][2])/(fp[2][1]-fp[1][1])
b = fp[2][2]-m*fp[2][1]
funkt = [1 m b]
ylist = sign(A*funkt')
w = A\ylist
function perceptron(data, y)
v = [1 0 0]
mistake = true
while mistake
mistake = false
for i = 1:n
if y[i] != sign(v*data[i,:]')
v = v + y[i]*data[i,:]
mistake = true
end
end
end
return v
end
perceptron(A,ylist)
私は常に他のコードの改善にオープンです