t3-logit-py # 문제 1-2: 독립변수 income만 사용해 학습한 모델에서 test 데이터의 purchase를 예측하고, 정확도 계산 predictions_income = result_income.predict(test) predicted_classes_income = (predictions_income > 0.5).astype(int) 이 문제에서 왜 prediction_income > 0.5를 하는건가요 ?
안녕하세요! 회귀 코드를 보던 중 궁금한 점이 생겨 질문 남깁니다. 강의에서는 원핫인코딩 전에 describe(include= 'object')를 통해 train, test의 범주형 데이터 unique 수가 일치하는 것만 확인하고, train/test 병합 작업 없이 원핫 인코딩을 수행했습니다. 제가 실습하는 중에, train/test의 각 unique값을 출력했는데 캡쳐본과 같이 smoker 에서 yes,no의 순서가 바뀌어서 나왔습니다. 이 경우에는 unique값의 종류는 같지만, 병합 없이 각자 인코딩을 할 경우 train 데이터 -> yes:0, no:1 test 데이터 -> no:1, yes:1 와 같이 인코딩되지 않을까 생각이 들었습니다. unique 종류만 일치하면, 순서가 다르더라도 따로 병합하여 인코딩 하지 않아도 되는 것일까요?
보니깐 int와 str이 혼합되어서 뜬것 같은데.. cols = X_train.select_dtypes(include = 'object').columns print(list) from sklearn.preprocessing import LabelEncoder cols = X_train.select_dtypes(include = 'object').columns le = LabelEncoder() for col in cols : le = LabelEncoder() X_train[col] = le.fit_transform(X_train[col]) X_test[col] = le.transform(X_test[col]) 그래서 이렇게 cols라는 코드를 사전에 지정해줬는데... 왜 뜰까요? 처음부터 숫자와 str 데이터를 분리해서 인코딩 했어야 할까요?
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 캐글 필사 전략 강의를 수강하며 캐글에서 타이타닉 문제를 풀어보고 있는 중인데 궁금한 점이 있습니다. 살아남은 여성의 확률을 구할 때 women = train_data.loc[train_ data.Sex == 'female']["Survived"] rate_women = sum(women)/len(women) print("% of women who survived:", rate_women) 이 코드를 작성하는데 여기서 sum(women)의 값과 len(women)의 값이 왜 다른지 궁금합니다. sum의 경우에도 살아남은 여성의 수를 계산하고 len의 경우에도 리스트의 개수를 리턴하기 때문에 동일한 값이라고 생각했습니다. len함수와 sum 함수의 차이가 궁금합니다.
train과 test의 컬럼이 서로 다른경우가 시험에서 발생하는 경우가 잇나요? 이럴때는 train과 test의 교집합에 없는 컬럼들은 제 생각으론 삭제하는것이 어떤 처리방법보다 좋은것 같은데요 (train에만 잇다면 삭제하는게 test에 좋을것이고 test에만잇다면 train이 모델 훈련해도 해당 test컬럼과는 관련이없고) 제 생각이 맞나요? 또한 하나의 공통 컬럼에서 서로 교차하지않는 서로다른 데이터가 존재한다면 라벨이나 원핫인코딩을 진행할때 둘다 반드시 합쳐서 인코딩을 진행하고 분리해야하나요?
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 강의 들으면서 코드 똑같이 타이핑해서 결과값 확인 하는데요 머신러닝 돌리고 나서 정확도, 정밀도 F1 score, roc-auc 같은 결과값이 강의랑 조금 다르게 나오는데 (예를 들어 강의에서는 baseline 이 라벨인코딩보다 정확도가 더 높은데 제가 코드 돌렸을 때는 라벨인코딩이 조금 높게 나온다던지,,) 똑같이 코드를 작성해도 학습했을 때 다르게 나올 수도 있는거죠..? (여러번돌린값X) random_state 나 test_size 도 강의랑 똑같이 설정했는데도요!
Labels in y_true and y_pred should be of the same type. Got y_true=[0 1] and y_pred=['0' '1']. Make sure that the predictions provided by the classifier coincides with the true labels. 이런 문장이 뜨던데 accuracy_score(ans, pred) 중 pred가 numpy.ndarray 배열이 된 것 같거든요.. 잘 따라한 것 같은데 선생님이 한건 바로 accuracy_score를 바로 볼 수 있고, 제거는 못보여 지네요.. pd.DataFrame(pred) 사용해서 해결하긴 했는데,, numpy배열로 바뀐 사유가 궁금합니다. y_train['income'] = y_train['income'].str.replace(">50K", '1') y_train['income'] = y_train['income'].str.replace("<=50K", '0') y_train['income'].astype(int) from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier() rf.fit(X_train[list], target) pred = rf.predict(X_test[list]) submit = pd.DataFrame( { 'id' : X_test['id'], 'income' : pred } ) submit.to_csv("1111.csv", index = False) y_test.head() (y_test['income']=='>50K').astype(int) from sklearn.metrics import accuracy_score y_test = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/main/p2/data_atype_y/y_test.csv") ans = (y_test['income'] == '>50K').astype(int) pred = pred.astype(int) accuracy_score(ans, pred)
안녕하세요 6회 기출문제 3번을 풀다가 궁금한점이 생겨서 문의 드립니다. 아래와 같은 데이터가 있을 때 '날짜'와 '경찰서 명'은 object 입니다. 위 데이터에서 '강력범죄' 부터 '교통범죄'까지 데이터를 행으로 총합을 구할 시에 아래와 같이 iloc를 설정을 한다고 풀이와 강의에 나와있습니다. df['총범죄건수'] = df.iloc[:, 1 : -1].sum(axis =1) 여기에서 iloc 에서 '-1' 이라고 설정하는 것은 제일 끝 열까지 설정하는 것이 아닌지요? 그러면 '경찰서명'까지 선택이 되어야하는데 로그를 찍어보면 '강력범죄'~'교통범죄'까지 나오는 것을 확인할 수있습니다. 강의에서는 iloc는 0부터 세기 때문에 바로 전까지 값의 열이 선택된다고 알려주셨고, -1로 하면 끝의 열을 나타내는 것이고 -2를 하면 끝열 바로 전 열을 선택하는 것이라고 알려주셔서 알고있습니다. 그런데 위에 데이터에서는 왜 -1을 해도 '경찰서명'까지가 안나오는 것인지 문의드립니다.