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

Python関連のことを調べてみた2021年08月03日
目次

Pythonでのclassmethodの使い方

# なぜclassmethod, staticmethodを使うのか
可読性があがる

# classmethod
まず,下記のような給料に係数をかけるようなクラスを考えます

“`python:classmethod.py
class Employee:

raise_amt = 1.04

def __init__(self, pay):
self.pay = pay
self.apply_raise()

def apply_raise(self):
self.pay = int(self.pay * self.raise_amt)

if __name__ == ‘__main__’:
salary = Employee(100)
print(salary.pay)
# 104
“`

次に,クラス変数raise_amtにアクセスします

“`python:クラス変数を変更
if __name__ == ‘__main__’:
Employee.raise_amt = 1.05

元記事を表示

Twitterのフリートが廃止されたので普通のツイートをそれっぽくする

#フリートとは?
>Fleetは、Twitterの活用や、Twitterでのコミュニケーションをこれまでにない方法ですぐに行える機能を提供します。Fleetで共有した内容は、24時間が経過すると表示されなくなるため、ふとした思いつきやうつろう気持ちを共有できます。一時的な個人的考えをフォロワーと共有でき、他の一般ユーザーからの反応が伝わることもありません。Fleetの作成者は、自分のFleetをクリックし、下部に表示される既読テキストをタップすると、ツイートを非公開にしているアカウントを含め、誰が自分のFleetを閲覧したかがわかります。

– 24時間が経過すると表示されなくなる
– つまり、24時間に1回まとめて削除すればいい

##フリートの欠点
– コメント機能が無く、DMで通知される
– 絵文字を送っても、DMで通知される
– 普通のツイートと同じく、FavとRTとリプライ機能はやはり欲しい

##ツイートをフリート化するには?
– 「残すツイート」と「消えるツイート」を明確化する
– 残すツイートの条件
– Favがある
– RTがある
– リプライ

元記事を表示

CAPTCHA画像の文字をOCRエンジンで読み取ることができるか

## 目的
– OCRを勉強中、下記のようなCAPTCHA画像の文字を読み取ることができるか気になったので試してみました

![captcha.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226953/897609fe-898e-04ed-bb38-e1e7190d30bd.png)

## 環境
– Python 3.8
– PyOCR
– Tesseract
※下記の記事を参考に導入しました。ありがとうございました。

https://qiita.com/nabechi6011/items/3a367ca94dbd208efcc7

## コード

“`python
from PIL import Image
import sys
import pyocr
import pyocr.builders

