【问题标题】:LDA on Julia using MultivariateStats使用 MultivariateStats 的 Julia 上的 LDA
【发布时间】:2021-09-06 13:24:18
【问题描述】:

我正在使用 Brunton & Kutz 的“数据驱动科学与工程”一书学习分类方法,但我不只使用 MATLAB 和 Python 代码资源,而是使用 Julia 重写教科书示例,因为这是我的主要编程语言。

我找不到为什么将 MulticlassLDA 模型拟合到数据不起作用,它返回一个 DimensionMismatch("Inconsistent array sizes."),但据我所知,我的数组被分派给了文档中所示的 fit 函数。

这是我的代码:

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)

【问题讨论】:

    标签: julia classification lda multiclass-classification


    【解决方案1】:

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

    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-analysis

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

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-05
      • 2017-11-29
      • 2012-04-29
      • 2013-05-20
      • 2021-02-12
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      相关资源
      最近更新 更多