【发布时间】:2020-05-16 10:43:46
【问题描述】:
我在数据集中有 506 个点。我必须从这些数据中生成随机样本,例如我必须选择不替换的 303 个点,剩下的 203 个点我需要从这 303 个点中选择。
我编写了以下代码。
def generating_samples(input_data, target_data):
selected_rows = np.random.choice(len(input_data), 303)
replacing_rows = np.random.choice(selected_rows,203)
selected_columns = np.random.choice(3,13,1)
sample_data = input_data[selected_rows[:,None],selected_columns]
target_of_sample_data = target_data[selected_rows]
#replicating data
replicated_sample_data = sample_data[replacing_rows]
target_of_replicated_sample_data = target_data[replacing_rows]
#concatenating data
sampled_input_data = np.vstack(sample_data, replicated_sample_data)
target_of_sample_data = target_of_sample_data.reshape(-1,1)
target_of_replicated_sample_data = target_of_replicated_sample_data.reshape(-1,1)
sampled_target_data = np.vstack(target_of_sample_data,target_of_replicated_sample_data)
return sampled_input_data , sampled_target_data, selected_rows,selected_columns
def grader_samples(a,b,c,d):
length = (len(a)==506 and len(b)==506)
sampled = (len(a)-len(set([str(i) for i in a]))==203)
rows_length = (len(c)==303)
column_length= (len(d)>=3)
assert(length and sampled and rows_length and column_length)
return True
a,b,c,d = generating_samples(x, y)
grader_samples(a,b,c,d)
但在这方面出现以下错误。
IndexError Traceback (most recent call last)
<ipython-input-14-ca772632e834> in <module>
7 return True
8
----> 9 a,b,c,d = generating_samples(x, y)
10 grader_samples(a,b,c,d)
<ipython-input-13-bcf904f160e5> in generating_samples(input_data, target_data)
13
14 #replicating data
---> 15 replicated_sample_data = sample_data[replacing_rows]
16 target_of_replicated_sample_data = target_data[replacing_rows]
17
IndexError: index 391 is out of bounds for axis 0 with size 303
【问题讨论】:
-
replacing_rows是input_data的行索引。例如它可以包含第 500 行。sample_data有 303 行,所以如果你尝试访问sample_data中的第 500 行,你会得到一个IndexError
标签: python-3.x error-handling sampling