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.Mody铿乲acjaelement贸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.Krotkiidenty铿乲ator贸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.De铿乶iowaniefunkcji..........................................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.De铿乶iowaniewyraze麓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.Parametrygra铿乧zne..........................................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.Gra铿乧znaprezentacjadanych.....................................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.Klasy铿乲acja...............................................310
14.3.1.Metoda k-najblizszychs藳asiad贸w..............................312
14.3.2.Ocenajako麓sciklasy铿乲atora.................................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.De铿乶iowanieklasy......................................344
16.1.2.Dziedziczenie.........................................346
16.2.Metody..................................................348
16.2.1.Przeci藳azaniemetod.Polimor铿亃m..............................348
16.2.2.Metodyipolastatyczne...................................350
16.2.3.Metodyspecjalne.......................................351
16.3.Pola....................................................357
16.3.1.De铿乶iowaniezg贸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艂adowemody铿乲acjepowyzszego 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鈥瀖a艂y鈥漨odelmozenieradzi麓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)