0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

scikit-learn 教師なし学習の覚え書き

Posted at

この記事の内容

scikit-learnに含まれている基本的な機械学習法の覚え書きです。簡易的な使用法の羅列ですので、ご容赦ください。

  • 教師なし学習 (この記事)
    • 主成分分析(PCA)
    • k-means
    • t-SNE
  • 教師あり学習 (以下のURLにて)
    • 単回帰分析
    • 重回帰分析
    • ロジスティック回帰 (二値分類)
    • ロジスティック回帰 (多値分類)
    • ランダムフォレスト法 (分類)
    • ランダムフォレスト法 (回帰)
    • サポートベクタマシン(SVM)
    • K近傍法 (K-NearestNeighbor)(分類)
    • K近傍法 (K-NearestNeighbor)(回帰)

データセットのインポート

import pandas as pd
from sklearn.datasets import load_iris

iris = load_iris()
df_iris = pd.DataFrame(data=iris.data,columns=iris.feature_names)

主成分分析 (PCA : Principal Component Analysis)

主成分分析とは、データの特徴量を相互に統計的に関連しないように座標軸を回転する時限削減の手法です。それぞれのデータの分散が最大になるような軸を作成します。

PCA() 引数 説明
n_components 圧縮後の次元数
copy デフォルトはTrue Falseの場合、変換するデータを上書きする
whiten デフォルトはFalse Trueの場合、変数間の相関をなくす処理を行う
svd_solver 'auto','full','arpack','randomized' 特異値分解のソルバ
random_state 乱数
from sklearn.decomposition import PCA

X = iris.data
y = iris.target

pca = PCA(n_components=3)
pca.fit(X)
X_aft = pca.transform(X)

固有値や寄与率などの算出は下記のリンクをご参考ください。

k-means法

K-means法は、非階層クラスター分析の一つで、複数回サイクルで最適なクラスターを探索します。まず、学習データを空間上にプロットし、各要素を任意のクラスター分だけランダムに振り分けます。クラスター内の重心を求め、その重心周りでクラスターを再定義します。重心の定義とクラスターのメンバーが変わらなくなるまでサイクルを回しクラスターを作成します。

KMeans() 引数 説明
n_clusters デフォルトは8 クラスタ数
max_iter デフォルトは300 繰り返し回数の最大
n_init デフォルトは10 初期の重心を選ぶ処理の実行回数
init 'k-means++','random'(デフォルトは'k-means++') 初期化の方法
tol デフォルトは0.0001 収束判定に用いる許容可能誤差
random_state 乱数
copy_x デフォルトはTrue メモリ内でデータを複製してから実行するか
n_jobs デフォルトは1 並列処理する場合の多重度
from sklearn.cluster import KMeans

X = iris.data
y = iris.target

kms = KMeans(n_clusters=3)
print(kms.fit_predict(X))

t-SNE

非線形次元削減法の一つで、特に可視化することに重きをおいた教師なし学習です。データの局所的な構造を捉え、広域なデータ構造も保ったまま解析が可能となっている。

TSNE() 引数 説明
n_components デフォルトは2 削減次元数
perplexity デフォルトは30 最近傍の数
early_exaggeration デフォルトは12.0 密集度合の設定
learning_rate デフォルトは200.0 t-SNEの学習率
n_iter デフォルトは1000 最適化の最大反復回数
random_state 乱数
n_jobs デフォルトは1 並列処理する場合の多重度
from sklearn.manifold import TSNE

X=iris.data

tsne = TSNE(n_components=2,random_state=0)
print(tsne.fit_transform(X).shape)

最後に

今回はscikit-learnに含まれている教師なし学習の使い方についてまとめました。

参考

Andreas C. Muller、Sarah Guido 「Pythonではじめる機械学習」(2017年 株式会社オライリー・ジャパン)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?