In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family']='SimHei' #顯示中文
%matplotlib inline
In [2]:
import warnings
warnings.filterwarnings('ignore')
In [3]:
# Load in the train datasets
train = pd.read_csv('input/training-set.csv', encoding = "utf-8", header=None)
test = pd.read_csv('input/testing-set.csv', encoding = "utf-8", header=None)
In [4]:
#query_log裡面被官方排除的 FileID
train_exc = pd.read_csv('input/exception/exception_train.txt', encoding = "utf-8", header=None)
test_exc = pd.read_csv('input/exception/exception_testing.txt', encoding = "utf-8", header=None)
In [5]:
test_exc.head(2)
Out[5]:
0
0
4eedf630f7160dafea969e5d57239d31
1
8e1c12f42b705cb465bab88225d03c81
In [6]:
# from sklearn.preprocessing import Imputer
# imputer = Imputer(missing_values='NaN', axis=0, strategy='mean')
# imputer.fit_transform(X[:,[1,3]])
In [7]:
# training set - label: 0:非惡意程式, 1:惡意程式
train.columns=['FileID','label']
train.head(2)
Out[7]:
FileID
label
0
0000e2398b12121a85166fed5fe2a3da
0
1
0001fe8dce14ce099aa6ca8ea5026ea7
0
In [8]:
# testing set - AUC: Area Under ROC Curve
test.columns=['FileID','AUC']
test.head(2)
Out[8]:
FileID
AUC
0
00008c73ee43c15b16c26b26398c1577
0.5
1
0002ded3a0b54f2ffdab0ca77a5ce2b6
0.5
In [9]:
#確認排除的FileID在training set裡面找不到
train[train['FileID'].isin(train_exc[0])]
Out[9]:
FileID
label
In [10]:
#取0301當天的query log來查看
query_0301 = pd.read_csv('input/query_log/0301.csv', encoding = "utf-8", header=None)
query_0301.columns=['FileID','CustomerID','QueryTs','ProductID']
query_0301['times'] = 1
In [11]:
query_0301.head(2)
Out[11]:
FileID
CustomerID
QueryTs
ProductID
times
0
dfccd8e23f0b03ec4db7a9a745ad7399
64573086fcfee53e8fa6d8f1f44101bb
1488326402
c105a0
1
1
29962f9102502ee76bb3cddb8cf8c9ad
597df153a25e8e548cbe35f6e4da9cbb
1488326403
c105a0
1
In [12]:
query_0301.describe()
Out[12]:
QueryTs
times
count
4.755690e+05
475569.0
mean
1.488366e+09
1.0
std
2.451022e+04
0.0
min
1.488326e+09
1.0
25%
1.488346e+09
1.0
50%
1.488365e+09
1.0
75%
1.488385e+09
1.0
max
1.488413e+09
1.0
In [13]:
query_0301.info(memory_usage='deep')
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 475569 entries, 0 to 475568
Data columns (total 5 columns):
FileID 475569 non-null object
CustomerID 475569 non-null object
QueryTs 475569 non-null int64
ProductID 475569 non-null object
times 475569 non-null int64
dtypes: int64(2), object(3)
memory usage: 116.6 MB
In [14]:
query_0301.pivot_table(values='times',index=['FileID'],columns='ProductID',aggfunc='sum')
Out[14]:
ProductID
055649
20f8a5
262880
26a5d0
3ea8c3
533133
634e6b
7acab3
8541a0
885fab
c105a0
c76d58
d465fc
e47f04
FileID
0087304d5bee451f0d82c7407b0fa7d1
NaN
8.0
NaN
NaN
7.0
NaN
NaN
10.0
NaN
NaN
NaN
NaN
NaN
NaN
0087e85caf760ff171b1774bafcafcae
45.0
NaN
NaN
NaN
NaN
NaN
NaN
26.0
NaN
NaN
NaN
3.0
NaN
NaN
00a0fadf6f4b4d244459b3bc8f6ee7fa
NaN
NaN
NaN
NaN
52.0
NaN
79.0
NaN
NaN
NaN
NaN
NaN
NaN
NaN
00a885e87beb6fb1f6ca6ee9eb783779
8.0
NaN
NaN
NaN
2.0
NaN
NaN
13.0
NaN
NaN
NaN
NaN
NaN
1.0
00a92b584bfcf58b70d5e965e91da03c
28.0
30.0
NaN
NaN
1.0
NaN
16.0
53.0
NaN
NaN
3.0
1.0
NaN
NaN
00cc3e15a0f2aad83d53752c10fbd2e3
NaN
NaN
NaN
NaN
NaN
NaN
NaN
7.0
NaN
NaN
NaN
NaN
NaN
NaN
00d37d5360716660f7f51b14053d4c8d
12.0
NaN
NaN
NaN
NaN
NaN
NaN
56.0
NaN
NaN
NaN
1.0
NaN
NaN
00ff41de2fab610efb3a2a0a1e6a525e
11.0
NaN
NaN
NaN
NaN
NaN
NaN
60.0
NaN
NaN
NaN
1.0
NaN
NaN
011369beb2e171a204a2d7ffe86fcda9
56.0
NaN
NaN
NaN
NaN
NaN
NaN
194.0
NaN
NaN
NaN
7.0
NaN
NaN
013500ae273c0c641884ba7e2fd96047
15.0
4.0
NaN
NaN
NaN
NaN
NaN
68.0
NaN
NaN
NaN
2.0
2.0
NaN
014591d03e466af2d3becbb36d5934ad
27.0
NaN
NaN
NaN
NaN
NaN
NaN
16.0
NaN
NaN
NaN
4.0
NaN
NaN
014618667125932127bc13a877ff54c3
30.0
NaN
NaN
NaN
42.0
NaN
NaN
313.0
NaN
NaN
NaN
1.0
NaN
NaN
0178350e303fc50ac270da78f0a1ee49
NaN
NaN
NaN
NaN
21.0
NaN
NaN
36.0
NaN
NaN
NaN
NaN
NaN
NaN
018a6bd3d23bf7dbd92542fe223dca20
17.0
NaN
NaN
NaN
NaN
NaN
NaN
70.0
NaN
NaN
NaN
NaN
NaN
NaN
018b11ba9785d5cb945ec3e903dc9faf
38.0
NaN
NaN
NaN
NaN
NaN
NaN
134.0
NaN
NaN
NaN
5.0
NaN
NaN
01b48a48030a2f9859832e13f2b72f33
NaN
NaN
NaN
NaN
7.0
NaN
NaN
14.0
NaN
NaN
NaN
4.0
NaN
1.0
01bd94a0de82c68ebea242c033fcc0f7
21.0
NaN
NaN
NaN
26.0
NaN
NaN
52.0
NaN
NaN
NaN
NaN
NaN
NaN
01c92bc83d8510170d12f18f8ca5538a
112.0
NaN
NaN
NaN
5.0
NaN
3.0
438.0
NaN
NaN
NaN
5.0
NaN
NaN
022b0d3fdda6f635e1045ff3d8b53a2d
NaN
NaN
NaN
NaN
2.0
NaN
NaN
4.0
NaN
NaN
NaN
NaN
NaN
NaN
0231499793520e26fedbdf7e6e0a910e
1.0
NaN
NaN
NaN
4.0
NaN
NaN
12.0
NaN
NaN
NaN
2.0
NaN
NaN
024c0b9a707713a6c0d79477c64ccb59
18.0
NaN
NaN
NaN
NaN
NaN
NaN
236.0
NaN
NaN
NaN
NaN
NaN
NaN
026094156fa3e5e178339ef77b91b78b
6.0
NaN
NaN
NaN
6.0
NaN
NaN
12.0
NaN
NaN
NaN
NaN
NaN
NaN
026870c0190808c8927a8c3ab78b5597
22.0
NaN
NaN
NaN
NaN
NaN
NaN
70.0
NaN
NaN
NaN
NaN
NaN
NaN
026d7dff019833e1edbc2eeddd405715
42.0
NaN
NaN
NaN
NaN
NaN
NaN
10.0
NaN
NaN
NaN
NaN
NaN
NaN
029931f3bdd8dc1bc98120acf5c22d18
29.0
NaN
NaN
NaN
NaN
NaN
NaN
2.0
NaN
NaN
NaN
NaN
NaN
NaN
02ae61b85343eb1fe690a4b82ba3df50
4.0
NaN
NaN
NaN
34.0
NaN
74.0
25.0
NaN
NaN
17.0
NaN
NaN
NaN
02bff16c865beb10e2fbf27b852368cc
3.0
NaN
NaN
NaN
NaN
NaN
NaN
26.0
NaN
NaN
NaN
NaN
NaN
NaN
02d3c159d4a64dcb6300e2ee76de07f0
76.0
19.0
NaN
NaN
3.0
NaN
NaN
111.0
NaN
1.0
23.0
3.0
NaN
NaN
02e4c0a7f224da040e7fd6f9224bdbd2
NaN
NaN
NaN
NaN
31.0
NaN
NaN
73.0
NaN
NaN
NaN
NaN
NaN
NaN
03392cb460beed2eb9ec3c304868199d
2.0
NaN
NaN
NaN
NaN
NaN
NaN
15.0
NaN
NaN
NaN
5.0
NaN
NaN
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
fd8359996169828584ac04e735447e70
20.0
NaN
NaN
NaN
NaN
NaN
NaN
106.0
NaN
NaN
NaN
2.0
NaN
NaN
fda5c53f66ce1386aceb04deeef4e81d
NaN
25.0
NaN
NaN
NaN
NaN
NaN
54.0
NaN
NaN
NaN
NaN
NaN
NaN
fdb4d2a608b19451166ec214282ab613
1.0
NaN
NaN
NaN
NaN
NaN
NaN
60.0
NaN
NaN
NaN
5.0
NaN
NaN
fdb79402a76652b1975c412c6026120f
1.0
NaN
NaN
NaN
NaN
NaN
NaN
2.0
NaN
NaN
NaN
NaN
NaN
NaN
fdbd1247ed79c683a611b8406b31253d
NaN
NaN
NaN
NaN
1.0
NaN
NaN
13.0
NaN
16.0
26.0
NaN
2.0
3.0
fdd2ed32e0617d999b7f4b04102bc22b
23.0
NaN
NaN
NaN
24.0
NaN
40.0
77.0
NaN
NaN
3.0
NaN
NaN
NaN
fde01e2913145f9bcc873066d5ea147d
15.0
NaN
NaN
NaN
1.0
NaN
1.0
85.0
NaN
NaN
NaN
6.0
NaN
NaN
fe02bdc3d0df9a53a85767910502b232
22.0
NaN
NaN
NaN
NaN
NaN
NaN
63.0
NaN
NaN
NaN
NaN
NaN
NaN
fe06c28c313a1807aabad6978df11d5d
NaN
NaN
NaN
NaN
10.0
NaN
NaN
22.0
NaN
NaN
NaN
NaN
NaN
NaN
fe0fc833ff60363b791fb272950c2705
26.0
NaN
NaN
NaN
41.0
NaN
NaN
83.0
NaN
NaN
NaN
NaN
NaN
NaN
fe4a3790a2a48fcd969323fc4b7270e5
43.0
NaN
NaN
NaN
6.0
NaN
36.0
326.0
NaN
NaN
1.0
3.0
NaN
NaN
fe4e0786be1f500936b79f2e37a194e5
18.0
NaN
NaN
NaN
NaN
NaN
NaN
21.0
NaN
NaN
37.0
NaN
NaN
14.0
fe5d5fef486dae261f8bc96b85ec8348
11.0
NaN
NaN
NaN
1.0
NaN
2.0
132.0
NaN
NaN
NaN
NaN
NaN
NaN
fe6063eefc1b24fa64d4cdbd1ff36ce1
5.0
NaN
NaN
NaN
NaN
NaN
NaN
93.0
NaN
NaN
NaN
NaN
NaN
NaN
feae671a81b056b108ca12693e7e7699
53.0
1.0
NaN
NaN
NaN
NaN
NaN
107.0
NaN
NaN
NaN
12.0
NaN
NaN
feb70d56093cf4e9ac7f61c49793d05a
67.0
NaN
NaN
NaN
NaN
NaN
NaN
96.0
1.0
NaN
NaN
10.0
3.0
NaN
fec8aebca8b2fde334b55dd3fba94cdd
27.0
NaN
NaN
NaN
NaN
NaN
NaN
4.0
NaN
NaN
NaN
1.0
NaN
NaN
fed96bd2d1c23d4fc100a0dfbf6a889a
15.0
NaN
NaN
NaN
2.0
NaN
NaN
29.0
NaN
NaN
2.0
2.0
NaN
1.0
feedd8e7f7c5300733f53d7b7e2ec23d
4.0
NaN
NaN
NaN
NaN
NaN
NaN
59.0
NaN
NaN
NaN
NaN
NaN
NaN
ff1e3c29f284b580ab9b84ed97f7f9e8
NaN
26.0
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
ff3deb1a3b9c8d23faa1eb28f4ee26fd
7.0
NaN
NaN
NaN
17.0
NaN
42.0
64.0
NaN
19.0
3.0
2.0
NaN
8.0
ff4005a0ca0ea7dd2098d27f5e43bc0a
2.0
NaN
NaN
NaN
NaN
NaN
NaN
15.0
NaN
NaN
NaN
5.0
NaN
NaN
ff9d0c4fa5d2a52c2d8acceeb15b512a
31.0
NaN
NaN
NaN
44.0
NaN
30.0
52.0
NaN
NaN
NaN
NaN
NaN
NaN
ff9d6c746be37b7ce3939e5e81bf288e
19.0
NaN
NaN
NaN
NaN
NaN
NaN
100.0
NaN
NaN
NaN
NaN
NaN
NaN
ffaec9f5508fcd3662dd3a3f5f7cb06d
NaN
NaN
NaN
NaN
NaN
NaN
140.0
NaN
NaN
NaN
NaN
NaN
NaN
NaN
ffb3e4bb0f6f59fe69c4d1c56512bde9
23.0
NaN
NaN
NaN
27.0
NaN
30.0
82.0
NaN
NaN
3.0
1.0
NaN
NaN
ffb56df2cb627900df8f1cbbfffdba67
93.0
NaN
NaN
NaN
16.0
NaN
4.0
442.0
NaN
NaN
1.0
3.0
NaN
NaN
ffd220220358f09d2dd16e6d87eb13b0
68.0
NaN
NaN
NaN
NaN
NaN
9.0
261.0
NaN
22.0
45.0
4.0
NaN
17.0
ffd9a9f23373ca5700daceafe55a35ca
NaN
7.0
NaN
NaN
NaN
NaN
NaN
21.0
NaN
NaN
12.0
NaN
NaN
2.0
ffe023042f06cb48603058b6245fc338
14.0
NaN
NaN
NaN
2.0
NaN
NaN
4.0
NaN
NaN
77.0
3.0
NaN
NaN
2445 rows × 14 columns
In [15]:
query_0301.groupby(['FileID','CustomerID','ProductID'])[['times']].sum()
Out[15]:
times
FileID
CustomerID
ProductID
0087304d5bee451f0d82c7407b0fa7d1
282396145a3df4452761bacf8049f6db
3ea8c3
7
501782bb051c5368f641f5299e550f32
20f8a5
8
54a57555a85251b45a9de37ba95a4cf3
7acab3
2
662a1f7c7441bace48defd0f1947bc36
7acab3
2
71a15fcfe2741879c0d3a4588c011dae
7acab3
2
bb0b6c51b1fd781a7a4cd1b2365ba889
7acab3
2
d61e6c11ba5b56de990e512e86b51886
7acab3
2
0087e85caf760ff171b1774bafcafcae
002a0a48cb30742c0a85c8661384edb9
055649
1
01d32fea310f8b1cd8a98dd57745918b
7acab3
1
02feea730f4de6baf2e0675835e94623
055649
1
0456e70e10362f10f21ab8629c0704f8
7acab3
1
0693bb9028788dd05e691d5b41903a2a
7acab3
1
1160ca9bd5b424af814971c1897c3dbc
c76d58
1
12b17df2178e0bbd99fa144903fe0afb
7acab3
1
144ca08c86870967bde66396ba32669f
055649
1
1638281433537f34fb53eb6e0a5d6bb6
7acab3
1
1a248fe68eb19b599d3a03d2936e388e
7acab3
1
1ca40a65ec6f71efe2b4f840b859b4bf
055649
1
1e180bb56546440e7fa7738af0441c5c
055649
1
216e2ac1cb62a0e39ec8f779130f3255
055649
1
25b402190079b38b5c7087c7007f7238
7acab3
1
30e96e9a8d6036a799210b9a5a5232e3
055649
1
34144d1fac98512a2733b3683956cdb5
055649
1
37045bfc8dd54190fcbb01ab8aecab10
055649
1
3811693a78ffabbfc5bb0b4adb526104
7acab3
1
3b26072d43bed713e4f01ba2378daf7a
055649
1
40bf9554af692dc7682a70627747a0ef
055649
1
45def3125f5bca7f5047931d5a738aa8
7acab3
1
466bc59569344ceeaa8d25cd73a041ce
7acab3
1
488b40fb2bb5b52ae92f4afb5854cc48
055649
1
...
...
...
...
ffe023042f06cb48603058b6245fc338
75ce7c4172a145839f58642dc952668a
c105a0
1
76699e4bcfbde761d45fc503c92ced50
c105a0
1
7823248eea1343f107b3aaa712614be4
c105a0
3
7a83fb37d4c12973be776212528cb31d
c105a0
5
7cd9c71fe0a56aa2c88d21f02fe2ccef
c105a0
1
7ea4fa751875391b73293c21c14aa432
055649
1
7fec86081b1d691268e4393cc8e9cee0
7acab3
2
8782a2c4039d65a9434c9ffbe77198e0
c105a0
1
8ce468a7cf0a985ef275aad76d85a8d6
c105a0
3
8e9ae304354117f5094c618a78f0df02
c105a0
1
98b4e58ea0d7c7a5d98ebb6f9edd234b
c105a0
2
9a3ee4eda7e837d924af9c7fb5b3aeff
c105a0
1
9a40017505bdc8522055268152de455e
c105a0
3
9e786ac444ec164122bad895d4cf07eb
055649
1
a19bd4ac97e19ad42f642b36e394858a
055649
2
ad894d213675d725e1a36eadc10bdf63
c105a0
3
ae1432e7cf8a352ad9d5b5ce3bc03545
c105a0
1
b0855c2102393cc7bfd42dd766a5617b
c105a0
1
c5706b1670d5352609232125dc27d422
c105a0
2
c578e6194f771df650df5e10cc845483
c105a0
1
c92bfb4ada83dcf364da907a9faa4451
c105a0
1
d1b6601175bc38706e3eda82f9791966
c105a0
1
d58c1116900ae4fbb24acbdf8b2defeb
055649
2
d71ec74530c4373b3936eb54306a298f
055649
1
ddc845b6d2b7d88259a77c72699089eb
c105a0
1
df47a06c7a81aca6134a476d080a6c08
055649
1
e723616c3233bc21dd2f56ee781d16f1
7acab3
2
eeba11f25d5e6ca06cdba74ca6465568
c105a0
2
fb6b2110cb0219a5f79be2edf55928cd
c105a0
1
fd313c868b5ed7ec67d036b03f63e236
c105a0
1
207224 rows × 1 columns
In [16]:
#AUC計算範例
import numpy as np
from sklearn import metrics
y = np.array([1, 1, 2, 2])
pred = np.array([0.5, 1, 0.9, 1])
fpr, tpr, thresholds = metrics.roc_curve(y, pred, pos_label=2)
metrics.auc(fpr, tpr)
Out[16]:
0.625
In [17]:
#timestamp轉換
import datetime
print(
datetime.datetime.fromtimestamp(
int("1488326402")
).strftime('%Y-%m-%d %H:%M:%S'))
2017-03-01 08:00:02
In [ ]: