機械学習

物体認識をお手軽に試す

ImageNetにおける物体認識をしたいとする. 通常ならイチからモデルを組み, データを入手し, 学習させ……という作業が必要なわけだが, ディープラーニングのフレームワークKearsならこれが簡単にできる. さらに, VGGやResNet, Xception, MobileNetなど自宅の計…

【numpy】よく見るサイトメモ

sin波の生成 qiita.com乱数生成 qiita.com (b - a) * np.random.rand() + a

【numpy】 行列結合

a = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) b = np.array([[1, 2], [3, 4], [5, 6], [7, 8]]) c = np.vstack((a, b)) c = np.array([[1, 2], [3, 4], [5, 6], [7, 8], [1, 2], [3, 4], [5, 6], [7, 8]])

k-NN法をフルスクラッチ実装

今日はk-NN法(k-NearestNeighbor)を実装する. k-NN法の概念 k-NN法は教師データから未知データを予測する教師あり学習の一つで, また, 線形回帰などのようにパラメータを最適化するような手法を取らない. すなわち, 「教師データから識別境界のようなものを…

最小二乗法をフルスクラッチで実装する

ココで言うフルスクラッチは行列演算以外である. 行列演算は本質ではないので, 行列演算ライブラリは使うことにする.前回の記事で線形モデルの最小二乗法について, パラメータの解が で得られることが分かった. これをPythonによって実装してみる. 今回は一…

最小二乗法概略

予測モデルをつくるときに最も簡単な方法としては「最小二乗法による線形モデル」と「k近傍モデル」である. この2つは統計学や機械学習を学んでいない人でも割と思いつきそうな方法である. 線形モデルとはパラメータに対して線形なモデルという意味である. …

【英語】深層学習への批判的表現

深層学習への批判的な表現をまとめる. 不定期的に更新していく(つもり). While these depp neural networks enable superior performance, their lack of decomposability into intuitive and understandable components makes them hard to interpret.深いN…

【英語】深層学習スゴい系の表現集

英語の勉強で深層学習スゴい系の表現集を集めておこうかと思い記事にすることにした. 定期的にアップデートしていくつもり. Convolutional Neural Networks (CNNs) and other deep networks have enabled unprecedented breakthroughs in a variety of compu…

【urllib】プロキシ設定

