해당 예시 문제를 밑의 식으로 풀이를 해보았는데, import pandas as pd df = pd.read_csv('mtcars.csv') from sklearn.preprocessing import minmax_scale print('변환 전 :',df['qsec'].head()) df['qsec'] = minmax_scale(df['qsec']) print('변환 후 :', df['qsec'].head()) cond = df['qsec'] >0.5 sum(cond) 제가 알기로 스케일링 할 수 있는게 min-max, standard,robust 이렇게 3가지가 있는데, 만약 minmax가 아닌 standard,robust를 이용하게 된다면 코드를 어떻게 작성을 해야할까요?
print('rmsle: ', mean_squared_log_error(y_val, pred)) 이 코드를 실행할 때, 해당 오류가 나옵니다. Mean Squared Logarithmic Error cannot be used when targets contain negative values. 궁금한 것이, 회귀모델을 사용할 때 pred에서 음수값이 나오면 어떻게 처리하면 되는지 궁금합니다. 사실 y_tr 통계값에서 min값이 0이기 때문에 예측 모델에서 음수값이 나오면 안된다고 생각하는데 혹시나 나오게 되면 어떤식으로 전처리를 해야하는지 궁금합니다. 또한 선생님이 실행하신 랜덤포레스트 모델에서 r2_score가 0.77정도 나오는데 저는 같은 과정으로 해도 0.24정도 나와 차이가 큽니다.. 완전히 같을 순 없지만 비슷해야한다고 생각하는데 너무 차이가 나서 저의 코드가 잘못되어 그런것일지 궁금합니다.
주어진 데이터셋(members.csv)의 앞에서부터 순서대로 80% 데이터만 활용해 'f1'컬럼 결측치를 중앙값으로 채우기 전 후의 표준편차를 구하고, 두 표준편차 차이 계산하기 (단, 표본표준편차 기준, 두 표준편차 차이는 절대값으로 계산) 여기서 제가 이해한 바로는 80퍼센트 데이터만을 활용하여 중앙값을 도출하고 그것을 통하여 f1컬럼을 채워넣고 전체 f1컬럼의 전후 표준오차를 계산하라고 이해하였습니다. 문장을 여러번 읽어보아도 80퍼센트 데이터 활용의 정의가 모호한거 같은데요(80퍼센트 데이터를 활용해 중앙값으로 채우기 / 전후 표준오차 구하기 인지 80퍼센트 데이터를 활용해 중앙값 채우고 전후 표준오차 까지 구하기인지) 이런 경우 감독관에게 그 범위를 질문을 할수 있나요? 자의적으로 시험장에서 판단하기 힘든것 같아 질문드립니다.
사진과 같이 제출하라고 했는데 보통이제 모델을 통해 예측을 한 결과는 test내의 id가 뒤죽박죽 이 된상태가 일반적입니다. 아래는 저의 결과물입니다. 그런데 제출할떄 index가 정렬되지 않아도 상관없는지, 혹은 반드시 정렬해야하는지, 또는 문제에서 요구할떄만 정렬하는지에 대해 문의드립니다. 감사합니다. +추가로 문의드립니다 문제 분석결과 인덱스를 고유번호인 Unnamed 0 가 아닌 test.index를 사용하여 submit을 구성하였는데요 이러면 어떤 컬럼이(고유번호)가 학습되었는지 정보가 없는 문제가 발생하지않나요? 혹은 인덱스는 전혀상관없나요?(단순히 채첨할떄 pred값의 순서를 통해서 채점하는 형식임을 질문)
회귀/분류 문제 구분할때 평가지표를 보고 구분을 하는건가요? 예를 들어 f1_score로 평가하시오. -> 분류구나! MAE로 평가하시오. -> 회귀구나! 이렇게 구분하면 될까요?? 3회차 기출문제 풀고있는데 평가지표 얘기가 없어서 이게 회귀인지 분류인지 구분을 못하겠어서 여쭤봅니다. (결과가 proba사용한 확률값인거 같아서 roc_auc_score밖에 못 사용하겠구나 -> 분류라고 생각했습니다.) 아 그리고 proba 사용해서 결과에는 양의 값(1)의 확률을 넣으시라고 했는데 이때 print(rf.classes_) 이거를 사용해서 1의 위치가 왼쪽인지 오른쪽인지 확인해야 되나요??
from sklearn.preprocessing import RobustScaler for col in col_num: rs = RobustScaler() train[col] = rs.fit_transform(train[[col]]) test[col] = rs.transform(test[[col]]) rs = RobustScaler() train[col_num] = rs.fit _transform(train[col_num]) test[col_num] = rs.transform(test[col_num]) 쌤! 커뮤니티 찾아보다가 이렇게 반복문을 쓰지 않고도 한꺼번에 스케일러를 할 수 있다는 답변을 보았는데 궁금한 점이 있어서요. 저렇게 한꺼번에 진행하면 다른 컬럼들의 영향을 받지 않나요?? 반복문을 사용하면 해당 컬럼만 고려해서 스케일러를 적용해주는데 한꺼번에 사용하면 모든 컬럼을 고려해서 스케일러가 적용되기때문에 더 성능이 안 좋아지지 않나요?? 아! 그리고 인코딩은 필수, 스케일러는 선택이란 말을 봤는데 스케일러를 해도 안 해도 성능차이는 별로 없을까요?? 그냥 인코딩만 해도 40점 받을 수 있을까요?
본 강의 문제에서, 답안제출예시가 아래사진처럼, 타겟값인 'Attrition_Flag' 수치가 0.633 혹은 0.355 이렇게 돼있는데, 제가 xgb모델을 써보니 타겟값 'Attrition_Flag' 수치가 0.00003 , 0.00078 이렇게 너무 작게 나옵니다. RandomForest 모델을 사용하면 답안 예시와 수치가 비슷하게 나오긴하나, xgb 모델이 roc 점수가 더 높게 나옵니다. xgb 모델을 사용해서 제출해도 점수에 이상이 없을까요? 답안 제출 예시 CLIENTNUM,Attrition_Flag 788544108,0.633 719356008,0.123 712142733,0.355
안녕하세요 선생님, 만약 시험문제에서 1월~12월 모두 데이터가 채워져있다면 result= df.groupby('연도')['총범죄건수'].mean() 이렇게 적어도 될까요? mean()으로 계산했더니 531이라는 값이 나오고 sum()/12으로 했더니 515로 나오네요.
안녕하세요 작업형2번 풀때 결측치 처리를 해줬을때보다 안해줬을때 roc_auc 스코어가 더 높게 나오면 결측치 처리를 안해주고 답을 내는게 맞을까요? 또 train과 test split을 해줬을때보다 안해줬을때 스코어가 더 높으면 안해준 상태로 답을 제출하는게 맞을까요? 점수가 크면 장땡인지 궁금합니다!!
train과 test 모두 pd.get_dummies를 사용해서 원-핫 인코딩을 해주잖아요. 근데 만약에 그 train의 object unique 수랑 test의 object unique 수가 서로 다르면 (서로 다른 값이 존재한다면) train과 test의 열(속성) 수가 달라져서 train로 학습을 시키고 test로 예측을 할때 열(속성) 수가 달라서 오류가 뜨지 않나요?? 그러면 사전에 object 컬럼에 서로 다른 값이 있는지 확인하고 원-핫 인코딩을 진행해줘야 되나요?? -> 서로 일치하는지 알 수 있는 방법이 있을까요? 이런 오류가 생긴다면 그냥 라벨인코딩하는게 좋을까요??
안녕하세요, 기출 7회 작업형 1 문제1 질문드립니다. 스탠다드스케일을 할때, 저는 cond = df['id_assessment'] == 12 a = df[cond]['score'] std = a.std() mean = a.mean() df['standard'] = (df['score']-mean) / std b = df['standard'].max() round(b,3) 이렇게 답을 구했더니, 사이킷런 스탠다드 스케일로 구한값과 약간의 차이가 있더라구요, 만약 작업형1 시험에서 MinMaxScaler 또는 스탠다는 스케일을 하라고 문제가 나왔을 때, 사이킷런 으로 푸는 것이 정답일까요? 아니면 실제 수식을 적용시켜서 푸는 것이 정답일까요?