
def loadTrainData():
    #Process data in CSV format
    l=[]
    with open('train.csv') as file:
        lines=csv.reader(file)
        for line in lines:
            l.append(line)
    l.remove(l[0])
    l.array(1)
    label=l[:,0]
    data=l[:,1:]
    return nomalizing(toInt(data),toInt(label))
    
def loadTestData():  
    l=[]  
    with open('test.csv') as file:  
         lines=csv.reader(file)  
         for line in lines:  
             l.append(line)#28001*784  
    l.remove(l[0])  
    data=array(l)  
    return nomalizing(toInt(data))
    
def toInt(array):  
    array=mat(array)  
    m,n=shape(array)  
    newArray=zeros((m,n))  
    for i in xrange(m):  
        for j in xrange(n):  
                newArray[i,j]=int(array[i,j])  
    return newArray  
      
def nomalizing(array):  
    m,n=shape(array)  
    for i in xrange(m):  
        for j in xrange(n):  
            if array[i,j]!=0:  
                array[i,j]=1  
    return array 

from sklearn.ensemble import RandomForestClassifier  
def RFClassify(trainData,trainLabel,testData):  
    nbClf=RandomForestClassifier(n_estimators=100)  
    nbClf.fit(trainData,ravel(trainLabel))  
    testLabel=nbClf.predict(testData)  
    saveResult(testLabel,'RF_Result.csv')  
    return testLabel
    
def saveResult(result,csvName):  
    with open(csvName,'wb') as myFile:      
        myWriter=csv.writer(myFile)  
        myWriter.writerow(["ImageId","Label"])  
        index=0;  
        for i in result:  
            tmp=[]  
            index=index+1  
            tmp.append(index)  
            tmp.append(i)  
            #tmp.append(int(i))  
            myWriter.writerow(tmp) 