E-book details

Uczenie maszynowe w Pythonie. Receptury

Uczenie maszynowe w Pythonie. Receptury

Chris Albon

Ebook

Uczenie maszynowe jest dziś wykorzystywane w różnych dziedzinach życia: w biznesie, w polityce, w organizacjach non profit i oczywiście w nauce. Samouczące się algorytmy maszynowe stanowią wyjątkową metodę przekształcania danych w wiedzę. Powstało sporo książek wyjaśniających sposób działania tych algorytmów i prezentujących nieraz spektakularne przykłady ich wykorzystania. Do dyspozycji pozostają też narzędzia przeznaczone do tego rodzaju zastosowań, takie jak biblioteki Pythona, w tym pandas i scikit-learn. Problemem pozostaje implementacja rozwiązań codziennych problemów związanych z uczeniem maszynowym.

Z tej książki najwięcej skorzystają profesjonaliści, którzy znają podstawowe koncepcje związane z uczeniem maszynowym. Osoby te potraktują ją jako przewodnik ułatwiający rozwiązywanie konkretnych problemów napotykanych podczas codziennej pracy z uczeniem maszynowym. Dzięki zawartym tu recepturom takie zadania jak wczytywanie danych, obsługa danych tekstowych i liczbowych, wybór modelu czy redukcja wymiarowości staną się o wiele łatwiejsze do wykonania. Każda receptura zawiera kod, który można wstawić do swojego programu, połączyć lub zaadaptować według potrzeb. Przedstawiono także analizy wyjaśniające poszczególne rozwiązania i ich kontekst. Z tą książką płynnie przejdziesz od rozważań teoretycznych do opracowywania działających aplikacji i praktycznego korzystania z zalet uczenia maszynowego.

Receptury w tej książce dotyczą:

  • wektorów, macierzy i tablic
  • obsługi danych liczbowych i tekstowych, obrazów, a także związanych z datą i godziną
  • redukcji wymiarowości za pomocą wyodrębniania i wyboru cech
  • oceny i wyboru modelu oraz regresji liniowej i logistycznej
  • maszyn wektorów nośnych (SVM), naiwnej klasyfikacji bayesowskiej, klasteryzacji i sieci neuronowych
  • zapisywania i wczytywania wytrenowanych modeli

Uczenie maszynowe w Pythonie - użyj sprawdzonych receptur kodu!


Wprowadzenie 11

1. Wektor, macierz i tablica 15

  • 1.0. Wprowadzenie 15
  • 1.1. Tworzenie wektora 15
  • 1.2. Tworzenie macierzy 16
  • 1.3. Tworzenie macierzy rzadkiej 17
  • 1.4. Pobieranie elementów 18
  • 1.5. Opisywanie macierzy 20
  • 1.6. Przeprowadzanie operacji na elementach 20
  • 1.7. Znajdowanie wartości maksymalnej i minimalnej 21
  • 1.8. Obliczanie średniej, wariancji i odchylenia standardowego 22
  • 1.9. Zmiana kształtu tablicy 23
  • 1.10. Transponowanie wektora lub macierzy 24
  • 1.11. Spłaszczanie macierzy 25
  • 1.12. Znajdowanie rzędu macierzy 25
  • 1.13. Obliczanie wyznacznika macierzy 26
  • 1.14. Pobieranie przekątnej macierzy 27
  • 1.15. Obliczanie śladu macierzy 27
  • 1.16. Znajdowanie wektorów i wartości własnych 28
  • 1.17. Obliczanie iloczynu skalarnego 29
  • 1.18. Dodawanie i odejmowanie macierzy 30
  • 1.19. Mnożenie macierzy 31
  • 1.20. Odwracanie macierzy 32
  • 1.21. Generowanie liczb losowych 33

2. Wczytywanie danych 35

  • 2.0. Wprowadzenie 35
  • 2.1. Wczytywanie przykładowego zbioru danych 35
  • 2.2. Tworzenie symulowanego zbioru danych 36
  • 2.3. Wczytywanie pliku CSV 39
  • 2.4. Wczytywanie pliku Excela 40
  • 2.5. Wczytywanie pliku JSON 41
  • 2.6. Wykonywanie zapytań do bazy danych SQL 42

