Julia의 새로운 기능. 이 블로그를 따르는 것은 신경망을 수행하는 :줄리아 : 데이터 유형/DataFrame에 대한 오류가있는 혼동
http://blog.yhathq.com/posts/julia-neural-networks.html
나는 줄리아의 데이터 유형 및 오류 메시지에 대한 혼란 스러워요.
# read in df to train
train_df = readtable("data/winequality-red.csv", separator=';')
# create train and test data splits
y = train_df[:quality]
x = train_df[:, 1:11] # matrix of all except quality
# vector() and matrix() from blog post
n = length(y)
is_train = shuffle([1:n] .> floor(n * .25))
x_train,x_test = x[is_train,:],x[!is_train,:]
y_train,y_test = y[is_train],y[!is_train]
type StandardScalar
mean::Vector{Float64}
std::Vector{Float64}
end
# initialize empty scalar
function StandardScalar()
StandardScalar(Array(Float64, 0), Array(Float64, 0))
end
# compute mean and std of each col
function fit_std_scalar!(std_scalar::StandardScalar, x::Matrix{Float64})
n_rows, n_cols = size(x_test)
std_scalar.std = zeros(n_cols)
std_scalar.mean = zeros(n_cols)
for i = 1:n_cols
std_scalar.mean[i] = mean(x[:,i])
std_scalar.std[i] = std(x[:,i])
end
end
# further vectorize the transformation
function transform(std_scalar::StandardScalar, x::Matrix{Float64})
# element wise subtraction of mean and division of std
(x .- std_scalar.mean') ./ std_scalar.std'
end
# fit and transform
function fit_transform!(std_scalar::StandardScalar, x::Matrix{Float64})
fit_std_scalar!(std_scalar, x)
transform(std_scalar, x)
end
# fit scalar on training data and then transform the test
std_scalar = StandardScalar()
n_rows, n_cols = size(x_test)
# cols before scaling
println("Col means before scaling: ")
for i = 1:n_cols
# C printf function
@printf("%0.3f ", (mean(x_test[:, i])))
end
나는 오류가 점점 오전 :
x_train = fit_transform!(std_scalar, x_train)
x_test = transform(std_scalar, x_test)
# after transforming
println("\n Col means after scaling:")
for i = 1:n_cols
@printf("%0.3f ", (mean(x_test[:,i])))
end
나는 새로운 오전이 코드는
'.-' has no method matching .-(::DataFrame, ::Array{Float64,2}) in fit_transform! ...
를이 (신경망에 블로그 게시물 다음 다시) 내 코드입니다 Julia에게 연락하고 문제가 무엇인지 이해하지 못합니다. Vector() 및 Matrix()는 블로그 게시물에서 작동하지 않습니다. 그게 DataFrame의 이전 버전에서 나온 것이라고 가정합니다.
문제점 : Matrix {Float64}를 (를) 가져 와서 DataFrame을 전달하고 있습니다. 나는 비추천 된 (?) Matrix()가 이것을 고쳤을 것이라고 생각 하는가? 확실하지 않다. 이 오류를 분석하고 이러한 함수를 올바른 유형으로 전달하려면 어떻게해야합니까? (여기에 문제가있는 경우)?
감사합니다.
네, 그게 제가 생각한 것입니다. 나는 명시 적으로 오류가 ".-"(요소 현명한 뺄셈)이라는 것을 이해해야한다고 말했어야합니다. 고맙습니다! – squishy
해명 해줘서 고마워. 나는 그 세부 사항을 명백하게하고 싶었습니다. 특히 당신이 당신이 줄리아에게 처음 온다고 말한 이후로 (나는 그렇습니다). 그 이후로 데이터 파일을 가져 와서 연주했습니다. 나는 해결책을 보았다고 믿는다. 이것은 거의 @IainDunning이 제안한 해결책이다. 이 정보로 나의 답을 보완 할 것입니다. –
바로! 나는 당신이 해결책으로 편집하기 전에 그것을 조금 알았다. 더 이상 벡터 (...)도 매트릭스 (...)도 아니고 단순히 배열 (...)을 사용합니다. 또한, 작동하지 않는 train_df [ "quality"]에 대한 많은 '오래된'구문을 보았습니다. train_df [: quality] 여야합니다. 다른 사람에게만 허용됩니다. 이안과 마이크 감사합니다! 나는 성공적으로 인공 신경 네트워크 예측 모델을 만들었습니다 :) – squishy