문제2를 풀다가 보니, 초기 데이터프레임 상태에서 1. 주어진 데이터에서 결측치가 30%이상 되는 컬럼을 찾고 해당 컬럼에 결측치가 있는 데이터(행)을 삭제함. --> 1 번 문제를 처리하고나면, 전체적인 결측치 상태가 달라집니다. 2. 그리고 30% 미만, 20%이상인 결측치가 있는 컬럼은 최빈값으로 대체하고 1번 처리하고 난 후 2번 문제에 해당하는 조건의 컬럼은 없게 되는데, 이런 경우 1번 처리된 결과가 아닌 초기 데이터프레임 상태에 대해 문제를 풀어야 하는거죠? 선생님 풀이도 초기 상태를 고려하여 풀이된 것 같습니다. 시험에서도 이렇게 하면 되는거죠?
한 번에 끝내는 AI 에이전트 개발 올인원 (w. LangGraph, Google ADK, CrewAI)
4강에서, 제공해주신 환경파일을 복사한 후 "uv sync"를 실행하면 다음과 같은 에러가 발생합니다. 에러메세지에 따라 MSVC Build Tool도 다운받아 설치하였지만 동일한 에러가 반복됩니다. 현재 python version이 3.13.7을 사용하고 있습니다. == 에러 메세지 == C:\Proj\agent-atoz\1-1_chatbot_agent>uv sync Using CPython 3.13.7 interpreter at: C:\Python\Python313\python.exe Creating virtual environment at: .venv Resolved 221 packages in 1ms × Failed to build chroma-hnswlib==0.7.6 ├─ ▶ The build backend returned an error ╰─ ▶ Call to setuptools.build_meta.build_wheel failed (exit code: 1) [stdout] running bdist_wheel running build running build_ext building 'hnswlib' extension [stderr] error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/ hint: This usually indicates a problem with the package or the build environment. help: chroma-hnswlib (v0.7.6) was included because agent-a-to-z (v0.1.0) depends on crewai (v0.177.0) which depends on chromadb (v0.5.23) which depends on chroma-hnswlib
[색션3. 작업형1 판다스]의 Section9. 데이터 추가/변경에서 행을 추가할 때는 df .loc[...] 이용해서 하는데 Section5. 새로운 컬럼(열) 추가에서는 그냥 df ['new'] = .... 로 추가를 하더라구요. 이 둘의 차이가 있을까요? 제가 이해한 것은 열을 추가할 때는 df ['new'] = 또는 df.loc[ , 'new'] = 행을 추가할 때는 df.loc['new'] = 이렇게 쓸 수 있고 loc를 사용하면 각각의 데이터를 넣을 수 있지만, 사용하지 않는 경우(Section5)는 일괄적으로 같은 값이 들어간다..인데 맞는지 궁금합니다!
import time from concurrent import futures WORK_LIST = [1000000, 10000000, 100000000, 1000000000] def sum_number(n): return sum(range(1, n + 1)) def main(): start_time = time.time() futures_list = [] with futures.ThreadPoolExecutor() as excecutor: for work in WORK_LIST: future = excecutor.submit(sum_number, work) futures_list.append(future) print(f"Schduled Work: {work} | {future}") print() result = futures.wait(futures_list, timeout=5.0) print(result) end_time = time.time() - start_time print(f"Excecute Time: {end_time:.2f}s / Result: {result}") if __name__ == '__main__': main() 현재 문제점은 최종 출력 시간이 12초정도 걸리는데 중간에 5초 wait 후 print(result)가 호출되는 것이 아니라 12초 후에 아래 코드가 실행될 때 함께 실행되며 모두 정상적으로 finished returned int로 나옵니다. print(f"Excecute Time: {end_time:.2f}s / Result: {result}") 터미널 출력 결과: DoneAndNotDoneFutures(done={<Future at 0x2545b19e780 state=finished returned int>, <Future at 0x2545b123b10 state=finished returned int>, <Future at 0x2545b16f230 state=finished returned int>, <Future at 0x2545b123390 state=finished returned int>}, not_done=set()) Excecute Time: 11.80s / Result: DoneAndNotDoneFutures(done={<Future at 0x2545b19e780 state=finished returned int>, <Future at 0x2545b123b10 state=finished returned int>, <Future at 0x2545b16f230 state=finished returned int>, <Future at 0x2545b123390 state=finished returned int>}, not_done=set())
강의에서 book/4는 동적 페이지인데 첫 접속 후 Full Route Cache에 저장되어 두 번째 접속이 빨라진다고 했습니다. 동적 페이지는 Full Route Cache에 저장되지 않는다고 배웠는데 왜 적용되나요? .next 폴더에 해당 페이지가 남아있는 것을 확인했는데, 이것이 Full Route Cache 적용을 의미하나요? npm run start로 프로덕션 모드에서 테스트했는데 첫 접속과 두 번째 접속 모두 170ms로 동일합니다. 왜 속도 차이가 없나요? import { notFound } from "next/navigation"; import style from "./page.module.css"; import { BookData } from "@/types"; // export const dynamicParams = false; export function generateStaticParams() { return [{ id: "1" }, { id: "2" }, { id: "3" }]; } export default async function Page({ params, }: { params: Promise<{ id: string | string[] }>; }) { const { id } = await params; const response = await fetch( `${process.env.NEXT_PUBLIC_API_SERVER_URL}/book/${id}` ); if (!response.ok) { if (response.status === 404) { notFound(); } return <div>오류가 발생했습니다...</div>; } const book: BookData = await response.json(); const { coverImgUrl, title, subTitle, author, publisher, description } = book; return ( <div className={style.container}> <div className={style.cover_img_container} style={{ backgroundImage: `url('${coverImgUrl}')` }} > <img src={coverImgUrl} /> </div> <div className={style.title}>{title}</div> <div className={style.subTitle}>{subTitle}</div> <div className={style.author}> {author} | {publisher} </div> <div className={style.description}>{description}</div> </div> ); } 🚨 필독) 질문하시기 전에 꼭 읽어주세요 (10초 소요) 제목을 구체적으로 작성해 주세요 ✅ 좋은 예 : 감정일기장 Home 구현중 xx 이슈가 발생합니다. ⛔ ️ 나쁜 예 : 이거 왜 안되나요?, 오류나요 도와주세요 등 비슷한 궁금함을 갖고 계신 분들께 도움이 될 수 있어요! 코드의 이슈는 전체 프로젝트를 "링크 형태"로 올려주셔야 원인을 파악할 수 있습니다. 깃허브, 구글드라이브 등의 수단을 통해 링크 형태로 전달해주세요 직접 실행해보며 원인을 파악해야 하기 때문에 텍스트 형태로 붙여넣는건 삼가해주세요 🥲 답변이 도움이 되셨다면 답글 or 해결완료 버튼을 클릭해주세요 비슷한 궁금함을 갖고 계신 분들께 도움이 될 수 있어요! 제 답변이 여러분께 도움이 되었는지 저도 알고 싶어요 🥲 강의 내용에 궁금한 점이 있다면 몇 챕터의 몇 분 몇 초인지 알려주시면 더 좋아요 더 빠른 답변이 가능합니다!
Policy Network(Q)와 일반적인 Q-learning 문제에서의 behaviour policy(b)가 각자 하는 역할이 비슷한거 같은데, 만약 틀리다면 추가적인 설명을 부탁드려도 될까요? 왜냐하면, '탐험'의 성격?을 각각의 net과 policy가 수행한다고 생각했습니다. 우선 network관점에서는 특정 행동 결정 규칙에 따라 weight를 형성하는데 이때 그리디 action에 대한 value를 추정(max함수)하는 target network에 비해선 '활용'보다는 '탐험'을 하고 있다고 생각합니다 -> 행동 규칙에 따라 transition을 입력으로 받아 weight를 업데이트 하기 때문. 이로 인해 일반적인 Q-learning에서의 b도 max를 출력하는 target policy, pi대신 e-그리디 정책으로 일정 확률 e로 모든 행동을 선택할 수 있는 기믹을 활용하여 '탐험'을 하기 때문에 위와 같은 생각을 하였습니다.