prentations
This commit is contained in:
parent
464ea978f7
commit
fc010e1e86
BIN
klaster1.png
Normal file
BIN
klaster1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
@ -342,6 +342,7 @@
|
|||||||
"import sys\n",
|
"import sys\n",
|
||||||
"import numpy as np\n",
|
"import numpy as np\n",
|
||||||
"\n",
|
"\n",
|
||||||
|
"#rusujemy grafy\n",
|
||||||
"def draw(G, A, cluster_map):\n",
|
"def draw(G, A, cluster_map):\n",
|
||||||
"\n",
|
"\n",
|
||||||
" graph = nx.Graph(G)\n",
|
" graph = nx.Graph(G)\n",
|
||||||
@ -359,10 +360,12 @@
|
|||||||
" show(block=False)\n",
|
" show(block=False)\n",
|
||||||
"\n",
|
"\n",
|
||||||
"def normalize(A):\n",
|
"def normalize(A):\n",
|
||||||
|
" #Normalizujemy kolumny macierzy \n",
|
||||||
"# Normalize the columns of the given matrix\n",
|
"# Normalize the columns of the given matrix\n",
|
||||||
" return sklearn.preprocessing.normalize(A, norm=\"l1\", axis=0)\n",
|
" return sklearn.preprocessing.normalize(A, norm=\"l1\", axis=0)\n",
|
||||||
"\n",
|
"\n",
|
||||||
"def inflate(A, inflate_factor):\n",
|
"def inflate(A, inflate_factor):\n",
|
||||||
|
" #Podnosimy każdy element macierzy do potęgi\n",
|
||||||
"# Apply cluster inflation to the given matrix by raising each element to the given power.\n",
|
"# Apply cluster inflation to the given matrix by raising each element to the given power.\n",
|
||||||
" return normalize(np.power(A, inflate_factor))\n",
|
" return normalize(np.power(A, inflate_factor))\n",
|
||||||
"\n",
|
"\n",
|
||||||
|
77
presentation.ipynb
Normal file
77
presentation.ipynb
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Przygotowali\n",
|
||||||
|
"Wojciech Jarmosz <br>\n",
|
||||||
|
"Michał Kubiak <br>\n",
|
||||||
|
"Przemysław Owczarczyk"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Temat:\n",
|
||||||
|
"Spacery losowe po grafach: algorytm wyszukiwania klastrów.\n",
|
||||||
|
"Dla dużych grafów istotną informacją jest wykrycie podgrafów, które są silnie ze sobą powiązane. Za pomocą spacerów losowych po grafach zaprojektuj algorytm, który odkrywa strukturę klastrów w grafie (clustering algorithm). Wykorzystaj swój algorytm do wskazania krytycznych wierzchołków, tj. wierzchołków, których usunięcie rozspójnia graf. Przeanalizuj wariant algorytmu dla grafów skierowanych i grafów nieskierowanych.\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# Wstęp\n",
|
||||||
|
"W tym projekcie opiszemy i przedstawimy skuteczny algorytm grupowania oparty na grafach, zwany grupowaniem Markowa. Podobnie jak inne algorytmy klastrowania oparte na grafach i w przeciwieństwie do klastrowania K- średnich, algorytm ten nie wymaga wcześniejszej znajomości liczby klastrów. Algorytm ten jest bardzo popularny w klastrowaniu danych bioinformatycznych, w szczególności do klastrowania sekwencji białek i klastrowania genów. Algorytm ten nadaje się również do obliczeń rozproszonych "
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Zasada losowego spaceru\n",
|
||||||
|
"Ideą w MCL jest to, że jeśli zaczniesz losowo chodzić od węzła, jest bardziej prawdopodobne, że będziesz poruszać się w tym samym klastrze niż przecinać klastry. Dzieje się tak, ponieważ z definicji klastry są wewnętrznie gęste, a są oddzielone rzadkimi regionami. W grupowaniu grafów gęstość i rzadkość definiuje się jako proporcję szczelin krawędziowych, które mają w sobie krawędzie.\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Jak możemy wykorzystać to zachowanie?\n",
|
||||||
|
"W tym momencie wprowadzimy łańcuchy Markowa. Rozważ, dla każdej pary węzłów u i v , P uv (k), prawdopodobieństwo rozpoczęcia od węzła u i zakończenia w węźle v po przejściu k kroków. P UV (1) jest łatwo obliczana: jest to tylko 1 podzielone przez u.\n",
|
||||||
|
"Teraz nadchodzi kluczowy punkt. Jeśli pomnożymy macierz P (1)= P przez samą siebie, otrzymamy P (2) = P ². Bardziej ogólnie, P (k) = P ^k.\n",
|
||||||
|
"Sugeruje to następującą procedurę. Inicjujemy P . Następnie obliczamy P (k) mnożąc P przez siebie k razy. (k wynosi zazwyczaj 2 lub 3.) Jeśli pewne prawdopodobieństwo przejścia P uv ( k ) jest szczególnie niskie, znacznie niższe niż P uv (1), kierujemy je dalej w kierunku 0. Sposobem na to jest uwzględnienie każdego prawdopodobieństwa w P (k), podnieś go do potęgi większej niż 1 i zrenormalizuj. W MCL proces ten nazywa się inflacją. Wzmacnia różnice tzn mocniejszy staje się bardziej i w odwrotną stronę. "
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"![title](klaster1.png)"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"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.8.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 4
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user