サーチ…


備考

scikit-learnは、Pythonで書かれたデータ解析のための汎用のオープンソースライブラリです。これは他のPythonライブラリに基づいています:NumPy、SciPy、matplotlib

scikit-learnは、さまざまな一般的な機械学習アルゴリズムの実装が含まれています。

scikit-learnのインストール

scikit-learnの現在の安定版には次のものが必要です:

  • Python(> = 2.6または> = 3.3)、
  • NumPy(> = 1.6.1)、
  • SciPy(> = 0.9)。

ほとんどのインストールの場合はpipのpythonパッケージマネージャのpythonとその依存関係のすべてをインストールすることができます。

pip install scikit-learn

しかし、Linuxシステムの場合、可能なビルドプロセスを回避するためにcondaパッケージマネージャを使用することが推奨されています

conda install scikit-learn

scikit-learnあることを確認するには、シェルで実行します:

python -c 'import sklearn; print(sklearn.__version__)'

WindowsとMac OSXのインストール:

CanopyAnacondaは、Windows用の大規模な科学的Pythonライブラリ、Mac OSX(Linuxにも適している)のほかに、最近のscikit-learnのバージョンを出荷しています。

クロスバリデーションを使用してクラシファイアをトレーニングする

アイリスデータセットの使用:

import sklearn.datasets
iris_dataset = sklearn.datasets.load_iris()
X, y = iris_dataset['data'], iris_dataset['target']

データは列車とテストセットに分割されます。これを行うには、 train_test_splitユーティリティ関数を使用して、 train_test_split train_size=0.75オプション(トレーニングセットにはデータの75%が含まれています)を使用してXy (データとターゲットベクトル)をランダムに分割します。

トレーニングデータセットは、 k最近傍の分類子に供給される 。クラシファイアのメソッドfitは、モデルをデータに適合させます。

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.75) 
from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors=3)
clf.fit(X_train, y_train)

最後に、テストサンプルの品質を予測する:

clf.score(X_test, y_test) # Output: 0.94736842105263153

1組のトレインとテストセットを使用することによって、データスプリットの任意の選択による分類器の品質の偏り推定を得ることができる。 クロスバリデーションを使用することにより、データの異なる列車/試験サブセットに分類器を適合させることができ、すべての精度結果に対して平均をとることができます。関数cross_val_score 、相互検証を使用して入力データに分類cross_val_score適合させます。使用する分割数(フォールド数)を入力することができます(下の例では5)。

from sklearn.cross_validation import cross_val_score
scores = cross_val_score(clf, X, y, cv=5)
print(scores)
# Output: array([ 0.96666667,  0.96666667,  0.93333333,  0.96666667,  1.        ])
print "Accuracy: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() / 2)
# Output: Accuracy: 0.97 (+/- 0.03)

パイプラインの作成

データのパターンを見つけることは、多くの場合、機能選択、正規化、分類などの一連のデータ処理ステップで進行します。 sklearnでは、これのためにステージのパイプラインが使用されています。

たとえば、次のコードは2つのステージからなるパイプラインを示しています。最初のものはフィーチャをスケールし、2番目のフィーチャは結果の拡張データセットに分類子を訓練します。

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier

pipeline = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=4))

パイプラインが作成されると、その特定の手順に応じて、通常のステージのように使用できます。ここでは、例えば、パイプラインはクラシファイアのように振る舞います。したがって、次のように使用できます。

# fitting a classifier
pipeline.fit(X_train, y_train)
# getting predictions for the new data sample
pipeline.predict_proba(X_test)

インタフェースと規約:

特別なクラスを使用して、データの操作が異なります。

クラスのほとんどは、次のグループのいずれかに属します。

  • 分類の問題を解決するための分類アルゴリズム( sklearn.base.ClassifierMixinからsklearn.base.ClassifierMixin
  • 連続変数を再構築する問題を解決するための回帰アルゴリズム( sklearn.base.RegressorMixinから派生したsklearn.base.RegressorMixin )(回帰問題)
  • データを前処理するデータ変換( sklearn.base.TransformerMixinからsklearn.base.TransformerMixin

データはに格納されnumpy.array S(しかしのような他のアレイ状オブジェクトpandas.DataFrameものに変換可能である場合にsが受け入れられるnumpy.array複数)

データ内の各オブジェクトは、一連の機能によって記述されます。一般的な取り決めでは、データサンプルは配列で表され、最初の次元はデータサンプルID、2番目の次元はフィーチャIDです。

import numpy
data = numpy.arange(10).reshape(5, 2)
print(data)

Output:
[[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]

上記のsklearn表記規則では、2つのフィーチャでそれぞれ記述される5つのオブジェクトが含まれています。

サンプルデータセット

テストを容易にするために、 sklearnsklearn.datasetsモジュールにいくつかのビルトインデータセットをsklearn.datasetsます。たとえば、Fisherの虹彩データセットを読み込みます。

import sklearn.datasets
iris_dataset = sklearn.datasets.load_iris()
iris_dataset.keys()
['target_names', 'data', 'target', 'DESCR', 'feature_names']

完全な説明、機能の名前、およびクラスの名前( target_names )を読むことができます。それらは文字列として格納されます。

私たちは、 datatargetフィールドに格納されているデータとクラスに興味があります。慣例により、それらはXおよびy

X, y = iris_dataset['data'], iris_dataset['target']
X.shape, y.shape
((150, 4), (150,))
numpy.unique(y)
array([0, 1, 2])

Xy形は、4つの特徴を持つ150のサンプルがあると言う。各サンプルは、0,1または2のいずれかのクラスに属します。

Xyは、分類子のfit()メソッドを呼び出すことで、分類子の学習に使用できるようになりました。


sklearn.datasetsモジュールで提供されるデータセットのサイズと使用目的の完全なリストは次のsklearn.datasetsです。

負荷説明サイズ使用法
load_boston() ボストンの住宅価格データセット 506 回帰
load_breast_cancer() 乳がんウィスコンシンのデータセット 569 分類(バイナリ)
load_diabetes() 糖尿病のデータセット 442 回帰
load_digits(n_class) 数字データセット 1797年分類
load_iris() アイリスデータセット 150 分類(マルチクラス)
load_linnerud() Linnerudデータセット 20 多変量回帰

注意してください (ソース: http : //scikit-learn.org/stable/datasets/)

これらのデータセットは、scikitで実装されたさまざまなアルゴリズムの動作をすばやく説明するのに便利です。しかし、実世界の機械学習タスクを代表するには小さすぎることがあります。

これらの組み込みの玩具サンプルデータセットにsklearn.datasetssklearn.datasetsは外部データセットをロードするユーティリティ関数も提供します:

  • load_mlcompリポジトリからサンプルデータセットを読み込むためのload_mlcomp (データセットを以前にダウンロードする必要があることに注意してください)。 ここでは使用例です。
  • フェイス検証(顔認識)に使用されるhttp://vis-www.cs.umass.edu/lfw/のワイルド(LFW)ペアデータセットのLabeled Facesを読み込むためのfetch_lfw_pairsおよびfetch_lfw_people 。このデータセットは200 MBを超えています。 ここでは使用例です。


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow