In [1]:
Copied!
from river import compose, preprocessing, metrics, datasets
from deep_river.anomaly import RollingAutoencoder
from torch import nn, manual_seed
import torch
from tqdm import tqdm
from river import compose, preprocessing, metrics, datasets
from deep_river.anomaly import RollingAutoencoder
from torch import nn, manual_seed
import torch
from tqdm import tqdm
LSTM Encoder-Decoder architecture by Sutskever et al. 2014 (https://arxiv.org/abs/1409.3215). The decoder only gets access to its own prediction of the previous timestep. Decoding also takes performed backwards.
In [2]:
Copied!
class LSTMDecoder(nn.Module):
def __init__(
self,
input_size,
hidden_size,
sequence_length=None,
predict_backward=True,
num_layers=1,
):
super().__init__()
self.cell = nn.LSTMCell(input_size, hidden_size)
self.input_size = input_size
self.hidden_size = hidden_size
self.predict_backward = predict_backward
self.sequence_length = sequence_length
self.num_layers = num_layers
self.lstm = (
None
if num_layers <= 1
else nn.LSTM(
input_size=hidden_size,
hidden_size=hidden_size,
num_layers=num_layers - 1,
)
)
self.linear = (
None
if input_size == hidden_size
else nn.Linear(hidden_size, input_size)
)
def forward(self, h, sequence_length=None):
"""Computes the forward pass.
Parameters
----------
x:
Input of shape (batch_size, input_size)
Returns
-------
Tuple[torch.Tensor, Tuple[torch.Tensor, torch.Tensor]]
Decoder outputs (output, (h, c)) where output has the shape (sequence_length, batch_size, input_size).
"""
if sequence_length is None:
sequence_length = self.sequence_length
x_hat = torch.empty(sequence_length, h.shape[0], self.hidden_size)
for t in range(sequence_length):
if t == 0:
h, c = self.cell(h)
else:
input = h if self.linear is None else self.linear(h)
h, c = self.cell(input, (h, c))
t_predicted = -t if self.predict_backward else t
x_hat[t_predicted] = h
if self.lstm is not None:
x_hat = self.lstm(x_hat)
return x_hat, (h, c)
class LSTMAutoencoderSutskever(nn.Module):
def __init__(self, n_features, hidden_size=30, n_layers=1):
super().__init__()
self.n_features = n_features
self.hidden_size = hidden_size
self.n_layers = n_layers
self.encoder = nn.LSTM(
input_size=n_features, hidden_size=hidden_size, num_layers=n_layers
)
self.decoder = LSTMDecoder(
input_size=hidden_size,
hidden_size=n_features,
predict_backward=True,
)
def forward(self, x):
_, (h, _) = self.encoder(x)
x_hat, _ = self.decoder(h[-1], x.shape[0])
return x_hat
class LSTMDecoder(nn.Module):
def __init__(
self,
input_size,
hidden_size,
sequence_length=None,
predict_backward=True,
num_layers=1,
):
super().__init__()
self.cell = nn.LSTMCell(input_size, hidden_size)
self.input_size = input_size
self.hidden_size = hidden_size
self.predict_backward = predict_backward
self.sequence_length = sequence_length
self.num_layers = num_layers
self.lstm = (
None
if num_layers <= 1
else nn.LSTM(
input_size=hidden_size,
hidden_size=hidden_size,
num_layers=num_layers - 1,
)
)
self.linear = (
None
if input_size == hidden_size
else nn.Linear(hidden_size, input_size)
)
def forward(self, h, sequence_length=None):
"""Computes the forward pass.
Parameters
----------
x:
Input of shape (batch_size, input_size)
Returns
-------
Tuple[torch.Tensor, Tuple[torch.Tensor, torch.Tensor]]
Decoder outputs (output, (h, c)) where output has the shape (sequence_length, batch_size, input_size).
"""
if sequence_length is None:
sequence_length = self.sequence_length
x_hat = torch.empty(sequence_length, h.shape[0], self.hidden_size)
for t in range(sequence_length):
if t == 0:
h, c = self.cell(h)
else:
input = h if self.linear is None else self.linear(h)
h, c = self.cell(input, (h, c))
t_predicted = -t if self.predict_backward else t
x_hat[t_predicted] = h
if self.lstm is not None:
x_hat = self.lstm(x_hat)
return x_hat, (h, c)
class LSTMAutoencoderSutskever(nn.Module):
def __init__(self, n_features, hidden_size=30, n_layers=1):
super().__init__()
self.n_features = n_features
self.hidden_size = hidden_size
self.n_layers = n_layers
self.encoder = nn.LSTM(
input_size=n_features, hidden_size=hidden_size, num_layers=n_layers
)
self.decoder = LSTMDecoder(
input_size=hidden_size,
hidden_size=n_features,
predict_backward=True,
)
def forward(self, x):
_, (h, _) = self.encoder(x)
x_hat, _ = self.decoder(h[-1], x.shape[0])
return x_hat
Testing¶
The models can be tested with the code in the following cells. Since River currently does not feature any anomaly detection datasets with temporal dependencies, the results should be expected to be somewhat inaccurate.
In [3]:
Copied!
_ = manual_seed(42)
dataset = datasets.CreditCard().take(5000)
metric = metrics.RollingROCAUC(window_size=5000)
module = LSTMAutoencoderSutskever # Set this variable to your architecture of choice
ae = RollingAutoencoder(module=module, lr=0.005)
scaler = preprocessing.StandardScaler()
_ = manual_seed(42)
dataset = datasets.CreditCard().take(5000)
metric = metrics.RollingROCAUC(window_size=5000)
module = LSTMAutoencoderSutskever # Set this variable to your architecture of choice
ae = RollingAutoencoder(module=module, lr=0.005)
scaler = preprocessing.StandardScaler()
In [4]:
Copied!
for x, y in tqdm(list(dataset)):
scaler.learn_one(x)
x = scaler.transform_one(x)
score = ae.score_one(x)
metric.update(y_true=y, y_pred=score)
ae.learn_one(x=x, y=None)
print(f"ROCAUC: {metric.get():.4f}")
for x, y in tqdm(list(dataset)):
scaler.learn_one(x)
x = scaler.transform_one(x)
score = ae.score_one(x)
metric.update(y_true=y, y_pred=score)
ae.learn_one(x=x, y=None)
print(f"ROCAUC: {metric.get():.4f}")
0%| | 0/5000 [00:00<?, ?it/s]
0%| | 1/5000 [00:01<1:51:41, 1.34s/it]
0%|▋ | 17/5000 [00:01<05:09, 16.08it/s]
1%|█ | 27/5000 [00:01<03:15, 25.44it/s]
1%|█▊ | 45/5000 [00:01<01:44, 47.36it/s]
1%|██▋ | 65/5000 [00:01<01:07, 72.91it/s]
2%|███▍ | 84/5000 [00:01<00:51, 95.62it/s]
2%|████ | 101/5000 [00:02<00:49, 99.74it/s]
2%|████▋ | 117/5000 [00:02<00:43, 111.96it/s]
3%|█████▎ | 132/5000 [00:02<00:40, 120.52it/s]
3%|█████▉ | 148/5000 [00:02<00:37, 129.42it/s]
3%|██████▉ | 172/5000 [00:02<00:30, 156.87it/s]
4%|███████▊ | 194/5000 [00:02<00:28, 171.00it/s]
4%|████████▌ | 213/5000 [00:02<00:28, 169.69it/s]
5%|█████████▎ | 231/5000 [00:02<00:27, 171.82it/s]
5%|██████████ | 249/5000 [00:02<00:27, 171.11it/s]
5%|██████████▊ | 268/5000 [00:02<00:26, 175.48it/s]
6%|███████████▌ | 286/5000 [00:03<00:27, 171.51it/s]
6%|████████████▍ | 307/5000 [00:03<00:25, 181.26it/s]
7%|█████████████▎ | 329/5000 [00:03<00:24, 191.93it/s]
7%|██████████████ | 349/5000 [00:03<00:24, 189.19it/s]
7%|██████████████▉ | 369/5000 [00:03<00:25, 182.09it/s]
8%|███████████████▊ | 391/5000 [00:03<00:24, 191.98it/s]
8%|████████████████▊ | 415/5000 [00:03<00:22, 205.15it/s]
9%|█████████████████▊ | 440/5000 [00:03<00:20, 217.60it/s]
9%|██████████████████▊ | 465/5000 [00:03<00:20, 226.67it/s]
10%|███████████████████▊ | 489/5000 [00:04<00:19, 228.12it/s]
10%|████████████████████▊ | 514/5000 [00:04<00:19, 233.81it/s]
11%|█████████████████████▋ | 538/5000 [00:04<00:19, 230.07it/s]
11%|██████████████████████▋ | 563/5000 [00:04<00:18, 234.27it/s]
12%|███████████████████████▊ | 588/5000 [00:04<00:18, 236.70it/s]
12%|████████████████████████▋ | 612/5000 [00:04<00:18, 234.18it/s]
13%|█████████████████████████▋ | 637/5000 [00:04<00:18, 236.91it/s]
13%|██████████████████████████▊ | 663/5000 [00:04<00:18, 240.94it/s]
14%|███████████████████████████▊ | 688/5000 [00:04<00:17, 242.17it/s]
14%|████████████████████████████▊ | 713/5000 [00:04<00:17, 242.96it/s]
15%|█████████████████████████████▊ | 738/5000 [00:05<00:18, 233.47it/s]
15%|██████████████████████████████▊ | 763/5000 [00:05<00:17, 236.94it/s]
16%|███████████████████████████████▊ | 787/5000 [00:05<00:18, 232.51it/s]
16%|████████████████████████████████▊ | 812/5000 [00:05<00:17, 235.45it/s]
17%|█████████████████████████████████▊ | 837/5000 [00:05<00:17, 238.65it/s]
17%|██████████████████████████████████▊ | 861/5000 [00:05<00:17, 235.37it/s]
18%|███████████████████████████████████▊ | 886/5000 [00:05<00:17, 238.60it/s]
18%|████████████████████████████████████▊ | 911/5000 [00:05<00:16, 240.80it/s]
19%|█████████████████████████████████████▊ | 936/5000 [00:05<00:16, 241.95it/s]
19%|██████████████████████████████████████▊ | 961/5000 [00:05<00:16, 242.75it/s]
20%|███████████████████████████████████████▊ | 986/5000 [00:06<00:16, 237.48it/s]
20%|████████████████████████████████████████▌ | 1010/5000 [00:06<00:16, 237.63it/s]
21%|█████████████████████████████████████████▌ | 1035/5000 [00:06<00:16, 239.10it/s]
21%|██████████████████████████████████████████▌ | 1060/5000 [00:06<00:16, 241.12it/s]
22%|███████████████████████████████████████████▌ | 1085/5000 [00:06<00:16, 243.37it/s]
22%|████████████████████████████████████████████▌ | 1110/5000 [00:06<00:16, 230.70it/s]
23%|█████████████████████████████████████████████▋ | 1135/5000 [00:06<00:16, 234.90it/s]
23%|██████████████████████████████████████████████▌ | 1159/5000 [00:06<00:16, 235.35it/s]
24%|███████████████████████████████████████████████▌ | 1184/5000 [00:06<00:16, 238.31it/s]
24%|████████████████████████████████████████████████▋ | 1210/5000 [00:07<00:15, 242.41it/s]
25%|█████████████████████████████████████████████████▋ | 1235/5000 [00:07<00:15, 240.39it/s]
25%|██████████████████████████████████████████████████▋ | 1261/5000 [00:07<00:15, 243.25it/s]
26%|███████████████████████████████████████████████████▋ | 1286/5000 [00:07<00:15, 239.84it/s]
26%|████████████████████████████████████████████████████▋ | 1311/5000 [00:07<00:15, 238.86it/s]
27%|█████████████████████████████████████████████████████▋ | 1336/5000 [00:07<00:15, 239.20it/s]
27%|██████████████████████████████████████████████████████▋ | 1360/5000 [00:07<00:15, 234.96it/s]
28%|███████████████████████████████████████████████████████▋ | 1385/5000 [00:07<00:15, 238.34it/s]
28%|████████████████████████████████████████████████████████▋ | 1410/5000 [00:07<00:14, 241.06it/s]
29%|█████████████████████████████████████████████████████████▋ | 1435/5000 [00:07<00:14, 241.35it/s]
29%|██████████████████████████████████████████████████████████▋ | 1460/5000 [00:08<00:14, 242.45it/s]
30%|███████████████████████████████████████████████████████████▋ | 1485/5000 [00:08<00:14, 235.64it/s]
30%|████████████████████████████████████████████████████████████▋ | 1510/5000 [00:08<00:14, 238.39it/s]
31%|█████████████████████████████████████████████████████████████▋ | 1535/5000 [00:08<00:14, 240.99it/s]
31%|██████████████████████████████████████████████████████████████▋ | 1560/5000 [00:08<00:14, 242.23it/s]
32%|███████████████████████████████████████████████████████████████▋ | 1585/5000 [00:08<00:14, 242.39it/s]
32%|████████████████████████████████████████████████████████████████▋ | 1610/5000 [00:08<00:14, 239.84it/s]
33%|█████████████████████████████████████████████████████████████████▋ | 1635/5000 [00:08<00:13, 241.16it/s]
33%|██████████████████████████████████████████████████████████████████▋ | 1660/5000 [00:08<00:13, 242.37it/s]
34%|███████████████████████████████████████████████████████████████████▋ | 1685/5000 [00:09<00:13, 243.66it/s]
34%|████████████████████████████████████████████████████████████████████▊ | 1711/5000 [00:09<00:13, 245.66it/s]
35%|█████████████████████████████████████████████████████████████████████▊ | 1736/5000 [00:09<00:13, 239.72it/s]
35%|██████████████████████████████████████████████████████████████████████▊ | 1761/5000 [00:09<00:13, 241.80it/s]
36%|███████████████████████████████████████████████████████████████████████▊ | 1787/5000 [00:09<00:13, 244.42it/s]
36%|████████████████████████████████████████████████████████████████████████▊ | 1812/5000 [00:09<00:13, 244.71it/s]
37%|█████████████████████████████████████████████████████████████████████████▊ | 1837/5000 [00:09<00:13, 243.19it/s]
37%|██████████████████████████████████████████████████████████████████████████▊ | 1862/5000 [00:09<00:13, 238.18it/s]
38%|███████████████████████████████████████████████████████████████████████████▊ | 1887/5000 [00:09<00:12, 240.83it/s]
38%|████████████████████████████████████████████████████████████████████████████▊ | 1912/5000 [00:09<00:12, 241.97it/s]
39%|█████████████████████████████████████████████████████████████████████████████▊ | 1937/5000 [00:10<00:12, 243.67it/s]
39%|██████████████████████████████████████████████████████████████████████████████▊ | 1962/5000 [00:10<00:12, 240.77it/s]
40%|███████████████████████████████████████████████████████████████████████████████▉ | 1987/5000 [00:10<00:12, 237.00it/s]
40%|████████████████████████████████████████████████████████████████████████████████▉ | 2012/5000 [00:10<00:12, 240.53it/s]
41%|█████████████████████████████████████████████████████████████████████████████████▉ | 2037/5000 [00:10<00:12, 240.41it/s]
41%|██████████████████████████████████████████████████████████████████████████████████▉ | 2063/5000 [00:10<00:12, 243.69it/s]
42%|███████████████████████████████████████████████████████████████████████████████████▉ | 2088/5000 [00:10<00:12, 241.30it/s]
42%|████████████████████████████████████████████████████████████████████████████████████▉ | 2113/5000 [00:10<00:12, 236.04it/s]
43%|█████████████████████████████████████████████████████████████████████████████████████▉ | 2137/5000 [00:10<00:12, 234.44it/s]
43%|██████████████████████████████████████████████████████████████████████████████████████▊ | 2161/5000 [00:11<00:12, 235.28it/s]
44%|███████████████████████████████████████████████████████████████████████████████████████▉ | 2187/5000 [00:11<00:11, 240.05it/s]
44%|████████████████████████████████████████████████████████████████████████████████████████▉ | 2212/5000 [00:11<00:11, 237.79it/s]
45%|█████████████████████████████████████████████████████████████████████████████████████████▉ | 2236/5000 [00:11<00:11, 237.62it/s]
45%|██████████████████████████████████████████████████████████████████████████████████████████▊ | 2260/5000 [00:11<00:11, 236.41it/s]
46%|███████████████████████████████████████████████████████████████████████████████████████████▊ | 2284/5000 [00:11<00:11, 235.04it/s]
46%|████████████████████████████████████████████████████████████████████████████████████████████▊ | 2308/5000 [00:11<00:11, 225.90it/s]
47%|█████████████████████████████████████████████████████████████████████████████████████████████▋ | 2331/5000 [00:11<00:12, 216.43it/s]
47%|██████████████████████████████████████████████████████████████████████████████████████████████▌ | 2353/5000 [00:11<00:12, 213.83it/s]
48%|███████████████████████████████████████████████████████████████████████████████████████████████▍ | 2375/5000 [00:11<00:12, 214.30it/s]
48%|████████████████████████████████████████████████████████████████████████████████████████████████▎ | 2397/5000 [00:12<00:12, 211.61it/s]
48%|█████████████████████████████████████████████████████████████████████████████████████████████████▏ | 2419/5000 [00:12<00:13, 197.48it/s]
49%|██████████████████████████████████████████████████████████████████████████████████████████████████ | 2439/5000 [00:12<00:13, 189.72it/s]
49%|██████████████████████████████████████████████████████████████████████████████████████████████████▊ | 2459/5000 [00:12<00:13, 189.11it/s]
50%|███████████████████████████████████████████████████████████████████████████████████████████████████▋ | 2479/5000 [00:12<00:13, 182.39it/s]
50%|████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 2504/5000 [00:12<00:12, 198.69it/s]
51%|█████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 2529/5000 [00:12<00:11, 210.92it/s]
51%|██████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 2554/5000 [00:12<00:11, 221.08it/s]
52%|███████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2577/5000 [00:12<00:10, 220.83it/s]
52%|████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2602/5000 [00:13<00:10, 227.72it/s]
53%|█████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2627/5000 [00:13<00:10, 233.07it/s]
53%|██████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 2653/5000 [00:13<00:09, 238.39it/s]
54%|███████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 2678/5000 [00:13<00:09, 239.75it/s]
54%|████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 2703/5000 [00:13<00:09, 232.96it/s]
55%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 2727/5000 [00:13<00:09, 234.23it/s]
55%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 2752/5000 [00:13<00:09, 237.03it/s]
56%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2776/5000 [00:13<00:09, 237.13it/s]
56%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2800/5000 [00:13<00:09, 237.08it/s]
56%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2824/5000 [00:13<00:09, 235.88it/s]
57%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2849/5000 [00:14<00:09, 238.67it/s]
57%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 2873/5000 [00:14<00:08, 238.32it/s]
58%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 2898/5000 [00:14<00:08, 240.19it/s]
58%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2923/5000 [00:14<00:08, 241.79it/s]
59%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2948/5000 [00:14<00:08, 237.60it/s]
59%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2973/5000 [00:14<00:08, 239.72it/s]
60%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 2998/5000 [00:14<00:08, 241.33it/s]
60%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3023/5000 [00:14<00:08, 243.35it/s]
61%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3048/5000 [00:14<00:08, 241.72it/s]
61%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3073/5000 [00:15<00:08, 223.68it/s]
62%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 3097/5000 [00:15<00:08, 227.30it/s]
62%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3122/5000 [00:15<00:08, 232.32it/s]
63%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3147/5000 [00:15<00:07, 235.06it/s]
63%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3172/5000 [00:15<00:07, 237.68it/s]
64%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 3196/5000 [00:15<00:07, 237.61it/s]
64%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 3221/5000 [00:15<00:07, 238.83it/s]
65%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 3246/5000 [00:15<00:07, 240.95it/s]
65%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 3271/5000 [00:15<00:07, 242.07it/s]
66%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 3296/5000 [00:15<00:06, 243.76it/s]
66%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3321/5000 [00:16<00:07, 239.67it/s]
67%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3346/5000 [00:16<00:06, 240.05it/s]
67%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3371/5000 [00:16<00:06, 240.79it/s]
68%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3396/5000 [00:16<00:06, 241.62it/s]
68%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3421/5000 [00:16<00:06, 242.02it/s]
69%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3446/5000 [00:16<00:06, 232.10it/s]
69%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3471/5000 [00:16<00:06, 235.00it/s]
70%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3496/5000 [00:16<00:06, 238.96it/s]
70%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3521/5000 [00:16<00:06, 240.66it/s]
71%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3546/5000 [00:17<00:06, 241.15it/s]
71%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3571/5000 [00:17<00:05, 238.70it/s]
72%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3596/5000 [00:17<00:05, 240.82it/s]
72%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3621/5000 [00:17<00:05, 240.29it/s]
73%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3646/5000 [00:17<00:05, 241.69it/s]
73%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3671/5000 [00:17<00:05, 243.36it/s]
74%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3696/5000 [00:17<00:05, 241.58it/s]
74%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3721/5000 [00:17<00:05, 240.17it/s]
75%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3746/5000 [00:17<00:05, 241.82it/s]
75%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3771/5000 [00:17<00:05, 243.12it/s]
76%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3796/5000 [00:18<00:04, 243.77it/s]
76%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3821/5000 [00:18<00:04, 240.31it/s]
77%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3846/5000 [00:18<00:04, 239.08it/s]
77%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3870/5000 [00:18<00:04, 232.33it/s]
78%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 3894/5000 [00:18<00:05, 210.48it/s]
78%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 3916/5000 [00:18<00:05, 205.83it/s]
79%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 3941/5000 [00:18<00:04, 215.64it/s]
79%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 3966/5000 [00:18<00:04, 222.79it/s]
80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 3989/5000 [00:18<00:04, 210.11it/s]
80%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4011/5000 [00:19<00:04, 202.49it/s]
81%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 4032/5000 [00:19<00:05, 192.70it/s]
81%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 4055/5000 [00:19<00:04, 200.52it/s]
82%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉ | 4077/5000 [00:19<00:04, 205.67it/s]
82%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 4101/5000 [00:19<00:04, 215.00it/s]
82%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 4124/5000 [00:19<00:04, 216.42it/s]
83%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 4146/5000 [00:19<00:04, 207.86it/s]
83%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 4167/5000 [00:19<00:04, 200.49it/s]
84%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 4188/5000 [00:19<00:04, 194.94it/s]
84%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4208/5000 [00:20<00:04, 191.07it/s]
85%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉ | 4228/5000 [00:20<00:04, 185.56it/s]
85%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 4250/5000 [00:20<00:03, 193.71it/s]
85%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 4270/5000 [00:20<00:05, 139.20it/s]
86%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4287/5000 [00:20<00:08, 84.95it/s]
86%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 4300/5000 [00:21<00:08, 84.15it/s]
86%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4312/5000 [00:21<00:08, 80.85it/s]
86%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌ | 4322/5000 [00:21<00:09, 71.74it/s]
87%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 4339/5000 [00:21<00:07, 88.67it/s]
87%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 4356/5000 [00:21<00:06, 104.98it/s]
87%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊ | 4374/5000 [00:21<00:05, 120.93it/s]
88%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋ | 4396/5000 [00:21<00:04, 143.48it/s]
88%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍ | 4414/5000 [00:21<00:03, 150.51it/s]
89%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4434/5000 [00:22<00:03, 163.18it/s]
89%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎ | 4459/5000 [00:22<00:02, 185.06it/s]
90%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4483/5000 [00:22<00:02, 199.61it/s]
90%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4508/5000 [00:22<00:02, 213.01it/s]
91%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4533/5000 [00:22<00:02, 222.40it/s]
91%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4558/5000 [00:22<00:01, 229.86it/s]
92%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4583/5000 [00:22<00:01, 234.02it/s]
92%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4607/5000 [00:22<00:01, 235.65it/s]
93%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4631/5000 [00:22<00:01, 233.79it/s]
93%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4656/5000 [00:23<00:01, 237.49it/s]
94%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4681/5000 [00:23<00:01, 239.93it/s]
94%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4706/5000 [00:23<00:01, 241.22it/s]
95%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4731/5000 [00:23<00:01, 240.63it/s]
95%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4756/5000 [00:23<00:01, 236.04it/s]
96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4780/5000 [00:23<00:00, 229.60it/s]
96%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4805/5000 [00:23<00:00, 234.35it/s]
97%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4830/5000 [00:23<00:00, 238.73it/s]
97%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 4854/5000 [00:23<00:00, 238.37it/s]
98%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 4878/5000 [00:23<00:00, 237.86it/s]
98%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 4903/5000 [00:24<00:00, 240.85it/s]
99%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 4928/5000 [00:24<00:00, 242.33it/s]
99%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 4953/5000 [00:24<00:00, 240.61it/s]
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████ | 4978/5000 [00:24<00:00, 237.78it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5000/5000 [00:24<00:00, 204.51it/s]
ROCAUC: 0.6839
In [ ]:
Copied!