(머신러닝-5) 머신러닝을 위한 파이썬 Basic

현재 공개된 텐서플로우의 예제들이 파이썬 언어로 작성되어 있기 때문에 파이썬을 이용해서 머신러닝을 공부하는 것이 좋다.

파이썬은 네덜란드의 개발자 Guido Van Rossum이 개발한 언어로 다른 언어와 비교해서 문법이 쉽고 간결하다.

동적언어이며 인터프리터 언어이다.

Hello World

a = "Hello World"
print(a)
print("Hello World!")

자료형은 다른 언어와 같다. int, float, bool, str 등

그러나 파이썬은 선언 과정이 없기 때문에 입력된 값에 맞춰 자료형을 판단한다.

a = 1
b = 1.0
sum = a + b
print(a)
print(b)
print(sum)

또한 파이썬은 데이터 자료형이 다를 때 자동 형 변환이 된다.

자료구조

분류자료형설명
리스트list파이썬 객체들의 모음을 표현하는 자료형으로 '목록'처럼 순서 있는 값들을 나열한다.[1,2,3,4], ['a','b','c','d'],[[1,2],[3,4]], [1,2,'a','b']
튜플tuple파이썬 객체들의 모음을 표현하는 자료형으로 순서있는 값들을 나열한다. 내용을 바꿀 수 없다.
('a','b','c','d'). (1,2,(3,4)), (1,2,[3,4])
#괄호을 빼도 된다.
딕셔너리dict
파이썬 객체들의 모음을 표현하는 자료형으로써 순서가 없는 값들을 나열합니다.
'사전'처럼 미리 키(key)를 등록해 놓고 그 키를 통해 값을 이용할 수 있다.
{'one':1, 'two':2}, {1:1,2:2},
{'one':'un', 'two':'deux'}
#키는 고정된 값이라서 리스트와 사전이 올 수 없다.
set집합을 표현할 수 있다. 순서가 없고 중복된 자료를 넣으면 안된다.
{'one','two'n'three','four'}

List 예제
a = []
b = [1, 2, 3]
c = [4, 5, 6]
d = [['a', 'b', 'c'], ['A', 'B', 'C']]

print(b)
print(b[0])
print(b[1])
print(b[-1])

b[0] = 10print(b)
print(b+c)
print(d)
print(d[0])
print(d[1])
print(d[0][1])
print(d[1][1])

실행결과
[1, 2, 3]
1
2
3
[10, 2, 3]
[10, 2, 3, 4, 5, 6]
[['a', 'b', 'c'], ['A', 'B', 'C']]
['a', 'b', 'c']
['A', 'B', 'C']
b
B

리스트 연산
a = [1, 2] * 5print(a)
실행결과
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
[1,2]가 5번 반복되는 결과가 나온다.
그래서
a = [1, 2]
for i in range(2):
    a[i] *= 5print(a)
실행결과
[5, 10]

리스트 슬라이싱
a = [7, 9, 8, 5, 6]
print(a[2:])
print(a[:])
print(a[2:4])
실행결과
[5, 10]
[8, 5, 6]
[7, 9, 8, 5, 6]
[8, 5]

리스트 슬라이싱2
a = [7, 9, 8, 5, 6]
print(a[::-1])
print(a[::2])
print(a[::3])
실행결과
[6, 5, 8, 9, 7]
[7, 8, 6]
[7, 5]

리스트의 메소드
a = [5, 2, 1, 4, 3]
a.append(6)
print(a)
a.remove(1)
print(a)
del a[3]
print(a)
print(a.index(6))
a.sort()
print(a)
a.sort(reverse=True)
print(a)
a.append(6)
print(a)
print(a.count(6))
실행결과
[5, 2, 1, 4, 3, 6]
[5, 2, 4, 3, 6]
[5, 2, 4, 6]
3
[2, 4, 5, 6]
[6, 5, 4, 2]
[6, 5, 4, 2, 6]
2

튜플의 인덱싱 및 슬라이싱
a = (7, 9, 8, 5, 6)
print(a[1])
print(a[2:])
실행결과
9
(8, 5, 6)
튜플과 리스트의 차이는 튜플은 변경이 안된다는 것!
즉, 리스트는 몇 개의 요소가 들어있는지 모르고 변경이 자주 일어날 때 사용되며,  튜플은 요소들이 몇 개가 있는지 아는 상황에서 그 요소의 위치(인덱스)가 중요할 때 사용한다.

딕셔너리
dict = {'A': 'attack', 'M': 'move', 'P': 'patrol'}
print(dict)

dict = {}
dict['A'] = 'Apple'dict['B'] = 'Banana'dict['M'] = 'Melon'print(dict)
실행결과
{'M': 'move', 'A': 'attack', 'P': 'patrol'}
{'M': 'Melon', 'A': 'Apple', 'B': 'Banana'}

A = {'one', 'two', 'three'}
B = { 'one', 'three', 'five'}
print(A & B)
print(A.intersection(B))
print(A | B)
print(A.union(B))
print(A - B)
print(B - A)
print(A.difference(B))
실행결과
{'three', 'one'}
{'three', 'one'}
{'five', 'three', 'two', 'one'}
{'five', 'three', 'two', 'one'}
{'two'}
{'five'}
{'two'}

자료구조 비교

변경삭제순서중복
리스트OOOO
튜플XXOO
딕셔너리OOXX
집합OOXX

제어문

조건문 if
파이썬에서 조건문은 다른 언어와 비슷하지만 문장을 구분하는 방법이 인덴트(들여쓰기) 이다.
그리고, 조건식의 끝에 콜론(:)이 필요하다.
a = 10b = 20if a < b:
    print(b)
else:
    print(a)
실행결과
20

조건문 if...elif
a = 20if a > 0:
    print('plus')
elif a < 0:
    print('minus')
else:
    print('zero')
실행결과
plus

in, not in 문
lis = [1, 2, 3]
print(1 in lis)
print(1 not in lis)
실행결과
True
False

반복문 While
num = 0while num < 10:
    print(num)
    num += 1
실행결과
0
1
2
3
4
5
6
7
8
9

break 사용
num = 0while True:
    print(num)
    if num == 5:
        break    num += 1
실행결과
0
1
2
3
4
5

continue 사용
num = 0while num < 10:
    num += 1    if num % 2 == 0:
        continue    print(num)
실행결과
1
3
5
7
9

반복문 for
num = 10sum = 0
for x in range(num):
    sum += x
print(x)
실행결과
9

리스트 컴퓨리핸션(List Comprehension)
listComprehension = [v for v in range(0, 30) if v % 10 == 0]
listComprehension2 = [[v, x, v * x] for v in range(1, 10) for x in range(1, 10)]
print(listComprehension)
print(listComprehension2)
실행결과
[0, 10, 20]
[[1, 1, 1], [1, 2, 2], [1, 3, 3], [1, 4, 4], [1, 5, 5], [1, 6, 6], [1, 7, 7], [1, 8, 8], [1, 9, 9], [2, 1, 2], [2, 2, 4], [2, 3, 6], [2, 4, 8], [2, 5, 10], [2, 6, 12], [2, 7, 14], [2, 8, 16], [2, 9, 18], [3, 1, 3], [3, 2, 6], [3, 3, 9], [3, 4, 12], [3, 5, 15], [3, 6, 18], [3, 7, 21], [3, 8, 24], [3, 9, 27], [4, 1, 4], [4, 2, 8], [4, 3, 12], [4, 4, 16], [4, 5, 20], [4, 6, 24], [4, 7, 28], [4, 8, 32], [4, 9, 36], [5, 1, 5], [5, 2, 10], [5, 3, 15], [5, 4, 20], [5, 5, 25], [5, 6, 30], [5, 7, 35], [5, 8, 40], [5, 9, 45], [6, 1, 6], [6, 2, 12], [6, 3, 18], [6, 4, 24], [6, 5, 30], [6, 6, 36], [6, 7, 42], [6, 8, 48], [6, 9, 54], [7, 1, 7], [7, 2, 14], [7, 3, 21], [7, 4, 28], [7, 5, 35], [7, 6, 42], [7, 7, 49], [7, 8, 56], [7, 9, 63], [8, 1, 8], [8, 2, 16], [8, 3, 24], [8, 4, 32], [8, 5, 40], [8, 6, 48], [8, 7, 56], [8, 8, 64], [8, 9, 72], [9, 1, 9], [9, 2, 18], [9, 3, 27], [9, 4, 36], [9, 5, 45], [9, 6, 54], [9, 7, 63], [9, 8, 72], [9, 9, 81]]

함수

사용자 정의 함수
def sum(a, b):
    return a + b

a = 2000b = 17c = sum(a, b)
print(c)
실행결과
2017

매개변수가 유동적인 함수
def sum_many(*args):
    sum = 0    for i in args:
        sum = sum + i
    return sum
result = sum_many(2000, 10, 7)
print(result)
실행결과
2017

2개의 반환값을 가지는 함수
def sum_and_mul (a, b):
    return a+b, a*b
result = sum_and_mul(1008, 2)
print(result)
실행결과
(1010, 2016)

변수의 유효 범위
a = 1
def test(a):
    a = a * 1000    print(a)

test(a)
print(a)
실행결과
1000
1

전역변수 global
a = 1def test():
    global a
    a = a*1000    print(a)
print(a)
test()
print(a)
실행결과
1
1000
1000

다음 포스팅에서는 머신러닝을 위한 파이썬 Advanced에 대해서 살펴보겠습니다.

댓글

  1. 공부하기 좋은 사이트 추천드립니다. sololearn 이란 곳이고
    https://www.sololearn.com/Course/Python/ 웹 및 앱으로 무료 서비스 중입니다.

    답글삭제
  2. sololearn 아주 좋네요! 좋은 정보 감사합니다. ^^

    답글삭제

댓글 쓰기

주간 인기글

[정보] 인스타그램은 당신의 소리를 '듣고' 있을 수도 있습니다

안드로이드에서 당겨서 새로고침(SwipeRefreshLayout) 쉽게 구현하기

[앱 디자인] 벤치마킹에 유용한 사이트

[앱 디자인] 디자인 가이드 만들기 - 아이폰

[AWS] WinSCP 를 이용해 Linux 인스턴스로 파일 전송하기