def errop(ficheiro,W,total): dictionary,temp,y=cria_dados.read_output(ficheiro) X,Y=cria_dados.criaXY(dictionary,total,y) Y_estimativa=X*W #Y_estimativa=map(lambda temp: 2**temp[0],Y_estimativa.tolist()) erroRR=np.abs((Y-Y_estimativa)/Y) mediaRR=sum(erroRR.transpose().toarray()[0])/erroRR.shape[0] ''' erroRR=erroRR.transpose() erroRR=erroRR.tolist()[0] for i in erroRR: i=i**2 mediaRR=(sum(erroRR)/len(erroRR)) mediaRR=np.sqrt(mediaRR) ''' ''' estimativa=sum(Y)/len(Y) for i in Y: i=(i-estimativa)**2 media=sum(Y)/len(Y) ''' return mediaRR#,media #mediaRR -> MSE || media->erro de algoritmo parvo
import sys sys.path.append("../") import cria_dados import sklearn.linear_model as lm import numpy as np import pdb import scipy.io import iteracoes as it import scipy.sparse as sparse import pickle f="../../le_ficheiro/someta" dictionary, total, y =cria_dados.read_output(f+"train.txt") X,Y=cria_dados.criaXY(dictionary,total,y,False) lambd=1000.0*X.shape[0] #scipy.io.savemat("X.mat",mdict={'X':X}) #scipy.io.savemat("Y.mat",mdict={'Y':Y}) clf=lm.ElasticNet(alpha=lambd/X.shape[0],max_iter=900000,fit_intercept=False,normalize=False, l1_ratio=1.0) cena=clf.fit(X.todense(),Y.todense()) dictionary,temp,y=cria_dados.read_output(f+"test.txt") Xteste,Yteste=cria_dados.criaXY(dictionary,total,y,False) YP=cena.predict(Xteste) YP=sparse.csr_matrix(YP) YP=YP.transpose() erro=np.abs(YP-Yteste) media=sum(np.array(erro.todense()))/erro.shape[0] print "_____________________________________" print media
plt.subplot(212) plt.title("Percentagem de W com valor =0") import pylab print yyy #pylab.ylim([0,100]) plt.plot(yyy,"b",yyy,"ro") plt.show() return w_new,y_new if __name__ == '__main__': dictionary,total,y=cria_dados.read_output("../le_ficheiro/train_meta.txt") X,Y=cria_dados.criaXY(dictionary,total,y) X,total=cria_dados.delcomun(X,total) Y=sparse.csr_matrix(Y) X=sparse.csr_matrix(X) vec=sparse.csr_matrix([5 for i in xrange(X.shape[1])]) vec=vec.transpose() W,F=lasso(X,Y,vec,total) print "----------erro---------" print "TESTE",RRegression_beta.erro("../le_ficheiro/test_meta.txt",W,total) print "-----------------------" print "TRAIN",RRegression_beta.erro("../le_ficheiro/train_meta.txt",W,total) print "-----------------------" print "DEV",RRegression_beta.erro("../le_ficheiro/dev_meta.txt",W,total)