全て

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 »

ダミー変数に変換 【One-Hotエンコーディング】

今回の記事はカテゴリ変数をダミー変数に変換を解説します。 ダミー変数とは、 カテゴリ変数を数字に変換する手法のことです。具体的には、数字ではないデータを「0」と「1」だけの数列に変換します。機械学習は数字などの量的データによって行うものですが、それ以外の事柄でも数字に変換し、分析に取り入れることができます。多クラスの特徴量をone-hot表現に変換したりすることです。 ダミー変数の作り方 二者択一のダミー変数を作成する場合は、どちらか一方を「0」、もう片方を「1」と変換してデータを作ります。 例えば 「はい→1、いいえ→0」、 「男→1、女→0」、 「あり→1、なし→0」   複数から選択するダミー変数を作成する場合は、含まれる要素の数に応じたダミー変数を作ることでデータに転換可能です。例えば、 国「日本、 中国、アメリカ」 日本ダミー : 日本を1、その他を0とした数列 中国ダミー : 中国を1、その他を0とした数列 アメリカダミー : アメリカを1、その他を0とした数列   だは、pandasのget_dummiesでダミー変数を変更しましょう。 pandas.get_dummies(data, prefix=None, prefix_sep=’_’, dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)   data – ダミー変数を作成したいデータ prefix – DataFrameのカラムラベルに付け加える文字列 prefix_sep – prefixで指定された文字列を付け加える際に橋渡しとなる文字列 dummy_na – 欠損値もダミー変数の処理 columns – ダミー変数に変換したい列データ sparse – SparseDataFrameとして返り値 drop_first – カテゴリー数がk個あった時、k-1個のダミー変数を作成するかどうか dtype – 新たなカラムのデータ型   # サンプルデータ作成 …

ダミー変数に変換 【One-Hotエンコーディング】 Read More »

Group Lassoの正則化

