Python

高度な活性化関数PReLU

今回は高度な活性化関数のPReLUについて解説と実験します。 目次: 1.PReLUとは 2.KerasのPReLU 3.コード・実験 (ReLU vs PReLU) 4.まとめ PReLUとは PReLU は、Parametric Rectified Linear Unitの略称で、ReLUと似ていますが、負のアウトプットがあります。インプットが閾値よりも少ない度合に応じて、負の値を出力するようになっています。特に深い階層において過学習を防ぐ効果があると言われています。プラスとマイナスのどちらにも勾配があるため、学習効率が良いと言われているようです。 f(x) = alphas * x for x < 0 alphasはxと同じ行列を持つ学習対象の配列です。 PreLUの論文:Microsoft Research Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification https://arxiv.org/abs/1502.01852   2.Kerasの高度な活性化関数のPReLU keras.layers.PReLU(alpha_initializer=’zeros’, alpha_regularizer=None, alpha_constraint=None, shared_axes=None) alpha_initializer:重みを初期化する関数。 alpha_regularizer:重みを正則化する関数。 alpha_constraint:重みに対する制約。 shared_axes:活性化関数で共有する学習パラメータの軸。 出力のshapeは入力のshapeと同じです。   3.コード・実験 (ReLU vs PReLU) 概要:データセット:MNIST 60,000の学習データと10,000のテストデータ(28 x …

高度な活性化関数PReLU Read More »

クラスタリングのアルゴリズム評価するFMI( Fowlkes-Mallows Index)

前回の記事はアルゴリズム評価を解説しました。 今回はクラスタリングのアルゴリズム評価するFMIを解説します。 FMI (Fowlkes-Mallows index)とは The Fowlkes-Mallows 指標 または、Fowlkes-Mallows スコアはクラスタリングのアルゴリズム評価する方法です。2つのクラスタリングアルゴリズムの結果間の類似性を判断するために使用されるこの方法。さらに、クラスタリングアルゴリズムの結果と実際のラベルも使われます。FMIの形式は下記になります。 TPは真陽性の数です。つまり、真のラベルと予測ラベルの両方で同じクラスターに属するポイントの数です。 FPはFalse Positiveの数です。予測ラベルではなく、真のラベルの同じクラスターに属するポイントの数です。 FNはFalse Negativeの数です。真のラベルではなく、予測ラベルの同じクラスター内です。 スコアの範囲は0〜1です。高い値は、2つのクラスター間の類似性が高いと示します。 今回は、ラベルがあるクラスタリング方法の評価をしていきます。 FMIのサンプル データセット:digitデータ 8×8の画像が1797枚(0〜9のラベル) クラスターアルゴリズム: K-Means, MeanShift モデル評価:FMI (Fowlkes-Mallows index) ライブラリの読み込む import numpy as np import pandas as pd import os import seaborn as sns import matplotlib.pyplot as plt from tqdm import tqdm_notebook from sklearn import datasets from sklearn.cluster import KMeans …

クラスタリングのアルゴリズム評価するFMI( Fowlkes-Mallows Index) Read More »

密度ベースのOPTICSクラスター

  前回の記事はk-means++, x-meansなどのクラスター分析を解説しました。 今回は密度ベースのOPTICSクラスターを解説します。 OPTICSクラスターとは OPTICS (Ordering Points To Identify the Clustering Structure)は密度ベースのクラスター分析(Density-based Clustering)の手法の一つです。ポイントが集中しているエリアおよび空または疎なエリアによって分離されているエリアを検出します。このアルゴリズムは、空間位置および指定された近傍数までの距離のみに基づいてパターンを自動的に検出します。DBSCANと似ているアルゴリズムになります。そのためクラスター数を決める必要がないアルゴリスムになります。 DBSCAN と OPTICSの検索距離 DBSCAN では、3つの点が存在しています。クラスターの中心、クラスターから到達できるもの、そしてノイズになります。特定のポイントからの検索距離の範囲内でクラスター内にない場合は、そのポイントにはノイズとして他のクラスターだとマークが付けられます。そのためクラスタリングといいつつ外れているものも検出することになります。 OPTICS の場合、検索距離は中心距離と比較される最大距離として扱われます。マルチスケール OPTICS は、最大到達可能性距離の概念を使用します。この距離は、あるポイントから、検索によってまだ訪問されていない最も近いポイントまでの距離です。 sklearn.cluster.cluster_optics_dbscanでOPTICSクラスターを作成します。scikit-learn 0.21.3が必要です。 pip install -U scikit-learn ライブラリのロード %matplotlib inline from sklearn.cluster import OPTICS, cluster_optics_dbscan import matplotlib.gridspec as gridspec import matplotlib.pyplot as plt import numpy as np サンプルを作成 np.random.seed(0) n_points_per_cluster = 250 C1 …

