Kei Minagawa's Blog

皆川圭(@keimina)のブログ、Pythonで試したことを書いていきます

2019-01-01から1年間の記事一覧

MacBook Pro の Radeon GPU で Keras を使って MNIST を高速に学習させる方法

2019年12月現在、MacBook Pro の Radeon GPU で Keras を使って MNIST を高速に学習させることができました。忘れないよう環境構築手順等を記載します。Plaid-ML という機械学習ライブラリをインストールし Keras のバックエンドにそれを指定するとできるこ…

ボロノイ図を書いて、マウスクリックした時に一番近いデータポイントをを表示するプログラムを実装する

ボロノイ図を書くプログラムと、マウスクリックした時に一番近いデータポイントをを表示するプログラムを実装します。 Table of Contents 1. ボロノイ図とは 2. ボロノイ図を書くプログラム実装する 2.1. コード 2.2. コードの説明 3. 出力結果 4. マウスク…

`np.broadcast_to`関数を使用して1次元配列を3次元配列に変換する

‎ 今回は、1次元配列を3次元配列に変換する方法について書きます。実装には、 `np.broadcast_to` 関数を使用しました。 Table of Contents 1. 今回、作成したい配列 2. 作成する方法 その1 3. 作成する方法 その2 4. コード 5. 出力結果 6. コードの説明 7…

pd.read_csv でデータを読み込んだ時の列の型

自分が主催をしている Pandas 勉強会で read_csv について学んだことの一部をここに記載します。結論を言ってしまうと、 csv を受け取る時は列の型を聞いておく必要があるよねという話です。最後に、勉強会で、 pd.read_csv の引数である keep_date_col につ…

Pandas の Series オブジェクトと DataFrame オブジェクト の四則演算(足し算)した時の挙動についていろいろ試してみた

Pandas の Series オブジェクトと DataFrame オブジェクト の四則演算(足算)の挙動を調べてみました。結果、 Series オブジェクト の index のラベルと DataFrame オブジェクト の columns のラベルがマッチする時、計算が行われることがわかりました。また…

Pandas の obj[i] と obj.loc[i] などの違いについて

Pandas の Series オブジェクトの話になります。 Series オブジェクトを obj とした時、 obj[i] と obj.loc[i] と obj.iloc[i] の違い、さらに obj[s:e] のようにスライスした時の動作の違いを理解するために、コードを書き実行して動作を確かめました。確認…

三面体のサイコロを2000回投げたとき、それぞれの面の出る回数の分布

1. はじめに (注意:一般的に三面体のサイコロというものは現実には存在しません。説明の便宜上、3つの面をもつ空想のサイコロのことを三面体のサイコロと表現しています) Pandas 勉強会で、サンプルの状態が割とよく発生することなのか、稀にしか発生しない…

Pandas の DataFrame をエクセルで開く自作関数

表データを可視化したい時、まずエクセルで生のデータを表示したい時があります。これは具体的には「Pandas の DataFrame を Excel で保存し、それを開く」という作業です。この作業を自動化したら、便利だったので、ここに紹介します。 1. 動作環境 OS MacO…

(勉強会用資料)Python Pandas もくもく勉強会 in 新潟 #3

1. はじめに 2. import 文 3. 出現頻度のカウント 4. Excel あるある 4.1. 作者の主観により特定の行がデータの区切りとなっていると思われるエクセルをどうにかする 1. はじめに 新潟で Python Pandas もくもく勉強会 というものを主催しています。本記事は…

(勉強会用資料)Python Pandas もくもく勉強会 in 新潟 #2

1. はじめに 2. import 文 3. Series または DataFrame の index を1始まりにする方法 3.1. Series の場合 3.1.1. 使用するデータ 3.1.2. 方法 3.2. DataFrame の場合 3.2.1. 使用するデータ 3.2.2. 方法 4. Series または DataFrame を比較して一致する行を…

(エクセルで作成した csv ファイルについて)一つのセルに書かれている複数の行を、テキストエディタ Emacs で一つの行で見れるようにする方法

1. はじめに 2. 注意事項、制限 3. 入力ファイル 3.1. エクセル 3.2. 入力ファイルの初期状態 4. 方法 4.1. 1行への変換 4.1.1. 検索する正規表現 4.1.2. 置換のための emacs lisp 式 4.1.3. 置換実行後 4.2. 複数行への変換 4.2.1. 検索する正規表現 4.2.2…

Matplotlib でお絵かきアプリっぽいものを作る

Matplotlib でお絵かきアプリっぽいものを作ります。 1. matplotlib のバージョン 2. 仕様 3. コード 4. コードの説明 5. 実行結果 6. まとめ・考察 7. 今後の予定 8. 宿題 1. matplotlib のバージョン GUIのAPIの仕様は変わる可能性が高いため、matplotlib …

