Now, let's compare the two experiments together and see which feature is the best.
In [1]:
import numpy as np
import pandas as pd
%matplotlib inline
In [2]:
df_uni = pd.read_hdf('../reports/large-exp-unigram-feats.h5', 'df') # unigram features
df_rea = pd.read_hdf('../reports/large-exp-readability-feats.h5', 'df') # readability features
In [3]:
df_uni.T
Out[3]:
method
txt_comp_dist
feature
unigram
metric
euclidean
norm_dir
bbs152930
phy17301
mus1139
oot_dir
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
num_norm
num_oot
num_top
result
k
10
1
1
base
0
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
1
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
perf
0
0.266667
0.000000
0.200000
0.066667
0.000000
0.366667
0.066667
0.466667
0.300000
1
0.733333
1.000000
0.800000
0.933333
1.000000
0.633333
0.933333
0.533333
0.700000
3
base
0
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
1
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
perf
0
0.066667
0.066667
0.100000
0.000000
0.000000
0.066667
0.166667
0.300000
0.133333
1
0.933333
0.933333
0.900000
1.000000
1.000000
0.933333
0.833333
0.700000
0.866667
5
base
0
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
1
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
perf
0
0.100000
0.033333
0.100000
0.000000
0.000000
0.066667
0.033333
0.100000
0.033333
1
0.900000
0.966667
0.900000
1.000000
1.000000
0.933333
0.966667
0.900000
0.966667
4
1
base
0
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
1
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
perf
0
0.066667
0.066667
0.166667
0.133333
0.000000
0.200000
0.100000
0.266667
0.200000
1
0.933333
0.933333
0.833333
0.866667
1.000000
0.800000
0.900000
0.733333
0.800000
3
base
0
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
1
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
2
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
3
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
perf
0
0.033333
0.066667
0.066667
0.000000
0.000000
0.166667
0.133333
0.200000
0.166667
1
0.133333
0.133333
0.266667
0.133333
0.033333
0.333333
0.333333
0.333333
0.366667
2
0.300000
0.233333
0.266667
0.300000
0.133333
0.333333
0.300000
0.233333
0.200000
3
0.533333
0.566667
0.400000
0.566667
0.833333
0.166667
0.233333
0.233333
0.266667
5
base
0
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
1
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
2
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
3
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
4
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
perf
0
0.000000
0.033333
0.000000
0.000000
0.000000
0.000000
0.033333
0.000000
0.033333
...
...
...
...
...
...
...
...
...
...
...
...
...
...
80
4
5
base
4
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
perf
0
0.033333
0.000000
0.000000
0.066667
0.000000
0.300000
0.400000
0.333333
0.633333
1
0.366667
0.000000
0.033333
0.200000
0.100000
0.400000
0.366667
0.366667
0.233333
2
0.366667
0.066667
0.500000
0.533333
0.333333
0.266667
0.133333
0.233333
0.133333
3
0.233333
0.433333
0.400000
0.200000
0.466667
0.033333
0.100000
0.066667
0.000000
4
0.000000
0.500000
0.066667
0.000000
0.100000
0.000000
0.000000
0.000000
0.000000
8
1
base
0
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
1
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
perf
0
0.766667
0.533333
0.800000
0.300000
0.066667
0.733333
0.500000
0.366667
0.766667
1
0.233333
0.466667
0.200000
0.700000
0.933333
0.266667
0.500000
0.633333
0.233333
3
base
0
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
1
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
2
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
3
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
perf
0
0.066667
0.000000
0.000000
0.000000
0.000000
0.266667
0.366667
0.266667
0.233333
1
0.233333
0.000000
0.066667
0.166667
0.033333
0.533333
0.300000
0.433333
0.666667
2
0.700000
0.966667
0.933333
0.600000
0.600000
0.200000
0.300000
0.166667
0.100000
3
0.000000
0.033333
0.000000
0.233333
0.366667
0.000000
0.033333
0.133333
0.000000
5
base
0
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
1
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
2
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
3
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
4
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
5
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
perf
0
0.000000
0.000000
0.000000
0.000000
0.000000
0.133333
0.233333
0.400000
0.366667
1
0.100000
0.000000
0.266667
0.166667
0.000000
0.166667
0.333333
0.166667
0.300000
2
0.300000
0.000000
0.100000
0.266667
0.066667
0.500000
0.366667
0.300000
0.333333
3
0.400000
0.100000
0.433333
0.500000
0.400000
0.166667
0.066667
0.133333
0.000000
4
0.200000
0.900000
0.200000
0.066667
0.466667
0.033333
0.000000
0.000000
0.000000
5
0.000000
0.000000
0.000000
0.000000
0.066667
0.000000
0.000000
0.000000
0.000000
116 rows × 9 columns
In [4]:
df_rea.T
Out[4]:
method
txt_comp_dist
feature
readability
metric
euclidean
norm_dir
bbs152930
phy17301
mus1139
oot_dir
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
num_norm
num_oot
num_top
result
k
10
1
1
base
0
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
1
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
perf
0
0.966667
0.966667
1.000000
0.933333
0.800000
0.933333
0.933333
0.966667
1.000000
1
0.033333
0.033333
0.000000
0.066667
0.200000
0.066667
0.066667
0.033333
0.000000
3
base
0
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
1
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
perf
0
0.633333
0.333333
0.433333
0.666667
0.300000
0.700000
0.900000
0.833333
0.933333
1
0.366667
0.666667
0.566667
0.333333
0.700000
0.300000
0.100000
0.166667
0.066667
5
base
0
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
1
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
perf
0
0.500000
0.233333
0.500000
0.233333
0.033333
0.166667
0.900000
0.633333
0.866667
1
0.500000
0.766667
0.500000
0.766667
0.966667
0.833333
0.100000
0.366667
0.133333
4
1
base
0
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
1
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
perf
0
0.833333
0.900000
0.966667
0.733333
0.633333
0.800000
0.733333
0.833333
0.933333
1
0.166667
0.100000
0.033333
0.266667
0.366667
0.200000
0.266667
0.166667
0.066667
3
base
0
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
1
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
2
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
3
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
perf
0
0.300000
0.000000
0.133333
0.033333
0.000000
0.266667
0.700000
0.666667
0.700000
1
0.466667
0.366667
0.700000
0.666667
0.366667
0.500000
0.300000
0.266667
0.300000
2
0.233333
0.633333
0.166667
0.300000
0.633333
0.233333
0.000000
0.066667
0.000000
3
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
5
base
0
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
1
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
2
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
3
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
4
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
perf
0
0.100000
0.000000
0.266667
0.000000
0.000000
0.133333
0.500000
0.166667
0.500000
...
...
...
...
...
...
...
...
...
...
...
...
...
...
80
4
5
base
4
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
perf
0
0.933333
0.933333
0.933333
0.733333
0.366667
0.700000
0.733333
0.833333
0.800000
1
0.066667
0.066667
0.066667
0.233333
0.533333
0.300000
0.233333
0.166667
0.200000
2
0.000000
0.000000
0.000000
0.033333
0.066667
0.000000
0.033333
0.000000
0.000000
3
0.000000
0.000000
0.000000
0.000000
0.033333
0.000000
0.000000
0.000000
0.000000
4
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
8
1
base
0
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
1
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
perf
0
0.933333
1.000000
0.966667
0.833333
0.766667
0.933333
0.700000
1.000000
0.966667
1
0.066667
0.000000
0.033333
0.166667
0.233333
0.066667
0.300000
0.000000
0.033333
3
base
0
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
1
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
2
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
3
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
perf
0
0.900000
1.000000
0.900000
0.366667
0.166667
0.800000
0.766667
1.000000
0.866667
1
0.100000
0.000000
0.100000
0.533333
0.333333
0.200000
0.233333
0.000000
0.133333
2
0.000000
0.000000
0.000000
0.100000
0.500000
0.000000
0.000000
0.000000
0.000000
3
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
5
base
0
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
1
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
2
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
3
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
4
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
5
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
perf
0
0.966667
0.933333
0.966667
0.533333
0.066667
0.600000
0.633333
0.600000
0.933333
1
0.033333
0.066667
0.033333
0.433333
0.300000
0.400000
0.366667
0.400000
0.066667
2
0.000000
0.000000
0.000000
0.033333
0.500000
0.000000
0.000000
0.000000
0.000000
3
0.000000
0.000000
0.000000
0.000000
0.100000
0.000000
0.000000
0.000000
0.000000
4
0.000000
0.000000
0.000000
0.000000
0.033333
0.000000
0.000000
0.000000
0.000000
5
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
116 rows × 9 columns
In [5]:
df_uni = df_uni.T; df_rea = df_rea.T
In [6]:
df_uni
Out[6]:
method
txt_comp_dist
feature
unigram
metric
euclidean
norm_dir
bbs152930
phy17301
mus1139
oot_dir
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
num_norm
num_oot
num_top
result
k
10
1
1
base
0
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
1
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
perf
0
0.266667
0.000000
0.200000
0.066667
0.000000
0.366667
0.066667
0.466667
0.300000
1
0.733333
1.000000
0.800000
0.933333
1.000000
0.633333
0.933333
0.533333
0.700000
3
base
0
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
1
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
perf
0
0.066667
0.066667
0.100000
0.000000
0.000000
0.066667
0.166667
0.300000
0.133333
1
0.933333
0.933333
0.900000
1.000000
1.000000
0.933333
0.833333
0.700000
0.866667
5
base
0
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
1
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
perf
0
0.100000
0.033333
0.100000
0.000000
0.000000
0.066667
0.033333
0.100000
0.033333
1
0.900000
0.966667
0.900000
1.000000
1.000000
0.933333
0.966667
0.900000
0.966667
4
1
base
0
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
1
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
perf
0
0.066667
0.066667
0.166667
0.133333
0.000000
0.200000
0.100000
0.266667
0.200000
1
0.933333
0.933333
0.833333
0.866667
1.000000
0.800000
0.900000
0.733333
0.800000
3
base
0
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
1
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
2
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
3
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
perf
0
0.033333
0.066667
0.066667
0.000000
0.000000
0.166667
0.133333
0.200000
0.166667
1
0.133333
0.133333
0.266667
0.133333
0.033333
0.333333
0.333333
0.333333
0.366667
2
0.300000
0.233333
0.266667
0.300000
0.133333
0.333333
0.300000
0.233333
0.200000
3
0.533333
0.566667
0.400000
0.566667
0.833333
0.166667
0.233333
0.233333
0.266667
5
base
0
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
1
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
2
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
3
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
4
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
perf
0
0.000000
0.033333
0.000000
0.000000
0.000000
0.000000
0.033333
0.000000
0.033333
...
...
...
...
...
...
...
...
...
...
...
...
...
...
80
4
5
base
4
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
perf
0
0.033333
0.000000
0.000000
0.066667
0.000000
0.300000
0.400000
0.333333
0.633333
1
0.366667
0.000000
0.033333
0.200000
0.100000
0.400000
0.366667
0.366667
0.233333
2
0.366667
0.066667
0.500000
0.533333
0.333333
0.266667
0.133333
0.233333
0.133333
3
0.233333
0.433333
0.400000
0.200000
0.466667
0.033333
0.100000
0.066667
0.000000
4
0.000000
0.500000
0.066667
0.000000
0.100000
0.000000
0.000000
0.000000
0.000000
8
1
base
0
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
1
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
perf
0
0.766667
0.533333
0.800000
0.300000
0.066667
0.733333
0.500000
0.366667
0.766667
1
0.233333
0.466667
0.200000
0.700000
0.933333
0.266667
0.500000
0.633333
0.233333
3
base
0
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
1
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
2
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
3
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
perf
0
0.066667
0.000000
0.000000
0.000000
0.000000
0.266667
0.366667
0.266667
0.233333
1
0.233333
0.000000
0.066667
0.166667
0.033333
0.533333
0.300000
0.433333
0.666667
2
0.700000
0.966667
0.933333
0.600000
0.600000
0.200000
0.300000
0.166667
0.100000
3
0.000000
0.033333
0.000000
0.233333
0.366667
0.000000
0.033333
0.133333
0.000000
5
base
0
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
1
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
2
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
3
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
4
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
5
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
perf
0
0.000000
0.000000
0.000000
0.000000
0.000000
0.133333
0.233333
0.400000
0.366667
1
0.100000
0.000000
0.266667
0.166667
0.000000
0.166667
0.333333
0.166667
0.300000
2
0.300000
0.000000
0.100000
0.266667
0.066667
0.500000
0.366667
0.300000
0.333333
3
0.400000
0.100000
0.433333
0.500000
0.400000
0.166667
0.066667
0.133333
0.000000
4
0.200000
0.900000
0.200000
0.066667
0.466667
0.033333
0.000000
0.000000
0.000000
5
0.000000
0.000000
0.000000
0.000000
0.066667
0.000000
0.000000
0.000000
0.000000
116 rows × 9 columns
In [7]:
df_rea
Out[7]:
method
txt_comp_dist
feature
readability
metric
euclidean
norm_dir
bbs152930
phy17301
mus1139
oot_dir
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
num_norm
num_oot
num_top
result
k
10
1
1
base
0
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
1
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
perf
0
0.966667
0.966667
1.000000
0.933333
0.800000
0.933333
0.933333
0.966667
1.000000
1
0.033333
0.033333
0.000000
0.066667
0.200000
0.066667
0.066667
0.033333
0.000000
3
base
0
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
1
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
0.272727
perf
0
0.633333
0.333333
0.433333
0.666667
0.300000
0.700000
0.900000
0.833333
0.933333
1
0.366667
0.666667
0.566667
0.333333
0.700000
0.300000
0.100000
0.166667
0.066667
5
base
0
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
0.545455
1
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
0.454545
perf
0
0.500000
0.233333
0.500000
0.233333
0.033333
0.166667
0.900000
0.633333
0.866667
1
0.500000
0.766667
0.500000
0.766667
0.966667
0.833333
0.100000
0.366667
0.133333
4
1
base
0
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
0.714286
1
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
0.285714
perf
0
0.833333
0.900000
0.966667
0.733333
0.633333
0.800000
0.733333
0.833333
0.933333
1
0.166667
0.100000
0.033333
0.266667
0.366667
0.200000
0.266667
0.166667
0.066667
3
base
0
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
0.329670
1
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
0.494505
2
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
0.164835
3
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
0.010989
perf
0
0.300000
0.000000
0.133333
0.033333
0.000000
0.266667
0.700000
0.666667
0.700000
1
0.466667
0.366667
0.700000
0.666667
0.366667
0.500000
0.300000
0.266667
0.300000
2
0.233333
0.633333
0.166667
0.300000
0.633333
0.233333
0.000000
0.066667
0.000000
3
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
5
base
0
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
0.125874
1
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
0.419580
2
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
0.359640
3
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
0.089910
4
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
0.004995
perf
0
0.100000
0.000000
0.266667
0.000000
0.000000
0.133333
0.500000
0.166667
0.500000
...
...
...
...
...
...
...
...
...
...
...
...
...
...
80
4
5
base
4
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
0.000003
perf
0
0.933333
0.933333
0.933333
0.733333
0.366667
0.700000
0.733333
0.833333
0.800000
1
0.066667
0.066667
0.066667
0.233333
0.533333
0.300000
0.233333
0.166667
0.200000
2
0.000000
0.000000
0.000000
0.033333
0.066667
0.000000
0.033333
0.000000
0.000000
3
0.000000
0.000000
0.000000
0.000000
0.033333
0.000000
0.000000
0.000000
0.000000
4
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
8
1
base
0
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
1
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
perf
0
0.933333
1.000000
0.966667
0.833333
0.766667
0.933333
0.700000
1.000000
0.966667
1
0.066667
0.000000
0.033333
0.166667
0.233333
0.066667
0.300000
0.000000
0.033333
3
base
0
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
0.748706
1
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
0.230371
2
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
0.020413
3
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
0.000510
perf
0
0.900000
1.000000
0.900000
0.366667
0.166667
0.800000
0.766667
1.000000
0.866667
1
0.100000
0.000000
0.100000
0.533333
0.333333
0.200000
0.233333
0.000000
0.133333
2
0.000000
0.000000
0.000000
0.100000
0.500000
0.000000
0.000000
0.000000
0.000000
3
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
5
base
0
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
0.613645
1
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
0.322971
2
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
0.058722
3
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
0.004517
4
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
0.000143
5
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
0.000001
perf
0
0.966667
0.933333
0.966667
0.533333
0.066667
0.600000
0.633333
0.600000
0.933333
1
0.033333
0.066667
0.033333
0.433333
0.300000
0.400000
0.366667
0.400000
0.066667
2
0.000000
0.000000
0.000000
0.033333
0.500000
0.000000
0.000000
0.000000
0.000000
3
0.000000
0.000000
0.000000
0.000000
0.100000
0.000000
0.000000
0.000000
0.000000
4
0.000000
0.000000
0.000000
0.000000
0.033333
0.000000
0.000000
0.000000
0.000000
5
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
116 rows × 9 columns
Now we already have the same index for the two DataFrames, so we can safely join them into one.
In [8]:
df = df_uni.join(df_rea)
df.head()
Out[8]:
method
txt_comp_dist
feature
unigram
readability
metric
euclidean
euclidean
norm_dir
bbs152930
phy17301
mus1139
bbs152930
phy17301
mus1139
oot_dir
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
num_norm
num_oot
num_top
result
k
10
1
1
base
0
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
1
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
perf
0
0.266667
0.000000
0.200000
0.066667
0.000000
0.366667
0.066667
0.466667
0.300000
0.966667
0.966667
1.000000
0.933333
0.800000
0.933333
0.933333
0.966667
1.000000
1
0.733333
1.000000
0.800000
0.933333
1.000000
0.633333
0.933333
0.533333
0.700000
0.033333
0.033333
0.000000
0.066667
0.200000
0.066667
0.066667
0.033333
0.000000
3
base
0
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
The table is very large, so that was the truncated version. Now, let's reorder the column levels to make it prettier.
In [9]:
df = df.reorder_levels(['method', 'metric', 'feature', 'norm_dir', 'oot_dir'], axis=1)
df.head()
Out[9]:
method
txt_comp_dist
metric
euclidean
feature
unigram
readability
norm_dir
bbs152930
phy17301
mus1139
bbs152930
phy17301
mus1139
oot_dir
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
bbs57549
mus10142
phy40008
num_norm
num_oot
num_top
result
k
10
1
1
base
0
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
0.909091
1
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
0.090909
perf
0
0.266667
0.000000
0.200000
0.066667
0.000000
0.366667
0.066667
0.466667
0.300000
0.966667
0.966667
1.000000
0.933333
0.800000
0.933333
0.933333
0.966667
1.000000
1
0.733333
1.000000
0.800000
0.933333
1.000000
0.633333
0.933333
0.533333
0.700000
0.033333
0.033333
0.000000
0.066667
0.200000
0.066667
0.066667
0.033333
0.000000
3
base
0
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
0.727273
Great. Let's aggregate the result by averaging over all threads. We would like to see how well each feature performs.
In [10]:
df2 = df.groupby(axis=1, level=['method', 'metric', 'feature']).mean()
df2
Out[10]:
method
txt_comp_dist
metric
euclidean
feature
readability
unigram
num_norm
num_oot
num_top
result
k
10
1
1
base
0
0.909091
0.909091
1
0.090909
0.090909
perf
0
0.944444
0.192593
1
0.055556
0.807407
3
base
0
0.727273
0.727273
1
0.272727
0.272727
perf
0
0.637037
0.100000
1
0.362963
0.900000
5
base
0
0.545455
0.545455
1
0.454545
0.454545
perf
0
0.451852
0.051852
1
0.548148
0.948148
4
1
base
0
0.714286
0.714286
1
0.285714
0.285714
perf
0
0.818519
0.133333
1
0.181481
0.866667
3
base
0
0.329670
0.329670
1
0.494505
0.494505
2
0.164835
0.164835
3
0.010989
0.010989
perf
0
0.311111
0.092593
1
0.437037
0.229630
2
0.251852
0.255556
3
0.000000
0.422222
5
base
0
0.125874
0.125874
1
0.419580
0.419580
2
0.359640
0.359640
3
0.089910
0.089910
4
0.004995
0.004995
perf
0
0.185185
0.011111
...
...
...
...
...
...
...
80
4
5
base
4
0.000003
0.000003
perf
0
0.774074
0.196296
1
0.207407
0.229630
2
0.014815
0.285185
3
0.003704
0.214815
4
0.000000
0.074074
8
1
base
0
0.909091
0.909091
1
0.090909
0.090909
perf
0
0.900000
0.537037
1
0.100000
0.462963
3
base
0
0.748706
0.748706
1
0.230371
0.230371
2
0.020413
0.020413
3
0.000510
0.000510
perf
0
0.751852
0.133333
1
0.181481
0.270370
2
0.066667
0.507407
3
0.000000
0.088889
5
base
0
0.613645
0.613645
1
0.322971
0.322971
2
0.058722
0.058722
3
0.004517
0.004517
4
0.000143
0.000143
5
0.000001
0.000001
perf
0
0.692593
0.125926
1
0.233333
0.166667
2
0.059259
0.248148
3
0.011111
0.244444
4
0.003704
0.207407
5
0.000000
0.007407
116 rows × 2 columns
This is pretty much the summary of our result. Let's plot it so we can see clearly the distribution.
In [11]:
df3 = df2.unstack(level='result')
df3
Out[11]:
method
txt_comp_dist
metric
euclidean
feature
readability
unigram
result
base
perf
base
perf
num_norm
num_oot
num_top
k
10
1
1
0
0.909091
0.944444
0.909091
0.192593
1
0.090909
0.055556
0.090909
0.807407
3
0
0.727273
0.637037
0.727273
0.100000
1
0.272727
0.362963
0.272727
0.900000
5
0
0.545455
0.451852
0.545455
0.051852
1
0.454545
0.548148
0.454545
0.948148
4
1
0
0.714286
0.818519
0.714286
0.133333
1
0.285714
0.181481
0.285714
0.866667
3
0
0.329670
0.311111
0.329670
0.092593
1
0.494505
0.437037
0.494505
0.229630
2
0.164835
0.251852
0.164835
0.255556
3
0.010989
0.000000
0.010989
0.422222
5
0
0.125874
0.185185
0.125874
0.011111
1
0.419580
0.370370
0.419580
0.137037
2
0.359640
0.281481
0.359640
0.225926
3
0.089910
0.148148
0.089910
0.300000
4
0.004995
0.014815
0.004995
0.325926
8
1
0
0.555556
0.696296
0.555556
0.100000
1
0.444444
0.303704
0.444444
0.900000
3
0
0.147059
0.207407
0.147059
0.033333
1
0.441176
0.311111
0.441176
0.200000
2
0.343137
0.470370
0.343137
0.333333
3
0.068627
0.011111
0.068627
0.433333
5
0
0.029412
0.092593
0.029412
0.011111
1
0.196078
0.229630
0.196078
0.088889
2
0.392157
0.266667
0.392157
0.162963
3
0.294118
0.259259
0.294118
0.333333
4
0.081699
0.151852
0.081699
0.259259
5
0.006536
0.000000
0.006536
0.144444
80
1
1
0
0.987654
0.988889
0.987654
0.844444
1
0.012346
0.011111
0.012346
0.155556
3
0
0.962963
0.959259
0.962963
0.507407
1
0.037037
0.040741
0.037037
0.492593
5
0
0.938272
0.955556
0.938272
0.470370
1
0.061728
0.044444
0.061728
0.529630
4
1
0
0.952381
0.944444
0.952381
0.637037
1
0.047619
0.055556
0.047619
0.362963
3
0
0.862264
0.825926
0.862264
0.240741
1
0.132656
0.155556
0.132656
0.411111
2
0.005038
0.018519
0.005038
0.325926
3
0.000042
0.000000
0.000042
0.022222
5
0
0.778699
0.774074
0.778699
0.196296
1
0.204921
0.207407
0.204921
0.229630
2
0.015968
0.014815
0.015968
0.285185
3
0.000409
0.003704
0.000409
0.214815
4
0.000003
0.000000
0.000003
0.074074
8
1
0
0.909091
0.900000
0.909091
0.537037
1
0.090909
0.100000
0.090909
0.462963
3
0
0.748706
0.751852
0.748706
0.133333
1
0.230371
0.181481
0.230371
0.270370
2
0.020413
0.066667
0.020413
0.507407
3
0.000510
0.000000
0.000510
0.088889
5
0
0.613645
0.692593
0.613645
0.125926
1
0.322971
0.233333
0.322971
0.166667
2
0.058722
0.059259
0.058722
0.248148
3
0.004517
0.011111
0.004517
0.244444
4
0.000143
0.003704
0.000143
0.207407
5
0.000001
0.000000
0.000001
0.007407
We see that for each feature, the baseline is the same so let's remove it.
In [12]:
df4 = df3.T.drop_duplicates().T
df4
Out[12]:
method
txt_comp_dist
metric
euclidean
feature
readability
unigram
result
base
perf
perf
num_norm
num_oot
num_top
k
10
1
1
0
0.909091
0.944444
0.192593
1
0.090909
0.055556
0.807407
3
0
0.727273
0.637037
0.100000
1
0.272727
0.362963
0.900000
5
0
0.545455
0.451852
0.051852
1
0.454545
0.548148
0.948148
4
1
0
0.714286
0.818519
0.133333
1
0.285714
0.181481
0.866667
3
0
0.329670
0.311111
0.092593
1
0.494505
0.437037
0.229630
2
0.164835
0.251852
0.255556
3
0.010989
0.000000
0.422222
5
0
0.125874
0.185185
0.011111
1
0.419580
0.370370
0.137037
2
0.359640
0.281481
0.225926
3
0.089910
0.148148
0.300000
4
0.004995
0.014815
0.325926
8
1
0
0.555556
0.696296
0.100000
1
0.444444
0.303704
0.900000
3
0
0.147059
0.207407
0.033333
1
0.441176
0.311111
0.200000
2
0.343137
0.470370
0.333333
3
0.068627
0.011111
0.433333
5
0
0.029412
0.092593
0.011111
1
0.196078
0.229630
0.088889
2
0.392157
0.266667
0.162963
3
0.294118
0.259259
0.333333
4
0.081699
0.151852
0.259259
5
0.006536
0.000000
0.144444
80
1
1
0
0.987654
0.988889
0.844444
1
0.012346
0.011111
0.155556
3
0
0.962963
0.959259
0.507407
1
0.037037
0.040741
0.492593
5
0
0.938272
0.955556
0.470370
1
0.061728
0.044444
0.529630
4
1
0
0.952381
0.944444
0.637037
1
0.047619
0.055556
0.362963
3
0
0.862264
0.825926
0.240741
1
0.132656
0.155556
0.411111
2
0.005038
0.018519
0.325926
3
0.000042
0.000000
0.022222
5
0
0.778699
0.774074
0.196296
1
0.204921
0.207407
0.229630
2
0.015968
0.014815
0.285185
3
0.000409
0.003704
0.214815
4
0.000003
0.000000
0.074074
8
1
0
0.909091
0.900000
0.537037
1
0.090909
0.100000
0.462963
3
0
0.748706
0.751852
0.133333
1
0.230371
0.181481
0.270370
2
0.020413
0.066667
0.507407
3
0.000510
0.000000
0.088889
5
0
0.613645
0.692593
0.125926
1
0.322971
0.233333
0.166667
2
0.058722
0.059259
0.248148
3
0.004517
0.011111
0.244444
4
0.000143
0.003704
0.207407
5
0.000001
0.000000
0.007407
Okay, now the data is ready to be plot! We will group each plot by the random event, i.e. num_norm
, num_oot
, and num_top
.
Here is the version with the legend displayed.
In [13]:
grouped = df4.groupby(level=['num_norm', 'num_oot', 'num_top'])
for name, group in grouped:
group.plot(kind='bar', ylim=(0.,2.), use_index=False, title='num_norm={}, num_oot={}, num_top={}'.format(*name))
The legend is kind of annoying so let's just remove it. Remember that blue, green, and red represents the baseline, readability features, and unigram features respectively.
In [14]:
for name, group in grouped:
group.plot(kind='bar', ylim=(0.,1.), legend=False, use_index=False, title='num_norm={}, num_oot={}, num_top={}'.format(*name))
Now it is easier to compare the three of them. Unigram features is the winner here though the performance is still bad. For instance, take a look the case where the number of normal and OOT posts are 80 and 4 respectively and we have 5 posts in top list. The probability of finding zero or only one OOT post in the top list is still high. We expect that, with the large number of normal posts, it will be easier to detect the OOT posts. But this is not the case. We need to improve on this.
Lastly, we will compare their expected values for each random event.
In [15]:
gr = df3.groupby(level=['num_norm', 'num_oot', 'num_top'])
ngroup = len(gr)
data = np.empty((ngroup, 3))
index = []
for i, (name, _) in enumerate(grouped):
tmp = df3.loc[name]
prod = tmp.T * np.array(tmp.index) # multiply pmf and support
prod = prod.unstack(level='result')
expval = prod.sum(axis=1, level='result')
expval = expval.unstack(level='feature').drop(('base', 'readability'), axis=1).values.ravel()
data[i,:] = expval
index.append(name)
In [16]:
data
Out[16]:
array([[ 0.09090909, 0.05555556, 0.80740741],
[ 0.27272727, 0.36296296, 0.9 ],
[ 0.45454545, 0.54814815, 0.94814815],
[ 0.28571429, 0.18148148, 0.86666667],
[ 0.85714286, 0.94074074, 2.00740741],
[ 1.42857143, 1.43703704, 2.79259259],
[ 0.44444444, 0.3037037 , 0.9 ],
[ 1.33333333, 1.28518519, 2.16666667],
[ 2.22222222, 2.14814815, 3.17407407],
[ 0.01234568, 0.01111111, 0.15555556],
[ 0.03703704, 0.04074074, 0.49259259],
[ 0.0617284 , 0.04444444, 0.52962963],
[ 0.04761905, 0.05555556, 0.36296296],
[ 0.14285714, 0.19259259, 1.12962963],
[ 0.23809524, 0.24814815, 1.74074074],
[ 0.09090909, 0.1 , 0.46296296],
[ 0.27272727, 0.31481481, 1.55185185],
[ 0.45454545, 0.4 , 2.26296296]])
In [17]:
index = pd.MultiIndex.from_tuples(index, names=['num_norm', 'num_oot', 'num_top'])
columns = pd.MultiIndex.from_tuples([('E[X]', 'base'), ('E[X]', 'readability'), ('E[X]', 'unigram')])
In [18]:
result = pd.DataFrame(data, index=index, columns=columns)
result
Out[18]:
E[X]
base
readability
unigram
num_norm
num_oot
num_top
10
1
1
0.090909
0.055556
0.807407
3
0.272727
0.362963
0.900000
5
0.454545
0.548148
0.948148
4
1
0.285714
0.181481
0.866667
3
0.857143
0.940741
2.007407
5
1.428571
1.437037
2.792593
8
1
0.444444
0.303704
0.900000
3
1.333333
1.285185
2.166667
5
2.222222
2.148148
3.174074
80
1
1
0.012346
0.011111
0.155556
3
0.037037
0.040741
0.492593
5
0.061728
0.044444
0.529630
4
1
0.047619
0.055556
0.362963
3
0.142857
0.192593
1.129630
5
0.238095
0.248148
1.740741
8
1
0.090909
0.100000
0.462963
3
0.272727
0.314815
1.551852
5
0.454545
0.400000
2.262963
Done! From the table it is obvious that unigram features outperforms both baseline and readability features.
Content source: kemskems/otdet
Similar notebooks: