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

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

製薬企業のプログラミング初心者のための環境構築

# はじめに

ここでは、主に製薬企業でプログラミングを使った業務を行うために必要な環境構築について書いています。
基本的にはケモインフォマティクスやバイオインフォマティクスなどにおける機械学習に利用することを想定しています。
また、使用するパソコンは、Windows 10を想定しています。

# Anacondaのインストール

Anacondaをインストールすると、Pythonとともに、科学計算でよく使われるライブラリ(よく使う関数などをまとめて利用できるようにしたもの)一式が同時にインストールされ、すぐに実務で使うことができます。

まず、[Anacondaのダウンロードページ](https://www.anaconda.com/distribution/)にアクセスします。
そこで、下の図の赤枠で示しているように、Windows用のインストーラーを選択します。

![Anaconda download.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517951/876b0e96-987d-41d

元記事を表示

Pythonでスクレイピングに挑戦した

# 目的
paizaやAtCoderで問題を解くだけでなく、実際にプログラムを組み始めようと考えたので。
それと[この記事(Webサービスのプログラミングに必要なことのだいたいは、スクレイピングに学んだ)](http://bugrammer.hateblo.jp/entry/2014/08/29/141926)に感化されたのもあります。
今回は[リクナビダイレクト](https://rikunabi-direct.jp/)の掲載企業をスクレイピングしてDBに登録したいと思います。
#### リクナビダイレクトを選んだ理由
リクナビダイレクトは求職者が登録した志望業界などから、求職者にマッチしているとリクナビダイレクト側が判断した企業を1週間に数個表示して紹介してくれるというサービスです。
求職者側からの検索はできないようになっています。
一応、掲載企業一覧が提供されていますが合計16000件以上の企業を端から見ていくというのは非常に時間がかかる、というか無謀です。
そこで企業情報をスクレイピングしてDBに登録することによって検索可能にしようと考えました。

あまりにもスクレイピングに時

元記事を表示

【python3】変数名をキーとして文字列のformatを行う

# 実装した関数

“`py
from inspect import currentframe,getargvalues

def varfmt(target,*argv):
return target.format(**getargvalues(currentframe().f_back).locals)
“`

【※追記※】@shiracamus さんより、python3.6以降なら以下の書き方でOKとのコメントを頂きました。
ありがとうございます!

“`py
def HogeAaPrint(hoge, aaa):
print(f”{hoge} {aaa}”)

HogeAaPrint(10, 20)
“`

[参考]
https://qiita.com/AnchorBlues/items/f7725ba87ce349cb0382
https://docs.python.org/ja/3/library/inspect.html

# example
“`py
from inspect import currentframe,getargvalu

元記事を表示

リアクションによる役職の付与、剝奪

#まずはじめに
この記事は海外の開発者様**[Anson](https://github.com/ansonfoong?tab=repositories)**様のコードを日本語で少し分かりやすく解説した物になります。また、ご本人様への確認を取り許可を頂いている為二次配布を禁止し、個人利用にのみ使用可能とします。

[元ソースの掲載ページ](https://github.com/ansonfoong/ReactionPy)
[ご本人様の解説動画](https://www.youtube.com/watch?v=MgCJG8kkq50)

#概要
ここ最近DiscordのBot開発にのめり込んでいるのですが、よく大手のサーバーに入っているbotで**リアクションを付けると役職が付与される**アレ、どうすれば上手く実現できるのかなぁ…と悩みつつcommand.commandsのやつを調べたりなんやらと色々探してみたはいいものの、**まっっっっっっったくと言って良いほどしっくりくるpython用の日本語の記事が無かった**んですよね。なので私が調べ見つけた海外の開発者**Anson**様

元記事を表示

pyenvのpythonでtkinterを使用する方法

## Issue

pyenvでinstallしたpythonで`python -m tkinter`や`import tkinter`をしたときに以下のエラーが発生。
ネット上の記事を見ると、`brew install tcl-tk`で治るなど書いてあったが、上手くいかなかった。
しかし、どうやら最近リリースされたpyenvの`v1.2.14`でtcl-tkとの互換性が修正されたらしく、[GitHubのissue](https://github.com/pyenv/pyenv/issues/1375)で解決策も書いてあったのでシェアします。

“`python
Traceback (most recent call last):
File “/Users/ken/.pyenv/versions/3.7.4/lib/python3.7/runpy.py”, line 183, in _run_module_as_ma
in
mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
File “/U

元記事を表示

Pythonで[Errno 2] No such file or directoryがでた時の対処

*間違っていたこと一覧*

相対パスの書き方をプログラムのファイルの位置が起点だと思っていた。
  ↓
カレントディレクトリが起点
[Python 3\.x \- pythonでの相対パスの設定|teratail](https://teratail.com/questions/119421)

Windowsでのパスの書き方を`temp/file.txt`だと思っていた。
  ↓
`temp\file.txt` 上の書き方はUNIX

*対処法*

絶対パスで参照した。

*感想*

パスの書き方違うのまじで衝撃

元記事を表示

いまさらPython3(その他)

# はじめに
自分用のPython3として基本的な制御構造とデータ構造以外の文法を記載する。正確性より実用性を重視する。
(Javaや.NETを主に使ってる自分が、Pythonを使うためのページです)

制御構造は[いまさらPython3(制御構造編)](https://qiita.com/hos20r1/items/acd331c36403b96b5a1b)
データ構造は[いまさらPython3(データ構造編)](https://qiita.com/hos20r1/items/3326bdf6b4d2d75e33c0)

# モジュール
## import文
“`
(1) import モジュール名 as 別名
(2) from モジュール名 import 定義名 as 別名, 定義名 as 別名
 ※定義名は、クラス名、関数名、変数名など
“`
“`py:importの例
import math as m
from math import pi

print( m.pi )
print( pi )
“`
(1)は、モジュールをインポートし、モジュール名.定義名で利用する。

元記事を表示

c++のテンプレートを使用して型を意識しない

# はじめに
Cに軽く触れた程度の知識でC++のライブラリの使い方を調べていたときに、テンプレートが良く出てきていました。その時は、テンプレートのことを良くわからず読み飛ばしていましたが改めて調べたところ、なかなか有用なものでしたので調べた内容を簡単なサンプルと使える例とともにまとめました。

# 環境
– ubuntu:18.04.2
– g++:7.4.0

# テンプレート
## テンプレートの説明
テンプレートについて、調べたときはテンプレートという名前に混乱させられました。いったんテンプレートという言葉の意味を忘れて読んでください。
テンプレートとは簡単に言うと型を意識しない関数(orクラス)になります。C++は変数や戻り値に型を指定するのが普通ですが、すべての型に適した関数(orクラス)を作成するのは無駄で無理なのでテンプレートという機能ですべての型を受け取る関数(orクラス)を作成できます。

## テンプレートの形式
### 引数に適用するときの例
テンプレートを適用するのは簡単です。関数(orクラス)の上に“`template “`

元記事を表示

BorutaでlightGBM, xgboostを使えるようにしてみた

BorutaでlightGBMとxgboostが動かなかったので一部書き換えて動くようにしてみました。

普通にsklearn estimatorでやる方法は以下を見てください
https://qiita.com/studio_haneya/items/bdb25b19baaf43d867d7

# 試行環境

Windows10
python 3.6.7
scikit-learn 0.21.3
lightgbm 2.3.0
xgboost 0.90

# 変更したところ

Borutaはfeature_importance_が取得できるsklearn estimatorで動くようになっているので、RandomForestやGradientBoostingを使うことができますが、lightGBMやxgboostのsklearn wrapperはsklearnっぽいですがちょこちょこ違う為にそのままでは動かないようです。そこで、BorutaPyクラスを継承して一部書き換えて動くようにしてみました。

lightGBMをBorutaで使おうとしたときに問題になる相違点は以下の2つで

元記事を表示

もう二度とpipenv shellを忘れないようにするためのshellscript

# はじめに

###*pipenv、使ってますか?*

pipenvはそのプロジェクトのパッケージ管理や仮想環境の構築を簡単に自動で行ってくれるツールです。
pyenvとの連携もしてくれる、かなり便利なやつです。

####でもこんな経験ありませんか?
> 実行したらエラー起きたからpipで入れたけど仮想環境入ってないだけだったわ…  

自分はめっちゃやります。

# そこで!
####Pipfileがあるところにcdしたらpipenv shellするshellscriptを書きました

# 作った

“`bash:~/.bash_autopipenv
#!/bin/bash

function ispipenv()
{
if [ “$PIPENV_ACTIVE” == 1 ]; then
:
else
if [ -e “Pipfile” ]; then
pipenv shell
fi
fi
}

function pipenv_cd()
{
\cd $@ && ispipenv
}

alias cd=’pipenv_cd’
“`

元記事を表示

int(num)とmath.trunc(num)とnp.trunc(num)

## `bresenham`を使いたい
座標値がまとまったものを`bresenham.bresenham`に突っ込みたかったが`bresenham`はint型しか受け付けていなかった。

> truncateは0方向に丸める関数

## 検証
計測は[GoogleColab](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)を使用
前準備として読み込みとかをする

“`python:base.py
import math
import numpy as np

foo = [0.0001* i for i in range(1000000)]
“`

### `int(num)`
“`python
%%timeit
for i in foo:
tmp = int(i)
=>10 loops, best of 3: 105 ms per loop

type(tmp)
=>int
“`

### `math.trunc(num)`

“`python
%%timeit
for i i

元記事を表示

【Python】None チェックと分岐でキレ散らかしたので nullutil.py 作った

**永遠に`None`チェックと条件分岐を書く作業**から逃げたいと思ったことはないだろうか? 私はある。

Python における`None`は他の言語における`null`や`nil`に相当すると思われるのだが、Python には他の言語にはよくある **Null を取り回しやすくなる演算子やメソッドがない**。

しょうがないのでそれらの中でも**定番の 3 種**を、**関数**を書いて代用していくことにした。

“`python:nullutil.py
# Null Coalesce
# This means:
# lhs ?? rhs
def qq(lhs, rhs):
return lhs if lhs is not None else rhs

# Safty Access
# This means:
# instance?.member
# instance?.member(*params)
def q_(instance, member, params=None):
if params is None:
re

元記事を表示

[ゼロから作るDeep Learning]ニューラルネットワークに逆伝播処理を実装するのに必要なレイヤについて

#はじめに
この記事は**ゼロから作るディープラーニング 6章誤差逆伝播法**を自分なりに理解して分かりやすくアウトプットしたものです。
文系の自分でも理解することが出来たので、気持ちを楽にして読んでいただけたら幸いです。
また、本書を学習する際に参考にしていただけたらもっと嬉しいです。

#レイヤとは
ニューラルネットワークに逆伝播処理を実装するには、ニューロンをレイヤというものにする必要があります。
レイヤとは、順伝播処理と逆伝播処理の両方が実装されたニューロンと考えるのが一番簡単です。

ニューラルネットワークを実装するのに必要なレイヤは、**Sigmoidレイヤ・Reluレイヤ・Affineレイヤ・出力層から損失関数までのレイヤ**が最低限です。

レイヤはクラスとして実装して部品のようにすることで、ニューラルネットワークを様々な構造に組み替える時に運用しやすくなります。

では、今回は前回の記事にも出てきた足し算のニューロンと掛け算のニューロンをレイヤ化してみることにします。

#加算レイヤ

“`python
class AddLayer:# 加算レイヤ
def

元記事を表示

最短で試すCython

# はじめに
本記事は、Cythonと呼ばれるPythonのライブラリを、試しに動かすために必要な最低限の内容を記した備忘録です。

「Pythonの処理を速くする方法としてCythonてのがあるらしいけど、ググれどググれど何だか良くわからねェ!」といった方の助けに少しでもなれば幸いです。

※ 環境:
 OS:Ubuntu18.04
 Python:3.6.8
 Cython:0.29.13

# 概要
誤解を恐れずに言うと

Cython = **Pythonにめちゃくちゃよく似た**ほぼほぼ新しい言語

です。

もちろん他にもいろいろな使い方がありますが、最初に試すだけであればこの程度の認識で十分です。

# Cythonを使うときの流れ
1.Cython語で処理を書く
2.ソースコードをC言語に翻訳(トランスパイル)する
3.トランスパイルされたC言語のソースコードをビルドしてライブラリ化する

# Hello World的な奴

流れを抑えたら早速試してみます。

動かすまでに最低限必要なものは2つ。

1.hoge.pyx(Cythonで書いたソースコード)

“`

元記事を表示

Raspberry Pi wi-fi切り替え ショートカットキー

#ラズパイをVNCで操作しているけど,ネットワークが変わるとそれができない…
というかなりマイナー(?)な悩みを抱えていたので自己流の解決策を提示します.

*注意* configファイルの編集はリスクを伴うかも?知れないので自己責任で

LANケーブルでつなげればええやんというつっこみもなしで
どうしてもラズパイをとあるネットワークにつなげるている必要があったので
##環境
●Raspberry Pi 3 model B
●ネットワークA(dns server,default gateway : 192.168.1.1/24)
●ネットワークB(dns server,default gateway : 192.168.52.1/24)

##やること
●configファイル用意
●pythonでコマンド実行
●ショートカットキー作成

###configファイル編集

####wpa_supplicant
ネットワークの設定のやつです

“`
$sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
“`
エディタは何でもいい

元記事を表示

pybind11でPythonからC++にリストを参照渡しする

# はじめに
PythonとC++を連携させることができる`pybind11`では、
STLコンテナを介することでPythonからC++の関数にリストを渡すことができます。

[外部リンク:pybind11を使ってPythonからC++コードを実行する方法](https://myenigma.hatenablog.com/entry/2016/12/17/075812#STL%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%81%AE%E3%82%84%E3%82%8A%E5%8F%96%E3%82%8A)

しかしこれは値渡しになるため、更新したリストをPythonで使うにはC++側で返り値にする必要があります。

一方、既存のC++資産を使う場合にはできるだけC++のソースコードに手を加えたくないので、
新たに返り値を設定したり更新のところを書き換えたりしたくないことがあります。

そこで、リストではなくNumpyを介することで、
用途は限定的ではありますが参照渡しができるので共有します。

基本的には以下のリンクで解説されている`m

元記事を表示

GPUの使用状況確認

最近研究でGPUを使用することが多いのでそれらの使用状況を確認できる便利なコマンドメモです。
自分用の備忘録ではありますが、適宜追加等の更新してきます。

– GPUの使用状況の確認

“`
$nvidia-smi
“`

– GPUを使用しているプロセスの確認

“`
$nvidia-smi -q -d PIDS
“`

– pytorchでGPUの確認

“` python
import tourch
print(torch.cuda.is_available())

torch.cuda.get_device_name(0)
“`

– tensorflowでGPUの確認

“` python
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
“`

元記事を表示

uwsgi の uwsgi プロトコル通信を uwsgi-tools で確認する

メモ。

以下のよう uwsgi を実行すると uwsgi プロトコルによる通信が出来る。

[Putting behind a full webserver](https://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html)

“`bash
$uwsgi –socket 127.0.0.1:3031 –wsgi-file foobar.py –master –processes 4 –threads 2 –stats 127.0.0.1:9191
“`

ただし、上記のような場合、クライアントからの接続テストが面倒そうだなと感じていた。

ググると以下の Github issue を発見

[ how to test uwsgi unix socket ? #1443 ](https://github.com/unbit/uwsgi/issues/1443)

上記に書いてあるように uwsgi-tools というのが便利みたいなので使ってみた。

[andreif/uwsgi-tools](https:

元記事を表示

OpenCVのTrackerを使って動画内のオブジェクトをトラッキングする

映像内に現れるマーカーやその他のオブジェクトを基準に何か処理をしたい場合は、物体検知・マーカー検知の手法を使ってフレーム内の物体の検出・位置を特定するという手順を踏むことが多いと思いますが、物体追跡(トラッキング)を併用すると物体検知・マーカー検知に失敗したフレームにおけるマーカー・オブジェクトの検出を補間できる場合があります。

OpenCVのTrackerを使って、動画内のオブジェクトのトラッキングをやってみます。

環境構築の手間がないので、Google Colaboratory上で実験します。

# Google Driveのマウント
解析対象の動画をGoogle Driveから読み込みたいので、Google Driveをマウントします。

“`python
from google.colab import drive
drive.mount(“/content/gdrive”)
“`

# FPSの指定
“`python
fps = 5
“`

FPSを高く設定した方が基本的には追跡の精度が上がりますが、処理時間も増えてしまうのでまずは5FPSで解析を行います。あとで

元記事を表示

Windows10 64bit環境で最近の単語を含む文章を形態素解析する

# 問題
Windows10 64bit環境のPythonでMeCabを使おうとする際、
主に下記の5点で躓いて画面を割りたい気持ちでいっぱいになったので体系的にまとめました。

問題1:pip installのみではMeCabが入らない
問題2:インストールできたものの形態素解析がうまくいかない
問題3:NEologd辞書を用いることで固有表現の抽出が上手くいくらしいが
    Windows環境ではインストールが難しい
問題4:インストールしようとするとPATHを通すのだがPATHの概念がよくわからない
問題5:DOSコマンドが通らない

# 目次
①64bit向けの非公式版の.exeからMeCabをインストール
②PythonでMeCabを扱うためのライブラリをインストール
③形態素解析をより精緻に行うために
 NEologdをgitからクローンしてコマンドプロンプトからコンパイル
※参考記事は各項にて記載

# ①64bit向けの非公式版の.exeからMeCabをインストール
参考:https://qiita.com/wanko5296/items/eeb7865ee71a7b

元記事を表示

OTHERカテゴリの最新記事