kakakakakku blog

Weekly Tech Blog: Keep on Learning!

iris データセットを libsvm フォーマットにする : scikit-learn の dump_svmlight_file()

scikit-learndatasets モジュールの中に libsvm フォーマットのデータセットを扱う関数がある.libsvm フォーマットは以下のフォーマットでデータセットを表現し,1番左にラベル(教師データ)を持つ.例えば Amazon SageMaker の組み込みアルゴリズム XGBoost でもサポートされている.

<label> <index1>:<value1> <index2>:<value2> ...

以下のサイトには libsvm フォーマットで多種多様なデータセットが公開されている.

www.csie.ntu.edu.tw

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-learndump_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')

scikit-learn.org

実行後に 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

関連記事

kakakakakku.hatenablog.com