[Day 8]

Dongbin Lee·2021년 1월 27일
0

2021부캠AI

목록 보기
6/24

2021 부스트캠프 Day8

[Day 8] Pandas I / 딥러닝 학습방법 이해하기


Python Data Analysis Library - Pandas

데이터 분석에서 자주 사용해본 경험이 있기에 이해하는데에 어려움이 크게 없었다.

pandas

  • 구조화된 데이터의 처리를 지원하는 Python 라이브러리
  • 고성능 array게산 라이브러리인 numpy와 통합하여, 강력한 "스프레드시트"처리 기능을 제공
  • 인덱싱, 연산용 함수, 전처리 함수 등을 제공

series

  • DataFrame : Data Table 전체를 포함하는 Object
  • Series : DataFrame 중 하나의 Column vector에 해당하는 데이터의 모음 Object
  • Series.astype(type) : type의 변환
dict_data = {"a":1, "b":2, "c":3, "d":4, "e":5}
examplt_obj = Series(dict_data, dtype=np.float32, name="example_data")
print(example_obj)
# a 1.0
# b 2.0
# c 3.0
# d 4.0
# e 5.0
# Name: example_data, dtype: float32
dict_data_1 = {"a":1, "b":2, "c":3, "d":4, "e":5}
indexes = ["a", "b", "c", "d", "e", "f", "g", "h"]
series_obj_1 = Series(dict_data_1, index=indexes)
print(series_obj_1)
# a 1.0
# b 2.0
# c 3.0
# d 4.0
# e 5.0
# f NaN
# g NaN
# h NaN
# dtype: float64

dataframe

  • DataFrame : Data Table 전체를 포함하는 Object
  • loc : index location
  • iloc : index position
  • 아래와 같은 전체열에 대한 수식도 사용가능.
df.debt = df.age>40

df.T # transpose

df.values # 값 출력

df.to_csv() # csv변환

del df["debt"] # debt column을 삭제함

df["account"].head(3) # 한개의 컬럼헤드 3줄 출력

df[["account", "street", "state"]].head(3) # 1개 이상의 컬럼 헤드 3줄 출력

df.loc[[1,2], ["name", "street"]] # column과 index name을 통한 출력

df.index = list(range(0,15)) #0~14로 index를 정할수 있다.

df.drop(1) # index number로 drop

df.drop([0,1,2,3]) # index number list로 drop

df.drop("city", axis=1) # axis지정으로 축을 기준으로 drop

dataframe operations

s1.add(s2)
s1 + s2 
# 위 두방법으로 values들의 연산이가능. index기준으로 연산이 수행되며 겹치는 index가 없을 경우 NaN값으로 반환

df1.add(df2, fill_value=0)
# 위 연산에서 NaN으로 나왔던 값들을 0으로 채워주는 방법

df.add(s2, axis=0)
# axis를 기준으로  row broadcasting 실행

lambda, map, apply

  • pandas의 series type의 데이터에도 map함수 사용가능
  • function 대신 dict, sequence형 자료등으로 대체 가능
s1.map(lambda x: x**2).haed(5) #각 값의 제곱값을 반환

df.sex.replace({"male":0, "female":1}).head()
# dataframe의 sex 컬럼의 value값을 기준으로 매핑하여 변환한다.
# replace안의 inplace=True로 설정시, 데이터 변환결과를 적용시키지만,
# inplace=False로 설정시, 변환결과가 해당 df에 적용되지는 않는다.

f = lambda x : x.max() - x.min()
df_info.apply(f)
# 함수를 series 전체(column)에 적용시킬 때 사용.
# series단위가 아닌 element 단위로 함수를 적용가능

pandas built-in functions

df.describe()
# Numeric type 데이터의 요약 정보를 보여줌

df.sex.unique() #array(['male', 'female'])
# series data의 유일한 값을 list 반환

df.sum(axis=0)
# 기본적인 column또는 row값의 연산을 지원
# sub, mean, min, max, count, median, mad, var 등

df.isnull()
# column또는 row 값의 NaN(null)값의 index를 반환

df.isnull().sum()
# Null인 값의 합을 통해 비어있는 값들의 수를 확인가능

df.sort_values(['age', 'earn'], ascending=True).head(10)
# column값을 기준으로 데이터를 sorting
# ascending -> 오름차순

df.age.corr(df.earn)
df.age.conv(df.earn)
df.corrwith(df.earn)
# 상관계수와 공분산을 구하는 함수

Mathemetics for Artificial Intelligence : 딥러닝 학습방법 이해하기

비선형모델인 신경망(neural network)에 대한 강의
분류 문제나 높은 예측을 원하는 모델의 경우 선형모델을 통해 예측하기에는 큰 어려움이 있다.

소프트맥스(softmax) 연산

  • 모델의 출력을 확률로 해석할 수 있게 변환해 주는 연산
  • 분류 문제를 풀 때 선형모델과 소프트맥스 함수를 결합하여 예측
  • 추론을 할 때는 원-핫(one-hot) 벡터로 최대값을 가진 주소만 1로 출력하는 연산을 사용해서 softmax를 사용하지 않는다.

활성함수(activation function)

  • 신경망은 선형모델과 활성함수(activation function)을 합성한 함수
  • 활성함수는 비선형(nonlinear)함수로서 딥러닝에서 매우 중요한 개념
  • 활성함수를 쓰지 않으면 딥러닝은 선형모형과 차이가 없다.
  • 시그모이드(sigmoid)함수나 tanh함수는 전통적으로 많이 쓰이던 활성함수지만 딥러닝에선 ReLU함수를 많이 쓰고 있다.
  • 다층(multi-layer) 퍼셉트론(MLP)은 신경망이 여러층 합성된 함수

왜 층을 여러개 쌓나요?

  • 층이 깊을수록 목적함수를 근사하는데 필요한 뉴런(노드)의 숫자가 훨씬 빨리 줄어들어 좀 더 효율적으로 학습이 가능

역전파(backpropagation) 알고리즘

  • 역전파 알고리즘은 합성함수 미분법인 연쇄법칙(chain-rule) 기반 자동미분(auto-differentiation)을 사용
  • 연쇄법칙(chain-rule)을 통해 합성함수의 미분을 계산할 수 있다.
profile
Preparation student who dreams of becoming an AI engineer.

0개의 댓글