Skip to main content

100518566

Page 1


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)

Turn static files into dynamic content formats.

Create聽a聽flipbook