Wykład 9

This commit is contained in:
Paweł Skórzewski 2022-12-09 15:06:17 +01:00
parent 773f85319a
commit 2a2ff36b44
7 changed files with 42267 additions and 1631 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

2245
wyk/09_NB_i_KNN.ipynb Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,722 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Uczenie maszynowe\n",
"# 10. Przegląd metod uczenia nadzorowanego część 2"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## 10.1. Drzewa decyzyjne"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Drzewa decyzyjne przykład"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"slideshow": {
"slide_type": "notes"
}
},
"outputs": [],
"source": [
"# Przydatne importy\n",
"\n",
"import ipywidgets as widgets\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Day Outlook Humidity Wind Play\n",
"0 1 Sunny High Weak No\n",
"1 2 Sunny High Strong No\n",
"2 3 Overcast High Weak Yes\n",
"3 4 Rain High Weak Yes\n",
"4 5 Rain Normal Weak Yes\n",
"5 6 Rain Normal Strong No\n",
"6 7 Overcast Normal Strong Yes\n",
"7 8 Sunny High Weak No\n",
"8 9 Sunny Normal Weak Yes\n",
"9 10 Rain Normal Weak Yes\n",
"10 11 Sunny Normal Strong Yes\n",
"11 12 Overcast High Strong Yes\n",
"12 13 Overcast Normal Weak Yes\n",
"13 14 Rain High Strong No\n"
]
}
],
"source": [
"alldata = pandas.read_csv('tennis.tsv', sep='\\t')\n",
"print(alldata)"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/plain": [
"{'Outlook': {'Overcast', 'Rain', 'Sunny'},\n",
" 'Humidity': {'High', 'Normal'},\n",
" 'Wind': {'Strong', 'Weak'}}"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Dane jako lista słowników\n",
"data = alldata.T.to_dict().values()\n",
"features = ['Outlook', 'Humidity', 'Wind']\n",
"\n",
"# Możliwe wartości w poszczególnych kolumnach\n",
"values = {feature: set(row[feature] for row in data)\n",
" for feature in features}\n",
"values"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"* Czy John zagra w tenisa, jeżeli będzie padać, przy wysokiej wilgotności i silnym wietrze?\n",
"* Algorytm drzew decyzyjnych spróbuje _zrozumieć_ „taktykę” Johna.\n",
"* Wykorzystamy metodę „dziel i zwyciężaj”."
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [],
"source": [
"# Podziel dane\n",
"def split(features, data):\n",
" values = {feature: list(set(row[feature]\n",
" for row in data))\n",
" for feature in features}\n",
" if not features:\n",
" return data\n",
" return {val: split(features[1:],\n",
" [row for row in data\n",
" if row[features[0]] == val])\n",
" for val in values[features[0]]}"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\tOutlook\tHumid\tWind\tPlay\n",
"Day 1:\tSunny\tHigh\tWeak\tNo\n",
"Day 2:\tSunny\tHigh\tStrong\tNo\n",
"Day 8:\tSunny\tHigh\tWeak\tNo\n",
"Day 9:\tSunny\tNormal\tWeak\tYes\n",
"Day 11:\tSunny\tNormal\tStrong\tYes\n",
"\n",
"\tOutlook\tHumid\tWind\tPlay\n",
"Day 4:\tRain\tHigh\tWeak\tYes\n",
"Day 5:\tRain\tNormal\tWeak\tYes\n",
"Day 6:\tRain\tNormal\tStrong\tNo\n",
"Day 10:\tRain\tNormal\tWeak\tYes\n",
"Day 14:\tRain\tHigh\tStrong\tNo\n",
"\n",
"\tOutlook\tHumid\tWind\tPlay\n",
"Day 3:\tOvercast\tHigh\tWeak\tYes\n",
"Day 7:\tOvercast\tNormal\tStrong\tYes\n",
"Day 12:\tOvercast\tHigh\tStrong\tYes\n",
"Day 13:\tOvercast\tNormal\tWeak\tYes\n"
]
}
],
"source": [
"split_data = split(['Outlook'], data)\n",
"\n",
"for outlook in values['Outlook']:\n",
" print('\\n\\tOutlook\\tHumid\\tWind\\tPlay')\n",
" for row in split_data[outlook]:\n",
" print('Day {Day}:\\t{Outlook}\\t{Humidity}\\t{Wind}\\t{Play}'\n",
" .format(**row))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Obserwacja: John lubi grać, gdy jest pochmurnie.\n",
"\n",
"W pozostałych przypadkach podzielmy dane ponownie:"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\tOutlook\tHumid\tWind\tPlay\n",
"Day 1:\tSunny\tHigh\tWeak\tNo\n",
"Day 2:\tSunny\tHigh\tStrong\tNo\n",
"Day 8:\tSunny\tHigh\tWeak\tNo\n",
"\n",
"\tOutlook\tHumid\tWind\tPlay\n",
"Day 9:\tSunny\tNormal\tWeak\tYes\n",
"Day 11:\tSunny\tNormal\tStrong\tYes\n"
]
}
],
"source": [
"split_data_sunny = split(['Outlook', 'Humidity'], data)\n",
"\n",
"for humidity in values['Humidity']:\n",
" print('\\n\\tOutlook\\tHumid\\tWind\\tPlay')\n",
" for row in split_data_sunny['Sunny'][humidity]:\n",
" print('Day {Day}:\\t{Outlook}\\t{Humidity}\\t{Wind}\\t{Play}'\n",
" .format(**row))"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"\tOutlook\tHumid\tWind\tPlay\n",
"Day 6:\tRain\tNormal\tStrong\tNo\n",
"Day 14:\tRain\tHigh\tStrong\tNo\n",
"\n",
"\tOutlook\tHumid\tWind\tPlay\n",
"Day 4:\tRain\tHigh\tWeak\tYes\n",
"Day 5:\tRain\tNormal\tWeak\tYes\n",
"Day 10:\tRain\tNormal\tWeak\tYes\n"
]
}
],
"source": [
"split_data_rain = split(['Outlook', 'Wind'], data)\n",
"\n",
"for wind in values['Wind']:\n",
" print('\\n\\tOutlook\\tHumid\\tWind\\tPlay')\n",
" for row in split_data_rain['Rain'][wind]:\n",
" print('Day {Day}:\\t{Outlook}\\t{Humidity}\\t{Wind}\\t{Play}'\n",
" .format(**row))"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"* Outlook=\n",
" * Overcast\n",
" * → Playing\n",
" * Sunny\n",
" * Humidity=\n",
" * High\n",
" * → Not playing\n",
" * Normal\n",
" * → Playing\n",
" * Rain\n",
" * Wind=\n",
" * Weak\n",
" * → Playing\n",
" * Strong\n",
" * → Not playing"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"* (9/5)\n",
" * Outlook=Overcast (4/0)\n",
" * YES\n",
" * Outlook=Sunny (2/3)\n",
" * Humidity=High (0/3)\n",
" * NO\n",
" * Humidity=Normal (2/0)\n",
" * YES\n",
" * Outlook=Rain (3/2)\n",
" * Wind=Weak (3/0)\n",
" * YES\n",
" * Wind=Strong (0/2)\n",
" * NO"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Algorytm ID3"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Pseudokod algorytmu:\n",
"\n",
"* podziel(węzeł, zbiór przykładów):\n",
" 1. A ← najlepszy atrybut do podziału zbioru przykładów\n",
" 1. Dla każdej wartości atrybutu A, utwórz nowy węzeł potomny\n",
" 1. Podziel zbiór przykładów na podzbiory według węzłów potomnych\n",
" 1. Dla każdego węzła potomnego i podzbioru:\n",
" * jeżeli podzbiór jest jednolity: zakończ\n",
" * w przeciwnym przypadku: podziel(węzeł potomny, podzbiór)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Jak wybrać „najlepszy atrybut”?\n",
"* powinien zawierać jednolity podzbiór\n",
"* albo przynajmniej „w miarę jednolity”\n",
"\n",
"Skąd wziąć miarę „jednolitości” podzbioru?\n",
"* miara powinna być symetryczna (4/0 vs. 0/4)"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Entropia\n",
"\n",
"$$ H(S) = - p_{(+)} \\log p_{(+)} - p_{(-)} \\log p_{(-)} $$\n",
"\n",
"* $S$ podzbiór przykładów\n",
"* $p_{(+)}$, $p_{(-)}$ procent pozytywnych/negatywnych przykładów w $S$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Entropię można traktować jako „liczbę bitów” potrzebną do sprawdzenia, czy losowo wybrany $x \\in S$ jest pozytywnym, czy negatywnym przykładem."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Przykład:\n",
"\n",
"* (3 TAK / 3 NIE):\n",
"$$ H(S) = -\\frac{3}{6} \\log\\frac{3}{6} - \\frac{3}{6} \\log\\frac{3}{6} = 1 \\mbox{ bit} $$\n",
"* (4 TAK / 0 NIE):\n",
"$$ H(S) = -\\frac{4}{4} \\log\\frac{4}{4} - \\frac{0}{4} \\log\\frac{0}{4} = 0 \\mbox{ bitów} $$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### *Information gain*\n",
"\n",
"*Information gain* różnica między entropią przed podziałem a entropią po podziale (podczas podziału entropia zmienia się):\n",
"\n",
"$$ \\mathop{\\rm Gain}(S,A) = H(S) - \\sum_{V \\in \\mathop{\\rm Values(A)}} \\frac{|S_V|}{|S|} H(S_V) $$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Przykład:\n",
"\n",
"$$ \\mathop{\\rm Gain}(S, Wind) = H(S) - \\frac{8}{14} H(S_{Wind={\\rm Weak}}) - \\frac{6}{14} H(S_{Wind={\\rm Strong}}) = \\\\\n",
"= 0.94 - \\frac{8}{14} \\cdot 0.81 - \\frac{6}{14} \\cdot 1.0 = 0.049 $$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"* _Information gain_ jest całkiem sensowną heurystyką wskazującą, który atrybut jest najlepszy do dokonania podziału.\n",
"* **Ale**: _information gain_ przeszacowuje użyteczność atrybutów, które mają dużo różnych wartości.\n",
"* **Przykład**: gdybyśmy wybrali jako atrybut *datę*, otrzymalibyśmy bardzo duży *information gain*, ponieważ każdy podzbiór byłby jednolity, a nie byłoby to ani trochę użyteczne!"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### _Information gain ratio_\n",
"\n",
"$$ \\mathop{\\rm GainRatio}(S, A) = \\frac{ \\mathop{\\rm Gain}(S, A) }{ -\\sum_{V \\in \\mathop{\\rm Values}(A)} \\frac{|S_V|}{|S|} \\log\\frac{|S_V|}{|S|} } $$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"* _Information gain ratio_ może być lepszym wyborem heurystyki wskazującej najużyteczniejszy atrybut, jeżeli atrybuty mają wiele różnych wartości."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Drzewa decyzyjne a formuły logiczne\n",
"\n",
"Drzewo decyzyjne można pzekształcić na formułę logiczną w postaci normalnej (DNF):\n",
"\n",
"$$ Play={\\rm True} \\Leftrightarrow \\left( Outlook={\\rm Overcast} \\vee \\\\\n",
"( Outlook={\\rm Rain} \\wedge Wind={\\rm Weak} ) \\vee \\\\\n",
"( Outlook={\\rm Sunny} \\wedge Humidity={\\rm Normal} ) \\right) $$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Klasyfikacja wieloklasowa przy użyciu drzew decyzyjnych\n",
"\n",
"Algorytm przebiega analogicznie, zmienia się jedynie wzór na entropię:\n",
"\n",
"$$ H(S) = -\\sum_{y \\in Y} p_{(y)} \\log p_{(y)} $$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Skuteczność algorytmu ID3\n",
"\n",
"* Przyjmujemy, że wśród danych uczących nie ma duplikatów (tj. przykładów, które mają jednakowe cechy $x$, a mimo to należą do różnych klas $y$).\n",
"* Wówczas algorytm drzew decyzyjnych zawsze znajdzie rozwiązanie, ponieważ w ostateczności będziemy mieli węzły 1-elementowe na liściach drzewa."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Nadmierne dopasowanie drzew decyzyjnych\n",
"\n",
"* Zauważmy, że w miarę postępowania algorytmu dokładność przewidywań drzewa (*accuracy*) liczona na zbiorze uczącym dąży do 100% (i w ostateczności osiąga 100%, nawet kosztem jednoelementowych liści).\n",
"* Takie rozwiązanie niekoniecznie jest optymalne. Dokładność na zbiorze testowym może być dużo niższa, a to oznacza nadmierne dopasowanie."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"#### Jak zapobiec nadmiernemu dopasowaniu?\n",
"\n",
"Aby zapobiegać nadmiernemu dopasowaniu drzew decyzyjnych, należy je przycinać (*pruning*)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Można tego dokonywać na kilka sposobów:\n",
"* Można zatrzymywać procedurę podziału w pewnym momencie (np. kiedy podzbiory staja się zbyt małe).\n",
"* Można najpierw wykonać algorytm ID3 w całości, a następnie przyciąć drzewo, np. kierując się wynikami uzyskanymi na zbiorze walidacyjnym.\n",
"* Algorytm _sub-tree replacement pruning_ (algorytm zachłanny)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"#### Algorytm _Sub-tree replacement pruning_\n",
"\n",
"1. Dla każdego węzła:\n",
" 1. Udaj, że usuwasz węzeł wraz z całym zaczepionym w nim poddrzewem.\n",
" 1. Dokonaj ewaluacji na zbiorze walidacyjnym.\n",
"1. Usuń węzeł, którego usunięcie daje największą poprawę wyniku.\n",
"1. Powtarzaj, dopóki usuwanie węzłów poprawia wynik."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Zalety drzew decyzyjnych\n",
"\n",
"* Zasadę działania drzew decyzyjnych łatwo zrozumieć człowiekowi.\n",
"* Atrybuty, które nie wpływają na wynik, mają _gain_ równy 0, zatem są od razu pomijane przez algorytm.\n",
"* Po zbudowaniu, drzewo decyzyjne jest bardzo szybkim klasyfikatorem (złożoność $O(d)$, gdzie $d$ jest głębokościa drzewa)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"### Wady drzew decyzyjnych\n",
"\n",
"* ID3 jest algorytmem zachłannym może nie wskazać najlepszego drzewa.\n",
"* Nie da się otrzymać granic klas (*decision boundaries*), które nie są równoległe do osi wykresu."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"### Lasy losowe"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"#### Algorytm lasów losowych idea\n",
"\n",
"* Algorytm lasów losowych jest rozwinięciem algorytmu ID3.\n",
"* Jest to bardzo wydajny algorytm klasyfikacji.\n",
"* Zamiast jednego, będziemy budować $k$ drzew."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"#### Algorytm lasów losowych budowa lasu\n",
"\n",
"1. Weź losowy podzbiór $S_r$ zbioru uczącego.\n",
"1. Zbuduj pełne (tj. bez przycinania) drzewo decyzyjne dla $S_r$, używając algorytmu ID3 z następującymi modyfikacjami:\n",
" * podczas podziału używaj losowego $d$-elementowego podzbioru atrybutów,\n",
" * obliczaj _gain_ względem $S_r$.\n",
"1. Powyższą procedurę powtórz $k$-krotnie, otrzymując $k$ drzew ($T_1, T_2, \\ldots, T_k$)."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"#### Algorytm lasów losowych predykcja\n",
"\n",
"1. Sklasyfikuj $x$ według każdego z drzew $T_1, T_2, \\ldots, T_k$ z osobna.\n",
"1. Użyj głosowania większościowego: przypisz klasę przewidzianą przez najwięcej drzew."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## 10.2. Maszyny wektorów nośnych"
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.10.6"
},
"livereveal": {
"start_slideshow_at": "selected",
"theme": "white"
}
},
"nbformat": 4,
"nbformat_minor": 4
}

