Darmowy fragment publikacji:
• Kup książkę
• Poleć książkę
• Oceń książkę
• Księgarnia internetowa
• Lubię to! » Nasza społeczność
Spis treści
Przedmowa ........................................................................................................................... 9
Rozdział 1. Wprowadzenie ................................................................................................... 13
13
13
14
Znaczenie danych
Czym jest analiza danych?
Hipotetyczna motywacja
Rozdział 2. Błyskawiczny kurs Pythona ................................................................................. 25
25
36
43
Podstawy
Bardziej skomplikowane zagadnienia
Dalsza eksploracja
Rozdział 3. Wizualizacja danych ........................................................................................... 45
45
47
50
51
52
Pakiet matplotlib
Wykres słupkowy
Wykresy liniowe
Wykresy punktowe
Dalsza eksploracja
Rozdział 4. Algebra liniowa .................................................................................................. 55
55
59
61
Wektory
Macierze
Dalsza eksploracja
Rozdział 5. Statystyka .......................................................................................................... 63
63
67
70
71
71
72
Opis pojedynczego zbioru danych
Korelacja
Paradoks Simpsona
Inne pułapki związane z korelacją
Korelacja i przyczynowość
Dalsza eksploracja
3
Poleć książkęKup książkęRozdział 6. Prawdopodobieństwo ........................................................................................ 73
73
74
75
77
77
79
81
83
Zależność i niezależność
Prawdopodobieństwo warunkowe
Twierdzenie Bayesa
Zmienne losowe
Ciągły rozkład prawdopodobieństwa
Rozkład normalny
Centralne twierdzenie graniczne
Dalsza eksploracja
Rozdział 7. Hipotezy i wnioski .............................................................................................. 85
85
85
89
90
91
92
95
Sprawdzanie hipotez
Przykład: rzut monetą
Przedziały ufności
Hakowanie wartości p
Przykład: przeprowadzanie testu A-B
Wnioskowanie bayesowskie
Dalsza eksploracja
Rozdział 8. Metoda gradientu prostego ................................................................................ 97
97
98
101
101
102
103
104
Podstawy metody gradientu prostego
Szacowanie gradientu
Korzystanie z gradientu
Dobór właściwego rozmiaru kroku
Łączenie wszystkich elementów
Stochastyczna metoda gradientu prostego
Dalsza eksploracja
Rozdział 9. Uzyskiwanie danych ......................................................................................... 105
105
107
109
115
117
120
Strumienie stdin i stdout
Wczytywanie plików
Pobieranie danych ze stron internetowych
Korzystanie z interfejsów programistycznych
Przykład: korzystanie z interfejsów programistycznych serwisu Twitter
Dalsza eksploracja
Rozdział 10. Praca z danymi ............................................................................................... 121
121
126
127
130
132
137
Eksploracja danych
Oczyszczanie i wstępne przetwarzanie danych
Przetwarzanie danych
Przeskalowanie
Redukcja liczby wymiarów
Dalsza eksploracja
4
Spis treści
Poleć książkęKup książkęRozdział 11. Uczenie maszynowe ........................................................................................139
139
140
140
143
145
146
147
Modelowanie
Czym jest uczenie maszynowe?
Nadmierne i zbyt małe dopasowanie
Poprawność
Kompromis pomiędzy wartością progową a wariancją
Ekstrakcja i selekcja cech
Dalsza eksploracja
Rozdział 12. Algorytm k najbliższych sąsiadów ....................................................................149
149
151
155
159
Model
Przykład: ulubione języki
Przekleństwo wymiarowości
Dalsza eksploracja
Rozdział 13. Naiwny klasyfikator bayesowski ......................................................................161
161
162
163
165
167
Bardzo prosty filtr antyspamowy
Bardziej zaawansowany filtr antyspamowy
Implementacja
Testowanie modelu
Dalsza eksploracja
Rozdział 14. Prosta regresja liniowa ....................................................................................169
169
172
172
173
Model
Korzystanie z algorytmu spadku gradientowego
Szacowanie maksymalnego prawdopodobieństwa
Dalsza eksploracja
Rozdział 15. Regresja wieloraka ..........................................................................................175
175
176
177
178
178
179
180
181
183
Model
Dalsze założenia dotyczące modelu najmniejszych kwadratów
Dopasowywanie modelu
Interpretacja modelu
Poprawność dopasowania
Dygresja: ładowanie wstępne
Błędy standardowe współczynników regresji
Regularyzacja
Dalsza eksploracja
Spis treści
5
Poleć książkęKup książkęRozdział 16. Regresja logistyczna ....................................................................................... 185
185
187
189
190
190
194
Problem
Funkcja logistyczna
Stosowanie modelu
Poprawność dopasowania
Maszyny wektorów nośnych
Dalsza eksploracja
Rozdział 17. Drzewa decyzyjne ........................................................................................... 195
195
197
198
199
202
204
205
Czym jest drzewo decyzyjne?
Entropia
Entropia podziału
Tworzenie drzewa decyzyjnego
Łączenie wszystkiego w całość
Lasy losowe
Dalsza eksploracja
Rozdział 18. Sztuczne sieci neuronowe ............................................................................... 207
207
209
211
213
216
Perceptrony
Jednokierunkowe sieci neuronowe
Propagacja wsteczna
Przykład: pokonywanie zabezpieczenia CAPTCHA
Dalsza eksploracja
Rozdział 19. Grupowanie ................................................................................................... 217
217
218
219
221
222
224
228
Idea
Model
Przykład: spotkania
Wybór wartości parametru k
Przykład: grupowanie kolorów
Grupowanie hierarchiczne z podejściem aglomeracyjnym
Dalsza eksploracja
Rozdział 20. Przetwarzanie języka naturalnego .................................................................. 229
229
231
234
236
237
241
Chmury wyrazowe
Modele n-gram
Gramatyka
Na marginesie: próbkowanie Gibbsa
Modelowanie tematu
Dalsza eksploracja
6
Spis treści
Poleć książkęKup książkęRozdział 21. Analiza sieci społecznościowych .......................................................................243
243
248
251
253
Pośrednictwo
Centralność wektorów własnych
Grafy skierowane i metoda PageRank
Dalsza eksploracja
Ręczne rozwiązywanie problemu
Rekomendowanie tego, co jest popularne
Filtrowanie kolaboratywne oparte na użytkownikach
Filtrowanie kolaboratywne oparte na zainteresowaniach
Dalsza eksploracja
Polecenia CREATE TABLE i INSERT
Polecenie UPDATE
Polecenie DELETE
Polecenie SELECT
Polecenie GROUP BY
Polecenie ORDER BY
Polecenie JOIN
Zapytania składowe
Indeksy
Optymalizacja zapytań
Bazy danych NoSQL
Dalsza eksploracja
Rozdział 22. Systemy rekomendujące ..................................................................................255
255
256
257
260
261
Rozdział 23. Bazy danych i SQL ............................................................................................263
263
265
265
266
267
269
270
272
272
273
274
274
Rozdział 24. Algorytm MapReduce ......................................................................................275
275
277
277
278
280
281
281
Rozdział 25. Po prostu zabierz się za praktykę ......................................................................283
283
283
284
286
287
Skorowidz ..........................................................................................................................289
Przykład: liczenie słów
Dlaczego warto korzystać z algorytmu MapReduce?
Algorytm MapReduce w ujęciu bardziej ogólnym
Przykład: analiza treści statusów
Przykład: mnożenie macierzy
Dodatkowe informacje: zespalanie
Dalsza eksploracja
IPython
Matematyka
Korzystanie z gotowych rozwiązań
Szukanie danych
Zabierz się za analizę
Spis treści
7
Poleć książkęKup książkę8
Spis treści
Poleć książkęKup książkęROZDZIAŁ 12.
Algorytm k najbliższych sąsiadów
Jeżeli chcesz zdenerwować swoich sąsiadów, to powiedz o nich prawdę.
— Pietro Aretino
Załóżmy, że chcesz przewidzieć, na kogo oddam swój głos w kolejnych wyborach prezydenckich.
Jeżeli nic o mnie nie wiesz, ale dysponujesz jakimiś danymi na mój temat, to możesz przyjrzeć się
planom wyborczym moich sąsiadów. Mieszkam na przedmieściach Seattle, a moi sąsiedzi nie-
zmiennie głosują na kandydata Partii Demokratycznej, zatem obstawienie tego, że również i ja
będę głosował na kandydata tej partii, wydaje się dość rozsądne.
Załóżmy, że posiadasz nie tylko dane dotyczące miejsca, w którym mieszkam. Dysponujesz da-
nymi dotyczącymi mojego wieku, dochodu, liczby dzieci itd. Są to rzeczy, które do pewnego
stopnia wpływają na moje zachowanie. Przyglądanie się preferencjom wyborczym moich sąsia-
dów, którzy są mi bliscy również w płaszczyźnie tych dodatkowych wymiarów, wydaje się być
jeszcze lepszym pomysłem. W taki sposób działa metoda klasyfikacji najbliższych sąsiadów.
Model
Metoda najbliższych sąsiadów to najprostszy istniejący model predyktywny. Nie wymaga ona two-
rzenia zadanych założeń matematycznych ani stosowania ciężkiej artylerii. Wymaga ona jedynie:
miary odległości;
założenia, że punkty znajdujące się bliżej siebie są do siebie bardziej podobne.
Większość technik, z których będziemy korzystać w tej książce, analizuje cały zbiór danych w celu
znalezienia w nim pewnych prawidłowości. Algorytm najbliższych sąsiadów dość często ignoruje
wiele informacji, ponieważ przewidywania parametrów nowego elementu zbioru danych zależą
tylko od parametrów punktów, które są położone najbliżej.
Ponadto metoda najbliższych sąsiadów nie pomoże Ci zrozumieć czynników wpływających na
analizowany fenomen. Przewidywanie moich preferencji wyborczych na podstawie preferencji
moich sąsiadów nie mówi zbyt wiele o przyczynach moich preferencji. Przyczyny mógłby określić
alternatywny model przewidujący moje preferencje wyborcze na podstawie np. mojego dochodu
i stanu cywilnego.
149
Poleć książkęKup książkęOgólnie rzecz biorąc, dysponujemy elementami zbioru danych i odpowiadającymi im etykietami.
Etykiety te mogą mieć postać np. wartości True lub False, które określają, czy dana wartość wej-
ściowa spełnia warunek taki jak np. „jest spamem”, „jest trucizną” lub „jest filmem wartym obej-
rzenia”. Etykiety mogą być również kategoriami — takimi jak np. kategorie wiekowe filmów (G,
PG, PG-13, R i NC-17) — nazwiskami kandydatów startujących w wyborach prezydenckich lub
nazwami ulubionego języka programowania.
W naszym przypadku elementy zbioru danych będą wektorami, a więc możemy korzystać z funk-
cji distance utworzonej w rozdziale 4.
Załóżmy, że wybraliśmy wartość k równą np. 3 lub 5 i chcemy dokonać klasyfikacji nowych ob-
serwacji — znaleźć k najbliższych elementów zbioru danych, oznaczonych etykietami, i na ich
podstawie ustalić etykietę nowej obserwacji.
W tym celu potrzebujemy funkcji liczącej głosy. Oto przykładowa implementacja mechanizmu li-
czenia głosów:
def raw_majority_vote(labels):
votes = Counter(labels)
winner, _ = votes.most_common(1)[0]
return winner
Niestety mechanizm taki nie robi niczego inteligentnego z węzłami. Załóżmy, że określamy kate-
gorię wiekową filmów i pięciu najbliższym filmom nadano kategorie G, G, PG, PG i R.W związku
z tym mamy dwa głosy na kategorię G i dwa głosy na kategorię PG. W takim przypadku możemy
skorzystać z kilku rozwiązań:
Wybrać zwycięzcę w sposób losowy.
Określić wagi głosów na podstawie odległości i wybrać zwycięzcę na podstawie wagi.
Zmniejszać wartość parametru k aż do jednoznacznego określenia zwycięzcy.
Zaimplementujemy trzecie rozwiązanie:
def majority_vote(labels):
Funkcja zakłada, że etykiety są ustawione w kolejności
od najbliższej do najdalszej.
vote_counts = Counter(labels)
winner, winner_count = vote_counts.most_common(1)[0]
num_winners = len([count
for count in vote_counts.values()
if count == winner_count])
if num_winners == 1:
return winner # Ustalono jednoznacznie zwycięzcę. Zwróć go.
else:
return majority_vote(labels[:-1]) # Odrzuć najdalszą obserwację i spróbuj ponownie.
Koniec końców metoda ta zwróci zwycięzcę. W najgorszym wypadku zostaniemy z jedną etykietą,
która zostanie uznana za zwycięzcę.
150
Rozdział 12. Algorytm k najbliższych sąsiadów
Poleć książkęKup książkęDysponując tą funkcją, możemy z łatwością utworzyć klasyfikator:
def knn_classify(k, labeled_points, new_point):
Każdemu elementowi zbioru danych powinna być przypisana etykieta.
# Ustaw punkty oznaczone etykietami w kolejności od najbliższego do najdalszego.
by_distance = sorted(labeled_points,
key=lambda (point, _): distance(point, new_point))
# Ustal etykiety k najbliższych punktów.
k_nearest_labels = [label for _, label in by_distance[:k]]
# Wybierz zwycięzcę na podstawie tych etykiet.
return majority_vote(k_nearest_labels)
Przyjrzyjmy się działaniu tego mechanizmu w praktyce.
Przykład: ulubione języki
Właśnie udało Ci się uzyskać dostęp do pierwszej ankiety przeprowadzonej wśród użytkowników
serwisu DataSciencester, która miała na celu ustalenie preferowanych przez nich języków pro-
gramowania (użytkownicy biorący udział w ankiecie mieszkają tylko w większych miastach):
# Każdy element zbioru ma formę: ([długość geogr., szerokość geogr.], ulubiony_język).
cities = [([-122.3 , 47.53], Python ), # Seattle
([ -96.85, 32.85], Java ), # Austin
([ -89.33, 43.13], R ), # Madison
# I tak dalej…
]
Osoba zarządzająca działem aktywizacji społeczności chce dowiedzieć się, czy wyniki ankiety mo-
gą zostać użyte w celu przewidzenia preferowanego języka programowania w miejscach, które nie
były objęte ankietą.
Jak zwykle warto zacząć pracę od przedstawienia danych na wykresie (zobacz rysunek 12.1):
# Klucz definiuje język, a wartość jest parą (długość geogr., szerokość geogr.).
plots = { Java : ([], []), Python : ([], []), R : ([], []) }
# Chcemy nadać każdemu językowy inny znak i kolor.
markers = { Java : o , Python : s , R : ^ }
colors = { Java : r , Python : b , R : g }
for (longitude, latitude), language in cities:
plots[language][0].append(longitude)
plots[language][1].append(latitude)
# Utwórz wykres punktowy danych każdego języka.
for language, (x, y) in plots.iteritems():
plt.scatter(x, y, color=colors[language], marker=markers[language],
label=language, zorder=10)
plot_state_borders(plt) # Załóżmy, że mamy funkcję generującą kontury stanów.
plt.legend(loc=0) # Pozwól pakietowi matplotlib wybrać najlepsze miejsce na legendę.
plt.axis([-130,-60,20,55]) # Definicja osi.
plt.title( Ulubione jezyki programowania )
plt.show()
Przykład: ulubione języki
151
Poleć książkęKup książkęRysunek 12.1. Ulubione języki programowania
W kodzie znajduje się odwołanie do niezdefiniowanej funkcji plot_state_borders().
Implementację tej funkcji znajdziesz w pliku plot_state_borders.py wchodzącym
w skład archiwum z kodem znajdującym się na stronie ftp://ftp.helion.pl/przyklady/
dascpo.zip, ale warto spróbować zaimplementować ją samodzielnie:
1. Poszukaj w internecie współrzędnych geograficznych granic pomiędzy po-
szczególnymi stanami.
2. Zamień dane, które uda Ci się znaleźć, na listę segmentów [(dlug1, szer1),
(dlug2, szer2)].
3. Nanieś segmenty na wykres za pomocą funkcji plt.plot().
Wydaje się, że te same języki programowania są lubiane w zbliżonych do siebie miejscach, a więc
model generujący przewidywania możemy oprzeć na algorytmie k najbliższych sąsiadów.
Na początek zobaczmy, co się stanie, jeżeli spróbujemy przewidzieć język preferowany w każdym
mieście na podstawie etykiet sąsiadów, a nie etykiety wybranego miasta:
# Wypróbuj kilka wartości k.
for k in [1, 3, 5, 7]:
num_correct = 0
for city in cities:
location, actual_language = city
other_cities = [other_city
for other_city in cities
if other_city != city]
predicted_language = knn_classify(k, other_cities, location)
if predicted_language == actual_language:
num_correct += 1
print k, sąsiad(ów): , num_correct, poprawnie na , len(cities)
152
Rozdział 12. Algorytm k najbliższych sąsiadów
Poleć książkęKup książkęWydaje się, że algorytm 3 najbliższych sąsiadów działa najlepiej — zwraca poprawne wyniki
w około 59 przypadków:
1 sąsiad(ów): 40 poprawnie na 75
3 sąsiad(ów): 44 poprawnie na 75
5 sąsiad(ów): 41 poprawnie na 75
7 sąsiad(ów): 35 poprawnie na 75
Teraz możemy sprawdzić sposób, w jaki zostaną sklasyfikowane obszary w wyniku użycia każdej
wartości parametru k. Zrobimy to, klasyfikując całą siatkę punktów, a następnie przedstawiając je
na bazie wygenerowanego wcześniej wykresu miast:
plots = { Java : ([], []), Python : ([], []), R : ([], []) }
k = 1 # Lub k = 3, lub k = 5, lub…
for longitude in range(-130, -60):
for latitude in range(20, 55):
predicted_language = knn_classify(k, cities, [longitude, latitude])
plots[predicted_language][0].append(longitude)
plots[predicted_language][1].append(latitude)
Na rysunku 12.2 pokazano graficzną interpretację tego, co stanie się po przyjęciu parametru k
równego 1 (przyglądamy się tylko jednemu najbliższemu sąsiadowi).
Rysunek 12.2. Języki programowania (algorytm 1 najbliższego sąsiada)
Widocznych jest wiele gwałtownych zmian języka — granice są ostre. Wzrost liczby analizowanych
sąsiadów powoduje wygładzenie granic pomiędzy poszczególnymi językami (zobacz rysunek 12.3).
Przykład: ulubione języki
153
Poleć książkęKup książkęRysunek 12.3. Języki programowania (algorytm 3 najbliższych sąsiadów)
Po zwiększeniu liczby analizowanych sąsiadów do pięciu uzyskujemy jeszcze bardziej gładkie
granice (zobacz rysunek 12.4).
Rysunek 12.4. Języki programowania (algorytm 5 najbliższych sąsiadów)
154
Rozdział 12. Algorytm k najbliższych sąsiadów
Poleć książkęKup książkęW tym przypadku dane poszczególnych wymiarów można ze sobą porównywać, ale gdyby nie
dało się ich porównywać, to należałoby wówczas skorzystać z technik skalowania opisanych w roz-
dziale 10., w podrozdziale „Przeskalowanie”.
Przekleństwo wymiarowości
Tzw. przekleństwo wymiarowości sprawia, że algorytm k najbliższych sąsiadów ma problemy
z przetwarzaniem danych o większej liczbie wymiarów. Wynika to z ogromu przestrzeni wielo-
wymiarowych. Punkty w przestrzeniach wielowymiarowych są zwykle od siebie bardzo oddalone.
Można to sprawdzić poprzez generowanie losowych par punktów znajdujących się w d-wymiarowej
przestrzeni, a następnie pomiar dzielących je odległości.
Generowanie wartości losowych nie powinno już sprawiać Ci problemów:
def random_point(dim):
return [random.random() for _ in range(dim)]
To samo dotyczy tworzenia funkcji obliczającej odległość:
def random_distances(dim, num_pairs):
return [distance(random_point(dim), random_point(dim))
for _ in range(num_pairs)]
Dla każdej liczby wymiarów (od 1 do 100) będziemy obliczać 10 000 wartości odległości, które
zostaną użyte w celu określenia średniej odległości pomiędzy punktami, a także minimalnej odle-
głości pomiędzy punktami przy danej liczbie wymiarów (zobacz rysunek 12.5):
dimensions = range(1, 101)
avg_distances = []
min_distances = []
random.seed(0)
for dim in dimensions:
distances = random_distances(dim, 10000) # 10,000 losowych par.
avg_distances.append(mean(distances)) # Określ wartość średnią.
min_distances.append(min(distances)) # Określ wartość najmniejszą.
Wzrost liczby wymiarów sprawia, że średnia odległość pomiędzy punktami wzrasta, ale najwięk-
szym problemem jest zmiana stosunku pomiędzy najmniejszą odległością i średnią odległością
(zobacz rysunek 12.6):
min_avg_ratio = [min_dist / avg_dist
for min_dist, avg_dist in zip(min_distances, avg_distances)]
Przekleństwo wymiarowości
155
Poleć książkęKup książkęRysunek 12.5. Przekleństwo wymiarowości
Rysunek 12.6. Kolejne skutki przekleństwa wymiarowości
156
Rozdział 12. Algorytm k najbliższych sąsiadów
Poleć książkęKup książkęW zbiorach danych o małej liczbie wymiarów najbliższe punkty są zwykle do siebie bardziej zbli-
żone. Dwa punkty znajdują się blisko siebie, jeżeli są bliskie na płaszczyźnie każdego wymiaru.
Dodanie do zbioru każdego kolejnego wymiaru (nawet takiego, który zawiera tylko szum) może
doprowadzić do zwiększenia odległości pomiędzy punktami. W przypadku dużej liczby wymia-
rów punkty reprezentujące elementy zbioru danych charakteryzują się zwykle większą średnią
odległością od siebie, a więc bliskość dwóch punktów nie jest tak wyraźna jak w przypadku zbioru
o mniejszej liczbie wymiarów, o ile dane nie zawierają wielu struktur, które sprawiają, że zbiór
można analizować tak, jakby składał się z mniejszej liczby wymiarów.
Problem ten można również powiązać z gęstością przestrzeni o większej liczbie wymiarów.
Jeżeli wybierzemy 50 losowych liczb z zakresu od 0 do 1, to prawdopodobnie uzyskamy dość do-
brą próbkę interwału jednostkowego (zobacz rysunek 12.7).
Rysunek 12.7. Pięćdziesiąt losowych wartości w przestrzeni jednowymiarowej
Jeżeli w przestrzeni dwuwymiarowej wybierzemy 50 losowo rozmieszczonych punktów, to będą
one zajmowały mniejszy obszar przestrzeni (zobacz rysunek 12.8).
Pięćdziesiąt punktów umieszczonych w losowych miejscach przestrzeni trójwymiarowej będzie
od siebie oddalonych jeszcze bardziej (zobacz rysunek 12.9).
Przekleństwo wymiarowości
157
Poleć książkęKup książkęRysunek 12.8. Pięćdziesiąt punktów rozmieszczonych losowo w przestrzeni dwuwymiarowej
Rysunek 12.9. Pięćdziesiąt punktów rozmieszczonych losowo w przestrzeni trójwymiarowej
158
Rozdział 12. Algorytm k najbliższych sąsiadów
Poleć książkęKup książkęPakiet matplotlib nie tworzy zbyt dobrych wizualizacji przestrzeni czterowymiarowych, a więc
nie będę generował bardziej rozbudowanych wykresów, ale z trzech przedstawionych dotychczas
wykresów wynika, że wzrost liczby wymiarów zwiększa ilość pustej przestrzeni pomiędzy warto-
ściami. Wzrost liczby wymiarów bez wykładniczego przyrostu liczby punktów doprowadza do
wzrostu pustych przestrzeni pomiędzy punktami, które mają być użyte do generowania przewi-
dywań.
Jeżeli chcesz korzystać z algorytmu k najbliższych sąsiadów w przestrzeniach wielowymiarowych,
to lepiej jest zacząć pracę z takimi danymi od zastosowania jednej z technik redukcji wymiarów.
Dalsza eksploracja
Pakiet scikit-learn zawiera implementacje wielu modeli algorytmów najbliższych sąsiadów
(http://bit.ly/1ycP5rj).
Dalsza eksploracja
159
Poleć książkęKup książkę160
Rozdział 12. Algorytm k najbliższych sąsiadów
Poleć książkęKup książkęSkorowidz
A
C
agregacja bootstrapowa, 204
algebra liniowa, 55
algorytm
ID3, 200
k najbliższych sąsiadów, 149
MapReduce, 275, 277
spadku gradientowego, 172
analiza
danych, 13
LDA, 237
sieci społecznościowych, 243
treści statusów, 278
API, 115
argumenty nazwane i nienazwane, 42
B
baza danych, 263
NoSQL, 274
białe znaki, 26
biblioteka
D3.js, 52
gensim, 241
mrjob, 282
Natural Language Toolkit, 241
NetworkX, 253
NumPy, 284
pandas, 120
PyBrain, 216
Pylearn2, 216
scikit-learn, 23
Scrapy, 120
Twython, 119
błąd typu 1, 87
błędy standardowe współczynników regresji, 180
CAPTCHA, 213
cechy, 146
centralne twierdzenie graniczne, 81
centralność, 250
wektorów własnych, 247
chmura wyrazowa, 230
ciągły rozkład prawdopodobieństwa, 77
currying, 40
D
dane uwierzytelniające, 118
data science, 9
defaultdict, 32
dobór rozmiaru kroku, 101
dopasowanie modelu, 140, 177
nadmierne, 140
zbyt słabe, 141
drzewa
decyzyjne, 195
klasyfikacyjne, 196
regresyjne, 196
dyskretny rozkład prawdopodobieństwa, 77
dyspersja, 66
dystrybuanta, 78
E
eksploracja danych, 121, 140
jednowymiarowych, 121
ekstrakcja cech, 146
entropia, 197
podziału, 198
enumerate, 41
289
Poleć książkęKup książkęF
filtr antyspamowy, 161, 162
filtrowanie kolaboratywne, 257, 260
format JSON, 115
formatowanie kodu, 26
funkcja, 28
Counter, 33
csv.DictReader, 109
csv.writer, 109
gęstości prawdopodobieństwa, 77
gradient, 97
logistyczna, 187
make_hist, 82
partial, 40
plt.plot, 50
sorted, 36
sys.stdin, 105
zip, 41
funkcje składowe, 39
G
generator, 37
Gephi, 253
gęstość centralności, 247
gradient, 97, 101
grafy skierowane, 251
gramatyka, 234
Graphlab, 261
grupowanie, 217
hierarchiczne, 224
kolorów, 222
H
Hadoop, 281
hakowanie wartości p, 90
hiperpłaszczyzna, 191, 192
hipoteza zerowa, 85, 91
histogram, 48
rozkładu normal, 123
HTML, 110
I
iloczyn skalarny, 57, 58
indeksy, 272
interfejs programistyczny, 115, 117
290
Skorowidz
interpreter, 25
IPython, 283
istotność, 87
iteracja, 41
iterator, 37
J
jednokierunkowe sieci neuronowe, 209
język R, 286
K
klasa, 39
klasyfikator, 163
kod źródłowy stron, 112
korekta ciągłości, 88
korelacja, 67, 68, 71
kowariancja, 68
krok, 101
krotka, tuple, 31
L
lasy losowe, 204
LDA, Latent Dirichlet Analysis, 237
liczba wymiarów, 132
liczenie słów, 275
licznik, 33
lista, list, 29
logarytm prawdopodobieństwa, 188
losowość, 38
Ł
ładowanie wstępne, 179
łamanie zabezpieczenia CAPTCHA, 213
łańcuch, 29
M
macierz, 59
korelacji, 124
kwadratowa, 249
mnożenie, 248, 280
wykresów punktowych, 124
maszyny wektorów nośnych, 190
mechanizm łączący, 281
mediana, 65
Poleć książkęKup książkęmetoda
gradientu prostego, 97, 103
k średnich, 218
klasyfikacji najbliższych sąsiadów, 149
najmniejszych kwadratów, 170
PageRank, 251
sort, 36
mnożenie macierzy, 248, 280
moc testu, 87
model
biznesowy, 139
nadmiernie dopasowany, 142
najmniejszych kwadratów, 176
n-gram, 231
szumu, 141
modele parametryczne, 140
modelowanie, 139
predyktywne, 140
tematu, 237
moduł, 27
random, 38
scipy.stats, 83
Statsmodels, 183
wektora, 58
N
nadmierne dopasowanie, 140
naiwny klasyfikator bayesowski, 161
narzędzia funkcyjne, 40
narzędzie
Gephi, 253
Graphlab, 261
nauka o danych, 9
Netflix Prize, 261
niedomiar zmiennoprzecinkowy, 162
NLP, natural language procession, 229
NoSQL, 274
O
obiekt
JSON, 115
pliku, 107
oczyszczanie danych, 126
odchylenie standardowe, 67
operacje arytmetyczne, 28
optymalizacja zapytań, 273
P
pakiet
ggplot, 53
matplotlib, 45, 285
NumPy, 61
pandas, 72, 285
scikit-learn, 104, 137, 159, 183
SciPy, 72, 228
seaborn, 52
skicit-learn, 167, 285
StatsModels, 72
paradoks Simpsona, 70
parametr k, 221
parsowanie, 110
zdań, 235
perceptron, 207
pliki
binarne, 108
tekstowe, 107
pobieranie danych ze stron, 109
pochodne cząstkowe, 100
podobieństwo kosinusowe, 257
polecenie
CREATE TABLE, 263
DELETE, 265
except, 29
GROUP BY, 267
INSERT, 263
JOIN, 270
open, 107
ORDER BY, 269
SELECT, 266
try, 29
UPDATE, 265
polskie znaki diakrytyczne, 28
poprawność, 143
dopasowania, 178, 190
pośrednictwo, 243
prawdopodobieństwo, 73, 172
warunkowe, 74
programowanie obiektowe, 39
projekt Bokeh, 53
propagacja wsteczna, 211
próbkowanie Gibbsa, 236
przedział ufności, 89
przekleństwo wymiarowości, 155
przepływ sterowania, 34
przeskalowanie, 130
Skorowidz
291
Poleć książkęKup książkęprzetwarzanie
danych, 126, 127
języka naturalnego, NLP, 229
przyczynowość, 71
R
redukcja liczby wymiarów, 132
regresja
grzbietowa, 182
lasso, 183
liniowa, 169
logistyczna, 185
wieloraka, 175
regularyzacja, 181
rekomendacja, 255
relacyjna baza danych, 263
rozkład
a posteriori, 92, 94
a priori, 92
beta, 92
jednostajny dyskretny, 77
normalny, 79
prawdopodobieństwa, 77
t-Studenta, 91, 181
rozpakowywanie argumentów, 41
S
selekcja cech, 146
serializacja, 115
serwis DataSciencester, 14
sieci społecznościowe, 243
sieć neuronowa, 207
jednokierunkowa, 209
skalar, 55
składanie list, 36
słownik, dictionary, 15, 31
słowo kluczowe
def, 28
key, 36
sortowanie, 36
sprawdzanie hipotez, 85
SQL, 263
statystyka, 63
stochastyczna metoda gradientu prostego, 103
stopień
centralności, 244
pośrednictwa, 244
292
Skorowidz
struktura danych dict, 15
strumień
stdin, 105
stdout, 105
systemy rekomendujące, 255
szacowanie gradientu, 98
szacowanie maksymalnego
prawdopodobieństwa, 172
sztuczka z funkcją jądra, 192
ścieżki decyzyjne, 195
średnia, 64
harmoniczna, 144
Ś
T
tendencje centralne, 64
test
A-B, 91
jednostronny, 87
testowanie modelu, 165
transpozycja macierzy, 260
twierdzenie Bayesa, 75
tworzenie
drzewa decyzyjnego, 199
kodu, 26
systemów rekomendacji, 261
U
uczenie
częściowo nadzorowane, 140
maszynowe, 139
nadzorowane, 140
nienadzorowane, 140
uwierzytelnianie, 116
W
wariancja, 145
wartości
binarne, 143
logiczne, 35
wartość progowa, 145
wczytywanie plików, 107
wektor, 55
własny macierzy, 249
Poleć książkęKup książkęwęzły
decyzyjne, 200
końcowe, 200
wizualizacja danych, 45, 285
wnioskowanie bayesowskie, 92
współczynnik
centralności, 17
determinacji, 171
przewidywania, 144
R kwadrat, 171
ładowanie, 179
przetwarzanie danych, 126
wstępne
wyjątki, 29
wykres
liniowy, 50
punktowy, 51
słupkowy, 47
wyrażenia regularne, 38
Z
zapytania składowe, 272
zasady tworzenia kodu, 26
zbiór, set, 33, 63
zdarzenia, 73
niezależne, 73
zależne, 73
zespalanie, 281
zmienna
fikcyjna, 175
losowa, 77
składowa, 70
Skorowidz
293
Poleć książkęKup książkęNotatki
Poleć książkęKup książkę
Pobierz darmowy fragment (pdf)