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

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

漢字の文章のふりがなの簡易チェック

# 学習用データでやらかした
学習用データの漢字の文章と,そのふりがなを人力で用意した.ただちょくちょくふりがなが間違っている.または写し間違えている.たまに原文も日本語がおかしく,てにをはが間違ってる.そんなときにふりがなに直すときに善意で直してしまったようだ.

原文:ドレスが塗りたてのペンキがついてるよ。
かな:ドレスがぬりたてのペンキについてるよ。
「が」が「に」に直ってる.

正しいんだけどこれはこれで問題.なのでこれを見つける

## コード
当然だが漢字の文の中のひらがなはふりがなの方にも存在する.なので漢字に存在するひらがなをそれぞれカウントし,ひらがなのときにそれが減ってたらミスとする.

“`python
HIRAGANA: List[str] = [chr(i) for i in range(12353, 12436)]
KATAKANA: List[str] = [chr(i) for i in range(12449, 12532 + 1)]
def check(kanji: str, hurigana: str) -> bool:
flag =

元記事を表示

婚活のマッチング期待値をモンテカルロで計算する

# はじめに
男性と女性10組ずつ、
第3希望まで入力したときにマッチング期待値は何組になるのだろう?

婚活に参加してサンプルを取得したいところですが、
コロナ禍のこのご時世の中そんなことをすると、
データと引き換えに大切なものを失いかねませんので、
仕方なくモンテカルロさんの力をお借りすることに。

# 実装
“`Python:main.py
# -*- coding: utf-8 -*-
import random
import copy

# 相手を選択する。
# scrtmp:immutable、選択リスト
# target:ターゲット数
# sel:希望順位
# weight:重み
def voteTarget(scrtmp,target):
# sel数まで選んだら終わり
if scrtmp.count(1)==sel:
return True
#0~target-1 までをランダム
selectnum=int(random.random() * target)
scrtmp[selectnum]|=1
# 再帰処理
voteTarg

元記事を表示

ReRooting (全方位木DP) をそれとなく理解する

全方位木DPについて、なんとなく理解する記事です。自分の考え方のトレースなので冗長です。

ちゃんとした説明は他の記事を見てください。

全方位木DPについて書いている多くの記事で言われていますが、全方位木DPという表現よりReRootingという表現の方がしっくりきます。一度理解すると分かりますが、ある根を決めたらそこから掘っていきすべての頂点を根としたときの結果を求めていきます。

# 全方位木DPの特徴
– 木DPはある頂点を根としたときの何らかの計算を葉から行いますが、その過程ですべての頂点においてその部分木の計算を行っていることと同じです。
– これを利用して、最初に決めた根から順番にDFSで各頂点を辿り、ある頂点に注目したときその部分木以外の部分木の結果をマージすることで、少ない計算量で各頂点を根とみなした結果を求めていきます
– さらに、この計算の過程では、累積和のように全区間に対する事前計算を行うことで、高速にマージを行います。

# 木DPの説明
これからは以下のような問題を題材にします。

>n個の頂点からなるの無向グラフがあり、木である

元記事を表示

macでjupyter-notebookのブラウザをgoogle chromeに設定する方法

#jupyter notebookの[]や候補予測がmacのsafariでは使いにくいのでchromeに変更

括弧などがsafariでjupyter notebookを開くと使いにくいのでchromeを既定ブラウザにしたいと思いました。
ただ、macだと少し設定が面倒らしいので今回は個人メモとして記述します。

まずは、find.jupyterで.jupyterのファイルを検索

.jupyter/jupyter_notebook_config.py

その中から上のファイルをコピー

open .jupyter/jupyter_notebook_config.py

でファイルを開く。

その中から

#c.NotebookApp.browser = ”を探す。
私のターミナルだと99行にありました。

この#を外して

NotebookApp.browser = ‘/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome %s’

としてjupyterを開くとchromeで開けるよ

PythonのZeroDivisionErrorを使った例外処理

# はじめに
今回は大学のレポートで「Pythonでなにかしらの例外処理を作れ!」とのことだったので簡単なものではありますが、例外処理を作成しました。
例外処理で詰まっている方の参考になれば嬉しいです。

#作成したコード

“`python:try_except.py
#割り算がしたくなるように仕向ける
print(“\n_____________________________________________________\n”)
print(“現在、あなたは割り算がしたい欲求がたまっています。”)
print(“ここで思う存分に、割り算をしてください。”)
print(“数字を入力したらEnterを押して、次の数字を入力してください。”)
print(“\n※ ちなみに、yに「0(ゼロ)」は決して入れてはいけませんよ※”)
print(“_____________________________________________________\n”)

#数字をインプットして出力
print(“x = “,end=””)
x = float(input())
print(“y

wxPythonの基本!

##wxPythonとは
最近、Python3.9がリリースされましたね。

みんなにアプリ作って自慢したいけど、コンソールアプリじゃ、面白くないよね。
じゃあ、GUI開発をしよう!

PythonのGUIライブラリは意外と沢山あります。
例えば、短いコードでできるTkinter、見た目がカッコイイkivy、C言語でも使われるPyQt、それと今回紹介する、wxPython。

wxPythonとは、GUI開発用のライブラリです。

いわなくてもよかったか。

そんなwxPythonを使って今回は、基本的な画面をつくっていきます。
##簡単な画面を作ろう!
以下のコードをご覧下さい。

“`Python:○○.pyw
import wx
app = wx.App()
frame = wx.Frame(None, -1, “タイトル”, size=(300,400))
panel = wx.Panel(frame,-1)
frame.Show(True)
app.MainLoop()
“`
1行目では、wxPythonをインストールしています。
2行目では、アプリケーションを作成して

kaggle の Courses を読む —Intermediate Machine Learning 4

# 精進します
こんにちは! まはらせないきと申します!
突然ですが、もうすぐセンター試験ですね。
浪人している自分よりずっと優秀だった高校の頃の仲間が受験します。
ほんとうに心から応援しています。
彼らを思うと、自分ももっと頑張らないといけないという気持ちが湧いてきます。

1週間に1回は更新したいと思っております。
それでは今回もよろしくお願いします!

___
__Intermediate Machine Learning__ では、機械学習をより深掘っていきます

~Intermediate Machine Learning の流れ~
1. 導入
2. 欠損値
3. カテゴリー変数
4. パイプライン
5. 交差検証
6. XGBoost
7. データの漏洩

今回は __4__ の内容です!

# パイプライン
パイプラインとは、データの前処理、モデルの作成をまとめて実行して、コードをよりシンプルに記述するための手段です。

多くのデータサイエンティストはパイプラインを用いずにコードを書いているそうですが、実際に得られるメリットは大きいそうです。

1. より簡潔なコード
2

【Python】学校の課題はPythonに投げ込もう【効率化】

#はじめに
現在自分は中学3年で、
コロナ禍で暇になった自分はPython,を勉強し始めてから
プログラミングの世界にのめり込んだ。
今も夜通しでJavaや、Elixirの勉強をしているため学校の宿題が…
やっぱり効率化のPythonということで、学校の宿題もなげこもうと思いました。
今年5月から勉強し始めたためコードの効率性、速度の面で違和感を持つかもしれませんが、温かい目で見ていて頂けるとありがたいです。

#作文

**テーマ:あなたにとって美術とは**
これはPythonに書かせるべきだなって思った。
自然言語処理も多少勉強していたため、Mecabを使って分かち書きをして、
複数のモデル文章からマルコフ連鎖によって新しい文章を生産した
Pythonには便利なことにmarkovifyというモジュールが存在し、
分かち書きした文章を処理するのに用いた。

“`python

import MeCab
import markovify
text = ”
parse_text = MeCab.Tagger(‘-Owakati’).parse(text)

text2 = ‘

Rustのインストールと基本的なシンタックス(+Pythonなどとの比較)

– 最近Rustに入門し始めたので、インストールと書き方の基本的なシンタックスについて復習を兼ねてアウトプットしていきます。
– 今までPythonなどを使うことが多かったので、Python等との比較もある程度書いていきます。
– 初心者です。その点はご留意ください。

# 使うもの

– Windows10
– VS Code

# インストール

