假设已有数据文件a.txt,写一段代码实现1.从文件中加载数据 2.对数据进行归一化 3.构造数据集提供器
时间: 2024-02-20 19:57:06 浏览: 64
以下是Python代码实现,实现1.从文件中加载数据 2.对数据进行归一化 3.构造数据集提供器:
```python
import numpy as np
# 从文件中加载数据,假设数据文件中每行是一个样本,每行的第一个数字是标签,后面是特征
def load_data(filename):
data = []
with open(filename, 'r') as f:
for line in f.readlines():
sample = line.strip().split(' ')
data.append([float(sample[0]), [float(x) for x in sample[1:]]])
return data
# 对数据进行归一化,将特征值缩放到[0, 1]之间
def normalize_data(data):
x = np.array([sample[1] for sample in data])
x_min = np.min(x, axis=0)
x_max = np.max(x, axis=0)
x_normalized = (x - x_min) / (x_max - x_min)
for i in range(len(data)):
data[i][1] = x_normalized[i]
return data
# 构造数据集提供器
def data_generator(data, batch_size, shuffle=True):
if shuffle:
np.random.shuffle(data)
batch_count = 0
while True:
batch_data = []
for i in range(len(data)):
batch_data.append(data[i])
batch_count += 1
if batch_count == batch_size:
batch_count = 0
yield batch_data
batch_data = []
if len(batch_data) > 0:
yield batch_data
# 加载数据并归一化
data = load_data('a.txt')
data = normalize_data(data)
# 构造数据集提供器,每次返回10个样本
data_provider = data_generator(data, batch_size=10)
# 使用数据集提供器
for i in range(3):
batch_data = next(data_provider)
print(batch_data)
```
其中,`load_data`函数从文件中加载数据,返回一个列表,每个元素为一个样本,包括标签和特征。`normalize_data`函数对数据进行归一化,将特征值缩放到[0, 1]之间。`data_generator`函数构造数据集提供器,每次返回`batch_size`个样本。最后,我们使用数据集提供器来获取数据。
阅读全文