2022/04/08

jungkwanlee·2022년 4월 8일
0

코딩일지

목록 보기
13/108

1) 학습한 내용

import pandas as pd

from pandas import Series, DataFrame
births = pd.read_csv('https://raw.githubusercontent.com/jakevdp/data-CDCbirths/master/births.csv')
births
births

births['decade'] = births['year'] // 10 *10
births

위의 코드는 미국인의 출산율 통계를 바탕으로 한 것으로 뒤의 숫자를 빼려면 // 기호를 누른 뒤에 10 * 10을 입력하면 된다. // 기호는 Juypter notebook에서는 주석이 아니라 나누고 난 뒤의 뒤의 값을 뺀다는 의미로 쓰인다.

matplotlib

matplotlib은 다양한 데이터를 많은 방법으로 도식화 할 수 있도록 하는 파이썬 라이브러리로써, mathworks에서 개발한 매트랩(MATLAB)과 비슷한 형태를 가지고 있다.

matplotlib을 이용하면 우리가 이전에 알아본 numpy나 pandas에서 사용되는 자료구조를 쉽게 시각화 할 수 있다.

matplotlib을 사용하기 위해서는 먼저 matplotlib을 설치하고 아래와 같이 import를 해주어야 합니다.

import matplotlib

import matplotlib.pyplot as plt

그리고, matplotlib를 통해서 통계를 이용한 그래프를 만들어내는데 예시를 들면서 코드를 보여주기로 했다.

import matplotlib.pyplot as plt
  
import numpy as np
import numpy as np
  
x = np.linspace(0,10,100)
  
x
  
x
  
// array([ 0.        ,  0.1010101 ,  0.2020202 ,  0.3030303 ,  0.4040404 ,
        0.50505051,  0.60606061,  0.70707071,  0.80808081,  0.90909091,
        1.01010101,  1.11111111,  1.21212121,  1.31313131,  1.41414141,
        1.51515152,  1.61616162,  1.71717172,  1.81818182,  1.91919192,
        2.02020202,  2.12121212,  2.22222222,  2.32323232,  2.42424242,
        2.52525253,  2.62626263,  2.72727273,  2.82828283,  2.92929293,
        3.03030303,  3.13131313,  3.23232323,  3.33333333,  3.43434343,
        3.53535354,  3.63636364,  3.73737374,  3.83838384,  3.93939394,
        4.04040404,  4.14141414,  4.24242424,  4.34343434,  4.44444444,
        4.54545455,  4.64646465,  4.74747475,  4.84848485,  4.94949495,
        5.05050505,  5.15151515,  5.25252525,  5.35353535,  5.45454545,
        5.55555556,  5.65656566,  5.75757576,  5.85858586,  5.95959596,
        6.06060606,  6.16161616,  6.26262626,  6.36363636,  6.46464646,
        6.56565657,  6.66666667,  6.76767677,  6.86868687,  6.96969697,
        7.07070707,  7.17171717,  7.27272727,  7.37373737,  7.47474747,
        7.57575758,  7.67676768,  7.77777778,  7.87878788,  7.97979798,
        8.08080808,  8.18181818,  8.28282828,  8.38383838,  8.48484848,
        8.58585859,  8.68686869,  8.78787879,  8.88888889,  8.98989899,
        9.09090909,  9.19191919,  9.29292929,  9.39393939,  9.49494949,
        9.5959596 ,  9.6969697 ,  9.7979798 ,  9.8989899 , 10.        ])

plt.plot(x, np.sin(x))

plt.plot(x, np.cos(x))

plt.plot(x, np.sin(x))
plt.plot(x, np.cos(x))

그리고, 출력된 그래프를 이미지로 저장하려면 아래와 같은 코드를 작성하면 된다.

fig = plt.figure()
plt.plot(x, np.sin(x), '-')
plt.plot(x, np.cos(x), '--')
fig.savefig('my_figure.png')
  
  from IPython.display import Image
my_figure.png
Image('my_figure.png')

fig.canvas.get_supported_filetypes()
{'eps': 'Encapsulated Postscript',
 'jpg': 'Joint Photographic Experts Group',
 'jpeg': 'Joint Photographic Experts Group',
 'pdf': 'Portable Document Format',
 'pgf': 'PGF code for LaTeX',
 'png': 'Portable Network Graphics',
 'ps': 'Postscript',
 'raw': 'Raw RGBA bitmap',
 'rgba': 'Raw RGBA bitmap',
 'svg': 'Scalable Vector Graphics',
 'svgz': 'Scalable Vector Graphics',
 'tif': 'Tagged Image File Format',
 'tiff': 'Tagged Image File Format'}
  
plt.figure()
<Figure size 432x288 with 0 Axes>
<Figure size 432x288 with 0 Axes>

plt.subplot(2,1,1)
plt.plot(x, np.sin(x))

plt.subplot(2,1,2)
plt.plot(x, np.cos(x))
  
[<matplotlib.lines.Line2D at 0x2119d013ca0>]

plt.plot(x, np.sin(x-0), color='blue')
plt.plot(x, np.sin(x-1), color='g')
plt.plot(x, np.sin(x-2), color='0.75')
plt.plot(x, np.sin(x-3), color='#ffdd44')
plt.plot(x, np.sin(x-4), color=(1.0,0.2,0.3))
plt.plot(x, np.sin(x-5), color='chartreuse')
  
[<matplotlib.lines.Line2D at 0x2119bd4b250>]

:
plt.plot(x, x+0, linestyle='solid')
plt.plot(x, x+1, linestyle='dashed')
plt.plot(x, x+2, linestyle='dashdot')
plt.plot(x, x+3, linestyle='dotted')

plt.plot(x, x+4, linestyle='-')
plt.plot(x, x+5, linestyle='--')
plt.plot(x, x+6, linestyle='-.')
plt.plot(x, x+7, linestyle=':')
  
[<matplotlib.lines.Line2D at 0x2119bdd0100>]

plt.plot(x, x+0, '-g')
plt.plot(x, x+1, '--c')
plt.plot(x, x+2, '-.k')
plt.plot(x, x+3, ':r')

사이킷 런

사이킷런은 파이썬에서 머신러닝 분석을 할 때 유용하게 사용할 수 있는 라이브러리이다.

사이킷런의 특징
-다양한 머신러닝 알고리즘을 구현한 파이썬 라이브러리
-심플하고 일관성 있는 API, 유용한 온라인 문서, 풍부한 예제
-머신러닝을 위한 쉽고 효율적인 개발 라이브러리 제공
-다양한 머신러닝 관련 알고리즘과 개발을 위한 프레임워크와 API 제공
-많은 사람들이 사용하며 다양한 환경에서 검증된 라이브러리

사이킷런 알고리즘

scikit-learn 주요 모듈

모듈 설명
-sklearn.datasets 내장된 예제 데이터 세트
-sklearn.preprocessing 다양한 데이터 전처리 기능 제공 (변환, 정규화, 스케일링 등)
-sklearn.feature_selection 특징(feature)를 선택할 수 있는 기능 제공
-sklearn.feature_extraction 특징(feature) 추출에 사용
-sklearn.decomposition 차원 축소 관련 알고리즘 지원 (PCA, NMF, Truncated SVD 등)
-sklearn.model_selection 교차 검증을 위해 데이터를 학습/테스트용으로 분리, 최적 파라미터를 추출하는 API 제공 (GridSearch)
-sklearn.metrics 분류, 회귀, 클러스터링, Pairwise에 대한 다양한 성능 측정 방법 제공
-sklearn.pipeline 특징 처리 등의 변환과 ML 알고리즘 학습, 예측 등을 묶어서 실행할 수 있는 유틸리티 제공
-sklearn.linear_model 선형 회귀, 릿지(Ridge), 라쏘(Lasso), 로지스틱 회귀 등 회귀 관련 알고리즘과 SGD 제공
-sklearn.svm 서포트 벡터 머신 알고리즘 제공
-sklearn.neighbors 최근접 이웃 알고리즘 제공 (k-NN 등)
-sklearn.naive_bayes 나이브 베이즈 알고리즘 제공 (가우시안 NB, 다항 분포 NB 등)
-sklearn.tree 의사 결정 트리 알고리즘 제공
-sklearn.ensemble 앙상블 알고리즘 제공 (Random Forest, AdaBoost, GradientBoost 등)
-sklearn.cluster 비지도 클러스터링 알고리즘 제공 (k-Means, 계층형 클러스터링, DBSCAN 등)

estimator API

1. 일관성: 모든 객체는 일관된 문서를 갖춘 제한된 메서드 집합에서 비롯된 공통 인터페이스 공유
2. 검사(inspection): 모든 지정된 파라미터 값은 공개 속성으로 노출
3. 제한된 객체 계층 구조
-알고리즘만 파이썬 클래스에 의해 표현
-데이터 세트는 표준 포맷(NumPy 배열, Pandas DataFrame, Scipy 희소 행렬)으로 표현
-매개변수명은 표준 파이썬 문자열 사용
4. 구성: 많은 머신러닝 작업은 기본 알고리즘의 시퀀스로 나타낼 수 있으며, Scikit-Learn은 가능한 곳이라면 어디서든 이 방식을 사용
5. 합리적인 기본값: 모델이 사용자 지정 파라미터를 필요로 할 때 라이브러리가 적절한 기본값을 정의
API 사용 방법

1. Scikit-Learn으로부터 적절한 estimator 클래스를 임포트해서 모델의 클래스 선택
2. 클래스를 원하는 값으로 인스턴스화해서 모델의 하이퍼파라미터 선택
3. 데이터를 특징 배열과 대상 벡터로 배치
4. 모델 인스턴스의 fit() 메서드를 호출해 모델을 데이터에 적합
5. 모델을 새 데이터에 대해서 적용
-지도 학습: 대체로 predict() 메서드를 사용해 알려지지 않은 데이터에 대한 레이블 예측
-비지도 학습: 대체로 transform() 이나 predict() 메서드를 사용해 데이터의 속성을 변환하거나 추론
출처

2) 학습내용 중 어려웠던 점

강사의 수업을 제대로 따라갔다면 이해를 못하는 것은 없을것이다.

3) 해결방법

오늘은 딱히 없었다. 그저, 딥러닝 분야를 좀 더 학습해야 할 필요가 있다는 걸 내게 각인시켰다.

4) 학습소감

이번 수업은 쥬피터 노트북으로 통계를 시각화시키는 방법을 보여주었다. 다음 주에 할 수업을 대비하고 그 사이에 백엔드와 데이터베이스와 딥러닝을 복습해야겠다. 마침 내겐 핸즈온 머신 러닝 사이킷런 케라스 텐서플로우 2판이 있다. 이걸 참고해가면서 읽어봐야겠다.
ps. 실수로 중간 체크를 누락하고 말았다. 이건 내 부주의다.

0개의 댓글

관련 채용 정보