所以我被困在解决这个问题上,我有这个电子邮件ID的数据和它们各自的值为0和1(逻辑回归中使用的相应标记值)。数据如下:
input_x = np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
input_y = np.array([0,1,0,0,1,1,1,0,0,0,0,1,0,1,0])
现在我想将这些数据分成两个集合,一个集合中包含所有0的值和相应的“INPUT_x”值,而另一个集合中包含所有1的值和对应的“INPUT_x”值。为此,我创建了以下函数:
def split_data(x,y):
shpx = x.shape[0]
shpy = y.shape[0]
neg_data = 0
pos_data = 0
for i in range(shpy):
if y[i] == 0:
neg_data = neg_data + 1
else:
pos_data = pos_data + 1
print(f"Number of negative (0) values = {neg_data}")
print(f"Number of positive (1) values = {pos_data}")
emp_neg_data_x = np.zeros(neg_data)
emp_neg_data_y = np.zeros(neg_data)
emp_pos_data_x = np.zeros(pos_data)
emp_pos_data_y = np.zeros(pos_data)
for j in range(neg_data):
for k in range(shpx):
if y[k] == 0:
emp_neg_data_x[j] = x[j]
emp_neg_data_y[j] = 0
else:
pass
for m in range(pos_data):
for n in range(shpx):
if y[n] == 0:
emp_pos_data_x[m] = x[m]
emp_pos_data_y[m] = 1
else:
pass
return emp_neg_data_x,emp_neg_data_y,emp_pos_data_x,emp_pos_data_y
其中参数x&y是输入数组。在运行此函数时,我得到的结果如下:
Number of negative (0) values = 9
Number of positive (1) values = 6
[1. 2. 3. 4. 5. 6. 7. 8. 9.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[1. 2. 3. 4. 5. 6.]
[1. 1. 1. 1. 1. 1.]
emp_neg_data_y和emp_pos_data_y给出了正确的值,但其他两个数组只是输出排序后的索引值,而不是0和1对应的Email_IDx/Input_x的值。您能帮我解决一下吗?(我猜循环中有问题,但我被卡住了…)
1条答案
按热度按时间k5hmc34c1#
首先制作一本x和y的词典:
创建您的列表并打印:
产出: