2022. 1. 6. 12:12ㆍ개발일지/내일배움캠프 TIL
오늘은 무엇을 배웠을까요?
바로 알고리즘 강의 중 배열, 링크드 리스트와
머신러닝 강의 중
tensorflow, kaggle을 활용하여
선형회귀 실습 해보기를 진행했습니다.
링크드 리스트는 빅오표기법 O(N) 방식으로 특정 원소를 조회하는 것이 가능하며
중간에 삽입 또는 삭제를 할 경우 O(1) 방식으로 가능합니다.
Array의 경우 빅오 표기법은 위와 반대가 되겠습니다.
데이터를 추가하는 경우 모든 공간이 다 찼어도 맨 뒤의 노드만 동적으로 추가한다면 문제 없습니다.
Array의 경우는 새로운 메모리 공간을 할당받아만 합니다.
즉 데이터에 접근하는 경우가 빈번하다면 Array를,
삽입과 삭제가 빈번하다면 링크드 리스트를 사용하는 것이 바람직하겠지요.
근데 파이썬의 배열은 list 라고 부르는데 왜 그런 것일까요?
파이썬의 경우 내부적으로 동적 배열이라는 걸 사용해서
배열의 길이가 늘어나도 O(1)의 시간 복잡도가 걸립니다.
https://en.wikipedia.org/wiki/Dynamic_array
그래서 파이썬의 배열은 링크드 리스트, 배열 두가지 모두로 쓸 수 있습니다.
(근데 링크드 리스트는 아닙니다. 이 부분은 조금 복잡하니 그냥 모두 쓸 수 있다고 생각하는게 좋겠습니다.)
https://colab.research.google.com/drive/1TN0zpxNsO7aeX6a0A39fJljlc8CiGNZv?usp=sharing
위 링크로 들어가면 제가 진행한 1주차 머신러닝 강의 숙제를 볼 수 있답니다.
처음 머신러닝 fit을 진행할 때 loss가 줄지 않아서 왜 그럴까 생각해보니
다른 방법으로 시도를 안 해봤더라구요.
model = Sequential([
Dense(1)
])
model.compile(loss='mean_squared_error', optimizer=SGD(lr=0.01)) # mean_absolute_error, Adam, lr=0.1 등으로 바꿔 진행해볼것)
model.fit(
x_train,
y_train,
validation_data=(x_val, y_val),
epochs=100
)
주석 처리한 부분처럼 다양한 시도를 해보며 loss가 잘 줄어드는 지 확인하는 과정을 거치면서
공부를 했답니다.
오늘은 여기까지!
내일 볼 수 있다면 좋겠어요.
제발!~
'개발일지 > 내일배움캠프 TIL' 카테고리의 다른 글
21-23일차 내일배움캠프 (0) | 2022.01.12 |
---|---|
20일차 내일배움캠프 개발일지 (0) | 2022.01.08 |
12일-18일차 내일배움캠프 개발일지 (0) | 2022.01.06 |
11일차 내일배움캠프 개발일지 (0) | 2021.12.28 |
10일차 내일배움캠프 개발일지 (0) | 2021.12.25 |