示例#1
0
def main():
    lb, im = mnist.read(dataset="training")
    lbt, imt = mnist.read(dataset="testing")
    im = im.reshape((len(im),len(im[0])*len(im[0])))
    imt = imt.reshape((len(imt),len(imt[0])*len(imt[0])))
    im.astype(float)
    imt.astype(float)
    # validation set
    imv = im[:500]
    lbv = lb[:500]
    imtt = im[500:]
    lbtt = lb[500:]
    tag = np.zeros(len(lbv),dtype=int)
    if READ:
	sigma = []
	mu = []
	for i in range(10):
 	    ts = np.loadtxt('sigma'+str(i)+'.out')
	    tm = np.loadtxt('mu'+str(i)+'.out')
	    sigma.append(ts)
	    mu.append(tm)
        sigma = np.array(sigma)
        mu = np.array(mu)
        sigma_inv = []
        for i in range(len(sigma)):
            sigma_inv.append(np.linalg.inv(sigma[i]))
        sigma_inv = np.array(sigma_inv)
    else:
        data = zip(lbtt, imtt)
        datat = zip(lbv, imv)
        # group data into 10 groups
        data_grouped = [list(v) for l,v in groupby(sorted(data, key=lambda x:x[0]), lambda x:x[0])]
        sigma, mu = cov.cov(data_grouped, 10000)
	sigma = np.array(sigma)
	mu = np.array(mu)
        sigma_inv = []
        for i in range(len(sigma)):
            sigma_inv.append(np.linalg.inv(sigma[i]))
        sigma_inv = np.array(sigma_inv)
    #print np.linalg.slogdet(sigma[0])
    pi = class_prob(lb)
    cnt = 0
    for imt_data in imv:
	p = -sys.maxint 
	ind = -1
    	pj = class_gauss(imt_data, sigma, sigma_inv, mu)
	for j in range(len(pj)):
	    temp = math.log(pi[j])+pj[j]
	    if (p < temp):
		p = temp
		ind = j
	print lbv[cnt],':',ind
	if lbv[cnt] == ind:
	    tag[cnt] = 1
	cnt += 1

    print 'hit:',sum(tag)
    print 'total:', len(tag)
    print 'miss rate:', 1.0-float(sum(tag))/len(tag)
示例#2
0
def main():
    f = 0.05
    th = 6.27344414456
    #f = 0.1
    #th = 9.25216525759
    #f = 0.15
    #th = 12.6067380436
    #f = 0.2
    #th = 14.6211445211
    lb, im = mnist.read(dataset="training")
    lbt, imt = mnist.read(dataset="testing")
    tested = len(lbt)
    tag = np.zeros(tested,dtype=int)
    im = im.reshape((len(im),len(im[0])*len(im[0])))
    imt = imt.reshape((len(imt),len(imt[0])*len(imt[0])))
    if READ:
	sigma = []
	mu = []
	for i in range(10):
 	    ts = np.loadtxt('sigma'+str(i)+'.out')
	    tm = np.loadtxt('mu'+str(i)+'.out')
	    sigma.append(ts)
	    mu.append(tm)
        sigma = np.array(sigma)
        mu = np.array(mu)	
        sigma_inv = []
        for i in range(len(sigma)):
            sigma_inv.append(np.linalg.inv(sigma[i]))
        sigma_inv = np.array(sigma_inv)
    else:
        data = zip(lb, im)
        datat = zip(lbt, imt)
        # group data into 10 groups
        data_grouped = [list(v) for l,v in groupby(sorted(data, key=lambda x:x[0]), lambda x:x[0])]
        sigma, mu = cov.cov(data_grouped, 10000)
	sigma = np.array(sigma)
	mu = np.array(mu)
        sigma_inv = []
        for i in range(len(sigma)):
            sigma_inv.append(np.linalg.inv(sigma[i]))
        sigma_inv = np.array(sigma_inv)
    #print np.linalg.slogdet(sigma[0])
    pi = class_prob(lb)
    cnt = 0
    ab = 0
    for imt_data in imt:
	p = -sys.maxint 
        p2 = -sys.maxint
	ind = -1
	ind2 = -1
    	pj = class_gauss(imt_data, sigma, sigma_inv, mu)
	for j in range(len(pj)):
	    temp = math.log(pi[j])+pj[j]
	    if (p < temp):
		p = temp
		ind = j
	    elif (p2 < temp):
                p2 = temp
                ind2 = j
	if (p-p2)  < th:
	    ab += 1
	    print lbt[cnt],':',ind, ':', p, '(abstain!)'
	else:
	    print lbt[cnt],':',ind, ':', p
	    if lbt[cnt] == ind:
	        tag[cnt] = 1
	cnt += 1

    print 'hit:',sum(tag)
    print 'total:', len(tag)
    print 'abstain:', ab
    print 'miss rate:', 1.0-float(sum(tag))/(len(tag)-ab)
示例#3
0
# -*- coding: utf-8 -*-
"""
Created on Mon Apr  2 22:18:07 2018

@author: Administrator
"""
import a, b, c, d, e, f, cov
a.x1()
b.x2()
c.x3()
d.x4()
e.x5()
f.x6()
cov.cov()