-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoracle.py
129 lines (112 loc) · 7.08 KB
/
oracle.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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# -*- coding: utf-8 -*-
import numpy as np
def APatK ( y_true,y_predicted, K =32500):
"""Calculates AP@k given true Y and predictions (probabilities).
Sorts answers by y_predicted to obtain ranking"""
sort_by_ypred = np.argsort(-y_predicted)
y_true = y_true[sort_by_ypred]
y_predicted = y_predicted[sort_by_ypred]
countRelevants = 0
listOfPrecisions = []
for i in range(min(K,len(y_true))):
currentk = i + 1.0
if y_true[i] !=0:
countRelevants+=1
precisionAtK = countRelevants / currentk
listOfPrecisions.append(precisionAtK)
return np.sum( listOfPrecisions ) / min(K,len(y_true))
import sys
import socket
def score(final_accuracy,final_auc,final_apatk):
print ("\nAUC:")
if final_auc >= 0.99:
print ("\tПиши статью. (great)")
elif final_auc >= 0.97:
print ("\tОтличное решение! (good)")
elif final_auc >= 0.95:
print ("\tСойдёт, хотя можно ещё поднажать (ok)")
elif final_auc >= 0.9:
print ("\tНеплохо, но ты можешь лучше! (not ok)")
elif final_auc > 0.8:
print ("\tТы на правильном пути! (not ok)")
elif final_auc > 0.65:
print ("\tДобавь жару! (not ok)")
else:
print ("\tМожет быть, она недоучилась? Ну или слишком маленькая? Или в детстве болела? (not ok)")
print ("\nAccuracy:")
if final_accuracy >= 0.97:
print ("\tОчешуенно! (great)")
elif final_accuracy >= 0.95:
print ("\tОтличный результат! (good)")
elif final_accuracy >= 0.9:
print ("\tВсё ок (ok)")
else:
print ("Надо бы подтянуть. (not ok)")
print ("\nAverage precision at K:")
if final_apatk > 0.99:
print ("\tЗасабмить на kaggle! (great) \n\t Нет, ну честно - выкачай avito_test.tsv, засабмить и скажи, что вышло.")
elif final_apatk > 0.95:
print ("\tОтличный результат (good)")
elif final_apatk > 0.92:
print ("\tВы побили baseline (ok)")
else:
print ("\tНадо бы поднажать (not ok)")
if socket.gethostname().startswith("cv-gpu" ):
if final_apatk>0.92 and final_accuracy >0.9 and final_auc > 0.95 :
warn_them()
else:
print ()
def warn_them():
"""warns some users of what is impending"""
sys.stderr.write("""\nWe Are Watching You!
. ..
. ...;c:,::.. ' ':oococ:. ..
.. .':dodxkkxxxxxxxkxddxkkkkkkkkkxkkdl:.
.'':lodxxxdxxxxxddxxddodddxkkxdxxxxxxxxxxxxk:d;,.
.;dxkxxxxxxxxk000Okdooooooloodxxdddxxkkxxddddodkkkkd' .
.:lkkkkkkkkkkkOOOkkxxxxdollllllloooddxxkOOOOkxdddldkkkOxc.
.lkkkOOOkkkkOOOkkxdollcccccccccccccccllddxkOOOOkddddddxxxddd;.
.cxkkOOOOOOOOkkkdolc:::;;;;;;;;;;;;;::::ccclodxkOOxddooodddooodo'
,dxkkOOOOOOOOkxolc::;;;;;;;;;;;;;;;;;;;;::::cclodxkkxddooolooollooc..
,xxkkkOOO0OOkxdol:;;;;;;,,,,;;;;;;;;;;;;;;;;;::ccloxxxxdoooollllollod,
.xxkkkkOOOkxxollc;;;;,,,,,,,,,,,,,;,,;;;;;;;;;;::cclodxxddoollllcclllclc.
;xkkxkOOkdoolllc;;;,,,,,,,,,,,,,,;;;,,;;;;;;;;;:::clloddddoooolccc::lcclo:
.ddkkxOOxdoolllc:;;;;;;;;;;;;,,,,,;;,,,;;;;;;;::::::ccodlcdddooolccc::cllll..
'xdddxxOOkxolclc::;;:coooooollllc:;;,,;;;;::ccoddddddoollc;coxkxoc:::cc:clcco.
oxddddxkxxdoc::::;:lolccccccccloolc;,,;:ccloddxxxkkOOOkdl::lxkkkxoc:;:cccccoo.
xdododdkkxdlc::c::coc::::clooollllc:;;:cllldxxxddddddxkkdodxkkkxxkdl:;::::odc
,dddoodkkkdlc::cc::lccccldkkOOxdddol:;;:codkOO000OkdooodkkxxkOkxxkkkdlc:::;cd.
:odoodkkxolc:ccc::cllloxkdollloooddoc;;:lxO00OkxxxxkxdddkkkxkkkxkO0Okxolc;;:c .
oddodkOxolc:::c::::cloddo;;:c:;:llc::,,;lxOOko:;:cccdxxkOkkkkkxkkOO00kdllc;:o..
cddddkxdlc:::c::;;::cc:cc;:clccc::;;,,,;:oxkxc;:cloloxkkkkkxxkxdxollkxl;:cc:c;.
.oddxkkdc::cc::;;;;;;;;;cllllllcc:;,,,,;codxkdllooddxkxddddddxkooc::dOd:;:lolc'
'dddxxolcllcc:;;,,,,;;;;;;;:;;;;;;,,,,;:loddoccllodddlccclodxkxl:::dOdl::codlc
cxdddooodolo:;;,,,,,,,,,,,,,,,;;;,',,;:codol:;::::c::;:clodxxko::cdkolc;ccolc.
cdxxxdkdodl:;,,,,,,,''''',::ll:;,;:llodddoc;;,;;;;::cclloxkkxlcokxolc:lcll:.
ldoddkxodl::;,,,,,,,',;:c::ooccldxkO0K0kxxo:;,;;;:ccllclxkkxlcdkxol::dol:
.dddoddoxc::;;,;;;,,;:cc;;;;;;:lxkkkkkkkkkko;;;;:cloooccxkxxocxkooocc;cd.
,cldddl:;;:;;;;;;;;:c:;,,,,,,,;;:cllodddxddc:::clooddlcxOxoclxkooool :
'xdd:;;;::;;;;;;;::;,,,,,,,,;;;;;:cccllllcc:cclooddl:xkxoloxxdodoc
.. cdxoccc::;;;;;;;;;;;;::cccc:ccllloooodolccc:clloodccxxdoodxxdodc .
.;; .::;;;;;;;;;:lxO0kdollodxxdkkOOOkdlcc;:cclodclodoodxdl:,.
.c::;;;;;,;ccodOxlc:codkOOOOO0KK0xc:;;:cllddc,.do;.',. .
.clc::;;;;;;;;;::::::cclcllodxddooc,;;:clldxo:..;,
.;clllcc:::;;,,,,;;;;;;;::cccclodddl;;;:looxkxl.
.c:ccooclcc::;;,,,;;;:::ccllooddddol:::coxxkkkc . .
:l:clodccllcc:;;;;,;;;;:::cccccc:::cclodkkkkx:
;ll:clddcccloolc:;;,,,,;,,,,;;:::::cldxkkkOkc
.ddcclld,lcclloooolc;;;,,,;;;;:ccclldxxdc;,;.
:docclod,'lccclloddxdollclllloooool:;.
.dxlcclldo :cccllloodxkd. ....
;dxlcclodx.'lcclllloodxx.
\n""")
sys.stderr.write("""
______________________________________
_\|/^ / Молодцы, а теперь слезайте \ \|| /
(_oo / с казённой GPU \ oo /
| \________________________________________/ О_ --
/|\ ) =
| (. --
LL 1 1\
mborisyak@ jheuristic@
""")