Skip to content

Commit da94ebd

Browse files
authored
Update ko_agent_data_analyst.ipynb
1 parent 952fbf8 commit da94ebd

File tree

1 file changed

+78
-53
lines changed

1 file changed

+78
-53
lines changed

notebooks/ko/ko_agent_data_analyst.ipynb

Lines changed: 78 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,14 @@
66
"# 데이터분석 에이전트: 눈깜짝할 사이에 데이터에서 인사이트 얻기 ✨\n",
77
"_저자: [Aymeric Roucher](https://huggingface.co/m-ric)_\n",
88
"\n",
9-
"> 이 튜토리얼은 고급 과정입니다. 먼저 [이 쿡북](agents)에 대한 개념을 이해하고 있어야 합니다!\n",
9+
"> 이 튜토리얼은 고급 과정입니다. 사전에 [이 쿡북](agents)에 대한 개념을 이해하고 있어야 합니다!\n",
1010
"\n",
11-
"\n",
12-
"이번 쿡북에서 만들 **데이터 분석 에이전트** 는 :\n",
13-
" **데이터 분석 라이브러리를 사용한 코드 에이전트로,데이터로부터 인사이트를 도출하기 위해 데이터프레임을 불러오고 변환하며, 결과를 시각화합니다!**\n",
11+
"이번에 만들 **데이터 분석 에이전트**는 :\n",
12+
" **데이터 분석 라이브러리를 사용한 코드 에이전트로,데이터프레임을 불러오고 변환해 데이터로부터 인사이트를 찾아내고,결과를 시각화합니다!**\n",
1413
"\n",
1514
"\n",
1615
"예를 들어 여러분이 '[Kaggle Titanic 챌린지](https://www.kaggle.com/competitions/titanic)'의 데이터를 직접 분석해 개별 승객의 생존 여부를 예측하고 싶다고 가정해 봅시다.\n",
17-
"하지만 직접 분석에 들어가기 전에, 자율 에이전트가 추세를 추출해주고 수치 몇 가지를 그려 인사이트를 발견해 분석을 준비해주기를 원합니다.\n",
16+
"하지만 직접 분석에 들어가기 전에, 자율 에이전트가 수치도 추출해주고 그에 맞게 그래프도 그려주어 인사이트를 뽑아내주면 좋겠군요.\n",
1817
"\n",
1918
"이 시스템을 설정해 보겠습니다.\n",
2019
"\n",
@@ -26,7 +25,7 @@
2625
},
2726
{
2827
"cell_type": "code",
29-
"execution_count": 2,
28+
"execution_count": null,
3029
"metadata": {
3130
"id": "0WauABimpjta"
3231
},
@@ -42,7 +41,7 @@
4241
},
4342
"source": [
4443
"우선 에이전트를 생성합니다. 이 쿡북에서는 `ReactCodeAgent`를 사용했습니다. (더 많은 종류의 에이전트를 확인하려면 [이 문서](https://huggingface.co/docs/transformers/en/agents) 를 참조하세요.)\n",
45-
"이 에이전트는 별도의 도구를 제공하지 않아도 스스로 코드를 실행할 수 있습니다.\n",
44+
"이 에이전트는 별도의 도구를 제공하지 않아도 스스로 코드를 작성하고 실행할 수 있습니다.\n",
4645
"\n",
4746
"일반적으로 `additional_authorized_imports`에 라이브러리를 전달할 때, 파이썬 인터프리터는 환경에 설치된 라이브러리만 사용할 수 있기 때문에, 해당 라이브러리들이 로컬 환경에 설치되어 있는지 확인해야 합니다.\n",
4847
"\n",
@@ -62,8 +61,7 @@
6261
"from huggingface_hub import login\n",
6362
"import os\n",
6463
"\n",
65-
"# login(os.getenv(\"HUGGINGFACEHUB_API_TOKEN\"))\n",
66-
"login(os.getenv(\"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\"))\n",
64+
"login(os.getenv(\"HUGGINGFACEHUB_API_TOKEN\"))\n",
6765
"llm_engine = HfEngine(\"meta-llama/Meta-Llama-3.1-70B-Instruct\")\n",
6866
"\n",
6967
"agent = ReactCodeAgent(\n",
@@ -81,8 +79,7 @@
8179
},
8280
"source": [
8381
"## 데이터 분석 📊🤔\n",
84-
"\n",
85-
"에이전트 실행시, 실제 캐글 대회에서 사용된 추가적인 노트를 `run`메소드의 kwarg로 넘겨주었습니다.\n"
82+
"저자는 구글 코랩을 사용하였으므로, 드라이브를 마운트하고 분석에 사용할 디렉토리를 생성했습니다."
8683
]
8784
},
8885
{
@@ -128,7 +125,7 @@
128125
{
129126
"cell_type": "code",
130127
"source": [
131-
"os.chdir('/content/drive/My Drive/Colab Notebooks/figures') # 원하는 경로로 변경\n",
128+
"os.chdir('/content/drive/My Drive/Colab Notebooks/figures') # 생성한 디렉토리 경로로 변경\n",
132129
"print(os.getcwd()) # 변경된 경로 확인"
133130
],
134131
"metadata": {
@@ -139,57 +136,94 @@
139136
"outputs": []
140137
},
141138
{
142-
"cell_type": "code",
143-
"execution_count": null,
139+
"cell_type": "markdown",
140+
"source": [
141+
"실제 캐글 대회에서 사용된 추가 노트를 에이전트를 실행할 때 `run`메소드의 kwarg로 넘겨주었습니다."
142+
],
144143
"metadata": {
145-
"id": "WOLY_WBLPGQE",
146-
"collapsed": true
147-
},
148-
"outputs": [],
144+
"id": "gnruiFV_62KL"
145+
}
146+
},
147+
{
148+
"cell_type": "code",
149149
"source": [
150150
"additional_notes = \"\"\"\n",
151151
"### Variable Notes\n",
152-
"PassengerId : 승객 아이디\n",
153-
"Survived : 생존여부 (0: 사망, 1: 생존)\n",
154-
"pclass: 사회경제적 지위(SES)의 대리 변수\n",
152+
"승객ID : 승객 아이디\n",
153+
"생존여부 : (0: 사망, 1: 생존)\n",
154+
"클래스: 사회경제적 지위\n",
155155
"1 = 상류층\n",
156156
"2 = 중산층\n",
157157
"3 = 하류층\n",
158-
"Sex : 성별 (male: 남성, female: 여성)\n",
159-
"age: 나이(Age)가 1 미만일 경우 소수로 표시됩니다. 나이가 추정된 경우, xx.5 형태로 표시됩니다.\n",
160-
"sibsp: 이 데이터셋은 가족 관계를 다음과 같이 정의합니다...\n",
161-
"형제 = 형제, 자매, 이복형제, 이복자매\n",
158+
"성별 : 남성, 여성\n",
159+
"나이 : 나이가 1 미만일 경우 소수로 표시됩니다. 나이가 추정된 경우, xx.5 형태로 표시됩니다.\n",
160+
"형제배우자: 이 데이터셋은 가족 관계를 다음과 같이 정의합니다...\n",
161+
"형제자매 = 형제, 자매, 이복형제, 이복자매\n",
162162
"배우자 = 남편, 아내 (애인과 약혼자는 간주하지 않았습니다.)\n",
163-
"parch: 이 데이터셋은 가족 관계를 다음과 같이 정의합니다...\n",
163+
"부모자식: 이 데이터셋은 가족 관계를 다음과 같이 정의합니다...\n",
164164
"부모 = 어머니, 아버지\n",
165-
"자녀 = 딸, 아들, 양녀, 양자\n",
166-
"유모와 여행을 온 몇 어린이들의 경우, parch=0 로 표현합니다.\n",
167-
"Fare: 티켓 요금\n",
165+
"자식 = 딸, 아들, 양녀, 양자\n",
166+
"유모와 여행을 온 몇 어린이들의 경우, 부모자식=0 로 표현합니다.\n",
167+
"요금: 티켓 요금\n",
168168
"\"\"\"\n",
169169
"\n",
170170
"analysis = agent.run(\n",
171-
" \"\"\"당신은 데이터 분석 전문가입니다. 소스 파일을 로드하고 내용을 분석하세요. 아래 세가지 행동을 취해주세요.\n",
171+
" \"\"\"당신은 데이터 분석 전문가입니다. 소스 파일을 로드하고 내용을 분석해주세요.\n",
172+
"먼저 주어진 변수와 생존율과의 상관관계에 대해 흥미로운 질문 3가지를 나열하고, 해당 질문에 하나씩 답하고 관련된 숫자를 찾아내세요.\n",
173+
"matplotlib/seaborn을 사용해 3가지 질문에 관련된 그래프를 그리고, './figures/' 폴더에 저장하십시오. 다른 그래프를 그리기 전에 plt.clf()로 각 그래프를 지워야 합니다. 그래프의 라벨명은 영어로 해주세요.\n",
172174
"\n",
173-
"첫번째, 주어진 변수를 바탕으로 데이터에서 흥미로운 질문 3개를 선정하고, 각각 답해보세요. 예를 들어, survival rate(생존율)과의 특정 상관관계에 관한 질문을 만들 수 있습니다. (질문은 반드시 최소한 3개의 번호가 매겨진 상세한 항목)\n",
174-
"두번째, 3가지 질문과 관련된 figures를 그리세요. matplotlib/seaborn을 사용해 './figures/' 폴더에 저장하세요. 각 그림을 그리기 전에 plt.clf()로 그림을 지워주세요.\n",
175-
"세번째, 위의 답변에서 구한 상관관계와 경향을 요약하세요. 각 숫자에서 실생활 인사이트를 도출하세요. 예를 들어, \"is_december와 boredness의 상관관계는 1.3453이며, 이는 겨울철에 사람들이 더 지루해진다는 것을 시사합니다\"와 같은 식으로요.\n",
175+
"최종 답변 : 숫자로부터 찾은 상관관계와 인사이트를 요약해주세요.\n",
176+
"(인사이트 예시: \"is_december와 boredness 간의 상관관계는 1.3453으로, 이는 사람들이 겨울에 더 지루함을 느낄 가능성이 높다는 것을 시사합니다.\")\n",
177+
"최종 답변은 최소한 3개의 번호가 매겨진 항목이어야합니다.\n",
176178
"\"\"\",\n",
177179
" additional_notes=additional_notes,\n",
178-
" source_file=\"titanic/train.csv\",\n",
180+
" source_file=\"titanic_ko/train.csv\",\n",
179181
")"
180-
]
182+
],
183+
"metadata": {
184+
"id": "Xe5jfSWStgrc",
185+
"collapsed": true
186+
},
187+
"execution_count": null,
188+
"outputs": []
181189
},
182190
{
183191
"cell_type": "code",
184-
"execution_count": null,
192+
"execution_count": 21,
185193
"metadata": {
186-
"id": "8hA-jMsePGQF"
194+
"id": "8hA-jMsePGQF",
195+
"colab": {
196+
"base_uri": "https://localhost:8080/"
197+
},
198+
"outputId": "be0dd5c4-8bda-4723-9acf-394ed044297e"
187199
},
188-
"outputs": [],
200+
"outputs": [
201+
{
202+
"output_type": "stream",
203+
"name": "stdout",
204+
"text": [
205+
"성별과 생존여부 간의 상관관계: \n",
206+
"남성: 0.188908\n",
207+
"여성: 0.742038\n",
208+
"클래스와 생존여부 간의 상관관계: \n",
209+
"1등급: 0.629630\n",
210+
"2등급: 0.472826\n",
211+
"3등급: 0.242363\n",
212+
"나이와 생존여부 간의 상관관계-confidence level: -0.077221\n"
213+
]
214+
}
215+
],
189216
"source": [
190217
"print(analysis)"
191218
]
192219
},
220+
{
221+
"cell_type": "markdown",
222+
"source": [],
223+
"metadata": {
224+
"id": "6BnDH9SG3uH4"
225+
}
226+
},
193227
{
194228
"cell_type": "markdown",
195229
"metadata": {
@@ -198,9 +232,9 @@
198232
"source": [
199233
"놀랍지 않나요? 에이전트에게 시각화 도구를 제공해 자신이 만든 그래프를 분석하게 할 수도 있습니다!\n",
200234
"\n",
201-
"## 데이터과학자 에이전트 : 예측을 실행해보자 🛠️\n",
235+
"## 데이터과학자 에이전트 : 예측 수행하기 🛠️\n",
202236
"\n",
203-
"👉 이제 더 깊이 들어가 봅시다: **데이터를 기반으로 모델이 예측을 수행하도록 합니다.**\n",
237+
"👉 이제 더 깊이 들어가 봅시다 : **데이터를 기반으로 모델이 예측을 수행하도록 합니다.**\n",
204238
"\n",
205239
"예측 수행을 위해 `additional_authorized_imports`에 `sklearn`도 추가해줍니다."
206240
]
@@ -228,8 +262,8 @@
228262
"\n",
229263
"output = agent.run(\n",
230264
" \"\"\"당신은 전문가 수준의 머신러닝 엔지니어입니다.\n",
231-
"'titanic/train.csv' 파일을 사용하여 생존 여부를 예측하는 머신러닝 모델을 학습시키세요.\n",
232-
"'titanic/test.csv' 파일의 행에 대한 예측을 수행한 후, 결과를 './output.csv'에 출력하세요.\n",
265+
"'titanic_ko/train.csv' 파일을 사용하여 '생존여부'를 예측하는 머신러닝 모델을 학습시키세요.\n",
266+
"'titanic_ko/test.csv' 파일의 행에 대한 예측을 수행한 후, 결과를 'titanic_ko/output.csv'에 출력하세요.\n",
233267
"함수와 모듈을 사용하기 전에 반드시 임포트하세요!\n",
234268
"\"\"\",\n",
235269
" additional_notes=additional_notes + \"\\n\" + analysis,\n",
@@ -246,17 +280,8 @@
246280
"\n",
247281
"결과는 다를 수 있지만, 몇 초 만에 에이전트를 사용해 이 정도 성과를 낼 수 있다는 점이 매우 인상적입니다.\n",
248282
"\n",
249-
"🚀 위 시도는 에이전트를 활용한 단순한 데이터 분석 사례일 뿐입니다. 사용 사례에 맞게 충분히 개선할 수 있습니다!"
283+
"🚀 이것은 에이전트를 활용한 단순한 데이터 분석 사례일 뿐입니다. 사용 사례에 맞게 충분히 개선할 수 있습니다 🤗"
250284
]
251-
},
252-
{
253-
"cell_type": "code",
254-
"source": [],
255-
"metadata": {
256-
"id": "7Qnz16z1feCf"
257-
},
258-
"execution_count": null,
259-
"outputs": []
260285
}
261286
],
262287
"metadata": {
@@ -283,4 +308,4 @@
283308
},
284309
"nbformat": 4,
285310
"nbformat_minor": 0
286-
}
311+
}

0 commit comments

Comments
 (0)