1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 3-9강 여기까지 이해하신 내용은 무엇인가요? B+Tree 작동 원리, INDEX 생성 2. 어려움을 겪는 부분 select o1_0.id, o1_0.created_at, o1_0.member_id, o1_0.order_date, o1_0.order_number, o1_0.status, o1_0.total_amount, o1_0.updated_at from ch3_orders o1_0 where o1_0.order_date>='2023-01-01T00:00' and o1_0.status= 'COMPLETED' and o1_0.total_amount>=500 order by o1_0.order_date desc; 위와 같은 쿼리를 실행할 때, INDEX의 첫번째 필드를 date로 하였을 때, date의 정렬 방식에 따라서 속도가 달라지는 이유가 궁금합니다. (즉, 아래처럼 2가지 방식의 INDEX) CREATE INDEX ids_order_date_status_amount ON ch3_orders(order_date desc, status, total_amount); CREATE INDEX ids_order_date_status_amount ON ch3_orders(order_date, status, total_amount); 날짜 기준으로 최신 데이터를 100개 가져오는 쿼리를 실행시켰을 때, B+Tree의 leaf 노드에서는 양방향으로 이동할 수 있기 때문에 date가 ASC 정렬된 상태에서 역방향으로 읽어 최신 데이터를 읽으나, DESC 정렬된 상태에서 순방향으로 읽어 가져오나 읽는 노드의 수는 동일하다고 생각이 듭니다. 실제로 date를 각각의 정렬조건으로 INDEX를 만들어서 실제로 실행을 시켰을 때에도 거의 차이가 존재하지 않았습니다. (데이터가 많지 않아서 그런지는 모르겠습니다...) 하지만 제가 시도 한 내용이 맞는지 잘 모르겠습니다. 3. 시도해보신 내용 ASC, DESC 정렬을 시킨 INDEX를 사용하여 analyze 한 결과입니다. Limit: 100 row(s) (cost=50413 rows=100) (actual time=0.874..0.899 rows=100 loops=1) -> Index range scan on o1_0 using ids_order_date_status_amount over ('2023-01-01 00:00:00.000000' <= order_date AND 'COMPLETED' <= status AND 500 <= total_amount)... Limit: 100 row(s) (cost=50413 rows=100) (actual time=0.43..0.446 rows=100 loops=1) -> Index range scan on o1_0 using ids_order_date_status_amount over (order_date <= '2023-01-01 00:00:00.000000' AND status <= 'COMPLETED'), with index condition: (... 1번은 ASC로 정렬한 INDEX입니다. 2번은 DESC로 정렬한 INDEX입니다. 여기에서 desc로 정렬한 acutal time이 거의 2배 빨라진 것을 확인 할 수 있습니다. analyze가 정확한 값을 알려주지 않을 수도 있다는 사실을 알고 있지만, 제가 판단한 내용이 맞는지 의심이 듭니다. 딩코딩코님도 desc로 정렬을 하신거 보면 이유가 있을 것이라고도 생각합니다. Q1. 위 상황에서 INDEX의 첫번째 칼럼은 정렬 조건이 의미가 없는 게 맞나요? Q2. 만약 의미가 있다면 어떤 부분에서 의미가 있는지 궁금합니다.
5회기출문제 작업형2에서 평가지표가 RMSE가 나왔는데 다른 평가지표를 사용해도 무방하다고 하셔서 MSE로 작업을 해봤어요 그런데 결과값이 너무 크게 차이가 나는데 상관없나요? 값이 작을수록 좋다고 하셔셔.. ㅜ 만약 시험에서 RMSE로 나올경우 , 대신 쓸 수 있는 평가지표를 추천해주세요
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 문제 7번에서 index '2001' 데이터(행)의 평균보다 큰 값의 갯수와 index '2003' 데이터(행)의 평균보다 작은 값의 갯수를 더하시오 위 말이 2001의 데이터행의 평균과 2001의 데이터를 비교해서 큰 값인지 df내 전체 데이터와 비교하라는 것인지 비교군이 명확하지 않아 혼동이 옵니다. 설명 영상을 보고서야 같은 행에 대한 비교란 것을 알았습니다. 아래 2003도 마찬가지고요
안녕하세요, 시나공 책을 보니 object 컬럼의 nunique 값이 다를 때는 train, test 데이터를 concat한 뒤 원핫 인코딩을 해주어야한다고 나와있는데 레이블 인코딩도 마찬가지인가요? 모의문제 2에서는 neighbourhood의 nunique값이 다른데 concat 없이 레이블 인코딩을 진행하신 것 같아서 질문 남깁니다.
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 # 원산지와 메뉴 기준 (평균, 합계) df.groupby(['원산지','메뉴']).agg(['mean','sum']) # 원산지와 메뉴 기준 (평균, 합계) df.groupby(['메뉴']).agg(['mean','sum'], numeric_only=True) 원산지와 메뉴기준으로 agg하여 mean 과 sum을 구했을때 코드를 알려주셨는데요, 원산지 하나의 칼럼의 mean과 sum을 보고싶을 때는 어떻게 해야하나요? 에러가 나네요,, 아마 원산지가 빠져서 문자열이라 그런거같은데, numeric_only = True을 어디에 넣어야하나요?
from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(random_state=0) rf.fit(X_tr, y_tr) pred = rf.predict_proba(X_val) 촉박하게 공부하다 보니 평가지표에 대한 이해가 잘 되지 않는데요, 제출하는데는 크게 문제가 없는 것으로 보이는데 평가지표도 코드에 포함되어야 채점에 큰 문제가 없을..까요..?ㅠㅠ
age 컬럼에서 소수점인 칼럼을 찾기 위해 df[age] != round (df[age], 0)으로 수식 작성하셨는데요. 이렇게 될 경우, 36.3은 버림이 되면서 round 적용하기 전과, 적용한 이후가 같아져서 누락이 되는거 아닌지 궁금합니다. 영상에서는 36.3 값도 필터링이 되던데 어째서 가능한지 너무 궁금합니다ㅠ 바쁘신데 감사합니다!
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 1-5 어떤 알고리즘을 학습하고 계신가요? 알고리즘과 친해지기(2) 여기까지 이해하신 내용은 무엇인가요? max값을 구할 때 리스트의 max 함수를 사용할 수도 있는데 굳이 max 값을 따로 구하는 이유가 있으신가요? 그게 더 시간 복잡도상으로 좋아서인지 초심자 입장에서 생각해보려고 하는 건지 궁금합니다..