機械学習
まずglob.glob()を用いて, すべての画像データのパスを保持したリストを作る. def make_datapath_list(phase="train"): rootpath = "./data/" target_path = os.path.join(rootpath, phase, "**", "*.jpg") # 最初の**はクラスのディレクトリ path_list = []…
ImageNetにおける物体認識をしたいとする. 通常ならイチからモデルを組み, データを入手し, 学習させ……という作業が必要なわけだが, ディープラーニングのフレームワークKearsならこれが簡単にできる. さらに, VGGやResNet, Xception, MobileNetなど自宅の計…
今日はk-NN法(k-NearestNeighbor)を実装する. k-NN法の概念 k-NN法は教師データから未知データを予測する教師あり学習の一つで, また, 線形回帰などのようにパラメータを最適化するような手法を取らない. すなわち, 「教師データから識別境界のようなものを…
予測モデルをつくるときに最も簡単な方法としては「最小二乗法による線形モデル」と「k近傍モデル」である. この2つは統計学や機械学習を学んでいない人でも割と思いつきそうな方法である. 線形モデルとはパラメータに対して線形なモデルという意味である. …
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…
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特徴量を削除したり工夫する必要がある.
Irisで試す # データCSVの読み込み iris = pd.read_csv("input.csv") # データのある特徴列を削除する iris.drop("Id", axis=1, inplace=True) # 同データのカウント # ”Species”という特徴列の名義特徴量の種類をそれぞれカウント iris["Species"].value_co…
warning.filterwarning("ignore")により警告を無視して進めることができる. import warnings warning.filterwarnings("ignore")
violinplotによって特徴量の分布が同じようなときjointplotによって, それらの特徴量の相関関係を調べる. 実際に相関係数の絶対値が1に近づいたらどちらかの特徴量を学習から削除することができるそう. 上図で2つの特徴量の分布が同じようなのでjointplotを…
seabornライブラリでデータを可視化したい場合, BoxplotとViolinplotなどがある. ラベルAとラベルBの正規化, 標準化済の特徴量3つをとってきて比較することに用いられる. Boxplotでは下図のような図をプロットでき, 中央値などがわかりやすい. (図引用: http…
DataFrameに対して列番号を指定する. 【参考】 ・http://ailaby.com/lox_iloc_ix/
DataFrame.describe()はDataFrameに格納されているそれぞれの特徴量(横軸)に対して 数値データならcount, mean, std, min, 25%, 50%, 75%, maxを計算, カテゴリデータならcount, unique(カテゴリの種類), top(先頭), freq(最頻値)を計算してくれる便利な機能…
csvファイルをpandas.DataFrameに格納する方法 # 読み込み csv_path = "./data.csv" data = pd.read_csv(csv_path) # データの表示(Jupyter notebookなどで) # .head()メソッドを使えば,先頭から5行が表示される data.head() # 特徴量の名前をリストとして取…
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=3 k=5 k=7 k=10 k=12 k=20 なお画像が大きいためサーバーで実行したのだが, OpenCVが入っていなかったのでPILで書きなおした. この際に画素のRGB値を書き換えた(OpenCVはGBRの順で紛らわしい)のだが, 混乱して正しく書き換えられているか分からない.…
以下の設定を書く. import urllib.request # proxy の設定 proxy_support = urllib.request.ProxyHandler({'http' : 'http://***.***.***:port', 'https': 'https://***.***.***:port'}) opener = urllib.request.build_opener(proxy_support) urllib.reques…
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)
取り出したい項目["color", "size", price"]を指定して X = df[["color", "size", "price"]] のようにして取り出す.一列の場合なら df.color df["color"] によって"color"の列が取り出せる.行を取り出すには #先頭から3行目まで df[:3] のようにリストのよう…
辞書型のキーと値の順番を変更した辞書をつくる. 順序特徴量でL, M, Sという文字列の値がある場合, 数値として扱うために class_mapping = {"L":3, "M":2, "S":1} のような辞書を定義し, 文字列を数値にする. これを再び元の形に戻したい場合はinv_class_map…
pandasのdataframeとCSVファイルのやりとりメモ import pandas as pd # CSV -> dataframe df = pd.read_csv(input_csv_path) # dataframe -> CSV df.to_csv(output_csv_path)
np.hsatck()では縦方向(axis=1)の結合ができる. 行列a, bに対してaxis=1のみが違うならば, aとbは結合できる. すなわちa.shape[1]とb.shape[1]のみが異なり, a.shapeとb.shapeの他の要素が同じならば結合可能となる.その他の結合方法としてcolumn_stack()に…
今話題の画風変換するDeepLearningで画像Aの画風を画像Bに適応するというアルゴリズムで様々な画風変換を実験したので,その結果をまとめる. ゴッホの画風(やや失敗) ミュシャの画風(やや失敗) モネの画風(けっこういい感じ) ピカソの画風(かなり失敗) ピカソ…
クラス参照するときにhelp()関数を使うとJupyter notebook内で参照できるため便利 import sklearn import sklearn.linear_model help(sklearn.linear_model.Perceptron) 下のような説明が出てくる. Help on class Perceptron in module sklearn.linear_model…
手元にトレーニングようデータX,yがあったら X_train, y_train, X_test, y_test のトレーニングデータと検証データに分割する from sklearn.cross_validation import train_test_split #トレーニングデータと検証データに分割 #全体の30%をテストデータにす…
f([a,b])という関数があったとするとf([[a,b], [c,d]])というのは[f([a,b]), f([c,d])]と同じ結果を出力するのはnumpyやmatplotlibの常套らしい. >>> import numpy as np >>> x = np.array([1,2,3])# l * m >>> y = np.array([10,11])# n * k >>> xx, yy = n…
https://matplotlib.org/examples/color/colormaps_reference.html ここに載っているcolormap一覧をk-NN classificationの図に適応してみた. 3色だと個人的にはjet, prismあたりが見やすくて好み. 色の定義はこのように[("A",["color1","color2"]),...]のよ…
scikit-learn documentのclusteringを読むときに役立つ日本語の文献をメモ 2.3.3 Affinity Propagation http://tjo.hatenablog.com/entry/2014/07/31/190218 2.3.4 Mean Shift http://seiya-kumada.blogspot.jp/2013/05/mean-shift.html http://blog.livedoo…
ポアソン分布の作り方 import scipy.stats import numpy as np import matplotlib.pyplot as plt #figsize(12.5,4) lambda_ = [1.5, 4.25] colors = ["#348ABD","#A60628"] a = np.arange(16) plt.bar(a,scipy.stats.poisson.pmf(a,lambda_[0]),color=colors…
Pythonで体験するベイズ推論Pythonで体験するベイズ推論 PyMCによるMCMC入門作者: キャメロンデビッドソン=ピロン,玉木徹出版社/メーカー: 森北出版発売日: 2017/04/06メディア: 単行本(ソフトカバー)この商品を含むブログを見るから, ベイズ推論について…