- •Инструментальные средства разработки инфокоммуникационных систем с искусственным интеллектом
- •ОГЛАВЛЕНИЕ
- •Введение в инструментальные средства разработки ИКС с ИИ
- •ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
- •Пример:
- •Кодировка символов
- •в верху файла.
- •IPython notebooks
- •Модули
- •Looking at what a module contains, and its documentation (Глядя на то, что содержит модуль, и его документацию)
- •Переменные и типы Имена символов
- •Присваивание
- •Основные типы
- •Функциональная утилита Type
- •Вывод type
- •Операторы и сравнения
- •Составные типы: строки, список и словари. Текстовые переменные
- •Индексация начинается с 0!
- •Лист
- •Кортежи
- •Словари
- •Услоаные операторы и табуляция Условные операторы: if, elif, else
- •else:
- •Циклы
- •Списки: создание списков с использованием циклов for:
- •while циклы:
- •Функции
- •Аргумент по умолчанию и ключевые слова
- •Безымянные функции (lambda функция)
- •Классы
- •Исключения
- •Дополнительная литература
- •Часть 2. Введение в pandas Цели обучения:
- •Основные понятия
- •Работа с колонками и строками DataFrame
- •Манипулирование данными
- •Решение
- •Indexes
- •Упражнение #2
- •Копирование DataFrame
- •Введение в анализ данных (очистка, интерполяция, экстраполяция)
- •Формирование дата фрейма и интерполяция пропущенны значений
- •Графическое представление обработанного дата фрейма (библ. pyplot)
- •Анализ графика и удаление значений за неполный день
- •Обработка аномалий временного хода и апроксимация Детектирование аномалий
- •Интерполяция
- •Визуализация аномалий
- •Сглаживание временного ряда
- •Анализ временных рядов (регрессия)
- •ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
- •Базовые методы программирования систем ИИ
- •ТЕОРЕТИЧЕСКАЯ ЧАСТЬ:
- •ПРАКТИЧЕСКАЯ ЧАСТЬ.
- •Кластерный анализ
- •Применение нейронных сетей для анализа временных рядов
- •Когнитивные системы связи
def func1(s):
"""
Print a string 's' and tell how many characters it has
"""
print(s + " has " + str(len(s)) + " characters") help(func1)
Help on function func1 in module main :
func1(s)
Print a string 's' and tell how many characters it has
func1("test")
test has 4 characters
Функции, которые возвращают значение, используют ключевое слово return: def square(x):
"""
Return the square of x.
"""
return x ** 2 square(4)
16
Мы можем вернуть несколько значений из функции, используя кортежи (см. выше): def powers(x):
"""
Return a few powers of x.
"""
return x ** 2, x ** 3, x ** 4 powers(3)
(9, 27, 81)
x2, x3, x4 = powers(3)
print(x3)
27
Аргумент по умолчанию и ключевые слова
В определении функции мы можем указать значения по умолчанию для аргументов, которые принимает функция:
def myfunc(x, p=2, debug=False): if debug:
print("evaluating myfunc for x = " + str(x) + " using exponent p = " + str(p)) return x**p
Если мы не указываем значение аргумента debug при вызове функции myfunc, по умолчанию используется значение, указанное в определении функции:
myfunc(5) 25
myfunc(5, debug=True)
evaluating myfunc for x = 5 using exponent p = 2 25
Если мы явно указываем имена аргументов в вызовах функций, они не должны идти в том же порядке, что и в определении функции. Это называется keyword arguments и часто очень полезно в функциях, которые принимают много необязательных аргументов.
myfunc(p=3, debug=True, x=7)
18
evaluating myfunc for x = 7 using exponent p = 3 343
Безымянные функции (lambda функция)
В Python мы также можем создавать безымянные функции, используя ключевое слово lambda:
f1 = lambda x: x**2
# это же самое что
def f2(x): return x**2
f1(2), f2(2) (4, 4)
Этот метод полезен, например, когда мы хотим передать простую функцию в качестве аргумента другой функции, например:
#map это встроенная функция Python map(lambda x: x**2, range(-3,4)) <map at 0x7f200b516d50>
#в python 3 мы можеи использовать `list(...)` для преобразования итератора в явный список
list(map(lambda x: x**2, range(-3,4)))
[9, 4, 1, 0, 1, 4, 9]
Классы
Классы являются ключевыми функциями объектно-ориентированного программирования. Класс — это структура для представления объекта и операций, которые можно выполнять над объектом.
В Python класс может содержать атрибуты (attributes) (переменные) и методы
(methods) (функции).
Класс определяется почти как функция, но с использованием ключевого слова class, а определение класса обычно содержит ряд определений методов класса (функция в классе).
•Каждый метод класса должен иметь аргумент self в качестве первого аргумента. Этот объект является самоссылкой.
•Некоторые имена методов класса имеют особое значение, например:
–init : Имя метода, который вызывается при первом создании объекта.
–str : Метод, который вызывается, когда требуется простое строковое представление класса, например, при печати.
–Больше информации см. http://docs.python.org/2/reference/datamodel.html#special- method-names
class Point:
"""
Simple class for representing a point in a Cartesian coordinate system.
"""
def init (self, x, y):
"""
Create a new Point at x, y.
"""
self.x = x self.y = y
def translate(self, dx, dy):
"""
19
Translate the point by dx and dy in the x and y direction.
"""
self.x += dx self.y += dy
def str (self):
return("Point at [%f, %f]" % (self.x, self.y))
Чтобы создать новый экземпляр класса:
p1 = Point(0, 0) # это вызовет метод |
|
|
init в классе Point |
||||||
|
|
|
|
|
|
|
|
|
|
print(p1) |
# это вызовет метод |
|
|
str |
|
|
Point at [0.000000, 0.000000]
Чтобы вызвать метод класса в экземпляре класса p: p2 = Point(1, 1)
p1.translate(0.25, 1.5)
print(p1)
print(p2)
Point at [0.250000, 1.500000]
Point at [1.000000, 1.000000]
Обратите внимание, что вызов методов класса может изменить состояние этого конкретного экземпляра класса, но не влияет на другие экземпляры класса или какие-либо глобальные переменные.
Это одна из приятных особенностей объектно-ориентированного дизайна: код, такой как функции и связанные с ними переменные, сгруппирован в отдельные и независимые сущности.
Модули
Одной из наиболее важных концепций хорошего программирования является повторное использование кода и избежание повторений.
Идея состоит в том, чтобы писать функции и классы с четко определенной целью и областью действия и повторно использовать их вместо повторения аналогичного кода в разных частях программы (модульное программирование). В результате обычно значительно улучшается читабельность и удобство сопровождения программы. На практике это означает, что в наших программах меньше ошибок, их легче расширять и отлаживать/устранять неполадки.
Python поддерживает модульное программирование на разных уровнях. Функции и классы являются примерами инструментов низкоуровневого модульного программирования. Модули Python — это модульная конструкция программирования более высокого уровня, где мы можем собирать связанные переменные, функции и классы в модуле. Модуль Python определяется в файле Python (с расширением файла .py), и его можно сделать доступным для других модулей и программ Python с помощью оператора import.
Рассмотрим следующий пример: файл mymodule.py содержит простые примеры реализации переменной, функции и класса:
%%file mymodule.py
"""
Example of a python module. Contains a variable called my_variable, a function called my_function, and a class called MyClass.
"""
my_variable = 0
20
def my_function():
"""
Example function
"""
return my_variable
class MyClass:
"""
Example class.
"""
def init (self): self.variable = my_variable
def set_variable(self, new_value):
"""
Set self.variable to a new value
"""
self.variable = new_value
def get_variable(self): return self.variable
Writing mymodule.py
Мы можем импортировать модуль mymodule в нашу программу Python, используя import:
import mymodule
Используйте help(module), чтобы получить сводку о том, что предоставляет модуль: help(mymodule)
Help on module mymodule:
NAME mymodule
DESCRIPTION
Example of a python module. Contains a variable called my_variable, a function called my_function, and a class called MyClass.
CLASSES builtins.object
MyClass
class MyClass(builtins.object) | Example class.
|
| Methods defined here:
| |
|
|
|
|
| |
|
init (self) |
||
|
|
|
|
|
| |
Initialize self. See help(type(self)) for accurate signature. |
|||
| |
|
|
|
|
| |
get_variable(self) |
|||
| |
|
|
|
|
21