Matlab 特征选择

标签 matlab machine-learning runtime-error feature-selection

我正在尝试学习 300*299 训练矩阵中的相关特征,方法是从中随机取一行作为我的测试数据,然后对其应用 sequentialfs。我使用了以下代码:

>> Md1=fitcdiscr(xtrain,ytrain);
>> func = @(xtrain, ytrain, xtest, ytest) sum(ytest ~= predict(Md1,xtest));
>> learnt = sequentialfs(func,xtrain,ytrain)

xtrainytrain 分别是299*299299*1。 Predict 将为我提供 xtest 的预测标签(这是来自原始 xtrain 的一些随机行)。

但是,当我运行我的代码时,出现以下错误:

Error using crossval>evalFun (line 480)
The function '@(xtrain,ytrain,xtest,ytest)sum(ytest~=predict(Md1,xtest))' generated the following error:
X must have 299 columns.

Error in crossval>getFuncVal (line 497)
funResult = evalFun(funorStr,arg(:));

Error in crossval (line 343)
    funResult = getFuncVal(1, nData, cvp, data, funorStr, []);

Error in sequentialfs>callfun (line 485)
    funResult = crossval(fun,x,other_data{:},...

Error in sequentialfs (line 353)
                crit(k) = callfun(fun,x,other_data,cv,mcreps,ParOptions);

Error in new (line 13)
    learnt = sequentialfs(func,xtrain,ytrain)

我哪里出错了?

最佳答案

您应该在内部 func 构建您的分类器,而不是之前。 sequentialfs 每次都在不同的集合上调用该函数,并且必须为每个集合专门构建一个分类器,仅使用为该迭代选择的 sequentialfs 特征。

我不确定我是否清楚,实际上你应该将代码的第一行移到 func

的主体中

来源:MathWorks

关于Matlab 特征选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40560139/

相关文章:

matlab - 在 MATLAB 中将 varargin 传递给嵌套类方法

java - MATLAB中如何从InputStream读取大量数据

python - model.LGBMRegressor.fit(x_train, y_train) 和 lightgbm.train(train_data, valid_sets = test_data) 有什么区别?

asp.net - 间歇性 "Failed to load viewstate"错误

C : Runtime Error Verdict (Help debugging)

python - 如果else循环在python中无法正常运行

matlab - 如何在 MATLAB 中创建此图形标题?

使用 scipy.io 将 python pandas 数据框转换为 matlab 结构

machine-learning - 根据数据包识别应用程序

algorithm - 感知器算法 - 调整