CS/Machine Learning

[모두의 딥러닝]ML lab 05: TensorFlow로 Logistic Classification의 구현하기 (new)

dawonny 2021. 7. 18. 02:33
728x90
반응형

참고영상

https://www.youtube.com/watch?v=2FeWGgnyLSw&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=13&ab_channel=SungKim

 

logistic regression 을 tensorflow를 통해 구현해보는 시간

맨 처음부터!

일단 우리가 가지고 있는 데이터는?

x_data 안에 들어가있는 각각 리스트들은 하나의 인스턴스를 말할거다

그리고 y_data의 결과값은 0 아니면 1로만 나온다고 하자.

그 다음 feed-dict 를 사용하기 위해선 placeholder를 사용해야 한다.

X 와 Y를 만들었다.

shape에 주의 해야 한다.

더 많은 x_data , y_data를 줄수도 있으니 None(n)으로 설정해 둔거고

X에서 shape을 2로 둔 이유는 x1, x2 이렇게 변수가 2개이기 때문이고.

Y는 y_data가 1개이기 때문에 shape 에 1이라고 쓴거고

그런 다음엔 W와 b를 써준다

우리는 matrix 곱셈을 할거다 -> Weight의 shape에 신경을 써야한다

matrix(X,W) 을 하겠지

W의 shape을 쓸때 2인건 X의 2번째 숫자랑 맞춰준거다 --> [None, 2]* [2 ,1]

1인 이유는 나가는값이 1개이기 때문이다.

b(bias)는 나가는 값이 1개 이니까 이것도 1이라고 써주면 된다.

그 아래 코드를 보자

tf.matmul(X,W) + b

이 부분은

WX + b를 의미한다

이걸 sigmoid에 넣어주는 거다

이걸 직접 구현하고 싶다! 하면 주석으로 써져있는 코드를 쓰면 되겠다.

그 아래 cost 부분을 보자

reduce_mean 이부분은 1/m 시그마 (평균내는 식)

그 아래 부분

cost 좀 minimize 해줘! 하면

train이 w을 조절해주겠지


만약에 값이 0.8로 나오면 1이랑 가까우니까 Pass라고 고려할거고

0.1로 나오면 0이랑 가까우니까 Fail이라고 생각할거다

이 기준은 아마 0.5가 되겠지!

이 결과값을 0.5를 기준으로 판단하고

tensorflow에서 float32로 casting 을 하면

True는 1, False는 0으로 나오게 된다.

predict에 이걸 저장하자

우리가 예측한 값 predicted 와 주어진 Y의 값이 똑같은지 확인하고(equal)

cast를 해서 0이나 1로 나오게 한다

이 값들을 평균을 낸다

이게 accuracy 이다

학습하는 모델은 이전과 동일하다

200번 마다 한번씩 출력하도록 하자

전체~~~~~~ 코드를 보자

코드는 이전과 동일하니 출력된 결과를 보자

step이 0부터 늘어나는데 cost가 점점 작아진다

hypothesis를 보자

저 각각의 숫자들을 0이랑 1중에 가까운 수로 가도록하면 우리가 가지고 있는 y_data와 같다

실제 Y값과 똑같네!


실제 데이터에 적용해보자

당뇨병을 연구하는 자료

맨 오른쪽에 있는게 y_data가 되겠다

전체 코드는 이러하다

shape을 주의해야겠다

x의 값이 8개니까, 이전과 다르게.

accuracy를 보면 76프로 정도의 정확도를 가진다는 걸 알수 있겠다

728x90
반응형