我正在使用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
–类标签的向量,长度为n
。y
的每个元素必须是介于1
和nc
之间的整数。
我希望这能有所帮助。