赞
踩
Spectral Angle Mapper Classifer(光谱角分类)
原理如下:
光谱角分类的计算公式类似于:
两个公式一样的,只是不同的写法,公式搜集于网络。但代码自己写的
动手根据光谱角分类写了一个模块
import numpy as np import pandas as pd class SamC(object): def __init__(self): self.X=None self.Y=None self.Y_label=None def fit(self,x,y): #训练 self.X=x self.Y=y def predict(self,x): #预测 if x.ndim==1: self.Y_label=np.argmin(np.arccos(np.round(self.X.dot(x.reshape(-1,1))/(np.linalg.norm( \ self.X,axis=1)*np.linalg.norm(x)).reshape(-1,1),5))) else: sita_f=self.X.dot(x.T) sita_m=np.linalg.norm(self.X,axis=1).reshape(-1,1).dot(np.linalg.norm(x.T,axis=0).reshape(1,-1)) SITA=np.arccos(np.round(sita_f/sita_m,5)) self.Y_label=np.argmin(SITA,axis=0) return self.Y[self.Y_label] if __name__=='__main__': samc=SamC() train_x=np.arange(1,21).reshape(5,4) #训练数据 yy=np.arange(1,6)#训练标签 samc.fit(train_x,yy) print(samc.predict(train_x))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。