|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329 |
- {
- "cells": [
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "--- This is a classification problem ---\n",
- "\n",
- "1. Loading dataset from file...\n",
- "\n",
- "2. Calculating gram matrices. This could take a while...\n",
- "\n",
- "gram matrix with parameters {'cycle_bound': 0.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 343.86it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 21244.89it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.2045283317565918 seconds ---\n",
- "ignored, as it contains elements that are not numbers.\n",
- "\n",
- "gram matrix with parameters {'cycle_bound': 15.0} is: \n",
- "retrieve patterns: 59%|█████▉ | 40/68 [00:00<00:00, 395.79it/s]"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "../gklearn/utils/model_selection_precomputed.py:100: RuntimeWarning: invalid value encountered in double_scalars\n",
- " Kmatrix[i][j] /= np.sqrt(Kmatrix_diag[i] * Kmatrix_diag[j])\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 316.68it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 24327.25it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.22021913528442383 seconds ---\n",
- "ignored, as it contains elements that are not numbers.\n",
- "\n",
- "gram matrix with parameters {'cycle_bound': 30.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 292.05it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 17256.33it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.23883295059204102 seconds ---\n",
- "ignored, as it contains elements that are not numbers.\n",
- "\n",
- "gram matrix with parameters {'cycle_bound': 45.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 225.59it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 18294.59it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.3069877624511719 seconds ---\n",
- "ignored, as it contains elements that are not numbers.\n",
- "\n",
- "gram matrix with parameters {'cycle_bound': 60.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 204.51it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 13404.74it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.3404123783111572 seconds ---\n",
- "ignored, as it contains elements that are not numbers.\n",
- "\n",
- "gram matrix with parameters {'cycle_bound': 75.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 201.67it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 16315.58it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.34352850914001465 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c9a4df28>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 90.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 215.96it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 15264.26it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.3218817710876465 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c8292630>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 105.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 217.64it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 15437.76it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.31894969940185547 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c81ec080>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 120.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 224.49it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 16288.56it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.30911827087402344 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c8254ba8>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 135.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 220.17it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 17052.06it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.31484389305114746 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c81e8160>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 150.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 200.74it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 14845.55it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.3452260494232178 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c80a7a58>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 165.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 211.57it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 14155.18it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.3281748294830322 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c80ce0f0>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 180.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 192.27it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 14335.90it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.3602592945098877 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c804c320>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 195.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 206.70it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 13872.89it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.3360106945037842 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c8165c18>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 210.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 202.20it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 13666.16it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.34355878829956055 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c802d390>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 225.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 204.81it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 13638.71it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.3394050598144531 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c8225f98>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 240.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 219.97it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 15984.57it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.3156108856201172 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c07d1cf8>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 255.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 221.46it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 15386.13it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.3138573169708252 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c8152e48>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 270.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 205.02it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 15075.46it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.338550329208374 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c80a2d30>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 285.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 220.24it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 12331.39it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.3164541721343994 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c80df668>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "gram matrix with parameters {'cycle_bound': 300.0} is: \n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 205.74it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 10288.32it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.33924102783203125 seconds ---\n",
- "[[1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " [1. 1. 1. ... 0.89442719 0.89442719 0.89442719]\n",
- " ...\n",
- " [0.89442719 0.89442719 0.89442719 ... 1. 0.9 0.9 ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]\n",
- " [0.89442719 0.89442719 0.89442719 ... 0.9 1. 1. ]]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7ff0c80819b0>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "21 gram matrices are calculated, 5 of which are ignored.\n",
- "\n",
- "3. Fitting and predicting using nested cross validation. This could really take a while...\n",
- "calculate performance: 0%| | 95/19680 [00:30<1:10:46, 4.61it/s]"
- ]
- }
- ],
- "source": [
- "%load_ext line_profiler\n",
- "%matplotlib inline\n",
- "import numpy as np\n",
- "import sys\n",
- "sys.path.insert(0, \"../\")\n",
- "from gklearn.utils.model_selection_precomputed import model_selection_for_precomputed_kernel\n",
- "from gklearn.kernels.cyclicPatternKernel import cyclicpatternkernel\n",
- "\n",
- "datafile = '../../../../datasets/MAO/dataset.ds'\n",
- "estimator = cyclicpatternkernel\n",
- "param_grid_precomputed = {'cycle_bound': np.linspace(0, 300, 21)}\n",
- "param_grid = {'C': np.logspace(-1, 8, num = 41, base = 10)}\n",
- "\n",
- "model_selection_for_precomputed_kernel(datafile, estimator, param_grid_precomputed, param_grid, \n",
- " 'classification', NUM_TRIALS=30)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- " --- This is a classification problem ---\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 0.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 374.47it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 28328.63it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.18629932403564453 seconds ---\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 84%|████████▍ | 842/1000 [00:00<00:00, 2091.27it/s]\n",
- " Mean performance on train set: 0.549180\n",
- "With standard deviation: 0.016798\n",
- "\n",
- " Mean performance on test set: 0.642857\n",
- "With standard deviation: 0.146385\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 2096.30it/s]\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 25.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 287.60it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 17629.66it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.24226951599121094 seconds ---\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 83%|████████▎ | 830/1000 [00:00<00:00, 2066.27it/s]\n",
- " Mean performance on train set: 0.883607\n",
- "With standard deviation: 0.018619\n",
- "\n",
- " Mean performance on test set: 0.871429\n",
- "With standard deviation: 0.162255\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 2070.90it/s]\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 50.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 235.08it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 14615.05it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.2961606979370117 seconds ---\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 82%|████████▎ | 825/1000 [00:00<00:00, 2052.54it/s]\n",
- " Mean performance on train set: 0.824590\n",
- "With standard deviation: 0.018033\n",
- "\n",
- " Mean performance on test set: 0.814286\n",
- "With standard deviation: 0.157143\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 2065.69it/s]\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 75.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 225.36it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 13927.76it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.30864953994750977 seconds ---\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 83%|████████▎ | 833/1000 [00:00<00:00, 2079.43it/s]\n",
- " Mean performance on train set: 0.824590\n",
- "With standard deviation: 0.018033\n",
- "\n",
- " Mean performance on test set: 0.814286\n",
- "With standard deviation: 0.157143\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 2075.92it/s]\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 100.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 68/68 [00:00<00:00, 225.45it/s]\n",
- "calculate kernels: 100%|██████████| 68/68 [00:00<00:00, 14876.52it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 68 built in 0.30840325355529785 seconds ---\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 84%|████████▍ | 844/1000 [00:00<00:00, 2103.96it/s]\n",
- " Mean performance on train set: 0.824590\n",
- "With standard deviation: 0.018033\n",
- "\n",
- " Mean performance on test set: 0.814286\n",
- "With standard deviation: 0.157143\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 2100.94it/s]\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 125.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 76%|███████▋ | 52/68 [00:00<00:00, 252.37it/s]"
- ]
- },
- {
- "ename": "KeyboardInterrupt",
- "evalue": "",
- "output_type": "error",
- "traceback": [
- "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
- "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
- "\u001b[0;32m<ipython-input-1-a0f0495d15f0>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m kernel_train_test(datafile, kernel_file_path, cyclicpatternkernel, kernel_para, hyper_name = 'cycle_bound', hyper_range = np.linspace(0, 500, 21), normalize = False,\n\u001b[0;32m---> 17\u001b[0;31m model_type = 'classification')\n\u001b[0m",
- "\u001b[0;32m/media/ljia/DATA/research-repo/codes/Linlin/py-graph/gklearn/utils/utils.py\u001b[0m in \u001b[0;36mkernel_train_test\u001b[0;34m(datafile, kernel_file_path, kernel_func, kernel_para, trials, splits, alpha_grid, C_grid, hyper_name, hyper_range, normalize, datafile_y, model_type)\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhyper_name\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;34m''\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 160\u001b[0m \u001b[0mkernel_para\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mhyper_name\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhyper_para\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 161\u001b[0;31m \u001b[0mKmatrix\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrun_time\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkernel_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdataset\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkernel_para\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 162\u001b[0m \u001b[0mkernel_time_list\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrun_time\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 163\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpyplot\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32m/media/ljia/DATA/research-repo/codes/Linlin/py-graph/gklearn/kernels/cyclicPatternKernel.py\u001b[0m in \u001b[0;36mcyclicpatternkernel\u001b[0;34m(node_label, edge_label, labeled, cycle_bound, *args)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;31m# get all cyclic and tree patterns of all graphs before calculating kernels to save time, but this may consume a lot of memory for large dataset.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 49\u001b[0m all_patterns = [ get_patterns(Gn[i], node_label = node_label, edge_label = edge_label, labeled = labeled, cycle_bound = cycle_bound)\n\u001b[0;32m---> 50\u001b[0;31m for i in tqdm(range(0, len(Gn)), desc = 'retrieve patterns', file=sys.stdout) ]\n\u001b[0m\u001b[1;32m 51\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mtqdm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mGn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdesc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'calculate kernels'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfile\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstdout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32m/media/ljia/DATA/research-repo/codes/Linlin/py-graph/gklearn/kernels/cyclicPatternKernel.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;31m# get all cyclic and tree patterns of all graphs before calculating kernels to save time, but this may consume a lot of memory for large dataset.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 49\u001b[0m all_patterns = [ get_patterns(Gn[i], node_label = node_label, edge_label = edge_label, labeled = labeled, cycle_bound = cycle_bound)\n\u001b[0;32m---> 50\u001b[0;31m for i in tqdm(range(0, len(Gn)), desc = 'retrieve patterns', file=sys.stdout) ]\n\u001b[0m\u001b[1;32m 51\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mtqdm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mGn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdesc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'calculate kernels'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfile\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msys\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstdout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32m/media/ljia/DATA/research-repo/codes/Linlin/py-graph/gklearn/kernels/cyclicPatternKernel.py\u001b[0m in \u001b[0;36mget_patterns\u001b[0;34m(G, node_label, edge_label, labeled, cycle_bound)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[0mbicomponents\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbiconnected_component_subgraphs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mG\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# all biconnected components of G. this function use algorithm in reference [2], which (i guess) is slightly different from the one used in paper [1]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 113\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0msubgraph\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mbicomponents\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 114\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnumber_of_edges\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msubgraph\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[0msimple_cycles\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msimple_cycles\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mG\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_directed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# all simple cycles in biconnected components. this function use algorithm in reference [3], which has time complexity O((n+e)(N+1)) for n nodes, e edges and N simple cycles. Which might be slower than the algorithm applied in paper [1]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32m/usr/local/lib/python3.5/dist-packages/networkx/algorithms/components/biconnected.py\u001b[0m in \u001b[0;36mbiconnected_component_subgraphs\u001b[0;34m(G, copy)\u001b[0m\n\u001b[1;32m 275\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mc\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mbiconnected_components\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mG\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 276\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcopy\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 277\u001b[0;31m \u001b[0;32myield\u001b[0m \u001b[0mG\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubgraph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcopy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 278\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 279\u001b[0m \u001b[0;32myield\u001b[0m \u001b[0mG\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubgraph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32m/usr/local/lib/python3.5/dist-packages/networkx/classes/graph.py\u001b[0m in \u001b[0;36mcopy\u001b[0;34m(self, as_view)\u001b[0m\n\u001b[1;32m 1420\u001b[0m \u001b[0mG\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_nodes_from\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcopy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0md\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_node\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1421\u001b[0m G.add_edges_from((u, v, datadict.copy())\n\u001b[0;32m-> 1422\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnbrs\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_adj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1423\u001b[0m for v, datadict in nbrs.items())\n\u001b[1;32m 1424\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mG\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;32m/usr/local/lib/python3.5/dist-packages/networkx/classes/graph.py\u001b[0m in \u001b[0;36madd_edges_from\u001b[0;34m(self, ebunch_to_add, **attr)\u001b[0m\n\u001b[1;32m 926\u001b[0m \u001b[0mne\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 927\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mne\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 928\u001b[0;31m \u001b[0mu\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdd\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 929\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mne\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 930\u001b[0m \u001b[0mu\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
- "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
- ]
- }
- ],
- "source": [
- "# MAO dataset (node labeled, edge labeled, undirected, cyclic + linear, classification)\n",
- "%load_ext line_profiler\n",
- "\n",
- "import sys\n",
- "sys.path.insert(0, \"../\")\n",
- "from gklearn.utils.utils import kernel_train_test\n",
- "from gklearn.kernels.cyclicPatternKernel import cyclicpatternkernel\n",
- "\n",
- "import numpy as np\n",
- "\n",
- "datafile = '../../../../datasets/MAO/dataset.ds'\n",
- "kernel_file_path = 'kernelmatrices_cyclicpattern_mao/'\n",
- "\n",
- "kernel_para = dict(node_label = 'atom', edge_label = 'bond_type', labeled = True)\n",
- "\n",
- "kernel_train_test(datafile, kernel_file_path, cyclicpatternkernel, kernel_para, \\\n",
- " hyper_name = 'cycle_bound', hyper_range = np.linspace(0, 500, 21), normalize = False,\n",
- " model_type = 'classification')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "The line_profiler extension is already loaded. To reload it, use:\n",
- " %reload_ext line_profiler\n",
- "\n",
- " --- This is a classification problem ---\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 0.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 94/94 [00:00<00:00, 176.07it/s]\n",
- "calculate kernels: 100%|██████████| 94/94 [00:00<00:00, 18331.07it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 94 built in 0.5411422252655029 seconds ---\n",
- "[[0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " ...\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]]\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 95%|█████████▌| 951/1000 [00:00<00:00, 1898.18it/s]\n",
- " Mean performance on train set: 0.629762\n",
- "With standard deviation: 0.013521\n",
- "\n",
- " Mean performance on test set: 0.610000\n",
- "With standard deviation: 0.113578\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 1889.49it/s]\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 10.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 94/94 [00:00<00:00, 165.16it/s]\n",
- "calculate kernels: 100%|██████████| 94/94 [00:00<00:00, 16217.54it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 94 built in 0.5770719051361084 seconds ---\n",
- "[[0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " ...\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]]\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 94%|█████████▍| 940/1000 [00:00<00:00, 1876.61it/s]\n",
- " Mean performance on train set: 0.629762\n",
- "With standard deviation: 0.013521\n",
- "\n",
- " Mean performance on test set: 0.610000\n",
- "With standard deviation: 0.113578\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 1866.80it/s]\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 20.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 94/94 [00:00<00:00, 165.21it/s]\n",
- "calculate kernels: 100%|██████████| 94/94 [00:00<00:00, 16888.61it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 94 built in 0.5768516063690186 seconds ---\n",
- "[[3. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " ...\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]]\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 93%|█████████▎| 926/1000 [00:00<00:00, 1837.36it/s]\n",
- " Mean performance on train set: 0.629762\n",
- "With standard deviation: 0.013521\n",
- "\n",
- " Mean performance on test set: 0.610000\n",
- "With standard deviation: 0.113578\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 1841.13it/s]\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 30.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 94/94 [00:00<00:00, 171.51it/s]\n",
- "calculate kernels: 100%|██████████| 94/94 [00:00<00:00, 17701.46it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 94 built in 0.5560076236724854 seconds ---\n",
- "[[3. 3. 3. ... 0. 0. 0.]\n",
- " [3. 4. 4. ... 0. 0. 0.]\n",
- " [3. 4. 4. ... 0. 0. 0.]\n",
- " ...\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]]\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 92%|█████████▏| 923/1000 [00:00<00:00, 1845.18it/s]\n",
- " Mean performance on train set: 0.633333\n",
- "With standard deviation: 0.015793\n",
- "\n",
- " Mean performance on test set: 0.640000\n",
- "With standard deviation: 0.111355\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 1836.56it/s]\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 40.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 94/94 [00:00<00:00, 159.66it/s]\n",
- "calculate kernels: 100%|██████████| 94/94 [00:00<00:00, 17703.84it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 94 built in 0.5963354110717773 seconds ---\n",
- "[[3. 3. 3. ... 0. 0. 0.]\n",
- " [3. 4. 4. ... 0. 0. 0.]\n",
- " [3. 4. 4. ... 0. 0. 0.]\n",
- " ...\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]]\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 84%|████████▍ | 845/1000 [00:00<00:00, 1694.10it/s]\n",
- " Mean performance on train set: 0.633333\n",
- "With standard deviation: 0.015793\n",
- "\n",
- " Mean performance on test set: 0.640000\n",
- "With standard deviation: 0.111355\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 1694.34it/s]\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 50.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 94/94 [00:00<00:00, 126.36it/s]\n",
- "calculate kernels: 100%|██████████| 94/94 [00:00<00:00, 14863.89it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 94 built in 0.7526798248291016 seconds ---\n",
- "[[3. 3. 3. ... 0. 0. 0.]\n",
- " [3. 4. 4. ... 0. 0. 0.]\n",
- " [3. 4. 4. ... 0. 0. 0.]\n",
- " ...\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]]\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 84%|████████▍ | 842/1000 [00:00<00:00, 1670.86it/s]\n",
- " Mean performance on train set: 0.658333\n",
- "With standard deviation: 0.034524\n",
- "\n",
- " Mean performance on test set: 0.670000\n",
- "With standard deviation: 0.090000\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 1665.11it/s]\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 60.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 94/94 [00:00<00:00, 107.33it/s]\n",
- "calculate kernels: 100%|██████████| 94/94 [00:00<00:00, 13937.03it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 94 built in 0.8846912384033203 seconds ---\n",
- "[[3. 3. 3. ... 0. 0. 0.]\n",
- " [3. 4. 4. ... 0. 0. 0.]\n",
- " [3. 4. 4. ... 0. 0. 0.]\n",
- " ...\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]]\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 83%|████████▎ | 829/1000 [00:00<00:00, 1653.86it/s]\n",
- " Mean performance on train set: 0.671429\n",
- "With standard deviation: 0.036577\n",
- "\n",
- " Mean performance on test set: 0.680000\n",
- "With standard deviation: 0.107703\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 1673.57it/s]\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 70.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 94/94 [00:01<00:00, 81.45it/s] \n",
- "calculate kernels: 100%|██████████| 94/94 [00:00<00:00, 14275.64it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 94 built in 1.1631414890289307 seconds ---\n",
- "[[3. 3. 3. ... 3. 3. 3.]\n",
- " [3. 4. 4. ... 4. 4. 4.]\n",
- " [3. 4. 4. ... 4. 4. 4.]\n",
- " ...\n",
- " [3. 4. 4. ... 7. 7. 7.]\n",
- " [3. 4. 4. ... 7. 7. 7.]\n",
- " [3. 4. 4. ... 7. 7. 7.]]\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 88%|████████▊ | 876/1000 [00:00<00:00, 1761.00it/s]\n",
- " Mean performance on train set: 0.666667\n",
- "With standard deviation: 0.038021\n",
- "\n",
- " Mean performance on test set: 0.670000\n",
- "With standard deviation: 0.100499\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 1754.20it/s]\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 80.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 94/94 [00:01<00:00, 79.93it/s] \n",
- "calculate kernels: 100%|██████████| 94/94 [00:00<00:00, 14789.73it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 94 built in 1.1846554279327393 seconds ---\n",
- "[[3. 3. 3. ... 3. 3. 3.]\n",
- " [3. 4. 4. ... 4. 4. 4.]\n",
- " [3. 4. 4. ... 4. 4. 4.]\n",
- " ...\n",
- " [3. 4. 4. ... 7. 7. 7.]\n",
- " [3. 4. 4. ... 7. 7. 7.]\n",
- " [3. 4. 4. ... 7. 7. 7.]]\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 93%|█████████▎| 926/1000 [00:00<00:00, 1854.59it/s]\n",
- " Mean performance on train set: 0.709524\n",
- "With standard deviation: 0.058853\n",
- "\n",
- " Mean performance on test set: 0.780000\n",
- "With standard deviation: 0.107703\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 1844.77it/s]\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 90.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "retrieve patterns: 100%|██████████| 94/94 [00:01<00:00, 83.75it/s] \n",
- "calculate kernels: 100%|██████████| 94/94 [00:00<00:00, 14169.95it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 94 built in 1.1314406394958496 seconds ---\n",
- "[[3. 3. 3. ... 3. 3. 3.]\n",
- " [3. 4. 4. ... 4. 4. 4.]\n",
- " [3. 4. 4. ... 4. 4. 4.]\n",
- " ...\n",
- " [3. 4. 4. ... 7. 7. 7.]\n",
- " [3. 4. 4. ... 7. 7. 7.]\n",
- " [3. 4. 4. ... 7. 7. 7.]]\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 94%|█████████▍| 943/1000 [00:00<00:00, 1878.69it/s]\n",
- " Mean performance on train set: 0.709524\n",
- "With standard deviation: 0.058853\n",
- "\n",
- " Mean performance on test set: 0.780000\n",
- "With standard deviation: 0.107703\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:00<00:00, 1872.55it/s]\n",
- "\n",
- "\n",
- " cycle_bound accur_test std_test accur_train std_train k_time\n",
- "------------- ------------ ---------- ------------- ----------- --------\n",
- " 0 0.61 0.113578 0.629762 0.0135212 0.541142\n",
- " 10 0.61 0.113578 0.629762 0.0135212 0.577072\n",
- " 20 0.61 0.113578 0.629762 0.0135212 0.576852\n",
- " 30 0.64 0.111355 0.633333 0.0157935 0.556008\n",
- " 40 0.64 0.111355 0.633333 0.0157935 0.596335\n",
- " 50 0.67 0.09 0.658333 0.0345238 0.75268\n",
- " 60 0.68 0.107703 0.671429 0.0365769 0.884691\n",
- " 70 0.67 0.100499 0.666667 0.0380208 1.16314\n",
- " 80 0.78 0.107703 0.709524 0.0588534 1.18466\n",
- " 90 0.78 0.107703 0.709524 0.0588534 1.13144\n"
- ]
- }
- ],
- "source": [
- "# PAH dataset (node and edge unlabeled, undirected, cyclic, classification)\n",
- "%load_ext line_profiler\n",
- "\n",
- "import sys\n",
- "sys.path.insert(0, \"../\")\n",
- "from gklearn.utils.utils import kernel_train_test\n",
- "from gklearn.kernels.cyclicPatternKernel import cyclicpatternkernel\n",
- "\n",
- "import numpy as np\n",
- "\n",
- "datafile = '../../../../datasets/PAH/dataset.ds'\n",
- "kernel_file_path = 'kernelmatrices_cyclicpattern_pah/'\n",
- "\n",
- "\n",
- "kernel_para = dict(node_label = 'atom', edge_label = 'bond_type', labeled = False)\n",
- "\n",
- "kernel_train_test(datafile, kernel_file_path, cyclicpatternkernel, kernel_para, \\\n",
- " hyper_name = 'cycle_bound', hyper_range = np.linspace(0, 90, 10), normalize = False, \\\n",
- " model_type = 'classification')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# results\n",
- "\n",
- "# MAO dataset\n",
- "cycle_bound accur_test std_test accur_train std_train k_time\n",
- "------------- ------------ ---------- ------------- ----------- --------\n",
- " 0 0.642857 0.146385 0.54918 0.0167983 0.187052\n",
- " 50 0.871429 0.1 0.698361 0.116889 0.300629\n",
- " 100 0.9 0.111575 0.732787 0.0826366 0.309837\n",
- " 150 0.9 0.111575 0.732787 0.0826366 0.31808\n",
- " 200 0.9 0.111575 0.732787 0.0826366 0.317575\n",
- " \n",
- "# PAH dataset\n",
- " cycle_bound accur_test std_test accur_train std_train k_time\n",
- "------------- ------------ ---------- ------------- ----------- --------\n",
- " 0 0.61 0.113578 0.629762 0.0135212 0.521801\n",
- " 10 0.61 0.113578 0.629762 0.0135212 0.52589\n",
- " 20 0.61 0.113578 0.629762 0.0135212 0.548528\n",
- " 30 0.64 0.111355 0.633333 0.0157935 0.535311\n",
- " 40 0.64 0.111355 0.633333 0.0157935 0.61764\n",
- " 50 0.67 0.09 0.658333 0.0345238 0.733868\n",
- " 60 0.68 0.107703 0.671429 0.0365769 0.871147\n",
- " 70 0.67 0.100499 0.666667 0.0380208 1.12625\n",
- " 80 0.78 0.107703 0.709524 0.0588534 1.19828\n",
- " 90 0.78 0.107703 0.709524 0.0588534 1.21182"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- " --- This is a classification problem ---\n",
- "\n",
- "\n",
- " #--- calculating kernel matrix when cycle_bound = 1000.0 ---#\n",
- "\n",
- " Loading dataset from file...\n",
- "load SDF: 100%|██████████| 4457424/4457424 [00:10<00:00, 408299.51it/s]\n",
- "ajust data: 100%|██████████| 42687/42687 [00:10<00:00, 4092.17it/s] \n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 42682/42682 [19:36<00:00, 36.27it/s]\n",
- "calculate kernels: 100%|██████████| 42682/42682 [37:05<00:00, 19.18it/s] \n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 42682 built in 3402.171978712082 seconds ---\n",
- "[[ 9. 9. 3. ... 4. 3. 4.]\n",
- " [ 9. 11. 5. ... 6. 5. 6.]\n",
- " [ 3. 5. 16. ... 6. 6. 6.]\n",
- " ...\n",
- " [ 4. 6. 6. ... 30. 29. 6.]\n",
- " [ 3. 5. 6. ... 29. 29. 6.]\n",
- " [ 4. 6. 6. ... 6. 6. 11.]]\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 7%|▋ | 70/1000 [1:34:57<227:25:45, 880.37s/it]"
- ]
- }
- ],
- "source": [
- "# NCI-HIV dataset (labeled?, directed?, cyclic, classification)\n",
- "%load_ext line_profiler\n",
- "\n",
- "import sys\n",
- "sys.path.insert(0, \"../\")\n",
- "from gklearn.utils.utils import kernel_train_test\n",
- "from gklearn.kernels.cyclicPatternKernel import cyclicpatternkernel\n",
- "\n",
- "import numpy as np\n",
- "\n",
- "datafile = '../../../../datasets/NCI-HIV/AIDO99SD.sdf'\n",
- "datafile_y = '../../../../datasets/NCI-HIV/aids_conc_may04.txt'\n",
- "kernel_file_path = 'kernelmatrices_path_acyclic/'\n",
- "\n",
- "kernel_para = dict(node_label = 'atom', edge_label = 'bond_type', labeled = True)\n",
- "\n",
- "kernel_train_test(datafile, kernel_file_path, cyclicpatternkernel, kernel_para, \\\n",
- " hyper_name = 'cycle_bound', hyper_range = np.linspace(0, 1000, 21), normalize = False, \\\n",
- " datafile_y = datafile_y, model_type = 'classification')\n",
- "\n",
- "# kernel_para = dict(node_label = 'atom', edge_label = 'bond_type', labeled = True, cycle_bound = 200)\n",
- "\n",
- "# kernel_train_test(datafile, kernel_file_path, cyclicpatternkernel, kernel_para,\n",
- "# normalize = False, datafile_y = datafile_y, model_type = 'classification')\n",
- "\n",
- "# kernel_para['k_func'] = 'minmax'\n",
- "# kernel_train_test(datafile, kernel_file_path, untildpathkernel, kernel_para, \\\n",
- "# hyper_name = 'depth', hyper_range = np.linspace(0, 10, 11), normalize = True)\n",
- "# kernel_train_test(datafile, kernel_file_path, untildpathkernel, kernel_para, \\\n",
- "# hyper_name = 'depth', hyper_range = np.linspace(0, 10, 11), normalize = False)\n",
- "# # kernel_train_test(datafile, kernel_file_path, untildpathkernel, kernel_para, normalize = False)\n",
- "\n",
- "# kernel_para['depth'] = 10\n",
- "# %lprun -f untildpathkernel \\\n",
- "# kernel_train_test(datafile, kernel_file_path, untildpathkernel, kernel_para, normalize = False)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 19,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "The line_profiler extension is already loaded. To reload it, use:\n",
- " %reload_ext line_profiler\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7f71ccb78400>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7f71ccb339b0>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 999 built in 18.78946042060852 seconds ---\n",
- "(array([[11., 5., 5., ..., 6., 7., 3.],\n",
- " [ 5., 16., 6., ..., 5., 5., 3.],\n",
- " [ 5., 6., 8., ..., 4., 5., 3.],\n",
- " ...,\n",
- " [ 6., 5., 4., ..., 17., 7., 4.],\n",
- " [ 7., 5., 5., ..., 7., 15., 4.],\n",
- " [ 3., 3., 3., ..., 4., 4., 11.]]), 18.78946042060852)\n"
- ]
- }
- ],
- "source": [
- "%load_ext line_profiler\n",
- "\n",
- "import networkx as nx\n",
- "import matplotlib.pyplot as plt\n",
- "import sys\n",
- "sys.path.insert(0, \"../\")\n",
- "from gklearn.utils.graphfiles import loadDataset\n",
- "from gklearn.kernels.cyclicPatternKernel import cyclicpatternkernel\n",
- "\n",
- "# datafile = '../../../../datasets/NCI-HIV/AIDO99SD.sdf'\n",
- "# datafile_y = '../../../../datasets/NCI-HIV/aids_conc_may04.txt'\n",
- "# dataset, y = loadDataset(datafile, datafile_y)\n",
- "G1 = dataset[1]\n",
- "G2 = dataset[2]\n",
- "G3 = dataset[3]\n",
- "G4 = dataset[4]\n",
- "G5 = dataset[5]\n",
- "data = [G1, G2, G3, G4, G5]\n",
- "nx.draw_networkx(G1)\n",
- "plt.show()\n",
- "nx.draw_networkx(G2)\n",
- "plt.show()\n",
- "\n",
- "kernel = cyclicpatternkernel(dataset[1:1000], cycle_bound = 1000)\n",
- "print(kernel)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- " --- This is a classification problem ---\n",
- "\n",
- "\n",
- " Loading dataset from file...\n",
- "\n",
- " Calculating kernel matrix, this could take a while...\n",
- "retrieve patterns: 100%|██████████| 185/185 [00:00<00:00, 2064.69it/s]\n",
- "calculate kernels: 100%|██████████| 185/185 [00:00<00:00, 11170.00it/s]\n",
- "\n",
- " --- kernel matrix of cyclic pattern kernel of size 185 built in 0.10836505889892578 seconds ---\n",
- "[[0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " ...\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]\n",
- " [0. 0. 0. ... 0. 0. 0.]]\n",
- "\n",
- " Starting calculate accuracy/rmse...\n",
- "calculate performance: 100%|██████████| 1000/1000 [00:24<00:00, 36.41it/s]\n",
- " Mean performance on train set: 0.018072\n",
- "With standard deviation: 0.000000\n",
- "\n",
- " Mean performance on test set: 0.000000\n",
- "With standard deviation: 0.000000\n",
- "\n",
- "\n",
- " accur_test std_test accur_train std_train k_time\n",
- "------------ ---------- ------------- ----------- --------\n",
- " 0 0 0.0180723 0 0.108365\n"
- ]
- }
- ],
- "source": [
- "# acyclic dataset (node labeled, edge labeled, undirected, linear + non-linear, regression)\n",
- "%load_ext line_profiler\n",
- "\n",
- "import sys\n",
- "sys.path.insert(0, \"../\")\n",
- "from gklearn.utils.utils import kernel_train_test\n",
- "from gklearn.kernels.cyclicPatternKernel import cyclicpatternkernel\n",
- "\n",
- "import numpy as np\n",
- "\n",
- "datafile = '../../../../datasets/acyclic/Acyclic/dataset_bps.ds'\n",
- "kernel_file_path = 'kernelmatrices_path_acyclic/'\n",
- "\n",
- "kernel_para = dict(node_label = 'atom', edge_label = 'bond_type', labeled = True, cycle_bound = 200)\n",
- "\n",
- "# kernel_train_test(datafile, kernel_file_path, treeletkernel, kernel_para, normalize = False)\n",
- "\n",
- "kernel_train_test(datafile, kernel_file_path, cyclicpatternkernel, kernel_para, \\\n",
- " normalize = False , model_type = 'classification')\n",
- "\n",
- "# kernel_para['k_func'] = 'minmax'\n",
- "# kernel_train_test(datafile, kernel_file_path, untildpathkernel, kernel_para, \\\n",
- "# hyper_name = 'depth', hyper_range = np.linspace(0, 10, 11), normalize = True)\n",
- "# kernel_train_test(datafile, kernel_file_path, untildpathkernel, kernel_para, \\\n",
- "# hyper_name = 'depth', hyper_range = np.linspace(0, 10, 11), normalize = False)\n",
- "# # kernel_train_test(datafile, kernel_file_path, untildpathkernel, kernel_para, normalize = False)\n",
- "\n",
- "# kernel_para['depth'] = 10\n",
- "# %lprun -f untildpathkernel \\\n",
- "# kernel_train_test(datafile, kernel_file_path, untildpathkernel, kernel_para, normalize = False)"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.5.2"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
- }
|