– [1]. [Install Rust](https://www.rust-lang.org/tools/install/)にアクセスします。
– [2]. Rustのインストールやバージョン管理などを扱うrustupというものを使っていきます。
– [3]. 今回は64-bitのWindowsなので、「DOWNLOAD RUSTUP-INIT.EXE (64-BIT)」を選択します。
– ※macOSやLinuxをお使いの方は別のコマンドなどの対応となるので、リンク先の説明などに合わせてご対応ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazon

競プロ(Python)で優先度キューはheapq?queue.PriorityQueue?どちらを使うべき?

Pythonの優先度付きQueueは以下の2種類があります。速度を比べてみました。

– heapq
– queue.PriorityQueue

# はじめに
一見、

> class queue.PriorityQueue(maxsize=0)
優先順位付きキューのコンストラクタです。maxsize はキューに置くことのできる要素数の上限を設定する整数です。いったんこの大きさに達したら、挿入はキューの要素が消費されるまでブロックされます。もし maxsize が0以下であるならば、キューの大きさは無限です。

ということでqueue.PriorityQueueは名前からしても良さそうです。しかし、queue自身は、

> queue モジュールは、複数プロデューサ-複数コンシューマ(multi-producer, multi-consumer)キューを実装します。これは、複数のスレッドの間で情報を安全に交換しなければならないときのマルチスレッドプログラミングで特に有益です。

ということで、明らかに重い(同期のための動作が入っていそう)です。

# やったこと
– $ 2 \cdo

最低限のターミナルコマンドを使えるようにしてanaconda3をインストールし直す

環境

機種名: MacBook Pro
バージョン: 11.1
OS: macOS Big Sur

前提条件

・python: 3.9.0
・anaconda3

##状況
#####1.問題提起
昨日まで使えていたjupyterlabを今日ターミナルから開こうと
“`$jupyter lab“`
するも結果は
“zsh: command not found: jupyter“
とのこと。要するにzshにPATHが通っていない様子。
このままではjupyter labが起動できない。
#####2.目的地
PATHを通してターミナルからjupyter labを起動できるようにする。

#####3.手段
下記のいずれかを用いてPATHを通す
① anaconda3をインストールし直す
[Anaconda3をしっかりアンインストールするにはどうしたら良いですか?](https://ja.stackoverflow.com/que

pip20.3でプライベートリポジトリにあるパッケージのインストールに失敗した

### 経緯

業務ではGitLab上にPython用パッケージを作成し、pipenvでインストールして使用しています。
ところが2020/12初めにごろに`pipenv install`がエラーとなりました。

“`
[pipenv.exceptions.InstallError]: WARNING: Generating metadata for package mypkg01-1-0-0 produced metadata for project name mypkg01. Fix your #egg=mypkg01-1-0-0 fragments.
[pipenv.exceptions.InstallError]: ERROR: Requested mypkg01 from git+https://github.com/hoge/mypkg01.git@****#egg=mypkg01-1-0-0 (from -r /tmp/pipenv-3IcLPF-requirements/pipenv-qe3mt8-requirement.txt (line 1)) has diffe

PythonからPostgreSQLのテーブルにINSERTする時にハマった話

#問題点
“`python
import psycopg2

# DB接続情報
postgre_user_name = “admin”
postgre_user_password = “password”
postgre_server_port = 5432
postgre_database_name = “hogefuga”

connection = psycopg2.connect(f”host=localhost port={postgre_server_port} dbname={postgre_database_name} user={postgre_user_name} password={postgre_user_password}”)
cur = connection.cursor()

calc_result = json.dumps(calc_result)
contract_id = 1234
distinct_number = 1234

sql_sentence = f”INSERT INTO meterreading_slip(billing_conte

Pythonでdiff

# 対象読者
– 「pythonのネイティブライブラリにdifflibがあるのは知ってるけど使い所は?」って思ってる方
– 「テキストデータの比較バッチを作ろう」と思っていてpythonも選択肢にある方
– 「pythonのネイティブライブラリいっぱいあるけどdifflibは知らないなぁ」何者か知っておくかと思う方

# 序章
みなさんdiffってどうやってとってますか?
1. Linuxのdiffコマンド?
2. WindowsやMacのネイティブアプリ?
3. VSCodeなどのエディタやIDE?

だいたい上記3択かなと。僕の場合エビデンスを残さないでいい小さいファイルでは3、大きなファイルだったりエビデンスを残す場合には1で行います。(余談ですがWSL2のおかげで1がとても行いやすくなりました。)

でも今あなたが何らかのチェックバッチを作成中だとして、プログラム上から大きな文字列同士のdiffの結果を残す必要が出てきたら、この3択の中から対処しますか?

# なんでPythonでdiffを取ろうと思ったの?
序章の通りプログラム上でdiffを取ることになったことによります。も

kabuステーション®API – PUSH APIのティックデータからローソク足データを作成する

# 概要

 [前回](https://qiita.com/shirasublue/items/9038b187ef465019d31c)、ロガーの作成とティックデータの表示を行ったが、保存したティックデータから取引等で一般的なローソク足を作成する。なお、主なコードは[前回コード部2項](https://qiita.com/shirasublue/items/9038b187ef465019d31c#2-%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E8%A1%A8%E7%A4%BA)を流用する。

# 環境

– Ubuntu 20.04.1 LTS
– Python 3.8.5

# 追加パッケージ

– mplfinance

# コード

[前回](https://qiita.com/shirasublue/items/9038b187ef465019d31c#2-%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E8%A1%A8%E7%A4%BA)からの追加・変更部分

## 冒頭

“`python
import mp

Pythonのスタブファイルにdocstringを付与してくれるライブラリを突貫で作った

最近お仕事などでPythonのスタブファイルを利用するケースが出てきました。しかしながらmypyのスタブファイル生成用のコマンドなどはdocstringをスタブファイルに付与してくれないので、付与してくれるライブラリを自分で作ってみたのでその辺りを記事にしておきます。

# そもそもスタブファイルってなに?

拡張子が`.pyi`になる、Pythonの型情報などを記載してロジック部分を省略したファイルです。
スタブファイルを利用することで以下のようなメリットがあります。

– デコレーターなどの都合やサードパーティーのライブラリの都合によって、補完や型チェックがうまく動作しないモジュールに対してそれらの補完やチェック有効にできる。
– 型アノテーションなどがされていないサードパーティーのライブラリなどにも別途スタブファイルを加えることで型情報を追加することができる(チェックなども有効化する)。
– 大きなモジュールなどで、型推定などが多く走ると負荷が高いものなどで、実装部分を省いた最低限のスタブファイルを使うことで負荷を少なく補完やチェックなどの遅延が軽減する。

逆にデメリットとして

kaggle の Courses を読む —Intermediate Machine Learning 3

# こたつが欲しい
こんにちは! まはらせないきと申します!
突然の自分語りで恐縮なのですが、しもやけが辛い!!(´;ω;`)
冷え性の人は多いと聞きますが、しもやけはどうなのでしょう?
周りにこの辛さを分かってくれる人がいないのも辛いです、、
こたつでぬくぬくしながらキーボードを打つ生活を送ってみたいです。

社会人になるまで我慢するしかありませんが、勉強はいつでもできる!
それではやっていきます!
___
__Intermediate Machine Learning__ では、機械学習をより深掘っていきます

~Intermediate Machine Learning の流れ~
1. 導入
2. 欠損値
3. カテゴリー変数
4. パイプライン
5. 交差検証
6. XGBoost
7. データの漏洩

今回は __3__ の内容です!

# カテゴリー変数
カテゴリー変数とは、限られた選択肢で与えられる変数です。

例.1) 質問:朝ごはんはどのくらいの頻度で食べますか?
  回答:食べない、たまに食べる、ほとんど毎日、毎日
例.2) 質問:乗っている車のブランドは何で

Pythonの自作クラスに対して、object[‘key’]でデータにアクセスする方法

表題の実装方法ですが、パッと思い浮かぶでしょうか?
そもそも何に使うのか、と疑問に思われるかもしれませんが
私の場合は、Pandasと全く同じIFでデータが操作出来るカラム志向のライブラリを
自作してみようとした時にこの問題にぶつかりました。

“`python

# この(↓)データアクセスをどう実装すれば良いのだろう?
df[‘column_name’]
“`

表題のような実装方法は、公開ライブラリなどを作る際に求められる知識だと思うのですが
個人的にとても印象深かったので、今回記事を投稿させて頂きました。

※本記事の動作検証には、Pythonのバージョン3.7.3を使用しています。

object[‘key’]の形で自作クラスからデータを取得するには、\_\_getitem\_\_という特殊メソッドを定義する必要があります。

“`python

class SampleClass:

def __init__(self):
self.dict = {‘key’: ‘keyが取得出来ました。’}

def

Python数学シリーズ①(転置)

## 経緯
[深層学習の本](https://www.amazon.co.jp/%E6%B7%B1%E5%B1%A4%E5%AD%A6%E7%BF%92-Ian-Goodfellow/dp/4048930621)を読み進めていこうと思っているのですが、ひたすら文字を読んでると眠くなってしまうので、出てきた項目をpythonで実装しながら理解を深めていこうと思います。需要があるかはわかりませんが、シリーズ化していこうと思います(笑)。今回は転置です。最近、c++とcばかりでpythonを忘れてきているので、復習も兼ねてpythonで実装していこうと思います。

## 転置
本の定義(24ページ)では、左上の角から始まって右下までの主対角線と呼ばれる行列の対角線に対する鏡像であると言っています。詳しくは[こちら](https://risalc.info/src/transpose-matrix-properties.html)をどうぞ。

### 実装
簡単な方法はnumpyを使った方法があります。[こちら](https://note.nkmk.me/python-list-transpo

クラッシュオブクラウンと画像解析(2)

# やりたいこと
前回の画像解析の続きです.
前回:[クラッシュオブクラウンと画像解析(1)]
(https://qiita.com/__Bert__/items/4336f92823201c6848b2)

前回はスクリーンショットした画像の配置を正方形に変形し,必要な配置の部分だけの情報を抽出しました.今回はその画像から施設(施設の種類の分別は問わない)が位置しているマス目の情報を取り出そうと思います.

# 1.入力画像
前回は以下のような画像を得ることができました.
![GAKU2020_cut.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/949600/78fc9fae-097e-cd04-542d-0cd5f2965395.png)
この画像からどこのマスに施設があるか判断するのは難しそう…
どうしようか考えたのですが,クラクラには壁だけ表示させることのできる機能があります.
写真でいうとこんな感じ
![GAKU2020_wall.jpeg](https://qiita-image-stor