- 1. pip-toolsでバージョン管理する方法まとめ & Pipenvとの比較
- 2. 機械学習モデルの推論結果を返す Web API を FastAPI で作成
- 3. violinプロットで可視化したデータの読み方
- 4. tensorflow-macosの正式版のインストール方法
- 5. ABC203 A~C問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder
- 6. ABC223 A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder
- 7. sklearnのStratifiedKFoldの実装の注意点について
- 8. BlenderでISBNから書影の自動作成
- 9. 海しるAPIを使ってみる その2
- 10. if __name__ == ‘__main__’: って何?
- 11. 貪欲法で実装されるアルゴリズムまとめ by Python
- 12. Pythonを使ってAmazon S3にファイルをアップロードする
- 13. Blenderで六面図の自動作成
- 14. FreeBSDでPILLOWを使う
- 15. [PyTorch] NLLLoss と CrossEntropyLoss の違い
- 16. python で Pillow(PIL)を扱う実行ファイルを作る際のエラーについて
- 17. 【Python】XMLのデータを読む
- 18. Pythonでesa.ioのAPIを触る
- 19. Cartopy を用いて地図上の散布図を作りたい場合
- 20. 企業の基本理念をBERTScoreで評価してエントリーする企業を選ぶ
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 sysimport bpy
import fire
from mathutils import Eulerdef make_image(save_path=None):
“””6方向からレンダリングして背景化”””
import mathCAMERA_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 Clientdef 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