%% 清空环境变量
warning off % 关闭报警信息
close all % 关闭开启的图窗
clear % 清空变量
clc % 清空命令行
%% 导入数据
res = xlsread('数据集.xlsx');
%% 参数设置
P_train=res(:,1:end-1)';
%% 数据归一化
[p_train, ps_input] = mapminmax(P_train, 0, 1);
%% 矩阵转置
p_train = p_train';
%% 参数设置
para = 2; % 核函数参数
dim = 8; % 降维后维度
%% 降维
[zes, ~, kes] = kPCA(p_train, dim, 'poly', para);
%% 贡献率
Vars = kes(1: dim) / sum(kes);
%% 降维后各特征的信息占比
figure
bar(Vars)
legend('降维后特征信息占比')
xlabel('特征')
ylabel('信息占比')
string = {'降维后信息的特征占比'};
title(string)
grid
%% 重新安排数据
res = [zes';res(:,end)']';
%% 分析数据
num_class = length(unique(res(:, end))); % 类别数(Excel最后一列放类别)
num_res = size(res, 1); % 样本数(每一行,是一个样本)
num_size = 0.7; % 训练集占数据集的比例
res = res(randperm(num_res), :); % 打乱数据集(不打乱数据时,注释该行)
flag_conusion = 1; % 标志位为1,打开混淆矩阵(要求2018版本及以上)
outdim = 1; % 最后一列为输出
f_ = size(res, 2) - outdim; % 输入特征维度