Python3関連のことを調べてみた2020年10月03日

Python3関連のことを調べてみた2020年10月03日

Tensorflow2.3のtf.kerasで再現性を確保する

# はじめに
TensorFlowでは以下の記事のようにSeedを固定することで再現性を保つ方法がありますが,TensorFlow2.3のGPUの環境ではseedの固定だけだと毎回同じ結果になりませんでした.
(Tensorflow2.1か2.0のときは確かにseedの固定だけで同じ結果が出てたと思うんですが…)

– [[TensorFlow 2.x (tf.keras)] 乱数シードを固定して再現性を向上](https://qiita.com/bee2/items/08eab7a899c9ff56eb35)
– [kerasで再現性の担保(2020/09/22現在)](https://qiita.com/RIRO/items/29e5d7ffe464c0a4a630)
– [tensorflow(tf-keras)でGPU計算の再現性を確保する方法のメモ](https://qiita.com/Rin-P/items/acacbb6bd93d88d1ca1b)
– [tensorflowで同じコードなのに結果が異なる。再現性のある機械学習がしたい。](https://qiita.

元記事を表示

【Pythonメモ】2次元配列(リストのリスト)の作成で注意すること

##0.問題

__1行目に行(n1)と列(n2)が、2行目以降にn2列の.または#がn1行入力されます。
2行目以降のn1行の文字列を2次元配列に格納してください。__

##1.入力データ

例として以下の入力データを与える

“`
3 5
#####
.#.#.
#.#.#
“`

###2.コード例

“`python

#作成する配列の行と列をスペース区切りで入力
in1 = input()
arr1=in1.split()

#横に上記で指定したarr1[1]列分の文字列をarr1[0]行文読み込む
in2=[]
for i in range(int(arr1[0])):
tmp1=input()
in2.append(tmp1)

#以下の二次元配列(arr1[0]行arr1[1]列)を作成
arr2=[[”] * int(arr1[1]) for i in range(int(arr1[0]))]
arr3=[[”]*int(arr1[1])]*int(arr1[0])

#上記で定義した2次元配列を表示
print(arr

元記事を表示

Atom上からPythonを実行するとカレントディレクトリが移動してしまう問題の対処法

Atomのパッケージの一つ、atom-runnerを使うとAtom上でPythonが実行できる。ただ、実行時のカレントディレクトリがプロジェクトフォルダになってしまうので、開いているフォルダによってカレントディレクトリが変わってしまう。この挙動は単純に相対パスを利用したいときなどは少々面倒だ。

## 対策法
カレントディレクトリをファイルが存在するディレクトリに揃える。

“`python
import sys
import os
os.chdir(os.path.dirname(sys.argv[0]))
“`

他ファイルから読み込まれる可能性のない、書き捨てのスクリプトならこれで十分かなと。

元記事を表示

Python appendとmapの速度を比較

社内向けに書いたものを転載します

## 目的
自分が最初に書いていたコード(appendを使ったもの)とレビューで指摘をいただいたコード(mapを使ったもの)の処理速度とメモリ使用量の差分がどんなものかを確認します

## 検証用コード
二つの配列をマージして出力するプログラムを用意します。 (元々はfieldsとDBから取ってきたrowsをマージして、jsonにして出力するプログラムでした)

計測に用いたツールは以下です。

– memory_profiler: 行単位でメモリの増減を計測できる。現在の使用量と増分なども確認できる
– line_profiler: 行単位で処理速度を計測できる。

### 検証1
“`python:
from memory_profiler import profile
from line_profiler import LineProfiler

@profile(precision=8)
def main():
a = [1, 2, 3]
b = [‘1’, ‘2’, ‘3’]

results = []

元記事を表示

【EDA超基礎】plotlyで動的な可視化をする【python3,table,bar,box,violin,joy】

python==3.8
plotly==4.10.0

#headを表示

いつもの

“`python
import plotly.express as px
df = px.data.tips()
df.head()
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/32c16330-8316-eb4e-0816-851da75ac7e8.png)

##素朴にdataframeを渡す

“`python
import plotly.figure_factory as ff
fig = ff.create_table(df.head())#only df ok
fig.show()
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/0aeb650b-f3b4-91f5-02f0-50508c57c91e.png)

#

元記事を表示

PythonでDiscordのAPIを操作する方法(bot登録編)

Discordでbotを使ってユーザーにDMやチャンネルへ投稿する必要があったので方法を記載します。
今回はdisocrd.pyを使わず書いていこうとおもいます。
## Discordの管理者権限が自分にあるか確認する。

ない場合は、管理者の権限を付与してもらう
or
最後に表示されるURLを管理者に教えて追加してもらう必要あり。

## botの登録

### Discordの開発者ページに移動する
https://discord.com/developers/applications

### NewApplicationをクリックする
![Group 9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/270620/d3c712a6-9c0e-1680-d3f6-34994565a8ad.png)

### CREATE AN APPLICATION画面で任意の名前を入力し、CREATEを押す。
![1601620912.png](https://qiita-image-store.s3.ap-

元記事を表示

RとPythonでデータのハッシュ化

この前仕事で匿名化を頼まれかなり苦労した。
そもそもデータをもらう時点で匿名化されていることがほとんどで匿名化されていないデータをもらうことがほとんどなかった。

実際調べてみるとハッシュ化する方法はあるが、データフレーム形式を想定している情報は少なかった。
機密データなのでオフライン環境でやらないといけないかもしれないため、ライブラリは事前にインストールされている想定である。

今回は次回のために反省点も踏まえてコードをまとめていきたい。

# Rでのやり方
ハッシュ化のライブラリはfastdigestを使う。
指定するのはインポートするcsvとハッシュ化したい列名だけ。
対話形式で一つ一つ確認して作業することができる。

“`r:hashing.R
# ライブラリインストール
install.packages(“fastdigest”)
# ライブラリインポート
library(“fastdigest”)

# fastdigestを使ってハッシュ化の自作関数を作る
hash_algo <- function(data){ x <- paste("abc" ,data)

元記事を表示

PyAudio のサンプル

PyAudio のサンプルです。

録音

“`py:record.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# record.py
#
# Oct/02/2020
# ——————————————————————
import sys
import pyaudio
import wave

# ——————————————————————
sys.stderr.write(“*** 開始 ***\n”)
#
CHUNK = 1024
FORMAT = pyaudio.paInt16 # int16型
CHANNELS = 2 # ステレオ
RATE = 44100 # 441.kHz
RECORD_SECONDS = 5 # 5秒録音
WAVE_OUTPUT_FILENAME = sys

元記事を表示

PyCharm Community Edition with Anaconda plugin 2020.1.2 x64が動かなくなった…

ある日、Python書くかぁとPycharmを開くと

“`
java.lang.VerifyError: Expecting a stack map frame~~~~
“`

とまぁ、なんかよくわからんErrorを吐き出しやがりました、
Pycharm先生。

とりあえず以下で検索をかける。

“`
Pycharm java.lang.VerifyError: Expecting a stack map frame
“`
すると以下の記事がヒットしました。

`https://insilico-notebook.com/pycharm-reinstall-error/`

どうやら「pleiades-win」が悪さをしている様子。

上記のディレクトリを開き、再度セットアップすることに。

すると無事にPyCharm先生が戻ってきてくれました。

~~先生って、中には不機嫌になって職員室に引きこもるタイプいますよね…?~~

今回はこれでうまく行ったため、次回同じようなことが起きても大丈夫なようにここにメモします。

使用環境が多少違ったりする場合があるため、
同じ現象

元記事を表示

pythonでソーマキューブを解いてみた

## もくじ

1. はじめに
2. ソーマキューブとは
3. 過去の話
4. 工夫した点 処理速度向上のために
5. 苦労した点 成功しているか判定するために
6. アルゴリズムとソースコードについて
7. 最後に

## はじめに

pythonでソーマキューブを解いてみました。
結果、480通りの立方体の作成パターンを解くことができました。
たかがパズルされどパズル、実装する段階でいろいろな事を学ぶことができました。
その時のノウハウを記事に残しておきます。
この記事が誰かのお役に立てば幸いです。

[ソースコードはこちら](https://gitlab.com/RyutaKaii/somacube)

## ソーマキューブとは

ソーマキューブとは7つの立体パズルを組み合わせて立方体を作る立体パズル。
詳細は下記を参照してください。

[ソーマキューブ](https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%BC%E3%83%9E%E3%82%AD%E3%83%A5%E3%83%BC%E3%83%96)

立方体以外にも様々な立体図形を

元記事を表示

Pythonのif文

### Pythonのif文の例文について
ifの使い方をパターン別に書いてみました。
複数の関数を用いた例も参考にしました。
条件式の構成で、必要な知識不足を載せています。
### 発生している問題・エラー
“`python

for n in range(2,10):
for x in range(2,n):
if n % x == 0:
print(n,’equals’,x,’*’,n//x)
break
else:
print(n,’is a prime number’)
“`
また、数値を指定して条件でのコードが以下の通りです。

### ifと数値の指定パターン
“`python
x = 25 //数値を指定する
if x < 0: print('negative') elif x ==0: print('zero') elif x ==10: print('ten') elif x ==50: print('fifty') elif x

元記事を表示

Python の assert 文

“`assert 条件式, “表示したいエラー文”“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513365/e7d69253-92b6-2d99-5e45-b99d19febc37.png)

#参考リンク

– https://docs.python.org/ja/3/reference/simple_stmts.html#assert

元記事を表示

倍賭け法(マーチンゲール法)で儲かるか中学生とPythonで確かめた

# はじめに

数学が好きな息子がどっかで倍賭け法を知ったらしく、おもしろそうに説明してきた。

マーチンゲール法というやり方で、[Wikipediaによると](https://ja.wikipedia.org/wiki/%E3%83%99%E3%83%83%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0)

>最も古典的かつ有名な手法で、カジノ必勝法として永らく愛されてきた。倍賭け法とも言われる。
まず1単位賭け、負ければその倍の2単位、さらに負ければそのさらに倍の4単位、と賭けていき、一度でも勝てばただちに1単位に戻す、という手法である。試行回数に関係なく、勝った時には1単位を得ることになる。
多くの場合には少額の勝ちであるが、負ける時は大敗する。負けが連続するとたちまちパンク、もしくはテーブルリミットと呼ばれる賭けの上限に達してしまう。

とのことで、うまくは行かないということは知っていた。

とはいえ実際どのような負け方をするのか試したことはなかったので、実際やってみることにした。中

元記事を表示

【割合を可視化】plotlyで動的な可視化をする【python,pie,sunburst,sanky,treemap,fannele,】

![tr.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/d8fbf224-15b0-ba6d-3be0-361d1aff7ad9.gif)

python==3.8
plotly==4.10.0

#pie(円,ドーナッツ)

##基本の円

もはや円グラフについての説明は必要ないだろう

“`python
import plotly.express as px
df = px.data.tips()
fig = px.pie(df, values=’tip’, names=’day’,
title=’pie plot with PX’)
fig.show()
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/75620d1e-a7ac-6752-4a14-27b9e693219d.png)

##graph_objec

元記事を表示

ubuntu,python,cursesでのにゃんこスイーパー

私の記事のminesweeper Qiita:[Python+Cursesで、MineSweeperを制作]
をちょっと変えて、ニャンコスイーパーにしました。
オリジナルのニャンコスイーパーを知らないので、オリジナルとは違うかも知れません。
ゲーム画面の機雷とマークを、猫のキャラクタに変えただけです。
Ubuntuのターミナルで動きます。
ファイルに、`chmod +x nyankosweeper.py`として、実行権を付けて動かして下さい。

`$./nyankosweeper.py [number of cats]`として、動かします。
[number of cats]は、省略できます。省略すると、にゃんこの数は61個となります。

スペースキーで、開き、’z’キーで、マークを付けます。カーソルは矢印キーで動かします。
’q’キーで抜け出せられます。

pyinstallerで、コンパイルできます。コンパイルしなくとも、そもそも速度はあんまり問題な

元記事を表示

標準誤差に誤差伝搬式を適用する

# 標準誤差に誤差伝搬の式を適用

誤差伝搬式と呼ばれるものがあります。下記に誤差伝搬の式の説明を記載します。
尚、COV(a,b)は共分散なのでa,bの誤差が独立ならばゼロになります。

“`math
y(a,b)とするとyの誤差σ_{y}は,aの誤差σ_{a}及びbの誤差σ_{b}を使用して下記となる.

“`

“`math
σ_{y}^2 = (\frac{∂y}{∂a})^2 σ_{a}^2 + (\frac{∂y}{∂b})^2 σ_{b}^2+ 2COV(a,b)\frac{∂y}{∂a}\frac{∂y}{∂b}
“`

今回は標準誤差に誤差伝搬の式を適用できるか考えてみました。

## 標準誤差とは?
そもそも標準誤差とは何か、統計学の教科書的な説明を下記に書きます。

ある標本データから、母分布のパラメータを推定するとします。
(例として、母分布が正規分布であれば、パラメータは平均と標準偏差です。)
ここでさらに、パラメータ推定時に導出される標準誤差を使って、信頼区間というものも考えます。

ちなみに標準誤差の導出方法に関して詳細は割愛しますが、
最尤法

元記事を表示

Pythonでの制約充足問題の第一歩

# TL;DR

– 制約充足問題とはどんなものなのかの基本的な定義などを学びます。
– 実際にごくごくシンプルな問題をPythonでコードを書いて解いてみます。

# 制約充足問題とは

英語だとconstraint satisfaction problem。頭文字を取ってCSPなどとも表記されます。

与えられたいくつかの変数と制約で、その変数が選択できる範囲の中で制約を回避できる条件を見つけるという問題です。

主に以下の3つの要素から成り立っています。

– variables : 与えられた変数・要素
– domains : 各変数が取れる選択肢の範囲
– constraints : 与えられた制約

たとえば、ごく簡単なCSPの例としてAさんとBさんとCさんという3人のMTGを設定したいとします。

Aさんは11時~16時、Bさんは12時から15時、Cさんは14時から18時の時間がスケジュールが空いている状態です。

また、MTGではAさんが偉い立場で、MTGにはAさんは必ず出席しないといけないとします。Aさんが参加していればBさんとCさんは個別に1人ずつMTGに参加しても

元記事を表示

言語処理100本ノック(2020): 49

“`py
“””
## 49. 名詞間の係り受けパスの抽出[Permalink](https://nlp100.github.io/ja/ch05.html#49-名詞間の係り受けパスの抽出)

文中のすべての名詞句のペアを結ぶ最短係り受けパスを抽出せよ.ただし,名詞句ペアの文節番号がiiとjj(i `“で連結して表現する
– 文節iiとjjに含まれる名詞句はそれぞれ,XとYに置換する

また,係り受けパスの形状は,以下の2通りが考えられる.

– 文節iiから構文木の根に至る経路上に文節jjが存在する場合: 文節iiから文節jjのパスを表示
– 上記以外で,文節iiと文節jjから構文木の根に至る経路上で共通の文節kkで交わる場合: 文節iiから文節kkに至る直前のパスと文節jjから文節kkに至る直前までのパス,文節kkの内容を”` | `“で連結して表示

「ジョン・マッカーシーはAIに関する最初の会議で人工知能

元記事を表示

言語処理100本ノック(2020): 48

“`py
“””
## 48. 名詞から根へのパスの抽出[Permalink](https://nlp100.github.io/ja/ch05.html#48-名詞から根へのパスの抽出)

文中のすべての名詞を含む文節に対し,その文節から構文木の根に至るパスを抽出せよ. ただし,構文木上のパスは以下の仕様を満たすものとする.

– 各文節は(表層形の)形態素列で表現する
– パスの開始文節から終了文節に至るまで,各文節の表現を”` -> `“で連結する

「ジョン・マッカーシーはAIに関する最初の会議で人工知能という用語を作り出した。」という例文を考える. CaboChaを係り受け解析に用いた場合,次のような出力が得られると思われる.

ジョンマッカーシーは -> 作り出した
AIに関する -> 最初の -> 会議で -> 作り出した
最初の -> 会議で -> 作り出した
会議で -> 作り出した
人工知能という -> 用語を -> 作り出した
用語を -> 作り出した

KNPを係り受け解析に用いた場合,次のような出力が得られる

元記事を表示

言語処理100本ノック(2020): 47

“`py
“””
## 47. 機能動詞構文のマイニング[Permalink](https://nlp100.github.io/ja/ch05.html#47-機能動詞構文のマイニング)

動詞のヲ格にサ変接続名詞が入っている場合のみに着目したい.46のプログラムを以下の仕様を満たすように改変せよ.

– 「サ変接続名詞+を(助詞)」で構成される文節が動詞に係る場合のみを対象とする
– 述語は「サ変接続名詞+を+動詞の基本形」とし,文節中に複数の動詞があるときは,最左の動詞を用いる
– 述語に係る助詞(文節)が複数あるときは,すべての助詞をスペース区切りで辞書順に並べる
– 述語に係る文節が複数ある場合は,すべての項をスペース区切りで並べる(助詞の並び順と揃えよ)

例えば「また、自らの経験を元に学習を行う強化学習という手法もある。」という文から,以下の出力が得られるはずである.

学習を行う に を 元に 経験を

“””
from collections import defaultdict
from typing import List

def read_fil

元記事を表示

OTHERカテゴリの最新記事