元理系院生の新入社員がPythonとJavaで色々頑張るブログ

プログラミングや機械学習について調べた事を書いていきます

プログラミング

【python】k-meansとc-meansの散布図

今回は以前作成したK-meansとC-meansのプログラムの散布図のプロット方法について説明します. emoson.hateblo.jp emoson.hateblo.jp

【Java】Javaで離散cos変換

音声信号処理や画像圧縮技術に使用されている離散cos変換(DCT)をJavaで実装します。 DCTについてはこちらのウェブページを参考にさせて頂きました。離散コサイン変換DCTはDFTと似ていますが、虚数計算が発生しないためコーディングは比較的容易でした。

【Java】隠れマルコフモデルによる手書き数字認識

はじめに 手書き数字認識をタスクとして隠れマルコフモデル(HMM)の動作確認を行います。手書き数字認識は文字認識の中では単純な識別問題なのですが、タスクの困難性が想像しやすくサンプルデータが用意しやすい利点があります。 隠れマルコフモデル 隠れマ…

【Java】手書き文字を収集するアプリケーションの作成

隠れマルコフモデルによる手書き数字認識を実装する前に、手書き数字データを収集するアプリケーションを作成します。 いきなり余談ですが、手書き文字は採取時のデータの性質によってオンライン手書き文字とオフライン手書き文字に分けることが出来ます。 …

【Java】複数の信号を学習する離散隠れマルコフモデル

前回実装したスケーリング処理を用いた離散隠れマルコフモデルは、EMアルゴリズムによって最適化パラメータを算出した際に、即時にHMMのパラメータを更新する為、複数の学習データを用いて学習することが出来ませんでした。emoson.hateblo.jpそこで今回は、…

【Java】スケーリング処理を用いた離散隠れマルコフモデルの実装

前回実装した離散隠れマルコフモデルは、フォワード、バックワードアルゴリズムの確率計算を行う際に、長い時系列を適用するとアンダーフローが発生する問題がありました。emoson.hateblo.jpスケーリング処理はトレリス計算中に逐次スケーリング処理を施し、…

【Java】javaで多次元正規分布

旋回作成した行列計算用のクラスを用いて多次元正規分布を求めるクラスを作成します。emoson.hateblo.jp多次元正規分布については以下の記事で触れました。emoson.hateblo.jp

【Java】行列計算用のクラス

行列計算 信号処理や機械学習のアルゴリズムには行列計算が多く使われています。 例えば多次元正規分布では分散共分散行列の逆行列計算を行ったり、ニューラルネットワークでは順伝搬計算を行う際にユニットの出力とユニット結線荷重の内積計算を行ったりし…

JavaでErgodic離散隠れマルコフモデル

この記事に書かれている事 javaによるErgodicマルコフの実装

Pythonで離散フーリエ変換(DFT)

この記事に書かれている事 Pythonによる離散フーリエ変換(DFT)と逆変換の実装

Pythonでニューラルネットワーク

この記事に書かれている事 Pythonによるニューラルネットワークの実装

PythonでFuzzy C-meansクラスタリング

この記事に書かれていること Fuzzy C-meansについて PythonによるFuzzy C-meansの実装

Pythonでベイズ識別

この記事に書かれていること アヤメデータのベイズ識別方法 Pythonによるベイズ識別の実装

Pythonでsqlite3

この記事に書かれている事 pythonでsqlite3を使う方法

Pythonでパーセプトロン

この記事に書かれていること パーセプトロンと最急降下法の説明 Pythonによるパーセプトロンの実装

Pythonでbatch型SOM

この記事に書かれていること Pythonによるbatch型自己組織化マップの実装

Pythonでcos類似度とTF-IDFを用いた文章の類似度算出

この記事に書かれていること cos類似度について Pythonによるcos類似度の実装 Pythonによるcos類似度とTF-IDFを複合した文章類似度算出の実装

PythonによるTF-IDF

この記事に書かれていること TF-IDFについて PythonによるTF-IDFの実装

PythonでLeft to Right型隠れマルコフモデルとBaumwelchアルゴリズム

この記事に書かれていること Pythonによる隠れマルコフモデル(Hidden Markov Model)とBaumwelchの実装

Pythonで逐次型自己組織化マップ

この記事に書かれていること 逐次型自己組織化マップの説明 Pythonによる逐次型自己組織化マップの実装

PythonでK-meansクラスタリング

この記事に書かれていること K-meansの説明 PythonによるK-meansアルゴリズムの実装 クラスタリングとは何か クラスタリングとは、ざっくり言うと分類対象の沢山のデータから、それらを適当に分別するルールを勝手に獲得することだそうです。

Pythonで多次元正規分布

この記事に書かれていること numpyによる多次元正規分布の実装 多次元正規分布とは 一般的によく知られている正規分布を多次元に拡張したものです。 正規分布自体の解説はWikipediaにまかせてしまいます 正規分布 - Wikipedia

Pythonの可変長引数で困った事

この記事に書かれていること 可変長引数にlistを展開して渡す方法 可変長引数呼び出しとは 関数の引数の個数を呼び出し元で自由に指定できる引数呼び出しです。 コマンドライン引数を受け取る時などによく利用されています。 例) Python def func(*args, **k…

PythonでDynamic Time Warping

DynamicTimeWarpingって何? 動的時間伸縮法と呼ばれる、時間や速度の異なる信号同士の類似度を求めるアルゴリズムです。 信号同士の類似度を求める際に、単純にユークリッド距離を求めようとすると、信号の長さが 異なると非常に厄介な事になります。それに…

Pythonで相関係数を求めてみる

相関係数とはなにか 多変量の変数の関係性を示す指標の一つに共分散がありました。相関係数は共分散の弱点を補ったものです。今回はこの相関係数を求めるプログラムをPythonで記述してみます。

Pythonで共分散を求めてみる

共分散とはなにか 共分散とは二組の対応するデータ同士の関係を表す統計的指標の一つです。

フーリエ変換(1)

フーリエ変換とは フーリエ変換とは「周期的ならどんなに複雑な波形でも三角波の足し合わせで表現できる」 という考えに基いて、信号をスペクトル成分に分解する変換方法です。周波数スペクトルで表現できるのでノイズ検出や圧縮、信号解析等に利用出来ます。

プログラムからGmailでmailを送ろうとした時に陥ったエラー

何が起こったのか PythonでGmailを送ろうとした際、 smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 ...というエラーが返されました。事前にGmailのimapの設定を行ったはずなのに「どうしてだろ…

pythonでプログラミングを行う時によく使うlambda式

はじめに 研究で実験システムを構築する際に良く利用するlambda式を備忘録も兼ねて記します。

findViewByIdで独自Viewを呼び出すとNullになる問題

どんな問題? FragmentやActivityのlayout用のxmlに独自に作成したViewを配置し、FragmentやActivityからfindViewByIdで独自Viewを呼びだそうとするとnullがかえってくる問題が発生しました。

PythonでBrainf*ckを書いてみた

Brainf*ckとはなんぞや Brainfuckは8つの命令しかない小規模なプログラミング言語です。小規模なため、処理系と呼ばれるプログラムのコードを読み込み実行するプログラムを簡単に作る事が出来るので、 ちょっとしたプログラミングの練習にピッタリの題材です…

lambda式はすごく面白い

最近lambda式にハマってしまい何でもかんでもlambda式で書こうとしています。 「なんでもかんでもlambda式で書いてやるぜ!」というのはちょっとアレですが、lambda式は使ってみると割と便利なので、lambda式のちょっとしたメリットについて少し取り上げてみ…