/
Main.py
96 lines (77 loc) · 3.98 KB
/
Main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
__author__ = 'nnico'
from DataHandler import DataHandler
from DImHandler import DimHandler
from ModeleHandler import ModeleHandler
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
from patsy import dmatrices
from sklearn.cross_validation import train_test_split
from sklearn import metrics
from sklearn.cross_validation import cross_val_score
########################################################################################################################
# Interface for the data.
########################################################################################################################
def myprint(str):
"""
Useless.
Print a message with standart shape.
"""
print "#######################################\n{}\n#######################################\n".format(str)
if __name__ == "__main__":
myprint("Start computations")
####################################################################################################################
# Get data
####################################################################################################################
myprint("Load data")
MyDataHandler = DataHandler()
print "Loading train"
train = MyDataHandler.get_train()
#Pretty things up.
column_names = {}
for i in xrange(96*96):
column_names[i] = 'pixel{}'.format(i)
####################################################################################################################
# Split pixels:
####################################################################################################################
myprint("Extract data")
train_x = train.iloc[:800]['Image'].apply(lambda x: pd.Series([int(i) for i in x.split(' ')])).rename(columns=column_names)
train_y = train.iloc[:800].ix[:, 0:30].fillna(0).astype(int)
####################################################################################################################
# Reduce dimension
####################################################################################################################
myprint("Reduce dimension")
MyDimHandler = DimHandler(model='pca', **{'n_components': 0.80, 'whiten': True})
train_x = MyDimHandler.fit_transform(train_x)
####################################################################################################################
# Train models:
####################################################################################################################
myprint("Train models")
names = list(train.columns.values)
models = []
models_name = {}
for index in xrange(30):
model = ModeleHandler("LogisticRegression")
models.append(model)
models_name[names[i]] = model
for index, model in enumerate(models):
y = np.ravel(train_y.ix[:,index])
model.fit(train_x, y)
score = model.score(train_x, y)
print "For the model {}, the score is: {}".format(names[i], score)
####################################################################################################################
# Visualize some training images:
####################################################################################################################
# print list(train.columns.values)
# print list(test.columns.values)
# MyDataHandler.visualize_train_image(index=6493, features=True)
####################################################################################################################
#
####################################################################################################################
myprint("Predict the score of the test data")
print "Loading test"
test = MyDataHandler.get_test()
test_x = test.iloc[:800]['Image'].apply(lambda x: pd.Series([int(i) for i in x.split(' ')])).rename(columns=column_names)
test_x = MyDimHandler.transform(test_x)
myprint("Finished")