prentations

This commit is contained in:
s434732 2021-06-26 11:46:56 +02:00
parent 464ea978f7
commit fc010e1e86
3 changed files with 80 additions and 0 deletions

BIN
klaster1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -342,6 +342,7 @@
"import sys\n",
"import numpy as np\n",
"\n",
"#rusujemy grafy\n",
"def draw(G, A, cluster_map):\n",
"\n",
" graph = nx.Graph(G)\n",
@ -359,10 +360,12 @@
" show(block=False)\n",
"\n",
"def normalize(A):\n",
" #Normalizujemy kolumny macierzy \n",
"# Normalize the columns of the given matrix\n",
" return sklearn.preprocessing.normalize(A, norm=\"l1\", axis=0)\n",
"\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",
" return normalize(np.power(A, inflate_factor))\n",
"\n",

77
presentation.ipynb Normal file
View 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
}