간만에 강의코드를 다시 필요한 부분만 복습중인데, 기억이 가물하긴 한데 OwningActor 를 따로 변수로 둔 이유가 WidgetComponent 에서 InitWidget 내부에서 자체적으로 CreateWidget을 하여 만들어진 HpBar 위젯의 플레이어컨트롤러를 오버라이드된 NativeConstruct() 부분에서 제대로 가져올 수 없어서인 것으로 알고 있습니다. 근데 현재 코드에서 지금 당장 GetOwningPlayerPawn() 을 했을 때 정상적으로 참조하여 값을 제대로 가져오는 것 같은데, 그렇다면 더이상 굳이 OwningActor 를 별도로 저장할 필요가 없게 되었다고 볼수 있는 것인가요?
현재 24강까지 수강했습니다! 근데 스태미나가 있을 때, 연속해서 스페이스바를 누르면 구르기 애니메이션이 끝나기도 전에 바로 구르기를 시전하여서, 스페이스바를 연타하면 애니메이션 초반부만 나오면서 구르기를 연속으로 합니다 원래 24강까지 진행했을때는 구르기가 연속으로 되는건가요? 추후 강의에서 수정하는건가요?
드리는 말씀 안녕하세요, 김판다 강사입니다. 바쁜 일상 속에서도 학습을 지속하는 여러분은 정말 대단합니다. 학습에 진지하게 임하면 자연스럽게 궁금증이 생기고, 더 깊이 알고 싶은 순간이 올 것입니다. 이는 학습에 대한 진정성을 보여주는 방증이기도 합니다. 다만, 현재 코딩 입문자가 가장 빠르고 효율적으로 코딩을 정복하는 방법은 생성형 AI를 습관화 하는 것입니다. 코딩 관련 의문은 대부분 ChatGPT나 Gemini에 단지 질문하는 것만으로 해결됩니다. 의문이 생긴 지금이 ChatGPT 활용을 훈련할 기회 입니다. 귀찮음이나 두려움 등을 이유로 사용을 망설이지 마세요. 지금 가진 의문을 생성형 AI에 질문하는 용기 있는 시도가 여러분의 코딩 미래를 바꿉니다. 저는 여러분이 코딩과 생성형 AI 모두 능숙하게 다룰 수 있을 것이라 믿습니다! ChatGPT URL 👉 https://chatgpt.com 구글 Gemini URL 👉 https://gemini.google.com 학습 관련 질문 을 남겨주세요! 자주 묻는 질문 을 참고하시고, 유사한 질문이 있는지 검색해 보시면 여러분의 시간을 아낄 수 있어요! 인프런 서비스 운영 관련 문의는 1:1 문의하기 를 이용해 주세요.
작업형2의 다중분류 같은 경우에는 평가 시 f1 = f1_score(y_val, pred, average='macro'를 입력해줘야 하는데 평가지표가 f1_score일때만 해당되나요? 만약 다중분류인데 평가 방법이 다른 방법이어도 똑같은 방식으로 뒤에 average='macro를 붙여주면 되는건가요?
1)혹시 현재 범주형 컬럼에 대해 라벨인코딩 한 후, 인코딩한 컬럼만 따로 학습에 사용하는 것이 아니라, 수치형 컬럼과 함께 전체 데이터(총 10개 컬럼)를 모델에 넣어 학습했습니다. 이때 오히려 성능이 더 잘 나왔는데, 이런 방식이 괜찮은지 확인 받고 싶습니다. from sklearn.preprocessing import LabelEncoder cols = list( train.select _dtypes(include = 'O')) for col in cols: le = LabelEncoder() train[col] = le.fit _transform(train[col]) test[col] = le.transform(test[col]) 이후 전체 데이터를 사용해 모델 학습을 진행했습니다. X_train, X_val, y_train, y_val = train_test_split(train.drop('성별',axis=1), train['성별'], test_size = 0.2, random_state = 0) print(X_train.shape, X_val.shape, y_train.shape, y_val.shape) #(2800, 10) (700, 10) (2800,) (700,) 범주형데이터 인코딩한 상태로 10개 컬럼 그대로 가지고 학습 from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import roc_auc_score rf = RandomForestClassifier(random_state = 0, max_depth =5) rf.fit (X_train,y_train) rf_predpro = rf.predict_proba(X_val) rf_rocauc = roc_auc_score(y_val,rf_predpro[:,1]) print(rf_rocauc) # train data 전체 데이터 사용 시 약 0.63, 범주형 컬럼 두 개만 썼을 때는 약 0.60 감사합니다
안녕하세요. 퇴근 후 딴짓 교재도 같이 공부를 하고 있습니다! 혹시 작업형2에서 연습문제에서 코딩을 할 때마다 ‘베이스라인’파트와 ‘심화’ 파트가 있는데 시험 볼 때 ‘베이스라인’과 ‘심화’파트 모두 제출해야 하나요..? ‘베이스라인’도 조금 벅차서 시험 볼 때 ‘베이스라인‘ 코드만 제출할 수 있나 해서요..
a=3 b=5 print(a+b) print(type(a)) 죄송합니다. Python용 IntelliCode 지원을 활성화하는 동안 문제가 발생했습니다. 자세한 내용은 "Python" 및 "VS IntelliCode" 출력 창을 확인하세요. 라는 메세지가 뜨면서 안되는데 왜 그럴까요..
안녕하세요! 강의 너무 잘 듣고있습니다. 강의를 들으면서 궁금했던 점이 조합이나 순열 같은 경우 라이브러리가 존재하는데 이를 적극적으로 사용하는 것이 좋은지 아니면 조합이나 순열 관련 문제를 풀때마다 직접 구현해서 사용하는 것이 좋은지 궁금해서 이렇게 질문 남기게 되었습니다.
안녕하세요. 이득우 선생님. 늘 좋은 강의 감사드립니다. 다름이 아니라 제가 저만의 프로젝트를 제작하며 해당 강의를 복습중에 이해가 안되는 부분이있어서, 하루종일 헤메다가 질문드립니다...ㅠㅠ 현재 ABAComboAttack 의 Data중 EffectiveFrameCount 으로 설정한 프레임 이전에 입력이 발생하면, 해당 시점에 Montage_JumpToSection 으로 다음 섹션으로 넘겨주는 구조로 이해했습니다. 다만 궁금한 점은, 수업 예제에서 첫 번째 콤보 공격 애니메이션의 총 프레임, 즉 애니메이션 전체 길이에 해당하는 프레임이 44프레임인것으로 보이는데, (사진 참조) 제가 이해한것을 바탕으로 생각했을때는, 첫 번째 EffectiveFrameCount 는 44이하이기만 하면 상관없다고 생각했고, 약간의 계산 오차를 생각했을때도, 적어도 40이하에서는 안전하게 동작할것이라 예상했습니다. 하지만 예상과 달리 36이상의 값 부터는 문제가 됐습니다. 아무리 연타를 해도 두 번째 콤보 공격이 등장하지 않습니다. 해당 부분 로그를 찍어 디버깅 해보니, Montage_JumpToSection 함수 내부의 GetActiveInstanceForMontage 라는 함수에서 인자로 받아온 몽타주가 현재 실행중인 몽타주 인스턴스 목록, 즉 ActiveMontagesMap 내부에 존재하는지 찾고, 존재하면 해당 섹션으로 이동하도록 되어있는데, 이 부분에서 계속 찾지 못하고 있었습니다. 결론적으로, 1번 섹션이 끝나기 이전에 이미 ActiveMontagesMap 에서는 몽타주 인스턴스가 사라져 있었습니다. 이것이 첫 번째 콤보 공격 애니메이션인 WarriorAttack1 에서 EffectiveFrameCount 값이 35이하 일 때는 Montage_JumpToSection 호출 시점에 존재하고 있고, 36이상의 값에서는 존재하지 않는것이 문제였습니다. 혹시나, 계산 문제일 수도 있겠다 생각하여 void AABCharacterBase::SetComboCheckTimer() { int32 ComboIndex = CurrentCombo - 1; ensure(ComboActionData->EffectiveFrameCount.IsValidIndex(ComboIndex)); const float AttackSpeedRate = 1.0f; float ComboEffectiveTime = (ComboActionData->EffectiveFrameCount[ComboIndex] / ComboActionData->FrameRate) / AttackSpeedRate; /*Test Code*/ float SectionStart = ComboActionMontage->CompositeSections[ComboIndex].GetTime(); int NextIndex = FMath::Clamp(ComboIndex + 1, 0, ComboActionData->MaxComboCount - 1); float SectionNext = ComboActionMontage->CompositeSections[NextIndex].GetTime(); float Length = SectionNext - SectionStart; /*************/ UE_LOG(LogTemp, Warning, TEXT("Section Length : %f, EffectiveTime : %f"), Length, ComboEffectiveTime); if (ComboEffectiveTime > 0.0f) { GetWorld()->GetTimerManager().SetTimer(ComboTimerHandle, this, &AABCharacterBase::ComboCheck, ComboEffectiveTime, false); } } void AABCharacterBase::ComboCheck() { ComboTimerHandle.Invalidate(); if (HasNextComboCommand) { UAnimInstance* AnimInstance = GetMesh()->GetAnimInstance(); CurrentCombo = FMath::Clamp(CurrentCombo + 1, 1, ComboActionData->MaxComboCount); FName NextSection = *FString::Printf(TEXT("%s%d"), *ComboActionData->MontageSectionNamePrefix, CurrentCombo); /*Test Code*/ if(AnimInstance->Montage_IsPlaying(ComboActionMontage)) { UE_LOG(LogTemp, Warning, TEXT("Montage Is Playing")); } else { UE_LOG(LogTemp, Warning, TEXT("Montage Not Playing")); } /*************/ AnimInstance->Montage_JumpToSection(NextSection, ComboActionMontage); SetComboCheckTimer(); HasNextComboCommand = false; } } 위와 같이 테스트 코드를 넣어서 로그도 점검해 봤지만, 계산에는 이상이 없는것으로 보였습니다.... 서론이 너무 길었는데, 제가 궁금한점은 몽타주가 종료되지 않았음에도 불구하고 ActiveMontagesMap 에서 몽타주 인스턴스가 삭제될 수 있는건지, 만약 그럴 수 있다면 현재 상황에서는 왜 삭제되는것인지 궁금합니다. 긴글 읽어주셔서 감사합니다.
저는 본업의 변경, 혹은 본업 외의 수익을 위해 부업을 알아보며 인프런에서 블렌더나 자바 등 다른 강의를 듣다가 중도에 어려움이나, 지루함 , 자신에 대한 불확실성으로 인해 전부 중도에 포기를 했었습니다. 지금 강사님 강의는 듣는 중인데, 완강 전에 메일을 보내드리는 이유는, 지루하지 않고, 어려움도 쉽게 풀어서 설명해주시고 , 불확실성도 확실성으로 바꿔주심에 진심으로 즐겁게 강의를 듣고 있고, 완강할거란 확신이 "처음으로 강하게"들어서 입니다 (본으로 인해 하루에 많은 양을 듣진 못하지만 매일 들어요 ㅎㅎ) 자료형 강의 말미에, 강사님이 "데이터 분석가가 되실수 있다"라고 말씀을 해주셨는데, 강의를 수강하기 전 부터 사실 관심이 있었습니다. 프리랜서로 데이터 분석가 일을 하는 분들도 있다 하고, 전업으로 하시는 분들도 있다고 하는데, 유능한 데이터 분석가가 되기 위해선, 판다스 외에 어떤걸 학습해야할지 로드맵이 궁금합니다. 판다스 외에 제가 익혀야할 것들이 있다면, 꼭 다 익히겠습니다. (aws도 공부하면 데이터 분석가가 되는데 좋다고 듣기도 했습니다) 이 부분 제가 혼자 알아보려 했지만, 워낙 자료가 제한적이더군요,, ㅠㅠ 하여 전문가이신 강사님께 조언을 구합니다. 무언가를 성취하고자 가슴이 이렇게 뛰는건 정말 오랜만이기에 참 설렙니다.
결측치 제거할 때 test는 처리하면 안된다고 하셨는데 다음과 같은 상황들에서 어떻게 처리해야 하나요? 1)train, test 둘다 결측치 있는 경우 train만 train = train.dropna()하면 되는지 2) train은 없고 test만 결측치가 있는경우 둘다 안 하면 되는지 3) train만 있고 test는 결측치가 없는 경우 train만 처리하면 되는지
Qt Designer는 매매프로그램 전문 인건가요? Streamlit을 소개하는 강의에서는 Chat GPT에 Streamlit코드를 물어보기보다 직접 사용되는 코드를 설명하고 강의에서 파일을 제공해주었는데, 특별히 이렇게 하신 이유가 있을까요? (이 코드들도 ChatGPT에 물어보면 되지 않았나해서요) 강의에서는 모의로 매수/매도 였는데 만약 실제 계좌에서 매수/매도를 하려면 어떤 부분에서 변화가 필요한가요? 일별 매수 매도의 다양한 종목의 매매일지를 생성해보기 위해서는 몇일간 장시작-장종료 시간동안 매매 UI를 돌려야 하는게 맞나요?
늦었지만 감사인사드립니다! 이번 강의 정말 잘 들었습니다. 이후 강의를 기다리며 질문 드립니다. 다른 질문에서 강사님께서 말씀하신 것처럼, 책을 천천히 혼자 보며 강사님의 판다스 강의를 기다리고 있습니다. 이와 관련해서 궁금한 점이 있습니다. 강사님의 판다스 책을 마스터하면 어느 정도 수준까지 가능한가요? 강사님의 판다스 책으로 도달 가능한 학습 수준이 궁금합니다!
무기 콜리전 시스템과 데미지 처리 강의를 듣고 있는데 강사님이 제공해주신 파일에는 AnimNotifyState_DS1WeaponCollision 파일이 있는데 언리얼에서 생성하려고 보니 클래스의 이름이 32글자 이하로 설정해야 한다고 하면서 막히더라구요. 이런 경우는 어떻게 해야 하나요? 강사님 파일을 그대로 사용해도 되겠지만, 제가 조금씩 추가해 놓은 기능들이 있어서 일일히 바꾸기는 어려워서 질문 남깁니다.