for i = 1 : num_class mid_res = res((res(:, end) == i), :); % 循环取出不同类别的样本 mid_size = size(mid_res, 1); % 得到不同类别样本个数 mid_tiran = round(num_size * mid_size); % 得到该类别的训练样本个数 P_train = [P_train; mid_res(1: mid_tiran, 1: end - 1)]; % 训练集输入 T_train = [T_train; mid_res(1: mid_tiran, end)]; % 训练集输出 P_test = [P_test; mid_res(mid_tiran + 1: end, 1: end - 1)]; % 测试集输入 T_test = [T_test; mid_res(mid_tiran + 1: end, end)]; % 测试集输出 end查找输出节点
时间: 2023-06-20 15:04:52 浏览: 203
在这段代码中,输出节点的数量应该是根据问题中的分类数目而决定的,即num_class。每个类别对应一个输出节点。在该循环中,每次循环取出一个类别的所有样本,计算该类别应该被分配到训练集中的样本数量mid_tiran(假设训练集和测试集的比例为1:1),然后将前mid_tiran个样本加入训练集,后面的样本加入测试集。其中,训练集的输入P_train是一个矩阵,每行代表一个样本的输入特征,列数为输入特征的维度;训练集的输出T_train是一个列向量,每行代表一个样本的分类标签;测试集的输入和输出同理。在该循环结束后,所有样本被分配到了训练集和测试集中。
相关问题
【问题描述】: 设线性表L = (a1 ,a2,a3,.…,an-1,an)采用带头结点的单链表保存,请设计一个空间复杂度为 0(1)且时间上尽可能高效的算法,重新排列 L 中的各结点,得到线性表S= (a1,an,a2,an-1,.…)。 【输入形式】:多组数据,每组第一行为n,表示链表的长度。接下来为链表中的元素。不超过5组数据。 【输出形式】:每组数据,输出重新排列后的序列。 【样例输入】 10 11 13 15 17 19 2 4 6 8 20 【样例输出】 11 20 13 8 15 6 17 4 19 2
思路:
1.首先将链表平分成两半,分别是A链表和B链表。
2.将B链表逆序,变成B'链表。
3.依次从A链表和B'链表中取出一个元素,交替放入新链表S中,直到A链表和B'链表都为空。
4.最后将S链表的头结点去掉,即为所求的新链表。
代码实现:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverse_list(head: ListNode) -> ListNode:
if not head or not head.next:
return head
pre, cur = None, head
while cur:
nxt = cur.next
cur.next = pre
pre, cur = cur, nxt
return pre
def reorder_list(head: ListNode) -> ListNode:
if not head or not head.next:
return head
slow, fast = head, head
while fast.next and fast.next.next:
slow = slow.next
fast = fast.next.next
mid = slow.next
slow.next = None
l1, l2 = head, reverse_list(mid)
dummy = ListNode(0)
cur = dummy
while l1 and l2:
cur.next = l1
l1 = l1.next
cur = cur.next
cur.next = l2
l2 = l2.next
cur = cur.next
if l1:
cur.next = l1
if l2:
cur.next = l2
return dummy.next
if __name__ == '__main__':
while True:
try:
n = int(input())
nums = list(map(int, input().split()))
nodes = [ListNode(num) for num in nums]
for i in range(n-1):
nodes[i].next = nodes[i+1]
head = nodes[0]
res = reorder_list(head)
while res:
print(res.val, end=' ')
res = res.next
print()
except:
break
```
阅读全文