이전 포스팅에서 정밀도와 재현율에 대해서 알아보았다. 또한, 각 경우마다 재현율이나, 정밀도의 상대적 중요성이 다르다는 것 또한 알 수 있었다. 하지만, 정밀도와 재현율만으로 완벽하게 머신러닝 분류 알고리즘을 평가할 수 있을까? 이전 포스팅의 마지막 부분에서 다루었듯이, 정밀도 혹은 재현율 중 하나를 극단적으로 증가시키는 경우, 정밀도-재현율 트레이드오프로 인해 다른 하나의 수치가 급격하게 감소하게 된다. 따라서, 이들 중 하나만 가지고 성능을 측정하는 것은 성능의 전체를 대변할 수 없다. 이런 문제점을 해결하기 위해서 나온 개념이 F1 Score이다. F1 Score F1 Score는 정밀도와 재현율을 결합한 지표이다. 이 지표는 정밀도와 재현율이 어느 한쪽으로 치우치지 않을 떄 상대적으로 높은 값을 ..
파이썬 검색 결과
이전의 포스팅에서 실생활에 많이 쓰이는 정확도가 왜 머신러닝 분류쪽에서 주요한 성능 평가 지표로 사용될 수 없는지에 대해서 알아보았고, 정밀도와 재현율을 이해하기 위해서 오차 행렬의 각 요소(FN, FP, TN, TP)들이 의미하는 바를 알아보았다. 오차 행렬의 각 요소에 기반하여 정밀도와 재현율을 표현하자면, 정밀도 = TP / (FP + TP) 재현율 = TP / (FN + TP) 이렇게 수식처럼 나타내는 것이 계산을 하는 경우에는 편리하게 사용이 될 수 있으나, 정밀도와 재현율을 처음 접하는 사람들에게는 어떤 의미인지 이해하기 어려울 수 있다. 정밀도 = TP / (FP + TP) 분모를 보면 FP + TP 이다. FP는 Positive로 예측했지만 틀린 것을 의미하고, TP는 Positive로 예..
머신러닝 평가 크게 보았을 때, 머신러닝의 과정 : 데이터 가공 / 변환 -> 모델 학습 / 예측 -> 평가 머신러닝 모델은 회귀와 분류로 나뉘어지는데, 회귀는 주로 실제 값과 예측 값의 오차 평균값에 기반하여 평가가 이루어진다. 분류는 우리가 직관적으로 알 수 있는 정확도(맞은 예측의 수 / 전체 예측의 수)로 평가하기도 하지만, 정확도보다는 다른 평가 지표를 사용하는 경우가 더 많다. 분류의 성능 평가 지표에는 - 정확도(Accuracy) - 오차행렬(Confusion Matrix) - 정밀도(Precision) - 재현율(Recall) - F1 스코어 - ROC AUC 분류에는 2개의 결괏값을 가지는 이진분류와 다수의 결괏값을 가지는 멀티분류가 있는데, 위의 여섯가지 성능 측정 지표는 이진 분류에 ..
머신러닝에서 학습한 데이터들을 가지고 학습한 모델의 성능을 학습 데이터로 사용한다면 당연히 성능은 100% 정확하게 나올 수 있다. 하지만, 실제로는 이미 학습한 데이터를 가지고 하는 것이 아니라, 처음 접한 데이터를 예측을 해야 하기 때문에, 그 성능을 측정하기 위해서는 학습 당시에 사용하지 않은 데이터를 가지고 성능 테스트를 해야 한다. 하지만, 가지고 있는 데이터는 한정적이기 때문에, 가지고 있는 데이터 안에서 학습에 이용할 데이터와 성능 테스트에 이용할 데이터를 분리해야 한다. 이 과정을 수행하는 것이 sklearn.model_selection의 train_test_split이다. 실제로 거의 모든 머신러닝 과정에서 위 함수를 사용하게 된다. train_test_split() 함수에서는 2가지 파..
이전 글에서 해당 에러를 해결한 후에 PermissionError : [WinError 5] 엑세스가 거부되었습니다. 라는 에러가 등장했다. 이런 경우도 해결하는 방법이 생각보다 어렵지는 않았다. 일단 1. 잘못된 주소로 인해서 뜨는 경우 2. 관리자 권한이 필요한 경우 나의 경우에는 chrome_driver = "C:\\Users\\user\\chormedriver"라고 올바를 주소로 정정하는 순간 코드가 제대로 실행이 되었다. 2번 문제에 해당하는 경우, 해당 프로그램을 우클릭한뒤 '관리자 권한으로 실행'을 클릭한 후에 코드를 실행하면 에러가 해결이 된다고 한다.
가끔 파이썬 코드를 실행시키다가 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape 이런 형식의 에러가 뜨는 경우가 있다. 이런 경우에는 2가지를 가장 먼저 확인을 해주면 된다. 1. 백슬래시(\)를 써야하는 곳에 슬래시(/)를 사용한 경우 2. 백슬래시(\)가 2번 사용되어야 하는 곳에 백슬래시가 한번 사용된 경우 위의 경우에는 2번으로 확인하여 해결이 되었다. (PermissionError로 바뀐 모습)
TensorFlow 모두를 위한 엔드 투 엔드 오픈소스 머신러닝 플랫폼입니다. 도구, 라이브러리, 커뮤니티 리소스로 구성된 TensorFlow의 유연한 환경입니다. www.tensorflow.org 1. 텐서플로우 이름의 뜻 텐서플로우(Tensorflow)에서 텐서(Tensor)는 "다차원 수학 배열(Multidimensional arry of numbers)라고 말한다. 우선 숫자 한 개는 스칼라(scalar)이다. 이 스칼라와 비슷한 성질을 가진 또다른 스칼라들을 같이 묶어 놓은, 1차원 배열을 벡터(vector)라고 하고, 이를 rank1 tensor 라고 한다. 또 이 벡터들을 여러개 묶어 놓은 2차원 배열을 매트릭스(Matrix)라고 하고, 이를 rank2 tensor라고 한다. 여기서 각각의 ..
Select a specific programming language 문제정의 현재, 과 동기들과 함께 ‘월간 데이콘 4 코로나 데이터 시각화 경진대회’에 참여를 했다. 기존에 알고 있던 언어인 파이썬으로 데이터 분석을 할 수 있었다. 하지만, 주제가 시각화인 만큼, 시각적인 효과를 잘 나타낼 수 있는 그래프나 도표들을 이용하고 싶었다. 파이썬으로 matplotlib이나 seaborn등의 라이브러리를 이용해서 어느 정도 표현을 하는 것은 가능했으나, 내가 원하는 만큼의 시각화 효과를 줄 수 없는 것이 아쉬웠다. 시각화를 위해서 많이 쓰이는 언어들 Python : matplotlib, seaborn 외에도 folium으로 시각화를 하는데에 많이 사용한다. 하지만, 시각화 툴을 가지고 있는 정도이지, 시각화..
이전 글에서 이어지는 글입니다. (JY) 파이썬 Pandas groupby 이해하고 활용하기 -3 이전 글에서 이어지는 글입니다. (JY) 파이썬 Pandas groupby 이해하고 활용하기 -2 이전 글에서 이어지는 글입니다. (JY) 파이썬 Pandas groupby 이해하고 활용하기 -1 import pandas as pd train_data = pd.read.. dsbook.tistory.com 데이터 프레임을 직접 만들어보자. df1 = pd.DataFrame('key1' : np.arange(10), 'value1' : np.random.randn(10)) df2 = pd.DataFrame('key1' : np.arange(10), 'value1' : np.random.randn(10)) df..
이전 글에서 이어지는 글입니다. (JY) 파이썬 Pandas groupby 이해하고 활용하기 -2 이전 글에서 이어지는 글입니다. (JY) 파이썬 Pandas groupby 이해하고 활용하기 -1 import pandas as pd train_data = pd.read_csv('./train.csv') train_data.head() Groupby 이해하기 모든 groupby 연산은 기존.. dsbook.tistory.com 이번에는 데이터 프레임을 직접 만들어 줄 것이다. df = pd.DataFrame({ '사람': ['A', 'A', 'A', 'B', 'B', 'C', 'A', 'A', 'C', 'B', 'B', 'B'], '요일': ['월요일', '화요일', '수요일', '월요일', '화요일', ..
최근댓글