怎么自定義一個數據集?自定義數據集面臨哪些問題? 原創
“ 在目前的神經網絡應用中,數據集是對大部分企業需要面臨的主要問題。”
數據集作為神經網絡模型中的一個必要環節,其重要性不言而喻;雖然網絡上有很多開源的數據集,但對很多場景來說需要自定義數據集才能滿足自身的需求。
從目前的大模型發展來看,大部分企業選擇在開源模型的基礎之上做訓練和微調是比較好的選擇;而這時,神經網絡結構就不是主要的技術難點,反而是數據成為了很多企業的痛點,成為亟待解決的問題。
因此,怎么自定義一個數據集就成為很多人面臨的問題;自定義是一個復雜的問題,中間涉及到很多環節;當然除了那些數據處理的第三方公司之外,在業務場景中技術人員一般獲得的是經過前期初步處理的數據。
這時需要做的就是把經過初步處理的數據給統一化,結構化。
自定義圖像數據集
自定義數據集是一個復雜且繁瑣的過程,包括前期的數據收集與整理;以及把整理之后的數據轉換成神經網絡所需要的格式;而這也是數據集比較麻煩的一個地方。
自定義一個數據集需要哪些步驟? 自定義數據集大概需要經過以下幾個步驟:
- 確定任務目標
- 收集數據
- 數據清洗
- 數據標注
- 數據預處理
- 劃分數據集
1. 明確任務目標
在創建數據集之前,首先需要明確任務的目標和需求:
- 是分類任務、回歸任務、目標檢測任務還是圖像分割任務?
- 需要哪些輸入特征和目標變量?
- 數據的形式是什么(如圖片、文本、表格數據)?
2. 收集數據
根據任務目標,收集相關的數據。數據來源可以包括:
- 公開數據集:如 Kaggle、UCI Machine Learning Repository、Google Dataset Search 等。
- 內部數據:如公司數據庫、日志文件等。
- 網絡爬蟲:從網頁中抓取數據(需注意合法性和道德問題)。
- API:通過第三方 API 獲取數據(如 Twitter API、Google Maps API 等)。

3. 數據清洗
數據清洗是確保數據質量的關鍵步驟,主要包括:
- 處理缺失值:刪除或填充缺失值。
- 處理異常值:刪除或修正異常值。
- 去除重復數據:刪除重復的記錄。
- 格式標準化:統一日期、時間、單位等格式。
- 文本數據清洗:去除特殊字符、停用詞、HTML 標簽等。
4. 數據標注
如果任務需要監督學習,需要對數據進行標注:
- 手動標注:通過人工標注數據。
- 自動標注:使用規則或預訓練模型進行自動標注。
- 眾包標注:通過眾包平臺(如 Amazon Mechanical Turk)進行標注。
根據目錄標注的螞蟻圖片:

5. 數據預處理
對數據進行預處理,以適應模型的輸入要求:
- 特征工程:從原始數據中提取有用的特征。
- 歸一化/標準化:將數據縮放到相同的范圍。
- 數據增強:對數據進行變換(如旋轉、翻轉、添加噪聲等),以增加數據多樣性。

6. 劃分數據集
將數據集劃分為訓練集、驗證集和測試集:
- 訓練集:用于訓練模型。
- 驗證集:用于調整超參數和評估模型性能。
- 測試集:用于最終評估模型的泛化能力。
而在大部分情況下,在企業應用中確認任務目標之后,很少有人真的會按照以上步驟處理數據;特別是第二步和第四步。
一般情況下在,技術人員拿到的數據是經過初步處理的;比如說標注之后的數據;而這時我們可能需要根據具體情況對數據再進行一次清洗和進一步的處理。
舉個具體的例子來說,假如你需要整理一個圖片數據集;這時你拿到的圖片數據可能是根據目錄標注好的或者使用專門的標注文檔標注之后的數據。
但這時的數據可能面臨著圖片大小不一,格式不同(png,jpg),通道也不同(RGB是三通道,還有灰度的單通道);甚至可能其中夾雜著一些其它圖片,比如在狗狗的圖片目錄中夾雜著部分貓的圖片。
在正常情況下的數據處理中,我們應該主要關注第一,三,五,六步;而這也是數據處理過程中必不可少的環節;其中比較復雜的主要是三和五步,
# 使用PIL的Image把圖片處理成統一大小;當然,這只是最簡單的變換方式,可能會導致圖片變形
def resize_image(img, target_size):
return img.resize(target_size, Image.Resampling.LANCZOS)本文轉載自公眾號AI探索時代 作者:DFires

















