- 1. Prometheus client_python tips – 複数の対象のmetricsを作る方法
- 2. Pythonでscikit-learnがinstallできない
- 3. Ubuntu18.04にPython3系の環境を構築する。
- 4. docker-compose upでPythonのログが出力されない
- 5. 空の色を自由に変えたいなあ
- 6. Pythonで数字to漢数字の変換
- 7. JSON ファイルを http サーバーにアップロード
- 8. opencvの新しい機能QRコード検出を使ってみた
- 9. AWSでJupyterHub (概要)
- 10. Pythonでバイナリデータを扱ってみる
- 11. PyInstaller3.5がPython3.8でエラーになる場合の対応(TypeError: an integer is required (got type bytes))
- 12. GoogleColaboratoryでデータ入出力をする(1. ブラウザ経由編)
- 13. ポアソン分布に従う互いに独立な確率変数の差が従う確率分布
- 14. pycharmでpygameを実行できなかった話
- 15. 【Kivy】WindowsでKivyのインストールの仕方【Python】
- 16. 機械学習で効率よく最適な重みWを得るためのミニバッチ学習について
- 17. macOS Catalina で Python 3.5.3 未満をインストールする
- 18. Backlog APIを使用してWikiを更新する
- 19. No.67 よくある棒を切る問題 (1)
- 20. wordcloudで遊んでみた!
Prometheus client_python tips – 複数の対象のmetricsを作る方法
# Overview
Prometheusには様々なexporterがあるが、APIを作ったりして
独自のmetricsを生成したい場合は、client libraryを使うようになっている。– https://prometheus.io/docs/instrumenting/clientlibs/
従ってpythonにもそれ用のlibraryがあり、それが[こちら](https://github.com/prometheus/client_python)。
基本的にはGaugeを使って作れば良いのでだいたい以下のようなコードになる。“`python
#!/usr/bin/env python3
# import os
import sys
import re
from logging import getLogger
from prometheus_client import generate_latest
from prometheus_client import Gauge
from prometheus_client import REGISTRY
logger
Pythonでscikit-learnがinstallできない
# 環境
Python3.8.0# 概要
ざっと見た感じ“`
No module named ‘Cython’
“`これと、あとNumpyを先に入れていたせいでバージョンの依存関係でエラーが出たっぽい。
ので
# 解決策
“`
pip3 install Cython
pip3 install -U scikit-learn
“`-Uつけるとすでに入っているライブラリとの依存関係をいい感じにしてくれるっぽい??
# 参考文献
https://scikit-learn.org/stable/install.html
Ubuntu18.04にPython3系の環境を構築する。
WebArena Indigoのユーザー名は
“`sh
Ubuntu
“`である。パスワードはなし。
https://web.arena.ne.jp/indigo/spec/security.htmlそのままではPython3系が入ってないので以下を入れる。
“`sh
sudo apt install python3.7
“`pip3が入ってないので以下を入れる。
“`sh
sudo apt install python3-pip
“`あとはsudo pip3 install ○○で以下をインストールしていく
“`sh
sudo pip3 install requests
sudo pip3 install pyyaml
sudo pip3 install pandas
sudo pip3 install websocket-client
sudo pip3 install sortedcontainers
sudo pip3 install matplotlib
“`
docker-compose upでPythonのログが出力されない
## 結論
`-u`オプションで解決した“`yaml:docker-compose.yml
command: python -u main.py
“`## 経緯
以下のようなファイルをdocker-compose.ymlの`command`に指定したらログに何も出力されなかった。[^1][^1]: 「動作しない」ではなく「出力されない」だと気付くのにもだいぶ時間かかった
“`python
import timeprint(‘hoge’)
while True:
print(‘fuga’)
time.sleep(1)
“`原因調査のために部分的に切り分けていきます。
[^2]: `import`文を削除したら出力されることがあったが、これはエラーによってその行で動作が停止しただけだった
* `docker-compose run`だと動作する
* `docker-compose run python bash`で入ったbash内で立ち上げたpythonインタプリタ内でも動作する最終的にpythonスクリプトを何行かづつコメントアウトしたりし
空の色を自由に変えたいなあ
# 初めに
何週間か前に学校の授業の演習で深層学習で面白いものを作ってくださいというのがあったんですが、そこでGANと戯れる機会がありました。実際に、作ったものはこれとは別の物です。今回紹介するのは演習の途中経過があまりに悪くて保険のために作ったけど、結局本題のものがギリギリできたので使わなくなってしまったものです。それの供養を行いたいと思います。# 手法
今回扱ったのは、GANの中でも画像生成を無から行うものではなく、ドメイン変換です。簡単にいうと、〜風の画像を別の〜風の画像に変換する手法ということですね。## モデル
StarGANというモデルを今回は使いました。StarGANとは何ぞという人のために軽く説明をします。画像の変換を行うGANの種類はDiscoGANやDCGANなど色々ありますがほとんどのものは下に示すように1対1対応の画像変換しか行いません。そのため、複数の種類に変換したい場合は、変換先の数だけモデルの学習を行わなくてはなりません。
![Screenshot from 2019-11-27 22-58-53.png](https://qiita-imag
Pythonで数字to漢数字の変換
# きっかけ
テストケースで1郎2郎3郎…みたいなのを作ってたんですが、
名前にアラビア数字というのもいかがなものかと思いまして、変換してやるようにしました。# int2kanint
`python3.7.5`で動いてます“`python:int2kanint
# -*- coding: utf-8 -*-import csv
def int2kanint(num) :
suji = [“”,”一”,”二”,”三”,”四”,”五”,”六”,”七”,”八”,”九”]
kugiri = [“”,”十”,”百”,”千”]
tani = [“”,”万”,”億”,”兆”,”京”,”垓”,”?”,”穣”,”溝”,”澗”,”正”,”載”,”極”,”恒河沙”,”阿僧祇”,”那由他”,”不可思議”,”無量大数”]num = list(map(int,list(str(num))))
kansuji = []for k, v in zip(range(len(num)), reversed(num)) :
keta = []
keta.append
JSON ファイルを http サーバーにアップロード
Python の cgi で JSON ファイルをアップロードする方法です。
この例では、アップロードしたファイルが、
/var/tmp/json/example.json
に書き込まれます。サーバーサイドの処理
“`py:json_receive.py
#! /usr/bin/python3
# -*- coding: utf-8 -*-
#
# json_receive.py
#
# Nov/23/2019
#
# ——————————————————–
import sys
import os
import string
import json
import fcntl
import cgi
import cgitb
cgitb.enable()
#
# ——————————————————–
def file_write_p
opencvの新しい機能QRコード検出を使ってみた
## 実装環境
Mac OS Catalina 10.15.1
opencv 4.1.1
python## 実験用のQRコード作り
どうせなら実験用のコードも自作しようということでQRコードの作り方もまとめてみます
### 作れればいい人
とはいえQRコード検出がメインテーマなのでQRコードなんかさっさと作ってしまいたいという人もいると思うのでそんな人は
[QRコード作成](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=2ahUKEwjBoebkxonmAhXXzIsBHUk_CFsQFjAAegQIBxAB&url=https%3A%2F%2Fwww.cman.jp%2FQRcode%2F&usg=AOvVaw1yC1MJPXBzgv4lX2FH5Wv2)
ここのサイトで無料でQRコード作成できます
ファイル形式も指定してダウンロードできるのでさくっと作っちゃいましょう### どうせならpythonで全部作りたい
僕的にはpythonでQRコードも作ってみたかったのでそち
AWSでJupyterHub (概要)
# はじめに
こんちには,こんばんわ.
今年は,AWSやらPythonやらをいじっていた時間が長かったのか,「なにかしたいな~」と考えていた時,一人で黙々とやるのも好きなんですが,協同でなにかするのもそこそこ好きなので,ふと「そうだ,JupyterHubの環境を作ろう」と.
今回は,その時の内容を何回かに分けて記事にしようと思います.でも,普通に「インストール後起動」だけじゃ物足りないので,次のような点を解決しながら環境を作ってみようと思いました.
* 普通に「インストールして,起動して,アクセスする」的なものじゃ物足りない
* アクセスするURLが `http://localhost:8080/` のようなものも味気ない
* ドメインが何かよく分からないものはイヤ(自分の好きなドメインにしたい!)
* URLにポート番号付けるのとかカッコ悪い
* 通信を暗号化させたい(HTTPS化)# ゴール
最終的に,以下の要素が達成できるようにしていきます.1. 好きなドメイン(サブドメイン)でJupyterHubにアクセスできること
2. 通信の暗号化(HTTPS化)
3. 複
Pythonでバイナリデータを扱ってみる
バイナリデータをPythonで処理する機会があったのですが、初めてバイナリデータを触ったこともあり色々調べないとわかないこともあったので、備忘録として残しておきたいと思います!
今回は「**.sl2**」という拡張子ファイルのデータを扱ったので、.sl2データを例に書いていきます!
# バイナリデータのことについて
バイナリデータは各フォーマットによってデータの構成が決まっています。
今回、.sl2という初めて見るファイルを扱うことになったのですが、その場合はまず「.sl2ファイルの構成」を何らかの方法で知る必要があります。これがわからないと、処理できません!私の場合は以下のページを参考にしましたので、この参考ページをもとに説明していきます。
(**結果的にはこのページは間違っていましたが…**)
https://wiki.openstreetmap.org/wiki/SL2## ヘッダー
ほとんどのバイナリデータにはヘッダーというものが付いているようです。
これは初めの数バイトに固定の値が入っているもので、バージョン情報などデータフォーマットについての説明が入っていま
PyInstaller3.5がPython3.8でエラーになる場合の対応(TypeError: an integer is required (got type bytes))
## 事象
記事投稿時点(2019/11/27)だとPyInstallerをPython3.8で実行すると、以下のエラーが発生する
>TypeError: an integer is required (got type bytes)## エラーの理由
現在(2019/11/27)の安定板であるPyInstaller3.5が、Python3.8に対応していないため。## 対応策
Development版をダウンロードする。
pipでインストールするなら以下の通り。
>pip install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz
GoogleColaboratoryでデータ入出力をする(1. ブラウザ経由編)
# はじめに
この手の記事は腐るほどあるけど、自分の欲しい用途で素直にしっくりくるやつが
見つからなかったので、自分なりに整理しなおした# 参考情報
https://qiita.com/5at00001040/items/d7867974d2fd1d21dbbf# 入出力の方法
GoogleColaboratory(以下、colab)にはいくつか入出力のやり方があります。
1.ブラウザ経由でファイルアップロード/ダウンロード ← 今回はココ!
2.GoogleDriveからインポート/エクスポート
3.Googleスプレッドシートからインポート/エクスポート# 入出力にあたっての注意点
ファイルをダウンロードをするには一度colabのローカルにファイル保存する必要がある。なので、pandasのdataFrameを直接ダウンロードしたらcsv形式で
出力される。ということはできない。残念。ただ、配列データ([1,2,3,4]みたいな)に限って言えば
③Googleスプレッドシートからインポート/エクスポート
が使える。逆に③は配列データでなければ使えない。一長一短
ポアソン分布に従う互いに独立な確率変数の差が従う確率分布
#Poisson分布
確率変数Xが$P(X=k)= \frac{\lambda^ke^{-\lambda}}{k!}$を満たしているときPoisson分布に従っている。
Poisson分布の確率質量関数を$\lambda=3…10$を図示すると以下になる。
![download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/330569/ba338cee-d78a-2763-63ac-e9134cec14ff.png)#2つのポアソン分布
$\lambda=5$であるポアソン分布に従う列を二つ用意する。“`python
poisson1 = np.random.poisson(lam=5, size=10000)
poisson2 = np.random.poisson(lam=5, size=10000)
“`
![download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/330569/ddd6
pycharmでpygameを実行できなかった話
プログラミング初心者がpythonの勉強を初めて1ヶ月。
なんとなく基本的な動作を理解できたところでpygameをやってみよう!と決意。
環境を整えている際に起こった出来事の記録です。「ゲームを作りながら楽しく学べるPythonプログラミング」
ウィン不動の表示の部分を実行しようとしたら…“`
Traceback (most recent call last):
File “C:/Users//PycharmProjects/projects/test1.py”, line 1, in
import pygame
ModuleNotFoundError: No module named ‘pygame’
“`
と表示され一行に先に進まなくなってしまった。
色々pycharmについて調べていると
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/516313/7ca2b106-4fc0-bb85-ddeb-d3bbd66479ce.png)
※ここには
【Kivy】WindowsでKivyのインストールの仕方【Python】
#結論
“`
pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glewpip install kivy.deps.gstreamer
pip install kivy.deps.angle
pip install kivy
“`これで完了
機械学習で効率よく最適な重みWを得るためのミニバッチ学習について
機械学習におけるミニバッチ学習についてのメモです。
機械学習はある与えたれたデータに内在すると仮定される規則を自動的に抽出する演算装置です。
つまり、ある入力の組$\boldsymbol{x}$に対して出力$\boldsymbol{t}$が既に得られていて、そこに存在する規則を抽出することで、新たな入力の組$\boldsymbol{x}^{\prime}$に対応する$\boldsymbol{t}^{\prime}$を予想します。この**規則**なるもの(重みと呼びます)を一般に行列$W$とすると、上の話は機械学習の出力$\boldsymbol{y}$(理想的には$\boldsymbol{t}$と一致するべき)を
$$ \boldsymbol{y} = W \boldsymbol{x}\tag{1}$$
としたとき$\boldsymbol{y}$と$\boldsymbol{t}$の損失関数
$$ E = \frac{1}{2}\|\|\boldsymbol{y}(\boldsymbol{x},W)-\boldsymbol{t}\|\|^{2}\tag{2}$$
を可能な限り
macOS Catalina で Python 3.5.3 未満をインストールする
# 依存関係
* Homebrew
* pyenv(anyenv, asdf)# いそがしいぞ
“`sh
cd $(brew –prefix)/Library/Taps/homebrew/homebrew-core/Formula/
git checkout 8b9d6d688f483a0f33fcfc93d433de501b9c3513 openssl.rb
HOMEBREW_NO_AUTO_UPDATE=1 brew install openssl
pyenv install 3.5.2
“`# なにこれ
* Python 3.5.3 から OpenSSL 1.1.0 を使用しているらしい。(Python 3.5.3 未満は OpenSSL 1.1.0 でインストールできない?)
* Homebrew では、現在 OpenSSL 1.1.0 しかインストールできない。
* 無理やり Homebrew で OpenSSL 1.0.2 をインストールしている。
Backlog APIを使用してWikiを更新する
# 背景
[Backlog](https://backlog.com/ja/)のWikiを修正したいが、修正対象の文言が複数ページに渡って記載されている。
人力で1ページずつ更新するには量が多いため、[API](https://developer.nulab.com/ja/docs/backlog/#backlog-api-%E3%81%A8%E3%81%AF)を使用して一括で修正を適用したい。# APIキーの発行
APIを使用するにはAPIキーの発行が必要です。
個人設定のAPIタブ(****.backlog.jp/EditApiSettings.action)から新しいAPIキーを発行します。# 実装
Python3で実装していきます。## 使用ライブラリ
“`python
import requests
import json
import sys
“`## ある文言が含まれるWikiのページIDと本文を取得する
“`python
def wiki_search():
params = {
“apiKey”: BACKLOG_API_
No.67 よくある棒を切る問題 (1)
#問題
ユキさんは N本の棒を持っていて、i番目の棒の長さは Liです。
棒は(長さを分割する方向に)自由に切ることができますが、繋げることはできません。
ユキさんは同じ長さのK本の棒を作りたいのです。
作れるK本の棒の長さの最大値を求めるプログラムを書いて下さい。
#入力例example1
入力
2
10 20
3
出力
10.00example2
入力
2
10 20
4
出力
6.666666666666667
#コード
“`python:search.py
def read_data():
N_ = int(input())
L_ = list(map(int, input().split()))
K_ = int(input())
return N_, L_, K_def binarySearch(N, L, K):
left = 0
right = max(L)
for x in range(100):
piv = 0
mid = (right + left) / 2
wordcloudで遊んでみた!
# はじめに
wordcloudを使用することになったので備忘録として投稿
mecabを使用するので、「mecabってなんぞや?」という方は[こちら][1]をどうぞ!
wordcloudのインストールから画像出力までをまとめてみた
お品書きは下記の通り
* これは何の物語でしょう?
* wordcloud とは
* 実際に動かしてみた
* 設定いろいろ
* 日本語でやりがちな失敗
* おわりに# これは何の物語でしょう?
せっかくなので wordcloud で出力した問題を出します(笑)![wordcloud.png][a]
答えは**おわりに**で書いておきます!
# wordcloud とは
文章中で出現頻度が高い単語を複数選び出し、その頻度に応じた大きさで図示する手法のこと公式は[こちら][2]
インストールは pip などでインストールすればすぐ使える
> pip install wordcloud
# 実際に動かしてみた
画像を用いて説明したほうが早いと思うので早速動かしてみた
ここで使用した物語は「赤ずきん」### プログラム
“`