proxyの使い方メモ keras.datasets.mnist.load_data()とかしたいときに, プロキシを通す方法 import urllib proxy_support = urllib.request.ProxyHandler({'https': 'http://proxy.hogehoge.ac.jp:80'}) opener = urllib.request.build_opener(proxy_suppor…

【メモ】GANについて

現在GitHubでGANについてまとめてあるリポジトリをまとめた. YadiraF/GAN 各種GANについてpaper, blog, codeが掲載されている. GAN DEGAN Conditional GAN Wasserstein GAN Info GAN github.com jhayes14/GAN GANについての概要が掲載されている. 日本語訳 G…

過学習の起こる理由

過学習は訓練用事例の中のノイズ等によるデータ内のいくつかの以上を学習器が正解と誤って認識することに起因する.決定木において過学習の対策は, 枝刈りによって行われる.

【Python】 confusion_matrtixの作り方

seabornのheatmapによって表現できる. import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # scikit-learnのconfusion_matrixクラスで b = np.array([[251, 22, 1, 3, 0, 1, 3, 16, 24], [ 8, 459, 0, 2, 0, 1,…

【データ分析】 特徴量の相関関係の図の見方

図[2][4]は正の相関関係があるとわかる. 図[1][1]は緑と赤の分布がほぼ同じであり, 分離が厳しいことがわかる. 図[0][1]でも混じっている. これを処理するためには, SepalWidthCm特徴量を削除したり工夫する必要がある.

【pandas】 DataFrameの操作について

Irisで試す # データCSVの読み込み iris = pd.read_csv("input.csv") # データのある特徴列を削除する iris.drop("Id", axis=1, inplace=True) # 同データのカウント # ”Species”という特徴列の名義特徴量の種類をそれぞれカウント iris["Species"].value_co…

【Python】 Jupyter notebookで実行に影響のない警告は無視する

warning.filterwarning("ignore")により警告を無視して進めることができる. import warnings warning.filterwarnings("ignore")

特徴量の削除

violinplotによって特徴量の分布が同じようなときjointplotによって, それらの特徴量の相関関係を調べる. 実際に相関係数の絶対値が1に近づいたらどちらかの特徴量を学習から削除することができるそう. 上図で2つの特徴量の分布が同じようなのでjointplotを…

【seaborn】 相関関係を可視化する

seaborn.jointplot(特徴量列1, 特徴量列2)で相関関係を見ることができる. 【参考】 ・http://blog.livedoor.jp/oyajieng_memo/archives/1524575.html

【seaborn】 plotについて

seabornライブラリでデータを可視化したい場合, BoxplotとViolinplotなどがある. ラベルAとラベルBの正規化, 標準化済の特徴量3つをとってきて比較することに用いられる. Boxplotでは下図のような図をプロットでき, 中央値などがわかりやすい. (図引用: http…

【pandas】 DataFrame.locについて

グラフの列の値を読み取る >>> df.loc[:,"feature1"] 0 0.71190 1 0.24160 2 0.45040 3 0.68690 4 0.40000 5 0.53550 6 0.37840 7 0.26780 8 0.53900 9 1.10500 10 0.14590

【pandas】 DataFrameの結合

pandas.DataFrame型のオブジェクトdf1,df2に対して # 縦方向の連結 pandas.concat([df1,df2]) # 横方向の連結 pandas.concat([df1, df2],axis=1) 【参考】 ・http://sinhrks.hatenablog.com/entry/2015/01/28/073327

【pandas】 DataFrame.iloc

DataFrameに対して列番号を指定する. 【参考】 ・http://ailaby.com/lox_iloc_ix/

【pandas】 DataFrame.describe()について

DataFrame.describe()はDataFrameに格納されているそれぞれの特徴量(横軸)に対して 数値データならcount, mean, std, min, 25%, 50%, 75%, maxを計算, カテゴリデータならcount, unique(カテゴリの種類), top(先頭), freq(最頻値)を計算してくれる便利な機能…

【pandas】 CSVの読み込み

csvファイルをpandas.DataFrameに格納する方法 # 読み込み csv_path = "./data.csv" data = pd.read_csv(csv_path) # データの表示(Jupyter notebookなどで) # .head()メソッドを使えば,先頭から5行が表示される data.head() # 特徴量の名前をリストとして取…

【pandas】 DataFrameから削除する

pandas.DataFrameは横軸が特徴量, 縦軸がデータの番号とするのが慣習らしい. >>> df = pd.DataFrame(np.arange(12).reshape(3,4), columns=['A', 'B', 'C', 'D']) >>> df A B C D 0 0 1 2 3 1 4 5 6 7 2 8 9 10 11 # 特徴量BとCを削除する >>> df.drop(["B",…

【ギャラリー】k-meansクラスタリングにおける画像減色を3Dグラフに表す

k = 1 k = 2 k = 3 k = 4 k = 5 k = 6 k = 7 k = 8 k = 9 k = 10 k =20 k = 30 k = 50 k = 70 k = 100 k = 200 k = 300

【ギャラリー】 k-meansによる画像減色

元画像 k=3 k=5 k=7 k=10 k=12 k=20 なお画像が大きいためサーバーで実行したのだが, OpenCVが入っていなかったのでPILで書きなおした. この際に画素のRGB値を書き換えた(OpenCVはGBRの順で紛らわしい)のだが, 混乱して正しく書き換えられているか分からない.…

【python】 proxy下でデータセットをダウンロードする

以下の設定を書く. import urllib.request # proxy の設定 proxy_support = urllib.request.ProxyHandler({'http' : 'http://***.***.***:port', 'https': 'https://***.***.***:port'}) opener = urllib.request.build_opener(proxy_support) urllib.reques…

【python】 日本語CSVの読み込み時のエンコーディング

encoding = "utf-8"と指定する必要がある with open(filename, "r", encoding = "utf-8") as f: reader = csv.reader(f) header = next(reader) for row in reader: print(row)

【pandas】 DataFrameから特定の列の取り出し方

取り出したい項目["color", "size", price"]を指定して X = df[["color", "size", "price"]] のようにして取り出す.一列の場合なら df.color df["color"] によって"color"の列が取り出せる.行を取り出すには #先頭から3行目まで df[:3] のようにリストのよう…

【python】 辞書のキーと値を逆にする操作

辞書型のキーと値の順番を変更した辞書をつくる. 順序特徴量でL, M, Sという文字列の値がある場合, 数値として扱うために class_mapping = {"L":3, "M":2, "S":1} のような辞書を定義し, 文字列を数値にする. これを再び元の形に戻したい場合はinv_class_map…