지난번에 if문과 map함수로 파생변수 만들기를 연습해봤다면,
https://sarah0518.tistory.com/69?category=984180
이번에는 apply함수로 파생변수만들기를 해볼거에요.
apply함수는 다양하게 쓰일 수 있는데,
이것도 지난번에 다뤘던 것처럼 applymap과 유사하다고 생각하면 됩니다.
가장 큰 차이점은
applymap은 dataframe에만 사용이 가능하지만,
apply는 dataframe 또는 series에 모두 사용이 가능해요.
그래서 아래와 같이 조건에 따라 return되는 값이 달라지는 함수를
미리 만들 어 준 다음에
간단히 apply함수를 적용해 주면 됩니다.
함수를 조금 더 자세히 설명해 보자면,
우선 기존에 label된 값은 2가지였어요.
정상이면 1, 불량이면 0으로요
그리고 같은 데이터셋에 predicted된 값을 pred라는 변수에 넣어줬습니다.
pred변수도 정상이면 1, 불량이면 0으로 표시되어있습니다.
1
2
3
4
5
6
7
8
9
|
def classified_result(df_name):
if df_name['target']==0 and df_name['pred']==0:
return 'TN'
elif df_name['target']==1 and df_name['pred']==1:
return 'TP'
elif df_name['target']==0 and df_name['pred']==1:
return'FP'
else:
return 'FN'
|
cs |
따라서, target=0, pred=0이면 True Negative로
불량을 불량으로 잘 맞춘 것이고
target=1, pred=1이면 True Positive로
정상을 정상으로 잘 맞춘 것,
target=0, pred=1이면 False Positive로
불량인데 정상으로 잘 못 판단한 것이고
마지막은 False Negative로 정상인데 불량으로 판단한 것입니다.
1
|
df['result']=df.apply(classified_result, axis=1)
|
cs |
이제, 위의 함수를 적용하여 만든 새로운 변수 result에
TN, TP, FP, FN값을 넣어 주기 위해 위와 같이
한 줄만 추가로 더 적어주면 끝!
혹시 궁금해 하실 분이 계실테니,
만약 apply대신 applymap을 사용하면
아래와 같은 error msg가 나오니 참고하세요.
'IT > 파이썬' 카테고리의 다른 글
[그래프]산점도에 label 추가하기 (0) | 2021.09.17 |
---|---|
[그래프] subplot 활용하기 (0) | 2021.08.12 |
[그래프] for문으로 산점도 그리기 plt.scatter 활용 (0) | 2021.08.02 |
Bayesian optimization (0) | 2021.06.29 |
[for loop 활용] 최적화된 feature set 찾기 (0) | 2021.06.25 |