Introduction to artificial intelligence four piece set, you can't avoid learning artificial intelligence

In order to take care of basic people, I divide this article into six stages, if you are in this stage
You can click below to skip the part you have seen. After all, not everyone has the patience to look at what has been learned again~~

Phased:

Phase I: Zero basis

Phase II: Basic grammar

Phase III: Branch statement

Phase IV: Functional programming

Phase V: object-oriented programming

Phase 6: numpy

Phase VII: matplotlib

Phase 8: Fundamentals of Mathematics

Click to view fan benefits directly: I receive fan benefits at

Introduction to artificial intelligence four piece set

I don't have to say how popular artificial intelligence is now. If you want to learn Artificial Intelligence, you need these four things:

  1. Fundamentals of Python language
  2. numpy -- matrix tool
  3. matplotlib -- data visualization tool
  4. Of course, it also needs the foundation of mathematics

1, Fundamentals of Python language

Let's take a look at the thought map of Python basic syntax I worked hard to do

But this is what the whole stack of Python needs to learn. It doesn't need so much to learn artificial intelligence. Come and have a look with me

1.1 Python introduction

Isn't Python playing all the time now? It's said that primary schools should publish Python textbooks. It's as if they can't be a python these days, and they're not as good as primary school students!

In that case, then? Do you know Python?

can't? never mind! An article introduces you to Python! An article takes you to dredge the basic grammar of Python!

meeting? All right, don't hurry! Look. After all, you can be a teacher by reviewing the old and learning the new!

As a high-level programming language, Python is easy to learn

1.2 Python installation

Note that Python is now divided into Python 2. X and python 3. X versions. We introduce Python 3. X versions here. Do not download errors

1. Normal version

You can download it on the official website—— Official website

Install as a fool after downloading, but one thing to note is: check the Add to path

If it is not checked, you need to manually configure the environment, which is very troublesome

2. Anaconda release

Anaconda is a Python version, but it integrates the necessary libraries related to artificial intelligence, including numpy, matplotlib, etc

Download link—— Click to download the 64 bit windows installation package

Then there is the fool installation

1.3 pycharm editor installation

Download pycharm professional edition. I won't teach you how to crack it here. Baidu on its own

It is a fool installation. Check all the places where you check. Wait until the installation is successful, open it, don't register, and choose skip. It will let you try for 30 days

Then select New Project, click Create a New Project, fill in the information, and then Create

Then after a long wait, pay attention, it's really a long wait. It's a long time to wait

1.4 basic grammar

As a high-level language, python also has its own syntax format.

1. Notes

What is annotation? Annotation is to explain our code so that others can understand the code we write. But the computer will turn a blind eye to our notes, because he doesn't need your explanation, he can understand it.

Single line comment: # this is a single line comment

Multiline comment: "" this is a multiline comment "" "

2. Reserved words

It is also called keyword in other languages. It is a name that plays another role in python.

Sometimes, you don't need to care what the word means, you just need to know what its role is, but the programming language pays attention to seeing the name and knowing the meaning, so a better English has an advantage. But it can't all rely on translation.

python has 33 reserved words

3. Identifier

Identifier, this thing is named by ourselves, but we can't name it arbitrarily, because if we don't know the freeze frame specification, some people write this kind and others write that kind, and the computer won't understand it.

Specification of identifier: it can contain numbers, letters and underscores, but it cannot start with a number, and the identifier is case sensitive.

Now, we learn Python 3, there is a gospel for the Chinese: that is, * we can use Chinese as our identifier* Yes, that's right. Chinese is the identifier. Of course, you can't start with a number.

The role of identifiers will be mentioned in the next article.

Little practice

Determine whether the following identifiers are correct

  1. 1smly
  2. smly
  3. _smly
  4. smly_
  5. sm_ly

Determine whether the following identifiers are the same

  1. smly Smly
  2. smly sMly
  3. SMLy smLY
  4. smly1 Smly1

4. Indent

Indentation is very important in python, just like punctuation when we speak, but it is not exactly the same, because indentation is necessary in python. Indentation lets the computer know where our code is segmented. If there is no indentation, the computer will not recognize your code and will report an error.

So what is error reporting? It's like your friend's output of nonsense to you, but you don't understand it. At this time, you will say, I don't understand, if you say you don't understand, it's error reporting. If you show it to your friend, he knows you don't understand, he will reorganize the language until you understand it.

Then the computer is the same. If you don't indent the code, the computer won't understand it. It will report an error to you and let you understand that he doesn't understand it. In this way, you will modify your code and let the computer understand what you mean.

This process is also the process of debugging our code.

Different codes are combined together, just like different Chinese characters. Separating different paragraphs has different meanings.

Indentation also means inclusion. The indentation of code at the same level is the same, and the indentation at the lower level decreases in turn. (it's ok if you don't understand this for the time being. You'll understand it later)

Little practice

# 1. Judge whether the following codes can run
print("Hello")
 print("World")
print("!")

5. Input

We already know the output. Using print(), what about the input?
input()

input()
print()

Try running:

Will prompt you to enter something here, so what if we want a prompt?

input("Please enter: 1/2,Press enter to end")
print("Correct input")

result:

6. Output

print() is an output function (don't worry about what a function is for the time being, which will be explained later). You can output the contents in parentheses to the console for display
Of course, the contents you want to display in parentheses need double quotation marks and single quotation marks (it must be noted that the single and double quotation marks are English symbols, that is, switch to the single and double quotation marks entered in English)
For example, if you want to show you how you are, you should write it like this

print ('How do you do')

This is the output string of the print () function
What is a string? String is the content in English single and double quotation marks
Like

"Hello World"
"How do you do"
"Hello, beginner"

These are strings
The string in the computer is equivalent to what we usually say between people. The string is something exchanged between computers, or between people who can program language and computers

7. Variables

What are variables. As the name suggests, it is a variable quantity.

The previously learned string is immutable. This immutable means that what is stored in memory will not change, not the content.

Because you can perform various operations on the string, but its address in memory does not change. What you modify is only a copy of the original copy and then modify it.

It's like I said a word. You can use it and modify it yourself, but that's not what I said. It has been copied by you.

So what's the use of variables? Variables can receive our data and make continuous and repeated calls. For example, our "Hello World!" string is very long. If we want to use it in many places, we need to write so many times. Is that troublesome? Therefore, there is a variable. Define a variable to receive this string and use it later, It can be called directly through this variable name.

The variable name is the identifier we learned in the previous section.

Easy to use:

a = "Hello World"
print(a)

1.5 data type

Data type is what we store data. What is a data type? Is the type of data! Nothing else.

So why do you need data types?

If we need to do mathematical operations, such as 1 + 1,1 times 1,1 divided by 1, and so on

We need to use numbers, and numbers have decimals, integers and plurals (I don't know for the time being, it doesn't matter, I don't use much), right

Data types are divided into basic data types and advanced data types.

Basic data types include integer (int), floating point (float), complex (complex), and Boolean

Advanced data types include: string (str), list (list), set (set), Dictionary (dict), tuple (tuple)

So why is advanced data type called advanced? Because they have other additional operations.

Such as adding, deleting, modifying and querying.

1. Number type

In python, integers are called integers, represented by ints, and decimals are called floating points, represented by floats

For example:

int type 1, 10100100010000
float type 1.1 1.11 1.1111

Look at this code

print(100+0.555)

The output is 100.555

This 100 is an integer int and 0.555 is a floating point float

2. Boolean

Boolean, only two values

One is True for correct, and the other is False for error

Just as I tell you 1 > 2, you will refute me, which is wrong

Computers think, too. Look at these two lines of code

print (1>2)
print (1<2)

Operation results:

3. String

Strings are similar to what we usually say, that is, strings together are called strings, and characters are one by one

First of all, the string can traverse the value, that is, we can use our loop to show all the elements one by one and take them out for various operations

Of course, other advanced data types can also be traversed, but dictionaries will be different

Code display:

str_ = "Hello World!"
for i in str_:
    print(i)

Operation results:

As you can see, the loop takes our strings apart, takes them out one by one, and outputs them

Then, string formatting

What is a formatted string? It can make our code simpler

Understand with questions

How to output a sentence containing variables

Example: given a variable a = 1, how to make the output result: "the value of a is: 1"

  1. The first method: print("the value of a is:", a)
  2. The second method: print("the value of a is: {}". format(a))
  3. The third method: print("the value of a is:% d"% a)
  4. The fourth method: Print (the value of F "a is: {a}")

In fact, we can add variables to our string, and the first method is more troublesome when dealing with multiple variables in a string. At this time, we need to use the following three, which are relatively simple. My favorite is the fourth method. Because it's easy to write

A native string contains only strings. Unlike formatting, all strings in the quotation marks of a native string are strings and will not be recognized by the machine

Like our escape character\

\t stands for our tab \n stands for line feed

So how do you define it? Just add r before the parentheses in front of the string

Let's take a look at this code. What will the result be

print(r"Hello\t world")
print(r"Hello\n world")

Operation results:

It can be seen that our escape character has no effect. It is expressed in its original form, which is the function of our native string

I won't say much about escape characters. If you know something, you can search it

As for strings, there are more operations, such as how to judge whether it is a number, whether to judge case, and how to convert case. If you want to know, you can search all the operations of strings. As an introductory chapter, I won't say so much.

4. List

Basic understanding

List list

The list is enclosed in square brackets as a set of data
For example, this [1, 2, 3, 4, 5,] is a list

This is a list that stores 1-5 integer data

Accept a list with a variable: li = []

As an advanced data type, the list can be added, deleted, modified and queried.

As for traversal, it's the same as string

You don't need a deep understanding. You just need to know that the list is a bag. It can help us store more things.

We can also use this bag to operate the things inside. For example, the above-mentioned addition, deletion, modification and inspection is not to put things in the bag, take out the things in the bag, take out the things in the bag for something, and look at the things in the bag

Add data:

Add an element to the list: li.append()

give an example:

li = [1, 2, 3, 4]
li.append(5)
print(li) 

Result: [1, 2, 3, 4, 5]

As an advanced data type, you can add all data types to the list

Delete data:

Delete the specified element of the list: li.remove()

give an example:

li = [1, 2, 3, 4]
li.remove(1)
print(li)

The result is: [2, 3, 4]

Just take out the 1 in the bag. As for where to put it, it must be thrown away.

Find element:

Find element:

The list supports finding elements, but it uses subscripts. python subscripts start from 0. Of course, strings also support subscript values

give an example:

li = [1, 2, 3, 4]
print(li[0])

The results are: 1

Now that we have mentioned the values in the following table, let's talk about slicing and step size

Slicing: you can limit which subscript range data to take

Step size: take several elements

List [subscript: the following table: step size] 1 indicates that positive values are taken one by one, - 1 indicates that they are taken upside down, and if they are not written, the default value is 1, and 2 indicates that they are taken once every other

For example, we only take the elements of 1 and 3 (excluding 3, which also refers to the subscript here)

a = [1, 2, 3, 4, 5, 6]
print(a[1:3])
# The result is: [2, 3]
print(a[::2])
# The result is: [1, 3, 5]
print(a[;;-1])
# The result is: [6, 5, 4, 3, 2, 1]

Change data:

Similarly, modifying elements requires subscripts

give an example:

li = [1, 2, 3, 4]
li[0] = 2
print(li)  

The result is: [2, 2, 3, 4]

5. Tuple

Tuples are different from others. They are immutable, which means they cannot be added, modified or deleted

Tuples are defined with parentheses tu = (1, 2, 3, 4)

Like lists, sets and dictionaries, each group of elements is separated by English commas

You can refer to the list, but tuples can't be modified like collections, but it's not because of disorder. Tuples can be valued through subscripts

Although tuples are immutable, we can delete the whole tuple directly

tu = (1, 2, 3, 4, 5)
del tu
print(tu)

The result is: ()

6. Dictionary

Why return the dictionary last? Because the dictionary is in the form of key value pairs.

Format: dic = {"key": value}

Keys must be unique, but values do not.

The value can take any data type, but the key must be immutable, such as string and number.

In the dictionary, access the key to get the value

Add element:

We can define an empty dictionary or a dictionary with elements

We will give examples separately

Empty dictionary:

di = {}
di["name"] = "Tom"
di["age"] = 18
print(di)

Result: {name ":" Tom "," age ": 18}

Dictionary with elements:

di = {"name": "Tom"}
di["age"] = 18
print(di)

The result is: {name ":" Tom "," age ": 18}

We can use this method because our keys are unique, so we can add elements in this way

Delete element:

Or is it determined by a unique key and then deleted

di = {"name": "Tom", "age": 18}
del di["age"]
print(di)

The result is: {name ":" Tom "}

Modify element:

I won't explain and demonstrate more by re assigning values through keys to modify elements

Find element:

You can't find elements through subscripts. You need to get them through keys

di = {"name": "Tom", "age": 18}
print(di["name"])

The result is: "Tom"

7. Assembly

Sets: set
Sets are disordered and unrepeatable
Disorder: no order

Of course, you can also create an empty collection, but you can't create s = {}

Because this defines an empty dictionary, we should set(s) like this

Format (what does it look like):

s = {1, 2, 3, 4, 5}

Add element:

Add elements s.add () and s.update () to the collection

s = {1, 2, 3, 4, 5}
s.add(6) 
s.upadte(7)
print(s)

The results are: {1, 2, 3, 4, 5, 6, 7}

Delete data:

s = {1, 2, 3, 4, 5}
s.remove(1)
print(s)

The results are: {2, 3, 4, 5, 6}

Delete all: s.clear()

Modify element:

This function is not available because the elements are unordered and cannot be searched and modified by subscript

It's okay, because you use lists and dictionaries more in your program

8. Type conversion

What is type conversion? Literally, the type of data has changed.

Type conversion is divided into automatic type conversion and forced type conversion.

Our example above, 100 + 0.555

One is integer and the other is floating point. Their result is floating point. At this time, type conversion occurs.

Sometimes, we need to perform type conversion, because sometimes some data types cannot meet our needs. At this time, we need to perform type conversion.

Python provides functions for type conversion (like the print() function) to support cast

The function name is the name of the data type, but there are a pair of half angle brackets. Just put the data to be converted into type in brackets

For example, we need to convert other data into strings (basically all data can be converted into strings)

# Type conversion
a = 1
b = 1.1
c = 1+1j
d = "ss"
print(str(a))
print(str(b))
print(str(c))
print(str(d))

Operation results:

1.6 operators

When we use Python, we also need to perform operations, so we introduce operators

1. Arithmetic operator

It is basically the same as in mathematics

SymboleffectSymboleffect
+Add-subtract
*Multiply/be divided by
%Surplus**Power

give an example

print(1+1-2*5/2%5**2)

Don't feel troublesome, just calculate according to the mathematics

Pay attention to the operation order

The answer is:

-3.0

2. Assignment operator

Think about the variable just mentioned, and you use the auxiliary operator=

And the corresponding + = * = / =

a += 1 is equivalent to a = a+1

Other analogies will do

3. Bitwise operator

Bitwise operator

Bit operators are mainly used for binary data and are only applicable to int, short, byte, long and char.
Bitwise operators include &, |, <, > >, < <, ^~

  1. & if the corresponding bits are all 1, the result is 1, otherwise it is 0
  2. |If the corresponding bits are all 0, the result is 0, otherwise it is 1
  3. ^If the corresponding bit values are the same, the result is 0, otherwise it is 1
  4. ~ the bitwise negation operator flips each bit of the operand, that is, 0 becomes 1 and 1 becomes 0
  5. < < bitwise shift left operator. Left operand shifts left by bits the number of bits specified by the right operand
  6. >>Bitwise shift right operator. Left operand shifts right bit by bit the number of bits specified by the right operand
  7. >>>Bitwise shift right zeroing operator. The value of the left operand is shifted to the right by the number of bits specified by the right operand, and the empty bits are filled with zeros
    This calculation needs to be binary. I haven't used it much.. So the understanding is not deep enough. Please understand

4. Comparison operator

As the name suggests, it is used to calculate the relationship between you two. The relational operators are: = =,! =, >, <, < =, >= Here are all English symbols. It should be noted that the relational operators are binary operators and return Boolean data true/false

  1. ==It is the same as the = in mathematics. For example, when you see others write: 1 = 2, you subconsciously know that it is wrong. Similarly, if you write 1 = = 2 in Java, the computer also knows that it is wrong, and he will tell you: false
  2. != Not equal to, and in mathematics ≠ \neq  = it's the same, for example, you see 1 ≠ \neq  = 2, you will say, this is right. Similarly, you show the computer 1= 2. The computer will also tell you that this is true.
  3. The following greater than or less than, greater than or equal to, less than or equal to, are the same as those in mathematics. Presumably, people who have attended primary school will not understand it - laugh
Symboleffect
==Equal - whether the comparison objects are equal
!=Not equal - compares whether two objects are not equal
>Greater than - Returns whether x is greater than y
<Less than - Returns whether x is less than y. All comparison operators return 1 for True and 0 for False. This is equivalent to the special variables True and False, respectively. Note that these variable names are capitalized.
>=Greater than or equal - Returns whether x is greater than or equal to y.
<=Less than or equal to - Returns whether x is less than or equal to y.

The output result is Boolean data, that is, it is either True or false

5. Logical operators

Since there are operators, how can there be no and or not? There are three operators: and, or and!

  1. And, this is and, that is, and logic. Both must be satisfied. For example, I have a girlfriend and you have a girlfriend. Then, everyone is happy. As long as I don't have a girlfriend or you don't have a girlfriend, don't say everyone is happy. If we both have one, we are all happy
  2. But this time, as long as one of us has a girlfriend, everyone is happy
  3. !, This is right and wrong. In the above example, this time we both have no girlfriend, so we are happy (why is it strange)

1.7 branch control statement

So what is a branch control statement? I believe you all know the flow chart in mathematics.

what? Not seen? Never mind, I'll show you!

The flow chart in mathematics looks like this

So what does our branch control statement have to do with this?

In fact, it's almost one thing.

Branch control statements are divided into conditional control statements and loop control statements.

Literally, one can be used a few times, and the other can be used many times.

If you still have doubts, you are sure, because you only have a concept in your mind, but it is very vague.

Then follow me to show you more!

Conditional control statement is to execute our code by judging conditions, just like yes or no in mathematical flow chart.

1. Single if statement

Let's first look at the format:

if condition:
    code

This is translated into Chinese

If the condition is true:

Execute code

End

If the condition is false

End

This is the process

2. Simple use

So let's take a small example

a = int(input("Please enter an integer"))
b = int(input("Please enter an integer"))
c = a+b
if c<10:
    print("The sum of the two numbers is less than 10")

Let's see what it looks like

Do you understand? Isn't it simple? Yes, this is what conditional control statements do, but this is only the simplest conditional control statement. Let's take a look at a slightly more complex one.

3. Multi branch judgment

Format:

if condition:
    code
elif condition:
    code
else:
    code
    

use:

Continue with the above example

a = int(input("Please enter an integer"))
b = int(input("Please enter an integer"))
c = a+b
if c<10:
    print("The sum of the two numbers is less than 10")
elif c==10:
    print("The sum of the two numbers equals 10")
else:
    print("The sum of the two numbers is greater than 10")

OK, OK, our program can do more

Enter a 5 and a 6 this time

OK, it perfectly realizes our function

1.8 loop control statement

Cycle, cycle, what is a cycle, is always going on and will not stop

So how to stop? We have to set our own conditions

There are two kinds of loop control statements: A for loop and a while loop.

1. for loop

Format:

In general, for loops are used more frequently

for Temporary variable in Cyclic conditions:
    code

Our for loop needs a temporary variable. We don't need to define a variable in advance to receive the value in the loop

This is also a release of memory. If a variable is defined in advance, it is a global variable that will always occupy memory, and the temporary variable of the for loop will be destroyed after the loop ends to release memory.

In vernacular, temporary variables can only live before the beginning of the cycle - the end of the cycle. At the end of the cycle, the temporary variables die, which is a bit similar to removing the mill and killing the donkey (manual dog head)

And our for does not require us to update variables manually

use:

Do you remember that at the end of the variable in the previous article, we used 10 print() functions to output Hello World 10 times!

Then we can also use our loop to achieve this effect with less code

a = "Hello World!"
for i in range(10):
    print(a)

i in the code starts from 0, and the value in this range() function is from i to 10 (excluding 10). Therefore, it will cycle 10 times

Let's run it

Perfect, achieved our goal

2. while loop

Format:

while condition:
    code

use:

Still above, output Hello World 10 times!

a = "Hello World!"
i = 0
while i<10:
    print(a)
    i+=1

The while loop not only needs to define the global variable, but also needs to update the value of the variable manually (i)

If you do not update, the value of i will not change, the condition will always be established, and the loop will not stop. Therefore, when using while, you must not forget to update the variable

3. End of active cycle

Three statements: break return continue can stop the loop

However, return is usually used in functions, and break is used

continue is not used to terminate the loop. See the following code example for specific functions

break:

There is also a general idea in Chinese: breaking

Its function is to break the cycle and make the cycle terminate after touching it

The function of break is to break the structure and make the program exit the current code block

Let's take a look at this example. The function we want to achieve is to cycle the data entered by the user from the keyboard until q is entered to launch the program

while True:
    a = input()
    if a == "q":
        break
    else:
        print(a + "  Input succeeded, input 'q' Exit program")

Operation results:

At this time, we find that we can enter q to launch, but we don't feel comfortable. We can also add a prompt or ask him to enter "confirm" again to confirm whether to launch

while True:
    a = input()
    if a == "q":
        print("Are you sure you want to push exit? If you are sure, please enter OK to exit and confirm")
        if input() == "OK to exit":
            print("Exited, program ended")
        break
    else:
        print(a + "  Input succeeded, input 'q' Exit program")
        

Operation results:

That's perfect. I'm not counting words. I'm obsessive-compulsive disorder (serious face)!

continue:

continue is to jump out of the current loop and execute the next loop, that is, it has no ability to terminate the loop. It can only make the loop less times

Let's try to replace the break in the above code with continue

while True:
    a = input()
    if a == "q":
        print("Are you sure you want to push exit? If you are sure, please enter OK to exit and confirm")
        if input() == "OK to exit":
            print("Exited, program ended")
        
    else:
        print(a + "  Input succeeded, input 'q' Exit program")
        

it won 't work

I can't quit!

Sure enough, what's the use of continue?

I won't talk about it first, but look at it first:

for i in range(10):
    if i % 5 == 0:
        continue
    else:
        print(i)  

Operation results:

return:

Return means return, which is the return value used in the function. As for what the function is, we will talk about it one after another in this column. Just look at the effect first

We calculate that when the value of i loops to 5, let a+b, and then the calculation ends

When i is 5, it will be forcibly terminated whether the cycle is completed or not

def sum(a, b):
    for i in range(10):
        if i<a:
            pass
        else:
            a+=b
            return a
print(sum(5, 2))

pass means to do nothing

The operation result is: 7

So what if we change the position of return?

def sum(a, b):
    for i in range(10):
        if i<a:
            pass
        else:
            a+=b
        return a
print(sum(5, 2))

Our loop will terminate the first time, because the value of i is 0 for the first time. If the judgment conditions are met, execute the return statement to end the loop

So what if we change it again? If we put it outside the loop this time, it will not end until the loop is executed. Will a+=b be executed once, or 7

def sum(a, b):
    for i in range(10):
        if i<a:
            pass
        else:
            a+=b
    return a
print(sum(5, 2))

1.9 functional programming

Be careful not to get confused with functions in mathematics

So what exactly is a function?

In fact, when we need a large number of repeated code blocks in the program, we encapsulate them into a code block, which is represented by a name, which is an identifier. Rules for identifiers need to be followed.

The advantage of function is to avoid code repetition rate and improve development efficiency.

For example: we need to let the computer Express (SAO words) to us and output a love word, such as this one

"I love you!"
"I'll give you a monkey"
"Ah, I like you so much"

According to what I learned before, just print() one by one

But I need you to give me a confession anytime?

I'm afraid it's inappropriate to use a loop at this time. Let's use our function

Of course, python comes with many built-in functions, and the functions we define ourselves are called custom functions.

1. Nonparametric function:

Nonparametric functions are the most basic functions, which are rarely used. They are used to practice understanding functions.

def Function name():
    code

use:

# definition
def Qinghua():
    print("I love you!")
    print("I'll give you a monkey")
    print("Ah, I like you so much")
# call
Qinghua()

Operation results:

It doesn't seem to have much effect!

Not really. Look at this

# definition
def Qinghua():
    print("I love you!")
    print("I'll give you a monkey")
    print("Ah, I like you so much")
# call
Qinghua()
for i in range(10):
    print("Yes{}second".format(i))
    Qinghua()

It can be used in the form of call whenever you want to use it, and you don't need to call again.

Just like variables, but functions are more complex than ordinary variables

2. Parametric function

Functions can pass parameters, and parameters are divided into formal parameters and arguments

Formal parameters are formal parameters. Just like a company has employees, cleaners, chairman and other positions, but some positions are empty. These empty positions are equivalent to formal parameters. Someone needs to do this position to play a role, and the person who can play the role of the position is called an actual parameter (actual parameter).

When we define a function with parameters, we need to define formal parameters to represent our function. With these things, if you want our function to work, you need to pass us actual parameters.

There are participation and participation. Where does it reflect participation?

When we define, we need to define formal parameters in parentheses to receive parameters

When we call, we also pass the arguments through the parentheses after the function name

use:

We will define a parameterized function to splice the two parameters together and traverse

def PinJie(a, b):
    str_ = str(a)+str(b)
    print(str_)
    for i in str_:
        print(i)

PinJie("sasa", 4564)
#You can also write that
"""
PinJie(a="sasa",b=4564)
The advantage of this writing is
 Even if your position is wrong
 The parameters passed are also correct
 That is, the position of parameter passing is not fixed
 Like this
PinJie (b=4564, a='sasa')
It's exactly the same
"""

function:

3. Function of return

As mentioned earlier, return is generally used in functions. What is its function?

First, it is interpreted according to the law of seeing the name and knowing the meaning: return

Indeed, his function is to return, return value

return xxx to achieve the goal of returning value. Here is what xxx is returned. As for what xxx is.. As we all know, xxx can be anything!

So where is the returned value? When the function is called, the function name (parameter) is the returned value

use:

Look at the function above. It displays the spliced results and uses the print() function (built-in function)

So let's try return

def PinJie(a, b):
    str_ = str(a)+str(b)
    return str_
    for i in str_:
        print(i)

PinJie("sasa", 4564)

So what happens?

The answer is, nothing will be displayed!

Why? Because we didn't use the print() function (nonsense, that's not there!)

Why do you say that? As I said last time, return is used to end a piece of code, and we return in the middle. The following instructions will not be executed and will end directly.

How to display the loop? Put return at the bottom of the function. I won't show it. Try it yourself, or the number of words will be counted! (dog head, save your life!)

As mentioned above, the returned value is received by * * function name () * * so it is now a value. If you want it to be displayed, you can only use print()!

def PinJie(a, b):
    str_ = str(a)+str(b)
    return str_
    for i in str_:
        print(i)

p = PinJie("sasa", 4564)
print(p)

result:

It displays the return value, that is, the result of function splicing

1.10 object oriented programming

1. Understanding

Programming languages can be divided into object-oriented (Java, Python) and process oriented (C language). Object-oriented needs some abstract thinking.

What is the difference between process oriented and object-oriented?

Facing the process, pay attention to doing it by yourself, which means doing it by yourself; Object oriented is more likely to find someone to do things for themselves.

Take the cliche example - washing clothes:

Process oriented:

Process oriented laundry is:

  1. Take the clothes to the washing machine
  2. Put it in
  3. wait for
  4. Take it out

You have to repeat these operations the next time you wash the clothes

And this is functional programming

object-oriented:

Object oriented is:

  1. Create a robot

  2. Teach him how to wash clothes

    1. Take the clothes to the washing machine
    2. Put it in
    3. wait for
    4. Take it out
  3. Let him work

The next time you need to wash clothes, just let the robot do it

The object-oriented is the class and object, and then look down

2. Class

Class is an abstract thing, such as human, animal and plant. Class is a collection of things with some same characteristics

So how to define a class that belongs to us? There are three methods, and the third is recommended

# Define an Xxx class
class Xxx:
    Code block
class Xxx():
    Code block
class Xxx(object):
    code

That's it

Classes need properties, behaviors (Methods) and so on

Attributes are local variables in a class

Behavior is the function defined in the class

Construction method:

Each class has some default behaviors (Methods), such as this constructor__ init__

Each class has this constructor by default, and the contents of the constructor will run when instantiated, that is, you will call this constructor when instantiated__ init__ Construction method.

And what is the object?

3. Object

An object is an instantiation of a class. For human beings, human beings are a class, and each of us is an instantiation object of human beings.

Look at the code:

# Define a human being
class Person(object):
    pass

# Instantiate object
xiaoming = Person()

Obviously, xiaoming is an instantiated object of the Person class. In other words, xiaoming is a Person. In this sentence, xiaoming is an object and Person is a class

4. Code implementation of washing machine

code:

class Robot(object):

    def __init__(self):
        print("Take the clothes to the washing machine")
        print("Put the clothes in the washing machine")
        print("When the clothes are washed")
        print("Get the clothes out")

        
xiaoming = Robot()

Operation results:

5. Packaging

You can encapsulate the parameters of the construction method so that they can be called in each method

It's wrong to think of such code

class Person(object):

    def __init__(self, name, age):
        pass
    
    def speak(self):
        print(f"{age}Year old{name}Can speak")

Menger = Person("Bu Xiaochan", 20)
name = Menger.name
age = Menger.age
person.speak()
print("full name:{} \n Age:{}".format(name, age))

Because of the name and age in the speak method, the computer does not know who they are, and the computer does not know them. The two lines self.name = name and self.age = age are equivalent to telling the computer that name and age are class parameters

class Person(object):

    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def speak(self):
        print(f"{age}Year old{name}Can speak")

Menger = Person("Bu Xiaochan", 20)
name = Menger.name
age = Menger.age
Menger.speak()
print("full name:{} \n Age:{}".format(name, age))

That's right. The output is:

Name: Bu Xiaochan

Age: 20

6. Succession

Python's object-oriented can be inherited, just as you inherited some characteristics of your father and mother, subclasses and inherited parent classes in Python. When it comes to inheritance, you have seen it. The third of the three methods of defining classes I mentioned in the previous article:

class ClassNmae(object):
    Code block

The object in parentheses after ClassNmae is the parent class, and ClassName is the child class

The subclass inherits everything from the parent class

7. Privatization

As mentioned in the previous article, encapsulation not only uses the content we don't want others to see, but also needs to be used, which is called through internal class calls.

At this point, I have to mention the previous article:

class Person(object):
    def __init__(self, name, age):
        self.xxx = name
        self.xxxx = age
        

The names behind self can be named at will. The last one is the same as the last one, just for good memory

As long as you remember, it's upside down and nothing

Property privatization:

What is private property?

For example: your private money, your mobile phone, the little secrets in your computer and so on

So what's the purpose of encapsulation? Isn't it to hide the code you don't want others to know

Therefore, there is a property privatization, which can make your class properties private, which is different from the encapsulation in the previous article. Encapsulation can also be called by instantiating objects; Once this property becomes private, you cannot call it outside the class

What if I want to use it? Call inside the class!

Well, after all this, you must be tired of coding

Use format:

class Xxx(object):
    age = 20
    _name = "Xxx"

This kind of property with an underscore in front is a private property, which cannot be called through the method of instantiating the object outside the class

Specific application:

"""
Define a very human
 Including name, age, weight and height
 Privatize weight settings
 By calling inside the class, you can see your weight outside the class
"""
class Person(object):
    _weight = 70
    def __init__(self, name, age, height):
        self.name = name
        self.age = age
        self.height = height
 
    def weightPrint(self):
        print("My weight is:", self._weight)

person = Person("Bu Xiaochan", 20, 180)
person.weightPrint()

This weight can't pass person.weight, person_ Weight is called because this property is private

Method privatization:

I don't think there's much to say about this, just add one in front of the defined class method name_ That's it

class Person(object):
    def _love(self):
        print("I have a crush on you Xxx")

This method cannot be called by instantiating an object. It needs to be called as follows:

class Person(object):
    def _love(self):
        print("I have a crush on you Xxx")
    
    def speakLove(self):
        self._love()

2, numpy quick start

What is numpy?

numpy extension library is an important extension library for Python to support scientific computing. It is one of the necessary extension libraries in the field of data analysis and scientific computing, such as scipy, pandas, sklearn and so on. It provides powerful N-dimensional array and its related operations, complex broadcast functions, C/C + + and Fortran code integration tools, linear algebra, Fourier transform, random number generation and other functions. This chapter introduces arrays and matrices and their related operations, which lays a good foundation for learning and understanding data analysis and machine learning in the following chapters.

In short, it's what you use to lay the foundation for the field of artificial intelligence. If you talk well, the foundation is not strong, and the earth moves and mountains shake~

So this place should study hard~~

2.1 simple use

The data type used in numpy is not the self-contained list, but the ndarray in numpy

So why use ndarray instead of list?

Because ndarray is written in c/c + +, it occupies less memory and uses faster

There are many methods to create an ndarray. Here, we use the array method to convert

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author:  Smly
# @datetime:  2021/9/26 22:22 
# @Version:  1.0

import numpy as np

li = [1, 2, 3]
tp = (1, 2, 3)

nday1 = np.array(li)
nday2 = np.array(tp)

print("*****type*****")
print(type(nday1))
print(type(nday2))

print("*****array*****")
print(nday1)
print(nday2)

Output results:

*****type*****
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
*****array*****
[1 2 3]
[1 2 3]

2.2 array usage

If the elements are the same, you can add, subtract, multiply and divide

  • When the number of elements is the same, you can add or subtract between arrays
  • When the number of elements is the same, you can multiply and divide between arrays
  • The multiplication and division of a number can be carried out automatically to all elements

See the example to understand:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author:  Smly
# @datetime:  2021/9/26 22:22 
# @Version:  1.0

import numpy as np
	
li = [1, 2, 3]	# list
tp = (1, 2, 3)	# tuple

nday1 = np.array(li)	# The built-in method converts the list to ndarray
nday2 = np.array(tp)	# The built-in method converts tuples to ndarray
nday3 = np.array(range(5)) # Use the range built-in function method to generate the ndarray continuous array
nday4 = np.array(range(5, 10))  # Use the range built-in function method to generate the ndarray continuous array

print("*****type*****")
print(type(nday1))
print(type(nday2))
print(type(nday3))
print(type(nday4))

print("*****array*****")
print(nday1)
print(nday2)
print(nday3)
print(nday4)

print("*****Array addition and subtraction*****")
print(nday2 + nday1)
print(nday2 - nday1)
print(nday4 - nday3)
print(nday3 + nday4)
# When the number of elements is the same, you can add or subtract between arrays

print("*****Array multiplication and division*****")
print(nday2 * nday1)
print(nday2 // nday1)
print(nday4 * nday3)
print(nday4 // nday3)
# When the number of elements is the same, you can multiply and divide between arrays

print(nday1 * 3)
print(nday2 // 2)
print(nday3 * 2)
print(nday4 // 2)
# The multiplication and division of a number can be carried out automatically to all elements


Operation results:

*****type*****
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
<class 'numpy.ndarray'>
*****array*****
[1 2 3]
[1 2 3]
[0 1 2 3 4]
[5 6 7 8 9]
*****Array addition and subtraction*****
[2 4 6]
[0 0 0]
[5 5 5 5 5]
[ 5  7  9 11 13]
*****Array multiplication and division*****
[1 4 9]
[1 1 1]
[ 0  6 14 24 36]
[0 0 0 0 0]
[3 6 9]
[0 1 1]
[0 2 4 6 8]
[2 3 3 4 4]

2.2 creating arrays

The array() method just used is to convert iterative objects such as lists and tuples into an array of ndarray s

The next step is to create arrays automatically

1. Use empty to create an empty array

There will be an initial value, but the initial value of the array is None

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author:  Smly
# @datetime:  2021/9/28 12:29 
# @Version:  1.0
import numpy as np

em1 = np.empty(5)       # Create an empty array with a length of 5
em2 = np.empty((2, 2))  # Create a 2 * 2 empty two-dimensional array


print("One dimensional array, length 5", em1)
print("Two dimensional array, length 2*2", em2)

Output results:

[9.96754604e-312 9.96754614e-312 2.60799828e-310 9.34609789e-307
 0.00000000e+000]
[[6.95299778e-310 9.96747617e-312]
 [0.00000000e+000 6.95299776e-310]]

2. Use the rage function to create

Range is a method of numpy. Its function is almost the same as that of range, a Python built-in function. It is used to generate arrays

Import numpy package first

import numpy as np

Then create the array

print("*****ararge Create array*****")

aran_arr1 = np.arange(5)
aran_arr2 = np.arange(5, 10)

print("*****type*****")
print(type(aran_arr1))
print(type(aran_arr2))

print("*****array*****")
print(aran_arr1)
print(aran_arr2)

3. Use the zeros function to generate an array

zeros function is a method built in numpy. It is used to generate a specified number of all 0 one-dimensional arrays, all 0 two-dimensional arrays, etc

Take the following example:

Generate a one-dimensional array with three elements and a one-dimensional array with five elements:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author:  Smly
# @datetime:  2021/9/27 21:31 
# @Version:  1.0

import numpy as np

zero_arr = np.zeros(3)

zrro_arr2 = np.zeros(5)

print(zero_arr)
print(zrro_arr2)

Operation results:

[0. 0. 0.]
[0. 0. 0. 0. 0.]

Of course, this is just a one bit array. You can also generate a two-dimensional array, that is, a matrix

Use the following code to generate a matrix with three rows and three columns

zero_arr3 = np.zeros((3, 3))

Output:

print(zero-arr3)

Operation results:

[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]

4. The ones function generates an array

Use the ones function to generate the full 1 function. The method is the same as zeros

import numpy as np

ones_arr1 = np.ones(3)

Output results:

[1. 1. 1.]

Generate a matrix with three rows and three columns

import numpy as np

ones_arr2 = np.ones((3, 3))

Output results:

[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

5. diag function generates diagonal matrix

What is a diagonal matrix? You should have heard of diagonals. A matrix is a matrix generated on a diagonal

Function arguments are an ancestor

Look at the code and running results to understand more deeply

import numpy as np

diag_arr = np.diag((4, 3, 2, 1))

Put diag_ The output of arr is:

[[4 0 0 0]
 [0 3 0 0]
 [0 0 2 0]
 [0 0 0 1]]

See if the diagonal is the parameter of your function. Now understand

6. N-dimensional array

An N-dimensional array is a multi-dimensional array, which can be understood as an array or an array. You can refer to this form

[[[1 2]
  [3 4]]
 [[5 6]
  [7 8]]]

This concept is really a little abstract and difficult to understand. This is a three-dimensional array, which is converted into ndarray through the three-dimensional list using the array method

code:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author:  Smly
# @datetime:  2021/9/27 13:29 
# @Version:  1.0
import numpy as np

li = [
    [[1, 2], [3, 4]],
    [[5, 6], [7, 8]]
]

te1 = np.array(li)

print(te1)

Of course, a two-dimensional array is also an N-dimensional array

2.3 matrix

An array is an array and a matrix is a matrix.

Array is a kind of data structure, which can store a variety of data and have multiple dimensions

Matrix is a concept in mathematics. It can only store numbers and can only be in two-dimensional form

The method of generating matrix is the same as that of generating N-dimensional array

First use the list to create a two-dimensional list, and then use the numpy method to convert it into a matrix. Of course, there are several methods to generate a matrix

import numpy as np


li = [[1, 2, 3, 4], [5, 6, 7, 8]]

j1 = np.matrix(li)

print(j1)
print(type(j1))
print(j1.dtype)

Output the matrix:

Output matrix: [[1 2 3 4]
 [5 6 7 8]]
Matrix in Python Type of: <class 'numpy.matrix'>
stay numpy Types in: int32

Matrix can carry out various mathematical operations, which has been well supported in numpy children's palace. I won't elaborate here

2.4 broadcasting

What is broadcasting? Broadcasting can send your things to various areas. Generally, in the computer, it sends information to each computer in the local area network.

There is also a broadcast in numpy, but it automatically adds elements to the array and matrix. As you can see above, when an array multiplies and divides an element, all elements in the array will multiply this number

import numpy as np

li1 = [1, 2, 3, 4]
print(np.array(li1)*10)

Output results:

[10 20 30 40]

This is broadcasting. It broadcasts the number 10 to the array converted from li, which can multiply all elements of the array by 10.

The same can be true for arrays of different dimensions

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author:  Smly
# @datetime:  2021/9/27 13:40 
# @Version:  1.0

import numpy as np

li = [[1, 2, 3, 4], [5, 6, 7, 8], [2, 4, 6, 8]]

gb1 = np.array(li)

li1 = [1, 2, 3, 4]
gb2 = np.array(li1)

print(gb1*gb2)

Broadcast each element of a one-dimensional array to a two-dimensional array one by one, provided that:

The number of one-dimensional arrays in a two-dimensional array is the same as the number of one-dimensional arrays

Operation results:

[[ 1  4  9 16]
 [ 5 12 21 32]
 [ 2  8 18 32]]

2.5 accessing array elements

numpy comes with an insert function that can insert elements into an array

See the example:

li = [[1, 2, 3, 4], [5, 6, 7, 8], [2, 4, 6, 8]]
gb1 = np.array(li)
np.insert(gb1, 1, [1, 2, 3, 4])

Output results:

[1 1 2 3 4 2 3 4 5 6 7 8 2 4 6 8]

There is also a built-in add function that can add and subtract arrays

Array, you can use subscripts to get array elements

import numpy as np

li1 = [1, 2, 3, 4]
gb2 = np.array(li1)
print(gb2[1])

The output result is:

2

Of course, it is an array, and you should also use circular statements to traverse the array

3, matplotlib quick start

matplotlib is a module that visualizes data.

What? You don't even know what data visualization is?

Functions learned in high school (don't get confused with functions in Python) you know, drawing the image of the function is data visualization

matplotlib is a standard library for data visualization. It is very suitable for numpy module and pandas module.

It can draw many forms of images, including:

  • Line chart - plot ()
  • Scatter chart - scatter ()
  • Pie chart - pie ()
  • Histogram bar ()
  • Radar chart - polar ()
  • 3D drawing - mplot3d

3.1 basic theory

For drawing, we need data, axis labels, titles, axis scales and other attributes.

  1. Data can use numpy to generate a one-dimensional list, which is also called a vector in mathematics.

  2. The axis labels are set by the xlabel(), ylabel() method (function)

  3. The title is set by the title() method (function)

  4. The axis scale can be set using the xticks(), yticks() method (function)

3.2 draw line chart

Import module:

import numpy as np
# numpy is used to generate data
import matplotlib.pyplot as plt 
# Use the pyplot module in matplotlib to plot

Generate x-axis and y-axis data:

x = np.arange(0,6,0.1) # x-axis data
y = np.sin(x) # y-axis data

Draw pattern:

plt.plot(x,y,label="sin")
# Draw a line chart with X as the x-axis data and y as the y-axis data, and set the label on the line as sin

Set properties such as Title:

plt.xlabel("number")  # x-axis label
plt.ylabel("sin")  # y-axis label
plt.title("sin fun")   # Image title

Display the image:

plt.show()  # Display image

Image display effect:

3.3 plot scatter diagram

Change the plot. Plot () of the code drawing image to plt.scatter()

All codes:

import numpy as np
# numpy is used to generate data
import matplotlib.pyplot as plt

# Use the pyplot module in matplotlib to plot

x = np.arange(0, 6, 0.1)  # x-axis data
y = np.sin(x)  # y-axis data
plt.scatter(x, y, label="sin")
# Draw a line chart with X as the x-axis data and y as the y-axis data, and set the label on the line as sin
plt.xlabel("number")  # x-axis label
plt.ylabel("sin")  # y-axis label
plt.title("sin fun")  # Image title
plt.show()  # Display image

3.4 drawing pie chart

Draw a pie chart of the programming language. The data is written casually. Don't take it seriously. Another point is that Chinese is not supported by default

Import module first

import numpy as np
# numpy is used to generate data
import matplotlib.pyplot as plt
# Use the pyplot module in matplotlib to plot

Create data:

student_souce = np.array([25, 35, 45, 60])

Draw pattern:

plt.pie(student_souce, labels=["C", "Python", "Java", "C+++"], autopct='%.2f%%')
# Set up student_souce is the data, and the name of each data is the parameter of labels, and the percentage of each data is formatted and output

Set title and display image:

plt.title("Test")  # Image title
plt.show()  # Display image

Full code:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author:  Smly
# @datetime:  2021/9/28 12:56 
# @Version:  1.0
import numpy as np
# numpy is used to generate data
import matplotlib.pyplot as plt
# Use the pyplot module in matplotlib to plot

student_souce = np.array([25, 35, 45, 60])
plt.pie(student_souce, labels=["C", "Python", "Java", "C+++"], autopct='%.2f%%')
# Set up student_souce is the data, and the name of each data is the parameter of labels, and the percentage of each data is formatted and output
plt.title("Test")  # Image title
plt.show()  # Display image

Operation results:

3.5 drawing histogram

Mr. into data, and then draw the image

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author:  Smly
# @datetime:  2021/9/28 13:02 
# @Version:  1.0

import numpy as np
# numpy is used to generate data
import matplotlib.pyplot as plt
# Use the pyplot module in matplotlib to plot

x = np.arange(0, 6)  # x-axis data
plt.bar(x, x)
# Take x as the x-axis data and X as the column height to draw the histogram
plt.xlabel("number")  # x-axis label
plt.ylabel("sin")  # y-axis label
plt.title("sin fun")  # Image title
plt.show()  # Display image

Operation results:

3.6 adding grid lines to the drawing

Use the gird() method (function) to set the gridlines

Function parameters:

  • b: Optional. The default value is None. Boolean values can be set. True means to display grid lines and false means not to display. If the * * kwargs parameter is set, the value is true.
  • Which: optional. The optional values are 'major', 'minor' and 'both'. The default value is' major ', indicating the grid line to which the change is applied.
  • Axis: optional. It can set which direction of grid lines to display. It can take 'both' (default), 'x' or 'y', representing two directions, X-axis direction or y-axis direction respectively.
  • **kwargs: optional. Set the grid style. It can be color = 'r', linestyle = '-' and linewidth=2, representing the color, style and width of grid lines respectively.

The specific effect is to add a plt.gird() to plt.show() in the above code

4, Fundamentals of Mathematics

Artificial intelligence requires a lot of mathematical foundations: linear algebra, probability, high numbers, etc

Fans will be drawn from the comment area and sent out * * fundamentals of artificial intelligence mathematics * *. Note that only fans will be sent

Book Introduction:

  1. Zero foundation is also a quick start. Starting from the most basic foundation of higher mathematics, this book goes from shallow to deep and layers by layers. While consolidating the inherent knowledge, it deeply explains the algorithm principle of artificial intelligence. No matter whether the reader is engaged in computer related industry or has been exposed to artificial intelligence, he can get started quickly through this book.
  2. Introduce mathematical knowledge from a new perspective. The introduction method of simulating mathematical inference by computer program makes mathematical knowledge clearer and easier to understand, and makes it easier for beginners to deeply understand the meaning of mathematical theorems and formulas, so as to stimulate readers' interest in learning.
  3. Combination of theory and practice. At the end of each chapter, it provides "comprehensive examples" carefully designed according to the theoretical knowledge points of the chapter. Readers can practice through comprehensive cases to lay the foundation for future algorithm learning.
  4. A large number of example source code + Exercise answers to solve problems for learning. All examples in this book have clear and complete source code. After each chapter, there are exercises and supporting questions and answers to explain clearly, so as to solve all the puzzles of readers in learning.

Book cover:

[content introduction]

This book aims at zero basis explanation. It is for readers learning data science and artificial intelligence to explain every knowledge point in a popular way, in order to help readers quickly lay a mathematical foundation.
The book is divided into four chapters, a total of 17 chapters. Among them, the first chapter is the basis of mathematical knowledge, which mainly describes the basis of advanced mathematics, calculus, Taylor formula and Lagrange multiplier method; Chapter 2 is the core of mathematical knowledge, which mainly describes the basis of linear algebra, eigenvalue and matrix decomposition, the basis of probability theory, random variables and probability estimation; Chapter 3 is the improvement of mathematical knowledge, which mainly describes several distributions of data science, kernel function transformation, entropy and activation function; Chapter 4 is the application of mathematical knowledge, which mainly describes regression analysis, hypothesis test, correlation analysis, analysis of variance, cluster analysis, Bayesian analysis and so on.
This book is suitable for readers preparing to engage in data science and artificial intelligence related industries.

[introduction to the author]

Tang Yudi, doctor of computer science, expert in Artificial Intelligence Certification of Netease cloud classroom, lecturer of 51CTO college and CSDN blog expert.
Li Lin, associate professor of Henan University of technology, has in-depth research in the fields of software engineering, machine learning, artificial intelligence and pattern recognition.
Hou Huifang, Professor, PhD in communication and information systems, PLA Information Engineering University, specializes in machine learning, big data retrieval, artificial intelligence and pattern recognition.
Wang shewei, associate professor of Henan University of technology, PhD in aerospace manufacturing of Northwest University of technology and visiting scholar of Norwegian University of science and technology, has rich practical experience in digital manufacturing, enterprise management system, machine learning and data mining.

JD self purchase link:

https://item.jd.com/13009168.html

Dangdang self operated purchase link:

http://product.dangdang.com/29145839.html

Pay attention to getting more benefits~~

Tags: Python Pycharm AI

Posted on Tue, 28 Sep 2021 06:35:40 -0400 by brokenshadows