西瓜的数据集:
clc
clear all
[num,txt]=xlsread('G:\usefile\WaterMelon_3.0.xlsx');
%提取有效数据
data=num(1:end,[1,8,9]); %取第1,8,9,列
label_txt=txt([2:end],10);%取第10列
label=ismember(label_txt,'是');%看label_txt中的值是不是等于“是”,是的话结果返回1,不是返回0;
%整理所需数据
data=[data,label];
class1=data(find(label==1),[2,3]);
class2=data(find(label==0),[2,3]);
%核心代码
mu1=mean(class1);%均值
mu2=mean(class2);
s1=cov(class1);%协方差
s2=cov(class2);
sw=s1+s2; %类内散度矩,对应(式3.33)
sb=(mu1-mu2)'*(mu1-mu2); %类间散度矩,对应(式3.33)
[V,D]=eig(inv(sw)*sb) %求矩阵inv(sw)*sb的全部特征值,构成对角阵D,并求inv(sw)*sb的特征向量构成V的列向量
w=V(:,2)%取较大特征值对应的特征向量,(w的闭式解是inv(sw)*sb的N-1个特征值所对应的的特征向量组成的矩阵
pre_value1=class1*w;%预测值
pre_value2=class2*w;
pre_value