[TIL] 20.07.14

우주먼지·2020년 7월 14일
0

TIL

목록 보기
2/28

계획한것

  • 딥러닝 데이터셋 다운로드
  • velog 작성
  • 정처기 chap72까지

오늘 새로 배운 내용

import pandas as pd

df = pd.read_csv('data.csv')
df.corr() # 상관계수 행렬

데이터프레임의 모든 변수 간 상관관계를 계산하여 반환. 나중에 데이터 분석하는데 매우 유용하게 쓰인다고 함...

df.isnull() # 결측치가 있는 부분을 True
df.dropna(axis=0) # 결측치가 있는 행을 제거
df.fillna(value='1') #결측치를 value값으로 채워준다

파이썬의 결측치 처리 방법. 데이터가 항상 모든 값이 채워진 데이터를 내가 받게 되지 않는다. 그렇기 때문에 혹시 모를 결측치를 처리해주는 과정이 필요하다. 이를 위해 위와 같은 방법을 사용한다.

딥러닝

평균제곱오차 : 추정값이 얼나나 정확한지를 숫자로 나타낸값이다. 이는 항상 0이상이 나오지만 0이 되기 위해서 노력한다. 추정값과 정답사이의 차이를 제곱한 뒤 모두 합쳐서 전체 성분 수로 나눈 값이다.

손실함수 : 이것이 평균제곱오차를 0으로 만들기 위해 사용하는 함수이다. 입력이나 가중치에 따라 값이 달라지며, 미분도 가능한 평가지표를 정의한다.

경사하강법 : 미분을 반복해서 연산하여 기울기가 작아지는 방향으로 이동하는 방법이다. 이는 미니배치한 입력값에 대해 순전파와 역전파 과정을 번갈아 반복하면서 파라미터를 원하는 방향으로 바꿔간다.

순전파는 신경망의 구조를 따라 손실함수값을 계산하는 과정인 반면, 역전파는 계산과정의 역순으로 함수값에 영향을 미친 성붕에 대해 손실 기울기를 계산하는 것이다.

학습률 : 하이퍼 파라미터중 하나이며, 학습의 정도를 나타내는 값이다. 학습률이 너무 크면 오히려 원하는 값에 도달하기 어렵고, 너무 작은 값이면 도달하기까지의 시간이 너무 오래 걸린다.

신경망의 목적은 손실함수가 최솟값일때의 파라미터를 찾아 좋은 학습결과를 보이는 것이다

파이썬의 정규표현식

정규표현식은 파이썬 라이브러리인 re라이브러리를 사용한다.

여러 표현식을 사용하여 매치되는 문자열을 찾아주는 역할을 한다.
기본 메타로는 모든 문자를 나타내는 ., 메타문자의 개수를 무한대로 늘려주는 + 등이 있다.
문자클래스는 숫자인 \d, 공백인 \s등이 있다.
이를 저절히 조합하여 어떤 리스트 혹은 문자열에서 원하는 문자가 있는지 여부, 위치 등을 알아낼 수 있다.

a = '010 - 1234 - 5678'
p = re.compile(r'(?P<head>\w+)\s.\s(?P<middle>\w+)\s.\s(?P<tail>\w+)')

# print(p.match(a))
print(p.sub("\g<head> - 6789 - \g<tail>", a))

정규식을 사용한 예시. 전화번호의 정규식을 compile한 후, 그에 매치 되는 내용을 찾는다.
그 후 중간 부분의 전화번호를 바꿔준다.

pandas를 이용한 시각화

내가 원하는 순서대로 값을 출력

y = t[['월', '화', '수', '목', '금', '토', '일']]

그냥 출력시 순서가 뒤죽박죽 출력되는 것을 내가 인덱스의 리스트를 제공하면, 그 순서에 맞게 출력된다.

카테고리를 사용하여 분야를 지정해줄 수 있다.

ages = [0, 2, 10, 21, 23, 37, 31, 61, 20, 41, 32, 100]
bins =[0, 15, 25, 35, 60, 99]
labels = ['미성년자', '청년', '중년', '장년', '노년']
cats = pd.cut(ages, bins, labels=labels)

나이 리스트를 입력했을 때, label과 bin에 원하는 분야와 범위를 지정해주고, pandas의 cut을 이용하여 카테고리를 생성할 수 있다. cats를 출력하면, categories라고 출력된다.

matplotlib을 시각화하는데 많이 사용한다. 하지만 이와 같은 기능을 하면서 더 간단히 데이터프레임을 이용한 그래프를 그릴수 있다.

t = df.iloc[[0, 5], 2:]
t.index = ['South', 'North']
t.columns = t.columns.map(int)
# t.T.plot(color = ('b', 'r'),  alpha=0.5)
t.T.plot(color = ('b', 'r'), kind='bar', alpha=0.5)

원하는 만큼의 데이터를 자른 후, 데이터를 그렸다. kind의 성분에 따라 다양한 그래프를 그릴 수 있다.
위처럼 아무것도 안한 default는 꺽은선 그래프, bar는 막대그래프, hist, scatter등이 있다.

알고리즘

어제풀은 알고리즘 리뷰 및 다음 알고리즘을 풀어보았다.
오늘 풀은 알고리즘도 역시 간단한 문제였지만, 생각외의 방법이 있었다.
과제로 나온 알고리즘 역시 수업시간내에 다 풀었다 ㅎㅎ

웹 프로그래밍

CLI를 이용한 간단한 명령어 실행.

그중 새로 알게 된 사실.

  • vim과 vi는 같다. vi가 vim의 이전버전이다.
  • touch를 이용하여 파일 생성이 가능하다(예전에 배운거 같은데 까먹음...)
  • sudo rm -rf/를 입력하면 노트북에 신기한 일이 생긴다. ㅎㅎ

느낌점

아직까지 너무 수업이 루즈하다. 반을 성적별로 나눈것이 아니라 랜덤으로 나누다보니 수업수준이 안맞는다. 나같은 경우 cli명령어에 대한 많은 지식이 있는 편인데 이를 한시간 사용하는것은 너무 아깝다.

profile
안녕하세요 ㅎㅎ

0개의 댓글