01-1 인공지능과 머신러닝, 딥러닝
1. 인공지능: 사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술
1) 강인공지능(=인공일반지능): 사람과 구분하기 어려운 지능을 가진 컴퓨터 시스템
ex) 터미네이터
2) 약인공지능: 특정 분야에서 사람의 일을 도와주는 보조 역할을 하는 시스템
ex) 음성비서, 자율 주행 자동차, 음악 추천, 기계 번역, 알파고 등
2. 머신러닝: 규칙을 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야임.
- 대표적인 라이브러리: sklearn(scikit-learn, 사이킷런)
※ 사이킷런을 많이 사용하는 이유: 많은 알고리즘이 끊임없이 개발되고 있고 발표되는데,
시간이 지나면서 장단점이 파악되면 알고리즘이 유익하다고 증명되어 널리 사용하게 되면
사이킷런 개발자들이 알고리즘을 라이브러리에 추가함.
∴ 사이킷런 라이브러리에 포함된 알고리즘들은 안정적이며 성능이 검증되어 있음.
3. 딥러닝(=인공 신경망): 많은 머신러닝 알고리즘 중에 인공 신경망을 기반으로 한 방법들을 통칭함.
- 대표적인 라이브러리: 텐서플로우, 파이토치
01-2 코랩과 주피터랩 ...생략...
01-3 머신러닝
[용어정리]
1. 특성: 데이터를 표현하는 하나의 성질임. (csv파일에서의 칼럼 이름)
2. 훈련: 머신러닝 알고리즘이 데이터에서 규칙을 찾는 과정을 의미함.
(scikit-learn에서 fit()메서드가 하는 역할임)
3. k-최근접 이웃 알고리즘(KNN): 가장 간단한 머신러닝 알고리즘 중 하나임.
어떤 규칙을 찾는 것이 아니라 전체 데이터를 메모리에 가지고 있는 것이 전부임.
4. 모델: 머신러닝 프로그램에서는 알고리즘이 구현된 객체를 의미함. 종종 알고리즘 자체를 모델이라고 부르기도 함.
5. 정확도: 정확한 답을 몇 개 맞혔는지를 백분율로 나타낸 값임. (=정답률)
사이킷런에서는 0~1사이의 값으로 출력됨.
정확도 = (정확히 맞힌 개수) / (전체 데이터 개수) |
[머신러닝 과정]
1) 데이터 수집
2) 데이터 전처리
3) 모델 학습
4) 모델 신뢰도 테스트
1. matplotlib: 과학계산용 그래프를 그리는 대표적인 패키지
1) scatter(): *산점도를 그리는 맷플롯립 함수로, 처음 2개의 매개변수로 x축과 y축 값을 전달함.
값은 파이썬 리스트 또는 넘파이 배열임.
*산점도: x, y축으로 이뤄진 좌표계에 두 변수(x, y)의 관계를 표현하는 방법임.
- c 매개변수: 색깔을 지정함. RGB를 16진수(ex) ‘#1f77b4’)로 지정하거나 색깔코드 중 하나를 지정함.
지정하지 않을 경우 10개의 기본 색깔을 사용해 그래프를 그림.
# 색상 코드: ‘b’(파랑), ‘g’(초록), ‘r’(빨강), ‘c’(시안), ‘m’(마젠타), ‘y’(노랑), ‘k’(검정), ‘w’(흰색)
(기본 색깔은 http://bit.ly/matplotlib_prop_cycle
https://wikidocs.net/92085#matplotlib 참고)
- marker 매개변수: 마커스타일을 지정함. (Default: o(circle, 원))
(지정할 수 있는 marker 종류는 http://bit.ly/matplotlib_marker 참고)
2) xlabel(): x축 이름을 화면에 표시하는 함수
# xlim() : x축의 범위를 지정하는 함수
3) ylabel(): y축 이름을 화면에 표시하는 함수
# ylim() : y축의 범위를 지정하는 함수
4) show(): 준비된 그래프를 화면에 출력하는 함수
2. k-최근접 이웃(KNN): 가장 간단한 머신러닝 알고리즘 중 하나임.
1) 사이킷런(scikit-learn) 패키지 사용하려면 세로 방향으로 늘어뜨린 2차원 리스트(=리스트의 리스트)를 만들어야 함.
→ data = [[l, w] for l, w in zip(‘list1,list2, ...’)] # zip()의 매개변수는 리스트를 나열해줌
- zip(): 나열된 리스트에서 원소를 하나씩 꺼내주는 함수
2) KNeighborsClassifier: k-최근접 이웃 분류 모델을 만드는 사이킷런 클래스임.
임의의 데이터에서 가장 가까운 n개의 이웃을 찾고 해당 종류가 더 많은 종류로 데이터가 분류됨.
from sklearn.neighbors import KNeighborsClassifier
- n_neighbors 매개변수로 이웃의 개수를 지정함. (Default= 5)
- p 매개변수로 거리를 재는 방법을 지정함. (Default= 2)
- ‘1’일 경우, 맨해든 거리(http://bit.ly/man_distance)를 사용함.
ㄴ 실수를 직교 좌표계에 일정한 좌표축의 점 위에 투명한 선분 길이의 합
- ‘2’일 경우, 유클리디안 거리(http://bit.ly/euc_distance)를 사용함.
ㄴ 두 점 사이의 거리를 계산할 때 사용하는 알고리즘
- n_jobs 매개변수로 사용할 CPU 코어를 지정할 수 있음.(Default= 1)
- ‘-1’로 설정하면 모든 CPU 코어를 사용함. 이웃 간의 거리 계산 속도를 높일 수 있지만
fit() 메서드에는 영향이 없음.
(1) fit(): 사이킷런 모델을 훈련할 때 쓰이는 함수
처음 두 매개 변수로 훈련을 사용할 특성과 정답 데이터를 전달함.
(2) predict(): 사이킷런 훈련하고 예측할 때 사용되는 함수로, 특성 데이터 하나만 매개변수로 받음.
(3) score(): 훈련된 사이킷런 모델의 성능을 측정하는 함수
처음 두 매개변수로 특성 데이터와 정답 데이터를 전달함.
이 함수는 predict() 함수로 예측을 수행한 다음 분류 모델일 경우,
정답과 비교하여 올바르게 예측한 개수의 비율을 반환함.
3) 단점
데이터가 아주 많은 경우 사용하기 어려움
: 데이터가 크기 때문에 메모리가 많이 필요하고, 직선거리 계산에 많은 시간이 필요함.
'머신러닝(ML) & 딥러닝(DL) > 혼자공부하는 머신러닝 딥러닝' 카테고리의 다른 글
Chapter 03-3. 특성 공학과 규제 (0) | 2022.12.05 |
---|---|
Chapter 03-2. 선형 회귀 (0) | 2022.12.05 |
Chapter 03-1. K-최근접 이웃 회귀 (0) | 2022.12.05 |
Chapter 02-2. 데이터 다루기 (0) | 2022.12.05 |
Chapter 02-1 훈련 세트와 테스트 세트 (0) | 2022.12.05 |