Support Vector Machine

You are seeing the HTML output generated by Documenter.jl and Literate.jl from the Julia source file. The corresponding notebook can be viewed in nbviewer.


In this notebook we show how you can use KernelFunctions.jl to generate kernel matrices for classification with a support vector machine, as implemented by LIBSVM.

using Distributions
using KernelFunctions
using LIBSVM
using LinearAlgebra
using Plots
using Random

# Set seed
Random.seed!(1234);

Generate half-moon dataset

Number of samples per class:

n1 = n2 = 50;

We generate data based on SciKit-Learn's sklearn.datasets.make_moons function:

angle1 = range(0, π; length=n1)
angle2 = range(0, π; length=n2)
X1 = [cos.(angle1) sin.(angle1)] .+ 0.1 .* randn.()
X2 = [1 .- cos.(angle2) 1 .- sin.(angle2) .- 0.5] .+ 0.1 .* randn.()
X = [X1; X2]
x_train = RowVecs(X)
y_train = vcat(fill(-1, n1), fill(1, n2));

Training

We create a kernel function:

k = SqExponentialKernel() ∘ ScaleTransform(1.5)
Squared Exponential Kernel (metric = Distances.Euclidean(0.0))
	- Scale Transform (s = 1.5)

LIBSVM can make use of a pre-computed kernel matrix. KernelFunctions.jl can be used to produce that using kernelmatrix:

