- 0.0.1. tweepyのStreamListenerやStreamが色々使えない問題
- 0.0.2. jupyter labで最低限これだけは入れとけっていう拡張機能の紹介!
- 0.0.3. Python Controlのシステム結合を図付き解説
- 0.0.4. そろそろログ出力をprint関数から卒業しよう(Python)
- 0.0.5. PythonでnextPageTokenのあるAPIを叩く
- 0.0.6. PLUGGABLE なコマンドラインツールを Python & Click モジュールで作る
- 0.0.7. 媒介中心性 (Betweenness Centrality) を求めるためのBrandesアルゴリズム
- 0.0.8. Pythonで関数のグラフを書く方法
- 0.0.9. Pythonでオシロスコープ波形のエッジ検出
- 0.0.10. 天気予報とLDAで適切な季節数を求める 備忘録
- 0.0.11. PythonでWindowsAPIを使ってPC業務を自動記録
- 0.0.12. 初心者が3日で「ドローンによる物流積載率把握」(画像認識)を作ってみた
- 0.0.13. AlmaLinux OS 9 に Python 3.9 をインストール(OS標準)
- 0.0.14. 【Emacs】Ubuntu22.04でJediを入れたらTypeErrorが起きた話
- 0.0.15. [Python]RSS取得した情報を翻訳してslackに投稿する
- 0.0.16. 【Python】型ヒント入門編
- 0.0.17. [備忘録]MacにDockerとHomebrewをインストールする方法
- 1. 手順
tweepyのStreamListenerやStreamが色々使えない問題
# はじめに
最近、twitterのクローリングをお願いされ、tweepyを使用することにしましたが、色々タイミングが悪かったようなので同様にお困りの方は、バージョンを揃えて以下のとおり試してみてください。# 背景
そこそこ新しい環境でtweepyを使用し、ストリーミングを受信したい。単にそれだけです。笑# 環境
* MacBook Air (M1, 2020) macOS Monterey
* python: 3.7.9
* tweepy: 4.10.0
* forego: 20180216151118# 方法
公式ページ[(tweepy:streaming)](https://docs.tweepy.org/en/stable/streaming.html)にも記載があるとおり、以下の2とおりのやり方があると記載されています。* Stream allows filtering and sampling of realtime Tweets using Twitter API v1.1.
* StreamingClient allows filtering and s
jupyter labで最低限これだけは入れとけっていう拡張機能の紹介!
jupyterをちょっとでも触ってると、ちょこちょこ不便だなぁと思うところが出てきます。(どんなツールでもそうですが…)
でもjupyterくらい有名なプロダクトだと世界中の方が本当にさまざまな拡張機能を作ってくれているので、有効活用させていただきましょう!
anacondaやjupyter labのインストールが終わっていない方はこちらから導入してみてください!
[MacでGISデータ分析を始めるためにサクッとAnacondaとjupyter labをインストールしてみる](https://qiita.com/nokonoko_1203/items/3b5ceb911af6b22a449f)
## ひとまず仮想環境を作ってみる
仮想環境はプロジェクトごとに立ち上げるのが一般だと思いますが、jupyterのようなデータ分析基盤的なツールは1つだけ仮想環境を作って、すぐさま分析に入れるようになんでもかんでも突っ込んじゃうのが案外いいかもしれないと思っています。
なので、ホームディレクトリにでもjupyter_labのようなディレクトリを作って、そこに仮想環境を立ち上げていきま
Python Controlのシステム結合を図付き解説
# はじめに
Python Controlは制御工学に便利なライブラリですが,ドキュメントに図が無いこともあってしばしば使い方を忘れるので,メモを兼ねて図付きで解説していきます.
今回は,システムの結合について解説します.### バージョン
– Python 3.10.4
– Python Control 0.9.2### 準備
“`python
import control
“`# 解説
## `feedback()`
いわゆるフィードバックです.$r$から$y$のシステム$S$について,
“`python
P = … # 任意のioシステム
K = … # 任意のioシステム
S = control.feedback(P, K)
# もしくは
S = P.feedback(K)
“`
そろそろログ出力をprint関数から卒業しよう(Python)
## はじめに
皆さんPythonでログ出力する際に、print関数を使われることも多いと思います。もちろん、print関数を使うことに何ら問題はありません。ただし、少し待ってください。print関数でログを出力する際に将来のことをきちんと考えられてますか?将来、このログはどんな時に検索されるのか、検索される際に検索しやすいフォーマットになっているのかどうか、などです。
今回の文章の結論をいきなり書きますが、何も考えずにprint関数でログを出力するのではなく、時と場合にあった方法でログ出力しましょう、ということになります。
## そもそもprint関数についておさらい
組み込み関数のprintのリファレンスを見てみましょう。
[print](https://docs.python.org/ja/3/library/functions.html#print)“`
print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False)
“`ざっくりと説明すると、キーワード引数無しで引数に追加したものはすべてst
PythonでnextPageTokenのあるAPIを叩く
[Directory API](https://developers.google.com/admin-sdk/directory/v1/quickstart/python)を使おうとしたらnextPageTokenなるものが出てきて扱いに困ったのですが、わりと当たり前な存在らしいので自分用の備忘録として残しておきます。
# nextPageTokenについて
大量のデータを扱うAPIは取得上限が設けられており、1度に全てのデータを取ってくることができないようになっている。
そういったAPIは返り値にnextPageTokenというものがあり、これをリクエストパラメータに含むことで続きのデータを取得できるようになる。
続きのデータが無くなるとnextPageTokenも発行されなくなる。
“`
例えば
データ取得上限が50のポケモンのデータを返すAPIがあったとすると…リクエスト「ポケモンのデータを図鑑No順に全部くれ」
↓
レスポンス「ポケモンのデータ1~50とnextPageToken:Aをあげます」
↓
リクエスト「ポケモンのデータを図鑑No順に全部くれ + nextP
PLUGGABLE なコマンドラインツールを Python & Click モジュールで作る
::: note info
**TL;DR**
* コマンドをプラグイン拡張できるようにする方法と、拡張コマンドを `pip install` でダイナミックに使用できるようにする方法。
* setup.py に `entry_points` を書く方法を工夫する。
* `importlib.metadata.entry_points()` を経由して、`entry_points` を実行可能なモジュールオブジェクトとして取得できる。
* click モジュールのコマンドの後登録機能を使用する。
* 詳しいポイントや書き方は POINT* がつくヘッダを参照されたし。
:::# はじめに
## 動機
コマンドライン(以下 CLI)でできることを増やすことは、ユーザーに提供する機能の実装スピードやコストが最短になる。テクニカルなメンバーがいる場合、そういったメンバーに対してコマンドラインツールを提供することは、それらの運用コストを踏まえた上でも理想的な状態となる。
しかしながら、単純に CLI ツールを作る際、どうしても1リソースのツールとなってしまいが
媒介中心性 (Betweenness Centrality) を求めるためのBrandesアルゴリズム
# 媒介中心性
– ネットワークの中心性: (ノードとエッジからなる) グラフにおける各ノードの重要度を示す指標
– 次数中心性 (次数: 各ノードの接続エッジ数) など、色々ある– __媒介中心性 (ノード媒介中心性)__ : 最短経路を基にした中心性の一つ。ある着目ノードについて、グラフ内の任意の2ノード間の最短経路上に、着目ノードが存在する割合
– $c_B(v)= \sum_{s,t \in V} \frac{\sigma(s,t|v)}{\sigma(s,t)}$
– $V$: ノード集合
– $\sigma(s,t)$: ノード$s,t$間の最短経路数
– $\sigma(s,t|v)$: ノード$s,t$間の最短経路のうち、ノード$v$を経由するものの数– pythonのnetworkxライブラリではbetweenness_centralityとして実装されている
# Brandes アルゴリズム [1]
– One-sided Dependency (始点ノード$s$、着目ノード$v$の媒介中心性)
– $\
Pythonで関数のグラフを書く方法
# x-y座標でグラフを書く方法
自分の覚書として書く。
## 一つのグラフ
下のグラフは`arrange`を用いて $y=\sin x$ のグラフを $x-y$ 平面に $\Delta x=0.01$ おきに $0$ から $2\pi $ までプロットしたものである。
`linspace`等を用いる方法もある。“`python
import numpy as np
import matplotlib.pylab as pltx = np.arange(0, 2*np.pi, 0.01)
plt.plot(x,np.sin(x))
plt.title(‘y=sin x’)
plt.xlabel(‘x’)
plt.ylabel(‘y’)
plt.show()
“`
Pythonでオシロスコープ波形のエッジ検出
[前回](https://qiita.com/nachtele/items/52c08ee9e5366bba3279)までに紹介したタイミング解析ツールは、汎用性を持たせているため、動作が理解しにくかったり、比較的低速だったりという面がありました。
そこで、今回は単純なエッジ検出を紹介します。例えば次のような波形を考えます。
この波形は、スイッチのオン/オフのようなHighレベルとLowレベルを繰り返している信号で、切り替え時にバウンスがみられます。また、細かいノイズも乗っています。
## ヒステリシスコンパレーター
このようにノイズが乗っている波形に対して単一の閾値でHihg/Lowレベルを判定してしまうと、閾値付近を通過する際に何度も閾値をまたいでしまって余計なエッジを検出してしまうので、ヒステリシスコンパレーターを使用するのが一般的
天気予報とLDAで適切な季節数を求める 備忘録
# 概要
日本には美しい四季があることが自慢らしい。しかし日本は亜熱帯地域にあるため雨季を加えなければならないのではなかろうか。
四季が適当か五季が適当か機械学習で吟味してみる。
クラスタリング手法は多くあるが天気予報を文章と捉えたとき、LDA(Latent Dirichlet Allocation)で納得の行くクラスタ数(季節数)を得ることができるのか。
本当は出力が確率分布なのでクラスタ内の各分布距離を計算しながらクラスタ数の後しどころを探す手法を試したかっただけ。確率分布ではAICやBICが使えないから。
そのときの備忘録– 実施期間: 2022年6月
– 環境:Ubuntu20.04 LTS## 1. パケージ
LDAはgensimではなく[scikit learn](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.LatentDirichletAllocation.html)で作成する。確率分布距離は[Jensen-Shannon distance](https://en.
PythonでWindowsAPIを使ってPC業務を自動記録
# はじめに
Pythonプログラムで即業務に役立つサンプルプログラムとして、WindowsAPIを使ってパソコンの操作を自動記録しエクセルに保存するプログラムを作成しましたので、共有します。# 動作環境
Visual Studio Code
Python3.8.8
# 各種利用ライブラリー
ctypes
win32process
win32api
win32con
# 処理概要:
パソコン操作で現在のアクティブウィンドウのタイトル、EXE名、コンピュータ名、ログオンユーザー名、アイドル時間を記録し、エクセルに書き出すことで、業務記録を自動化出来ます。
記録した結果を集計し、グラフなどで分析することで、業務改善に活用出来ます。
また、プロジェクト管理における工数管理や、使った工数による原価管理の自動化にも役立ちます。
また、最近では、在宅勤務における評価やモニタリングにも使えるのではないかと思います。を作ってみた
# 1.この記事の対象の方と完成品
#### 1-1 この記事の対象の方
– トラックや長台車の積載率向上にお悩みの方
– ドローンが大好きで非エンジニアから情報システム部へ異動された初心者の方
– ドローンは物を運ぶだけじゃないと思っている方
– 画像認識などを活用しDXに取り組んでいる方
– 「あれっ?物流業界の問題っていちいち大規模開発の必要っていらないよね?」と思った方
私も新米ですがアイデアを形にしようと思いノーコード開発へ挑戦しました。よろしくお願いいたします。#### 完成品
「カート車の積載率判定を画像認識でする仕組み, および画像を提供するドローン」(注意)人が多い営業中の現場でドローンを飛ばすのが難しかったため
・実際の現場での計測
・安全な場所で現場の実物写真を使用した、定点およ
AlmaLinux OS 9 に Python 3.9 をインストール(OS標準)
# はじめに
Application Stream(AppStream)を利用してRHEL9にPython 3.9をインストール
参考:[動的プログラミング言語のインストールおよび使用 Red Hat Enterprise Linux 9 \| Red Hat Customer Portal](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/9/html-single/installing_and_using_dynamic_programming_languages/index)## サポート
本手法で導入した場合、`Python 3.9 は、RHEL 9 のライフサイクル全体で対応します` という記載より2032-05がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。## LOG
### インストール
通常はインストールされている模様
“`shell-session
# cat /etc/redhat-release
Alma
【Emacs】Ubuntu22.04でJediを入れたらTypeErrorが起きた話
# 起こったこと
– Ubuntu22.04
– Python 3.10.4
– GNU Emacs 28.1の環境で
“`bash
pip install jedi epc
“`したあと、emacs上で`company-jedi`パッケージをインストール。
で、pyファイルを開いて編集すると、補完がされない。Messageバッファでログをみると、以下のエラーメッセージを発見。
> jedi deferred error : (error “\”TypeError(‘Script.__init__() takes from 1 to 2 positional arguments but 5 positional arguments (and 1 keyword-only argument) were given
# 解決
emacsパッケージの方が、jedi(pythonライブラリ)の最新バージョン0.18に対応していないみたい。
古いバージョンをインストールしたら解決。“`
pip install jedi==0.17.2
“`参考:htt
[Python]RSS取得した情報を翻訳してslackに投稿する
# はじめに
当方はしがないバショウカジキなので、情報収集にSNSはあまり活用できていません。
代わりにslackにRSS feedを流して眺めています。外国語のサイトのfeedも購読しているのですが、外国語を読むのは母国語を読むのとは頭の使い方が違うので、記事が大量に配信されるようなサイトだとつい読むのをサボりがちです。
読むかどうかの取捨選択がもう少し簡単になるよう、RSSで配信される内容を翻訳してからslackに投稿する処理を作ることにしました。
~~(実は[Zapier](https://zapier.com/apps/rss/integrations/rss/11886/translate-new-rss-feed-items-and-post-them-to-custom-rss-feeds)に同じことをやって翻訳feedを生成できるテンプレートがあるみたいなんですが(使ったことはない)、せっかくやる気になったので自分で作ります。)~~
# どういうものができますか?
## Beforeslackにあるアプリを利用したRSS feed投稿はこういったもので
【Python】型ヒント入門編
# この記事で書くこと
この記事ではpythonの型ヒントについて簡単に説明していきます。# 型ヒントとは?
型ヒントとは、関数の引数と返り値の型を書いておくものです。
型ヒントは、あくまで注釈であり、あってもなくても、Pythonの実行時にはなにか特別効果があるわけではありません。(別に最悪なくても良い☺︎)
ただ、注釈を書いておいて置くことにより、コードの改修時や、チーム開発で他のメンバーがコードを見た時にわかりやすいようにすることができます。
なるべく記載した方が良いでしょう☺︎# 型の種類
基礎的な方になりますのでなるべく全部暗記できるようにしましょう。
私はbytesを使ったことがなかったのでこの記事書いてて初めて知りました…| 名称 | 型 |
|:—————–|:——————|
| 整数 | int |
| 浮動小数点数 | float |
| 文字列 |
[備忘録]MacにDockerとHomebrewをインストールする方法
一旦自分の備忘録用です。
気が向いたら清書します。手順
1.Homebrewをターミナルからインストール
2.treeをインストール3.Docker for Desktopをダウンロード
4.Docker for Desktopをインストール
5.Docker Hubにアカウント登録
6.DockerFileのBuild7.Docker->mysql->Dockerfileの編集
docker-compose ps

Nameがコンテナ名
docker-django_app_1 → Pythonが入っているコンテナ
docker-django_db_1 → MySQLが入っているコンテナ
docker-django_web_1 → Nginxが入っているコンテナ
Stateという列がUpになっていたらそのコン
【強化学習】Rainbowを解説・実装
この記事は自作した強化学習フレームワークであるSimpleDistributedRLの解説記事です。
概要は[こちら](https://qiita.com/pocokhc/items/a2f1ba993c79fdbd4b4d)です。前手法であるDQNについては[こちら](https://qiita.com/pocokhc/items/bb6a47e4d1d15112469f)を参考にしてください。
Rainbowについては昔記事を書いていますが、知識も更新されているので改めて書いています。# Rainbow
Rainbow は DQN 以降に登場したいろいろな改良手法を全部乗せしたアルゴリズムです。
6種類+DQN なので Rainbow とついています。また、本記事では Multi-Step learning について Retrace を導入しています。
[Rainbow: Combining Improvements in Deep Reinforcement Learning(論文)](https://arxiv.org/abs/1710.02298)
#
Workload Identity連携で、AWS Cloud9からPythonでGCP操作
# はじめに
AWSからGCPの操作がセキュアにできるWorkload Identity連携を、Cloud9上からPythonで試してみたので記事にしました。# まとめ
– 認証ファイルのパスを、環境変数`GOOGLE_APPLICATION_CREDENTIALS`にセットする
– 対象プロジェクトを指定するために、別途環境変数`GCLOUD_PROJECT`にセット
– Cloud9から行う場合は、使用しているEC2にIAMロールを付与して使う
– Pythonライブラリをインストールする際、ローカルにインストールする`pip install -t .`だとうまくいかない# 参考
GCP側の手順やCloud9の設定は以下のページが詳しいです。https://tech.nri-net.com/entry/2021/07/01/111020
# やったこと
## GCP側
前回の記事をそのままやっています。https://qiita.com/a_b_/items/f30b85be4f44ed1f620c#gcp%E5%81%B4
こちらで作られたファイルをそ
Pythonで姓名判断を作って占ってみた話
姓名判断を作ってみました
—
この姓名判断で使ったモジュール
・“pandas“コード
—
多少長くて汚いです、すみません
“`python:本コード
import pandasimi = [
”,
‘飛躍を表す根源数’,
‘物質面や精神面が不安定’,
‘感性で才能が開花’,
‘努力が報われない’,
‘行動力で信頼を得る’,
‘大業を成せる’,
‘目標を掲げ幸福に’,
‘努力で成果を得る’,
‘感情の浮沈で急変’,
‘精神面が不安定’,
‘堅実で人生が安定’,
‘積極性や決断に欠ける’,
‘あふれる魅力で成功’,
‘不平不満が多い’,
‘幸運を呼び込み安泰’,
‘富と名声を得る’,
‘一途な信念で目標達成’,
‘努力と積極性で勝利’,
‘流されやすく急変’,
‘誘惑に弱く急変’,
‘精神力で飛躍’,
‘何事も中途挫折’,
‘順調に躍進’,
‘人気運と金運を持つ’,