iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
AI & Data

30天把AI知識傳授給女友系列 第 25

Day25 建立時尚商品的資料集

  • 分享至 

  • xImage
  •  

今天我們要將 Pandas 讀取 csv 檔案要用到的資料取出來,並且做前處理來讓資料可以建立模型的資料集,會有以下三個步驟:

  1. 得到一個長 list1 : 裡面是每張圖片的路徑

  2. 另外一個長list2: 裡面是每張圖片對應的標籤(整數)順序要和list1對應

  3. 把這兩個list切分出來一部分當作驗證集

首先引用會用到的模組:

import pandas as pd
import numpy as np
import os

接下來的步驟跟昨天介紹的一樣,使用 Pandas 讀取 csv:

# 匯入的時候出錯,pandas.parser.CParserError: Error tokenizing data. C error
fasion_df = pd.read_csv("./fashion_product_images_small/myntradataset/styles.csv", on_bad_lines='skip')
# 輸出頭尾資料
fasion_df['image'] = fasion_df.apply(lambda row: str(row['id']) + ".jpg", axis=1)
fasion_df = fasion_df.reset_index(drop=True)

昨天有做過分析,我們預計要讓機器看圖片來預測對應的類別,因此取出 masterCategory 的資料:

master_category = fasion_df["masterCategory"]
master_category_np = master_category.to_numpy()
print(type(master_category_np) )
print(master_category_np.shape)   

此處已經將 pandas.datafranes 的資料轉成 numpy.array 的格式,並且可以看到總共有 44424 筆資料

https://ithelp.ithome.com.tw/upload/images/20230930/20153503gI78X3erMB.png

查看類別的數量和有哪些類別:

# 查看類別跟數量
master_category_set = set(master_category_np)
print(master_category_set)
print(len(master_category_set))

https://ithelp.ithome.com.tw/upload/images/20230930/2015350360zAdbdS6r.png

接著我們建立一個字典來讓每個類別對應到一個數值,以便後面模型訓練使用:

master_category_list = list(master_category_set)
dic = {}
# 建立字典將每個類別對應到一個數值
for i in range(len(master_category_set)):
    dic[master_category_list[i]] = i
print(dic)

https://ithelp.ithome.com.tw/upload/images/20230930/20153503qubMTHfdI7.png

接著取出圖片的檔名,並且加上其所在位置的資訊,組合成圖片的路徑,接著將 35000 筆當作訓練資料,9924 筆當作測試資料:

image_name =  fasion_df['image'].to_numpy()
print("圖片總數: ", len(image_name))
image_path = [os.path.join("./myntradataset/images",i) for i in image_name ]
# 切割成訓練和測試集
image_path_train = image_path[:35000]
image_path_test = image_path[35000:]
print("訓練圖片總數: ", len(image_path_train))
print("測試資料總數: ", len(image_path_test))

https://ithelp.ithome.com.tw/upload/images/20230930/20153503fx64TrHdIo.png

最後讀取標籤的資料,透過前文所建立的字典將分類名稱轉成其對應的數值,最後分割 35000 筆訓練 9924 測試:

master_category = fasion_df["masterCategory"].to_numpy()
category_label = []
# 將 label 文字轉為數字
for i in range(len(master_category)):
    category_label.append(dic[master_category[i]])
category_label = np.array(category_label)
category_label_train = category_label[:35000]
category_label_test = category_label[35000:]
print("訓練標籤總數: ", len(image_path_train))
print("測試標籤總數: ", len(image_path_test))

https://ithelp.ithome.com.tw/upload/images/20230930/20153503gRWiMFhJvS.png

結語

今天將我們要用到的資訊從表格中萃取出來,接著我們會利用這兩個資訊來做 dataset,方法會類似 Day 11 建立貓貓和兔兔的資料集,如果有點不熟的可以先複習一下哦。


上一篇
Day24 Pandas 分析時尚商品資料集
下一篇
Day26 建立 Pyorch 的自訂資料集和 DataLoader
系列文
30天把AI知識傳授給女友30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言