Python関連のことを調べてみた2021年01月26日

Python関連のことを調べてみた2021年01月26日

BERTで行う文章分類 PART3 (前処理編)

この章は以下のページを参考に記述されました。
https://qiita.com/Hironsan/items/2466fe0f344115aff177

# 1.文章のクリーニング処理
テキストのクリーニングでは、テキスト内に含まれるノイズを除去します。よくあるノイズとして、JavaScriptのコードやHTMLタグが挙げられます。これらのノイズを除去することで、ノイズがタスクの結果に及ぼす悪影響を抑えることができます。

以下にPythonを用いた前処理のコードを記述します。

“`Python
def clean_text(text):
replaced_text = text.lower()
replaced_text = re.sub(r'[【】]’, ‘ ‘, replaced_text) # 【】の除去
replaced_text = re.sub(r'[()()]’, ‘ ‘, replaced_text) # ()の除去
replaced_text = re.sub(r'[[]\[\]]’, ‘ ‘, replac

元記事を表示

大きな画像をOpenCV (cv2)で使う

# 0. エラー内容
`0.1M`×`0.1M`の解像度(ピクセル)を有する画像をOpenCVで読み込ませようとすると次のようなエラーが発生した。

“` bash
cv2.error: OpenCV(4.4.0) ../modules/imgcodecs/src/loadsave.cpp:77: error: (-215:Assertion failed) pixels <= CV_IO_MAX_IMAGE_PIXELS in function 'validateInputImageSize' ``` どうやら、初期設定だと大きな画像は読み込めないようになっているようである。 Limitationは`CV_IO_MAX_IMAGE_PIXELS`で設定されているようである。 このLimitationはソースコードのDEFINEからでも、OSの環境変数からでも設定できるようである。 # 1. 解決方法 取り合えず、環境変数が楽そうなので、こちらで設定する。 ``` $ export OPENCV_IO_MAX_IMAGE_PIXELS=1099511627776 ``` 気を

元記事を表示

PythonでリアルタイムMIDIシンセサイザーを作る

※工業大学生です.文章力に期待をしてはいけません.
※納得するものが完成するまでシリーズにする予定です(完成するかはわからない).

##概要
音声信号処理の勉強をしていて,何か練習としてoutputをしてみたいなと思い立ちましたので,シンセサイザー(らしきもの)をいちから作ってみようと思います.今回は,とりあえずどんな仕組みでも良いので鍵盤を叩いて音を出すところまで完成させます.
(なので,音声信号処理までは厳密には到達しない…)

##今回の目標
MIDIキーボードの入力を受け付けて,リアルタイム(記述済みのMIDIコードから音を生成するのではなく,キーボードを弾いた瞬間に音を出す)でその入力に対応した音を出力します.音は単音のみ(モノフォニック)で,音の強さ等の操作は受け付けません.エフェクトも使用しません.

## 設計
音を出す仕組みの部分と,MIDI入力,音声出力に分けて考えます.
### 音源
シンセサイザー(アナログシンセサイザー,またはそれをモデリングしたもの)の大まかなしくみは,以下の図のようになっています.
![synth.png](https://qiita-

元記事を表示

repl.itでdiscordのbotを作る

参考にした記事:[Discord Pythonボットを24時間起動します。](“https://qiita.com/Mamiyanonoka/items/69c967cd3af9bb057a88”)

こんにちは。Discordのbotをrepl.itを使用して稼働させてみましょう。
今回はDiscordやrepl.itのアカウント作成についての説明は省略しますのでご了承ください。
使用するものはiPad **だけ**です。
#トークンを取得する
https://discord.com/deveropers にアクセスし、横のメニューから「bot」を選択します。まだbotを作成してない場合は他の記事を参考にしていただけるとありがたいです。
そしてTokenの下にある(copy)ボタンを押します。このトークンが漏れるとbotを乗っ取られる危険があるため、 **絶対に他の人に漏らしてはいけません!**
#コードを書く
![E4D696A7-736F-4125-9D2A-17BF1A374B72.jpeg](https://qiita-image-store.s3.ap-northeast-

元記事を表示

Seleniumを使い株価データを自動取得

# Seleniumを使い株価データを自動取得

## はじめに

取得先は[YahooファイナンスVIP倶楽部](https://info.finance.yahoo.co.jp/vip/pr/)(月額1980円)の特典時系列データダウンロードを使う

**seleniumをインストール**

“`
$ pip install selenium
“`

**webdriverをダウンロード**

[最新バージョン](https://chromedriver.chromium.org/downloads)をダウンロード
chromeも最新にアップデートする

**Yahooログインをパスワードに変更**

プロフィールの[ログインとセキュリティ](https://accounts.yahoo.co.jp/profile?current=security)よりログイン方法をパスワードに変更
※ パスワードログインは推奨されていないので注意してくださいね

**ディレクリ構成**

“`HTML
yahoo-finance-download/
|– download
|

