Introduction to Python - Projet...
Transcript of Introduction to Python - Projet...
![Page 1: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/1.jpg)
Introduction to PythonA Crash Course on Python
Alexandre Perera,1,2 PhD
1Centre de Recerca en Enginyeria Biomedica (CREB)Departament d’Enginyeria de Sistemes, Automatica i Informatica Industrial (ESAII)
Universitat Politecnica de Catalunya
2Centro de Investigacion Biomedica en Red en Bioingenieria, Biomateriales y Nanomedicina(CIBER-BBN)
Introduction to Python 2019
![Page 2: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/2.jpg)
Before We Start ....
Fasten seat belts and download your seminar material from this link.https://goo.gl/gq3biq
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 2 / 141
![Page 3: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/3.jpg)
Contents I
1 Getting Started With PythonIntroductionBasic TypesMutable and immutableControlling execution flow
2 FunctionsDefining New Functions
3 NumPy
4 Machine learning scientific kitDatasets in sklearnUnsupervised LearningPrincipal Component AnalysisSupervised Learning
5 Extra SlidesDecoratorsWriting Scripts and New ModulesInput and OutputStandard Library
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 3 / 141
![Page 4: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/4.jpg)
Contents II
Object-Oriented ProgrammingException handlingMetricsCross Validation
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 4 / 141
![Page 5: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/5.jpg)
Section 1
Getting Started With Python
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 5 / 141
![Page 6: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/6.jpg)
First step
STEP 1Start the interpreter and type in
>>> print("Hello, world")
Hello, world
Welcome to Python,you just executed your first Python instruction, congratulations!
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 6 / 141
![Page 7: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/7.jpg)
Second step
STEP 2To get yourself started, type the following stack of instructions
>>> a = 3
>>> b = 2*a
>>> type(b)
<class 'int'>
>>> print(b)
6
>>> a*b
18
>>> b = 'hello'
>>> type(b)
<class 'str'>
>>> b + b
'hellohello'
>>> 2*b
'hellohello'
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 7 / 141
![Page 8: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/8.jpg)
Second step
STEP 2To get yourself started, type the following stack of instructions
>>> a = 3
>>> b = 2*a
>>> type(b)
<class 'int'>
>>> print(b)
6
>>> a*b
18
>>> b = 'hello'
>>> type(b)
<class 'str'>
>>> b + b
'hellohello'
>>> 2*b
'hellohello'
Observe thatWe do not declare variables (hurrah!!!!!)
Variable type may be changed on the fly(hurrah!!!, hurrah!!!)
There is a way to overload operators (hurrah!,hurrah!, hurrah!!!)
There is a function that tell us the type of avariable.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 8 / 141
![Page 9: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/9.jpg)
Types
Integer
>>> 1+1
2
>>> a=4
Boolean
>>> 3 > 4
False
>>> test = (3 > 4)
>>> test
False
>>> type(test)
<class 'bool'>
Float
>>> c=2.1
>>> 3.5/c
1.6666666666666665
Complex
>>> a=1.5+0.5j
>>> a.real
1.5
>>> a.imag
0.5
>>> import cmath
>>> cmath.phase(a)
0.3217505543966422
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 9 / 141
![Page 10: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/10.jpg)
Basic Calculator
A Python shell can therefore replace your pocket calculator, with thebasic arithmetic operations +, -, *, /, % (modulo) nativelyimplemented:
>>> 7 * 3.
21.0
>>> 2**10
1024
>>> 8 % 3
2
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 10 / 141
![Page 11: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/11.jpg)
WARNING!
Integer Division (different in Python 3)
>>> 3/2
1.5
Use floats
>>> 3 / 2.
1.5
>>> a = 3
>>> b = 2
>>> a / b
1.5
>>> a / float(b)
1.5
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 11 / 141
![Page 12: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/12.jpg)
Lists
Python provides many efficient types of containers, in which collections of objectscan be stored.
ListsA list is an ordered collection of objects, that may have different types. Forexample
>>> l = [1, 2, 3, 4, 5]
>>> type(l)
<class 'list'>
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 12 / 141
![Page 13: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/13.jpg)
Lists
accessing individual objects contained in the list:
>>> l[2]
3
Counting from the end with negative indices:
>>> l[-1]
5
>>> l[-2]
4
Warning Indexing starts at 0
>>> l[0]
1
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 13 / 141
![Page 14: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/14.jpg)
Lists
Slicing
>>> l
[1, 2, 3, 4, 5]
>>> l[2:4]
[3, 4]
Warning
Warning Note that l[start:stop] contains the elements with indices i such as start≤ i < stop (i ranging from start to stop-1). Therefore, l[start:stop] has(stop-start) elements.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 14 / 141
![Page 15: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/15.jpg)
Lists
Slicing syntax: l[start:stop:step]
All slicing parameters are optional:
>>> l
[1, 2, 3, 4, 5]
>>> l[3:]
[4, 5]
>>> l[:3]
[1, 2, 3]
>>> l[::2]
[1, 3, 5]
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 15 / 141
![Page 16: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/16.jpg)
Lists
The elements of a list may have different types:
>>> l = [3, 2+3j, 'hello']
>>> l
[3, (2+3j), 'hello']
>>> l[1], l[2]
((2+3j), 'hello')
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 16 / 141
![Page 17: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/17.jpg)
Lists
Python offers a large panel of functions to modify lists, or query them. Here are a fewexamples; for more details, seehttp://docs.python.org/tutorial/datastructures.html#more-on-lists
Add and remove elements
>>> l = [1, 2, 3, 4, 5]
>>> l.append(6)
>>> l
[1, 2, 3, 4, 5, 6]
>>> l.pop()
6
>>> l
[1, 2, 3, 4, 5]
>>> l.extend([6, 7]) # extend l, in-place
>>> l
[1, 2, 3, 4, 5, 6, 7]
>>> l = l[:-2]
>>> l
[1, 2, 3, 4, 5]
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 17 / 141
![Page 18: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/18.jpg)
Lists
Reverse list
>>> r = l[::-1]
>>> r
[5, 4, 3, 2, 1]
Concatenate and repeat
>>> r + l
[5, 4, 3, 2, 1, 1, 2, 3, 4, 5]
>>> 2 * r
[5, 4, 3, 2, 1, 5, 4, 3, 2, 1]
Sort (in-place)
>>> r.sort()
>>> r
[1, 2, 3, 4, 5]
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 18 / 141
![Page 19: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/19.jpg)
Note
Methods and Object-Oriented Programming
The notation r.method() (r.sort(), r.append(3), l.pop()) is our first example ofobject-oriented programming (OOP). Being a list, the object r owns the methodfunction that is called using the notation ’.’No further knowledge of OOP than understanding the notation ’.’ is necessary forgoing through this tutorial.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 19 / 141
![Page 20: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/20.jpg)
Note
Discovering methods in ipythontab-completion (press tab)
In [1]: r.
r.append r.extend r.insert r.remove r.sort
r.count r.index r.pop r.reverse
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 20 / 141
![Page 21: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/21.jpg)
PAY ATTENTION
NEXT SET OF SLIDES ARE VERYIMPORTANT!!!
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 21 / 141
![Page 22: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/22.jpg)
Mutable and immutable types
Immutable types
integer
float
complex
boolean
strings
MutableLists
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 22 / 141
![Page 23: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/23.jpg)
32a
Immutable types
Create an immutable element
>>> a=32
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 23 / 141
![Page 24: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/24.jpg)
32a
b
Immutable types
”copy” it
>>> a=32
>>> b=a
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 24 / 141
![Page 25: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/25.jpg)
32
b
10a
Immutable types
Change the original object
>>> a=32
>>> b=a
>>> a=10
>>> b
32
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 25 / 141
![Page 26: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/26.jpg)
[32,10]l
Mutable types
Create a mutable type
>>> l=[32,10]
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 26 / 141
![Page 27: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/27.jpg)
[32,10]l
r
Mutable types
”Copy” it
>>> l=[32,10]
>>> r=l
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 27 / 141
![Page 28: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/28.jpg)
[32,5]l
r
Mutable types
Change the original object
>>> l=[32,10]
>>> r=l
>>> l[1]=3
>>> r
[32, 3]
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 28 / 141
![Page 29: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/29.jpg)
Challenge
1 minute challenge
Create a list A, create a list B that contains A, copy the list B into C, modify Aand check C value
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 29 / 141
![Page 30: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/30.jpg)
Visited Types
Already seen types
boolean
integer
float
complex
string
list
Pending Types
Dictionary
Tuple
Set
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 30 / 141
![Page 31: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/31.jpg)
Dictionary
A dictionary is basically an efficient table that maps keys to values. Itis an unordered container:
>>> tel = {'emmanuelle': 5752, 'sebastian': 5578}
>>> tel['francis'] = 5915
>>> tel
{'emmanuelle': 5752, 'sebastian': 5578, 'francis': 5915}
>>> tel['sebastian']
5578
>>> tel.keys()
dict_keys(['emmanuelle', 'sebastian', 'francis'])
>>> tel.values()
dict_values([5752, 5578, 5915])
>>> 'francis' in tel
True
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 31 / 141
![Page 32: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/32.jpg)
Dictionary
A dictionary can have keys (resp. values) with different types:
>>> d = {'a':1, 'b':2, 3:'hello'}
>>> d
{'a': 1, 'b': 2, 3: 'hello'}
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 32 / 141
![Page 33: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/33.jpg)
Tuples
The elements of a tuple are written between parentheses, or justseparated by commas:
>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>> u = (0, 2)
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 33 / 141
![Page 34: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/34.jpg)
if/then/else
If
>>> if 2**2 == 4:
... print('Obvious!')
...
Obvious!
Blocks are delimited by indentation
>>> a = 10
>>> if a == 1:
... print(1)
... elif a == 2:
... print(2)
... else:
... print('A lot')
...
A lot
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 34 / 141
![Page 35: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/35.jpg)
Conditional Expressions
if object:Evaluates to False:
any number equal to zero (0, 0.0, 0+0j)
an empty container (list, tuple, set, dictionary, ...)
False, None
Evaluates to True:
everything else (User-defined classes can customize those rules byoverriding the special nonzero method.)
Tests equality, with logics:
>>> 1==1.
True
Tests identity: both sides are thesame object:
>>> 1 is 1.
False
>>> a = 1
>>> b = 1
>>> a is b
True
For any collection b: b contains a
>>> b = [1, 2, 3]
>>> 2 in b
True
>>> 5 in b
False
If b is a dictionary, this tests that a is a key of b.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 35 / 141
![Page 36: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/36.jpg)
for/range
Iterating with an index:
>>> for i in range(4):
... print(i)
...
0
1
2
3
But most often, it is more readable to iterate over values:
>>> for word in ('cool', 'powerful', 'readable'):
... print('Python is %s' % word)
...
Python is cool
Python is powerful
Python is readable
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 36 / 141
![Page 37: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/37.jpg)
while/break/continue
Typical C-style while loop(Mandelbrot problem):
>>> z = 1 + 1j
>>> while abs(z) < 100:
... z = z**2 + 1
...
Break out of enclosing for/whileloop:
>>> z = 1 + 1j
>>> while abs(z) < 100:
... if z.imag == 0:
... break
... z = z**2 + 1
Continue the next iteration of aloop.:
>>> a = [1, 0, 2, 4]
>>> for element in a:
... if element == 0:
... continue
... print(1. / element)
...
1.0
0.5
0.25
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 37 / 141
![Page 38: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/38.jpg)
Advanced iteration
Iterate over any sequenceYou can iterate over any sequence (string, list, keys in a dictionary, lines in a file, ...):
>>> vowels = 'aeiou'
>>> for i in 'powerful':
... if i in vowels:
... print(i)
...
o
e
u
>>> message = "Hello how are you?"
>>> message.split() # returns a list
['Hello', 'how', 'are', 'you?']
>>> for word in message.split():
... print(word)
...
Hello
how
are
you?
Few languages (in particular, languages for scientific computing) allow to loop over anything but integers/indices. With Python it is possible to loopexactly over the objects of interest without bothering with indices you often don’t care about.
![Page 39: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/39.jpg)
Keeping track of enumeration numberCommon task is to iterate over a sequence while keeping track of the itemnumber.
Could use while loop with a counter as above. Or a for loop:
>>> words = ('cool', 'powerful', 'readable')
>>> for i in range(0, len(words)):
... print(i, words[i]),
...
0 cool
(None,)
1 powerful
(None,)
2 readable
(None,)
But Python provides enumerate for this:
>>> words = ('cool', 'powerful', 'readable')
>>> for index, item in enumerate(words):
... print(index, item,)
...
0 cool
1 powerful
2 readable
![Page 40: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/40.jpg)
Looping over a dictionary
Use iteritems(python2) or items():
>>> d = {'a': 1, 'b':1.2, 'c':1j}
>>> for key, val in d.items():
... print('Key: %s has value: %s' % (key, val))
...
Key: a has value: 1
Key: b has value: 1.2
Key: c has value: 1j
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 40 / 141
![Page 41: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/41.jpg)
List comprehensions
Natural math
k ={x2, x ∈ {0, 1, 2, 3}
}
Translates to
>>> k=[x**2 for x in range(4)]
>>> k
[0, 1, 4, 9]
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 41 / 141
![Page 42: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/42.jpg)
List comprehensions
Natural math
k ={x2, x ∈ {0, 1, 2, 3}
}Translates to
>>> k=[x**2 for x in range(4)]
>>> k
[0, 1, 4, 9]
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 41 / 141
![Page 43: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/43.jpg)
Challenge
5 minutes challenge
Compute the decimals of π using the Wallis formula:
π = 2∞∏i=1
4i2
4i2 − 1
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 42 / 141
![Page 44: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/44.jpg)
Section 2
Functions
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 43 / 141
![Page 45: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/45.jpg)
Function definition
Function blocks must be indented as other control-flow blocks.
In [56]: def test():
....: print('in test function')
....:
....:
In [57]: test()
in test function
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 44 / 141
![Page 46: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/46.jpg)
Return statement
Functions can optionally return values.
In [6]: def disk_area(radius):
...: return 3.14 * radius * radius
...:
In [8]: disk_area(1.5)
Out[8]: 7.0649999999999995
Structure:
the def keyword;
is followed by the function’s name, then
the arguments of the function are given between brackets followed by a colon.
the function body ;
and return object for optionally returning values.
By default, functions return None.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 45 / 141
![Page 47: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/47.jpg)
Parameters
Mandatory parameters (positional arguments)
In [81]: def double_it(x):
....: return x * 2
....:
In [82]: double_it(3)
Out[82]: 6
In [83]: double_it()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/Users/cburns/src/scipy2009/scipy_2009_tutorial/source/<ipython console> in <module>()
TypeError: double_it() takes exactly 1 argument (0 given)
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 46 / 141
![Page 48: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/48.jpg)
Parameters
Optional parameters (keyword or named arguments)
In [84]: def double_it(x=2):
....: return x * 2
....:
In [85]: double_it()
Out[85]: 4
In [86]: double_it(3)
Out[86]: 6
Warning
In [124]: bigx = 10
In [125]: def double_it(x=bigx):
.....: return x * 2
.....:
In [126]: bigx = 1e9 # Now really big
In [128]: double_it()
Out[128]: 20
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 47 / 141
![Page 49: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/49.jpg)
Functions are objects
Functions are first-class objects, which means they can be:
assigned to a variable
an item in a list (or any collection)
passed as an argument to another function
Example
In [38]: va = variable_args
In [39]: va('three', x=1, y=2)
args is ('three',)
kwargs is {'y': 2, 'x': 1}
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 48 / 141
![Page 50: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/50.jpg)
Challenge
10 min challenge: Fibonacci
Write a function that displays the n first terms of the Fibonacci sequence, definedby:u0 = 1; u1 = 1u(n+2) = u(n+1) + un
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 49 / 141
![Page 51: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/51.jpg)
Section 3
NumPy
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 50 / 141
![Page 52: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/52.jpg)
NumPy
Python has built-in:
containers: lists (costless insertion and append), dictionaries (fast lookup)high-level number objects: integers, floating point
Numpy is:
extension package to Python for multi-dimensional arrayscloser to hardware (efficiency)designed for scientific computation (convenience)
Snippet
import numpy as np
a = np.array([0, 1, 2, 3])
a
array([0, 1, 2, 3])
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 51 / 141
![Page 53: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/53.jpg)
NumPy
For example:
An array containing:
values of an experiment/simulation at discrete time stepssignal recorded by a measurement device, e.g. sound wavepixels of an image, grey-level or colour3-D data measured at different X-Y-Z positions, e.g. MRI scan...
Memory-efficient container that provides fast numerical operations.
In [1]: l = range(1000)
In [2]: %timeit [i**2 for i in l]
1000 loops, best of 3: 403 us per loop
In [3]: a = np.arange(1000)
In [4]: %timeit a**2
100000 loops, best of 3: 12.7 us per loop
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 52 / 141
![Page 54: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/54.jpg)
Creating Arrays
1-D Array
a = np.array([0, 1, 2, 3])
a
array([0, 1, 2, 3])
a.ndim
1
a.shape
(4,)
len(a)
4
30 seconds challenge
Is an np.array mutable?
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 53 / 141
![Page 55: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/55.jpg)
Creating Arrays
Common arrays
a = np.ones((3, 3)) # reminder: (3, 3) is a tuple
a
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
b = np.zeros((2, 2))
b
array([[ 0., 0.],
[ 0., 0.]])
c = np.eye(3)
c
array([[ 1., 0., 0.],
[ 0., 1., 0.],
[ 0., 0., 1.]])
d = np.diag(np.array([1, 2, 3, 4]))
d
array([[1, 0, 0, 0],
[0, 2, 0, 0],
[0, 0, 3, 0],
[0, 0, 0, 4]])
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 54 / 141
![Page 56: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/56.jpg)
Section 4
Machine learning scientific kit
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 55 / 141
![Page 57: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/57.jpg)
Scikits
Avaliable kitsThe list of available kits can be found at
http://scikits.appspot.com/scikits.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 56 / 141
![Page 58: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/58.jpg)
Scikits
Main scikitsscikit-aero Aeronautical engineering calculations in Python.
scikit-image Image processing routines for SciPy.
scikit-rf Object Oriented Microwave Engineering.
audiolab A python module to make noise from numpy arrays (sic).
timeseries Time series manipulation.
learn Machine learning Sci-kit.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 57 / 141
![Page 59: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/59.jpg)
Introduction
DatasetsThere are three different datasets in sklearn:
1 Sample images.
2 Toy Datasets.
3 Sample Generators.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 58 / 141
![Page 60: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/60.jpg)
Image sets
The scikit also embed a couple of sample JPEG images (china and flower)published under Creative Commons license by their authors.
import numpy as np
import pylab as pl
from sklearn.datasets import load_sample_image
china = load_sample_image("china.jpg")
0 100 200 300 400 500 600
0
50
100
150
200
250
300
350
400
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 59 / 141
![Page 61: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/61.jpg)
Toy datasets
load boston() Regression Load and return the boston house-prices dataset.
load iris() Classification Load and return the iris dataset.
load diabetes() Regression Load and return the diabetes dataset.
load digits() Classification Load and return the digits dataset.
load linnerud() Multivariate Regression Load and return the linnerud dataset.
These functions return a bunch (which is a dictionary that is accessible with thedict.key syntax). All datasets have at least two keys,
data, containing an array of shape n samples × n features and
target, a numpy array of length n features, containing the targets.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 60 / 141
![Page 62: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/62.jpg)
Data Generators
A number of functions exists to create the most esoteric data distributions:
make classification() n-class classification problem (+ multilabel).
make regression() Generate a regression problem.
make swiss roll() Generate swiss roll datasets.
make s curve Generates S curve datasets.
All of them returning a tuple (X , y) consisting of a n samples × n features numpyarray X and an array of length n samples containing the targets y .
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 61 / 141
![Page 63: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/63.jpg)
Data Generators
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 62 / 141
![Page 64: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/64.jpg)
Introduction to clustering in python
Clustering
Or Cluster Analysis, is the task of grouping a set of objects in such a way thatobjects in the same groups (clusters) are more similar to each other than to thosein other groups.
It is useful in a large amount of applications:
Exploratory analysis.
Machine Learning & Pattern Recognition.
Image analysis.
Bioinformatics.
Market Analysis.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 63 / 141
![Page 65: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/65.jpg)
Clustering
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 64 / 141
![Page 66: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/66.jpg)
Clustering
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 64 / 141
![Page 67: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/67.jpg)
Clustering
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 64 / 141
![Page 68: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/68.jpg)
Clustering
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 64 / 141
![Page 69: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/69.jpg)
Clustering
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 64 / 141
![Page 70: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/70.jpg)
Cluster Analysis
Clustering
Partitioning of a data set into subsets (clusters). Individuals in each subset sharesome common trait according to some defined distance measure The most typicaltrait is proximity
Data clustering is a common technique for statistical data analysis. There are anumber of techniques available
Hierarchical (e.g. agglomerative clustering)
Partitional (e.g. k-means clustering)
Graph base (Spectral)
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 65 / 141
![Page 71: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/71.jpg)
Clustering
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 66 / 141
![Page 72: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/72.jpg)
(di)Similarity
Metric definition d(x , y).
d(x , y) ≥ 0
d(x , y) iff x == y
d(x , y) = d(y , x)
d(x , y) ≤ d(x , z) + d(z , y)
And...
d(ax , ay) = |a|d(x , y), d is a norm ||x − y ||The most common form of distance metric:
||x − y ||p/r =
(D∑i=1
|xi − yi |p)1/r
||x − y ||e =
(D∑i=1
|xi − yi |2)1/2
(1)
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 67 / 141
![Page 73: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/73.jpg)
k-means
k-means
The most common clustering algorithm, (J. B. MacQueen, 1967)
1 Ask user how many clusters are desired.
2 Randomly guess k cluster center locations.
3 Each pattern is assigned to the closest center.
4 A New center is assigned as the centroid of the assigned patterns.
5 Repeat from (3).
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 68 / 141
![Page 74: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/74.jpg)
k-means
k-means
The most common clustering algorithm, (J. B. MacQueen, 1967)
1 Ask user how many clusters are desired.
2 Randomly guess k cluster center locations.
3 Each pattern is assigned to the closest center.
4 A New center is assigned as the centroid of the assigned patterns.
5 Repeat from (3).
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 68 / 141
![Page 75: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/75.jpg)
k-means
k-means
The most common clustering algorithm, (J. B. MacQueen, 1967)
1 Ask user how many clusters are desired.
2 Randomly guess k cluster center locations.
3 Each pattern is assigned to the closest center.
4 A New center is assigned as the centroid of the assigned patterns.
5 Repeat from (3).
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 68 / 141
![Page 76: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/76.jpg)
k-means
k-means
The most common clustering algorithm, (J. B. MacQueen, 1967)
1 Ask user how many clusters are desired.
2 Randomly guess k cluster center locations.
3 Each pattern is assigned to the closest center.
4 A New center is assigned as the centroid of the assigned patterns.
5 Repeat from (3).
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 68 / 141
![Page 77: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/77.jpg)
k-means
k-means
The most common clustering algorithm, (J. B. MacQueen, 1967)
1 Ask user how many clusters are desired.
2 Randomly guess k cluster center locations.
3 Each pattern is assigned to the closest center.
4 A New center is assigned as the centroid of the assigned patterns.
5 Repeat from (3).
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 68 / 141
![Page 78: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/78.jpg)
kmeans
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 69 / 141
![Page 79: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/79.jpg)
kmeans
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 69 / 141
![Page 80: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/80.jpg)
kmeans
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 69 / 141
![Page 81: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/81.jpg)
kmeans
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 69 / 141
![Page 82: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/82.jpg)
kmeans
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 69 / 141
![Page 83: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/83.jpg)
kmeans
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 69 / 141
![Page 84: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/84.jpg)
kmeans
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 69 / 141
![Page 85: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/85.jpg)
kmeans
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 69 / 141
![Page 86: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/86.jpg)
kmeans
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 69 / 141
![Page 87: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/87.jpg)
kmeans
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 69 / 141
![Page 88: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/88.jpg)
kmeans
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 70 / 141
![Page 89: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/89.jpg)
Convergence
![Page 90: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/90.jpg)
Number of Clusters
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 72 / 141
![Page 91: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/91.jpg)
Number of Clusters
![Page 92: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/92.jpg)
Clustering algorithms in sklearn
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 74 / 141
![Page 93: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/93.jpg)
Learning Clustering in python
Let’s build a simple clustering problem:Use make_classification() forbuilding a two clusteres data as in thepicture.
Could we automagically assign eachsample to a cluster? Open your ipythonand:
Use k-means.4 2 0 2
1
2
3
4
5
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 75 / 141
![Page 94: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/94.jpg)
Learning Clustering in python
from sklearn.cluster import KMeans
cl = KMeans(n_clusters=2)
cl.fit(X)
pl.scatter(X[:,0],X[:,1], c=cl.labels_)
4 2 0 2
1
2
3
4
5
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 76 / 141
![Page 95: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/95.jpg)
Feature Extraction: subspace methods
Most feature extraction methods are based on subspace methods
Find subspace within the feature space
Avoid curse of dimensionality
Make use of some good features of the data structure
Principal Component Analysis
Linear Discriminant Analysis
Independent Component Analysis
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 77 / 141
![Page 96: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/96.jpg)
Feature Extraction: subspace methods
Most feature extraction methods are based on subspace methods
Find subspace within the feature space
Avoid curse of dimensionality
Make use of some good features of the data structure
Principal Component Analysis
Linear Discriminant Analysis
Independent Component Analysis
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 77 / 141
![Page 97: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/97.jpg)
Principal Component Analysis
Most popular and commonly used methods. Sometimes included in the “FactorAnalysis” methods.
It’s the second most main tool for visualizationI (First is always to plot the signals!)
Main goal of PCA is to capture main directions of variance in input space.
Dimensionality reduction:
I Allows for projecting the dataset onto a low dimensional subspace.I Form of compression, or data modeling.I Filtering.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 78 / 141
![Page 98: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/98.jpg)
Principal Component Analysis
Most popular and commonly used methods. Sometimes included in the “FactorAnalysis” methods.
It’s the second most main tool for visualizationI (First is always to plot the signals!)
Main goal of PCA is to capture main directions of variance in input space.
Dimensionality reduction:
I Allows for projecting the dataset onto a low dimensional subspace.I Form of compression, or data modeling.I Filtering.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 78 / 141
![Page 99: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/99.jpg)
Principal Component Analysis
Most popular and commonly used methods. Sometimes included in the “FactorAnalysis” methods.
It’s the second most main tool for visualizationI (First is always to plot the signals!)
Main goal of PCA is to capture main directions of variance in input space.
Dimensionality reduction:
I Allows for projecting the dataset onto a low dimensional subspace.I Form of compression, or data modeling.I Filtering.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 78 / 141
![Page 100: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/100.jpg)
Principal Component Analysis
Most popular and commonly used methods. Sometimes included in the “FactorAnalysis” methods.
It’s the second most main tool for visualizationI (First is always to plot the signals!)
Main goal of PCA is to capture main directions of variance in input space.
Dimensionality reduction:I Allows for projecting the dataset onto a low dimensional subspace.
I Form of compression, or data modeling.I Filtering.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 78 / 141
![Page 101: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/101.jpg)
Principal Component Analysis
Most popular and commonly used methods. Sometimes included in the “FactorAnalysis” methods.
It’s the second most main tool for visualizationI (First is always to plot the signals!)
Main goal of PCA is to capture main directions of variance in input space.
Dimensionality reduction:I Allows for projecting the dataset onto a low dimensional subspace.I Form of compression, or data modeling.
I Filtering.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 78 / 141
![Page 102: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/102.jpg)
Principal Component Analysis
Most popular and commonly used methods. Sometimes included in the “FactorAnalysis” methods.
It’s the second most main tool for visualizationI (First is always to plot the signals!)
Main goal of PCA is to capture main directions of variance in input space.
Dimensionality reduction:I Allows for projecting the dataset onto a low dimensional subspace.I Form of compression, or data modeling.I Filtering.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 78 / 141
![Page 103: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/103.jpg)
Principal Component Analysis
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 79 / 141
![Page 104: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/104.jpg)
Principal Component Analysis
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 80 / 141
![Page 105: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/105.jpg)
PCA
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 81 / 141
![Page 106: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/106.jpg)
PCA
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 82 / 141
![Page 107: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/107.jpg)
PCA
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 82 / 141
![Page 108: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/108.jpg)
PCA
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 82 / 141
![Page 109: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/109.jpg)
PCA
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 82 / 141
![Page 110: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/110.jpg)
LDA vs PCA
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 83 / 141
![Page 111: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/111.jpg)
LDA vs PCA
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 83 / 141
![Page 112: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/112.jpg)
LDA vs PCA
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 83 / 141
![Page 113: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/113.jpg)
LDA vs PCA
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 83 / 141
![Page 114: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/114.jpg)
The Iris dataset
Iris datasetThe iris dataset is a classical classification task consisting in identifying 3 differenttypes of irises (Setosa, Versicolour, and Virginica) from their petal and sepallength and width.
>>> import numpy as np
>>> from sklearn import datasets
>>> import matplotlib.pylab as pl
>>> iris = datasets.load_iris()
>>> X = iris.data
>>> y = iris.target
>>> X[:2,:]
array([[ 5.1, 3.5, 1.4, 0.2],
[ 4.9, 3. , 1.4, 0.2]])
>>> np.unique(y)
array([0, 1, 2])
pl.scatter(X[:, 0], X[:, 1], c=y)
pl.xlabel('Sepal length')
pl.ylabel('Sepal width')
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 84 / 141
![Page 115: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/115.jpg)
Iris Dataset
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0Sepal length
2.0
2.5
3.0
3.5
4.0
4.5
Sepa
l wid
th
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 85 / 141
![Page 116: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/116.jpg)
PCA in python
It’s very easy now to construct the PCA projection:
>>> from sklearn import decomposition
>>> pca = decomposition.PCA(n_components=2)
>>> pca.fit(X)
PCA(copy=True, iterated_power='auto', n_components=2,
random_state=None,
svd_solver='auto', tol=0.0, whiten=False)
>>> T = pca.transform(X)
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 86 / 141
![Page 117: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/117.jpg)
PCA in python
import pylab as pl
pl.scatter(T[:, 0], T[:, 1], c=y)
pl.xlabel('1PC')
pl.ylabel('2PC')
3 2 1 0 1 2 3 41PC
1.0
0.5
0.0
0.5
1.0
1.5
2PC
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 87 / 141
![Page 118: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/118.jpg)
Supervised Learning
Supervised Learning
Consists in learning the link between two datasets:
An observed data X and
A variable y usually called target or labels.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 88 / 141
![Page 119: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/119.jpg)
The k-Nearest Neighbour rule
k-NN is a very intuitive lazy learning rule:
Let Xu be an unknown sample
Let Dn = {X1, · · · ,Xn} be a set of n labeled prototypes (Training Set).
Let Dk = {X1, · · · ,Xk} be the k closest prototypes to xu withY k = {y1, · · · , yn} .
Assign to xu the class Yu that appears most on Dk
lazy?
It does not process the dataset until there is a request to classify anunlabeled sample.
They use to provide lower complexity costs in the training phase.
Can be computationally expensive on recall phase.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 89 / 141
![Page 120: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/120.jpg)
k-NN
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 90 / 141
![Page 121: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/121.jpg)
k-NN
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 90 / 141
![Page 122: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/122.jpg)
k-NN
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 90 / 141
![Page 123: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/123.jpg)
k-NN
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 90 / 141
![Page 124: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/124.jpg)
Voronoi Tessellation
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 91 / 141
![Page 125: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/125.jpg)
Voronoi Tessellation
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 92 / 141
![Page 126: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/126.jpg)
Classification algorithms in sklearn
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 93 / 141
![Page 127: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/127.jpg)
k-nearest neighbours
>>> from sklearn import neighbors
>>> knn = neighbors.KNeighborsClassifier(7)
>>> knn.fit(T, y)
KNeighborsClassifier(algorithm='auto', leaf_size=30,
metric='minkowski',
metric_params=None, n_jobs=1, n_neighbors=7, p=2,
weights='uniform')
>>> knn.predict([[0.1, 0.2]])
array([1])
>>> yPred = knn.predict(T)
>>> (yPred==y).mean()
0.97999999999999998
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 94 / 141
![Page 128: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/128.jpg)
Support Vector Classification
>>> from sklearn import svm
>>> C,gamma = 1,0.7
>>> svcg = svm.SVC(kernel='rbf', gamma=gamma, C=C).fit(T, y)
>>> svcg.predict([[-.7,7]])
array([2])
>>> yPred = svcg.predict(T)
>>> (yPred==y).mean()
0.95333333333333337
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 95 / 141
![Page 129: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/129.jpg)
Section 5
Extra Slides
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 97 / 141
![Page 130: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/130.jpg)
Decorators as function wrapper
Function can be decorated by using the decorator syntax for functions:
@mydecorator # (2)
def function(): # (1)
pass
def mydecorator(f)
return f()
def function(): # (1)
pass
function = mydecorator(function) # (2)
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 99 / 141
![Page 131: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/131.jpg)
Decorators as function wrappers
Example
def helloSolarSystem(original_function):
def new_function():
original_function() # the () after "original_function" causes original_function to be called
print("Hello, solar system!")
return new_function
def helloGalaxy(original_function):
def new_function():
original_function() # the () after "original_function" cause original_function to be called
print("Hello, galaxy!")
return new_function
@helloGalaxy
@helloSolarSystem
def hello():
print ("Hello, world!")
# Here is where we actually *do* something!
hello()
Checkout the result of this structure
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 100 / 141
![Page 132: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/132.jpg)
Debug with decorators
Just for fun
def debug(f):
def my_wrapper(*args,**kwargs):
call_string = "%s called with *args: %r, **kwargs: %r " % (f.__name__, args, kwargs)
ret_val=f(*args,**kwargs)
call_string+=repr(ret_val)
if debugging:
print(call_string)
return ret_val
return my_wrapper
@debug
def recursive(k):
if k>1:
return k*recursive(k-1)
else:
return 1
debugging=False
recursive(3)
debugging=True
recursive(3)
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 101 / 141
![Page 133: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/133.jpg)
Scripts
First scriptA sequence of instructions that are executed each time the script is called.Instructions may be e.g. copied-and-pasted from the interpreter (but take care to respectindentation rules!).
message = "Hello how are you?"
for word in message.split():
print(word)
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 102 / 141
![Page 134: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/134.jpg)
Scripts
in Ipython, the syntax to execute a script is %run script.py. Forexample,
In [1]: %run test.py
Hello
how
are
you?
In [2]: message
Out[2]: 'Hello how are you?'
From de command line
mv->mv-PC:~/Curs_Python\$ python test.py
Hello
how
are
you?
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 103 / 141
![Page 135: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/135.jpg)
Scripts
Standalone scripts may also take command-line arguments
in file.py:
import sys
print(sys.argv)
when executed
\$ python file.py test arguments
['file.py', 'test', 'arguments']
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 104 / 141
![Page 136: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/136.jpg)
Modules
Importing objects from modules
In [1]: import os
In [2]: os
Out[2]: <module 'os' from '/usr/lib/python2.6/os.pyc'>
In [3]: os.listdir('.')
Out[3]:
['conf.py',
'basic_types.rst',
'control_flow.rst',
'functions.rst',
'python_language.rst',
'reusing.rst',
'file_io.rst',
'exceptions.rst',
'workflow.rst',
'index.rst']
Try to check how many functions are there in os with tab-completion and ipython
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 105 / 141
![Page 137: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/137.jpg)
Modules
Alternatives to full import
Import only some functions
In [4]: from os import listdir
Or a shorthand
In [5]: import numpy as np
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 106 / 141
![Page 138: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/138.jpg)
Modules
Actually, all the scientific computing tools we are going to use aremodules:
>>> import numpy as np # data arrays
>>> np.linspace(0, 10, 6)
array([ 0., 2., 4., 6., 8., 10.])
>>> import scipy # scientific computing
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 107 / 141
![Page 139: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/139.jpg)
My own module
"A demo module."
def print_b():
"Prints b."
print('b')
def print_a():
"Prints a."
print('a')
c = 2
d = 2
In [1]: import demo
In [2]: demo.print_a()
a
In [3]: demo.print_b()
b
Try this in ipython
In [4]: demo?
In [5]: who
In [6]: whos
In [7]: dir(demo)
In [8]: demo. #tab-completion
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 108 / 141
![Page 140: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/140.jpg)
Modules
Warning:Module caching
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 109 / 141
![Page 141: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/141.jpg)
‘main’ and module loading
A script and a Module
def print_a():
"Prints a."
print('a')
if __name__ == '__main__':
print_a()
In [12]: import demo2
In [13]: %run demo2
a
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 110 / 141
![Page 142: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/142.jpg)
Input and Output
To write in a file:
>>> f = open('workfile', 'w') # opens the workfile file
>>> type(f)
<type 'file'>
>>> f.write('This is a test \nand another test')
>>> f.close()
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 111 / 141
![Page 143: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/143.jpg)
Input and Output
To read from a file
In [1]: f = open('workfile', 'r')
In [2]: s = f.read()
In [3]: print(s)
This is a test
and another test
In [4]: f.close()
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 112 / 141
![Page 144: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/144.jpg)
Input and Output
Iterating over a file
In [6]: f = open('workfile', 'r')
In [7]: for line in f:
...: print(line)
...:
...:
This is a test
and another test
In [8]: f.close()
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 113 / 141
![Page 145: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/145.jpg)
Challenge
10 Minutes challenge
Write a script that reads a file with a column of numbers and calculates the min,max and sum
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 114 / 141
![Page 146: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/146.jpg)
Challenge
10 minutes challenge
Write a module that performs basic trigonometric functions using Taylorexpansions
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 115 / 141
![Page 147: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/147.jpg)
OS module: Operating system functionality
Directory and file manipulation
Current directory:
In [17]: os.getcwd()
Out[17]: '/Users/cburns/src/scipy2009/scipy_2009_tutorial/source'
List a directory:
In [31]: os.listdir(os.curdir)
Out[31]:
['.index.rst.swo',
'.python_language.rst.swp',
'.view_array.py.swp',
'_static',
'_templates',
'basic_types.rst',
'conf.py',
'control_flow.rst',
'debugging.rst',
...
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 116 / 141
![Page 148: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/148.jpg)
OS module: Operating system functionality
Make a directory
In [32]: os.mkdir('junkdir')
In [33]: 'junkdir' in os.listdir(os.curdir)
Out[33]: True
Rename the directory:
In [36]: os.rename('junkdir', 'foodir')
In [37]: 'junkdir' in os.listdir(os.curdir)
Out[37]: False
In [38]: 'foodir' in os.listdir(os.curdir)
Out[38]: True
In [41]: os.rmdir('foodir')
In [42]: 'foodir' in os.listdir(os.curdir)
Out[42]: False
Delete a file:
In [44]: fp = open('junk.txt', 'w')
In [45]: fp.close()
In [46]: 'junk.txt' in os.listdir(os.curdir)
Out[46]: True
In [47]: os.remove('junk.txt')
In [48]: 'junk.txt' in os.listdir(os.curdir)
Out[48]: False
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 117 / 141
![Page 149: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/149.jpg)
os.path: path manipulations
os.path provides common operations on pathnames.
In [70]: fp = open('junk.txt', 'w')
In [71]: fp.close()
In [72]: a = os.path.abspath('junk.txt')
In [73]: a
Out[73]: '/Users/cburns/src/scipy2009/scipy_2009_tutorial/source/junk.txt'
In [74]: os.path.split(a)
Out[74]: ('/Users/cburns/src/scipy2009/scipy_2009_tutorial/source','junk.txt')
In [78]: os.path.dirname(a)
Out[78]: '/Users/cburns/src/scipy2009/scipy_2009_tutorial/source'
In [79]: os.path.basename(a)
Out[79]: 'junk.txt'
In [80]: os.path.splitext(os.path.basename(a))
Out[80]: ('junk', '.txt')
In [84]: os.path.exists('junk.txt')
Out[84]: True
In [86]: os.path.isfile('junk.txt')
Out[86]: True
In [87]: os.path.isdir('junk.txt')
Out[87]: False
In [88]: os.path.expanduser('~/local')
Out[88]: '/Users/cburns/local'
In [92]: os.path.join(os.path.expanduser('~'), 'local', 'bin')
Out[92]: '/Users/cburns/local/bin'
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 118 / 141
![Page 150: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/150.jpg)
Other OS services
Running an external command
In [3]: os.system('ls *.tex')
commondefs.tex CursP_1.tex CursP_3.tex
CursP_4.tex format.tex header.tex
Walking a directory
In [4]: for dirpath, dirnames, filenames in
os.walk(os.curdir):
...: for fp in filenames:
...: print(os.path.abspath(fp))
...:
/home/Dropbox/Curs_Python/CursP_3.log
/home/Dropbox/Curs_Python/CursP_4.out
/home/Dropbox/Curs_Python/syllabus.odt
/home/Dropbox/Curs_Python/format.tex
/home/Dropbox/Curs_Python/CursP_3.pdf
/home/Dropbox/Curs_Python/tags
/home/Dropbox/Curs_Python/CursP_3.vrb
glob: Pattern matching on files
In [5]: import glob
In [6]: glob.glob('*.tex')
Out[6]:
['format.tex',
'CursP_4.tex',
'header.tex',
'CursP_1.tex',
'CursP_3.tex',
'commondefs.tex']
sys module: system-specificinformation
In [8]: import sys
In [9]: sys.platform
Out[9]: 'linux2'
In [10]: sys.version
Out[10]: '2.7.3 (default, Aug 1 2012, 05:14:39) \n[GCC 4.6.3]'
In [11]: sys.prefix
Out[11]: '/usr'
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 119 / 141
![Page 151: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/151.jpg)
Object-oriented programming
OOPWe are not going to use OOP in this course, but we provide some snippets ofcode just to know the structure of class declaration
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 120 / 141
![Page 152: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/152.jpg)
Object-oriented programming
Class Declaration
>>> class Student(object):
... def __init__(self, name):
... self.name = name
... def set_age(self, age):
... self.age = age
... def set_major(self, major):
... self.major = major
...
>>> anna = Student('anna')
>>> anna.set_age(21)
>>> anna.set_major('physics')
Class extension
>>> class MasterStudent(Student):
... internship = 'mandatory, from March to June'
...
>>> james = MasterStudent('james')
>>> james.internship
'mandatory, from March to June'
>>> james.set_age(23)
>>> james.age
23
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 121 / 141
![Page 153: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/153.jpg)
Exceptions
Exceptions are raised by errors in Python:
In [1]: 1/0
---------------------------------------------------------------------------
ZeroDivisionError: integer division or modulo by zero
In [2]: 1 + 'e'
---------------------------------------------------------------------------
TypeError: unsupported operand type(s) for +: 'int' and 'str'
In [3]: d = {1:1, 2:2}
In [4]: d[3]
---------------------------------------------------------------------------
KeyError: 3
In [5]: l = [1, 2, 3]
In [6]: l[4]
---------------------------------------------------------------------------
IndexError: list index out of range
In [7]: l.foobar
---------------------------------------------------------------------------
AttributeError: 'list' object has no attribute 'foobar'
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 122 / 141
![Page 154: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/154.jpg)
Catching exceptions
try/except
In [8]: while True:
....: try:
....: x = int(raw_input('Please enter a number: '))
....: break
....: except ValueError:
....: print('That was no valid number. Try again...')
....:
....:
Please enter a number: a
That was no valid number. Try again...
Please enter a number: 1
In [9]: x
Out[9]: 1
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 123 / 141
![Page 155: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/155.jpg)
Catching exceptions
try/finally
Important for resource management (e.g. closing a file)
In [10]: try:
....: x = int(raw_input('Please enter a number: '))
....: finally:
....: print('Thank you for your input')
....:
....:
Please enter a number: a
Thank you for your input
---------------------------------------------------------------------------
ValueError: invalid literal for int() with base 10: 'a'
There are many tricks with the exceptions, but they are out of the scope of theseslides
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 124 / 141
![Page 156: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/156.jpg)
Parameters
More involved example implementing python’s slicing:
In [98]: def slicer(seq, start=None, stop=None, step=None):
....: """Implement basic python slicing."""
....: return seq[start:stop:step]
....:
In [101]: rhyme = 'one fish, two fish, red fish, blue fish'.split()
In [102]: rhyme
Out[102]: ['one', 'fish,', 'two', 'fish,', 'red', 'fish,', 'blue', 'fish']
In [103]: slicer(rhyme)
Out[103]: ['one', 'fish,', 'two', 'fish,', 'red', 'fish,', 'blue', 'fish']
In [104]: slicer(rhyme, step=2)
Out[104]: ['one', 'two', 'red', 'blue']
In [105]: slicer(rhyme, 1, step=2)
Out[105]: ['fish,', 'fish,', 'fish,', 'fish']
In [106]: slicer(rhyme, start=1, stop=4, step=2)
Out[106]: ['fish,', 'fish,']
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 125 / 141
![Page 157: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/157.jpg)
Parameters and mutability
5 minutes challenge, solution
>>> def try_to_modify(x, y, z):
... x = 23
... y.append(42)
... z = [99] # new reference
... print(x)
... print(y)
... print(z)
...
>>> a = 77 # immutable variable
>>> b = [99] # mutable variable
>>> c = [28]
>>> try_to_modify(a, b, c)
23
[99, 42]
[99]
>>> print(a)
77
>>> print(b)
[99, 42]
>>> print(c)
[28]
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 126 / 141
![Page 158: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/158.jpg)
Global variables
Variables declared outside the function can be referenced within thefunction:
In [114]: x = 5
In [115]: def addx(y):
.....: return x + y
.....:
In [116]: addx(10)
Out[116]: 15
But..
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 127 / 141
![Page 159: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/159.jpg)
This doesn’t work:
x=5
In [117]: def setx(y):
.....: x = y
.....: print('x is %d' % x)
.....:
.....:
In [118]: setx(10)
x is 10
In [120]: x
Out[120]: 5
This works:
x=5
In [121]: def setx(y):
.....: global x
.....: x = y
.....: print('x is %d' % x)
.....:
.....:
In [122]: setx(10)
x is 10
In [123]: x
Out[123]: 10
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 128 / 141
![Page 160: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/160.jpg)
Variable number of parameters
Special forms of parameters:
*args any number of positional arguments packed into a tuple
**kwargs any number of keyword arguments packed into a dictionary
In [35]: def variable_args(*args, **kwargs):
....: print 'args is', args
....: print 'kwargs is', kwargs
....:
In [36]: variable_args('one', 'two', x=1, y=2, z=3)
args is ('one', 'two')
kwargs is {'y': 2, 'x': 1, 'z': 3}
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 129 / 141
![Page 161: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/161.jpg)
Docstrings
Documentation about what the function does and it’s parameters.General convention:
In [67]: def funcname(params):
....: """Concise one-line sentence describing the function.
....:
....: Extended summary which can contain multiple paragraphs.
....: """
....: # function body
....: pass
....:
In [68]: funcname?
Type: function
Base Class: <type 'function'>
String Form: <function funcname at 0xeaa0f0>
Namespace: Interactive
File: /home/alex/Curs_Python/.../<ipython console>
Definition: funcname(params)
Docstring:
Concise one-line sentence describing the function.
Extended summary which can contain multiple paragraphs.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 130 / 141
![Page 162: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/162.jpg)
sklearn.metrics
sklearn.metrics
roc curve Compute Receiver operating characteristic (ROC).
precision recall curve Compute precision-recall pairs for different probabilitythresholds.
accuracy score Accuracy classification score.
confusion matrix Confusion matrix.
matthews corrcoef Matthews Correlation coefficient
classification report Build a text report showing the main classification metrics.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 131 / 141
![Page 163: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/163.jpg)
Precision and Recall
PrecisionHow many selected items are relevant?
RecallHow many selected items are selected?
F1Harmonic mean of precision and recallF1 = 2 P·R
P+R
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 132 / 141
![Page 164: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/164.jpg)
sklearn.metrics
>>> from sklearn import metrics
>>> metrics.recall_score(yPred,y,average=None)
array([ 1. , 0.92156863, 0.93877551])
>>> metrics.confusion_matrix(yPred,y)
array([[50, 0, 0],
[ 0, 47, 4],
[ 0, 3, 46]])
metrics.classification_report(yPred,y)
precision recall f1-score support
0 1.00 1.00 1.00 50
1 0.94 0.92 0.93 51
2 0.92 0.94 0.93 49
navg / total 0.95 0.95 0.95 150
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 133 / 141
![Page 165: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/165.jpg)
Cross-validation
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 134 / 141
![Page 166: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/166.jpg)
Validity and Over-Fitting
In multivariate predictive models, over-fitting occurs when a large number ofpredictor variables is fit to a small N of subjects. A model may “fit” well orperfectly, even if no real relationship. Simon, JNCI 2003
Direct Consequence of Over-fitting
Model performance results are not reproducible in a new set of data.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 135 / 141
![Page 167: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/167.jpg)
Validity and Over-Fitting
In multivariate predictive models, over-fitting occurs when a large number ofpredictor variables is fit to a small N of subjects. A model may “fit” well orperfectly, even if no real relationship. Simon, JNCI 2003
Direct Consequence of Over-fitting
Model performance results are not reproducible in a new set of data.
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 135 / 141
![Page 168: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/168.jpg)
Over-Fitting
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 136 / 141
![Page 169: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/169.jpg)
Validation Schemes
Ransohoff. Nat Rev Cancer 2004
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 137 / 141
![Page 170: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/170.jpg)
Cross Validation
sklearn.cross validation.train test split
Split arrays or matrices into random train and test subsets.
>>> #from sklearn import cross_validation
>>> #xTrain, xVal, yTrain, yVal = cross_validation.train_test_split(X,
y, test_size=0.4)
>>> from sklearn.model_selection import train_test_split
>>> xTrain, xVal, yTrain, yVal = train_test_split(X, y, test_size =
0.4)
>>> print(xTrain.shape,xVal.shape)
(90, 4) (60, 4)
>>> from sklearn import neighbors
>>> knn = neighbors.KNeighborsClassifier(7).fit(xTrain, yTrain)
>>> yPredVal = knn.predict(xVal)
>>> (yPredVal==yVal).mean()
0.98333333333333328
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 138 / 141
![Page 171: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/171.jpg)
Cross Validation
sklearn.cross validation.train test split
Split arrays or matrices into random train and test subsets.
>>> #from sklearn import cross_validation
>>> #xTrain, xVal, yTrain, yVal = cross_validation.train_test_split(X,
y, test_size=0.4)
>>> from sklearn.model_selection import train_test_split
>>> xTrain, xVal, yTrain, yVal = train_test_split(X, y, test_size =
0.4)
>>> print(xTrain.shape,xVal.shape)
(90, 4) (60, 4)
>>> from sklearn import neighbors
>>> knn = neighbors.KNeighborsClassifier(7).fit(xTrain, yTrain)
>>> yPredVal = knn.predict(xVal)
>>> (yPredVal==yVal).mean()
0.98333333333333328
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 138 / 141
![Page 172: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/172.jpg)
Cross-validation metrics
Can we compute some statistics on the performance of the classifiers?cross_val_score exists!
>>> from sklearn.model_selection import cross_val_score
>>> knn = neighbors.KNeighborsClassifier(1)
>>> recalls = cross_val_score(knn, X, y, cv = 6)
>>> recalls
array([ 0.96296296, 1. , 0.875 , 0.91666667, 1.
, 1. ])
>>> recalls.mean()
0.95910493827160492
>>> recalls.std()
0.048143449042612647
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 139 / 141
![Page 173: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/173.jpg)
Leave one out
LOOEach training set is constructed by taking all samples except sample k and themodel validates over k . Then just iterate through k .
>>> from sklearn.model_selection import LeaveOneOut
>>> from sklearn import svm
>>> loo = LeaveOneOut()
>>> cl = svm.SVC(kernel='linear', C=1)
>>> recalls = [(y[indVal] ==
cl.fit(X[indTrain,:],y[indTrain]).predict(X[indVal,:])).mean() for
indTrain, indVal in loo.split(X)]
>>> len(recalls)
150
>>> recalls[:5]
[1.0, 1.0, 1.0, 1.0, 1.0]
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 140 / 141
![Page 174: Introduction to Python - Projet MiRoRmiror-ejd.eu/.../2019/04/CrashCourseOnPython-compressed.pdfIntroduction to Python A Crash Course on Python Alexandre Perera,1;2 PhD 1Centre de](https://reader030.fdocuments.in/reader030/viewer/2022040414/5f21cd3b29dca82d62488e2b/html5/thumbnails/174.jpg)
k-nearest neighbours vs. SVC Challenge
Challenge1 Get all variables from Iris dataset.
2 Compute a 2D-PCA model of the Iris dataset.
3 Compute and plot the decision boundaries for a k-NN and SVC classifier ofyour choice.
Hint: use np.mesgrid()
Perera (UPC) Introduction to Python 2019, MiRoR Crash course on Python 141 / 141