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ą
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
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
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
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
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
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
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
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
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
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
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
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
Opinie
Na razie nie ma opinii o produkcie.