codestates / codestates/ds-TIL

[TIL] 오예은_210118

Open
#1,345 0 comments 0 reactions 0 assignees View on GitHub
DSFT01
Dominant language
No language data
Stars
2
Forks
1
PR merge metrics
No merged PRs in 30d

Description

### 키워드
`파이썬` `자료형` `컬렉션` `주석` `들여쓰기`

### 배운 것
- 코드를 보면서 해석하고 최적화시킬 수 있을지 고민, 효율성을 위해 반복문/조건문 최소화 필요
- 프로그래밍 : 입력, 조건, 반복, 출력의 연속
- 주석: 협업, 재사용을 위함
- 내장함수(Built-in functions)와 표준 라이브러리의 차이: 라이브러리는 import해서 사용

### 느낀 점
- 파이썬을 제대로 공부하면 그동안 배웠던 section1~4의 내용에서 내가 할 수 있는 영역이 확장될 것 같다. 그리고 그동안 답답했던 부분(에러 등)이 조금씩 해소될 수 있을거라는 희망이 생겼다.
- 예전에 코딩을 하면서 잘 이해되지 않았던 부분을 다시 보면 더 쉽지 않을까?! 하고 예상해본다. 스프린트 리뷰 때는 예전 코드들을 보면서 더 쉽게 할 수 있는 부분들을 찾아서 보완해봐도 좋을 것 같다.

---
### ★ 데이터 전처리할 때 '처리 순서'도 중요하다.

* N424 과제 중, 케라스 튜너를 이용해 하이퍼파라미터를 찾는 부분이 있었는데 계속 Input이 잘못 들어갔다고 오류가 나서 왜 그런지 구글링해보고, 헬프데스크에 올릴까 고민하고 다른 동기들의 과제도 살펴보면서 한참을 헤맸다.
> input값이 6900개인데 2284개만 넣었다고? validation feature data가 2284개가 맞는데, 어디서 잘못된거지?
```py
tuner.search(X_train, y_train, epochs = 10, validation_data = (X_val, y_val), callbacks = [ClearTrainingOutput()])
```
```
ValueError: Input 0 of layer sequential is incompatible with the layer: expected axis -1 of input shape to have value 6900 but received input with shape (None, 2284)
```
```py
print(X_train.shape, X_val.shape)
print(y_train.shape, y_val.shape)
```
```
(5634, 6900) (1409, 2284)
(5634,) (1409,)
```
알고보니, 데이터 전처리 과정 순서가 잘못되어서였다.
feature에 카테고리컬 데이터가 있어서 one hot encoding을 수행했는데, 그 부분이 문제였다.
학습/검증데이터를 나눈 후에 인코딩을 했더니 feature개수가 달라져버린 것이다.
랜덤하게 데이터셋을 나눴기 때문에 상대적으로 더 적은 검증데이터 셋에 들어가지 않은 값이 존재할 수 있기 때문이다.
**따라서, 인코딩을 수행해야 하는 경우 데이터셋을 분리하기 전에 먼저 수행해줘야 한다!!**
다음번엔 헤매지 말고 전처리에 영향을 받는 데이터 생각도 하면서 순서에 맞게 전처리를 해야겠다.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.