Juliaで,n×m行列Xに,n次元の特徴量がm個格納されていて,これを,trainとvalidに分けたい. 要は,列をランダムにk個選んだn×k行列とn×(m-k)行列をつくりたい.
手っ取り早い方法がわかんないんだけど,いまのところ,暫定のマイベストプラクティスはこんな感じ.
using InvertedIndices using StatsBase function data_split(X, ratio) n, m = size(X) k = Int(floor(ratio*m)) idxs = sample(1:m, k, replace=false, ordered=true) X_train = X[:, idxs] X_valid = X[:, Not(idxs)] return X_train, X_valid end
教師データYも一緒にsplitしたいなら,こんな感じ.
using InvertedIndices using StatsBase function data_split(X, Y, ratio) n, m = size(X) k = Int(floor(ratio*m)) idxs = sample(1:m, k, replace=false, ordered=true) X_train = X[:, idxs] Y_train = Y[:, idxs] X_valid = X[:, Not(idxs)] Y_valid = Y[:, Not(idxs)] return X_train, Y_train, X_valid, Y_valid end
もっと良い方法があったら知りたい.