Хелпикс

Главная

Контакты

Случайная статья





Дисциплина «Искусственный интеллект»



Дисциплина «Искусственный интеллект»

Рабочая тетрадь № 1

Цель изучения дисциплины – формирование компетенций в области современных информационных технологий с применением инструментария искусственного интеллекта и машинного обучения. Для реализации методов и алгоритмов будем использовать язык программирования Python.

 

Python является популярным высокоуровневым языком программирования, который применяется для решения прикладных задач принятия решений с использованием технологий искусственного интеллекта и машинного обучения. Для реализации методов и алгоритмов, изучаемых в данной дисциплине, рекомендуется использовать среду разработок Anaconda, содержащую библиотеки языка программирования Python с открытым исходным кодом. https: //www. anaconda. com/products/individual Для выполнения заданий из рабочих тетрадей рекомендуется использовать JupyterNotebook.
Название рабочих тетрадей должно содержать фамилию и имя студента, номер рабочей тетради. Например, Для создания файла необходимо выбрать вкладку New/Notebook: Далее File/Renameи указать название файла.

 

1. 1. Теоретический материал – Типы данных

Типы данных

Все типы данных в Python относятся к одной из 2-х категорий:

изменяемые (mutable) и неизменяемые (immutable).

Неизменяемые объекты:

- числовые данные (int, float),

- bool,

- None,

- символьные строки (class 'str'),

- кортежи (tuple).

Изменяемые объекты:

- списки (list),

- множества (set),

- словари (dict).

1. 2. Пример

Задача:

 

Выведите на печать и определите тип переменной.

Решение:

 

Ответ:

 

1. 3. Задание

Задача:

 

Выведите на печать и определите тип переменной.  

Решение:

 

print (x, '|', type(x), '\n', A, '|', type(A), '\n',   B, '|', type(B), '\n', df, '|', type(df), '\n',   C, '|', type(C), D, '|', type(D))  

Ответ:

 

True | < class 'bool'>  {8, 1, 3, 7} | < class 'set'>  {2, 'apple', 4, 5, 10} | < class 'set'>  ('АнтоноваАнтонина', 34, 'ж') | < class 'tuple'>  set() | < class 'set'> [1, 'title', 2, 'content'] | < class 'list'>  
     

 

2. 1. Теоретический материал – Условный оператор

 

If –Условный оператор

В коде часто приходится проверять выполнимость или невыполнимость каких-то условий. Синтаксис:

if< условие1 (булевское выражение)> :

< код, который выполнится, если условие верно>

elif< условие2 (булевское выражение)>:

< код, который выполнится, если условие1 было неверно, а условие2верно>

else:

< код, который выполнится, если условие1 и условие2 были неверны>

Обратите внимание, что код, который должен выполняться внутри каждого условия, записывается с отступом в 4 пробела от уровня if, elif и else: в питоне области видимости переменных обозначаются отступами.

То есть, отступы позволяют понять, где начинается код, который должен выполняться при выполнении условия в if, и где заканчивается.

 

2. 2. Пример

 

Задача:

 
  Вывести на экран является ли переменная х положительной, отрицательной или равна нулю.  

Решение:

 
   

Ответ:

 
  x положительный  

2. 3. Задание

 

Задача:

 

Напишите код. Задается х, напечатать какому из интервалов принадлежит: (-infinity, -5), [-5, 5] или от (5, +infinity)

Решение:

 

x=125

if x< -5:

print(" x принадлежит: (-infinity, -5)" )

elif x> 5:

print(" x принадлежит: (5, +infinity)" )

else:

print (" x принадлежит [-5, 5] " )

Ответ:

  x принадлежит: (5, +infinity)

 

3. 1. Теоретический материал – Циклы, массивы, срезы

 

Циклы - for и while

Цикл while проверяет истинность условия, и если условие истинно, то выполняет инструкции цикла.

Синтаксис:

while условие:

 инструкции

Инструкции, которые относятся к циклу while, располагаются на последующих строках и должны иметь отступ от начала ключевого слова while.

Цикл for проходит по набору значений, помещает каждое значение в переменную с которой в цикле можно производить различные действия.

Синтаксис:

for переменная in набор_значений:

инструкции

После ключевого слова for идет название переменной, в которую будут помещаться значения. После оператора in указывается набор значений и двоеточие. Инструкции, которые относятся к циклу, располагаются на последующих строках и должны иметь отступ.

При создании цикла удобно пользоваться функцией range(a, b), которая создает последовательность чисел от a до b-1.

 

3. 2. 1. Пример

 

Задача:

 

 

Вывести все числа от 1 до 10 с шагом 3.  

Решение:

 

 

 

Ответ:

 

 

 

3. 2. 2. Пример

 

Задача:

 

 