model = svmtrain(kernelmatrix(k, x_train), y_train; kernel=LIBSVM.Kernel.Precomputed)
LIBSVM.SVM{Int64, LIBSVM.Kernel.KERNEL}(LIBSVM.SVC, LIBSVM.Kernel.Precomputed, nothing, 100, 100, 2, [-1, 1], Int32[1, 2], Float64[], Int32[], LIBSVM.SupportVectors{Vector{Int64}, Matrix{Float64}}(23, Int32[11, 12], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1.0 0.8982223633317491 0.9596163170022011 0.8681749917956418 0.7405298560587654 0.6670753594660519 0.1779671467515013 0.12581804740739566 0.05707943398657384 0.02764121723161683 0.033765857073249396 0.2680295766735067 0.29939058530607915 0.37151489965630213 0.3524014409758097 0.2908959282977835 0.3880509811446821 0.8766234308310106 0.82681374480545 0.8144257681324784 0.6772129558340088 0.6360692761241019 0.27226866397259536; 0.8982223633317491 1.0 0.965182128960536 0.9914891432258488 0.8867564750187009 0.9019354510254446 0.2147708440814802 0.15771406856492454 0.05887040570928494 0.017222970583007854 0.019222888349132574 0.221500149894056 0.2978310573718274 0.3053559535776424 0.2890446485251837 0.22090114119439183 0.3141485519019614 0.6220352391872924 0.5857825177211226 0.6973386670166851 0.7178826818314505 0.7710611517712889 0.4654568122945319; 0.9596163170022011 0.965182128960536 1.0 0.9626046043667029 0.8869903689807833 0.8153402743825475 0.25975227903072295 0.19192116220346336 0.08434059685077588 0.03220850516134753 0.0366758927128704 0.31408772981722 0.3824704266612618 0.4200037751884887 0.4001773046096343 0.3219312217176709 0.43280734456335546 0.750503533504958 0.6647402210580929 0.6926170128782051 0.6277007998632926 0.6433503699452944 0.32400415670963956; 0.8681749917956418 0.9914891432258488 0.9626046043667029 1.0 0.9370667957752087 0.934295025587645 0.26444251222948995 0.19879359752203962 0.07665919270519939 0.021595654487073727 0.023425682392132743 0.2566761906912133 0.3496676024988405 0.34456852113508585 0.3275077643059417 0.25092423515822787 0.35232020079983056 0.5892979561473187 0.5284801502144095 0.6217604813241744 0.6430231195027034 0.7109544049100224 0.44057810112560447; 0.7465952329465504 0.9304484985812767 0.8897100197930106 0.9678435903690089 0.9814954031669109 0.9779840213642631 0.3466778268733209 0.27206683288049266 0.10510054534990214 0.024906016068519672 0.02537581531241299 0.2819293887595886 0.4088052209237594 0.3636370022084356 0.34754098347809126 0.26247121953918195 0.3672027632424591 0.46578384178509197 0.38887087230008666 0.4701103002702702 0.5145210485797571 0.6123061110630164 0.42723601664089345; 0.7405298560587654 0.8867564750187009 0.8869903689807833 0.9370667957752087 1.0 0.9265705090470907 0.4401947652983322 0.35262403649115526 0.15320607160230898 0.041175981935510725 0.04156995738050753 0.37540034365943104 0.5190650165661463 0.46669986410386666 0.4490622985140926 0.3499350203111987 0.46962470972808273 0.4883331096338951 0.3798584854063081 0.4217137127807958 0.4303538604829861 0.5091151748567635 0.32622076287640006; 0.6670753594660519 0.9019354510254446 0.8153402743825475 0.934295025587645 0.9265705090470907 1.0 0.2827193698331228 0.2209480096839663 0.07504013686337539 0.014371637034094253 0.01439904495484344 0.2022331299863698 0.3174100045147389 0.2670237514797323 0.2539121194008726 0.18411214167319784 0.26924082958699697 0.3775897748372698 0.33049550236819253 0.4440238046305932 0.5378606847561948 0.6649412466468505 0.5362623212460318; 0.6702595528823198 0.8606244226283823 0.8314916696615914 0.9158026981710833 0.9886587344335546 0.9560332901136585 0.43011039397992096 0.34820512587201075 0.14124895742843027 0.032158966523388476 0.031580446301945404 0.32479775862613985 0.47740665014325184 0.4040619518789057 0.38836949912884633 0.29482897357398075 0.4047606090427496 0.40908071544297814 0.3195106528226398 0.37846326245707385 0.41478881966429043 0.5119444241914671 0.36732348167804796; 0.5958832606985172 0.7761919158084817 0.764543603784896 0.8444984180740654 0.9708780964035508 0.9003101222501712 0.5272836631986195 0.4399206665565803 0.19102502302045962 0.043420828006372085 0.04129805359453605 0.37942807492906316 0.5573589063405943 0.4543619576452872 0.4394388167665561 0.3375627830189747 0.45182010123593386 0.36215845599297103 0.2634668608558619 0.30067673081800705 0.3243249963940758 0.4116488074528402 0.2958856882102383; 0.6885947324331928 0.8568830230020188 0.8463587912182832 0.9136212483096897 0.9958882004323975 0.9330458507202257 0.460198027818651 0.3733503341923742 0.15937475820815994 0.0394059990098187 0.038929261709730496 0.3649438549033214 0.5202001774588284 0.4496246527453173 0.4330574268345955 0.33404405039411145 0.4506081711573255 0.43638796244437944 0.33426657209516675 0.3798417694355356 0.4001476735300954 0.48685776367870665 0.3302703252897188; 0.5090115987229845 0.66413624932743 0.6748754932289617 0.7410778570661924 0.9169250942417487 0.8005426352978952 0.6529042363424815 0.563579434224383 0.2698518181195754 0.06354590398806001 0.05851083802910193 0.45550338406982604 0.6594734277650144 0.5208034250731294 0.5076214704665837 0.3978825263055807 0.5138380455506879 0.3131959074096939 0.20890435984227568 0.22461858592695394 0.23387430115253083 0.30414333483721223 0.21357650440692952; 0.45093840203402863 0.6528439740207388 0.621293380868375 0.7281001827134798 0.8878776747702869 0.8483652168656046 0.5523273229286175 0.4772875263856446 0.19761071338591454 0.03572808338522635 0.03200591765116194 0.3254023798230707 0.5196262009999181 0.37997186968805663 0.36850957018497515 0.27531375747209685 0.37362641649043415 0.24573139502121816 0.17123499867505312 0.20822585856181272 0.24503580982318168 0.3360215134566464 0.282452943899592; 0.3853374653727806 0.5531275651750578 0.5456456216692458 0.63187924915747 0.8272788783068459 0.7400449329312268 0.6740778081979193 0.6015241987774301 0.27711939662891033 0.05315958324949652 0.046303407217568385 0.39204087574676183 0.6116325191520129 0.4372487002786384 0.42739649234665433 0.3269933488950957 0.42689765420513015 0.2149742263615225 0.1373845757765515 0.15601083788315914 0.1754427451629185 0.24492436885056065 0.19788854100040332; 0.4618500914094273 0.6128977794159381 0.6250323394686075 0.6915365382967459 0.88189001173394 0.7603121381740631 0.6931399190748629 0.6074867523562785 0.29692455405263407 0.0681577107585657 0.06159926451755685 0.4645954678327457 0.6786212904021323 0.5221512124616867 0.5102875582105725 0.40055028127076997 0.5131110004920902 0.28037311469308024 0.18119852159344918 0.19343543701106478 0.20210176995756082 0.2678694503178588 0.1914666250241892; 0.2696302037951813 0.39638152158224865 0.403404894882526 0.46949354523118425 0.6809782176032294 0.5691943970817303 0.7959863116838541 0.7460243621745607 0.383759661562218 0.07333545211725394 0.06062770952823484 0.4276361345098877 0.6667776453895222 0.44825730820354187 0.44260682761401715 0.34513919555944916 0.43243837419232345 0.14931467351759206 0.08501132835349595 0.09090598935589621 0.09966166276310144 0.14565406652997917 0.1181167187860405; 0.3002590494463073 0.4115977376244659 0.43517761205157995 0.4854137709312024 0.7013669019363106 0.5580577880472913 0.8536237862527719 0.7944463939442774 0.4423829365109098 0.10024118415255136 0.08491613895458582 0.5164984752370707 0.7562127396153628 0.5384043672737264 0.532633886946863 0.4273028327796133 0.5213353428367101 0.17995021704234954 0.10110435738873308 0.10066689644324499 0.1023456357653284 0.14371084800072215 0.10376729355409814; 0.23895991490217605 0.33249975589925446 0.3570356667989706 0.3998440847736826 0.6103384074505219 0.46903410987322885 0.8998463600755164 0.8599178355605582 0.5066796013929806 0.11396841785672483 0.0938145408103168 0.5199141678644349 0.7624727563004503 0.5243659291344558 0.5215260868720673 0.4222997164056707 0.5044431497960399 0.14229601411077292 0.07518839830888858 0.07265639350751003 0.0730416671251987 0.10523885318589322 0.07641455926683688; 0.1915586377215268 0.2782828209211749 0.2967514734538114 0.33993222993655975 0.5402177192407522 0.41457098384450736 0.8940395698131182 0.8732189313788711 0.5158710981816049 0.10661722182344716 0.08504323591413473 0.47313025445505164 0.7153672453884371 0.46747599643639337 0.4662739691425648 0.37502751142299 0.4468899647601597 0.10944611467787402 0.05573856274262572 0.054529742226822116 0.05633615986012236 0.0842054572140432 0.06479883181573562; 0.22705224038961044 0.31938520593304515 0.34224069664715906 0.385495402966531 0.5939999674274448 0.4566062935524366 0.899155765927396 0.8637017932666784 0.5087259826371333 0.11196526875215826 0.09146631735404127 0.5082775947180933 0.7512932189769945 0.5102218707630334 0.5077837081682253 0.41038655426963877 0.4900958753322606 0.1337816259051161 0.0700979881035211 0.06799122461651445 0.06885045790765319 0.10009947593776944 0.0737756297099595; 0.13939429772646458 0.19866201340261797 0.22114257212806596 0.24864914930042606 0.42520802222653464 0.302501776239137 0.9372245539818653 0.9455339290308946 0.6315082072142529 0.14232088029862777 0.11065257979685114 0.497993580135406 0.7281911500795765 0.46872860910213954 0.4714826024303301 0.3903354300403334 0.44502619470509736 0.08256405886680711 0.03835534537202231 0.034581508309323515 0.033704650675767854 0.05102221540013976 0.03704322052953614; 0.14536068431690077 0.22095226487516476 0.23447742603357294 0.274909660351764 0.45833250114914875 0.34957510182253293 0.8743978358229307 0.8761033364462417 0.5229671176330489 0.0991832584928122 0.07635359024682037 0.42104563348070084 0.6565602859173729 0.40568985690003667 0.40610443722599326 0.3248474190874977 0.3850374404413671 0.07960429303749694 0.03874287443935803 0.03821774674349671 0.040517865120029126 0.0630563129568011 0.0514750781731886; 0.14763143381426758 0.20697373951526962 0.23172641379954417 0.25814071080843315 0.43782614347195603 0.3097871356075422 0.948191751644435 0.9518038099641223 0.6412421014386851 0.14982574968207624 0.11752904351897316 0.5195447242996001 0.7497513218160706 0.4906394512641361 0.4933596158142264 0.41032684627296356 0.46659647468974 0.08895540630063033 0.041555343865819036 0.0370694847518811 0.035626747327519616 0.05330326825496781 0.03775624173646896; 0.0988933742294342 0.12124815101071282 0.1522607181459668 0.1549588355463188 0.2869756433774373 0.17057949531906372 0.9559135116536135 0.9892814033753422 0.8831001155923481 0.301076796055474 0.23744952288817556 0.6342825599362547 0.794592834668333 0.5579899828492979 0.5688794841651086 0.5133182360119145 0.5290723135633687 0.07062859133770322 0.028724907143533655 0.02063694811643021 0.0163555000764835 0.023361093148916098 0.012804211869588852; 0.1779671467515013 0.2147708440814802 0.25975227903072295 0.26444251222948995 0.4401947652983322 0.2827193698331228 1.0 0.9840440354640055 0.7746626759108745 0.259331300415348 0.21532000371278573 0.7098399745938505 0.897129803886899 0.6668121606496512 0.6725100792205622 0.5926610833970605 0.639910660474017 0.12677413631301512 0.05828369828510033 0.04500739970678052 0.03699408218865754 0.05063099709508791 0.028066326109481347; 0.12581804740739566 0.15771406856492454 0.19192116220346336 0.19879359752203962 0.35262403649115526 0.2209480096839663 0.9840440354640055 1.0 0.8196815897955259 0.2585454040835821 0.2062681823099032 0.6395908524826316 0.8253149042783318 0.5796701178937012 0.5878473919825917 0.5191073343197649 0.5515646672943586 0.08688786848645763 0.03740368096386031 0.028523064291676215 0.023677093828563235 0.033770552150204226 0.0195077208623248; 0.13635764102815603 0.17700879424928978 0.20952156641370756 0.22209299900339824 0.387023745781692 0.2526789145766851 0.9840473928465677 0.9944545163994348 0.7628015511728252 0.21862995489084638 0.17378734562194012 0.6072327127100751 0.8120913399429163 0.5587815024853605 0.5649398681849662 0.48910402339466696 0.531808973769114 0.09017310666726844 0.03999940594359134 0.032134604355827 0.02797743047976866 0.04045661550302929 0.024940657478324198; 0.03738526797037774 0.0518722922443791 0.06469761673719454 0.07006166077431174 0.15008890206353956 0.08665512641758483 0.7784277540898672 0.8696233384872661 0.8146647085648284 0.22136689810316545 0.15743791729748416 0.3968445993948711 0.5391261134094336 0.32293628667971663 0.33300869834150976 0.2972564334545365 0.29975944910030017 0.023848286045824146 0.008420633155828174 0.006112619378410749 0.00516049180195299 0.008268679880159445 0.0052975977111670795; 0.042144581324510336 0.0494746902418995 0.06742933413721425 0.06600663846708471 0.13930785683731703 0.07183957093968951 0.7790781696938223 0.8536051172386016 0.9590138186434369 0.3903921195934206 0.2950426290497306 0.5288899615616742 0.6189309135561756 0.4262505758493195 0.44128790558923603 0.4208889858046393 0.39942670313494494 0.032438697615701076 0.011172295974476632 0.006870690987412239 0.004857666087518073 0.007060720348024933 0.0034344193347111735; 0.05312991544390621 0.05941513640392731 0.08194706236820062 0.07813203139092116 0.15906453281962285 0.08151519050847295 0.8085392731314344 0.8681139298684074 0.9848651453003653 0.443246308165159 0.3456733523248384 0.6037896564824075 0.6813118162978405 0.4950714556869529 0.5113993322285312 0.49277881830487924 0.4667583768828605 0.0429226487701534 0.015239324750107681 0.009170625347595353 0.006257708243494053 0.00875319860215057 0.0039747823519354995; 0.05707943398657384 0.05887040570928494 0.08434059685077588 0.07665919270519939 0.15320607160230898 0.07504013686337539 0.7746626759108745 0.8196815897955259 1.0 0.5440195902835544 0.43906982651942317 0.6673967547317672 0.7023400808140081 0.5485677304431098 0.5670659502059522 0.5624209010974132 0.5201938090487075 0.05039216793847928 0.01791524354832784 0.010043369678747171 0.006325305381042625 0.00840984174401409 0.0033555198691232182; 0.0239028553317282 0.030184756247153024 0.040854218058537374 0.041510328633494326 0.09483008177233723 0.048340772261097814 0.6717838510012278 0.7676403150888159 0.8793112190224525 0.3119804989346951 0.22247711097256292 0.3913818163355702 0.481152264589789 0.30253086008317853 0.3150901394384516 0.29804879470704987 0.2801577440280252 0.0171896769354173 0.005490096384196609 0.0034159985987988898 0.0025153999701487658 0.0039043781883587865 0.002087265775451305; 0.031461748783796255 0.03877763079418788 0.05235828887075337 0.05259747403989502 0.11577900027217572 0.059784830395976214 0.7284683797887744 0.8167846933186389 0.9160729338118098 0.3382566896841279 0.24707350935618375 0.44839573463782234 0.5435604959271204 0.35385233350424394 0.3673850921598674 0.3474062654846442 0.32935166307385894 0.023094272546330587 0.007660825323682672 0.004791128233787445 0.003499654757292123 0.005296572963316763 0.002754516536638302; 0.0202635020156832 0.0209515968555071 0.031856292217650496 0.028621916401232315 0.06575704582809962 0.028713198747047974 0.5561499763492528 0.6276780889906601 0.9225361894208831 0.537563426752421 0.40805784519141053 0.45230817484429436 0.46279255715733986 0.34051076155197635 0.35722093503244967 0.36821581556576116 0.3181318631289292 0.018326268390209892 0.005525107949270952 0.002764399785944711 0.0016269608580749297 0.0022643385581135253 0.0008634402327095031; 0.03917881206249196 0.04187141495743542 0.0602770437308414 0.05569284553771938 0.11787868067422283 0.05651647912609812 0.7170279636314995 0.7811392796869542 0.9868755418205789 0.507181661805653 0.3946817184897088 0.5692597969620196 0.6111220282142971 0.45306704851231877 0.47065706470710794 0.467410267660561 0.4263135976218018 0.0335840367945797 0.0112547984221705 0.006246809772638481 0.003975045243333954 0.005489661056955841 0.0022783159887154033; 0.04503255088410135 0.0439137702967996 0.06568078940616273 0.05754622086226787 0.11797430518899149 0.0542341914980732 0.6848945717357943 0.7301845715877101 0.9867821313846442 0.6248955778853352 0.5079623735649396 0.6419956195484627 0.6383844961053452 0.5159463011662203 0.5357861713088927 0.5480569804281196 0.4892367713976803 0.0425914300452601 0.014482620179200524 0.0074868753371495735 0.0043749674598642044 0.0056845719431328585 0.002045738397676184; 0.020015288581754945 0.019539997383675744 0.0305983363763088 0.026560055130788258 0.060568717016068814 0.02548996952986846 0.5212517692914928 0.5837589968251036 0.9104128747187193 0.6087759155456162 0.4723327572739916 0.4681713902460597 0.4553175340992092 0.3517956141533186 0.3694712715628193 0.3893559371646623 0.3298272088546007 0.01929969464392214 0.005784803454931787 0.0027392873350079857 0.0015186313676977968 0.00204248371497284 0.0007090901969261304; 0.020666052296526998 0.023467210104345954 0.03394439944734565 0.03227571537361978 0.07474354689359762 0.03478309139442751 0.6050706431823535 0.6902380132644816 0.9157011962379701 0.4252868608831877 0.31207368821244674 0.41915963873727863 0.46633517155931187 0.3173525840288823 0.3321740061129138 0.32987532663994706 0.29493718842290595 0.01682097194725037 0.005145059748221362 0.0028260660732993795 0.0018375597258384604 0.0027007138580146654 0.0012020186941257484; 0.02453101432184634 0.020098364892380587 0.033807186321682364 0.026519136869644185 0.05668770862680506 0.022080288969644857 0.4402683441382192 0.4723140706097761 0.8338110421697035 0.8296862086740819 0.7008351158890717 0.5440749777729216 0.45737691515438816 0.41745398965791825 0.43796100209216043 0.48788632097996637 0.39735131936242424 0.028530362783343567 0.008830718283431016 0.003661080212258824 0.0017275175383884805 0.0020652670212335587 0.0005465605530047422; 0.010772381969517289 0.00808979915556405 0.014769223974223632 0.010907548917201483 0.025105066248112838 0.00861005735113974 0.27446992177652213 0.30268057727357456 0.6563261019548249 0.8423122954493703 0.7087959360554233 0.3816217504493905 0.2915784265479316 0.27667027303245256 0.29339896442424834 0.3462653613105691 0.2623718667950521 0.014036631757401184 0.003892193697218935 0.0013824598149453928 0.000570663656527681 0.0006655357305495249 0.00014821787811893474; 0.013102125076381291 0.009501254374372565 0.01743056916880381 0.012641115714999962 0.028109874095783 0.009665720685806211 0.2779944240132419 0.3009422157277764 0.6496100565156806 0.8921208950268356 0.7707215094068156 0.4153473315697215 0.3097033352945198 0.30652449538189097 0.3242452180605052 0.38457230531389347 0.29222754331272954 0.0176491442562162 0.005052976710183603 0.0017795086910056906 0.0007191096459963922 0.0008135871421187968 0.0001729568595091208; 0.010048640046801751 0.007556801509146678 0.01383630447940828 0.010219144448059669 0.023720538640699704 0.008086205235382792 0.2673028201381964 0.2959612329986008 0.6480835552991425 0.8326590465631913 0.6977877995262115 0.3695874583691571 0.282221028802535 0.26655787487127675 0.28291666669202015 0.3345015952465225 0.2525390976336497 0.013094227782891262 0.003595847554140322 0.001270090006133873 0.0005228431863253228 0.0006118815220643209 0.00013617786605785216; 0.022349563450720516 0.015126611441125632 0.027736426902443566 0.019448577925125717 0.03948248730102741 0.013912843541017676 0.29407180499185603 0.3036682389024967 0.6295948777410747 0.9760878235703699 0.8971483297034317 0.510873410149174 0.3648754706376355 0.3962367174131936 0.4160536437133086 0.49505438923170403 0.38266060041477884 0.032002468097764726 0.010030791663580315 0.003541268511179874 0.001388397560167188 0.0014686522229405998 0.0002871893433972941; 0.010020005268819202 0.006809770300057249 0.013011105080329613 0.009061216335098812 0.0203203311204038 0.006608239130026839 0.2181377208067792 0.23591612481445193 0.5571316265641847 0.9019480717339876 0.7928873516646797 0.3622506780828305 0.25412502873565396 0.26395075463572065 0.2800632926839618 0.34220302701090444 0.25218637023914864 0.014558062704000863 0.004058708035772421 0.0013244042014423662 0.0004960057823668772 0.000542796465649497 0.00010316672930654405; 0.01106332568616253 0.006887193194115914 0.013554569709165635 0.008985016403844404 0.019232335629336378 0.00608875040752228 0.18606570349931004 0.19565849249653774 0.48225133952423743 0.9453876390694811 0.8725629002342125 0.3644945741438321 0.23844406528632542 0.27079632723779745 0.28673978102317077 0.35878774000611285 0.26108600973253054 0.017606861104932217 0.005073103983778686 0.001567301714496989 0.0005453728216072849 0.0005601086767381032 9.34005648300471e-5; 0.01657908523512305 0.011582747078381944 0.021314338205802762 0.015167963313664786 0.032355502612115034 0.011201905491084553 0.28242091851773066 0.29908821320436807 0.6382850228010263 0.9397497324044695 0.8367176827710091 0.45643200424037295 0.3319584631188468 0.3443458093220082 0.3630946413341951 0.4323367624470917 0.3303136751483621 0.023116247423315056 0.006887297927401206 0.0024132953755383753 0.0009557168244199856 0.001045242382536408 0.00021182221215739486; 0.02764121723161683 0.017222970583007854 0.03220850516134753 0.021595654487073727 0.041175981935510725 0.014371637034094253 0.259331300415348 0.2585454040835821 0.5440195902835544 1.0 0.9702064166750799 0.530245218387723 0.3560307890203881 0.4238742345642878 0.44332843787390197 0.5365850265213121 0.4136915663687128 0.04297162933120202 0.01420754067753986 0.00483919981495718 0.0017871776252900312 0.0017700462041020729 0.00030801400193521903; 0.033765857073249396 0.019222888349132574 0.0366758927128704 0.023425682392132743 0.04156995738050753 0.01439904495484344 0.21532000371278573 0.2062681823099032 0.43906982651942317 0.9702064166750799 1.0 0.5266287956023967 0.3307939384157074 0.43601990045358663 0.4539182184875824 0.5591960801816629 0.4306259447317991 0.057385150231952155 0.02019180375858439 0.006632129374597611 0.002298515218977774 0.0021163880760639107 0.00032463677682729514; 0.02553578820521561 0.0158644870161105 0.029838914605637666 0.019953454894567846 0.038401012604959726 0.013269650716428449 0.2509244773194308 0.251186735069333 0.5371677022503326 0.9995646051393732 0.9667899675361993 0.513751166350262 0.3433357299717392 0.4081395073506391 0.42733645217635563 0.5192419691029252 0.39799729028929487 0.03990347409204987 0.013038212795705478 0.0043927214930709535 0.0016094244034674434 0.0015961297818598565 0.0002754711459087229; 0.014684836067894124 0.007863396938894306 0.016093036470496366 0.009825718452488018 0.0189014126385701 0.005844366606428707 0.13849007975235583 0.13706934957395644 0.3505681951871089 0.9408488893951146 0.9551754247357206 0.3639737993290779 0.21243271709551226 0.2843646309443169 0.29919652216983733 0.3870026762693761 0.2792653571316844 0.027184350652692695 0.008556747740127378 0.002461193413214283 0.0007652106152402142 0.0006987527433192667 9.397135335575793e-5; 0.021425769737078368 0.011961446785158796 0.023616854868073967 0.014831082339553991 0.027747811476019044 0.009060931748526886 0.17752833012020347 0.17401094944541437 0.40750501628989283 0.9721752042840985 0.985527711544548 0.4396878920679833 0.2681896715550059 0.35127963758750874 0.36800110805489483 0.46402546238163483 0.34531620678243374 0.037617774125204916 0.012368962147916036 0.0038068720385083673 0.001257026852505441 0.0011643628241787124 0.00016961483943713626; 0.2680295766735067 0.221500149894056 0.31408772981722 0.2566761906912133 0.37540034365943104 0.2022331299863698 0.7098399745938505 0.6395908524826316 0.6673967547317672 0.530245218387723 0.5266287956023967 1.0 0.9204011029470381 0.9763204269194343 0.9834744899012892 0.9800453255225883 0.9670027469525624 0.2868166055620744 0.1396173432997934 0.0802050018418445 0.04629682347632554 0.04928910656810396 0.015144618580948671; 0.29939058530607915 0.2978310573718274 0.3824704266612618 0.3496676024988405 0.5190650165661463 0.3174100045147389 0.897129803886899 0.8253149042783318 0.7023400808140081 0.3560307890203881 0.3307939384157074 0.9204011029470381 1.0 0.9092611854055276 0.9117485102579749 0.8437830107817399 0.8913223951781822 0.26003030092553525 0.1303827813666727 0.09015777074260106 0.06341517666632882 0.07518254013006463 0.03137762242865076; 0.37151489965630213 0.3053559535776424 0.4200037751884887 0.34456852113508585 0.46669986410386666 0.2670237514797323 0.6668121606496512 0.5796701178937012 0.5485677304431098 0.4238742345642878 0.43601990045358663 0.9763204269194343 0.9092611854055276 1.0 0.9993139026257465 0.9765798100043396 0.9987957619674939 0.39412877854863043 0.2098767698470255 0.12780803517686787 0.07623734052074496 0.07896775479712795 0.02470799941856937; 0.3524014409758097 0.2890446485251837 0.4001773046096343 0.3275077643059417 0.4490622985140926 0.2539121194008726 0.6725100792205622 0.5878473919825917 0.5670659502059522 0.44332843787390197 0.4539182184875824 0.9834744899012892 0.9117485102579749 0.9993139026257465 1.0 0.9815187936126483 0.9969143579721336 0.37562956856679103 0.19703163333480644 0.11850074321536054 0.07008717427360553 0.07279694039680448 0.022599211149285328; 0.39465231175913795 0.31587551141322445 0.43642677197878865 0.3530737581159885 0.46672673050010677 0.26715889535835474 0.622155656205321 0.5337483231906022 0.5046262630854164 0.41089803125627195 0.43085691731721165 0.961384843855092 0.8785837060449794 0.9969370612351908 0.9945537399369616 0.97609997854102 0.9995568027554731 0.4295214100756645 0.2338386266049015 0.14126529235623905 0.08283907919566438 0.08390006402557657 0.025324299741833464; 0.2908959282977835 0.22090114119439183 0.3219312217176709 0.25092423515822787 0.3499350203111987 0.18411214167319784 0.5926610833970605 0.5191073343197649 0.5624209010974132 0.5365850265213121 0.5591960801816629 0.9800453255225883 0.8437830107817399 0.9765798100043396 0.9815187936126483 1.0 0.9760363402932355 0.3396761689366942 0.17122729619266394 0.09352156540595309 0.05035919518075388 0.05038867912666139 0.01366097735931823; 0.3514836919845527 0.25827905726818784 0.37376328779438567 0.2871031630484072 0.3774708549469005 0.20356442769718722 0.527254124515189 0.4483191866084228 0.46652883939298834 0.4676429245287537 0.505344784277436 0.9424242881899214 0.7976158902909226 0.971098264163409 0.9709671758028702 0.9864017590543077 0.9781505431297239 0.42127512095013353 0.22585472214185204 0.1251177654786094 0.06693346651287566 0.06454104481834383 0.01690822793519799; 0.3880509811446821 0.3141485519019614 0.43280734456335546 0.35232020079983056 0.46962470972808273 0.26924082958699697 0.639910660474017 0.5515646672943586 0.5201938090487075 0.4136915663687128 0.4306259447317991 0.9670027469525624 0.8913223951781822 0.9987957619674939 0.9969143579721336 0.9760363402932355 1.0 0.4175584225095954 0.22574366435124235 0.13708488052338838 0.08106449463694666 0.08284201786267843 0.02541251142320079; 0.37961657901188395 0.25192283506342733 0.37396034073513706 0.27177013275063033 0.3316295475090898 0.17635188715914188 0.3805158733692937 0.31022132785589657 0.32995603743246077 0.4085529653091237 0.4713640504577533 0.8305039703656368 0.6510083421165387 0.8867144586887958 0.8825664115254728 0.9163437520779888 0.9045793138133195 0.5037709664927494 0.28752565713902434 0.1520569532177624 0.07546592900068064 0.0671567954033988 0.01522336553239881; 0.4702831429583742 0.3213335719746325 0.4597881972580735 0.34164544472267744 0.39813969852691955 0.22491433200447894 0.3765147624730655 0.3011668417307773 0.2904874285924168 0.3265331196970446 0.3807124240825537 0.7964028874115803 0.6475849179588237 0.878341751854222 0.8691210753475811 0.879767432078501 0.8991737718575608 0.5982998949558497 0.3633531261013041 0.20600362457781846 0.10808286790933438 0.09633093909886627 0.02331194601865261; 0.526795288057018 0.3940391213462967 0.5388779005079533 0.42266049253674903 0.49969396504753033 0.298501330474785 0.4644036535619441 0.37649106648873704 0.3319524786282605 0.300825324374188 0.33846013954020493 0.8391821514224157 0.7387531166728089 0.9266670512086935 0.9155922954238254 0.89576457108235 0.9431591120717556 0.6061425707332225 0.37032063184699016 0.22846758678703566 0.1315297906335085 0.12382813579712616 0.03470780014308738; 0.326708533419188 0.2430452816843132 0.3528498094599045 0.2724891632283225 0.36673219291844344 0.19573728896816622 0.5532605885480469 0.4759742322481321 0.5037422336172169 0.49604598976832465 0.5285094201634164 0.9600456733812273 0.81751796330167 0.9761094484348516 0.9780088993021706 0.9950015905287559 0.9801978533385329 0.3878742388347221 0.20288958549179464 0.11167812171391878 0.05985022255614695 0.05853988792012992 0.015526771107081744; 0.5619207849380442 0.38384512737319587 0.5345032833933165 0.39943888193571503 0.4372646966133805 0.26024918463886315 0.3280472343236939 0.2549281555415764 0.22593650441538846 0.24574382979335188 0.29442973469375133 0.7110437799713303 0.5859751095762021 0.8158127630991835 0.8019023386938486 0.7975187692574014 0.8407203767536858 0.7064956340024616 0.4621084542264419 0.27596525043225517 0.1494008366974313 0.13051365577846652 0.03227936170155413; 0.6430706658631261 0.45006841886534327 0.6078444172622047 0.46271359870464523 0.4874771713377931 0.30510864810623706 0.31132575025507137 0.23812417686552184 0.19454650831020817 0.19524813962125906 0.23598888415659178 0.6574493787863069 0.5585838247963583 0.7749782758058278 0.7580532503023097 0.7381503679619124 0.8009681622942774 0.7806334105161824 0.5376983537943203 0.34025026525820296 0.1929222057620414 0.16874582807373442 0.04406772611548003; 0.7231647963646257 0.5056851000850311 0.6655850205917616 0.509266230976612 0.5052334681260294 0.3323247700429202 0.2584463004813027 0.19226030577292572 0.14491990312468314 0.1411260347060979 0.17513016835138412 0.5593127995804646 0.4810917747190298 0.6847600297393145 0.6655572238457713 0.6373481626655303 0.7122690618954836 0.868572031742886 0.642367727412946 0.4270069268585453 0.2493471672518346 0.21386764096672656 0.05697307908855304; 0.6316227556282686 0.40743503740482884 0.5606965055218779 0.4084491148331317 0.4039103078167204 0.2507422704206328 0.21745362046021305 0.16055009821413815 0.13282860708891472 0.15755645787174735 0.20099144507894512 0.5395481654674688 0.4314691749241478 0.6558364264722154 0.6389336863189395 0.6324492597708506 0.6850231211028036 0.8312537908937804 0.6045643859848966 0.3697286562941463 0.19778414654099596 0.16205085142829598 0.037740738988576696; 0.7401079629435721 0.5428295877160711 0.7031806864585685 0.5526524918348173 0.5625668683648273 0.37535456334989986 0.3049670044118855 0.23040058563288934 0.16976699088029149 0.1490124483780644 0.1800509174051033 0.6031858853281993 0.5388764898497265 0.7305283258443571 0.7108620688983256 0.6720656802992333 0.756102320334855 0.846021274392779 0.614290483608926 0.42053331865050503 0.25553244125721153 0.22690103237680803 0.06489412637619173; 0.7774171295635275 0.5183587196531081 0.6671856182761694 0.5011275436908067 0.4439717097364589 0.3097901912593574 0.15499968292212957 0.10904978972531522 0.07466261292508483 0.07694096980958384 0.10184805385603908 0.3794525394526092 0.3203312365762359 0.4963074588528718 0.4773711871808398 0.4516508142874447 0.5236420497371012 0.9644741236400529 0.8060189579870737 0.5597466310187597 0.32836661338632694 0.2646093759094215 0.0677441637131662; 0.8181308100490108 0.5561243868737823 0.698575060593573 0.5324654697166794 0.45752368437996377 0.33230408198860933 0.14048366252196495 0.09759286203453564 0.06262356218316165 0.06053539611033345 0.08069598037760621 0.3368883734358375 0.29138104057505876 0.45023153710385133 0.4313705725132026 0.40132171704812075 0.4761351054919458 0.9870428644119942 0.8596029953159898 0.6251306019773151 0.38047255238126104 0.306893210606778 0.0820423232658685; 0.7328677140374111 0.45686249352211705 0.5790469862711584 0.4222181599919014 0.33080357486099415 0.2432499454983849 0.07720430058897658 0.05106405047245464 0.032093401151864966 0.0365474112100408 0.05215633420045098 0.22181457534510465 0.18089489184494278 0.3111666840414051 0.2960670894164659 0.27828806542602247 0.3336621538628581 0.9586604604379003 0.9112627551291514 0.6526801185016419 0.37822360606526256 0.2823655882683267 0.0674470136857995; 0.7515232704337115 0.4757416292999305 0.5968371635299031 0.43944272397447637 0.34313013101024226 0.2559666012514232 0.07813514522593748 0.051658187653842315 0.03172311639963259 0.0347198448127321 0.0493745953085397 0.21905996675855813 0.18130230551737894 0.3085046198554848 0.2932786599324534 0.273623488478172 0.33068669985787785 0.9653564796429168 0.9249527424633506 0.6753413167030635 0.3987464830705314 0.2999086114297358 0.07359809262134936; 0.8766234308310106 0.6220352391872924 0.750503533504958 0.5892979561473187 0.4883331096338951 0.3775897748372698 0.12677413631301512 0.08688786848645763 0.05039216793847928 0.04297162933120202 0.057385150231952155 0.2868166055620744 0.26003030092553525 0.39412877854863043 0.37562956856679103 0.3396761689366942 0.4175584225095954 1.0 0.9191899116391927 0.7213092819491199 0.46889441622459455 0.3828925347230843 0.11144275482456456; 0.8119268400431263 0.5616029351132952 0.6474473854693175 0.5069931386383051 0.3661982883577541 0.311649120820824 0.05829641266312954 0.03742883021724568 0.018577266239422643 0.01567128213557683 0.0223986923163361 0.14511479304623873 0.13244337225859604 0.21687298617558284 0.2038675593583631 0.17921730237397668 0.23341261540835537 0.9285566477571606 0.9982284285344054 0.8549662123185122 0.57919180548843 0.4463677903452444 0.1306883528369306; 0.82681374480545 0.5857825177211226 0.6647402210580929 0.5284801502144095 0.3798584854063081 0.33049550236819253 0.05828369828510033 0.03740368096386031 0.01791524354832784 0.01420754067753986 0.02019180375858439 0.1396173432997934 0.1303827813666727 0.2098767698470255 0.19703163333480644 0.17122729619266394 0.22574366435124235 0.9191899116391927 1.0 0.8822702532119937 0.6152795204486762 0.47978346763635193 0.14650071169191572; 0.822809521622991 0.5948037025016687 0.661623292177756 0.5335057440538382 0.37607346176075984 0.33764855167756436 0.05284701060910418 0.033662036456081526 0.015324720335777151 0.011444005832743251 0.016295443067505327 0.12330208096295307 0.11778021084065203 0.18808039767468007 0.17608616190280213 0.1508937925165944 0.2025242052804488 0.8905990321407163 0.9966670165629197 0.9131581140097302 0.6576167422401595 0.5153533855760121 0.16390625359706507; 0.7332380005310724 0.47966685651323304 0.561270991827678 0.4262991752111288 0.2962414470348876 0.24973189593616663 0.04268972320232483 0.026811837976605572 0.013507495536566362 0.012805825713678201 0.018952874629094556 0.11843861804971419 0.1036060543552713 0.18023196881388742 0.16904117283919085 0.1504765142358632 0.1952861714325238 0.8869877129551653 0.9842217337887395 0.8203423350576758 0.5328025632598246 0.39324760863940933 0.10628991718440418; 0.7187809376310704 0.4761254396371267 0.54656074185958 0.4194008209483607 0.28353726603906537 0.24690043097609538 0.03654000044570406 0.022681143697437862 0.010842333019539772 0.009820791891003388 0.014650008345521303 0.10032334124866865 0.08930018079843059 0.15556684998216727 0.14542078103482645 0.12776685893780718 0.16895268664252294 0.8526318330670217 0.9806401970911786 0.8475881317911022 0.5659917900792554 0.416984564845228 0.11622851300686755; 0.8144257681324784 0.6973386670166851 0.6926170128782051 0.6217604813241744 0.4217137127807958 0.4440238046305932 0.04500739970678052 0.028523064291676215 0.010043369678747171 0.00483919981495718 0.006632129374597611 0.0802050018418445 0.09015777074260106 0.12780803517686787 0.11850074321536054 0.09352156540595309 0.13708488052338838 0.7213092819491199 0.8822702532119937 1.0 0.8855923329934225 0.7530367236790085 0.3226608405615575; 0.7464895770624135 0.5594351352421899 0.5895776094001356 0.4895311220674548 0.319643609141359 0.3143758003701468 0.03288525229499247 0.020274680144724787 0.007964199195053414 0.005222443768633631 0.0075982008115135 0.07437307723826476 0.0746522813603369 0.11956373319655095 0.11089845782781486 0.09158557641127746 0.12957243004933744 0.7640400790614297 0.9450363171851921 0.9591969772942559 0.7472623695905949 0.5830550774121601 0.20244287264478314; 0.7530030245919059 0.5431234673379363 0.5891717554326777 0.47712932171407574 0.3166487512948445 0.2985208761222979 0.035649105448995015 0.022080553461329762 0.009286847786499046 0.006751278027436788 0.009875494227672841 0.08544232307820761 0.08252777611615113 0.13536175637433384 0.1259284644875634 0.10617928562160212 0.14670596019757695 0.8076447950677335 0.9703716409266376 0.932762917865407 0.690834745158495 0.5304385201337295 0.17171039308680663; 0.8235336782281178 0.6405111214096829 0.6751170957730195 0.5708263832967825 0.3913225084959072 0.3799338589125705 0.04683919106442962 0.02961614926842436 0.011883757732761544 0.00729943919314527 0.010273385080068998 0.09769000743415807 0.10036147536710764 0.1529345825839084 0.1424119148518332 0.11739714058688706 0.1645958816308224 0.8155975950934103 0.9611942517618203 0.9745530337256978 0.7718025112426161 0.6243230838122039 0.22676040918673873; 0.6867468433693716 0.5331666327402476 0.5401499281722351 0.4602101153093634 0.2874857014122235 0.3013099698294809 0.02441925668731399 0.014789893132036517 0.005242128466115685 0.003076690211929651 0.00451111846293758 0.05293690792581018 0.05540759589202033 0.08787213190071044 0.08102581610167775 0.06510209996936658 0.09551563939482735 0.6693717151437683 0.8805139185030549 0.962976949860865 0.7977752137717908 0.625906121249835 0.23426112680791764; 0.6123022959216866 0.4999976772262982 0.48269268480676464 0.42595719513313823 0.25449585634974026 0.28756933949188684 0.017618908610842147 0.010493756806911569 0.0032937887074633177 0.001666429247984283 0.0024505350619450157 0.03569336809287439 0.03950235279527152 0.061294039927021746 0.056157172390876364 0.04361457849901721 0.06678097895617935 0.5585565589403414 0.784685636948393 0.9400073084858939 0.8422729086934179 0.6700290694351737 0.27733472967577766; 0.5208071432762769 0.44790727672851793 0.4112620733348449 0.37629227912890906 0.2144655272958558 0.26209976266649593 0.011972269254734097 0.007004322353126643 0.001936938649234545 0.0008408093661474044 0.0012409452628291877 0.022638140748971483 0.026538216827193314 0.040289711699862236 0.036665355400374564 0.02748985316984334 0.04400815817355934 0.44374622631342764 0.6680658291966547 0.8797756865237958 0.8549882792013699 0.6895556341694858 0.3166405198571644; 0.5891681247974004 0.6090837294623026 0.5248133057027008 0.5327362038278587 0.33368944124026373 0.43261895730019134 0.022886397413172065 0.01418017863278169 0.0035688318479617353 0.0010351877552663635 0.0013814109028705312 0.030641695234509592 0.041619482122225035 0.0524656862959539 0.047934392864311254 0.03415916876832351 0.05624683422303738 0.4144251498547713 0.5845546024608902 0.8657575960256906 0.9832623417700396 0.9050029006040501 0.5474453725428048; 0.6772129558340088 0.7178826818314505 0.6277007998632926 0.6430231195027034 0.4303538604829861 0.5378606847561948 0.03699408218865754 0.023677093828563235 0.006325305381042625 0.0017871776252900312 0.002298515218977774 0.04629682347632554 0.06341517666632882 0.07623734052074496 0.07008717427360553 0.05035919518075388 0.08106449463694666 0.46889441622459455 0.6152795204486762 0.8855923329934225 1.0 0.95317462877265 0.5874035637208949; 0.5749644296822503 0.5614640934267493 0.49299286294186273 0.48468047798417707 0.2942832944957974 0.3752064819757136 0.018804501447141315 0.011435890401526988 0.002955760433948493 0.0009704067285291062 0.0013371056870898458 0.028038292943887058 0.036400349970850336 0.04864456022600958 0.044380183342761476 0.032110546803158134 0.052463579032817904 0.42901781989141297 0.6188663970979027 0.885220316479004 0.9589037954214876 0.8466889875934079 0.4705785731761298; 0.5966298504595813 0.6497959021929185 0.5508610734329186 0.575651052751428 0.37181328597797036 0.48854896269750847 0.02743297932990087 0.01730727969785368 0.004264146632423846 0.0011057799083934747 0.0014316397886228248 0.03325744456483746 0.04705515434685252 0.056183095043217876 0.051409730819183534 0.036153416730729984 0.0598890375403915 0.3978048409442719 0.5482579229273747 0.8366872356964472 0.9911306477477079 0.9482157541926657 0.6192712131547955; 0.6360692761241019 0.7710611517712889 0.6433503699452944 0.7109544049100224 0.5091151748567635 0.6649412466468505 0.05063099709508791 0.033770552150204226 0.00840984174401409 0.0017700462041020729 0.0021163880760639107 0.04928910656810396 0.07518254013006463 0.07896775479712795 0.07279694039680448 0.05038867912666139 0.08284201786267843 0.3828925347230843 0.47978346763635193 0.7530367236790085 0.95317462877265 1.0 0.7536774603025823; 0.37477044321888536 0.4349863927333212 0.3388839022817558 0.3720494346085627 0.21519711025421284 0.3253138317147909 0.010037093974181666 0.0060467417410972725 0.0011875118732063588 0.0002480707283038141 0.0003300424159388177 0.011407470827613422 0.017521330331462935 0.020814669795918655 0.018784268442022023 0.012463171657650072 0.02238095595512163 0.227469653973088 0.3632368032599243 0.6505486498358429 0.8743314602327298 0.8366314316745298 0.6323552576352361; 0.4308494365065684 0.5521961142878209 0.42568510936624304 0.49172463488628315 0.3159269411000278 0.47114743317643165 0.020125652113509692 0.012821784701747635 0.0025763216834118296 0.0004459216390885389 0.000548863514666901 0.01860102653889555 0.03056557154533914 0.03212075732520414 0.029217027826914762 0.01915472861237837 0.03399621120406532 0.23833695351973763 0.3445536527228856 0.6283027956928183 0.8935450448439365 0.9340508327639085 0.803367738440086; 0.42588556793724963 0.514599887489171 0.40225454811321515 0.45008699593865603 0.2764547431869833 0.4095893081877711 0.015610214582617616 0.009697779434859725 0.001968411270910264 0.0003845846633845169 0.0004920266487864112 0.016205332099098156 0.025484432603544913 0.028598027606397586 0.025939220913629255 0.017212264615019613 0.030497065232210633 0.24978921540415677 0.3752433713507336 0.6671808968998799 0.9094166321017612 0.9070024503194692 0.717969244338302; 0.25616724404676827 0.36064432234093263 0.25458348363076183 0.31381508570267086 0.18628923825270452 0.3185209800604343 0.0082263007895151 0.005088772835099111 0.0008198400207983819 0.00010788314848899607 0.0001332981971132782 0.006693772956053487 0.012191493624789688 0.01228286410458982 0.011044429533844548 0.0068049702629956145 0.0130512812361402 0.1253743856343511 0.2039176585333789 0.43910102741499013 0.7211374530045427 0.7744022012346895 0.802098239373476; 0.28531440235914857 0.4002858555284273 0.28636704091166787 0.3513821641026911 0.21409246587444314 0.35723120432949906 0.010439773572454236 0.006534374708804699 0.001095215285484182 0.00014740693870887804 0.0001802894669450021 0.00845972297584198 0.015272137647549196 0.015263798894214076 0.013764458115931638 0.008556389143525862 0.016176721587662174 0.1409025065904775 0.22200076169575395 0.46602649035313587 0.7524428671746313 0.8131717721925134 0.8296434593833473; 0.24903410779923643 0.35904933061176014 0.25127407578055966 0.31395393231584934 0.18847617044543946 0.3249998991514615 0.008516438259839807 0.005305086528612752 0.0008432117182715994 0.00010526431950490199 0.0001284332102931466 0.006629678280122173 0.012309626926329458 0.012112089324700176 0.010895282626047198 0.006667249932579161 0.012840082356890036 0.11887527798719272 0.1919477286751715 0.4200001386101343 0.7041663984132576 0.76897079297106 0.8256707173813529; 0.22886067841582372 0.3877508069941566 0.26235980762663824 0.35736249399182723 0.2450825591516219 0.42670313988850206 0.01598520519681239 0.010717359719015747 0.0016793924477414128 0.00015125353768022373 0.00016529025327248037 0.009017807932986543 0.018843636469128917 0.015426968275166236 0.013999905415617844 0.008311948797036561 0.01600287954319619 0.09324670458766982 0.13395130511607745 0.31152426355295504 0.5837246484964872 0.7272861670149322 0.9767715590737112; 0.22999157462853717 0.3739192895482388 0.2539677229913929 0.3387311467563276 0.22207608922889335 0.3892663265674966 0.012660670510976866 0.008288158348560032 0.0012841413529425093 0.00012498125252143175 0.00014115406860773277 0.007787904576648366 0.015827422324756663 0.013643282830861742 0.012338925297899555 0.007359598121597874 0.01424797224163647 0.09737079522136055 0.14601439689786624 0.337413917584164 0.6179492443333177 0.741809464150622 0.9445687130630891; 0.17472537202867305 0.31946950253651746 0.20757504481875824 0.2960646945670436 0.2043837708525398 0.37471801359443757 0.012869683364298182 0.00870439065575205 0.001255146163388405 9.40099767528817e-5 9.993772188331276e-5 0.006372183619931549 0.014253099520981844 0.0109507207417646 0.009919585760279565 0.005713849249271425 0.011310824574965789 0.06534582815086555 0.09496735574229902 0.23825024277808274 0.48407885194721434 0.6304863404013172 0.9601419182825064; 0.27226866397259536 0.4654568122945319 0.32400415670963956 0.44057810112560447 0.32622076287640006 0.5362623212460318 0.028066326109481347 0.0195077208623248 0.0033555198691232182 0.00030801400193521903 0.00032463677682729514 0.015144618580948671 0.03137762242865076 0.02470799941856937 0.022599211149285328 0.01366097735931823 0.02541251142320079 0.11144275482456456 0.14650071169191572 0.3226608405615575 0.5874035637208949 0.7536774603025823 1.0; 0.1378713016583555 0.2643436673110578 0.16623288617478832 0.24439157750945995 0.16654595332868682 0.319866938036741 0.009632633551903613 0.0064994006534456195 0.0008695399375500576 5.753081953910816e-5 6.056131084754415e-5 0.004425777296702749 0.010366726569778452 0.007709894663229764 0.006963352996732379 0.003917093375501153 0.007956455372461188 0.04872180791505365 0.07277779799754423 0.19415214531611902 0.41848453319317924 0.5573025470555464 0.9233874841127124], Int32[1, 2, 3, 4, 6, 7, 24, 25, 30, 46, 47, 51, 52, 53, 54, 56, 58, 72, 74, 78, 86, 89, 99], LIBSVM.SVMNode[LIBSVM.SVMNode(0, 1.0), LIBSVM.SVMNode(0, 2.0), LIBSVM.SVMNode(0, 3.0), LIBSVM.SVMNode(0, 4.0), LIBSVM.SVMNode(0, 6.0), LIBSVM.SVMNode(0, 7.0), LIBSVM.SVMNode(0, 24.0), LIBSVM.SVMNode(0, 25.0), LIBSVM.SVMNode(0, 30.0), LIBSVM.SVMNode(0, 46.0), LIBSVM.SVMNode(0, 47.0), LIBSVM.SVMNode(0, 51.0), LIBSVM.SVMNode(0, 52.0), LIBSVM.SVMNode(0, 53.0), LIBSVM.SVMNode(0, 54.0), LIBSVM.SVMNode(0, 56.0), LIBSVM.SVMNode(0, 58.0), LIBSVM.SVMNode(0, 72.0), LIBSVM.SVMNode(0, 74.0), LIBSVM.SVMNode(0, 78.0), LIBSVM.SVMNode(0, 86.0), LIBSVM.SVMNode(0, 89.0), LIBSVM.SVMNode(0, 99.0)]), 0.0, [1.0; 1.0; 1.0; 1.0; 0.4545873718969774; 0.36172853884920114; 1.0; 1.0; 0.9976825435225717; 1.0; 1.0; -1.0; -1.0; -1.0; -1.0; -0.5005315477488701; -0.21806563021962358; -1.0; -0.3833339180359196; -1.0; -0.7120673582643366; -1.0; -1.0;;], Float64[], Float64[], [-0.015075000482567661], 3, 0.01, 200.0, 0.001, 1.0, 0.5, 0.1, true, false)

