机器学习中基础数据分割成一部分训练和一部分学习的数据
程序员文章站
2022-03-27 09:27:03
...
#第二版
注释:加#是注释或者屏蔽不需要
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)