- 1. pythonでJSONデータの2階層目移行のキーを取得する
- 2. DjangoでSNS作成時のコマンド
- 3. 【Python】for文を使った九九表
- 4. Python Counterクラスが便利な件について ~もう自分で数える必要は無い~
- 5. PandasでCSVファイルを読み込む方法
- 6. Pythonによる人工知能入門 「遺伝的アルゴリズム~理論編~」
- 7. pythonのtry~except~else
- 8. ポケモン×データサイエンス(3) – ポケモン剣盾のパーティ構築をネットワーク分析から考える ネットワークの中心はどこ編
- 9. LSTMを用いた最強のポケモン生成
- 10. GPyのカーネル関数比較
- 11. 【Selenium】「次ページ」への繰返し移動は、while文を使う
- 12. がんばらない人のための画像検査機
- 13. 生命保険会社の苦情の内訳の詳細を可視化
- 14. 生命保険会社の苦情件数を可視化
- 15. メール送信機能を今更ながらPythonで実装してみた
- 16. データベースをDockerでfixtureするpytest環境例
- 17. VSCode & Docker DesktopでシンプルなPythonの開発環境を作る
- 18. Seleniumで月末に作成する勤務時間表の作成自動化
- 19. 補完機能を使ってPythonで開発をするためのVSCode設定
- 20. かなの手書き文字認識を作ってみた Part 1/3 まずは MNIST から
pythonでJSONデータの2階層目移行のキーを取得する
## ファイルの例
例えば、`”ruleId”`をキーにして値を取得したいとき“`test.json
{
“timestamp”: 1604751455679,
“ruleGroupList”: [
{
“ruleGroupId”: “AWS#AWSManagedRulesCommonRuleSet”,
“terminatingRule”: {
“ruleId”: “NoUserAgent_HEADER”,
“action”: “BLOCK”,
“ruleMatchDetails”: null
},
“nonTerminatingMatchingRules”: [],
“excludedRules”:
DjangoでSNS作成時のコマンド
Djangoのアプリケーション作成時に必要なコマンドです。
自分でもよく忘れるのでメモとして残しておきます。#Djangoのプロジェクト作成(初め方)
`django-admin startproject プロジェクト名`
#アプリケーションの作成
`python manage.py startapp アプリケーション名`
#Webサーバーの起動
`python manage.py runserver`
#管理者の作成
`python manage.py createsuperuser`
#マイグレーションファイルの作成
`python manage.py makemigrations アプリケーション名`
#マイグレーションを実行
`python manage.py migrate`
#Djangoのブラウザアドレス
`http://localhost:8000/アプリケーション名/`
【Python】for文を使った九九表
for 命令文を利用して九九表を作ってみた。
“`python
for i in range(1, 10):
for j in range(1, 10):
print(i * j, end=”)
print()
“`“end“はprintでデータを出力した後(末尾)に出力するものを指定
**※何も指定しなければ、改行コードが指定される。**出力
“`python
123456789
24681012141618
369121518212427
4812162024283236
51015202530354045
61218243036424854
71421283542495663
81624324048566472
91827364554637281
“`
Python Counterクラスが便利な件について ~もう自分で数える必要は無い~
#概要
これまで、リスト内に要素が何個ずつ含まれているかをチェックするために、リスト要素をfor文で回して、dictに要素・個数の組み合わせをセットしていた。
しかし、collections.Counterクラスを使えば、一行で処理が可能となる。#これまで(dictでごりごり)
“`Python
a = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]
b = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6]a_dict = dict()
b_dict = dict()for item in a:
if item in a_dict:
a_dict[item] += 1
else:
a_dict[item] = 1for item in b:
if item in b_dict:
b_dict[item] += 1
PandasでCSVファイルを読み込む方法
この記事では、
PandasでCSVファイルを読み込む方法
について書いていきます。また、この記事ではJupyter labを使用します。
インストールをしてあることを前提に始めていきます。##CSVファイルとは?
comma-separated values(略称:CSV)は、テキストデータをいくつかのフィールド(項目)に分け、区切り文字であるカンマ「,」で区切ったデータ形式。拡張子は .csv、MIMEタイプは text/csv。
Comma-Separated Values – Wikipedia##やり方
1, Pandasをインポートする
2, csvファイルを読み込む###1, Pandasをインポートする
まずはPandasをインポートします。
pandasでは慣習的に、’pd’という名前で使用されるそうです。
‘as’で指定していきます。“`python
import pandas as pd
“`###2,
Pythonによる人工知能入門 「遺伝的アルゴリズム~理論編~」
##比較的わかりやすい遺伝的アルゴリズム
人工知能(AI)の中では、1から10まで理解するのにそこまで体力を必要としないのがこれである。人工知能の入り口に立った人も、ぜひ取り組んでもらって、このすばらしいアルゴリズムに自分のアイデアを存分に活用してほしい。
##「遺伝的」アルゴリズムとは
例えば、100個のパラメータで動くゴキブリがいたとする。
パラメータはランダムで決定され、合計で50匹のゴキブリがいたとする。これらを、かけっこか何かで競争させると、みんな違うパラメータを持っているので、走るのが速い奴もいれば、遅い奴もいるだろう。そうして順位をつける。一位と二位で子供を産ませると、はたしてその子供は早い奴になれるだろうか。
**「遺伝的」**には、なれる。
そんな感じで、上位10匹程度で子供を産ませて、もともとの50匹のうちの、遅い奴らとメンバーチェンジをすると、前よりも優秀なやつが多い集団ができる。そしてまた競争させて、遺伝的に優秀な子供を産ませて、入れ替えて、また競争させて、、、、を繰り返していくと、いつかは、ものすごい早い奴が出てくるだろう。
という
pythonのtry~except~else
## コード
“`python
def func(a, b):
try:
print(a / b)
except ZeroDivisionError as e:
print(‘例外Error:’, e)
else:
print(‘finish’)# 正常
func(1, 2)# 0で割れないので例外エラー
func(1, 0)
“`## 実行結果
“`
0.5
finish
例外Error: division by zero
“`
ポケモン×データサイエンス(3) – ポケモン剣盾のパーティ構築をネットワーク分析から考える ネットワークの中心はどこ編
– [ポケモン×データサイエンス(1) – ポケモン剣盾のランクバトルデータを解析してTableau上で可視化してみた](https://qiita.com/b_aka/items/7d2b768dfa7817f34fc2)
– [ポケモン×データサイエンス(2) – ポケモン剣盾のパーティ構築をネットワーク分析から考える 試行編](https://qiita.com/b_aka/items/9020e3237ff1a3e676e4)
– 【今回】[ポケモン×データサイエンス(3) – ポケモン剣盾のパーティ構築をネットワーク分析から考える ネットワークの中心はどこ編](https://qiita.com/b_aka/items/9a28630012d58d7d60dd)こんにちは、今回も[前回の記事](https://qiita.com/b_aka/items/9020e3237ff1a3e676e4)に引き続きグラフ理論、ネットワーク分析を扱っていきます。
前回の記事ではポケモン剣盾のランクバトルのパーティにおけるネットワークを可視化しました。今回は実際に分析にとりかかろう
LSTMを用いた最強のポケモン生成
## 動機
以前読んだ論文に**音象徴の機械学習による再現:最強のポケモンの生成**というタイトルだけで面白い論文があった。
この論文を参考に自分でアレンジしてゼミ発表に使ったので、それを公開します。
ちょっと気合を入れて作ったので、外の世界に投げたくなって投稿しました。普段は画像系を扱っており、自然言語処理は素人&初投稿なので至らない点多々あると思いますがご容赦ください。
[*ゼミ発表で使った資料リンク](https://github.com/drop-ja/pokemon)### 今回やること
今回は以下の論文のアイディアを参考にして、深層学習(LSTM)のアクセントを加えつつ、同じ手法で最強のポケモンの生成を目指していきます。
論文では被験者アンケートで音の印象を定量化していましたが、そのようなデータは持ってないので、代わりに種族値を使用します。>音象徴の機械学習による再現:最強のポケモンの生成
三浦 智 ∗1 村田 真樹 ∗1 保田 祥 ∗2 宮部 真衣 ∗2 荒牧 英治 ∗2
∗1 鳥取大学大学院 *2 東京大学 言語処理学会 第18 回
GPyのカーネル関数比較
**目的**
最適化でGPyの放射基底関数RBF(Radial Basis Function)を利用した事例をネットでよく見かけるが、他にも複数のカーネル関数がある。これらの関数の数学的な説明はあっても使い分けがわからなかったため、1次元のデフォルト設定で、グラフ表示して比較してみた。
なお、[Some experiments in Gaussian Processes Regression](https://nipunbatra.github.io/blog/ml/2020/03/26/gp.html)のスクリプトを参考に作成した。安直にカーネル関数を並列に記述してみただけである。
**環境**| Item | Content |
|:———-:|:————-:|
| Hardware | Jetson Nano |
| SDK | Jetpack 4.2.3 |
| OS | Ubuntu 18.04 |
| Python | Ver. 3.6.9 |
| G
【Selenium】「次ページ」への繰返し移動は、while文を使う
# Tips
##1. While文によるページ遷移の繰り返し処理(うまくいく)“`python:selenium_success.py
# 1ページ目の次のページ(2ページ目)のURLを取得
next_page_url = driver.find_element_by_class_name(“js-next-page-link”).get_attribute(“href”)# 2ページ目から最終ページまでをループ処理する
while len(next_page_url) > 0:
driver.get(next_page_url)
#要素がロードされるまでの待ち時間を10秒に設定
driver.implicitly_wait(10)
next_page_html = driver.page_source.encode(‘utf-8’)# 任意の処理の実装コードをここに書く
next_page_url = driver.find_element_by_class_name(“js-next-page-link”).get_attribute(“href”)
e
がんばらない人のための画像検査機
Microsoft lobeでモデル作ってエクスポートして、SDTestをフロントエンドとして動かす、以上!
と言うわけで、MVTec異常検知データセットをlobeに食わせてみました。
![2020-11-07_18h46_47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308586/1059aa25-9d37-b05f-72c4-b22045b0b3b3.png)
異常検知は@shinmura0さんの記事に触発されたと同時期くらいにSDTestがリリースされたこともあり、ローコストで画像検査機を開発できるなと感じたところから全俺の異常検知歴史が始まりました。@daisukelabさんのMVTec異常検知データセットへの深層距離学習応用でモデルをいい感じに調教する手法もめっちゃ参考になります。colab上で学習すれば非力なマシンでもちゃんと学習できるし、うまくやれば本当に現場で使えるレベルのものになると確信していたものの、学習コストがやや高めというか、めんどくさいのがいまいちだなと思ってました。
生命保険会社の苦情の内訳の詳細を可視化
# はじめに
[生命保険会社の苦情件数を可視化](https://qiita.com/barobaro/items/efb927581e2e6a53cc28)のつづき
“`python
import pathlib
from urllib.parse import urljoinimport pandas as pd
import pdfplumber
import requests
from bs4 import BeautifulSoupdef fetch_file(url, dir=”.”):
r = requests.get(url)
r.raise_for_status()p = pathlib.Path(dir, pathlib.PurePath(url).name)
p.parent.mkdir(parents=True, exist_ok=True)with p.open(mode=”wb”) as fw:
fw.write(r.content)
return purl =
生命保険会社の苦情件数を可視化
# はじめに
[[Python]生命保険会社の苦情件数を棒グラフで表現](https://qiita.com/kuro_take/items/ad0a696fb680a07882b2)
を参考に作成しました
# つづき
苦情の内訳の詳細のPDFをpdfplumberでcsvに変換して可視化
[生命保険会社の苦情の内訳の詳細を可視化](https://qiita.com/barobaro/items/f9182c4421c26f7f7309)# スクレイピング
“`python
import requests
from bs4 import BeautifulSoupurl = “https://www.seiho.or.jp/member/complaint/”
headers = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko”
}r = requests.get(url, headers=headers)
r.raise_fo
メール送信機能を今更ながらPythonで実装してみた
## はじめに
今更ながらPythonでメールを送信する機能を[実装](#実装)しました!
ファイルの添付も簡単にできます!## 使い方
gmailからのメール送信を例に使い方を説明します。
gmailの`user`, `password`を下記のリンクを参考に取得します。
[PythonでGmailを送信する](https://qiita.com/eito_2/items/ef77e44955e43f31ba78)取得後に下記のプログラムを実行します。
“`python
from_address = ‘送信元アドレス’
to_address = ‘送信先アドレス’
subject = ‘件名’
body = ‘本文’
# 添付するファイルのパス
attachment = ‘test.txt’
user = ‘user’
password = ‘password’mail = Mail(‘smtp.gmail.com’, 587, user, password)
# 添付ファイルなし
mail.send(from_address, to_address, sub
データベースをDockerでfixtureするpytest環境例
## 目的
データベースを利用したPythonアプリのユニットテストをpytestで楽に環境の影響を受けず実行したい。(SQLite3等のファイルではなくデーモンとして立ち上がるもの)
## できたもの
サンプルコード: https://github.com/hkato/pytest-docker-mysql-example
pytestからMySQLをDocker上で立ち上げスキーマとテストデータを投入しテスト実行する。docker-composeの設定とdocker-entrypoint-initdb.dのSQL関連の対応をすればPostgreSQLなど他のデータベースでも基本同じはず。(docker-entrypoint-initdb.dでの初期化機構はMySQL/PostgreSQLのオフィシャルコンテナーは同様の動作のはずだが他は知らない)
## 必要な環境やpytest plugin
– Python3
– pytest
– pytest-docker
– pytest-dotenv
– Dockerpytest関係で、Dockerを立ち上げ
VSCode & Docker DesktopでシンプルなPythonの開発環境を作る
やっと届いた新しいMac!大枚叩いて買ったコイツは出来る限り綺麗なままでいて欲しい…!!
そうなると個人的な開発環境と言えどもやっぱりコンテナが良いわけで、今回はVSCodeのエクステンションであるRemote-Containersを使ってDocker Desktopと組み合わせたシンプルなPythonの開発環境を作ってみます。本職のエンジニアではないのであまり専門的な内容ではありません。とにかく自分がVSCodeで書いたPythonのコードがサッとコンテナ上で実行できれば御の字、そんな内容です。
使用環境
macOS Catalina ver 10.15.7
Visual Studio Code 1.51.0
Docker Desktop(stable) 2.5.0.0## Visual Studio CodeとDockerDesktopのインストール
Visual Studio Code
[https://azure.microsoft.com/ja-jp/products/visual-studio-code/](https://azure.microsoft.c
Seleniumで月末に作成する勤務時間表の作成自動化
めんどくさい単純業務を一つ自動化したメモです。
今回ログインが必要なサイトからデータを取得する必用があった為
初めてseleniumを使用しましたが、便利だなあ。# 自動化の概要
### 自動化する業務内容
二次受けとして参画しているPJにて、
一次受けの会社に対して月末に勤務時間をまとめたExcelを提出する。### 自動化前の業務手順
1. 日々の業務時間を自社サイトに記録
1. 月末になったら、自社サイトから日時の出退勤時間を目視で参照
1. 一時受け指定のExcelに転記
1. 担当者に提出上記2, 3の出退勤時間の転記を自動化しました。
### 自動化後の業務・処理手順
1. 日々の業務時間を自社サイトに記録
1. コピペで新規Excel作成し、`python WorkingTimeGet.py` 実行
- (1)【元データ取得】
- ①Seleniumで自社サイトへアクセスし、ID, PASSを入力
- ②ログインボタンをクリックし、ログイン
- ③勤務時間の照会ページへ遷移
補完機能を使ってPythonで開発をするためのVSCode設定
# はじめに
VSCodeを使っているのですが、Pythonの開発環境を整えるのにイマイチどのプラグイン(拡張機能)を設定すればいいのか、わからないでいました。
自作パッケージ(モジュール)を入れたら `”Can’t Resolve ~”` と怒られたり…
しかし、最近ではどのプラグインを使ってどう設定すればいいか理解できてきました。
過去の僕のようにPythonの開発環境の構築で悩んでいる人へ手助けになれば嬉しいです。
– 前提
– Pythonを書いたことが少しでもあるとGood
– Type Hintって何?って人も一旦わからなくても設定はできます
– VSCodeをインストールしている
– zshを使っている
– 確認方法: `echo $SHELL` → `/bin/zsh` が表示される
– 目的 / ゴール
– MacでPythonのコードが実行できる
– VSCodeでPython用にプラグインのセットアップができる
– 名前解決やメソッドの候補、Type Hintによる警告
かなの手書き文字認識を作ってみた Part 1/3 まずは MNIST から
# 概要
GUI でかなを入力し、予め機械学習により訓練して作成したモデルにより、文字を検出させようとしました。
まず MNIST で CNN の感触と精度を確認し、次に実際にかなのデータを与えて学習させ、最後に GUI と連携させます。
次回 (2/3):
次次回 (3/3):全体のコードは次の場所にあります。
https://github.com/tfull/character_recognition# MNIST とモデル構築
独自のモデルを構築し、よく使われる手書き数字のデータセット MNIST で、 train, test を行い、どれくらいの精度が出るのかを試します。
MNIST は 28×28 のグレースケールデータのため、 (channel, width, height) = (1, 28, 28) として入力します。数字は 0 ~ 9 のため、10通りの分類先があり、10個の確率を出力するようにします。
“`python
import torch.nn as nnclass Model(nn.Module):
def __init__