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

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

Vue.jsでのasync,awaitの書き方

#1. 目的
Vue.jsでのasyc,awaitの書き方をメモする。

#2. 概要

フロントエンド(Webサイト)に整数Nを入力し、バックエンドで計算(N+3)をする。
また、計算結果をフロントエンドに表示すると同時に計算結果をcsvファイルに書き込む

![149.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150223/830fb7e2-0d9c-f0ff-71a2-18be6fc51c63.jpeg)

#3. アーキテクチャー

アーキテクチャーは、下記図のとおりです。フロントエンドで数値を入力し、「取得」ボタンをクリックし、バックエンドにデータを送ります。フロントエンドから受け取った数値に3を加算する計算をpythonで実施し、その計算結果をcsvファイルに書き込みを行うと同時にフロントエンドに返し表示します。

ただし
「➆計算結果をcsvファイルに書き込む」が完了した後に「⑧終了処理を返す」を行います。
![150.JPG](https://qiita-image-store.

元記事を表示

ポケットwifi sim設定 自動ツール

## 目的
複数台のpocket wifiを自動で設定する必要があるため、pocket wifiのapn設定を自動化する。
動作としてはqr読んでwifi設定取得、wifi自動接続、seleniumでwifiのlocalホストにはいりapn書き換え。

## 結果
下記は4倍速での実際の動画(途中で10秒ほど画面止まるのはwifi切り替え待ちのsleep処理時間)
![output2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199662/e1f4ffa3-ac6d-3648-cd13-7f56fec070d2.gif)

## 環境
mac catalina
soracom sim plan-k
fs030w (auとdocomo回線のsimが動くポケットwifiのためfs030wを使用。(Teltonikaは自分の環境だと不安定だったので、お勧めしないです。))

## 事前準備
### qr読み込み
下記を参考にzbarのinstall
[Python3で複数のQRコードを読み取る](h

元記事を表示

Selenium利用におけるSessionNotCreatedExceptionの対処方法

## エラー本文
“`
SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 88
Current browser version is 87.0.4280.88 with binary path C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
“`

## 発生環境
– Windows10
– Anaconda (Selenium等のパッケージをcondaからインストール)
– Jupyter notebook

## 原因
Chromeブラウザのバージョンとpython-chromedriver-binaryのバージョンが不一致

## 対処
1. Chromeブラウザ > ヘルプ > Google Chromeについて からバージョン確認
2. 以下のコマンドでブラウザバージョンと同一バージョンのpython-chromedri

元記事を表示

Python – Cythonでプログラムを高速化

#はじめに
PythonはC言語などと違い、コンパイルせずにすぐプログラムを実行できるインタプリタ型のプログラミング言語です
とても便利ですが、インタプリタ型のプログラミング言語は、C言語などのコンパイルが必要な言語と比べて実行速度が劣っています
今回は、PythonをC言語のファイルに変換することができるCythonというライブラリをご紹介します

#プログラムの準備
プログラムの準備は簡単で、ただプログラムファイルの拡張子を.pyから.pyxに変えるだけです

“`python:loop.py
for i in range(1000):
print(i)
“`

↓↓↓

“`cython:loop.pyx
for i in range(1000):
print(i)
“`

とすればファイルの準備は完了です

#VisualStudio2019の準備
以下のリンクをクリックしてVisualSudio2019をダウンロードし、インストールしてください
[ここをクリックしてVisualStudio2019のダウンロードページへ移動](https://visua

元記事を表示

アンサンブル学習まとめ!!(実装あり)

# はじめに

機械学習で非常に重要となってくるアンサンブル学習。
簡単に内容を理解及び復習できる記事を書きます。

# アンサンブル学習とは

複数のモデル(学習器)を融合させて、1つの学習モデルを作成する手法。

1つのモデルだけで学習させるよりも、複数のモデルを使って組み合わせた方が予測精度が良くなるはず!という考え方から生まれた手法。

## 予測精度が良くなるとは?

予測値と実際値の誤差を最小にすること。

実際に予測精度を確かめるうえで、重要となってくるキーワードが「バイアス」と「バリアンス」!

### バイアス
○実際値と予測値との誤差の平均。
・値が小さければ予測精度高い
・値が大きければ予測精度低い

### バリアンス
○予測値がどれくらい散らばっているのかを示す値。
・値が小さければ予測値がまとまっている
(過学習している可能性が高い)
・値が大きければ予測値が散らばっている

バイアスとバリアンスはトレードオフの関係!!

・予測精度が高ければ、過学習になりやすく
・予測値が散らばっていれば、予測精度が低い

この二つのバランスを調整して行くことが重要とな

元記事を表示

Raspberry Pi 4でUbuntuデスクトップを動かして遊ぶ

# はじめに

Raspberry Piはこれまでにも少し触ったことがありましたが,Raspberry Pi 4になってRAMが4GBになり,さらに秋ころにUbuntuデスクトップが正式対応されたと聞いたので,単純に動かして遊んでみたときのメモです.

# やってみたこと

基本はRaspberry Pi 4上でUbuntuデスクトップ(GNOME 3)を動かしてみただけです.あとはリモート操作できるようにや,ちょっとしたプログラミング環境を作ってみました.

* Ubuntu Desktop 20.10をインストールして動かす
* ChromiumをインストールしてYouTubeを見てみる
* リモート接続環境のセットアップ(SSH,VNC)
* Visual Studio Codeをインストールして動かす
* PythonでHello world
* GoでHello world(Windowsでクロスコンパイルしてラズパイで動かす)

# 準備したもの

* Raspberry Pi 4 4GB(スターターキット)
* タッチディスプレイ 7インチ
* キーボード・マウス
* ス

元記事を表示

他の.exeを起動して、コンソール出力をテキストファイルに保存する試行

subprocessで起動したプロセスのコンソール出力を取得・保存する。

以下のコードで、test.exeのコンソール出力をテキストファイルに保存可能。test.batも(.batファイルも)コンソール出力をテキストファイルに保存可能。

**`subprocess.Popen(.., stdout=.., stderr=..)`を使用、`stderr=subprocess.PIPE`によりコンソール出力を当プロセスに流し、`proc.communicate()`で、起動したプロセスの終了を待機。(`proc.communicate()`がないと、終了を待たずに続行、並列処理となる)**

“`Python:trial.py

# -*- coding: utf-8 -*-

# subprocessで起動したプロセスのコンソール出力を取得・保存するには
# ref: https://www.it-swarm-ja.tech/ja/python/subprocesscall%EF%BC%88%EF%BC%89%E3%81%AE%E5%87%BA%E5%8A%9B%E3%82%92%

元記事を表示

`chromedriver’ executable may have wrong permissions. を解決する

先日seleniumをlambdaで運用しよとしたときに遭遇しました。

permissionなんて設定したっけな?と思いましたどうやらosに対応していないバージョンを使用するとこのエラーが出てきてしまうようです。

### 解決法

lambdaのOSはLinuxなのでLinuxに対応したバージョンをインストールしてからレイヤーにアップロードする。

こちらに関してはLinux環境を用意する必要があるのでaws cloud9を使用すると簡単です。

[>>Lambdaでseleniumを使ってスクレイピング](https://qiita.com/ichihara-development/items/5e61c3424b3176bc6096)

元記事を表示

‘lambda_function’: No module named ‘selenium’ が出るとき

## seleniumのPATHが間違っている
pythonの場合lambdaレイヤーは
・python
・python/lib/python3.x/site-packages

配下を自動で読み込むため、アップロードしたseleniumzipファイルが上記のディレクトリ構造になっているかをもう一度確認してみてください。

## zipファイルを解凍していない

外部からダウンロードしてきたseleiumをzipのままで保存し、親ディレクトリごと圧縮してしまうとlambdaでseleniumを使用することができません。

![スクリーンショット (146).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536448/46f56de0-83cc-22f3-7ebf-ac8c815b696e.png)

一度解凍してから再びフォルダを圧縮しアップロードしなおすと上手くいきます。

元記事を表示

matplotlibで棒グラフと折れ線グラフを重ねて表示する

## はじめに

 Pythonの**matplotlib**ライブラリの**pyplot**を使って同一キャンパス上に棒グラフと折れ線グラフを描く方法の覚え書きです。あくまでも個人の忘備録レベルの覚書です。勘違いやおかしな記述があるかもしれませんが、ご容赦くださいますようお願いいたします。

## ゴール

 以下のようなグラフを描画します。

[データ登録費用推移.ipynb @ Google Colaboratory](https://colab.research.google.com/drive/11q-aGtjXaUNBJnQDzrBvEEpNIhLUt0QC?usp=sharing)

 実行ボタン(▶️)を押すと以下のようなグラフが描画されます。データは架空のものですので内容は適当です?

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/124810/dc389aca-2303-769c-2691-986a5100c87b.png)

## 日本語表示するために

 pipで

元記事を表示

ローカルスコープとグローバルスコープ

ローカルスコープとグローバルスコープの違いを理解し、
各変数を扱う場合の注意点を整理する。

#ローカルスコープとグローバルスコープとは?
ローカルスコープは定義された関数内を指し、その中で利用できる変数をローカル変数と言う。

“`
def sample():
a = 1 ※ローカルスコープ
“`
グローバルスコープは対象のpythonファイル内を指しており、どの関数からでも参照が可能です。

“`
b = 2 ※グローバルスコープ
def sample():
a = 2
“`

#グローバルスコープの扱い方
グローバルスコープはローカルスコープ内からでも扱える

“`
local = 100
def global():
a = 100
print(local + a)
“`

元記事を表示

importの使い方

“`opposite_ai.py
import math
# 反対向けのAI
class Oppai:
#処理
pass
“`

“`hent_ai.py
#つかむ動作のAI
class Hentai:
#処理
pass

“`

“`app.json.py
import hent_ai
from hent_ai import Hentai #Hentai()でインスタンス作成できる
import opposite_ai as oppai #oppaiでopposite_aiが使える。
import opposite_ai.math #oppai.mathと書かなくてよくなる。
try:
setai=__import__(“set_ai”)#詳細設定。有無が

except Exception as e:
print(e)

class classproperty(property):
pass

class PropertyMeta(type):

def __new__(cls, name, bases, n

元記事を表示

WIndows 10 WSL 2(Linux 用 Windows サブシステム) + LinuxでのPython環境作成手順

# 概要

Windows 10における、WSL 2でのLinuxをインストール~Python仮想環境構築までを記載しています。

|モジュール|役割|
|—|—|
|Python|(2)で説明
.pyを実行するインタプリタ|
|pyenv|(3,4)で説明
Mac, LinuxでPythonインタプリタを切り替える(複数バージョンを共存)ために使用する |
|venv|(4)で説明
Pythonの仮想環境を作成する(仮想環境は基本的にはプロジェクトごとに作成する)。pyenvでインストールされたpython3.3以降では既定で使用可能|

(4)で説明していますが、`pyenv`でインタプリタを切り替え、`venv`で仮想環境を作成・切替を行うことで、プロジェクトごとに適した環境で開発を行います。

# 環境

– Windows 10 Pro バージョン 2004以降、または1903,1909ビルド18362以上
– Linux内のPythonのバージョン3.3以上(venv, pyenvの関係)

# (1) WSL2環境構築

## (1-1) [Wi

元記事を表示

動的計画法をPythonで学ぼう(A~E)

# Educational DP Contest / DP まとめコンテストを通じて動的計画法を学ぶ(A~E)

#A – Frog 1
N 個の足場があります。 足場には 1,2,…,Nと番号が振られています。 各 i (1≤i≤N) について足場iの高さはhiです。
最初、足場1にカエルがいます。 カエルは次の行動を何回か繰り返し、足場 Nまで辿り着こうとしています。
足場 iにいるとき、足場 i+1または i+2へジャンプする。 このとき、ジャンプ先の足場を jとすると、コスト |hi−hj|を支払う。
カエルが足場Nに辿り着くまでに支払うコストの総和の最小値を求めてください。

“`perl:Frog1.py
N = 6
h = [30 10 60 10 60 50]

def frog1(N, h):
dp = [float(‘inf’)]*(N)
dp[0]=0
dp[1]=abs(h[0]-h[1])
if N>=2:
for i in range(2,N):
dp[i] = min(dp[i-1]+abs(h[i]-h[i-1]

元記事を表示

ラビットチャレンジ 深層学習 2Day

# Section1 勾配消失問題
誤差逆伝播法で下位層に進んでいくにつれて
勾配がどんどん緩やかになっていく
そのため、勾配降下法による、更新では下位層のパラメータは
ほとんど変わらず訓練は最適地に収束しなくなる

## 活性化関数
### シグモイド関数
大きな値では出力が微小なため、勾配消失問題を引き起こす可能性がある
シグモイド関数の微分の最大値は0.25でありこれをかけていくことになるので勾配が0に近いていくことがわかる
### ReLU
勾配消失問題の回避に関してよい成果をもたらしている
ある閾値を超えたらそのままの値を返す関数なので勾配消失が起きにくい
スパース化という観点でもメリットがある
精度の面でも担保されている

## 初期値の設定方法
### Xavierの初期値を設定する際の活性化関数 
– relu
– シグモイド
– 双曲線正接関数

重みの要素を前の層のノード数の平方根で除算した値

“`python
self.params[‘W1’] = np.random.randn(input_size, hidden_size) / nq.sqrt(inp

元記事を表示

自動要約API「summpy」をpython3で動かしました。

最近、音声をテキスト変換したものを要約してデータとして取込む必要があり、検討の為ににリクルートテクノロジーズが公開している文章の自動要約APIをpython3で動かしました。もとがpython2.7で動作するものなので、python3で動かせればなと考えていると方も多いかと思い共有します。
[リクルートテクノロジーズのGitHub](https://github.com/recruit-tech/summpy)

今回アルゴリズムはlexrankのみ変換、Webでのアクセスのみ確認しています。注釈は削ってあります。
##環境

OS windows10Home
python Winpython64-3.7.7.1.exe
Mecab MeCab 0.996 64bit version https://github.com/i

【AWS Lambda】でseleniumを使ってスクレイピングをサーバーレスで行う~前編~

## Lambda
awsが提供するサーバーレスにコードを実行できるコンピューティングサービスです。
リクエスト数い応じてスケーリングする機能もあり環境構築や負荷分散、メンテナンスの必要もありません。

料金は実行した時間に応じて支払うため、コードを実行していない時間帯は課金されません。つまりサーバーの維持費がかからないということになります。
これはお得。

## まずは必要なライブラリをインストール

Lambdaはサーバーを使わないため、直接接続して必要なライブラリをインストールすることができません。代わりにあらかじめインストールしたLinux環境に適応したライブラリをLambdaにアップロードすることで使用できるようになります。

今回使用するSeleniumも同じ方法でアップロードしていきます。

まずはどこかの環境にSeleniumとWebdriverをインストールする必要があり

・DockerでPython環境を立ち上げてインストールする
・Cloud9を使用する

という方法があるのですが、今回はより素早く容易にできるCloud9を採用させていただいてます。

##

マストドンBot作成時のメモ 通常Toot(ローカル)編

# まえがき

Pythonを使ったMastodon のキャラクターBotを製作する(なう)際の個人用メモです。
Botのやることは主に、

– 1時間ごとに通常Tootをする
– リプライされたら返信する(何分おきか分からないけど早ければ早い方がいい/自分用だし他の方が利用する予定はないので…)

とりあえず以上であります。

本当に、やったことを一から十まで多分ほぼ全部書いています!

ローカルではWindows10、コマンドプロンプトを利用しています。
自動で常に動かしたいので、どこかの鯖にupしてcronで動かします!
(という予定だった)

『Python』のつづりが覚えられないほどPythonを使ったことがない人間が書いています。
TwitterのときはPHPを使っていたので本当にPythonは…Pythonは…。
私はとても頭の悪いことを書いているのかもしれませんが、
この記事について頭が悪いということが分かる方なら
こんなとこ見なくても自分で分かるんだろうことしか書いていません。

でも非効率的なことをしていたり、こうした方がいいとかありましたら
よければコメントなどお

Google Colabでplotlyの “`TypeError: imshow() got an unexpected keyword argument ‘labels’“` エラー

# Google Colabで“`TypeError: imshow() got an unexpected keyword argument ‘labels’“`エラー

## TL;DR
“`
# plotlyをアップグレードして, Google Colabのランタイムを再起動(出荷状態に戻すとバージョンがまた元に戻るので注意)
!pip install –upgrade plotly
“`

## 問題
– Google Colabで, plotlyでヒートマップなどを表示しようとして, 軸ラベルを付与しようとしたら “`TypeError: imshow() got an unexpected keyword argument ‘labels’“` と怒られてしまった.

“`
data=[[1, 25, 30, 50, 1], [20, 1, 60, 80, 30], [30, 60, 1, 5, 20]]
fig = px.imshow(data,
labels=dict(x=”Day of Week”, y=”Time of

pyenv-virtualenvによる仮想環境の構築/Python(インストール、環境設定、パッケージ)Mac環境

こんにちは、かをるです。

今回は、pyenv-virtualenvの構築についてご紹介していきます!

パッケージのインストール方法については前回の記事をご覧ください。
【Python パッケージ(ライブラリ)のpipコマンドを使ったインストール方法】

同じバージョンで別の環境構築をしたい場合に、virtualenvというプラグインを使用しPyhonの仮想環境を構築することができます。

ブログに投稿しました。

https://kaworublog.com/pyenv-virtualenv/