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
|
# Copyright 2017 Amra Omanović, Nejka Bolčič, Magda Nowak-Trzos
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
import csv
import numpy as np
import random
import collections
#580
def process(length=5, SEED=1552, data='training_data.csv'):
set=[]
output=[]
previous_set=[]
input=[]
inputs=[]
#read the data from file
with open(data, 'r') as csvfile:
csv_reader = csv.reader(csvfile, delimiter=',')
i=0
for row in csv_reader:
#create one-hot vector
vector=np.zeros((9,), dtype=np.int)
vector[int(row[0])]= vector[int(row[1])+3] = vector[int(row[2])+6] = 1;
#concatenate the number of vectors defined in "length"
if (i < length):
previous_set.append(vector.tolist())
else:
for pr in previous_set:
input=np.append(input, pr)
input = np.append(input, vector)
inputs.append(input)
input=[]
previous_set = previous_set[1:]+[vector.tolist()]
i = i + 1
#randomize data
random.seed(SEED)
random.shuffle(inputs)
#create inputs and outputs
for v in inputs:
set.append(v[:-6])
output.append(v[-3:])
#set the size of training set
training=int(len(output)*0.9)
#create training and test sets
training_set=set[:training]
training_output=output[:training]
test_set=set[training:]
test_output=output[training:]
return training_set, training_output, test_set, test_output
training_x, training_y, test_x, test_y = process()
|