1. 程式人生 > >資料預處理:讀取檔案資料,並存為python陣列

資料預處理:讀取檔案資料,並存為python陣列

檔案的簡單讀取

# 定義一個將檔案中的資料轉化為陣列的類
import numpy as np
class DataUtil:
# =============================================================================
# 從檔案中讀取資料
# 5個引數:資料集的名稱,資料集的路徑,訓練樣本數,類別所在列,是否打亂資料    
# =============================================================================
    def get_dataset
(name,path,train_num=None,tar_index=None,shuffle=True): x =[] # 將編碼設定為utf-8 with open(path,"r",encoding="utf-8") as file: # 如果是氣球資料集的話,使用逗號分割資料 if "balloon" in name: # 檔案讀取是一行一行讀取的 for sample in file: # 一行資料就是一個數組,strip()去空格,split(",")以逗號分隔
x.append(sample.strip().split(",")) # 預設打亂資料 if shuffle: np.random.shuffle(x) # 預設類別在最後一列 tar_index = -1 if tar_index is None else tar_index y = np.array([xx.pop(tar_index) for xx in
x]) x = np.array(x) # 預設是全部訓練樣本 if train_num is None: return x,y # 若傳入了訓練樣本樹,則分為訓練集和測試集 return (x[:train_num],y[:train_num]),(x[train_num:],y[train_num:])

測試:

原始資料:

黃色,,成人,用手打,不爆炸
黃色,,成人,用腳踩,爆炸
黃色,,小孩,用手打,不爆炸
黃色,,小孩,用腳踩,不爆炸
黃色,,成人,用手打,爆炸
黃色,,成人,用腳踩,爆炸
黃色,,小孩,用手打,不爆炸
黃色,,小孩,用腳踩,爆炸
紫色,,成人,用手打,不爆炸
紫色,,小孩,用手打,不爆炸
紫色,,成人,用腳踩,爆炸
紫色,,小孩,用腳踩,爆炸

測試結果

_x,_y = DataUtil.get_dataset("balloon1.0","_Data/balloon1.0.txt")
print(_x)
print(_y)
runfile('D:/share/test/Util.py', wdir='D:/share/test')
[['黃色' '大' '成人' '用腳踩']
 ['黃色' '小' '小孩' '用手打']
 ['黃色' '小' '成人' '用手打']
 ['紫色' '小' '成人' '用手打']
 ['紫色' '小' '小孩' '用手打']
 ['紫色' '大' '小孩' '用腳踩']
 ['紫色' '大' '成人' '用腳踩']
 ['黃色' '小' '成人' '用腳踩']
 ['黃色' '小' '小孩' '用腳踩']
 ['黃色' '大' '成人' '用手打']
 ['黃色' '大' '小孩' '用手打']
 ['黃色' '大' '小孩' '用腳踩']]
['爆炸' '不爆炸' '不爆炸' '不爆炸' '不爆炸' '爆炸' '爆炸' '爆炸' '不爆炸' '爆炸' '不爆炸' '爆炸']