機械学習/Pythonでデータ分析する次の一歩(機械学習ライブラリー、scikit-learn編)
をテンプレートにして作成
開始行:
*目次 [#jf18b28d]
#contents
*はじめに [#a3b569c5]
scikit-learnは機械学習ライブラリーです。
多くの機械学習手法を同じような方法で使うことができますの...
そこで、ここでは、その共通部分について説明し、scikit-lear...
*機械学習と予測モデル [#j09bc4c2]
機械学習では、データから''予測モデル''を学習します。
予測モデルへの入力は、一つだけとは限らず、一般的には複数...
予測モデルからの出力も、一般的に一つだけとは限りませんが...
そこで、予測モデルへの入力はベクトル [math]X[/math] と表...
訓練データに出力値 [math]y[/math] が与えられているものを'...
**教師付き学習 [#gbee4a0a]
教師付き学習では、入力 [math]X[/math] とそれに対応する出...
\[ y = f(X) \]
となる関数 [math]f[/math] を求めます。
この関数 [math]f[/math] が予測モデルです。
出力 [math]y[/math] がカテゴリー、ラベル、クラスといった...
出力 [math]y[/math] が数値(連続値)のとき、この問題を''...
**教師なし学習 [#ab63a04d]
教師なし学習は、入力 [math]X[/math] の集合 [math]\mathcal...
(正解となるグループはわかっていないが)データをいくつか...
*Pythonプログラムの書き方 [#v35d25fc]
**ライブラリーの読み込み [#jcd3ab0b]
ライブラリー名は ''sklearn'' です。
NumPyやpandasのサンプル・コードはライブラリー全体を読みま...
例えば、決定木のクラス sklearn.tree.DecisionTreeClassifie...
#geshi(python){{
from sklearn.tree import DecisionTreeClassifier
}}
**予測モデル学習器の生成 [#xc006ff2]
学習アルゴリズムのクラスのコンストラクターを使うと、デフ...
例えば、決定木の学習器を生成するには、次のようにします。
#geshi(python){{
model = DecisionTreeClassifier()
}}
学習アルゴリズムごとに独自の学習パラメーターがあり、コン...
例えば、木の深さ max_depth という学習パラメーターを 3 に...
#geshi(python){{
model = DecisionTreeClassifier(max_depth=3)
}}
各アルゴリズムの学習パラメーターについては、scikit-learn...
-[[API Reference:http://scikit-learn.org/stable/modules/c...
**予測モデルの学習 [#o07b01f7]
どの予測モデル学習器にも予測モデルを学習するためのfit関数...
教師付き学習の予測モデルを学習する場合、入力 [math]X[/mat...
#geshi(python){{
model.fit(X, y)
}}
教師なし学習の予測モデルを学習する場合、入力 [math]X[/mat...
#geshi(python){{
model.fit(X)
}}
入力 [math]X[/math] と出力 [math]y[/math] を用意する方法...
-[[Pythonでデータ分析する次の一歩(データ分析支援ライブラ...
-[[Pythonで決定木を使う>機械学習/Pythonで決定木を使う]] -...
**学習した予測モデルの評価 [#nd6d9a30]
どの予測モデル学習器にも学習した予測モデルを評価するため...
教師付き学習の予測モデルを評価する場合、入力 [math]X[/mat...
#geshi(python){{
model.score(X, y)
}}
教師なし学習の予測モデルを学習する場合、入力 [math]X[/mat...
#geshi(python){{
model.score(X)
}}
分類分析用の学習器のスコアは平均精度 (mean accuracy)、回...
*分類分析 [#j32309c9]
**決定木 [#w0c97b40]
決定木 (Decision Tree) 学習は、木構造の分類規則(決定木)...
#geshi(python){{
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
model.fit(X, y)
}}
学習パラメーターには、節の評価基準 criterion、木の深さ ma...
**ランダム・フォレスト (RF) [#ab683f82]
ランダム・フォレスト (Random Forest) は、たくさんの決定木...
#geshi(python){{
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X, y)
}}
学習パラメーターには、決定木と同じものに加えて、決定木の...
**勾配ブースティング (GB) [#u3447b99]
ランダム・フォレストはランダムにたくさんの決定木を作成し...
#geshi(python){{
from sklearn.ensemble import GradientBoostingClassifier
model = GradientBoostingClassifier()
model.fit(X, y)
}}
学習パラメーターには、ランダム・フォレストと同じものに加...
**サポート・ベクター・マシン (SVM, SVC) [#m78bfcf8]
SVC (Support Vector Classififier) は、境界線(面、超平面...
カーネル・トリックと呼ばれる方法で、線形分離不可能な問題...
もともとSVM (Support Vector Machine) と呼ばれていましたが...
#geshi(python){{
from sklearn.svm import SVC
model = SVC()
model.fit(X, y)
}}
学習パラメーターには、カーネルの種類 kernel、正則化パラメ...
カーネルによる独自のパラメーターもあります。
**ニューラル・ネットワーク (NN) [#d909282b]
人間の脳の神経回路網をモデルにしたニューラル・ネットワー...
#geshi(python){{
from sklearn.neural_network import MLPClassifier
model = MLPClassifier()
model.fit(X, y)
}}
学習パラメーターには、隠れ層のユニット数 hidden_layer_siz...
**ナイーブ・ベイズ (NB) [#t6eab5dc]
それぞれの説明変数が条件付き独立であることを仮定して、ベ...
#geshi(python){{
from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(X, y)
}}
学習パラメーターは特にありません。
説明変数が連続値で正規分布に従っていると仮定できる場合は...
**判別分析 (LDA) [#s114138e]
データの分布が正規分布に従っているものとして、データを二...
#geshi(python){{
from sklearn.discriminant_analysis import LinearDiscrimin...
model = LinearDiscriminantAnalysis()
model.fit(X, y)
}}
学習パラメーターには、最適化手法 solver などがあります。
**二項ロジスティック回帰分析 [#nf917add]
ロジスティック関数を用いてデータがクラスに所属する確率を...
出力が確率である予測モデルを学習する回帰問題として学習し...
#geshi(python){{
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X, y)
}}
学習パラメーターには、正則化手法 penalty、最適化手法 solv...
*回帰分析 [#hcc4e0bc]
**線形回帰 (OLS) [#r2438ce6]
最小二乗法 (Ordinary Least Squares) を使って線形和の式を...
#geshi(python){{
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)
}}
学習パラメーターには、予測モデルを作成する前に説明変数を...
**LARS [#p207be11]
最小角度回帰 (Least Angle Regression) を使って線形和の式...
#geshi(python){{
from sklearn.linear_model import LARS
model = LARS()
model.fit(X, y)
}}
学習パラメータは、線形回帰とほぼ同じです。
**Lasso回帰 [#qfdb0440]
線形和にL1正則化の項を加えた式を求めます。
L1正則化は係数をなるべく 0 にするよう係数の大きさにペナル...
#geshi(python){{
from sklearn.linear_model import Lasso
model = Lasso()
model.fit(X, y)
}}
学習パラメーターには、線形回帰と同じものに加えて、正則化...
**Ridge回帰 [#xd7b0fe7]
線形和にL2正則化の項を加えた式を求めます。
L2正則化は係数をなるべく 0 に近づけるよう係数の大きさにペ...
#geshi(python){{
from sklearn.linear_model import Ridge
model = Ridge()
model.fit(X, y)
}}
学習パラメーターには、Lasso回帰と同じものに加えて、最適化...
**回帰木 [#tba88353]
決定木と同じアルゴリズムを使って回帰を行います。
#geshi(python){{
from sklearn.tree import DecisionTreeRegressor
model = DecisionTreeRegressor()
model.fit(X, y)
}}
学習パラメーターは、分類用の決定木とほぼ同じです。
評価基準 criterion には、平均二乗誤差 mse、平均絶対誤差 m...
**ランダム・フォレスト (RF) [#f8517261]
回帰木をベースにしたランダム・フォレスト (Random Forest) ...
#geshi(python){{
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor()
model.fit(X, y)
}}
回帰木をベースにした学習パラメーターは、分類用のランダム...
評価基準 criterion は、回帰木と同じです。
**勾配ブースティング (GB) [#ve391ffe]
回帰木をベースにした勾配ブースティングを使って回帰を行い...
#geshi(python){{
from sklearn.ensemble import GradientBoostingRegressor
model = GradientBoostingRegressor()
model.fit(X, y)
}}
学習パラメーターは、分類用の勾配ブースティングとほぼ同じ...
評価基準 criterion は、回帰木と同じです。
**サポート・ベクター・マシン (SVM, SVR) [#h5a2ea7e]
サポート・ベクター・マシン (Support Vector Machine) を使...
分類用のSVCと区別するために、サポート・ベクター回帰 (Supp...
#geshi(python){{
from sklearn.svm import SVR
model = SVR()
model.fit(X, y)
}}
学習パラメーターは、分類用のサポート・ベクター・マシンと...
**ニューラル・ネットワーク (NN) [#n6f76060]
多層パーセプトロン (Multi-layer Perceptron) を使って回帰...
#geshi(python){{
from sklearn.neural_network import MLPRegressor
model = MLPRegressor()
model.fit(X, y)
}}
学習パラメーターは、分類用のニューラル・ネットワークとほ...
*クラスター分析 [#pd613872]
**k-平均法 (k-means) [#f0dcc483]
まず、[math]k[/math]個のクラスター中心をランダムに配置し...
それぞれのデータを最も近い中心のクラスターに入れ、それぞ...
#geshi(python){{
from sklearn.cluster import KMeans
model = KMeans()
model.fit(X)
}}
学習パラメーターには、クラスター数 n_clusters、初期化手法...
**スペクトラル・クラスタリング [#r7719c9c]
データ間の距離から類似度を求め、類似度行列を次元削減し、k...
#geshi(python){{
from sklearn.cluster import SpectralClustering
model = SpectralClustering()
model.fit(X)
}}
**凝集型クラスタリング [#m1a95183]
最も近いデータ(またはクラスター)とデータ(またはクラス...
これを繰り返します。
#geshi(python){{
from sklearn.cluster import AgglomerativeClustering
model = AgglomerativeClustering()
model.fit(X)
}}
**Birch [#r281b800]
クラスターの特徴を表す木を作成し、クラスタリングを行いま...
#geshi(python){{
from sklearn.cluster import Birch
model = Birch()
model.fit(X)
}}
**混合ガウス分布推定 (GMM) [#s4f3e483]
#geshi(python)){{
from sklearn.mixture import GaussianMixture
model = GaussianMixture()
mode.fit(X)
}}
**ベイジアン混合ガウス分布推定 (BGMM) [#jfc0f5a7]
#geshi(python)){{
from sklearn.mixture import BayesianGaussianMixture
model = BayesianGaussianMixture()
mode.fit(X)
}}
終了行:
*目次 [#jf18b28d]
#contents
*はじめに [#a3b569c5]
scikit-learnは機械学習ライブラリーです。
多くの機械学習手法を同じような方法で使うことができますの...
そこで、ここでは、その共通部分について説明し、scikit-lear...
*機械学習と予測モデル [#j09bc4c2]
機械学習では、データから''予測モデル''を学習します。
予測モデルへの入力は、一つだけとは限らず、一般的には複数...
予測モデルからの出力も、一般的に一つだけとは限りませんが...
そこで、予測モデルへの入力はベクトル [math]X[/math] と表...
訓練データに出力値 [math]y[/math] が与えられているものを'...
**教師付き学習 [#gbee4a0a]
教師付き学習では、入力 [math]X[/math] とそれに対応する出...
\[ y = f(X) \]
となる関数 [math]f[/math] を求めます。
この関数 [math]f[/math] が予測モデルです。
出力 [math]y[/math] がカテゴリー、ラベル、クラスといった...
出力 [math]y[/math] が数値(連続値)のとき、この問題を''...
**教師なし学習 [#ab63a04d]
教師なし学習は、入力 [math]X[/math] の集合 [math]\mathcal...
(正解となるグループはわかっていないが)データをいくつか...
*Pythonプログラムの書き方 [#v35d25fc]
**ライブラリーの読み込み [#jcd3ab0b]
ライブラリー名は ''sklearn'' です。
NumPyやpandasのサンプル・コードはライブラリー全体を読みま...
例えば、決定木のクラス sklearn.tree.DecisionTreeClassifie...
#geshi(python){{
from sklearn.tree import DecisionTreeClassifier
}}
**予測モデル学習器の生成 [#xc006ff2]
学習アルゴリズムのクラスのコンストラクターを使うと、デフ...
例えば、決定木の学習器を生成するには、次のようにします。
#geshi(python){{
model = DecisionTreeClassifier()
}}
学習アルゴリズムごとに独自の学習パラメーターがあり、コン...
例えば、木の深さ max_depth という学習パラメーターを 3 に...
#geshi(python){{
model = DecisionTreeClassifier(max_depth=3)
}}
各アルゴリズムの学習パラメーターについては、scikit-learn...
-[[API Reference:http://scikit-learn.org/stable/modules/c...
**予測モデルの学習 [#o07b01f7]
どの予測モデル学習器にも予測モデルを学習するためのfit関数...
教師付き学習の予測モデルを学習する場合、入力 [math]X[/mat...
#geshi(python){{
model.fit(X, y)
}}
教師なし学習の予測モデルを学習する場合、入力 [math]X[/mat...
#geshi(python){{
model.fit(X)
}}
入力 [math]X[/math] と出力 [math]y[/math] を用意する方法...
-[[Pythonでデータ分析する次の一歩(データ分析支援ライブラ...
-[[Pythonで決定木を使う>機械学習/Pythonで決定木を使う]] -...
**学習した予測モデルの評価 [#nd6d9a30]
どの予測モデル学習器にも学習した予測モデルを評価するため...
教師付き学習の予測モデルを評価する場合、入力 [math]X[/mat...
#geshi(python){{
model.score(X, y)
}}
教師なし学習の予測モデルを学習する場合、入力 [math]X[/mat...
#geshi(python){{
model.score(X)
}}
分類分析用の学習器のスコアは平均精度 (mean accuracy)、回...
*分類分析 [#j32309c9]
**決定木 [#w0c97b40]
決定木 (Decision Tree) 学習は、木構造の分類規則(決定木)...
#geshi(python){{
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
model.fit(X, y)
}}
学習パラメーターには、節の評価基準 criterion、木の深さ ma...
**ランダム・フォレスト (RF) [#ab683f82]
ランダム・フォレスト (Random Forest) は、たくさんの決定木...
#geshi(python){{
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X, y)
}}
学習パラメーターには、決定木と同じものに加えて、決定木の...
**勾配ブースティング (GB) [#u3447b99]
ランダム・フォレストはランダムにたくさんの決定木を作成し...
#geshi(python){{
from sklearn.ensemble import GradientBoostingClassifier
model = GradientBoostingClassifier()
model.fit(X, y)
}}
学習パラメーターには、ランダム・フォレストと同じものに加...
**サポート・ベクター・マシン (SVM, SVC) [#m78bfcf8]
SVC (Support Vector Classififier) は、境界線(面、超平面...
カーネル・トリックと呼ばれる方法で、線形分離不可能な問題...
もともとSVM (Support Vector Machine) と呼ばれていましたが...
#geshi(python){{
from sklearn.svm import SVC
model = SVC()
model.fit(X, y)
}}
学習パラメーターには、カーネルの種類 kernel、正則化パラメ...
カーネルによる独自のパラメーターもあります。
**ニューラル・ネットワーク (NN) [#d909282b]
人間の脳の神経回路網をモデルにしたニューラル・ネットワー...
#geshi(python){{
from sklearn.neural_network import MLPClassifier
model = MLPClassifier()
model.fit(X, y)
}}
学習パラメーターには、隠れ層のユニット数 hidden_layer_siz...
**ナイーブ・ベイズ (NB) [#t6eab5dc]
それぞれの説明変数が条件付き独立であることを仮定して、ベ...
#geshi(python){{
from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(X, y)
}}
学習パラメーターは特にありません。
説明変数が連続値で正規分布に従っていると仮定できる場合は...
**判別分析 (LDA) [#s114138e]
データの分布が正規分布に従っているものとして、データを二...
#geshi(python){{
from sklearn.discriminant_analysis import LinearDiscrimin...
model = LinearDiscriminantAnalysis()
model.fit(X, y)
}}
学習パラメーターには、最適化手法 solver などがあります。
**二項ロジスティック回帰分析 [#nf917add]
ロジスティック関数を用いてデータがクラスに所属する確率を...
出力が確率である予測モデルを学習する回帰問題として学習し...
#geshi(python){{
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X, y)
}}
学習パラメーターには、正則化手法 penalty、最適化手法 solv...
*回帰分析 [#hcc4e0bc]
**線形回帰 (OLS) [#r2438ce6]
最小二乗法 (Ordinary Least Squares) を使って線形和の式を...
#geshi(python){{
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)
}}
学習パラメーターには、予測モデルを作成する前に説明変数を...
**LARS [#p207be11]
最小角度回帰 (Least Angle Regression) を使って線形和の式...
#geshi(python){{
from sklearn.linear_model import LARS
model = LARS()
model.fit(X, y)
}}
学習パラメータは、線形回帰とほぼ同じです。
**Lasso回帰 [#qfdb0440]
線形和にL1正則化の項を加えた式を求めます。
L1正則化は係数をなるべく 0 にするよう係数の大きさにペナル...
#geshi(python){{
from sklearn.linear_model import Lasso
model = Lasso()
model.fit(X, y)
}}
学習パラメーターには、線形回帰と同じものに加えて、正則化...
**Ridge回帰 [#xd7b0fe7]
線形和にL2正則化の項を加えた式を求めます。
L2正則化は係数をなるべく 0 に近づけるよう係数の大きさにペ...
#geshi(python){{
from sklearn.linear_model import Ridge
model = Ridge()
model.fit(X, y)
}}
学習パラメーターには、Lasso回帰と同じものに加えて、最適化...
**回帰木 [#tba88353]
決定木と同じアルゴリズムを使って回帰を行います。
#geshi(python){{
from sklearn.tree import DecisionTreeRegressor
model = DecisionTreeRegressor()
model.fit(X, y)
}}
学習パラメーターは、分類用の決定木とほぼ同じです。
評価基準 criterion には、平均二乗誤差 mse、平均絶対誤差 m...
**ランダム・フォレスト (RF) [#f8517261]
回帰木をベースにしたランダム・フォレスト (Random Forest) ...
#geshi(python){{
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor()
model.fit(X, y)
}}
回帰木をベースにした学習パラメーターは、分類用のランダム...
評価基準 criterion は、回帰木と同じです。
**勾配ブースティング (GB) [#ve391ffe]
回帰木をベースにした勾配ブースティングを使って回帰を行い...
#geshi(python){{
from sklearn.ensemble import GradientBoostingRegressor
model = GradientBoostingRegressor()
model.fit(X, y)
}}
学習パラメーターは、分類用の勾配ブースティングとほぼ同じ...
評価基準 criterion は、回帰木と同じです。
**サポート・ベクター・マシン (SVM, SVR) [#h5a2ea7e]
サポート・ベクター・マシン (Support Vector Machine) を使...
分類用のSVCと区別するために、サポート・ベクター回帰 (Supp...
#geshi(python){{
from sklearn.svm import SVR
model = SVR()
model.fit(X, y)
}}
学習パラメーターは、分類用のサポート・ベクター・マシンと...
**ニューラル・ネットワーク (NN) [#n6f76060]
多層パーセプトロン (Multi-layer Perceptron) を使って回帰...
#geshi(python){{
from sklearn.neural_network import MLPRegressor
model = MLPRegressor()
model.fit(X, y)
}}
学習パラメーターは、分類用のニューラル・ネットワークとほ...
*クラスター分析 [#pd613872]
**k-平均法 (k-means) [#f0dcc483]
まず、[math]k[/math]個のクラスター中心をランダムに配置し...
それぞれのデータを最も近い中心のクラスターに入れ、それぞ...
#geshi(python){{
from sklearn.cluster import KMeans
model = KMeans()
model.fit(X)
}}
学習パラメーターには、クラスター数 n_clusters、初期化手法...
**スペクトラル・クラスタリング [#r7719c9c]
データ間の距離から類似度を求め、類似度行列を次元削減し、k...
#geshi(python){{
from sklearn.cluster import SpectralClustering
model = SpectralClustering()
model.fit(X)
}}
**凝集型クラスタリング [#m1a95183]
最も近いデータ(またはクラスター)とデータ(またはクラス...
これを繰り返します。
#geshi(python){{
from sklearn.cluster import AgglomerativeClustering
model = AgglomerativeClustering()
model.fit(X)
}}
**Birch [#r281b800]
クラスターの特徴を表す木を作成し、クラスタリングを行いま...
#geshi(python){{
from sklearn.cluster import Birch
model = Birch()
model.fit(X)
}}
**混合ガウス分布推定 (GMM) [#s4f3e483]
#geshi(python)){{
from sklearn.mixture import GaussianMixture
model = GaussianMixture()
mode.fit(X)
}}
**ベイジアン混合ガウス分布推定 (BGMM) [#jfc0f5a7]
#geshi(python)){{
from sklearn.mixture import BayesianGaussianMixture
model = BayesianGaussianMixture()
mode.fit(X)
}}
ページ名: