Python 如何删除具有条件的y_序列数组中的值百分比

Python 如何删除具有条件的y_序列数组中的值百分比,python,arrays,numpy,Python,Arrays,Numpy,我是Python新手,我有一个关于删除数组y_列中50%的值的问题,但只删除值为0的值 所以我使用train_test_split来创建x_test x_train y_test和y_train。在y_序列中,值0为5287倍,值1为422倍。 我想删除50%的y_列,其中值为0。所以y_列只有5287/2=2644倍的值0和422倍的值1 我想这样做是因为我有一个小的数据帧。我的随机森林模型只预测0而不是1。所以我想在y_列中取一个较小的值0。问题在于y_列是一个数组,而不是一个数据帧 定义X

我是Python新手,我有一个关于删除数组y_列中50%的值的问题,但只删除值为0的值

所以我使用train_test_split来创建x_test x_train y_test和y_train。在y_序列中,值0为5287倍,值1为422倍。 我想删除50%的y_列,其中值为0。所以y_列只有5287/2=2644倍的值0和422倍的值1

我想这样做是因为我有一个小的数据帧。我的随机森林模型只预测0而不是1。所以我想在y_列中取一个较小的值0。问题在于y_列是一个数组,而不是一个数据帧

定义X和Y,以“Schade_tussen_6_18_mnd”为目标

Y = np.array(df['Schade_tussen_6_18_mnd'])
X = df.drop('Schade_tussen_6_18_mnd', axis=1)
用于拆分我的数据:

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, stratify=Y)
我试过这个
Y\u train.drop(Y\u train.query('=0').sample(frac=0.5).index)
但是我得到了一个错误:numpy.ndarray“对象没有属性”drop


我希望输出是y_-train(264422),而不是y_-train(5287422)

实际上,不要自己这样做,而是使用类似的包

但是,以下是使用numpy执行此操作的示例:

import numpy as np

def make_fake_y(n_zeros, n_ones):
    y = np.array([0]*n_zeros +  [1]*n_ones)
    np.random.shuffle(y)
    return y 

def find_half_the_zeros(y):
    idx_0 = np.where(y==0)[0]
    np.random.shuffle(idx_0)
    idx_delete = idx_0[:idx_0.shape[0]//2]
    return idx_delete
例如:

>> y = make_fake_y(10,5)
>> y
array([0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0])
>> idx = find_half_the_zeros(y)
>> idx
array([14,  3,  6, 11, 12])
>> np.delete(y,idx)
array([0, 0, 1, 1, 1, 0, 0, 0, 1, 1])

实际上,不要自己做这件事,而是使用一个类似的包

但是,以下是使用numpy执行此操作的示例:

import numpy as np

def make_fake_y(n_zeros, n_ones):
    y = np.array([0]*n_zeros +  [1]*n_ones)
    np.random.shuffle(y)
    return y 

def find_half_the_zeros(y):
    idx_0 = np.where(y==0)[0]
    np.random.shuffle(idx_0)
    idx_delete = idx_0[:idx_0.shape[0]//2]
    return idx_delete
例如:

>> y = make_fake_y(10,5)
>> y
array([0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0])
>> idx = find_half_the_zeros(y)
>> idx
array([14,  3,  6, 11, 12])
>> np.delete(y,idx)
array([0, 0, 1, 1, 1, 0, 0, 0, 1, 1])