안녕하세요, 강의를 듣던 중 강의 내용에서 5분 경~ Recommended usage 부분에 나오는 설명에서 의문이 생겨 질문 드립니다. // 위 내용 생략 struct namect p = { "JeongMo","Hong" }; printf("%s %s", p.fname, p.lname); // Recommended usage char buffer[SLEN] = { 0, }; int f2 = scanf("%[^\n]%*c", buffer); p.fname = (char*)malloc(strlen(buffer) + 1); if (p.fname != NULL) strcpy(p.fname,buffer); printf("%s %s\n",p.fname,p.lname); struct namect p로 구조체의 메모리가 할당되며 p.fname = "JeongMo", p.lname = "Hong" 값이 저장되었다고 이해했습니다. 이후 들어오는 값을 저장할 임시 버퍼역할의 string 변수 buffer가 선언되고, scanf를 통해 buffer에 string 값이 입력된다고 이해했습니다. 질문 1) 이후 p.fname = (char*)malloc(strlen(buffer) + 1); 로 동적 할당 메모리가 p.fname에 주어졌는데, 위에서 p.fname은 이미 "JeongMo"가 저장되어 있는 메모리 공간이 할당된 상태 아닌가요? 원래 저장되어 있던 값은 날라가고 동적 할당 메모리가 새로 배정된다고 이해하면 되는 건가요? 이미 할당된 메모리가 있는 구조체 변수에 동적 할당 메모리를 줄 수 있는건지, 값의 처리가 어떻게 되는 건지 궁금합니다. 질문 2) p.fname에 동적 할당 메모리의 포인터 값이 잘 들어왔을 시(if (p.fname!=NULL) strcpy로 buffer에 있는 새로 들어온 string 값을 p.fname에 복사해줬는데, scanf로 값을 입력받는 건 불가하면서 strcpy로 값을 복사하는 건 왜 가능한건지 정확히 알고 싶습니다. strcpy 함수 내 인자의 타입이 char*이라 그런건가요? 기초적인 질문일 수도 있지만 아직 많이 헷갈리네요 ㅠㅠ 질문이 길어 답변이 힘드실 수 있지만 기다리고 있겠습니다. 감사합니다.
영상 위치) 21:25 결과 예측 관련 질문입니다. 1) 랜덤포레스트랑 XGB로 평가한 후, 마지막에 예측은 XGB로 했는데 어떤 기준으로 XGB를 선택하는건가요?? 2) pred랑 pred_proba 중에 pred_proba를 사용한 이유가 있나요? pred_proba = xgb.predict_proba(test)
수치형 변수 스케일링을 할때 cols 에서 왜 TravelInsurance 는 제외시키나요? 그리고 display함수가 print함수와 다른 점은 무엇인가요? # 수치형 변수 스케일링 from sklearn.preprocessing import RobustScaler scaler = RobustScaler() cols = ['Age','AnnualIncome','FamilyMembers','ChronicDiseases'] display(a_train.head()) a_train[cols] = scaler.fit_transform(a_train[cols]) a_test[cols] = scaler.transform(a_test[cols]) a_train.head()
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세 위와 같이 실행했는데 baseline roc_auc가 높게 나옵니다 그리고 y_test 실행결과 label과 점수가 비슷합니다. 어떤 이유일때문일까요?
강의를 보면서 강사님과 똑같이 진행을 하는데 값이 다릅니다. 그리고 영상에서는 max_depth를 설정했을 때가 설정하지 않았을 때 보다 값이 더 올라갔는데 저 같은 경우는 설정한 후 값이 더 내려갔습니다. 정상적인 건가요? #rf from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import roc_auc_score, f1_score, accuracy_score rf = RandomForestClassifier(random_state=2025,max_depth=3) rf.fit(X_tr,y_tr) pred = rf.predict(X_val) pred_proba = rf.predict_proba(X_val) print(roc_auc_score(y_val,pred_proba[:,1])) print(f1_score(y_val,pred)) print(accuracy_score(y_val,pred)) # 0.9227272727272727 # 0.8571428571428571 # 0.8378378378378378 # max_depth = 3 # 0.9242424242424243 # 0.8 # 0.7837837837837838
<모델&평가>에서 fit(학습)을 시킬때는 왜 X_tr,y_tr을 넣고 예측을 할때는 왜 X_val를 넣나요 ? 그냥 아무거나 넣어도 되나요 ? #rf from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(random_state=2025) rf.fit(X_tr,y_tr) pred = rf.predict(X_val)
<데이터 전처리 &피처엔지니어링>에서 왜 id를 drop 하나요? 그리고 <검증 데이터 분리>에서 는 왜 output을 drop 하나요? train = train.drop('id',axis=1) test_id = test.pop('id') test.head() from sklearn.model_selection import train_test_split X_tr, X_val, y_tr, y_val = train_test_split(train.drop('output',axis=1),train['output'],test_size=0.15, random_state=2025)