- 1. Windows10のpyenvでデジタル署名のエラーの対応(仮)
- 2. 機械学習入門 vol.1 Pythonの基礎1 記述とデータ型
- 3. Pythonで爆速Webフレームワークを実装した
- 4. httpでpostしたデータをmqttでpublishする
- 5. huggingface/transformersでpipelineの出力にtokenized textとattention weightを加える
- 6. Djangoについてゼロから勉強してみる(入門)
- 7. Python スクレイピング実装時に出会ったエラー
- 8. ログインしてからキャプチャとHTMLを取得する
- 9. LINEで送った画像をS3に保存する(LINE Messaging API x AWS )
- 10. SPSS ModelerのヒストグラムノードをPythonで書き換える
- 11. SPSS Modelerの散布図ノードをPythonで書き換える
- 12. SPSS Modelerの棒グラフノードをPythonで書き換える
- 13. [小報告]BiopythonのTm値計算結果がバージョンによって少し違う
- 14. Python ctypes 構造体 pragma pack (push,1)
- 15. Python filter関数でリストから欲しい値を抽出その1 -初心者メモ
- 16. パチンコの収支の分布を求める
- 17. pandas dataframeから行番号・列番号を削除する
- 18. ディリクレ分布から乱数を取得する
- 19. python テキスト操作編+αその1 -初心者メモ
- 20. Pythonを用いてローカルにあるPythonプログラムをDockerコンテナ内で実行する方法
Windows10のpyenvでデジタル署名のエラーの対応(仮)
#はじめに
この対応、「仮」ですからね!仮っ!!!(ツンデレ風)#症状
先日つくったWindows10+pyenvの環境。
> Windows10にpyenvを入れてバージョン切り替え可能なpython環境をつくってみる
> https://qiita.com/yuzukaki/items/ee3155096926884607ef使おうとしたら、こんな文言が。
“`cmd:cmd
> pyenv shell 3.9.6
pyenv : ファイル xxx\.pyenv\pyenv-win\bin\pyenv.ps1 を読み込めません。
ファイルxxx\.pyenv\pyenv-win\bin\pyenv.ps1 はデジタル署名されていません。
(以下略)
“`#考察
ダウンロードしてきたファイルへのセキュリティが高くなったと思われるです。#確認
該当するpyenv.ps1のプロパティをみてみると、
全般タブの中の一番下にこんなものが。
![キャプチャ.GIF](https://qiita-image-store.s3.ap-northeast-1.amazonaws
機械学習入門 vol.1 Pythonの基礎1 記述とデータ型
本コンテンツは機械学習入門講座を各所でやっている内容の一部を、受講者の皆様の予習・復習のために公開しているものです。対象読者は、Pythonをやったことがほとんどない方やつまづいてしまっている方でも概ね実行できるようになるレベルで書いています。解説は講座でそれなりに詳しくしているため、コードにコメントする以上の説明はあまり記述していません。
各コードはJupyterシリーズやiPythonで記述しながら実行できるように記述しています。
# シリーズ
1. 機械学習入門 vol.1 Pythonの基礎1 記述とデータ型 -> 講座第2回に相当
1. 機械学習入門 vol.2 Pythonの基礎2 条件分岐と処理 -> 講座第2回に相当
1. 機械学習入門 vol.3 表とグラフ -> 講座第2回/第3回に相当
1. 機械学習入門 vol.4 回帰 -> 講座第4回に相当
1. 機械学習入門 vol.5 判別(分類) -> 講座第5回に相当
1. 機械学習入門 vol.6 次元削減 -> 講座第6回に相当
1. 機械学習入門 vol.7 クラスタリング -> 講座第6回に相当#
Pythonで爆速Webフレームワークを実装した
PythonでWebアプリを作成しようとすると、まず頭によぎる問題点として
* 遅い
* 複雑(Webサーバー、APサーバー、WSGI、ASGI、etc…)
* 学習コストが高いの3つが上がる人が多いと思います。一見Pythonと聞くと、シンプルでとっつきやすい印象がありますが、Webの場合は話が別。無駄に覚えることが多いし、遅いしでPythonの良さが台無し…
じゃあ、**操作が簡単で速くて学習コストが低い(すぐに使える)Webフレームワークを作ろう!!!**ということで今回[fly](https://github.com/tatsuya4649/fly)というオープンソースのWebフレームワークを作りました。
[flyのgithubページ](https://github.com/tatsuya4649/fly)
# どれくらい速いの?
Webフレームワークとして一番大事なポイント。どれくらいの処理速度のWebフレームワークができたのかというと、
* Nginxとほぼ同等の静的ファイルのレスポンス速度
* 他のPythonのWebフレームワークよりも100倍
httpでpostしたデータをmqttでpublishする
# はじめに
zabbixのwebhookから通知されたアラートをmqttでばらまきたくて、httpでpostされたjsonデータをmqttでpublishする簡単なプログラムを書いてみました。
# websocketではなくmqttにした理由
mqttをつかったことがなく、使ってみたかったから
# 実装
pythonで実装します。flaskとpaho-mqttが必要なのでインストールします。
“`bash
$ pip install flask paho-mqtt
“`topic, payload, client_idがjsonでPOSTされてきたときmqttでpublishするようコーディングします。
“`python:http_publisher.py
from flask import Flask, request
import paho.mqtt.publish as publishapp = Flask(__name__)
BROKER = ‘localhost’
PORT = 1883@app.route(‘/’, methods=[“
huggingface/transformersでpipelineの出力にtokenized textとattention weightを加える
#はじめに
[huggingface/transformers](https://github.com/huggingface/transformers)のpipelineは数行のコードで推論を行えますが、出力が少々不自由です。
本記事ではpipelineの一部を変更し、出力にtokenized textとattention weightを加えました。
具体的には使用したいpipeline(本記事では`TextClassificationPipeline`)を継承し、クラスメソッドの`forword`と`postprocess`に数行のコードを加えます。これにより、自作のコードを最小限にしつつ欲しい出力を得られます。
本記事ではBERTのtext classificationを例にして、下記の構成で説明します。
- tokenized textの取得方法
- attention weightの取得方法
- **pipelineでのtokenized textとattention weightの出力方法 (本題)**
コードだけを見たい方は[こちら](#変更を加えたクラスの実装)ま
Djangoについてゼロから勉強してみる(入門)
#Djangoとは
##PythonのWebフレームワーク
pythonにおける代表的なフレームワークは、6つあるそう。
>
- Django
- 比較的大規模な開発に向いたWebアプリケーションフレームワーク。Webアプリケーション開発で汎用的に使われる「ユーザー認証」、「管理画面」、「サイトマップ」、「RSSフィード」などの機能があらかじめ用意されており、これらについては基本的に一から開発する必要がない。**セキュリティ面においても信頼できる設計が施されており、SQLインジェクションやクロスサイトスクリプティング等の脆弱性を開発の中で発生させない仕組みになっている。**WSGIの使用に則っている。
- Flask
- 中小規模の開発案件に向いた軽量のWebアプリケーションフレームワーク。**標準で提供する機能が少なく、動作が軽いことが特徴。**ユーザーが自分で必要な機能を実装できることから、カスタイマイズ性の高さも魅力。WSGIの使用に則っている。
- Bottle
- 1つのファイル(Bottle.
Python スクレイピング実装時に出会ったエラー
###↓を作成していた時に出会ったエラーたちと解決方法
https://qiita.com/t_o01/items/5af2df6a52cad32f34a8
##WebDriverException: Message: ‘chromedriver’ executable needs to be in PATH.
##### エラーログ
“`
C:\Users\user\Downloads\out>capture.py
Traceback (most recent call last):
File “C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\common\service.py”, line 74, in start
self.process = subprocess.Popen(cmd, env=self.env,
File “C:\Users\user\AppData\Local\Programs\Python\Python3
ログインしてからキャプチャとHTMLを取得する
###やりたいこと
– ログインが必要なサイトをスクレイピングする
– 対象サイトは別ファイルで一覧にする
– SSLのワーニングを無視する
– 取得するのは、画面キャプチャとHTMLの内容### ソース
“` capture.py
# https://gaaaon.jp/blog/capture
# ↓でセレニウムをインストールしておく
# pip install selenium
# ↓インストールしているChromeと同じバージョンのドライバをインストールしておく
# https://sites.google.com/chromium.org/driver/
# https://sites.google.com/a/chromium.org/chromedriver/downloads
# https://posipochi.com/2021/04/25/python-scrape-sample/
#
# ↓でpandasをインストールしておく (CSV読み込み)
# pip install pandasfrom selenium import webdrive
LINEで送った画像をS3に保存する(LINE Messaging API x AWS )
LINEで送った画像をS3に保存したい。
# 動機
・AWS rekognitionでいろいろ遊べたら良いなあ
・そのためにはまず画像を用意せねばなあ
・一番使いやすいプラットフォーム(⊃LINE)でできたら良いなあ# LINE公式アカウントとAWSの連携
LINE公式アカウントの登録、およびLINEとAWSとの紐付けに関しては以下の記事を参考にさせていただきました。
[API GatewayとLambda(Python)でLINE BOT(Messaging API)開発 [前編]](https://qiita.com/w2or3w/items/1b80bfbae59fe19e2015)構成は下記の通りです。
![line_to_s3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989761/5b3ff3c6-edd3-19a7-39d9-a67ba8d16bea.png)# S3に画像を保存するLambda
実際に、S3に画像を保存するためのコード(python)をAWS Lambd
SPSS ModelerのヒストグラムノードをPythonで書き換える
SPSS ModelerのヒストグラムノードをPythonのmatplotlibやpandasのplotで書き換えてみます。
#0.データ
サンプルで利用するデータは以下です
M_CD: マシンコード
UP_TIIME: 起動時間
POWER: 電力
TEMP: 温度
PRESSURE:圧力フラグ
ERR_CD: エラーコード各マシンコードごとに起動時間にそって電力や温度の変化、圧力スイッチ、そしてエラーがあればそれが時系列に記録されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/1e739d26-7c0f-3f6d-7c91-9934e64ba6c3.png)
#1m.③ヒストグラム。Modeler版
POWERでヒストグラムを作り、ERR_CDで色分けしてみます。
ヒストグラムノードでフィールドにPOWER、オーバーレイの色にERR_CDを設定し、実行します。
![image.png](https://qiita-image-store.s3.a
SPSS Modelerの散布図ノードをPythonで書き換える
SPSS Modelerの散布図ノードをPythonのmatplotlibやpandasのplotで書き換えてみます。
#0.データ
サンプルで利用するデータは以下です
M_CD: マシンコード
UP_TIIME: 起動時間
POWER: 電力
TEMP: 温度
PRESSURE:圧力フラグ
ERR_CD: エラーコード各マシンコードごとに起動時間にそって電力や温度の変化、圧力スイッチ、そしてエラーがあればそれが時系列に記録されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/1e739d26-7c0f-3f6d-7c91-9934e64ba6c3.png)
#1m.散布図。Modeler版
POWERとTEMPで散布図を作り、ERR_CDで色分けしてみます。
散布図ノードでxフィールドにPOWER、YフィールドにTEMP、オーバーレイの色にERR_CDを設定し、実行します。
![image.png](https://qiita-image-store
SPSS Modelerの棒グラフノードをPythonで書き換える
SPSS Modelerの棒グラフノードをPythonのmatplotlibやpandasのplotで書き換えてみます。
#0.データ
サンプルで利用するデータは以下です。
M_CD: マシンコード
UP_TIIME: 起動時間
POWER: 電力
TEMP: 温度
PRESSURE:圧力フラグ
ERR_CD: エラーコード各マシンコードごとに起動時間にそって電力や温度の変化、圧力スイッチ、そしてエラーがあればそれが時系列に記録されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/1e739d26-7c0f-3f6d-7c91-9934e64ba6c3.png)
#1m.棒グラフ。Modeler版
まず、データ型ノードの尺度でPRESSUREをフラグ型、ERR_CDを名義型に設定します。Modelerはデータの尺度によって使える設定項目が変わり、間違った設定を防止しています。
![image.png](https://qiita-image-sto
[小報告]BiopythonのTm値計算結果がバージョンによって少し違う
Biopython 1.78だと
“`
>>>mt.Tm_NN(‘ACAGAAA’, nn_table=mt.R_DNA_NN1)
-14.276977758735995
“`でしたが、Biopython 1.79だと
“`
>>>mt.Tm_NN(‘ACAGAAA’, nn_table=mt.R_DNA_NN1)
-12.70991442070084
“`になります。リリースノートには該当する記述はなさそうだったので共有します。
https://github.com/biopython/biopython/blob/master/NEWS.rst機械学習用の特徴量計算などをしている場合は、ちょっとの違いでも出力値の再現ができなくなるのでヒヤヒヤしますね。
Python ctypes 構造体 pragma pack (push,1)
本日はPythonのctypesに関する記事です。
実用的な内容ですので是非LGTM ストックお願いします ^__^## ctypesとは
C言語のデータ構造をPythonで扱うことができるライブラリです。
Pythonをインストールするときにこちらのライブラリは標準でインストールされます。Cの構造体をPythonでも扱いたいときなどに非常に便利です。
> [Python ctypes 公式ドキュメント](https://docs.python.org/ja/3/library/ctypes.html)
## 事例
今回紹介する例としては、
C側:構造体のデータをバイナリでログとして出力
Python:C側で吐き出されたバイナリのログデータを読み込んで表示PythonでCのログを解析することで2次利用(可視化や機械学習)が各段にしやすいのでマスターしたい技術です。
# pragma pack (push, 1)
C側では構造体を定義するとき、 pragma pack をよく利用します。
これをPythonで定義するためには、下記が必要なので忘れないでください。
Python filter関数でリストから欲しい値を抽出その1 -初心者メモ
numbers = [1,8,-4,9,-3,2]
numbersリストから、偶数のみを抽出します。偶数か判定するための関数を用意。
“`
def guusuu(number):
if number %2 ==0:
print (f’この数字,{number}は偶数です ‘)
return Trueelse:
print(f’この数字,{number}は奇数です’)
return False
“`動作確認
“`
guusuu(3)>>この数字,3は奇数です
guusuu(2)
>>この数字,2は偶数です
“`
では、filter関数を使用しましょう
“`
filter(guusuu , numbers)“`
おや、メモリの位置らしきものが出力されました
リストに入れて出力すると、
“`
list(filter(guusuu , numbers))
“`
出力結果“`
この数字,9は奇数です
この数字,8は偶数です
この数字,2は偶数です
パチンコの収支の分布を求める
#概要
パチンコとは、Rush突入当たりを引けるか引けないかである(100%突入は連荘できるかどうか)。###自分語り
私自身のパチンコ歴は約半年でそこまで知識はない。
始めたのは、コロナ真っただ中のまだ肌寒い4月であった。
就活の面接後、ホテルに到着し風呂に入った後、外食で夕ご飯を済ませ、ホテルに戻る最中である、
なんとなくパチンコ店に入ってみた。
思ったより清潔感のある店内で、入口一番近くに昔よく見た
「とある魔術のインデックス」を使用した台があった。
久しぶりの小旅行ということで気持ちが浮き上がっていたのかもしれない
いつもではありえないが、千円札を投入していた・・・という感じでハマリました。
今はミドル(あたり確率1/319)をあまり打とうと思いませんが、
甘(あたり確率1/99)を頻繁に打ってます。
週1ぐらいで遊びに行ってます。
収支はマイナスです(当然)
でも楽しいからよし!###何が楽しいのか
やったことがない人、はまらなかった人いると思いますが、
私の場合の好きなことを並べてみます。1. 保留変化等の当たるかもしれない時のドキドキ(ある程度打つと何が当
pandas dataframeから行番号・列番号を削除する
#方法
“`sample.py
df.to_csv(index=False,header=False)
“`#備考
dataframeのまま行番号・列番号を削除する方法が見つからなかった。しかし、これらを削除したいと思うときはcsvに出力したいときが想定される。なのでこれで困らない。
ディリクレ分布から乱数を取得する
### ベータ分布の定義
確率密度関数が
“`math
f(x) = Beta(x|a,b)= Cx^{a-1}(1-x)^{b-1} (0 \le x \le 1)
“`であるような一変量の確率分布。
### ディリクレ分布の定義
確率密度関数が
“`math
f(x_1,…,x_{n-1}, x_n)= Dir(x_1,…,x_n|\alpha_1,…,\alpha_{n-1}) = Cx^{\alpha_{1}-1}\cdots x_n^{\alpha_n -1} (x_1,…,x_n \ge 0),
“`であるような多変量の確率分布をディリクレ分布と呼ぶ。ただし、$C$は正規化定数($x_1 + …+x_n = 1$にするためにかけるもの)・$\alpha$はパラメータである。
### ディリクレ分布の解釈
ベータ分布(コイントスにおいて表が出る確率の予測の分布)を多次元に拡張したもの。つまり、ディリクレ分布において、$n=2$の場合(単変量)を考えると、
“`math
f(x_1,
python テキスト操作編+αその1 -初心者メモ
テキストを呼び出す方法
二つある。
一つは {}.format(引数)
フォーマットを用いたやり方もう一つは f'{引数}
fストリングスを用いた方法“`
name = ‘和夫’
birthplace = ‘アメリカ’‘私は{}です。出身は{}です。’.format(name,birthplace)
f’私は{name}です。出身は{birthplace}です。’
“`
出力
‘私は和夫です。出身はアメリカです。’
‘私は和夫です。出身はアメリカです。’改行の表示
改行\nはprint()の中に入れることで、jupyterやcolaboでも改行されて表示される。“`
print(‘そこに痺れる。\n憧れる’)“`
出力
そこに痺れる。
憧れる整数型、16進数、浮動小数点での表示
“`
print(“10進数 = %d,16進数 = %x, 10進浮動小数点=%f” % (16,16,16))
“`
出力結果
10進数 = 16,16進数 = 10, 10進浮動小数点=16.000000文字を大
Pythonを用いてローカルにあるPythonプログラムをDockerコンテナ内で実行する方法
## 実行環境
– Ubuntu-20.04.2
– Python 3.8.10“`
$ python3 -V
Python 3.8.10
“`– ライブラリ: docker-py
Docker Engine API用のPythonライブラリです。
## DockerコンテナをPythonプログラムで操作する
Pythonにはdocker-pyというライブラリがあるためPytonプログラムを用いてdockerコンテナを操作できる。### インストール方法
pipを使用してインストールできる。“`
$ pip3 install docker
“`### 使用方法
実行するためdockerデーモンと通信する。“`test.py
import docker
cli = docker.from_env()
“`試しにPythonのコンテナを立ててみる。
“`test.py
import dockercli = docker.from_env()
cont_image = “python:3.9-alpine”
cont_run =