使用MultivariateStats对Julia进行LDA



我正在使用Brunton&Kutz";数据驱动科学与工程";,但我并没有只使用MATLAB和Python的代码资源,而是使用Julia重写了教科书中的示例,因为Julia是我的主要编程语言。

我不知道为什么将MulticlassLDA模型拟合到数据中不起作用,它返回了DimensionMismatch("Inconsistent array sizes."),但据我所知,我的数组已被调度到文档中所示的拟合函数。

这是我的代码:

using MAT, LinearAlgebra, Statistics, MultivariateStats
# Load data in MATLAB format. Abailible in http://www.databookuw.com/
dogs = read(matopen("../DATA/dogData_w.mat"),"dog_wave") 
cats = read(matopen("../DATA/catData_w.mat"),"cat_wave")

CD = hcat(dogs,cats)
u, s, v = svd(CD .- mean(CD)) #SVD decomposition
xtrain = vcat(v[1:60,2:2:4],v[81:140,2:2:4])   #training data array, dims 120x2
label = Int.(vcat(ones(60),-ones(60)))         #label's vector, length 120
xtest = vcat(v[61:80,2:2:4],v[141:160,2:2:4])  
classf= fit(MulticlassLDA,2,xtrain,label)

您有两个问题通过这种方式解决:

label = [fill(1, 60); fill(2, 60)] # labels must range from 1 to n
fit(MulticlassLDA,2,permutedims(xtrain),label) # observations in xtrain must be stored in columns (not rows)

请参阅中的评论https://multivariatestatsjl.readthedocs.io/en/stable/index.html:

该包中实现的所有方法都采用了JuliaStats的列主约定:在数据矩阵中,每列对应一个样本/观察,而每行对应一个特征(变量或属性(。

关于y参数的解释https://multivariatestatsjl.readthedocs.io/en/stable/mclda.html#data-分析:

y–类标签的向量,长度为ny的每个元素必须是介于1nc之间的整数。

我希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新