密度ベースのOPTICSクラスター Read More »

Pythonの正規表現【まとめと例】

今回の記事は正規表現と例についてをまとめします。 正規表現とは 文字列の集合を一つの文字列で表現する方法です。英語では、“regular expressions”(REs や regexes または regex patterns)と呼ばれています。文字列からe-mailや電話番号の検索、抽出、置換ができます。   正規表現で使用する特殊文字 正規表現は、いくつかの特別な文字“メタ文字”によって表現されます。例えば、「$」には、文字列の末尾という意味合いがあります。   メタ文字 メタ文字 説明 指定例 合致する 合致しない . 改行以外の任意の一文字 a.c abc ac abbc ^ 文字列の先頭 ^ab abc zab $ 文字列の末尾 ab$ zab abc * 直前の文字の0回以上の繰り返し ab* a ab abb aa ac + 直前の文字の1回以上の繰り返し ab+ ab abb a ? 直前の文字の0回または1回 ab? a ab abb …

Pythonの正規表現【まとめと例】 Read More »

スペクトラルクラスタリングのパラメータ解説

  以前の記事はスペクトラルクラスタリングについて説明しました。スペクトラルクラスタリングとは、クラスタリングの機械学習の方法のうち、教師なし学習に分類されます。スペクトラルクラスタリングの詳細はこちらです。   今回の記事はスペクトラルクラスタリングのパラメータ設定を説明します。 Scikit-learnのライブラリのパラメータを説明していきます。   class sklearn.cluster.SpectralClustering(n_clusters=8, eigen_solver=None, random_state=None, n_init=10, gamma=1.0, affinity=’rbf’, n_neighbors=10, eigen_tol=0.0, assign_labels=’kmeans’, degree=3, coef0=1, kernel_params=None, n_jobs=None)   先ず、スペクトラルクラスタリングの例を作成します。   from sklearn import datasets   # データ作成 X,z = datasets.make_blobs(n_samples=5000,                           n_features=2,                           centers=15,                           cluster_std=1.2,                           center_box=(-10.0, 10.0),                           shuffle=True,                           random_state=111                           )   # データの整形 sc=preprocessing.StandardScaler() sc.fit(X) X_norm=sc.transform(X)   …

スペクトラルクラスタリングのパラメータ解説 Read More »

決定木分析のパラメータ解説

前回の記事は決定木の特徴とアルゴリズムを説明しました。今回の記事は決定木のパラメータ設定を説明します。決定木の紹介はこちらです。 Scikit-learnのライブラリのパラメータを説明していきます。 class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, class_weight=None, presort=False)[source]   from sklearn.datasets import load_iris from sklearn import tree   clf = tree.DecisionTreeClassifier(criterion=’gini’,                                   splitter=’best’,                                   max_depth=4,                                   min_samples_split=3,                                   min_samples_leaf=1,                                   min_weight_fraction_leaf=0.0,                                   max_features=4,                                   random_state=None,                                   max_leaf_nodes=8,                                   min_impurity_split=1e-07,                                   class_weight=’balanced’,                                   presort=False)   iris = load_iris() …

決定木分析のパラメータ解説 Read More »

Pythonトップライブラリ2018

Pythonは、学習初期でも先人の作ったライブラリを利用することで、高速に開発が可能になります。 Pythonライブラリを管理する PyPi.org では、現在 100万以上のライブラリが公開され、現在も増加中です。 前回の記事は2018年の大人気のライブラリを紹介します。   年末でKdnuggetsがGithubの「星」と投稿者の人数とコメント数からトップ15のライブラリを発表しました。下記の図はGithubの「星」と投稿者の人数で表します。ては、ライブラリを軽いに紹介します。 1 – TensorFlow (投稿者 – 1757, コメント数 – 25756, 星 – 116765) Googleの機械学習/ディープラーニング/ネットワークライブラリです。柔軟なアーキテクチャにより、1つのAPIを使用してデスクトップ、サーバー、またはモバイルデバイスの1つ以上のCPUまたはGPUに計算を展開できます。またコードはやや書きにくいのが特徴になります。PyTorchおよびChainerの利点はDefine by Run(動的計算グラフ)と呼ばれる特徴です。Define by Runは入力データのサイズや次元数に合わせてニューラルネットワークの形や計算方法を変更することができます。       2 – pandas (投稿者  – 1360, コメント数 – 18441, 星 – 17388) 機械学習やディープラーニングの前処理のために、データの集計をするライブラリになります。数値や時系列のデータの操作や、データ構造をいじったりすることができます。また最近では、可視化も可能になってきています。     3 – scikit-learn (投稿者 – 1218, コメント数 – 23509, 星 – 32326) NumPy, SciPy や Matplotlib と互換性を持つように開発されてクラスタリングや回帰、分類器、次元圧縮、データの前処理をはじめとする、機械学習のアルゴリズムを幅広く実装しているライブラリです。   …

Pythonトップライブラリ2018 Read More »

なぜpythonはデータサイエンスや機械学習に適しているのですか?

前回の記事「データサイエンスのプロダクションの4つの失敗理由」について話しました。データは新たな燃料といわれています。データが燃料であれば、人工知能や機械学習などのデータ科学ツールです。今回はデータサイエンスや機械学習の重要な武器としてpythonを紹介していきます。 データ科学と機械の学習分野で最も適しているツールはどのツールですか?という質問は簡単な質問ではありません。目的、環境、ユーザースキルに合わることを考える事が必要です。KDnuggets 2018 pollのデータサイエンティストの調査からは下記のグラフを表しています。   Pythonはより多くの人気を集め、データ科学者にとっての主要なプログラム言語になります。Tensorflowという深層学習フレームワークを作成したGoogleがこのフレームワークを作成しました。FacebookやYahooでも用いられています。 Pythonには、データサイエンスツールのトップへのスピンアップを促進する他の利点があります。 これは、サービスプロバイダーとしてのプラットフォームだけでなく、ほとんどのクラウドとうまく統合されています。 並列コンピューティングのマルチプロセッシングをサポートすることで、データサイエンスと機械学習における大規模なパフォーマンスを確保するという明確な利点もあります。 Pythonは、C / C ++で書かれたモジュールでも拡張できます。   なぜpythonはデータサイエンスや機械学習に適しているのですか? 簡単に学べるPythonの最も魅力的な要素は、この言語を学ぶことを目指す人は誰でも簡単かつ迅速に学習できることです。 Rのような他のデータサイエンス言語と比較すると、Pythonはわかりやすい構文を促進することにより、可読性が高いのが利点です。 スケールアップRのような他の言語と比較すると、Pythonはスケーラブルな言語として浮上してリードを確立しており、MatlabやStataのような他の言語より高速です。 Pythonのスケーラビリティは、Pythonに移行したYouTubeの場合のように、問題を解決するための柔軟性にあります。 Pythonは、さまざまな業界のさまざまな用途やあらゆる種類のアプリケーションの迅速な開発に適しています。 ライブラリPythonを推進する重要な要素は、利用できるさまざまなデータ科学/データ分析ライブラリです。 Pandas、StatsModels、NumPy、SciPy、Scikit-Learnは、データサイエンスの分野でよく知られているライブラリの一部です。 Pythonは、ライブラリが時間の経過と共に成長しているため、これで終わることはありません。 1年前の制約だと思ったことは、新しく問題に対処してソリューションをPythonがうまく扱うことになりました。 Pythonコミュニティ Pythonの驚異的な上昇の理由の1つは、そのコミュニティに起因するものです。 Pythonがデータ科学コミュニティにその範囲を広げるにつれ、ますます多くのボランティアがデータサイエンスライブラリを作成しています。 これは、今度は、最も現代的なツールを作成し、Pythonで処理する方法を導いています。広く普及しているコミュニティは、コーディングの問題を解決したいと望む人に簡単にアクセスできるようにしています。 グラフィックスと視覚化Pythonにはさまざまな視覚化オプションがあります。 Matplotlibは、Seaborn、pandas plotting、ggplotなどの他のライブラリが構築された堅実な基盤を提供します。 ビジュアライゼーションパッケージは、優れたデータ感覚、チャートの作成、グラフィカルプロット、ウェブ対応のインタラクティブプロットの作成を支援します。 Pythonは機械学習のツールですか?データサイエンスに関しては、機械学習はデータから最大限の価値を引き出すために使用される重要な要素の1つです。データサイエンスツールとしてのPythonを使用すると、機械学習の基礎を探ることが簡単かつ効果的になります。簡単に言えば、機械学習は統計、数学的最適化、確率に関するものです。これは、利用者が「分析」を簡単に行うことができるように、最も好ましい機械学習ツールになっています。任意の数学関数に名前を付けると、要件を満たすPythonパッケージがあります。数値的線形代数のNumpy、凸最適化のCVXOPT、一般的な科学計算のためのScipy、記号代数のSymPy、PYMC3、統計モデリングのStatsmodelがあります。ロジスティック回帰と線形回帰を含む機械学習アルゴリズムの基本を把握することで、シキット学習ライブラリを使用して機械学習システムを予測用に簡単に実装することができます。 Keras、Theano、TensorFlowなどのライブラリを使用して、中立的なネットワークや深い学習のためにカスタマイズするのは簡単です。 まとめ データサイエンスは急速に変化しており、データサイエンスから価値を引き出すために使用されるツールも増加しています。 最も人気のある2つの言語は、RとPythonです。 どちらも強みと弱みを持っています。 しかし、Googleのような技術の巨人がPythonを使用する方法を示し、学習曲線が短くて簡単になると、データサイエンスの世界で最も普及している言語になるはずです。 https://www.marutitech.com/python-data-science/ https://medium.com/@mindfiresolutions.usa/advantages-and-disadvantages-of-python-programming-language-fd0b394f2121 https://www.kdnuggets.com/2018/05/poll-tools-analytics-data-science-machine-learning-results.html

