数据预处理:读取文件数据,并存为python数组

56 篇文章 0 订阅
28 篇文章 1 订阅

文件的简单读取

# 定义一个将文件中的数据转化为数组的类
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')
[['黄色' '大' '成人' '用脚踩']
 ['黄色' '小' '小孩' '用手打']
 ['黄色' '小' '成人' '用手打']
 ['紫色' '小' '成人' '用手打']
 ['紫色' '小' '小孩' '用手打']
 ['紫色' '大' '小孩' '用脚踩']
 ['紫色' '大' '成人' '用脚踩']
 ['黄色' '小' '成人' '用脚踩']
 ['黄色' '小' '小孩' '用脚踩']
 ['黄色' '大' '成人' '用手打']
 ['黄色' '大' '小孩' '用手打']
 ['黄色' '大' '小孩' '用脚踩']]
['爆炸' '不爆炸' '不爆炸' '不爆炸' '不爆炸' '爆炸' '爆炸' '爆炸' '不爆炸' '爆炸' '不爆炸' '爆炸']

另外一种:

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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值