기출문제 작업형2 공부하면서 라벨인코딩을을 하면 꼭 에러가 납니다. 같은 문제를 원-핫인코딩으로 해서 전후를 비교하면 데이터가 늘어난게 확인이 되는데 라벨인코딩은 에러가 나던지 데이터가 그대로 입니다.. 오타를 정확하게 확인했구요. 교재와도 정확하게 비교했는데 왜그럴까요?ㅜ 그리고 원-핫인코딩은 사전에 범주형,수치형데이터 분리없이 바로 사용해도 범주형데이터만 원-핫인코딩을 진행하는게 맞는거죠?
dqn 학습 부분에서, index에러가 자꾸 납니다.. dqn.py는 github에 올려져 있는 것을 그대로 사용했습니다. < 에러 코드 > (colab) C:\Users\pss60\Desktop\ML-Agents_Project\agents>python dqn.py Traceback (most recent call last): File "C:\Users\pss60\Desktop\ML-Agents_Project\agents\dqn.py", line 218, in <module> state = preprocess(dec.obs[OBS], dec.obs[GOAL_OBS]) IndexError: list index out of range < GridAgent > using System; using UnityEngine; using System.Linq; using Unity.MLAgents; using Unity.MLAgents.Sensors; using Unity.MLAgents.Actuators; using UnityEngine.Rendering; using UnityEngine.Serialization; using System.Collections.Generic; public class GridAgent : Agent { [FormerlySerializedAs("m_Area")] [Header("Specific to GridWorld")] public GridArea area; public float timeBetweenDecisionsAtInference; float m_TimeSinceDecision; [Tooltip("Because we want an observation right before making a decision, we can force " + "a camera to render before making a decision. Place the agentCam here if using " + "RenderTexture as observations.")] public Camera renderCamera; VectorSensorComponent m_GoalSensor; private Transform agentTrans = null; private Vector3 moveRight = new Vector3(1, 0, 0); private Vector3 moveLeft = new Vector3(-1, 0, 0); private Vector3 moveUp = new Vector3(0, 0, 1); private Vector3 moveDown = new Vector3(0, 0, -1); public enum GridGoal { GreenPlus, RedEx, } // Visual representations of the agent. Both are blue on top, but different colors on the bottom - this // allows the user to see which corresponds to the current goal, but it's not visible to the camera. // Only one is active at a time. public GameObject GreenBottom; public GameObject RedBottom; GridGoal m_CurrentGoal; public GridGoal CurrentGoal { get { return m_CurrentGoal; } set { switch (value) { case GridGoal.GreenPlus: GreenBottom.SetActive(true); RedBottom.SetActive(false); break; case GridGoal.RedEx: GreenBottom.SetActive(false); RedBottom.SetActive(true); break; } m_CurrentGoal = value; } } [Tooltip("Selecting will turn on action masking. Note that a model trained with action " + "masking turned on may not behave optimally when action masking is turned off.")] public bool maskActions = true; const int k_NoAction = 0; // do nothing! const int k_Up = 1; const int k_Down = 2; const int k_Left = 3; const int k_Right = 4; EnvironmentParameters m_ResetParams; public override void Initialize() { m_GoalSensor = this.GetComponent<VectorSensorComponent>(); m_ResetParams = Academy.Instance.EnvironmentParameters; } public override void CollectObservations(VectorSensor sensor) { Array values = Enum.GetValues(typeof(GridGoal)); int goalNum = (int)CurrentGoal; // 현재 에이전트의 x, y 좌표 위치 값을 관측 정보에 추가 sensor.AddObservation(agentTrans.position.x); sensor.AddObservation(agentTrans.position.z); // 각각 도형에 대한 좌표 위치 값을 관측 정보에 추가 List<int> otherPos = area.otherPos; for (int i = 0; i < otherPos.Count; i++) sensor.AddObservation(otherPos[i]); // 목표 지점에 대한 정보 m_GoalSensor.GetSensor().AddOneHotObservation(goalNum, values.Length); } public override void WriteDiscreteActionMask(IDiscreteActionMask actionMask) { // Mask the necessary actions if selected by the user. if (maskActions) { // Prevents the agent from picking an action that would make it collide with a wall var positionX = (int)agentTrans.localPosition.x; var positionZ = (int)agentTrans.localPosition.z; var maxPosition = (int)m_ResetParams.GetWithDefault("gridSize", 5f) - 1; if (positionX == 0) { actionMask.SetActionEnabled(0, k_Left, false); } if (positionX == maxPosition) { actionMask.SetActionEnabled(0, k_Right, false); } if (positionZ == 0) { actionMask.SetActionEnabled(0, k_Down, false); } if (positionZ == maxPosition) { actionMask.SetActionEnabled(0, k_Up, false); } } } // to be implemented by the developer public override void OnActionReceived(ActionBuffers actionBuffers) { // 매 행동마다 -0.01 보상(패널티) 부여 AddReward(-0.01f); var action = actionBuffers.DiscreteActions[0]; // 에이전트가 이동하게 될 위치 값을 저장할 변수 (Vector3) var targetPos = agentTrans.position; switch (action) { case k_NoAction: // do nothing break; case k_Right: // 부여받은 행동이 오른쪽이라면, targetPos = agentTrans.position + moveRight; // 현재 위치에서 1만큼 x축 방향으로 설정 break; case k_Left: targetPos = agentTrans.position + moveLeft; break; case k_Up: targetPos = agentTrans.position + moveUp; break; case k_Down: targetPos = agentTrans.position + moveDown; break; default: throw new ArgumentException("Invalid action value"); } var hit = Physics.OverlapBox( targetPos, new Vector3(0.3f, 0.3f, 0.3f)); // 벽에 부딪히지 않았다면, if (hit.Where(col => col.gameObject.CompareTag("wall")).ToArray().Length == 0) { // 정해진 위치로 이동 agentTrans.position = targetPos; // +오브젝트 만났다면, if (hit.Where(col => col.gameObject.CompareTag("plus")).ToArray().Length == 1) { ProvideReward(GridGoal.GreenPlus); EndEpisode(); } // x오브젝트 만났다면, else if (hit.Where(col => col.gameObject.CompareTag("ex")).ToArray().Length == 1) { ProvideReward(GridGoal.RedEx); EndEpisode(); } } } private void ProvideReward(GridGoal hitObject) { if (CurrentGoal == hitObject) { SetReward(1f); } else { SetReward(-1f); } } // WASD 키보드로 에이전트 이동 public override void Heuristic(in ActionBuffers actionsOut) { var discreteActionsOut = actionsOut.DiscreteActions; discreteActionsOut[0] = k_NoAction; if (Input.GetKey(KeyCode.D)) { discreteActionsOut[0] = k_Right; } if (Input.GetKey(KeyCode.W)) { discreteActionsOut[0] = k_Up; } if (Input.GetKey(KeyCode.A)) { discreteActionsOut[0] = k_Left; } if (Input.GetKey(KeyCode.S)) { discreteActionsOut[0] = k_Down; } } // to be implemented by the developer public override void OnEpisodeBegin() { area.AreaReset(); Array values = Enum.GetValues(typeof(GridGoal)); CurrentGoal = (GridGoal)values.GetValue(UnityEngine.Random.Range(0, values.Length)); } public void FixedUpdate() { WaitTimeInference(); } void WaitTimeInference() { if (renderCamera != null && SystemInfo.graphicsDeviceType != GraphicsDeviceType.Null) { renderCamera.Render(); } if (Academy.Instance.IsCommunicatorOn) { RequestDecision(); } else { if (m_TimeSinceDecision >= timeBetweenDecisionsAtInference) { m_TimeSinceDecision = 0f; RequestDecision(); } else { m_TimeSinceDecision += Time.fixedDeltaTime; } } } }
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 안녕하세요. 작년에 결제 후 6월 시험은 강의만 후루룩 듣고 시험 보러 가니 머리가 멍 해져서 제대로 시험도 못 치루고 나왔고 12월시험 준비는 교수님 책도 사고 그랬는데... 회사 내 근무지 이동과 출장기간과 겹쳐 시험을 보지 못했습니다...ㅠ 아직 많이 부족하여 혹시 다음 달 시험 보기 전까지만 연장이 가능한 방법이 있는지 여쭈어 봅니다. 혹시나 해서 메일 주소 남겨드립니다. subinsky@naver.co m 입니다.
train데이터에서 CLIENTNUM를 drop한 후 검증데이터분리를 하셨는데, drop을 하고 분리한뒤에 훈련을 시키면 나중에 어떻게 최종파일 값들과 CLIENTNUM이 매칭이 되는걸까요? CLIENTNUM값을 기준으로 데이터를 기억하고 훈련시키는건 아닌건지 ㅠ이해가 잘 안되서요
안녕하세요! 먼저 수업 잘 듣고 있습니다 :) 현재 section 6까지 완강하였습니다. 32강 varible 실습 코드부터 airflow에 올라오지 않는 것 같습니다. git push와 git pull 완료 후, wsl에 dags 폴더 내에 해당 코드들이 있는 건 확인했습니다. 하루에 정해진 작업량이 있어서 그런건지 여쭤보고 싶습니다. compose down 시키고 다시 airflow 올려도 똑같이 현시가 안되는 상황입니다....ㅠ
안녕하세요 다른 분야 개발중인데 흥미가 생겨서 수강하게 되었습니다 다름이 아니라 초반 세팅을 하면서 궁금한 점이 생겨서 문의를 남기게 되었는데요 현재(2025년 5월 26일) 기준으로 설치 가능한 유니티6 버전이 LTS인 6.0(6000.0.49f1) Supported인(하지만 추천딱지가 붙어있는) 6.1(6000.1.3f1) 이렇게 두종류가 있던데 강의는 아무 버전으로 들어도 진행에 무리가 없을까요? 두번째로 첫 프로젝트를 생성하는 과정에서 템플릿을 선택할때 저는 Universal 2D가 가장 위에 있던데, 상관없이 2D (Built-in Render Pipeline)을 선택하면 될까요? 그걸 눌렀을때 오른쪽에 프로젝트 세팅 화면이 안나오고 템플릿을 다운로드 받으라는 버튼이 뜨길래 여쭤봅니다 감사합니다
드리는 말씀 안녕하세요, 김판다 강사입니다. 바쁜 일상 속에서도 학습을 지속하는 여러분은 정말 대단합니다. 학습에 진지하게 임하면 자연스럽게 궁금증이 생기고, 더 깊이 알고 싶은 순간이 올 것입니다. 이는 학습에 대한 진정성을 보여주는 방증이기도 합니다. 다만, 현재 코딩 입문자가 가장 빠르고 효율적으로 코딩을 정복하는 방법은 생성형 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" 출력 창을 확인하세요. 라는 메세지가 뜨면서 안되는데 왜 그럴까요..
안녕하세요! 강의 너무 잘 듣고있습니다. 강의를 들으면서 궁금했던 점이 조합이나 순열 같은 경우 라이브러리가 존재하는데 이를 적극적으로 사용하는 것이 좋은지 아니면 조합이나 순열 관련 문제를 풀때마다 직접 구현해서 사용하는 것이 좋은지 궁금해서 이렇게 질문 남기게 되었습니다.
저는 본업의 변경, 혹은 본업 외의 수익을 위해 부업을 알아보며 인프런에서 블렌더나 자바 등 다른 강의를 듣다가 중도에 어려움이나, 지루함 , 자신에 대한 불확실성으로 인해 전부 중도에 포기를 했었습니다. 지금 강사님 강의는 듣는 중인데, 완강 전에 메일을 보내드리는 이유는, 지루하지 않고, 어려움도 쉽게 풀어서 설명해주시고 , 불확실성도 확실성으로 바꿔주심에 진심으로 즐겁게 강의를 듣고 있고, 완강할거란 확신이 "처음으로 강하게"들어서 입니다 (본으로 인해 하루에 많은 양을 듣진 못하지만 매일 들어요 ㅎㅎ) 자료형 강의 말미에, 강사님이 "데이터 분석가가 되실수 있다"라고 말씀을 해주셨는데, 강의를 수강하기 전 부터 사실 관심이 있었습니다. 프리랜서로 데이터 분석가 일을 하는 분들도 있다 하고, 전업으로 하시는 분들도 있다고 하는데, 유능한 데이터 분석가가 되기 위해선, 판다스 외에 어떤걸 학습해야할지 로드맵이 궁금합니다. 판다스 외에 제가 익혀야할 것들이 있다면, 꼭 다 익히겠습니다. (aws도 공부하면 데이터 분석가가 되는데 좋다고 듣기도 했습니다) 이 부분 제가 혼자 알아보려 했지만, 워낙 자료가 제한적이더군요,, ㅠㅠ 하여 전문가이신 강사님께 조언을 구합니다. 무언가를 성취하고자 가슴이 이렇게 뛰는건 정말 오랜만이기에 참 설렙니다.
결측치 제거할 때 test는 처리하면 안된다고 하셨는데 다음과 같은 상황들에서 어떻게 처리해야 하나요? 1)train, test 둘다 결측치 있는 경우 train만 train = train.dropna()하면 되는지 2) train은 없고 test만 결측치가 있는경우 둘다 안 하면 되는지 3) train만 있고 test는 결측치가 없는 경우 train만 처리하면 되는지