SPISTREŚCI IPodstawyjęzyka Python
1.Wprowadzenie
1.1.J˛ezyki ´ srodowisko Python ......................................3
1.1.1.Instalacjadystrybucji ´ srodowiska Python
1.1.2.Instalacjapakietów......................................5
1.2.Notatniki Jupyter ............................................7
1.2.1.Trybypracy..........................................7
1.2.2.Najwazniejszeskrótyklawiszowe.............................10
1.2.3.Podstawyj˛ezyka Markdown ................................10
1.3.Pierwszekrokiwj˛ezyku Python ...................................12
2.Typyskalarne
2.1.Liczby..................................................16
2.1.1.Operatoryarytmetyczne...................................18
2.1.2.Konwersjatypów.......................................21
2.1.3.Tworzenieobiektównazwanych..............................22
2.1.4.Funkcjewbudowane.....................................23
2.1.5.Polaimetody.........................................24
2.1.6.Arytmetykazmiennopozycyjna...............................25
2.2.Warto´scilogiczne............................................26
2.2.1.Operatoryrelacyjne......................................27
2.3.1.Tworzenienapisów......................................28
2.3.2.Podstawoweoperacjenanapisach.............................30
3.Typysekwencyjneiiterowalne
3.1.Podstawowerodzinyobiektówtypusekwencyjnego.......................33
3.1.1.Listyikrotki..........................................33
3.1.2.Zakresy.............................................35
3.1.3.Napisy.............................................35
3.2.Zarz˛adzanieelementami........................................35
3.2.1.Wybieranieelementów ....................................35
3.2.2.Modyfikacjaelementów...................................38
3.2.3.Dodawanieiusuwanieelementów.............................39
3.2.4.Kopiowaniereferencji,kopiowaniepłytkieagł˛ebokie.................41
3.3.Obiektyiterowalne...........................................45
3.4.Działanianaobiektachiterowalnychitypusekwencyjnego...................47
3.4.1.Podstawowemetodyifunkcje................................47
3.4.2.Krotkiidentyfikatorówpolewejstronieoperatoraprzypisania.............50
3.4.3.Wyra˙zenialistotwórczeigeneratory............................51
3.4.4.Formatowanienapisów....................................54
4.Słownikiizbiory
4.1.Słowniki.................................................56
4.1.1.Tworzeniesłowników....................................56
Wydawnictwo NaukowePWNSA 5.Instrukcjesteruj˛ace
5.2.1.P˛etla
5.2.2.P˛etla
5.2.3.Instrukcje
5.3.Obsługawyj˛atków...........................................73
5.3.1.Zgłaszaniewyj˛atków.....................................74
5.3.2.Rodzajewyj˛atków......................................74
5.3.3.Wychwytywaniewyj˛atków.................................75
6.Funkcje
6.1.Definiowaniefunkcji..........................................77
6.1.1.Dokumentowaniefunkcji..................................78
6.1.2.Warto´ s ´ czwracana.......................................79
6.1.3.Wyrazenialambda......................................80
6.2.Parametryiargumenty.........................................81
6.2.1.Sposóbprzekazywaniaargumentów............................81
6.2.2.Sprawdzaniepoprawno´sciargumentów..........................82
6.2.3.Dopasowywanieargumentów................................84
6.2.4.Parametryzargumentamidomy´slnymi..........................84
6.2.5.Rozpakowywanieargumentów...............................85
6.2.6.Parametryspecjalne *args i **kwargs ..........................86
6.3.Zasi˛egzmiennych............................................88
6.3.1.Zmiennelokalne........................................88
6.3.2.Zmienneglobalne.......................................88
6.3.3.Zmiennenielokalne,fabrykifunkcjiidomkni˛ecia....................90 6.4.Pakiety..................................................92
IIPrzetwarzaniedanych
7.Wektory, macierzeiinnetablice ......................................97
7.1.Tworzenieireprezentacjatablic...................................97
7.1.1.Funkcja array() .......................................98
7.1.2.Reprezentacjatablic.....................................100
7.1.3.Typprzechowywanychelementów.............................101
7.1.4.Tworzenietablicspecjalnegorodzaju...........................103
7.1.5.ٞaczenietablic.........................................106
7.2.Podstawowemetodyifunkcje....................................108
7.2.1.Operatoryarytmetyczne.Uzgadnianiekształtów.....................108
7.2.2.Operacjerelacyjneilogiczne................................113
7.2.3.Zwektoryzowanefunkcjematematyczne.........................115
7.2.4.Agregacjadanych.......................................118
7.2.5.Inneoperacje..........................................121
7.3.Indeksowanietablic...........................................123
7.3.1.Indeksowaniewektorów...................................123
7.3.2.Indeksowaniemacierzy...................................128
7.3.3.Indeksowanietablic N -wymiarowych...........................132
7.3.4.Wyszukiwanieindeksówelementówspełniaj˛acychzadanekryteria..........134
8.Ramkidanych
8.1.Tworzenieramekdanych.......................................138
8.1.1.Konstruktorklasy DataFrame ...............................138
8.1.2.Importowanieramekdanychzplikówiinnych´zrodeł..................139
8.1.3.Odczytywaniepodstawowychinformacjioramkachdanych..............140
8.2.Zmienne,czyliobiektytypu Series ................................143
8.2.1.Wydobywanieposzczególnychzmiennych........................143
8.2.2.Tworzenieireprezentacjazmiennych...........................144
8.2.3.Zmiennetypudataiczas...................................145
8.2.4.Zmiennejako´scioweiporz˛adkowe.............................146
8.3.Etykiety,czyliobiektytypu Index ..................................150
8.3.1.Etykietowaniewierszyikolumn..............................151
8.3.2.Etykietyhierarchiczne....................................152
8.4.Indeksowaniezmiennychiramekdanych..............................154
8.4.1.Wybórelementówpojedynczejzmiennej.........................154
8.4.2.Wybórpodzbioruwierszyikolumnramkidanych....................160
8.5.Wybraneoperacje............................................164
8.5.1.Dodawanieorazusuwaniekolumniwierszy.......................164
8.5.2.Przekształcaniezmiennych.................................166
8.5.3.Podsumowaniaramekdanychizmiennych........................168
8.5.4.Sortowanieramekdanych..................................172
8.5.5.Zmianakształturamekdanych...............................173
8.5.6.Obserwacjebrakuj˛ace....................................176
9.Przetwarzanienapisów ...........................................179
9.1.Operacjenapojedynczychnapisach.................................179
9.1.1.Podstawowestałenapisoweioperacjenapojedynczychznakach...........180
9.1.2.Wyszukiwanieustalonegowzorca.............................182
9.1.3.Translacjaznaków ......................................183
9.1.4.Sprawdzanie,czywszystkieznakinalez˛adopodanejkategorii............184
9.1.5.Dzielenieisklejanietekstu.................................184
Wydawnictwo NaukowePWNSA 9.2.Wyszukiwaniewzorcaprzyu˙zyciuwyra˙ze´nregularnych.....................185
9.2.1.Definiowaniewyraze´nregularnych.............................186
9.2.2.Przegl˛adfunkcji........................................188
9.2.3.Wydzielonepodwyrazeniaiodwołaniadonich.....................189
9.3.Zwektoryzowaneoperacjenaobiektach Index i Series ....................190
10.Przetwarzanieplikówizasobówwinternecie ..............................196
10.1.Operacjenadrzewiekatalogów....................................196 10.1.1. ´ Sciezkidost˛epu........................................196
10.1.2.Wyszukiwanieplikównadysku...............................198
10.2.Przetwarzanieplików.........................................200
10.2.1.Otwieranieplikuwróznychtrybach............................200 10.2.2.Odczytywaniezawarto´scipliku...............................202 10.2.3.Zapisywaniedanychdopliku................................203 10.2.4.Serializacjaobiektów.....................................204
10.2.5.Popularneformatyplików..................................205
10.3.Pozyskiwaniedanychzestroninternetowych...........................208
10.3.1.Wydobywanietabelwpostaciramekdanych.......................209
10.3.2.R˛eczneprzetwarzaniekodu´zródłowegostrony......................209
10.3.3.Parsowaniekodu HTML iwydobywaniepojedynczychelementów.........211
11.Dost˛epdobazdanych
11.1.Przykładowabazadanych: nycflights13 .............................215
11.2.Obsługabazdanych..........................................218
11.2.1.Poł˛aczeniezbaz˛adanych..................................218 11.2.2.Eksportowaniedanychdobazy...............................218
11.2.3.Odczytywaniedanychzbazy................................219
11.2.4.Funkcjezpakietu pandas ..................................220
11.3. ´ Cwiczenia................................................221
11.3.1.Wybórunikatowychpodzbiorówkolumn.........................222
11.3.2.Agregacjadanychwpodgrupach..............................223
11.3.3.Filtrowaniedanychwej´sciowychiwyników.......................226
11.3.4.Sortowaniewyników.....................................230
11.3.5.Operacjeteoriomnogo´sciowe................................232
11.3.6.Zł˛aczenia............................................234
IIIAnalizadanych 12.Wizualizacjadanych ............................................239
12.1.Rysowaniepodstawowychobiektów.................................240
12.1.1.Łamane.............................................240
12.1.2.Punktyiróznesymbole...................................241
12.1.3.Wielok˛aty...........................................242
12.1.4.Adnotacjetekstowe......................................243
12.2.Parametrygraficzne..........................................244
12.2.1.Sposobykre´sleniapunktów iodcinków..........................244
12.2.2.Sposobyokre´slaniabarw...................................244
12.2.3.Napisyformatuj˛ace......................................246
Wydawnictwo NaukowePWNSA 12.2.4.Ustawieniaosi.........................................247
12.3.Rysunkijakokombinacjeobiektówpodstawowych........................248
12.3.1.Wieleobiektównajednymwykresie............................248
12.3.2.Legenda............................................250
12.3.3.Wielewykresównajednejstronie.............................251
12.4.Graficznaprezentacjadanych.....................................255
12.4.1.Wybranewykresydladanychjako´sciowych.......................255
12.4.2.Wybranewykresydladanychilo´sciowych........................258
12.4.3.Wybranewykresydlafunkcjidwuwymiarowych....................262
13.Wnioskowaniestatystyczne
13.1.Wybranerozkładyprawdopodobie´nstwa..............................265
13.1.1.Podstawowerodzinyrozkładów..............................265
13.1.2.Generowanieliczbpseudolosowych............................273
13.2.Estymacjaparametrówicharakterystykrozkładów........................275
13.2.1.Estymacjapunktowa.....................................276
13.2.2.Estymacjaprzedziałowa...................................278
13.3.Wykorzystanietestówstatystycznychwanaliziedanych.....................280
13.3.1.Testyzgodno´sci........................................281
13.3.2.Testyparametryczne.....................................290
13.3.3.Testynieparametryczne...................................295
14.Wybranealgorytmyuczeniamaszynowego
14.1.Przykładowyzbiórdanych: winequality .............................298
14.2.Analizaregresji.............................................300
14.2.1.Regresjaliniowa........................................301
14.2.2.Ocenajako´scidopasowaniamodelu............................304
14.2.3.Modelwielomianowy....................................306
14.2.4.Wybórzmiennychdomodelu................................307
14.3.Klasyfikacja...............................................310
14.3.1.Metoda k-najblizszychs˛asiadów..............................312
14.3.2.Ocenajako´sciklasyfikatora.................................312
14.3.3.Drzewadecyzyjneilasylosowe..............................315
14.3.4.Porównaniekrzy˙zowe....................................318
14.4.Analizaskupie´n.............................................320
14.4.1.Algorytm k´ srednich.....................................320
14.4.2.Hierarchicznaanalizaskupie´n................................326
IVTworzeniewłasnegooprogramowania
15.Moduły,pakiety iskrypty ..........................................331
15.1.Projektywielomodułowe.......................................331
15.1.1. ´ Srodowiskoprogramistyczne Spyder ...........................331
15.1.2.Tworzenieiładowaniemodułów..............................332
15.1.3.Tworzenieiładowaniepakietów..............................335
15.1.4. ´ Scie˙zkiwyszukiwaniamodułów ipakietów........................336
15.2.Skrypty..................................................336
15.2.1.Uruchomienieskryptuzpoziomupowłoki........................337
15.2.2.Przekazywanieargumentów.................................338
15.2.3.Skryptyamoduły.Testyjednostkowe...........................339
16.Programowanieobiektowe
16.1.Klasyirelacjemi˛edzynimi......................................344
16.1.1.Definiowanieklasy......................................344
16.1.2.Dziedziczenie.........................................346
16.2.Metody..................................................348
16.2.1.Przeci˛azaniemetod.Polimorfizm..............................348
16.2.2.Metodyipolastatyczne...................................350
16.2.3.Metodyspecjalne.......................................351
16.3.Pola....................................................357
16.3.1.Definiowaniezgóryustalonychpólwklasie.......................357
16.3.2.Polaprywatne,chronioneipubliczne...........................358
NaukowePWNSA def fit_regression(X_ucz,X_test,y_ucz, y_test): r=sklearn.linear_model.LinearRegression() r.fit(X_ucz,y_ucz) y_ucz_pred=r.predict(X_ucz) y_test_pred=r.predict(X_test)
mse=sklearn.metrics.mean_squared_error mae=sklearn.metrics.mean_absolute_error return {
"r_score":r.score(X_ucz,y_ucz), "MSE_u":mse(y_ucz,y_ucz_pred), "MSE_t":mse(y_test,y_test_pred), "MAE_u":mae(y_ucz,y_ucz_pred), "MAE_t":mae(y_test,y_test_pred) }
Wyznaczmymodelregresjinapodstawiepróbyucz˛acejioce´nmyjegojako´ s ´ c: >>>params=["zm.liniowe"] #parametry >>>res=[fit_regression(X_ucz,X_test,y_ucz,y_test)] >>>pd.DataFrame(res,index=params)
MAE_t MAE_uMSE_tMSE_ur_score zm.liniowe0.306470.2823080.545390.1388080.906772
Wdalszejcz˛e´scirozdziałuprzeanalizujemyprzykładowemodyfikacjepowyzszego modeluorazzbadamyichwpływnapoprawno´ s ´ cpredykcji.
14.2.3. Modelwielomianowy Klasa PolynomialFeatures zmodułu sklearn.preprocessing dokonujetransformacji atrybutów,takbynowamacierzobserwacjizawierałailoczynyposzczególnychzmiennychostopniuniewi˛ekszymnizwarto´ s ´ czadanaprzezuzytkownika(argument degree). Naprzykład,dla degree = 2orazpunktówtypu [x1,x2,x3] otrzymamyichprzekształconewersjepostaci [x1,x
>>> importsklearn.preprocessing >>>p2test =sklearn.preprocessing.PolynomialFeatures(degree=2, include_bias=False) >>>p2test.fit_transform(np.array([[2,3,5],[1,2,3]])) array([[2.,3.,5.,4.,6.,10.,9.,15.,25.], [1.,2.,3.,1.,2.,3.,4.,6.,9.]])
Pole powers_ udost˛epniamacierzreprezentuj˛ac˛apot˛egi,doktórychzostaj˛apodniesione poszczególnezmienne.
>>>p2test.powers_.T #uwaga:transpozycja array([[1,0,0,2,1,1,0,0,0], [0,1, 0, 0,1,0,2,1,0], [0,0,1,0,0,1,0,1,2]])
Innymisłowy,je´sli i-takolumna powy ˙ zszejmacierzyjestpostaci [a1,a2,a3],oznacza to, ˙ ze i-tazmiennawnowymzbiorzezostajeutworzonajakoiloczynpot˛eg
Dopasujmymodelwielomianowydlazbioruwini degree = 2:
Mozemytegodokona´cprzyuzyciupoznanejimplementacjimetodynajmniejszych kwadratówiodpowiednioprzekształconegozbioruzmiennychobja´sniaj˛acych:
>>>p2=sklearn.preprocessing.PolynomialFeatures(degree=2, include_bias=False)
>>>X2_ucz= p2.fit_transform(X_ucz)
>>>X2_test=p2.fit_transform(X_test)
>>>params.append("zm.wielom.")
>>>res.append(fit_regression(X2_ucz,X2_test,y_ucz,y_test))
>>>pd.DataFrame(res,index=params) MAE_tMAE_uMSE_tMSE_ur_score zm.liniowe0.3064700.2823080.545390.1388080.906772 zm.wielom.0.2679440.2576130.155420.1131920.923976
Dzi˛ekitransformacjiwielomianowejuzyskali´smymniejszebł˛edydopasowaniaipredykcji.Niestetyliczbawspółczynnikówmodeluznacz˛acowzrosła:
>>>X2_ucz.shape[1]+1 66
14.2.4.
Wybórzmiennychdomodelu Okazujesi˛e, ˙ zedobranieodpowiednichzmiennych,napodstawiektórychdopasowujemy model,jestbardzoistotne.Zauwa˙zmy, ˙ zewprzypadkugdyzmiennychobja´sniaj˛acych jestduzo,tracimyprzejrzysto´ s ´ cjegointerpretacjiorazznacz˛acozwi˛ekszamyryzyko przeuczeniasi˛e.Zdrugiejstrony„mały”modelmozenieradzi´csobiedobrzezopisywaniemodpowiadaj˛acejmurzeczywisto´sci.Powinni´smywi˛ecszuka´cpunkturównowagi mi˛edzyzło˙zono´sci˛amodeluajegojako´sci˛a.
Wyboruzmiennychdomodelumozemydokona´c,korzystaj˛acnp.zkryterium Schwarza(BIC,ang. Bayesianinformationcriterion).Polegaononawyborzetakiego modeluregresjiliniowej,któryminimalizuje:
BIC(MSEp ,p,n) = n log(MSEp ) + p log(n), gdzieMSEp oznaczabł˛ad ´ sredniokwadratowydlakonkretnegomodeluzbudowanegona podstawie p d zmiennych.Odnotujmy, zewarto´ s ´ c p log(n) stanowiswegorodzaju kar˛ezazło˙zono´ s ´ cmodelu,tzn.zbytdu˙z˛aliczb˛epredyktorów.
def BIC(mse,p, n): return n*np.log(mse) +p*np.log(n)