Prediction

For evaluation, we create a 100×100 2D grid based on the extent of the training data:

test_range = range(floor(Int, minimum(X)), ceil(Int, maximum(X)); length=100)
x_test = ColVecs(mapreduce(collect, hcat, Iterators.product(test_range, test_range)));

Again, we pass the result of KernelFunctions.jl's kernelmatrix to LIBSVM:

y_pred, _ = svmpredict(model, kernelmatrix(k, x_train, x_test));

We can see that the kernelized, non-linear classification successfully separates the two classes in the training data:

plot(; lim=extrema(test_range), aspect_ratio=1)
contourf!(
    test_range,
    test_range,
    y_pred;
    levels=1,
    color=cgrad(:redsblues),
    alpha=0.7,
    colorbar_title="prediction",
)
scatter!(X1[:, 1], X1[:, 2]; color=:red, label="training data: class –1")
scatter!(X2[:, 1], X2[:, 2]; color=:blue, label="training data: class 1")

Package and system information
Package information (click to expand)
Status `~/work/KernelFunctions.jl/KernelFunctions.jl/examples/support-vector-machine/Project.toml`
  [31c24e10] Distributions v0.25.107
  [ec8451be] KernelFunctions v0.10.63 `/home/runner/work/KernelFunctions.jl/KernelFunctions.jl#master`
  [b1bec4e5] LIBSVM v0.8.0
  [98b081ad] Literate v2.16.1
  [91a5bcdd] Plots v1.40.3
  [37e2e46d] LinearAlgebra
To reproduce this notebook's package environment, you can download the full Manifest.toml.
System information (click to expand)
Julia Version 1.10.2
Commit bd47eca2c8a (2024-03-01 10:14 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 4 × AMD EPYC 7763 64-Core Processor
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)
Environment:
  JULIA_DEBUG = Documenter
  JULIA_LOAD_PATH = :/home/runner/.julia/packages/JuliaGPsDocs/7M86H/src

This page was generated using Literate.jl.