Это старая версия Информатика/Архив/2017/11Б1/matplotlib за 28.12.2016 18:34:42.

matplotlib

Основным материалом по matplotlib будет следующий ресурс: http://nbviewer.jupyter.org/gi[..]_python/tree/master/


Задача 1

Глобальная задача: увидеть, что в питоне для умножения больших чисел используется алгоритм Карацубы, а также получить практически его асимптотику.
Должен получиться график в духе такого:


py vs gmp 2


В данной задаче нужно:

  1. Научиться генерить случайные целые числа длиной k бит;
  2. Научиться измерять время нескольких операций, используя таймер time.process_time();
  3. Отобрать набор битовых длин для изучения времени: геометрическую прогрессию с началом в 30 и окончанием в 300000 бит длиной 150-300 челов;
  4. Вычислить среднее время умножения нескольких пар чисел;
  5. Построить график времени в log-log шкале (пусть битовые длины k[i], а времёна t[i], нужно построить зависимость log(t[i]) от log(k[i]);
  6. Найти такую прямую l(x) = ax+b, что сумма квадратов разностей (log(t[i]) – l(log(k[i]))) для битовых длин k[i] > 2000 минимальна;
  7. Построить график этой прямой в log-log шкале, а также вычислить параметры в обычной шкале (log(y) = a log(x) + b => y = e^(b)*x^(a))
  8. Подписать эту прямую на графике

Задача 2

Ирисы Фишера


В данной задаче нужно:

  1. Прочитать про датасет по ссылке выше в википедии;
  2. Научиться загружать эти данные и изучить их;
  3. Построить графики как в примере ниже;
  4. Научиться решать следующую задачу: даны два множества точек на плоскости таких, что они разделимы прямой, то есть существует прямая такая, что все точки одного множества лежать по одну сторону от прямой, а точки второго
    по другую. Необходимо найти хотя бы одну такую прямую;
  5. Улучшение 4: нужно найти такую прямую, что минимальное расстояние до любой из точек максимально.


from sklearn import datasets
# После этой команды будет загружен словарь (выполнить один раз)
iris = datasets.load_iris()

# Сохраняем данные на компьютер (выполнить один раз)
# data, target, feature_names, target_names = iris['data'], iris['target'], iris['feature_names'], iris['target_names']
# with open(r'M:\np_basic\iris.dump', 'wb') as f:
# pickle.dump((data, target, feature_names, target_names), f)

# Загрузка данных из сохранённого дампа
with open(r'M:\np_basic\iris.dump', 'rb') as f:

(data, target, feature_names, target_names) = pickle.load(f)


Задача 3

Титаник


Данные:
file:/titanic_train.csv


import numpy as np
import pandas as pd
titanic_df = pd.read_csv("titanic_train.csv")
# Вектор ответов
y_train = titanic_df['Survived'].as_matrix()
# Удаляем ненужные столбцы
titanic_df.drop(['PassengerId','Name','Ticket','Survived'], axis=1, inplace=True)
# Данные
columns = titanic_df.columns
x_train = titanic_df.as_matrix()


Описание столбцов:


  • PassengerId — идентификатор пассажира
  • Survival — поле в котором указано спасся человек (1) или нет (0)
  • Pclass — содержит социально-экономический статус:
    • высокий
    • средний
    • низкий
  • Name — имя пассажира
  • Sex — пол пассажира
  • Age — возраст
  • SibSp — содержит информацию о количестве родственников 2-го порядка (муж, жена, братья, сетры)
  • Parch — содержит информацию о количестве родственников на борту 1-го порядка (мать, отец, дети)
  • Ticket — номер билета
  • Fare — цена билета
  • Cabin — каюта
  • Embarked — порт посадки
    • C — Cherbourg
    • Q — Queenstown
    • S — Southampton




Для kaggle:
file:/titanic_test.csv


test_df = pd.read_csv("train.csv")
# Сохраняем ID пассажиров
PassengerIds = test_df['PassengerId'].as_matrix()
# Удаляем ненужные столбцы
test_df.drop(['PassengerId','Name','Ticket','Survived'], axis=1, inplace=True)
# Делаем предсказание
y_pred = np.zeros_like(PassengerIds)
# Генерим ответ
submission = pd.DataFrame({"PassengerId": PassengerIds, "Survived": y_pred})
submission.to_csv('titanic_submission.csv', index=False)