文件的简单读取
# 定义一个将文件中的数据转化为数组的类import numpy as npclass DataUtil:# =============================================================================# 从文件中读取数据# 5个参数:数据集的名称,数据集的路径,训练样本数,类别所在列,是否打乱数据 # =============================================================================def get_dataset(name,path,train_num=None,tar_index=None,shuffle=True):x =[]# 将编码设置为utf-8with 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_indexy = 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')[['黄色' '大' '成人' '用脚踩']['黄色' '小' '小孩' '用手打']['黄色' '小' '成人' '用手打']['紫色' '小' '成人' '用手打']['紫色' '小' '小孩' '用手打']['紫色' '大' '小孩' '用脚踩']['紫色' '大' '成人' '用脚踩']['黄色' '小' '成人' '用脚踩']['黄色' '小' '小孩' '用脚踩']['黄色' '大' '成人' '用手打']['黄色' '大' '小孩' '用手打']['黄色' '大' '小孩' '用脚踩']]['爆炸' '不爆炸' '不爆炸' '不爆炸' '不爆炸' '爆炸' '爆炸' '爆炸' '不爆炸' '爆炸' '不爆炸' '爆炸']
另外一种:
def loadDataSet(fileName):"""加载数据集:param fileName::return:"""dataMat = []; labelMat = []fr = open(fileName)for line in fr.readlines():lineArr = line.strip().split('\t')dataMat.append([float(lineArr[0]), float(lineArr[1])])labelMat.append(float(lineArr[2]))return dataMat,labelMat