Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import Image
- import theano
- # goran = 0 ..... georgi = 1 ..... gorjan = 2 ..... ivan = 3
- def normalize(x):
- x_norm = x
- num_col = x.shape[1]
- for i in range(1,num_col):
- x_norm[:, i] = (x_norm[:, i] - np.mean(x[:, i]))/np.std(x[:, i])
- return x_norm
- def one_hot(x,n):
- if type(x) == list:
- x = np.array(x)
- x = x.flatten()
- o_h = np.zeros((len(x),n))
- o_h[np.arange(len(x)),x] = 1
- return o_h
- def data():
- n = 9
- brojnesto = 0
- kolkuceka =0
- kt = 0
- kolkulevo = kolkudesno = kolkugore = kolkudole = 0
- kolkutrening = 0
- rastprva = 0
- vkupnovreme = 0
- vremedesno = vremelevo = vremegore = vremedole = 1
- brzina = brojac = 0
- agolminus = agolplus= 0
- brojacgoran = brojacgeorgi = brojacgorjan = brojacivan =0
- brgore = brdole = brdesno = brlevo = 1
- trX = np.zeros([959, n])
- trY = np.zeros([959],dtype=np.int8)
- teX = np.zeros([192, n])
- teY = np.zeros([192],dtype=np.int8)
- lines = [line.rstrip('\n') for line in open('hw2_mouse_data.txt')]
- for i in range(0,len(lines)-1):
- linei = lines[i]
- linei = linei[1:len(linei) - 1]
- splitovano = linei.split(', ')
- vlezi = np.asarray(splitovano)
- if vlezi[0] == 'Goran':
- prva = lines[i+1]
- prva = prva[1:len(prva) - 1]
- splitprva = prva.split(', ')
- prva = np.asarray(splitprva, dtype=float)
- brojacgoran += 1
- izlez = 0
- i = i +1
- vlez = lines[i]
- vlez = vlez[1:len(vlez) - 1]
- splitovano = vlez.split(', ')
- vlez = np.asarray(splitovano)
- while len(vlez)> 1:
- line1 = lines[i]
- line1 = line1[1:len(line1) -1]
- splitovano = line1.split(', ')
- line1 = np.asarray(splitovano, dtype=float)
- i = i+1
- if i > (len(lines) - 1):
- break
- pom = lines[i]
- pom = pom[1:len(pom)-1]
- splitovano = pom.split(', ')
- pom = np.asarray(splitovano)
- if len(pom) >1:
- line2 = lines[i]
- line2 = line2[1:len(line2) - 1]
- splitovano = line2.split(', ')
- line2 = np.asarray(splitovano, dtype=float)
- else:
- break
- vlez = pom
- x_razlika = line1[0] - line2[0]
- y_razlika = line1[1] - line2[1]
- rastprva += np.sqrt((prva[0] - line1[0])**2 + (prva[1] - line1[1])**2)
- if x_razlika:
- agol= np.arctan(np.abs(y_razlika)/np.abs(x_razlika))
- else: agol = 1.57079623
- if (x_razlika >= 0 and y_razlika >= 0) or (x_razlika <= 0 and y_razlika <= 0):
- agolplus += agol
- elif (x_razlika >=0 and y_razlika <=0) or (x_razlika<=0 and y_razlika>= 0):
- agolminus += agol
- vreme = line2[2]
- if x_razlika > 0:
- kolkulevo += np.abs(x_razlika)
- vremelevo += vreme
- brlevo += 1
- if x_razlika < 0:
- kolkudesno += np.abs(x_razlika)
- vremedesno += vreme
- brdesno += 1
- if y_razlika > 0:
- kolkudole += np.abs(y_razlika)
- vremedole += vreme
- brdole += 1
- if y_razlika < 0:
- kolkugore += np.abs(y_razlika)
- vremegore += vreme
- brgore += 1
- brzina += np.sqrt(x_razlika ** 2 + y_razlika ** 2) / float(vreme)
- if vreme < 100:
- vkupnovreme += vreme
- else:
- vkupnovreme += 1
- kolkuceka +=1
- kolkutrening += 1
- brzinalevo = float(kolkulevo)/ float(vremelevo)
- brzinadesno = float(kolkudesno) / float(vremedesno)
- brzinagore = float(kolkugore) / float(vremegore)
- brzinadole = float(kolkudole) / float(vremedole)
- brzinalevo = float(brzinalevo) / float(brlevo)
- brzinadesno = float(brzinadesno) / float(brdesno)
- brzinagore = float(brzinagore) / float(brgore)
- brzinadole = float(brzinadole) / float(brdole)
- brzina = float(brzina) / float(kolkutrening)
- rastprva = float(rastprva) / float(kolkutrening)
- if kolkulevo:
- kolkulevo = float(kolkulevo) / float(brlevo)
- if kolkudesno:
- kolkudesno = float(kolkudesno) / float(brdesno)
- if kolkugore:
- kolkugore = float(kolkugore) / float(brgore)
- if kolkudole:
- kolkudole = float(kolkudole) / float(brdole)
- prosecnovreme = float(vkupnovreme) / float(kolkutrening)
- zabrzuvanje = float(brzina) / float(prosecnovreme)
- agolplus = float(agolplus)/ float(kolkutrening)
- agolminus = float(agolminus) / float(kolkutrening)
- #brzinahorizontalno = float(brzinalevo + brzinadesno ) / 2.0
- #brzinavertikalno = float(brzinagore + brzinadole ) / 2.0
- #print agolplus, agolminus
- niza = np.asarray(
- [kolkugore, kolkudole, kolkulevo, kolkudesno,brzina, np.sqrt(prosecnovreme), kolkuceka, agolplus,agolminus])
- if brojnesto %6 != 0:
- trX[brojac] = niza
- trY[brojac] = izlez
- brojac +=1
- brojnesto += 1
- else:
- teX[kt] = niza
- teY[kt] = izlez
- kt += 1
- brojnesto +=1
- brzina = kolkutrening= vkupnovreme = agol =agolplus = agolminus =0
- vremelevo = vremedesno = vremegore = vremedole = 1
- kolkulevo = kolkudesno = kolkugore = kolkudole = rastprva = kolkuceka = 0
- brdole = brgore = brdesno = brlevo = 1
- if vlezi[0] == 'Georgi':
- prva = lines[i + 1]
- prva = prva[1:len(prva) - 1]
- splitprva = prva.split(', ')
- prva = np.asarray(splitprva, dtype=float)
- brojacgeorgi += 1
- izlez = 1
- i = i + 1
- vlez = lines[i]
- vlez = vlez[1:len(vlez) - 1]
- splitovano = vlez.split(', ')
- vlez = np.asarray(splitovano)
- while len(vlez) > 1:
- line1 = lines[i]
- line1 = line1[1:len(line1) - 1]
- splitovano = line1.split(', ')
- line1 = np.asarray(splitovano,dtype=float)
- i = i + 1
- if i > (len(lines) - 1):
- break
- pom = lines[i]
- pom = pom[1:len(pom) - 1]
- splitovano = pom.split(', ')
- pom = np.asarray(splitovano)
- if len(pom) > 1:
- line2 = lines[i]
- line2 = line2[1:len(line2) - 1]
- splitovano = line2.split(', ')
- line2 = np.asarray(splitovano,dtype=float)
- else:
- break
- vlez = pom
- x_razlika = line1[0] - line2[0]
- y_razlika = line1[1] - line2[1]
- rastprva += np.sqrt((prva[0] - line1[0]) ** 2 + (prva[1] - line1[1]) ** 2)
- vreme = line2[2]
- if x_razlika > 0:
- vremelevo += vreme
- kolkulevo += np.abs(x_razlika)
- brlevo += 1
- if x_razlika < 0:
- vremedesno += vreme
- kolkudesno += np.abs(x_razlika)
- brdesno += 1
- if y_razlika > 0:
- vremedole += vreme
- kolkudole += np.abs(y_razlika)
- brdole += 1
- if y_razlika < 0:
- vremegore += vreme
- kolkugore += np.abs(y_razlika)
- brgore += 1
- brzina += np.sqrt(x_razlika**2 + y_razlika**2 )/float(vreme)
- if vreme < 100:
- vkupnovreme += vreme
- else:
- vkupnovreme += 1
- kolkuceka += 1
- kolkutrening += 1
- if x_razlika:
- agol = np.arctan(np.abs(y_razlika) / np.abs(x_razlika))
- else:
- agol = 1.57079623
- if (x_razlika >= 0 and y_razlika >= 0) or (x_razlika <= 0 and y_razlika <= 0):
- agolplus += agol
- elif (x_razlika >= 0 and y_razlika <= 0) or (x_razlika <= 0 and y_razlika >= 0):
- agolminus += agol
- brzinalevo = float(kolkulevo) / float(vremelevo)
- brzinadesno = float(kolkudesno) / float(vremedesno)
- brzinagore = float(kolkugore) / float(vremegore)
- brzinadole = float(kolkudole) / float(vremedole)
- brzinalevo = float(brzinalevo) / float(brlevo)
- brzinadesno = float(brzinadesno) / float(brdesno)
- brzinagore = float(brzinagore) / float(brgore)
- brzinadole = float(brzinadole) / float(brdole)
- brzina = float(brzina) / float(kolkutrening)
- rastprva = float(rastprva) / float(kolkutrening)
- if kolkulevo:
- kolkulevo = float(kolkulevo) / float(brlevo)
- if kolkudesno:
- kolkudesno = float(kolkudesno) / float(brdesno)
- if kolkugore:
- kolkugore = float(kolkugore) / float(brgore)
- if kolkudole:
- kolkudole = float(kolkudole) / float(brdole)
- prosecnovreme = float(vkupnovreme) / float(kolkutrening)
- zabrzuvanje = float(brzina) / float(prosecnovreme)
- agolplus /= float(kolkutrening)
- agolminus /= float(kolkutrening)
- niza = np.asarray(
- [kolkugore, kolkudole, kolkulevo, kolkudesno,brzina, np.sqrt(prosecnovreme), kolkuceka, agolplus, agolminus])
- if brojnesto % 6 != 0:
- trX[brojac] = niza
- trY[brojac] = izlez
- brojac += 1
- brojnesto += 1
- else:
- teX[kt] = niza
- teY[kt] = izlez
- kt += 1
- brojnesto +=1
- agolplus = agolminus = agol = kolkulevo = kolkudesno = kolkugore = kolkudole = 0
- vremelevo = vremedesno = vremegore = vremedole = 1
- brzina = kolkutrening =vkupnovreme=rastprva= kolkuceka = 0
- brdole = brgore = brdesno = brlevo = 1
- if vlezi[0] == 'Gorjan':
- prva = lines[i + 1]
- prva = prva[1:len(prva) - 1]
- splitprva = prva.split(', ')
- prva = np.asarray(splitprva, dtype=float)
- brojacgorjan += 1
- izlez = 2
- i = i + 1
- vlez = lines[i]
- vlez = vlez[1:len(vlez) - 1]
- splitovano = vlez.split(', ')
- vlez = np.asarray(splitovano)
- while len(vlez) > 1:
- line1 = lines[i]
- line1 = line1[1:len(line1) - 1]
- splitovano = line1.split(', ')
- line1 = np.asarray(splitovano,dtype=float)
- i = i + 1
- if i > (len(lines) - 1):
- break
- pom = lines[i]
- pom = pom[1:len(pom) - 1]
- splitovano = pom.split(', ')
- pom = np.asarray(splitovano)
- if len(pom) > 1:
- line2 = lines[i]
- line2 = line2[1:len(line2) - 1]
- splitovano = line2.split(', ')
- line2 = np.asarray(splitovano,dtype=float)
- else:
- break
- vlez = pom
- x_razlika = line1[0] - line2[0]
- y_razlika = line1[1] - line2[1]
- rastprva += np.sqrt((prva[0] - line1[0]) ** 2 + (prva[1] - line1[1]) ** 2)
- vreme = line2[2]
- if x_razlika > 0:
- kolkulevo += np.abs(x_razlika)
- vremelevo += vreme
- brlevo += 1
- if x_razlika < 0:
- kolkudesno += np.abs(x_razlika)
- vremedesno += vreme
- brdesno += 1
- if y_razlika > 0:
- vremedole += vreme
- kolkudole += np.abs(y_razlika)
- brdole += 1
- if y_razlika < 0:
- vremegore += vreme
- kolkugore += np.abs(y_razlika)
- brgore += 1
- brzina += np.sqrt(x_razlika ** 2 + y_razlika ** 2) / float(vreme)
- kolkutrening += 1
- if x_razlika:
- agol = np.arctan(np.abs(y_razlika) / np.abs(x_razlika))
- else:
- agol = 1.57079623
- if (x_razlika >= 0 and y_razlika >= 0) or (x_razlika <= 0 and y_razlika <= 0):
- agolplus += agol
- elif (x_razlika >= 0 and y_razlika <= 0) or (x_razlika <= 0 and y_razlika >= 0):
- agolminus += agol
- if vreme < 100:
- vkupnovreme += vreme
- else:
- vkupnovreme += 1
- kolkuceka +=1
- brzinalevo = float(kolkulevo) / float(vremelevo)
- brzinadesno = float(kolkudesno) / float(vremedesno)
- brzinagore = float(kolkugore) / float(vremegore)
- brzinadole = float(kolkudole) / float(vremedole)
- brzinalevo = float(brzinalevo) / float(brlevo)
- brzinadesno = float(brzinadesno) / float(brdesno)
- brzinagore = float(brzinagore) / float(brgore)
- brzinadole = float(brzinadole) / float(brdole)
- brzina = float(brzina) / float(kolkutrening)
- rastprva = float(rastprva) / float(kolkutrening)
- if kolkulevo:
- kolkulevo = float(kolkulevo) / float(brlevo)
- if kolkudesno:
- kolkudesno = float(kolkudesno) / float(brdesno)
- if kolkugore:
- kolkugore = float(kolkugore) / float(brgore)
- if kolkudole:
- kolkudole = float(kolkudole) / float(brdole)
- prosecnovreme = float(vkupnovreme) / float(kolkutrening)
- zabrzuvanje = float(brzina) / float(prosecnovreme)
- agolplus /= float(kolkutrening)
- agolminus /= float(kolkutrening)
- niza = np.asarray(
- [kolkugore, kolkudole, kolkulevo, kolkudesno, brzina, np.sqrt(prosecnovreme), kolkuceka, agolplus, agolminus])
- if brojnesto % 6 != 0:
- trX[brojac] = niza
- trY[brojac] = izlez
- brojac += 1
- brojnesto +=1
- else:
- teX[kt] = niza
- teY[kt] = izlez
- kt += 1
- brojnesto +=1
- kolkulevo = kolkudesno = kolkugore = kolkudole = rastprva= 0
- brzina = kolkutrening = vkupnovreme= agol = agolminus= agolplus = kolkuceka = 0
- vremelevo = vremedesno = vremegore = vremedole = 1
- brdole = brgore = brdesno = brlevo = 1
- if vlezi[0] == 'Ivan':
- prva = lines[i + 1]
- prva = prva[1:len(prva) - 1]
- splitprva = prva.split(', ')
- prva = np.asarray(splitprva, dtype=float)
- brojacivan += 1
- izlez = 3
- i = i + 1
- vlez = lines[i]
- vlez = vlez[1:len(vlez) - 1]
- splitovano = vlez.split(', ')
- vlez = np.asarray(splitovano)
- while len(vlez) > 1:
- line1 = lines[i]
- line1 = line1[1:len(line1) - 1]
- splitovano = line1.split(', ')
- line1 = np.asarray(splitovano,dtype=float)
- i = i + 1
- if i > (len(lines)-1):
- break
- pom = lines[i]
- pom = pom[1:len(pom) - 1]
- splitovano = pom.split(', ')
- pom = np.asarray(splitovano)
- if len(pom) > 1:
- line2 = lines[i]
- line2 = line2[1:len(line2) - 1]
- splitovano = line2.split(', ')
- line2 = np.asarray(splitovano,dtype=float)
- else:
- break
- vlez = pom
- x_razlika = line1[0] - line2[0]
- y_razlika = line1[1] - line2[1]
- rastprva += np.sqrt((prva[0] - line1[0]) ** 2 + (prva[1] - line1[1]) ** 2)
- vreme = line2[2]
- if x_razlika > 0:
- kolkulevo += np.abs(x_razlika)
- vremelevo += vreme
- brlevo += 1
- if x_razlika < 0:
- vremedesno += vreme
- kolkudesno += np.abs(x_razlika)
- brdesno += 1
- if y_razlika > 0:
- vremedole += vreme
- kolkudole += np.abs(y_razlika)
- brdole += 1
- if y_razlika < 0:
- vremegore += vreme
- kolkugore += 1
- brgore += 1
- brzinalevo = float(kolkulevo) / float(vremelevo)
- brzinadesno = float(kolkudesno) / float(vremedesno)
- brzinagore = float(kolkugore) / float(vremegore)
- brzinadole = float(kolkudole) / float(vremedole)
- brzinalevo = float(brzinalevo) / float(brlevo)
- brzinadesno = float(brzinadesno) / float(brdesno)
- brzinagore = float(brzinagore) / float(brgore)
- brzinadole = float(brzinadole) / float(brdole)
- brzina += np.sqrt(x_razlika**2 + y_razlika**2) / float(vreme)
- if vreme < 100:
- vkupnovreme += vreme
- else:
- vkupnovreme += 1
- kolkuceka +=1
- kolkutrening += 1
- if x_razlika:
- agol = np.arctan(np.abs(y_razlika) / np.abs(x_razlika))
- else:
- agol = 1.57079623
- if (x_razlika >= 0 and y_razlika >= 0) or (x_razlika <= 0 and y_razlika <= 0):
- agolplus += agol
- elif (x_razlika >= 0 and y_razlika <= 0) or (x_razlika <= 0 and y_razlika >= 0):
- agolminus += agol
- brzina = float(brzina) / float(kolkutrening)
- if kolkulevo:
- kolkulevo = float(kolkulevo) / float(brlevo)
- if kolkudesno:
- kolkudesno = float(kolkudesno) / float(brdesno)
- if kolkugore:
- kolkugore = float(kolkugore) / float(brgore)
- if kolkudole:
- kolkudole = float(kolkudole) / float(brdole)
- prosecnovreme = float(vkupnovreme) / float(kolkutrening)
- zabrzuvanje = float(brzina) / float(prosecnovreme)
- agolplus /= float(kolkutrening)
- agolminus /= float(kolkutrening)
- rastprva = float(rastprva) / float(kolkutrening)
- niza = np.asarray(
- [kolkugore, kolkudole, kolkulevo, kolkudesno,brzina, np.sqrt(prosecnovreme), kolkuceka, agolplus, agolminus])
- if brojnesto %6 != 0:
- trX[brojac] = niza
- trY[brojac] = izlez
- brojac += 1
- brojnesto += 1
- else:
- teX[kt] = niza
- teY[kt] = izlez
- kt += 1
- brojnesto +=1
- kolkulevo = kolkudesno=agolminus= agolplus= kolkugore = kolkudole = 0
- brdole = brgore = brdesno = brlevo = 1
- brzina = kolkutrening = agol = vkupnovreme=rastprva= kolkuceka= 0
- vremelevo = vremedesno = vremegore = vremedole = 1
- pom1 = trX
- pomtest1 = teX
- trX = np.ones([959,n+1])
- trX[:,1:959] = pom1
- teX = np.ones([192, n + 1])
- teX[:, 1:192] = pomtest1
- trX = normalize(trX)
- teX = normalize(teX)
- #trY = one_hot(trY, 4) #one hot ne treba za svm
- #teY = one_hot(teY, 4) # pusti ja ednas ovaa za da vidis kakov e cel data set ( posledna kolona izlez)
- #ovde se site koloni normalizirani i dava 55
- #ako sakas prva kolona da ne normaliziras samo najgore u funkcijata normalize staj da ne pocnue od 1
- # for i in range(1,num_col): od 2 staj go i dava 65%
- #i koj menjas broj na parametri, samo najgore promenlivata "n" smeni ja namesteno e nisto da ne menjavas u svm.py samoto da si znae, znaci
- #samo n na broj na features
- for asd,i in zip(trX, trY):
- print asd[1],",",asd[2],",",asd[3],",",asd[4],",",asd[5],",",asd[6],",",asd[7],",",asd[8],",",asd[9],",",i
- return trX, teX, trY, teY, n
- data()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement