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

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

E資格取得を目指して ~序文~

# E資格とは

ディープラーニングの理論を理解し、適切な手法を選択して実装する能力や知識を有しているかを認定する。
([公式サイト](https://www.jdla.org/certificate/engineer/)より)

# きっかけ
pythonを使ったデータ分析周りのノウハウを溜めようと思って始めたところ、本資格の存在を知り、
どうせやるならそこまでできるようになれば、新しい世界が見えるようになるかなと思って始めました。

# 勉強始めました
とりあえず「[ゼロから作るDeepLearing](https://www.oreilly.co.jp/books/9784873117584/)」を買って一通りやるところから始めました。
目標は2021年の2月試験合格目指してます

元記事を表示

PyTorchでの学習・推論を高速化するコツ集

本記事では、NVIDIAから発表されているPyTorchでのディープラーニングを高速化するコツ集を紹介します。

### 本記事について

本記事は、NVIDIAのArun Mallyaさんの発表、
**「PyTorch Performance Tuning Guide – Szymon Migacz, NVIDIA」**
に、説明やプログラムを追加して、解説します。

![d1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191401/af0fbc25-7fad-0731-ed71-d210da1b4f55.jpeg)

本記事のポイントは、Andrej KarpathyがTwitterで呟いている通りとなります。

AtCoder Library Practice Contest 参戦記 (Python)

# AtCoder Library Practice Contest 参戦記 (Python)

ACL Contest は 1200 から rated なので rated で出場できるかどうしようと考えつつ、AtCoder Library Practice Contest を解いてみるテスト.

## [PRACTICE2A – Disjoint Set Union](https://atcoder.jp/contests/practice2/tasks/practice2_a)

ACL に Union Find 入ってないような、見落としてる??? あ、DSU = Disjoint Set Union = Union Find か.

“`python
from sys import setrecursionlimit, stdin

def find(parent, i):
t = parent[i]
if t < 0: return i t = find(parent, t) parent[i] = t return

元記事を表示

蟻本をpythonで(chapter3 中級編~)

#はじめに
プログラミングコンテストチャレンジブック(通称:蟻本)の問題をpythonで解いていきます。
類題も交えながら少しずつ更新していく予定です。

初級編については@sabaさんの記事を参照するのが良いと思います。
https://qiita.com/saba/items/affc94740aff117d2ca9

#3-1 値の探索だけじゃない!”二分探索”
###p128 lower_bound

“`Python
N = 5
A = [2, 3, 3, 5, 6]
K = 3

# K以上であるAiのうち最も左にあるもののインデックス
print(bisect_left(A, K))
“`

###p129 cable master
“`Py
N = 4
K = 11
L = [8.02, 7.43, 4.57, 5.39]

def f(target):
cnt = 0
for i in range(N):
cnt += math.floor(L[i] / target) #各紐から長さtargetの紐がいくつ取れるか
if

元記事を表示

Pythonでコンフィグファイルを簡単に読み込むライブラリを作った

## はじめに

Pythonでアプリケーションを作成する際に、
設定やパラメータを`ini`や`json`, `yaml`形式のコンフィグファイルで持つことが多いと思います。
そのコンフィグファイルを簡単に読み込めるライブラリ: `confile`を作成しました!

## インストール

インストールはpipで行います。

“`python
pip install confile
“`

## 使用方法

下記はデータベースの接続情報が記述されたiniファイルの例です。

“`ini:database.ini
[mysql]
host=localhost
port=3306
user=user
password=password
db=db
“`

使い方は`read_config`でファイルを読み込み、`get_property`, `to_dict`で値を取得します。

“`python
>>> import confile
# MySQL接続用
>>> import pymysql

>>> db_config = confile.read_config(‘datab

元記事を表示

FastAPIについて ~エンドポイントエラーハンドリング~

# FastAPIエラーハンドリングサンプル

>FastAPI version_0.61.1
>Documentation: https://fastapi.tiangolo.com
>Source Code: https://github.com/tiangolo/fastapi

FastAPIのエンドポイントは下記のように実装することで
エラーハンドリング可能になる。

“`python:sample.py
from fastapi import routing
def handle_wrapper(func):
def routing_wrapper(*args, **kwargs):
routing_api = func(*args, **kwargs)
async def api_handle(request: Request) -> Response:
try:
http_response = await routing_api(request)
e

元記事を表示

PythonでPDFファイルを統合する

## はじめに
Pythonの基本文法を勉強するために、複数のPDFファイルを1つのPDFファイルに統合するプログラムを書きました。PDFファイルの結合・書き込みには[PyPDF2](https://pythonhosted.org/PyPDF2/)を使用しています。

## PyPDF2をインストール
pipを使用してPyPDF2をインストールします。

“`
> pip install PyPDF2
“`

## インポート
PDFファイルを統合するために`PdfFileMerger`を、フォルダ指定時にPDFファイルを自動的に見つけるために`os`, `glob`をインポートしておきます。

“`python:merge.py(1)
from PyPDF2 import PdfFileMerger
import os
import glob
“`

## 初期化
統合するための初期化を行います。

“`python:merge.py(2)
def main():
merger = PdfFileMerger()

merge_files = []
“`

元記事を表示

過去の電力使用量取得 四国電力編

# はじめに

電力使用量予測のセミナーをしていて、各電力会社の公表されている過去の使用電力量の形式がまちまちなので取得するのが難しいというご意見を聞いていました。
そこで、それぞれの電力会社別にデータの取得方法をまとめてみます。

ちなみに、対象とする電力会社は、北海道電力、東北電力、東京電力、北陸電力、中部電力、関西電力、中国電力、四国電力、九州電力、沖縄電力で、今回は四国電力さんを扱ってみます。

注:大量のダウンロードを繰り返すとサーバに負担がかかるので、ダウンロードは一回だけにするか、対象期間を限定して行うよう心がけて下さい。

# 動作環境

GoogleさんのCoraboratoryという環境で動作させます。

[Colaboratory](https://colab.research.google.com/)

# Webサイト

以下のWebサイトからデータをダウンロードできそうです。

[四国電力送配電 でんき予報](https://www.yonden.co.jp/nw/denkiyoho/index.html)

# ダウンロード

“`py:
for y i

元記事を表示

ちょっと最適化問題が解けるplatypusを動かしてみた-その2

前の記事の
[ちょっと最適化問題が解けるplatypusを動かしてみた](https://qiita.com/motoyuki1963/items/8df7e98972542698541b)
で、ドキュメントのDTLZ2 問題問題を動かしてみた。
でも、このドキュメントが細かく書いてないので、よくわかりません。

ちょっと簡単な問題で、どう計算されるか、動かしてみて、理解しようと思います。

“`math
minimize (x,-x)\qquad for\quad x\in[-10,10]
“`

plotypusの例題にある問題を少し変えてます。
この問題の意味は、$x$が$-10$から$10$を取った時に、二つの関数

“`math
y=f(x)\qquad y=-f(x)
“`
を最小にする答えは何か?という問題です。

まず`import`です。この3つでよさそうです。
`from platypus import NSGAII, Problem, Real`

次に多目的解の元となる関数を作ります。
`def schaffer(x):return [x[0],

元記事を表示

Blender 2.8, Python, カメラ移動、乱数色指定

Blender 2.8, Python での3D動画作り、
今回は円周沿いカメラ移動と乱数色彩の素材指定と太陽光です。
![bpy_nh18g_scrn.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690216/45dbfe30-800a-e9ea-cfb4-5129d7f10c84.png)

動画はこちら
[blender 2.8, python movie 1 sec. 360kB. camera motion along a circle. ](https://twitter.com/naohiko7/status/1302806811288846337)

100個くらい建物(単に直方体)作ると1秒で800px*600pxでも682kBになりました。
まだまだ色の指定と光の具合がうまくつかめません。
太陽光が届かない建物の影には空の青い色が反映されているのだろうなと考えてます。

ところで、良いプログラム(ソースコード)の条件。
自分が何度か書いて、忘れて、また見直して、再利用して、の経験で

元記事を表示

XGBoostのcallbackを使ってearly_stoppingがかかったときのnum_boost_roundの回数を表示させたい(未達成)

# 前提
筆者超絶弱者なので備忘録として残してます。
間違いがあったら優しく指摘してくださいメンタル豆腐なので
参考サイトのコードを自分なりにわかりやすくした備忘録
環境はazuremlでハイパラ探しにoptuna回してます

# 前提知識
– num_boost_roundは勾配ブースティングのイテレーションの回数
– early_stoppingはvalidationに対して指定回数、予測精度が向上しなかった際にそのroundを終わらせる
– callbackはXGBoostに搭載されてるデバッグのような機能(曖昧)
– 参考https://xgboost.readthedocs.io/en/latest/python/python_api.html#callback-api

# 実装
最低限の実装

“`Python
def return_callback():
def print_num_boost_round(env):
iteration = env.iteration
msg = ‘\t’.join([str(x) for x

元記事を表示

マルコフ連鎖でレポートを自動作成してみた

# マルコフ連鎖とは
マルコフ連鎖を簡単に説明すると、前の時点の状態によって次の時点の状態が決まるというものです。
文章での具体例を見てみると、「おなかが」という言葉を見たら次に「空いた」が来そうな感じがしますよね。でもこれは「空いた」だけが正解ではなく、他にも「いっぱい」が来てもいいわけです。なので、これを確率で表すことを考えようと思います。
「おなかが」の次に続く言葉は、60%の確率で「空いた」、40%の確率で「いっぱい」になると仮定しましょう。この確率が遷移確率と呼ばれる次のそれぞれの状態の確率になります。
ここまでで簡単にですが、マルコフ連鎖について説明しました。ここら辺の話を詳しく知りたい方は [マルコフ連鎖の基本とコルモゴロフ方程式(高校数学の美しい物語)](https://mathtrain.jp/markovchain) 読んでみてください

ただし、文章がマルコフ連鎖ですべて説明できるかといわれたらそうではありません。例えば「僕は おなかが」ときたら「空いた」になる確率が高そうですが、「もう おなかが」ときたら「いっぱい」になる確率が高そうです。
これは文章は一つ前だ

元記事を表示

AtCoder ABC177 A-Dをpythonで

#AtCoder ABC177 A-D問題までpythonで解いてみた.
AtCoder ABC177に参加したのでその記録として投稿しようと思います.
##A問題
高橋君は青木君と待ち合わせをしています。
待ち合わせ場所は高橋君の家からDメートル離れた地点であり、待ち合わせの時刻はT分後です。
高橋君は今から家を出発し、分速Sメートルで待ち合わせ場所までまっすぐ移動します。
待ち合わせに間に合うでしょうか?
###考えたこと
分速Sメートルで移動できる高橋君がT分で移動できる最大距離はS*Tです.
この値とDを比較すれば良いです.(不等号を間違えて1WA出しました())

“`Python
d, t, s = map(int, input().split())
if s*t >= d:
print(“Yes”)
else:
print(“No”)
“`
##B問題
2つの文字列S,Tが与えられます。TがSの部分文字列となるように、Sのいくつかの文字を書き換えます。
少なくとも何文字書き換える必要がありますか?
##考えたこと
len(S)>=len(T)より文字列

元記事を表示

時系列データの扱い方&実装

# はじめに
CS専攻のM2の者です。普段は画像処理が中心ですが、先日時系列データを扱う機会がありましたので備忘録として残しておきます。時系列データの処理をやってみたい方の参考に少しでもなればと思います。**数式等は省いていますので雰囲気を掴みたい方向け**だと思います。また、ミス等がありましたらご指摘ビシバシお願いします。

# 時系列データとは

時系列データとは、**「ある一定の間隔で測定された結果の集まり」**です。気温の変化や降水量、店舗の売り上げの情報に加えて、それが測定された時間の情報をセットで持っているイメージです。

# 時系列データに使えるモデル+用語

### ARモデル(自己回帰モデル)

– 将来のyは、過去のyによって説明される
– 過去の自分のデータを説明変数とする
– 過去のデータに係数をかけたものをいくつか組み合わせて注目するデータを表現
– 定常過程が前提

### MAモデル(移動平均モデル)

– 将来のyは過去の誤差によって説明される
– 将来の予測値は過去の予測値と実績値との誤差により決まる
– (例)今月の売り上げ量が、本来の売り上

元記事を表示

リスト型、タプル型

リスト型、タプル型を使いこなす

リストをソートする
Pythonのリスト型では、要素の並び順を入れ替えるソートを簡単に行なえます。
数値を要素として持つリストに対してsort()メソッドを呼び出すと、要素を昇順に並べ替えることができます。
リスト型は変更可能なデータ型であることから、sort()メソッドを呼び出した結果、リストオブジェクト自体が書き換わります。

【昇順に並び替える】
monk_fish_team = [158, 157, 163, 157, 145]
monk_fish_team.sort()
monk_fish_team

145, 157, 157, 158, 163

sort()メソッドは、なにも引数を与えずに呼び出すデフォルトの動作では、数値を昇順にソートするようになっています。
プログラムではそのような処理を行うことが多いためです。しかし、引数を与えることで並び替えの仕方を変更することができます。
例えば、reverseというキーワード引数をしていしてTrueを渡すと、並び順を降順にできます。

【降順に並び替える】
monk_fish_team =

元記事を表示

pythonでキーボード・マウス操作を自動化して日常業務を効率化【RPA】

#今回で習得できること

pythonでキーボード操作やマウス操作を自動化。
「艦〇れ」だろうが「城プ〇」だろうが周回を自動化できる。
高いライセンス料金でRPAツールを導入しなくても日常業務が効率化できる。
(実際に周回自動化をして見ようかと思ったが規約とか厄介なのでおとなしくやめておく)
~~リモートワークで離席しててもログイン状態を保てるので気付かれることなく・・・~~

#操作したい画面のサイズを取得

pythonでキーボードやマウス操作を自動化するためのパッケージといえばpyautogui。

“`python
import pyautogui as pa
pa.size()
“`

“`
Size(width=1920, height=1200)
“`

確認しやすさのためにtimeを使って動作の前に一旦停止させる。
自動操作の入力が早すぎて画面処理やブラウザが反応に追いつけない時があるので都合に合わせてtimeを使っていく。

#原点からのマウスの移動

画面左上を(0,0)の座標として位置操作を行う。
moveToで(0,0)から指定の位

元記事を表示

Jupyter上でDashを使えるjupyter_dash

Dashは可視化をインタラクティブに行えるウェブフレームワークです。そしてDashにはJupyter上でアプリケーションを動作させるjupyter_dashというパッケージが存在しています。そして最近、Google Colab上でjupyter_dashが動作するようになりました。

今回はjupyter_dashの使い方に加えて、Jupyter上でDashが使えるメリットを紹介したいと思います。

今回はグーグルコラボ上で全ての作業を行います。サンプルのノートは次のリンク先にあります。

https://colab.research.google.com/drive/1eUlcEKeHLzN7zBYPutFeU9yRPOwnWqKi?usp=sharing

## 準備

jupyter_dashはコラボにインストールされていません。あと可視化に使うplotlyのバージョンが古いものになっているので、更新します。

“`
!pip install jupyter_dash
!pip install –upgrade plotly
“`

次に今回利用するライブラリをインポートし

元記事を表示

OTHERカテゴリの最新記事