이제 미니콘다를 설치했으니 간단한 소스코드를 실행시켜보자!
인공지능 개발에서 가장 중요하다는 리스트와 튜플에 대해 먼저 알아보자
 
콘솔창에서 jupyter notebook 을 실행하면 다음과 같은 브라우저가 뜰것이다.
우측 상단에 New 버튼을 클릭한다.

그러면 아래와 같은 콤보가 아래로 열리는데 Python3를 눌른다

그러면 Untitled라는 파일이 자동 생성되는데 상단에 파일이름을 눌러 저장하고 싶은 이름으로 바꿔보자.

나는 List라고 저장하였다.

그러면 아래와 같은 노트가 펼쳐지는데 In [ ] : 영역부분을 마우스를 클릭한다.

리스트와 튜플을 실행해보려면 먼저 matplotlib 가 필요하므로 설치해보자
아래의 코드를 입력하고 상단에 Run 버튼을 클릭한다.

!pip install matplotlib

그러면 라이브러리가 다운되면서 설치되는 모습이 보일것이다.
먼저 튜플관련 코드를 작성하려면 numpy 라는 패키지를 추가해야 된다.
import 명령어를 통해 numpy 를 추가하고 그것을 np 로 호출하겠다고 선언한다.
numpy로 호출해도 되는데 그러면 코드가 길어지니 짦게 2자리수로 줄여서 호출한다.
 
파이썬에서 리스트는 [] 안에 넣어 , 로 구분하여 처리한다.
x, w의 리스트를 만들어 두 리스트를 더해보자.
그랬더니 결과가 x의 리스트 뒤에 w 리스트가 추가된다.

그러면 튜플은 어떻게 될까?
튜플은 넘파이  함수를 이용하여 np.array([]) 안에 넣어서 생성한다.
리스트와 똑같이  x, w인 튜플을 만들고 두 튜플을 더해보자.
리스트와는 다르게 두 튜플의 같은 인덱스 공간에 있는 원소들이 더해진다.

여기서 리스트와 튜플이 다른점은 리스트는 출력될때 원소 사이에 , 가 넣어지지만 튜플은 , 가 없다.
아  ,(콤마) 로 리스트와 튜플을 구분 할수 있는 구나?
그리고  인공지능 코딩할때 배열끼리 합해질때는 튜플을 써야 겠구나? 생각이 든다.
 
그럼 인공지능 코딩할 때 어떻게 리스트와 튜플을 쓸까?
일단 arange 함수를 이용하여 100개의 튜플을 생성하고 출력해보면 0~100으로 채워진다.
튜플 각 원소에 100을 곱해보자. (인덱스와 실제 데이터가 헷갈리기 때문에 100을 곱했다.)
그리고 출력하면 0~9900까지가 출력된다.
 
인공지능의 K-Fold 같은 기능을 구현할때는 데이터의 80%, 20%를 나눠서 트레이닝 해야되는데 이럴때 리스트와 튜플을 같이 사용할수있다. 아래의 빨간박스의 중간 데이터를 20% 와 나머지로 분할해보자.

먼저 20% 검증데이터를 만들려면, 
일단 a 에 시작점과 끝점을 넣어 리스트를 추출해보자
start=10 //  인덱스 10번째에서 시작하고
end = 20 // 20번째에서 끝내라 
val = a[start:end] // a튜플의 10 ~ 19번째까지를 잘라서 리스트를 추출한다.
 
80% 트레이닝 데이터를 만들려면,
위의 검증데이터를 제거한 인덱스 0~9와 20~99가 포함된 튜플을 만들어야 한다.
튜플에 넣는 데이터는 연속된 공간에 넣어야 활용할 수 있으므로
인덱스를 생성해서 80개짜리 새로운 튜플을 만들어보자
 
index = list(range(0, start))+list(range(end, len(a))) // 인덱스 0~9와 20~99를 더해준다.
print(index) // 10 ~ 19의 인덱스가 사라진 리스트를 만들수 있다.
위에도 말했지만 리스트는 더하면 리스트 뒤에 리스트가 추가된다.

fold = a[np.array(index)] 함수를 사용하여 a튜플에서 80개의 index가진 원소들만 튜플로 생성할 수 있다.
그러면 인덱스 0~9와 20~99를 가지는 원소들이 튜플에서 추출되서 새로운 fold 튜플로 생성된다.
출력해 보면 10 ~ 19인덱스에 있는 데이터(1000 ~ 1900)가 사라져 있을것이다.

이처럼 리스트와 튜플의 특성을 이용하여 쉽게 인공지능을 코딩할 수 있다.
파이썬은 참 강력한 언어인것 같다.

'학습' 카테고리의 다른 글

GPTs 해킹가능성  (1) 2024.01.22
강화학습이란?  (0) 2024.01.22
인공지능 토픽 정의  (0) 2023.07.04
인공지능 코딩위한 환경설정  (0) 2023.07.03
인공지능과 머신러닝 딥러닝의 관계  (0) 2023.07.03

+ Recent posts