举个可在matlab运行的LDA降维算法例子
时间: 2023-11-12 16:06:40 浏览: 75
基于matlab的LDA算法.zip
以下是一个在Matlab中实现LDA降维算法的例子,该例子使用了UCI机器学习库中的Iris数据集。
```matlab
% 加载数据
data = load('iris.data');
X = data(:, 1:4);
Y = data(:, 5);
% 将数据分成训练集和测试集
[trainInd,testInd] = dividerand(size(X,1),0.7,0.3);
trainData = X(trainInd,:);
trainLabel = Y(trainInd,:);
testData = X(testInd,:);
testLabel = Y(testInd,:);
% 训练LDA模型
lda = fitcdiscr(trainData, trainLabel);
% 预测测试集的标签
predictedLabel = predict(lda, testData);
% 计算分类准确率
accuracy = sum(predictedLabel == testLabel) / length(testLabel);
disp(['分类准确率为:', num2str(accuracy)]);
% 可视化降维结果
coefficient = lda.Coeffs(1,2).Linear;
newData = testData * coefficient';
figure;
subplot(2,2,1);
gscatter(testData(:,1),testData(:,2),testLabel);
title('原始数据(特征1和特征2)');
subplot(2,2,2);
gscatter(newData(:,1),zeros(size(newData)),testLabel);
title('降维后数据');
subplot(2,2,3);
gscatter(testData(:,3),testData(:,4),testLabel);
title('原始数据(特征3和特征4)');
subplot(2,2,4);
gscatter(newData(:,2),zeros(size(newData)),testLabel);
title('降维后数据');
```
该例子首先加载Iris数据集,然后将数据分成训练集和测试集。接着使用`fitcdiscr`函数训练一个LDA模型,并使用`predict`函数预测测试集的标签。最后计算分类准确率,并使用`gscatter`函数可视化降维结果。
在运行该例子之前,需要确保当前目录下存在Iris数据集文件`iris.data`。
阅读全文