본문 바로가기

Python22

Python 재귀 알고리즘 재귀(recursion)는 어떠한 이벤트에서 자기 자신을 포함하고 다시 자기 자신을 이용하여 정의되는 경우를 의미합니다. 재귀를 효과적으로 사용하면 프로그램을 간결하고 효율성 좋게 작성할 수 있습니다. 재귀를 사용하는 대표적인 예로 양의 정수 곱을 구하는 팩토리얼(factorial) 문제가 있습니다. 팩토리얼은 양의 정수를 순서대로 곱한다는 의미로 순차 곱셈이라고도 합니다. 팩토리얼 n! 의 정의(n은 양의 정수)는 1) 0!=1 2) n>0이면 n!=nx(n-1)! #factorial.py factoial함수는 매개변수 n에 전달받은 값이 0보다 크면 n*factorial(n-1)의 값을 반환하고, 그렇지 않으면 1을 반환합니다. 파이썬에서는 팩토리얼 값을 구하는 표준 라이브러리로 math모듈에서 fa.. 2021. 8. 10.
Python Stack,Queue 스택(stack)은 데이터를 임시 저장할 때 사용하는 자료구조로, 데이터의 입력과 출력 순서는 LIFO 방식입니다. 데이터를 넣는 작업을 푸시(push), 데이터를 꺼내는 작업을 팝(pop), 푸시와 팝이 이뤄지는 윗부분을 꼭대기(top)이라 하며 아랫부분을 바닥(bottom)이라고 합니다. 스택 배열은 stk, 푸시한 데이터를 저장하는 스택 본체인 list형 배열입니다. 인덱스가 0인 원소를 스택의 바닥이라고 하고, 가장 먼저 푸시하여 데이터를 저장하는 곳은 stk[0]입니다. 스택 크기는 capacity, 스택의 최대 크기를 나타내는 int형 정수이고 이 값은 배열 stk의 원소 수인 len(stk)와 일치합니다. 스택 포인터는 ptr, 스택에 쌓여 있는 데이터의 개수를 나타내는 정숫값을.. 2021. 8. 8.
Python 검색 알고리즘 선형 검색이란(Linear search) 직선 모양으로 늘어선 배열에서 검색하는 경우에 원하는 키값을 가진 원소를 찾을 때까지 맨 앞부터 스캔하여 순서대로 검색하는 알고리즘입니다. 배열 맨 앞부터 순서대로 원소를 스캔하는 원소의 값이 정해지지 않은 배열에서 검색할 때 사용하는 유일한 방법이다. #ssearch_while.py for i in range(len(a)): 이진 검색(binary search)은 원소가 오름차순이나 내림차순으로 정렬된 배열에서 좀 더 효율적으로 검색할 수 있는 알고리즘입니다. 이진 검색 범위는 맨 앞, 맨 끝, 중앙의 인덱스를 각각 pl, pr, pc라고 한다면 값은 0, n-1, (n-1)//2로 초기화시킵니다. 하나씩 이동하여 검색하는 선형 검색과 달리 주.. 2021. 8. 7.
3. Deep Learning(Hidden layer) 입력 부분 - Input layer 추가한 부분 - Hidden layer 출력 부분 - Output layer 결과를 만들기 위해서는 Hidden layer의 모든 값들을 입력으로 하는 하나의 Perceptron이 필요하다. 위의 그림 중 왼쪽을 보면 13개의 입력(input layer) 5개의 출력(hidden layer), 오른쪽을 보면 5개의 입력(hidden layer) 1개의 출력(output layer) -> 딥러닝, 인공 지능망의 토대라고 볼 수 있다. 모델의 구조(회귀모델)를 만드는 코드에 위의 hidden layer 추가해서 살펴보면, hidden layer의 활성화 함수(activation)는 'swish'를 사용해주고 X, H, Y는 순서대로 앞의 것을 입력으로 받아 연결시키면 되는.. 2021. 7. 28.
2. Deep Learning(보스턴 집값 예측, 아이리스 품종 분류) 평균의 대표성을 무너뜨리는 값들을 이상치라고 하는데 이상치로 인해 평균의 대표성을 사용하기 힘들 때 중간값을 사용한다. # 컬럼 설명 1 범죄율 4 강변 5 평균 방수 13 하위계층 비율 1~13까지 14에 영향을 미치는 독립변수 14 종속변수 X=tf.keras.layers.Input(shape=[13]) Y=tf.keras.layers.Dense(1)(X) 13개의 입력으로부터 1개의 출력을 만든다 model = tf.keras.models.Model(X, Y) model.compile(loss=‘mse’) 종속변수 1개의 결과를 만들 때 수식이 1개가 필요한데 만약 독립변수의 개수가 12개, 종속변수의 개수가 2개라면 Perceptron 2개가 병렬로 연결된 모델이 되는 것이고, 찾아야 하는 가중치.. 2021. 7. 28.
1. Strat Deep Learning (레모네이드 판매 예측) 데이터 준비하기 1 데이터를 불러온다 종속변수와 독립변수로 분리한다. 실습을 통해 배울 도구들 파일 읽어오기: read_csv('/경로/파일명.csv') 모양 확인하기: 데이터.shape 칼럼 선택하기: 데이터[['칼럼명1', '칼럼명 2', '칼럼명 3']] 칼럼 이름 출력하기: 데이터.columns 맨 위 5개 관측치 출력하기: 데이터.head() 샘플 데이터 GitHub github link: https://github.com/blackdew/tensorflow1/tree/master/csv 레모네이드: https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/lemonade.csv 보스턴:https://raw.githubuserconte.. 2021. 7. 26.
Python 알고리즘 자료구조와 배열(하) max로 정의된 max.py() 함수를 사용할 수 있도록 import를 통해 가져오고, 난수를 뽑기 위해서 random 도 함께 import 하였습니다. from [가져올 모듈=파일 이름]에서 max_of() 함수를 import 하겠다는 의미이고, x라는 빈 리스트를 입력할 개수만큼 공간 None으로 만듭니다. 그 후 random.randint(low,high)를 통해 최솟값과 최댓값 사이의 값 중 1개를 뽑게 한 후, for 문을 통해 입력할 개수만큼 작동시키면 가져온 max_of() 함수를 사용해 원하는 값을 뽑아낼 수 있습니다. 배열 원소를 역순으로 정렬하는 알고리즘을 생각해봅시다. 예로 배열 a의 원소가 7개이고 [2,5,1,3,9,6,7]로 저장되어 있다면 이것.. 2021. 7. 21.
1. Start TensorFlow 기계를 학습시켜 인간의 판단능력을 기계에 위임하는 것이 Machine Learning이다. TensorFlow는 다양한 직업에 대해 데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리이다. Symbolic 수학 라이브러리이자, 인공신경망 같은 기계 학습 응용프로그램에도 사용된다. Python API를 제공하며 문서화가 약간 부족하지만 C/C++ API 도 제공한다. 보통 텐서 플로우를 이용해 해결하려 하는 문제는 Machine Learning 지도 학습(Supervised Learning)의 회귀(Regression, 숫자 예측)와 분류(Classification, 범주 예측)이다. TensorFlow는 수많은 라이브러리 중 하나이다. 딥러닝 이론을 코딩으로 쉽게 이용해 줄 수 있는 여러 라이브.. 2021. 7. 21.
6. Finished Machine Learning 지금까지 Machine Learning이라는 도구를 이루고 있는 여러 기능을 살펴보았습니다. 하지만 응용을 하고, 선택을 해야 할 때 막막한 느낌이 들 수 있어 참고할 수 있는 좋은 표를 가져왔습니다. 위의 지도가 모든것을 해결해주지 않습니다. 현실에 적용되는 것들은 훨씬 어렵고 복잡하기 때문입니다. 그동안 배웠던 것만을 기반으로 만든 것입니다. 지난 6일간 큰 그림을 멀 리버 보듯 가볍게 Machine Learning에 대해 배워보았습니다. 여기서 더 나아가 자신의 필요한 부분이 있다면 알아서 검색하고, 지식을 늘려나가겠지요? 숙련된 Machine Learning Engineer와 현실적으로는 큰 차이가 있겠지만, 철학적으로는 큰 차이가 없다고 말해도 될 것 같아요. 개인의 노력과 발전으로 인해 현실적.. 2021. 7. 20.
5. Machine Learning Types 이번에는 비지도 학습(Unsupervised learning)에 대해 배워보려 합니다. 비지도 학습 대표적으로 군집화, 연관, 변환으로 크게 나눌 수 있습니다. 1. 군집화(Clustering) 군집화(clustering)는 비슷한 것들을 찾아 그룹을 만드는 것입니다. 분류(classification)와 구분이 안 갈 수 있는데, 예를 들면 물건들을 정리한다 하였을 때 비슷한 것들끼리 모아서 적당한 그룹을 만드는 것이 군집화입니다. 그룹을 만들고 난 후 각각의 물건을 적당한 그룹에 위치시키는 행위를 분류라고 할 수 있습니다. 즉 어떤 대상들을 구분해서 그룹을 만드는 것이 군집화라면 분류는 어떤 대상이 어떤 그룹에 속하는지를 판한다는 것이라고 볼 수 있습니다. 표의 숫자만 보고 군집화를 하는 것은 쉽지 않.. 2021. 7. 19.
4. Machine Learning Types Machine Learning Types 중 가장 많이 쓰이는 것들을 그림으로 표현하면 아래와 같습니다. 1. 지도 학습(Supervised Learning)의 ‘지도'는 기계를 가르친다(supervised)는 의미입니다. 문제집으로 학생을 가르치듯이 데이터로 컴퓨터를 학습시켜서 모델을 만드는 방식을 ‘지도 학습’이라고 합니다. 앞서 살펴본 손톱 감시 앱은 지도 학습을 이용한 것입니다. 지도 학습은 과거의 데이터로부터 학습해서 결과를 예측하는 데에 주로 사용됩니다. 지도 학습은 '역사'와 비슷합니다. 역사에는 과거에 있었던 사건이 원인과 결과로 기록되어 있습니다. 역사를 알면 어떤 사건이 일어났을 때, 그것의 결과로 어떤 일이 일어날지를 예측할 수 있게 됩니다. 마찬가지로, 지도 학습은 과거의 데이터로부.. 2021. 7. 18.
Python 알고리즘 자료구조와 배열(상) 자료구조의 개념은 논리적인 관계로 이루어진 데이터 구성을 말합니다. 즉 데이터 단위와 데이터 자체 사이의 물리적 또는 논리적인 관계를 얘기합니다. 자료구조를 알아야 하는 이유는 컴퓨터에서 처리해야 할 많은 데이터를 모아 효율적으로 관리하고 구조화하는 데 있다. 하나의 값을 저장하는 변수가 아니라 묶음 단위로 값을 저장하는 자료구조 중 배열(array)이 있습니다. 배열에는 객체가 저장되고, 배열에 저장된 객체 하나하나를 원소(element)라고 합니다. 또한 각 원소는 0,1,2,… 순으로 인덱스(index)를 부여받습니다. 배열을 사용하면 좋은 점은 대표적으로 아래와 같이 2가지가 있다. 1. 배열을 생성할 때 원소 개수를 자유롭게 지정할 수 있다. 2. 인덱스를 이용하여 원소에 접근할 수 있어 편하다.. 2021. 7. 18.
3. Start Machine Learning 오늘날 아이디어를 현실화하기 위해서는 데이터가 필요합니다. 현실을 데이터로 표현할 수 있다면, 컴퓨터의 엄청난 힘으로 데이터를 저리 할 수 있게 됩니다. 그 처리 방법 중의 하나가 Machine Learning 입니다. Machine Learning으로 무엇인가 하려면 당연히 데이터가 필요합니다. 현실을 데이터화 할 수 있다면, 복잡한 현실에서 발견하기 어려운 통찰을 단순해진 데이터로부터 찾아낼 수 있을 것입니다. 이를 통해 현실을 변화시키는 일을 하는 것이 '데이터 산업' 입니다. 데이터 산업은 크게데이터 과학(Science)과데이터 공학(Engineering)으로 분리해볼 수 있습니다. 데이터 과학 - 데이터를 만들고, 만들어진 데이터를 이용하는 일을 합니다. 데이터 공학 - 데이터를 다루는 도구를 .. 2021. 7. 17.
2. About Machine Learning 앞의 1번 글의 작업에 더해 추가적으로 나아가 다른 작업을 해볼 것입니다. 만약 손톱을 깨물면 화면에 '손톱'이라는 메시지가 표시되고 큰소리를 나게 하는 앱을 만드는 것입니다. https://ml-app.yah.ac 이 링크를 따라가면 아래 같은 그림을 볼 수 있습니다. 이 서비스는 Teachable Machine 에서 다운로드 한 모델 파일을 이용하여 애플리케이션을 만들어주는 서비스입니다. 1번 작업에서 만든 Model 을 저장했던 파일을 드래그하여 업로드합니다. 업로드가 끝나면 아래와 같은 화면이 나옵니다. 오른쪽 아래의 카메라를 따라 손 동작에 의해 % 값이 달라집니다. 숫자로 표현할 수 있게 되면 비교가 가능해집니다. 비교를 할 수 있으면 선택이 수월해집니다. 손톱과 정상의 수치를 합치면 100%.. 2021. 7. 16.
1. About Machine Learning 평소 AI에 관심을 가지고 있었다. 학교에서도 이번 학기에 AI 수업을 들었지만 내용이 어렵고 광범위한 범위를 빠르게 배우다 보니 정확하게 이해, 따로 활용하기 어려워 여름방학에 추가로 공부할 곳을 알아본 결과 머신러닝 야학 인터넷 강의를 찾게 되어 공부하게 되었다. 배울 것은 너무나 광범위하고 어렵기 때문에 차근차근 조금씩 정리하려 한다. Machine Learning 은 기계를 학습시켜 인간의 판단을 위임하기 위해 고안된 기술이다. 예로 전염병의 양성 판정, 자동 번역, 자율 주행과 같이 수많은 작업들이 Machine Learning이라고 불리는 여러 기술들에 의해 구현되고 있고, 구현 되려 한다. 이를 위해 가장 간단하면서 어려운 준비물이 있는데 그것은 'Imagination'이다. 숫자는 인간에게.. 2021. 7. 15.
Python 알고리즘 기초 알고리즘이란? 알고리즘은 수학과 컴퓨터 과학, 언어학 또는 관련 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것을 의미한 것, 계산을 실행하기 위한 단계적 절차를 의미한다. 즉 문제 해결에 필요한 계산 절차 또는 처리과정의 순서를 뜻하며 프로그램 명령어의 집합을 의미하기도 한다. 현재 DO IT 자료구조와 함께 배우는 알고리즘 입문, 저자 BohYoh Shibata의 책으로 공부를 하고 있고, 터득한 지식을 정리해서 올릴 것이다. 파이썬이 아직 생소한 부분이 많아 쉬운 부분 또한 함께 정리하려 한다. 1) while 문을 이용한 합계 구하기 while i 0: break cf) // -> 몫 연산자, %-> 나눗셈 연산자 아래는 a와 b를 오름차순으로 정렬하는.. 2021. 7. 15.
Python 기초 프로그래밍의 간단 정리6 1. Matplotlib 그래프 간단 정리 Matplotlib는 파이썬에서 데이터를 차트나 플롯(Plot)으로 그려주는 라이브러리 패키지로서 가장 많이 사용되는 데이터 시각화(Data Visualization) 패키지로 알려져 있다. (Matplotlib 안의 설정을 하나씩 바꿔가면서 기본적인 그림만 보여주며 설명하려 한다.) Line plot fig, ax = plt.subplots() # 괄호 안이 공란이면 1개의 fig 만 만들어 준다. x = np. arrange(15) # 0~14 y = x**2 # x의 2 승 ax.plot( x, y, intstyle=“:”, # 선이 점선으로 표시 marker=“*” # 값들을 *표시 color = “#524 FA1” # 색깔 표시 ) Line style .. 2021. 7. 11.
Python 기초 프로그래밍의 간단 정리5 1. Pandas 심화 간단 정리 데이터 프레임 정렬 1) 인덱스 값 기준으로 정렬하기 axis=0 : 행 인덱스 기준 정렬(default 오름차순) df = df.sort_index(axis =0) axis=1 : 열 인덱스 기준 내림차순 정렬 df.sort_index(axis=1, ascending= False) # ascending -> True = 오름차순, False = 내림차순 2) column 값 기준 정렬 df.sort_values(‘칼럼 이름’ , ascending = true) 3) 컬럼 2가지도 오름, 내림차순 정렬 가능 df.sort_values([‘먼저 바꿀 열’, ascending = [True, False]) 집계 함수 - count count 메서드 활용하여 데이터 개수 확인.. 2021. 7. 8.
Python 기초 프로그래밍의 간단 정리4 1. Pandas의 간단 정리 Pandas는 파이썬 라이브러리, 구조화된 데이터를 효과적으로 처리, 저장할 수 있고 array 계산에 특화된 numpy를 기반으로 설계되었다. 1) Series 데이터 numpy의 array가 보강된 형태이며 data와 인덱스를 가지고 있다. series는 값을 ndarray의 형태로 가지고 있다. import pandas as pd data = pd.Series([1,2,3,4]) print(data) # 각 인덱스가 저절로 0,1,2,3 정해지고 순서대로 1,2,3,4 값이 지정 print(type(data)) # print(type(data.values)). # 2) Dtype 인자로 데이터 타입을 지정할 수 있다. data = pd.series([1,2,3,4], .. 2021. 7. 8.
Python 기초 프로그래밍의 간단 정리3 1. Module의 간단 정리 모듈은 특정 목적을 가진 함수, 자료의 모임을 의미한다. import 키워드를 이용해서 모듈 사용하고.(dot)을 쓴 후에 모듈 속 함수/변수 사용을 하여 나타낼 수 있다. Ex) import random print(random.randrange(0,2)) # 0이상 2 미만 수 중 임의로 출력 뿐만 아니라 모듈 만들기도 가능한데 우리가 원하는 내용이 담긴 모듈 제작 기능. py로 생성 가능하다. py파일을 생성 후 , 함수와 변수를 만든다. #cal.py def plus(a, b): c= a+b return c 다른 파일에서 만들어 둔 .py 파일을 main.py로 불러 사용할 수 있다는 편한 점이 있다. 2. Package의 간단 정리 패키지는 모듈을 폴더로 구분하여 관.. 2021. 7. 7.
Python 기초 프로그래밍의 간단 정리2 1. List의 간단 정리 list.append(d) = 리스트의 맨 뒤에 원소를 추가, 하나만 추가할 수 있다는 특징 list.insert(i, d) = 인덱스 i에 원소 d를 추가, 하나만 추가할 수 있다는 특징 list.remove(d) = 처음 나오는 원소 d 를 제거 list.sort() = 리스트를 정렬하는데 숫자는 오름차순으로 정렬되고 문자열은 사전 순대로 정렬된다. 시퀀스 자료형은 순서가 있는 자료형을 말하는데 so 인덱싱과 슬라이싱이 가능하다. 문자열, 리스트 등이 이에 속하는데 아래 예시를 보면 => print(a [-1]), print(b [:3]), print(len(a)) 등으로 나타낼 수 있다. 멤버 조회로 in 연산자로 시퀀스 안에 원소가 있는지 확인도 가능하다. 2. Dict.. 2021. 7. 7.
Python 기초 프로그래밍의 간단 정리1 1. Python 프로그래밍의 입출력함수 바로 print 와 input 함수이다. input-> 컴퓨터에게 정보를 입력할 때 사용하는 함수이다. print -> 컴퓨터가 작업을 하고 결과를 출력할 때 사용하는 함수이다. 예를 들어 print("I Love Python") 으로 출력을 표현할 수 있고, a=input() 는 a 라는 변수안에 값을 입력할 수 있는것이다. 2. 자료형의 간단 정리 1) 숫자형 - 숫자로 이루어진 자료형이며 정수나 실수 등을 다룰 수 있다. 숫자 끼리의 연산이 가능하다. 2) 문자형 - 문자나 문자들을 늘어놓은것. 큰 따옴표("") ,작은 따옴표('') 로 구분한다. 3) 리스트 - 여러 자료를 보관하는 자료형. 다른 종류의 자료를 함께 담을 수 있는것과 순서가 있는것이 특징이.. 2021. 7. 7.