MachineLearning 学习之fisher判别
来源:互联网 发布:女网球运动服知乎 编辑:程序博客网 时间:2024/06/05 19:00
import numpy as npfrom scipy.linalg import solveclass Fisher: def __init__(self,data,clas,inpu): self.data=data self.clas=clas self.inpu=inpu self.result=self.__getResult() def __getResult(self): S=[[0 for i in range(len(self.data[0][0]))]for i in range(len(self.data[0][0]))] S=np.array(S) av_1=[0 for i in range(len(self.data[0][0]))] av_2=[0 for i in range(len(self.data[0][0]))] for i in range(len(self.data[0][0])): for j in range(len(self.data[0])): av_1[i]+=1.0*self.data[0][j][i]/len(self.data) for i in range(len(self.data[0][0])): for j in range(len(self.data[1])): av_2[i]+=1.0*self.data[1][j][i]/len(self.data) print av_1,av_2 for k in range(len(S[0])): for l in range(len(S[0])): s=0 for i in range(len(self.data[0])): s+=(self.data[0][i][k]-av_1[k])*(self.data[0][i][l]-av_1[l]) for i in range(len(self.data[1])): s+=(self.data[1][i][k]-av_1[k])*(self.data[1][i][l]-av_1[l]) S[k][l]=s av=1.0*(np.array(av_1)-np.array(av_2)) #print av c = solve(S, av) print "info" print c print "*********************" print av_1,av_2 ya=np.dot(av_1,c.T) yb=np.dot(av_2,c.T) print ya,yb yab=(len(self.data[0])*ya+len(self.data[1])*yb)/(\ len(self.data[0])+len(self.data[1])) print ya,yb,yab if ya>yab: y=np.dot(np.array(inpu),c.T) if y>yab: numC=0 else: numC=1 elif yb>yab: y=np.dot(np.array(inpu),c.T) if y>yab: numC=1 else: numC=0 else: print "wrong" #if numC=0 result=clas[numC] return resultdata=[ [[1,2,2,1],[1,2,3,1]],\ [[-3,-2,-2,-1],[-4,-4,-3,-1]] ]clas=['A','B']inpu=[1,-3,2,1]fish=Fisher(data,clas,inpu)print "the result is"print fish.result
阅读全文
0 0
- MachineLearning 学习之fisher判别
- 模式识别学习笔记(六)---Fisher判别
- 线性分类器之Fisher线性判别
- Fisher线性判别
- Fisher线性判别
- Fisher判别法
- Fisher线性判别(*)
- Fisher线性判别
- Fisher线性判别
- 【模式识别】Fisher线性判别
- Fisher线性判别
- LDA(Fisher判别)
- Fisher判别法
- fisher线性判别
- MachineLearning-监督学习之线性回归
- DNA序列分类:Fisher判别法
- Fisher线性判别(RPML读书笔记)
- 线性分类器:Fisher线性判别
- angular自定义指令详解
- Substring with Concatenation of All Words--LeetCode
- (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作
- 数组
- POJ 1742/HDU2844 Coins 题解
- MachineLearning 学习之fisher判别
- 最长公共上升子序列
- Django 博客
- Unix-Linux编程实践教程——第六章
- 空间亚线性算法
- 在Linux(Ubuntu)中使用终端编译并运行.c和.cpp文件
- jqeruy时间处理
- Java设计模式知识-笔记六
- C++风格_作用域