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

Python関連のことを調べてみた2019年11月16日
目次

動画から顔認識させてみた(OpenCV)

# きっかけ [OpenCVを使って長い動画を一部だけ保存する方法](https://qiita.com/satsukiya/items/9647e20c4e27b3d0362a) [動画からキャプチャ画像を撮る方法(OpenCV)](https://qiita.com/satsukiya/items/c9dfdf237f5c60c90820) と立候補動画からOpenCVを使って画像処理で必要そうな環境を整えていました。 ここからは関数・ライブラリを使って処理してみます。 最初は顔認識です。 # 準備 Macで開発しているのでHomebrewからインストールします。 “` brew install opencv “` それで `/usr/local/Cellar/opencv/4.1.1_2/share/opencv4/haarcascades/` 配下にはカスケード(分配器)と呼ばれる顔や体全体を認識するのに必要なパーツがあります。種類については[OpenCVを使った顔認識(Haar-like特徴分類器)](https://qiita.com/hitomatagi/ite
元記事を表示

強化学習11 OpenAI acrobotをChainerRLでやってみる。

強化学習10まで達成していることが前提になります。 openai acrobotでググると、Acrobot-v1が出てきます。 v1とかv0がよくわからないので、魔改造前の調査をします。 userfolder/anaconda3/envs/chainer/lib/python3.7/site-packages/gym をVSCodeで開きます。 CartPoleで全検索をすると、CartPole-v0とCartPole-v1がありました。 むむ? acrobotでは、Acrobot-v1だけです。 先に作ったCartPoleで、CartPole-v0をCartPole-v1に代えて実行してみました。 難易度が上がっているようです。 そのまま入れ替えてやってみましたが、なんか違う。。。。 Acrobotは振り子運動で、ある高さまで持っていくことで成功報酬が得られます。 未来における価値をあまり割り引かない設定にしてみます。 gammaを0.99にしたところ、うまく行っているように思えます。 DQN(Deep Q Network)を使用しています。 その説明は、たくさん紹介されているの
元記事を表示

pipでパッケージがインストールできない。

#環境 – windows10 – Python3.7.3 – pip19.0.3 #問題 Python初心者ながら見様見真似でAWSを操作したくてboto3を落とそうとしたら pip install boto3出来ない。 “` pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. Collecting boto3 Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(“Can’t connect to HTTPS URL because the SSL module is not available.”)’: /simple/boto3/ Retrying (Retry(total=3, connect=None, read=None, r
元記事を表示

Django2.2 SQLite3バージョンエラー

#python manage.py runserver 実行時にエラーが発生 “` $ python manage.py runserver (省略) django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17). “` #環境 Python3.6 Django2.2.6 SQLite3.7.13 #対処 どうやら SQLiteのバージョンが3.8.3かそれ以降じゃないとダメらしい。 SQLite3の現在のバージョンを表示 “` $ sqlite3 –version 3.7.13 2013-05-20 “` 現在(2019-11-15)のSQLite3の最新バージョンが3.30.1のためかなり古い。 以下のページを参考にSQLite3をバージョンアップする。 [Django2.2で開発サーバー起動時にSQLite3のエラーが出た場合の対応](https://qiita.com/rururu_kenken/items/8202b30b5
元記事を表示

Pythonプログラミングを快適にするWindows + Vim環境の作り方

VimをWindows 10で利用したいが、なかなか苦労しているというユーザーは多いのでは無いでしょうか。

本記事で、Windows 10 上で gVim を使った快適なプログラミング環境を構築する方法について、ご紹介します。

VimでPythonプログラミングを快適にする構成

下記の構成を前提とした構築します。

OS & Python

  • Windows 10 Professional(執筆時点
元記事を表示

RaspberryPiで自分のQiita投稿データを自動収集して定期的にSlackで通知してみた

# はじめに 最近いくつか記事を投稿してきましたが、これまでの合計閲覧数などのデータを見てみたいと思い、ラズパイで環境を作ってみました。今回は、ラズパイで定期的にデータを取得し、1日に1回グラフを作ってSlackに自動送信することをゴールとします。 # 環境 主に開発を行うMacの環境は次の通りです。 “` $sw_vers ProductName: Mac OS X ProductVersion: 10.13.6 BuildVersion: 17G9016 “` 使用するラズパイはRaspberry Pi 3 Model Bを使用しています。OSは次の通りです。 “` $ cat /etc/os-release PRETTY_NAME=”Raspbian GNU/Linux 10 (buster)” NAME=”Raspbian GNU/Linux” VERSION_ID=”10″ VERSION=”10 (buster)” VERSION_CODENAME=buster ID=raspbian ID_LIKE=debian HOME_URL=”http://ww
元記事を表示

強化学習10 学習済みのニューラルネットを使ってみる。

強化学習9まで終了済みが前提です。 開発は、jupyter notebookを使用しています。 VSCodeなどを使用していないので、切り替えが少なくて楽です。 ChainerRLクイックスタートそのままです。 最初に、matplotlibをインストールします。 ※これは、クイックインストールに書いてありません。 “`bash pip install matplotlib “` 以下は、Jupyter notebookからのコピペです。 “`python import chainer import chainer.functions as F import chainer.links as L import chainerrl import gym import numpy as np “` “`python env = gym.make(‘CartPole-v0’) print(‘observation space:’, env.observation_space) print(‘action space:’, env.action_space) obs = e
元記事を表示

Pythonを使って大量の時系列データを少メモリー環境においてそれなりの速度で集計する方法例

# はじめに 複数拠点で1年間で収集した30秒周期のデータを読み込んで各時間の合計値を求めるという課題があり、正攻法でやったら全然処理できなかったので、ちょっと工夫した内容をメモしておきます。 # データ形式 日時と値がCSV形式で拠点ごとに入っています。 |日時|値| |—|—| |2018-10-01 00:00:00|4| |2018-10-01 00:00:30|1| |2018-10-01 00:01:00|2| |2018-10-01 00:01:30|6| |2018-10-01 00:02:00|7| |2018-10-01 00:02:30|7| |:|:| |2019-09-31 23:59:30|7| このデータが100箇所以上の場所から集まってくるというものです。 なお、リアルタイムではなく、一定期間の経過後に集計するという内容でした。 単純計算で、一箇所が1,051,200件、100箇所の合計で105,120,000件のデータになります。 …10億(-_-;) # 最初にやったこと ファイルを全て一気に読み込み、日時でグルーピング
元記事を表示

PythonでGmailを送りたいけどエラーで無理

今日は朝からPythonのオンライン講座に登録しました。 有料コンテンツに入ってすぐ理解不能。 「PythonでGmailを送る」 え??そんなんできんの? でも私はできない。 from email import message import smtplib smtp_host = ‘smtp.gmail.com’ smtp_port = 587 from_email = ‘送る人のアドレス’ to_email = ‘送りたい相手のアドレス’ username = ‘自分のアドレス’ password = ‘パスワード’ msg = message.EmailMessage() msg.set_content(‘test mail’) msg[‘Subject’] = ‘test mail(sub)’ msg[‘From’] = from_email msg[‘To’] = to_email server = smtplib.SMTP(smtp_host, smtp_port) server.ehlo() server.starttls() server.ehlo() se
元記事を表示

sphinxを使うのがしんどいのでPythonのドキュメント生成ツールをつくる

# Overview プログラムがある程度の規模になってくると, 個人~数人規模でもドキュメントをつくるのがほぼ必須になってくると思います. でもPythonのドキュメント生成ツールってあんまりいい感じのがないんですよね. ほぼデファクトスタンダードになっているsphinxなんですけど, ほんとにみんなあんな**苦行に耐えている**のでしょうか?:thinking: 最近のPythonではType HintsやVariable Annotationといった要素が追加され, mypyなどの静的型チェックによってプログラムのデバッグが格段に楽になりました. なのに一生ドキュメント生成は楽にならない…:cry: CythonですらType Hints, Variable Annotationをサポートしたというのにsphinxはといえば**sphinx-quickstart**がquickじゃなくなるばかりです. 誰か偉い人が作るのを待っているのだけどなかなか出てこないし, 仕方ないので自分でつくることにしました. # Usage https://github.com/su
元記事を表示

Docker+VSCode+リモート接続の環境で、Dash(Flask)をデバッグする方法

仕事中にハマったので個人的メモ。 ### 0. VSCode上でDockerコンテナにリモート接続 (既に解説記事が豊富にあるため割愛) ### 1. dash.Dashの`server`オプションに`flask.Flask`で作ったappを指定 “`python:app.py import flask import dash _app = flask.Flask(__name__) app = dash.Dash(__name__, server=_app) “` ### 2. VSCodeのDebug機能→構成を追加→「Python: Flask」を選択 以下の構成がlaunch.jsonに追加される。 “`json:launch.json { “name”: “Python: Flask”, “type”: “python”, “request”: “launch”, “module”: “flask”, “env”: { “FLASK_APP”: “app.py”, “FLASK_ENV”
元記事を表示

動画カメラがファイルの書き出しに失敗したとき、ONE-X編

# 概要 Insta360 [ONE-X](https://www.insta360.com/product/insta360-onex) など、いわゆるアクションカメラで撮影した動画ファイルは大抵30分で分割されますが、最後の1つが「`moov` が見つからない」と言われて再生できない時があります。ファイルサイズはそれなりにあるので、何かデータは保存されているのに!と歯痒い思いで、泣く泣くゴミ箱に捨てた方も多いと思います。今日の話は、この再生できない動画ファイルを復元する、という話です。(できます!) 詳しい話や、ポエムなど必要ないという方は、こちら(https://github.com/kichiki/finsta360 )からコードをダウンロードして
$ ./finsta360.py\
 -s ../Data/MP4/VID_20191023_202638_00_005.insv\
 -r ../Data/MP4/VID_20191023_195632_00_004.insv\
 -o finsta360_00_005.insv
と叩けば、壊れたファイル
元記事を表示

PythonでC(++)のヘッダファイル(.h)からマクロ定数を取得

「PythonとC++で定数を共有したい,かつC++側の定数はコンパイル時に確定させたい,かつPythonでも同じ変数を使いたい」という特異な例があったのでメモ. Pythonから.hで定義された “`c++:sample.h #ifndef _PARAM #define _PARAM #define NUM 10 #define epoch 100 #endif “` と言うような定数を取り出す.今回は,`const int`などで定義したグローバル変数は場合分けがめんどくさいので考えません. “`python def read_header_and_get_macro(header_filepath): with open(header_filepath, mode=’r’) as f: lst = [s.strip() for s in f.readlines()] comment_flg = False for l in lst: items = l.split() if len(items
元記事を表示

python argparse memo

“` argparse_sample.py from argparse import ArgumentParser if __name__ == “__main__”: parser = ArgumentParser() # 必須になる parser.add_argument(“must”, type=int) # 任意になる # actionにstore_treuでbool引数にあればtrueが格納される。 parser.add_argument(“-d”, “–do”, help=”do something”, action=”store_true”) # 途中のハイフンはアンダースコアにすれば使える parser.add_argument(“-o”, “–this-is-option”) args = parser.parse_args() print(args.must) print(args.do) print(args.this_is_option) “` “
元記事を表示

AirpodsProが欲しいので入荷したらLINEに通知する

# ことの始まり AirpodsProの波に乗り遅れた。 先月末発売されたAirpodsProですが、Sonyの例のノイキャンと比較レビューとか見てから買おうと思ってたが、自分が記事を読んだ頃には完売してた、やらかした。 __たまに直営のAppleStoreに入荷が入るらしい__のでそれを監視して、入荷が入り次第自分の__LINEに通知__を送る。 # 下調べ どうやって入庫情報を取得するか問題 どうやら毎朝入荷があった場合ちゃんと更新されているらしい ![スクリーンショット 2019-11-15 13.19.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256196/b4442538-9e38-ea21-44a6-4d0ab52ac72f.png) 受け取れる日を確認をクリックするとこの画面が出る。 郵便番号入れると近くのショップ情報が取得できる ![スクリーンショット 2019-11-15 13.25.15.png](https://qiita-image-store.s3.ap-nort
元記事を表示

多変量正規分布に従う乱数生成の背景にはCholesky分解がいた

分散共分散行列のChoresky分解で、独立な標準正規分布に従う乱数を、多変量正規分布に従う乱数に変換できる。 どゆこと? # 1. 数学的背景 – 確率変数の変数変換 – 多次元正規分布の導出 – 分散共分散行列の性質 – Cholesky分解のアルゴリズム を解説する。 ## 1.1. 多次元確率分布の変数変換 確率変数 “`math \begin{eqnarray} X_1,\ X_2,\ \cdots ,\ X_n \end{eqnarray} “` を、確率変数 “`math \begin{eqnarray} Y_1,\ Y_2,\ \cdots ,\ Y_n \end{eqnarray} “` に変換する。 ただし、$X$と$Y$は、それぞれ “`math \begin{eqnarray} &f_X&\left(x_1,\ x_2,\ \cdots ,\ x_n\right)\\ &f_Y&\left(y_1,\ y_2,\ \cdots ,\ y_n\ri
元記事を表示

Pythonで標準入力を使って生徒の成績を管理するツールを作るには?

標準入力を使って生徒の成績を管理するツールを作ってください。 “save 生徒名 点数“とすると、その生徒の点数を保存。 “save 生徒名 点数“とした場合、  生徒名がすでに保存されている時は、点数を上書きするか警告文を出して、yes/noで上書きの選択を行う。 “get 生徒名“とするとその生徒の点数を表示。  “get 生徒名“を行った場合、生徒が登録されていない場合はErrorと出力させて処理を継続 “quit” とするとプログラムが終了する。 “average” すでに保存されいる生徒全員の平均点 “登録されている生徒XX人の平均点はXX.XX点です” 条件としてsplit関数を使うのと辞書使うことです。
元記事を表示

【pandas】文字列をDataFrameに展開

かゆいところに手が届くpandasレシピ集No.1 # かゆいこと 「カテゴリ名(index)」と「値(value)」が文字列として1つの要素となってしまっている配列・DataFrameをなんとかしたい。 各カテゴリ(index)をcolumn名とする列に値を割り振ろう。 |ID|クソデカ文字列| |:–|:–| |0|A 0, B 1, C 2| |1|B 3, D 4| |2|A 5, C 6| |3|C 7, D 8| ↑この↑クソデカ文字列を↓こう↓したい。 |ID|A|B|C|D| |:–|:–|:–|:–|:–| |0|0|1|2|0| |1|0|3|0|4| |2|5|0|6|0| |3|0|0|7|8| # レシピ 各カテゴリは既知とします。 未知の場合、カテゴリのリストを作成してください。 “`python:str_to_dataframe.py import numpy as np import pandas as pd def str_to_dict(x): dic = {‘A’ : 0, ‘B’ : 0, ‘C’ : 0,
元記事を表示

Python から Azure CosmosDB を操作する (クイックスタート深掘り)

今回は Python から Azure Cosmos DB を操作する方法をクイックスタートを参考に見ていきます。 #準備 まずは、 最新の Python のインストール -> https://www.python.org/ Visual Studio Code にて Python のインストールを実行します。VS Code での Python インストールは任意ですが、VS Code で直接 Python をいじれたり、色々なショートカットがあるので大変便利です。 https://marketplace.visualstudio.com/items?itemName=ms-python.python#overview ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/25810163-8507-ec08-f048-a6eb85e6e5a3.png) #Python アプリの Clone Microsoft が公開している GitHub からコードをクローンします。 `gi
元記事を表示

MatrixProfileによるECGデータの異常検知

MatrixProfileにより時系列データマイニングがレボリューションだそうです。 が、日本語の文献はまだまだ少ないようなので、足しになればと思います。 本記事では、MatrixProfileの概要とPythonによる実装例を紹介します。 #MatrixProfileとは 部分時系列同士の類似結合のことです。 時系列データのペア(A,B)を考えます(同じ時系列同士のペアでも構いません)。 それぞれの時系列は長さmの部分時系列に分解されます。 A内のすべての部分時系列について、それに最も近いB内の部分時系列のインデックスおよびその距離(類似度)を求めたものをMatrixProfileと呼びます。なお、もしAとBが同じ時系列だと、部分時系列も自身とのペアが最適になってしまうので、自身の部分時系列周辺は無視します。 まともに計算しようとすれば膨大な時間が必要となりますが、FFTなどを利用したアルゴリズムの工夫により現実的な時間で解くことが可能です。レボリューションですよね。 詳細はhttps://www.cs.ucr.edu/~eamonn/MatrixProfile.html S
元記事を表示

OTHERカテゴリの最新記事