Python関連のことを調べてみた2021年10月21日

Python関連のことを調べてみた2021年10月21日

pip-toolsでバージョン管理する方法まとめ & Pipenvとの比較

pip/requirements.txtを直接操作するではなくさらに上位のツールを使いたかった。ライブラリの先の依存を陽に書かなくてもよくしたい & バージョンの固定をやりやすくしたい。

# 最終的に決まった手順
pip-toolsを使う。Pipenvは後述の通り挫折した。

“`
$ sudo apt install -y curl python3-venv python3-distutils
$ python3 -m venv –without-pip venv
$ source venv/bin/activate
(venv) $ curl -kL https://bootstrap.pypa.io/get-pip.py | python
(venv) $ pip install pip-tools
(venv) $ vi requirements.in && pip-compile # ライブラリを追加、バージョン変更する場合のみ
(venv) $ pip-sync
“`

`–without-pip`で始める理由は、pipがグローバルに入っていない環境への対応。pi

元記事を表示

機械学習モデルの推論結果を返す Web API を FastAPI で作成

# はじめに

機械学習で作成したモデルを実用化するには、システムが必要になる。もっともシンプルなシステム実装としては、学習済みモデルが API リクエストに対して推論結果をレスポンスで返す簡単な Web API が考えられる。具体的には、推論対象の CSV データをもたせた POST リクエストに対して推論結果を返すような Web API を想定している。機械学習モデルは大半が Python で構築されているため、API も Python ベースで作成することが望ましいと考え、FastAPI を用いた Web API を段階を踏んで作成していく。
[シンプルな Web API を FastAPI で作成](https://qiita.com/honda28/items/4c6a4b7235ce43c7131e)ではまず FastAPI を使った簡単な Web API を作成した。続いて [FastAPI で作成した Web API にて、リクエストボディのデータを DataFrame に直接入れる](https://qiita.com/honda28/items/2aa04e1b4f

元記事を表示

violinプロットで可視化したデータの読み方

# 記事を書いたきっかけ
データ分析のインターン業務中に、violinプロットを用いて可視化したデータを説明する機会がありました。

その時に、「あれ、ここって平均値だっけ?中央値だっけ?」とわからなくなったのが怖くなり、調べたのがきっかけです。

violinプロットに関しては、日本語での検索結果は実装方法ばかりで具体的にどう読むのかを書いた記事が現状少ないように思えました。

この辺英語で調べたら一発だったので、翻訳も交えて自分のためにまとめようと思います。

![スクリーンショット 2021-10-20 10.54.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/845778/3774822d-f655-8c24-7b27-ef31b4e60f7a.png)

# 概要
データの可視化で非常にお世話になるヴァイオリンプロットについて詳しくなります。

# 実装
ヴァイオリンプロット??ってなっている人のために、秒で動くipynbファイルを用意しました。
よかったら飛んで見てみてください。

h

元記事を表示

tensorflow-macosの正式版のインストール方法

# はじめに
いつの間にかtensorflow-macの正式版が公開されてた
tensorflow-macosのalpha版をインストールする方法が書いてある記事は沢山あるけど正式版をインストールする方法を日本語で書いてあるサイトはまだ少ない
アメリカ語が苦手な私のような人向けにインストール方法をまとめる

この記事はM1 macユーザー向け
Mac Proは知らん!誰か買って!!

# インストール
1. condaのインストール
1. 既にインストールされてるtensorflowのアンインストール
1. tensorflow-macosのインストール

の順で行う
condaはtensorflowのインストールに必要、これ以上の事を知りたいならggって
2はまだtensorflowインストールしてないよって人は不要、飛ばしていい

## condaのインストール
[ここ](https://github-releases.githubusercontent.com/221584272/f336c853-2b82-4f48-8232-b513866f6589?X-Amz-Algorit

元記事を表示

ABC203 A~C問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder

ABC203(AtCoder Beginner Contest 203) A~C問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。

その他のABC解説、動画などは以下です。

https://qiita.com/sano192/items/54accd04df62242b70f0

##A – Chinchirorin

https://atcoder.jp/contests/abc203/tasks/abc203_a

問題文の条件をif文で実装します。
a=bの場合:cを出力
b=cの場合:bを出力
c=aの場合:aを出力
それ以外:0を出力
これらをifとelif、elseで実装します。

入力の受け取り、出力がわからない方は以下の記事を参考にしてください。

https://qiita.com/sano192/items/eb2c9cbee6ec4dc79aaf

**【提出】**

“`python:
# 入力の受け取り
a,b,c=map(int, input().split())

# a=bの場合
if a==b:
# cを出力
pr

元記事を表示

ABC223 A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder

ABC223(AtCoder Beginner Contest 223) A~D問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。

その他のABC解説、動画などは以下です。

https://qiita.com/sano192/items/54accd04df62242b70f0

##A – Exact Price

https://atcoder.jp/contests/abc223/tasks/abc223_a

Xが100で割り切れるなら条件を満たします。

ただし、0の場合は条件を満たしません。
「Xが0でない」という条件は
X!=0
と書きます。

「Xが100で割り切れる」かつ「Xが0でない」
という条件をif文でつくればOKです。

「Yes」「No」は文字列なので出力するときに”Yes”,”No”とダブルクオーテーションをつけてください。

入力の受け取り、出力がわからない方は以下の記事を参考にしてください。

https://qiita.com/sano192/items/eb2c9cbee6ec4dc79aaf

**【提出】**

“`pyt

元記事を表示

sklearnのStratifiedKFoldの実装の注意点について

#コード
実装例は次のようになる。

“`python
from sklearn import model_selection
import numpy as np
#説明変数X
X = np.array([[‘A’,’B’],[‘C’,’D’],[‘E’,’F’],[‘G’,’H’]])

#目的変数y
y = np.array([0,0,1,1])

kf = model_selection.StratifiedKFold(n_splits = 2)

for fold,(train_index, test_index) in enumerate(kf.split(X=X,y=y)):
print(“kfold:”,fold)
print(f”train:{X[train_index]}”)
print(f”test:{X[test_index]}”)
“`

出力は次のようになる。

“`python
kfold: 0
train:[[‘C’ ‘D’]
[‘G’ ‘H’]]
test:[[‘A’ ‘B’]
[‘E’ ‘F’]]
kfold: 1
train:[[‘

元記事を表示

BlenderでISBNから書影の自動作成

# 目的

3DCGソフトウェアの[Blender](https://www.blender.org/)では、Pythonを使っていろいろな処理を自動化できます。
ここでは、ISBNから書籍の書影画像を作成する方法を紹介します。

※ macOSのBlender2.93で確認しています。適宜直せばWindowsでも動くはずです。
※ 書影の元画像は、[openBD](https://openbd.jp/)から取得します。openBDに登録してある書籍が対象になります。

# 書影の元になるBlenderファイルの作成手順

– 「[Blenderのコマンドサンプル](https://qiita.com/SaitoTsutomu/items/6b70367455f843a979b1)」を参考に、下記のようにBlenderのPythonに`requests`と`openbd`をインストールしてください。

“`
blender_pip install -U requests openbd
“`

– 適当なJPEG画像を`/tmp/book.jpg`としてコピーします(この画像は後で上

元記事を表示

海しるAPIを使ってみる その2

[海しるAPIを使ってみる](https://qiita.com/hightidesgoodvibes/items/4edeb73ea808311bcf07)の続き。

海洋速報のデータを取得するAPI

https://portal.msil.go.jp/api-details#api=602b24c865379cd6fe879151

まずはJSON出力。

必須項目はないものの、日付を指定しないとすごい量のデータが出てくるので、それだけは指定したい。日付はUNIX時間で記述するので、変換ツールを使いながら入力。

https://tools.m-bsys.com/development_tooles/unix_time.php

[海しるAPIポータル](https://portal.msil.go.jp/api-details#api=602b24c865379cd6fe879151&operation=612c2271507c96ff35c252d9)で作成したHTTPのコード。

“`
GET https://api.msil.go.jp/oceanography/cur

元記事を表示

if __name__ == ‘__main__’: って何?

pythonの勉強をしていると

if __name__ == ‘__main__’ :
という記述を見かけますよね、これがあると何が起こるのかという話です。

これがあると
importしたときに関数が実行されなくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531208/a1be105b-4b83-5f95-906d-ea303753cb83.png)
こんな関数helloをimportすると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531208/cbc0e812-d58c-9847-863d-7d11af68bdff.png)

