def dataPlot(layersize=[100, 50, 25],triangleAffineSum=3,lineRotateMag=16): # "LR",'SVM' resultDict={} actFile=scipy.io.loadmat('./trainedWeights/DeepNet_' + '_'.join(map(str, layersize))+'_Act.mat' ) otherActFile=scipy.io.loadmat('./trainedWeights/OtherAna_' + '_'.join(map(str, layersize))+'_Act.mat' ) # labelFile=scipy.io.loadmat('labelDict.mat' ) labelDict=pickle.load( open( "labelDict.p", "rb" ) ) actDict={} i=0 for imgID in labelDict: i=labelDict[imgID]['grandIndex'] actDict[imgID]={'codeLayerProbs':actFile['codeLayerProbs'][i,], 'rawData':actFile['input2DOrdered'][i,],'reconstrProbs':actFile['reconstrProbs'][i,], 'pcaAct':otherActFile['PCAReducedData'][i,]} # visualize predictorVect=['codeLayerProbs'] #['codeLayerProbs','pcaAct','rawData','reconstrProbs'] plotVect=[ {'X':predictorVect, 'Y':'subType', 'constraints': {'type':['twoLines'],'subType':[['intersecting'],['parallel']]},'probeName':'intersect/parallel'}, {'X':predictorVect, 'Y':'type', 'constraints': {'type':['quadrilateral','triangle','circle']},'probeName':'Object Type'}, {'X':predictorVect, 'Y':'scaleMag', 'constraints': {'type':['line']},'probeName':'lineLength'}, {'X':predictorVect, 'Y':'affineIndex', 'constraints': {'type':['triangle'],'affineIndex':range(0,int(triangleAffineSum/2+1)),'triangleHeight':[0]},'probeName':'triangleSubType'}, {'X':predictorVect, 'Y':'subType', 'constraints': {'type':['twoLines'],'subType':[['intersecting'],['intersecting', 'perpendicular']]},'probeName':'perpendicular'}, {'X':predictorVect, 'Y':'rotateMag', 'constraints': {'type':['line'],'rotateMag':np.linspace(0,90,lineRotateMag/2+1).tolist()},'probeName':'lineClockWise'}, {'X':predictorVect, 'Y':'angleIndex', 'constraints': {'type':['twoLines'],'subType':[['intersecting'],['intersecting', 'perpendicular']]},'probeName':'angleMag'}, {'X':predictorVect, 'Y':'subType', 'constraints': {'type':['lineCircle'],'subType':[['intersecting'],['not-intersecting']]},'probeName':'lineCircle Relations'}, {'X':predictorVect, 'Y':'d', 'constraints': {'type':['twoLines'],'subType':[['parallel']]},'probeName':'dMag'} ] myPlotCSV = open('./resultsCSVandPlot/plotDict.csv', 'w') fieldnames = ['probeName', 'predicted','X1','X2', 'Y'] myPlotCSVWriter = csv.DictWriter(myPlotCSV, fieldnames=fieldnames) myPlotCSVWriter.writeheader() for item in plotVect: for pred in item['X']: X,Y= util.getXandY(actDict, labelDict, predictor=pred, predicted=item['Y'], constraits=item['constraints']) for imgIndex in range(len(Y)): myPlotCSVWriter.writerow({'probeName':item['probeName'],'predicted':item['Y'],'X1':X[imgIndex][0],'X2':X[imgIndex][1],'Y':Y[imgIndex]}) myPlotCSV.close()
{'X':predictorVect, 'Y':'affineIndex', 'constraints': {'type':['quadrilateral'],'shapeIndex':[0],'affineIndex':range(0,int(quadriShapeSum/2+1))},'comparisonSum':2, 'oriAna':'perpendicularNN', 'probeName':'perpend2quadriCongru'}, {'X':predictorVect, 'Y':'scaleMag', 'constraints': {'type':['circle']},'comparisonSum':-1,'oriAna':'lineLength','probeName':'lineLength2circleSize'}, # {'X':predictorVect, 'Y':'rotateMag', 'constraints': {'type':['quadrilateral'],'affineIndex':[int(quadriShapeSum/2)], 'rotateMag':np.linspace(0,90,quadriRotateMag/2+1).tolist()},'comparisonSum':-1, 'oriAna':'lineClockWise', 'probeName':'lineClock2rectClock'}, ##'shapeIndex':[0], {'X':predictorVect, 'Y':'rotateMag', 'constraints': {'type':['twoLines'],'rotateMag':np.linspace(0,90,lineRotateMag/2+1).tolist()},'comparisonSum':-1, 'oriAna':'lineClockWise', 'probeName':'lineClock2twoLinesClock'}, ] for model in modelVect: # model = ["NB", "LG", "SVM"]" print "Using model=", model evaluation = {} for item in anaVect: # print item evaluation[item['probeName']] = {} for pred in item['X']: print "#################### Training Phase ####################" X_train, Y_train = util.getXandY(actDict_train, labelDict_train, predictor=pred, predicted=item['Y'], constraits=item['constraints']) X_train, Y_train = util.bootStrapLabels(X_train,Y_train,1000) print item['probeName'], len(Y_train) train_accu, fitted = util.myClassifier(X_train,Y_train,model,CV=5) #evaluation[item['probeName']][pred]=accu print "#################### Testing Phase ####################" X_test, Y_test = util.getXandY(actDict_test, labelDict_test, predictor=pred, predicted=item['Y'], constraits=item['constraints']) X_test, Y_test = util.bootStrapLabels(X_test,Y_test,1000) print item['probeName'], len(Y_test) test_predictions = fitted.predict(X_test) test_accu = sum([int(test_predictions[q]==Y_test[q]) for q in range(len(Y_test))])/len(Y_test) #accu_test, fitted = util.myClassifier(X_test,Y_test,model,CV=5) myCSVWriter.writerow({'iterIndex':iterIndex, 'probeName':item['probeName'],'model':model,'predicted':item['Y'],'predictor':pred,'self/other':'self','train_accuracy':train_accu,'test_accuracy':test_accu,'single/doubleFigs':'single','comparisonSum':'NA'}) # Double Figure ############################################################ compareDoubleNN={}