# OCR群を取得
tools = pyocr.get_available_tools()
# OCRがなければエラー
if len(tools) == 0:
print(“No OC

元記事を表示

wxPython + openpyxl で Excelににほんの少し似たソフトを作ってみる

#何をつくるか
Excelに似たソフトといっても、セルの書式とかシートとかはどうでもよく、ただ文字列の読書きができるような
本当にいらないソフトです。
数値でも文字列と認識しちゃうし、セルのサイズとか結合とかもどうでもよっくなっています。

#ソースコード

wxPython・openpyxlをまだインストールしていない場合はインストールしてください。

“`Python:excel.py
import sys
import wx
import wx.lib.scrolledpanel as scrolled
import openpyxl

class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,”Excel(大嘘)”)
panel = scrolled.ScrolledPanel(self,-1,size=wx.Size(self.GetSize()[0],self.GetSize()[1]))
panel.SetupScroll

元記事を表示

Databricksのエンタープライズ向け機能によるMLflowの拡張

[How to Share and Control ML Model Access with MLflow Model Registry](https://databricks.com/blog/2020/04/15/databricks-extends-mlflow-model-registry-with-enterprise-features.html)の翻訳です。

> **注意**
この記事は2020/4に執筆されたものであるため、一部最新の情報で更新しています。

DatabricksのMLflow[モデルレジストリ](https://databricks.com/product/mlflow-model-registry)におけるエンタープライズレベルの新機能を発表できることを嬉しく思います。今やモデルレジストリは、Databricks[レイクハウスプラットフォーム](https://databricks.com/jp/product/data-lakehouse)をお使いの皆様においては、デフォルトで有効化されます。

この記事では、モデル管理における集中管理ハブとしての

元記事を表示

独学プログラマーのまとめ その6

#初めに
やり遂げる。

###7章 ループ

– 始さえすれば、8割は成功したようなものだ。
– 残り2割が果てし無い…
– forループ
– **forループ**は、イテラブルを繰り返し処理するために使われ、**反復処理**と言う。1ループごとにイテラブルから渡される要素を、コード群で使用したり、操作したりする。

forループ構文は以下のように定義される。

“`
for [変数名] in [イテラブル]
[コードブロック]
“`
[変数名]には自由に名前を指定して[イテラブル]の要素を割り当てるために使える。

“`python

name = “Ted”
for character in name:
print(character)
“`
> T
> e
> d

変数名にcharacterを自由に指定し、イテラブルなnameの先頭から新しい要素として一文字ごと出力している。

同様にforループでリスト、タプルの処理をさせると各要素を出力させる。

“`python

shows = [“GOT”, “Narcos”,

元記事を表示

[wave.py] Pythonで手っ取り早く音を生成してwav書き出しする

# 使うもの
Python組み込みモジュールの[wave.py](https://docs.python.org/ja/3/library/wave.html)を使います。

# 前提
24bit などを扱うと面倒(*1)なので、ここでは 16bit int, 44.1kHz の音源を作ります。

# 実装
“`python:main.py
import wave
import numpy as np
from random import uniform
from struct import pack

# 保存するwaveファイルのファイル名を指定
filename = ‘./output.wav’

# チャンネル数
n_ch = 2 # 1: mono, 2: stereo

# サンプル幅(ビット深度を8で割った値)
s_width = 2 # 2: 16bit, 3: 24bit, 4: 32bit

# サンプリング周波数
s_rate = 44100 # Hz

# 音源の長さ(ここでは3秒とする)
t_length = 3 # sec

# サンプル数
n_sam

元記事を表示

初心者がデータサイエンス100本ノック(構造化データ加工編)をやってみた part1

 この記事はデータサイエンスを勉強しながら、データサイエンス協会が提供する__データサイエンス100本ノック(構造化データ加工編)__を解く過程を自分用にまとめたものです。

+ head()
+ rename()
+ query()
+ 論理演算子(AND, OR, NOT)
+ 比較演算子(==, !=)
+ 文字列の先頭一致 str.startswith()
+ 文字列の末尾一致 str.endswith()
+ 文字列の部分一致 str.contains()
+ 正規表現を

# P-001 `head()`
“`python:p001.py
df_receipt.head(10)
“`

 `head()`:データフレームの先頭の行を返す
 (引数に整数を与えるとその分の行を表示する。デフォルトは5行。)
 `tail()`:データフレームの末尾の行を返す。

# P-002
“`python:p002.py
df_receipt[[“sales_ymd”, “customer_id”, “product_cd”, “amount”]].head(10)
“`

 デ

元記事を表示

ランダムフォレストに確信度機能を追加

# 概要

imbalanced-learn の BalancedRandomForestClassifierを拡張し、推定データに対する1の確信度を取得するメソッドを作成しました。
その際にBalancedRandomForestClassifierのご先祖様クラスであるsklearnのForestClassifierのクラス確率の取得メソッド`predict_proba`のソースを参考にしました。理解したことを忘れそうなのでメモ付コードを残します。

※ この記事では「1の確信度」という言葉を、ランダムフォレスト内のすべての決定木のうちクラス1と推定した決定木が占める割合、という意味合いで使っています。
(ランダムフォレストの推定クラスが1以外のケースもそのクラスの確信度ではなく上記の通りの割合を取得します。誤解の無さそうな良い表現が見つからず「1の確信度」と表現しています)

### 補足

[imbalanced-learn の BalancedRandomForestClassifier](https://imbalanced-learn.org/stable/refere

元記事を表示

plotly で日付が密になる場合の回避方法

# plotly で日付が密になるのを回避する方法

## plotlyを使っていて日付が密になってしまう例

英語でplotlyの日付が密になる現象の説明は下記にある。

https://community.plotly.com/t/how-to-make-the-messy-date-ticks-organized/7477

理由としては、plotly は、

– 文字列 YYYY-MM-DD のフォーマット(例 ‘2015-01-01’) しか受け付けない。
– Datetime オブジェクト

の2つの型しか日付として受け付けてくれないのである。
その説明は明快なのですが、回避方法はこの記事を読んでもパッとわからない(私だけかもしれませんが..特にpandasでデータを保持した場合)。

## 回避方法 pandas 編

例えば、2021/08/02-10:43:33、という文字列でデータがpandasの df[‘time’] 保存されている場合、

“` python:
df[‘time’] = df[‘time’].str.replace(“-“,” “).str.r

元記事を表示

TabNetを使う(回帰編)

テーブルデータの機械学習モデルとして注目されている TabNet なるものを、私も使ってみようとしました。まずは「回帰編」としてお届けします。

# TabNet インストール

“`python
!pip install git+https://github.com/dreamquark-ai/tabnet
“`

# 「ワインの品質」データ読み込み

データは UC Irvine Machine Learning Repository から取得したものを少し改変しました。

* 赤ワイン https://raw.githubusercontent.com/chemo-wakate/tutorial-6th/master/beginner/data/winequality-red.txt

* 白ワイン https://raw.githubusercontent.com/chemo-wakate/tutorial-6th/master/

元記事を表示

Databrick REST APIによりWorkspaceオブジェクト(ノートブック・Experiments・フォルダ)の存在チェックを行う方法

## 概要
Databrick REST APIによりWorkspaceオブジェクト(ノートブック・Experiments・フォルダ)の存在チェックを行う方法を共有します。dbutilsの機能にはないため、REST APIで実施する必要があります。

詳細は下記のGithub pagesのページをご確認ください。

https://manabian-.github.io/databricks_tecks_for_qiita/#check_ws_obj_by_rest_api/check_ws_obj_by_rest_api.html

コードを実行したい方は、下記のdbcファイルを取り込んでください。

“`URL
https://github.com/manabian-/databricks_tecks_for_qiita/blob/main/tecks/check_ws_obj_by_rest_api/dbc/check_ws_obj_by_rest_api.dbc
“`

## 実行環境
databricks runtime: 8.3.x-cpu-ml-scala2.12
P

元記事を表示

朝飯前に学べる!便利なPythonのヒント100選【後編】

本記事は、Fatos Morina氏による「[100 Helpful Python Tips You Can Learn Before Finishing Your Morning Coffee](https://towardsdatascience.com/100-helpful-python-tips-you-can-learn-before-finishing-your-morning-coffee-eb9c39e68958)」(2021年5月10日公開)の和訳を、著者の許可を得て掲載しているものです。

#朝飯前に学べる!便利なPythonのヒント100選【後編】

![](https://miro.medium.com/max/1400/0*ujQYo_bH_XCyvfF4)
Photo by [Jexo](https://unsplash.com/@jexo?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=refer

元記事を表示

mediapipeを含んだファイルをexe化するときに発生するエラーの原因とその対策

#エラーの発生

Google Mediapipeを使うプロジェクトをEXE化するとき、下記のようなエラーが発生します。
EXE化するときに、pyinstaller, py2exeのどれを使っても、同様なエラーが発生します。

“`
#実行
pyinstaller –onefile GUI-mediapipe-app.py

#エラー
Traceback (most recent call last):
File “GUI-mediapipe-app.py”, line 26, in
File “mediapipe/python/solutions/selfie_segmentation.py”, line 54, in __init__
File “mediapipe/python/solution_base.py”, line 229, in __init__
FileNotFoundError: The path does not exist.
[36342] Failed to execute script pose_edge

“`

#エ

元記事を表示

非エンジニアにseleniumでスクレイピングをやってもらうまでの軌跡(準備編)

#はじめに
非エンジニアの方(プログラム一切勉強したことない&GUIしか触ったことないようなレベル)にpythonでスクレイピングが出来るように色々教えた流れをまとめた個人的備忘録です。今後他の人に教える際にも参考にできるかと思いここに残しておきます。
#スクレイピングって何?
情報を取得して加工することです。今回はWEBページから情報を取得します。自動でWEBページからほしい情報をまとめられるようになったら便利ですよね。それを作ります。
#VSCodeとPythonのインストール
【インストールしてほしいもの】
・Visual Studio Code(VSCode)
・Python
以下のサイトを参考にVSCodeとPythonをインストールしましょう。上から順にサイト通りに進めていきましょう。ページ下部まで終わったらnextページに飛んで同様に進めてください。【次のステップ】というページが出てきたらインストールはおしまいです。
参考URL https://www.python.jp/python_vscode/windows/setup/config_explorer.html

元記事を表示

DjangoでWebサービスの枠を作るまで

## Djangoプロジェクトの構造

Djangoプロジェクトは、プロジェクトという大枠があり、その中にアプリケーションがあるという構造です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260307/020cf611-f9b7-a941-4f49-af2feaeddf26.png)

プロジェクトは自分が作成したWebサイトを例えると、Appはブログ、Wiki、フォームなどがあります。
以下はmysiteというDjangoプロジェクトを作成し、そのなかにblogというAppを作成してみます。

## プロジェクトの作成

以下のコマンドを実行します。

“`shell
django-admin startproject mysite
“`

生成されたプロジェクト構造を見てみましょう。

“`text
mysite/
manage.py
mysite/
__init__.py
asgi.py
wsgi.py
s

元記事を表示

Linux(Mint)でのOpenCVセットアップ

今回の記事は頻繁に環境をリセットします。
そのため、やや備忘録的な側面が強いです。
今回はLinux Mint でのOpenCVとPythonの環境構築に関しての記事です。

今回の構築した環境も示しておきます。
lenovo thinkpad x240
cpu : intel core i5 4200u
mem : 4gb
ssd : 128gb

早速ここからが本題ですね
まずターミナルを起動します。

まずはPythonの環境構築を行います。

Python環境の設定


Pythoneのパッケージ管理システムをインストールします。

“`
sudo apt install python3-pip
“`
これを行うことでPython3用のパッケージ管理システムpipのインストールが完了します。

OpenCVのインストール


ここでは先程インストールしたpipを用いてOpenCVをインストールを行います。

“`
sudo pip3 install opencv-python
sudo pip3 install opencv-contrib

元記事を表示

Databrick REST APIによりDatabricksトークンを作成後にシークレットとして登録する方法

## 概要
Databrick REST APIによりDatabricksトークンを作成後にシークレットとして登録する方法を共有します。
Databricksノートブックにて下記の流れを自動で実施することで、トークンを安全に利用する方法を提示します。

1. Databricksトークンを手動で作成して変数にセット
1. REST APIによりDatabricksトークンを発行
1. DatabricksトークンをDatabricksシークレットとして登録
1. 不要なDatabricksトークンを削除

詳細は下記のGithub pagesのページをご確認ください。

https://manabian-.github.io/databricks_tecks_for_qiita/#create_sercrets_by_rest_api/create_sercrets_by_rest_api.html

コードを実行したい方は、下記のdbcファイルを取り込んでください。

“`URL
https://github.com/manabian-/databricks_tecks_for_q

元記事を表示

カーネル密度推定(KDE: Kernel Density Estimation)をpython (numpy)で実装・整理してみる

##KDEとは?
 ”カーネル密度推定(カーネルみつどすいてい、英: kernel density estimation)は、統計学において、確率変数の確率密度関数を推定するノンパラメトリック手法のひとつ(Wikipedia)”とされており、機械学習などで様々に応用されています。KDEはscipyやseaborn、pandasに実装されている為、これらを使えば簡単にKDEをプロットすることができますが、実際のところ何をしてるのかイマイチよく分かっていないブラックボックスとして使ってしまっていました。本記事では、KDEを一から実装しつつ、パラメータの意味などについても整理してみたいと思います。

##KDEの定義
 $\{x_1,x_2,…,x_n\}$を独立かつ同一な分布に従うサンプルとして、KDEではこれらのサンプルの従う分布の確率密度関数fの近似$\hat{f_h(x)}$を以下の式によって推定します。

“`math
\hat{f_h(x)}=\frac{1}{nh}\sum_{i=1}^{n}K(\frac{x-x_i}{h})
“`
 ここで$h$はバンド幅、$K(v

元記事を表示

ParlAIで英会話を楽しむ

# 1、概要
 Facebook AI Researchは、2021年7月下旬に会話の内容を知識として蓄えつつ、同時にネット検索をして知識をアップデートする機能を備えたAIチャットボット「BlenderBot 2.0」をオープンソースで公開したことを発表しました。([リンクはこちら](https://ai.facebook.com/blog/blender-bot-2-an-open-source-chatbot-that-builds-long-term-memory-and-searches-the-internet/)) 残念ながら、私の環境ではまだ「BlenderBot 2.0」は動作していませんが、前身である「BlenderBot 1.0」を利用したAIチャットボットを作成してみましたので、紹介します。 作成したものは、Browser上でキーボード入力あるいは音声入力で英会話(音声出力も有り)を楽しむことが出来ます。

# 2、動作環境
 本チャットボットは、「Python Script」と「HTML」、「Javascript」で作られており、動作環境は次の通りです。

元記事を表示

OTHERカテゴリの最新記事