基本信息
源码名称:python实现对Iris数据和Sonar数据的fisher线性判别分类
源码大小:0.03M
文件格式:.zip
开发语言:Python
更新时间:2020-10-27
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
python实现对Iris数据和Sonar数据的fisher线性判别分类
def Fisher(X1,X2,n,c): | |
# 计算三类样本的类均值向量 | |
m1=(np.mean(X1,axis = 0)) | |
m2=(np.mean(X2,axis = 0)) | |
m1 = m1.reshape(n,1) # 将行向量转换为列向量以便于计算 | |
m2 = m2.reshape(n,1) | |
#计算类内离散度矩阵 | |
S1 = np.zeros((n,n)) # m1 = within_class_scatter_matrix1 | |
S2 = np.zeros((n,n)) # m2 = within_class_scatter_matrix2 | |
if c == 0: # 第一种情况 | |
for i in range(0,96): | |
S1 = (X1[i].reshape(n,1)-m1).dot((X1[i].reshape(n,1)-m1).T) | |
for i in range(0,111): | |
S2 = (X2[i].reshape(n,1)-m2).dot((X2[i].reshape(n,1)-m2).T) | |
if c == 1: | |
for i in range(0,97): | |
S1 = (X1[i].reshape(n,1)-m1).dot((X1[i].reshape(n,1)-m1).T) | |
for i in range(0,110): | |
S2 = (X2[i].reshape(n,1)-m2).dot((X2[i].reshape(n,1)-m2).T) | |
#计算总类内离散度矩阵S_w | |
S_w = S1 S2 | |
#计算最优投影方向 W | |
W = np.linalg.inv(S_w).dot(m1 - m2) | |
#在投影后的一维空间求两类的均值 | |
m_1 = (W.T).dot(m1) | |
m_2 = (W.T).dot(m2) | |
#计算分类阈值 W0(为一个列向量) | |
W0 = -0.5*(m_1 m_2) | |
return W,W0 | |