3. Przygotowywanie danych 45

  • 3.0. Wprowadzenie 45
  • 3.1. Tworzenie ramki danych 46
  • 3.2. Opisywanie danych 47
  • 3.3. Poruszanie się po ramce danych 49
  • 3.4. Pobieranie wierszy na podstawie pewnych warunków 51
  • 3.5. Zastępowanie wartości 52
  • 3.6. Zmiana nazwy kolumny 53
  • 3.7. Znajdowanie wartości minimalnej, maksymalnej, sumy, średniej i liczby elementów w kolumnie 54
  • 3.8. Znajdowanie unikatowych wartości 55
  • 3.9. Obsługa brakujących wartości 56
  • 3.10. Usuwanie kolumn 58
  • 3.11. Usuwanie wiersza 59
  • 3.12. Usuwanie powielonych wierszy 60
  • 3.13. Grupowanie wierszy 62
  • 3.14. Grupowanie wierszy według czasu 63
  • 3.15. Iterowanie przez kolumnę 65
  • 3.16. Wywoływanie funkcji dla wszystkich elementów kolumny 66
  • 3.17. Wywoływanie funkcji dla grupy 67
  • 3.18. Konkatenacja obiektów typu DataFrame 68
  • 3.19. Złączanie obiektów typu DataFrame 69

4. Obsługa danych liczbowych 73

  • 4.0. Wprowadzenie 73
  • 4.1. Przeskalowywanie cechy 73
  • 4.2. Standaryzowanie cechy 74
  • 4.3. Normalizowanie obserwacji 76
  • 4.4. Generowanie cech wielomianowych i interakcji 78
  • 4.5. Transformacja cech 79
  • 4.6. Wykrywanie elementów odstających 80
  • 4.7. Obsługa elementów odstających 82
  • 4.8. Dyskretyzacja cech 84
  • 4.9. Grupowanie obserwacji przy użyciu klastra 85
  • 4.10. Usuwanie obserwacji, w których brakuje wartości 87
  • 4.11. Uzupełnianie brakujących wartości 88

5. Obsługa danych kategoryzujących 91

  • 5.0. Wprowadzenie 91
  • 5.1. Kodowanie nominalnych cech kategoryzujących 92
  • 5.2. Kodowanie porządkowych cech kategoryzujących 94
  • 5.3. Kodowanie słowników cech 96
  • 5.4. Wstawianie brakujących wartości klas 98
  • 5.5. Obsługa niezrównoważonych klas 99

6. Obsługa tekstu 103

  • 6.0. Wprowadzenie 103
  • 6.1. Oczyszczanie tekstu 103
  • 6.2. Przetwarzanie i oczyszczanie danych HTML 105
  • 6.3. Usuwanie znaku przestankowego 105
  • 6.4. Tokenizacja tekstu 106
  • 6.5. Usuwanie słów o małym znaczeniu 107
  • 6.6. Stemming słów 108
  • 6.7. Oznaczanie części mowy 109
  • 6.8. Kodowanie tekstu za pomocą modelu worka słów 111
  • 6.9. Określanie wagi słów 113

7. Obsługa daty i godziny 117

  • 7.0. Wprowadzenie 117
  • 7.1. Konwertowanie ciągu tekstowego na datę 117
  • 7.2. Obsługa stref czasowych 118
  • 7.3. Pobieranie daty i godziny 120
  • 7.4. Podział danych daty na wiele cech 121
  • 7.5. Obliczanie różnicy między datami 122
  • 7.6. Kodowanie dni tygodnia 123
  • 7.7. Tworzenie cechy opóźnionej w czasie 124
  • 7.8. Użycie okien upływającego czasu 125
  • 7.9. Obsługa brakujących danych w serii danych zawierających wartości daty i godziny 126

8. Obsługa obrazów 129

  • 8.0. Wprowadzenie 129
  • 8.1. Wczytywanie obrazu 129
  • 8.2. Zapisywanie obrazu 132
  • 8.3. Zmiana wielkości obrazu 133
  • 8.4. Kadrowanie obrazu 134
  • 8.5. Rozmywanie obrazu 135
  • 8.6. Wyostrzanie obrazu 138
  • 8.7. Zwiększanie kontrastu 138
  • 8.8. Izolowanie kolorów 141
  • 8.9. Progowanie obrazu 142
  • 8.10. Usuwanie tła obrazu 145
  • 8.11. Wykrywanie krawędzi 147
  • 8.12. Wykrywanie narożników w obrazie 150
  • 8.13. Tworzenie cech w uczeniu maszynowym 153
  • 8.14. Użycie średniej koloru jako cechy 155
  • 8.15. Użycie histogramu koloru jako cechy 157

9. Redukowanie wymiarowości za pomocą wyodrębniania cech 161

  • 9.0. Wprowadzenie 161
  • 9.1. Redukowanie cech za pomocą głównych składowych 161
  • 9.2. Redukowanie cech, gdy dane są liniowo nierozłączne 164
  • 9.3. Redukowanie cech przez maksymalizację rozłączności klas 166
  • 9.4. Redukowanie cech za pomocą rozkładu macierzy 169
  • 9.5. Redukowanie cech w rzadkich danych 170

10. Redukcja wymiarowości za pomocą wyboru cech 173

  • 10.0. Wprowadzenie 173
  • 10.1. Progowanie wariancji cechy liczbowej 173
  • 10.2. Progowanie wariancji cechy binarnej 175
  • 10.3. Obsługa wysoce skorelowanych cech 176
  • 10.4. Usuwanie nieistotnych dla klasyfikacji cech 177
  • 10.5. Rekurencyjne eliminowanie cech 179

11. Ocena modelu 183

  • 11.0. Wprowadzenie 183
  • 11.1. Modele sprawdzianu krzyżowego 183
  • 11.2. Tworzenie modelu regresji bazowej 186
  • 11.3. Tworzenie modelu klasyfikacji bazowej 188
  • 11.4. Ocena prognoz klasyfikatora binarnego 189
  • 11.5. Ocena progowania klasyfikatora binarnego 192
  • 11.6. Ocena prognoz klasyfikatora wieloklasowego 195
  • 11.7. Wizualizacja wydajności klasyfikatora 197
  • 11.8. Ocena modelu regresji 199
  • 11.9. Ocena modelu klasteryzacji 201
  • 11.10. Definiowanie niestandardowych współczynników oceny modelu 202
  • 11.11. Wizualizacja efektu wywieranego przez wielkość zbioru uczącego 204
  • 11.12. Tworzenie raportu tekstowego dotyczącego współczynnika oceny 206
  • 11.13. Wizualizacja efektu wywieranego przez zmianę wartości hiperparametrów 207

12. Wybór modelu 211

  • 12.0. Wprowadzenie 211
  • 12.1. Wybór najlepszych modeli przy użyciu wyczerpującego wyszukiwania 212
  • 12.2. Wybór najlepszych modeli za pomocą przeszukiwania losowego 214
  • 12.3. Wybór najlepszych modeli z wielu algorytmów uczenia maszynowego 216
  • 12.4. Wybór najlepszych modeli na etapie przygotowywania danych 217
  • 12.5. Przyspieszanie wyboru modelu za pomocą równoległości 219
  • 12.6. Przyspieszanie wyboru modelu przy użyciu metod charakterystycznych dla algorytmu 220
  • 12.7. Ocena wydajności po wyborze modelu 221

13. Regresja liniowa 225

  • 13.0. Wprowadzenie 225
  • 13.1. Wyznaczanie linii 225
  • 13.2. Obsługa wpływu interakcji 227
  • 13.3. Wyznaczanie zależności nieliniowej 228
  • 13.4. Redukowanie wariancji za pomocą regularyzacji 230
  • 13.5. Redukowanie cech za pomocą regresji metodą LASSO 232

14. Drzewa i lasy 235

  • 14.0. Wprowadzenie 235
  • 14.1. Trenowanie klasyfikatora drzewa decyzyjnego 235
  • 14.2. Trenowanie regresora drzewa decyzyjnego 237
  • 14.3. Wizualizacja modelu drzewa decyzyjnego 238
  • 14.4. Trenowanie klasyfikatora losowego lasu 240
  • 14.5. Testowanie regresora losowego lasu 241
  • 14.6. Identyfikacja ważnych cech w losowych lasach 242
  • 14.7. Wybór ważnych cech w losowym lesie 245
  • 14.8. Obsługa niezrównoważonych klas 246
  • 14.9. Kontrolowanie wielkości drzewa 247
  • 14.10. Poprawa wydajności za pomocą wzmocnienia 248
  • 14.11. Ocena losowego lasu za pomocą estymatora błędu out-of-bag 250