前回、【正則化のLasso回帰とRidge回帰】について説明しました。 今回の記事はLasso進化形のGroup Lassoの正則化について解説します。   Group Lassoとは Group Lassoは、説明変数の属性に基づいていくつかのグループに分けられるとき、変数選択においてグループ単位で選択したいときに利用する方法です。 Lassoというのは、正則化項にL1normを使ったいわゆるL1正則化のことで、大部分の重みが0に潰れて疎な解が得られます。   この進化形として、Group Lassoという手法があります。Group Lassoでは、重みベクトルの次元をグループ分けして、各グループごとのL2normを正則化項として使います。 使うメリットは以下になります。 カテゴリー変数の効果をモデルに反映 例えば、都道府県を説明変数に入れる場合があります。この場合は、各都道府県をフラグ化して、変数にします。しかしこの方法では「都道府県じたい」が効果のある変数かどうかを判定したい場合にはわかりません。そのためカテゴリー変数じたいの効果の有無を調べる場合にGroup Lassoを使うとわかります。   大規模な線形分類、回帰のライブラのsklearn-contrib-lightningをインストールします。 pip install scikit-learnpip install sklearn-contrib-lightning   ライブラリのインポート from sklearn.datasets import fetch_20newsgroups_vectorizedfrom lightning.classification import CDClassifier   20 newsgroupsはこのブログでも過去何回か取り上げまたしが、ベクトル化済みのデータです。 (130,107のカラム) bunch = fetch_20newsgroups_vectorized(subset=”all”)X = bunch.datay = bunch.targetprint(X.shape)print(y.shape) (18846, 130107)(18846,)   分類の設定と学習 clf = CDClassifier(penalty=”l1/l2″,                   loss=”squared_hinge”,                   multiclass=True,                   max_iter=20,                   alpha=1e-4,                   …

Group Lassoの正則化 Read More »

PySparkでデータ読み込み

PySparkのデータ処理一覧 今回はdatabricksでtableとcsvと parquetと圧縮ファイルの gzファイルを読み込むコードの例を紹介します。 1. tableからデータ読み込む spark.table と spark.sqlでデータを読み込みます。   Pyspark df = spark.table(“list”) df.show() +—+—-+—+| id|name|age|+—+—-+—+|  1|Andy| 20||  2|Jack| 31||  3| Tom| 41|+—+—-+—+ Pyspark df = spark.sql(“select * from list”) df.show() +—+—-+—+| id|name|age|+—+—-+—+|  1|Andy| 20||  2|Jack| 31||  3| Tom| 41|+—+—-+—+   2. csvファイルを読み込む spark.readでcsvファイルを読み込みます。   Pyspark 例1 df = (spark.read      .option(“inferSchema”, “True”)      …

PySparkでデータ読み込み Read More »

TensorFlow 2.0 主な変更点

前回、【深属学習】について色んな記事を話しました。 今回の記事はGoogleが2019年初に公開したTensorFlow 2.0について紹介します。 本番リリースではないですが、現在の時点TensorFlow 2.0 Betaです。   リリース日のタイムライン: 2019年3月4日 TensorFlow 2.0 Alphaのリリース 2019年6月日8 TensorFlow 2.0 Betaのリリース >  pip install tensorflow==2.0.0-beta0 本記事では、TensorFlow 2.0の変更点についてまとめたいと思います。 Google I/O’19のアナウンスとDesign Documentを参考しました。 TensorFlowのアナウンスにもある通り、TensorFlow 2.0における大きな変更点は以下の4つになります。 1.Eager Modeのデフォルト化 2.Sessionとplaceholder消滅 3.kerasが、TensorFlow標準の高レベルAPIに 4.TensorFlow 2.0の全体構成 1. Eager Modeのデフォルト化 eager executionはDefine-by-runの機能になります。Define by Runでは、計算グラフ(ニューラルネットの構造)の構築とデータを流しながら行います。Define and Runでは、計算グラフを構築してから、そこにデータを流していきます。 従来の tensorflow は Define-and-run で、 PyTorch やChainer は Define-by-run です。 eager execution は tensorflow で …

TensorFlow 2.0 主な変更点 Read More »

X-means法でクラスタ数を推定する方法

  前回、【クラスタ数の決め方の1つシルエット分析】について説明しました。 今回の記事はもう一つのクラスタ数を自動推定するX-meansについて紹介します。 x-meansとは x-meansは、k-meansのクラスター数kを自動推定しつつクラスタリングしてくれる手法です。k-meansの逐次繰り返しとBIC(Bayesian information criterion)による分割停止基準を用いて最適なクラスター数を決定します。 BICは重心の近くにガウス分布している仮定してBICを計算します。   詳細はx-meansの論文になります。 今回は「pyclustering」のライブラリを使用して、x-meansのクラスタ数推定を行います。 先ず、ライブラリの読み込み %matplotlib inline import pyclustering from pyclustering.cluster import xmeans import numpy as np import matplotlib import matplotlib.pyplot as plt from sklearn.cluster import KMeans from sklearn.datasets import make_blobs   サンプルの作成 X, y = make_blobs(n_samples=5000,                   n_features=2,                   centers=4,                   cluster_std=1,                   center_box=(-10.0, 10.0),                   shuffle=True, …

X-means法でクラスタ数を推定する方法 Read More »

PySparkで欠損値(Null)の取り扱い方法

PySparkのデータ処理一覧   データ分析でよく問題になるのが欠損値の処理です。今回の記事はPySparkで欠損値(Null)の取り扱い方法を紹介します。 先ず、欠損値があるデータを作成します。 Pyspark df = spark.createDataFrame([   (“p001”, 1020, None),   (“p002”, 560, “delivered”),   (“p003”, None, “delivered”),   (“p004”, None, None)],   [“productID”, “unit”, “status”]) df.show() df.count()   +———+—-+———+|productID|unit|   status|+———+—-+———+|     p001|1020|     null||     p002| 560|delivered||     p003|null|delivered||     p004|null|     null|+———+—-+———+Out[1]: 4   1)欠損値の件数 isNull isNotNillで欠損値がない列をフィルタして数えます。 PySpark df2 = df.filter((df[“productID”].isNotNull() & df[“unit”].isNotNull() & df[“status”].isNotNull()))df2.show()df2.count() +———+—-+———+ |productID|unit| …

PySparkで欠損値(Null)の取り扱い方法 Read More »

AdaBound 新しい深層学習のoptimizer

前回の記事は色々な【深属学習】について話しました。今回の深層学習の最適化手法のAdaBoundを紹介します。AdaBoundはAdamの収束の速さとSGDの汎化性能の良さの良いとこ取りなoptimizerです。   Adamの弱点としては、汎化性能が劣る・未知のデータに弱い・極端な学習率を使うため上手く収束しないことがあります。例えばですが、収束が近くなると学習率は0.01以下の小さすぎる値になったり1000以上の大きすぎる値になったりしてしまうことがあります。逆にメリットとしては、収束が早いという事になります。 この大きすぎたり、小さすぎるを解消するために新しく提案されたのが、AMSBoundという手法になります。   AMSBound の論文はこちらです。   今回はColab(GPU)でKerasのRestNet34のモデルを作成します。Keras-adabound はこちらから参照します。   概要 データセット:cifar10 cifar10は、kerasのdatasetsで提供されている、5万枚の訓練画像と1万枚のテスト画像のデータセットです。画像は32×32のRGBで、画像の下に表示されている数字が正解ラベルです。 0 – airplane  1 – automobile  2 – bird  3 – cat  4 – deer 5 – dog  6 – frog  7 – horse  8 – ship  9 – truck   Optimizer:Adam,と AdaBound のOptimizerを比較します。 モデル評価:速い収束、正解率を確認します。   学習条件 共通設定 モデル:  ResNet34 バッチサイズ = 512 エポック数 = 100 クラス数 = 10   Optimizerの設定 adabound  …

AdaBound 新しい深層学習のoptimizer Read More »

RMSLE を用いた評価指標

前回の記事は【ROC曲線とAUC】機械学習の評価指標を説明しました。今回は連続値回帰モデルの評価指標のRMSLEを紹介したいと思います。 先ず、RMSEを説明します。 RMSE (Root Mean Squared Error) 定義式   (n = 件数 、y = 実測の値、ŷ =予測の値) RMSEとか平均平方二乗誤差といいます。すべての誤差の平方根の平均です。 連続値の値でどれぐらい離れているかを平均を取り、平方根で評価します。   コード: from sklearn.metrics import mean_squared_error import numpy as np y_true = [100, 110, 120, 130] y_pred = [110, 120, 130, 140] RMSE=np.sqrt(mean_squared_error(y_true, y_pred)) print(RMSE) 10   RMSLE (Root Mean Squared Logarithmic Error) 定義式   (n = …

RMSLE を用いた評価指標 Read More »

OpenCV + Pythonでの色認識・色検出

前回の記事は OpenCVで画像の図形検出と直線検出について説明しました。 「OpenCV + Pythonでの図形検出、図形数える」 「OpenCV + Pythonでの直線検出」 今回の記事は画像解析についてOpenCVで画像から色認識し、色検出を説明します。 OpenCVライブラリのInRangeはビデオ、画像の色範囲を認識する機能です。下界と上界を設定すれば、対象の色を検出ができます。InRangeのクラスは下記に説明します。 InRange InRange(src, lower, upper, dst) パラメタ: src (CvArr) – 入力画像 lower (CvArr) – 下界(その値を含む)を表す配列 upper (CvArr) – 上界(その値は含まない)を表す配列 dst (CvArr) – 出力画像 (引数経由で受け取る場合) この関数は,入力配列の要素毎に範囲チェックを行います。