Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00069 006717 13591744 na godz. na dobę w sumie
Python. Uczenie maszynowe - ebook/pdf
Python. Uczenie maszynowe - ebook/pdf
Autor: Liczba stron: 416
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-3614-8 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> python - programowanie
Porównaj ceny (książka, ebook (-20%), audiobook).

Uczenie maszynowe, zajmujące się algorytmami analizującymi dane, stanowi chyba najciekawszą dziedzinę informatyki. W czasach, w których generuje się olbrzymie ilości danych, samouczące się algorytmy maszynowe stanowią wyjątkową metodę przekształcania tych danych w wiedzę. W ten sposób powstało wiele innowacyjnych technologii, a możliwości uczenia maszynowego są coraz większe. Nieocenioną pomoc w rozwijaniu tej dziedziny stanowią liczne nowe biblioteki open source, które pozwalają na budowanie algorytmów w języku Python, będącym ulubionym, potężnym i przystępnym narzędziem naukowców i analityków danych.

Niniejsza książka jest lekturą obowiązkową dla każdego, kto chce rozwinąć swoją wiedzę o danych naukowych i zamierza w tym celu wykorzystać język Python. Przystępnie opisano tu teoretyczne podstawy dziedziny i przedstawiono wyczerpujące informacje o działaniu algorytmów uczenia maszynowego, sposobach ich wykorzystania oraz metodach unikania poważnych błędów. Zaprezentowano również biblioteki Theano i Keras, sposoby przewidywania wyników docelowych za pomocą analizy regresywnej oraz techniki wykrywania ukrytych wzorców metodą analizy skupień. Nie zabrakło opisu technik przetwarzania wstępnego i zasad oceny modeli uczenia maszynowego.

W tej książce:

Uczenie maszynowe — odkryj wiedzę, którą niosą dane!


Sebastian Raschka jest ekspertem w dziedzinie analizy danych i uczenia maszynowego. Obecnie przygotowuje doktorat na Michigan State University z metod obliczeniowych w biologii statystycznej. Biegle posługuje się Pythonem. Raschka bierze również udział w różnych projektach open source i wdraża nowe metody uczenia maszynowego. W wolnym czasie pracuje nad modelami predykcyjnymi dyscyplin sportowych. Jeżeli nie siedzi przed monitorem, chętnie uprawia sport.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Python Machine Learning Tłumaczenie: Krzysztof Sawka ISBN: 978-83-283-3613-1 Copyright © Packt Publishing 2016 First published in the English language under the title ‘Python Machine Learning - (9781783555130)’. Polish edition copyright © 2017 by Helion SA All rights reserved. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/pythum Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treści Przedmowa Informacje o autorze Informacje o recenzentach Wstęp Rozdział 1. Umożliwianie komputerom uczenia się z danych Tworzenie inteligentnych maszyn służących do przekształcania danych w wiedzę Trzy różne rodzaje uczenia maszynowego Prognozowanie przyszłości za pomocą uczenia nadzorowanego Rozwiązywanie problemów interaktywnych za pomocą uczenia przez wzmacnianie Odkrywanie ukrytych struktur za pomocą uczenia nienadzorowanego Wprowadzenie do podstawowej terminologii i notacji Strategia tworzenia systemów uczenia maszynowego Wstępne przetwarzanie — nadawanie danym formy Trenowanie i dobór modelu predykcyjnego Ewaluacja modeli i przewidywanie wystąpienia nieznanych danych Wykorzystywanie środowiska Python do uczenia maszynowego Instalacja pakietów w Pythonie Podsumowanie Rozdział 2. Trenowanie algorytmów uczenia maszynowego w celach klasyfikacji 11 13 15 17 25 26 26 27 29 30 31 33 34 35 36 36 36 38 41 Trenowanie modelu perceptronu na zestawie danych Iris Adaptacyjne neurony liniowe i zbieżność uczenia Sztuczne neurony — rys historyczny początków uczenia maszynowego Implementacja algorytmu uczenia perceptronu w Pythonie 42 47 50 54 55 Minimalizacja funkcji kosztu za pomocą metody gradientu prostego Implementacja adaptacyjnego neuronu liniowego w Pythonie 57 Wielkoskalowe uczenie maszynowe i metoda stochastycznego spadku wzdłuż gradientu 62 67 Podsumowanie Poleć książkęKup książkę Spis treści Rozdział 3. Stosowanie klasyfikatorów uczenia maszynowego za pomocą biblioteki scikit-learn Wybór algorytmu klasyfikującego Pierwsze kroki z biblioteką scikit-learn Uczenie perceptronu za pomocą biblioteki scikit-learn Modelowanie prawdopodobieństwa przynależności do klasy za pomocą regresji logistycznej Teoretyczne podłoże regresji logistycznej i prawdopodobieństwa warunkowego Wyznaczanie wag logistycznej funkcji kosztu Uczenie modelu regresji logistycznej za pomocą biblioteki scikit-learn Zapobieganie nadmiernemu dopasowaniu za pomocą regularyzacji Wyznaczanie maksymalnego marginesu za pomocą maszyn wektorów nośnych Teoretyczne podłoże maksymalnego marginesu Rozwiązywanie przypadków nieliniowo rozdzielnych za pomocą zmiennych uzupełniających Alternatywne implementacje w interfejsie scikit-learn Rozwiązywanie nieliniowych problemów za pomocą jądra SVM Stosowanie sztuczki z funkcją jądra do znajdowania przestrzeni rozdzielających w przestrzeni o większej liczbie wymiarów Uczenie drzew decyzyjnych Maksymalizowanie przyrostu informacji — osiąganie jak największych korzyści Budowanie drzewa decyzyjnego Łączenie słabych klasyfikatorów w silne klasyfikatory za pomocą modelu losowego lasu Algorytm k-najbliższych sąsiadów — model leniwego uczenia Podsumowanie 69 70 70 71 76 76 79 81 84 87 87 88 90 91 93 97 98 101 104 106 109 Rozdział 4. Tworzenie dobrych zbiorów uczących — wstępne przetwarzanie danych 111 Kwestia brakujących danych Przetwarzanie danych kategoryzujących Usuwanie próbek lub cech niezawierających wartości Wstawianie brakujących danych Estymatory interfejsu scikit-learn 111 113 114 114 116 116 Mapowanie cech porządkowych Kodowanie etykiet klas 117 Kodowanie „gorącojedynkowe” cech nominalnych (z użyciem wektorów własnych) 118 120 121 123 124 129 134 137 Ocenianie istotności cech za pomocą algorytmu losowego lasu Podsumowanie Rozdzielanie zestawu danych na podzbiory uczące i testowe Skalowanie cech Dobór odpowiednich cech Regularyzacja L1 Algorytmy sekwencyjnego wyboru cech 4 Poleć książkęKup książkę Spis treści Rozdział 5. Kompresja danych poprzez redukcję wymiarowości Nienadzorowana redukcja wymiarowości za pomocą analizy głównych składowych Wyjaśniona wariancja całkowita Transformacja cech Analiza głównych składowych w interfejsie scikit-learn Nadzorowana kompresja danych za pomocą liniowej analizy dyskryminacyjnej Obliczanie macierzy rozproszenia Dobór dyskryminant liniowych dla nowej podprzestrzeni cech Rzutowanie próbek na nową przestrzeń cech Implementacja analizy LDA w bibliotece scikit-learn Jądrowa analiza głównych składowych jako metoda odwzorowywania nierozdzielnych liniowo klas Funkcje jądra oraz sztuczka z funkcją jądra Implementacja jądrowej analizy głównych składowych w Pythonie Rzutowanie nowych punktów danych Algorytm jądrowej analizy głównych składowych w bibliotece scikit-learn Podsumowanie Rozdział 6. Najlepsze metody oceny modelu i strojenie parametryczne 139 140 141 145 147 150 151 154 156 156 158 160 164 170 174 175 177 Usprawnianie cyklu pracy za pomocą kolejkowania Stosowanie k-krotnego sprawdzianu krzyżowego w ocenie skuteczności modelu Metoda wydzielania K-krotny sprawdzian krzyżowy Wczytanie zestawu danych Breast Cancer Wisconsin Łączenie funkcji transformujących i estymatorów w kolejce czynności 177 178 179 180 181 182 186 Diagnozowanie problemów z obciążeniem i wariancją za pomocą krzywych uczenia 186 Rozwiązywanie problemów nadmiernego i niewystarczającego dopasowania Sprawdzanie algorytmów za pomocą krzywych uczenia i krzywych walidacji za pomocą krzywych walidacji Dostrajanie modeli uczenia maszynowego za pomocą metody przeszukiwania siatki Strojenie hiperparametrów przy użyciu metody przeszukiwania siatki Dobór algorytmu poprzez zagnieżdżony sprawdzian krzyżowy Przegląd metryk oceny skuteczności Odczytywanie macierzy pomyłek Optymalizacja precyzji i pełności modelu klasyfikującego Wykres krzywej ROC Metryki zliczające dla klasyfikacji wieloklasowej Podsumowanie Rozdział 7. Łączenie różnych modeli w celu uczenia zespołowego Uczenie zespołów Implementacja prostego klasyfikatora wykorzystującego głosowanie większościowe Łączenie różnych algorytmów w celu klasyfikacji za pomocą głosowania większościowego Ewaluacja i strojenie klasyfikatora zespołowego 189 191 192 193 195 195 197 198 201 202 203 203 207 213 216 5 Poleć książkęKup książkę Spis treści Agregacja — tworzenie zespołu klasyfikatorów za pomocą próbek początkowych Usprawnianie słabych klasyfikatorów za pomocą wzmocnienia adaptacyjnego Podsumowanie Rozdział 8. Wykorzystywanie uczenia maszynowego w analizie sentymentów Zestaw danych IMDb movie review Wprowadzenie do modelu worka słów Przekształcanie słów w wektory cech Ocena istotności wyrazów za pomocą ważenia częstości termów — odwrotnej częstości w tekście Oczyszczanie danych tekstowych Przetwarzanie tekstu na znaczniki Uczenie modelu regresji logistycznej w celu klasyfikowania tekstu Praca z większą ilością danych — algorytmy sieciowe i uczenie pozardzeniowe Podsumowanie Rozdział 9. Wdrażanie modelu uczenia maszynowego do aplikacji sieciowej Serializacja wyuczonych estymatorów biblioteki scikit-learn Konfigurowanie bazy danych SQLite Tworzenie aplikacji sieciowej za pomocą środowiska Flask Nasza pierwsza aplikacja sieciowa Sprawdzanie i wyświetlanie formularza Przekształcanie klasyfikatora recenzji w aplikację sieciową Umieszczanie aplikacji sieciowej na publicznym serwerze Aktualizowanie klasyfikatora recenzji filmowych Podsumowanie Rozdział 10. Przewidywanie ciągłych zmiennych docelowych za pomocą analizy regresywnej Wprowadzenie do prostego modelu regresji liniowej Zestaw danych Housing Wizualizowanie ważnych elementów zestawu danych Implementacja modelu regresji liniowej wykorzystującego zwykłą metodę najmniejszych kwadratów Określanie parametrów regresywnych za pomocą metody gradientu prostego Szacowanie współczynnika modelu regresji za pomocą biblioteki scikit-learn Uczenie odpornego modelu regresywnego za pomocą algorytmu RANSAC Ocenianie skuteczności modeli regresji liniowej Stosowanie regularyzowanych metod regresji Przekształcanie modelu regresji liniowej w krzywą — regresja wielomianowa Modelowanie nieliniowych zależności w zestawie danych Housing Analiza nieliniowych relacji za pomocą algorytmu losowego lasu Podsumowanie 6 221 226 232 235 235 237 238 239 241 243 245 247 250 251 252 254 256 257 258 262 269 271 272 275 276 277 278 282 283 286 288 291 294 295 297 300 305 Poleć książkęKup książkę Spis treści Rozdział 11. Praca z nieoznakowanymi danymi — analiza skupień Grupowanie obiektów na podstawie podobieństwa przy użyciu algorytmu centroidów Algorytm k-means++ Klasteryzacja twarda i miękka Stosowanie metody łokcia do wyszukiwania optymalnej liczby skupień Ujęcie ilościowe jakości klasteryzacji za pomocą wykresu profilu Organizowanie skupień do postaci drzewa klastrów Przeprowadzanie hierarchicznej analizy skupień na macierzy odległości Dołączanie dendrogramów do mapy cieplnej Aglomeracyjna analiza skupień w bibliotece scikit-learn Wyznaczanie rejonów o dużej gęstości za pomocą algorytmu DBSCAN Podsumowanie Rozdział 12. Trenowanie sztucznych sieci neuronowych w rozpoznawaniu obrazu Modelowanie złożonych funkcji przy użyciu sztucznych sieci neuronowych Jednowarstwowa sieć neuronowa — powtórzenie Wstęp do wielowarstwowej architektury sieci neuronowych Aktywacja sieci neuronowej za pomocą propagacji w przód Klasyfikowanie pisma odręcznego Zestaw danych MNIST Implementacja wielowarstwowego perceptronu Trenowanie sztucznej sieci neuronowej Obliczanie logistycznej funkcji kosztu Uczenie sieci neuronowych za pomocą algorytmu wstecznej propagacji Ujęcie intuicyjne algorytmu wstecznej propagacji Usuwanie błędów w sieciach neuronowych za pomocą sprawdzania gradientów Zbieżność w sieciach neuronowych Inne architektury sieci neuronowych Splotowe sieci neuronowe Rekurencyjne sieci neuronowe Jeszcze słowo o implementacji sieci neuronowej Podsumowanie Rozdział 13. Równoległe przetwarzanie sieci neuronowych za pomocą biblioteki Theano Tworzenie, kompilowanie i uruchamianie wyrażeń w interfejsie Theano Czym jest Theano? Pierwsze kroki z Theano Konfigurowanie środowiska Theano Praca ze strukturami tablicowymi Przejdźmy do konkretów — implementacja regresji liniowej w Theano Dobór funkcji aktywacji dla jednokierunkowych sieci neuronowych Funkcja logistyczna — powtórzenie 307 308 311 312 315 316 320 323 326 328 328 333 335 336 337 338 340 343 344 348 356 356 359 361 363 368 370 370 371 373 373 375 376 377 378 379 381 384 387 388 7 Poleć książkęKup książkę Spis treści Szacowanie prawdopodobieństw w klasyfikacji wieloklasowej za pomocą znormalizowanej funkcji wykładniczej Rozszerzanie zakresu wartości wyjściowych za pomocą funkcji tangensa hiperbolicznego Skuteczne uczenie sieci neuronowych za pomocą biblioteki Keras Podsumowanie Skorowidz 390 391 393 398 401 8 Poleć książkęKup książkę 1 Umożliwianie komputerom uczenia się z danych Moim zdaniem uczenie maszynowe (ang. machine learning) — dział zajmujący się teorią i prak- tycznym zastosowaniem algorytmów analizujących dane — stanowi najciekawszą dziedzinę informatyki! Żyjemy w czasach przetwarzania olbrzymiej ilości informacji; za pomocą samo- uczących się algorytmów będących częścią uczenia maszynowego informacje te są przekształ- cane w rzeczywistą wiedzę. Dzięki licznym i potężnym bibliotekom o jawnym kodzie źródłowym, które powstały w ostatnich latach, prawdopodobnie teraz jest najlepszy czas, aby zainteresować się uczeniem maszynowym i nauczyć się wykorzystywać potężne algorytmy do wykrywania wzor- ców w przetwarzanych danych oraz prognozować przyszłe zdarzenia. W tym rozdziale poznamy podstawowe pojęcia związane z uczeniem maszynowym oraz zde- finiujemy jego różne rodzaje. Dzięki wprowadzeniu podstawowej terminologii wspólnie poło- żymy fundament pod skuteczne wykorzystywanie technik uczenia maszynowego w rozwiązy- waniu praktycznych problemów. Przyjrzymy się teraz następującym zagadnieniom:  ogólne pojęcia dotyczące uczenia maszynowego,  trzy rodzaje uczenia się oraz podstawowa terminologia,  główne elementy wykorzystywane w skutecznym projektowaniu systemów uczenia maszynowego,  instalacja oraz konfiguracja środowiska Python pod kątem analizowania danych i uczenia maszynowego. Poleć książkęKup książkę Python. Uczenie maszynowe Tworzenie inteligentnych maszyn służących do przekształcania danych w wiedzę W erze współczesnej technologii istnieje pewien zasób, którego mamy pod dostatkiem: mia- nowicie olbrzymie ilości ustrukturyzowanych i nieustrukturyzowanych danych. W drugiej poło- wie XX wieku uczenie maszynowe wyewoluowało z badań nad sztuczną inteligencją, w któ- rych projektowano samouczące się algorytmy, zdolne do pozyskiwania wiedzy z informacji oraz tworzenia na ich podstawie prognoz. Dzięki uczeniu maszynowemu nie trzeba zatrudniać ludzi do ręcznego określania reguł oraz tworzenia modeli poprzez analizowanie olbrzymich pokładów danych; omawiana dziedzina wiedzy oferuje efektywniejsze rozwiązanie polegające na stopnio- wym poprawianiu skuteczności modeli predykcyjnych oraz podejmowaniu decyzji na podstawie analizowanych danych. Uczenie maszynowe nie tylko staje się coraz istotniejszą częścią nauk informatycznych, lecz również odgrywa coraz większą rolę w naszym codziennym życiu. Dzięki metodom opracowanym pod kątem uczenia maszynowego możemy cieszyć się zaawansowa- nymi filtrami antyspamowymi w poczcie e-mail, wygodnym oprogramowaniem do rozpozna- wania mowy i tekstu, rzetelnymi silnikami wyszukiwarek internetowych, wymagającymi progra- mami szachowymi, a także wkrótce (miejmy nadzieję) bezpiecznymi i wydajnymi pojazdami samojezdnymi. Trzy różne rodzaje uczenia maszynowego W tym podrozdziale zapoznamy się z trzema odmianami uczenia maszynowego (rysunek 1.1): uczeniem nadzorowanym, uczeniem nienadzorowanym oraz uczeniem przez wzmacnianie. Poznamy podstawowe różnice pomiędzy wspomnianymi typami nauki oraz, korzystając z odpo- wiednich przykładów, nauczymy się intuicyjnie rozpoznawać, które rodzaje uczenia najlepiej nadają się do rozwiązywania określonych kategorii problemów. Rysunek 1.1. Podstawowe typy uczenia maszynowego 26 Poleć książkęKup książkę Rozdział 1. • Umożliwianie komputerom uczenia się z danych Prognozowanie przyszłości za pomocą uczenia nadzorowanego Głównym celem uczenia nadzorowanego (ang. supervised learning; rysunek 1.2) jest uczenie modelu za pomocą oznakowanych danych uczących (ang. training data), co pozwala przewi- dywać niewidoczne lub wygenerowane w przyszłości informacje. W tym przypadku człon nad- zorowane odnosi się do zestawu próbek, w których pożądane sygnały wyjściowe (etykiety) są znane. Rysunek 1.2. Ogólny schemat uczenia nadzorowanego Za przykład weźmy filtr antyspamowy: możemy trenować dany model, stosując algorytm nadzo- rowanego uczenia maszynowego wobec treści oznakowanych wiadomości e-mail (poprawnie oznaczonych jak spam lub wartościowe wiadomości), dzięki czemu system jest w stanie prze- widywać, czy przychodząca korespondencja zalicza się do jednej z tych dwóch kategorii. Czyn- ność nadzorowanego uczenia przy użyciu dyskretnych etykiet klas, zaprezentowana na powyż- szym przykładzie, nazywana jest również czynnością klasyfikacji. Kolejną podkategorią uczenia nadzorowanego jest regresja, w której sygnał wyjściowy przyjmuje wartości ciągłe. Klasyfikacja — przewidywanie etykiet klas Klasyfikacja stanowi podkategorię uczenia nadzorowanego służącą do przewidywania etykiet klas w nowych wystąpieniach na podstawie dotychczasowych obserwacji. Etykiety klas to dys- kretne, nieuporządkowane wartości, które określają przynależność poszczególnych instancji do wyznaczonych grup. Wspomniany wcześniej przykład filtru antyspamowego jest typowym reprezentantem klasyfikacji binarnej, w której algorytm uczenia maszynowego uczy się zestawu reguł w celu rozróżniania dwóch możliwych klas: spamu oraz użytecznych wiadomości e-mail. Jednak zbiór etykiet klas wcale nie musi mieć charakteru binarnego. Model predykcyjny wy- uczony za pomocą algorytmu uczenia nadzorowanego może przydzielić dowolną, zaprezentowaną 27 Poleć książkęKup książkę Python. Uczenie maszynowe w zestawie danych uczących etykietę klas do nowego, nieoznakowanego wystąpienia. Klasycz- nym przykładem takiej klasyfikacji wieloklasowej jest rozpoznawanie odręcznego pisma. W tym przypadku możemy stworzyć zestaw danych uczących składający się z wielu próbek odręcznego pisma każdej litery alfabetu. Jeśli użytkownik wprowadzi do urządzenia jakąś odręcznie napi- saną literę, nasz model predykcyjny będzie w stanie rozpoznać ten znak z określoną dokład- nością. Jeżeli jednak nie dołączymy symboli cyfr arabskich (0 – 9) do danych uczących, to nasz system nie będzie ich rozpoznawał. Na rysunku 1.3 zaprezentowałem koncepcję klasyfikacji binarnej, w której wykorzystano 30 pró- bek uczących: 15 próbek zostało oznaczonych jako klasa negatywna (kółka), a pozostałym prób- kom przydzieliłem etykiety klasy pozytywnej (krzyżyki). W takiej sytuacji zbiór danych jest dwuwymiarowy, co oznacza, że każda próbka zawiera dwie wartości: x1 oraz x2. Teraz wykorzy- stujemy algorytm nadzorowanego uczenia maszynowego do nauki reguły — granicy decyzyjnej symbolizowanej przez czarną, przerywaną linię — która rozdziela te dwie klasy oraz klasyfikuje analizowane dane do jednej z tych dwóch kategorii w zależności od wartości parametrów x1 i x2. Rysunek 1.3. Przykład klasyfikacji binarnej Regresja dla przewidywania wyników ciągłych Z poprzedniego podrozdziału dowiedzieliśmy się, że klasyfikacja służy do przydzielania kate- goryzowanych, nieuporządkowanych etykiet do wystąpień. Drugim rodzajem uczenia nadzo- rowanego jest prognozowanie wyników ciągłych, czyli tzw. analiza regresji. W tym modelu mamy dane zmienne objaśniające (prognozujące) oraz ciągłą zmienną objaśnianą (prognozo- waną), naszym zadaniem natomiast jest odkrycie relacji pomiędzy tymi zmiennymi, co pozwoli przewidywać przyszłe wyniki. Załóżmy, że interesuje nas prognozowanie wyników egzaminów z matematyki naszych stu- dentów. Jeżeli istnieje związek pomiędzy czasem przeznaczonym na naukę a ocenami, możemy wykorzystać te informacje jako zestaw danych uczących do trenowania modelu do przewidy- wania ocen przyszłych studentów planujących zdawać testy matematyczne. 28 Poleć książkęKup książkę Rozdział 1. • Umożliwianie komputerom uczenia się z danych Pojęcie regresji zostało ukute przez Francisa Galtona w artykule Regression Towards Mediocrity in Here- ditary Stature (regresja w kierunku przeciętności w dziedziczeniu postury) z 1886 roku. Autor opisał zjawisko biologiczne, zgodnie z którym zróżnicowanie wzrostu w populacji nie ulega zwiększeniu wraz z upły- wem czasu. Zaobserwował, że wzrost rodziców nie jest przekazywany dzieciom, lecz wzrost potomków zmierza ku średnim wartościom populacji. Na rysunku 1.4 zaprezentowana została koncepcja regresji liniowej. Mając zmienną objaśnia- jącą x i zmienną objaśnianą y, wyznaczamy dla przykładowych danych prostą przebiegającą w jak najmniejszej odległości od zestawu próbek — uzyskujemy ją najczęściej metodą najmniej- szych kwadratów. Możemy teraz wykorzystać punkt przecięcia tej prostej z osiami współrzęd- nych oraz jej nachylenie do przewidywania wyników pochodzących z nowych danych. Rysunek 1.4. Przykład regresji liniowej Rozwiązywanie problemów interaktywnych za pomocą uczenia przez wzmacnianie Kolejnym rodzajem uczenia maszynowego jest uczenie przez wzmacnianie (ang. reinforcement learning). W tym przypadku celem jest utworzenie systemu (regulatora, agenta), który popra- wia własną skuteczność na podstawie interakcji ze środowiskiem. Informacje na temat bieżą- cego stanu środowiska zazwyczaj zawierają także tzw. sygnał nagrody, dlatego możemy uznać uczenie przez wzmacnianie jako model powiązany z uczeniem nadzorowanym. Jednak w przy- padku uczenia przez wzmacnianie sprzężeniem tym nie są poprawne, wzorcowe etykiety lub wartości, lecz wartość skuteczności pomiaru działania przez funkcję nagrody. Poprzez oddzia- ływanie ze środowiskiem regulator może wykorzystywać uczenie przez wzmacnianie do tre- nowania szeregu działań dążących do maksymalizowania nagrody metodą prób i błędów lub rozważnego planowania (rysunek 1.5). 29 Poleć książkęKup książkę Python. Uczenie maszynowe Rysunek 1.5. Oddziaływania w modelu uczenia przez wzmacnianie Popularnym przykładem uczenia przez wzmacnianie jest silnik aplikacji szachowej. Regulator wybiera kolejne ruchy figur szachowych na podstawie stanu szachownicy (środowiska), a nagrodę można zdefiniować jako zwycięstwo lub porażkę na koniec rozgrywki. Odkrywanie ukrytych struktur za pomocą uczenia nienadzorowanego W przypadku uczenia nadzorowanego znamy właściwą odpowiedź jeszcze przed rozpoczęciem trenowania danego modelu, z kolei w uczeniu przez wzmacnianie wykorzystujemy regulator do definiowania wartości nagród dla poszczególnych działań. Natomiast korzystając z technik uczenia nienadzorowanego (ang. unsupervised learning), mamy do czynienia z nieoznakowanymi danymi lub danymi o nieznanej strukturze. Dzięki modelom uczenia nienadzorowanego jeste- śmy w stanie poznawać strukturę przetwarzanych danych i uzyskiwać użyteczne informacje bez stosowania znanej zmiennej wyjściowej lub funkcji nagrody. Wyznaczanie podzbiorów za pomocą grupowania Grupowaniem (klasteryzacją, analizą skupień; ang. clustering) nazywamy technikę badawczą analizy danych pozwalającą na organizowanie zestawów informacji w sensowne podzbiory (kla- stry, grupy, skupienia) bez uprzedniej wiedzy na temat przydziału grupowego poszczególnych danych. Każdy klaster powstający w wyniku analizy definiuje zbiór obiektów wykazujących między sobą pewne podobieństwa i odróżniających się od elementów umieszczonych w pozo- stałych grupach, dlatego grupowanie czasami jest nazywane „nienadzorowaną klasyfikacją”. Ta technika nadaje się znakomicie do strukturyzowania informacji oraz wyznaczania istotnych powiązań pomiędzy danymi; np. pozwala sprzedawcom odkrywać grupy klientów według ich zainteresowań, co jest wykorzystywane do tworzenia oddzielnych programów marketingowych. Na rysunku 1.6 pokazuję, w jaki sposób można wykorzystać klasteryzację do zorganizowania danych w trzy oddzielne grupy na podstawie podobieństw cech x1 i x2. 30 Poleć książkęKup książkę Rozdział 1. • Umożliwianie komputerom uczenia się z danych Rysunek 1.6. Wyznaczanie osobnych grup za pomocą klasteryzacji Redukowanie wymiarowości w celu kompresji danych Kolejną dziedziną uczenia nienadzorowanego jest redukcja wymiarowości (ang. dimensionality reduction). Często pracujemy z danymi wielowymiarowymi — każda obserwacja daje nam dużą liczbę wartości pomiarowych — co stanowi wyzwanie w przypadku ograniczonej pojemności nośników danych oraz skuteczności obliczeniowej algorytmów uczenia maszynowego. Niena- dzorowana redukcja wymiarowości jest stosowana powszechnie we wstępnym przetwarzaniu cech w celu wykluczenia szumu z danych — który może zmniejszać skuteczność predykcji niektórych algorytmów — a do tego kompresuje dane do podprzestrzeni o mniejszej liczbie wymiarów przy zachowaniu większości istotnej informacji. Czasami redukowanie wymiarowości przydaje się również do wizualizacji danych — np. zbiór cech wielowymiarowych można rzutować na jedno-, dwu- lub trójwymiarowe przestrzenie cech w celu wyświetlenia go w formie dwu- lub trójwymiarowego wykresu punktowego albo histo- gramu. Rysunek 1.7 zawiera przykład zastosowania nieliniowej redukcji wymiarowości do skom- presowania wykresu trójwymiarowego do nowej dwuwymiarowej podprzestrzeni cech. Wprowadzenie do podstawowej terminologii i notacji Po omówieniu trzech ogólnych kategorii uczenia maszynowego — nadzorowanego, nienadzoro- wanego oraz przez wzmacnianie — przyszedł czas na zapoznanie się z podstawową termino- logią, która będzie wykorzystywana w kolejnych rozdziałach. Na rysunku 1.8 widzimy tabelę stanowiącą fragment zestawu danych Iris, będącego klasycznym przykładem w dziedzinie 31 Poleć książkęKup książkę Python. Uczenie maszynowe Rysunek 1.7. Przykład redukowania wymiarowości Rysunek 1.8. Fragment zestawu danych Iris uczenia maszynowego. Na zbiór tych danych składają się wyniki pomiarów 150 kwiatów kosaćca z trzech różnych gatunków: Setosa (kosaciec szczecinkowy), Versicolor (kosaciec różnobarwny) oraz Virginica (kosaciec wirginijski). Każdy kwiat reprezentuje tu oddzielny wiersz w zbiorze danych, natomiast wyniki pomiarów (w centymetrach) są przechowywane w kolumnach, zwa- nych także zbiorami cech. Aby zachować prostotę i czytelność notacji oraz implementacji, wprowadzimy pewne podstawy algebry liniowej. W następnych rozdziałach będę opisywać dane w notacji macierzowej oraz wektorowej. Wykorzystam popularną konwencję, zgodnie z którą każda próbka jest reprezen- towana jako osobny wiersz w macierzy cech X, gdzie poszczególne cechy są przechowywane w oddzielnych kolumnach. 32 Poleć książkęKup książkę Rozdział 1. • Umożliwianie komputerom uczenia się z danych Zestaw danych Iris, składający się ze 150 próbek i z 4 cech, możemy zapisać jako macierz o rozmiarze 150×4 lub X ∈ℝ150×4: x x )( 1 1 ( 1 2 ) x x )( 1 2 ( 2 2 ) x x )( 1 3 ( 2 3 ) x x )( 1 4 ( 2 4 )  ( 150 1 x )  ( 150 2 ) x  ( 150 3 x )  ( 150 4 ) x               W dalszej części książki będziemy wykorzystywać indeks górny (i) do określenia i-tej próbki uczącej, a indeks dolny (j) będzie odnosił się do j-tego wymiaru zbioru uczącego. Pogrubionymi małymi literami będziemy oznaczać wektory: (x ∈ℝn×1), z kolei pogrubionymi dużymi literami będziemy określać macierze: (X ∈ℝn×m). Pojedyncze elementy wektora lub macierzy definiujemy literami oznaczonymi kursywą (odpowiednio: lub ). Na przykład element oznacza pierwszy wymiar (czyli długość działki) próbki numer 150. W ten sposób każdy wiersz w tej macierzy cech reprezentuje jedno wystąpienie kwiatu, które można zapisać w postaci czteroelementowego wektora x(i) ∈ℝ1×4,. Każdy wymiar cechy jest 150-elementowym wektorem kolumnowym xj ∈ℝ150×1, np.:  1x x 150 1x ) ( n mx ) ( (nx i )( 3 i )( 4 i )( 2 x x ) i )( i )( x x j  x x 1 )( j 2 ( j )  150 ( j ) x               W podobny sposób przechowujemy zmienne docelowe (tutaj: etykiety klas), jako 150-elementowy wektor kolumnowy y  )( 1 y  ( 150 ) y           (y ∈{Setosa, Versicolor, Virginica}). Strategia tworzenia systemów uczenia maszynowego W poprzednich podrozdziałach omówiliśmy podstawowe pojęcia uczenia maszynowego oraz poznaliśmy trzy jego rodzaje. Przyjrzymy się teraz innym istotnym elementom systemu uczenia maszynowego towarzyszącym algorytmom uczenia. Na rysunku 1.9 zaprezentowałem schemat typowego przebiegu procesów podczas stosowania uczenia maszynowego w modelowaniu pre- dykcyjnym. Zagadnienie to rozwiniemy w dalszej części rozdziału. 33 Poleć książkęKup książkę Python. Uczenie maszynowe Rysunek 1.9. Modelowanie predykcyjne Wstępne przetwarzanie — nadawanie danym formy Rzadko kiedy nieprzetworzone dane mają postać umożliwiającą wykorzystanie optymalnej sku- teczności algorytmu uczącego. Z tego powodu wstępne przetwarzanie (ang. preprocessing) danych stanowi jeden z najważniejszych etapów każdego rodzaju uczenia maszynowego. Weźmy za przykład omówiony we wcześniejszej części rozdziału zestaw danych Iris — danymi nieprzetworzonymi mogą być w tym przypadku zdjęcia kwiatów, z których chcemy wydobyć jak najwięcej sensownych cech. Do takich cech możemy zaliczyć barwę, odcień, intensyw- ność koloru, wysokość rośliny, a także długość i szerokość elementów anatomicznych kwiatu. Wiele algorytmów uczenia maszynowego wymaga również, aby wybrane cechy były prezen- towane w jednakowej skali, co często jest osiągane poprzez ich transformację do zakresu [0, 1] lub do standardowego rozkładu normalnego, ze średnią równą 0 i z wariancją równą 1, jak zostanie to przedstawione w dalszej części książki. Niektóre wybrane cechy mogą być ze sobą ściśle skorelowane, a przez to w pewnym stopniu nadmiarowe. W takich sytuacjach przydają się techniki redukcji wymiarowości do skompreso- wania cech w przestrzeń o mniejszej liczbie wymiarów. Zmniejszenie przestrzeni cech pozwala na zaoszczędzenie przestrzeni dyskowej, a także na znaczne przyśpieszenie działania algorytmu uczącego. 34 Poleć książkęKup książkę Rozdział 1. • Umożliwianie komputerom uczenia się z danych Aby się dowiedzieć, czy nasz algorytm uczenia maszynowego działa dobrze nie tylko na zestawie danych uczących, ale i na innych danych, musimy również losowo rozdzielić zbiór danych na osobne zestawy danych uczących i testowych. Zbiór danych uczących służy do trenowania i opty- malizowania modelu uczenia maszynowego, natomiast zestaw danych testowych przechowu- jemy do samego końca procesu i dzięki niemu oceniamy ostateczny model. Trenowanie i dobór modelu predykcyjnego W kolejnych rozdziałach przekonamy się, że stworzono wiele różnorodnych algorytmów uczenia maszynowego przeznaczonych do rozwiązywania różnych kategorii problemów. Istotnym faktem, który stanowi sedno słynnego twierdzenia Davida H. Wolperta (no free lunch theorem1), jest zro- zumienie, że nie możemy zmusić systemu do nauki „za darmo” (D.H. Wolpert, The Lack of A Priori Distinctions Between Learning Algorithms, 1996; D.H. Wolpert, W.G. Macready, No Free Lunch Theorems for Optimization, 1997). Zgodnie z intuicją możemy powiązać tę koncepcję z popularnym powiedzeniem: Gdy twoim jedynym narzędziem jest młotek, wszystko zaczyna ci przypominać gwoździe (A. Maslow, 1966). Przełóżmy to na przykład: każdy algorytm klasyfi- kacji zawiera integralne założenia i żaden z modeli klasyfikacji nie przeważa nad innymi, jeżeli nie opracujemy założeń dotyczących danego zadania. W praktyce niezbędne okazuje się porów- nanie przynajmniej kilku różnych algorytmów w celu wytrenowania i doboru najbardziej sku- tecznego modelu. Zanim jednak będziemy w stanie porównać różne modele, musimy najpierw ustalić metrykę służącą do pomiaru wydajności. Jedną z najpopularniejszych metryk jest dokład- ność klasyfikacji, którą definiujemy jako stosunek poprawnie sklasyfikowanych wystąpień do nieprawidłowo określonych instancji. Możesz w tym momencie zadać rozsądne pytanie: skąd mamy wiedzieć, że dany model dobrze się sprawuje wobec ostatecznego zestawu testowego oraz rzeczywistych danych, skoro nie wykorzystujemy danych testowych na etapie doboru systemu, lecz trzymamy je do momentu ewaluacji ostatecznego modelu? W celu rozwiązania problemu zdefiniowanego w tym pyta- niu można wykorzystać różnorodne techniki sprawdzianu krzyżowego (ang. cross-validation), w których zestaw uczący zostaje podzielony na podzbiory uczące i testowe (walidacyjne), służące do oszacowania wydajności generalizacji modelu. Nie możemy również oczekiwać, że domyślne parametry różnych algorytmów uczenia maszynowego znajdujących się w bibliotekach progra- mowych będą od razu zoptymalizowane pod kątem rozwiązania Twojego określonego problemu. Z tego powodu w dalszych rozdziałach książki będziemy często używać technik optymalizacji hiperparametrycznej, które pomogą nam poprawić skuteczność modelu. Hiperparametry to parametry, których nie uzyskano z danych, lecz które stanowią elementy regulacyjne modelu, wykorzystywane do poprawienia jego przewidywań — pojęcie to stanie się znacznie bardziej zrozumiałe w dalszej części książki, gdy przejdziemy do praktycznych przykładów. 1 W wolnym tłumaczeniu: twierdzenie o nieistnieniu darmowych obiadów — przyp. tłum. 35 Poleć książkęKup książkę Python. Uczenie maszynowe Ewaluacja modeli i przewidywanie wystąpienia nieznanych danych Po wybraniu modelu dopasowanego do zestawu danych uczących możemy wykorzystać zbiór danych testowych do oszacowania skuteczności algorytmu wobec nieznanych danych, dzięki czemu będziemy w stanie określić błąd generalizacji. Jeżeli będziemy zadowoleni z jego sku- teczności, możemy zacząć używać modelu do przewidywania nowych, przyszłych danych. Należy pamiętać o tym, że parametry wspomnianych wcześniej procedur, takich jak skalowanie cech oraz redukowanie wymiarowości, są określane wyłącznie na podstawie danych uczących, po czym wykorzystywane do przekształcania zbioru testowego oraz wszelkich nowych próbek — skuteczność mierzona jedynie na podstawie wyników z danych testowych może być nazbyt optymistyczna. Wykorzystywanie środowiska Python do uczenia maszynowego Python jest jednym z najpopularniejszych języków programowania stosowanych w analizie danych; dzięki temu zawiera olbrzymią bazę dodatkowych bibliotek stworzonych przez wspa- niałą społeczność. Mimo że wydajność języków interpretowanych (do których zalicza się Python) jest w przy- padku zadań wymagających dużej mocy obliczeniowej niższa od wydajności języków niższego poziomu, istnieją biblioteki rozszerzeń, takie jak NumPy czy SciPy, które bazują na implemen- tacjach języków Fortran i C, dzięki czemu uzyskujemy dostęp do szybkich i wektoryzowanych operacji na wielowymiarowych tablicach. Będziemy najczęściej korzystać z biblioteki scikit-learn, która obecnie stanowi jedną z najpo- pularniejszych i najbardziej przystępnych darmowych bibliotek uczenia maszynowego. Instalacja pakietów w Pythonie Omawiane środowisko programistyczne jest dostępne na wszystkie główne systemy operacyjne — Microsoft Windows, Mac OS X i Linuksa — a zarówno jego instalator, jak i dokumentację znaj- dziesz na oficjalnej stronie Pythona: https://www.python.org/. Ta książka została napisana pod kątem Pythona w wersji co najmniej 3.4.3, natomiast zalecam korzystanie z najbardziej aktualnej implementacji tego środowiska (w wersji 3), chociaż więk- szość przykładów kodu powinna być również kompatybilna z wersją = 2.7.10. Jeżeli posta- nowisz uruchamiać zawarte w książce przykłady kodu w wersji 2.7 Pythona, zapoznaj się naj- pierw z głównymi różnicami pomiędzy obydwiema wersjami środowiska programowania. 36 Poleć książkęKup książkę Rozdział 1. • Umożliwianie komputerom uczenia się z danych Dobre podsumowanie różnic pomiędzy wersjami 2.7 i 3.4 Pythona (w języku angielskim) znaj- dziesz pod adresem https://wiki.python.org/moin/Python2orPython3. Dodatkowe, wykorzystywane w dalszej części książki pakiety można zainstalować za pomocą aplikacji pip, stanowiącej część standardowej biblioteki Pythona od wersji 3.3. Więcej informacji (w języku angielskim) na temat instalatora pip znajdziesz pod adresem https://docs.python.org/ 3/installing/index.html. Po zainstalowaniu środowiska Python dodajemy kolejne pakiety, wpisując następującą komendę w wierszu poleceń: pip install JakiśPakiet Zainstalowane pakiety możemy zaktualizować za pomocą flagi --upgrade: pip install JakiśPakiet --upgrade Bardzo polecaną, alternatywną dystrybucją Pythona przeznaczoną do obliczeń naukowych jest Anaconda stworzona przez firmę Continuum Analytics. Jest to bezpłatna dystrybucja — również w przypadku zastosowań komercyjnych — zawierająca wszystkie niezbędne pakiety wykorzy- stywane w analizie danych, obliczeniach matematycznych oraz inżynierii, dostępne w przyjaz- nej, międzyplatformowej postaci. Instalator Anaconda znajdziesz pod adresem https://www. continuum.io/downloads#py34, z kolei szybkie wprowadzenie do tego środowiska jest dostępne na stronie https://conda.io/docs/using/cheatsheet.html. Po zainstalowaniu Anacondy możemy instalować nowe pakiety Pythona za pomocą następują- cego polecenia: conda install JakiśPakiet Zainstalowane pakiety aktualizujemy, korzystając z poniższej komendy: conda update JakiśPakiet Przez większość czasu będziemy korzystać z wielowymiarowych tablic biblioteki NumPy do przechowywania i przetwarzania danych. Sporadycznie zastosujemy również bibliotekę pan- das — nakładkę biblioteki NumPy zapewniającą dodatkowe, zaawansowane narzędzia do mani- pulowania danymi, dzięki czemu praca z tabelarycznymi informacjami będzie jeszcze wygod- niejsza. Aby usprawnić proces nauki i zwizualizować dane ilościowe (pozwala to w maksymalnie intuicyjny sposób zrozumieć wykonywane działania), wprowadzimy również do użytku wysoce konfigurowalną bibliotekę matplotlib. Poniżej wymieniam numery wersji głównych pakietów Pythona, które były wykorzystywane w trakcie pisania niniejszej książki. Upewnij się, że masz na swoim komputerze zainstalowane przynajmniej te wersje (lub nowsze), dzięki czemu przykładowy kod będzie działał we właściwy sposób:  NumPy 1.9.1  SciPy 0.14.0 37 Poleć książkęKup książkę Python. Uczenie maszynowe  scikit-learn 0.15.2  matplotlib 1.4.0  pandas 0.15.2 Podsumowanie W tym rozdziale zapoznaliśmy się bardzo ogólnie z uczeniem maszynowym i zaznajomiliśmy się z podstawowymi koncepcjami, którym poświęcimy znacznie większą uwagę w kolejnych rozdziałach. Dowiedzieliśmy się, że na uczenie nadzorowane składają się dwie ważne dziedziny: klasyfikacja i regresja. Modele klasyfikacji pozwalają nam kategoryzować obiekty do znanych klas, natomiast dzięki analizie regresji jesteśmy w stanie prognozować wyniki ciągłe docelowych zmiennych. Uczenie nienadzorowanie nie tylko zapewnia dostęp do przydatnych technik odkrywających struktury nieoznakowanych danych, lecz również pozwala na kompresowanie danych w czasie wstępnego przetwarzania cech. Przyjrzeliśmy się pobieżnie typowej strategii dopasowywania uczenia maszynowego do zadań problemowych, która stanowi dla nas podstawę do głębszych przemyśleń oraz ukazywania przykładów w dalszej części książki. Na koniec zaś przygotowaliśmy środowisko Pythona i zain- stalowaliśmy oraz zaktualizowaliśmy wszystkie pakiety niezbędne do własnoręcznego testowa- nia uczenia maszynowego. W następnym rozdziale zaimplementujemy jeden z najwcześniejszych algorytmów uczenia ma- szynowego stosowanych w klasyfikacji, co przygotuje nas do rozdziału 3., „Stosowanie klasyfi- katorów uczenia maszynowego za pomocą biblioteki scikit-learn”, w którym zapoznamy się z bardziej zaawansowanymi algorytmami dostępnymi w bibliotece o jawnym kodzie źródło- wym — scikit-learn. Algorytmy uczenia maszynowego uczą się z danych, dlatego kluczową kwe- stią jest dostarczanie im użytecznych informacji, zatem w rozdziale 4., „Tworzenie dobrych zbio- rów uczących — wstępne przetwarzanie danych”, przyjrzymy się istotnym technikom wstępnego przetwarzania danych. W rozdziale 5., „Kompresja danych poprzez redukcję wymiarowości”, poznamy metody redukowania wymiarowości, które pomogą nam skompresować zbiór danych do mniejszej przestrzeni cech, co może być korzystne dla szybkości obliczeń. Ważnym aspektem tworzenia modeli uczenia maszynowego jest ocena ich skuteczności i oszacowanie ich zdolno- ści predykcji dla nowych, nieznanych danych. W rozdziale 6., „Najlepsze metody oceny modelu i strojenie parametryczne”, nauczymy się wykorzystywać najlepsze rozwiązania umożliwiające strojenie modelu i jego ewaluację. W pewnych przypadkach możemy być niezadowoleni ze skuteczności modelu predykcyjnego pomimo wielu godzin spędzonych na jego dopasowywaniu i testowaniu. Z rozdziału 7., „Łączenie różnych modeli w celu uczenia zespołowego”, dowiemy się, w jaki sposób łączyć różne modele uczenia maszynowego, aby uzyskiwać jeszcze potęż- niejsze systemy prognozujące. 38 Poleć książkęKup książkę Rozdział 1. • Umożliwianie komputerom uczenia się z danych Po omówieniu wszystkich najważniejszych elementów typowego systemu uczenia maszynowego zaimplementujemy model przewidywania emocji na podstawie rozdziału 8., „Wykorzystywanie uczenia maszynowego w analizie sentymentów”. Natomiast w rozdziale 9., „Wdrażanie modelu uczenia maszynowego do aplikacji sieciowej”, podłączymy ten model pod aplikację sieciową i podzielimy się nim z resztą świata. Następnie w rozdziale 10., „Przewidywanie ciągłych zmiennych docelowych za pomocą analizy regresywnej”, wykorzystamy algorytmy uczenia maszynowego do analizy regresywnej pozwalającej na prognozowanie ciągłych zmiennych wyj- ściowych, a w rozdziale 11., „Praca z nieoznakowanymi danymi — analiza skupień”, wprowa- dzimy algorytmy skupień wyszukujące ukryte struktury wśród danych. Ostatnie dwa rozdziały zostały poświęcone sztucznym sieciom neuronowym służącym do rozwiązywania złożonych problemów, takich jak rozpoznawanie mowy i tekstu — czyli jednym z najbardziej fascynują- cych zagadnień w świecie uczenia maszynowego. 39 Poleć książkęKup książkę Python. Uczenie maszynowe 40 Poleć książkęKup książkę
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Python. Uczenie maszynowe
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: