Tweet Share

Utoljára frissítve augusztus 20, 2020

csoportosítás vagy klaszter elemzés egy felügyelet nélküli tanulási probléma.

gyakran használják adatelemzési technikaként érdekes minták felfedezésére az adatokban, például az ügyfelek csoportjai viselkedésük alapján.

sok klaszterezési algoritmus közül lehet választani, egyetlen legjobb klaszterezési algoritmus sem minden esetben. Ehelyett egy jó ötlet, hogy vizsgálja meg egy sor klaszterezés algoritmusok különböző konfigurációk minden algoritmus.,

ebben az oktatóanyagban megtudhatja, hogyan lehet a legjobb klaszterező algoritmusokat python-ban használni.

a bemutató befejezése után tudni fogja:

  • a csoportosítás nem felügyelt probléma a természetes csoportok megtalálásában a bemeneti adatok funkcióterében.
  • sok különböző klaszterezési algoritmus létezik, egyetlen legjobb módszer sem minden adatkészlethez.
  • hogyan implementálhatjuk, illeszthetjük és használhatjuk a Python top klaszterező algoritmusait a scikit-learn machine learning könyvtár segítségével.,

Kick-start your project with my new book Machine Learning Mastery With Python, including step-by-step tutorials and the Python source code files for all examples.

kezdjük.

csoportosító algoritmusok Python
fotó: Lars Plougmann, some rights reserved.,/div>

Bemutató Áttekintés

Ez a bemutató három részre oszlik; ezek a következők:

  1. Klaszter
  2. Fürtözés Algoritmusok
  3. Példa a Fürtözés Algoritmusok
    1. Könyvtár Telepítés
    2. Fürtözés Adatkészlet
    3. Affinitás Terjedési
    4. Agglomerative Klaszter
    5. NYÍRFA
    6. DBSCAN
    7. K-means
    8. Mini-Tétel K-means
    9. azt Jelenti, Shift
    10. OPTIKA
    11. Spektrális Klaszter
    12. Gauss-féle Keverék Modell

Klaszter

Klaszter-elemzés, vagy a klaszter, egy felügyelet nélküli gépi tanulási feladat.,

magában foglalja az adatok természetes csoportosításának automatikus felfedezését. A felügyelt tanulással (például prediktív modellezéssel) ellentétben a klaszterező algoritmusok csak a bemeneti adatokat értelmezik, és természetes csoportokat vagy klasztereket találnak a funkciótérben.

klaszterezési technikák akkor alkalmazandók, ha nincs előrejelezendő osztály, hanem akkor, amikor az eseteket természetes csoportokra kell osztani.

— Page 141, Data Mining: Practical Machine Learning Tools and Techniques, 2016.,

a klaszter gyakran sűrűségterület a funkciótérben, ahol a tartomány példái (megfigyelések vagy adatsorok) közelebb vannak a klaszterhez, mint más klaszterek. A klaszternek lehet olyan középpontja (a centroid), amely minta vagy pontjellemzőtér, és lehet határa vagy kiterjedése.

ezek a klaszterek feltehetően tükröznek egy olyan mechanizmust a tartományban, ahonnan példányokat rajzolnak, egy olyan mechanizmust, amely bizonyos példányokat erősebb hasonlóságot mutat egymással, mint a többi példányhoz.,

— Pages 141-142, Data Mining: Practical Machine Learning Tools and Techniques, 2016.

klaszterezés hasznos lehet, mint egy adatelemzési tevékenység annak érdekében, hogy többet tudjon meg a probléma domain, az úgynevezett minta felfedezés vagy tudás felfedezés.

például:

  • a filogenetikai fa tekinthető kézi csoportosítási elemzés eredményének.
  • a normál adatoknak a kiugró értékektől vagy anomáliáktól való elválasztása klaszterezési problémának tekinthető.,
  • a klaszterek elválasztása természetes viselkedésük alapján klaszterezési probléma, amelyet piaci szegmentációnak neveznek.

csoportosítás is hasznos lehet, mint egyfajta szolgáltatás mérnöki, ahol a meglévő és az új példákat lehet leképezni és címkézni tartozó egyik azonosított klaszterek az adatok.

az azonosított klaszterek értékelése szubjektív, és domain szakértőt igényelhet, bár sok klaszterspecifikus mennyiségi intézkedés létezik., Általában a klaszterező algoritmusokat tudományos szempontból összehasonlítják az előre definiált klaszterekkel rendelkező szintetikus adatkészletekkel, amelyeket egy algoritmus várhatóan felfedez.

a klaszterezés felügyelet nélküli tanulási technika, ezért nehéz bármely adott módszer kimenetének minőségét értékelni.

— 534.oldal, Gépi tanulás: valószínűségi perspektíva, 2012.

Klaszterező algoritmusok

sokféle klaszterező algoritmus létezik.,

számos algoritmus használ hasonlóságot vagy távolságméréseket a példák között a jellemző térben annak érdekében, hogy felfedezzék a megfigyelések sűrű régióit. Mint ilyen, gyakran jó gyakorlat az adatok skálázása a klaszterező algoritmusok használata előtt.

a klaszterelemzés összes céljának központi eleme az egyes objektumok csoportosítása közötti hasonlóság (vagy eltérés) fokának fogalma. Egy csoportosítási módszer megpróbálja csoportosítani az objektumokat a hozzá tartozó hasonlóság meghatározása alapján.,

— Page 502, the Elements of Statistical Learning: Data Mining, Inference, and Prediction, 2016.

egyes klaszterezési algoritmusok megkövetelik, hogy adja meg vagy kitalálja az adatokban felfedezendő klaszterek számát, míg mások megkövetelik a megfigyelések közötti minimális távolság meghatározását, amelyben a példák “közelinek” vagy “összekapcsoltnak” tekinthetők.,”

mint ilyen, a klaszterelemzés egy iteratív folyamat, ahol az azonosított klaszterek szubjektív értékelése az algoritmus konfigurációjának változásaiba kerül, amíg el nem éri a kívánt vagy megfelelő eredményt.

a scikit-learn könyvtár egy sor különböző klaszterezési algoritmusok közül lehet választani.,

Egy listát a 10 legnépszerűbb algoritmus az alábbiak szerint alakul:

  • Affinitás Terjedési
  • Agglomerative Klaszter
  • NYÍRFA
  • DBSCAN
  • K-means
  • Mini-Tétel K-means
  • azt Jelenti, Shift
  • OPTIKA
  • Spektrális Klaszter
  • Keverék Gaussians

Minden algoritmus ajánlatok más a megközelítés, hogy a kihívás felfedezni természetes csoportok adatok.

nincs a legjobb klaszterezési algoritmus, és nem könnyű megtalálni az adatok számára a legjobb algoritmust ellenőrzött kísérletek használata nélkül.,

ebben az oktatóanyagban áttekintjük, hogyan kell ezeket a 10 népszerű csoportosítási algoritmust használni a scikit-learn könyvtárból.

a példák alapján másolhatja be a példákat, majd tesztelheti a módszereket saját adataira.

nem fogunk belemerülni az algoritmusok működésének elméletébe, vagy közvetlenül összehasonlítani őket. Egy jó kiindulási pont ebben a témában, lásd:

  • klaszterezés, scikit-learn API.

merüljünk be.,

példák klaszterezési algoritmusok

ebben a részben áttekintjük, hogyan kell használni 10 népszerű klaszterezési algoritmusok scikit-learn.

Ez magában foglalja a modell illesztésének példáját, valamint az eredmény megjelenítésének példáját.

a példákat úgy tervezték, hogy másolni-beilleszteni a saját projekt, majd alkalmazza a módszereket, hogy a saját adatait.

könyvtár telepítése

először telepítsük a könyvtárat.

ne hagyja ki ezt a lépést, mivel gondoskodnia kell arról, hogy a legújabb verzió telepítve legyen.,>

1
sudo pip install scikit-learn

For additional installation instructions specific to your platform, see:

  • Installing scikit-learn

Next, let’s confirm that the library is installed and you are using a modern version.,

futtassa a következő szkriptet a könyvtár verziószámának nyomtatásához.,

1
2
3

# ellenőrizze scikit-tanulni változat
import sklearn
print(sklearn.,__ version__)

a példa futtatásakor a következő verziószámot vagy annál magasabbat kell látnia.

1
0.22.,1

Clustering adatkészlet

a make_classification() függvényt használjuk egy teszt bináris osztályozási adatkészlet létrehozásához.

az adathalmaz 1000 példával rendelkezik, osztályonként két bemeneti funkcióval és egy klaszterrel. A klaszterek vizuálisan nyilvánvalóak két dimenzióban, így az adatokat egy szórási parcellával ábrázolhatjuk, majd a kijelölt klaszter színezi a telken lévő pontokat. Ez segít abban, hogy legalább a tesztproblémán lássuk, mennyire ” jól ” azonosították a klasztereket.,

ebben a tesztproblémában a klaszterek többváltozós Gaussián alapulnak, és nem minden klaszterező algoritmus lesz hatékony az ilyen típusú klaszterek azonosításában. Mint ilyen, az ebben a bemutatóban szereplő eredményeket nem szabad a módszerek általános összehasonlításának alapjaként használni.

a szintetikus klaszterezési adatkészlet létrehozásának és összefoglalásának egy példája az alábbiakban található.

a példa futtatása létrehozza a szintetikus klaszterezési adatkészletet, majd létrehozza a bemeneti adatok szórási diagramját osztálycímke (idealizált klaszterek) által színezett pontokkal.,

két dimenzióban jól látható két különálló adatcsoport, és a remény az lenne, hogy egy automatikus csoportosítási algoritmus képes észlelni ezeket a csoportokat.

Scatter Plot Szintetikus Fürtözés Adatkészlet A Színes Pontok által Ismert Halmaz

a Következő tudjuk kezdeni a példák a fürtözés algoritmusok alkalmazása az adatlapra.

tettem néhány minimális kísérletet, hogy beállítsa az egyes módszerek az adatbázisba.

tud kap egy jobb eredményt az egyik algoritmus?
tudassa velem az alábbi megjegyzéseket.,

Affinitásszaporítás

az Affinitásszaporítás magában foglalja az adatok legjobban összefoglalható példakészletének megtalálását.

kidolgoztunk egy” affinitás terjedés ” nevű módszert, amely bemeneti mérésként veszi figyelembe az adatpontok párjai közötti hasonlóságot. A valós értékű üzeneteket addig cserélik az adatpontok között, amíg egy kiváló minőségű példakészlet és a megfelelő klaszterek fokozatosan megjelennek

— fürtözés az adatpontok közötti üzenetek továbbításával, 2007.,

a technikát a papír írja le:

  • klaszterezés az adatpontok közötti üzenetek továbbításával, 2007.

az AffinityPropagation osztályon keresztül valósul meg, a beállításhoz a fő konfiguráció a 0,5-1 közötti” csillapítás”, esetleg “preferencia”.”

a teljes példa az alábbiakban található.

a példa futtatása illeszkedik a modellhez a képzési adatkészletben, és előrejelzi a klasztert minden egyes példához az adatkészletben. A scatter telek ezután jön létre pontokkal színezett a hozzárendelt klaszter.

ebben az esetben nem tudtam jó eredményt elérni.,

Scatter Plot of Dataset With Clusters Identified Using Affinity Propagation

Agglomeratív klaszterezés

az Agglomeratív klaszterezés magában foglalja a példák egyesítését, amíg el nem érik a kívánt klaszterek számát.

Ez a hierarchikus klaszterezési módszerek szélesebb osztályának része, és itt többet megtudhat:

  • hierarchikus klaszterezés, Wikipedia.,

az AgglomerativeClustering osztályon keresztül valósul meg, a beállításhoz a fő konfiguráció a” n_clusters ” készlet, az adatokban lévő klaszterek számának becslése, például 2.

a teljes példa az alábbiakban található.

a példa futtatása illeszkedik a modellhez a képzési adatkészletben, és előrejelzi a klasztert minden egyes példához az adatkészletben. A scatter telek ezután jön létre pontokkal színezett a hozzárendelt klaszter.

ebben az esetben ésszerű csoportosítás található.,

Scatter Telek Adatkészlet A Azonosított Klaszterek Segítségével Agglomerative Klaszter

NYÍRFA

NYÍRFA Fürtözés (BIRCH rövid Kiegyensúlyozott Iteratív Csökkentése, valamint Klaszter a
Hierarchiák) magában foglalja építése egy fa szerkezet, amelyből klaszter centroids nyernek ki.

nyírfa fokozatosan és dinamikusan klaszterezi a beérkező többdimenziós metrikus adatpontokat, hogy a rendelkezésre álló erőforrásokkal (pl.,, rendelkezésre álló memória és időkorlátok).

— BIRCH: an efficient data clustering method for large adatbáziss, 1996.

a technikát a lap írja le:

  • BIRCH: an efficient data clustering method for large databases, 1996.

a Nyírosztályon keresztül valósul meg, a fő beállítás a “küszöb” és az “n_clusters” hiperparaméterek, amelyek közül az utóbbi becslést ad a klaszterek számáról.

a teljes példa az alábbiakban található.,

a példa futtatása illeszkedik a modellhez a képzési adatkészletben, és előrejelzi a klasztert minden egyes példához az adatkészletben. A scatter telek ezután jön létre pontokkal színezett a hozzárendelt klaszter.

ebben az esetben kiváló csoportosítás található.,

Scatter Telek Adatkészlet A Azonosított Klaszterek Segítségével NYÍRFA Klaszter

DBSCAN

DBSCAN Fürtözés (ahol DBSCAN rövid Sűrűség-Alapú Térbeli Fürtözés az Alkalmazások Zaj) magában megtalálja a nagy sűrűségű területeken a domain bővül azoknak a területeknek a funkciót tér körül őket, mint klaszterek.

… bemutatjuk az új csoportosítási algoritmust DBSCAN támaszkodva sűrűség-alapú fogalma klaszterek amelynek célja, hogy felfedezzék klaszterek tetszőleges alakú., A DBSCAN csak egy bemeneti paramétert igényel, és támogatja a felhasználót a megfelelő érték meghatározásában

– sűrűség alapú algoritmus a klaszterek felfedezéséhez nagy térbeli adatbázisokban zajjal, 1996.

a technikát a dolgozat írja le:

  • sűrűség alapú algoritmus a nagy térbeli adatbázisokban lévő klaszterek felfedezésére zajjal, 1996.

a dbscan osztályon keresztül valósul meg, a fő beállítás pedig az “eps” és a “min_samples” hiperparaméterek.

a teljes példa az alábbiakban található.,

a példa futtatása illeszkedik a modellhez a képzési adatkészletben, és előrejelzi a klasztert minden egyes példához az adatkészletben. A scatter telek ezután jön létre pontokkal színezett a hozzárendelt klaszter.

ebben az esetben ésszerű csoportosítás található, bár több hangolásra van szükség.,

Scatter Telek Adatkészlet A Azonosított Klaszterek Segítségével DBSCAN Klaszter

K-means

a K-means Klaszterezés talán a legszélesebb körben ismert fürtözés algoritmus, amelyben hozzárendelése példa, hogy klaszterek annak érdekében, hogy minimalizálja a variancia belül minden egyes klaszter.

a dolgozat fő célja, hogy egy n-dimenziós populáció k-halmazokba történő felosztásának folyamatát írja le egy minta alapján., A folyamat, amelyet “k-jelentésnek” neveznek, úgy tűnik, hogy olyan partíciókat ad, amelyek ésszerűen hatékonyak az osztályon belüli variancia értelmében.

— néhány módszer a többváltozós megfigyelések osztályozására és elemzésére, 1967.

a technikát itt írjuk le:

  • k-klaszterezést, Wikipédiát jelent.

a kmeans osztályon keresztül valósul meg, a beállításhoz a fő konfiguráció a” n_clusters ” hiperparaméter, amely az adatok becsült klaszterszámára van beállítva.

a teljes példa az alábbiakban található.,

a példa futtatása illeszkedik a modellhez a képzési adatkészletben, és előrejelzi a klasztert minden egyes példához az adatkészletben. A scatter telek ezután jön létre pontokkal színezett a hozzárendelt klaszter.

ebben az esetben ésszerű csoportosítás található, bár az egyes dimenziók egyenlőtlen szórása miatt a módszer kevésbé alkalmas erre az adatkészletre.,

Scatter Telek Adatkészlet Klaszterek Segítségével Azonosított K-means Klaszterezés

Mini-Tétel K-means

Mini-Tétel K-azt Jelenti, hogy egy módosított változata k-azt jelenti, hogy teszi, hogy a frissítések a klaszter centroids a mini-tételek a minták helyett a teljes adatállomány ami lehet, hogy gyorsabb, a nagy adatkészletek, talán több robusztus statisztikai zaj.

… javasoljuk a mini-batch optimalizálás használatát a K-eszközök csoportosításához., Ez csökkenti a számítási költségeket nagyságrendekkel a klasszikus kötegelt algoritmushoz képest, miközben lényegesen jobb megoldásokat eredményez, mint az online sztochasztikus gradiens Süllyedés.

— Web-Scale K-Means klaszterezés, 2010.

a technikát a papír írja le:

  • Web-Scale K-Means Clustering, 2010.

a MiniBatchKMeans osztályon keresztül valósul meg, a beállítandó fő konfiguráció a” n_clusters ” hiperparaméter, amely az adatok becsült klaszterszámára van beállítva.

a teljes példa az alábbiakban található.,

a példa futtatása illeszkedik a modellhez a képzési adatkészletben, és előrejelzi a klasztert minden egyes példához az adatkészletben. A scatter telek ezután jön létre pontokkal színezett a hozzárendelt klaszter.

ebben az esetben a standard k-means algoritmussal egyenértékű eredmény található.

Scatter Telek Adatkészlet Klaszterek Azonosított a Mini-Tétel K-means Klaszterezés

azt Jelenti, Shift

azt Jelenti, shift fürtözés magában megtalálja alkalmazkodva centroids alapján a sűrűsége példák a funkciót tér.,

a diszkrét adatokra bizonyítjuk, hogy a rekurzív átlagos eltolódási eljárás konvergenciája az alapul szolgáló sűrűségfüggvény legközelebbi álló pontjára, így hasznossága a sűrűség módjainak detektálásában.

— Mean Shift: a robusztus megközelítés felé feature space analysis, 2002.

a technikát a lap írja le:

  • Mean Shift: a robusztus approach towards feature space analysis, 2002.

a MeanShift osztályon keresztül valósul meg, a fő beállítás pedig a “sávszélesség” hiperparaméter.,

a teljes példa az alábbiakban található.

a példa futtatása illeszkedik a modellhez a képzési adatkészletben, és előrejelzi a klasztert minden egyes példához az adatkészletben. A scatter telek ezután jön létre pontokkal színezett a hozzárendelt klaszter.

ebben az esetben az adatokban ésszerű klaszterek találhatók.,

Scatter Telek Adatkészlet Klaszterek Azonosított Használata azt Jelenti, Shift Klaszter

OPTIKA

OPTIKA fürtözés (ahol OPTIKA rövid Rendelési Pontokat Azonosítani a Klaszter Struktúra) egy módosított változata DBSCAN a fent leírt.

új algoritmust vezetünk be klaszteranalízis céljából, amely nem állít elő kifejezetten adathalmazt, hanem a sűrűségalapú klaszterstruktúrát reprezentáló adatbázis kibővített rendelését hozza létre., Ez a klaszterrendelés olyan információkat tartalmaz, amelyek egyenértékűek a paraméterbeállítások széles skálájának megfelelő sűrűség-alapú klaszterekkel.

— OPTICS: ordering points to identify the clustering structure, 1999.

a technikát a papír írja le:

  • OPTICS: rendelési pontok a klaszterszerkezet azonosításához, 1999.

Az optika osztályon keresztül valósul meg, a fő beállítás pedig az “eps” és a “min_samples” hiperparaméterek.

a teljes példa az alábbiakban található.,

a példa futtatása illeszkedik a modellhez a képzési adatkészletben, és előrejelzi a klasztert minden egyes példához az adatkészletben. A scatter telek ezután jön létre pontokkal színezett a hozzárendelt klaszter.

ebben az esetben nem tudtam ésszerű eredményt elérni ezen az adatkészleten.

Scatter Telek Adatkészlet A Azonosított Klaszterek Segítségével OPTIKA Klaszter

Spektrális Klaszter

Spektrális Klaszter általános osztály klaszter módszer, rajzolt, lineáris algebra.,

egy ígéretes alternatíva, amely a közelmúltban számos területen felmerült, spektrális módszerek alkalmazása a klaszterezéshez. Itt az egyik a pontok közötti távolságból származó mátrix felső eigenvektorait használja.

— on Spectral Clustering: Analysis and an algorithm, 2002.

a technikát a dolgozat írja le:

  • a spektrális csoportosításról: Analízis és egy algoritmus, 2002.,

a SpectralClustering osztályon keresztül valósul meg, a fő spektrális klaszterezés pedig a lineáris algebrából vett klaszterezési módszerek általános osztálya. a dallam az” n_clusters ” hiperparaméter, amelyet az adatokban lévő klaszterek becsült számának megadására használnak.

a teljes példa az alábbiakban található.

a példa futtatása illeszkedik a modellhez a képzési adatkészletben, és előrejelzi a klasztert minden egyes példához az adatkészletben. A scatter telek ezután jön létre pontokkal színezett a hozzárendelt klaszter.

ebben az esetben ésszerű klasztereket találtak.,

Scatter Plot of Dataset With Clusters Identified Using Spectra Clustering

Gaussian elegy Model

a Gaussian elegy modell összefoglalja a többváltozós valószínűségi sűrűség függvényt Gaussian valószínűségi eloszlások keverékével, ahogy a neve is sugallja.

a modellről bővebben lásd:

  • Keverékmodell, Wikipedia.,

a GaussianMixture osztályon keresztül valósul meg, a beállításhoz a fő konfiguráció a” n_clusters ” hiperparaméter, amelyet az adatokban lévő klaszterek becsült számának meghatározására használnak.

a teljes példa az alábbiakban található.

a példa futtatása illeszkedik a modellhez a képzési adatkészletben, és előrejelzi a klasztert minden egyes példához az adatkészletben. A scatter telek ezután jön létre pontokkal színezett a hozzárendelt klaszter.

ebben az esetben láthatjuk, hogy a klaszterek tökéletesen azonosítottak., Ez nem meglepő, mivel az adatkészletet Gaussiak keverékeként hozták létre.

Scatter Telek Adatkészlet A Azonosított Klaszterek Segítségével Gauss-féle Keverék Klaszter

További információk

Ebben a részben több forrás a témában, ha keres, hogy mélyebbre.

Papers

  • klaszterezés az adatpontok közötti üzenetek továbbításával, 2007.
  • BIRCH: an efficient data clustering method for large databases, 1996.,
  • sűrűség alapú algoritmus a nagy térbeli adatbázisokban található klaszterek felfedezéséhez zajjal, 1996.
  • néhány módszer a többváltozós megfigyelések osztályozására és elemzésére, 1967.
  • Web-Scale K-Means klaszterezés, 2010.
  • Mean Shift: a robusztus approach towards feature space analysis, 2002.
  • On Spectral Clustering: Analysis and an algorithm, 2002.

Könyvek

  • adatbányászat: gyakorlati gépi tanulási eszközök és technikák, 2016.
  • the Elements of Statistical Learning: Data Mining, Inference, and Prediction, 2016.,
  • Gépi tanulás: a valószínűségi perspektíva, 2012.

API

  • klaszterezés, scikit-learn API.
  • sklearn.adathalmazok.make_classification API.
  • sklearn.cluster API.

Articles

  • Cluster analysis, Wikipedia.
  • hierarchikus csoportosítás, Wikipedia.
  • k – azt jelenti, klaszterezés, Wikipedia.
  • keverék modell, Wikipedia.

összefoglaló

ebben az oktatóanyagban felfedezted, hogyan kell a Python top csoportosítási algoritmusait illeszteni és használni.,

konkrétan megtudta:

  • a klaszterezés nem felügyelt probléma a természetes csoportok megtalálásában a bemeneti adatok jellemzőterében.
  • sok különböző klaszterezési algoritmus létezik, egyetlen legjobb módszer sem minden adatkészlethez.
  • hogyan implementálhatjuk, illeszthetjük és használhatjuk a Python top klaszterező algoritmusait a scikit-learn machine learning könyvtár segítségével.

van bármilyen kérdése?
tegye fel kérdéseit az alábbi megjegyzésekben, és mindent megteszek, hogy válaszoljak.

fedezze fel a gyors gépi tanulást Python-ban!,

saját modellek fejlesztése percben

…csak néhány sor scikit-learn code

Learn how in my new Ebook:
Gépi tanulás Mastery with Python

magában foglalja az önálló tanulás oktatóanyagok és end-to-end projektek, mint például:
Adatok betöltése, vizualizáció, modellezés, tuning, és még sok más…

végül hozza a gépi tanulást a
saját projektjeihez

hagyja ki az akadémikusokat. Csak Eredmények.

nézze meg, mi van benne

Tweet Share

Articles

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük