Python Data Science. Niezbędne narzędzia do pracy z danymi. Wydanie 2 - ebook
Python Data Science. Niezbędne narzędzia do pracy z danymi. Wydanie 2 - ebook
Python udostępnia pierwszorzędne narzędzia i biblioteki przeznaczone specjalnie do pracy z danymi. Zdobyły one uznanie wielu naukowców i ekspertów, ceniących ten język za wysoką jakość rozwiązań służących do wydobywania wiedzy z danych. Aby uzyskać najlepsze możliwe efekty, trzeba dobrze poznać zarówno poszczególne biblioteki Pythona, jak i zasady pracy z nimi.
Ta książka stanowi wszechstronne omówienie wszystkich bibliotek Pythona, potrzebnych naukowcom i specjalistom pracującym z danymi. Znalazł się tu dokładny opis IPythona, NumPy, Pandas, Matplotlib, Scikit-Learn i innych narzędzi. Podręcznik uwzględnia przede wszystkim ich aspekty praktyczne, dzięki czemu świetnie się sprawdzi w rozwiązywaniu codziennych problemów z manipulowaniem, przekształcaniem, oczyszczaniem i wizualizacją różnych typów danych, a także jako pomoc podczas tworzenia modeli statystycznych i modeli uczenia maszynowego. Docenią go wszyscy, którzy zajmują się obliczeniami naukowymi w Pythonie.
To wydanie zawiera jasne przykłady, które pomogą Ci skonfigurować i wykorzystać narzędzia do nauki o danych i uczenia maszynowego.
Anne Bonner, założycielka i dyrektor generalna Content Simplicity
Nauczysz się:
- pracować w naukowym środowisku obliczeniowym IPythona
- korzystać ze specjalistycznych bibliotek przeznaczonych do pracy z danymi
- stosować typy ndarray i DataFrame do przechowywania i przetwarzania danych
- tworzyć różnego rodzaju wizualizacje danych za pomocą Matplotlib
- implementować najważniejsze algorytmy uczenia maszynowego z pakietu Scikit-Learn
Wydobywaj z danych mądre odpowiedzi na trudne pytania!
Spis treści
Wprowadzenie
Część I. Jupyter - coś więcej niż zwykły Python
- 1. Wprowadzenie do IPythona oraz Jupytera
- Uruchamianie powłoki IPythona
- Uruchamianie Jupyter Notebook
- IPython - pomoc i dokumentacja
- Dostęp do dokumentacji za pomocą ?
- Dostęp do kodu źródłowego za pomocą ??
- Przeglądanie zawartości modułów za pomocą autouzupełniania z tabulatorem
- Skróty klawiaturowe w powłoce IPython
- Skróty do nawigacji
- Skróty do wprowadzania tekstu
- Skróty związane z historią poleceń
- Pozostałe skróty
- 2. Funkcje interaktywne
- Magiczne polecenia IPythona
- Uruchamianie zewnętrznego kodu za pomocą %run
- Pomiar czasu wykonania za pomocą %timeit
- Pomoc dotycząca magicznych poleceń ?, %magic i %lsmagic
- Historia wejścia i wyjścia
- Obiekty In i Out IPythona
- Symbol podkreślenia i poprzednie wyjścia
- Wyłączanie wyjścia
- Inne magiczne polecenia
- Polecenia IPythona i powłoki
- Krótkie wprowadzenie do powłoki
- Polecenia powłoki w IPythonie
- Przekazywanie wartości do i z powłoki
- Magiczne polecenia związane z powłoką
- Magiczne polecenia IPythona
- 3. Debugowanie i profilowanie
- Błędy i debugowanie
- Kontrolowanie wyjątków za pomocą %xmode
- Debugowanie - gdy lektura śladu nie wystarcza
- Profilowanie kodu i pomiary czasu jego wykonania
- Pomiar czasu wykonania fragmentu kodu za pomocą %timeit i %time
- Profilowanie całych skryptów za pomocą %prun
- Profilowanie linia po linii za pomocą %lprun
- Profilowanie pamięci za pomocą %memit i %mprun
- Więcej materiałów na temat IPythona
- Materiały dostępne w sieci
- Książki
- Błędy i debugowanie
Część II. Wprowadzenie do NumPy
- 4. Zrozumieć typy danych w Pythonie
- Typ całkowitoliczbowy w Pythonie to coś więcej niż zwykły int
- Lista w Pythonie to coś więcej niż zwykła lista
- Tablice o stałym typie w Pythonie
- Tworzenie tablic z list
- Tworzenie tablic od podstaw
- Standardowe typy danych NumPy
- 5. Podstawy pracy z tablicami NumPy
- Atrybuty tablicy NumPy
- Indeksowanie tablicy - dostęp do pojedynczych elementów
- Slicing, czyli sposób na dostęp do podtablic
- Jednowymiarowe podtablice
- Wielowymiarowe podtablice
- Podtablice jako widoki bez kopiowania
- Kopiowanie tablic
- Zmiana kształtu tablic
- Konkatenacja i dzielenie tablic
- Konkatenacja tablic
- Dzielenie tablic
- 6. Obliczenia z użyciem tablic NumPy - funkcje uniwersalne
- Powolność pętli
- Wprowadzenie do funkcji uniwersalnych
- Przegląd funkcji uniwersalnych dostępnych w NumPy
- Arytmetyka tablicowa
- Wartość bezwzględna
- Funkcje trygonometryczne
- Potęgi i logarytmy
- Funkcje uniwersalne do zastosowań specjalnych
- Zaawansowane możliwości funkcji uniwersalnych
- Określanie miejsca zapisu danych wyjściowych
- Agregacje
- Metoda outer
- Więcej materiałów na temat funkcji uniwersalnych
- 7. Agregacje - minimum, maksimum i wszystko pomiędzy nimi
- Sumowanie wartości w tablicy
- Minimum i maksimum
- Agregacja w wielu wymiarach
- Inne funkcje agregujące
- Przykład: jaki jest średni wzrost prezydenta USA?
- 8. Obliczenia na tablicach - broadcasting
- Co to jest broadcasting?
- Zasady broadcastingu
- Pierwszy przykład
- Drugi przykład
- Trzeci przykład
- Broadcasting w praktyce
- Centrowanie wartości w tablicy
- Rysowanie wykresów funkcji dwuwymiarowych
- 9. Porównania, maski i logika boolowska
- Przykład: sprawdzanie, przez ile dni padało
- Operatory porównania jako funkcje uniwersalne
- Praca z tablicami wartości logicznych
- Zliczanie wpisów
- Operatory logiczne
- Tablice wartości logicznych jako maski
- Słowa kluczowe and i or kontra operatory &/|
- 10. Fancy indexing
- Jak działa fancy indexing?
- Łączenie różnych metod indeksowania
- Przykład: wybieranie losowych punktów
- Modyfikowanie wartości za pomocą fancy indexingu
- Przykład: podział danych na kubełki
- 11. Sortowanie tablic
- Szybkie sortowanie w NumPy - np.sort i np.argsort
- Sortowanie wzdłuż wierszy lub kolumn
- Sortowanie częściowe - partycjonowanie
- Przykład: metoda k najbliższych sąsiadów
- 12. Dane ustrukturyzowane - ustrukturyzowane tablice NumPy
- Tworzenie ustrukturyzowanych tablic
- Bardziej zaawansowane typy złożone
- Tablice rekordów - ustrukturyzowane tablice z niespodzianką
- W stronę Pandas
Część III. Przekształcanie danych za pomocą Pandas
- 13. Wprowadzenie do obiektów Pandas
- Obiekt typu Series
- Obiekty typu Series jako uogólnienie tablic NumPy
- Obiekt typu Series jako szczególny rodzaj słownika
- Tworzenie obiektów typu Series
- Obiekt typu DataFrame
- Ramka danych jako uogólnienie tablicy NumPy
- Ramka danych jako szczególny rodzaj słownika
- Tworzenie obiektów typu DataFrame
- Obiekt typu Index
- Indeks jako niemutowalna tablica
- Indeks jako uporządkowany zbiór
- Obiekt typu Series
- 14. Indeksowanie i wybieranie
- Wybór danych z obiektów typu Series
- Obiekt typu Series jako słownik
- Obiekt typu Series jako jednowymiarowa tablica
- Indeksatory: loc i iloc
- Wybór danych z obiektów typu DataFrame
- Obiekt typu DataFrame jako słownik
- Obiekt typu DataFrame jako dwuwymiarowa tablica
- Inne konwencje związane z indeksowaniem
- Wybór danych z obiektów typu Series
- 15. Operacje na danych w Pandas
- Funkcje uniwersalne - zachowanie indeksu
- Funkcje uniwersalne - dopasowanie indeksu
- Dopasowanie indeksu w obiektach typu Series
- Dopasowanie indeksu w obiektach typu DataFrame
- Funkcje uniwersalne - operacje pomiędzy ramkami danych a obiektami typu Series
- 16. Obsługa brakujących danych
- Kompromisy w konwencjach dotyczących brakujących danych
- Brakujące dane w Pandas
- None jako rodzaj wartownika
- NaN - brakujące dane liczbowe
- NaN i None w Pandas
- Nullowalne typy danych w Pandas
- Praca z wartościami typu null
- Wykrywanie wartości typu null
- Usuwanie wartości typu null
- Uzupełnianie braków
- 17. Indeksowanie hierarchiczne
- Wielokrotnie indeksowane obiekty typu Series
- Zły sposób
- Lepszy sposób - MultiIndex z Pandas
- MultiIndex jako dodatkowy wymiar
- MultiIndex - metody tworzenia
- Tworzenie indeksu hierarchicznego z użyciem jawnego konstruktora
- Nazwy poziomów indeksu hierarchicznego
- MultiIndex dla kolumn
- MultiIndex - indeksowanie i slicing
- Obiekty typu Series z wielokrotnymi indeksami
- Obiekty typu DataFrame z wielokrotnymi indeksami
- MultiIndex - zmiana kolejności
- Posortowane i nieposortowane indeksy
- Metody stack i unstack
- Ustawianie i resetowanie indeksu
- Wielokrotnie indeksowane obiekty typu Series
- 18. Łączenie zbiorów danych - concat i append
- Przypomnienie: konkatenacja tablic NumPy
- Prosta konkatenacja za pomocą pd.concat
- Zduplikowane indeksy
- Konkatenacja za pomocą złączeń
- Metoda append
- 19. Łączenie zbiorów danych - merge i join
- Algebra relacji
- Rodzaje złączeń
- Złączenia jeden-do-jednego
- Złączenia wiele-do-jednego
- Złączenia wiele-do-wielu
- Określanie klucza, na podstawie którego ma być wykonane złączenie
- Słowo kluczowe on
- Słowa kluczowe left_on i right_on
- Słowa kluczowe left_index i right_index
- Wykorzystanie arytmetyki zbiorów w złączeniach
- Nakładające się nazwy kolumn - słowo kluczowe suffixes
- Przykład: dane dotyczące stanów USA
- 20. Agregacja i grupowanie
- Dane na temat planet
- Prosta agregacja w Pandas
- Grupowanie - podziel, zastosuj funkcję, połącz
- Podziel, zastosuj funkcję, połącz
- Obiekt GroupBy
- Agregacja, filtrowanie, transformacja, wywoływanie funkcji
- Określanie sposobu podziału
- Przykład grupowania
- 21. Tabele przestawne
- Dane na potrzeby przykładu
- Ręczne tworzenie tabel przestawnych
- Składnia tabel przestawnych
- Wielopoziomowe tabele przestawne
- Dodatkowe opcje tabel przestawnych
- Przykład: dane dotyczące liczby urodzeń
- 22. Zwektoryzowane operacje na łańcuchach znaków
- Wprowadzenie do pracy z łańcuchami znaków w Pandas
- Metody pracujące na łańcuchach znaków w Pandas
- Metody podobne do metod znanych z Pythona
- Metody wykorzystujące wyrażenia regularne
- Różne metody
- Przykład: baza przepisów
- Prosty system rekomendacji przepisów
- Jak można rozwinąć ten projekt?
- 23. Praca z szeregami czasowymi
- Daty i godziny w Pythonie
- Daty i godziny w Pythonie - datetime i dateutil
- Typowane tablice znaczników czasu - datetime64 z NumPy
- Daty i godziny w Pandas - najlepsze elementy z obu światów
- Szeregi czasowe w Pandas - indeksowanie według czasu
- Struktury danych do przechowywania szeregów czasowych w Pandas
- Regularne sekwencje dat - pd.date_range
- Częstotliwości i przesunięcia
- Ponowne próbkowanie, przesuwanie i okna
- Ponowne próbkowanie i zmiana częstotliwości
- Przesunięcia w czasie
- Ruchome okna
- Przykład: wizualizacja danych o liczbie rowerów w Seattle
- Wizualizacja danych
- Zagłębianie się w dane
- Daty i godziny w Pythonie
- 24. Wysoka wydajność w Pandas - eval i query
- Dlaczego warto zastosować query i eval - wyrażenia złożone
- Wydajne operacje z użyciem pandas.eval
- Operacje na kolumnach z użyciem DataFrame.eval
- Przypisanie w DataFrame.eval
- Zmienne lokalne w DataFrame.eval
- Metoda DataFrame.query
- Wydajność - kiedy warto korzystać z tych funkcji
- Materiały dodatkowe
Część IV. Wizualizacja z użyciem Matplotlib
- 25. Wskazówki dotyczące korzystania z Matplotlib
- Importowanie Matplotlib
- Ustawianie stylów
- Czy trzeba używać show()? Jak wyświetlić wygenerowane wykresy?
- Rysowanie z poziomu skryptu
- Rysowanie z poziomu IPythona
- Rysowanie z poziomu notatnika Jupytera
- Zapisywanie rysunków do pliku
- Dwa interfejsy w cenie jednego
- 26. Proste wykresy liniowe
- Dostosowywanie wykresu - kolory i style linii
- Dostosowywanie wykresu - granice osi
- Etykietowanie wykresów
- Pułapki Matplotlib
- 27. Proste wykresy punktowe
- Tworzenie wykresów punktowych za pomocą plt.plot
- Tworzenie wykresów punktowych za pomocą plt.scatter
- plot a scatter - uwaga na temat wydajności
- Wizualizacja niepewności
- Słupki błędów
- Błędy ciągłe
- 28. Wykresy gęstości i wykresy konturowe
- Wizualizacja trójwymiarowych funkcji
- Histogramy, kubełki i gęstości
- Dwuwymiarowe histogramy i podział danych na kubełki
- plt.hist2d - dwuwymiarowy histogram
- plt.hexbin - podział na sześciokątne kubełki
- Jądrowy estymator gęstości
- 29. Dostosowywanie legend
- Wybór elementów do legendy
- Legenda opisująca rozmiary punktów
- Wiele legend
- 30. Dostosowywanie pasków kolorów
- Dostosowywanie pasków kolorów
- Wybór mapy kolorów
- Granice kolorów i wartości spoza zakresu
- Dyskretne paski kolorów
- Przykład: odręcznie zapisane cyfry
- Dostosowywanie pasków kolorów
- 31. Podwykresy
- plt.axes - manualne tworzenie podwykresów
- plt.subplot - proste siatki podwykresów
- plt.subplots - cała siatka za jednym zamachem
- plt.GridSpec - bardziej skomplikowane układy
- 32. Tekst i adnotacje
- Przykład: wpływ świąt na liczbę urodzeń w Stanach Zjednoczonych
- Transformacje i położenie tekstu
- Strzałki i adnotacje
- 33. Dostosowywanie znaczników osi
- Główne i dodatkowe podziałki
- Ukrywanie podziałek lub ich etykiet
- Zmniejszenie lub zwiększenie liczby podziałek
- Inne możliwości formatowania podziałek
- Lokalizatory i formatery - podsumowanie
- 34. Dostosowywanie wykresów - konfiguracja i style
- Ręczne dostosowywanie wykresów
- Zmiana ustawień domyślnych - rcParams
- Arkusze stylów
- Styl domyślny
- Styl FiveThiryEight
- Styl ggplot
- Styl z książki Bayesian Methods for Hackers
- Ciemne tło
- Rysunki w skali szarości
- Styl Seaborn
- 35. Wykresy w przestrzeni trójwymiarowej
- Trójwymiarowe punkty i krzywe
- Trójwymiarowe wykresy konturowe
- Wykresy typu wireframe i wykresy powierzchniowe
- Triangulacja powierzchni
- Przykład: wizualizacja wstęgi Möbiusa
- 36. Wizualizacje z użyciem pakietu Seaborn
- Przegląd możliwości pakietu Seaborn
- Histogramy, jądrowy estymator gęstości i wykresy gęstości
- Wykresy typu pairplot
- Grupy histogramów
- Wykresy typu catplot
- Wspólne rozkłady prawdopodobieństwa
- Wykresy słupkowe
- Przykład: eksploracja danych na temat czasu ukończenia maratonu
- Materiały dodatkowe
- Inne biblioteki do wizualizacji danych w Pythonie
- Przegląd możliwości pakietu Seaborn
Część V. Uczenie maszynowe
- 37. Czym jest uczenie maszynowe?
- Rodzaje uczenia maszynowego
- Przykłady problemów uczenia maszynowego
- Klasyfikacja, czyli przewidywanie dyskretnych etykiet
- Regresja, czyli przewidywanie ciągłych etykiet
- Klasteryzacja, czyli ustalanie etykiet w oparciu o nieetykietowane dane
- Redukcja wymiarowości - wnioskowanie o strukturze danych pozbawionych etykiet
- Podsumowanie
- 38. Wprowadzenie do Scikit-Learn
- Reprezentacja danych w Scikit-Learn
- Macierz cech
- Tablica wartości docelowych
- API Estimator
- Podstawy korzystania z API
- Przykład uczenia nadzorowanego: prosta regresja liniowa
- Przykład uczenia nadzorowanego: klasyfikacja irysów
- Przykład uczenia nienadzorowanego: redukcja wymiarowości w zbiorze Iris
- Przykład uczenia nienadzorowanego: klasteryzacja irysów
- Zastosowanie: eksploracja zbioru odręcznie zapisanych cyfr
- Wczytywanie i wizualizacja danych
- Przykład uczenia nienadzorowanego: redukcja wymiarowości
- Klasyfikacja cyfr
- Podsumowanie
- Reprezentacja danych w Scikit-Learn
- 39. Hiperparametry i walidacja modelu
- Walidacja modelu
- Niewłaściwy sposób walidacji modelu
- Właściwy sposób walidacji modelu, czyli podział danych na zbiór uczący i testowy
- Walidacja modelu za pomocą walidacji krzyżowej
- Wybór najlepszego modelu
- Kompromis pomiędzy obciążeniem a wariancją
- Krzywe walidacji w Scikit-Learn
- Krzywe uczenia
- Walidacja w praktyce - wyszukiwanie w siatce
- Podsumowanie
- Walidacja modelu
- 40. Inżynieria cech
- Cechy o charakterze kategorialnym
- Cechy tekstowe
- Konwersja obrazów na cechy
- Cechy pochodne
- Imputacja brakujących danych
- Potoki przetwarzania w inżynierii cech
- 41. Dogłębne spojrzenie - naiwny klasyfikator Bayesa
- Klasyfikacja bayesowska
- Naiwny gaussowski klasyfikator Bayesa
- Naiwny wielomianowy klasyfikator Bayesa
- Przykład: klasyfikacja tekstu
- Kiedy korzystać z naiwnego klasyfikatora Bayesa
- 42. Dogłębne spojrzenie - regresja liniowa
- Prosta regresja liniowa
- Regresja funkcjami bazowymi
- Wielomianowe funkcje bazowe
- Gaussowskie funkcje bazowe
- Regularyzacja
- Regresja grzbietowa (regularyzacja L)
- Regresja lasso (regularyzacja L)
- Przykład: przewidywanie ruchu rowerowego
- 43. Dogłębne spojrzenie - maszyny wektorów nośnych
- Motywacje dla maszyn wektorów nośnych
- Maszyny wektorów nośnych - maksymalizacja marginesu
- Dopasowywanie maszyny wektorów nośnych
- Maszyny wektorów nośnych z nieliniowymi granicami - jądrowy SVM
- Dostrajanie SVM - zmiękczanie marginesów
- Przykład: rozpoznawanie twarzy
- Podsumowanie
- 44. Dogłębne spojrzenie - drzewa decyzyjne i lasy losowe
- Motywacje dla lasów losowych - drzewa decyzyjne
- Tworzenie drzewa decyzyjnego
- Drzewa decyzyjne i nadmierne dopasowanie
- Zespoły estymatorów - lasy losowe
- Regresja z użyciem lasów losowych
- Przykład: wykorzystanie lasu losowego do klasyfikacji cyfr
- Podsumowanie
- Motywacje dla lasów losowych - drzewa decyzyjne
- 45. Dogłębne spojrzenie - analiza głównych składowych
- Wprowadzenie do analizy głównych składowych
- PCA jako metoda redukcji wymiarowości
- Wykorzystanie PCA do wizualizacji - odręcznie zapisane cyfry
- Co reprezentują składowe?
- Wybór liczby składowych
- PCA jako metoda filtrowania szumów
- Przykład: rozpoznawanie twarzy
- Podsumowanie
- Wprowadzenie do analizy głównych składowych
- 46. Dogłębne spojrzenie - manifold learning
- Manifold learning - słowo "hello"
- Skalowanie wielowymiarowe
- Skalowanie wielowymiarowe jako metoda manifold learningu
- Osadzenia nieliniowe - gdy zawodzi skalowanie wielowymiarowe
- Rozmaitości nieliniowe - lokalnie liniowe osadzanie
- Kilka przemyśleń na temat metod manifold learningu
- Przykład: mapowanie izometryczne w zbiorze zdjęć twarzy
- Przykład: wizualizacja struktury w liczbach
- 47. Dogłębne spojrzenie - klasteryzacja za pomocą algorytmu k-średnich
- Wprowadzenie do algorytmu k-średnich
- Estymacja-maksymalizacja
- Przykłady
- Przykład 1. Algorytm k-średnich w zbiorze digits
- Przykład 2. Algorytm k-średnich w kompresji kolorów
- 48. Dogłębne spojrzenie - modele mieszanin rozkładów Gaussa
- Motywacje dla modeli mieszanin rozkładów Gaussa - słabości algorytmu k-średnich
- Uogólnienie algorytmu EM - modele mieszanin rozkładów Gaussa
- Wybór rodzaju kowariancji
- Modele mieszanin rozkładów Gaussa jako narzędzie do szacowania gęstości
- Przykład: wykorzystanie GMM do generowania nowych danych
- 49. Dogłębne spojrzenie - jądrowy estymator gęstości
- Motywacje dla jądrowego estymatora gęstości - histogramy
- Jądrowy estymator gęstości w praktyce
- Wybór parametru wygładzania za pomocą walidacji krzyżowej
- Przykład: nie tak naiwny klasyfikator Bayesa
- Anatomia niestandardowego estymatora
- Korzystanie z naszego niestandardowego estymatora
- 50. Zastosowanie - potok przetwarzania do wykrywania twarzy
- Cechy HOG
- HOG w akcji - prosty detektor twarzy
- 1. Stwórz zbiór "pozytywnych" próbek
- 2. Stwórz zbiór "negatywnych" próbek
- 3. Połącz zbiory i wyodrębnij cechy HOG
- 4. Wytrenuj maszynę wektorów nośnych
- 5. Znajdź twarze na nowym zdjęciu
- Zastrzeżenia i ulepszenia
- Materiały dodatkowe na temat uczenia maszynowego
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-289-0069-1 |
Rozmiar pliku: | 65 MB |