scikit-learn の datasets
モジュールの中に libsvm フォーマットのデータセットを扱う関数がある.libsvm フォーマットは以下のフォーマットでデータセットを表現し,1番左にラベル(教師データ)を持つ.例えば Amazon SageMaker の組み込みアルゴリズム XGBoost でもサポートされている.
<label> <index1>:<value1> <index2>:<value2> ...
以下のサイトには libsvm フォーマットで多種多様なデータセットが公開されている.
libsvm フォーマット例
例えば iris データセット(アヤメ)に以下のサンプルデータセットがあったとする.Label
は3種類ある.
0
=setosa
(ヒオウギアヤメ)1
=versicolor
(ハナショウブ)2
=virginica
(カキツバタ)
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | Label |
---|---|---|---|---|
5.1 | 3.5 | 1.4 | 0.2 | 0 |
4.9 | 3.0 | 1.4 | 0.2 | 0 |
4.7 | 3.2 | 1.3 | 0.2 | 0 |
サンプルデータセットを libsvm フォーマットにすると以下となる.
0 0:5.1 1:3.5 2:1.4 3:0.2 0 0:4.9 1:3 2:1.4 3:0.2 0 0:4.7 1:3.2 2:1.3 3:0.2
scikit-learn dump_svmlight_file()
関数
scikit-learn を使って簡単に iris データセット(アヤメ)をセットアップできるため「特徴量」と「ラベル」を取得して,同じく scikit-learn の dump_svmlight_file()
関数をさっそく試す.最終的に iris-libsvm
ファイルに書き出す.コードはシンプルに書ける!
from sklearn.datasets import dump_svmlight_file from sklearn.datasets import load_iris iris = load_iris() # 特徴量 x = iris.data # ラベル y = iris.target dump_svmlight_file(x, y, 'iris-libsvm')
実行後に head -n 50 iris-libsvm
コマンドを実行して書き出した iris-libsvm
ファイルを確認すると,期待通りに libsvm フォーマットになっていた.
0 0:5.1 1:3.5 2:1.4 3:0.2 0 0:4.9 1:3 2:1.4 3:0.2 0 0:4.7 1:3.2 2:1.3 3:0.2 0 0:4.6 1:3.1 2:1.5 3:0.2 0 0:5 1:3.6 2:1.4 3:0.2 0 0:5.4 1:3.9 2:1.7 3:0.4 0 0:4.6 1:3.4 2:1.4 3:0.3 0 0:5 1:3.4 2:1.5 3:0.2 0 0:4.4 1:2.9 2:1.4 3:0.2 0 0:4.9 1:3.1 2:1.5 3:0.1 0 0:5.4 1:3.7 2:1.5 3:0.2 0 0:4.8 1:3.4 2:1.6 3:0.2 0 0:4.8 1:3 2:1.4 3:0.1 0 0:4.3 1:3 2:1.1 3:0.1 0 0:5.8 1:4 2:1.2 3:0.2 0 0:5.7 1:4.4 2:1.5 3:0.4 0 0:5.4 1:3.9 2:1.3 3:0.4 0 0:5.1 1:3.5 2:1.4 3:0.3 0 0:5.7 1:3.8 2:1.7 3:0.3 0 0:5.1 1:3.8 2:1.5 3:0.3 0 0:5.4 1:3.4 2:1.7 3:0.2 0 0:5.1 1:3.7 2:1.5 3:0.4 0 0:4.6 1:3.6 2:1 3:0.2 0 0:5.1 1:3.3 2:1.7 3:0.5 0 0:4.8 1:3.4 2:1.9 3:0.2 0 0:5 1:3 2:1.6 3:0.2 0 0:5 1:3.4 2:1.6 3:0.4 0 0:5.2 1:3.5 2:1.5 3:0.2 0 0:5.2 1:3.4 2:1.4 3:0.2 0 0:4.7 1:3.2 2:1.6 3:0.2 0 0:4.8 1:3.1 2:1.6 3:0.2 0 0:5.4 1:3.4 2:1.5 3:0.4 0 0:5.2 1:4.1 2:1.5 3:0.1 0 0:5.5 1:4.2 2:1.4 3:0.2 0 0:4.9 1:3.1 2:1.5 3:0.2 0 0:5 1:3.2 2:1.2 3:0.2 0 0:5.5 1:3.5 2:1.3 3:0.2 0 0:4.9 1:3.6 2:1.4 3:0.1 0 0:4.4 1:3 2:1.3 3:0.2 0 0:5.1 1:3.4 2:1.5 3:0.2 0 0:5 1:3.5 2:1.3 3:0.3 0 0:4.5 1:2.3 2:1.3 3:0.3 0 0:4.4 1:3.2 2:1.3 3:0.2 0 0:5 1:3.5 2:1.6 3:0.6 0 0:5.1 1:3.8 2:1.9 3:0.4 0 0:4.8 1:3 2:1.4 3:0.3 0 0:5.1 1:3.8 2:1.6 3:0.2 0 0:4.6 1:3.2 2:1.4 3:0.2 0 0:5.3 1:3.7 2:1.5 3:0.2 0 0:5 1:3.3 2:1.4 3:0.2