소개
데이터 사이언티스트 김동규입니다.
현재 AI연구원으로 재직하고 있습니다.
강의
전체 1수강평
- 한 방에 끝! 빅데이터분석기사 실기 작업형
- 한 방에 끝! 빅데이터분석기사 실기 작업형
- 한 방에 끝! 빅데이터분석기사 실기 작업형
게시글
질문&답변
2022.12.07
Futurewarning 에러 관련해서 문의드립니다
안녕하세요 이준혁님!말씀하신 사항은 코드 실행에 있어서 문제가 없으며 이에 대한 사항은 사전에 진흥원에 질의응답을 마쳐놓았습니다.warning은 현재 코드에 주의할 점이 있지만 실행은 정상적으로 이뤄진다는 뜻이니 걱정하지 않으셔도 됩니다.감사합니다.
- 0
- 1
- 501
질문&답변
2022.11.23
성능확인 질문
안녕하세요, wjsgns745님!질문주셔서 감사합니다.질문주신 부분의 코드는 실제 시험환경에서는 존재하지 않는 '정답' 데이터입니다.또한 기본적으로 강의에서 제안하는 '실압코'에서는 Holdout과 같은 과정이 생략되어 있는데요,그 이유는 이렇습니다.1 ) Holdout을 뺌으로써 split, validation&tuning cycle 생략2) 더 적은 코드를 외워도 됨으로써 긴장되는 시험환경에서 보다 쉽게 적용다만 Holdout을 진행하지 않음으로서 제가 제안드린 풀이방법이 실제로 성능이 어떻게 되는지 궁금하거나, 성능이 충분하지 않을까봐 불안하실 수 있습니다.이러한 이유로 위와 같이 성능을 증명하는 코드를 추가한 것입니다.만약 다소의 여유가 있어 holdout과 ensemble 등의 과정을 적용하고 싶으시다면,시험 환경에서 제시되는 train data를 split해 학습용과 평가용 데이터로 나눈 뒤(Holdout),학습용 데이터에 대해 학습시킨 뒤 평가 데이터셋을 통해 제시된 평가지표로 평가해보며,성능이 좋은 모델을 선택하고, 앙상블의 비율을 바꿀 수 있습니다.하지만 그동안의 시험 경향과 제한된 환경으로 인해 굳이 시험환경에서는 홀드아웃이나 별도의 튜닝없이 실압코만 잘 적용해도 충분히 만점을 받으실 수 있으니, 이를 중심으로 작업1유형에 더 집중하시는 것을 추천드립니다.감사합니다.
- 0
- 1
- 176
질문&답변
2022.11.20
기출 문제 풀이 질문
안녕하세요, blair님! 질문주셔서 감사합니다.우선 해당 부분은 조금 깊은 내용일 수 있는데요, 간단히 말씀드리면 pandas 라이브러리의 내부 매서드(groupby, sort_values 등)를 통해 출력되는 결과물은 원본에 영향을 주지 않는 새로운 결과물이기에 그렇습니다. 때문에 해당 결과물을 보여주기만 할뿐, 원본 데이터와는 독립적인 별개의 것입니다.때문에 이러한 기능을 사용한 데이터를 그대로 사용하고 싶다면 해당 메서드를 사용한 값을 변수명으로 지정해 사용하거나, 내부 파라미터 중 inplace=True를 이용해 원본 데이터까지 수정해야 합니다.그로 인해 해답 코드로 제시한 과정에서는 df2에 새로운 정렬기준을 적용한 데이터프레임을 지정한 후, 이를 이용해 진행한 것입니다.만일 새로운 데이터로 지정하지 않고 사용하고 싶으시다면 다음과 같이 사용할 수도 있습니다.df = pd.read_csv("https://raw.githubusercontent.com/leadbreak/inflearn_lecture/main/datasets/%EA%B8%B0%EC%B6%9C02/1_1.csv") df.sort_values(by=['CRIM'], ascending=False, inplace=True, ignore_index=True) df['CRIM'][:50] = min(df['CRIM'][:50]) print(df[df['AGE'] >= 90 ]['CRIM'].mean()) 또한 추가적으로 최소값으로 대체하는 과정에서 해당 값을 min으로 지정하셨는데요. 이는 직관성의 측면에선 아주 훌륭할 수 있지만 동일한 이름의 메서드가 다수 존재하며,이를 변수명으로 지정했을 때 이후 다른 작업 과정에서 해당 메서드가 정상적으로 작동하지 않을 수도 있습니다. 이러한 문제는 추후 실무에서 모델링을 하거나, 취업을 위한 코딩테스트에서도 빈번하게 발생하는 실수이기에 주의가 필요하다는 것 말씀드리며 답변 마치겠습니다.감사합니다.
- 0
- 1
- 205
질문&답변
2022.10.27
predict 와 predict_proba 차이
안녕하세요 mouse님!질문주신 사항 답변드리겠습니다.predict는 각각의 모델의 최종적인 예측값을 출력하는 결과인데요.회귀 모델의 경우 0.98733...과 같이 구체적으로 특정 값을 출력하게 되고,분류 모델의 경우 0, 1, 2와 같이 가장 확률이 높은 클래스를 출력하게 됩니다.그리고 이때 분류 모델이 각 클래스에 대한 확률을 일일히 출력하는 것이 predict_proba 입니다.(predict_proba는 predict probability, 즉 각 클래스의 확률을 예측하라는 의미입니다)따라서 회귀 모델에는 predict_proba를 사용할 수 없으며, 출력되는 값은 다음과 같습니다.[클래스가 3개인 문제를 풀 경우]Input -> [클래스 0일 확률, 클래스 1일 확률, 클래스 2일 확률]당연히 여러 개의 input을 넣을 경우 그 input만큼의 각 클래스 확률을 출력하게 됩니다.따라서 강의안에서 제시된 predict_proba[:,1]과 같은 방식은 이진분류 문제일 때, 회귀문제를 분류모델을 통해 푸는 방식을 뜻하며 이는 곧 1일 확률(&0이 아닐 확률)이기 때문에 이렇게 사용됩니다. 그리고 다중분류일 때 쓰는 방법에 대해서도 질문주셨는데요.단순히 다중분류 모델을 사용해서 0, 1, 2 중 하나를 출력하는 방법이 있으며,이를 predict_proba로 출력한 이후 일정값 이하인 경우 필터링해 사용하기도 합니다.위 방법을 사용하기 위해선 np.argmax를 통해 각 row별 최대값의 index를 구한 후 해당 값이 기준치 이상인지를 따진 후 출력하는 방식을 사용합니다. 추가적으로 궁금하신 사항이나, 위 답변으로 해결되지 못한 부분이 있다면 다시 질문주시면 최대한 빠르게 답변드리도록 하겠습니다.감사합니다.
- 0
- 1
- 10K
질문&답변
2022.10.18
다중분류 데이터가 숫자가 아닐경우
안녕하세요, mouse님!질문해주신 사항처럼 종속값이 숫자가 아닌 명목형 변수와 같은 형태라면 회귀 모델이 정상적으로 작동하지 않습니다.때문에 이러한 경우에는 분류 모델을 사용하거나, 해당 명목형 변수에 대응하는 숫자값으로 바꿔준 뒤 예측한 값을 가장 가까운 명목형 변수와 매칭시키는 과정이 필요하게 됩니다.이와 관련해 명목형 변수를 숫자형 변수로 바꿔준 뒤,회귀로 예측하고, 이를 다시 맵핑시키는 코드를 공유드릴까 했지만애초에 질문해주신 방식은 회귀적으로 풀기에 적합하지 않으며시험 합격 목적으로나 다른 공모전을 목적으로 해도 사용하지 않을 단순 기술적인 부분이기에넘어가도록 하겠습니다.다만 만약 맵핑시키는 과정이 궁금하시다면 본 강의의 map과 lambda를 이용한 맵핑을 참고하시거나 추가 질문주시면 따로 공유드리도록 하겠습니다.감사합니다.
- 0
- 1
- 213