Kei Minagawa's Blog

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

離散化を行うモデルの検討・実装

*/--> /* @licstart The following is the entire license notice for the JavaScript code in this tag. Copyright (C) 2012-2019 Free Software Foundation, Inc. The JavaScript code in this tag is free software: you can redistribute it and/or modi…

gymモジュール Pendulum-v0 で、振り子を頂上で止まらせる

gymモジュール Pendulum-v0 で、振り子を頂上で止まらせる */--> /* @licstart The following is the entire license notice for the JavaScript code in this tag. Copyright (C) 2012-2019 Free Software Foundation, Inc. The JavaScript code in this ta…

gymモジュール Pendulum-v0 で振り子をトルクを与えて静止させる

前回に続き、gym モジュールの Pendulum-v0 の理解を深めます。今回は、手で振り子を水平状態にし、その状態をキープするようにトルク与えて、振り子を静止させるシミュレーションを行います。今回も、強化学習は行いません。シミュレータの理解を深めます。…

gymモジュール Pendulum-v0 で振り子を揺らす

前回に続き、gym モジュールの Pendulum-v0 の理解を深めます。今回は、 手で振り子を水平状態にし、離すことに相当するシミュレーションを行います。今回も、強化学習は行いません。シミュレータの理解を深めます。 Table of Contents 1. 前回の記事 2. 今…

gymモジュール Pendulum-v0 で振り子を等速度で回転させる

gym モジュールの Pendulum-v0 とは以下のような振り子のシミュレータです。 図1. Pendulum-v0 今回は、このシュミレータを用いて、振り子を等速度で回転させるプログラムを書きます。振り子をアナログ時計の秒針のように一定の速度でグルグル回すことを目的…

混合分布が確率であることについて

混合分布が確率であることについて書きます。混合分布とは、確率質量関数または確率密度関数を線形結合させたものだと理解しています。本を読んでいたところ、結合係数の和が1のとき、混合分布も確率質量関数または確率密度関数として解釈することができると…

if文を自動生成する方法

if文を自動生成する方法について記載します。 Table of Contents 1. したいこと 2. 解決策 (1) 3. 解決策 (2) 4. sympy.SOPform 関数について理解を深める 5. 参考文献 1 したいこと 以下のような表があったとき、入力 (a, b) を f(a, b) に変換する関数を自…

sympyで「... = ...」の式を「... = 0」の式にする方法

sympyで「… = …」の式を「… = 0」の式にする方法を記載します。 Table of Contents 1. 行いたいこと 2. 解決策 3. 練習問題 3.1. 【問 1】 3.2. 【問 2】 1 行いたいこと まず、行いたいことを明確にします。例えば、以下の式があったとします。 a = b 上記…

ヘビサイド関数を使って矩形関数を作る方法(Sympy)

0 or 1 をとるシンプルな関数として、ヘビサイド関数があります。本記事は、 Python のライブラリである Sympy の Heaviside 関数を使って、矩形関数を実装したときの記事です。ヘビサイド関数を用いて矩形関数を作ることができました。 Table of Contents 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次元データ作成ーポリゴンに収まる点の集合

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