勾配降下法により PCA(主成分分析)の第2主成分を数値解析的に求め、PCAについて理解を深める

1. はじめに 2. 前回記事 3. サンプルデータについて 4. 実装の方針 5. ソースコード 6. ソースコードの説明 7. 出力結果 8. 考察 9. 第3主成分を求めるコード 10. 出力結果(第3主成分を求めるコード) 11. まとめ 1. はじめに 前回記事で、第2主成分は「第1…

点を移動させる行列と、その固有ベクトルについて可視化して理解を深める

目次 目次 1. はじめに 2. 固有ベクトルについて 3. 仕様 4. ソースコード 5. ソースコードの説明 6. 出力結果 7. 考察 8. まとめ 1. はじめに 2x2の行列を点(x, y)に適応すると、新しい点に移動します。本記事は、この行列による点の変換を可視化し行列の理…

勾配降下法により PCA(主成分分析)の第1主成分を数値解析的に求め、PCAについて理解を深める

1. 目次 1. 目次 2. はじめに 3. 参考文献 4. PCAの第一主成分について自分が理解していること 5. 検証の方針 6. ソースコード 7. 出力結果 8. まとめ・考察 2. はじめに 本記事は、主成分分析(以下PCA)について自分の理解があっているか確かめた時の記録で…

SciPy Japan 2019 に参加しました

前に申し込んでいた SciPy Japan 2019 に参加してきました。予定通り4/23, 4/24 に開催されました。無事に開催されて良かったです。開催の内容は、午前中はチュートリアル、午後は Enthoughtさん による公演や Science に関する問題を(一部) Python を使って…

sympy でニューラルネットワークの重みの更新に使用する式を計算グラフにしてみる

1. はじめに sympy(https://www.sympy.org/en/index.html) を使用し、ニューラルネットワークの重みの更新に使用する式を計算グラフにしてみます。具体的には、 sympy を使って、損失関数の勾配の計算を計算グラフとして表し、それを graphviz で画像に出力…

Numpy 入門 (機械学習勉強会 in 新潟 2019/03/23)

Numpy 入門 Numpy 入門 (機械学習勉強会 in 新潟 2019/03/23) 目次 1. はじめに 2. numpy とは何か 3. numpy モジュールのインポート方法について 4. 数値を作成する 4.1. np.int32 とは 5. 「1次元配列」の数値計算をする 5.1. 「1次元配列」を作成する 5…

SciPy Japan 2019 に参加します

SciPy Japan 2019 に参加します。www.scipyjapan2019.scipy.org開催は4/23, 4/24の二日間、場所は東京。チュートリアル、トーク、ポスター発表が行われるようです。チュートリアルも二日間に渡って行われるようです。英語のリスニングができずに、ほとんど理…

Wikipediaの文書を使って文の長さの平均を求める

Wikipediaの文書を使って文の長さの平均値と最頻値を求めました。機械学習勉強会 in 新潟で発表した内容です。Wikipedia の約60億文字以上のXMLファイルから、独自に定義した文を抜き出し、その文に対して統計量を求めました。使用言語はいつも通りPythonで…

Pythonで2次元データ作成ーポリゴンに収まる点の集合

前回の続きです。今回は、前回に引き続き、ポリゴンに収まる点の集合を作成します。アルゴリズムは簡単で、ランダムに点を打ち、それがポリゴンの内側であれば点を残す、ポリゴンの外側であれば点を消すを繰り返すだけです。「ポリゴンの内側か?」を判定す…

Pythonで2次元データ作成ー三角形に収まる点の集合

前回の続きです。今回は、前回に引き続き、Pythonで三角形に収まる点の集合を作成します。アルゴリズムは簡単で、ランダムに点を打ち、それが三角形の内側であれば点を残す、三角形の外側であれば点を消すを繰り返すだけです。「三角形の内側か?」を判定す…

Pythonで2次元データ作成ー四角形に収まる点の集合

Pythonで四角形に収まる点の集合を作成します。アルゴリズムは簡単で、ランダムに点を打ち、それが四角形の内側であれば点を残す、四角形の外側であれば点を消すを繰り返すだけです。「四角形の内側か?」を判定する関数を作成し、その関数に様々な点を与え…

numpyの2次元配列の非ゼロ領域を囲む四角形の情報を取得する方法について理解する

本記事は、Stackoverflowにに記載されているnumpyの2次元配列の非ゼロ領域を囲む四角形の情報を取得する方法について理解を深めるための記事です。 1. 目次 1. 目次 2. numpyの2次元配列の非ゼロ領域を囲む四角形の情報を取得する方法 3. 解説 4. 注意点 2…