- 0.0.1. 【合格体験記】Pythonエンジニア認定試験(基礎、データ分析)
- 0.0.2. ABC 082 B – Two AnagramsをPython3で解く
- 0.0.3. オンライン畳み込み
- 0.0.4. Pythonの組み込みhash関数を使ってバグを作った話
- 0.0.5. 『ゼロから作るDeep Learning』ひとり購読会 #01
- 0.0.6. Python の BeautifulSoup.find() の戻り値を確認
- 0.0.7. Python3: Elastic Cloud の filters の使い方
- 0.0.8. S3に格納されたファイルを検知し、EC2上のシェルを自動実行する
- 0.0.9. Python 3.10 以降では Optional や Union をわざわざインポートする必要が無くなって便利
- 0.0.10. すばらしきpyautogui
- 0.0.11. 【AtCoder解説】PythonでABC245のA,B,C,D問題を制する!
- 0.0.12. 【初心者ロードマップ 】機械学習完全独学奮闘記 0巻 上
- 0.0.13. [tensorflow]量子化パラメータの確認
- 0.0.14. ラズパイでcronを使う
- 1. プログラムの動作確認
- 2. cronの設定をする。
【合格体験記】Pythonエンジニア認定試験(基礎、データ分析)
# はじめに
ちょっと息抜き。本稿は趣向を変えて、お届けします。
筆者、Pythonエンジニア認定試験を直近の約半年のうちに2つ受験し、合格しました。
というわけで、合格を記念して、合格体験記を綴ることにしました。(Pythonエンジニア育成推進協会に投稿しろよ、って話ですが恥ずかしい。)
# 受験結果
– Python3エンジニア認定基礎試験
:::note info
合格評価得点:700/筆者の評価得点:850/結果:合格
:::
– Python3エンジニア認定データ分析試験
:::note info
合格評価得点:700/筆者の評価得点:975/結果:合格
:::」の各問題の類題をPythonで解きます。
(解法に詰まって調べたとき、C++の解法が多くPythonしか分からない私では参考にできなかったため。)
*競プロ & Python初心者のため、解法やコードの改善例、別解等アドバイス頂けますと大変ありがたいです。# [ABC 082 B – Two Anagrams](https://atcoder.jp/contests/abc082/tasks/abc082_b)
**【問題文】**
英小文字のみからなる文字列 s, t が与えられます。 あなたは、s の文字を好きな順に並べ替え、文字列 s′を作ります。 また、t の文字を好きな順に並べ替え、文字列 t′を作ります。 このとき、辞書順で s′
オンライン畳み込み
# この記事の目的
オンライン畳み込み(Relaxed Convolution [^ref1] または Relaxed Multiplication [^ref2] などとも呼ばれるようです)を $O(N(\log N)^2)$ で処理する方法について書きます [^bunkatsu] 。
[^bunkatsu]: 分割統治 FFT とも呼ばれるようですが、本稿では分割統治の考え方は使っていません。結果的には似たような処理をやっていることになりますが。
[^ref2]: New algorithms for relaxed multiplication
畳み込みがオンラインとは、 $A$ および $B$ の各項が前から順に与えられたとき、その都度、畳み込み $C=A*B$ の各項を順に返すことを言います [^online]。詳細は後述します。
[^online]: 参考文献では Relaxed という用語が使われていますが、「オンライン」の方
Pythonの組み込みhash関数を使ってバグを作った話
# 経緯と問題
DynamoDB で効率よいシャーディングの実施のために、キーの末尾に特定の識別子を付与する方法はベストプラクティスとして公式でも紹介されている。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/bp-partition-key-sharding.html#bp-partition-key-sharding-calculated
今回は、このシャーディングを行うためにユーザー固有のID (文字列) を元に識別子を計算したいと考えた。 その対策として、以下のようなコードを書いた。
“`python:バグありなのでこのコードは利用しないこと!
def primary_key(uid: str) -> str:
num = hash(uid) % 10
return f’SampleData.{num:02d}’
“`[`hash` 関数](https://docs.python.org/ja/3/library/functions.html#hash
『ゼロから作るDeep Learning』ひとり購読会 #01
(#01って、二桁で読み終われるのだろうか…。)
大変よろしくないことに仕事が停滞してしまっているので、すき間時間を使って『[ゼロから学ぶDeep Learning](https://www.oreilly.co.jp/books/9784873117584/)』の勉強を始めました。私は何ごとに付け基本がなっていないし、機械学習をまともに学習したこともないので、最も基本となるところはここかなと本書に手を出した次第です。
#まあ、QIITAでリンクを貼る必要はないかもしれないですけどね
とりあえず今日は1章をさらさらっと。Python自体はすでにインストールしてあって、VS Codeも使えるようにはしてある程度の経験者なので、NumPyのところ以外は復習という感じもありました。
NumPyはまったく初めてではないですが、今まで読んだ書籍で紹介されていたサンプルプログラムに出てきたくらい。そこでの解説を読めば「なるほど」とは思いますが、あんまり理解できた感じはしない。ましてやNumPyを使ったコードなど書けません。そもそも、NumPyが必要なプログラムを着想することもできなさそうと
Python の BeautifulSoup.find() の戻り値を確認
BeautifulSoup.find() の戻り値を簡単に確認してみた。
“`python
$ python
Python 3.10.3 (main, Mar 29 2022, 01:35:20) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> from bs4 import BeautifulSoup
>>> inner_html = r”’
…
…524…
…
… ”’
>>> soup = BeautifulSoup(inner_html)
Python3: Elastic Cloud の filters の使い方
こちらと同じことを python3 で記述しました。
[Elastic Cloud の filters の使い方](https://qiita.com/ekzemplaro/items/1ab696e2d230a59b548d)“`py:elastic_filter.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# elastic_filter.py
#
# Apr/01/2022
#
# ——————————————————————
import sys
import json
import requests
# ——————————————————————
def file_to_str_proc(file_in):
str_out = “”
try:
fp_in = open(file_in,encoding=’utf-8′)
S3に格納されたファイルを検知し、EC2上のシェルを自動実行する
### S3に格納されたファイルを検知して、EC2上のシェルを自動実行する(&SNSにて、結果をメールに送信する)
(やった手順)
1.(EC2上)シェルの作成
2.(EC2上)シェルの動作確認
3.(AWS)S3バケットの作成
4.(AWS)Lambdaの作成 & IAMの設定
5.SNSの設定(トピックの作成 & サブスクリプションの作成)
6.動作確認(省略していること)
・EC2へのsshの接続手順(teratermなどで、接続済みの状態で記載してます)
・EC2のインスタンス名などは、知っている状態で記載しています### 1.(EC2上)シェルの作成【test.sh】
(※今回は環境の都合上、「hulft」ユーザで作成しています。)
(※合わせる必要がある箇所は、※表記していきます)
(【test.sh】の中身)
“`
Python 3.10 以降では Optional や Union をわざわざインポートする必要が無くなって便利
#### Noneを返す場合のある関数の型ヒントを書く場合、以前は以下のように書いていた
“`old.py
from pathlib import Path
from typing import Optionaldef get_latest_log_path(search_dir: Path) -> Optional[Path]:
“””最新のログファイルのパスを取得するReturns:
Optional[Path]: ログファイルが存在する場合、最新のログファイルのパス。存在しない場合は None
“””
return max(
search_dir.glob(“**/*.log”),
key=lambda path: path.stat().st_mtime,
default=None,
)if __name__ == “__main__”:
print(get_latest_log_path(Path(“log”)))“`
### Pytho
すばらしきpyautogui
# pyautoguiとは
ざっくり、「マウス操作」や「キーボード入力」を自動操作するためのモジュールという感じです。
例えば、`デスクトップに表示している画面上で特定の表示がされた時は勝手にクリックされてほしいなぁ`などと人生の中で一度は思うことがあるのではないでしょうか(身近な例で言うと、僕は料理系の動画が好きなので参考程度に観ている最中で動画と一緒に進めていると、広告のスキップなどで自動にしてくれと思うことが多々あります。)
今回は僕の悩みを自動的な操作で解決してくれるのが、`pyautogui`になります。
## 実際に動かしてみる
実行環境については以下の通りです“`
macbook air
Python 3.9.6
PyAutoGUI==0.9.53
opencv-python==4.5.5.64
Pillow==9.0.1
“`などで、とりあえずどれにおいても再試版をインストールしたつもりです。
`python3.9`についてはちょっと不服(個人的には3.8が安定しているのではないかと思っています。あんまり調べていないので確証はないですが。。。)
【AtCoder解説】PythonでABC245のA,B,C,D問題を制する!
**ABC245**の**A,B,C,D問題**を、**Python3**でなるべく丁寧に解説していきます。
ただ解けるだけの方法ではなく、次の3つのポイントを満たす解法を解説することを目指しています。
– シンプル:余計なことを考えずに済む
– 実装が楽:ミスやバグが減ってうれしい
– 時間がかからない:パフォが上がって、後の問題に残せる時間が増えるご質問・ご指摘は**コメント**か**ツイッター**、**マシュマロ**、Discordサーバーまでお気軽にどうぞ!
**Twitter: [u2dayo](https://twitter.com/u2dayo)**
**マシュマロ: https://marshmallow-qa.com/u2dayo**
**ほしいものリスト: https://www.amazon.jp/hz/wishlist/ls/2T9IQ8IK9ID19?ref_=wl_share**
**Discordサーバー(質問や記事の感想・リクエストなどどうぞ!) : https://discord.gg/jZ8pkPRRMT**
よかったら**LGTM**や*
【初心者ロードマップ 】機械学習完全独学奮闘記 0巻 上
# はじめに
なぜこれを書こうと思ったのか、それは**今までプログラミングに挫折し続けてきたから**です。
独学も継続も苦手な自分への最後のチャンスだと思って書き続けます。
同じ初心者の方達と教え、教えられ合いながら頑張って行けたらなと思います。# 経歴と機械学習を始めたきっかけ
地方の薬学生(6年)です。24歳です。
2021年に休学して東京のSaaS企業で1年間ビジネスのインターンとして働かせてもらっていました。
そこで**データの持つ可能性とプロダクトの持つインパクト**に感動しました。
データがなければ今の時代決断は下せませんし、磨き抜かれたビジネスアイデアよりもプロトタイプに価値があります。
機械学習に興味を持ったのは前者でデータというものの性質や面白さを肌で実感したいと思ったからです。# 現状
スキルレベルはプログラミング(HTML,CSS,JS)かじったぐらいで、模写もまだできないぐらいです。
Progateのレベル上げに勤しんでました。(Lv181で中断)
Pythonは勉強始めて1ヶ月ぐらいです。
かなり効率の悪いやり方をした気がするので、参考にして(しないで
[tensorflow]量子化パラメータの確認
## 量子化とは
モデルのパラメータや演算結果を浮動小数点(float32など)から固定小数点(int8など)に変換することです。
モデルサイズが削減できる、組み込みデバイスなど浮動小数点演算器を持たないデバイスでも高速に推論できる、などのメリットがあります。通常のkerasモデルはパラメータを浮動小数点型で保持しており、各レイヤーの入出力も浮動小数点型です。
“`math
output(float32) = input(float32) * weight(float32) + bias(float32)
“`一方、量子化モデルではパラメータを固定小数点型で保持しており、各オペレータの入出力も固定小数点型になります。
“`math
output(int8) = input(int8) * weight(int8) + bias(int32)
“`## kerasモデルのパラメータ型の確認
kerasモデルのパラメータのデータ型は以下の変数で確認できます。“`python
from keras.applications.resnet import ResNet
ラズパイでcronを使う
プログラムの動作確認
1. 多分エディタでコードを書いていると思います。エディタ上で正しく動作するかまずは確認してください。
1. 次にターミナル上で動作するか確認します。hoge.pyを動作させたい場合は、
`python3 /home/pi/Document/hoge.py` と記述します。
**python3を頭に書いて絶対パスで指定**します。エラーが出た場合は修正してください。もしも権限が付与されていません。と表示された場合は
`chmod 777 /home/pi/Document/hoge.py`と記述しします。読込、書込、実行のフル権限を付与します。cronの設定をする。
まずはログを見れるようにしましょう。
#cron.* の「#」を消しましょう~~~Terminal.log
$ sudo nano /etc/rsyslog.conf
_____________________________
###############
#### RULES ####
################
# First some
Jupyter NotebookのSnippetを作成してライブラリのimportを楽にする試み(Jupyter @ Dockerでの方法)
日頃からJupyter Notebookを活用しています。GPU搭載マシーン(Linux)上でDockerを実行してJupyter Notebook(Tensor Flow Notebook)のコンテナを立てて利用しています。Notebook利用時にimportするライブラリはいつも似通っており、毎度毎度記載するのが煩雑であり、面倒くさい行程と感じていました。そこで、Notebookのテンプレート(Snippet)を設定して、import文の記載を楽にする試みをやってみることにしました。Jupyterにインターフェースが似ているGoogle Colaboratoryには設定メニューからSnippetの設定が可能ですが、Jupyterには専用のextensionをインストールする必要が有ります。本記事ではJupyter @ Docker環境を対象にしています。筆者が設定時に情報を探しましたが、Jupyter @ Dockerの情報は見つかりませんでした。。。 :scream: 同様の環境構築を考えておられている方のお役に立てれば幸いです。
# Jupyter Nbextensions
アルゴリズム~sort編~ python
**Bogoソート**
平均的な計算時間はO((n+1)!)となっています。
非常に効率が悪く、安定ソートではない。
bogoの由来は「bogus(偽物)」からきているらしい。配列をランダムに並び替えて配列の要素が左から順に小さくなっているかを都度調べていく。
運が良ければ早いし、最悪かなり時間がかかる。
“`python
def in_order(numbers: List[int]) -> bool:
return all(numbers[i] <= numbers[i + 1] for i in range(len(numbers) - 1)) def bogo_sort(numbers: List[int]) -> List[int]:
while not in_order(numbers):
random.shuffle(numbers)
return numbersnums = [random.randint(0, 1000) for _ in range(10)]
print(bogo_sort(nums))
“`
zip(*sorted(zip(list1, list2)))の意味がわからなかった話
# はじめに:zip(*sorted(zip(list1, list2)))が何やってるか分からなかった。
– 202203 現在、開催中の Kaggle competition「h-and-m-personalized-fashion-recommendations」に参加中。
– コンペ内の Notebook を読んでいる際に、`zip(*sorted(zip(list1, list2)))`の意味がよく分からなかった。
– 備忘録として残しておきます。# 理解できなかったコード
実際に理解できなかったコードは以下。
“`python
_, popular_items = zip(*sorted(zip(popular_items_group, popular_items_group.keys()))[::-1])
”’
ここで、すでに生成済みの変数の意味合いは以下。
——————-
popular_items_group:pd.Seriesオブジェクト。indexは各アイテムのユニークなid, valueは各アイテムの人気度合いを表す指標。
【Python】venv環境を起動しようとするもエラーが発生する
vnev環境を起動しようとするも、以下のエラーが発生した。
スペック情報
PC : MacBook Pro“`
UserPC / % source /tmp/venv1/bin/activate
source: no such file or directory: /tmp/venv1/bin/activate
“`venvのbin内にactivateがないというエラー
なぜと思い、bin内部を確認すると以下の内容が。。。“`
UserPC ~ % ls -la /tmp/venv1/bin
total 16
drwxr-xr-x 7 UserName wheel 224 3 7 11:00 .
drwxr-xr-x 4 UserName wheel 128 3 7 11:00 ..
-rwxr-xr-x 1 UserName wheel 276 3 2 11:47 django-admin
-rwxr-xr-x 1 UserName wheel 234 3 2 11:35 pip
lrwxr-xr-x 1 UserN
Pythonプログラムで野村證券のIPOブックビルディング申込を自動化しよう!
こちらの記事ではSBI證券のIPOブックビルディング申込を自動化するプログラムについて言及しました。
https://qiita.com/toranoko92114/items/994bafdb3f06ec268337今回は野村證券のIPOブックビルディング申込を自動化するプログラムを公開します!
# 本プログラムはこちらです
https://note.com/toranoko114/n/n2f66010eb284# プログラムを実行するまでの手順はこちら
PythonのPingPongゲームを解説してみた
## はじめに
最近はあまりコードをちゃんと書くことをしていないなと感じていたので、今回はYoutubeで見つけたPythonのPingPongゲームハンズオン動画の内容をもとに、構造を理解しやすいように説明を付け加えて記事にしていきたいと思います。
元ネタはこちらの「[How to create a Pong Game using Python in 6 minutes](https://www.youtube.com/watch?v=gJnUTX00Z9k)」です。各項目ごとにまとめてコード解説されているのでわかりやすかったです。動画の概要欄にもありますが、[GitHub](https://github.com/srimani-programmer/Ping-Pong-Game)上にソースが公開されています。## 作るゲームの全体像
以下のようなPingPongゲームを作ります。
![スクリーンショット 2022-03-29 12.16.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/