【发布时间】:2017-11-21 12:48:57
【问题描述】:
我在两个文本文件中获得了训练数据及其对应的标签(整数 1,2,...,9)。两个文本文件都是数字序列。
训练集中的前500个数字对应第一个数据点,后500个数字对应第二个数据点,以此类推
我想提取具有标签 2 或标签 3 的训练点子集。我的实现非常慢:
import numpy as np
ytrain_old = np.genfromtxt('TrainLabels.txt')
Xtrain_old = np.genfromtxt('Train.txt')
Xtrain = []
ytrain = []
for i in range(10000):
if (ytrain_old[i]==2) or (ytrain_old[i]==3):
ytrain.append(ytrain_old[i])
Xtrain.append([Xtrain_old[i*500:(i+1)*500]])
有什么更好的方法来做到这一点?实际上,我更愿意将其作为 pandas 数据框。
【问题讨论】:
-
你能解释一下你在
Xtrain[i*700:(i+1)*700]做什么(以及为什么)吗? -
哦,那应该是 Xtrain_old 而不是 Xtrain。我想要做的是:对于每个 2 或 3 的标签,我想访问相应的测试数据(即相应的 500 个数字)@MaxU
-
你能添加标签吗,你可以使用简单的 groupby 来做到这一点,即
ndf = pd.concat([Xtrain_old,ytrain_old],1)然后train = ndf.groupby('y_train_column_header').head(500)然后一个布尔索引train = train[train['y_train_column_header'].isin([2,3])]稍后你可以将它们拆分为 y_train 和 x_train。 -
谢谢@Bharath。我必须如何加载 .txt 文件才能使串联工作?使用 np.genfromtxt 不起作用。
-
你可以使用
pd.read_csv()会好很多。这可能会帮助stackoverflow.com/questions/21546739/…
标签: python pandas numpy machine-learning