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

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

aiohttp Server でいちばん雑に CORS 対応する方法

aiohttp Server で API サーバを実装する場合の CORS[^cors] 対応は、aiohttp 公式で [aiohttp_cors](https://github.com/aio-libs/aiohttp-cors) というモジュールが用意されている。

[^cors]: [オリジン間リソース共有 (CORS) – HTTP | MDN](https://developer.mozilla.org/ja/docs/Web/HTTP/CORS)

しかし Usage を読んでみると、各リソースと各ルートについて `cors.add` でラップする必要があり、どうも一筋縄ではいかない雰囲気。細かく設定ができるのは便利だが、「今はとにかくすべてのリクエストを許可したいんや」というケースもある。

そこで今回は、aiohttp_cors を使わずに雑に CORS 対応する方法について書く。

“` python
from aiohttp import web

@web.middleware
async def cors_middleware(request, handle

元記事を表示

気象データをもとに「天気図っぽい前線」を機械学習で描いてみる(4)

#気象データをもとに「天気図っぽい前線」を機械学習で描いてみる(4) 白黒天気図をカラー化してみた

前回(第3回)では[気象データをもとに「天気図っぽい前線」を機械学習で描いてみる(3)](https://qiita.com/m-taque/items/4d5bb45e6b5dc42dc833) として、教師画像を作成するために「速報天気図」から前線要素を切り抜く話を投稿しました。

今回の話は、(まったく個人的事情ですが)前線要素を切り抜くためのカラー版「速報天気図」の入手可能な対象期間が少なかったため、従来から蓄積していた白黒版「速報天気図」をカラー化してみた、というものです。

## 白黒版「速報天気図」のカラー化
### なぜカラー化か

最近、白黒写真やフィルムを機械学習でカラー化するという話を聞きます。
過去の、どこか現実感がなかった戦時中の映像など、圧倒的に現実感が増して、同時代感まで匂わせて迫ってくるように感じます。

今回のカラー化はそういう話とは全く関係なく、前線要素抽出のアルゴリズム事情だけです。

白黒版の天気図ですと、当然のことながら、前線と、経度緯度線・

元記事を表示

【機械学習】ロジスティック回帰をscikit-learnと数学の両方から理解する

#1.目的
機械学習をやってみたいと思った場合、scikit-learn等を使えば誰でも比較的手軽に実装できるようになってきています。
但し、仕事で成果を出そうとしたり、より自分のレベルを上げていくためには
「背景はよくわからないけど何かこの結果になりました」の説明では明らかに弱いことが分かると思います。

この記事では、2~3で「理論はいいからまずはscikit-learn使ってみる」こと、4以降で「その背景を数学から理解する」2つを目的としています。

※私は文系私立出身なので、数学に長けていません。可能な範囲で数学が苦手な方にもわかりやすいように説明するよう心がけました。

※線形単回帰Verでも同様の記事を投稿していますので、併せてお読みいただけますと幸いです。
[【機械学習】線形単回帰をscikit-learnと数学の両方から理解する](https://qiita.com/Hawaii/items/150897d4f807e5597f18)

#2.ロジスティック回帰とは
ロジスティック回帰とは、ベルヌーイ分布に従う変数の統計的回帰モデルの一種です。
出典:【Wikipedi

元記事を表示

Python で高速化したいなら Python を書いてはいけない

## はじめに

職場で Python に関するライトニングトークをすることになったので、資料をかねて 5 分程度で読めるものを書いてみます。
トークテーマは「Python で高速化を試みる上での心得」です。
**Pythonをディスる記事ではないです。**

### この記事の対象者

この記事は下記の人を対象としています。

– Python 初学者
– Python に興味あるけど、速度でないらしいしなぁ、と考えている人

## 早速結論

タイトルにあるとおり、Python で高速化したいなら(出来る限り)Python を書いてはいけません。
Python を書く量を減らして処理速度を上げようと言うのがこの記事の主旨です。

## そもそも Python は遅い

さて、早速ですが C++や Java などと比べると**Python は遅い言語**です。
Python の遅さに関しては以下のような様々な記事で言及されています。

– [なぜ Python はこんなにも遅いのか? | POSTD](https://postd.cc/why-is-python-so-slow/)

元記事を表示

フィボナッチ数列の実装

友達にフィボナッチ数列pythonで書けるの?と馬鹿にされたので実装してみた

“`python:フィボナッチ数列.py
z = [1,2]
for i in range(100):
result = z[-1]+z[-2]
z.append(result)
print(z)
#[1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170, 1836311903, 2971215073, 4807526976, 777

元記事を表示

言語処理100本ノック-21:カテゴリ名を含む行を抽出

[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)[「第3章: 正規表現」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#ch3)の[21本目「カテゴリ名を含む行を抽出」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#sec2)記録です。
前回は準備事項で、今回からが正規表現の実践です。今までググっては思い出していた基本内容をたくさん使っています。具体的には、**raw文字列・re.VERBOSE・re.MULTILINE・トリプルクォート**など基本だらけ。

# 参考リンク

|リンク|備考|
|:–|:–|
|[021.カテゴリ名を含む行を抽出.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/03.%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE/021.%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E5%90%8D%

元記事を表示

Backtrader QuickstartページのサンプルスクリプトとCSVデータ

backtrader Document_Quickstart
https://www.backtrader.com/docu/quickstart/quickstart/

インストールを終えて、こちらのページにあるサンプルスクリプトを動かす段階で「指定されたPathにCSVファイルがない」という趣旨のエラーが出ました。

検索してみましたが、該当するフォルダそのものがローカルにありませんでした。どうやらPIPでbacktraderをダウンロードするとサンプルスクリプトを動かす際に使うデータフォルダおよびサンプルフォルダそのものが同梱されないみたいです。

https://github.com/mementum/backtrader/blob/master/datas/orcl-1995-2014.txt
そこでGitから「orcl-1995-2014.txt」をコピーしてどこか適当な場所に保存します。そしてスクリプト内のファイルパス指定部分を書き換えます。

“`python:datapath.py

datapath = os.path.join(modpath, ‘../..

元記事を表示

カレントディレクトリにPipfileが作成されない

## 事象

`pipenv`で仮想環境を作成した時にカレントディレクトリに**Pipfile**が作成されない
![スクリーンショット 2020-02-05 0.40.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252241/22e81f64-14a0-d2b6-d6f3-9d11d8d52a8e.png)

“`フォルダ構成
parent
└── child ←このディレクトリに作成したいが「parent」ディレクトリに作成されてしまう?
“`

## 原因

親ディレクトリに**Pipfile**が存在していたため。
親ディレクトリに存在していると親ディレクトリの方を見るらしい……。

## 対応

親ディレクトリにある`Pipfile`が不要であれば、
削除してから再度仮想環境を作成するコマンドを実行する。

または、下記コマンドで仮想環境を作成することで親ディレクトリに`Pipfile`が存在していても
カレントディレクトリに`Pipfile`が作成される。

`PIPE

元記事を表示

[Python]infで正の無限大を表す

float(‘inf’)もしくはmath.infを使う。(math.infはPython3.5から)

## 実行してみる

“`
>>> float(‘inf’)
inf

>>> import math
>>> math.inf
inf

>>> float(‘inf’) == math.inf
True

>>> math.inf > 10 ** 10
True
>>> math.inf < 10 ** 10 False ``` ## ドキュメント https://docs.python.org/ja/3/library/math.html#math.inf

元記事を表示

Pythonista3を使ってTwitterのTLをiphoneに音読してもらう

# 背景
仕事が終わってTwitterのTLを見ようかと思っても、他にやりたいことが多くてTwitterを見る時間がとれないので、iPhoneが話してくれるのを聞くだけで済むようにした。

# 環境
iPhone8 13.2.3
Pythonista3 3.2
Tweepy 3.5.0

#準備
・Pythonista3のインストール
・Twitter APIの登録申請
(参考:[PythonでTwitter API を利用していろいろ遊んでみる](https://qiita.com/bakira/items/00743d10ec42993f85eb))
・StaShのインストール
(参考:[Pythonista 3 にStaSh をインストールする。](https://qiita.com/maboy/items/cef5dee13d5b2e9ac843))
・Tweepyのインストール

#ファイル構成
今回私は以下のようなファイル構成にした。
├─twitterconfig.py #認証情報を管理
├─sp_timeline.py #実際に動かすコード

#コード
`

元記事を表示

Pythonista3を使ってTwitterの検索にヒットした画像と動画をiPhoneに自動保存する

#背景
前回の記事([Pythonista3を使ってTwitterのTLをiphoneに音読してもらう](https://qiita.com/sho6o/items/f59bdee7051c1d56d664))と動機はほぼ同じです。今回はTwitterの検索結果から画像と動画のみを抽出してiPhoneに自動保存します。

#環境
iPhone8 13.2.3
Pythonista3 3.2
Tweepy 3.8.0

#準備
・Pythonista3のインストール
・Twitter APIの登録申請
・StaShのインストール
・tweepy, requests, youtube-dlのインストール

#コード
“`python:sav_photo_video.py
#!Pythonista3
#twitterから検索に一致した画像をiphoneのアルバムに納めるプログラム

import os, requests, photos, youtube_dl
import twitterconfig
from twitterconfig import api

#検索する言葉から画像と動

元記事を表示

multiprocessing + psycopg2 でハマったところ

## やりたかったこと

複数回`pd.read_sql`実行する処理を`multiprocessing`で並列処理したかった。

## Versions

|Name|Version|
|:-:|:-:|
|python|3.7.3|
|pandas|0.24.2|
|numpy|1.16.2|
|psycopg2-binary|2.8.4|
|PostgreSQL|11.5|

## 成功例(非並列ver.)

### コード

“`python
import multiprocessing
import pandas as pd
import numpy as np
import psycopg2

def get_connection():
connection = psycopg2.connect(
host=’hostname’,
user=’username’,
database=’databasename’,
password=’password’)
return connection

def function()

元記事を表示

【RaspberryPi】部屋の照明を消すと自動的に LCD も消灯するエコ設計 DIY

[前回](https://qiita.com/Kazuya_Murakami/items/6f54d600d75b66bcdb8e)は液晶ディスプレイを消灯できるものに交換しました。
次はロマンを追い求めてみたいと思います。

## 仕様
1. 部屋の照明が消える
2. Arduino に接続された照度センサーにより部屋の照度を検知(50 以下になる)
3. Python がシリアル通信から部屋の照度を取得(50 以下を取得)
4. 部屋が暗い状態に(照度 50 以下に)変化したら液晶ディスプレイの消灯コマンドを実行
5. 部屋の照明を点ける
6. 部屋が明るい状態に(照度 50 以上に)変化したら点灯コマンドを実行

## 背景
– コマンドをいちいち打つのが面倒
– かといって部屋に人がいない(照明を消した)状態で LCD 点きっぱなしはもったいない
– ロマン重視

## ハードウェア設計
マイコン:Arduino Micro
照度センサー:NJL7302L-F3 1個
抵抗:10kΩ 1個

回路はそれほど難しいものではないです。
入力は 5V で、出力が A3 と抵抗 10k

元記事を表示

Pythonの例外処理についてまとめてみた

# 例外処理

今日は**エラー**について解説していきます。初歩的な内容ですが、エラーなんて“try~except“書いときゃいいんでしょ?という方は、参考にしてみてください。また、説明に誤りがある場合コメントをいただけると幸いです。

さて、Pythonで生じるエラーは主に二つに大別されます。一つは構文エラー(syntax error)例外(exception)です。

## 構文エラー
これは、プログラムを実行する前から誤っていると判断できる際に起こります。例えば、識別子(identifier)の規則を満たしていない変数名を使ったり、インデントがおかしかったり、とにかく文法がおかしい時に生じるエラーのことです。`a[0]`を`a[0}`と書いたり、`if`を`of`と書いたり…(これやったことありますか?僕はあります…)例を上げきれませんね。簡単に言えば、構文エラーはプログラムを書く練習をしていれば減ってくる文法ミスです。一応例を書いておきます笑

“`python

元記事を表示

Backtraderのインストール

backtraderの日本語記事が少なかったので自分が書いてみることにしました。
つまづいたことや動かしてみてわかったことを書き留めていこうと思います。
間違っている部分を見つけたらコメント等で指摘していただけると幸いです。

backtrader人口が増えてもっと解説記事が増えたらいいなー、と願ってます。

私の動作環境
`Windows8.1pro 64bit`
`Anaconda3 2019.10`
`(backtrader用の仮想環境をPython3.5で構築)`

#Python3.5仮想環境にJupyternotebookインストール
Anaconda3のインストールや仮想環境の構築に関してはわかりやすくて詳しい記事がたくさんありますのでそちらを参考にしてみてください。
私の場合、仮想環境でJupyternotebookを起動した際にカーネルエラーが発生しました。Win32apiが見つからないという趣旨のことが書かれていて仮想環境にPIP経由でpywin32をインストールすることで解決できました。

こちらの記事に詳しく書かれています。
*Anacondaの仮想環境で

元記事を表示

Fn Projectを使ってPythonで書いたfunctionを動かしてみる

# 概要

このエントリでは、OSSのFaaSサーバである「Fn Project」を使い、Pythonの関数を動かすパターンを扱います。

下図のようなPythonによる掛け算の関数をFnのサーバにデプロイして動かします。

![calcfn_multiply.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65002/0820cfb3-ea98-b683-2204-8fcc26c8246f.png)

## 想定読者

– Fn ProjectでのJavaScriptプログラムまだ自分で動かしていない方
– [「Fn Projectを使ってJavaScriptで書いたfunctionをNodeで動かしてみる」](https://qiita.com/hrkt/items/8dd1cd0e0e68e8575b6e)のPython版に興味がある方

# 準備

Fn Projectを動かすまでのところは、別エントリ[「OCIのMicro InstanceでCentOSにFn Projectのサーバをインスト

元記事を表示

VOICEROID2で自動読読み上げ&保存させてみた

##はじめに
VOICEROIDを使って何かコンテンツを作りたいと思ったのですが、**VOICEROIDのソフトウェアが入っていないパソコンでは音声を聞くことができない!!**

じゃあ、「API探して何とかしよう!」と思い、APIを探したのですがまったく見つからなかったので、入力されたテキストをVOICEROIDに通し、音声ファイルを保存、それを呼びだすものを作ってみました。

**参照記事**
[VOICEROID2(紲星あかり)をプログラムから動かしてみる](https://qiita.com/Teara/items/936733c9e7e47b5ebe79)
[Inspectツールを使ってUIを調査するには?[Windows 8/Windows 8.1ストアアプリ開発]](https://www.atmarkit.co.jp/ait/articles/1404/03/news004.html)

**使用したものなど**
python3
{tkinter, wave, pywinauto}

##具体的な構造
python3のtkinterを使って入力ボックス、送信ボタン、キャ

元記事を表示

VOICEROID2で自動読読み上げ&保存させてみた2

##はじめに
[前回の記事]
(https://qiita.com/tkmktdm/items/6f8e363858f4061d8cfd)を参照していただけるとわかる通り、前回は、自動保存する際に同一ファイルに保存するだけでした。しかしhtmlファイルを書いてjavascriptで音声ファイルを読み込ませてみた結果新しく開きなおすか、別ファイルを読み込まないとダメ?見たいでした。(詳しくは分かりません笑)

##具体的に
前回作ったmainプログラムファイルに、グローバル変数を用意して送信される数をカウントする。

名前を付けて保存のところで名前を付ける欄 [コンボボックス] を、Inspectツールを使って探して場所を探します。そして、mainで用意したグローバル変数をそこに入れて、別の名前つけるという構造になっています。

##メイン画面
“`aitalk.py
import wave
import winsound as ws
import tkinter
import sys
import tkinter.messagebox as tkm
import time
from

元記事を表示

SciPy 1.4 のソースビルドには pybind11 が必要

* 環境: Debian 10 (native/WSL), Python 3.8

普段 scipy を pip でインストールするときにソースビルドして [Intel-MKL とリンク](https://qiita.com/osanshouo/items/7a729aabf65a70ad6762) していたのですが, scipy 1.4 からビルドに失敗するようになりました. なんでかなと思ったら, [この issue](https://github.com/scipy/scipy/issues/11241) で述べられているように, scipy 1.4 から [pybind11](https://github.com/pybind/pybind11) が必要になったからでした. なのでアップグレード前にインストールします.

“`terminal
$ pip3 install pybind11
$ pip3 install –upgrade –no-binary :all: scipy
“`

これでできました.

“`terminal
$ pip3 freeze | g

元記事を表示

Tensorflow.Kerasモデルで TPU/GPU/CPU を自動的に切り替える

# はじめに

この記事は、TensorFlow.kerasを使用していたとき、ハードウェア情報(主にColaboratoryのランタイム情報)を読み取って、TPUとGPU(一応CPUも)を自動的に切り替えて実行できるプログラムを書く方法をまとめています。 ~~(手動でコメントアウトするのが面倒になってきたため)~~

大体、[公式サイト](https://cloud.google.com/tpu/docs)(Google Cloud, Cloud TPU Docs)掲載の[KerasとTPUでMNIST](https://colab.research.google.com/github/tensorflow/tpu/blob/master/tools/colab/keras_mnist_tpu.ipynb)を要約した内容です。tensorflow.kerasに慣れている方は、参照元を読んだほうがわかりやすいかもしれません。

補足・注意など

– 動作検証はColaboratory上で実施しています。
– たぶんtensorflow ver2にも対応しています。
– tensorfl

元記事を表示

OTHERカテゴリの最新記事