- •Инструментальные средства разработки инфокоммуникационных систем с искусственным интеллектом
- •ОГЛАВЛЕНИЕ
- •Введение в инструментальные средства разработки ИКС с ИИ
- •ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
- •Пример:
- •Кодировка символов
- •в верху файла.
- •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)
- •Анализ графика и удаление значений за неполный день
- •Обработка аномалий временного хода и апроксимация Детектирование аномалий
- •Интерполяция
- •Визуализация аномалий
- •Сглаживание временного ряда
- •Анализ временных рядов (регрессия)
- •ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
- •Базовые методы программирования систем ИИ
- •ТЕОРЕТИЧЕСКАЯ ЧАСТЬ:
- •ПРАКТИЧЕСКАЯ ЧАСТЬ.
- •Кластерный анализ
- •Применение нейронных сетей для анализа временных рядов
- •Когнитивные системы связи
| set_variable(self, new_value)
| |
Set self.variable to a new value |
| |
|
|
| Data descriptors defined here:
|
| |
|
dict |
|
|
||
| |
dictionary for instance variables (if defined) |
|||||
| |
|
|
|
|
|
|
| |
|
weakref |
||||
|
|
|
|
|
||
| |
list of weak references to the object (if defined) |
FUNCTIONS my_function()
Example function
DATA my_variable = 0
FILE /content/mymodule.py
mymodule.my_variable 0 mymodule.my_function() 0
my_class = mymodule.MyClass() my_class.set_variable(10) my_class.get_variable()
10
Если мы вносим изменения в код в mymodule.py, нам нужно перезагрузить его с помощью reload:
# reload(mymodule) # только в python 2
Исключения
В Python ошибки обрабатываются специальной языковой конструкцией под названием «Исключения (Exeptions)». При возникновении ошибок могут быть вызваны исключения, которые прерывают нормальный ход программы и возвращаются к другому месту в коде, где определен ближайший оператор try-except.
Чтобы сгенерировать исключение, мы можем использовать оператор raise, который принимает аргумент, который должен быть экземпляром класса BaseException или класса, производного от него.
raise Exception("description of the error")
Exception Traceback (most recent call last) <ipython-input-136-c32f93e4dfa0> in <module>
----> 1 raise Exception("description of the error")
Exception: description of the error
Типичное использование исключений — прерывание функций при возникновении некоторых условий ошибки, например:
22
def my_function(arguments):
if not verify(arguments):
raise Exception("Invalid arguments")
#остальная часть кода находится здесь Чтобы изящно перехватывать ошибки, которые генерируются функциями и методами
класса или самим интерпретатором Python, используйте операторы try и except: try:
#нормальный код выполняется сдесь except:
#код для обработки ошибок выполняется сдесь
#этот код не выполняется, если код
#блока try перехватил ошибку
На пример: try:
print("test")
# строка ниже выдает ошибку: переменная test не определена print(test)
except:
print("Поймал исключение") test
Поймал исключение Чтобы получить информацию об ошибке, мы можем получить доступ к экземпляру
класса Exception, который описывает исключение, используя, например: except Exception as e:
try: print("test")
# строка ниже выдает ошибку: переменная test не определена print(test)
except Exception as e:
print("Поймал исключение:" + str(e)) test
Поймал исключение:name 'test' is not defined
Дополнительная литература
•http://www.python.org - Официальная веб-страница языка программирования
Python.
•http://www.python.org/dev/peps/pep-0008 - Руководство по стилю для программирования на Python. Настоятельно рекомендуется.
•http://www.greenteapress.com/thinkpython/ - Бесплатная книга по программированию на Python.
•Дополнительные лекции: http://github.com/jrjohansson/scientific-python-lectures.
Часть 2. Введение в pandas Цели обучения:
•Получить представление о структурах данных DataFrame и Series библиотеки pandas.
•Доступ и управление данными в DataFrame и Series
•Импорт CSV данных в pandas DataFrame
•Переиндексировать DataFrame в перемешивать данные
pandas iпредставляет собой API анализа данных, ориентированный на таблицы. Это отличный инструмент для обработки и анализа входных данных, и многие фреймворки
23
машинного обучения поддерживают структуры данных pandas в качестве входных данных. Более полную информацию по библиотеке можно найти на сайте pandas docs содержит обширную документацию и множество руководств.
Основные понятия
Следующая строка импортирует pandas API и выводит версию API: from future import print_function
import pandas as pd pd. version {"type":"string"}
Первичные структуры данных в pandas реализованы в виде двух классов:
•DataFrame, которую вы можете представить как реляционную таблицу данных со строками и именованными столбцами.
•Series, который представляет собой один столбец. DataFrame содержит один или несколько Series и имя для каждого Series.
DataFrame является широко используемой абстракцией для манипулирования данными. Сущетсвуют различные реализации в Spark and R.
Один из способов создать Series состоит в том, чтобы построить Series объект. Напрмиер:
pd.Series(['San Francisco', 'San Jose', 'Sacramento']) 0 San Francisco
1 San Jose
2 Sacramento dtype: object
Объекты DataFrame могут быть созданы путем передачи dict, отображающего имена столбцов string в их соответствующие Series. Если Series не совпадают по длине, пропущенные значения заполняются специальными NA/NaN значениями. Пример: city_names = pd.Series(['San Francisco', 'San Jose', 'Sacramento'])
population = pd.Series([852469, 1015785, 485199])
pd.DataFrame({ 'City name': city_names, 'Population': population })
|
City name Population |
|
0 |
San Francisco |
852469 |
1 San Jose 1015785 |
||
2 |
Sacramento |
485199 |
Но в большинстве случаев выполняется загрузка всего файла в DataFrame. В следующем примере загружается файл с данными о жилье в Калифорнии. Запустите следующую ячейку, чтобы загрузить данные и выполнить процедуру подсчета статистика фрейма (.describe()):
california_housing_dataframe = pd.read_csv("https://download.mlcc.google.com/mledudatasets/california_housing_train.csv", sep=",")
california_housing_dataframe.describe() |
|
||||
|
longitude |
latitude housing_median_age |
total_rooms \ |
||
count 17000.000000 17000.000000 |
17000.000000 17000.000000 |
||||
mean |
-119.562108 |
35.625225 |
28.589353 2643.664412 |
||
std |
2.005166 |
|
2.137340 |
12.586937 2179.947071 |
|
min |
-124.350000 |
32.540000 |
1.000000 |
2.000000 |
|
25% |
-121.790000 |
33.930000 |
18.000000 1462.000000 |
||
50% |
-118.490000 |
34.250000 |
29.000000 2127.000000 |
||
75% |
-118.000000 |
37.720000 |
37.000000 3151.250000 |
||
max |
-114.310000 |
41.950000 |
52.000000 37937.000000 |
24
total_bedrooms |
population |
households median_income \ |
||||
count |
17000.000000 17000.000000 17000.000000 17000.000000 |
|||||
mean |
539.410824 |
1429.573941 |
501.221941 |
3.883578 |
||
std |
421.499452 1147.852959 |
|
384.520841 |
|
1.908157 |
|
min |
1.000000 |
3.000000 |
1.000000 |
0.499900 |
||
25% |
297.000000 |
790.000000 |
282.000000 |
|
2.566375 |
|
50% |
434.000000 |
1167.000000 |
409.000000 |
3.544600 |
||
75% |
648.250000 |
1721.000000 |
605.250000 |
4.767000 |
max |
6445.000000 35682.000000 6082.000000 |
15.000100 |
|
|
||||
|
median_house_value |
|
|
|
|
|
||
count |
17000.000000 |
|
|
|
|
|
||
mean |
207300.912353 |
|
|
|
|
|
||
std |
115983.764387 |
|
|
|
|
|
||
min |
14999.000000 |
|
|
|
|
|
||
25% |
119400.000000 |
|
|
|
|
|
||
50% |
180400.000000 |
|
|
|
|
|
||
75% |
265000.000000 |
|
|
|
|
|
||
max |
500001.000000 |
|
|
|
|
|
||
|
В приведенном выше примере |
используется DataFrame.describe, чтобы показать |
||||||
интересную статистику о DataFrame. Еще одна полезная функция — DataFrame.head, |
||||||||
которая отображает несколько первых записей DataFrame: |
|
|
||||||
california_housing_dataframe.head() |
|
|
|
|
||||
|
longitude |
latitude housing_median_age total_rooms total_bedrooms \ |
|
|||||
0 |
-114.31 |
34.19 |
15.0 |
5612.0 |
1283.0 |
|
|
|
1 |
-114.47 |
34.40 |
19.0 |
7650.0 |
1901.0 |
|
|
|
2 |
-114.56 |
33.69 |
17.0 |
720.0 |
174.0 |
|
|
|
3 |
-114.57 |
33.64 |
14.0 |
1501.0 |
337.0 |
|
|
|
4 |
-114.57 |
33.57 |
20.0 |
1454.0 |
326.0 |
|
|
|
|
population households median_income median_house_value |
|
|
|||||
0 |
1015.0 |
472.0 |
1.4936 |
66900.0 |
|
|
|
|
1 |
1129.0 |
463.0 |
1.8200 |
80100.0 |
|
|
|
|
2 |
|
333.0 |
117.0 |
1.6509 |
85700.0 |
|
|
|
3 |
|
515.0 |
226.0 |
3.1917 |
73400.0 |
|
|
|
4 |
|
624.0 |
262.0 |
1.9250 |
65500.0 |
|
|
|
|
Еще одна мощная функция pandas — построение графиков. Например, DataFrame.hist |
|||||||
позволяет быстро изучить распределение значений в столбце: |
|
|
||||||
|
california_housing_dataframe.hist('housing_median_age') |
|
|
|||||
|
array([[<matplotlib.axes._subplots.AxesSubplot |
object |
at |
0x7f325aac7110>]], |
||||
|
dtype=object) |
|
|
|
|
|
25