def main():
    #nr=input('Enter the dimension N of the square lattice -->')
    nr=4
    reps=nr*nr # number of lattice sites

    # generate complete dataset
    (training_data,training_H,training_M)=mh.complete_dataset(reps)
    train_labels=mh.gen_train_labels(training_data, training_H, training_M)
    # compute frequesncies
    counter=collections.Counter(train_labels)
    val=counter.values()
    freq=np.array(val)/np.float(len(train_labels))
    
    #partition into training 90% and testing 10% datasets
    #[train,test]=mh.partition(training_data,train_labels)
    #train_set=train[0]
    #train_y=train[1]
    #test_set=test[0]
    #test_y=test[1]
    #test_classes=np.unique(test_y)
    #train_classes=np.unique(train_y)
    #training=[]
    #testing=[]
    #for i in range(len(train_set)):
    #row=train_set[i]
    #training.append(np.hstack((row,train_y[i])))
    #for i in range(len(test_set)):    
    #row2=test_set[i]
    #testing.append(np.hstack((row2,test_y[i])))
    #np.reshape(testing,(len(testing),17))
    #np.reshape(training,(len(training),17))
    
    #train2=sorted(training,key=itemgetter(-1))
    #test2=sorted(testing,key=itemgetter(-1))
    train=[]
    for i in range(len(training_data)):    
        row2=training_data[i]
        train.append(np.hstack((row2,train_labels[i])))
    np.reshape(train,(len(train),17))
    
    train2=sorted(train,key=itemgetter(-1))
    train_classes=np.unique(train_labels)    
    epochs=2
    train_res=get_MH_sampled_IDs(train2,train_classes,freq,epochs)  
    for i in range(epochs):
        res=train_res[i]
        H=[]
        for j in range(len(res)):
            H.append(res[j][-2])
        
        count=collections.Counter(H)
        ens=[]
        for k in np.sort(count.keys()):
            ens.append(count[k])    
        freq2=np.array(ens)/np.float(len(H)) # estimated fdrequencies of the ditribution 
        freq1=freq2.tolist()
        print "energy values:", np.sort(count.keys())
        print "frequencies:",freq1
        #histogr(H)
        record(freq1)
def main():
    #nr=input('Enter the dimension N of the square lattice -->')
    nr=4
    reps=nr*nr # number of lattice sites

    # generate complete dataset
    (training_data,training_H,training_M)=mh.complete_dataset(reps)
    train_labels=mh.gen_train_labels(training_data, training_H, training_M)
    # compute frequesncies
    counter=collections.Counter(train_labels)
    val=counter.values()
    freq=np.array(val)/np.float(len(train_labels))
    
    #partition into training 90% and testing 10% datasets
    [train,test]=mh.partition(training_data,train_labels)
    train_set=train[0]
    train_y=train[1]
    test_set=test[0]
    test_y=test[1]
    test_classes=np.unique(test_y)
    train_classes=np.unique(train_y)
    training=[]
    testing=[]
    for i in range(len(train_set)):
        row=train_set[i]
        training.append(np.hstack((row,train_y[i])))
    for i in range(len(test_set)):    
        row2=test_set[i]
        testing.append(np.hstack((row2,test_y[i])))
    np.reshape(testing,(len(testing),17))
    np.reshape(training,(len(training),17))
    
    train2=sorted(training,key=itemgetter(-1))
    test2=sorted(testing,key=itemgetter(-1))
    print "Initial number of random seeds is set to 10"
    print "It yields a training dataset of 10,000 samples per temperature"
    print "The temperature range is set to [0.1 40.0] with step size 0.5"
    expr=input("Would you like to increase the training dataset size? 'y'/'n'")
    if expr=='y':
        r=input("Enter a factor (integer) by which to increase the sample size")
    elif expr=='n':
        r=1  
    else:
        r=1
    train_res=get_MH_sampled_IDs(train2,train_classes,freq,r)
    test_res=get_MH_sampled_IDs(test2,test_classes,freq,1)
    write_to_csv(train_res, "training")
    write_to_csv(test_res, "testing")
예제 #3
0
def main():
    nr=4
    reps=nr*nr # number of lattice sites
    (training_data,training_H,training_M)=mh.complete_dataset(reps) 
    calc(training_data,nr) 
    output_filename='/home/nportman/UOIT_research/data/4by4.tar.gz'
    source_dir='/home/nportman/UOIT_research/data/4by4'
    make_tarfile(output_filename,source_dir)
예제 #4
0
def main():
    nr=4
    reps=nr*nr # number of lattice sites
    (training_data,training_H,training_M)=mh.complete_dataset(reps)
    classes=upsample(training_data,nr) # unique energy levels of the complete dataset
    prop_train=0.8
    (train,test)=partition(training_data,training_H,prop_train)
    train_data=train[0]
    test_data=test[0]    
    calc(train_data,classes,nr,1) # flag=1 for training
    calc(test_data,classes,nr,2) # flag=2 for testing
예제 #5
0
def main(): 
    # MH algorithm sampling IDs in the complete space
    (complete, Hs, Ms)=complete_dataset(16)
    prob=compute_boltz_weights(Hs)
    print prob
    train_res=mh.get_MH_samples(complete)
    #train_labels=mh.gen_train_labels(complete, Hs, Ms)
    #train=[]
    #for i in range(len(complete)):    
    #    row2=complete[i]
    #    train.append(np.hstack((row2,train_labels[i])))
    #np.reshape(train,(len(train),17))
    #train2=sorted(train,key=itemgetter(-1))
  
    #train_classes=np.arange(0,len(levels),1)
    #temp=40.0
    #train_res=get_MH_sampled_IDs(train2,train_classes,temp) 
    H=[]
    for i in range(len(train_res)):
        H.append(train_res[i][-2])
    histogr(H)
예제 #6
0
import gzip
import cPickle
import MH_dataset_generator as mh
import ising_model_princeton2 as I
import matplotlib.pyplot as plt

from sklearn.tree import DecisionTreeClassifier
from sklearn.decomposition import PCA
from sklearn.preprocessing import scale
from operator import itemgetter

nr=input('Enter the dimension N of the square lattice -->')
reps=nr*nr # number of lattice sites

# generate complete dataset
(training_data,training_H,training_M)=mh.complete_dataset(reps)
train_labels=mh.gen_train_labels(training_data, training_H, training_M)
#partition into training 90% and testing 10% datasets
[train,test]=mh.partition(training_data,train_labels)
train_set=train[0]
train_y=train[1]
test_set=test[0]
test_y=test[1]
training=[]
testing=[]
for i in range(len(train_set)):
    row=train_set[i]
    training.append(np.hstack((row,train_y[i])))
for i in range(len(test_set)):    
    row2=test_set[i]
    testing.append(np.hstack((row2,test_y[i])))
def main():
    nr = 4
    reps = nr * nr  # number of lattice sites
    (training_data, training_H, training_M) = mh.complete_dataset(reps)
    calc(training_data, nr)
예제 #8
0
import numpy as np
import random
import gzip
import cPickle
import MH_dataset_generator as mh

from sklearn.tree import DecisionTreeClassifier
from sklearn.decomposition import PCA
from sklearn.preprocessing import scale


nr=input('Enter the dimension N of the square lattice -->')
reps=nr*nr # number of lattice sites

# generate complete dataset
(training_data,training_H,training_M)=mh.complete_dataset(reps)
train_labels=mh.gen_train_labels(training_data, training_H, training_M)
[train,test]=mh.partition(training_data,train_labels)
train_set=train[0]
train_y=train[1]
test_set=test[0]
test_y=test[1] 
train_data=mh.get_MH_samples(train_set)
print "... Computed training dataset"
test_data=mh.get_MH_samples(test_set)
print "... Computed testing dataset"

expr=input('Enter "H" for Hamiltonian energy estimation and "M" for magnetization -->')
if expr=="H":
    train_labels=train_data[:,-2] # Hamiltonian
    test_labels=test_data[:,-2]