Uploaded by Abdullah Galaa

Galaa10

advertisement
Ministry of Higher Education
Higher Technology Institute
10th of Ramadan City
6th of October Branch
Electronics and Communications Department
Company: National Telecommunication Institute
Artificial Intelligence
Under Supervision: Dr/ Shahira Muhammad
Student Name: Abdallah Galaa
Student ID: 32021137
May / August 2023
ACKNOWLEDGMENT
Many thanks for the instructors and the supervisors for overall efforts.
Thanks for Engineers in NTI for their shared experience and overall
efforts.
Special thanks to Eng. Muhammad Al-Zaqani for his effort, the time he
shared to pass on the experience and information.
Very special thanks for Shahira Muhammad for guidance, useful
instruction, advices, knowledge, and efforts to gain knowledge as well
as experience
I
ABSTRACT
At first, thanks to Allah the most merciful the most gracious, for this
moment has come and this work has been accomplished. Thanks to the
Higher Technological Institute of 10th Ramadan for preparing me to be
A successful Engineer and lifting me up to achieve this training in an
environment that's full of encouragement and motivation. My training
that year was in National Telecommunication Institute
The National Telecommunication Institute (NTI), being a reputed scientific,
educational and research institution founded in 1983 with the mandate of
becoming the center of excellence for telecommunication education,
training, research and development and consultancy services, is devoting
all of its resources to the build up the pillars of development and is well
prepared and well equipped more than ever to play a major role in the
fast paced development of the ICT industry.
This report was written in order to write some Notes on the summer
training for National Telecommunication Institute
II
Table of Contents
ACKNOWLEDGEMENT...........................................................................I
ABSTRACT.................................................................................II
TABLE OF CONTENTS.....................................................................III
LIST OF FIGURES.....................................................................IV
LIST OF ABBREVIATION.....................................................................VI
CHAPTER ONE: AI Overview
1.1 AI in the Eyes of the Society……………………………1
1.2. What is AI?.............................................................................1
1.3 Why Python is best for Artificial Intelligence? .......................2
1.4 Relation of AI, Machine Learning and Deep Learning..........3
1.5 Types of AI: .............................................................................4
CHAPTER TWO: PYTHON
2.1. 2.1 What is Python …………………………………………………………5
2.2 Python Literals……………………………………………….6
2.3 Arithmetic operators and the hierarchy of priorities ………………………7
2.4 Variables……………………………………….7
2.5 Comments …………………………………………….8
2.6 The input() function and strings operators …………………………………..8
2.7 Comparison operator and conditional execution……………………..….9
2.8 loops ………………………………………..11
2.9 logical operators ………………………………………………………..13
III
3.1.1. Machine Learning………………………………………….12
3.1.2. Deep Learning……………………………………………...13
2.10 lists...........................................................................13
2.11functions……………......................................................................15
CHAPTER three: Machine Learning......................................................20
3.1 Machine Learning Algorithms.............................................................20
3.2 Machine Learning Types…………….................................................22
3.3 Basic Machine Learning Concept — Dataset………………………23
3.4 Machine Learning Algorithm Overview...................................25
CHAPTER Four : Deep learning
4.1 Traditional Machine Learning and Deep Learning..................30
4.2Deep learning……………………………………………...........31
4.3 loss Function........................................................................32
4.4 Activation Function...............................................................32
4.5 loss Function........................................................................32
4.6 optimizer……………………………………………………………………………34
4.7 convolutional Nerural Network............................................34
CHAPTER Five: AI project
5.1 Dataset…………………………………………………………38
5.2 Importing the required libraries ……………………………………………….38
5.3 Importing data into TensorFlow dataset object ………………………39
5.4 Creating the CNN model ……………………………………….39
5.5 Compiling the model………………………………………………………40
4
5.6 Testing the prediction on sample of image
from test dataset…………41
LIST OF FIGURES
Fig. 1.1 dentification of concepts related to AI and machine learning
AI Development Report 2020……………………1
Fig. 1.2 AIrelations……………………………….……………………………………..1
Fig. 1.3 Relation of AI, Machine Learning and Deep Learning…………3
Fig 3.1 Traditional Rule-Based Algorithms ........................................ 20
Fig 3.2 Machine Learning Algorithms ............................................... 21
Fig 3.3 Application Scenarios of Machine Learning .......................... 21
Fig 3.4 Supervised learning ............................................................... 22
Fig 3.6 Semi-supervised learning ...................................................... 23
Fig 3.7 Machine Learning Process:.................................................... 23
Fig 3.8 Data Processing ..................................................................... 24
Fig 3.9 CrowdFlower Data Science Report 2016 ............................... 24
Fig 3.10 Model Validity .................................................................... 25
Fig. 3.11 Machine Learning Algorithms ............................................ 25
Fig. 3.12 Logistic Regression Graph................................................... 26
Fig. 3.13 Decision Tree Structure ...................................................... 26
Fig. 3.14 SVM Algorithm ................................................................... 27
Fig 3.15 KNN Algorithm .................................................................... 27
Fig. 3.16 Naive Bayes Graph ............................................................. 27
Fig. 3.18 Multi-dimensional linear regression................................... 28
Fig. 3.17 Unary linear regression ...................................................... 28
Fig. 3.19 Random Forest Algorithm .................................................. 28
Fig. 3.20 K-means Algorithm ............................................................. 29
IV
Fig. 4.1 neural network ..................................................................... 31
Fig. 4.2 Feedforward Neural Network ............................................... 31
Fig. 4.3 Sigmoid function .................................................................. 32
Fig. 4.4 ReLU function ....................................................................... 33
Fig. 4.5 Architecture of Convolutional Neural Network .................... 35
Fig. 4.6 Description of convolution calculation ................................. 35
Fig. 4.7 Demonstration of convolution calculation ........................... 35
Fig. 4.8 Convolutional Layer .............................................................. 36
Fig. 4.9 Pooling Layer ........................................................................ 36
Fig. 4.10 Fully connected layer ......................................................... 37
Fig. 5.1 connect drive........................................................................ 38
Fig. 5.2 the required libraries ............................................................ 38
Fig. 5.3 Importing data into TensorFlow dataset object ................... 39
Fig. 5.4 the CNN model ..................................................................... 39
Fig. 5.5 the model summary ............................................................. 40
Fig. 5.6 Plotting the accuracy and loss curves ................................... 41
Fig. 5.8 Testing the prediction on sample of image from test dataset
.......................................................................................................... 42
V
LIST OF ABBREVIATIONS
AI ……………………………….Artificial Intelligence
NumPy …………………………….. Numerical Python
Pandas ………“Python Data Analysis” or “Panel Data”
ML………………………………….Machine Learning
DL…………………………………….. Deep Learning
CNN………………… Convolutional Neural Network
Int ……………………………………………....Integers
str ………………………………………………..Strings
NTI……………..National Telecommunication Institute
VI
Chapter One
AI Overview
1.1 AI in the Eyes of the Society
• People get to know AI through news, movies, and actual applications in daily life.
What is AI in the eyes of the public?
1.2 What Is AI?
• Artificial Intelligence (AI) is a new technical science that studies and develops
theories, methods, techniques, and application systems for simulating and
extending human intelligence. In 1956, the concept of AI was first proposed by
John McCarthy, who defined the subject as "science and engineering of making
intelligent machines, especially intelligent computer programs". AI is concerned
with making machines work in an intelligent way, similar to the way that the
human mind works. At present, AI has become an interdisciplinary course that
involves various fields.
Fig. 1.1 dentification of concepts related to AI and
Fig. 1.2 AI relations
machine learning AI Development Report 2020
1
1.3 Why Python is best for Artificial Intelligence?
Python is a popular programming language among data scientists and
machine learning engineers because of its simplicity, flexibility, and ease of
use. Here are some reasons why Python is considered the best programming
language for artificial intelligence:
1. Large and Active Community: Python has a large and active community of
developers who have created many powerful libraries and frameworks for data
science and machine learning. Libraries such as NumPy, Pandas, Matplotlib, and
Scikit-learn have been widely used in AI development.
2. Easy to Learn: Python is easy to learn, and its syntax is concise and readable. This
makes it easy for beginners to get started with AI development.
3. Versatile and Flexible: Python is a versatile and flexible language that can be used
for a variety of tasks, including data manipulation, data analysis, and machine
learning.
4. Extensive Libraries: Python has a vast collection of libraries and frameworks that
make it easy to perform complex machine learning tasks with just a few lines of
code. This saves time and effort and makes the development process much more
efficient.
5. Integration with Other Languages: Python can be easily integrated with other
programming languages such as C++, Java, and R. This makes it a great choice for
developing AI applications that require the use of multiple languages.
Overall, Python's simplicity, flexibility, and extensive libraries make it an
ideal language for AI development.
2
1.4 Relationship of AI, Machine Learning, and Deep Learning:
Fig. 1.3 Relation of AI, Machine Learning and Deep Learning
• AI: A new technical science that focuses on the research and development of
theories, methods, techniques, and application systems for simulating and
extending human intelligence.
•
Machine learning: A core research field of AI. It focuses on the study of how
computers can obtain new knowledge or skills by simulating or performing
learning behavior of human beings and reorganize existing knowledge
architecture to improve its performance. It is one of the core research fields of AI.
• Deep learning: A new field of machine learning. The concept of deep learning
originates from the research on artificial neural networks. The multi-layer
perceptron (MLP) is a type a deep learning architecture. Deep learning aims to
simulate the human brain to interpret data such as images, sounds, and texts.
3
1.5 Types of AI:
• Strong AI
The strong AI view holds that it is possible to create intelligent machines
that can really reason and solve problems. Such machines are conscious
and self-aware, can independently think about problems and work out
optimal solutions to problems, have their own system of values and
world views, and have all the same instincts as living things, such as
survival and security needs. It can be regarded as a new civilization in a
certain sense.
• Weak AI
The weak AI view holds that intelligent machines cannot really reason
and solve problems. These machines only look intelligent, but do not
have real intelligence or self-awareness.
4
Chapter two
Python
2.1 What is Python?
Python is a popular programming language. It was created by Guido van Rossum and
released in 1991.
It is used for:
•
•
•
•
web development (server-side),
software development,
mathematics,
system scripting.
What can Python do?
•
•
•
•
•
Python can be used
Python can be used
Python can connect
Python can be used
Python can be used
development.
on a server to create web applications.
alongside software to create workflows.
to database systems. It can also read and modify files.
to handle big data and perform complex mathematics.
for rapid prototyping, or for production-ready software
Why Python?
•
•
•
•
•
Python works on different platforms (Windows, Mac, Linux, Raspberry Pi, etc).
Python has a simple syntax like the English language.
Python has syntax that allows developers to write programs with fewer lines
than some other programming languages.
Python runs on an interpreter system, meaning that code can be executed as
soon as it is written. This means that prototyping can be very quick.
Python can be treated in a procedural way, an object-oriented way or a
functional way.
Good to know
•
•
The most recent major version of Python is Python 3, which we shall be using in
this tutorial. However, Python 2, although not being updated with anything
other than security updates, is still quite popular.
In this tutorial Python will be written in a text editor. It is possible to write
Python in an Integrated Development Environment, such as Thonny, Pycharm,
Netbeans or Eclipse which are particularly useful when managing larger
collections of Python files.
5
Python Syntax compared to other programming languages.
•
•
•
Python was designed for readability and has some similarities to the English
language with influence from mathematics.
Python uses new lines to complete a command, as opposed to other
programming languages which often use semicolons or parentheses.
Python relies on indentation, using whitespace, to define scope, such as the
scope of loops, functions and classes. Other programming languages often use
curly brackets for this purpose
2.2 Python Literals
1. Literals are notations for representing some fixed values in code. Python has various types of
literals - for example, a literal can be a number (numeric literals, e.g., 123), or a string (string literals,
e.g., "I am a literal.").
2. The binary system is a system of numbers that employs 2 as the base. Therefore, a binary number
is made up of 0s and 1s only, e.g., 1010 is 10 in decimal.
Octal and hexadecimal numeration systems, similarly, employ 8 and 16 as their bases respectively. The
hexadecimal system uses the decimal numbers and six extra letters.
3. Integers (or simply ints) are one of the numerical types supported by Python. They are numbers
written without a fractional component, e.g., 256, or -1 (negative integers)
4. Floating-point numbers (or simply floats) are another one of the numerical types supported by
Python. They are numbers that contain (or are able to contain) a fractional component, e.g., 1.27.
5. To encode an apostrophe or a quote inside a string you can either use the escape character,
e.g., 'I\'m happy.', or open and close the string using an opposite set of symbols to the ones you
wish to encode, e.g., "I'm happy." to encode an apostrophe, and 'He said "Python", not
"typhoon"' to encode a (double) quote.
6. Boolean values are the two constant objects True and False used to represent truth values (in
numeric contexts 1 is True, while 0 is False.
EXTRA
There is one more, special literal that is used in Python: the None literal. This literal is a socalled NoneType object, and it is used to represent the absence of a value. We'll tell you more about
it soon.
6
2.3 Arithmetic operators and the hierarchy of priorities
1. An expression is a combination of values (or variables, operators, calls to functions ‒ you will learn
about them soon) which evaluates to a certain value, e.g., 1 + 2 .
2. Operators are special symbols or keywords which are able to operate on the values and perform
(mathematical) operations, e.g., the * operator multiplies two values: x * y .
3. Arithmetic operators in Python: + (addition), - (subtraction), * (multiplication), / (classic division ‒
always returns a float), % (modulus ‒ divides left operand by right operand and returns the remainder
of the operation, e.g., 5 % 2 = 1 ), ** (exponentiation ‒ left operand raised to the power of right
operand, e.g., 2 ** 3 = 2 * 2 * 2 = 8 ), // (floor/integer division ‒ returns a number resulting from
division, but rounded down to the nearest whole number, e.g., 3 // 2.0 = 1.0 )
4. A unary operator is an operator with only one operand, e.g., -1 , or +3 .
5. A binary operator is an operator with two operands, e.g., 4 + 5 , or 12 % 5 .
6. Some operators act before others – the hierarchy of priorities:
•
•
•
•
the ** operator (exponentiation) has the highest priority;
then the unary + and - (note: a unary operator to the right of the exponentiation operator
binds more strongly, for example: 4 ** -1 equals 0.25 )
then * , / , // , and % ;
and, finally, the lowest priority: the binary + and - .
7. Subexpressions in parentheses are always calculated first, e.g., 15 - 1 * (5 * (1 + 2)) = 0 .
8. The exponentiation operator uses right-sided binding, e.g., 2 ** 2 ** 3 = 256 .
2.4 Variables
1. A variable is a named location reserved to store values in the memory. A variable is created or
initialized automatically when you assign a value to it for the first time.
2. Each variable must have a unique name - an identifier. A legal identifier name must be a non-empty
sequence of characters, must begin with the underscore( _ ), or a letter, and it cannot be a Python
keyword. The first character may be followed by underscores, letters, and digits. Identifiers in Python
are case-sensitive.
7
3. Python is a dynamically-typed language, which means you don't need to declare variables in it.
(2.1.4.3) To assign values to variables, you can use a simple assignment operator in the form of the
equal ( = ) sign, i.e., var = 1 .
4. You can also use compound assignment operators (shortcut operators) to modify values assigned
to variables, e.g., var += 1 , or var /= 5 * 2 .
5. You can assign new values to already existing variables using the assignment operator or one of the
compound operators
2.5 Comments
1. Comments can be used to leave additional information in code. They are omitted at runtime. The
information left in source code is addressed to human readers. In Python, a comment is a piece of text
that begins with # . The comment extends to the end of line.
2. If you want to place a comment that spans several lines, you need to place # in front of them all.
Moreover, you can use a comment to mark a piece of code that is not needed at the moment (see the
last line of the snippet below), e.g.:
# This program prints
# an introduction to the screen.
print("Hello!") # Invoking the print() function
# print("I'm Python.")
3. It's important to use comments to make programs easier to understand, and to use readable and
meaningful variable names in code. However, it's equally important not to use variable names that are
confusing, or leave comments that contain wrong or incorrect information!
2.6 The input() function and strings operators
1. The print() function sends data to the console, while the input() function gets data from the
console.
2. The input() function comes with an optional parameter: the prompt string. It allows you to write
a message before the user input, e.g.:
name = input("Enter your name: ")
print("Hello, " + name + ". Nice to meet you!")
3. When the input() function is called, the program's flow is stopped, the prompt symbol keeps
blinking (it prompts the user to take action when the console is switched to input mode) until the user
has entered an input and/or pressed the Enter key.
8
NOTE
You can test the functionality of the input() function in its full scope locally on your machine. For
resource optimization reasons, we have limited the maximum program execution time in Edube to a
few seconds. Go to the Sandbox, copy-paste the above snippet, run the program, and do nothing ‒ just
wait a few seconds to see what happens. Your program should be stopped automatically after a short
moment. Now open IDLE, and run the same program there ‒ can you see the difference?
Tip: the above-mentioned feature of the input() function can be used to prompt the user to end a
program. Look at the code below:
name = input ("Enter your name: ")
print ("Hello, " + name + ". Nice to meet you!")
print ("\nPress Enter to end the program.")
input ()
print("THE END.")
4. The result of the input () function is a string. You can add strings to each other using the
concatenation (+) operator. Check out this code:
num_1 = input ("Enter the first number: ") # Enter 12
num_2 = input ("Enter the second number: ") # Enter 21
print (num_1 + num_2) # the program returns 1221
5. You can also multiply (* ‒ replication) strings, e.g.:
my_input = input ("Enter something: ") # Example input: hello
print (my_input * 3) # Expected output: hellohellohello
2.7 Comparison operator and conditional execution
1.The comparison (otherwise known as relational) operators are used to compare values. The table
below illustrates how the comparison operators work, assuming that x = 0, y = 1, and z = 0:
Operator
Description
==
returns True if operands' values are equal,
and False otherwise
!=
returns True if operands' values are not equal,
and False otherwise
x != y
x != z
True if the left operand's value is greater than the right
x > y
y > z
# False
# True
x < y
y < z
# True
# False
>
Example
operand's value, and False otherwise
<
True if the left operand's value is less than the right operand's
value, and False otherwise
≥
True if the left operand's value is greater than or equal to the
right operand's value, and False otherwise
9
x >= y
x >= z
y >= z
# True
# False
# False
# True
# True
True if the left operand's value is less than or equal to the right
≤
operand's value, and False otherwise
x <= y
x <= z
y <= z
# True
# True
# False
2. When you want to execute some code only if a certain condition is met, you can use a conditional
statement:
a single if statement, e.g.:
x = 10
•
if x == 10: # condition
print("x is equal to 10")
•
# Executed if the condition is True.
a series of if statements, e.g.:
x = 10
if x > 5: # condition one
print("x is greater than 5")
if x < 10: # condition two
print("x is less than 10")
if x == 10: # condition three
print("x is equal to 10")
# Executed if condition one is True.
# Executed if condition two is True.
# Executed if condition three is True.
Each if statement is tested separately.
an if-else statement, e.g.:
x = 10
if x < 10: # Condition
print("x is less than 10")
# Executed if the condition is True.
else:
print("x is greater than or equal to 10")
False.
#output : x is greater than or equal to 10
• a series of if statements followed by an else , e.g.:
x = 10
if x > 5: # True
print("x > 5")
if x > 8: # True
print("x > 8")
if x > 10: # False
print("x > 10")
else:
print("else will be executed")
#output :
10
# Executed if the condition is
x > 5
x > 8
else will be executed
Each if is tested separately. The body of else is executed if the last if is False .
The if-elif-else statement, e.g.:
x = 10
if x == 10: # True
print("x == 10")
if x > 15: # False
print("x > 15")
elif x > 10: # False
print("x > 10")
elif x > 5: # True
print("x > 5")
else:
print("else will not be executed")
#out put :
x == 10
x > 5
If the condition for if is False , the program checks the conditions of the subsequent elif blocks – the
first elif block that is True is executed. If all the conditions are False , the else block will be executed.
Nested conditional statements, e.g.:
x = 10
•
if x > 5: # True
if x == 6: # False
print("nested: x == 6")
elif x == 10: # True
print("nested: x == 10")
else:
print("nested: else")
else:
print("else")
#output : nested: x == 10
2.8 loops
1. There are two types of loops in Python: while and for :
the while loop executes a statement or a set of statements as long as a specified boolean
condition is true, e.g.:
# Example 1
while True:
•
11
print("Stuck in an infinite loop.")
# infinite loop
# Example 2
counter = 5
while counter > 2:
print(counter)
counter -= 1
#output
5
4
3
the for loop executes a set of statements many times; it's used to iterate over a sequence (e.g.,
a list, a dictionary, a tuple, or a set - you will learn about them soon) or other objects that are
iterable (e.g., strings). You can use the for loop to iterate over a sequence of numbers using
the built-in range function. Look at the examples below:
# Example 1
word = "Python"
for letter in word:
print(letter, end="*")
#output : P*y*t*h*o*n*
•
# Example 2
for i in range(1, 10):
if i % 2 == 0:
print(i)
#output :
2
4
6
8
2. You can use the break and continue statements to change the flow of a loop:
•
You use break to exit a loop, e.g.:
text = "OpenEDG Python Institute"
for letter in text:
if letter == "P":
break
print(letter, end="")
#output : OpenEDG
• You use continue to skip the current iteration, and continue with the next iteration, e.g.:
text = "pyxpyxpyx"
for letter in text:
if letter == "x":
continue
print(letter, end="")
#output: pypypy
3. The range() function generates a sequence of numbers. It accepts integers and returns range
objects. The syntax of range() looks as follows: range(start, stop, step) , where:
12
•
start is an optional parameter specifying the starting number of the sequence (0 by default)
•
•
stop is an optional parameter specifying the end of the sequence generated (it is not included),
and step is an optional parameter specifying the difference between the numbers in the
sequence (1 by default.)
Example code:
for i in range(3):
print(i, end=" ")
# Outputs: 0 1 2
for i in range(6, 1, -2):
print(i, end=" ") # Outputs: 6, 4, 2
2.9 logical operators
Python supports the following logical operators:
•
•
and → if both operands are true, the condition is true, e.g., (True and True) is True ,
or → if any of the operands are true, the condition is true, e.g., (True or False) is True ,
•
not → returns false if the result is true, and returns true if the result is false, e.g., not
True is False .
x = 1
y = 0
z = ((x == y) and (x == y)) or not(x == y)
print(not(z))
#output : False
2.10 lists
1. The list is a type of data in Python used to store multiple objects. It is an ordered and mutable
collection of comma-separated items between square brackets, e.g.:
my_list = [1, None, True, "I am a string", 256, 0]
2. Lists can be indexed and updated, e.g.:
my_list = [1, None, True, 'I am a string', 256, 0]
print(my_list[3]) # outputs: I am a string
print(my_list[-1]) # outputs: 0
my_list[1] = '?'
print(my_list) # outputs: [1, '?', True, 'I am a string', 256, 0]
my_list.insert(0, "first")
my_list.append("last")
print(my_list) # outputs: ['first', 1, '?', True, 'I am a string', 256, 0,
'last']
3. Lists can be nested, e.g.:
my_list = [1, 'a', ["list", 64, [0, 1], False]]
4. List elements and lists can be deleted, e.g.:
13
my_list = [1, 2, 3, 4]
del my_list[2]
print(my_list) # outputs: [1, 2, 4]
del my_list # deletes the whole list
5.Lists can be iterated through using the for loop, e.g.:
my_list = ["white", "purple", "blue", "yellow", "green"]
for color in my_list:
print(color)
6.Lists can be iterated through using the for loop, e.g.:
my_list = ["white", "purple", "blue", "yellow", "green"]
print(len(my_list)) # outputs 5
del my_list[2]
print(len(my_list))
# outputs 4
lists simple Sorting:
1. You can use the sort() method to sort elements of a list, e.g.:
lst = [5, 3, 1, 2, 4]
print(lst)
lst.sort()
print(lst) # outputs: [1, 2, 3, 4, 5]
2. There is also a list method called reverse(), which you can use to reverse the list, e.g.:
lst = [5, 3, 1, 2, 4]
print(lst)
lst.reverse()
print(lst) # outputs: [4, 2, 1, 3, 5]
lists processing:
1. If you have a list l1, then the following assignment: l2 = l1 does not make a copy of the l1 list,
but makes the variables l1 and l2 point to one and the same list in memory. For example:
vehicles_one = ['car', 'bicycle', 'motor']
print(vehicles_one) # outputs: ['car', 'bicycle', 'motor']
vehicles_two = vehicles_one
del vehicles_one[0] # deletes 'car'
print(vehicles_two) # outputs: ['bicycle', 'motor']
2. If you want to copy a list or part of the list, you can do it by performing slicing:
colors = ['red', 'green', 'orange']
copy_whole_colors = colors[:]
# copy the entire list
14
copy_part_colors = colors[0:2]
# copy part of the list
3. You can use negative indices to perform slices, too. For example:
sample_list = ["A", "B", "C", "D", "E"]
new_list = sample_list[2:-1]
print(new_list) # outputs: ['C', 'D']
4. The start and end parameters are optional when performing a slice: list[start:end], e.g.:
my_list = [1, 2, 3, 4, 5]
slice_one = my_list[2: ]
slice_two = my_list[ :2]
slice_three = my_list[-2: ]
print(slice_one) # outputs: [3, 4, 5]
print(slice_two) # outputs: [1, 2]
print(slice_three) # outputs: [4, 5]
5.You can delete slices using the del instruction:
my_list = [1, 2, 3, 4, 5]
del my_list[0:2]
print(my_list) # outputs: [3, 4, 5]
del my_list[:]
print(my_list)
# deletes the list content, outputs: []
6.You can test if some items exist in a list or not using the keywords in and not in, e.g.:
my_list = ["A", "B", 1, 2]
print("A" in my_list) # outputs: True
print("C" not in my_list) # outputs: True
print(2 not in my_list) # outputs: False
2.11functions:
1. A function is a block of code that performs a specific task when the function is called (invoked). You
can use functions to make your code reusable, better organized, and more readable. Functions can
have parameters and return values.
2. You can define your own function using the def keyword and the following syntax:
def your_function(optional parameters):
# the body of the function
You can define a function which doesn't take any arguments, e.g.:
def message ():
# defining a function
print("Hello")
# body of the function
message ()
# calling the function
15
You can define a function which takes arguments, too, just like the one-parameter function below:
def hello(name):
# defining a function.
print ("Hello,", name)
# body of the function
name = input ("Enter your name: ")
hello(name)
# calling the function
Function parameters and argument passing:
1. You can pass information to functions by using parameters. Your functions can have as many
parameters as you need.
An example of a one-parameter function:
def hi(name):
print("Hi,", name)
hi("Greg")
An example of a two-parameter function:
def hi_all(name_1, name_2):
print("Hi,", name_2)
print("Hi,", name_1)
hi_all("Sebastian", "Konrad")
An example of a three-parameter function:
def address(street, city, postal_code):
print("Your address is:", street, "St.,", city, postal_code)
s = input("Street: ")
p_c = input("Postal Code: ")
c = input("City: ")
address(s, c, p_c)
2. You can pass arguments to a function using the following techniques:
•
•
•
positional argument passing in which the order of arguments passed matters (Ex. 1),
keyword (named) argument passing in which the order of arguments passed doesn't matter
(Ex. 2),
a mix of positional and keyword argument passing (Ex. 3)
Ex. 1
16
def subtra(a, b):
print(a - b)
subtra(5, 2)
subtra(2, 5)
# outputs: 3
# outputs: -3
Ex. 2
def subtra(a, b):
print(a - b)
subtra(a=5, b=2)
subtra(b=2, a=5)
# outputs: 3
# outputs: 3
Ex. 3
def subtra(a, b):
print(a - b)
subtra(5, b=2)
subtra(5, 2)
# outputs: 3
# outputs: 3
It's important to remember that positional arguments mustn't follow keyword arguments. That's
why if you try to run the following snippet:
def subtra(a, b):
print(a - b)
subtra(5, b=2)
# outputs: 3
subtra(a=5, 2)
# Syntax Error
Python will not let you do it by signalling a SyntaxError.
3. You can use the keyword argument passing technique to pre-define a value for a given argument:
def name(first_name, last_name="Smith"):
print(first_name, last_name)
name("Andy")
# outputs: Andy Smith
name("Betty", "Johnson")
# outputs: Betty Johnson (the keyword argument
replaced by "Johnson")
Returning results from functions:
1. You can use the return keyword to tell a function to return some value. The return statement
exits the function, e.g.:
def multiply(a, b):
return a * b
print(multiply(3, 4))
# outputs: 12
def multiply(a, b):
return
print(multiply(3, 4))
# outputs: None
2. The result of a function can be easily assigned to a variable, e.g.:
17
def wishes ():
return "Happy Birthday!"
w = wishes ()
print(w)
# outputs: Happy Birthday!
Look at the difference in output in the following two examples:
# Example 1
def wishes():
print("My Wishes")
return "Happy Birthday"
wishes()
# outputs: My Wishes
# Example 2
def wishes():
print("My Wishes")
return "Happy Birthday"
print(wishes())
# outputs: My Wishes
#
Happy Birthday
3. You can use a list as a function's argument, e.g.:
def hi_everybody(my_list):
for name in my_list:
print("Hi,", name)
hi_everybody(["Adam", "John", "Lucy"])
4. A list can be a function result, too, e.g.:
def create_list(n):
my_list = []
for i in range(n):
my_list.append(i)
return my_list
print(create_list(5))
#output : [0, 1, 2, 3, 4]
Functions and scopes:
1. A variable that exists outside a function has a scope inside the function body (Example 1) unless the
function defines a variable of the same name (Example 2, and Example 3), e.g.:
Example 1:
var = 2
def mult_by_var(x):
return x * var
print(mult_by_var(7))
# outputs: 14
18
Example 2:
def mult(x):
var = 5
return x * var
print(mult(7))
# outputs: 35
Example 3:
def mult(x):
var = 7
return x * var
var = 3
print(mult(7))
# outputs: 49
2. A variable that exists inside a function has a scope inside the function body (Example 4), e.g.:
Example 4:
def adding(x):
var = 7
return x + var
print(adding(4))
# outputs: 11
print(var)
# NameError
3. You can use the global keyword followed by a variable name to make the variable's scope global,
e.g.:
var = 2
print(var)
# outputs: 2
def return_var():
global var
var = 5
return var
print(return_var())
# outputs: 5
print(var)
# outputs: 5
19
Chapter three
Machine Learning
3.1 Machine Learning Algorithms:
• Machine learning (including deep learning) is a study of learning algorithms. A
computer program is said to learn from experience 𝐸 with respect to some class
of tasks 𝑇 and performance measure 𝑃 if its performance at tasks in 𝑇, as
measured by 𝑃, improves with experience 𝐸.
Differences Between Machine Learning Algorithms and Traditional RuleBased Algorithms:
Fig 3.1 Traditional Rule-Based Algorithms
• Explicit programming is used to solve problems.
• Rules can be manually specified.
20
Fig 3.2 Machine Learning Algorithms
• Samples are used for training.
• The decision-making rules are complex or difficult to describe.
• Rules are automatically learned by machines.
Application Scenarios of Machine Learning
• The solution to a problem is complex, or the problem may involve a large amount
of data without a clear data distribution function.
• Machine learning can be used in the following scenarios:
Fig 3.3 Application Scenarios of Machine Learning
21
3.2 Machine Learning Types:
Machine Learning Classification:
• Supervised learning: Obtain an optimal model with required performance through training
and learning based on the samples of known categories. Then, use the model to map all inputs
to outputs and check the output for the purpose of classifying unknown data.
Fig 3.4 Supervised learning
• Unsupervised learning: For unlabeled samples, the learning algorithms directly model the
input datasets. Clustering is a common form of unsupervised learning. We only need to put
highly similar samples together, calculate the similarity between new samples and existing ones,
and classify them by similarity.
Fig 3.5 unsupervised learning
22
• Semi-supervised learning: In one task, a machine learning model that automatically uses a
large amount of unlabeled data to assist learning directly of a small amount of labeled data.
Fig 3.6 Semi-supervised learning
• Reinforcement learning: It is an area of machine learning concerned with how agents ought
to take actions in an environment to maximize some notion of cumulative reward. The
difference between reinforcement learning and supervised learning is the teacher signal. The
reinforcement signal provided by the environment in reinforcement learning is used to evaluate
the action (scalar signal) rather than telling the learning system how to perform correct actions.
Machine Learning Process:
Fig 3.7 Machine Learning Process:
3.3 Basic Machine Learning Concept — Dataset:
• Dataset: a collection of data used in machine learning tasks. Each data record is called a
sample. Events or attributes that reflect the performance or nature of a sample in a particular
aspect are called features.
• Training set: a dataset used in the training process, where each sample is referred to as a
training sample. The process of creating a model from data is called learning (training).
• Test set: Testing refers to the process of using the model obtained after learning for prediction.
The dataset used is called a test set, and each sample is called a test ample.
23
Importance of Data Processing:
o Data is crucial to models. It is the ceiling of model capabilities. Without good
data, there is no good model.
Fig 3.8 Data Processing
Workload of Data Cleansing
o Statistics on data scientists' work in machine learning
Fig 3.9 CrowdFlower Data Science Report 2016
Data Cleansing
•
•
▪
▪
▪
▪
▪
Most machine learning models process features, which are usually numeric representations of input
variables that can be used in the model.
In most cases, the collected data can be used by algorithms only after being preprocessed. The
preprocessing operations include the following:
Data filtering
Processing of lost data
Processing of possible exceptions, errors, or abnormal values
Combination of data from multiple data sources
Data consolidation
Model Validity (1)
24
• Generalization capability: The goal of machine learning is that the model obtained
after learning should perform well on new samples, not just on samples used for
training. The capability of applying a model to new samples is called generalization or
robustness.
•
Error: difference between the sample result predicted by the model obtained after
learning and the actual sample result.
▪ Training error: error that you get when you run the model on the training data.
▪ Generalization error: error that you get when you run the model on new samples.
Obviously, we prefer a model with a smaller generalization error.
•
Underfitting: occurs when the model or the algorithm does not fit the data well
enough.
•
Overfitting: occurs when the training error of the model obtained after learning is
small but the generalization error is large (poor generalization capability).
Fig 3.10 Model Validity
3.4 Machine Learning Algorithm Overview:
Fig. 3.11 Machine Learning Algorithms
Logistic regression: is the appropriate regression analysis to conduct when the dependent variable
is dichotomous (binary). Like all regression analyses, logistic regression is a predictive analysis. Logistic
25
regression is used to describe data and to explain the relationship between one dependent binary
variable and one or more nominal, ordinal, interval or ratio-level independent variables.
Fig. 3.12 Logistic Regression Graph
Decision Tree:
• A decision tree is a tree structure (a binary tree or a non-binary tree). Each non-leaf node
represents a test on a feature attribute. Each branch represents the output of a feature
attribute in a certain value range, and each leaf node stores a category. To use the decision
tree, start from the root node, test the feature attributes of the items to be classified, select the
output branches, and use the category stored on the leaf node as the final result
Fig. 3.13 Decision Tree Structure
SVM:
• Support Vector Machine (SVM) is a powerful machine learning algorithm used for linear or
nonlinear classification, regression, and even outlier detection tasks. SVMs can be used for a
variety of tasks, such as text classification, image classification, spam detection, handwriting
identification, gene expression analysis, face detection, and anomaly detection. SVMs are
adaptable and efficient in a variety of applications because they can manage high-dimensional
data and nonlinear relationships.
• SVM algorithms are very effective as we try to find the maximum separating hyperplane
between the different classes available in the target feature.
26
Fig. 3.14 SVM Algorithm
KNN Algorithm:
• The KNN classification algorithm is a theoretically mature method and one of the simplest
machine learning algorithms. According to this method, if the majority of k samples most similar
to one sample (nearest neighbors in the eigenspace) belong to a specific category, this sample
also belongs to this category.
Fig 3.15 KNN Algorithm
Naive Bayes:
• Naive Bayes is a popular machine learning algorithm used for classification tasks. It is based on
Bayes' Theorem and the assumption of independence among predictors. Simply put, the
algorithm predicts the likelihood of an input belonging to a certain class based on the presence
or absence of certain features. Naive Bayes can be applied to various applications such as email
spam classification and medical diagnosis. This algorithm is simple to implement,
computationally efficient, and requires a small amount of training data.
Fig. 3.16 Naive Bayes Graph
27
• Linear regression: a statistical analysis method to determine the quantitative relationships
between two or more variables through regression analysis in mathematical statistics.
•
Linear regression is a type of supervised learning.
Fig. 3.18 Multi-dimensional linear regression
Fig. 3.17 Unary linear regression
Random Forest: Random Forest is a supervised learning algorithm. The “forest” it builds is an
ensemble of decision trees, usually trained with the bagging method. The general idea of the bagging
method is that a combination of learning models increases the overall result.
Fig. 3.19 Random Forest Algorithm
Unsupervised Learning - K-means:
• K-means clustering aims to partition n observations into k clusters in which each observation
belongs to the cluster with the nearest mean, serving as a prototype of the cluster.
• For the k-means algorithm, specify the final number of clusters (k). Then, divide n data objects
into k clusters. The clusters obtained meet the following conditions:
1. Objects in the same cluster are highly similar.
28
2. The similarity of objects in different clusters is small.
Fig. 3.20 K-means Algorithm
29
Chapter Four
Deep Learning
4.1 Traditional Machine Learning and Deep Learning:
• As a model based on unsupervised feature learning and feature hierarchy learning, deep
learning has great advantages in fields such as computer vision, speech recognition, and natural
language processing.
Traditional Machine Learning:
30
4.2 Deep Learning:
• generally, the deep learning architecture is a deep neural network. "Deep" in "deep learning"
refers to the number of layers of the neural network.
Fig. 4.1 neural network
Neural Network:
• Currently, the definition of the neural network has not been determined yet. Hecht Nielsen, a
neural network researcher in the U.S., defines a neural network as a computer system
composed of simple and highly interconnected processing elements, which process information
by dynamic response to external inputs.
• A neural network can be simply expressed as an information processing system designed to
imitate the human brain structure and functions based on its source, features, and
explanations.
•
Artificial neural network (neural network): Formed by artificial neurons connected to each
other, the neural network extracts and simplifies the human brain's microstructure and
functions. It is an important approach to simulate human intelligence and reflect several basic
features of human brain functions, such as concurrent information processing, learning,
association, model classification, and memory.
Fig. 4.2 Feedforward Neural Network
31
4.3 loss function:
• At its core, a loss function is incredibly simple: It’s a method of evaluating how well your
algorithm models your dataset. If your predictions are totally off, your loss function will output a
higher number. If they’re pretty good, it’ll output a lower number. As you change pieces of your
algorithm to try and improve your model, your loss function will tell you if you’re getting
anywhere.
• Loss functions are related to model accuracy, a key component of AI/ML governance.
• We can design our own (very) basic loss function to further explain how it works. For each
prediction that we make, our loss function will simply measure the absolute difference between
our prediction and the actual value. In mathematical notation.
4.4 Activation Function:
• Activation functions are important for the neural network model to learn and understand
complex non-linear functions. They allow introduction of non-linear features to the network.
• Without activation functions, output signals are only simple linear functions.
• The complexity of linear functions is limited, and the capability of learning complex function
mappings from data is low.
Types of Activation Function:
• Sigmoid
▪ Logistic Activation Function
▪ This function takes any real value as input and outputs values in the range of 0 to 1.
▪ The larger the input (more positive), the closer the output value will be to 1.0, whereas the
smaller the input (more negative), the closer the output will be to 0.0, as shown below.
Fig. 4.3 Sigmoid function
32
• Rectified Linear Unit (ReLU):
▪
ReLU stands for Rectified Linear Unit.
▪
Although it gives an impression of a linear function, ReLU has a derivative function and allows for
backpropagation while simultaneously making it computationally efficient.
▪
The main catch here is that the ReLU function does not activate all the neurons at the same time.
▪
The neurons will only be deactivated if the output of the linear transformation is less than 0
Fig. 4.4 ReLU function
• Softmax:
▪ The softmax function is a function that turns a vector of K real values into a vector of K real
values that sum to 1. The input values can be positive, negative, zero, or greater than one, but
the softmax transforms them into values between 0 and 1, so that they can be interpreted as
probabilities. If one of the inputs is small or negative, the softmax turns it into a small
probability, and if an input is large, then it turns it into a large probability, but it will always
remain between 0 and1.
▪ Many multi-layer neural networks end in a penultimate layer which outputs real-valued scores
that are not conveniently scaled and which may be difficult to work with. Here the softmax is
very useful because it converts the scores to a normalized probability distribution, which can be
displayed to a user or used as input to other systems. For this reason it is usual to append a
softmax function as the final layer of the neural network.
33
• Optimizer:
▪ Optimizer algorithms are optimization method that helps improve a deep
learning model’s performance. These optimization algorithms or optimizers
widely affect the accuracy and speed training of the deep learning model. But
first of all, the question arises of what an optimizer is.
▪ While training the deep learning optimizers model, modify each epoch’s weights
and minimize the loss function. An optimizer is a function or an algorithm that
adjusts the attributes of the neural network, such as weights and learning rates.
Thus, it helps in reducing the overall loss and improving accuracy. The problem
of choosing the right weights for the model is a daunting task, as a deep learning
model generally consists of millions of parameters. It raises the need to choose
a suitable optimization algorithm for your application. Hence understanding
these machine learning algorithms is necessary for data scientists before having
a deep dive into the field.
• 4.5 Convolutional Neural Network
▪ A convolutional neural network (CNN) is a type of artificial neural network used primarily for
image recognition and processing, due to its ability to recognize patterns in images. A CNN is a
powerful tool but requires millions of labelled data points for training. CNNs must be trained with
high-power processors, such as a GPU or an NPU, if they are to produce results quickly enough
to be useful.
34
• Architecture of Convolutional Neural Network:
Fig. 4.5 Architecture of Convolutional Neural Network
• Single-Filter Calculation
Fig. 4.6 Description of convolution calculation
Fig. 4.7 Demonstration of convolution calculation
35
• Convolutional Layer:
▪ The basic architecture of a CNN is multi-channel convolution consisting of multiple single convolutions.
The output of the previous layer (or the original image of the first layer) is used as the input of the
current layer. It is then convolved with the filter in the layer and serves as the output of this layer. The
convolution kernel of each layer is the weight to be learned. Similar to FCN, after the convolution is
complete, the result should be biased and activated through activation functions before being input to
the next layer.
Fig. 4.8 Convolutional Layer
• Pooling Layer:
▪ Pooling combines nearby units to reduce the size of the input on the next layer, reducing
dimensions. Common pooling includes max pooling and average pooling. When max pooling is
used, the maximum value in a small square area is selected as the representative of this area,
while the mean value is selected as the representative when average pooling is used. The side
of this small area is the pool window size. The following figure shows the max pooling operation
whose pooling window size is 2.
Fig. 4.9 Pooling Layer
36
• Fully connected layer
▪ the fully connected layer is essentially a classifier. The features extracted on the convolutional layer and
pooling layer are straightened and placed at the fully connected layer to output and classify results.
▪
Generally, the Softmax function is used as the activation function of the final fully connected output
layer to combine all local features into global features and calculate the score of each type.
Fig. 4.10 Fully connected layer
37
Chapter Five
AI Project (Cars Classification)
A software that can analyze images or videos of cars and automatically identify their
make and model. This program uses machine learning algorithms to learn from a large
dataset of images of different cars, and then uses this knowledge to classify new images
of cars.
This dataset consists of various types of cars. The dataset is organized into 2 folders
(train, test) and contains subfolders for each car category. There are 4,165 images (JPG)
and 7 classes of cars.
Project Code:
1.Dataset:
Uploading data on Google drive then inserting it on Google Collab to use it in our project
Fig. 5.1 connect drive
2. Importing the required libraries:
Fig. 5.2 the required libraries
38
3. Importing data into TensorFlow dataset object:
Fig. 5.3 Importing data into TensorFlow dataset object
4.Creating the CNN model:
Fig. 5.4 the CNN model
39
5. model summary :
Fig. 5.5 the model summary
6. Compiling the model:
Fig. 5.5 Compiling the model
40
7. Plotting the accuracy and loss curves:
Fig. 5.6 Plotting the accuracy and loss curves
8. Testing the prediction on sample of image from test dataset:
Fig. 5.7 Testing the prediction on sample of image from test dataset
41
Fig. 5.8 Testing the prediction on sample of image from test dataset
42
References
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Wikipedia.com
ScienceDirect.com
Cicso.com
AnalyticsVidhya.com
Scikit-Learn.org
Geeksforgeeks.org
Monkeylearn.com
DigitalOcean.com
W3schools.com
Tutorialspoint.com
Theaisummer.com
Tensorflow.org
Huawei AI Overview PDF
Huawei Machine Learning PDF
Huawei Deep Learning PDF
43
Download