ウェブサイト検索

PythonのSciKit Learnチュートリアル


サイキットラーン

Scikit-learnはPython用の機械学習ライブラリです。SVM、勾配ブースティング、k-means、ランダムフォレスト、DBSCANなど、いくつかの回帰、分類、クラスタリングアルゴリズムを特徴としています。PythonのNumpyとSciPyと連携するために設計されています。scikit-learnプロジェクトは、David CournapeauによってGoogle Summer of Code(GSoC)プロジェクトとしてscikits.learnという名前で始まりました。この名前は、SciPyの別のサードパーティの拡張機能である「Scikit」から取られています。

PythonのScikit-learn

ScikitはPythonで書かれており(そのほとんどが)、いくつかのコアアルゴリズムはさらに優れたパフォーマンスを得るためにCythonで書かれています。Scikit-learnはモデルを構築するために使用されており、データの読み取り、操作、および要約には他により良いフレームワークがあるため、その使用はお勧めできません。これはオープンソースで、BSDライセンスの下で公開されています。

Scikit Learnをインストールする

Scikitは、あなたのデバイスにPython 2.7以上のプラットフォームとNumPY(1.8.2以上)およびSciPY(0.13.3以上)のパッケージが動作していることを前提としています。これらのパッケージがインストールされたら、インストールを進めることができます。pipインストールの場合は、ターミナルで以下のコマンドを実行してください:

pip install scikit-learn

もしcondaが好きなら、パッケージのインストールにcondaを使用することもできます。次のコマンドを実行してください:

conda install scikit-learn

Scikit-Learnを使用する

インストールが完了したら、次のようにインポートすることで、Pythonコードでscikit-learnを簡単に使用できます:

import sklearn

Scikit Learn データセットの読み込み

さあ、遊ぶためにデータセットを読み込むことから始めましょう。アイリスというシンプルなデータセットを読み込みます。これは花に関するデータセットで、花の異なる測定値についての150の観測値が含まれています。scikit-learnを使用してデータセットを読み込む方法を見てみましょう。

Import scikit learn
from sklearn import datasets
Load data
iris= datasets.load_iris()
Print shape of data to confirm data is loaded
print(iris.data.shape)

データの形状を見やすくするために印刷していますが、必要であれば全データを印刷することもできます。コードを実行すると、次のような出力が得られます:

Scikit Learn SVM - 学習と予測

データを読み込んだので、それを学習し、新しいデータに対して予測を試みましょう。そのためには、推定器を作成し、そのフィットメソッドを呼び出す必要があります。

from sklearn import svm
from sklearn import datasets
Load dataset
iris = datasets.load_iris()
clf = svm.LinearSVC()
learn from the data
clf.fit(iris.data, iris.target)
predict for unseen data
clf.predict([[ 5.0,  3.6,  1.3,  0.25]])
Parameters of model can be changed by using the attributes ending with an underscore
print(clf.coef_ )

これがこのスクリプトを実行したときに得られるものです:

Scikit Learn 線形回帰

scikit-learnを使用すると、さまざまなモデルを作成するのは非常に簡単です。最初に回帰のシンプルな例から始めましょう。

#import the model
from sklearn import linear_model
reg = linear_model.LinearRegression()
use it to fit a data
reg.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
Let's look into the fitted data
print(reg.coef_)

モデルを実行すると、同じ線上にプロットできるポイントが返されるはずです。

k-近傍法分類器

単純な分類アルゴリズムを試してみましょう。この分類器は、トレーニングサンプルを表現するためにボールツリーに基づくアルゴリズムを使用します。

from sklearn import datasets
Load dataset
iris = datasets.load_iris()
Create and fit a nearest-neighbor classifier
from sklearn import neighbors
knn = neighbors.KNeighborsClassifier()
knn.fit(iris.data, iris.target)
Predict and print the result
result=knn.predict([[0.1, 0.2, 0.3, 0.4]])
print(result)

分類器を実行して結果を確認しましょう。分類器は0を返すべきです。例を試してみましょう:

K-meansクラスタリング

これは最も単純なクラスタリングアルゴリズムです。集合は「k」個のクラスタに分割され、各観測値はクラスタに割り当てられます。これはクラスタが収束するまで反復的に行われます。次のプログラムでは、そのようなクラスタリングモデルを作成します:

from sklearn import cluster, datasets
load data
iris = datasets.load_iris()
create clusters for k=3
k=3
k_means = cluster.KMeans(k)
fit data
k_means.fit(iris.data)
print results
print( k_means.labels_[::10])
print( iris.target[::10])

プログラムを実行すると、リストに別々のクラスターが表示されます。上記のコードスニペットの出力は次のとおりです:

結論

このチュートリアルでは、Scikit-Learnを使うことでいくつかの機械学習アルゴリズムを簡単に扱えることがわかりました。回帰、分類、クラスタリングの例を見てきました。Scikit-Learnはまだ開発段階にあり、ボランティアによって開発・維持されていますが、コミュニティでは非常に人気があります。ぜひ、自分の例を試してみてください。

関連記事: