資料預處理:讀取檔案資料,並存為python陣列
阿新 • • 發佈:2018-12-31
檔案的簡單讀取
# 定義一個將檔案中的資料轉化為陣列的類
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')
[['黃色' '大' '成人' '用腳踩']
['黃色' '小' '小孩' '用手打']
['黃色' '小' '成人' '用手打']
['紫色' '小' '成人' '用手打']
['紫色' '小' '小孩' '用手打']
['紫色' '大' '小孩' '用腳踩']
['紫色' '大' '成人' '用腳踩']
['黃色' '小' '成人' '用腳踩']
['黃色' '小' '小孩' '用腳踩']
['黃色' '大' '成人' '用手打']
['黃色' '大' '小孩' '用手打']
['黃色' '大' '小孩' '用腳踩']]
['爆炸' '不爆炸' '不爆炸' '不爆炸' '不爆炸' '爆炸' '爆炸' '爆炸' '不爆炸' '爆炸' '不爆炸' '爆炸']