とimportしただけで関数mainが実行されてしまいます、では

if __name__ == ‘__main__’ :
を入れたバージョンをimportしてみましょう。
![image.

元記事を表示

貪欲法で実装されるアルゴリズムまとめ by Python

「貪欲法」という名前の響きからすると、物事を選択するN段階のステップに対して考えられるすべての遷移を走査するような印象を受けますが、さにあらず。それは動的計画法の手法です。

貪欲法は、1ステップ先のみを考えて最適な選択を繰り返す手法です。

そんな貪欲法についてアルゴリズムをまとめます。
①組合せアルゴリズムへの適用
・スケジューリング問題への適用
・最適化問題への適用
②グラフアルゴリズムへの適用
・ダイクストラ法
・クラスカル法

#①組合せアルゴリズムへの適用
###スケジューリング問題への適用
開始時間と終了時間の指定されたN個の仕事の中から、実行時間を被らせることなく選択できる仕事の最大の数を計算する。

“`Python:Scheduling.py
# 区間スケジューリング問題を解く貪欲法
# 計算量 :O(NlogN)

# アルゴリズム定義
def scheduling(N, schedule):
schedule.sort(key=lambda x:x[1])

res = 0
current_end_time = 0
fo

元記事を表示

Pythonを使ってAmazon S3にファイルをアップロードする

# はじめに

AWS との連携を Python で試す。Python 用 AWS SDK である Boto3 を用いて Amazon S3 へのファイルアップロードという簡単な操作を試してみる。[AWS SDK for Python](https://aws.amazon.com/jp/sdk-for-python/) を参考にした。

# Boto3 とは

冒頭にも書いた通り、Python 用 AWS SDK で、Python アプリケーションやライブラリ、スクリプトを AWS の各種サービス(Amazon S3, Amazon EC2, Amazon DynamoDB など)と容易に統合ができる。
Boto3 には、**Client API(低レベル API)**と **Resource API(高レベル API)** という2つの異なるレベルの API がある。両者の違いは明確に理解できていないが、本記事では Client API で試行してみる。
その他にも、AWS リソースの変化を自動的にポーリングする waiter という機能や Amazon S3 や Amazon D

元記事を表示

Blenderで六面図の自動作成

# 目的

Blender2.93で六面図を自動作成するコマンドを紹介します。
macOSの例ですが、適宜直せばWindowsでも動くはずです。

## 作成するコマンドの内容

Blenderファイルを入力として、六面図を追加した新たなBlenderファイルを作成します。

# コード

下記を`make_image.py`として作成してください。

“`py:make_image.py
import sys

import bpy
import fire
from mathutils import Euler

def make_image(save_path=None):
“””6方向からレンダリングして背景化”””
import math

CAMERA_NAME = “MyCam”
LIGHT_NAME = “MyLight”
IMG_NAMES = “top”, “btm”, “lft”, “rgt”, “frt”, “bck”

scene = bpy.context.scene
scene.render.res

元記事を表示

FreeBSDでPILLOWを使う

# エラーが出た
UbuntuからFreeBSDにPython環境を移行しようとして詰まりました。

“`
ImportError: The _imagingft C module is not installed
“`
というエラーが出てしまい、しばらく解決しなかったのでメモ。

## 試したけどダメだったこと
以下のコマンドを試してPillowの再インストールをしてみたものの、できませんでした。

“`
sudo pkg install freetype
“`

## 最終的に解決したコマンド

“`
sudo pkg install py38-pillow
sudo pip uninstall Pillow
sudo pip install Pillow –no-cache-dir
“`

参考
https://buildmedia.readthedocs.org/media/pdf/pillow/latest/pillow.pdf

元記事を表示

[PyTorch] NLLLoss と CrossEntropyLoss の違い

# この記事で説明すること
PyTorchのチュートリアルなどで,`torch.nn.NLLLoss` を交差エントロピーを計算するために使っている場面を見かけます.
私は初めて見た時,なぜ `torch.nn.CrossEntropyLoss` を使っていないのか疑問に感じました(こっちの方が関数名で何をするか想像しやすいし…).
この記事では,この `NLLLoss` がどういう計算をしているのか,`CrossEntropyLoss` とどう違うのかについて説明します.

# `LogSoftmax` + `NLLLoss` と `CrossEntropyLoss` は同様の計算を行う
結論を述べると,`torch.nn.LogSoftmax` に続いて `torch.nn.NLLLoss` を適用するのと,`torch.nn.CrossEntropyLoss` を適用するのは同じことです.
以下のコードで実際に確認してみます.

“`python:LogSoftmax+NLLLossとCrossEntropyLossの違い
import torch
import torch

元記事を表示

python で Pillow(PIL)を扱う実行ファイルを作る際のエラーについて

#はじめに
Pillow を利用した実行ファイルを生成する際に出たエラーとその対処法について書いておこうと思います.

#やりたいこと
Pillow を利用したコードについて,Pyinstaller を用いて実行ファイルを生成します.

#問題点
import PIL を行い PIL.Image 関数を利用しようとすると,開発環境上では上手く実行できたのですが,Pyinstaller を利用して生成した実行ファイルを使うと プログラムが停止します.
新しいバージョンの Python だと Pillow はデフォルトで入っているようですが, Pyinstaller と Numpy の互換性の問題があり,Pyinstaller やその他のモジュールは古いバージョンを利用しているため手動で入れる必要があります.

#流れ
そこで私の行った対処についてまとめておきます.内容はあまりまとまっていないですし,細かな検証も行っていません.私の行った対処と動いた環境だけまとめておきます.
まず,普段通り pyinstaller (ファイル名).py –clean –noconsole –onef

元記事を表示

【Python】XMLのデータを読む

# はじめに

今日はXMLのデータをpython script で読むためのメモです。本当にただのメモ。

# 内容

標準ライブラリを使ってできます。

https://docs.python.org/ja/3/library/xml.etree.elementtree.html

なのですが、とりあえず動かしてみたメモを。

## 例

全くXMLを分かっていないのですが、“`xml.etree.ElementTree“` というのを使えばできるようです。

– 木構造のデータを fromstring で読み込める。
– root も child もtag と attribute を持っていて、.tag, .attrib でアクセスできる
– 値?は .text で参照できる。

iterator でアクセスする場合もあるけれど、今回は下記の単純なサンプルなので必要なった。

“`Python
xml_string = \
“””
frame<

元記事を表示

Pythonでesa.ioのAPIを触る

# はじめに
ドキュメント共有サービスであるesa.ioではAPIを公開していて、APIを通して記事やコメントの取得や作成、スターをつけたりけしたり等広くesa.ioの機能を利用できます。

今回は、pythonでesa.ioのAPIを触ってみましょう!

# インストール
pythonで作成されたesa APIのクライアントライブラリを利用して、APIにアクセスします。
ライブラリ: [piyo](https://github.com/argonism/piyo)

“` shell
pip install piyo
“`

# APIを叩いてみる

とりあえず、クライアントをnewします。
``と``は自分のアクセストークンとチーム名に置き換えてください。
Clientにアクセストークンを渡す代わりに、環境変数のESA_ACCESS_TOKENにアクセストークンをセットしても大丈夫です。

“` python3
from piyo import Client

def main():
client = Client(a

元記事を表示

Cartopy を用いて地図上の散布図を作りたい場合

#1. はじめに

[Cartopy](https://scitools.org.uk/cartopy/docs/latest/) についての日本語記事の多くには [cartopy.crs.PlateCarree](https://scitools.org.uk/cartopy/docs/v0.15/crs/projections.html) の記載があり、つまり正距円筒図法を用いたものが多いですが、他の図法を用いて地図上にデータをプロットする方法を紹介した記事が見当たらなかったので、薄い内容ですが投下します。

本ページの内容のほとんどは、以下の参照元を解釈したものです。

Understanding the transform and projection keywords — cartopy 0.20.0 documentation
https://scitools.org.uk/cartopy/docs/latest/tutorials/understanding_transform.html

※本ページのスクリプトの利用は自己責任でお願いします。
#2. 目次

元記事を表示

企業の基本理念をBERTScoreで評価してエントリーする企業を選ぶ

あと数年でAI面接が施行される。機械が人間を選別する時代がすぐそこまで迫っているのだ。機械で人間を選ぶことが許されるのならば、機械で企業を選ぶことも許されるのではないだろうか。ということで今回はそれぞれの企業の基本理念をBERTScoreを用いて評価し、エントリーする企業を選ぶときの判断材料にしていく。

#企業の評価点

企業を選ぶときには実に様々な情報を用いなければならない。事業内容やライバル会社、決算情報など項目はたくさんある。判断材料の情報のなかで一番大切なんじゃないかと思ったのが企業理念だ。やはり企業理念こそがその企業を表しているといっても過言ではないだろう。しかし、その企業理念の中でも最も大事なのが基本理念ではないだろうか。ということで企業の基本理念を用いて評価を行っていく。基本理念は文章なので、文章を評価できるようなものを用いなければならない。今回はBERTScoreというものを使っていく。

#BERTScoreとは

BERTScoreとは簡単に言えば文章の評価基準のことである。詳しくは以下のサイトを参考にしてほしい。

https://ai-scholar.tech

元記事を表示

OTHERカテゴリの最新記事