Classification

In [90]:
import numpy
import urllib
import scipy.optimize
import random
from sklearn import svm # Library for SVM classification
from sklearn import linear_model # Logistic Regression (among other things)
import ast
In [91]:
def parseData(fname):
  for l in urllib.urlopen(fname):
    yield eval(l)
In [92]:
def parseDataFromFile(fname):
  for l in open(fname):
    yield eval(l)
In [ ]:
data1 = list(parseDataFromFile("C:/Users/Julian McAuley/Documents/class_files/book_descriptions_50000.json"))
In [93]:
data2 = list(parseDataFromFile("C:/Users/Julian McAuley/Documents/class_files/book_images_5000.json"))
In [ ]:
data = data1
In [ ]:
data[2]

Priors...

p(label)

In [ ]:
prior = ["Children's Books" in d['categories'] for d in data]
prior = sum(prior) / len(prior)
In [ ]:
prior
In [ ]:
prior_neg = 1 - prior
In [ ]:
prior_neg

p(wizard in description | Children's Book)

In [ ]:
p1 = ["wizard" in b['description'] for b in data
      if "Children's Books" in b['categories']]
p1 = sum(p1) / len(p1)
In [ ]:
p1
In [ ]:
p1_neg = ["wizard" in b['description'] for b in data
         if not ("Children's Books" in b['categories'])]
p1_neg = sum(p1_neg) / len(p1_neg)
In [ ]:
p1_neg

p(witch in description | Children's Book)

In [ ]:
p2 = ["witch" in b['description'] for b in data if "Children's Books" in b['categories']]
p2 = sum(p2) * 1.0 / len(p2)
In [ ]:
p2
In [ ]:
p2_neg = ["witch" in b['description'] for b in data if not "Children's Books" in b['categories']]
p2_neg = sum(p2_neg) * 1.0 / len(p2_neg)
In [ ]:
p2_neg
In [ ]:
score = prior * p1 * p2
score_neg = prior_neg * p1_neg * p2_neg
In [ ]:
score / score_neg
In [ ]:
p = ["Children's Books" in b['categories'] for b in data if
     'witch' in b['description'] and 'wizard' in b['description']]
p = sum(p) * 1.0 / len(p)
In [ ]:
p / (1 - p)

Classification - Judging a book by its cover

In [94]:
data = data2
In [95]:
data[0]
Out[95]:
{'asin/ID': '1573110639',
 'url': 'http://www.amazon.com/dp/1573110639',
 'description': 'one of the worlds great reference books newsweek',
 'categories': ['New',
  'Politics & Social Sciences',
  'Science & Math',
  'Education & Reference'],
 'image_feature': [1.1288000345230103,
  0.0,
  0.0,
  5.031199932098389,
  0.0,
  0.0,
  0.5083000063896179,
  0.0,
  0.0,
  1.666200041770935,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  2.7147998809814453,
  0.0,
  0.3750999867916107,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.5286999940872192,
  0.0,
  2.8366000652313232,
  0.07240000367164612,
  0.0,
  1.7832000255584717,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  2.4688000679016113,
  0.0,
  0.0,
  0.0,
  0.7116000056266785,
  0.25369998812675476,
  0.0,
  0.0,
  0.0,
  0.0,
  0.8133999705314636,
  0.0,
  2.268699884414673,
  0.8822000026702881,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  1.3970999717712402,
  0.0,
  0.11129999905824661,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  4.669000148773193,
  0.0,
  0.0,
  0.0,
  0.6687999963760376,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  2.6171998977661133,
  5.061500072479248,
  2.614300012588501,
  0.9009000062942505,
  4.316400051116943,
  0.0,
  0.996399998664856,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  3.3631999492645264,
  0.15369999408721924,
  0.0,
  0.0,
  0.0,
  0.0,
  4.521200180053711,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  3.031100034713745,
  2.316699981689453,
  0.0,
  1.6821999549865723,
  0.042500000447034836,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.4887000024318695,
  0.4077000021934509,
  0.0,
  0.0,
  0.0,
  0.0,
  1.610700011253357,
  5.457600116729736,
  0.0,
  3.180299997329712,
  3.7537999153137207,
  0.0,
  0.0,
  0.0,
  0.0,
  1.2355999946594238,
  0.0,
  0.0,
  0.0,
  0.44859999418258667,
  0.0,
  2.481800079345703,
  0.0,
  3.6438000202178955,
  3.4014999866485596,
  0.0,
  0.0,
  1.3844000101089478,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  2.1526999473571777,
  3.9235000610351562,
  0.0,
  0.6601999998092651,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  2.409600019454956,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.3059000074863434,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.9603000283241272,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.582099974155426,
  3.8956000804901123,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  1.2973999977111816,
  0.0,
  0.7268000245094299,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  2.1744000911712646,
  1.6971999406814575,
  1.5746999979019165,
  0.0,
  0.0,
  0.0,
  2.025599956512451,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.2720000147819519,
  3.092099905014038,
  0.0,
  0.0,
  0.0,
  3.6623001098632812,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.22300000488758087,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  1.048799991607666,
  0.5090000033378601,
  0.0,
  0.0012000000569969416,
  0.9927999973297119,
  0.0,
  1.7107000350952148,
  0.0,
  0.0,
  2.1045000553131104,
  0.0,
  0.298799991607666,
  2.625499963760376,
  0.2711000144481659,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  1.9378999471664429,
  0.0,
  0.20640000700950623,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.06289999932050705,
  0.4715999960899353,
  0.0,
  0.0,
  0.0,
  0.0,
  3.073899984359741,
  0.0,
  1.062399983406067,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.4388999938964844,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  2.7385001182556152,
  0.0,
  0.0,
  0.0,
  1.5520000457763672,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.2581000030040741,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.21289999783039093,
  6.52269983291626,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  1.7409000396728516,
  0.0,
  0.0,
  0.0,
  0.0,
  2.4853999614715576,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  2.456399917602539,
  1.3860000371932983,
  0.0,
  0.0,
  0.0,
  0.0,
  3.748800039291382,
  5.037700176239014,
  3.2139999866485596,
  0.0,
  0.09889999777078629,
  0.0,
  0.0,
  5.586699962615967,
  6.66349983215332,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.944100022315979,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  4.027200222015381,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  3.1944000720977783,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.20479999482631683,
  0.4846000075340271,
  1.4106999635696411,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  1.2418999671936035,
  0.0,
  0.4961000084877014,
  1.2853000164031982,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  3.320199966430664,
  0.0,
  2.3278000354766846,
  1.0742000341415405,
  2.198899984359741,
  0.0,
  0.0,
  0.35519999265670776,
  0.6432999968528748,
  0.0,
  1.4128999710083008,
  0.0,
  0.0,
  0.0,
  0.0,
  0.007000000216066837,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.7901999950408936,
  0.0,
  2.1017000675201416,
  0.0,
  0.0,
  0.0,
  2.0957999229431152,
  0.0,
  3.3468000888824463,
  0.0,
  0.0,
  0.0,
  0.0,
  1.5295000076293945,
  4.02810001373291,
  3.1191000938415527,
  0.0,
  0.04450000077486038,
  1.5097999572753906,
  0.0,
  0.0,
  3.227799892425537,
  1.2000000476837158,
  0.0,
  0.0,
  1.465399980545044,
  0.8173999786376953,
  0.0,
  3.112499952316284,
  0.0,
  0.0,
  0.680899977684021,
  3.5350000858306885,
  0.21170000731945038,
  0.0,
  0.0,
  2.6598000526428223,
  0.0,
  0.0,
  3.114799976348877,
  0.0,
  3.694700002670288,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  6.7677998542785645,
  0.0,
  0.0,
  0.0,
  3.4700000286102295,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.7547000050544739,
  0.0,
  0.0,
  1.0044000148773193,
  0.0,
  0.0,
  0.0,
  0.1500999927520752,
  0.0,
  0.0,
  0.19750000536441803,
  2.855600118637085,
  0.0,
  4.5167999267578125,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  1.430899977684021,
  0.0,
  0.0,
  0.0,
  0.10279999673366547,
  2.448199987411499,
  0.0,
  0.0,
  2.6019999980926514,
  0.0,
  1.4150999784469604,
  0.0,
  3.308000087738037,
  0.0,
  0.0,
  0.0,
  3.300299882888794,
  0.0,
  0.0,
  0.0,
  0.0,
  3.321899890899658,
  6.156599998474121,
  2.5129001140594482,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.00930000003427267,
  0.0,
  0.0,
  0.0,
  2.0820000171661377,
  0.0,
  0.0,
  1.568600058555603,
  0.0,
  0.0,
  2.359499931335449,
  0.0,
  0.0,
  0.33180001378059387,
  0.0,
  0.0,
  1.4678000211715698,
  0.0,
  0.7188000082969666,
  0.0,
  0.0,
  0.0,
  0.0,
  0.9185000061988831,
  0.0,
  1.6998000144958496,
  0.0,
  0.0,
  0.0,
  4.110599994659424,
  0.0,
  0.0,
  0.0,
  0.0,
  0.13359999656677246,
  0.0,
  1.2720999717712402,
  3.387500047683716,
  0.0,
  0.0,
  0.0,
  0.0,
  0.2224999964237213,
  0.0,
  0.0,
  3.6600000858306885,
  2.0469000339508057,
  0.0,
  0.0,
  0.0,
  0.0,
  0.8659999966621399,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  4.730599880218506,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.3425999879837036,
  1.0614999532699585,
  0.0,
  0.0,
  1.767300009727478,
  0.0,
  2.3326001167297363,
  0.0,
  3.6435999870300293,
  3.4238998889923096,
  0.0,
  0.0,
  0.3750999867916107,
  0.0,
  0.0,
  0.0,
  3.2486000061035156,
  0.0,
  5.17549991607666,
  5.763700008392334,
  0.0,
  3.9030001163482666,
  0.0,
  0.0,
  5.33650016784668,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  2.2144999504089355,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.22210000455379486,
  1.229699969291687,
  3.7121999263763428,
  0.0,
  0.0,
  0.0,
  2.0841000080108643,
  0.0,
  0.0,
  0.0,
  0.0,
  3.2351999282836914,
  0.3991999924182892,
  3.004499912261963,
  1.90339994430542,
  1.6711000204086304,
  0.0,
  0.0,
  6.048799991607666,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  2.1566998958587646,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.9495999813079834,
  0.0,
  0.0,
  0.0,
  3.436300039291382,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  2.3694000244140625,
  0.0,
  1.9491000175476074,
  0.9994000196456909,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.017100000753998756,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  2.902600049972534,
  1.9157999753952026,
  0.0,
  0.0,
  0.0,
  2.4844000339508057,
  0.0,
  0.7396000027656555,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  9.982600212097168,
  0.0,
  0.0,
  5.115200042724609,
  3.1465001106262207,
  0.12839999794960022,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.1655000001192093,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.16580000519752502,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  3.0162999629974365,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.06780000030994415,
  0.7382000088691711,
  0.0,
  0.5608000159263611,
  0.3246000111103058,
  0.0,
  0.0,
  0.9391999840736389,
  0.0,
  1.1324000358581543,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  1.409600019454956,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.12790000438690186,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.34769999980926514,
  0.0,
  0.0,
  0.3230000138282776,
  0.9639000296592712,
  3.115000009536743,
  0.0,
  0.0,
  0.0,
  0.5748000144958496,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  1.5753999948501587,
  4.771900177001953,
  0.0,
  3.355600118637085,
  0.0,
  0.0,
  0.5684999823570251,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  1.323699951171875,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.54339998960495,
  0.0,
  4.92519998550415,
  0.0013000000035390258,
  0.0,
  0.12030000239610672,
  3.781100034713745,
  2.0141000747680664,
  1.104200005531311,
  0.21050000190734863,
  0.0,
  2.376199960708618,
  0.0,
  0.0,
  0.6455000042915344,
  0.6747000217437744,
  0.26330000162124634,
  0.0,
  1.3583999872207642,
  0.0,
  0.0,
  2.6345999240875244,
  0.0,
  0.0,
  0.0,
  0.0,
  0.10320000350475311,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  2.4263999462127686,
  0.0,
  0.062300000339746475,
  0.0,
  0.0,
  1.2417999505996704,
  0.0,
  2.250200033187866,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  2.5915000438690186,
  0.0,
  0.0,
  0.0,
  0.0,
  2.482100009918213,
  1.0356999635696411,
  0.0,
  0.3091000020503998,
  3.4881999492645264,
  0.0,
  0.0,
  0.0,
  1.5706000328063965,
  0.0,
  0.0,
  0.0,
  0.0,
  4.341400146484375,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  1.1411000490188599,
  0.0,
  0.7858999967575073,
  3.214200019836426,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.7221999764442444,
  0.0,
  0.0,
  2.1303000450134277,
  2.6951000690460205,
  0.0,
  0.0,
  0.0,
  0.0,
  1.4142999649047852,
  2.0550999641418457,
  3.257999897003174,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.049400001764297485,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.5530999898910522,
  0.0,
  0.0,
  0.08510000258684158,
  1.2936999797821045,
  3.5964999198913574,
  0.6341000199317932,
  0.0,
  0.82669997215271,
  0.0,
  0.5914999842643738,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  0.0,
  ...]}
In [96]:
data[0]['image_feature']
Out[96]:
[1.1288000345230103,
 0.0,
 0.0,
 5.031199932098389,
 0.0,
 0.0,
 0.5083000063896179,
 0.0,
 0.0,
 1.666200041770935,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 2.7147998809814453,
 0.0,
 0.3750999867916107,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.5286999940872192,
 0.0,
 2.8366000652313232,
 0.07240000367164612,
 0.0,
 1.7832000255584717,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 2.4688000679016113,
 0.0,
 0.0,
 0.0,
 0.7116000056266785,
 0.25369998812675476,
 0.0,
 0.0,
 0.0,
 0.0,
 0.8133999705314636,
 0.0,
 2.268699884414673,
 0.8822000026702881,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 1.3970999717712402,
 0.0,
 0.11129999905824661,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 4.669000148773193,
 0.0,
 0.0,
 0.0,
 0.6687999963760376,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 2.6171998977661133,
 5.061500072479248,
 2.614300012588501,
 0.9009000062942505,
 4.316400051116943,
 0.0,
 0.996399998664856,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 3.3631999492645264,
 0.15369999408721924,
 0.0,
 0.0,
 0.0,
 0.0,
 4.521200180053711,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 3.031100034713745,
 2.316699981689453,
 0.0,
 1.6821999549865723,
 0.042500000447034836,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.4887000024318695,
 0.4077000021934509,
 0.0,
 0.0,
 0.0,
 0.0,
 1.610700011253357,
 5.457600116729736,
 0.0,
 3.180299997329712,
 3.7537999153137207,
 0.0,
 0.0,
 0.0,
 0.0,
 1.2355999946594238,
 0.0,
 0.0,
 0.0,
 0.44859999418258667,
 0.0,
 2.481800079345703,
 0.0,
 3.6438000202178955,
 3.4014999866485596,
 0.0,
 0.0,
 1.3844000101089478,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 2.1526999473571777,
 3.9235000610351562,
 0.0,
 0.6601999998092651,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 2.409600019454956,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.3059000074863434,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.9603000283241272,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.582099974155426,
 3.8956000804901123,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 1.2973999977111816,
 0.0,
 0.7268000245094299,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 2.1744000911712646,
 1.6971999406814575,
 1.5746999979019165,
 0.0,
 0.0,
 0.0,
 2.025599956512451,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.2720000147819519,
 3.092099905014038,
 0.0,
 0.0,
 0.0,
 3.6623001098632812,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.22300000488758087,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 1.048799991607666,
 0.5090000033378601,
 0.0,
 0.0012000000569969416,
 0.9927999973297119,
 0.0,
 1.7107000350952148,
 0.0,
 0.0,
 2.1045000553131104,
 0.0,
 0.298799991607666,
 2.625499963760376,
 0.2711000144481659,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 1.9378999471664429,
 0.0,
 0.20640000700950623,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.06289999932050705,
 0.4715999960899353,
 0.0,
 0.0,
 0.0,
 0.0,
 3.073899984359741,
 0.0,
 1.062399983406067,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.4388999938964844,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 2.7385001182556152,
 0.0,
 0.0,
 0.0,
 1.5520000457763672,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.2581000030040741,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.21289999783039093,
 6.52269983291626,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 1.7409000396728516,
 0.0,
 0.0,
 0.0,
 0.0,
 2.4853999614715576,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 2.456399917602539,
 1.3860000371932983,
 0.0,
 0.0,
 0.0,
 0.0,
 3.748800039291382,
 5.037700176239014,
 3.2139999866485596,
 0.0,
 0.09889999777078629,
 0.0,
 0.0,
 5.586699962615967,
 6.66349983215332,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.944100022315979,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 4.027200222015381,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 3.1944000720977783,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.20479999482631683,
 0.4846000075340271,
 1.4106999635696411,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 1.2418999671936035,
 0.0,
 0.4961000084877014,
 1.2853000164031982,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 3.320199966430664,
 0.0,
 2.3278000354766846,
 1.0742000341415405,
 2.198899984359741,
 0.0,
 0.0,
 0.35519999265670776,
 0.6432999968528748,
 0.0,
 1.4128999710083008,
 0.0,
 0.0,
 0.0,
 0.0,
 0.007000000216066837,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.7901999950408936,
 0.0,
 2.1017000675201416,
 0.0,
 0.0,
 0.0,
 2.0957999229431152,
 0.0,
 3.3468000888824463,
 0.0,
 0.0,
 0.0,
 0.0,
 1.5295000076293945,
 4.02810001373291,
 3.1191000938415527,
 0.0,
 0.04450000077486038,
 1.5097999572753906,
 0.0,
 0.0,
 3.227799892425537,
 1.2000000476837158,
 0.0,
 0.0,
 1.465399980545044,
 0.8173999786376953,
 0.0,
 3.112499952316284,
 0.0,
 0.0,
 0.680899977684021,
 3.5350000858306885,
 0.21170000731945038,
 0.0,
 0.0,
 2.6598000526428223,
 0.0,
 0.0,
 3.114799976348877,
 0.0,
 3.694700002670288,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 6.7677998542785645,
 0.0,
 0.0,
 0.0,
 3.4700000286102295,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.7547000050544739,
 0.0,
 0.0,
 1.0044000148773193,
 0.0,
 0.0,
 0.0,
 0.1500999927520752,
 0.0,
 0.0,
 0.19750000536441803,
 2.855600118637085,
 0.0,
 4.5167999267578125,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 1.430899977684021,
 0.0,
 0.0,
 0.0,
 0.10279999673366547,
 2.448199987411499,
 0.0,
 0.0,
 2.6019999980926514,
 0.0,
 1.4150999784469604,
 0.0,
 3.308000087738037,
 0.0,
 0.0,
 0.0,
 3.300299882888794,
 0.0,
 0.0,
 0.0,
 0.0,
 3.321899890899658,
 6.156599998474121,
 2.5129001140594482,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.00930000003427267,
 0.0,
 0.0,
 0.0,
 2.0820000171661377,
 0.0,
 0.0,
 1.568600058555603,
 0.0,
 0.0,
 2.359499931335449,
 0.0,
 0.0,
 0.33180001378059387,
 0.0,
 0.0,
 1.4678000211715698,
 0.0,
 0.7188000082969666,
 0.0,
 0.0,
 0.0,
 0.0,
 0.9185000061988831,
 0.0,
 1.6998000144958496,
 0.0,
 0.0,
 0.0,
 4.110599994659424,
 0.0,
 0.0,
 0.0,
 0.0,
 0.13359999656677246,
 0.0,
 1.2720999717712402,
 3.387500047683716,
 0.0,
 0.0,
 0.0,
 0.0,
 0.2224999964237213,
 0.0,
 0.0,
 3.6600000858306885,
 2.0469000339508057,
 0.0,
 0.0,
 0.0,
 0.0,
 0.8659999966621399,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 4.730599880218506,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.3425999879837036,
 1.0614999532699585,
 0.0,
 0.0,
 1.767300009727478,
 0.0,
 2.3326001167297363,
 0.0,
 3.6435999870300293,
 3.4238998889923096,
 0.0,
 0.0,
 0.3750999867916107,
 0.0,
 0.0,
 0.0,
 3.2486000061035156,
 0.0,
 5.17549991607666,
 5.763700008392334,
 0.0,
 3.9030001163482666,
 0.0,
 0.0,
 5.33650016784668,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 2.2144999504089355,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.22210000455379486,
 1.229699969291687,
 3.7121999263763428,
 0.0,
 0.0,
 0.0,
 2.0841000080108643,
 0.0,
 0.0,
 0.0,
 0.0,
 3.2351999282836914,
 0.3991999924182892,
 3.004499912261963,
 1.90339994430542,
 1.6711000204086304,
 0.0,
 0.0,
 6.048799991607666,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 2.1566998958587646,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.9495999813079834,
 0.0,
 0.0,
 0.0,
 3.436300039291382,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 2.3694000244140625,
 0.0,
 1.9491000175476074,
 0.9994000196456909,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.017100000753998756,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 2.902600049972534,
 1.9157999753952026,
 0.0,
 0.0,
 0.0,
 2.4844000339508057,
 0.0,
 0.7396000027656555,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 9.982600212097168,
 0.0,
 0.0,
 5.115200042724609,
 3.1465001106262207,
 0.12839999794960022,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.1655000001192093,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.16580000519752502,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 3.0162999629974365,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.06780000030994415,
 0.7382000088691711,
 0.0,
 0.5608000159263611,
 0.3246000111103058,
 0.0,
 0.0,
 0.9391999840736389,
 0.0,
 1.1324000358581543,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 1.409600019454956,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.12790000438690186,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.34769999980926514,
 0.0,
 0.0,
 0.3230000138282776,
 0.9639000296592712,
 3.115000009536743,
 0.0,
 0.0,
 0.0,
 0.5748000144958496,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 1.5753999948501587,
 4.771900177001953,
 0.0,
 3.355600118637085,
 0.0,
 0.0,
 0.5684999823570251,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 1.323699951171875,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.54339998960495,
 0.0,
 4.92519998550415,
 0.0013000000035390258,
 0.0,
 0.12030000239610672,
 3.781100034713745,
 2.0141000747680664,
 1.104200005531311,
 0.21050000190734863,
 0.0,
 2.376199960708618,
 0.0,
 0.0,
 0.6455000042915344,
 0.6747000217437744,
 0.26330000162124634,
 0.0,
 1.3583999872207642,
 0.0,
 0.0,
 2.6345999240875244,
 0.0,
 0.0,
 0.0,
 0.0,
 0.10320000350475311,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 2.4263999462127686,
 0.0,
 0.062300000339746475,
 0.0,
 0.0,
 1.2417999505996704,
 0.0,
 2.250200033187866,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 2.5915000438690186,
 0.0,
 0.0,
 0.0,
 0.0,
 2.482100009918213,
 1.0356999635696411,
 0.0,
 0.3091000020503998,
 3.4881999492645264,
 0.0,
 0.0,
 0.0,
 1.5706000328063965,
 0.0,
 0.0,
 0.0,
 0.0,
 4.341400146484375,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 1.1411000490188599,
 0.0,
 0.7858999967575073,
 3.214200019836426,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.7221999764442444,
 0.0,
 0.0,
 2.1303000450134277,
 2.6951000690460205,
 0.0,
 0.0,
 0.0,
 0.0,
 1.4142999649047852,
 2.0550999641418457,
 3.257999897003174,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.049400001764297485,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.5530999898910522,
 0.0,
 0.0,
 0.08510000258684158,
 1.2936999797821045,
 3.5964999198913574,
 0.6341000199317932,
 0.0,
 0.82669997215271,
 0.0,
 0.5914999842643738,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 ...]
In [97]:
X = [b['image_feature'] for b in data]
y = ["Children's Books" in b['categories'] for b in data]
In [98]:
X_train = X[:len(X)//2]
y_train = y[:len(y)//2]

X_test = X[len(X)//2:]
y_test = y[len(y)//2:]
In [99]:
mod = linear_model.LogisticRegression(C=1.0)
mod.fit(X_train, y_train)
C:\Users\Julian McAuley\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.
  FutureWarning)
Out[99]:
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                   intercept_scaling=1, l1_ratio=None, max_iter=100,
                   multi_class='warn', n_jobs=None, penalty='l2',
                   random_state=None, solver='warn', tol=0.0001, verbose=0,
                   warm_start=False)
In [100]:
train_predictions = mod.predict(X_train)
test_predictions = mod.predict(X_test)
In [102]:
# accuracy
sum(test_predictions == y_test) / len(y_test)
Out[102]:
0.9456
In [103]:
y_false = numpy.array([False for b in y_test])
In [104]:
# accuracy when predicting "false" always
sum(y_false == y_test) / len(y_test)
Out[104]:
0.962

Diagnostics

In [105]:
f = open("C:/users/Julian McAuley/Documents/class_files/bankruptcy.arff", 'r')
In [106]:
while not '@data' in f.readline():
    pass
In [107]:
dataset = []
for l in f:
    if '?' in l: # Missing entry
        continue
    l = l.split(',')
    values = [1] + [float(x) for x in l]
    values[-1] = values[-1] > 0 # Convert to bool
    dataset.append(values)
In [108]:
dataset[0]
Out[108]:
[1,
 0.088238,
 0.55472,
 0.01134,
 1.0205,
 -66.52,
 0.34204,
 0.10949,
 0.57752,
 1.0881,
 0.32036,
 0.10949,
 0.1976,
 0.096885,
 0.10949,
 1475.2,
 0.24742,
 1.8027,
 0.10949,
 0.077287,
 50.199,
 1.1574,
 0.13523,
 0.062287,
 0.41949,
 0.32036,
 0.20912,
 1.0387,
 0.026093,
 6.1267,
 0.37788,
 0.077287,
 155.33,
 2.3498,
 0.24377,
 0.13523,
 1.4493,
 571.37,
 0.32101,
 0.095457,
 0.12879,
 0.11189,
 0.095457,
 127.3,
 77.096,
 0.45289,
 0.66883,
 54.621,
 0.10746,
 0.075859,
 1.0193,
 0.55407,
 0.42557,
 0.73717,
 0.73866,
 15182.0,
 0.080955,
 0.27543,
 0.91905,
 0.002024,
 7.2711,
 4.7343,
 142.76,
 2.5568,
 3.2597,
 False]

Data setup

In [109]:
X = [d[:-1] for d in dataset]
y = [d[-1] for d in dataset]

Fit model

In [110]:
mod = linear_model.LogisticRegression(C=1.0)
mod.fit(X,y)
C:\Users\Julian McAuley\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.
  FutureWarning)
C:\Users\Julian McAuley\Anaconda3\lib\site-packages\sklearn\svm\base.py:929: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
  "the number of iterations.", ConvergenceWarning)
Out[110]:
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                   intercept_scaling=1, l1_ratio=None, max_iter=100,
                   multi_class='warn', n_jobs=None, penalty='l2',
                   random_state=None, solver='warn', tol=0.0001, verbose=0,
                   warm_start=False)
In [111]:
pred = mod.predict(X)
In [112]:
sum(pred == y) / len(y)
Out[112]:
0.9663477400197954
In [113]:
sum(y)
Out[113]:
102
In [114]:
len(y)
Out[114]:
3031
In [116]:
1 - 102/3031
Out[116]:
0.9663477400197954
In [117]:
sum(pred)
Out[117]:
6

Balanced model

In [118]:
mod = linear_model.LogisticRegression(C=1.0, class_weight = 'balanced')
In [119]:
mod.fit(X,y)
C:\Users\Julian McAuley\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.
  FutureWarning)
