rng(0,'twister'); % For reproducibility
N = 100;
X = rand(N,20);
y = -ones(N,1);
y(X(:,3).*X(:,9)./X(:,15) < 0.4) = 1;
mdl = fscnca(X,y,'Solver','sgd','Verbose',1);
figure()
plot(mdl.FeatureWeights,'ro')
grid on
xlabel('Feature index')
ylabel('Feature weight')
clear
load('twodimclassdata.mat');
figure()
gscatter(X(:,1),X(:,2),y)
xlabel('x1')
ylabel('x2')
n = size(X,1);
rng('default')
XwithBadFeatures = [X,randn(n,100)*sqrt(20)];
XwithBadFeatures=(XwithBadFeatures-min(XwithBadFeatures))./range(XwithBadFeatures,1);
X = XwithBadFeatures;
ncaMdl = fscnca(X,y,'FitMethod','exact','Verbose',1,...
'Solver','lbfgs');
% 'FitMethod','exact' 使用所有的数据进行拟合
% 'Verbose',1 信息显示
% 'Solver','lbfgs' 求解器的设置,'lbfgs' — Limited memory Broyden-Fletcher-Goldfarb-Shanno (LBFGS) algorithm
figure
semilogx(ncaMdl.FeatureWeights,'ro');
xlabel('Feature index');
ylabel('Feature weight');
grid on;
figure % 和上面的图作对比
plot(ncaMdl.FeatureWeights,'ro');
xlabel('Feature index');
ylabel('Feature weight');
grid on;
% 对于每一折来说cvpartition将 4/5的数据作为训练集,另外1/5作为测试集
cvp = cvpartition(y,'kfold',5);
numtestsets = cvp.NumTestSets;
lambdavalues = linspace(0,2,20)/length(y);
lossvalues = zeros(length(lambdavalues),numtestsets);
for i = 1:length(lambdavalues) % 对lambda的数值进行循环
for k = 1:numtestsets % 对测试集进行循环
% 提取训练集
Xtrain = X(cvp.training(k),:);
ytrain = y(cvp.training(k),:);
% 提取测试集
Xtest = X(cvp.test(k),:);
ytest = y(cvp.test(k),:);
% 使用训练集训练nca模型
ncaMdl = fscnca(Xtrain,ytrain,'FitMethod','exact',...
'Solver','lbfgs','Lambda',lambdavalues(i));
% 使用nca模型对测试集的损失函数进行计算。
lossvalues(i,k) = loss(ncaMdl,Xtest,ytest,...
'LossFunction','quadratic');
end
end
figure()
plot(lambdavalues,mean(lossvalues,2),'ro-');
xlabel('Lambda values');
ylabel('Loss values');
grid on;
[~,idx] = min(mean(lossvalues,2)); % Find the index
bestlambda = lambdavalues(idx) % Find the best lambda value
ncaMdl = fscnca(X,y,'FitMethod','exact','Verbose',1,...
'Solver','lbfgs','Lambda',bestlambda);
figure
semilogx(ncaMdl.FeatureWeights,'ro');
xlabel('Feature index');
ylabel('Feature weight');
grid on;
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
特征选择是机器学习中的一项重要任务,其目标是从原始特征集中选择最具信息量的特征,以提高模型的性能、降低过拟合风险、加速训练过程,并提高模型的解释性。特征选择方法可以分为三大类:过滤式(Filter)、包裹式(Wrapper)、嵌入式(Embedded)。 1. **过滤式特征选择(Filter Methods):** 这种方法在特征选择和模型训练之前独立进行。它通过对每个特征的统计量进行评估,然后根据这些评估结果选择特征。常见的过滤方法包括信息增益、方差分析、相关系数等。 2. **包裹式特征选择(Wrapper Methods):** 这类方法使用特定的机器学习模型来评估特征的性能,通常包含了特征子集搜索的过程。常见的包裹方法有递归特征消除(Recursive Feature Elimination,RFE)、正向选择、反向消除等。 3. **嵌入式特征选择(Embedded Methods):** 嵌入式方法将特征选择嵌入到模型训练的过程中。在训练过程中,模型会自动选择对目标任务最有用的特征。常见的嵌入式方法包括LASSO回归、决策树、支持向量机等。
资源推荐
资源详情
资源评论
收起资源包目录
25.特征选择.zip (3个子文件)
25.特征选择
L31.mlx 89KB
Untitled3.m 2KB
mnistdata.mat 8.42MB
共 3 条
- 1
资源评论
AIDog
- 粉丝: 817
- 资源: 33
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功