예제 #1
0
def principal():
    # I. carregamos a matriz de dados

    # Filósofos:
    #dados = n.loadtxt('notas_filosofos.txt')

    # Compositores:
    #dados = n.loadtxt('notas_filosofos.txt')
    #covar, autovetores, autovalores, autovalores_prop, dados_finais = pca(dados)
    # print '\n\nautovetores', autovetores.T
    # print '\nMatriz de covariância:\n', n.around(covar, decimals=2)
    # print '\nMatriz de correlação de Pearson:\n', n.around(pearson(dados), decimals=2)
    # print '\nAutovalores:\n', n.around(autovalores_prop, decimals=2)
    # print '\nVariância dos Autovalores:\n', n.around(n.var(autovalores_prop), decimals=2)
    # print '\nSoma dos dois primeiros:\n', round(autovalores_prop[0] + autovalores_prop[1], ndigits=2)
    # print '\nDados finais:\n', n.around(dados_finais, decimals=2)
    #c1 = dados_finais[:,0]
    #c2 = dados_finais[:,1]

    #p.clf()
    #p.plot(c1, c2)
    #p.xlim((-4,4))
    #p.ylim((-4,4))
    #p.savefig('pca.eps')

    # for i in xrange(dados.shape[1]):
    #     dados[:,i]=(dados[:,i]-dados[:,i].mean())/dados[:,i].std()

    # T, P, E = pp.PCA_nipals(dados)
    # princ = T[:,:2]
    # p.plot(princ[:,0], princ[:,1], color="black")
    # p.savefig('pca_outro.eps')

    # # Aleatórios:
    # #num_agentes = [10,15,20,25,30,35,40,45,50,100, 150, 200, 250, 300, 350, 400, 450, 500, 1000]
    num_agentes = [100]
    num_vars = 8
    a = []
    autovalores_todos = {}
    for i in num_agentes:
        autovalores_todos[i] = []
        for j in xrange(1):
            # aqui eu jogo os valores sampleados
            #print '\n\ndados toscos\n\n', dados
            #print '\n\ndados monte carlo\n\n', montecarlo(10)
            #d = n.loadtxt('notas_filosofos.txt')
            #dados = n.array([[r.uniform(1,9) for x in range(num_vars)] for y in range(i)])
            # ########3
            # dados = n.array(montecarlo2(i))
            # print 'quantidade de aleatorios: ', len(dados)
            # covar, autovetores, autovalores, autovalores_prop, dados_finais = pca(dados)
            # print '\n*** Teste %s para %s agentes ***\n' % (j, i)
            # print '\nMatriz de covariância:\n', n.around(covar, decimals=2)
            # print '\nMatriz de correlação de Pearson:\n', n.around(pearson(dados), decimals=2)
            # print '\nAutovalores:\n', n.around(autovalores_prop, decimals=2)
            # print '\nVariância dos Autovalores:\n', n.around(n.var(autovalores_prop), decimals=2)
            # print '\nSoma dos dois primeiros:\n', round(autovalores_prop[0] + autovalores_prop[1], ndigits=2)
            # c1 = dados_finais[:,0]
            # c2 = dados_finais[:,1]

            # PCA ALEATORIOS
            dados = n.array(montecarlo2(i))
            for i in xrange(dados.shape[1]):
                dados[:,
                      i] = (dados[:, i] - dados[:, i].mean()) / dados[:,
                                                                      i].std()

            T, P, E = pp.PCA_nipals(dados)
            princ = T[:, :2]

            p.plot(princ[:, 0], princ[:, 1], 'rx', label='Random values')

            # PCA FILOSOFOS
            dados_fi = n.loadtxt('notas_compositores.txt')
            for i in xrange(dados_fi.shape[1]):
                dados_fi[:,
                         i] = (dados_fi[:, i] -
                               dados_fi[:, i].mean()) / dados_fi[:, i].std()

            T, P, E = pp.PCA_nipals(dados_fi)
            princ = T[:, :2]
            p.plot(princ[:, 0], princ[:, 1], 'bo', label='Original scores')
            p.xlim((-4, 4))
            p.ylim((-4, 4))
            p.legend(loc='lower right')
            p.savefig('pca_final.eps')
예제 #2
0
colunas = [[x[i] for x in nn] for i in range(8)]
correlacao = [
    stats.pearsonr(n.array(col), n.array(coluna))[0] for col in colunas
    for coluna in colunas
]
for i in range(8):
    m.append(correlacao[i * 8:i * 8 + 8])
# pearson == m

print 'PEARSON'

for linha in m:
    print[str(round(x, ndigits=2)) for x in linha]

# cálculo PCA
T, P, E = pca.PCA_nipals(nn)
princ = T[:, :2]

# cálculo dos autovalores %
print 'AUTOVALORES', E * 100

# contribuições
c1 = P[0]
c2 = P[1]
cc1 = c1 / sum(abs(c1)) * 100
cc2 = c2 / sum(abs(c2)) * 100
print 'CONTRIBUICOES'
print 'C1', [abs(x) for x in cc1]
print 'C2', [abs(x) for x in cc2]

# oposições/inovação
예제 #3
0
autovals = n.zeros((nperturb, 8))  # agora para 8d
princ_orig = princ_orig[:, :8]
princ = princ[:, :8]

for foobar in xrange(nperturb):
    dist = n.random.randint(-2, 3, copia_dados.shape)
    copia_dados += dist

    for i in xrange(copia_dados.shape[1]):
        copia_dados[:,
                    i] = (copia_dados[:, i] -
                          copia_dados[:, i].mean()) / copia_dados[:, i].std()

    # fazemos pca para dados considerando esses pontos aleatórios entre -2 e 2
    # FIXME: substituir depois pca_nipals
    T, P, E = pca.PCA_nipals(copia_dados)
    autovals[foobar] = E[:8]
    princ = T[:, :8]
    for i in xrange(ncomp):
        for j in xrange(ncomp):
            distancias[i, j, foobar] = n.sum((princ_orig[i] - princ[j])**2)**.5

stds = n.zeros((ncomp, ncomp))
means = n.zeros((ncomp, ncomp))
main_stds = []
main_means = []
print 'dados', copia_dados
for i in xrange(ncomp):
    for j in xrange(ncomp):
        stds[i, j] = distancias[i, j, :].std()
        means[i, j] = distancias[i, j, :].mean()