Python関連のことを調べてみた2019年12月13日

Python関連のことを調べてみた2019年12月13日

僕のurllib(Python)

自分用のまとめ
随時更新

**自分がわかればいいからところどころ用語が間違ってるかも**

!見方

“`python
#コマンド
#引数のオプションの説明
“`

#urllibって何に使うの?
URLへの接続とか操作

###モジュール読み込み

“`python
import urllib
“`

##頻出操作##

元記事を表示

僕のos(Python)

自分用のまとめ
随時更新

**自分がわかればいいからところどころ用語が間違ってるかも**

!見方

“`python
#コマンド
#引数のオプションの説明
“`

#osって何に使うの?
フォルダの操作かな~

###モジュール読み込み

“`python
import os
“`

##頻出操作##

“`python
#カレントディレクトリを取得
os.getcwd()

#カレントディレクトリを変更
os.chdir()

#ファイル名を取得
os.basename()

#引数のフォルダを作成
os.mkdir()

#絶対パスを取得
os.abspath()
__file__ #実行されてるファイルのパス

#フォルダ名を取得
os.dirname()

“`

元記事を表示

僕のBeautifulSoup(Python)

自分用のまとめ
随時更新

**自分がわかればいいからところどころ用語が間違ってるかも**

!見方

“`python
#コマンド
#引数のオプションの説明
“`

#BeautifulSoupって何に使うの?
HTMLを解析してスクレイピングやら

###モジュール読み込み

“`python
import bs4
“`

##bs4のデータオブジェクトと頻出操作
**HTMLインスタンス取得から頻出の解析**

“`python
#解析用オブジェクト取得
soup = bs4.BeutifulSoup()
#第一引数にHTMLオブジェクト→webdriver.get_sourceとかで取れるやつ
  #第二引数にHTMLパーサー
#→代表的なのlxml,html5lib,html.parser

#要素情報で一つ見つける
element = soup.find()
class= #クラス名
href= #リンク
  ”” #何もつけないとタブ

#要素情報ですべて見つける
element = soup.fi

元記事を表示

FortiGateのアプリケーションコントロールIDを取得する

# はじめに
FortiGateのアプリケーションコントロールIDは[fortiguard.com](https://fortiguard.com/appcontrol)にて公開されてますが、一覧では表示されません。。。
フローコレクタに情報を読み込ませる時など、csvで一覧が欲しいと思った方は少なからずいるはず。

## 本体から取得する
下記のコマンドを利用してCLIから一覧を取得できます。

“`
config application list
edit default
config entries
edit 1

# set application ?
“`
?を入力すると出力されるわけですが、機器によって対応しているアプリケーションが[異なる](https://fortiguard.com/appcontrol/categories)ので、できればfortiguard.comから全てのデータを取得したい。

## 自作ツール作りました。
pythonで自作ツールを作りました。
`page = 281`は[fortiguard.com](https://fortiguard

元記事を表示

Python基礎8 numpy テスト

#1.はじめに
 numpyの基礎をテスト形式で備忘録として残しておく。事前に、**numpy** はインポートされているものとする。

#Question_01
Question

“`python
AからBを生成する関数function(A)を記述せよ

A:
array([[5, 3, 4, 3],
[7, 6, 7, 4],
[6, 7, 5, 4]])
B:
array([[False, False, False, False],
[False, False, False, False],
[False, False, False, False]])
“`
Answer

“`python
def function(A):
return A > 7
“`
#Question_02
Question

“`python
AからBを生成する関数function(A)を記述せよ

A:
array([4, 5, 4, 5, 4, 3, 2])

B:
array([2, 3, 4, 4, 4, 5, 5])

元記事を表示

僕のWebdriver(Python)

自分用のまとめ
随時更新
**自分がわかればいいからところどころ用語が間違ってるかも**

!見方

“`python
#コマンド
#引数のオプションの説明
“`

###モジュール読み込み

“`python
#Webdriver
from selenium import webdriver

#Webdriverのオプション設定モジュール(Chrome)
from selenium.webdriver.chrome.options import Options
“`

##WebDriver頻出操作

**起動~接続**

“`python
#Webdriver起動
driver = webdriver.Chrome()
executable_path= #Webdriverの格納パス
chrome_options= #起動オプション

#URL・HTMLファイル接続
driver.get()
#引数にURLかHTMLのパス

#HTMLを取得
driver.get_source()

“`

**オプション設定**

“`pytho

元記事を表示

No module named ‘libs.resources’が出た場合の解決方法

## 事の発端
yoloとかSDDやるためにアノテーションのツールを使う必要がある。

labelImgというアノテーションツールをwindows10にインストールして使いたい。

labelImgはコマンドラインにpython labelImg.pyと打つことで起動するツールらしいので、webサイトの説明どおりにやってみた。

No module named ‘libs.resources’のエラーが出た(←今ここ)

## 動作環境
windows10
anaconda

## エラーが出た流れ
はじめに自分が参考にしたサイトはここ

「labelImg インストール Windows10」などと検索すると、このサイトがトップに出る状況なので、他の人も同じエラーになると思う。(自分は解決に結構時間がかかりました。)
このサイトに書かれている通りに実行したら、次のコマンドで以下のエラーが出た。

“`
python labelImg.py
[エラーの内容]
N

元記事を表示

『作って動かす ALife』の1章を完全理解した

これは『作って動かす ALife』の1章の要約です。
正しくない箇所、疑問に思う箇所がある場合はコメントでご教示いただけると幸いです。

# ALife のアプローチ
Alife は、すでに存在する生命体を観察することで「生命とは何か」を理解しようとする方法をとりません。「生命の本質とはこうではないか」と仮説をたくさん立て、それを元に人工的なシステムを作ってしまい、作りながら生命の本質を理解しようとするアプローチをとります。

# 生命の定義
遺伝子工学のようにテクノロジーやエンジニアリングと生命性が結びつくことで、私たちがもつ生命の認識は徐々に変容しています。生命は変わることのできない所与のものではなく、目的に応じて変更可能なものへと変化するのです。例えば、身体障がい者の義肢(= 生命の一部)が高度化(= 変更可能なもの)すれば、健常者よりも速く走る(= 目的)ことが可能となります。

「そもそも生命は目的があって存在するのか」という見解もあります。ダーウィンが提唱した自然選択説の立場をとると、自然淘汰のプロセスは目的を持って行われるものではありません。例をあげて説明します。私たちは

元記事を表示

AWS Lambdaでbotoを使ってファイルをダウンロードするときのハマりポイント

## 謎の文字列がついてきてしまう問題
このように

“`python
s3 = boto3.client(“s3”)
pdf_filepath = ‘tmp/’ + key.split(‘/’)[-1]
print(pdf_filepath)
# => tmp/20191016101246759.pdf
s3.download_file(bucket, key, pdf_filepath)
“`
S3からファイルをダウンロードするコードを動かすと
`[ERROR] FileNotFoundError: [Errno 2] No such file r directory: ‘tmp/20191016101246759.pdf.47cf5CFA’ `
このような感じで謎の文字列がついてきてしまい、エラーでダウンロードできません。

## Lambdaで変更できるファイルの制限
Lambdaでは、
`/tmp`以下のファイルしか変更することができない
`/tmp`以下でも階層構造にすることはできない(`/tmp`以下にディレクトリを作成することはできな

chromedriverをアップデートしたいとき。

こちらの記事が参考になります。
https://dot-blog.jp/news/selenium-chromedriver-install-how-to/

僕のPandas(Python)

自分用のまとめ
随時更新
**自分がわかればいいからところどころ用語が間違ってるかも**

!見方

“`python
#コマンド
#引数のオプションの説明
“`

###モジュール読み込み

“`python
import pandas
“`

##Pandasのデータオブジェクトと頻出操作

#####Series
“`python
#一次元データオブジェクト
#自分のイメージ的には配列
ser = pandas.Series()
“`


#####DataFrame
“`python
#二次元データオブジェクト
#自分のイメージ的にはDBのテーブルと同じようなイメージ
df = pandas.DataFrame()
“`

**DataFrame構造への操作**

“`python

#x,y,…の順でソート
df.sort_values(x,y,…)

#引数のindexを削除。
df.drop(x)
axis = 1 #列を削除

#データフレームの結合
df.merge(x,y,on=z) #xとyテーブル

Python統計テクニック集 ~Pythonで抗う統計解析~

これは、[Open and Reproducible Science Advent Calendar 2019](https://adventar.org/calendars/4523):13日目の記事です。

# 記事の目的
統計解析といえばRです。
しかし私のようにPythonだけでなんでもやりたい人もいます。
そんな人に向けて、Pythonで統計解析を行う上で便利なライブラリやテクニックをご紹介します。
同じテーマの記事や書籍も多々ありますが、他ではあまり紹介されていないものを中心にまとめるつもりです。
各ライブラリ・テクニックの詳細についてはなるべく別記事を紹介する方針です。

対象:Pythonを使ったことはあるけれどガチではない人

# Jupyter Notebook / Lab
様々な記事で紹介されているド定番ですが、一応ご紹介します。

なぜ私たちはSPSSのようなGUIベースでなく、PythonやRのようなプログラムベースの統計ソフトを使うのか。
それは~~高価だから~~**結果の再現性**を確保するためです。
雑に言い換えれば、ある結果がどのような操作・解析か

クラスベース汎用ビューの概説と継承クラス関係について

この記事はDjango Advent Calendar 2019の13日目の記事です。
今回の記事ではDjangoの「汎用ビュー(Class-based Generic View)」の概説と継承クラス関係についてまとめたいと思います。

# 前提
この記事作成時点の最新バージョンであるDjango 3.0の[公式ドキュメント](https://docs.djangoproject.com/ja/3.0/)を参照及び引用しています。

# 汎用ビュー(Class-Based Generic View)とは
まず、Djangoにおける「ビュー」とは、ユーザーリクエストを処理してレスポンスを返すロジックをカプセル化したもの[^1]です。プレゼンテーション層である「テンプレート」に表示するデータを定義したり、リクエストに応じた処理を行います。議論の余地はありますが、MVCフレームワークにおける「コントローラー」が一般的なイメージに近いかもしれません[^2]。

Djangoでは、そのビューを開発する際のロジックを汎化した「汎用ビュー(Class-based Generic View)」が用意さ

【Python】リスト内の要素の全ての組み合わせを出力

###リスト内の要素の組み合わせを全て知りたい
例えば

“`
[‘Apple’,’Orange’,’Grape’]
“`

のリストから

“`
[[‘Apple’], [‘Orange’], [‘Grape’], [‘Apple’, ‘Orange’], [‘Apple’, ‘Grape’], [‘Orange’, ‘Grape’], [‘Apple’, ‘Orange’, ‘Grape’]]
“`

という出力を得たいわけです。要素が1つしかない組み合わせもあるし、複数含まれる組み合わせもある。2^n-1個の答えをまとめたリストになることはわかるのですが、実際に書こうとしたら躓いてしまった。複雑なネストになりそうじゃないですか。

こういう時に使える標準ライブラリを知りました。
[itertools — 効率的なループ実行のためのイテレータ生成関数](https://docs.python.org/ja/3.6/library/itertools.html)

|イテレータ|引数|結果|
|:—————–|:——————

Tensorboardでmatplotlibのプロットを表示

# はじめに
Tensorboardでmaplotlibのプロットを表示する方法が欲しかったため考えてみた。
Tensorboardでは画像を表示することが出来るので、プロットを画像化して表示すればよいのでは?と考えた。
ということで、その方法をまとめます。
なお、ログの出力は`tensorboardX`を介して行っている点に注意してください。

# 方法
まず、matplotlibでプロットを画像で得るため、バックエンドを`Agg`に切り替える。
バックエンドの切り替えは`import matplotlib.pyplot`の前に行う必要がある点に注意。

“`python
import matplotlib as mpl
mpl.use(‘Agg’)
“`

プロットの画像データは以下の方法で取得できる。

“`python
import matplot.pyplot as plt
import numpy as np

fig = plt.figure() # 繰り返し表示する際にはplt.figure(0)等でFigureを指定したほうが良い

# 何かしらのプロット

f

09. Typoglycemia

## 09. Typoglycemia
スペースで区切られた単語列に対して,各単語の先頭と末尾の文字は残し,それ以外の文字の順序をランダムに並び替えるプログラムを作成せよ.ただし,長さが4以下の単語は並び替えないこととする.適当な英語の文(例えば”I couldn’t believe that I could actually understand what I was reading : the phenomenal power of the human mind .”)を与え,その実行結果を確認せよ.

###Go
“`go
package main

import (
“fmt”
“math/rand”
“strings”
“time”
)

/*
* 配列からランダムで1要素を取り出し値を返す、またその配列は削除する
*/
func choice(m *[]string) string {
// 値数内の乱数を発生
i := rand.Intn(len(*m))

// 該当の単語を取得しマップから削除
str := (*m)[i]

// これは便利(

QoreSDKを使って筋トレ推定アプリを作った話

## tl;dr

– 筋トレ推定アプリを作った
– Qoreはリザーバコンピューティングというアルゴリズムを使っている
– スマホで取得できる加速度データから時系列データの分類タスクを行った
– [コード](https://github.com/hnishi/muscle_QoreSDK_AdvCal2019/blob/master/muscle_QoreSDK.ipynb)
– 精度はかなりいい
– テストデータで、精度 99.6%
– これで筋肉エンジニアになれる っはず

## 戦略

– スマホ(iphone)で加速度センサーデータを収集
– x, y, z軸3つの成分をもつ時系列データが手に入る
– 腕立て、腹筋、スクワット、腹筋ローラーの4種目の筋トレで学習
– スマホだけで、どんな筋トレをしたかがわかる

## データの収集

– スマホを、ズボンのポケットに入れたまま筋トレする
– 今回は、いずれの筋トレにおいても、同じ向きでスマホをポッケに入れる
– 違う向きにしたりすると、より推定は難しくなると思われる
– 加速度測定には、以下のアプリを使わせ

Kaggleコード遺産

## この記事はどんな記事なのだ?
こんにちはなのだ、[kaggle masterのアライさん](https://www.kaggle.com/hidehisaarai1213)なのだ。

この記事は[kaggle advent calendar 2019 その1](https://qiita.com/advent-calendar/2019/kaggle)の13日目の記事なのだ。

前日は[u++](https://qiita.com/upura)さんの[Kaggle Days Tokyoの記事](https://upura.hatenablog.com/entry/2019/12/12/231917)なのだ。アライさんも参加したかったのだ。
明日は[takapy0210](https://qiita.com/takapy0210)さんの学習・推論パイプラインについてなのだ。楽しみなのだ。

Kagglerの間では連綿と受け継がれる便利関数がいくつかあるのだ。アライさんはそれをKaggleコード遺産と呼ぶことにしたのだ。この記事ではKaggleコード遺産の紹介とその出処の検証[^

BERTを理解しながら自分のツイートを可視化してみるハンズオン

この記事は、[NTTコミュニケーションズ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/nttcom)の13日目の記事です。
昨日は @nitky さんの記事、[俺たちは雰囲気で脅威インテリジェンスを扱っている](https://qiita.com/nitky/items/ccefd0353b74aa21e357) でした。

# はじめに
こんにちは、NTTコミュニケーションズのSkyWayチームに所属しているyuki uchidaです。
本記事では、最近Google検索にも適用されたという、自然言語処理に用いられる言語モデル`BERT`を使って自分のツイートを可視化してみる記事です。
出来るだけ多くの人に試して頂けるように、ハンズオン形式で書いていきますので、興味が湧いた方は是非試してみてください。

[Googleの検索エンジンに「過去5年で最大の飛躍」](https://wired.jp/2019/11/14/google-search-advancing-grade-reading/)

##

ガンマ分布のパラメータ指定方法まとめ

# ガンマ分布
ガンマ分布は正の連続値をとる値のモデリングに使われる。
パラメータは2つあるが、ライブラリによって微妙に定義が違ったり、平均値、分散がどの程度になるか分かりづらく、いつも調べている気がするので、まとめておく。

## 確率密度関数

“`math
\begin{align}
f(x) &= \frac{1}{\Gamma(k) \theta^k} x^{k-1} e^{- \frac{x}{\theta}} \\
&= \frac{\lambda^k}{\Gamma(k)} x^{k-1} e^{- \lambda x}
\end{align}
“`

$k$: shape parameter
$\theta$: scale parameter
いずれも正の値をもつパラメータである。
ただし、ライブラリによっては、$\lambda = \frac{1}{\theta}$を使って表す場合もある。

いくつかのパラメータでプロットするとこんな感じ。
![gamma_dists.png](https://qiita-image-store.s3.ap-northeas