Машинно обучение Лабораторно упражнение 3 Работа с функции, файлове и графики 1. Допълнителни сведения за функции 1.1. Стойности на аргументите по под

Подобни документи
Машинно обучение Лабораторно упражнение 4 Линейна регресия и градиентно спускане Целта на упражнението е да се реализира линейна регресия, в която фун

2. Лексически анализ. Основни понятия и алгоритъм на лексическия анализ. Програмна структура на лексическия анализатор Цел на упражнението Упражнениет

Динамична памет. Конструктори и деструктори Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

МОДУЛ 2 ВАРИАНТ НА ПРАКТИЧЕСКА ЗАДАЧА ЗА НАЦИОНАЛНО ОНЛАЙН ОЦЕНЯВАНЕ НА ДИГИТАЛНИ КОМПЕТЕНТНОСТИ X КЛАС от 2016 г. УСЛОВИЕ НА ЗАДАЧАТА За тази задача

Slide 1

Lush Green

3. Синтактичен анализ. Граматика на учебен програмен език STUDENT. Извеждане на изречения от правилата на граматиката Цел на упражнението Упражнението

Структура на програма в C - Част 9 - низове от символи, C-string

Програмен език C Пламен Танов Ненко Табаков Мартин Вачовски Технологично училище Електронни системи Технически университет София версия 0.5

Динамична памет Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. Тр

Структура на програма в C - Част 6 - goto, switch, break и continue клаузи

Програмиране на Паскал

Lush Green

Предефиниране на оператори. Копиращ конструктор. Оператор за присвояване Любомир Чорбаджиев Технологическо училище Електронни системи Технически униве

Microsoft Word - ICA user-manual.doc

Сериализация Калин Георгиев 13 май 2016 г. Калин Георгиев Обектно ориентирано програмиране 13 май 2016 г. 1 / 23

СЪЗДАВАНЕ НА СЪДЪРЖАНИЕ, ИНДЕКСЕН УКАЗАТЕЛ И ВМЪКВАНЕ НА ПОЛЕТА I. СЪЗДАВАНЕ НА СЪДЪРЖАНИЕ Съдържанието се създава по съществуващ в Word форматен стил

Машинно обучение Лабораторно упражнение 9 Класификация с множество класове. Представяне на невронна мрежа Упражнението демонстрира класификация в множ

Обработка на грешки Изключения Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София Re

doll Механична кукла Механичните кукли автоматично повтарят предварително зададена последователност от движения. В Япония има традиции в изработката н

MSDOS1

Виртуални функции

ИЗИСКВАНИЯ ЗА ДОКЛАДИТЕ А. ОБЩИ ИЗИСКВАНИЯ І. Докладът трябва да е написан на компютърна програма Microsoft Word. ІІ. Файлът да бъде записан като *.do

HTML - формат на текст

ECDL_ICDL Spreadsheets.doc

МИНИСТЕРСТВО НА ОБРАЗОВАНИЕТО И НАУКАТА

Ръководство за бързо стартиране Microsoft Outlook 2013 изглежда по-различно от предишните версии и затова създадохме този справочник, за да ви помогне

Рекурсия Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, спец. Софтуерно инженерство, 2016/17 г. 21 декември 2016 г. 4 януари

Дефиниране на шаблон Шаблони (Templates) Любомир Чорбаджиев Технологическо училище Електронни системи Технически университет, София

Scan Tailor Кратко ръководство за работа Преди време описах как се работи с програмата Scan Kromsator. Сега искам да Ви представя една друга програма,

Структура на програма в C - Част 7 - масиви, оператор за индексиране, sizeof оператор

HTML - списъци

Университет - библиотека - образование и дигиталният достъп University - Library - Education and Digital Access

Масиви и низове Трифон Трифонов Увод в програмирането, спец. Компютърни науки, 1 поток, 2018/19 г. 15 ноември 6 декември 2018 г. Трифон Трифонов (УП 1

Десислава Цокова ЗАБАВНИ ОБУЧИТЕЛНИ ИГРИ С LEARNING APPS НЕОБХОДИМИ РЕСУРСИ Компютър, интернет за създаването и ползването им. Регис

Машинно обучение Лабораторно упражнение 2 Въведение в Python Машинно обучение Лабораторно упражнение 2 Въведение в Python 1. Символни низове. - могат

Black and White

ИЗИСКВАНИЯ ЗА ПУБЛИКУВАНЕ НА МАТЕРИАЛИ В СП

Графика и Презентации - Стандартизация на графичният Вход/Изход

Структура на програма в C - Част 2 - типове, функции

ICS Natioanal

Mathematica CalcCenter

Препис:

Машинно обучение Лабораторно упражнение 3 Работа с функции, файлове и графики 1. Допълнителни сведения за функции 1.1. Стойности на аргументите по подразбиране Пример за функция, която може да бъде извиквана с по-малко аргументи, отколкото е дефинирана: >>> def function(answer, count=5, text='желаете ли затворите приложението? Отговорете с да или не!'): while 1: yesno = input(answer) if yesno in ( Да, да ): return 1 if yesno in ( Не, не ): return 0 count = count - 1 if count < 0: print (text) raise IOError( Довиждане! ) Тази функция може да бъде извиквана например така: >>> function ( Наистина ли желаете да затворите приложението? ) или така: >>> function ( Наистина ли желаете да затворите приложението?, 2) Стойностите по подразбиране се изчисляват по време на дефинирането на функцията в обсега на самата дефиниция, така че например: >>> x = 111 >>> def function2(parameter=x): print(parameter) >>> parameter = 200 >>> function2( ) ще отпечата 111. Важно предупреждение: Стойностите по подразбиране се изчисляват само веднъж. Това поражда разлика, когато стойността по подразбиране е променлив обект като списък или речник (dictionary). Например, следващата функция събира аргументите, които са и подадени в последователни извиквания:

>>> def function(x, y = []): y.append(x) return y >>> print(function(1)) >>> print(function(2)) >>> print(function(3)) Резултат: [1] [1, 2] [1, 2, 3] Ако не желаете стойността по подразбиране да бъде споделяна между последователните извиквания, можете вместо това да напишете функцията така: >>> def function(x, y = None): if y is None: y=[ ] y.append(x) return y Самостоятелна задача 1: Извиквайте функцията function последователно с параметри 1, 2, 3. 1.2. Аргументи с ключови думи Функциите могат да бъдат извиквани и с използването на аргументи с ключови думи във формата ключова_дума = стойност. Например, следващата функция: >>> def sendmessage(sender, recipient='world!', greeting='hello', question='how have you been?', sendoff='best Wishes'): print (greeting, recipient, question, sendoff, sender) може да бъде извиквана по следните начини: >>> sendmessage("skynet") >>> sendmessage(greeting = 'Dear Mr/Ms', sender = 'Random Internet Person') >>> sendmessage( Me, sendoff = Regards ) >>> sendmessage( Your mom, Ron, What did you do with the car ), но следващите извиквания биха били невалидни:

>>> sendmessage() # липсва задължителен аргумент >>> sendmessage( Me, sender= You ) # дублирана стойност за аргумент >>> sendmessage(city= Sofia ) # непозната ключова дума Списъкът с аргументите може да съдържа всякакви позиционни аргументи, следвани от всякакви аргументи с ключови думи, където ключовите думи са избрани от имената на формалните параметри. Не е важно дали даден формален параметър има стойност по подразбиране или не. Не може обаче един аргумент да получи стойност повече от веднъж. Имената на формалните параметри, съответни на позиционните аргументи, не могат да бъдат използвани като ключови думи в едно и също извикване. Ето един пример, който пропада заради това ограничение: >>> def fun(a):... print( Hello World )... >>> fun(0, a=0) Traceback (innermost last): File "<stdin>", line 1, in? TypeError: keyword parameter redefined Когато последният формален параметър има формата **име, той получава речник, съдържащ всички аргументи с ключови думи, които не съответстват на формален параметър. Това може да бъде комбинирано с формален параметър с формата *име, който получава комплект (tuple), съдържащ позиционните аргументи извън списъка на формалните параметри. (*име трябва да се яви преди **име.) Например, ако дефинираме функция, подобна на тази: >>> def showranking (*arguments, **keywords): print (arguments) print (keywords) Тя може да бъде извикана например така: >>> showranking('skiing', 'Bobsled', 'Triathlon', first='bulgaria', second='romania', third='macedonia') Задача: Тествайте последната функция с различни параметри. 2. Работа с файлове 2.1. Отваряне на файл open() - връща файлов обект object и най-често се използва с два аргумента: Формат на функцията: open(файлово_име, режим).

Първи аргумент име на файла Режими: r файлът се отваря само за четене w създава се нов файл и се отваря само за запис (съществуващ файл със същото име ще бъде изтрит) a файлът се отваря за запис, като добавя съдържанието в края на файла, ако той съществува 't' текстов режим (по подразбиране) r + файлът се отваря за четене и запис а + файлът се отваря за четене и запис, като добавя съдържанието в края на файла, ако той съществува Аргументът режим е незадължителен; ако r е пропуснат, той се подразбира. За повече информация: help(open) 2.2. Четене на файл Функция read() - без параметри прочита целия текстов файл (всички символи) Създайте текстов файл с произволно съдържание с име: testfile Метод read(char_numbers) - прочита char_numbers символи от файла >>> file = open("testfile.txt", "r") >>> print(file.read()) Метод readline() - прочита ред от файла При първото извикване прочита първия ред, при второто прочита втория и т.н. >>> file = open("testfile.txt", "r") >>> print(file.readline()) Метод readlines() - прочита всички редове от файла, разделени в подходящ формат Пример за четене на файл ред по ред: >>> file = open("testfile.txt", "r") >>> print(file.readlines()) Или: >>> file = open("testfile.txt", "r") >>> for line in file:

print(line) 2.3. Запис във файл Метод write(string) - запис на символния низ string във файла Пример за създаване на текстов файл и запис на текст в него. >>> file = open("testfile.txt","w") >>> file.write("this is our new text file\n") >>> file.write("and this is another line.") >>> file.write("\nwhy? Because we can.") >>> file.close() 2.4. Затваряне на файл Метод close() 2.5. Достъп до файл с оператор with Операторът with предоставя по-ясен синтаксис за обработване на файл. Негово предимство е, че автоматично затваря всеки отворен файл след приключване на файловите операции. Формат: with open( filename ) as file: >>> with open("testfile.txt") as f: for line in f: print(line) Липсва извикване на метода close(), който се извиква автоматично в края на оператора with. Пример за създаване на файл и запис в него: >>> with open("123.txt","w") as f: f.write("hello\n")

f.write("1234567\n") f.write("abcdefgh\n") Пример за прочитане на съдържанието на файла в променлива: >>> with open("123.txt") as f: data = f.readlines() print(data) 2.6. Разделяне на думи, прочетени от текстов файл Метод split() - разделя думи в символен низ с разделител интервал >>> with open("123.txt", "r") as f: data = f.readlines() >>> for line in data: words = line.split() print(words) Методът split() може да се извика с параметър символ. В този случай думите се разделят с разделител този символ. Например: >>> str="i love chocolate very much." >>> print(str.split(",")) За повече информация: help(str.split) Самостоятелна задача 2: Даден е символен низ "I love chocolate very much". Да се запише всяка дума от низа на отделен ред в текстов файл. 3. Визуализация на данни 3.1. Въведение в matplotlib matplotlib - мултиплатформена библиотека за визуализация на данни matplotlib.pyplot - функции за изчертаване на графики и фигури За повече информация: >>> import matplotlib.pyplot >>> help(matplotlib.pyplot)

или https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html 3.1.1. Функция plot Функцията plot се използва за изчертаване на графики на функции. Примери: plot(x, y) # plot x and y using default line style and color plot(x, y, 'bo') # plot x and y using blue circle markers plot(y) plot(y, 'r+') # plot y using x as index array 0..N-1 # ditto, but with red plusses За повече информация: >>> >>> help(plt.plot) plt.plot([1,2,1,2,3,2,4]) plt.ylabel('some numbers') Параметрите на функцията plot() са стойности за y в графиката. По подразбиране python създава същите данни за x, като започва от 0. plt.plot([1, 2, 3, 4], [1, 4, 1, 16]) За всяка двойка параметри е възможен трети параметър. Това е символен низ, който задава цвят и тип на графиката. Например: b- - непрекъсната синя линия (по подразбиране) r- - непрекъсната червена линия o- - данни с точки 3.1.2. Функция axis() axis() - функция, задаваща [xmin, xmax, ymin, ymax] plt.plot([1,2,3,4], [1,4,1,16], 'ro')

plt.axis([0, 6, 0, 20]) Практически matplotlib се използва често с numpy масиви. Numpy е библиотека за представяне и операции с множества от данни. За повече информация: >>> import numpy >>> help(numpy) Или http://www.numpy.org/ 3.1.3. Функция arange( ) Синтаксис: arange([start,] stop[, step,], dtype=none) За повече информация: >>> import numpy as np >>>help(np.arange) import numpy as np t = np.arange(0., 5., 0.2) # равномерно разпределя на интервали от 200 ms plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^') # червени тирета, сини квадратчета, зелени триъгълници Самостоятелна задача 3: Визуализирайте графиката на функцията y=x 2, за стойности на x=[-2;+2] със стъпка 0.01. 3.2. Работа с множество графики 3.2.1. Функция figure функция създаваща фигура Синтаксис: figure(num=none, figsize=none, dpi=none, facecolor=none, edgecolor=none, frameon=true, FigureClass=<class 'matplotlib.figure.figure'>, **kwargs) За повече информация: >>> import numpy as np >>> help(plt.figure)

Синтаксис: 3.2.2. Функция subplot subplot(nrows, ncols, plot_number) Субдиаграмите позволяват няколко графики да бъдат поставени н една и съща фигура. Аргументите са: брой редове, брой колони и в коя клетка да се постави графиката. Извикване на субдиаграмата трябва да бъде последвано от диаграмна функция, която може да е plot. Ако числата указващи nrows, ncols и plot_number са едноцифрени може да се пропуска разделителя запетая. plt.figure(1) # първа фигура plt.subplot(211) # първа графика в първата фигура, като фигурата е на два реда и 1 колона plt.plot([1, 4, 2]) plt.subplot(212) # втора графика в първата фигура plt.plot([3, 1, 7]) plt.figure(2) plt.plot([4, 2, 8]) # втора фигура # създава subplot(111) по подразбиране plt.figure(1) plt.subplot(211) # задава фигура 1 текуща; subplot(212) също е текуща # задава subplot(211) във фигура 1 текуща plt.title('easy as 1, 2, 3') # заглавие на subplot 211 3.3. Добавяне на текст в графика import numpy as np x = np.random.randn(10000) # връща извадка от нормално разпределение # хистограма plt.hist(x) plt.title("gaussian Histogram") plt.xlabel("value")

plt.ylabel("frequency") plt.grid(true) plt.grid(true) 3.4. Добавяне на анотации в графика import numpy as np ax = plt.subplot(111) t = np.arange(0.0, 5.0, 0.01) s = np.cos(2*np.pi*t) line = plt.plot(t, s) plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5),arrowprops=dict(facecolor='black') plt.ylim(-2,2) # задаване на ограничения по у - оста