いいえ、2 つのライブラリは、これら 2 つのコード スニペットに対して同じ結果をもたらしません。scikit-learn 関数は、ランダム順列を使用してデータをシャッフルし、データを目的の部分に分割します。SFrame.random_split
方法は異なります。指定された割合に基づいて、元のデータから行をランダムにサンプリングします。
それだけでなく、2 つのライブラリの乱数ジェネレーターが異なるため、ランダム状態とシードを同じ値に設定しても効果はありません。
これを GraphLab Create 1.7.1 と Scikit-learn 0.17 で確認しました。
import numpy as np
import graphlab as gl
from sklearn.cross_validation import train_test_split
sf = graphlab.SFrame(np.random.rand(10, 1))
sf = sf.add_row_number('row_id')
sf_train, sf_test = sf.random_split(0.6, seed=0)
df_train, df_test = train_test_split(sf.to_dataframe(),
test_size=0.4,
random_state=0)
sf_train
は:
+--------+-------------------+
| row_id | X1 |
+--------+-------------------+
| 0 | [0.459467634448] |
| 4 | [0.424260273035] |
| 6 | [0.143786736949] |
| 7 | [0.0871068666212] |
| 8 | [0.74631952689] |
| 9 | [0.37570258651] |
+--------+-------------------+
[6 rows x 2 columns]
次のようになりdf_train
ます。
row_id X1
1 1 [0.561396445174]
6 6 [0.143786736949]
7 7 [0.0871068666212]
3 3 [0.397315891635]
0 0 [0.459467634448]
5 5 [0.033673713722]
間違いなく同じではありません。