你好聪明,
我有数据(可以在这里下载:[在这里输入链接描述][1]),并试图运行一个简单的基于LDA分类特征存储在数据集,11日即F1, F2,……季。
我写了一些代码在Matlab使用只有2特性。我可以问一些问题根据我码有吗?
clc;clf;清晰的所有;关闭所有;
特点= xlsread (“ExtractedFeatures.xls”);
numFeatures = 23;
groundTruthGroup =细胞(numFeatures, 1);
groundTruthGroup (1:15) = cellstr (‘好’);
groundTruthGroup(16:结束)= cellstr (“坏”);
featureSelcted =[(:, 3)特性,特性(:,9)];
[ldaClass, ldaResubErr] =分类(featureSelcted (:, 1:2), featureSelcted (:, 1:2), groundTruthGroup,“线性”);
坏= ~ strcmp (ldaClass groundTruthGroup);
ldaResubErr2 =(坏)/ numFeatures总和;
[ldaResubCM, grpOrder] = confusionmat (groundTruthGroup ldaClass);
gscatter (featureSelcted (: 1) featureSelcted (:, 2), groundTruthGroup,“rgb”,osd的);
包含(”功能3 ');
ylabel (“功能9”);
持有在;
情节(featureSelcted(坏,1),featureSelcted(坏,2),“kx”);
持有从;
leaveOneOutPartition = cvpartition (numFeatures,“leaveout”);
ldaClassFun = @ (xtrain ytrain xtest)(分类(xtest、xtrain ytrain,“线性”));
ldaCVErr = crossval (“宏”featureSelcted (: 1:2),…
groundTruthGroup,“predfun”ldaClassFun,“分区”,leaveOneOutPartition);
clc;
disp (‘______________________________________结果______________________________________________________);
disp (' ');
disp (sprintf (“Resubstitution LDA误差(由Matlab内置训练误差计算):% d 'ldaResubErr));
disp (sprintf (Resubstitution错误的LDA(手动训练误差计算):% d 'ldaResubErr2));
disp (' ');
disp (的混淆矩阵:);
disp (ldaResubCM)
disp (sprintf (交叉验证错误的LDA(一):% d 'ldaCVErr));
disp (' ');
disp (“______________________________________________________________________________________________________”);
我我的第一个问题是如何做特征选择?例如,使用向前或向后特征选择,和基于学习的方法吗?
我有检查,Matlab有“sequentialfs”方法,但不知道如何把它变成我的代码。
二世。如何使用Matlab的分类方法进行分类有超过2功能?我们应该首先执行PCA吗?例如,目前我们有11个特性,我们运行PCA生产2或3个人电脑,然后运行分类?(我希望写一个循环来添加一个接一个的每个特性进行特征选择。不仅运行PCA维度优待。)
三世。我也尝试运行ROC分析。我指的是网页[在这里输入链接描述][2]有一个实现的一个简单的LDA方法和生产LDA的线性分数。然后我们可以使用“perfcurve”ROC曲线。
iii a。但是,我不确定如何使用“分类”方法和“perfcurve”中华民国。
希望。同时,如何交叉验证的中华民国吗?
IIIc。我们有“OPTROCPT”后,这是最好的分界点,我们如何使用这个分界点产生更好的分类?
featureSelcted =[(:, 3)特性,特性(:,9)];
groundTruthNumericalLable =[0(15日1);1(8日)];
ldaCoefficients = LDA (featureSelcted groundTruthNumericalLable);
ldaLinearScores = [(numFeatures 1) featureSelcted]的* ldaCoefficients ';
classProbabilities = exp (ldaLinearScores)。/ repmat(总和(exp (ldaLinearScores), 2), [1 - 2]);
图中,
[玻璃钢,TPR,用力推,AUC, OPTROCPT] = perfcurve (groundTruthNumericalLable (: 1), classProbabilities (: 1), 0);
情节(玻璃钢,TPR,“或者——”)
包含(“假阳性率(玻璃钢,1-Specificity)”);ylabel (“真阳性率(TPR,灵敏度)”)
标题(“中华民国LDA的分类”)
网格在;
四。目前,我计算的准确性训练和交叉验证错误的分类和“crossval”功能。我可以问如何得到这些值在总结通过使用“classperf”?
诉如果有人知道一个好的教程使用Matlab统计工具箱做机器学习任务与一个完整的示例请告诉我。
一些Matlab帮助的例子是真的困惑我,因为的例子是,我真的机器学习的新手。机器人的抱歉如果我问一些问题。非常感谢你的帮助。
一个。