- 1. 遺伝的アルゴリズムの循環交叉について
- 2. PyTorchでマインスイーパを機械学習
- 3. テキストファイルをJSON用に変換するスクリプトをPythonで作ってみた(vscodeのユーザースニペット用)
- 4. ゼロから始めるLeetCode Day12 「617. Merge Two Binary Trees」
- 5. ゼロから始めるLeetCode 目次
- 6. MacOSXでバッテリーに優しく。Pythonで過充電アラートを実装してみた。
- 7. ゼロから始めるLeetCode Day11 「1315. Sum of Nodes with Even-Valued Grandparent」
- 8. Python のモジュールとパッケージを抽象的に理解してみる
- 9. 算数教具「ジャマイカ」を再現しよう❗️ vol.01 「Pythonで画像を表示するための備忘録」
- 10. JQueryとPythonを勉強しながらGCP上でWebサービスを公開するまで
- 11. RaspberryPiへのOpenCVインストール手順
- 12. 言語処理100本ノック 2020に挑戦してみた:第1章
- 13. AtCoder Beginner Contest 166 参戦記
- 14. ABC166をPythonで A~C問題
- 15. 言語処理100本ノック 2020に挑戦してみた
- 16. RAPIDS
- 17. numpyでヒストグラムの最大地点を取得する関数
- 18. DjangoのHTMLテンプレートその2
- 19. アンビソニックスシミュレーション Python
- 20. Prophetの時系列予測をPlotlyでよりわかりやすく可視化する
遺伝的アルゴリズムの循環交叉について
#はじめに
この記事は自分の備忘録として書いているため、わかりにくい場合はご了承ください。
#記事の内容
遺伝的アルゴリズムの交叉の中でも特に循環交叉について取り上げます。
#循環交叉の仕組み
循環交叉は順列コーディングに使われる交叉の方式です。
ステップ別に分けて解説していきます。
##STEP0
まず、親1と親2の遺伝子の配列を以下のように与えます。親1 =[ 3 , 7 , 2 , 5 , 6 , 1 , 4 ]
親2 =[ 1 , 7 , 3 , 6 , 2 , 4 , 5 ]
##STEP1
ランダムに1組の数字を決めます。今回は、親1 =[ 3 , 7 , **2** , 5 , 6 , 1 , 4 ]
親2 =[ 1 , 7 , **3** , 6 , 2 , 4 , 5 ]にしました。
この位置を変えずに子に遺伝子をコピーします。子1 =[ # , # , 2 , # , # , # , # ]
子2 =[ # , # , 3 , # , # , # , # ]「#」はまだ数字が埋まっていない場所です。
##STEP2
次に先ほどランダムに決めた数字
PyTorchでマインスイーパを機械学習
#はじめに
練習がてら、PyTorchを使って自作のマインスイーパを機械学習させてみます。
わからないことだらけなので、いろいろと勉強しながらメモ。
一旦メモ書き程度に作成して、必要ならあとから体裁整える。#目標
Windowsの標準(だった)マインスイーパの初級を、安定してクリアできるようになること。
とりあえずは9割ぐらいの勝率を目指す。#構成
[こちら](https://book.mynavi.jp/ec/products/detail/id=90706)のDQNを写経しました。
では済まないので、簡単に。ネットワークはシーケンシャルモデルを使用。
入力層(状態$s$)と出力層($Q_{s,a}$)のニューロン数は盤の目の数。
隠れ層は2層で、各層のニューロン数は盤の目の数×`SIZE_MAG`。
とりあえず盤の目の数に対してスケーリングすればいいかなと(適当)活性化関数はReLU、最適化手法はAdam(学習率0.001)を使用。
マインスイーパは自作。画像取り込んで頑張ろうかと思ったけど、本題はそこじゃないので。
アルゴリズムは省略。報酬は次の通り。
|
テキストファイルをJSON用に変換するスクリプトをPythonで作ってみた(vscodeのユーザースニペット用)
## はじめに
現在web制作の勉強をしているのですが、VSCodeでユーザースニペットを登録する時にいちいち行頭や行末にダブルクォーテーション付けたりしないといけないのが面倒だったので、
ファイルの中身をJSONで使いやすい形に変換してくれるpythonスクリプトを自作してみました。
(webなのにJavaScriptじゃないのは、そっちはまだそこまで慣れていないからです汗)## ソースコード
convはconversionの略です“`python:json_conv.py
”’
対象のファイル内のテキストを、JSONの値として使えるように変換するスクリプト。
(i)全ての「”」の後ろに「\\」を追加し、
(ii)全てのタブ入力をタブ記号(\\t)に置換し、
(iii)すべての行頭に3個のタブ入力と「”」、行末に「”,」を追加し、
(iv)文書の一番最後に「”」を追加する。第一引数のファイル(input_file)を元に変換し、その結果を第二引数のファイル(output_file)に書き込む。
(output_file を指定しないと、input_file をそのまま
ゼロから始めるLeetCode Day12 「617. Merge Two Binary Trees」
#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。その対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。
せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetCode Day11 「1315. Sum of Nodes with Even-Valued Grandparent」](https://qiita.com/KueharX/items/edd85ca15a78e8b1c335)基本的にeasyのac
ゼロから始めるLeetCode 目次
# 概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。
その対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。
せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
Python3で解いています。
# リンク集
この記事をストックしておくと新しい記事の追加時に通知されます。
コードだけ見たい方はこちらの
[Github](https://github.com/Kuehar/LeetCode)をご覧ください。記事のリンクはこちら
[ゼロから始めるLeetCode Day1 「1389. Create Target Array in the Given Order」](https://
MacOSXでバッテリーに優しく。Pythonで過充電アラートを実装してみた。
## [経緯 ~どうでもいい話~]
常時使っていたMacbookを修理に出す関係で、昔のMacbookを引っ張り出しました。
すると、充電の割合表示がバグっていて、13%とかなっているのに、実は90%充電できていたり、、、バグ?よくわからない状態でした。再起動してもSMCリセット?みたいなのをしても直らなかったので、いつものMacbookで使っていた充電アラートを入れようとしたのです。
バッテリーの寿命を伸ばすため、充電状況を管理するものです。「Battery Heroより未然に過充電を防げると思うCharge Check使ってみる」
https://jitenshatoryokou.com/chargecheck-14199.htmlが、充電アラートのChargeCheckのダウンロードサイト(*)が「403 Forbidden」エラーとなっていました。
*http://blog.macorz.com/2338.htmlGoogleにもIndexされていないようで、困ったのでPythonで作ってみました。
## [Code]
PC : MacBook Pro (
ゼロから始めるLeetCode Day11 「1315. Sum of Nodes with Even-Valued Grandparent」
#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。その対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。
せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
基本的にeasyのacceptanceが高い順から解いていこうかと思います。
前回
[ゼロから始めるLeetCode Day10 「1431. Kids With the Greatest Number of Candies」](https://qiita.com/KueharX/items/62f36c578bf2def36a82)# 問題
[1315. Sum of Nodes with Even-Valued Grandp
Python のモジュールとパッケージを抽象的に理解してみる
# はじめに
Python のインポートシステムについて、
– モジュールは `.py` ファイル
– パッケージは `__init__.py` を置いたディレクトリなどと理解してもよいが、
物理ファイルから離れ、少し抽象化して考えることによって、モジュール名、相対インポート、初期化タイミング、名前の可視性など、システム全体の見通しがよくなると思っている。なお、本記事では **名前空間パッケージ[^1]** は解説の対象外としている (私が理解していないため)。
[^1]: https://docs.python.org/ja/3/reference/import.html#namespace-packages
# 参考文献
いずれも v3.8.2 版を閲覧した。
– Python 言語リファレンス, 7.11. import 文: https://docs.python.org/ja/3/reference/simple_stmts.html#the-import-statement
– Python 言語リファレンス, 5. インポートシステム: https:
算数教具「ジャマイカ」を再現しよう❗️ vol.01 「Pythonで画像を表示するための備忘録」
# はじめに
このシリーズは、とある**算数教具「ジャマイカ」**について、
以下の目的を達成するべく奮闘する記録です。**1.** ***「ジャマイカ」のゲームを画像表示などを用いたプログラムで動かせるようになる。***
**2.** ***「ジャマイカ」におけるサイコロの任意の組み合わせについて、解の存在とその内容を探索・提示するプログラムを作る。***## Q1. 算数教具「ジャマイカ」って何?
### A1. 「ジャマイカ / Jamaica」とは、サイコロを用いた”数遊び”を題材とする算数教具として販売されているものです。
■ ***AmazonやYahoo!ショッピングなどの通販サイトでも販売されている一般的な商品です。***
➡︎ Amazon販売ページは[こちら](https://www.amazon.co.jp/dp/4902756161/ref=cm_sw_r_tw_dp_U_x_Xr
JQueryとPythonを勉強しながらGCP上でWebサービスを公開するまで
# はじめに
CORVID-19のせいで時間があり余っているため、少しだけ知識のあるJQueryやPython等を使って何かサービスを外部公開できないか考えてみた。
いろいろ考えてみたが、自分が使いたいものを作ってみることにした。それは**モバイルSuicaの利用履歴を経費精算に簡単に出せるように編集する**というものである。
完成品はこちら
https://www.mobilesuica.work
# 筆者のレベル– プログラムを最初に触ったのは25年前に大学の研究でC言語を利用したとき
– 大学を卒業すると全く触れなかったが、10年ほど前にちょこっとRubyとVisual Basicを、2年ほど前からPythonでREST APIを叩くスクリプトを作り始める(自社製品の勉強も含めて)
– 2020年の2月ぐらいから社内の詳しい人に教えを請う形でJavascript+Python+Dockerという今回のアーキテクチャの実装方法を教えてもらう
– 所謂製品レベルのものを作った経験は一切なし# アーキテクチャ
コンテナ、パブリッククラウドの勉強もするために以下のような構成とした
RaspberryPiへのOpenCVインストール手順
RaspberryPiにOpenCVをインストールしようとしたらかなりつまづきましたが、信頼できるページからビルド済パッケージのopencv-pythonを簡単にインストールする方法がわかったので共有したいと思います。
最初は、RaspberryPi上でビルドして使っていたのですが、インストールには2時間程度はかかるし、CMakeとかに慣れてないとめちゃめちゃつまづきます。特に理由がなければopencv-pythonでいいと思いますが、一応インストール方法は載せておきます。
ライセンスについての注意点も記載しておきます。
##■環境
・RaspberryPi4(OS:Raspbian Buster with desktop)に環境構築します。
・PythonでOpenCVを使うことを前提とします。PyhtonのバージョンはPython3.7.3です。
・インストールするOpenCVのバージョンはOpenCV4です。##■記事の流れ
__1.インストールの方法は大きく分けて2通り__
●非公式のビルド済パッケージ(opencv-python)をインストール
①依存ライブラリのイ
言語処理100本ノック 2020に挑戦してみた:第1章
# はじめに
[言語処理100本ノック 2020](https://nlp100.github.io/ja/)に挑戦してみました。
他の章のリンクは[こちら](https://qiita.com/makototama24/items/bf4abb64fc52fee7f2ee)から、ソースコードは[こちら](https://github.com/makototama24/100knockLanguage)からご覧いただけます。#第1章 準備運動
## No.00 文字列の逆順
>文字列”stressed”の文字を逆に(末尾から先頭に向かって)並べた文字列を得よ.“`000.py
str = ‘stressed’
print(str[::-1])# -> desserts
“`## No.01 「パタトクカシーー」
>「パタトクカシーー」という文字列の1,3,5,7文字目を取り出して連結した文字列を得よ.“`001.py
str = “パタトクカシーー”
print(str[0:8:2])# -> パトカー
“`
## No.02 「パトカー」+「タクシー」
AtCoder Beginner Contest 166 参戦記
# AtCoder Beginner Contest 166 参戦記
## [ABC166A – A?C](https://atcoder.jp/contests/abc166/tasks/abc166_a)
2分半で突破. 書くだけ. コードテストが詰まってて時間がかかった.
“`python
S = input()if S == ‘ABC’:
print(‘ARC’)
elif S == ‘ARC’:
print(‘ABC’)
“`## [ABC166B – Trick or Treat](https://atcoder.jp/contests/abc166/tasks/abc166_b)
2分半で突破. B問題にしては難しいような? 持ってるか持っていないかをテーブルで管理して、持っている人は持っているとテーブルに書き込んで、最後に持っていない人を集計するだけ.
“`python
N, K = map(int, input().split())t = [0] * N
for _ in range(K):
d = int(inpu
ABC166をPythonで A~C問題
#はじめに
今回もAtCoder Beginners Contest 166にPythonで挑戦しました!!
B問題の出力を間違えているのに気づくのが遅れ、かなりロスしてしましました…
にしても、2日連続のABCはいいですね!!#A問題
“`Python:A.py
s = input()
if s == “ABC”:
print(“ARC”)
else:
print(“ABC”)“`
#B問題“`Python:B.py
n, k = map(int, input().split())
d = [0] * k
sunuke = {}
for i in range(n):
sunuke.setdefault(str(i),0)
for i in range(n):
sunuke[str(i)] = 0for i in range(k):
d[i] = int(input())
A = list(map(int, input().split()))
for j in range(d[i]):
su
言語処理100本ノック 2020に挑戦してみた
# はじめに
[言語処理100本ノック](https://nlp100.github.io/ja/)に挑戦してみました。
Pythonどころかプログラミングもまともにしたことがないので不安ですが、何かあればコメント等してくれると大変助かります!
Python3.8.2を使用しています。# リンク
挑戦した問題及びソースコードを章ごとに分類しました。
(リンクを貼っていない章は未挑戦です)[第1章 準備運動](https://qiita.com/makototama24/items/bbe5f96bec10298596dd)
第2章 Unixコマンド
第3章 正規表現
第4章 形態素解析
第5章 係り受け解析
第6章 機械学習
第7章 単語ベクトル
第8章 ニューラルネット
第9章 RNN, CNN
第10章 機械翻訳
RAPIDS
# RAPIDSの学習のためのまとめ メモ
APIの種類
cuDF, cuML, cuSPATIAL, cuGRAPH, cuSIGNAL, cuXFILTER, CLX, NVSTRINGS## 概要
https://docs.rapids.ai/overview/RAPIDS%200.13%20Release%20Deck.pdf## 何ができるか(使用例)
https://medium.com/rapids-ai## ドキュメント
https://docs.rapids.ai/api## ノートブック・サンプル
### cuDF and Dask-cuDF
https://rapidsai.github.io/projects/cudf/en/0.13.0/10min.html
### RAPIDS Notebooks
https://github.com/rapidsai/notebooks
### RAPIDS Notebooks 2
https://github.com/rapidsai/notebooks-contrib
numpyでヒストグラムの最大地点を取得する関数
meanでもmedianでもなくhmaxを取得したい時がある。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278468/4b973719-5eff-8f89-1856-b63361eb3cac.png)
関数
“`
def hmax(x, bins=20):
import numpy as nphist, bins = np.histogram(x, density=True, bins=20)
delta = (bins[1]-bins[0])/2xr = np.linspace(np.min(bins)+delta,np.max(bins)-delta,len(bins)-1)
return xr[np.argmax(hist)]
“`プロット
“`
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
%matp
DjangoのHTMLテンプレートその2
# はじめに
ここでは、djangoのHTMLテンプレートの継承などについて解説します。
# HTMLテンプレートの継承
`extends`を用いることで、ベースになるHTMLテンプレートファイルを継承することができます。
`{% block ブロック名 %}`とすることで書き換えるブロックを作ることができます。CSSやjavascriptのカスタムファイルの読み込みにも使えます。“`html:base.html
ページタイトル
{% block content %}
{% endblock content %}
“`
“`html:sample.html
{% extends ‘base.html’ %}{% block content %}
{% endblock content %}
“`# テンプレートの組み込み
`includes`を用いること
アンビソニックスシミュレーション Python
#高次アンビソニックスについて
アンビソニックスとはある受音点に入射する音波の到来方向すなわち音波の入射指向性を再現することで立体的な音響再生を実現する手法です。ある点に入射する音波の三次元の指向特性を球面調和関数により、展開し再生時に展開された指向特性を再現するようにスピーカアレイの各スピーカの出力を決定することで入射指向性を再現するもので0次と1次に注目したものをアンビソニックスと呼ばれ、2次以上の球面調和関数も用いるものを高次アンビソニックスと呼ばれています。今回の記事ではマイクロホンで収音し、その後仮想的にスピーカーを配置し、音場再現するといった流れのコードを記載します。
##シミュレーションに用いる波について
今回の記事で書くシミュレーションでは平面波しか扱いませんが平面波・球面波・指向性球面波の3つがあります。
それぞれのデカルト座標系での波の式は次のように書くことができます。
$$e^{i\vec{k_i}\vec{r}}$$
$$\frac{e^{ik|r-r_s|}}{4\pi|r-r_s|}$$
$$\frac{e^{ik|r-r_s|}}{4\pi|r-r_
Prophetの時系列予測をPlotlyでよりわかりやすく可視化する
# 概要
Facebook製の時系列予測ライブラリProphet、時系列予測について全くの知識が無くても、曜日の変動、全体のトレンド傾向等がプロットできてすばらしいです。
そのプロットについて、公式マニュアルには「plotlyを使ってよりインタラクティブに可視化できるよ」とさらっと書いているだけなのですが、いろいろいじってみたところ、以下のポイントにはまりました。* トレンド線、変化点はオプションで指定しないと表示されない
* Google Colaboratory上だとplotlyが表示されない誰かの役に立てばと思い、はまりポイントの解決法を共有します。
# 環境
macOS 10.15
Python 3.7.6
Prophet 0.6
Plotly 4.6.0# この記事のNotebook
以下にアップロードしてあります。
https://github.com/nekodango/prophet_plotly_sample# プロットでPlotlyを使う
[公式のチュートリアル](https://facebook.github.io/prophet/docs