Python関連のことを調べてみた2020年07月29日

Python関連のことを調べてみた2020年07月29日

SphinxでPythonプログラムをHTMLドキュメント化する

# 1. はじめに

あるプロジェクトで開発したPythonプログラムを、新たな別のプロジェクトで保守しながら機能拡張を行うことになった。引き継ぎで、内部文書としてSphinxで生成したHTMLドキュメントを残すことにした。過去にDoxygenでHTML化した経験もあり、ソースコードには同程度の情報量をコメントとして埋め込んでいたので、それらをSphinxに対応すればいい。という背景。

ようは、詳細設計書を自動生成する。

Sphinxは初めて使用するので、その作業内容を記録しておく。
なお、docstringのフィールドについては独自のルールを採用している。


# 2. 使用環境

以下の通り。

* Windows 10 Pro
* Python 3.7.4
* Sphinx 3.1.2


# 3. docstringフォーマットの決定

Google形式、numpy形式とあるが、reStructureText(通称reST)を採用した。理由は以下の通り。

* 表記が短い
* 標準なので追加のパッケージが不要
* 型ヒントに対応している
* 型ヒントを採

元記事を表示

2. Pythonで綴る多変量解析 6-1. リッジ回帰・ラッソ回帰(scikit-learn)[重回帰vsリッジ回帰]

* 平たく言えば、どちらも重回帰分析の進化形で、**ラッソ(Lasso)はL1、リッジ(Ridge)はL2**とも呼ばれ、双子のような関係です。
* どういう進化かといえば、**重回帰分析を過学習が起こりにくいように改良**したというものです。
* 重回帰分析では、損失関数(予測値と目的変数の2乗和誤差)が最小になるように回帰係数を推定しますが、これに加えて、**回帰係数そのものが大きくなることを避ける工夫**が施されています。
* 一般的に、回帰係数が大きいモデルは、入力の小さな動きで出力が大きく動きます。そのような過敏なモデルは、訓練データには当てはまっても未知のデータにはうまく当てはまらないリスクが高いといえます。
* そこで、損失関数に**変数の数や重みが増えるほどペナルティ**が加算されるようにして、**モデル自身にパラメータの大きさを抑制**してもらいます。

![2_6_1_01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502109/28eebf86-9a4f-a

元記事を表示

dataframeの更新

“`python
variable = 1

for index, row in df.iterrows():

df.loc[index,”A”] = variable
“`

元記事を表示

Windows上のPythonアプリからAmazon RedshiftにODBCでデータ連携

#はじめに
この記事では、DataDirectドライバを利用し、Windows上のPythonアプリケーションからAmazon RedshiftにODBCで簡単にデータ連携する方法を解説します。

#Amazon Redshift用DataDirectドライバのインストール

1、Windows用DataDirect ODBC Driver for Amazon Redshiftをダウンロードします。

2、手順通りドライバをインストールします。

#RedShift接続を設定する

1、ODBC Administratorより「追加」をクリックし、接続定義します。
ドライバは DataDirect 7.1 Amazon Redshift Wire Protocol を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

英文入力支援ツール翻訳ちゃん(付録:win10 64bit用簡易インストーラ)

#英語が弱いので英語を…
こんにちは.
英語が弱いので英語を勉強しました,というと素晴らしいですよね.
私の場合は「英語が弱いので英語から逃げる方法を考えました.」
というわけで作りました.(唐突)
**「さっさとソースコードをコピペさせろ!」という方や,技術的なお話を求めておられる方は[そろそろ技術的な話](https://qiita.com/_branch_/items/5f5cf4be81980074431b#%E3%81%9D%E3%82%8D%E3%81%9D%E3%82%8D%E6%8A%80%E8%A1%93%E7%9A%84%E3%81%AA%E8%A9%B1)へどうぞ!**
**もっとお急ぎの方はwin10(64bit)でさえあれば下の[付録:簡易インストーラー(.bat)](https://qiita.com/_branch_/items/5f5cf4be81980074431b#%E4%BB%98%E9%8C%B2win10-64bit%E7%94%A8%E7%B0%A1%E6%98%93%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88

元記事を表示

【Python】デバッグをより効率的に!

#はじめに
プログラムのデバッグによく使うのが`print()`があるが、`pdb`を使えばもっと効率よくできるそうなのでメモ

#やり方
デバッグを行いたいポイントに以下のコマンドを書き込む。

“`py
import pdb; pdb.set_trace()
“`
これでOK。これを挿入してからプログラムを走らせると挿入部で処理が停止する。
以下のコマンドを使えばステップインなどもできる。

|コマンド |表|
|—|—|
|s (step) |ステップイン|
|n (next) |ステップオーバー|
|r (return) |ステップアウト|
|l (list) |現在の行のソースコードを表示|
|a (args) |現在いる関数の引数を表示|
|p |プリント|
|c (cont(inue))|次のブレイクポイントまで実行|

元記事を表示

Boto3 に追加されたリトライ処理モードを利用する

## はじめに
AWS SDK は [Exponential Backoff](https://docs.aws.amazon.com/ja_jp/general/latest/gr/api-retries.html) による自動再試行ロジックが実装されていますが、
Boto3 では 3 つのリトライ処理モードを選択できます。

* legacy (デフォルト)
* standard
* adaptive

botocore の GitHub リポジトリを確認すると、2020年2月ごろに standard および adaptive が
追加され、それ以前の実装は legacy という名称になっています。

[Add support for new retry modes #1972](https://github.com/boto/botocore/pull/1972)

互換性のため、デフォルトが legacy となっており、standard/adaptive で追加された機能を
利用するにはリトライ処理モードを明示的に変更する必要があります。

## リトライ処理モードの変更方

元記事を表示

自分の気持ちをMr.Childrenの歌詞で表現したい

# はじめに
この人は何を言ってるんだ..?といったタイトルですが(笑)..自然言語処理の勉強も兼ねて、4連休を利用してつくってみました。近々、どこかしらにWebで見られるようにしようと思います。

# コンセプトと完成イメージ
このネタを見つけた瞬間、現状(As is)→課題→あるべき姿(To be)を書き出していました。
さすがビジネスマン(笑)
image.png

どんな感じでつくろうかなと考えて思いついたのが以下の様な仕組みです。↓
image.png【Python】UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead

スクレイピングをしようとしたら、`UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead`のエラーが出た

## 原因

PhantomJSが開発を中断しているため、この警告メッセージが出るらしいです。

## 対策

警告メッセージ通り、PhantomJSの代わりに、**Chrome**や**Firefox**のヘッドレスモードを用いるようにしましょう。

参考

PythonでのPhantomJSによるWebスクレイピングの方法【初心者向け】

元記事を表示

Jupyter 公式の DockerHub に関するメモ

自身の理解のためにある程度調べたことをナレッジになればと思い記載

# リポジトリ毎の関係性

[Jupyter 公式の Read the Docs](https://jupyter-docker-stacks.readthedocs.io/en/latest/index.html) に記載がある。

[Image Relationships](https://jupyter-docker-stacks.readthedocs.io/en/latest/using/selecting.html#image-relationships)

派生関係としては以下の通り。

– base-notebook
– minimal-notebook
– scipy-notebook
– tensorflow-notebook
– datascience-notebook
– pyspark-notebook
– all-spark-notebook
– r

元記事を表示

DeepRunning ~Level4.4.1~

#Level4.機械学習講座(理論と実践)

 ![alt](http://ai999.careers/bnr_jdla.png)
 [3ヵ月で現場で潰しが効くディープラーニング講座とは](http://study-ai.com/jdla/)

##4-4.主成分分析
###4-4-1.主成分分析とは

  ●予測や分類とは異なるタスクで「次元圧縮」をする。
  ●多変量データの持つ構造をより少数個の指標に圧縮する
   要するに高次元のものを、なるべく情報量を減らさずに低次元に圧縮すること。
   ⇒ 1000次元のものを10次元にする。
     ⇒ 高次元のものを目で見て傾向をつかむことができる。
  ●少数変数を利用した分析や可視化(2・3次元まで)が可能。
   4次元以上になると人間が理解できない。

###4-4-2.主成分分析の式
  【学習データ】
    i番目のデータの1個目の要素、2個目の要素・・・とm次元まである。

“`math
x_i=(x_{i1},x_{i2},・・・,x_{im}) \in \mathbb R^m
“`

  【平均(ベクトル)

元記事を表示

VTuber のスパチャ情報を可視化してみた

積み上げ棒グラフのれんしう

# さまりぃ
2020/1/1 ~ 2020/6/30 のスパチャ金額を収集し、眺めてみた

– 事務所単位
– スパチャの大半は日本円なのは全事務所共通
– 日本円のスパチャ総額のうち、大半はにじさんじと hololive へのスパチャ
– にじさんじへの総額と hololive への総額はおおよそ同程度
– 外国通貨のスパチャ総額の大半は hololive の配信者へのスパチャ
– ただし日本円換算すると日本円のスパチャ総額と比べ外国通貨のスパチャ総額は非常に少ない
– 外国通貨で多いのはドル、ニュー台湾ドル、香港ドル
– 私見:hololive は海外展開に力を入れているイメージがあるが、これがスパチャにも現れた印象
– 配信者単位
– スパチャ総額でみると、上位は hololive の配信者が多い
– 桐生ココ会長や潤羽るしあさん等
– にじさんじだと葛葉さん、郡道美玲さんが総額上位
– ただしこの二人は日

元記事を表示

ラジコンのサーボ司令を受け取りラズパイを割り込ませてロギングするプログラム

ラズパイ用備忘録的コード

“`python:filename.py
import pigpio
import time
import signal
import csv

#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼ st チューニング要素
wfilename=’wlogfile_1.csv’
rfilename=’rlogfile_1.csv’

time_HI_STR_N=1520#ステア側入力ニュートラル状態のHIGH時間[us]
time_HI_STR_MAX=2020
time_HI_STR_MIN=1020
time_HI_DRV_N=1520#駆動側入力ニュートラル状態のHIGH時間[us]
time_HI_DRV_MAX=2020
time_HI_DRV_MIN=1020
DUTY_MOT_MAX=20

frec_PWM_STR=50#Hz
frec_PWM_DRV=50#Hz
frec_logic=50#Hz

GAIN_DRV=DUTY_MOT_MAX/(time_HI_DRV_N-time_HI_DRV_

元記事を表示

OpenVINO の Person-reidentification(人再認識)モデルを使って人を追跡する

# はじめに

OpenVINO の Person-reidentification(人再認識)モデルを使用して、人を追跡するプログラムを作りました。進む方向によって人の出入りをカウントすることもできます。なかなか苦労したので、実装した内容をまとめておきます。

画像はYouTubeのリンクになっています
[![person_reid.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118309/451dc67b-5623-386b-596c-3a575e983594.gif)]
(https://youtu.be/Pj6HYWWyucU)
テストに使用した動画は [Videezy](https://www.videezy.com/abstract/20714-runners-and-cyclists-on-elevated-footbrige) からダウンロードしました。4K 動画なので [こちらのサイト](https://www.videosmaller.com/jp/)で 1920 x 1080 に

元記事を表示

【Python】Pyroでベイズ推定

最近確率的モデルを扱う[Pyro](https://pyro.ai/)を知り、面白そうだと思ったので、お試しとして触ってみました。
本記事は、そのソースコードの共有となります。ソースコードはJupyter Notebookで書いています。
理論的な説明はほぼありませんが、ご了承ください。

環境

Windows10
Python: 3.7.7
Jupyter Notebook: 1.0.0
PyTorch: 1.5.1
Pyro: 1.4.0
scipy: 1.5.2
numpy: 1.19.1
matplotlib: 3.3.0

## Pyroとは?

Pyroは、Pytorchをバックエンドにした確率的モデルを扱うライブラリです。
pipからインストールできます。

“`
pip install pyro-ppl
“`

このとき、事前にPytorchのインストールが必要です。詳細は公式ページをご参照ください。

## 試しに動かしてみる

今回は、ベルヌーイ分布$Ber(p)$に従うデータから

元記事を表示

天気図をクラスター分析してみた

# はじめに
みなさん西高東低や冬型の気圧配置などという言葉を聞いたことはありませんか?日本付近の気圧配置にはいくつかのパターンがあり、西高東低とよばれる冬型の気圧配置はその中でも有名なほうでしょう(下図)。このほかにも太平洋高気圧に覆われる夏型の気圧配置などいくつかの種類があります。この記事では、このパターンを教師なし学習で分類してみようと思います。
![img.png](https://smtgvs.weathernews.jp/s/topics/img/201610/201610140215_box_img0_A.gif?1476853911)
[(weather newsより)](https://weathernews.jp/s/topics/201610/140215/)

今回実行したことは以下の3つです。

– 衛星画像をスクレイピング
– エルボー法
– クラスター分析(教師無し学習)

# 衛星画像の取得
衛星画像の取得は江波山気象館のHPから行いました。というのも、rowデータをダウンロードするのは重く、いい感じに加工されたデータでスクレイピングしてよさそうだったの

元記事を表示

Pythonビルトインの様々な文字列操作

# まえおき

– この記事は執筆中の[やさしくはじめるPythonプログラミング](https://github.com/simon-ritchie/python-novice-book-preview)の本の特定の章の部分抜粋です。
– 入門本なので初心者の方向けです。
– ビルトインの文字列操作関係の章の内容が主になります。
– Qiita記事にマッチしていない箇所(「章」や「ページ」といった単語が使っていたり、改行数が余分だったり、リンクが対応していない等)があるという点はご留意ください。気になる方は↑のリンクの電子書籍版をご利用ください(Githubでダウンロードできます)。
– コメントなどでフィードバックいただいた場合、書籍側にも活用・反映させていただく場合があります。

# 文字列の各操作

前章までで基本的なPythonの操作や型・ビルトイン関数などを学んできました。本章では文字列に対して追加の操作について学んでいきます(前章までである程度操作方法について学んできましたが、他にも大切で便利な操作方法などが色々あるのでそちらを学んでいきます)。

数は多いので全ては覚え

元記事を表示

discord.pyを使ってbotを作ったときの知見

プリコネのクラバト管理botを作ったのでそのへんで気づいたことです
https://github.com/izmktr/yukarisan

#on_readyでのイベント

on_readyはdiscordに接続したときに呼び出されます
また、不定期にdiscordから切断されるようで、
自動的に再接続したときにも呼び出されます。

ここでは内部的に持っている情報とdiscord.pyのデータを結びつけると良さそうです。

“`Python
import discord
from discord.ext import tasks
from typing import List, Dict, Optional

#guild_idと内部的なクラスとの紐付け
guildhash: Optional[Dict[int, GuildData]] = None

@client.event
def on_ready():
global guildhash

if guildhash is None:
# ロード処理
guildhash = {}

for g in client.

元記事を表示

Arduino UNO : USB2UARTの最大通信速度を探る(1)

##Arduino UNOのUSB2UART最高速度は115200bps ??
各場所を調べてもArduinoのUART最高速度は115200で、それ以上は保証しないと書かれています。
しかし、私が試している限りでは921600bpsを設定しても普通に通信ができています。
下記サイトを見ると、500000bpsで通信速度自体は頭打ちとのオシロ上での測定結果もあります。
https://arduino.stackexchange.com/questions/296/how-high-of-a-baud-rate-can-i-go-without-errors
Arduino UNO USB2UARTで実際にはどれくらいのスピードで通信できるか測定してみます。

###Arduino UNO部品レベルの限界値
ここでArduinoは Arduino UNO R3(Revision3)前提となります。
外付けOSCとATmega328P、USB2UART ICの設定を見てみます。
回路図は下記よりダウンロードできます。
https://www.arduino.cc/en/uploads/M

元記事を表示

【Python】AttributeError: ‘list’ object has no attribute ‘replace’

Pythonのスクレイピングを勉強中、値の加工をしていたら`AttributeError: ‘list’ object has no attribute ‘replace’`が出たので、メモで対策を残します

## エラーが出た原因

Pythonで取得したlistに、特定の文字列を削除するロジックを書こうとしていました。
しかし、

“`
str_list = [‘aaabbb’,’article’]
str_list_new = str_list.replace(‘a’, ”)
“`

**出力結果**

“`
AttributeError: ‘list’ object has no attribute ‘replace’
“`

## 対策

配列を一旦単独の文字列に変換してから、replace()で置換、のちに配列に戻すという処理をすればいいらしいです。

“`
str_list = [‘aaabbb’,’article’]
string = “,”.join(str_list)
string_new = string.replace(‘a’, ”)
str_li

元記事を表示

OTHERカテゴリの最新記事