なぜpythonは急に人気になっているのか

  Python(パイソン)はデータ分析や機械学習の分野で広く使われている。機械学習や深層学習における応用が進み、AIの実用化が研究されるなかでさらに需要が高まると見られる。この記事はPython言語の特徴から人気の理由まで徹底解説する。 実際にPythonはどのくらい人気かあるか確認していく。 IEEE Spectrumのインタラクティブ記事から人気プログラミング言語のランキング(図1)から、 Pythonは一位であり、詳細でみると、PythonはWeb開発やEnterpriseの製品がメインである。 近年データ解析やAIの分野で広く使われていることから、今後も需要が大きくなると予想される。 図1Interactive: The Top Programming Languages https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2017 pythonとは Pythonは、1991年にオランダ人のグイド・ヴァン・ロッサム氏によって開発されたプログラミング言語である。古くからある言語であり、Javaよりも古い。汎用のプログラミング言語である、読みやすく、また書きやすく作業性とコードの信頼性を高めることを重視してデザインされた言語である。さまざまな開発ニーズを満たすために使用されているため、Pythonを1つの仕事で使い始めると、関係のない業界にあっても簡単に別の仕事に利用することができる。システム運用、Web開発、サーバー管理ツール、機械学習、人工知能(AI)、業務アプリケーションなどに広い分野で使われている。 Pythonの特徴としては以下のようなものが挙げられます。 シンプルな構文 Python の構文は、よく使われているプログラム言語の中では比較的シンプルである。誰が書いてもコードが同じようになる言語を意識して作られている。他人の書いたコードも比較的読みやすくなる。 インデントの利用 インデントとは、プログラムの作成における入れ子構造である。文章のような頭の位置を変化させることで意味的な固まりを示される。プログラムの制御の流れが視覚的に分かりやすい。 オブジェクト指向 Pythonはオブジェクト指向言語のため、継承、ポリモーフィズム、カプセル化を最大限に活用して、見通しが良く、保守性が高いプログラムを記述することができる。 素晴らしいライブラリ Pythonにはたくさんの標準または外部ライブラリがあります。ライブラリを利用すると、開発時間を節約し、最初の開発サイクルを短縮するのに役立ちます。 PythonにはNumPyやSciPyといった学術計算用のWebサイト開発用のDjangoまで、ライブラリの優れた選択肢がある。 活発で支持的なコミュニティ ドキュメンテーションと開発者のサポートが不足しているプログラミング言語はうまくいかない。 Pythonには多くのドキュメント、ガイド、チュートリアルなどがある。 さらに、開発者コミュニティは信じられないほど活発です。それは、誰かが助けやサポートを必要とするときはいつでも、タイムリーに解決できる。 大企業のスポンサー 最後に大事なことですが、これは、プログラミング言語に企業のスポンサーがいる大きな時間を助ける。 C#にはMicrosoft、JavaにはSun、PHPはFacebookで使用されています。 Googleは2006年にPythonを採用して以来、多くのプラットフォームやアプリケーションでこれを使用してきた。GoogleではPythonを扱うための膨大な数のガイドとチュートリアルを作成しました。 まとめ 本稿では、pythonの特徴、人気の理由ついて解説しました。pythonは汎用のプログラミング言語で、作業性と信頼性であり、需要が大きくなると予想されている。webアプリの開発はもちろん、最近では人工知能の開発で注目を集めている。また、コミュニティと大企業のスポンサーがあるので、タイムリーに問題が解決できるようです。AIの急速な成長、第4次産業革命を推進している時代にpythonは一つの力になるでしょう。 https://ja.wikipedia.org/wiki/Python https://www.kdnuggets.com/2017/07/6-reasons-python-suddenly-super-popular.html 実際に以下はPythonでの簡単なプログラムでの実行と他の言語との比較である。