{"id":3579,"date":"2023-07-16T17:38:21","date_gmt":"2023-07-16T17:38:21","guid":{"rendered":"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/"},"modified":"2023-07-16T17:38:21","modified_gmt":"2023-07-16T17:38:21","slug":"k-oznacza-grupowanie-w-pythonie","status":"publish","type":"post","link":"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/","title":{"rendered":"Klastrowanie k-\u015brednich w pythonie: przyk\u0142ad krok po kroku"},"content":{"rendered":"<p><\/p>\n<hr>\n<p><span style=\"color: #000000;\">Jednym z najpopularniejszych algorytm\u00f3w grupowania w <a href=\"https:\/\/statorials.org\" target=\"_blank\" rel=\"noopener\">uczeniu maszynowym<\/a> jest <strong>grupowanie k-\u015brednich<\/strong> .<\/span><\/p>\n<p> <span style=\"color: #000000;\">Grupowanie K-\u015brednich to technika, w kt\u00f3rej ka\u017cd\u0105 obserwacj\u0119 ze zbioru danych umieszczamy w jednym z <em>K<\/em> klastr\u00f3w.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Ostatecznym celem jest utworzenie <em>K<\/em> klastr\u00f3w, w kt\u00f3rych obserwacje w ka\u017cdym klastrze s\u0105 do siebie do\u015b\u0107 podobne, podczas gdy obserwacje w r\u00f3\u017cnych klastrach znacznie si\u0119 od siebie r\u00f3\u017cni\u0105.<\/span><\/p>\n<p> <span style=\"color: #000000;\">W praktyce do przeprowadzenia grupowania K-\u015brednich stosujemy nast\u0119puj\u0105ce kroki:<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>1. Wybierz warto\u015b\u0107 <em>K.<\/em><\/strong><\/span><\/p>\n<ul>\n<li> <span style=\"color: #000000;\">Najpierw musimy zdecydowa\u0107, ile skupie\u0144 chcemy zidentyfikowa\u0107 w danych. Cz\u0119sto wystarczy po prostu przetestowa\u0107 kilka r\u00f3\u017cnych warto\u015bci <em>K<\/em> i przeanalizowa\u0107 wyniki, aby zobaczy\u0107, kt\u00f3ra liczba skupie\u0144 wydaje si\u0119 mie\u0107 najwi\u0119kszy sens dla danego problemu.<\/span><\/li>\n<\/ul>\n<p> <span style=\"color: #000000;\"><strong>2. Losowo przypisz ka\u017cd\u0105 obserwacj\u0119 do skupienia pocz\u0105tkowego, od 1 do <em>K.<\/em><\/strong><\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>3. Wykonuj poni\u017csz\u0105 procedur\u0119, a\u017c przypisania klastr\u00f3w przestan\u0105 si\u0119 zmienia\u0107.<\/strong><\/span><\/p>\n<ul>\n<li> <span style=\"color: #000000;\">Dla ka\u017cdej z gromad <em>K<\/em> oblicz <em>\u015brodek ci\u0119\u017cko\u015bci gromady.<\/em> Jest to po prostu wektor <em>p-<\/em> \u015brednich cech obserwacji <em>k-tego<\/em> klastra.<\/span><\/li>\n<li> <span style=\"color: #000000;\">Przypisz ka\u017cd\u0105 obserwacj\u0119 do klastra o najbli\u017cszym centroidzie. Tutaj <em>najbli\u017cej<\/em> definiuje si\u0119 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Euclidean_distance#Squared_Euclidean_distance\" target=\"_blank\" rel=\"noopener noreferrer\">odleg\u0142o\u015b\u0107 euklidesow\u0105<\/a> .<\/span><\/li>\n<\/ul>\n<p> <span style=\"color: #000000;\">Poni\u017cszy przyk\u0142ad pokazuje krok po kroku, jak wykona\u0107 grupowanie k-\u015brednich w Pythonie przy u\u017cyciu funkcji <strong>KMeans<\/strong> z modu\u0142u <strong>sklearn<\/strong> .<\/span><\/p>\n<h2> <span style=\"color: #000000;\"><strong>Krok 1: Zaimportuj niezb\u0119dne modu\u0142y<\/strong><\/span><\/h2>\n<p> <span style=\"color: #000000;\">Najpierw zaimportujemy wszystkie modu\u0142y potrzebne do wykonania grupowania k-\u015brednich:<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <span style=\"color: #000000;\"><strong><span style=\"color: #008000;\">import<\/span> pandas <span style=\"color: #008000;\">as<\/span> pd\n<span style=\"color: #008000;\">import<\/span> numpy <span style=\"color: #008000;\">as<\/span> np\n<span style=\"color: #008000;\">import<\/span> matplotlib. <span style=\"color: #3366ff;\">pyplot<\/span> <span style=\"color: #008000;\">as<\/span> plt\n<span style=\"color: #008000;\">from<\/span> sklearn. <span style=\"color: #3366ff;\">cluster<\/span> <span style=\"color: #008000;\">import<\/span> KMeans\n<span style=\"color: #008000;\">from<\/span> sklearn. <span style=\"color: #3366ff;\">preprocessing<\/span> <span style=\"color: #008000;\">import<\/span> StandardScaler<\/strong><\/span><\/pre>\n<h2> <span style=\"color: #000000;\"><strong>Krok 2: Utw\u00f3rz ramk\u0119 danych<\/strong><\/span><\/h2>\n<p> <span style=\"color: #000000;\">Nast\u0119pnie utworzymy DataFrame zawieraj\u0105c\u0105 nast\u0119puj\u0105ce trzy zmienne dla 20 r\u00f3\u017cnych koszykarzy:<\/span><\/p>\n<ul>\n<li> <span style=\"color: #000000;\">zwrotnica<\/span><\/li>\n<li> <span style=\"color: #000000;\">pomoc<\/span><\/li>\n<li> <span style=\"color: #000000;\">odbija si\u0119<\/span><\/li>\n<\/ul>\n<p> <span style=\"color: #000000;\">Poni\u017cszy kod pokazuje, jak utworzy\u0107 t\u0119 ramk\u0119 DataFrame pand:<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <span style=\"color: #000000;\"><strong><span style=\"color: #008080;\">#createDataFrame\n<\/span>df = pd. <span style=\"color: #3366ff;\">DataFrame<\/span> ({' <span style=\"color: #ff0000;\">points<\/span> ': [18, np.nan, 19, 14, 14, 11, 20, 28, 30, 31,\n                              35, 33, 29, 25, 25, 27, 29, 30, 19, 23],\n                   ' <span style=\"color: #ff0000;\">assists<\/span> ': [3, 3, 4, 5, 4, 7, 8, 7, 6, 9, 12, 14,\n                               np.nan, 9, 4, 3, 4, 12, 15, 11],\n                   ' <span style=\"color: #ff0000;\">rebounds<\/span> ': [15, 14, 14, 10, 8, 14, 13, 9, 5, 4,\n                                11, 6, 5, 5, 3, 8, 12, 7, 6, 5]})\n\n<span style=\"color: #008080;\">#view first five rows of DataFrame\n<\/span><span style=\"color: #008000;\">print<\/span> ( <span style=\"color: #3366ff;\">df.head<\/span> ())\n\n   points assists rebounds\n0 18.0 3.0 15\n1 NaN 3.0 14\n2 19.0 4.0 14\n3 14.0 5.0 10\n4 14.0 4.0 8\n<\/strong><\/span><\/pre>\n<p> <span style=\"color: #000000;\">B\u0119dziemy u\u017cywa\u0107 grupowania k-\u015brednich do grupowania podobnych aktor\u00f3w w oparciu o te trzy metryki.<\/span><\/p>\n<h2> <span style=\"color: #000000;\"><strong>Krok 3: Oczy\u015b\u0107 i przygotuj ramk\u0119 DataFrame<\/strong><\/span><\/h2>\n<p> <span style=\"color: #000000;\"><span style=\"color: #000000;\">Nast\u0119pnie wykonamy nast\u0119puj\u0105ce kroki:<\/span><\/span><\/p>\n<ul>\n<li> <span style=\"color: #000000;\">U\u017cyj <strong>dropna()<\/strong> , aby upu\u015bci\u0107 wiersze z warto\u015bciami NaN w dowolnej kolumnie<\/span><\/li>\n<li> <span style=\"color: #000000;\">U\u017cyj <strong>StandardScaler()<\/strong> , aby przeskalowa\u0107 ka\u017cd\u0105 zmienn\u0105 tak, aby mia\u0142a \u015bredni\u0105 0 i odchylenie standardowe 1.<\/span><\/li>\n<\/ul>\n<p> <span style=\"color: #000000;\">Poni\u017cszy kod pokazuje, jak to zrobi\u0107:<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong><span style=\"color: #008080;\">#drop rows with NA values in any columns\n<\/span>df = df. <span style=\"color: #3366ff;\">dropna<\/span> ()\n\n<span style=\"color: #008080;\">#create scaled DataFrame where each variable has mean of 0 and standard dev of 1\n<\/span>scaled_df = StandardScaler(). <span style=\"color: #3366ff;\">fit_transform<\/span> (df)\n\n<span style=\"color: #008080;\">#view first five rows of scaled DataFrame<\/span>\n<span style=\"color: #008000;\">print<\/span> (scaled_df[:5])\n\n[[-0.86660275 -1.22683918 1.72722524]\n [-0.72081911 -0.96077767 1.45687694]\n [-1.44973731 -0.69471616 0.37548375]\n [-1.44973731 -0.96077767 -0.16521285]\n [-1.88708823 -0.16259314 1.45687694]]<\/strong><\/pre>\n<p> <span style=\"color: #000000;\"><strong>Uwaga<\/strong> : Stosujemy skalowanie, aby ka\u017cda zmienna mia\u0142a takie samo znaczenie podczas dopasowywania algorytmu k-\u015brednich. W przeciwnym razie zmienne o najszerszych zakresach mia\u0142yby zbyt du\u017cy wp\u0142yw.<\/span><\/p>\n<h2> <span style=\"color: #000000;\"><strong>Krok 4: Znajd\u017a optymaln\u0105 liczb\u0119 skupie\u0144<\/strong><\/span><\/h2>\n<p> <span style=\"color: #000000;\">Aby wykona\u0107 grupowanie k-\u015brednich w Pythonie, mo\u017cemy u\u017cy\u0107 funkcji <strong>KMeans<\/strong> z modu\u0142u <strong>sklearn<\/strong> .<\/span><\/p>\n<p> <span style=\"color: #000000;\">Ta funkcja wykorzystuje nast\u0119puj\u0105c\u0105 podstawow\u0105 sk\u0142adni\u0119:<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>KMeans(init=&#8217;random&#8217;, n_clusters=8, n_init=10, random_state=None)<\/strong><\/span><\/p>\n<p> <span style=\"color: #000000;\">Z\u0142oto:<\/span><\/p>\n<ul>\n<li> <span style=\"color: #000000;\"><strong>init<\/strong> : Kontroluje technik\u0119 inicjalizacji.<\/span><\/li>\n<li> <span style=\"color: #000000;\"><strong>n_clusters<\/strong> : liczba klastr\u00f3w, w kt\u00f3rych nale\u017cy umie\u015bci\u0107 obserwacje.<\/span><\/li>\n<li> <span style=\"color: #000000;\"><strong>n_init<\/strong> : Liczba inicjalizacji do wykonania. Domy\u015blnie uruchamiany jest algorytm k-\u015brednich 10 razy i zwracany jest ten z najni\u017cszym SSE.<\/span><\/li>\n<li> <span style=\"color: #000000;\"><strong>random_state<\/strong> : Warto\u015b\u0107 ca\u0142kowita, kt\u00f3r\u0105 mo\u017cesz wybra\u0107, aby wyniki algorytmu by\u0142y powtarzalne.<\/span><\/li>\n<\/ul>\n<p> <span style=\"color: #000000;\">Najwa\u017cniejszym argumentem tej funkcji jest n_clusters, kt\u00f3ry okre\u015bla, w ilu klastrach nale\u017cy umie\u015bci\u0107 obserwacje.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Nie wiemy jednak z g\u00f3ry, ile skupie\u0144 jest optymalnych, dlatego musimy stworzy\u0107 wykres przedstawiaj\u0105cy liczb\u0119 skupie\u0144 oraz SSE (suma kwadrat\u00f3w b\u0142\u0119d\u00f3w) modelu.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Zazwyczaj, tworz\u0105c tego typu wykres, szukamy \u201ekolana\u201d, w kt\u00f3rym suma kwadrat\u00f3w zaczyna si\u0119 \u201ezagina\u0107\u201d lub wyr\u00f3wnywa\u0107. Jest to na og\u00f3\u0142 optymalna liczba klastr\u00f3w.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Poni\u017cszy kod pokazuje, jak utworzy\u0107 tego typu wykres, kt\u00f3ry wy\u015bwietla liczb\u0119 skupie\u0144 na osi x i SSE na osi y:<\/span> <\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong><span style=\"color: #008080;\">#initialize kmeans parameters\n<\/span>kmeans_kwargs = {\n\" <span style=\"color: #ff0000;\">init<\/span> \": \" <span style=\"color: #ff0000;\">random<\/span> \",\n\" <span style=\"color: #ff0000;\">n_init<\/span> \": 10,\n\" <span style=\"color: #ff0000;\">random_state<\/span> \": 1,\n}\n\n<span style=\"color: #008080;\">#create list to hold SSE values for each k\n<\/span>sse = []\n<span style=\"color: #008000;\">for<\/span> k <span style=\"color: #008000;\">in<\/span> range(1, 11):\n    kmeans = KMeans(n_clusters=k, <span style=\"color: #800080;\">**<\/span> kmeans_kwargs)\n    kmeans. <span style=\"color: #3366ff;\">fit<\/span> (scaled_df)\n    sse. <span style=\"color: #3366ff;\">append<\/span> (kmeans.inertia_)\n\n<span style=\"color: #008080;\">#visualize results\n<\/span>plt. <span style=\"color: #3366ff;\">plot<\/span> (range(1, 11), sse)\nplt. <span style=\"color: #3366ff;\">xticks<\/span> (range(1, 11))\nplt. <span style=\"color: #3366ff;\">xlabel<\/span> (\" <span style=\"color: #ff0000;\">Number of Clusters<\/span> \")\nplt. <span style=\"color: #3366ff;\">ylabel<\/span> (\u201c <span style=\"color: #ff0000;\">SSE<\/span> \u201d)\nplt. <span style=\"color: #3366ff;\">show<\/span> ()<\/strong> <\/pre>\n<p><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-29557 aligncenter\" src=\"https:\/\/statorials.org\/wp-content\/uploads\/2023\/08\/kmmoyenne1.jpg\" alt=\"\" width=\"531\" height=\"408\" srcset=\"\" sizes=\"auto, \"><\/p>\n<p> <span style=\"color: #000000;\">Na tym wykresie wydaje si\u0119, \u017ce w k = <strong>3 skupiskach<\/strong> wyst\u0119puje za\u0142amanie lub \u201ekolano\u201d.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Zatem w nast\u0119pnym kroku podczas dopasowywania naszego modelu grupowania k-\u015brednich u\u017cyjemy 3 klastr\u00f3w.<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>Uwaga<\/strong> : w \u015bwiecie rzeczywistym zaleca si\u0119 u\u017cycie kombinacji tego wykresu i wiedzy specjalistycznej w dziedzinie, aby wybra\u0107 liczb\u0119 u\u017cywanych klastr\u00f3w.<\/span><\/p>\n<h2> <span style=\"color: #000000;\"><strong>Krok 5: Wykonaj grupowanie K-\u015brednich z optymalnym <em>K<\/em><\/strong><\/span><\/h2>\n<p> <span style=\"color: #000000;\">Poni\u017cszy kod pokazuje, jak wykona\u0107 grupowanie k-\u015brednich na zbiorze danych przy u\u017cyciu optymalnej warto\u015bci <em>k<\/em> z 3:<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong><span style=\"color: #008080;\"><span style=\"color: #000000;\"><span style=\"color: #008080;\">#instantiate the k-means class, using optimal number of clusters\n<\/span>kmeans = KMeans(init=\" <span style=\"color: #ff0000;\">random<\/span> \", n_clusters= <span style=\"color: #008000;\">3<\/span> , n_init= <span style=\"color: #008000;\">10<\/span> , random_state= <span style=\"color: #008000;\">1<\/span> )\n\n<span style=\"color: #008080;\">#fit k-means algorithm to data\n<\/span>kmeans. <span style=\"color: #3366ff;\">fit<\/span> (scaled_df)\n\n<span style=\"color: #008080;\">#view cluster assignments for each observation\n<\/span>kmeans. <span style=\"color: #3366ff;\">labels_\n\n<\/span>array([1, 1, 1, 1, 1, 1, 2, 2, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0]) \n<\/span><\/span><\/strong><\/pre>\n<p> <span style=\"color: #000000;\">Wynikowa tabela przedstawia przypisania klastr\u00f3w dla ka\u017cdej obserwacji w ramce DataFrame.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Aby u\u0142atwi\u0107 interpretacj\u0119 tych wynik\u00f3w, mo\u017cemy doda\u0107 kolumn\u0119 do DataFrame, kt\u00f3ra pokazuje przypisanie ka\u017cdego gracza do klastra:<\/span><\/p>\n<pre style=\"background-color: #ececec; font-size: 15px;\"> <strong><span style=\"color: #008080;\"><span style=\"color: #000000;\"><span style=\"color: #008080;\">#append cluster assingments to original DataFrame\n<\/span>df[' <span style=\"color: #ff0000;\">cluster<\/span> '] = kmeans. <span style=\"color: #3366ff;\">labels_<\/span>\n\n<span style=\"color: #008080;\">#view updated DataFrame\n<\/span><span style=\"color: #008000;\">print<\/span> (df)\n\n<\/span><\/span>points assists rebounds cluster\n0 18.0 3.0 15 1\n2 19.0 4.0 14 1\n3 14.0 5.0 10 1\n4 14.0 4.0 8 1\n5 11.0 7.0 14 1\n6 20.0 8.0 13 1\n7 28.0 7.0 9 2\n8 30.0 6.0 5 2\n9 31.0 9.0 4 0\n10 35.0 12.0 11 0\n11 33.0 14.0 6 0\n13 25.0 9.0 5 0\n14 25.0 4.0 3 2\n15 27.0 3.0 8 2\n16 29.0 4.0 12 2\n17 30.0 12.0 7 0\n18 19.0 15.0 6 0\n19 23.0 11.0 5 0\n<\/strong><\/pre>\n<p> <span style=\"color: #000000;\">Kolumna <strong>klastra<\/strong> zawiera numer klastra (0, 1 lub 2), do kt\u00f3rego przypisano ka\u017cdego gracza.<\/span><\/p>\n<p> <span style=\"color: #000000;\">Zawodnicy nale\u017c\u0105cy do tego samego klastra maj\u0105 w przybli\u017ceniu podobne warto\u015bci w kolumnach <strong>punkt\u00f3w<\/strong> , <strong>asyst<\/strong> i <strong>zbi\u00f3rek<\/strong> .<\/span><\/p>\n<p> <span style=\"color: #000000;\"><strong>Uwaga<\/strong> : Pe\u0142n\u0105 dokumentacj\u0119 funkcji <strong>KMeans<\/strong> <strong>sklearna<\/strong> znajdziesz <a href=\"https:\/\/scikit-learn.org\/stable\/modules\/generated\/sklearn.cluster.KMeans.html\" target=\"_blank\" rel=\"noopener\">tutaj<\/a> .<\/span><\/p>\n<h2> <span style=\"color: #000000;\"><strong>Dodatkowe zasoby<\/strong><\/span><\/h2>\n<p> <span style=\"color: #000000;\">Poni\u017csze samouczki wyja\u015bniaj\u0105, jak wykonywa\u0107 inne typowe zadania w Pythonie:<\/span><\/p>\n<p> <a href=\"https:\/\/statorials.org\/pl\/python-regresji-liniowej\/\" target=\"_blank\" rel=\"noopener\">Jak wykona\u0107 regresj\u0119 liniow\u0105 w Pythonie<\/a><br \/> <a href=\"https:\/\/statorials.org\/pl\/python-regresji-logistycznej\/\" target=\"_blank\" rel=\"noopener\">Jak przeprowadzi\u0107 regresj\u0119 logistyczn\u0105 w Pythonie<\/a><br \/> <a href=\"https:\/\/statorials.org\/pl\/k-krotna-weryfikacja-krzyzowa-w-pythonie\/\" target=\"_blank\" rel=\"noopener\">Jak przeprowadzi\u0107 weryfikacj\u0119 krzy\u017cow\u0105 K-Fold w Pythonie<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jednym z najpopularniejszych algorytm\u00f3w grupowania w uczeniu maszynowym jest grupowanie k-\u015brednich . Grupowanie K-\u015brednich to technika, w kt\u00f3rej ka\u017cd\u0105 obserwacj\u0119 ze zbioru danych umieszczamy w jednym z K klastr\u00f3w. Ostatecznym celem jest utworzenie K klastr\u00f3w, w kt\u00f3rych obserwacje w ka\u017cdym klastrze s\u0105 do siebie do\u015b\u0107 podobne, podczas gdy obserwacje w r\u00f3\u017cnych klastrach znacznie si\u0119 od [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-3579","post","type-post","status-publish","format-standard","hentry","category-przewodnik"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Klastrowanie K-\u015brednich w Pythonie: przyk\u0142ad krok po kroku - Statoriale<\/title>\n<meta name=\"description\" content=\"W tym samouczku wyja\u015bniono, jak wykona\u0107 grupowanie k-\u015brednich w j\u0119zyku Python, \u0142\u0105cznie z przyk\u0142adem krok po kroku.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Klastrowanie K-\u015brednich w Pythonie: przyk\u0142ad krok po kroku - Statoriale\" \/>\n<meta property=\"og:description\" content=\"W tym samouczku wyja\u015bniono, jak wykona\u0107 grupowanie k-\u015brednich w j\u0119zyku Python, \u0142\u0105cznie z przyk\u0142adem krok po kroku.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/\" \/>\n<meta property=\"og:site_name\" content=\"Statorials\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-16T17:38:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/statorials.org\/wp-content\/uploads\/2023\/08\/kmmoyenne1.jpg\" \/>\n<meta name=\"author\" content=\"Benjamin Anderson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Benjamin Anderson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/\",\"url\":\"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/\",\"name\":\"Klastrowanie K-\u015brednich w Pythonie: przyk\u0142ad krok po kroku - Statoriale\",\"isPartOf\":{\"@id\":\"https:\/\/statorials.org\/pl\/#website\"},\"datePublished\":\"2023-07-16T17:38:21+00:00\",\"dateModified\":\"2023-07-16T17:38:21+00:00\",\"author\":{\"@id\":\"https:\/\/statorials.org\/pl\/#\/schema\/person\/6484727a4612df3e69f016c3129c6965\"},\"description\":\"W tym samouczku wyja\u015bniono, jak wykona\u0107 grupowanie k-\u015brednich w j\u0119zyku Python, \u0142\u0105cznie z przyk\u0142adem krok po kroku.\",\"breadcrumb\":{\"@id\":\"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Dom\",\"item\":\"https:\/\/statorials.org\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Klastrowanie k-\u015brednich w pythonie: przyk\u0142ad krok po kroku\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/statorials.org\/pl\/#website\",\"url\":\"https:\/\/statorials.org\/pl\/\",\"name\":\"Statorials\",\"description\":\"Tw\u00f3j przewodnik po kompetencjach statystycznych!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/statorials.org\/pl\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/statorials.org\/pl\/#\/schema\/person\/6484727a4612df3e69f016c3129c6965\",\"name\":\"Benjamin Anderson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/statorials.org\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/statorials.org\/pl\/wp-content\/uploads\/2023\/11\/Benjamin-Anderson-96x96.jpg\",\"contentUrl\":\"https:\/\/statorials.org\/pl\/wp-content\/uploads\/2023\/11\/Benjamin-Anderson-96x96.jpg\",\"caption\":\"Benjamin Anderson\"},\"description\":\"Cze\u015b\u0107, jestem Benjamin i jestem emerytowanym profesorem statystyki, kt\u00f3ry zosta\u0142 oddanym nauczycielem Statorials. Dzi\u0119ki bogatemu do\u015bwiadczeniu i wiedzy specjalistycznej w dziedzinie statystyki ch\u0119tnie dziel\u0119 si\u0119 swoj\u0105 wiedz\u0105, aby wzmocni\u0107 pozycj\u0119 uczni\u00f3w za po\u015brednictwem Statorials. Wiedzie\u0107 wi\u0119cej\",\"sameAs\":[\"https:\/\/statorials.org\/pl\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Klastrowanie K-\u015brednich w Pythonie: przyk\u0142ad krok po kroku - Statoriale","description":"W tym samouczku wyja\u015bniono, jak wykona\u0107 grupowanie k-\u015brednich w j\u0119zyku Python, \u0142\u0105cznie z przyk\u0142adem krok po kroku.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/","og_locale":"pl_PL","og_type":"article","og_title":"Klastrowanie K-\u015brednich w Pythonie: przyk\u0142ad krok po kroku - Statoriale","og_description":"W tym samouczku wyja\u015bniono, jak wykona\u0107 grupowanie k-\u015brednich w j\u0119zyku Python, \u0142\u0105cznie z przyk\u0142adem krok po kroku.","og_url":"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/","og_site_name":"Statorials","article_published_time":"2023-07-16T17:38:21+00:00","og_image":[{"url":"https:\/\/statorials.org\/wp-content\/uploads\/2023\/08\/kmmoyenne1.jpg"}],"author":"Benjamin Anderson","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Benjamin Anderson","Szacowany czas czytania":"5 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/","url":"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/","name":"Klastrowanie K-\u015brednich w Pythonie: przyk\u0142ad krok po kroku - Statoriale","isPartOf":{"@id":"https:\/\/statorials.org\/pl\/#website"},"datePublished":"2023-07-16T17:38:21+00:00","dateModified":"2023-07-16T17:38:21+00:00","author":{"@id":"https:\/\/statorials.org\/pl\/#\/schema\/person\/6484727a4612df3e69f016c3129c6965"},"description":"W tym samouczku wyja\u015bniono, jak wykona\u0107 grupowanie k-\u015brednich w j\u0119zyku Python, \u0142\u0105cznie z przyk\u0142adem krok po kroku.","breadcrumb":{"@id":"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/statorials.org\/pl\/k-oznacza-grupowanie-w-pythonie\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Dom","item":"https:\/\/statorials.org\/pl\/"},{"@type":"ListItem","position":2,"name":"Klastrowanie k-\u015brednich w pythonie: przyk\u0142ad krok po kroku"}]},{"@type":"WebSite","@id":"https:\/\/statorials.org\/pl\/#website","url":"https:\/\/statorials.org\/pl\/","name":"Statorials","description":"Tw\u00f3j przewodnik po kompetencjach statystycznych!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/statorials.org\/pl\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pl-PL"},{"@type":"Person","@id":"https:\/\/statorials.org\/pl\/#\/schema\/person\/6484727a4612df3e69f016c3129c6965","name":"Benjamin Anderson","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/statorials.org\/pl\/#\/schema\/person\/image\/","url":"https:\/\/statorials.org\/pl\/wp-content\/uploads\/2023\/11\/Benjamin-Anderson-96x96.jpg","contentUrl":"https:\/\/statorials.org\/pl\/wp-content\/uploads\/2023\/11\/Benjamin-Anderson-96x96.jpg","caption":"Benjamin Anderson"},"description":"Cze\u015b\u0107, jestem Benjamin i jestem emerytowanym profesorem statystyki, kt\u00f3ry zosta\u0142 oddanym nauczycielem Statorials. Dzi\u0119ki bogatemu do\u015bwiadczeniu i wiedzy specjalistycznej w dziedzinie statystyki ch\u0119tnie dziel\u0119 si\u0119 swoj\u0105 wiedz\u0105, aby wzmocni\u0107 pozycj\u0119 uczni\u00f3w za po\u015brednictwem Statorials. Wiedzie\u0107 wi\u0119cej","sameAs":["https:\/\/statorials.org\/pl"]}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"_links":{"self":[{"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/posts\/3579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/comments?post=3579"}],"version-history":[{"count":0,"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/posts\/3579\/revisions"}],"wp:attachment":[{"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/media?parent=3579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/categories?post=3579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/statorials.org\/pl\/wp-json\/wp\/v2\/tags?post=3579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}