- 0.0.1. matplotlibで作図入門: 簡単な関数を書く
- 0.0.2. Private Bitbucket Repository から ssh で pipenv install する
- 0.0.3. 強化学習9 ChainerRLの魔改造
- 0.0.4. よく使う組み込み関数、メソッド一覧
- 0.0.5. pythonのfor文中で複数の変数を定義する方法
- 0.0.6. ランダムフォレスト(分類)とハイパーパラメータのチューニング
- 0.0.7. AWS IoT エラー AMQJS0008I Socket closed
- 0.0.8. 「量子アニーリングの基礎」を読む 第5日
- 0.0.9. 多層パーセプトロンをすっごい綺麗に実装する
- 0.0.10. [Django]4桁数字で日付入力するFieldを作った
- 0.0.11. Selenium WebDriverでServiceNowへ自動ログイン
- 0.0.12. python google search
- 0.0.13. Python 配列内の文字列の一括置換
- 0.0.14. たった一文でPandasのapplyメソッドを高速化する方法(検証計算あり)
- 0.0.15. Pythonで蟻本”硬貨の問題”を解いてみた
- 0.0.16. MySQL で Python を書く
- 0.0.17. トークナイザをいい感じに切り替えるライブラリ tiny_tokenizer を作った
- 0.0.18. ヒストグラム・散布図をJupyter Notebook上で表示する
- 0.0.19. Python Seleniumで汎用waitしたくない?
- 0.0.20. Flask + uWSGI + Nginx で API
- 1. Welcome to nginx!
matplotlibで作図入門: 簡単な関数を書く
**この記事を読むとできるようになること**
`matplotlibで超基本的な図が描ける`gnuplot で図が作れるようになってしばらくすると,「もっと簡単に綺麗な図が描きたい」と思うようになると思います(※個人差があります).
研究発表の図を作るのに無料で使えるツールとして有名なものの1つがmatlotlibです.かなり綺麗な図が描けます(※個人の意見).
この記事では,すぐに使えるmatplotlibでの図の描き方の基礎中の基礎だけをまとめました.**より詳細な使い方については,
[pythonのmatplotlibの使い方をまとめてみた](https://qiita.com/renesisu727/items/24fc4cd8fa2635b00a0d)
が大変わかりやすく,参考になります.**
特に,オブジェクト指向インターフェースは便利ですので使えるようになると良いです.– 環境
– macOS mojave 10.14.6
– Python 3.7.5ここではmatplotlibを用いて簡単な関数を描いてみましょう
$y = f(x)$
Private Bitbucket Repository から ssh で pipenv install する
ssh鍵設定はしている前提で、自分のプライベートリポジトリを pipenv install する場合のやり方を忘れるのでメモ。
“`bash:pipenv install
pipenv install git+ssh://git@bitbucket.org/[ユーザ名]/[リポジトリ名].git#egg=[egg名]
“`成功すると Pipfile にこんな感じに記録される。
“`text:Pipfile
[packages]
…
[egg名] = {git = “ssh://git@bitbucket.org/[ユーザ名]/[リポジトリ名].git”}
…
“`
強化学習9 ChainerRLの魔改造
強化学習8まで終了していることが前提です。
強化学習8では、ChainerUIの魔改造をしました。
あれでもいいのですが、今回は、同じようなことをChainerRLでします。まず、
userFolder/anaconda3/envs/chainer/lib/python3.7/site-packages/chainerrl/experiments/evaluator.py
の31行目を変更します。変更前
“`python
_basic_columns = (‘steps’, ‘episodes’, ‘elapsed’, ‘mean’,
‘median’, ‘stdev’, ‘max’, ‘min’)
“`
変更後“`python
_basic_columns = (‘step’, ‘episode’, ‘elapsed_time’, ‘mean’,
‘median’, ‘stdev’, ‘max’, ‘min’)
“`これで、scores.txtのヘッダーが変更されるので、Chainer
よく使う組み込み関数、メソッド一覧
[すべての組み込み関数はこちら](https://docs.python.org/ja/3.5/library/functions.html)
|組み込み関数|機能|
|:—|—|
|print()|()内を表示する|
|str()|str型のオブジェクトを返す|
|int()|int型のオブジェクトを返す|
|float()|float型のオブジェクトを返す|
|bool()|bool型のオブジェクトを返す。空、0、NoneはFalseを返す|
|type()|オブジェクトの型を返す|
|input()|文字列を入力する(入力値は文字列扱い)|
|len()|要素数を取得する|
|abs()|絶対値を返す|
|sum()|合計を返す|
|max()|最大値を返す|
|min()|最小値を返す|
|pow(a, b)|aのb乗を返す|
|range()|指定範囲の整数列を返す|
|round()|値を四捨五入する。第2引数は小数点以下の数|
|hex()|16進数を返す|
|oct()|8進数を返す|
|bin()|2進数を返す|
|enumerate()|シーケンスとインデ
pythonのfor文中で複数の変数を定義する方法
for文で変数名を変えながら定義する方法ってどうやるんだ? となったのでメモ
## python の組み込み関数 exec を使う
“`
for i in range(5):
exec(‘var%d = %d’ % (i, i**2))>>>var0, var1, var2, var3, var4
>>>(0, 1, 4, 9, 16)
“`
他にも配列に入れていくやり方が考えられますが、一気に複数の変数を作るならexecを使うのがスマート。
ランダムフォレスト(分類)とハイパーパラメータのチューニング
# はじめに
乳癌の腫瘍が良性であるか悪性であるかを判定するためのウィスコンシン州の乳癌データセットについて、ランダムフォレストとハイパーパラメータのチューニングにより分類器を作成する。データはsklearnに含まれるもので、データ数は569、そのうち良性は212、悪性は357、特徴量は30種類ある。#シリーズ
– [線形重回帰による決定係数の算出とモデルの選択](https://qiita.com/FujiedaTaro/items/4ef757370ca19abe783c)
– [線形重回帰による決定係数の算出とモデルの選択 part_2](https://qiita.com/FujiedaTaro/items/a7a23ce321f7733ae9cf)
– [単回帰分析による寄与率の算出](https://qiita.com/FujiedaTaro/items/090bad07672c322bceeb)
– [線形回帰と特徴量の絞り込み](https://qiita.com/FujiedaTaro/items/3fd874ae91b511eb1d1f)
– [ロジスティッ
AWS IoT エラー AMQJS0008I Socket closed
# AMQJS0008I Socket closed
PCからAWS IoTに向けて、メッセージを送信したが、
タイトルのエラーが表示された。# 結論
モノに対してポリシーをアタッチする必要がある。
(チュートリアルの中で、アタッチしたつもりだったが、漏れていたみたい?)# 対応
管理→モノ→対象のモノを選択
![ 2019-11-15 10.14.47.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290588/38140e3b-69b5-2541-db46-ab7c596e6d7b.jpeg)セキュリティを選択し、対象のセキュリティを選択
![ 2019-11-15 10.15.32.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290588/81f1ee5f-f87b-c65f-f174-f9a9addc49d7.jpeg)右上からポリシーのアタッチを選択する
![ 2019-11-15 10.1
「量子アニーリングの基礎」を読む 第5日
「量子アニーリングの基礎」西森秀稔, 大関真之, 共立出版, 2018 を読む
![4184JBeEEZL._SX350_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/51423/d8f26d54-030c-d8aa-6053-3b1fcc37e7c3.jpeg)
https://qiita.com/kaizen_nagoya/items/29580dc526e142cb64e9『量子アニーリングの基礎』正誤表 (西森秀稔・大関真之 著) 2019年6月20日更新
https://www.kyoritsu-pub.co.jp/app/file/goods_contents/3037.pdf量子アニーリングの数理 東京工業大学 大学院理工学研究科 物性物理学専攻 西森 秀稔
https://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/189516/1/bussei_el_033203.pdf本は、
多層パーセプトロンをすっごい綺麗に実装する
# なにこれ
Pythonで多層パーセプトロンをスクラッチする機会があったので残しておきます。
以下に多層パーセプトロンで排他的論理和(XOR)を学習させた時のサンプルを示します。運が悪いと学習が収束しませんが、繰り返せばちゃんとできていることがわかると思います。
今回取り上げているパーセプトロンのイメージ図はこんな感じです。
実際のプログラムがこれです。
“`python:perceptron.py
import numpy as np
# ベクタライズされた(リストの各要素に対して処理するようにされた)シグモイド関数
@np.vectorize
def sigmoid(x):
return 1.0 / (1.0 + n
[Django]4桁数字で日付入力するFieldを作った
## なんか4桁入力したいと言われた
昔作ったDjangoの予約日管理する職場用アプリです。
古いやつなのでPythonは2系です。
Djangoも古くて1.6。一応8桁入力には対応していたけど……
## なんで数字で日付を入力するのか
Dateピッカーみたいな
マウスでポチポチやって日付入力するのがUI的には格好いいし、
ユーザー的にわかりやすいけど、
連続で入力が必要だったりするとけっこう面倒。
みんながマウスを使わなくていいエディタが大好きなのと同じです。## 問題点
デフォルトのDateFieldはキーワード引数のinput_fieldsに
“%Y-%m-%d”,”%Y/%m/%d”とかを指定して、テキスト入力が可能になっていますが、
ハイフンとかスラッシュの入力はけっこう面倒。
できればテンキーの数字だけで完結したい。
(Enterでタブ移動みたいにすればなおよし)
かと言って”%Y%m%d”を指定すると、8桁入れた時は問題ないけど、
桁が足りてなかった場合、どこまでが年でどこまでが月でどこまでが日なのか
実際の挙動がユーザーにはわかりにくいことになり
Selenium WebDriverでServiceNowへ自動ログイン
# ◆概要
* WebのUIテスト自動化に使われるSelenium WebDriverを使い、ServiceNowのログイン操作を自動で行ってみた。
# ◆動作環境
* OS: Windows10
* Pythonバージョン: 3.8.0# ◆準備
### ServiceNowのインスタンス作成
* [ServiceNow Developers](https://developer.servicenow.com)のページからアカウントを登録することで開発者用のインスタンスを作成することができる。
* 作成が完了するとインスタンスURLやadminアカウントの初期情報が表示されるので必ずメモをしておく。
![instance.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/181632/88e334e7-d381-54fc-c3fa-4ba1b5514d55.png)### Pythonの実行環境準備
* [Pythonの公式サイト](https://www.python.org/)から
python google search
“`main.py
from googlesearch import searchif __name__ == “__main__”:
query = “cats”
for result in search(query, num=10, stop=30, pause=1):
print(result)“`
queryが検索ワード
numが一回のリクエストで何件取得するか。
stopが何個取得したら検索を中止するか
pauseが次の検索までのインターバル。
Python 配列内の文字列の一括置換
スクレイピングをしていて取得した文字列を配列に格納したとき
配列内の余分な改行が・・・
そんな時に置換 or 削除したいなって場面に遭遇したので
備忘録の意味も込めて#やりたい事
“`python:
str_list = [‘あい\nうえお’, ‘かいくけこ’, ‘さし\nすせ\nそ’, ‘たちつて\nと’, ‘なに\nぬ\nね\nの’]
str_list2 = [[‘あい\nうえお’, ‘かいくけこ’], [‘さし\nすせ\nそ’, ‘たちつて\nと’, ‘なに\nぬ\nね\nの’], [‘はひふ\nへほ’, ‘ま\nみむめも\n’], [‘やゆよ’], [‘らり\nるれろ’, ‘わをん’]]“`
こんな感じでスクレイピングしていると欲しい文字列以外が含まれていたりする#### これを簡素にしたい
“`python:普通
replace_list = []
for s in str_list:
if ‘\n’ in s:
text = s.replace(‘\n’, ”)
replace_list.append(text)
たった一文でPandasのapplyメソッドを高速化する方法(検証計算あり)
# 結論
Pandasのapplyメソッドの前にswifterメソッドを加えるだけ### 具体例
“`python
import pandas as pd
import numpy as np
import swifter# 適当なDataFrameを作成
df = pd.DataFrame({‘col’: np.random.normal(size=10000000)})# applyメソッドの前にswifterメソッドを加える。
%time df[‘col2’] = df[‘col’].swifter.apply(lambda x: x**2)
# Wall time: 50 ms# 比較用(通常のpandasのapplyメソッド)
%time df[‘col2’] = df[‘col’].apply(lambda x: x**2)
# Wall time: 3.48 s
“`
### インストール方法“`terminal:pipの場合
$ pip install -U pandas # upgrade pandas
$ pip install swif
Pythonで蟻本”硬貨の問題”を解いてみた
今日は“硬貨の問題”を解いてみました。
これは深さ優先探索や幅優先探索に比べると比較的簡単だったかな。
この前教えてもらったdoctest使ってみた。“`coin_counting.py
def coin_counting(money, coins_num):
“””
できるだけ少ない枚数で支払うときに必要な硬貨の数>>> coin_counting(620, [3, 2, 1, 3, 0, 2])
6
>>> coin_counting(988, [3, 2, 6, 3, 4, 3])
13
“””
coins = [1, 5, 10, 50, 100, 500]
use_coins = 0# 大きい硬貨から数えていく
for i in range(5, -1, -1):
while money >= coins[i] and coins_num[i] > 0:
money -= coins[i]
coins_n
MySQL で Python を書く
# Mysql Workbench Scripting Shell
みんな知っているMySQL Workbench
![mysqlworkbench.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176789/9435dcc3-08ea-f90a-5a1c-7f1af1ed84f4.png)MySQL Workbench の Scripting -> Scripting Shell という項目からSQLの実行をPythonで制御できるエディタが開ける
エディタを新規に起動するとすでにテンプレートでPython スクリプトが記述されているが、この`import grt`という一行が重要で
トークナイザをいい感じに切り替えるライブラリ tiny_tokenizer を作った
# TL; DR
文のトークン化のためのライブラリである [tiny_tokenizer](https://github.com/himkt/tiny_tokenizer) の紹介をします.
↓みたいな感じで使えます.なにとぞ〜“`python
from tiny_tokenizer import WordTokenizersentence = ‘自然言語処理を勉強しています’
tokenizer = WordTokenizer(‘MeCab’)
print(tokenizer.tokenize()) # -> [自然, 言語, 処理, を, 勉強, し, て, い, ます]tokenizer = WordTokenizer(‘Kytea’)
print(tokenizer.tokenize(sentence)) # -> [自然, 言語, 処理, を, 勉強, し, て, い, ま, す]tokenizer = WordTokenizer(‘Sentencepiece’, model_path=”data/model.spm”)
print(tokenize
ヒストグラム・散布図をJupyter Notebook上で表示する
Matplotlibを使ってJupyter Notebook上でヒストグラムや散布図を表示させる方法です。
この記事の内容は、以下の記事に従って準備したJupyter Notebookの環境で試しています。
[Jupyter NotebookをDockerを使って簡単にインストールし起動(nbextensions、Scalaにも対応) – Qiita](https://qiita.com/suzuki-navi/items/37615024d4748aac6688)この環境でブラウザで8888番ポートにアクセスして、Jupyter Notebookを使うことができます。右上のボタンのNew > Python3をたどると新しいノートを開けます。
また、この記事では適当なランダムで作成したCSVファイル
https://github.com/suzuki-navi/sample-data/blob/master/sample-data-1.csv
を使っています。# データ準備
各種importとデータを読み込みます。
“`
%matplotlib inline
impo
Python Seleniumで汎用waitしたくない?
# はじめに
まぁ、業務システム(勤怠管理)でマウスぽちぽちが嫌だったんですよね。
# クローリングでよくある事
基本的に、人間がマウスでぽちぽちするシステムなので、機械が操作することは考えられていない。そこでまさかまだ見えてもいないボタンを押すことなんてないよねって前提があったりするので、人に合わせて動かすことを考えると、きちんと押せるようになったらとか入力できるようになったら何かをするようなタイミングの制御が必要となります。
seleniumには当然そのような仕組みが用意されています。
[document:waits](https://seleniumhq.github.io/selenium/docs/api/py/webdriver_support/selenium.webdriver.support.wait.html?highlight=wait#selenium.webdriver.support.wait)、[Waits](https://selenium-python.readthedocs.io/waits.html)、[待機(上記訳)](https://
Flask + uWSGI + Nginx で API
いよいよ Flask + uWSGI + Nginx で API を叩けるようにします。
# Nginx インストール
まずは Nginx をインストールして問題なく動くことを確認します。
“`bash
$ sudo apt install -y nginx
$ sudo systemctl start nginx
$ curl http://localhost
Welcome to nginx!
Welcome to nginx!
If you see this page, the nginx web server is successfully installed