기출 2회 작업형2 문제가 로지스틱 회귀로 분류문제라 랜포를 이용해서 풀이를 하려고 하는데요. 주어진 데이터가 3개라서 concat을 이용해서 X_train과 y_train을 train으로 합쳐서 하려고 하는데 잘 안됩니다ㅜ train = pd.concat([X_train, y_train['Reached.on.Time_Y.N']], axis=1) train.head(1) 이 코드에서 'Reached.on.Time_Y.N' 이 컬럼만 없고 나머지는 있어서 얘만 합쳐주는 건가요? # 데이터 불러오기 import pandas as pd test = pd.read_csv("X_test.csv") X_train = pd.read_csv("X_train.csv") y_train = pd.read_csv("y_train.csv") #주어진 데이터 3개라서 2개로 만들기(train합치기) train = pd.concat([X_train, y_train['Reached.on.Time_Y.N']], axis=1) train.head(1) # 3. 탐색적 데이터 분석(EDA) print(train.shape) #1490 print(test.shape) #497 print(train.info()) print(test.info()) print(train.head(3)) print(test.head(3)) print(train.isnull().sum()) print(test.isnull().sum()) print(train['Reached.on.Time_Y.N'].value_counts()) # 4. 데이터 전처리 print(train.info()) # 오브젝트형 있네?->인코딩하자 # print(train.shape, test.shape) train=pd.get_dummies(train) test=pd.get_dummies(test) # print(train.shape, test.shape) # print(train.info()) train = train.drop('ID', axis=1) test_id = test.pop('ID') test.head() # 5. 검증용 데이터 분할 *XXYY로* from sklearn.model_selection import train_test_split target = train.pop('Reached.on.Time_Y.N') X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size=0.2, random_state=7) print(X_tr.shape, y_tr.shape, X_val.shape, y_val.shape) # 6. 검증 데이터 머신러닝 학습 및 평가 - 호출, 학습, 예측 from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(random_state=7) rf.fit(X_tr,y_tr) pred = rf.predict_proba(X_val) from sklearn.metrics import roc_auc_score roc_auc = roc_auc_score(y_val, pred[:,1]) print('roc_auc:',roc_auc) # 7. 예측 및 결과 파일 생성 pred=rf.predict_proba(test) print(pred[:10]) submit = pd.DataFrame({ 'ID': test_id, 'Reached.on.Time_Y.N': pred[:,1] }) submit.to_csv('result.csv',index=False) # 제출파일 확인 pd.read_csv('result.csv') pd.read_csv('result.csv').shape 꿀팁 영상 보고 주어진 데이터가 3개일 경우를 정리해본건데 코드가 많이 길지만 결과 나올 수 있게 코드 손 봐주시면 감사하겠습니다TT
19개 종류를 다 비교 하기 쉽지 않습니다. 그리고 만약 train에 없는 고유값이 test에서 있으면 데이터를 합친다고 했는데, 범주형을 합쳐서 인코딩 한 다음에 다시 분리 할때는 loc, iloc 사용하나요? 그래서 처음 shape의 데이터 크기로 똑같이 맞춰야 하는거죠? 예를 들면 train.shape (6118,10) test.shape (1724,9) 라면 처음에 concat를 통해 6118+1724 로 해서 범주형 인코딩 하고 다시 원래 대로 크기를 쪼개야 하는거죠?
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 가장 큰 값을 정수로 반올림하여 출력할 때, 이 2개 모두 사용해도 상관 없을까요? print(round(max(result))) print(round(result.max()))
안녕하세요! 시험이 코앞으로 다가온 시점에서... 순차적으로 강의를 듣고 있는데 데이터 전처리(결측치/이상치 제거) 이후에 학습모델에 적용하기 위해 수치형 데이터들은 스케일링을, 범주형 데이터들은 인코딩을 해서 train 데이터를 만드는 것으로 이해하였습니다. 그다음 평가(예측)를 위해서 모델에 적용할때 ans = (y_test['income'] != '<=50K').astype(int) 와 같이 타겟값을 바꿔야하는 경우와 평가모델별로 predict, predict_proba 를 사용하는 경우가 정해져 있는건지 이 부분이 헷깔립니다 ㅜㅜ
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 # your code import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p1/members.csv") df.head(3) df = df.sort_values('views',ascending=False).head(10) df r1 = 9690.0 df.iloc[:10,-1] = r1 cond = df['age'] >=80 print(df[cond]['views'].mean()) 안녕하세요 10번째 최소값을 r1= 9690.0 으로 지정 후 df.iloc[:10.-1] = r1로 지정후 결과를 냈더니 9690.0으로 나오는데 왜그런걸까요?
안녕하세요, 예시문제 작업형 3번의 2번 문제 풀이에서 질문있습니다! 여기에서 로지스틱회귀 분석을 위해 범주형 변수 중 인코딩이 되지 않은 Gender 변수에 C(Gender)를 붙이셨더라구요 혹시 인코딩되지 않은 변수의 앞에 C를 붙이는 것이 필수로 수행되어야하는것일까요? 제가 궁금해서 C를 붙이지 않고 모델썸머리를 출력하고 값을 비교해봤는데 모든 표값이 같기는 했습니다. 만약, 필수로 C를 붙여주어야한다면 로지스틱회귀분석 뿐만아니라 분산분석(일원/이원)에도 모두 붙여주어야 할까요?
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 안녕하세요 헷갈리는 부분이 있어 질문드려요. 회귀분석에서 ols사용시는 ols("종속변수~독립변수1+독립변수2+독립변수3"...) 같은 형태로 사용하고 다중분산분석 ols에서는 ols("종속변수~독립변수1*독립변수2*독립변수3"...) 이렇게 사용해야하는 것이 맞을까요? 회귀분석 : +, 다중분산분석:*
데이터 전처리 강의 내용 중에 X_train 데이터와 X_test 데이터의 결측치를 동일하게 채워주라고 말씀해주셨고, X_train의 행삭제는 가능하지만 X_test의 행삭제는 하면 안된다고 말씀해주셨습니다. 이렇게 되면 X_train에서 결측치가 있다고 행삭제를 해버리면 X_test에서는 결측치가 있는 행이 그대로 남아있을텐데 X_train의 행삭제로 결측치를 해소하는 방법이 어떤 의미가 있는지 이해가 잘 되지 않아 문의드립니다.