C:\Users\Julian McAuley\Anaconda3\lib\site-packages\sklearn\svm\base.py:929: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
  "the number of iterations.", ConvergenceWarning)
Out[119]:
LogisticRegression(C=1.0, class_weight='balanced', dual=False,
                   fit_intercept=True, intercept_scaling=1, l1_ratio=None,
                   max_iter=100, multi_class='warn', n_jobs=None, penalty='l2',
                   random_state=None, solver='warn', tol=0.0001, verbose=0,
                   warm_start=False)
In [120]:
pred = mod.predict(X)
In [121]:
sum(pred == y) / len(y)
Out[121]:
0.7832398548333883
In [122]:
# How many positive predictions?
sum(pred)
Out[122]:
717

Train/validation/test splits

In [128]:
Xy = list(zip(X,y))
In [130]:
random.shuffle(Xy)
In [131]:
X = [d[0] for d in Xy]
y = [d[1] for d in Xy]
In [132]:
N = len(y)
In [133]:
Ntrain = 1000
Nvalid = 1000
Ntest = 1031
In [134]:
Xtrain = X[:Ntrain]
Xvalid = X[Ntrain:Ntrain+Nvalid]
Xtest = X[Ntrain+Nvalid:]
In [135]:
ytrain = y[:Ntrain]
yvalid = y[Ntrain:Ntrain+Nvalid]
ytest = y[Ntrain+Nvalid:]
In [136]:
mod.fit(Xtrain, ytrain)
C:\Users\Julian McAuley\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.
  FutureWarning)
C:\Users\Julian McAuley\Anaconda3\lib\site-packages\sklearn\svm\base.py:929: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
  "the number of iterations.", ConvergenceWarning)
Out[136]:
LogisticRegression(C=1.0, class_weight='balanced', dual=False,
                   fit_intercept=True, intercept_scaling=1, l1_ratio=None,
                   max_iter=100, multi_class='warn', n_jobs=None, penalty='l2',
                   random_state=None, solver='warn', tol=0.0001, verbose=0,
                   warm_start=False)

TP, TN, FP, FN, Accuracy, BER

In [137]:
pred = mod.predict(Xtest)
In [138]:
correct = pred == ytest
In [139]:
TP_ = numpy.logical_and(pred, ytest)
FP_ = numpy.logical_and(pred, numpy.logical_not(ytest))
TN_ = numpy.logical_and(numpy.logical_not(pred), numpy.logical_not(ytest))
FN_ = numpy.logical_and(numpy.logical_not(pred), ytest)
In [140]:
TP = sum(TP_)
FP = sum(FP_)
TN = sum(TN_)
FN = sum(FN_)
In [141]:
# accuracy
(TP + TN) / (TP + FP + TN + FN)
Out[141]:
0.8225024248302619
In [142]:
sum(correct) / len(correct)
Out[142]:
0.8225024248302619
In [143]:
# BER
1 - 0.5*(TP / (TP + FN) + TN / (TN + FP))
Out[143]:
0.34074209024108826

Ranking

In [144]:
scores = mod.decision_function(Xtest)
In [145]:
scores
Out[145]:
array([-0.77318466, -0.6581161 , -0.74149623, ..., -1.49607527,
       -0.9291817 , -2.65867657])
In [146]:
scoreslabels = list(zip(scores, ytest))
In [147]:
scoreslabels.sort(reverse=True)
In [149]:
scoreslabels
Out[149]:
[(20.439690291835287, False),
 (10.536847009816965, False),
 (9.712626998807286, False),
 (9.350710846782384, False),
 (7.842395225958438, True),
 (6.590474486739286, False),
 (6.588524732892533, True),
 (6.563726773813434, True),
 (5.548059989828498, False),
 (5.086841630348562, True),
 (4.944642526610214, False),
 (4.812316405708574, False),
 (4.794276730123465, False),
 (4.682747379455137, False),
 (4.447623205890571, False),
 (4.270804186374323, False),
 (4.250184212734646, False),
 (3.653335776879337, False),
 (3.4889521877721066, False),
 (3.46355933019042, False),
 (3.436463001668359, False),
 (3.4198634136702504, False),
 (3.414794145540118, False),
 (3.3293044674274617, False),
 (2.8361222975502187, False),
 (2.7104095419137417, False),
 (2.6999387473570358, False),
 (2.6954739311264393, False),
 (2.6059531284300865, False),
 (2.5506396164399265, False),
 (2.497613947591135, False),
 (2.434104441480049, False),
 (2.2011681176010027, False),
 (2.1749874671742964, True),
 (2.1429001000034615, False),
 (2.128629410669162, False),
 (2.0999768236815903, False),
 (2.0973254705451456, False),
 (2.068227232165933, True),
 (1.9417112988497989, False),
 (1.8153992079559174, False),
 (1.78121930523736, False),
 (1.7661663509433003, False),
 (1.7577405639506842, False),
 (1.7488164286952066, False),
 (1.6750296820537864, False),
 (1.6488646714722406, False),
 (1.6406669019854918, False),
 (1.629949041010535, False),
 (1.5534243102301553, False),
 (1.5376218912395159, False),
 (1.452263998730836, False),
 (1.4487275493271385, False),
 (1.3573072260353842, False),
 (1.3499538140362324, False),
 (1.3096022724990901, False),
 (1.2970201213206083, False),
 (1.2036380615501159, True),
 (1.160731182201416, False),
 (1.1566925059415543, False),
 (1.1369415303164, False),
 (1.135711917064884, False),
 (1.1247552928869056, False),
 (1.1160559310842788, False),
 (1.0757711095664155, False),
 (1.0697194953536484, False),
 (1.0212621880802801, False),
 (1.0010555659688802, False),
 (0.9931309899637196, False),
 (0.9670710011054988, False),
 (0.9504253330010375, False),
 (0.9061669371901772, False),
 (0.902275140712138, False),
 (0.897029083668098, False),
 (0.8803382359410192, True),
 (0.8774651593957917, True),
 (0.8570735940573413, False),
 (0.8435559278325535, False),
 (0.8202389639995479, False),
 (0.8175013436668213, False),
 (0.7691208014969227, False),
 (0.7649339879097216, False),
 (0.7580619903770915, False),
 (0.7304242918885122, False),
 (0.7285969225610297, False),
 (0.7271553440792562, False),
 (0.7158877996136831, False),
 (0.7055115656622772, False),
 (0.6652399914972685, False),
 (0.6638501740608299, False),
 (0.6515648001825511, False),
 (0.6440290827449533, False),
 (0.6388563962373545, False),
 (0.6347467493647537, False),
 (0.6304501756632884, False),
 (0.6257120472854167, False),
 (0.6256248997197135, False),
 (0.6253825928964126, False),
 (0.5946552552408141, False),
 (0.5942693672913498, False),
 (0.5934466114989143, False),
 (0.5849770371292163, False),
 (0.5584594452964119, False),
 (0.5274540896876697, False),
 (0.5261560342287394, False),
 (0.5100545516374156, False),
 (0.503833664650226, True),
 (0.5034501952069989, False),
 (0.5023175885424878, False),
 (0.4996663630812446, False),
 (0.471399974657657, False),
 (0.4711951362142284, False),
 (0.4697193175113296, True),
 (0.45811150341459134, False),
 (0.45279713519227766, False),
 (0.44431649511520216, False),
 (0.4399187585123001, False),
 (0.43545474160451764, False),
 (0.42582714321166576, False),
 (0.42582714321166576, False),
 (0.41862410393881794, True),
 (0.41626282437075396, False),
 (0.4153005124573231, True),
 (0.40328382279587266, False),
 (0.4002776167178071, False),
 (0.3912165567395343, False),
 (0.38355363934353376, False),
 (0.379747982392543, False),
 (0.3673516135367708, False),
 (0.3672358575881713, False),
 (0.3537881080809399, False),
 (0.34271308352752455, False),
 (0.3199401756774826, False),
 (0.31447197730628024, False),
 (0.2786115535841221, False),
 (0.24848867774778632, False),
 (0.23524180405374678, True),
 (0.22458975326977543, False),
 (0.21902566717188382, False),
 (0.2148053626364616, False),
 (0.19333692825620014, False),
 (0.19028827901619244, False),
 (0.18967793231495084, False),
 (0.18725612608928627, True),
 (0.18663637747035194, False),
 (0.18556330099985469, False),
 (0.18059714854789793, False),
 (0.18033079700720883, False),
 (0.16261395594310774, False),
 (0.16044229925616876, False),
 (0.15502704323479016, False),
 (0.1533079079913881, False),
 (0.15278958325466868, False),
 (0.1518640474514164, False),
 (0.14460369857627325, True),
 (0.14270846976942447, False),
 (0.13184122322174646, False),
 (0.12873534519517377, False),
 (0.1262400534689055, False),
 (0.1200185228969622, False),
 (0.11990566104847285, False),
 (0.1173491410938869, False),
 (0.11601798497603973, False),
 (0.11158738495852456, False),
 (0.09086758292394877, False),
 (0.08774394579376617, False),
 (0.0843483609612647, False),
 (0.06678208052016128, False),
 (0.06526538814632295, False),
 (0.06380337320070358, False),
 (0.0628959812797752, False),
 (0.05737732871216035, False),
 (0.0533500815105737, False),
 (0.04304067821892417, False),
 (0.03673083793224126, False),
 (0.028229884029377827, False),
 (0.01618589852407677, False),
 (0.015681832346206747, False),
 (0.01343583649573572, False),
 (0.01019151121859847, False),
 (0.0038604049634422648, False),
 (0.0015309917579298775, False),
 (-0.005326846608138692, False),
 (-0.005845258549407695, False),
 (-0.0073581394745364966, False),
 (-0.008594891252212068, False),
 (-0.008742240732961527, False),
 (-0.01182788691315655, True),
 (-0.013717479400154931, False),
 (-0.020278286232710153, False),
 (-0.025400919599742822, False),
 (-0.027495618898958286, False),
 (-0.0341269707461143, False),
 (-0.03672024072335282, False),
 (-0.0405821932861931, False),
 (-0.04142621564200004, False),
 (-0.043820071202408314, False),
 (-0.05118999481490254, False),
 (-0.058864501109394715, False),
 (-0.0621694005924988, False),
 (-0.06367694817979234, False),
 (-0.0642213825437961, False),
 (-0.06611934510481547, False),
 (-0.0766639138365273, False),
 (-0.07952317841523664, False),
 (-0.08511127475771456, False),
 (-0.09851754918167592, False),
 (-0.10091645851964796, False),
 (-0.10147303900570341, False),
 (-0.10207599391752879, False),
 (-0.1047460125182073, False),
 (-0.10842023777772807, True),
 (-0.114885828083698, False),
 (-0.11693464397918045, False),
 (-0.12216981531994224, True),
 (-0.12421580703762773, False),
 (-0.12661696441332077, False),
 (-0.12808955367552394, False),
 (-0.13056555411935766, False),
 (-0.13349841177222138, False),
 (-0.1348680596908272, False),
 (-0.13875870418861064, False),
 (-0.14344512108895885, False),
 (-0.14405519301190445, False),
 (-0.14505347959107823, False),
 (-0.1470615379671349, False),
 (-0.14892822658008237, False),
 (-0.14898312422651733, False),
 (-0.15200832339223674, False),
 (-0.1559608979936133, False),
 (-0.16224076834674223, False),
 (-0.16294849103049996, False),
 (-0.16866923587007449, False),
 (-0.16931168824238435, False),
 (-0.1725452317500073, False),
 (-0.17544230209709016, False),
 (-0.17579076941245736, False),
 (-0.17758328419100783, False),
 (-0.17823739391143228, False),
 (-0.18246086834273528, False),
 (-0.1825156872757367, False),
 (-0.18614877687245185, False),
 (-0.18873522744981214, False),
 (-0.1888312386653475, False),
 (-0.19026352193866974, False),
 (-0.19522937068422913, False),
 (-0.1960852593554196, False),
 (-0.19681583076445391, False),
 (-0.19817906815738234, False),
 (-0.20094312621832083, False),
 (-0.21030191464237985, False),
 (-0.21174180832786088, False),
 (-0.2118162998816236, False),
 (-0.21196166264542532, False),
 (-0.21229261689733941, False),
 (-0.21229261689733941, False),
 (-0.21625335885306257, False),
 (-0.21632140253291937, False),
 (-0.2168286146934138, False),
 (-0.21823869390311362, False),
 (-0.2243258101680951, False),
 (-0.2259252340543048, False),
 (-0.22673388692551782, False),
 (-0.22793429424854994, False),
 (-0.2364731317006929, False),
 (-0.23813890183178016, False),
 (-0.2388201884371915, False),
 (-0.24155103002178574, False),
 (-0.2520916176949736, False),
 (-0.2537388284511168, False),
 (-0.25447937455188646, False),
 (-0.263776481571317, False),
 (-0.2690587759409518, False),
 (-0.27110668819558387, False),
 (-0.2763755288844257, False),
 (-0.2771115741596784, False),
 (-0.28150208308436236, False),
 (-0.2826055877856752, False),
 (-0.2838012243013797, False),
 (-0.29289898299959644, False),
 (-0.2929915034906981, False),
 (-0.29519224670747807, False),
 (-0.2954241724045877, False),
 (-0.29838658670631907, False),
 (-0.29851012596734666, False),
 (-0.3007551561209237, False),
 (-0.303203534316633, False),
 (-0.3041551945430479, False),
 (-0.3045883364667989, True),
 (-0.3070732671281942, False),
 (-0.3080587545561752, False),
 (-0.31406844078416013, False),
 (-0.31741217447703257, False),
 (-0.32189745572014566, False),
 (-0.322288313439089, False),
 (-0.3225927204651808, False),
 (-0.32502766647200504, False),
 (-0.32587474249787557, False),
 (-0.3282640809864064, False),
 (-0.33093494819894076, False),
 (-0.33179546964672507, False),
 (-0.3329891406150575, False),
 (-0.3337425882560265, False),
 (-0.33540377917828595, False),
 (-0.3354696756717798, False),
 (-0.3369056860970047, False),
 (-0.3403336108654967, False),
 (-0.3429866156529963, False),
 (-0.3478973204428139, False),
 (-0.34895798657269944, False),
 (-0.35179366802212936, True),
 (-0.35286989675174035, False),
 (-0.36118229820681497, False),
 (-0.361438207450483, False),
 (-0.3615859459644392, False),
 (-0.3630143322342951, False),
 (-0.3660899360428543, False),
 (-0.37013722328350523, False),
 (-0.37738670993883466, False),
 (-0.38026975799210067, False),
 (-0.38222531538167476, False),
 (-0.38361362681546746, False),
 (-0.3854367209261819, False),
 (-0.3855284750107916, False),
 (-0.38857583831552783, False),
 (-0.3932614240096623, False),
 (-0.3932614240096623, False),
 (-0.39769557732211475, False),
 (-0.3984737135775544, False),
 (-0.4006429222933839, False),
 (-0.405125935888265, False),
 (-0.40876344726275154, False),
 (-0.4089701780981689, False),
 (-0.41097700952200406, False),
 (-0.41266784144548424, False),
 (-0.41733671094238795, False),
 (-0.4186116151968928, False),
 (-0.42122597881726337, False),
 (-0.4215122300182484, False),
 (-0.42729180194381805, False),
 (-0.4293930797762919, False),
 (-0.43055832455938153, False),
 (-0.44017772476784506, False),
 (-0.44047514937631665, True),
 (-0.448023344524111, False),
 (-0.4507600168609435, False),
 (-0.4514599619633714, False),
 (-0.45710003332992094, False),
 (-0.4601466926104562, False),
 (-0.4656180147868691, False),
 (-0.46751665789306024, False),
 (-0.4691272574310173, False),
 (-0.4704440087841146, False),
 (-0.48205696695349115, False),
 (-0.4838366103541964, False),
 (-0.4876433475379584, False),
 (-0.4908117705490242, False),
 (-0.49215480448586185, False),
 (-0.4942971552053624, False),
 (-0.49768876921298205, False),
 (-0.5047122759353965, False),
 (-0.5056118662731026, False),
 (-0.5111692667037541, False),
 (-0.513064790190295, False),
 (-0.5162201821117074, False),
 (-0.5163791271058297, False),
 (-0.5222780900974302, False),
 (-0.5241003346064361, False),
 (-0.5242306998386619, False),
 (-0.5253761953382056, False),
 (-0.5293088361792764, False),
 (-0.5310714130925484, False),
 (-0.5320593167557309, False),
 (-0.5326515505748183, False),
 (-0.5354805822604378, False),
 (-0.53982593603982, False),
 (-0.5399085518896685, False),
 (-0.5404668756968156, False),
 (-0.544126705904088, False),
 (-0.544237915646925, False),
 (-0.5442844143261566, False),
 (-0.5446584806333102, False),
 (-0.5451720235292786, False),
 (-0.5494019009398161, False),
 (-0.5494451712757752, False),
 (-0.5504384292625798, False),
 (-0.5514737345791855, False),
 (-0.5530009794438481, False),
 (-0.5545792445015048, False),
 (-0.5576874740093597, False),
 (-0.5587939073235798, False),
 (-0.5589046217567794, False),
 (-0.5599508087681878, True),
 (-0.5600290117760681, False),
 (-0.5626618110708619, False),
 (-0.5636128277489284, False),
 (-0.5643025955140877, False),
 (-0.568297308654824, False),
 (-0.5687426424897856, False),
 (-0.5780797873757622, False),
 (-0.5811052305569518, True),
 (-0.5828910520406794, False),
 (-0.5964778005782398, False),
 (-0.5970376060420576, False),
 (-0.5984260523727455, False),
 (-0.6007284957543769, False),
 (-0.6053756911248288, False),
 (-0.6058770576525324, False),
 (-0.6059579044173601, False),
 (-0.6088328432537594, False),
 (-0.6107613022118006, False),
 (-0.611385072186254, False),
 (-0.6141849916628276, False),
 (-0.6147199102593998, False),
 (-0.6162694548103146, False),
 (-0.6187037080634274, False),
 (-0.6204675453151599, False),
 (-0.6257125441242303, False),
 (-0.6261635948478464, False),
 (-0.6302838630691764, False),
 (-0.6328184055543222, False),
 (-0.6406387636542755, False),
 (-0.6467684293823793, False),
 (-0.6476317315937602, False),
 (-0.6481975463067436, False),
 (-0.6494731678363154, False),
 (-0.6495017226203122, False),
 (-0.65107207738971, False),
 (-0.6581161003064352, False),
 (-0.6611070517279084, False),
 (-0.6613504412554558, False),
 (-0.6624434702937713, False),
 (-0.6625577852955788, False),
 (-0.6658551777248816, False),
 (-0.6772885537767656, False),
 (-0.6783259441430184, False),
 (-0.6785226771946491, False),
 (-0.6816024633078608, False),
 (-0.6869932356831291, False),
 (-0.6888847062966604, False),
 (-0.6888885529068246, False),
 (-0.6905980469580043, False),
 (-0.6907123725306461, False),
 (-0.6910903363990487, False),
 (-0.6912654045047237, False),
 (-0.6968930615747274, False),
 (-0.6977027603523863, False),
 (-0.7004700010741872, False),
 (-0.7017124753114972, False),
 (-0.7017662107765275, False),
 (-0.7096312689787697, False),
 (-0.7100990285457476, False),
 (-0.7131302038028762, False),
 (-0.7139176560820724, False),
 (-0.7146474100707702, False),
 (-0.7151794997364306, False),
 (-0.7160008702411359, False),
 (-0.7235307050987102, False),
 (-0.7246041676336791, False),
 (-0.727620760876509, False),
 (-0.732166174985056, False),
 (-0.7322296321190058, False),
 (-0.7391577403484771, False),
 (-0.7414962327352971, False),
 (-0.7467203314286849, False),
 (-0.7480162875978967, True),
 (-0.7493443486969235, False),
 (-0.750756313055343, True),
 (-0.7549029487205251, False),
 (-0.7549132089665395, False),
 (-0.7559845044132038, False),
 (-0.759282076577053, False),
 (-0.7603016330043026, False),
 (-0.7610740585341226, False),
 (-0.7624034685179492, False),
 (-0.7650950466814926, False),
 (-0.7662353061936727, False),
 (-0.7731846627383959, False),
 (-0.7739083723073411, False),
 (-0.7748704209968567, False),
 (-0.7770217824527562, False),
 (-0.7780798492539435, False),
 (-0.7784124410577016, False),
 (-0.7785700063949001, False),
 (-0.7841961676321246, False),
 (-0.792255146833155, False),
 (-0.7927749405264584, False),
 (-0.7995723159716553, False),
 (-0.7995881885626465, False),
 (-0.8014465197223478, False),
 (-0.803428696474504, False),
 (-0.8060755957107749, False),
 (-0.8116837842251, False),
 (-0.8118802079275164, False),
 (-0.8130955201727662, False),
 (-0.8137756764643126, False),
 (-0.8152016848466287, False),
 (-0.8158530913349548, False),
 (-0.8169024811918814, False),
 (-0.8182427700293795, False),
 (-0.8210418268091162, False),
 (-0.830815404923422, False),
 (-0.8337868212088989, False),
 (-0.8338677954484258, False),
 (-0.8344754688154089, False),
 (-0.8351977372612719, False),
 (-0.8376112108065056, False),
 (-0.8394715050088238, False),
 (-0.8422520055517567, False),
 (-0.8425739239657324, False),
 (-0.8435026690771555, False),
 (-0.8443853419871717, False),
 (-0.8504387035753771, False),
 (-0.8512312763436874, False),
 (-0.8515448789242929, False),
 (-0.8525617894016498, False),
 (-0.8542826518903376, False),
 (-0.854863781963476, False),
 (-0.8557470828305092, False),
 (-0.8570268539289602, False),
 (-0.8583081761629864, False),
 (-0.8587424644554136, False),
 (-0.8590681046343585, False),
 (-0.8616001319784767, False),
 (-0.8639708202116494, False),
 (-0.8658247361390482, False),
 (-0.8662539128128942, False),
 (-0.8726609971862885, False),
 (-0.8735196738637526, False),
 (-0.874549381935645, False),
 (-0.8913937071837247, False),
 (-0.8928078143895873, False),
 (-0.893397332951867, False),
 (-0.8948824422073636, True),
 (-0.8968934178792368, False),
 (-0.8998680596344103, False),
 (-0.9022764903350884, False),
 (-0.9023469100770147, False),
 (-0.9039483468420354, False),
 (-0.9060671924918996, False),
 (-0.9107217548371174, False),
 (-0.911714947798607, False),
 (-0.9137026764248156, False),
 (-0.9137026764248156, False),
 (-0.9165328105763423, False),
 (-0.9199209622051631, False),
 (-0.9199209622051631, False),
 (-0.9206491168514335, False),
 (-0.9209427763833378, False),
 (-0.9210610865096335, False),
 (-0.9211187535208375, False),
 (-0.9212996355884703, False),
 (-0.9221933181538035, False),
 (-0.9227171931347528, False),
 (-0.9248716839760648, False),
 (-0.925304294881682, False),
 (-0.9260259509000943, False),
 (-0.9280630340722671, False),
 (-0.9291816986758895, False),
 (-0.931614717994567, False),
 (-0.931932079602992, False),
 (-0.9325805898991719, False),
 (-0.940065483155411, False),
 (-0.9448853064657904, False),
 (-0.9452791381862927, False),
 (-0.9461536848658748, False),
 (-0.9528320357869797, False),
 (-0.9539453507345642, False),
 (-0.9559074994455182, False),
 (-0.9561044752407224, False),
 (-0.9561057795841866, False),
 (-0.9611662843123256, False),
 (-0.961199885252647, False),
 (-0.963048030629715, False),
 (-0.9668900090591028, False),
 (-0.9702457106397747, False),
 (-0.9786993666066164, False),
 (-0.9804250493708088, False),
 (-0.9831083881679575, False),
 (-0.9849714083006732, False),
 (-0.9875729086387314, True),
 (-0.9908805396865171, False),
 (-1.0016662695260212, False),
 (-1.0027175740330267, False),
 (-1.0029929888477684, False),
 (-1.0041300691743538, False),
 (-1.0064518050716351, False),
 (-1.0085932929326649, False),
 (-1.011556446089964, False),
 (-1.0132747730263232, False),
 (-1.0140189726099207, False),
 (-1.0147211016478335, False),
 (-1.0167895655257977, False),
 (-1.0173113569396195, False),
 (-1.0180888148604579, False),
 (-1.019390235354333, False),
 (-1.0253244398700287, False),
 (-1.0261518441070203, False),
 (-1.028373247414609, False),
 (-1.0285990215228091, False),
 (-1.0293555957566365, False),
 (-1.0329286264216688, False),
 (-1.0374715248868691, False),
 (-1.04181490803839, False),
 (-1.0424215637279748, False),
 (-1.0425063762774276, False),
 (-1.0505116480970107, False),
 (-1.0570281472731242, False),
 (-1.0604904861445617, False),
 (-1.0629424844380002, False),
 (-1.0647508255010583, False),
 (-1.0683265388283476, False),
 (-1.0685331656535244, False),
 (-1.0711548150216887, False),
 (-1.0755950657805653, False),
 (-1.0768540299736469, False),
 (-1.0797577344944969, False),
 (-1.0875798041798876, False),
 (-1.088352189285993, False),
 (-1.0898559985951828, False),
 (-1.0916531919767478, False),
 (-1.0916563861477098, False),
 (-1.0932483432449231, False),
 (-1.094428066314502, False),
 (-1.096368242046655, False),
 (-1.1011163288423016, False),
 (-1.101503441944394, False),
 (-1.1035833341441068, False),
 (-1.1056884370676408, True),
 (-1.1124225208258238, False),
 (-1.1135679252188415, False),
 (-1.1135699413299114, False),
 (-1.115614174717576, False),
 (-1.1168280409732028, False),
 (-1.1206836291165043, False),
 (-1.1225808831964625, False),
 (-1.122745934425099, False),
 (-1.1262823460947111, False),
 (-1.129313054081981, False),
 (-1.1299019133751336, False),
 (-1.1309306069970513, False),
 (-1.1309634560403445, False),
 (-1.1340696816016513, False),
 (-1.1344863133498402, False),
 (-1.1351732163285282, False),
 (-1.136693701829338, False),
 (-1.1367307701894627, False),
 (-1.1416045110191524, False),
 (-1.1451200093970506, False),
 (-1.1451795943740928, False),
 (-1.1461110170786526, False),
 (-1.1480625523190224, False),
 (-1.1509623692613653, False),
 (-1.1527679380374176, False),
 (-1.1543663361676004, False),
 (-1.1550474202254826, False),
 (-1.1583244716046444, False),
 (-1.1583320687959962, False),
 (-1.161521012627348, False),
 (-1.1663684544213138, False),
 (-1.1738061241581295, False),
 (-1.1815883562235974, False),
 (-1.185874782349265, False),
 (-1.189357143593979, False),
 (-1.19756035280128, False),
 (-1.2043679718329046, False),
 (-1.2087316214581814, False),
 (-1.2224200689780291, False),
 (-1.2249520324679146, False),
 (-1.2269594962345165, False),
 (-1.2311174834872, False),
 (-1.2321655686183497, False),
 (-1.2355084249039217, False),
 (-1.237045210480303, False),
 (-1.240184307066401, False),
 (-1.2429152942464443, False),
 (-1.2437519158267158, False),
 (-1.248322367813722, False),
 (-1.2509307260932516, False),
 (-1.2516774825265191, False),
 (-1.2539504106422337, False),
 (-1.2572277171935675, False),
 (-1.261383810088744, False),
 (-1.2629586998483968, False),
 (-1.2643544836422798, False),
 (-1.2647367850339488, False),
 (-1.2666800430091414, False),
 (-1.269021694345098, False),
 (-1.2701766923638935, False),
 (-1.2811515497058572, False),
 (-1.2816684361031192, False),
 (-1.282070134978876, False),
 (-1.2873903501262847, False),
 (-1.292195343234849, False),
 (-1.2921997270742591, False),
 (-1.2940593779240712, False),
 (-1.2940890501264848, False),
 (-1.2941561160005244, False),
 (-1.297179439697483, False),
 (-1.2981275334507285, False),
 (-1.3009245842470825, False),
 (-1.30115959806089, False),
 (-1.3037041288348425, False),
 (-1.304308844375449, False),
 (-1.3061283812818525, False),
 (-1.3080616541172692, False),
 (-1.3110280998138113, False),
 (-1.3111610530228743, False),
 (-1.314752807509659, False),
 (-1.314973353331453, False),
 (-1.3152533644201974, False),
 (-1.3175484134025375, False),
 (-1.3182298163800885, False),
 (-1.3182336839941964, False),
 (-1.3184553566455397, False),
 (-1.3193040147454225, False),
 (-1.3199867751662109, False),
 (-1.322403421193602, False),
 (-1.3229065611825057, False),
 (-1.324547147369313, False),
 (-1.3261913120417488, False),
 (-1.3263241173966884, False),
 (-1.3263403978224988, False),
 (-1.335188075778897, False),
 (-1.335755933617167, False),
 (-1.3375754086916491, False),
 (-1.339233880086771, False),
 (-1.339399880003946, False),
 (-1.3404934967545294, False),
 (-1.3408139154171241, False),
 (-1.349575701915085, False),
 (-1.3510287455698875, False),
 (-1.3522100090035336, False),
 (-1.3539892380774692, False),
 (-1.3548382815645232, False),
 (-1.355458932961714, False),
 (-1.357701049169288, False),
 (-1.3598398500416011, False),
 (-1.36161201066007, False),
 (-1.3627185107884823, False),
 (-1.3628668830338893, False),
 (-1.3646106213230538, False),
 (-1.3753359730537777, False),
 (-1.3835026789885139, False),
 (-1.3853521149337447, False),
 (-1.3863936100725103, False),
 (-1.3985000552942959, False),
 (-1.4043889147754476, False),
 (-1.4145618672908427, False),
 (-1.4156277512322797, False),
 (-1.4183209171445939, False),
 (-1.4187395154035072, False),
 (-1.4220326507965162, False),
 (-1.4224704323190798, False),
 (-1.4226096836285862, False),
 (-1.4274961876129484, False),
 (-1.434861532604284, False),
 (-1.4362340390191228, False),
 (-1.4412552888375265, False),
 (-1.442159093697734, False),
 (-1.4447008440450588, False),
 (-1.4447811512075612, True),
 (-1.4455434697012752, False),
 (-1.4535206887766368, False),
 (-1.4699614945878334, False),
 (-1.4732876066837186, False),
 (-1.482787730727202, False),
 (-1.4866765503129644, False),
 (-1.490521077555874, False),
 (-1.4960752659994285, False),
 (-1.4984450940664988, False),
 (-1.506044793209555, False),
 (-1.5077564181791092, False),
 (-1.5081600467420535, False),
 (-1.5116361752122922, False),
 (-1.5174727860535984, False),
 (-1.5194326440544825, False),
 (-1.5216179031031825, False),
 (-1.522755742420331, False),
 (-1.5241647398167892, False),
 (-1.5243925367608209, False),
 (-1.5297325360724654, False),
 (-1.5299141629939332, False),
 (-1.5447112348962122, False),
 (-1.545461893196867, False),
 (-1.5482245620914825, False),
 (-1.5525811805625702, False),
 (-1.5567290682801578, False),
 (-1.5589272517377264, False),
 (-1.5590600846299258, False),
 (-1.5600439909429187, False),
 (-1.5606547359800995, False),
 (-1.570565388809289, False),
 (-1.583827708426644, False),
 (-1.585923996586403, False),
 (-1.5972485061325203, False),
 (-1.6093763997123047, False),
 (-1.6104487266897318, False),
 (-1.6154500349904382, False),
 (-1.6184828593351164, False),
 (-1.6240269351421752, False),
 (-1.6254911879468965, False),
 (-1.6315527493909427, True),
 (-1.6320453945057645, False),
 (-1.6441232912653523, True),
 (-1.6446647248185504, False),
 (-1.6475025488199457, False),
 (-1.6501857992356825, False),
 (-1.6555511977599506, False),
 (-1.6604456359600654, False),
 (-1.6609308979753405, False),
 (-1.661178013992007, False),
 (-1.6689758799087162, False),
 (-1.6706371914475033, False),
 (-1.680448890893705, False),
 (-1.6824292816793482, False),
 (-1.6828447325745897, False),
 (-1.6932231230358639, False),
 (-1.6966269120254232, False),
 (-1.6984350426017538, False),
 (-1.7073641975587286, False),
 (-1.7167041529687916, False),
 (-1.71847709371588, False),
 (-1.7429502749917605, False),
 (-1.7430387614740273, False),
 (-1.7467014425144138, False),
 (-1.7482903941195485, False),
 (-1.752847240485698, False),
 (-1.7532883044664214, False),
 (-1.7556934383793954, False),
 (-1.7572994688556596, False),
 (-1.7576442248542286, False),
 (-1.7616968474148855, False),
 (-1.7633103297978563, False),
 (-1.766180491639474, False),
 (-1.777059161131302, False),
 (-1.7820712800621015, False),
 (-1.7830290840827971, False),
 (-1.7897043660318463, False),
 (-1.7897451173801233, False),
 (-1.7902464128981308, False),
 (-1.7908734565887046, False),
 (-1.7928505104767674, False),
 (-1.796268015382621, False),
 (-1.8045196246098687, False),
 (-1.804768830016215, False),
 (-1.8048265676926003, False),
 (-1.8124823432356945, False),
 (-1.8172838671659521, False),
 (-1.8208543149716885, False),
 (-1.8253480309264876, False),
 (-1.8339547000234742, False),
 (-1.834207915660924, False),
 (-1.856959704587049, False),
 (-1.8824267924059674, False),
 (-1.8844299577480048, False),
 (-1.888485007760523, False),
 (-1.89346504214343, False),
 (-1.8958034026572117, False),
 (-1.8981000229571043, False),
 (-1.9010297868974866, False),
 (-1.904217679533705, False),
 (-1.91425321161344, False),
 (-1.9145812606198764, False),
 (-1.916456015896466, False),
 (-1.9172476661048754, False),
 (-1.9194729082280655, False),
 (-1.922297617901891, False),
 (-1.9284706099858493, False),
 (-1.928682996906054, False),
 (-1.9309142312038725, False),
 (-1.9316281869269256, False),
 (-1.935695054991426, False),
 (-1.9401334403294608, False),
 (-1.9421405035969086, False),
 (-1.9540700016188075, False),
 (-1.9556445838215768, False),
 (-1.9815429774596576, False),
 (-2.020779418417639, False),
 (-2.0364779056446802, False),
 (-2.046629857529031, False),
 (-2.048303244036184, False),
 (-2.0492675892786902, False),
 (-2.0539697380649664, False),
 (-2.0549110697615536, False),
 (-2.058263143051653, False),
 (-2.06289406402689, False),
 (-2.069806097437745, False),
 (-2.070703311355545, False),
 (-2.0806923173515774, False),
 (-2.087890213414356, False),
 (-2.088470387889995, False),
 (-2.109196801371947, False),
 (-2.1105393721546486, False),
 (-2.1183774587302158, False),
 (-2.1234142900710893, False),
 (-2.1432338911820463, False),
 (-2.1558305175376393, False),
 (-2.160415045987561, False),
 (-2.1667734520159936, False),
 (-2.1676708137127774, False),
 (-2.1735313076518237, False),
 (-2.1761234303961587, False),
 (-2.177326502153692, False),
 (-2.1793233922482558, False),
 (-2.1887175515126556, False),
 (-2.1903508722289446, False),
 (-2.1942052286919353, False),
 (-2.219869872251606, False),
 (-2.2265657796323852, False),
 (-2.2275805930498143, False),
 (-2.2301365956762447, False),
 (-2.2451209077801355, False),
 (-2.2502129688094605, False),
 (-2.255136661841937, False),
 (-2.2565946129445367, False),
 (-2.2572897368289992, False),
 (-2.2714809577080253, False),
 (-2.289828285265026, False),
 (-2.3164304577766304, False),
 (-2.330729443483513, False),
 (-2.331275552836373, False),
 (-2.335515953922336, False),
 (-2.340402378046755, False),
 (-2.3439604823425455, False),
 (-2.352591490132575, False),
 (-2.380699172724076, False),
 (-2.381945778961854, False),
 (-2.3835180335131176, False),
 (-2.4185997348831174, False),
 (-2.428600777548535, False),
 (-2.444077138604406, False),
 (-2.446800766998599, False),
 (-2.4634042724158283, False),
 (-2.479822798316745, False),
 (-2.483642914001816, False),
 (-2.4875596859787237, False),
 (-2.495712357403808, False),
 (-2.5213340368186854, False),
 (-2.533348578231944, False),
 (-2.544061289836426, False),
 (-2.626703272950352, False),
 (-2.6317824642311223, False),
 (-2.6586765671557346, False),
 (-2.6666059473597725, False),
 (-2.689388825070101, False),
 (-2.6947246060224144, False),
 (-2.697677205079241, False),
 (-2.7577684987979088, False),
 (-2.770512016125826, False),
 (-2.7931201886466903, False),
 (-2.8053202615041823, False),
 (-2.906581714758805, False),
 (-2.925519476144884, False),
 (-2.9260608410680127, False),
 (-2.965971681512678, False),
 (-2.9870240495608478, False),
 (-2.9898623798952784, False),
 (-3.0078048968130386, False),
 (-3.042699161537272, False),
 (-3.058989637786622, False),
 (-3.079410438728683, False),
 (-3.117738641123952, False),
 (-3.1500588141252086, False),
 (-3.209386239426071, False),
 (-3.24375067119107, False),
 (-3.2484134845924864, False),
 (-3.2868942030640675, False),
 (-3.289493126500747, False),
 (-3.3786976064770107, False),
 (-3.384390229729479, False),
 (-3.420305972101707, False),
 (-3.440411178841785, False),
 (-3.5129078330014827, False),
 (-3.5474683388353236, False),
 (-3.5873570374688715, False),
 (-3.59665967115345, True),
 (-3.6239298318161364, False),
 (-3.630973293714873, False),
 (-3.6610521317019535, False),
 (-3.741783339281283, False),
 (-3.781720334589931, False),
 (-3.8221490018164843, False),
 (-3.884293813310686, False),
 (-3.944149197637573, False),
 (-3.973183219128778, False),
 (-3.9954428761007694, False),
 (-4.063335383050847, False),
 (-4.089198939347299, False),
 (-4.183489633752729, False),
 (-4.192599580963616, False),
 (-4.214039303890771, False),
 (-4.235958081985595, False),
 (-4.303548819666131, False),
 (-4.336673810667023, False),
 (-4.3598947110625135, False),
 (-4.548708688590777, False),
 (-4.651349281464104, False),
 (-4.68621279116234, False),
 (-4.740483073132025, False),
 ...]
In [150]:
sortedlabels = [x[1] for x in scoreslabels]
In [151]:
sortedlabels
Out[151]:
[False,
 False,
 False,
 False,
 True,
 False,
 True,
 True,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 True,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 False,
 ...]
In [157]:
# precision
retrieved = sum(pred)
relevant = sum(ytest)
intersection = sum([y and p for y,p in zip(ytest,pred)])
In [158]:
intersection / retrieved
Out[158]:
0.08791208791208792
In [159]:
# recall
intersection / relevant
Out[159]:
0.48484848484848486
In [160]:
# precision at 10
sum(sortedlabels[:10]) / 10
Out[160]:
0.4