15. Algorytm k najbliższych sąsiadów 251

  • 15.0. Wprowadzenie 251
  • 15.1. Wyszukiwanie najbliższych sąsiadów obserwacji 251
  • 15.2. Tworzenie klasyfikatora k najbliższych sąsiadów 253
  • 15.3. Ustalanie najlepszej wielkości sąsiedztwa 255
  • 15.4. Tworzenie klasyfikatora najbliższych sąsiadów opartego na promieniu 256

16. Regresja logistyczna 259

  • 16.0. Wprowadzenie 259
  • 16.1. Trenowanie klasyfikatora binarnego 259
  • 16.2. Trenowanie klasyfikatora wieloklasowego 260
  • 16.3. Redukcja wariancji poprzez regularyzację 262
  • 16.4. Trenowanie klasyfikatora na bardzo dużych danych 263
  • 16.5. Obsługa niezrównoważonych klas 264

17. Maszyna wektora nośnego 267

  • 17.0. Wprowadzenie 267
  • 17.1. Trenowanie klasyfikatora liniowego 267
  • 17.2. Obsługa liniowo nierozdzielnych klas przy użyciu funkcji jądra 270
  • 17.3. Określanie prognozowanego prawdopodobieństwa 273
  • 17.4. Identyfikacja wektorów nośnych 275
  • 17.5. Obsługa niezrównoważonych klas 276

18. Naiwny klasyfikator bayesowski 279

  • 18.0. Wprowadzenie 279
  • 18.1. Trenowanie klasyfikatora dla cech ciągłych 280
  • 18.2. Trenowanie klasyfikatora dla cech dyskretnych lub liczebnych 282
  • 18.3. Trenowanie naiwnego klasyfikatora bayesowskiego dla cech binarnych 283
  • 18.4. Kalibrowanie prognozowanego prawdopodobieństwa 284

19. Klasteryzacja 287

  • 19.0. Wprowadzenie 287
  • 19.1. Klasteryzacja za pomocą k średnich 287
  • 19.2. Przyspieszanie klasteryzacji za pomocą k średnich 290
  • 19.3. Klasteryzacja za pomocą algorytmu meanshift 290
  • 19.4. Klasteryzacja za pomocą algorytmu DBSCAN 292
  • 19.5. Klasteryzacja za pomocą łączenia hierarchicznego 293

20. Sieci neuronowe 295

  • 20.0. Wprowadzenie 295
  • 20.1. Przygotowywanie danych dla sieci neuronowej 296
  • 20.2. Projektowanie sieci neuronowej 297
  • 20.3. Trenowanie klasyfikatora binarnego 300
  • 20.4. Trenowanie klasyfikatora wieloklasowego 302
  • 20.5. Trenowanie regresora 304
  • 20.6. Generowanie prognoz 305
  • 20.7. Wizualizacja historii trenowania 307
  • 20.8. Redukcja nadmiernego dopasowania za pomocą regularyzacji wagi 310
  • 20.9. Redukcja nadmiernego dopasowania za pomocą techniki wcześniejszego zakończenia procesu uczenia 311
  • 20.10. Redukcja nadmiernego dopasowania za pomocą techniki porzucenia 313
  • 20.11. Zapisywanie postępu modelu uczącego 315
  • 20.12. K-krotny sprawdzian krzyżowy sieci neuronowej 316
  • 20.13. Dostrajanie sieci neuronowej 318
  • 20.14. Wizualizacja sieci neuronowej 320
  • 20.15. Klasyfikacja obrazów 322
  • 20.16. Poprawa wydajności przez modyfikację obrazu 325
  • 20.17. Klasyfikowanie tekstu 327

21. Zapisywanie i wczytywanie wytrenowanych modeli 331

  • 21.0. Wprowadzenie 331
  • 21.1. Zapisywanie i wczytywanie modelu biblioteki scikit-learn 331
  • 21.2. Zapisywanie i wczytywanie modelu biblioteki Keras 332

Skorowidz 335

  • Title: Uczenie maszynowe w Pythonie. Receptury
  • Author: Chris Albon
  • Original title: Machine Learning with Python Cookbook: Practical Solutions from Preprocessing to Deep Learning
  • Translation: Robert Górczyński
  • ISBN: 978-83-283-5051-9, 9788328350519
  • Date of issue: 2019-03-12
  • Format: Ebook
  • Item ID: uczmar
  • Publisher: Helion