1.1.2 문제와 데이터 이해
머신러닝 프로세스에서 가장 중요한 과정은 사용할 데이터를 이해하고 그 데이터가 해결해야할 문제와 어떤 관련이 있는지를 이해하는 일이다. 아무 알고리즘이나 선택해서 데이터를 입력해보는 것은 좋은 방법이 아니다.
데이터셋으로 무엇을 하는 것인지 머신러닝 모델을 만들기 전에 반드시 이해해야 한다. 알고리즘마다 잘 들어맞는 데이터나 문제의 종류가 다르기 때문이다. 머신러닝 솔루션을 만들 동안 다음 질문에 답해보거나 최소한 마음에 새겨둬야 한다.
- 어떤 질문에 대한 답을 원하는가? 가지고 있는 데이터가 원하는 답을 줄 수 있는가?
- 내 질문을 머신러닝의 문제로 가장 잘 기술하는 방법은 무엇인가?
- 문제를 풀기에 충분한 데이터를 모았는가?
- 내가 추출한 데이터의 특성은 무엇이며 좋은 예측을 만들어낼 수 있는가?
- 머신러닝 애플리케이션의 성과를 어떻게 측정할 수 있는가?
- 머신러닝 솔루션이 다른 연구나 제품과 어떻게 협력 할 수 있는가?
1.2 왜 파이썬인가?
파이썬은 데이터 과학 분야를 위한 표준 프로그래밍 언어가 되어 가고 있다. 파이썬은 범용 프로그래밍 언어의 장점은 물론 매트랩 과 R 같은 특정 분야를 위한 스크립팅 언어의 편리함을 함께 갖췄고. 파이썬은 데이터 적재, 시각화 통계 자연 처리 , 이미지 처리등 필요한 라이브러리들을 가지고 있다. 이러한 많은 도구가 데이터 과학자에게 아주 풍부하고 일반적인 그리고 또 특수한 기능들을 제공해준다. 곧 살펴보겠지만 파이썬의 장점 하나는 터미널이나 주피터 노트북 같은 도구로 대화하듯 프로그래밍 할 수 있다는 점이고, 그래서 반복 작업을 빠르게 처리하고 손쉽게 조작할 수 있는 도구가 필수이다.
범용 프로그래밍 언어로서 파이썬은 복잡한 그래픽 사용자 인터페이스(GUI)나 웹서비스도 만들 수 있으며 기존 시스템과 통합하기도 좋다.
1.3 Scikit-learn(사이킷런)
오픈 소스인 사이킷런은 자유롭게 사용하거나 배포할 수 있고, 누구나 소스 코드를 보고 실제로 어떻게 동작하는지 쉽게 확인할 수 있다. 꾸준히 개발, 향상되고 있고 커뮤니티도 매우 활발하다.머신러닝 알고리즘들은 물론 알고리즘 설명한 풍부한 문서도 제공된다.
파이썬 설치후
pip 명령을 사용해 필요한 패키지들을 설치해 보자
pip install numpy scipy matplotlib ipython scikit-learn pandas pillow imageio
1.4.1 주피터 노트북
주피터 노트북은 프로그램 코드를 브라우저에서 실행해주는 대화식 환경이다. 이런 방식은 탐색적 ㅔ이터 분석에 아주 적합하여 많은 데이터 분석가가 주피터 노트북을 사용하고 있다. 주피터 노트북은 다양한 프래그래밍 언어를 지원하지만 우리는 파이썬만 사용하겠다. 주피터 노트북은 코드와 설명. 이미지들을 쉽게 섞어 쓸 수 있다.
1.4.2 Numpy
Numpy는 파이썬으로 과학 계산을 하려면 꼭 필요한 패키지이다.
넘파이 배열은 기본 데이터 구조이고 배열 형태의 데이터를 입력 받는다.
import numpy as np
x = np.array([[1,2,3], [4,5,6]])
print("x:\n",x)
1.4.4 matplotlib
파이썬의 대표적인 과학 계산용 그래프 라이브러리로 선,그래프,히스토그램,산점도 등 지원하며 출판에 쓸 수 있을 만큼 고품질 그래프를 그려준다. 데이터와 분석 결과를 다양한 관점에서 시각화해보면 매우 중요한 통찰을 얻을 수 있다.
%matplotlib inline
import matplotlib.pyplot as plt
# -10에서 10까지 100개의 간격으로 나뉘어진 배열을 생성한다.
x = np.linspace(-10, 10, 100)
# 사인 함수를 사용해 y 배열을 생성한다.
y = np.sin(x)
# plot 함수는 한 배열의 값을 다른 배열에 대응해서 선 그래프를 그린다.
plt.plot(x,y, marker="x")
pandas
엑셀의 스프레드시트와 비슷한 테이블형 형태
판다스는 테이블을 수정하고 조작하는 다양한 기능을 제공한다. SQL처럼 테이블에 쿼리나 조인을 수행할 수 있다.
import pandas as pd
data = {'Name': ["John","Anna","Peter", "Linda"],
'location' : ["New York", "Paris","Berlin", "London"],
'Age' : [24,13,53,33]
}
data_pandas = pd.DataFrame(data)
display(data_pandas)
1.71 데이터 적재
사용할 데이터셋은 머신러닝과 통계 분야에서 오래전부터 사용해온 붓꽃 데이터셋업이다. 이 데이터는 사이킷런 의 데이터셋 모듈에 포함되어 있다. 로드 아이리스 함수를 사용해서 데이터를 적해하겠다.
from sklearn.datasets import load_iris
iris_dataset = load_iris()
print("iris_dataset의 키:\n", iris_dataset.keys())
print(iris_dataset['DESCR'][:193] + "\n..")
print("타깃의 이름:", iris_dataset['target_names'])
print("특성의 이름:\n", iris_dataset['feature_names'])
print("data의 타입:" , type(iris_dataset['data']))
print("data의 크기:" , iris_dataset['data'].shape)
print("data의 처음 다섯 행:\n", iris_dataset['data'][:5])
print("target의 타입", type(iris_dataset['target']))
print("target의 크기:", iris_dataset['target'].shape)
print("타깃:\n", iris_dataset['target'])
1.7.2 성과 측정: 훈련 데이터와 테스트 데이터
이 데이터로 머신러닝 모델을 마들고 새로운 데이터 품종을 예측하려고 합니다.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)
print("X_train 크기:", X_train.shape)
print("y_train 크기:", y_train.shape)
print("X_test 크기:", X_test.shape)
print("y_test 크기:", y_test.shape)
'Language > Python' 카테고리의 다른 글
파이썬 기초 프로그래밍 5. 제어 구조 (0) | 2023.04.01 |
---|---|
파이썬 기초 프로그래밍 4. 파이썬의 시작 (0) | 2023.03.31 |
파이썬 기초 프로그래밍 3. 파이썬의 이해 (0) | 2023.03.29 |
파이썬 기초 프로그래밍 2. 컴퓨터의 구성 (0) | 2023.03.28 |
파이썬 기초 프로그래밍 1.컴퓨터의 이해 (0) | 2023.03.22 |