Julia MethodError:没有与isless(::符号,::Int64)匹配的方法

Julia MethodError:没有与isless(::符号,::Int64)匹配的方法,julia,Julia,我试图在Julia中构建一个Dirichlet过程Gibbs采样器,并将每个簇表示为一个对象。我做了以下工作: using BayesianNonparametrics using DataFrames using Distances type cluster m::Vector Sigma::LinAlg.Cholesky nu::Int kappa::Int nk::Int end function logPredPdf(f::cluster,

我试图在Julia中构建一个Dirichlet过程Gibbs采样器,并将每个簇表示为一个对象。我做了以下工作:

using BayesianNonparametrics
using DataFrames
using Distances

type cluster
    m::Vector
    Sigma::LinAlg.Cholesky
    nu::Int
    kappa::Int
    nk::Int
  end

function logPredPdf(f::cluster,x::Array{Float64,1}):

  kappa <- f.kappa
  S <- f.Sigma
  mu <- f.m
  nu <- f.nu

  d <- size(x)[1]
  v = nu-d+1
  U = sqrt((1+1/kappa)/v) * LinAlg.lowrankdowndate!(S, sqrt(f.kappa)*mu)[:U]

  x = x - m
  Q = \(transpose(U),x)
  q= vecdot(Q,Q)
  o = -log(1+q/v)*((v+d)/2)
  c = lgamma((v+d)/2)-lgamma(v/2)-(d*log(v*pi)+2*sum(log(diag(U))))/2
  y = c + o

  return y
end

data = readtable("PCA_transformed_data_gt1000.csv",header= true);
data = delete!(data, :1);
n,d = size(data);

s = 6.6172
S0 = s*eye(d)
kappa_0 = 1
nu_0 = d
mu_0 = zeros(d)
S1 = LinAlg.cholfact(S0+kappa_0*(mu_0*mu_0'))

X= DataFrame(Matrix(data)');# transpose data Matrix
prior = cluster(mu_0, S1,nu_0, kappa_0, 0)

x = X[:,1]
kt = logPredPdf(prior,x)

“previor”和“x”的类型是集群和数组{Float64,1},这是函数要求的。你知道我这里缺少什么吗?

更改所有
更改所有
卡帕什么是
卡帕什么是
谢谢你的回答!虽然你说的完全有道理,但当我将我的函数改为
函数logPredPdf(f::cluster,x::Array{Float64,1}):kappa=f.kappa S=f.Sigma mu=f.m nu=f.nu=d=size(x)[1]v=nu-d+1u=sqrt((1+1/kappa)/v)*LinAlg.lowrankdowndate!(S,sqrt(f.kappa)*mu[:U]x=x-mq=\(转置(U),x)Q=vecdot(Q,Q)o=-log(1+Q/v)*((v+d)/2)c=lgama((v+d)/2)-lgama(v/2)-(d*log(v*pi)+2*sum(log(diag(U))/2y=c+o返回y端
与以前一样,用=,替换为“”,我在以下错误中得到一个错误:
语法:无效位置分配“:kappa”加载时在include_string(::string,::string)中。在eval时在include_string(::string,::string,::Int64)中。在eval时在include_string(::模块,::string,::string,::Int64,::Vararg{Int64,N})在eval时。jl:34 in(::Atom.#56{string,Int64,string})在eval时。jl:50在path(::Atom,Int64,string})在任务.jl:60
@LeonidasSouliotis中查看我的编辑。看起来您使用的是Python和R语法的混合——Julia是它自己的东西。再次感谢您!似乎从函数中删除
也解决了问题!谢谢你的回答!虽然你说的完全有道理,但当我将我的函数改为
函数logPredPdf(f::cluster,x::Array{Float64,1}):kappa=f.kappa S=f.Sigma mu=f.m nu=f.nu=d=size(x)[1]v=nu-d+1u=sqrt((1+1/kappa)/v)*LinAlg.lowrankdowndate!(S,sqrt(f.kappa)*mu[:U]x=x-mq=\(转置(U),x)Q=vecdot(Q,Q)o=-log(1+Q/v)*((v+d)/2)c=lgama((v+d)/2)-lgama(v/2)-(d*log(v*pi)+2*sum(log(diag(U))/2y=c+o返回y端
与以前一样,用=,替换为“”,我在以下错误中得到一个错误:
语法:无效位置分配“:kappa”加载时在include_string(::string,::string)中。在eval时在include_string(::string,::string,::Int64)中。在eval时在include_string(::模块,::string,::string,::Int64,::Vararg{Int64,N})在eval时。jl:34 in(::Atom.#56{string,Int64,string})在eval时。jl:50在path(::Atom,Int64,string})在任务.jl:60
@LeonidasSouliotis中查看我的编辑。看起来您使用的是Python和R语法的混合——Julia是它自己的东西。再次感谢您!似乎从函数中删除
也解决了问题!
MethodError: no method matching isless(::Symbol, ::Int64)
Closest candidates are:
  isless(!Matched::Char, ::Integer) at deprecated.jl:49
  isless(::Symbol, !Matched::Symbol) at strings/basic.jl:137
  isless(!Matched::DataArrays.NAtype, ::Any) at /Users/u1560476/.julia/v0.5/DataArrays/src/operators.jl:510
  ...
 in logPredPdf(::cluster, ::Array{Float64,1}) at Dirichlet_Process_Gibbs_Sampler.jl:33
 in include_string(::String, ::String) at loading.jl:441
 in include_string(::String, ::String, ::Int64) at eval.jl:30
 in include_string(::Module, ::String, ::String, ::Int64, ::Vararg{Int64,N}) at eval.jl:34
 in (::Atom.##53#56{String,Int64,String})() at eval.jl:50
 in withpath(::Atom.##53#56{String,Int64,String}, ::String) at utils.jl:30
 in withpath(::Function, ::String) at eval.jl:38
 in macro expansion at eval.jl:49 [inlined]
 in (::Atom.##52#55{Dict{String,Any}})() at task.jl:60
julia> expand(:(x <- y))
:(x < -y)

julia> Meta.show_sexpr(ans)
(:call, :<, :x, (:call, :-, :y))
  let
     global k
function logPredPdf(f::cluster,x::Array{Float64,1}):