元記事を表示

【Windows】VS Code + Anaconda で Python の開発環境を用意する

## はじめに

[【世界で 18 万人が受講】実践 Python データサイエンス](https://www.udemy.com/course/python-jp/)の導入部分で、開発環境として [Anaconda](https://www.anaconda.com/products/individual) + [Jupyter Notebook](https://jupyter.org/)を推薦している。
しかし、慣れ親しんだ VSCode で開発を行いたいため、VSCode + Anaconda で開発環境を整えた。

古い記事だと[Anaconda Navigator から VSCode アプリをインストールしている](https://docs.anaconda.com/anaconda/user-guide/tasks/integration/vscode/)が、2021/01 時点の Anaconda では VSCode の Python Extension から Anaconda を指定できるため、必要なさそう。

尚、以下を参考にした。

– [Using Python

元記事を表示

BERTで行う文章分類 PART2(データ編)

今回の文章分類で用いるデータは以下からダウンロードできます。
https://drive.google.com/drive/folders/1-m2pJzWDlZTVIZsl0OBj7UwVs0liOMi_?usp=sharing

元記事を表示

Python Classのまとめ

#0. はじめに
 ここではクラスの定義、クラスメソッドとインスタンスメソッド、継承とオーバーライドをまとめる。

#1. クラスの定義

“`
class Class1:
“`

#2. クラス変数とクラスメソッド

“`
count = 0 #クラス変数の定義

@classmethod #クラスメソッドの定義
def Classmethod(cls):
cls.count += 1
return cls.count
“`

#3. インスタンスメソッド

“`
def __init__(self, i): #インスタンスメソッドの定義
self.count = 0
self.i = i

def Instancemethod(self):
self.count += self.i
return self.count
“`

#4. 継承

“`
class Class2(Class1):

def __init__(self, i):
super().__init__(i) #スー

元記事を表示

MacOS Catalina環境でのPython3インストール・アップデート手順メモ

MacOSのターミナルでpythonコマンドを実行するとデフォルトでインストールされている古いpythonが呼び出される。
最新のPythonを利用したい場合のインストール、アップデート手順を示す。

# パッケージからのインストール
## 手順1 Pythonのインストール
[Python公式](https://www.python.org/downloads/mac-osx/)からインストールするpythonのパッケージをダウンロードし、インストールする。
パッケージからインストールした場合のインストール先パスは`/Library/Frameworks/Python.framework/Version/<バージョン>/bin`となる。

## 手順2 .zshrcの編集
MacOS Catalinaからデフォルトのログインシェルが`bash`から`zsh`に変更されたため、`.zshrc`にpython3のパスを追加する。

“`zsh
# vi等のエディタで.zshrcを開き、編集する
$ vi ~/.zshrc
“`

“`zsh:~/.zshrc
# PYTHON_HO

元記事を表示

Pythonで学ぶアルゴリズム 第21弾:並べ替え(クイックソート)

# #Pythonで学ぶアルゴリズム< クイックソート >

##はじめに
基本的なアルゴリズムをPythonで実装し,アルゴリズムの理解を深める.
その第21弾としてクイックソートを扱う.

##クイックソート
・**クイックソート**:リストから任意にデータを選択し,これを基準として小さい要素と大きい要素に
$\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $分割し,それぞれのリストでまた同じような処理を繰り返してソートする方法.
・**ピボット(pivot)**:クイックソートで基準となるデータ.選び方は様々であるが,ここではリストの
$\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $先頭としている.

以上のことを踏まえて,次にクイックソートの一連の流れ図を示す.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/951300/1

元記事を表示

Windowsアプリケーションの自動化-Python編②-

Pythonで`win32gui`と、`win32con`を使ってWindowsアプリケーションのメニューバーを操作する
今回はフリーソフトの「サクラエディタ」を操作してみる

参考URL
– [サクラエディタ](https://sakura-editor.github.io/)
– [Pythonで外部プログラムのメニューバーを操作する(WM_COMMAND)](http://bttb.s1.valueserver.jp/wordpress/blog/2017/10/05/python%e3%81%a7%e5%a4%96%e9%83%a8%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%a0%e3%81%ae%e3%83%a1%e3%83%8b%e3%83%a5%e3%83%bc%e3%83%90%e3%83%bc%e3%82%92%e6%93%8d%e4%bd%9c%e3%81%99%e3%82%8bwm_command/)
– [Section6.3 メニューバー 応用編](http://www-higashi.ist.osaka-u.

元記事を表示

Matplotlib時系列プロット

## 時系列データのプロット

実世界のデータの多くは時系列で整理されています。可視化は時系列データのパターンを見出すための優れた方法です。 Matplotlibを使用した時系列データのプロットを試みます。

サンプルデータとして以下を使用します。date列は時系列、value01とvalue02は時系列で変化する計測値列です。

“`csv
date,value01,value02
2021-01-01,1,100
2021-01-02,3,500
2021-01-03,2,200
2021-01-04,4,600
2021-01-05,3,300
2021-01-06,5,700
2021-01-07,4,400
2021-01-08,6,800
2021-01-09,5,500
2021-01-10,7,900
2021-01-11,6,600
2021-01-12,8,1000
2021-01-13,7,700
2021-01-14,9,1100
2021-01-15,8,800
2021-01-16,10,1200
“`

まずはサンプルデータをインポートします。(日付を

元記事を表示

Unscented Transformation(アンセンテッド変換,U変換):非線形変換後の確率変数の推定

# はじめに
Unscented Transformation(アンセンテッド変換,U変換)は,Unscented Kalman Filterの中で出てくるけど,U変換単体での説明がなくて困ってるので今の理解をまとめました.
間違ってる所など教えていただけるととてもありがたいです.

# Unscented Transformationの概要
U変換は,標準正規分布に従う確率変数$x$の平均$\bar{x}$と分散共分散行列$P_x$が既知であるとき,$x$の非線形変換$y=f(x)$で変換される確率変数$y$の$\bar{y}$と$P_y$を推定する方法である.

まず,この場合,モンテカロ的に

“`math
\bar{y}\simeq\frac{1}{N}\sum_{i=1}^Nf(x_i)
“`

“`math
P_y \simeq \frac{1}{N}\sum_{i=1}^N(f(x_i)-\bar{y})(f(x_i)-\bar{y})^T
“`

のように計算することが思いつくが,精度をよく計算するにはNを大きくする必要があり,実用上問題がある.

線形近似をす

元記事を表示

【RaspberryPi】起動確認用LEDをpython、systemctlを使って制御

#概要
RaspberryPiの起動が完了するとLEDが点灯する機能を追加
※LEDは11ピン(GPIO17)に接続

#実行環境
MCU:Raspberry Pi Zero W
OS:Raspberry Pi OS Buster

#回路
回路図省略
電流制限抵抗は明るさを抑えるために2.2kΩを使用

#実装
##pythonプログラム
LEDの点灯制御をするためのpythonプログラム

“`terminal
$ sudo nano /home/pi/PowerLED.py
“`

最終行にsleep()を入れるとpythonプログラムが終了してもLEDが点灯しっぱなしになる
綺麗な方法ではないが、バックグラウンドで動くプログラムを節約したいので暫定的にこれで実施

“`python:PowerLED.py
#!/usr/bin/python3

import RPi.GPIO as GPIO
import time

LED_PIN = 17

GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT)

GPIO.outpu

元記事を表示

社会人2年目終盤になってやっとQiitaを始めてみる

# 始めるに至った経緯
社会人になって気づけば2年、会社の業務をこなすことにも慣れてきて自分のスキルアップをしたくなってきたので備忘録としてQiitaを始めてみる

## Qiitaを使う目的
備忘録(今のところ)

## 専門
1. 電気電子
2. プログラミング(←仕事のメイン)
3. 機構設計

## 今までやってきたこと
– 電子工作
– 電子回路設計
– Python
– JavaScript
– C++

## やりたいこと
– 筋電取得による筋トレの負荷の取得
– 自分の本棚を管理するアプリ(LINEなどと連携できるとなおよし)
– 家の中のリモコンを携帯から操作可能にする
– 他にもいろいろ

## 目標
1週間に1回は記事を書く

元記事を表示

データ前処理編~衛星画像データと深層学習による湖水のクロロフィル濃度推定~

#概要
衛星画像データと深層学習による湖水のクロロフィル濃度推定の研究を行っております。
衛星画像データを取得し、衛星画像データから該当する水質拠点の緯度経度を指定して抽出したピクセル値(DN値)や、雲の情報を元に表を作成しました。これからまたディープニューラルネットに学習させるために、データの前処理・成形したいと思います。その時役に立ったPythonプログラミングモジュールやメソッド等について今回は記述していきたいと思います。

#元になるデータ表
こんな感じのデータを作成しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/650007/a6b22834-4033-14c6-4ffa-ff36a357410d.png)
左から、衛星画像データ取得日、水質拠点、水質拠点の緯度経度、衛星画像データのバンドタイプ、抽出したピクセル値(DN値)、cloud 雲情報(0 or 1 雲だったら1、じゃなかったら0)、terrian(陸かどうか),
cloudconfidence(雲である確

元記事を表示

クロージャはlogを計算する関数を作ることで理解できる

“`python:対数計算をする関数
>>> import math
>>> def log(底): # エンクロージャ。関数「log底」を返す関数
… def log底(真数): # クロージャ。返される関数
… return math.log(真数, 底) # エンクロージャ内の変数「底」を、クロージャ内で利用する。
… return log底

>>> log(2)(8)
3.0
“`

# `log(2)(8) == 3` の解説
## 1. `log(2)`の呼び出し
まず`log(2)`が評価された時点で、エンクロージャ`log(底)`が呼び出される。
### 1-1. `def log底(真数): return math.log(真数, 2)`が実行される
エンクロージャ内で、クロージャの定義が実行される。この時、クロージャ内の変数はエンクロージャ内と共通であるため、
`底==2`が成立する。

### 1-2. `return log底`が実行される

元記事を表示

複数のファイル名の頭を指定した文字数分だけ一括削除する

すんごい大量のファイルの、名前を、頭から指定した文字数だけ削除したい

##たいしたことない特徴
・大量のファイルが入っている親のフォルダを.py内で指定
・ターミナルで実行
・何ファイルあっても大丈夫

##注意!!必ず守ってください
変更したいファイルでやる前に、どうでもいいファイルでテストしてみるか、ファイルを複製しておいてくださいね。消しちゃいけない文字まで消した時にもし後戻りできないと悲惨なのと、責任は負えません。

##ファイルの場所
“’/Users/hogehoge/test_folder/’“
この「folder」の下に以下のような名前の大量のファイルがあると仮定します

消したい文字fileA.txt
消したい文字fileB.txt
消したい文字fileC.txt
消したい文字fileD.txt
(以下大量)

**期待する結果**
fileA.txt
fileB.txt
fileC.txt
fileD.txt
(以下大量)

##変えるところ
以下のコードの
“path1“と、“new_name“の中身です

##コード

“`test.py
im

元記事を表示

__init__.py を作るのが地味に面倒なのでショートカット作った

小ネタです。

Python でパッケージ切るのに毎回 `__init__.py` を touch するわけですが、 `__init__.py` って微妙にタイプしづらくて面倒くさくないですか?面倒くさいですよね…?まれに `touch __init.py` ってタイプしてしまって「ああ、もう」みたいな気持ちになった人、私だけじゃないはず。。。

ということでシェルから叩けるようにしてみました。ソースはこちら。

https://gist.github.com/hassaku63/956daea19d7542dbd82246ffdeaac2d1

“`zsh

#
# 引用: https://gist.github.com/hassaku63/956daea19d7542dbd82246ffdeaac2d1
#

function make-pypkg-dir () {
curdir=$(pwd);
created_dir=$(dirname $1)/$(basename $1);
mkdir $1 \
&& touch ${crea

元記事を表示

BERTで行う文章分類 PART1(環境構築編)

# 実行環境
OS:macOS 10.15.7
開発環境:Nova(Python対応テキストエディタならOK)
パッケージのinstall:Anaconda 4.9.2
Python:3.8.3

# 必要なパッケージ
Pytorchやnltkなどはインストールが必要なので、pipやcondaなどで適宜インストールしてください。
**ここでは、以下のライブラリがインストールされているとして話を進めていきます。**
“`
import torch
import torch.utils.data
import torch.nn as nn
import numpy as np
import random
import torch.nn.functional as F
from sklearn.model_selection import train_test_split
import pickle
import math
import transformers
from transformers import AutoTokenizer, AutoModel, AutoModelForM

元記事を表示

OTHERカテゴリの最新記事