- 1. 平方分割
- 2. 【Python】S3の署名付きURL発行時にダウンロード時のファイル名を指定する方法
- 3. 特殊な条件下でのハイ&ローゲーム(Hi-Lo)を行うAIモデル
- 4. 『モデルベース深層学習と深層展開』読み会レポート#1
- 5. ABC349(Atcoder Beginner Contest)のA~E(A,B,C,D,E)問題をPythonで解説(復習)
- 6. sklearn.tree.DecisionTreeRegressorのデフォルト実装
- 7. ABC349 with Python (A~E)
- 8. [Python] 関数の引数に関数を渡す際の注意点
- 9. [Django] カスタムユーザーモデルを使ってみる
- 10. Docker × Django 開発環境作成
- 11. MacでのPython2、Python3の話
- 12. 【python】2024年北見工業大の整数問題をプログラミングしてみた
- 13. Python初心者の備忘録 #14 ~統計学入門編04~
- 14. [Python3][Google Colab]画像ファイル名を一連番号に変更する方法
- 15. 平方分割のバケット
- 16. 2次元区間和
- 17. pythonの __name__ == “main”の意味
- 18. gRPCのサンプルを作って動かしてみた。
- 19. VAEとEMアルゴリズムの違いについて
- 20. 二次元累積和 (paizaランク B 相当)
平方分割
コメントで教えてもらった方法を元に
下記のようにしました。
ただ、合わなかったけど。“`py
K = int(input())
A = [int(input()) for _ in range(10000)]
ans = []
for i in range(0, 10000, 100):
ans.append(max(A[i:i+100]))for _ in range(K):
minX,maxY = map(int,input().split())
minX = int(minX ** 0.5)
maxY = int(maxY ** 0.5)
print(max(ans[minX:maxY]))“`
結局わからなかったのでタイムオーバーしたのでギブアップ。
どうやら後半考え方が間違っていたようで。。。
いや、どうやって調べようと思ってたが、よく考えたら100(N0.5乗)で割った商がAnsの該当する配列の要素の番目になるのか。“`py
N,K = 10000, int(input())
root = int(N **
【Python】S3の署名付きURL発行時にダウンロード時のファイル名を指定する方法
[ドキュメント](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html) にもやり方が書いていないので残しておきます。
Paramsパラメータに `’ResponseContentDisposition’: f”attachment; filename = ファイル名”` を設定します。
※ ファイル名をURLエンコードするのを忘れないように注意。“`python
from urllib.parse import quote
filename = quote(“サンプルファイルだよ.txt”) # ファイル名をURLエンコードpresigned_url = s3_client.generate_presigned_url(
ClientMethod = “get_object”,
Params={
“Bucket”:get_env().output_app_bucket,
“Key”:os.path.join(
特殊な条件下でのハイ&ローゲーム(Hi-Lo)を行うAIモデル
# 目次
1.ハイ&ロー(Hi-Lo)とは何か
2.使用したライブラリと手法
3.今回の特殊な条件
4.Q学習のプログラム
5.今後の展望※ミスなどがありましたら報告願います
# 1. ハイ&ロー(Hi-Lo)とは何か
ハイ&ローは、トランプを用いるカードゲームで、名前の通り、高い(high)か低い(low)かを当てる単純なゲームです。
単純なだけに細かい所で色々ルールが派生したり違ったりすることもあります。
最近では、オンラインカジノサイトなどで有名なため、知っている方も多いと思います。
今回は、オンラインカジノでのハイ&ローのルールを採用していきます。
### 手順
1.jokerを除いた52枚のトランプをよくシャッフルし、山札を裏向きにしておく
2.ディーラーが山札の一番上を表にして前に置く
3.プレイヤーは次に山札から出るカードが今開示されているカードより高い(high)か低い(low)かを予想する
(カードの大きさは、小さい順に2,3,4,5,6,7,8,9,10,J,Q,K,A)
4.ディーラーは伏せられていたカードを開示する
5.(1)予想が正しかった場合は、オッズ
『モデルベース深層学習と深層展開』読み会レポート#1
$\def\bm{\boldsymbol}$
# 概要
– オンラインで開催している[『モデルベース深層学習と深層展開』読み会](https://majime-ni-study.connpass.com/event/)で得られた知見や気づきをメモしていく
– ついでに、中身の理解がてらJuliaサンプルコードをPythonに書き直したコードを晒していく
– 自動微分ライブラリにはJAXを使用する# 第1回
## 大まかな内容
– 深層展開とは
– アイデアの中核
– 深層展開とモデルベース深層学習の関係
– 深層学習の基礎技術の理解
– MLPの数式理解
– ミニバッチ学習法、確率的勾配法、誤差逆伝搬法
– 自動微分と計算グラフの理解
## 議論になったこと
### 1.3.2節 あたり
– モデルベースでやれるなら、それで済まないのか
– ->どんなにうまくやってもモデル化誤差が残る。また、経年劣化等で真のモデルも変化する。
– 深層展開では式の形を作ることに相当することもできるのだろうか
– ->学習対象のパラメータの設計
ABC349(Atcoder Beginner Contest)のA~E(A,B,C,D,E)問題をPythonで解説(復習)
# ABC349(Atcoder Beginner Contest)のA~E(A,B,C,D,E)問題をPythonで解説(復習)
# A問題
– 全員の持ち点の合計は`0`で不変である.
– 当然,引き分けたときは,不変である.
– 勝敗が生まれたときは,誰かが`1`点を得るが,誰かが`1`点を失う.だから,全員の合計点は不変.
– 入力で`N-1`人の点数の合計が分かっていれば,それをマイナスさせた値が答えである.
– (補足)最初の標準入力の`N`は今回は参照しません.
“`A.py
“””
<方針>
– 全員の持ち点の合計は`0`で不変である.
– 当然,引き分けたときは,不変である.
– 勝敗が生まれたときは,誰かが`1`点を得るが,誰かが`1`点を失う.だから,全員の合計点は不変.
– 入力で`N-1`人の点数の合計が分かっていれば,それをマイナスさせた値が答えである.
– (補足)最初の標準入力の`N`は今回は参照しません.
“””# 標準入力を受け取る.
N = int(input())
A = list(map(int, input().spl
sklearn.tree.DecisionTreeRegressorのデフォルト実装
# この記事の内容
scikit-learn の Decision Tree について説明します。
デフォルトの学習/推論/特徴量重要度算出アルゴリズムはできるだけ詳しく説明しましたが、それ以外の内容(パラメータやアトリビュート、使用上の注意など)にはあまり触れていません。
より詳しく知りたい方は末尾の参考文献(scikit-learnのドキュメント)をご覧ください。
# 木構造
まず用語の説明をします。
文献によって使われる用語は微妙に異なりますが、この記事では以下の用語で説明をします。木(有向木)とはノードとパスを持つ以下のような構造の事を指します。
![スクリーンショット 2024-01-23 21.36.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1625730/932e1620-47db-8762-f003-073ced8da1ad.png)
根から順番に枝分かれをしていき、末端のノードを葉と呼びます。
各パスに対して、パスの根本を親ノード、行き先を子ノードと呼びます。木構造
ABC349 with Python (A~E)
ABC349のA~E問題をpythonで解説していきます。
# A – Zero Sum Game
## 問題
$1$ から $N$ の番号が付けられた $N$ 人の人がおり、この中で一対一の勝敗のつくゲームを何度か行いました。$N$ 人は最初にそれぞれ持ち点として $0$ を持っており、各ゲームでは勝者の持ち点が $1$ 増え、敗者の持ち点が $1$ 減ります(持ち点が負になることもあります)。最終的に人 $i\ (1\leq i\leq N-1)$ の持ち点が $A_i$ になったとき、人 $N$ の持ち点を求めてください。なお、ゲームの進行によらず最終的な人 $N$ の持ち点は一意に定まることが示せます。https://atcoder.jp/contests/abc349/tasks/abc349_a
## 考察
各ゲームを終えた後、勝者の持ち点が1増え、敗者の持ち点が1減るため、すべての人の持ち点の合計は必ず0になっています。したがって、$\sum_{i=1}^N A_i = 0$より、$A_N = -\sum_{i=1}^{N-1} A_i$で求まります。
## コード
[Python] 関数の引数に関数を渡す際の注意点
# 結論から言うと...
関数の引数に関数を渡した場合,実行時間が増えることがわかった(自明な気もするが).特にループ処理内で
“`
FUNCTION(function, a, b, c…)
“`
の形を作ると,実行時間に大きな差が生じるので注意が必要.# 検証方法
以下のコードを実行した
“`python
import time#足し算の関数
def my_add(a,b):
return a+b#関数my_funcを受け取り,my_func(x,y)を返す関数
def arg_func(my_func,x,y):
return my_func(x,y)#2数の和を返す関数
def no_arg_func(x,y):return x+y
sum1=0
sum2=0start1=time.time()
for i in range(1000):sum1=arg_func(my_add,sum1,1)
end1=time.time()
start2=time.time()
for j in
[Django] カスタムユーザーモデルを使ってみる
## はじめに
自分用の個人開発のメモ/備忘録として記録していきます。## 環境
django5.0
↓ dockerでの開発環境作成はこちらhttps://qiita.com/mkthrkw/private/588226d30690c707d2b8
## やりたいこと
E-mailとPasswordでの認証に変更し、IDをULIDへ変更したい。## ULIDについて
UUIDと同様に一意性保証されていて、生成時刻のミリ秒単位で時系列ソートが可能なULIDを選択https://qiita.com/sotaheavymetal21/items/ef05372462dd79086a57
## パッケージインストール
“` pip install ulid-py “`
https://pypi.org/project/ulid-py/
“` django-ulid “`を使おうと思ったが、フィールドを
“` ULIDField(default=default, primary_key=True, editable=False) “`
にするとなぜか “
Docker × Django 開発環境作成
## はじめに
自分用の個人開発のメモ/備忘録として記録していきます。## 環境
docker desktop
windows 11## やりたいこと
Django開発環境をdocker上に作成したい。
最小限の構成とし、必要に応じて修正していく。## ディレクトリ
プロジェクトディレクトリを任意の場所に作成。
docker関連のファイルとその配下にsrcディレクトリを作ることにした。
“`
project directory
│ .env
│ docker-compose.yml
│ Dockerfile
│ requirements.txt
└─ src
“`## 必要ファイルを準備
### envファイルを作成
envファイルにてホスト側のディレクトリやポートを指定。
ポートは他コンテナと重複しないものを設定する。
“` :.env
# Directory
HOST_WORKDIR=./src# Python version
PYTHON_VER=3.12-slim-bullseye# Port
APP_HOST_PORT=8888
MacでのPython2、Python3の話
macOSでは、標準でPython 2がインストールされていますが、最新のmacOSバージョンではPython 2は廃止され、Python 3が推奨されています。そのため、Python 3を使う場合は通常`python3`コマンドを使用します。`python`コマンドを使用するとPython 2が実行されるため、エラーが発生します。
もし`python`コマンドを使用してPython 3を実行したい場合は、以下のいずれかの方法でPython 3をデフォルトのPythonに設定することができます。
1. **シンボリックリンクの変更**: Python 3の実行ファイルを`python`という名前のシンボリックリンクに設定します。
“`bash
sudo ln -sf /usr/bin/python3 /usr/bin/python
“`これにより、`python`コマンドがPython 3を実行するようになります。ただし、システムの動作が変更されるため、注意して使用してください。
2. **zshの設定変更**: zshの設定ファイル(通常は`~
【python】2024年北見工業大の整数問題をプログラミングしてみた
# はじめに
北見工業大学の入試問題にプログラミング題材にふさわしい問題があったので、pythonでプログラミングしました。## 問題
> 2の2024乗を7で割った余りを求めよ。
> 出典 2024年北見工業大学## プログラミングしたコード
実装したソースコードです。“`python
# 北見工業大2024年の入試問題
# 2の2024乗を7で割った余りを求めるseven_remainder_array = []
def seven_div_remainder(num):
remainder = num % 7
return remainderdef main():
base_number = 2
power_number = 2024for i in range(0,power_number+1):
num = pow(base_number,i)
ans = seven_div_remainder(num)
seven_remainder_array.append(ans)print(
Python初心者の備忘録 #14 ~統計学入門編04~
# はじめに
今回私は最近はやりのchatGPTに興味を持ち、深層学習について学んでみたいと思い立ちました!
深層学習といえばPythonということなので、最終的にはPythonを使って深層学習ができるとこまでコツコツと学習していくことにしました。
ただ、勉強するだけではなく少しでもアウトプットをしようということで、備忘録として学習した内容をまとめていこうと思います。
この記事が少しでも誰かの糧になることを願っております!
**※投稿主の環境はWindowsなのでMacの方は多少違う部分が出てくると思いますが、ご了承ください。**
最初の記事:[Python初心者の備忘録 #01](https://qiita.com/Yushin-Tati/items/961dc47d6163f944f7e9)
前の記事:[Python初心者の備忘録 #13 ~統計学入門編03~](https://qiita.com/Yushin-Tati/items/af085499c49d244068ee)
次の記事:まだ本記事は**統計的仮説検定**についてまとめてあります。
## ■学習に使用
[Python3][Google Colab]画像ファイル名を一連番号に変更する方法
## 要 旨
Python3においてGoogle Colabを使用して、画像ファイル名を一連番号に変更する方法について記述します。
## 実行環境
PC: DELL G16 7630
言語:Python3
プラットフォーム:Google Colab
## 実施要領
imageフォルダ内の画像ファイル名を一連番号に変換するコードは、以下の通り。
“`python3
import os
import glob# 画像ファイル名を取得
files = glob.glob(‘image/*’)# 画像分だけ名前変更処理を繰り返す
for idx, f in enumerate(files):
# ファイル名を分解
ftitle, fext = os.path.splitext(f)# ファイル名を変更
os.rename(f, format(idx, ’04d’) + fext)
“`
このコードを実行すると、image フォルダ内の画像ファイル名が 0000.jpg、0001.jpg、0002.jpg といった連番に変更されます。
##
平方分割のバケット
https://paiza.jp/works/mondai/query_primer/query_primer__square_division_bucket
ちょっとよくわからなかったので、色々調べながら。
(下記は引用)
max 関数は引数に list オブジェクトを渡すと、list オブジェクトに含まれる要素の最大値を返します。この際、計算量は O(N) です。“`py
import math
A = [int(input()) for _ in range(10000)]
rootA = int(math.sqrt(10000))
ans = [-1] * rootAfor i in range(rootA):
start, end = 100 * i, 100 * (i + 1)
ans[i] = max(A[start:end])for val in ans:
print(val)
“`
たとえば、
100*100の平方根ごとに分け、調べるグループを100個ずつにして
そのなかでやりたい処理(たとえばこの問題なら100個の中から
2次元区間和
https://paiza.jp/works/mondai/query_primer/query_primer__two_dimensions_interval_sum
常識的に考えたらこんな感じではいかないなと思うのだけど一応
“`py
H, W, N = map(int, input().split())
A = [[int(x) for x in input().split()] for _ in range(H)]
#W*Hの配列に0を入れたものを作る(0の分だけ+1する)
ans = [[0] * (W + 1) for _ in range(H + 1)]for i in range(1, H + 1):
ans[i] = [0] + A[i – 1][:]
#計算して入れていく(もともとある数字に累積和を入れていくので+=になる)
for j in range(1, W + 1):
ans[i][j] += ans[i – 1][j] + ans[i][j – 1] – ans[i – 1][j – 1]print(
pythonの __name__ == “main”の意味
# `__name__ == “__main__”`の意味
参考関数用のファイル「test_m.py」、関数呼び出し用ファイル「call_m.py」
“`py
#test_m.py
def sample():
print(__name__)sample()
#出力結果
__main__
“`“`py
#call_m.py
from test_m import tax
sample()#出力結果
test_m
test_m
“`モジュールの呼び出し(import)で出力したときに2回出力するのを防ぐ。
“`py
#test_m.py
def sample():
print(__name__)if __name__ == “__main__”:
print(sample())
“`
“`py
#call_m.py
from test_m import tax
sample()#出力結果
test_m
“`
gRPCのサンプルを作って動かしてみた。
## gRPCとは?
仕事関係で、gRPC技術と関わっていたので、調べてみることにしました。ググってみると、
「gRPCは、Googleが開発したオープンソースの高性能なリモートプロシージャコール(RPC)フレームワークです。」らしいです。えーと、ぴんとこないので、ChatGPTに簡単に解析をお願いしました。
>質問: ちょっとわかりづらいので、小学生でもわかるようなケースを例をあげて欲しいです。
回答: 以下は回答です。
>
>もちろんです。gRPCを小学生に説明するなら、こんな感じでしょうか:
>
>想像してみてください。あなたは大きな学校の一部で、たくさんのクラスがあります。各クラスは、特別なタスク(仕事)を持っています。例えば、一つのクラスは図画を描くことが得意で、もう一つのクラスは音楽を作ることが得意です。
>
>でも、時々、あるクラスが別のクラスの助けを必要とすることがあります。音楽クラスが絵を描くことが必要になった時、どうすればいいでしょう?そこで、gRPCというシステムが活躍します。
>
>gRPCは、学校の中でメッセージを送るための超速いポストマンのような
VAEとEMアルゴリズムの違いについて
# はじめに
情報系学部学生のsunです。この記事はEMアルゴリズムとVAE(変分オートエンコーダー)にMNIST(手書きの数字データセット)を学習させて、視覚的にアルゴリズムとしての違いを理解することを目的にしております。# 注意
引用元は最後に記載しますが、コードの解説において、個人の解釈が間違っている場合があります。間違いを見つけた場合コメントにてお知らせくださいますと幸いです。## 1章 全体的なイメージと違いについて
### 1-1
VAEのイメージから軽く触れたいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3674061/c1c7d2bc-f90b-53f9-9e47-2d723edf1784.png)
VAEとEMの比較をしたいと思います。
仮定として、MNISTの各ピクセル値がベルヌーイ分布に従うとします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/
二次元累積和 (paizaランク B 相当)
https://paiza.jp/works/mondai/query_primer/query_primer__two_dimensions_cumulative__sum
累積和を2次元でやればいいので
こんな風に書けばいいはずだと思ってたんですが、
どうも違うようで。。。“`py
H,W,N = map(int,input().split())
A = [list(map(int,input().split())) for _ in range(N)]
ans = [[0,0,0]] + A[:]
for i in range(1,H + 1):
for j in range(1, W + 1):
ans[i][j] += ans[i-1][j-1]
“`つまり、Ansで雛形を作ったんですが、
“`
[[0, 0, 0], [1, 2, 3], [4, 5, 6], [7, 8, 9]]
“`
ではなく
“`
[0, 1, 2, 3], [0, 4, 5, 6], [0, 7, 8, 9]]
“`
こうしないとだめだった。
じゃあ