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.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)

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.