{
"cells": [
{
"cell_type": "markdown",
"id": "b6667a31",
"metadata": {},
"source": [
"# Multimodal Training/Prediction for Image + Text + Tabular\n",
"\n",
"이미지가 포함된 멀티모달 데이터도 한 줄의 코드로 쉽게 훈련 가능합니다. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "55e17642",
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import numpy as np\n",
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"np.random.seed(123)"
]
},
{
"cell_type": "markdown",
"id": "bc8ebca0",
"metadata": {},
"source": [
"
\n",
"\n",
"## 1. Data preparation and Training\n",
"\n",
"### Load Data\n",
"본 핸즈온은 빠른 실습을 위해 PetFinder 데이셋의 일부만 사용합니다. 입양 프로필 정보를 기반으로 애완 동물의 입양 속도를 예측하는 문제로, 문제를 단순화하여 0(느림)/1(빠름) 이진 분류 문제로 변환하였습니다.\n",
"\n",
"클래스 개수 또한, 실생활에서 많이 접하는 불균형 문제가 아닌 300/300(1:1 비율)입니다."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "c7e6ca44",
"metadata": {},
"outputs": [],
"source": [
"save_path = 'ag-03-multimodal-img-text-tabular'\n",
"download_dir = './ag_automm_tutorial'\n",
"!rm -rf $save_path $download_dir"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "e046ee50",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
" 0%| | 0.00/18.8M [00:00, ?iB/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading ./ag_automm_tutorial/file.zip from https://automl-mm-bench.s3.amazonaws.com/petfinder_for_tutorial.zip...\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 18.8M/18.8M [00:00<00:00, 56.9MiB/s]\n"
]
}
],
"source": [
"zip_file = 'https://automl-mm-bench.s3.amazonaws.com/petfinder_for_tutorial.zip'\n",
"from autogluon.core.utils.loaders import load_zip\n",
"load_zip.unzip(zip_file, unzip_dir=download_dir)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "3b2179b6",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"dataset_path = download_dir + '/petfinder_for_tutorial'\n",
"train_data = pd.read_csv(f'{dataset_path}/train.csv', index_col=0)\n",
"test_data = pd.read_csv(f'{dataset_path}/test.csv', index_col=0)\n",
"label_col = 'AdoptionSpeed'"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "25b0a13e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 300\n",
"1 300\n",
"Name: AdoptionSpeed, dtype: int64"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data['AdoptionSpeed'].value_counts()"
]
},
{
"cell_type": "markdown",
"id": "67469eb8",
"metadata": {},
"source": [
"각 동물의 입양 프로필에는 사진, 텍스트 설명, 연령, 품종, 이름, 색상 등과 같은 다양한 피쳐가 포함되어 있습니다."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "a35924f6",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n", " | Type | \n", "Name | \n", "Age | \n", "Breed1 | \n", "Breed2 | \n", "Gender | \n", "Color1 | \n", "Color2 | \n", "Color3 | \n", "MaturitySize | \n", "... | \n", "Quantity | \n", "Fee | \n", "State | \n", "RescuerID | \n", "VideoAmt | \n", "Description | \n", "PetID | \n", "PhotoAmt | \n", "AdoptionSpeed | \n", "Images | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "2 | \n", "Yumi Hamasaki | \n", "4 | \n", "292 | \n", "265 | \n", "2 | \n", "1 | \n", "5 | \n", "7 | \n", "2 | \n", "... | \n", "1 | \n", "0 | \n", "41326 | \n", "bcc4e1b9557a8b3aaf545ea8e6e86991 | \n", "0 | \n", "I rescued Yumi Hamasaki at a food stall far aw... | \n", "7d7a39d71 | \n", "3.0 | \n", "0 | \n", "images/7d7a39d71-1.jpg | \n", "
1 | \n", "2 | \n", "Nene/ Kimie | \n", "12 | \n", "285 | \n", "0 | \n", "2 | \n", "5 | \n", "6 | \n", "7 | \n", "2 | \n", "... | \n", "1 | \n", "0 | \n", "41326 | \n", "f0450bf0efe0fa3ff9321d0b827b1237 | \n", "0 | \n", "Has adopted by a friend with new pet name Kimie | \n", "0e107c82f | \n", "3.0 | \n", "0 | \n", "images/0e107c82f-1.jpg | \n", "
2 | \n", "2 | \n", "Mattie | \n", "12 | \n", "266 | \n", "0 | \n", "2 | \n", "1 | \n", "7 | \n", "0 | \n", "2 | \n", "... | \n", "1 | \n", "0 | \n", "41401 | \n", "9b52af6d48a4521fd01d4028eb5879a3 | \n", "0 | \n", "I rescued Mattie with a broken leg. After surg... | \n", "1a8fd6707 | \n", "5.0 | \n", "0 | \n", "images/1a8fd6707-1.jpg | \n", "
3 | \n", "1 | \n", "NaN | \n", "1 | \n", "189 | \n", "307 | \n", "2 | \n", "1 | \n", "2 | \n", "0 | \n", "2 | \n", "... | \n", "1 | \n", "0 | \n", "41401 | \n", "88da1210e021a5cf43480b074778f3bc | \n", "0 | \n", "She born on 30 September . I really hope the a... | \n", "bca8b44ae | \n", "3.0 | \n", "0 | \n", "images/bca8b44ae-1.jpg | \n", "
4 | \n", "2 | \n", "Coco | \n", "6 | \n", "276 | \n", "285 | \n", "2 | \n", "2 | \n", "4 | \n", "7 | \n", "2 | \n", "... | \n", "1 | \n", "100 | \n", "41326 | \n", "227d7b1bcfaffb5f9882bf57b5ee8fab | \n", "0 | \n", "Calico Tame and easy going Diet RC Kitten Supp... | \n", "2def67952 | \n", "1.0 | \n", "0 | \n", "images/2def67952-1.jpg | \n", "
5 rows × 25 columns
\n", "