100
wyk/bayes_nasty.tsv Normal file
View File

@ -0,0 +1,100 @@
0 0.7544830909519196 -0.7557810097698512
0 -0.401040192413354 0.05087719368515575
0 -0.14557860894357444 -0.9167657103778997
0 0.15606723792840116 0.7049866105111644
0 0.595321005153232 -0.3993704503800295
0 -0.21608773803320203 -0.9473358133826528
1 -0.9991678089071083 -0.8203462932941652
0 -0.29270128006691776 0.8999761729296656
0 -0.3744408488491382 0.5298017577688894
0 -0.13262908466039347 0.016485142896286442
1 -0.45382240999178936 -0.6292411536948919
1 0.8466491727357144 0.7677619536810258
0 0.5640604742334225 -0.6415301955014154
1 0.7652661495157325 0.9042394673218532
0 0.027488607545269383 -0.8561480245619784
0 0.8937874814271918 -0.568262764805403
1 0.05865567400417637 0.1271824506485506
0 0.1350578652393759 -0.8468795247716823
0 -0.03351382194744046 0.7225677368658248
0 0.031698854294282874 -0.1745522030261808
0 0.9764007293531329 0.0407596854507819
1 0.8575290920021019 0.5995196615047915
1 -0.5942919380814724 -0.9173657127389143
0 0.019297633607670894 0.7171922933333184
0 0.23496958271638224 -0.4505947779446391
0 -0.15627176851413638 -0.6255991840738957
0 -0.5436468155122751 0.7321778365594638
0 -0.0016772778866704918 0.9953499312779903
0 -0.49022669174509304 0.7643365578090109
0 0.9274390975500406 -0.16941260003761904
0 0.517483672350449 -0.9259720728025793
0 0.4993683788149732 -0.8086741166111076
1 -0.8954705171891042 -0.8352780222016363
1 -0.35723728886723927 -0.6472670626320902
0 -0.45030919789416135 -0.014680291690282399
1 -0.3149222964035554 -0.2363491678998142
0 -0.21632030129179247 0.9937719759687991
0 -0.3479296178713067 0.7754592480508431
1 -0.39993029073188713 -0.4021302940990339
0 0.22575455897529628 0.914503661895917
0 0.7221094132486976 -0.07187829685579739
1 0.8767936705571608 0.9516806200255943
1 0.2252335689492453 0.7031994893573623
0 0.742017840295591 -0.19165119600215896
1 -0.18782565699518372 -0.1408083939313467
0 -0.8222264182672563 0.17050362212981707
0 -0.1701252998869296 0.3450076829291753
0 -0.7342893613133503 0.40778605218980135
0 0.042695758461734235 -0.1484132507659468
1 0.3863429870565578 0.1571106834539837
0 -0.015388135282204507 -0.3364073902228679
0 -0.8487467820993619 0.1089427832313854
1 -0.6329015029648661 -0.7736052613400564
1 -0.858908407978868 -0.7378977770454969
1 0.6990672273176652 0.9222225234574595
0 -0.256431985135285 0.5758502205935434
0 -0.17330338780141252 0.30560812863161035
1 0.3523362003038917 0.4815180921326969
0 -0.10269592106863401 -0.7847042700361848
1 0.2559692323662084 0.048849842553034595
0 -0.8044820701681799 0.504663314011591
0 0.07877786671385811 0.9947392835524949
0 -0.8828875946641657 0.39461445063748224
0 -0.5143275957869704 0.09502394806995929
1 -0.5268239422759475 -0.11354182377636213
0 0.2946171361928087 -0.3186572090869646
0 0.7198334843462129 -0.6141975273104947
1 0.48428859765324495 0.8946857548947542
0 0.4621095070919994 -0.8924571872043978
0 0.4528371532815365 -0.5807667653397828
0 -0.09742500656072872 0.4945581379995849
1 0.777026015997778 0.3617742992147488
0 0.7791679792171657 -0.9220886356412603
0 -0.38876810387659977 0.6679551419391372
0 -0.08472697987697475 0.275319596881203
0 0.7822926875136844 0.17122659901899606
1 -0.2657068543666481 -0.06008893404720328
0 -0.6907681316607532 -0.14224587305734304
0 0.8066439746610798 -0.4207539780920342
1 0.8552075324891362 0.08669568026253027
0 0.5491129985925067 -0.6071624569600662
0 -0.9629615870383108 0.5418486267009242
1 0.718585449653875 0.2289040416265995
0 0.7097096024915686 0.15142630204453789
0 0.001183772922738191 -0.21331149786657155
0 -0.740163182486073 0.7856137973272908
0 -0.4102935448809477 0.32577864184797
0 0.2838108153224279 0.6955863026175773
1 0.5260171668336517 0.31947619877005207
1 0.39165592038557273 0.5903048315964989
1 -0.5287850882839857 -0.709598294851151
0 0.8801802111481849 0.1257963822980257
0 0.7860399993656908 0.2917387997774099
0 -0.31357941345778184 0.8173465016744779
0 -0.24706729772892544 -0.5017567368968896
0 -0.5077834677535535 0.734692375238988
1 0.9180554343925105 0.7402607565839483
0 0.7347556198277827 -0.8922440369193774
0 0.05178553367177474 0.024867950728887367
0 0.6123243631772981 -0.9310030202911994
1 0 0.7544830909519196 -0.7557810097698512
2 0 -0.401040192413354 0.05087719368515575
3 0 -0.14557860894357444 -0.9167657103778997
4 0 0.15606723792840116 0.7049866105111644
5 0 0.595321005153232 -0.3993704503800295
6 0 -0.21608773803320203 -0.9473358133826528
7 1 -0.9991678089071083 -0.8203462932941652
8 0 -0.29270128006691776 0.8999761729296656
9 0 -0.3744408488491382 0.5298017577688894
10 0 -0.13262908466039347 0.016485142896286442
11 1 -0.45382240999178936 -0.6292411536948919
12 1 0.8466491727357144 0.7677619536810258
13 0 0.5640604742334225 -0.6415301955014154
14 1 0.7652661495157325 0.9042394673218532
15 0 0.027488607545269383 -0.8561480245619784
16 0 0.8937874814271918 -0.568262764805403
17 1 0.05865567400417637 0.1271824506485506
18 0 0.1350578652393759 -0.8468795247716823
19 0 -0.03351382194744046 0.7225677368658248
20 0 0.031698854294282874 -0.1745522030261808
21 0 0.9764007293531329 0.0407596854507819
22 1 0.8575290920021019 0.5995196615047915
23 1 -0.5942919380814724 -0.9173657127389143
24 0 0.019297633607670894 0.7171922933333184
25 0 0.23496958271638224 -0.4505947779446391
26 0 -0.15627176851413638 -0.6255991840738957
27 0 -0.5436468155122751 0.7321778365594638
28 0 -0.0016772778866704918 0.9953499312779903
29 0 -0.49022669174509304 0.7643365578090109
30 0 0.9274390975500406 -0.16941260003761904
31 0 0.517483672350449 -0.9259720728025793
32 0 0.4993683788149732 -0.8086741166111076
33 1 -0.8954705171891042 -0.8352780222016363
34 1 -0.35723728886723927 -0.6472670626320902
35 0 -0.45030919789416135 -0.014680291690282399
36 1 -0.3149222964035554 -0.2363491678998142
37 0 -0.21632030129179247 0.9937719759687991
38 0 -0.3479296178713067 0.7754592480508431
39 1 -0.39993029073188713 -0.4021302940990339
40 0 0.22575455897529628 0.914503661895917
41 0 0.7221094132486976 -0.07187829685579739
42 1 0.8767936705571608 0.9516806200255943
43 1 0.2252335689492453 0.7031994893573623
44 0 0.742017840295591 -0.19165119600215896
45 1 -0.18782565699518372 -0.1408083939313467
46 0 -0.8222264182672563 0.17050362212981707
47 0 -0.1701252998869296 0.3450076829291753
48 0 -0.7342893613133503 0.40778605218980135
49 0 0.042695758461734235 -0.1484132507659468
50 1 0.3863429870565578 0.1571106834539837
51 0 -0.015388135282204507 -0.3364073902228679
52 0 -0.8487467820993619 0.1089427832313854
53 1 -0.6329015029648661 -0.7736052613400564
54 1 -0.858908407978868 -0.7378977770454969
55 1 0.6990672273176652 0.9222225234574595
56 0 -0.256431985135285 0.5758502205935434
57 0 -0.17330338780141252 0.30560812863161035
58 1 0.3523362003038917 0.4815180921326969
59 0 -0.10269592106863401 -0.7847042700361848
60 1 0.2559692323662084 0.048849842553034595
61 0 -0.8044820701681799 0.504663314011591
62 0 0.07877786671385811 0.9947392835524949
63 0 -0.8828875946641657 0.39461445063748224
64 0 -0.5143275957869704 0.09502394806995929
65 1 -0.5268239422759475 -0.11354182377636213
66 0 0.2946171361928087 -0.3186572090869646
67 0 0.7198334843462129 -0.6141975273104947
68 1 0.48428859765324495 0.8946857548947542
69 0 0.4621095070919994 -0.8924571872043978
70 0 0.4528371532815365 -0.5807667653397828
71 0 -0.09742500656072872 0.4945581379995849
72 1 0.777026015997778 0.3617742992147488
73 0 0.7791679792171657 -0.9220886356412603
74 0 -0.38876810387659977 0.6679551419391372
75 0 -0.08472697987697475 0.275319596881203
76 0 0.7822926875136844 0.17122659901899606
77 1 -0.2657068543666481 -0.06008893404720328
78 0 -0.6907681316607532 -0.14224587305734304
79 0 0.8066439746610798 -0.4207539780920342
80 1 0.8552075324891362 0.08669568026253027
81 0 0.5491129985925067 -0.6071624569600662
82 0 -0.9629615870383108 0.5418486267009242
83 1 0.718585449653875 0.2289040416265995
84 0 0.7097096024915686 0.15142630204453789
85 0 0.001183772922738191 -0.21331149786657155
86 0 -0.740163182486073 0.7856137973272908
87 0 -0.4102935448809477 0.32577864184797
88 0 0.2838108153224279 0.6955863026175773
89 1 0.5260171668336517 0.31947619877005207
90 1 0.39165592038557273 0.5903048315964989
91 1 -0.5287850882839857 -0.709598294851151
92 0 0.8801802111481849 0.1257963822980257
93 0 0.7860399993656908 0.2917387997774099
94 0 -0.31357941345778184 0.8173465016744779
95 0 -0.24706729772892544 -0.5017567368968896
96 0 -0.5077834677535535 0.734692375238988
97 1 0.9180554343925105 0.7402607565839483
98 0 0.7347556198277827 -0.8922440369193774
99 0 0.05178553367177474 0.024867950728887367
100 0 0.6123243631772981 -0.9310030202911994

20
wyk/classification.tsv Normal file
View File

@ -0,0 +1,20 @@
0 -0.8014509894297421 -0.5994635333915026
0 -0.7706966545879539 0.6368117894533625
0 -0.27709533263047414 0.8256752096021349
0 0.9930555307918127 0.36630467592076577
1 -0.16225248935963799 0.4956311492381327
0 0.934855703919385 0.8549023876664064
0 -0.5145933151394193 -0.804772931556422
1 0.10024139618609662 0.018730576213300765
0 0.9713755569949907 0.16659909394686068
1 -0.07322231752678521 -0.18763566969904533
0 -0.5702785062714137 0.3522449667057965
1 0.1848842019744028 0.4173729058647151
0 0.24479522096847361 -0.7089634989586504
0 0.6236644548417194 -0.1156611626471038
0 -0.10592913601169007 -0.9980825893807068
0 -0.23607206404847436 -0.7428335400803034
0 -0.11951845657345062 -0.8219825834866892
0 0.04590771234351232 -0.7564447785519108
1 0.7967711966832445 -0.4352501064041614
1 0.8053812216632301 0.1203107620499666
1 0 -0.8014509894297421 -0.5994635333915026
2 0 -0.7706966545879539 0.6368117894533625
3 0 -0.27709533263047414 0.8256752096021349
4 0 0.9930555307918127 0.36630467592076577
5 1 -0.16225248935963799 0.4956311492381327
6 0 0.934855703919385 0.8549023876664064
7 0 -0.5145933151394193 -0.804772931556422
8 1 0.10024139618609662 0.018730576213300765
9 0 0.9713755569949907 0.16659909394686068
10 1 -0.07322231752678521 -0.18763566969904533
11 0 -0.5702785062714137 0.3522449667057965
12 1 0.1848842019744028 0.4173729058647151
13 0 0.24479522096847361 -0.7089634989586504
14 0 0.6236644548417194 -0.1156611626471038
15 0 -0.10592913601169007 -0.9980825893807068
16 0 -0.23607206404847436 -0.7428335400803034
17 0 -0.11951845657345062 -0.8219825834866892
18 0 0.04590771234351232 -0.7564447785519108
19 1 0.7967711966832445 -0.4352501064041614
20 1 0.8053812216632301 0.1203107620499666