- 1. 【Python】GRU/LSTMによる将来の電力需要予測【前回の続き】
- 2. dataclass, namedtuple そして datajuggler
- 3. モデル共有 BYOM(Bring Your Own Model)
- 4. Python,Ruby,PHP,Java,JavaScript,Perlの論理演算子の比較
- 5. docker-compose + Raspberry Pi +nginx + Flaskで現在接続しているWi-FiのSSIDを取得するときの備忘録
- 6. Digdagワークフローでフロー内変数を使う上でハマったこと
- 7. 【初心者向け】pythonでasyncioを理解して使いこなす
- 8. 【トリビアのDelta Lake】#9 Pysparkで、timestamp同士の計算をうまくやる【DayTimeInterval】
- 9. Pythonで透過pngの背景色を指定しつつjpgにする
- 10. 40代おっさんPythonを勉強する(JSONファイルの読み書き編)
- 11. 【numpy】2つのベクトルの任意のベクトルからの回転角を算出する方法
- 12. Python機械学習/Anaconda仮想環境のおすすめ作成方法
- 13. AWS Lambda(Python)にてジオコーディングの一つであるGeoHash(ジオハッシュ)を扱う
- 14. フォルダ内の拡張子を一括変換する(python)
- 15. 機械学習ポテンシャル実装入門
- 16. pythonのアンパック演算子のメモ
- 17. Python でファイル名をなるべく連番になりつつもユニークにしたいメモ
- 18. poetryのpython version指定で沼った話
- 19. Remove Image Background using Pythonを実験
- 20. アルゴリズム実技検定(PAST) 第11回 D問題 Python解答例(Union-Find使用と不使用)
【Python】GRU/LSTMによる将来の電力需要予測【前回の続き】
# 1. はじめに
## 1-1. 本記事の概要と目標今回はGRU/LSTMで将来の電力需要の予測を行います。
前回の記事を踏まえた内容となっておりますので、
まだご覧頂いていない方はこちらを先にご覧下さい。https://qiita.com/kawanago_py/items/3a9bcbca5f8d2c309a51
前回行ったのは東京電力の公開する電気消費量の実績データにて、
RNN/GRU/LSTMの予測精度の比較、及び前処理による比較です。前回の予測では特徴量に **“月”, “日” ,”時”, “曜日”** に加え、
**“天気”, “気温”, “降水量”, “湿度”** の8つを用いていました。しかし完全に未知である将来の予測においては、
上記のような **気象情報も未知のデータになってしまうため、
前回のモデルでは完全に未知な将来の予測ができません** でした。今回の記事における分析のテーマは、
上記の
dataclass, namedtuple そして datajuggler
# はじめに
Pythonで辞書を使うとき地味に面倒なので、`[KEYNAME]`での参照です。辞書をdataclass や namedtuple のようにドット表記でアトリビュート参照するように値にアクセスできるようにしたライブラリが [datajuggler](https://pypi.org/project/datajuggler/) です。## 先人たちの功績のおかげ
といっても別段真新しいものではなくて、以下の素晴らしいプロジェクトをリファクタリングやラッピングして統合させたただけのものです。– [python-benedict](https://github.com/fabiocaccamo/python-benedict)
– [munch](https://github.com/Infinidat/munch)
– [adict](https://github.com/mewwts/addict).
– [serialize](https://github.com/hgrecco/serialize)# dataclass や namedtuple
モデル共有 BYOM(Bring Your Own Model)
[Teradata Vantage™ – Bring Your Own Model User Guide](https://docs.teradata.com/r/Teradata-VantageTM-Bring-Your-Own-Model-User-Guide/May-2022/BYOM-Functions) [リリース番号:3.0 最終更新日:2022/6/2]の内容をもとに作成しています。
> Vantageアナリティクス BYOMシリーズのコンテンツです。
:::note infor
Python,Ruby,PHP,Java,JavaScript,Perlの論理演算子の比較
Python,Ruby,PHP,Java,JavaScript,Perlの論理演算子の比較
# Python
https://qiita.com/dondondon/items/0b7de45078bee0ba2b13
# Ruby
https://qiita.com/yusuke_blog1026/items/ab33bdfa495597d04f0b
# PHP
https://qiita.com/tsukishimaao/items/b4a2f30c89ea16ef6eb1
# Java
https://qiita.com/takahirocook/items/748990882f2de7a630a1
# JavaScript
https://qiita.com/TakeshiNickOsanai/items/e180777619f1a49f30e5
# Perl
https
docker-compose + Raspberry Pi +nginx + Flaskで現在接続しているWi-FiのSSIDを取得するときの備忘録
# 概要
docker-compose + Raspberry Pi +nginx + Flaskで、現在接続しているWi-FiのSSIDを取得しようと思った時に結構詰まったので、やり方を残しておく。# ファイル構成
“`
.
├── docker-compose.yml
├── nginx
│ └── default.conf
└── web
├── app.py
├── Dockerfile
├── requirements.txt
└── templates
└── index.html
“`# docker-compose.yml
### ここで`wpa_supplicant.conf`のボリュームを作成しておく!!!!!!!!!!
“`yml
version: “3”
services:
nginx:
image: nginx:latest
container_name: nginx
ports:
– “82:80”
volumes:
– ./n
Digdagワークフローでフロー内変数を使う上でハマったこと
# はじめに
今回はプライベートの技術ではなく、仕事で使ってるものでの内容。とある業務にてワークフロー・ジョブシステムとしてDigdagを採用してシステム構築している。
初めて使うソフトなので慣れていないせいもあるが、検索してヒットするDigdag関連の記事には今回の内容に触れている記事が見当たらなかったため、忘備録として残しておく。# 実現したいこと
メインとなるPythonスクリプトにて、エラーが発生したらその内容を捕捉し、digdag.env.storeにてフロー内変数に格納する。
_errorパラメータにて別Pythonを呼び出し、格納したフロー内変数を参照し、エラー内容をログにまとめて書いたりGmailAPIを使ってエラー通知などをしたかった。# フローとスクリプト
Digdag自体の使い方は別の方々の記事に譲るとして、ここでは問題点のみ挙げる。実装したフローとスクリプトは簡単にするとだいたいこのような内容である。
“`digdag:test01.dig
_export:
not_found_file: False
errmsg: ” ”+t
【初心者向け】pythonでasyncioを理解して使いこなす
## 0. はじめに
pythonでスクレイピングといったらどのライブラリを使いますか?
多分大多数の人は「requests+BeautifulSoup」「Selenium」と答えると思うし、ググったらまずそうなると思うし、私もそうでした。もちろんそれでOKなんですが、**最近「Pyppeteer」とか「Requests-HTML」,「Playwright」なんてのを徐々に耳にするようになった。**
**しかしそれらの記事を詳細に調査していくと必ず今度は「asyncio」なる概念が登場する。**そこで2回に分けて記事にすることにした。
**第1回:python asyncioを理解して使いこなす(本記事)**
**第2回:Requests-HTML(puppeteer)でスクレイピング(次回予定記事)**– 動作環境
* OS : Windows10 pro
* python: 3.9.6 ※3.7以上が必須
* **基本は.pyファイルで説明**。※いつもの記事と違い、**jupyter環境だとasy
【トリビアのDelta Lake】#9 Pysparkで、timestamp同士の計算をうまくやる【DayTimeInterval】
Spark DataFrameにTimestampデータ型のカラムがあり、それらの値の差を計算する機会がありました。
以下のように、サンプルデータで再現。startカラムとendカラムで、10秒違いますね。
“`python
sample_data = [{“start”: “1970-01-01 09:00:00″,”end”: “1970-01-01 09:00:10”}]
sdf = spark.createDataFrame(sample_data)
sdf.show()
>>>
+——————-+——————-+
| end| start|
+——————-+——————-+
|1970-01-01 09:00:10|1970-01-01 09:00:00|
+——————-+——————-+
“`
このままだと見てくれはtimestampな値だが実際はstring型のま
Pythonで透過pngの背景色を指定しつつjpgにする
https://stackoverflow.com/questions/9166400/convert-rgba-png-to-rgb-with-pil
# やりたいこと
– どこかのフォルダにあるpngを全部処理
– 同じフォルダに出力
– 背景色を自分で指定# コード
– モジュールが無いって言われたら `pip install pillow`“`python:png2jpg.py
from PIL import Image
import glob
import re
import ospng_list = glob.glob(‘
/*.png’) for pngfile in png_list:
png = Image.open(pngfile)
png.load() # required for png.split()
jpgfile = pngfile.replace(“.png”, “.jpg”)background = Image.new(“RGB”, png.size, (255, 255, 255)) #
40代おっさんPythonを勉強する(JSONファイルの読み書き編)
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## JSON
– 軽量のデータ交換フォーマット
– 多くのプログラミング言語で使われている。データ交換に便利
– [JSONの紹介](https://www.json.org/json-ja.html)| JSON | Python | 表現方法 | 例 |
| ———— | ———— | — | — |
| object | dict | {“key”:value, “key”: value …}のように記述 | {“apple”:150, “orange”:120} |
| array | list / tuple | [1, 2, 3 …]のように記述 | [“apple”, 100] |
| string | str | ダブルク
【numpy】2つのベクトルの任意のベクトルからの回転角を算出する方法
# 概要
下図左側のように2つのベクトルの間の角度を算出する方法は内積などを取れば良く、よく知られている。本記事では、2つのベクトルの角度に加え、下図右側のように**任意のベクトルを基準とした2つのベクトルの回転角を算出するコード**を[get rotation angle between two vectors](https://chadrick-kwag.net/get-rotation-angle-between-two-vectors/)の記事を参考にして紹介する。
Google Colabで作成したコードは、[こちら](https://colab.research.google.com/drive/17iVlTG_4vXiYU_65qvxr3YmTbhWrr02l?usp=sharing)にあります。![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1599258/b9249e21-544d-dbb3-882b-d9808abb28d2.png)
# 各種インポート
“`Pyt
Python機械学習/Anaconda仮想環境のおすすめ作成方法
# Introduction
Pythonで機械学習をする際に,誰もが一度は行うであろうAnaconda仮想環境の作成.
今まで自分はbase環境をクローンして足りないライブラリをインストールする方法をとっていた.
しかしこの方法だと余計なライブラリが入っていたり,後々pipでインストールしたライブラリとcondaでインストールしたものが混在してうまく動かないなどいろいろと不便だった.
そこでライブラリは基本pipで管理できるようシンプルな仮想環境構築方法をまとめる.# 仮想環境作成
新規作成するときにpythonのバージョンを指定するのがポイント.
2022年10月24時点で3.10が出ているが,新しすぎると対応していないライブラリがあるので個人的には3.8がおすすめ.
“`terminal
conda create -n newenv python=3.8
“`# ライブラリのインストール
最初はこのくらいインストールしておけばよいと思う.
ちなみにnumpy,scipyはscikitlearnに,pandas, matplotlibはseabornと一緒に勝手にインス
AWS Lambda(Python)にてジオコーディングの一つであるGeoHash(ジオハッシュ)を扱う
# 本記事の内容
– AWSが提供するLambda(Python)にて、経緯度に基づくジオコーディング方法の一つであるGeoHash(ジオハッシュ)を扱う方法を記載した記事です。
– PythonベースのLambdaにてGeohashを扱う記事があまりなかったため、ライブラリーをLambdaに組み込み利用する方法をまとめました。# 実施環境
– Windows 10
– Chrome
– AWS# 説明の流れ
1. ジオハッシュライブラリーのダウンロード
2. Lambdaデプロイ用のzipファイル作成
3. Lambdaでの動作確認## 1. ジオハッシュライブラリーのダウンロード
PythonのGeoHashライブラリーは、[ここ](https://pypi.org/project/python-geohash/#files)からダウンロードする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/0af2b50b-a1fe-21db-4f52-cdab
フォルダ内の拡張子を一括変換する(python)
AI Programmer(https://aiprogrammer.hashlab.jp/)
というサイトで簡単なスクリプトを作成したものを少し改良してみた。今までで一番早く書いたスクリプトだと思う。(作成時間:約2分)
Qiitaでも同じようなプログラムがあるので残念な記事になってしまうが、プログラミング初心者なので温かい目で見ていただけると嬉しい。
“`python
import osprint(“入力例:csv”)
a = os.path.dirname(__file__)
b = input(“変更前の拡張子を入力してください。”)
c = input(“変更後の拡張子を入力してください。”)os.chdir(rf”{a}”)
for filename in os.listdir():
os.rename(filename,filename.replace(f”{b}”,f”{c}”))print(“変更が完了しました。”)
“`細かい仕様は自分で調べると勉強になると思うので省く。
使い方
①拡張子を一括変換したいフォルダに上記のソースコ
機械学習ポテンシャル実装入門
## はじめに
機械学習ポテンシャル(NNP)は最近注目の技術ですが、実装について解説している記事が無く個人的に苦労したので、初学者用の解説記事を作りました。今回はGNNを用いたNNPについて取り上げます。`torch`や `torch_geometric`、材料系でよく使われる`ase`などの基本的なライブラリ以外は、解説を加えながらスクラッチで実装していきます。※ 速度を多少犠牲にして、分かりやすさを重視した実装にしています。特にグラフ化の部分は大いに効率化できますが、別記事で後々解説したいと思います。
※ pytorchの基本的な理解はあるものとしています。pytorchの解説は他に良記事が多くあるのでここでは省略します。
## データ型の定義
GNNに流すデータはグラフデータです。これを便利に扱える`torch_geometric.data.Data`を用いて実装していきます。
ます、今回必要なモジュールをimportしておきます。
“`python
from __future__ import annotationsfrom ase.io import read
pythonのアンパック演算子のメモ
Dictの中身を`*`演算子をつかって操作する方法について、アンパックの動きをメモ
“`Python
test = {‘aaa’: [0, 2], ‘bbb’: [1, 3]}
print(*test)
print(test.values())
print(*test.values())
testv = [t for t in zip(*test.values())]for x, y in zip(test, testv):
print(x, y)
“`“`
aaa bbb
dict_values([[0, 2], [1, 3]])
[0, 2] [1, 3]
aaa (0, 1)
bbb (2, 3)
“`となる
参考になりそうな記事:
https://python.keicode.com/lang/list-unpack-asterisk.php
Python でファイル名をなるべく連番になりつつもユニークにしたいメモ
## 背景
画像処理とか機械学習で, `img-000.png`, `img-001.png` … などとファイル名を連番で(or 既存ファイル名を上書きしないようにユニークな名前にしたい)作りたい.
imageio とか pytorch あたりにユーティリティ関数としてありそうですが, どうも無さそうなので自作します!
## 方法
現状はファイル名を見て, 存在するかどうかで処理するしかなさそうです.
今回, 最新ファイル名は同じにしたいので, たとえば既存ファイルがあったら, それを `test-0000.png`, `test-0001.png`, … にリネームというふうにしてみました.
“`python
import os
from pathlib import Pathdef rename_existing_file(filename):
p = Path(filename)
if p.exists():
ftup = os.path.splitext(filename)
# find ne
poetryのpython version指定で沼った話
## 何が起きた?
pythonのrepositoryで別のpythonのrepositoryをsubmoduleで参照しておりました。
そして以下のような記述をしておりました。
“`yaml:project-Aのpyproject.toml
[tool.poetry.dependencies]
python = “>=3.7.1, <3.11" ``` ```yaml:project-B(submodule)のpyproject.toml [tool.poetry.dependencies] python = "^3.10" ``` project-Aでは3.7.1以上3.11未満のpythonバージョンを指定、project-Bでは3.10以上4.0.0未満のバージョンを指定しているので範囲内に両方を満たすバージョンがあるのでpoetryがよしなに解決してpython 3.10.xみたいなのを参照してくれるかと思っておりました。 しかし以下のエラーが出ました。 ``` SolverProblemError The current project's Pytho
Remove Image Background using Pythonを実験
## 環境構築
インストール。
“`
└─$ pip install rembg
“`pipの位置がいろいろだめだとエラーになったのでリンクを張って再挑戦
“`
└─$ sudo ln -s ~/.local/bin/pip /usr/bin/pip
└─$ sudo ln -s /usr/bin/pip /usr/bin/pip3
└─$ sudo ln -s /usr/bin/pip /usr/bin/pip3.10└─$ pip install rembg
“`## 確認
“`
└─$ rembg –help
“`
コマンドがみつかりません、エラーなので調べたらなんだかな場所にあったのでPATHを通した。
“`
└─$ sudo find / -name rembg 2>/dev/null
$HOME/.local/lib/python3.10/site-packages/rembg
$HOME/.local/bin/rembg└─$ cat ~/.bashrc
export PATH=”$PATH:$HOME/.local/bin”
└─$ .
アルゴリズム実技検定(PAST) 第11回 D問題 Python解答例(Union-Find使用と不使用)
Supershipの名畑です。
前回の記事「[アルゴリズム実技検定(PAST)について 並びに 第11回A〜C問題 Python解答例](https://qiita.com/nabata/items/0421f20e8ec849ee70ad)」の続きです。
アルゴリズム実技検定(PAST)第11回のD問題の私の解答例(Python3)を公開します。私が解いた感覚だと、D問題〜F問題(7点問題)でABC(AtCoder Beginner Contest)のB問題とC問題の間ぐらいの難易度でしょうか。
未読の方は「[採用活動のために競技プログラミング(AtCoder)を始めて一年経ったので感想を書きます](https://qiita.com/nabata/items/44fa3995e476b12b9860)」も一緒に読んでいただけると嬉しいです!
## 第11回の過去問題全部
– [第11回](https://atcoder.jp/contests/past202206-open)
## 第11回 D問題 似ている文字列(7点) 解答例
### 問題
– [D – 似て