scikit-learn入門ナビゲーション
5231 ワード
scikit-learnは非常に強力な機械学習ライブラリであり、多くの一般的な機械学習アルゴリズムの実現を提供している.
scikit-learnはpipでインストールできます.
ただし、このパッケージは比較的大きいので、pipを使用するインストールタイムアウトは、pypi上で自分のシステムに適した
インストールに成功したらpythonにインポートできます.
sklearnの公式ドキュメントの記述は非常に詳細で明確で、User Guideを読むことでsklearnを学ぶことをお勧めします.
Dataset Loading
sklearnはnumpyのマトリクスと量子化演算に基づいてサポートされ、numpyのようなインポートを採用することができます.
DataSetはnumpyのmatオブジェクトである.
またはlibsvmのインポートフォーマットを使用します.
sklearnパッケージには、いくつかのサンプルデータが組み込まれています.
有名なアンダーソンアヤメの花データセットを導入し、
データ読み込みの詳細については、User Guide-Dataset loading utilitiesを参照してください.
Supervised learning
LinearRegression
線形回帰は最も古典的なアルゴリズムです.
一般的な変種論理回帰:
その他のリニアモデルについては、User Guide-Linear Modelを参照してください.
Support Vector Machine
SVMは非常に使いやすい分類アルゴリズムであり、sklearnはSVC、NuSvc、LinearSVCの3種類のSVMに基づく分類器を提供した.
SVCはNuSVCと非常に類似しており、SVCはパラメータC(ペナルティファクタ、Cost)でフィット度を設定し、1から無限の値をとる.nuは、エラーサンプルが占める割合であり、0から1の値をとる.
SVCとNuSVCは
LinearSVCは
SVMの詳細については、User Guideを参照してください.
K Nearest Neighbors
K近接アルゴリズムは非常に簡単な分類アルゴリズムである.
distは、試験セットy内の各点のx内の最も近い隣接する距離を表示する.
indexは最近の隣人の下付き文字を表示します.
最近の隣人の数は
knnアルゴリズムの詳細については、User Guideを参照してください.
Naive Bayes
素朴ベイズアルゴリズムは古典的な確率分類アルゴリズムである.
詳細については、User Guideを参照してください
Decision Tree
sklearnは、決定ツリーの分類と回帰の実現を提供します.
回帰:
決定ツリーアルゴリズムの詳細については、User Guideを参照してください.
Random Forest
ランダム森林は複数の決定木を用いて分類される統合方法である(Ensemble Method)
Cross validation
クロス検証は予測精度を向上させる重要な方法であり、sklearnは対応するツールを提供し、データセットをトレーニングデータセットと検証データセットに分け、トレーニング効果を向上させる.
confindenceは各種分類の正確さ(自信)を代表している.
scikit-learnはpipでインストールできます.
pip install -U scikit-learn
ただし、このパッケージは比較的大きいので、pipを使用するインストールタイムアウトは、pypi上で自分のシステムに適した
.exe
または.whl
のファイルをダウンロードしてインストールすることができる.インストールに成功したらpythonにインポートできます.
import sklearn
sklearnの公式ドキュメントの記述は非常に詳細で明確で、User Guideを読むことでsklearnを学ぶことをお勧めします.
Dataset Loading
sklearnはnumpyのマトリクスと量子化演算に基づいてサポートされ、numpyのようなインポートを採用することができます.
import numpy
f = open('dataSet.txt')
dataSet = numpy.loadtxt(f)
DataSetはnumpyのmatオブジェクトである.
またはlibsvmのインポートフォーマットを使用します.
from sklearn.datasets import load_svmlight_file
X_train, y_train = load_svmlight_file("dataSet.txt")
X_train.todense() #
sklearnパッケージには、いくつかのサンプルデータが組み込まれています.
from sklearn import datasets
iris = datasets.load_iris()
print(iris.data)
有名なアンダーソンアヤメの花データセットを導入し、
iris.data
に特徴値を記憶し、iris.target
に分類ラベルを記憶した.データ読み込みの詳細については、User Guide-Dataset loading utilitiesを参照してください.
Supervised learning
LinearRegression
線形回帰は最も古典的なアルゴリズムです.
from sklearn import linear_model
train_x = [[0, 0], [1, 1]]
train_y = [0, 1]
test_x = [[0, 0.2]]
regr = linear_model.LinearRegression()
regr.fit(train_x, train_y)
print(regr.predict(test_x))
一般的な変種論理回帰:
from sklearn import linear_model
train_x = [[0, 0], [1, 1]]
train_y = [0, 1]
test_x = [[0, 0.2]]
regr = linear_model.LogisticRegression()
regr.fit(train_x, train_y)
print(regr.predict(test_x))
その他のリニアモデルについては、User Guide-Linear Modelを参照してください.
Support Vector Machine
SVMは非常に使いやすい分類アルゴリズムであり、sklearnはSVC、NuSvc、LinearSVCの3種類のSVMに基づく分類器を提供した.
SVCはNuSVCと非常に類似しており、SVCはパラメータC(ペナルティファクタ、Cost)でフィット度を設定し、1から無限の値をとる.nuは、エラーサンプルが占める割合であり、0から1の値をとる.
from sklearn import svm
train_x = [[0, 0], [1, 1]]
train_y = [0, 1]
clf = svm.SVC()
clf.fit(train_x, train_y)
print(clf.predict([0.9, 0.9])) from sklearn import svm
train_x = [[0, 0], [1, 1]]
train_y = [0, 1]
clf = svm.SVC()
clf.fit(train_x, train_y)
print(clf.predict([0.9, 0.9]))
SVCとNuSVCは
one-against-one
戦略を採用して多分類を行う.from sklearn import svm
train_x = [[0, 0], [1, 1], [2,2], [3, 3]]
train_y = [0, 1, 2, 3]
clf = svm.SVC(decision_function_shape='ovo')
clf.fit(train_x, train_y)
print(clf.predict([1.9, 1.9]))
LinearSVCは
one-against-rest
戦略を用いて多分類を行う.from sklearn import svm
train_x = [[0, 0], [1, 1], [2,2], [3, 3]]
train_y = [0, 1, 2, 3]
clf = svm.LinearSVC()
clf.fit(train_x, train_y)
print(clf.predict([1.9, 1.9]))
SVMの詳細については、User Guideを参照してください.
K Nearest Neighbors
K近接アルゴリズムは非常に簡単な分類アルゴリズムである.
from sklearn.neighbors import NearestNeighbors
import numpy as np
x = [[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]
y = [[0, 0], [-1, 2], [3,1]]
nbrs = NearestNeighbors(n_neighbors=3, algorithm='ball_tree').fit(x)
dist, index = nbrs.kneighbors(y)
print(dist)
print(index)
distは、試験セットy内の各点のx内の最も近い隣接する距離を表示する.
[[ 1.41421356 1.41421356 2.23606798]
[ 2.23606798 3. 3.16227766]
[ 1. 1. 2. ]]
indexは最近の隣人の下付き文字を表示します.
[[0 3 1]
[3 0 1]
[4 5 3]]
最近の隣人の数は
n_neighbors
のパラメータで指定する、algorithmのパラメータは検索アルゴリズムを指定し、「KDTree」または「BallTree」を選択することができる.knnアルゴリズムの詳細については、User Guideを参照してください.
Naive Bayes
素朴ベイズアルゴリズムは古典的な確率分類アルゴリズムである.
from sklearn import datasets
from sklearn.naive_bayes import GaussianNB
iris = datasets.load_iris()
gnb = GaussianNB()
gnb.fit(iris.data, iris.target)
y_pred = gnb.predict(iris.data)
y_proba= gnb.predict_proba(iris.data)
詳細については、User Guideを参照してください
Decision Tree
sklearnは、決定ツリーの分類と回帰の実現を提供します.
from sklearn import tree
x = [[0, 0], [1, 1]]
y = [0, 1]
clf = tree.DecisionTreeClassifier()
clf = clf.fit(x, y)
clf.predict([[2, 2]]) # array([1])
clf.predict_proba([[2., 2.]]) # array([[ 0., 1.]])
回帰:
from sklearn import tree
x = [[0, 0], [2, 2]]
y = [0.5, 2.5]
clf = tree.DecisionTreeRegressor()
clf = clf.fit(x, y)
clf.predict([[1, 1]]) # array([ 0.5])
決定ツリーアルゴリズムの詳細については、User Guideを参照してください.
Random Forest
ランダム森林は複数の決定木を用いて分類される統合方法である(Ensemble Method)
from sklearn.ensemble import RandomForestClassifier
train_x = [[0, 0], [1, 1], [2,2], [3, 3]]
train_y = [0, 1, 2, 3]
test_x = [0.9, 0.9]
clf = RandomForestClassifier(n_estimators=10)
clf = clf.fit(train_x, train_y)
clf.predict(test_x)
Cross validation
クロス検証は予測精度を向上させる重要な方法であり、sklearnは対応するツールを提供し、データセットをトレーニングデータセットと検証データセットに分け、トレーニング効果を向上させる.
from sklearn import cross_validation
from sklearn import svm
from sklearn import datasets
iris = datasets.load_iris()
clf = svm.SVC()
confindence = cross_validation.cross_val_score(clf, iris.data, iris.target, cv=5)
confindenceは各種分類の正確さ(自信)を代表している.