- 1. Mailmanの「親子リスト」でSubject,フッターの修飾がたくさん付くのを回避。(ついでにfmlでの親子リスト)
- 2. [Python自動化] Slackのユーザーアイコンを絵文字化する [SlackAPI]
- 3. macOS Catalina で Fabric が使えなくなったら
- 4. pythonでcronジョブの管理しよう
- 5. 内部関数を用いた際の変数スコープ
- 6. PandasのDataFrameに対する基本操作をJupyter Notebook上で試す
- 7. 動画からキャプチャ画像を撮る方法(OpenCV)
- 8. PyTorchのBidirectional LSTMのoutputの仕様を確認してみた
- 9. 【株価分析】日経平均でpandas学習(005:年/年月ごとのグルーピング~統計情報の確認)
- 10. 強化学習6 初めてのChainerRL
- 11. asyncio を使って非同期処理をしてみた
- 12. 初心者がUE4でルービックキューブ風なものを作って強化学習用のライブラリにしたい #4
- 13. ちょっとブログ感覚でじぶんが触れたことあるものまとめ
- 14. Django + Google Cloud Strageで、ImageFieldの画像をサーバでも正常に表示させる
- 15. OpenCVを使って長い動画を一部だけ保存する方法
- 16. Python + ImageMagick > BMP形式の文字一覧から文字を切り出す (東雲フォントのBMP変換に対して)
- 17. Pythonで蟻本”Lake Counting”を解いてみた
- 18. CNNを用いた画像認識 馬と鹿
- 19. 「Azure ML Studioで機械学習」の要点
- 20. pypyodbcを使って手っ取り早くAS/400からデータを取得してみた
Mailmanの「親子リスト」でSubject,フッターの修飾がたくさん付くのを回避。(ついでにfmlでの親子リスト)
# 動機
`fml`で運用しているMLを`Mailman`に移行することにした。移行前のMLは、いくつかのサブグループのML(サブML)と、それらを包含するグループ全体のML(上位ML)で構成していた。`fml`では、上位MLの設定ファイル`config.ph`の最後で、配信先の行列にサブMLのメンバーファイルを読み込むようにしていた。`Mailman`では上位MLの配信先にサブMLを加えるというのが[標準的な方法](https://wiki.list.org/DOC/How%20do%20I%20set%20up%20an%20umbrella%20list%3F)らしい。ただ、この場合上位MLに送った場合の配信メールでは、サブジェクト修飾 ([mlname:index]…)や本文のフッタ修飾に、上位MLとサブMLの両方のものが着いてしまって大変煩わしい。ML階層が増えた日には目も当てられない。なにより、サブジェクト修飾では、**サブMLの修飾が頭に付くので、MUAでは(時に短縮表示されることもあるので)ぱっと見ただけでは上位のMLから配信されたメールであることがわからない*
[Python自動化] Slackのユーザーアイコンを絵文字化する [SlackAPI]
## つくったもの
Slackのユーザーアイコンを絵文字化してくれるスクリプトを書きました。
↓こんな感じでユーザーのアイコンがそのままリアクションに使えるようになります。(**誰がリアクションしたのかひと目でわかって便利??**)![スクリーンショット 2019-11-10 12.41.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206591/bc7f1e97-4ac5-422b-dc1f-e86fd91baeb6.png)
てっとり早く使いたい人はリポジトリを見て下さい。
https://github.com/KoseiYoshida/slack_usericon_to_emojiこっから先はスクリプトの中身を解説していきます。
解説見なくてもリポジトリ見ればやってることはわかると思います。
が、せっかく作ったので、自分のアウトプットも兼ねてスクリプトの解説記事を書いてみました。## 想定読者
* SlackAPIを使って情報を取得していく流れを見たい人
* Py
macOS Catalina で Fabric が使えなくなったら
OSX を Catalina にアップグレードしたら Fabric を使うとエラーがでるようになりました。
“`
% python
Python 3.7.5 (default, Nov 1 2019, 02:16:23)
[Clang 11.0.0 (clang-1100.0.33.8)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import fabric
zsh: abort python
“`Fabric と一緒にインストールされる asn1crypto をアップグレードすると直ります。
“`
% pip install -U asn1crypto
“`おしまい。
pythonでcronジョブの管理しよう
[![Build Status](https://travis-ci.com/dakc/cronpi.svg?branch=master)](https://travis-ci.com/dakc/cronpi) [![pypi](https://img.shields.io/pypi/dm/cronpi)](https://pypi.org/project/cronpi/) [![GitHub license](https://img.shields.io/github/license/dakc/majidai.svg?style=popout)](https://raw.githubusercontent.com/dakc/cronpi/master/LICENSE)
# cronpiとは
crontabの処理がもっと簡単に管理できないかと色々悩んだ結果、Pythonでパッケージを作ることにしました。本当は名前を「cronpy」にしたかったのですが、すでにほかの方が登録していたので「cronpi」にしました。
[cronpi](https://pypi.org/project/c
内部関数を用いた際の変数スコープ
何回か使うけど、外出しのmethodにする必要もないなという場合に使う関数の入れ子。
“`python
def hoge():
def fuga():
pass
“`これを使うときに変数の扱いがどうなるのかなと思ったので検証。
## ローカル変数
“`python
def hoge():
x = 1
def fuga():
x = 3
fuga()
print(x)
“`
実行結果“`python
hoge()
1
“`
ローカル変数の場合はそれぞれ別の変数として扱われるようだ。当然っちゃ当然。
ただ、これは`nonlocal`宣言で変更することができる。“`python
def hoge():
x = 1
def fuga():
nonlocal x
x = 3
fuga()
print(x)
“`
実行結果“`python
hoge()
3
“`## クラス変数
“`python
class Sampl
PandasのDataFrameに対する基本操作をJupyter Notebook上で試す
いままでPythonでPandasでのデータ操作は、必要になったらググって使い方を調べればいいという程度のスタンスでしたが、データ分析や機械学習のあたりを勉強するにあたって、Jupyter Notebookでデータをスラスラと操作できないと話にならないと感じてきて、Pandasの使い方を基本から改めて整理して勉強し始めています。この記事はその勉強ノートです。
# DataFrameの概要
PandasのDataFrameは、行と列のある表形式のデータのイメージです。行には0から始まる行番号を付けることもありますが、文字列でもいいようです。列には列の名前がついています。
DataFrameは表形式であるのに対して、Seriesという列だけのオブジェクトもあります。
DataFrameとSeriesの内容は以下の記事がとても参考になりました。
[僕のpandas.SeriesとDataFrameのイメージは間違っていた – Qiita](https://qiita.com/tonluqclml/items/33b541801dbd12d1bb09)この記事の内容は、以下のリンク
動画からキャプチャ画像を撮る方法(OpenCV)
# きっかけ
[OpenCVを使って長い動画を一部だけ保存する方法]
(https://qiita.com/satsukiya/items/9647e20c4e27b3d0362a)で取得した1分動画から画像処理のサンプル画像用に好きなところでキャプチャを撮るスクリプトを作ってみたっす:laughing:# 開発
Viewを表示して キーボードの s[save] ボタンを押すとキャプチャが保存されます。
“`Python
import cv2if __name__ == ‘__main__’:
cap = cv2.VideoCapture(‘one_minutes.mp4’)
window_name = “Drop Out NHK”save_press_count = 1
while True:
presskey = cv2.waitKey(1)if not cap.isOpened():
breakret, frame = cap.read()
if presskey == ord(‘q’):
break
eli
PyTorchのBidirectional LSTMのoutputの仕様を確認してみた
# はじめに
[LSTMのリファレンス](https://pytorch.org/docs/stable/nn.html?highlight=lstm#torch.nn.LSTM)にあるように、PyTorchでBidirectional LSTMを扱うときはLSTMを宣言する際に`bidrectional=True`を指定するだけでOKと、(KerasならBidrectionalでLSTMを囲むだけでOK)とても簡単に扱うことができます。
が、リファレンスを見てもLSTMをBidirectionalにしたきの出力についてはあまり触れられていないように思います。
ぱっとググってみてもPyTorchにおけるBidirectional LSTMの出力の仕様がいまいちよくわからなかったので、ここに簡単にまとめておきます。# 参考
1. [Bidirectional recurrent neural networks](https://en.wikipedia.org/wiki/Bidirectional_recurrent_neural_networks)
1. [Understan
【株価分析】日経平均でpandas学習(005:年/年月ごとのグルーピング~統計情報の確認)
# 前回(ローソク足チャート(仮名)まで)の続きから
前回はローソク足チャートを色々変更加えて編集しようと思ったけど、それより先にgroupbyの機能についてまとめておきたかったので、先に本稿を記載します。
# 前回までのプログラム(再掲)
“`python:Study_Code.py
import pandas as pd
import logging
# 【株価分析】架空データでpandas学習(003)より追加
from pandas import Series, DataFrame
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from mpl_finance import candlestick_ohlc# ログフォーマットの指定
# %(asctime)s : LogRecord が生成された時刻を人間が読める書式で表したもの。
# %(funcName)s : ロギングの呼び出しを含む関数の名前
# %(levelname)s : メッセ
強化学習6 初めてのChainerRL
ChainerRLクイックリファレンス
https://chainer-colab-notebook.readthedocs.io/ja/latest/notebook/hands_on/chainerrl/quickstart.html強化学習5まで終了しているのが前提です。
クイックリファレンスを参照しながら、以下のファイルを作ります。“`train.py
import chainer
import chainer.functions as F
import chainer.links as L
import chainerrl
import gym
import numpy as np
env = gym.make(‘CartPole-v0’)
print(‘observation space:’, env.observation_space)
print(‘action space:’, env.action_space)obs = env.reset()
env.render()
print(‘initial observation:’, obs)actio
asyncio を使って非同期処理をしてみた
# きっかけ
`asyncio`の良さげなサンプルコードがなかったのですが、[Python でのオンデマンド・データ, 第 3 回 コルーチンと asyncio](https://www.ibm.com/developerworks/jp/library/ba-on-demand-data-python-3/index.html)がレストランにいるウェイターが複数のオーダーに対応するといったより具体的なストーリーを交えて説明していたので一番分かりやすくて参考になります。
よく見かける[python3 の async/awaitを理解する](https://qiita.com/maueki/items/8f1e190681682ea11c98)や[Pythonにおける非同期処理: asyncio逆引きリファレンス](https://qiita.com/icoxfog417/items/07cbf5110ca82629aca0)よりも良いです。# 開発
“`python
import asyncio
import timeasync def start_time(src):
初心者がUE4でルービックキューブ風なものを作って強化学習用のライブラリにしたい #4
前回に引き続き初心者がUE4を絡めたPythonライブラリを作れないか色々進めていく記事です(ほぼ自分のための備忘録としての面が強い・・)。
最初 : [#1](https://qiita.com/simonritchie/items/e8d84c2941b5bd2862f5)
前回 : [#3](https://qiita.com/simonritchie/items/97d20347424e7c08cddc)# Pythonスクリプトでのimportなどはできるのか試してみる
PyActorのブループリントにていずれかのPythonモジュールを指定するわけですが、その際に他のScriptフォルダー以下のPythonモジュールをimportできるのか試してみました。
ue.logなどでコンソール出力してみた感じ、どうやらPyActorのブループリントで指定したもののみ実行されるようです。
他のモジュールのimport自体はエラーが発生しないようなのですが、そのモジュールで追加してある関数などを呼び出すとエラーになってしまいます。
pipでインストールしてあるものは問題なく使え
ちょっとブログ感覚でじぶんが触れたことあるものまとめ
## python
### flask
pythonのwebアプリケーション用ライブラリ。
プロトコル通信での送受信を結構簡単に行える。受信した数値に対してpython側で計算をしたり、表にまとめるなどできる。インスタグラムなどの大規模なシステム構築には向かないらしい。しかし、簡単なウェブアプリケーションを作るうえでは問題ない。
正確な情報や不正確な情報が蔓延しているので、実際に実装して確かめる必要がある。ポート開放の知識が必要。
flaskの使い方の初歩はここから学んだ。https://qiita.com/keimoriyama/items/7c935c91e95d857714fb
https://qiita.com/5zm/items/ac8c9d1d74d012e682b4
【クラインアント→サーバー】クライアントからファイルを貰う方法の参考に。https://qiita.com/5zm/items/760000cf63b176be544c
【サー
Django + Google Cloud Strageで、ImageFieldの画像をサーバでも正常に表示させる
HerokuやGAE(Google App Engine)などのサーバで、ImageFieldを使用しても画像が正常に表示されません。
これは、SQLが画像のアップロードに対応していないためで、これの解決にはGoogle Cloud StrageやAmazon S3などのクラウドストレージに画像をアップロードしなければなりません。
今回は、Google Cloud Storageに画像をアップロードする方法をご紹介します。
> Django Strage (Google Cloud Storage) 公式ドキュメント
> https://django-storages.readthedocs.io/en/latest/backends/gcloud.html# Django Strage のインストール
Django で Google Cloud Strage を扱うための Django ライブラリ、 `Django Strage (Google Cloud Storage)` をpipでインストールします。“`:bash
$ pip install django-s
OpenCVを使って長い動画を一部だけ保存する方法
# きっかけ
[グフ/増殖系YouTuber](https://www.youtube.com/channel/UCq1qxbk_BS66ue6-xydKmrg) の [「NHK」で増えて「ぶっ壊す」で倍になる立花孝志](https://www.youtube.com/watch?v=NcR2d8_iM9o) にsyncしました:rolling_eyes:
ちょうど良い動画素材で、領域分割・顔認識・テロップを消すには・・・などなど何かしらでopencvで出来そうです。
この動画は18分あるのですが候補者が登場する冒頭の1分だけを使いたいと思っています。
で、一部分だけ時間によって抽出する方法をpythonとOpenCVのみでやってみます。# 元素材
– [NHKをぶっ壊す!【政見放送】 NHKから国民を守る党【立花 孝志他3名】全国比例区](https://www.youtube.com/watch?v=iRi4od_Thus&t=113s)[![NHKをぶっ壊す!【政見放送】 NHKから国民を守る党【立花 孝志他3名】全国比例区](http://img.youtube.com
Python + ImageMagick > BMP形式の文字一覧から文字を切り出す (東雲フォントのBMP変換に対して)
“`txt:動作環境
Ubuntu 16.04 LTS
Python 3.5.2
ImageMagick 6.8.9-9 Q16 x86_64 2018-09-28
“`### 概要
– 東雲フォント(BDF形式)をBMP形式に変換した
– BMP形式から各文字を切り出す
– 16×16のフォント### 実装 v0.1
枠線は2ピクセル。
“`divide_191112.py
import subprocess as sb
import sys# on Python 3.5.2
# Ubuntu 16.04 LTS# cut out 16×16 bitmap fonts
BORDER_WIDTH = 2
INFILE = “shnmk16.bmp”
idx = 0
for lin in range(10):
for col in range(32):
idx = idx + 1
xpos = BORDER_WIDTH + (BORDER_WIDTH + 16) * col
ypos = BO
Pythonで蟻本”Lake Counting”を解いてみた
ゆっくりだけど蟻本解いていきます。
今日はLake Counting。“`lake_counting.py
def lake_counting(lake):
# 水たまりWの数を数える
# 8近傍で隣接しているWは一つの水たまりとみなす# 文字列のlakeを配列に格納
def lake_to_list(lake):
lake_list = []
lake = lake.split()
for i in range(len(lake)):
lake_list.append([])
for j in range(len(lake[0])):
lake_list[i].append(lake[i][j])
return lake_listdef dfs(lake_list, x, y):
lake_list[y][x] = “.”# W
CNNを用いた画像認識 馬と鹿
# はじめに
初めての機械学習を行う際に、画像認識に興味があり、やってみようと思ったのですが、どういったアプローチにしようか迷っていました。
そこで、Aidemyの「CNNを用いた画像認識」というコースがあったので、それを受講し、CNNをやることにしました。最初に考えたのが、競馬が好きなので競走馬の分類。
【競走馬 = 騎手が乗っている馬】として考えて、競争馬でも裸馬でも、【馬】として認識できるものを作ろうと考えました。**分類は馬と鹿にしました。**
理由は、馬の画像収集の過程でCIFAR-10のデータセットも使わさせて頂いたのですが、CIFAR-10の中にdeer(鹿)があったからです。
動物として似ているものに挑戦してみたかったので、ちょうど良かったです。####TODO
1. 画像収集
2. 収集画像の処理
3. 画像の水増し
4. 画像を学習/検証データにする
5. モデル構築と保存
6. 結果のグラフ化
7. 別の画像でテスト##画像収集
画像収集には、以下を利用しました。– Google Images Download
– bing_image_dow
「Azure ML Studioで機械学習」の要点
#「Azure ML Studioで機械学習」の要点
この本 →クラウドではじめる機械学習 改訂版 が簡素だけども難しすぎずに小綺麗にまとまっているので要点をまとめておく。
##回帰による数値予測(サンプル
pypyodbcを使って手っ取り早くAS/400からデータを取得してみた
永らく(3か月くらい) IBM client solution の「SQL scriptの実行」を使ってSQLの発行・データ取得を行っていましたが、データ件数が5000件を超えたあたりから、全件取得するために延々スクロールさせるのが面倒になってきたので、PythonとODBCを利用して一括取得の実験をしてみました。
実験コードですので、エラーチェックや出力結果のフォーマットは度外視しています。
# 実験環境
PC環境
– Windows10
– python 3.8
– pypyodbc 1.3.4
– IBM i Access Client Solutions 1.1.0 (ODBCドライバ)接続先環境
– AS400 V7R3
# 準備
## Pythonの取得
[python.org](https://www.python.org) から最新安定板を取得してインストールします。
インストール後、”python.exe”のあるフォルダにパスを通しておきます。## pypyodbcの取得
なぜ、一般的なpyodbcではなく、pypyodbcにしたかといえば