机器学习中基础数据分割成一部分训练和一部分学习的数据

#第二版
注释:加#是注释或者屏蔽不需要
def tain_custom_split(in_data,in_target,test_size):
#根据下面的需求
‘’’
将数据集按照test_size指定的比例进行分割
:param in_data:
:param in_target:
:param test_size: 是个小数,表示比例
:return:
‘’’
#计算总体数据的长度
data_len = len(in_data)
#就是把数据分为训练和学习的数据
data_num = data_len - int(data_len*test_size)
#把训练的数据建立一个空列表,存放用于训练的数据
train_data_index = []
#因为索引值是相同的所以,直接用上面的就可以了
# train_target_index = []

# test_data_index =   []
# test_target_index = []

#不确定循环多少次,所以用while True
while True:
    #生成in_data长度的随机数,一次拿出来一个数
    c_index = np.random.randint(1,data_len,1)[0]
    # c_value = in_data[c_index]
    #如果拿出来的索引值不在train_data_index里面就直接追加在train_data_index
    if c_index not in train_data_index:
        train_data_index.append(c_index)
        # train_target_index.append(in_target[c_index])

    #这个作为两个分界点的
    if len(train_data_index) == data_num:
        break
#用枚举的方式进行求出所有的索引值
all_index = [i for i in range(data_len)]
#
test_data_index = [i for i in all_index if i not in train_data_index]
# test_target_index = [w for w in all_index if w not in test_target_index]
#这个直接通过索引可以拿出对应的数据
return in_data[train_data_index],in_data[test_data_index],in_target[train_data_index],in_target[test_data_index]

in_data = np.array([1,2,3,4,5,6,7,8,9,10])
#索引奇数是1,索引偶数是0
in_target = np.array([1,0,1,0,1,0,1,0,1,0])
#函数的调用
train_data,test_data,train_target,test_target = tain_custom_split(in_data, in_target, 0.25)

print(train_data)
print(test_data)

print(train_target)
print(test_target)

猜你喜欢

转载自blog.csdn.net/weixin_44274975/article/details/88697131