실기 준비하면서 기출문제집 등을 봐도 2유형은 너무 어려웠는데 선생님 덕분에 2유형 만점으로 합격했습니다. 늦었지만 감사 인사 드립니다!
@jaewooklee27015 ай бұрын
오늘 시험봤는데 회귀 나왔네요ㅜㅎㅎ MAE를 이용하는 회귀분석이었는데, 다행히 잘 푼 것 같아요. 감사합니다!
@유승현-r2h18 күн бұрын
도움많이 됩니다😊
@강동-t6j5 ай бұрын
감사합니다! 많은 도움 되었습니다~!
@yuyuyu-ci4sb5 ай бұрын
감사합니다 큰도움됐어요!!!
@nono333228 күн бұрын
모델 성능평가할떄 이렇게하면 되지않나요?print(mean_squared_error(y_valid,pred,squared=False)) 24:29초기준으로요!
@aiaiyouknow10638 күн бұрын
★수정★ 그렇게 하셔도 됩니다! 그런데 조금 수정할게요. mean_squared_error() 모듈이 1.6버전 부터는 squared=False 매개변수를 지원하지 않는다고 합니다. 현재 시험에서는 sklearn 버전이 1.5.2이므로 mean_squared_error(y_valid,pred,squared=False) 이렇게 쓰시는거보다는 아래와 같이 사용하세요. (현재 시험환경에서 이렇게 쓰면 warning 이 떠요.) 즉, 1. root_mean_squared_error 모듈 직접 호출하여 코딩 from sklearn.metrics import root_mean_squared_error rmse = root_mean_squared_error(y_test, pred1) 이러한 형태 2. 제가 영상에서 설명해드린 형태로 rmse 값 도출 두 가지 방법 중에 편하신 방법으로 사용하세요.
@Gangdalf-si9nt5 ай бұрын
어제부터 영상보고 분류 엄청 열심히 복습해서 이제 안보고 할 정도가 되어서 회귀 지금 봤는데 분류를 열심히 하고 오니까 회귀도 거의 비슷한 흐름으로 풀 수 있는 것 같아서 다행이네요 혹시나 분류, 회귀 관련해서 roc auc score나 accuracy score, rmse 같은 평가지표 더 알아두고 공부하면 좋을 만한 건 어떤게 있을까요? 좌절하고 시험 포기할 뻔했던 저에게 차근차근 꼼꼼하게 알려주시는 정말 좋은 영상 올려주셔서 감사합니다!
@aiaiyouknow10635 ай бұрын
분류 모델에서 F1 스코어, 회귀모델에서 결정계수 정도 추가적으로 기억해두심 좋을것같아요!
@Gangdalf-si9nt5 ай бұрын
@@aiaiyouknow1063 네 감사합니다!
@happybao__o5 ай бұрын
많은 도움되고 있습니다.! 혹시 17:10 영상에서 자막에 종속변수=독립변수=목표변수라는 게 이해가 안되는데요. 종속변수=목표변수이고 나머지가 독립변수이지 않나요 ㅠㅠ
@aiaiyouknow10635 ай бұрын
어머 오타네요! 말씀 주신대로가 맞습니다! 종속변수 = 목표변수 라고 보심되요!
@nono333227 күн бұрын
회귀에서 데이터타입이 int형이나 float만 있다면 라벨인코딩할필요가 아예없겠네요?
@aiaiyouknow10637 күн бұрын
그렇죠!
@nono333227 күн бұрын
@@aiaiyouknow1063 아! 그리고 혹시 회귀든 수치형이든 n_estimators max_depth 각각 120 20 으로 통일해서 써도될까요..?..
@aiaiyouknow10637 күн бұрын
@@nono33322 우선 통일해서 쓰시고, 모델 성능 보시면서 수치를 조정하는식으로 코딩하세요.
분류 예제에서는 train 데이터에서 결측값이 ‘환불금액’ 컬럼만 있었기때문에 train.fillna 라고 처리한거구요. (train 데이터의 결축값을 채우겠다.) 회귀 예제에서는 결측값이 있는 컬럼이 여러개 있었기때문에 각각의 컬럼의 결측값을 각 컬럼의 최빈값으로 채우겠다. 라고 선언한겁니다. 하나의 기준으로 통일하시고 싶으시다면 회귀영상 예제처럼 사용하셔도 되요.
@nono333227 күн бұрын
@aiaiyouknow1063 아하. 감사합니다
@nono333226 күн бұрын
@@aiaiyouknow1063 선생님 가끔 기출문제보다면 2유형에서 서로 같은컬럼의 개수는 같은데 그 컬럼안에 내용물이 달라서 오류가 뜨는데요. train.홍길동에는 (a,b,c)가 들어있고 test.홍길동에는 (a,b,t)가 들어있어서 나는 오류요 그것도 알려주신 total = pd.concat([train, test]) #print(total) le.fit(total['주구매상품']) total['주구매상품']= le.transform(total['주구매상품']) le.fit(total['주구매지점']) total['주구매지점']= le.transform(total['주구매지점']) 이런걸로 해결하면될까요? 아니면 알려주신 요거는 컬럼이 서로 다를떄만 해당될까요 질문 많이해서 죄송해서ㅜ시험끝나면 후원이라도 남기겠습니다.
@aiaiyouknow10636 күн бұрын
@@nono33322 아주 중요한 포인트의 질문입니다! 맞습니다. 저희가 현재 대부분의 라벨인코딩 작업을 le.fit(train['컬럼1']) train['컬럼1'] = le.transform(train['컬럼1']) test['컬럼1'] = le.transform(test['컬럼1']) 이런식으로 하고있죠? 그런데 이 형식은 train 데이터의 '컬럼1'을 기준으로 라벨인코딩 된 것이기때문에 간혹 train 데이터에 없었던 데이터가 test 데이터의 '컬럼1'에 있는 경우에는 당연히 오류가 납니다. (기준점이 없으니까요.) 그럴때는 두 데이터를 병합(concat) 하셔서 한 번에 라벨인코딩 해주시고, 다시 해당 데이터를 나눠서 분석 진행해주시면 되어요. 혹시 잘 모르겠다 싶으시면 (kzbin.info/www/bejne/jYi1XmCtrs2cd6s) 요 영상 참고해주세요!
@nono333226 күн бұрын
@@aiaiyouknow1063 네 그거 참고했습니다.!! 영상대로 하면 분할하는작업이 헷갈려서 실수 할수도 있으니까 total = pd.concat([train['transmission'],test['transmission']]) le.fit(total) train['transmission'] = le.transform(train['transmission']) test['transmission'] = le.transform(test['transmission']) 요렇게 만약에 만들면 분할할필요없이 한큐에 똑같은 기능하지않을까요? 괜찮을까요?
@김지현-g9x7x7 күн бұрын
15:14 test = df.iloc[3800:, :] 라고 해주면 안되나용???
@aiaiyouknow10637 күн бұрын
df.iloc[3800:, :]은 데이터프레임의 3800번 행부터 끝까지의 행과 모든 열을 의미하므로 그렇게 하셔도 됩니다!
@pyooo-x2r24 күн бұрын
안녕하세요! 영상이 정말 도움이 되었습니다. 혹시 결측치가 있는 컬럼 전체를 제거하는 건 너무 위험한 방법일까요?
@aiaiyouknow106324 күн бұрын
네 보통의 경우 결측치를 제거할 때는 행을 기준으로 삭제합니다. 결측치가 있는 컬럼 전체를 삭제(열 기준)하게되면 유효데이터가 삭제될 수 있기때문입니다.
@우신-m7n5 ай бұрын
곧 후쿠오카도 가고 빅분기도 시험인데 이런 접점이!
@aiaiyouknow10635 ай бұрын
ㅋㅋ 좋은 여행되시고 좋은 결과있기를 바랍니다!
@뇸옴뇸뇸뇸뇸29 күн бұрын
안녕하세요 선생님, 강의 잘 보고 있습니다.. 감사합니다! 혹시 결측치 처리 관련해서는 본인 판단으로 이행하면 될까요 ? 예를들면 결측값이 얼마 없을 때는 삭제하고, 많을 때는 최빈값으로 채우고.. 어떤 상황에 어떻게 처리해야할지 감이 안 잡히네요 ㅜㅜ
@aiaiyouknow106329 күн бұрын
네 맞습니다. 정해진 기준이나 개수가 있는 것이 아니라 전체 데이터 수 대비 결측값이 어느정도 있는지 분석가가 파악하여 대체하거나 삭제하는 방법을 취하시면 됩니다. 예를들어 전체 데이터가 900개인데 이 중 특정 컬럼의 데이터가 891개인 경우에는 결측값을 삭제하셔도 무관합니다. 하지만 특정 컬럼의 결측값 개수가 520개인 경우에는 대체하는 것이 좋겠죠? 분석하실 때 아… 결측값이 좀 많은데… 싶으실땐 대체한다! 라고 생각해주세요. 대체값의 경우 해당 컬럼의 데이터 형태를 보고 파악하심이 가장 좋지만 정 모르시겠다 싶으시면 최빈값으로 대체 해보시고, 모델 성능 확인하시는 쪽으로 학습을 진행해보세요. 하시다보면 감이 잡히실거에요. 😊
@뇸옴뇸뇸뇸뇸28 күн бұрын
@ 감사합니다 !
@homerunballl5 ай бұрын
깃허브에 첫번째 Follower가 되었답니다. :)
@iiiilllllliiiiiix23715 ай бұрын
교수님 test 데이터셋 나눌 때, test= df.iloc[3800:4009, : ] 이렇게 해도 되나요?
@aiaiyouknow10635 ай бұрын
그렇죠! 맞습니다.
@고종혁-d8x5 ай бұрын
강의 감사드립니다 한가지 질문 사항이 있는데 인코딩 시 라벨인코딩,원핫인코딩 방법이 있는 것으로 알고있습니다. 혹시 라벨인코딩,원핫인코딩을 하는 기준이 있을까요? 데이터 형식에 따라 달라지는 건지,, 그냥 교수님께서 하신대로 라벨인코딩으로도 시험에서도 충분히 가능할까요?
@aiaiyouknow10635 ай бұрын
라벨인코딩은 텍스트 데이터를 고유의 숫자로 변환해주는 전처리 작업이고, 트리 계열 모델에서는 문제없이 사용이 가능하기때문에 사용한 것입니다. 원핫인코딩은 고유값에 해당하는 데이터를 1로 그렇지 않은 데이터를 0으로 처리해주는 방식이죠. 아마 공부해보셔서 내용은 아실거라고 생각됩니다. 원핫인코딩을 사용할 경우 추가적으로 코드 작업해야하는 부분이 생기기 때문에 저는 라벨인코딩을 사용해서 바로 분석에 사용했던것입니다. 코드 구현 방식에 정답은 없습니다. 다만 최적의 모델을 만들기 위해 다양한 방법들이 있는것이죠. 제가 작성한 코드 이 자체가 절대적이다 이렇게 보지 마시고, 참고용으로 이해해주세요.
@고종혁-d8x5 ай бұрын
@@aiaiyouknow1063 네 답변 감사드립니다!! 저는,, 라벨인코딩으로 가겠습니다..ㅎ
@dhkim17485 ай бұрын
강의 감사합니다. ^^ 혹시 price를 라벨인코더가 아니라 달러 표시 등 없애고 FLOAT로 바꿔줘야 하지 않나요? 확인 부탁드려요
@aiaiyouknow10635 ай бұрын
(수정) 제가 사용한 데이터는 오픈데이터라 달러표시가 있는 좀 복잡한? 형태이구요. 실제 시험에서는 거의 목표변수는 수치데이터로 제공될거예요! 그래도 데이터를 원본형태로 변환하는 방법을 알아두어야 하기때문에 제가 다시 올려드린 회귀 추가설명 영상을 꼭 참고해주세요!
@블루루-f5c5 ай бұрын
교수님! 저 분류에서는 라벨인코더해도 상관없는데 회귀에서는 라벨인코더하면 큰숫자가 영향이 있을 수 있어서 겟더미 쓰는게 좋다는데 상관없을까요???
@aiaiyouknow10635 ай бұрын
네 괜찮습니다. 제가 회귀로 시험봤거든요. ㅋㅋ
@hyeinkim23165 ай бұрын
영상 정말 감사합니다! 혹시 작업형 3유형도 업로드 예정이시라면, 언제 업로드되는지 여쭈어봐도 괜찮을까요?
@aiaiyouknow10635 ай бұрын
3유형 영상 작년 12월에 업로드해두었어요~!
@hyeinkim23165 ай бұрын
@@aiaiyouknow1063 감사합니다!!
@hansolle3325 ай бұрын
영상 잘봤습니다! 혹시 RMSE가 어느정도 되어야 적당한 값인지는 어떻게 판단할 수 있을까요??
@aiaiyouknow10635 ай бұрын
RMSE는 정해진 범위가 있는것이 아니라서 시험때 모델링해서 확인되는 최대한 작은 값으로 제출한다고 생각하심 될거같아요.
@천재다-t2x5 ай бұрын
분류랑 회귀 강의 모두 잘 들었습니다!! 그런데 궁금한 점이 있습니다..! 최종결과 예측 단계에서 분류에서는 test_X = test.drop(columns = ['회원ID']) 이렇게 성별을 제외하고 예측 단계를 실행하는 이유가 뭔가요? 회귀에서는 목표변수인 'price'를 drop 시키는 test_X = test.drop(columns =['price'])로 실행을 하는데 두 개의 차이가 뭔지 알고 싶습니다 ㅠㅠ
@천재다-t2x5 ай бұрын
분류 영상에서 test 데이터에 '성별'이 있다고 가정한다면 '성별'도 제외하는 것이 맞나요?
@aiaiyouknow10635 ай бұрын
Q1. 최종결과 예측 단계에서 분류에서는 test_X = test.drop(columns = ['회원ID']) 이렇게 성별을 제외하고 예측 단계를 실행하는 이유가 뭔가요? → 분류에서 회원ID 컬럼은 분석에 직접적인 연관이 없는 컬럼이라 제거한 것입니다. (영상에서도 설명 나올거예요.) Q2. 회귀에서는 목표변수인 'price'를 drop 시키는 test_X = test.drop(columns =['price'])로 실행을 하는데 두 개의 차이가 뭔지 알고 싶습니다 → 영상에서 사용한 회귀분석 데이터는 전체 데이터를 잘라서 일부를 Train으로 일부를 Test로 사용했죠? 그러다 보니 Test 데이터에 당연히 목표변수(price)가 포함되어있었고, 그렇기 때문에 이를 제거하고 사용한겁니다. 분류 문제는 Kdata 공개문제로 시험환경과 동일한 데이터를 제공하기때문에 목표변수가 Test 데이터에 포함되어있지 않아서 별도로 처리하지 않았던거구요.
@Gangdalf-si9nt5 ай бұрын
@@aiaiyouknow1063 만약에 회귀 문제에 train과 test로 나누어져 있고, test에 price칼럼이 없다면 마지막 부분에 test_X = test.drop(columns =['price'])를 안써도 되는건가요? 혹시 이런 상황이면 pred2 = test라서 제출형식에 변수 넣을때 ({'price:test'})로 해도 상관없을까요?
@aiaiyouknow10635 ай бұрын
test에 price 컬럼이 없다면 price 컬럼을 제거하는 코드는 별도로 작성하지 않아도 되구요. 그렇다면 pred2= rfr.predict(test)와 같이 되겠죠? 제출형식에는 pd.DataFrame({'price':pred2}).to_csv('result.csv', index=False)와 같이 작업하심됩니다.
@Gangdalf-si9nt5 ай бұрын
@@aiaiyouknow1063 아.. 이해했습니다 감사합니다
@뺑끼-w1n19 күн бұрын
모델성능평가 없이 바로 그냥 랜포돌리고 데이터프레임 만들어서 제출해도되나요?
@aiaiyouknow106319 күн бұрын
모델의 성능이 평가에 반영되기때문에 성능평가 후에 제출하셔야 합니다!
@뺑끼-w1n19 күн бұрын
아 그런가요...f1 score나 mse roc 이런거는 그냥 제가만든 모델 성능평가만 하는거고 실제 제출은 예측값만 제출하는거라 생략해도 된다고 알고있었는데 제가 잘못알고 있었던걸까요?
@뺑끼-w1n19 күн бұрын
그냥 모델링해서 바로 데이터프레임만들고 제출해도되는걸로 알고있었는데 사이에 모델성능평가를 해야한다는 말씀이신거죠??😊ㅣ
@aiaiyouknow106319 күн бұрын
@@뺑끼-w1n 제가 말씀 드렸던것은 성능평가는 트레인 데이터로 만든 모델에 대한 성능평가 후에 성능이 어느정도 잘 나온다면 문제에서 주어진 test 데이터로 결과 예측해서 제출해야된다는 의미였습니다! 어차피 문제에서 주어지는 test 데이터는 종속변수에 대한 내용이 없기 때문에 성능평가를 할 수 없거든요. 트레인 데이터에 대한 성능평가 없이 그냥 제출하신다는 의미로 이해해서 위와같이 말씀드렸네요. ㅋㅋ
@뺑끼-w1n19 күн бұрын
@@aiaiyouknow1063 아 제가 질문을 너무 어렵게 했나보네요 ㅠ 자꾸 질문해서 죄송합니다. 제가 공부시간이 별로없어서 트레인 데이터에 모델성능평가를 안하고 그냥 바로 모델링한걸로 제출할려했거든요. 굳이 roc나 mse등 잘나왔는지 확인안해보고 바로 제출해도 된다는 말씀이시죠? 제가 제대로 좋게나온건지 안좋게나온건지도 안보고 제출할거면???
@minsungkang88795 ай бұрын
선생님 혹시 RMSE값으로 성능 평가할때 만약 데이터 값의 크기가 커지면 RMSE값도 커지나요? 제가 다른 데이터로 실습을 해보았는데 r2_score는 0.81 나오는데 RMSE값이 5만이나 나오네요... 참고로 랜덤포레스트 모델 썼고 데이터셋 크기는 2만행정도 됩니다.
@aiaiyouknow10635 ай бұрын
데이터의 수가 늘어나면 예측해야되는 데이터의 수 또한 늘어나기 때문에 RMSE 수치가 올라갈 수는 있습니다. 다만, 수치가 너무 높게 나온다면 모델을 리모델링 해서 성능을 보완해 보시는게 좋을것 같아요.
@minsungkang88795 ай бұрын
@@aiaiyouknow1063 덕분에 80점으로 합격했습니다! 2유형은 만점 받았네요! 감사합니다~
@aiaiyouknow10635 ай бұрын
@minsungkang8879 와! 너무너무 츅하드립니다! 😄 고생많으셨어요!
@minsungkang88795 ай бұрын
@@aiaiyouknow1063 복받으실거에요😀
@fsthyun5 ай бұрын
소리가 너무 작아요.
@aiaiyouknow10635 ай бұрын
엇 저는 잘 들리는걸로 확인이 되는데 음량을 한번 조절해보시겠어요?
@yuyuyu-ci4sb5 ай бұрын
다른 유투브영상에 비해 소리가 작아서 이거다듣고 다른 유투브 틀면 귀청떨어질뻔 하긴해요ㅋㅋ
@aiaiyouknow10635 ай бұрын
@@yuyuyu-ci4sb 앜ㅋㅋ 죄..죄송합니다.
@문현우-v9y5 ай бұрын
강의 감사합니다! 궁금한점 몇개 여쭤보겠습니다... 1. 혹시 원핫인코딩 대신 라벨인코더를 사용하시는 이유가 트리계열 ML알고리즘일 경우 숫자의 특성을 반영하지 않아서인지 궁금합니다! 공부하면서 여러가지 코드를 확인하고 있는데 pd.get_dummies라는 원핫인코딩을 많이 사용하는것 같더라구요(편해서 사용하는것 같기는 한데). 2. 매우 드문경우에 train과 test데이터 셋에 각각 원핫인코딩(pd.get_dummies)를 사용하면 열이 같지 않아 랜덤포레스트 함수에 오류가 발생하더라구요. 제가 코드에서 찾아보았을때는 train.describe(include = 'O')에서 열의 unique값과 test.describe(include = 'O')에서 열의 unique값이 달라서 발생한다고 생각하는데 맞나요...? 덕분에 빅분기 준비하는데 많은 도움이 되고있습니다. 강의 올려주셔서 너무 감사합니다!
@aiaiyouknow10635 ай бұрын
1. 네 맞습니다. 2. 저는 주로 라벨인코딩으로 작업을 했었는데요.각각 인코딩을할 경우 고유 라벨이 다를때 간혹 오류가 발생할 수 있기는 합니다. 제가 영상에 각각 인코딩한것을 보여드린것 또한 하나의 방법이구요. 인코딩 방법은 여러가지가 있으니 참고하셔서 코드 작성하심 될것같아요. 참고로 제 경험상 트레인 테스트 각각 문자열 데이터를 라벨인코딩 했을때 문제가 되는 요인은 없었기에 그렇게 설명드렸어요!
@문현우-v9y5 ай бұрын
@@aiaiyouknow1063 감사합니다!
@먕먕-z8n5 ай бұрын
강의 감사합니다 ㅎ ㅎ #트레인 3800, 테스트 209 train = df.iloc[:3800,:] test = df.iloc[-209:,:] #print(train.info()) #print(test.info()) #데이터 분할 from sklearn.model_selection import train_test_split X = train.drop(columns=['price']) y = train['price'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=10) 위에서 train, test 나누어 주었는데 왜 train_test_split으로 또 나눠 주는 걸까요?
@aiaiyouknow10635 ай бұрын
위에 나뉜 train, test 데이터는 제가 사용한 데이터 자체가 학습, 테스트로 나뉘어져 있지 않기 때문이고, 실제 시험에서는 train, test 이렇게 데이터가 제공되기 때문에 시험과 유사한 환경에서 실습을 하기 위한것입니다. 아래의 train_test_split 는 train데이터를 활용하여 모델링 및 검증을 해야하니 데이터를 나눈것이구요. 헷갈리시면 안됩니다!