Задан список. Напечатать все элементы списка.  

Решение:

 

 

 

Ответ:

 

 

 

3. 2. 3. Пример

 

Задача:

 

 

Создать список от 1 до 99 с шагом 7.  

Решение:

 

 

 

Ответ:

 

 

 

3. 2. 4. Пример

 

Задача:

 

 

Вывести на экран числа от 5 до 105 с шагом 25, используя функцию range()  

Решение:

 

 

 

Ответ:

 

 

 

3. 2. 5. Пример

 

Задача:

 

 

Срез. Необходимо получить каждый k-й элемент массива a, начиная с элемента с индексом i (включительно) и заканчивая элементом с индексом j (не включительно), c шагом 2. Переставить все элементы в обратном порядке.  

Решение:

 

 

 

Ответ:

 

 

 

3. 3. 1 Задание

 

Задача:

 
 

Выведите числа из примера на while (3. 2. 1) в обратном порядке.

 

Решение:

 
 

x=10

while x> =1:

print(x)

x-=3

 

 

Ответ:

 
  10741

 

 

3. 3. 2 Задание

 

Задача:

 
 

При решении задач машинного обучения часто в качестве объектов исследования выступает человек. Создайте список значимых характеристик (признаков), идентифицирующих человека. Выведите список на экран.

 

Решение:

 
 

chelovek = [ 'возраст', 'инициалы', 'пол', 'год рождения']

for chelovek in chelovek:

print(chelovek)

 

Ответ:

 
  возрастинициалыполгод рождения  

3. 3. 3 Задание

 

Задача:

 
 

Создать список чисел от 2 до 15с шагом 1.

 

Решение:

 
 

x=2

while x< =15:

print(x)

x+=1

 

Ответ:

 
  23456789101112131415  

3. 3. 4 Задание

 

Задача:

 
 

Выведите числа из примера на forcфункцией range() (3. 2. 4) в обратном порядке.

 

Решение:

 
 

for i in range (105, 4, -25):

print(i)

 

Ответ:

 
  1058055305

 

 

3. 3. 5 Задание

 

Задача:

 

Срез. Напишите код, который все элементы массива x с четными индексами переставит в обратном порядке. Т. е. если x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], то код должен сформировать [8, 1, 6, 3, 4, 5, 2, 7, 0, 9].

Решение:

 

x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

x[0:: 2] = reversed(x[0:: 2])

print(x)

Ответ:

  [8, 1, 6, 3, 4, 5, 2, 7, 0, 9]
       

 


 

4. 1. Теоретический материал - Библиотеки

Машинное обучение опирается на фундаментальные понятия и законы математики и информатики. Библиотека математических функций (math) применяется при решении большинства прикладных задач анализа данных. Также, и некоторые другие библиотеки Python содержат математические функции (например, NumPy). Важную роль играет библиотека matplotlib, которая позволяет производить визуализацию расчетов в удобной для восприятия человеком форме: графики, диаграммы, гистограммы.

Подключениебиблиотек – синтаксис:

importmathas m

import numpy as np

import matplotlib. pyplot as plt

etc…

Библиотеки в pythonсодержат не только функции, позволяющие решать различные задачи, но и некоторые популярные константы, например число Эйлера.

4. 2. 1 Пример

Задача:

 

Рассчитать синус от е радиан и вывести результат на экран

Решение:

 

Ответ:

 

4. 2. 2 Пример

Задача:

 

Для функции на интервале [0; 10] с шагом 0, 05 построить график функции, закрасить площадь под ним и вычислить значение этой площади. Для вычисления площади воспользуйтесь функциейtrapz(), вычисляющей интеграл по правилу трапеции. Для ее корректной работы необходимо подключить следующие библиотеки: Fromscipy. integrateimportsimps Fromnumpyimporttrapz

Решение:

 

Ответ:

 

4. 2. 3 Пример

Задача:

 

Дано некоторое распределение оценок в группе за экзамен. Нарисовать круговую и точечную диаграммы распределения.

Решение:

 

Ответ:

 

4. 3. 1 Задание

Задача:

 

Задайте массив случайных значений из интервала (0; 1).

Рассчитайте средние и медианные значения для массива, сравните результаты, какие выводы можно сделать о значениях?

Постройте точечную диаграмму рассеяния полученного ряда.

Решение:

 

%matplotlib inline

from matplotlib import pyplot as plt

import numpy as np

from scipy. integrate import simps

from numpy import trapz

import random

median_array = []

n, m, sum = 1, 3, 0

 

x = np. abs([random. random() for _ in range(m) for _ in range(n)])

print (" x", x)

 

median_array = sorted(x)

print(" Отсортированный массив", median_array)

 

if m % 2 == 0:

mediana = (median_array[m//2-1] + median_array[m//2])/2

else:

mediana = median_array[m//2]

print(" Медиана", mediana)

 

for i in range(m):

sum += x[i]

print (" Среднее значение", sum/m)

plt. grid()

plt. scatter(median_array, median_array)

Ответ:

 

4. 3. 2 Задание

Задача:

 

Дана функция  Создать массив из 10 значений функции ( , например, изменяется от 1 до 10). Выделить срез первой половины массива и построить графики для основного массива, используя plt. plot(), для среза – точечный (plt. scatter()).

Решение:

 

%matplotlib inline

from matplotlib import pyplot as plt

import numpy as np

from scipy. integrate import simps

from numpy import trapz

import random

n, m = 1, 10

 

x = np. abs( [random. randint(1, 10) for _ in range(m) for _ in range(n)])

print (" x", x)

y = np. abs(((np. sqrt(1+np. exp(np. sqrt(x))+np. cos(x**2)))/(np. fabs(1-(np. sin(x))**3)))+np. log(np. fabs(2*x)))

print (" y", y)

 

x2 = x[0: 5: 1]

print (" x2", x2)

y2 = np. abs(((np. sqrt(1+np. exp(np. sqrt(x2))+np. cos(x2**2)))/(np. fabs(1-(np. sin(x2))**3)))+np. log(np. fabs(2*x2)))

print (" y2", y2)

 

plt. grid()

plt. plot(x, y)

#plt. fill_between(x, y)

 

plt. show()

plt. grid()

plt. scatter (x2, y2)

Ответ:

 

4. 3. 3 Задание

Задача:

 

Дана функция  Построить график на интервале (0, 10) с шагом 1с заливкой площади и найти эту площадь под ним. Для вычисления площади воспользуйтесь функцией trapz(), вычисляющей интеграл по правилу трапеции.

Для ее корректной работы необходимо подключить следующие библиотеки:

from scipy. integrate import simps

from numpy import trapz

Решение:

 

%matplotlib inline

import numpy as np

import matplotlib. pyplot as plt

from scipy. integrate import simps

from numpy import trapz

x = np. arange(1, 10, 1)

y = np. abs(np. fabs(np. cos(x*np. exp(np. cos(x)+np. log(x+1)))))

plt. grid()

plt. plot(x, y, c = " r" )

plt. fill_between(x, y)

 

area = trapz(y)

print(area)

Ответ:

 

4. 3. 4 Задание

Задача:

 

Откройте статистические данные по стоимости акций Apple, Microsoft, Googleза 12 месяцев 2021 г. Постройте 3 графика на плоскости и оцените их динамику. Подумайте, как можно улучшить визуализацию результатов.

Для начальных данных допустимо использовать следующий ресурс: https: //finance. yahoo. com

Решение:

 

%matplotlib inline

from matplotlib import pyplot as plt

import numpy as np

APPLE = [131. 99, 121. 88, 122. 18, 131. 5, 124. 67, 137. 02, 145. 84, 151. 92, 141. 71, 149. 87, 166. 44, 177. 51]

Microsoft = [231. 79, 232. 42, 237. 55, 252. 12, 250, 270. 98, 285, 302. 14, 282. 26, 331. 83, 333. 49, 336. 27]

Google =[91. 35, 101. 1, 103. 2, 117. 88, 117. 85, 122. 1, 134. 7, 144. 83, 133. 78, 148, 142. 76, 145. 05] 

mes = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

plt. plot(mes, Microsoft, c = " r" )

plt. plot(mes, APPLE, c = " g" )

plt. plot(mes, Google, c = " b" )

plt. grid()

Ответ:

 

4. 3. 5 Задание

Задача:

 

Создайте простейший калькулятор, включающий основные действия для двух переменных , а также вычисление следующих функций: .

Решение:

 

import numpy as np

for i in range (10000000):

print('Будете вводить опереацию? 1/0')

otv = float(input('otv = '))

if otv == 1:

   s = input(" Знак (+, -, *, /, stepen, sin, cos, expon): " )

   if s not in ('+', '-', '*', '/', 'stepen', 'sin', 'cos', 'expon'):

       continue

   x = float(input('x = '))

   y = float(input('y = '))

   if s == '+':

print(x + y)

elif s == '-':

print(x - y)

elif s == '*':

print(x * y)

elif s == '/':

       if y! = 0:

print(x / y)

       else:

print(" Делениенаноль! " )

elif s == 'expon':

       print(np. exp(x+y))

elif s == 'stepen':

       print(x**y)

elif s == 'sin':

       print(np. sin(x+y))

elif s == 'cos':

       print(np. cos(x+y))

if otv == 0:

  break

if otv not in (0, 1):

      continue

Ответ:

 

 

 

     

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.