Analiza danych i uczenie maszynowe w Python

Autor notebooka: Jakub Nowacki.

Jupyter

Jako interfejsu/edytora używamy:

  • Jupyter Notebook - interaktywne środowisko do pracy z Pythonem w przeglądarce

Dawniej nazywał się on iPython Notebook i wywodzi się z projektu iPython.

Kod

Naciśnij [shift]+[enter] żeby uruchomić komórkę (cell).


In [1]:
2 + 5


Out[1]:
7

In [ ]:
pets = ["cat", "python", "elephant"]

for pet in pets:
    print("I have a {}. A wonderful animal, indeed!".format(pet.upper()))

In [ ]:
[len(pet) for pet in pets]

Markdown

Markdown to język, który pozwala nam na edycję dokumentu, jak widać tu.

Zawiera:

  • listy,
  • czcionki:
    • pochyłą,
    • pogrubioną,
    • przekreśloną,
    • o stałej szerokości,
  • linki.

Ponadto, zawiera możliwość wklejania wyrażeń w $\LaTeX$ jak np. $\sqrt{2} = 1.41\ldots$ lub:

$$\sum_{k=1}^\infty \frac{(-1)^k}{2k-1} = 1 - \tfrac{1}{3} + \tfrac{1}{5} + \ldots = \frac{\pi}{4} $$

Oraz, oczywiście kodu:

var list = ["a", "list", "in", "JavaScript", "ES6"];
list
  .map((x) => x.length)
  .reduce((x, y) => x + y);

Automatyczne dopełnianie kodu


In [3]:
from numpy import random

In [ ]:
random.rand

Zacznij pisać random.r i naciśnij tab.


In [4]:
random.rand?

IPython magic

Komórki zaczynające się od %%cośtam są specjalne. Przykładowo, możemy mierzyć szybkość wykonania:


In [5]:
%%timeit
acc = 0
for x in range(1000000):
    acc += 1


61.1 ms ± 1.37 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

In [6]:
%%timeit
acc = 0
for x in range(1000000):
    acc += x**5 - 3 * x**2


949 ms ± 4.92 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

Wiersz poleceń

Tylko dla systemów *nix (Linux, Mac OS X)


In [7]:
!dir


 Volume in drive C is Windows
 Volume Serial Number is 8C90-BD97

 Directory of C:\Users\Matt Harasymczuk\Development\book-python\src\machine-learning\analysis-intro

2018-03-12  10:55    <DIR>          .
2018-03-12  10:55    <DIR>          ..
2018-03-12  10:55    <DIR>          .ipynb_checkpoints
2018-03-12  10:55             7,702 1_jupyter.ipynb
2017-11-26  20:38            13,281 2_kolekcje.ipynb
2017-11-24  19:49             7,546 3_numpy.ipynb
2017-11-24  19:52            14,810 4_pandas.ipynb
               4 File(s)         43,339 bytes
               3 Dir(s)  10,245,562,368 bytes free

In [8]:
files = !dir
for f in files:
    if f.find("1_") >= 0:
        print(f)


2018-03-12  10:55             7,702 1_jupyter.ipynb

HTML and JavaScript


In [9]:
from IPython.display import Javascript, HTML

In [10]:
Javascript("alert('It is JavaScript!')")


Out[10]:

In [11]:
HTML("We can <i>generate</i> <code>html</code> code <b>directly</b>!")


Out[11]:
We can generate html code directly!

Wykresy


In [12]:
# wykresy pojawią się w notebooku
%matplotlib inline

# biblioteka do wykresy
import matplotlib.pyplot as plt

# biblioteka numeryczna
import numpy as np

In [14]:
X = np.linspace(-5, 5, 100)  # vector z 100 równo odległymi wartościami od -5 do 5
Y = np.sin(X)                # sinus wszystkich wartości X
plt.plot(X, Y);               # wykres liniowy


Wyświetlanie różnych rzeczy


In [15]:
from IPython import display

In [16]:
display.Image(url="http://imgs.xkcd.com/comics/python.png")


Out[16]:

In [17]:
display.YouTubeVideo("H6dLGQw9yFQ")


Out[17]:

In [18]:
display.Latex(r"$\lim_{x \to 0} (1+x)^{1/x} = e$")


Out[18]:
$\lim_{x \to 0} (1+x)^{1/x} = e$

Inne

  • Nie krępuj się notować w swoim notatniku.
  • W notatnikach będą ćwiczenia. Ćwiczenia z gwiazdką (★) są dodatkowe: możesz robić je ale nie musisz.

In [ ]:


In [20]:
print('hello')


hello

In [ ]:


In [ ]:


In [ ]: