Python関連のことを調べてみた2022年08月11日

Python関連のことを調べてみた2022年08月11日

FAST API

FAST APIとは


webフレームワーク、高速であることが特徴

ここがいいよ!FAST API

*直感的でわかりやすい
*公式ドキュメントが豊富
日本語も豊富
+自動ドキュメント生成機能がすばらしい
 pythonの型ヒントが肝になる
 Swagger UIと連携
+バリデーション機能の実装が簡単
 バリデーションとは、入力されたデータが規定や仕様に合っているかを確認する機能
 今回ではAPIにリクエストされるデータ
 例)入ってくる型がint型になっているかなど(もちろん型が違えばバグの温床になる)

初学者がAPIをpythonで学ぶならFAST API一択
中級者ならDjangoのAPIフレームワークを学んでもいい

型ヒントとは

型注釈をつけることを型アノテーションという
↑これがFASTAPIには重要になってくる!!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602767/01a9cb37-7b78-f671-99e1-42520392c

元記事を表示

【強化学習】MuZeroを解説・実装

この記事は自作している強化学習フレームワーク [SimpleDistributedRL](https://qiita.com/pocokhc/items/a2f1ba993c79fdbd4b4d) の解説記事です。

前:[AlphaZero](https://qiita.com/pocokhc/items/a1b5f66361f23b2aefe8)
次:Stochastic MuZero

今回はAlphaZeroの後継であるMuZeroについて解説します。

# MuZero

AlphaZeroは木探索時にゲームのルールを使うという問題がありました。
(1手進めた後、盤面の状態を知る必要がある)
これではルールを知っている環境にしかAlphaZeroが使えないので、強化学習で一般的に想定されるマルコフ決定過程(MDP)の環境にも使えるように拡張したアルゴリズムがMuZeroです。
(以降本記事で環境を区別する場合、マルコフ決定過程(MDP)の環境をAtari環境、囲碁や将棋などをボードゲーム環境と言って区別します)

MuZeroではゲームのルール自体を学習する事で、ゲームのル

元記事を表示

Python でマニュアルファイルをサッと確認するツールを作成した

# モチベーション

– CUI ベース作業が割と多い。
– 必要なコマンドとか操作方法は Markdown で纏めている。
– 一つの Markdown ファイルに複数のコマンドを記述すると閲覧性が悪い。
– かと言って、複数ファイルに分割すると、ファイルを探したり表示する為の手間が増える。
– なんとかしたい。

# なんとかする

Bash のシェルスクリプトでも勿論可能なんですが、サッと作成したいので Python を使います。

実行しやすいファイル名(ex. mm)でコードを書き、`chmod 755`で実行権限を付与、パスの通っているディレクトリに配置すれば完了となります。

## コード

“`python
#!/usr/bin/env python3
import argparse
from glob import glob
from os import environ, system
from os.path import isfile

# Main
def main():
# 引数処理
parser = argparse.ArgumentPa

元記事を表示

ConMas Gateway スクリプトのデバッグ (2)

ConMas Gateway スクリプトのテスト、デバッグをどうする、というテーマの続編です。

前編 [ConMas Gateway スクリプトのデバッグ (1)](https://qiita.com/COOLMAGICPRODU1/items/a2e0d8cc6c43f79fc6ca)

結論は「スクリプト単体でテストをしましょう」です。
端末(i-Reporter)や ConMas Gateway を使うと何かと不便なので、テスト、デバッグの9割をスクリプト単体でテストをし、最後に端末と ConMas Gateway を使ったテストをしましょう、ということです。

このような、スクリプトを例として解説を進めます。
![8cb3d1ab854cf71d0668d52dd6b7a8cf62f32f9c851c3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737842/10380951-e0e7-ae7a-01de-23c2bc0b1c64.png)
## 準備
テストに必要となるデータの雛形を取

元記事を表示

ABC098 D – Xor Sum 2 別解メモ

# はじめに

昔の問題ではあるんだけど、自分の解法が公式解説・ユーザ解説とは違ったのでメモ的に残しておく。

# 問題

https://atcoder.jp/contests/abc098/tasks/arc098_b

# 考察

“`
Al​ xor Al+1​ xor … xor Ar ​= Al​ + Al+1​ + … + Ar​
“`
を満たすケースの個数を数える、という問題である。

一見、`l`と`r`を全探索する必要があるように見えるが、bit毎に考えると、
要素を増やしたときに同じbitが立っている場合左辺側は小さくなる、ということが起きる。
“`
0b10 ^ 0b11 = 0b01
0b10 + 0b11 = 0b101
“`
というわけで、ある`l`を固定して、bitが被る前まで`r`を増やしつつカウントする。

さて、0が含まれないケースを考えてみる。(というかそういう問題だと当初誤読していた)
そもそもbitが被らずにどれくらい要素を増やせるのか、を考えてみると、実はそんなにないことが分かる。
`Ai<2**20`なので、要素を増

元記事を表示

Pythonで写真にファイル名を記載するコード

印刷する際に写真とID(=ファイル名)の紐付けができるように、写真内にファイル名を記載したい。
Adhocにinteractive shellで実行する想定

font_pathはPCによって異なるので各自で確認のこと。

“`python
import glob
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

files = glob.glob(“./*”)

def add_text_to_image(img, text, font_size, font_color):
position = (50, 50)
fontpath = “/System/Library/Fonts/Helvetica.ttc”
font = ImageFont.truetype(fontpath, font_size)
draw = ImageDraw.Draw(img)
draw.rectangle((20, 20, 700, 100), fill=(255, 255, 255

元記事を表示

Python機械学習プログラミング 2.4 ADALINE 2.5勾配降下法

この記事は過去の学習の際に書き残された備忘録です。

# 2.4
ADALINEと学習の収束

続いてもう一つの単層ニューラルネットワークに**ADALINE**がある

## ADALINEとパーセプトロンの違い

|ADALINE|パーセプトロン|
|:————–|:—————-|
|線形活性化関数で重み更新|ステップ関数で重み更新|
|真のクラスラベルと線形活性化関数の連続地の比較|真のクラスラベルと予測されてクラスラベルから比較|

線形活性化関数によって得られた連続的な値で重みを再計算する
(大誤算だったら大きく重みを更新するとかそういう感じかな)
## ADALINEの特性
連続値のコスト関数(?)の定義とその最小化(多分誤差を0に近づける意?)に関する重要な概念(?)を具体的(?)に示す

# 2.5
勾配降下法によるコスト関数の最小化

## コスト関数とは

わからない

## 目標

目的関数の中にコスト関数というものがある。それを最小化したものがモデルとなる
コスト関数$J(w)$は

$
J(w)=\f

元記事を表示

2.5 コスト関数と勾配降下法について

## コスト関数とは

どのぐらい学習が正確に駅ているかを判断する指標となる。**誤差関数**や狭義ではあるが**目的関数**とも呼ばれる。

## アルゴリズムの評価

下図のようなデータを適当に作って、直線で近似することを想定する。

横軸を$x$(入力値)、縦軸を$y$(出力値)とする。
スクリーンショット 2019-02-28 14.19.58.png
今回はものすごく単純化するためにユニット数1で1層のADALINEで考える。
IMG_6504.jpg
$w$を重み、$x$を入力値とすると

元記事を表示

PIL.Image.Imageをdiscord.Fileに変換したい

こんにちはbeatbox4108です。
今回は少しPythonを書いていて躓いた点を覚書程度にまとめましたので見てみてください

# TL;DR

:::note
`io.BytesIO`を使おう。
:::
:::note warn
`seek(0)`するのを忘れずにしよう。
:::
# 本文
Pythonで、Discordのスラッシュコマンドに反応して画像を送るbotを作っていた時のこと…

**あれ?ファイルに出力しないと送信できなくね?**

この時の環境、クラウド上で容量が結構少なかったのでどうしてもファイルに出力するのは避けたかったんです。
でも**ファイルオブジェクト**かパスじゃないと送信できないし…

と、気づいたんです。そうか`BytesIO`介せばいいのか!
ということで書いたこちらのコード、ダメな点が一つありました。
“`python3
# im は PIL.Image.Image
fileio=BytesIO()
image.save(fileio,format=”png”)
await interaction.followup.send(file=d

元記事を表示

【Python】正規表現

pythonで正規表現を使うためのメモです。

## マッチ関数
### match
先頭部が一致していれば、Trueを返す。
一致している箇所が無ければ、Noneを返す。

“`.py
import re

content = ‘The high on August 7 is 35 degrees’

result = re.match(r'[A-Za-z]+’,content)

if result:
  #マッチした部分を返す
print(result.group())
#マッチした先頭のインデックスを返す
print(result.start())
#マッチした末尾のインデックスを返す
print(result.end())
#startとendをタプルで返す
print(result.span())
else:
print(“No match”)

>> The
>> 0
>> 3
>> (0,3)
“`

### compile
正規表現パターンをコンパイルし、match()やsearch()メソッドを使っ

元記事を表示

python MeCab で listの文章を一部を取り出し機械学習

# モジュールのimport
### 最終的に機械学習も使用予定のため多めにimport してます
“`
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
%matplotlib inline
import codecs
import os
import datetime
import requests
import re
import MeCab
import unidic
mecab = MeCab.Tagger()
from sklearn.model_selection import train_test_split
“`
# CSVデータの読み込み
### CSVデータ → Work_Report2 という pandas へ
“`
def open_send_data(image_file_path_v):
with codecs.open(image_file_path_v, “r”, “Shift-JI

元記事を表示

プログラミング初心者向けPython(JupiterNotebook)のコードをGithubにアップロードするMac PC環境構築

【結果】
下のようにファイルをアップロードできました。
https://github.com/Kohei-Morozumi/1

【メインの参考資料】
Python(JupiterNotebook)のコードをgithubのレポジトリにアップロードするまでの流れは次の記事を参考にしました。

初めてGitHubにファイルを上げる方法。【超初心者入門編】
https://yuma-studio.net/programming/github-first/

同様の流れは次の記事でも書かれています。

初心者用:GitHubにファイルをアップロードする方法(超基本)
https://qiita.com/under_chilchil/items/ec9d0050c1e3fb6576de

【サブの参考資料】
トラブルシューティングのために参考にしたサブの資料はこちらです。

①Githubの環境構築例

Progate、【Mac】Gitの環境構築をしよう!
https://prog-8.com/docs/git-env

②アップロードしたいファイルのパスの確認方法
ファイルを右クリックして、o

元記事を表示

写真から背景を削除する 5 つの方法

# 前提:
この記事は、写真から背景を削除したい人に適しています。
背景除去とは、写真の背景を除去し、人物を残すことを指します。
写真の背景を削除する機能は、今日では 2 時間もかかる複雑な操作ではありません。

# 1. オンラインの背景除去ツールを使用します。
現在、インターネット上には、便利な操作を提供する多くの画像除去背景ツールがあります。背景除去ページの 1 つを開いて画像をアップロードし、AI が[背景を除去する](https://www.fotor.com/jp/features/background-remover)のを待つだけです。迅速かつ簡単で、不正確なエッジを手動で調整できます。もちろん、無料ではありません。

# 2. パワーポイントを使用して背景を削除します。
PowerPoint に画像を挿入し、[ツールバー] を選択します。その後、ワンクリックで戻ります。 — これは予想外です、背景除去効果はあまり正確ではありません

# 3. Python コードを使用して背景を削除します。

## 方法 1:
paddlehub という Python ライブラリがあ

元記事を表示

EffcientNetの構造解説 (1)

# 初めに

EfficientNetは、いくつのモジュールで構成されるSub-blocksで構成され、このSub-blocksの繰り返し構造になっていることを説明致します。

ここのポストを基準に、少し自分の解説を追記します。
https://towardsdatascience.com/complete-architectural-details-of-all-efficientnet-models-5fd5b736142

# EfficientNetとは

論文は下記のリンクで確認できます。

https://arxiv.org/abs/1905.11946

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208980/a0723b37-1e74-ced8-3971-43d7c38381a2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208980/41ff1a3b

元記事を表示

pandas;queryメソッドで条件に当てはまるものを抽出

# pandasでデータ取り出し
## dfの列参照
`iloc[10,:]`→11番目の列を取ってくる
`loc
## dfからqueryで条件に当てはまるものを抽出

### 正しいコード
~~~python
df_list = [pd.read_excel(‘pareto_1.xlsx’, index_col=0).query(‘TM_sum > 0.99’),pd.read_excel(‘pareto_2.xlsx’, index_col=0).query(‘TM_sum > 0.99’),pd.read_excel(‘pareto_3.xlsx’, index_col=0).query(‘TM_sum > 0.99’),pd.read_excel(‘pareto_4.xlsx’, index_col=0).query(‘TM_sum > 0.99’)]
~~~

### 間違っていたコード
~~~python
df_all = pd.read_excel(‘pareto_1.xlsx’, index_col=0),pd.read_excel(‘pareto_2.xls

元記事を表示

pythonとmysqlを使ってデータベースを作ってみる

## はじめに
mysqlを触り始めた初心者がpythonとMySQLでデータベースを構築するための備忘録。
細かな用語の違いなど多々あると思いますがご容赦ください。随時更新予定。

## python環境構築
mysqlをpythonで管理するにはconnectorなるものが必要。
conecctorには公式配布のものから、サードパーティ製?のものなどいろいろあるが、
どれもpython3.9に対応していないので、anacondaでpython3.7の環境を構築する。

以下構築コマンド
~~~bat:anaconda prompt
$ conda create -m py37 python=3.7
$ conda activate py37
$ conda install ipykernel
$ conda install panads
$ conda install numpy
$ conda install mysql-connector-python
~~~

## mysqlでデータベースを作る
コネクタの接続はデータベース単位で行うようなので、あらかじめデータベースを作

元記事を表示

postされたファイル(画像やExcelファイル等)をDBに登録 Part2

前回、MySQLdb.connectのcursorによる直書きSQLでエラーが発生し、
pandasを用いてファイルを丸ごと登録したわけだが(https://qiita.com/v4ns/items/98cf4bdc65d46b3f1764 ) 、
原因というか解決策が判明したので記載する。

# 代入を行う%sを使う場合は、パラメータをまとめる変数を介すること
解決策は、どうやらパラメータ用変数に投げてから%sでSQL文に当てはめることだった。その結果、エラーが出ずに実行できた。

“`python:qiita.py
#現在時刻を取得
time = datetime.datetime.now()
# データベースへの接続とカーソルの生成
connection = MySQLdb.connect(
host=’localhost’,
user=’root’,
passwd=’pas

元記事を表示

PyG (PyTorch Geometric) で Graph Pooling Neural Network

グラフ構造を深層学習する PyG (PyTorch Geometric) を Google Colaboratory 上で使ってみました。今回は、Graph Pooling Neural Network を使うことがテーマです。題材として、化学情報学のメインテーマの1つである、分子構造から物性を予測する問題を解いてみます。

# PyG (PyTorch Geometric) インストール

PyG (PyTorch Geometric) のレポジトリは https://github.com/pyg-team/pytorch_geometric にあります。また、コードはチュートリアルドキュメント https://pytorch-geometric.readthedocs.io/en/latest/index.html を参考にしています。

“`python
import os
import torch

torch.manual_seed(53)
os.environ[‘TORCH’] = torch.__version__
print(torch.__version__)

元記事を表示

ワイ「Pythonの勉強したいなァ・・・やっぱ最初はTODOやな!」[第二話]

## はじめに

続き物の記事になります。前回の記事を読んでいただくとより流れが掴めるかと思われますが、本記事から読み始めて頂いても問題ありません。

– [ワイ「Pythonの勉強したいなァ・・・Djangoってのがあるんか」](https://qiita.com/Ibuki-Matsumoto/items/649438a3adedc41247c0)

## 環境情報

– MacBook Air (Monterey)
– Docker Compose version v2.6.1

## 導入

俺は高校生探偵、工○新○。

幼馴染で同級生の毛◯蘭と遊園地へ遊びに行って、黒ずくめの男の怪しげな取引現場を目撃した。

ワイ「なんて感じで面白い人生を送りたかったな〜(ホジホジ」

ワイ「さて、前は `Python` + `Django` + `Docker` で環境構築したんやったな 」

ワイ「何作るかな〜」

ワイ「せや、やっぱ最初に作るんは伝家の宝刀 `”TODOアプリ”` やな(キリッ」

## 本編・・・の前に(前回を読んで

元記事を表示

python でバイト文字列を正規表現でパース

以下のような、csv に似たデータをシリアル通信で受け取る。

“`
b’@-114,6,6 304 451 10097 505\r\n’
“`

末尾は CRLF。頭に@がついて、7つのフィールド間のデミリタはカンマまたはスペース。

# 環境

– Python 3.9.2
– RaspberryPi OS Raspbian GNU/Linux 11 \n \l

# 作戦

バイト列としてシリアル通信で受信する。

以下のことに注意して処理する。

– readline() で一行受け取るので \r\n がくっついてくる
– 数値は符号付き整数
– 4,5,6番目のフィールドは小数点以下1位の固定小数で “257” と送られてきたのは “25.7”を意味している
– 7つのフィールド間のデミリタは1バイトのカンマまたは1バイトのスペース
– 頭に @ がついていることをチェック
– 通信エラーで異常文字列が来ること前提

# 正規表現を使う

↓↓↓↓↓↓↓ あなたの記事の内容
“`Python
───────
“`python
↑↑↑↑↑↑↑ 編集リクエス

元記事を表示

OTHERカテゴリの最新記事