跨列随机化一半数据集

时间:2019-04-12 03:29:19

标签: r neural-network row

我有MMA搏动的数据集。

当前结构为

Fighter 1, Fighter 2, Winner
x             y          x 
x             y          x
x             y          x
x             y          x
x             y          x

我的问题是战斗机1 =获胜者,因此我的模型将被训练为战斗机1始终获胜,这是一个问题。

我需要能够随机将Fighter 1和Fighter 2换成一半的数据集,以使获胜者平均分配。

理想情况下,我会拥有

Fighter 1, Fighter 2, Winner
x            y         x
y            x         x
x            y         y
y            x         x
x            y         y

有没有一种方法可以在不影响行顺序的情况下跨列随机分配?

2 个答案:

答案 0 :(得分:1)

我假设您的xy是任意的,只是占位符。我将进一步假设您需要Winner列保持不变,只需要获胜者并不总是在第一列中。

样本数据:

set.seed(42)
x <- data.frame(
  F1 = sample(letters, size = 5),
  F2 = sample(LETTERS, size = 5),
  stringsAsFactors = FALSE
)
x$W <- x$F1
x
#   F1 F2 W
# 1  x  N x
# 2  z  S z
# 3  g  D g
# 4  t  P t
# 5  o  W o

随机选择一些行进行更改:

(ind <- sample(nrow(x), size = ceiling(nrow(x)/2)))
# [1] 3 5 4

这意味着我们希望3-5行会发生变化。

现在随机更改:

within(x, { tmp <- F1[ind]; F1[ind] = F2[ind]; F2[ind] = tmp; rm(tmp); })
#   F1 F2 W
# 1  x  N x
# 2  z  S z
# 3  D  g g
# 4  P  t t
# 5  W  o o

第1-2行仍将F1显示为W内部,而第3-5行则将F2显示为W内部。

答案 1 :(得分:-1)

我还发现此代码有效

<link rel="stylesheet" 
 href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" 
 integrity="sha384- 
 UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" 
 crossorigin="anonymous">  



<div id="boxIcon2">
<i class="fas fa-car"></i>
</div>