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

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

メモ:分かりにくい nonlocal

多分、使わない nonlocal だけど

Python 3.9.1 のドキュメント
  9.2.1. スコープと名前空間の例

が読みにくかったので、自分なりに解釈したコメントを追加。

“`python
def scope_test():
def do_local():
spam = “local spam”
# do_local の spam に代入
# 何処からも参照されないので無意味な処理
# 動作説明には必要

def do_nonlocal():
nonlocal spam
# do_nonlocal には spam が無い、と宣言
# 外側にある関数 (scope_test) の spam を使う
# global の spam は使わない
spam = “nonlocal spam”

def do_global():
g

元記事を表示

manimの作法 その13

#概要

manimの作法、調べてみた。
VMobject、使ってみた。

#サンプルコード

“`
from manimlib.imports import *

class test(GraphScene):
CONFIG = {
“x_labeled_nums”: [],
“y_labeled_nums”: [],
“x_axis_label”: “Temperature”,
“y_axis_label”: “Pressure”,
“graph_origin”: 2.5 * DOWN + 2 * LEFT,
“corner_square_width”: 4,
“example_point_coords”: (2, 5),
}
def construct(self):
self.setup_axes()
self.draw_arrow()
self.add_example_coordinates()
self.wander_continuously()
def draw_arrow(self):
square = Squa

元記事を表示

manimの作法 その12

#概要

manimの作法、調べてみた。
RubiksCube、使ってみた。

#サンプルコード

“`
from manimlib.imports import *

class RubiksCube(VGroup):
CONFIG = {
“colors”: [
“#FFD500”, # Yellow
“#C41E3A”, # Orange
“#009E60”, # Green
“#FF5800”, # Red
“#0051BA”, # Blue
“#FFFFFF” # White
],
}
def __init__(self, **kwargs):
digest_config(self, kwargs)
vectors = [OUT, RIGHT, UP, LEFT, DOWN, IN]
faces = [self.create_face(color, vector) for color, vector in zip(self.colors, vectors)]
VGroup.__init__(se

元記事を表示

【メモ】Pythonでピボットテーブルをやってみた

* 製造業出身のデータサイエンティストがお送りする記事
* 今回は自分のメモとして記事に残しておきます。

##はじめに
製造現場では、膨大なデータをExcelで分析する際にピボットテーブルを頻繁に使います。データを探索的に集計したいときに便利だからです。
Jupyter Notebookでもピボットテーブルってできないのかな?と思って調べていたら[pivottablejs](https://pivottable.js.org/examples/)というライブラリーを使用したらできるということが分かりました。

##ピボットテーブルの実装
“`php
import pivottablejs
import seaborn as sns
sns.set_style(‘whitegrid’)

#データセットの読み込み
df=sns.load_dataset(‘tips’)

pivottablejs.pivot_ui(df)
“`

![スクリーンショット 2021-01-06 14.41.56.png](https://qiita-image-store.s3.ap-northeas

元記事を表示

K-means法(クラスタリング手法)を実装してみた

* 製造業出身のデータサイエンティストがお送りする記事
* 今回はクラスタリング手法の中で、K-means法を実装しました。

##クラスタリングとは
クラスタリングとは、ある集合を何らかの規則によって分類することです。機械学習においてクラスタリングは、「教師なし学習」に分類されます。

クラスタリングの計算方法はいくつかありますが、サンプル同士の類似性に基づいてグルーピングしています。クラスタリングの計算方法を大きく分類すると、「階層クラスタリング」と「非階層クラスタリング」の2つに分けられます。
今回実装するK-means法は「非階層クラスタリング」に分類されます。

##K-means法とは
クラスターの平均を用いて、あらかじめ決められたクラスター数に分類手法です。K-means法のアルゴリズム概要は下記にようになっております。

1. クラスタの中心の初期値をk個決める
2. 全てのサンプルとk個のクラスタとの中心距離を求め、最も近いクラスタに分類する
3. 形成されたk個のクラスタの中心を求める
4. 中心が変化しなくなるまで2と3の工程を繰り返す

![スクリーンショット

元記事を表示

「ゼロから作るDeep Learning」自習メモ(その19の2)Data Augmentation 続き

「ゼロから作るDeep Learning」(斎藤 康毅 著 オライリー・ジャパン刊)を読んでいる時に、参照したサイト等をメモしていきます。 [その19](https://qiita.com/slow_learner/items/2ede37e1af655775cc1e) ← → [その20](https://qiita.com/slow_learner/items/bb0ce93a4577bc7f1105)

前回は、Data Augmentation 用の画像を Pillow で加工しましたが、ライブラリを使わずに加工してみようかと思います。

##左右反転
“`python
import numpy as np
import math
import matplotlib.pyplot as plt

def flip_img(img):
return img[:, ::-1, :]
“`

画像をnp.arrayにして、x軸の項目を ::-1 として反転させるだけ。

##移動
“`python
def trans_horiz_img(img, r=0.1):
h,

元記事を表示

Python数学シリーズ③ 行列式(置換)

## このシリーズについて
数学の理解を深めるためにpythonで実装しながら、理解を進めてます。当分は線形代数やろうと思います。数学はそんなに好きではありませんでしたが、最近好きになってきたかもしれません。シリーズの目次は[こちら](https://qiita.com/Hiroaki-K4/items/90b2f86558ef825e5d21)。間違いやもっといい方法など、ご意見あれば気軽にコメントください。

## 行列式と置換
行列式は以下の式で定義されます。[参照元](https://mathtrain.jp/determinant)
![Screenshot from 2021-01-05 23-00-30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663246/770f8c45-35db-a66a-fa39-975a963c338d.png)
いきなり、行列式を実装しようとしても色々と知識が足りなかったので、とりあえず置換をまずやっていこうと思います。
置換は以下のように定義されます。[

元記事を表示

Effective Python 学習備忘録 5日目 【5/100】

## はじめに
Twitterで一時期流行していた 100 Days Of Code なるものを先日知りました。本記事は、初学者である私が100日の学習を通してどの程度成長できるか記録を残すこと、アウトプットすることを目的とします。誤っている点、読みにくい点多々あると思います。ご指摘いただけると幸いです!

## 今回学習する教材

– [Effective Python](https://www.amazon.co.jp/Effective-Python-%E2%80%95Python%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E6%94%B9%E8%89%AF%E3%81%99%E3%82%8B59%E9%A0%85%E7%9B%AE-Brett-Slatkin/dp/4873117569/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=Effective+python&qid=1609408832&sr=8-3

元記事を表示

PythonでLifegame。

前書き

あけましておめでとうございます。
大した数を投稿してないですが、今年もよろしくお願いします。

個人的にLifegame的なプログラムをPythonで書きたいなー、とか思っていたので、年末年始で挑戦しました。
「松の明けぬうちにせめて一本記事を」という思いもありますので、ざっくりした説明とコードを投稿します。
従来同様、あちこちのサイトを調べては書き、「我ながらイケてない」と独り言をつぶやいては手直しし、の繰り返しなので、お見苦しい点もありますが、ご容赦くださいませ。

環境

– Windows 10 Pro Build 19042.685
– Python 3.9.1
– matplotlib 3.3.3

概要

– Lifegameの詳細については[こちら](https://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%83%95%E3%82%B2%E3%83%BC%E3%83%A0)。(Wikipedia)
– 今回はmatplotlib.pyplotの[scatter](ht

元記事を表示

Pythonで環境変数にアクセスする方法

# 環境変数にアクセスする方法

### モジュールのインポート

“`
import os
“`

### 環境変数にアクセスする

Pythonでは、osモジュールの`environ`に環境変数が格納されている。
型は、マップ型です。

“`
user_name = os.environ[‘USERNAME’]
print(user_name)
“`

また、`os.getenv(key, default=None)`を使用することでも取得できます。

“`
user_name = os.getenv(‘USERNAME’, ‘dummy’)
print(user_name)
“`

`os.getenv()`は第1引数で環境変数のキーを指定します。
指定されたキーが存在していない場合は、第2引数の値を返却します。

# まとめ

環境変数にアクセスする方法は2つある。

* 1つ目は、`os.environ`を使用する方法
* 2つ目は、`os.getenv()`を使用する方法

場合によると思いますが、単純にアクセスするだけなら、環境変数が存在していない場合に任意の

元記事を表示

【SIGNATE】【lightgbm】コンペ アメリカの都市エイムズの住宅価格予測 参加記録 (1/2)

# はじめに
SIGNATEで開催されているBegginer向けコンペ
[【第5回_Beginner限定コンペ】アメリカの都市エイムズの住宅価格予測](https://signate.jp/competitions/401) に参加したため、参加記録を書きます。

### コンペについて
– 目的: 都市エイムズの住居や周辺環境に関する情報を元に
住宅の価格 ‘Sale Price’ を予測します。 (よくあるやつ)
– 期間: 2020/12/01 ~ 2021/01/10
以降で順位等を記載してますが、コンペ開催中のため未確定です。
– SIGNATEの称号Begginerのみ参加可能 (初心者向け)

### 現在のスキル
– 機械学習初心者
– コンペ経験はKaggleの [タイタニック号の生存者予測](https://www.kaggle.com/c/titanictcilearn/overview) のみ

### 方針
– アルゴリズムはLightGBM を採用します。
コンペでよく使われるとのことなので一回やってみようという考えです。

元記事を表示

リストワイズ除去のツリーを簡単に計算する関数(Python)

#本記事について
* 疫学研究等で目にする、**Fig1.本研究の解析対象者** のツリーを素早く計算する関数を書いた。
* リストワイズ除去を行った際のツリーを想定する。
* コードはPythonであるが、記事内にてRより呼び出す方法も追記した。

## そもそもリストワイズ除去のツリーって?

こんなヤツ↓ エクセルでシコシコ関数組んでると平気で半時間とかかかったり。(目や腰もいたくなるね)

![risttttt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/961784/0a205f03-603b-01da-a7f2-4c1139c29e2c.png)

(この図に正式名称があればご教示ください)

# 何が面倒くさいの?
単にそれぞれの変数の欠測数を乗せるだけなら**df.isnull.sum()**で終了ですが、、

1. **x1**の欠測は●人でした。
2. **x1**の欠測を除いたデータにおいて、**x2**の欠測は▲人でした。
3. **x1**と、**x2**の欠測を除いた

元記事を表示

privateでないAPIがscikit-learn v0.24で削除されたために、unpickleできない経験をしました

scikit-learn v0.22 より前に作った`MultiLabelBinarizer`が、scikit-learn v0.24以降の入った環境でunpickleできないことを示します。
ちょっとハマった身から言えること:**pickleする環境とunpickleする環境のバージョン違いにはご注意ください**

## 環境

macOS
Python 3.7.3

## 手順

### `scikit-learn` 0.22より前

scikit-learn-0.21.3

ドキュメントのExamplesを用います
https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MultiLabelBinarizer.html#sklearn.preprocessing.MultiLabelBinarizer

experiment.py

“`python
import pickle

from sklearn.preprocessing import MultiLabelBinarizer

m

元記事を表示

【最新】Google画像検索を保存するPythonライブラリの使い方&ChromeDriverをubuntuで使う

あけましておめでとうございます。

結構知ってる人が多いとは思いますが私が何度も迷うので書き留めておきます。
機械学習の際の学習データにご利用ください。

2020年8月ごろ?に検索結果の提供方法が大きく変わったらしく、Windows用ソフトの「ImageSpider」が使えなくなりました。(結構便利だったんですけどね…)
そこでこれからはPython用ライブラリの**「google_images_download」**を使うことにしました。

## インストール

### **【注意】pipではインストールしないでください!**

“`
pip3 install google_images_download
“`

PIPにあるバージョンではGoogle側の変更に対応できていないため、インストールしても使えません。
なので直接インストールします。

“`
git clone https://github.com/Joeclinton1/google-images-download.git
cd google-images-download && sudo python se

元記事を表示

Pythonのhttp.serverはRange Requestに対応してなかった

# 発生した問題
ローカルPCにサーバーを立てて、iOS Safariから動画を開いて再生しようとしたら何故か再生できない…
PCのFirefoxからは再生できるのに…

Googleで検索したらこのような記事を発見
[【HTML5】iOSのSafariでvideoタグ埋め込みのmp4が再生できないのはインターレースだから](https://deep-space.blue/web/822)
つまり動画方式が悪いんじゃねーのってこと。
ところが、インターレース方式ではなくプログレス方式なっていた。
FFmpegで再エンコードしてみたりしたが変わらず。
記事の最後の方に追記でほかの原因かもと書いてあり、この記事にたどり着く。
[【MP4】SafariでMP4動画が再生できない問題を解決](https://highmoon-miyabi.net/blog/2019/03/17_000550.html)
一番目はそもそもvideo要素すら使ってないのでありえない。
2番目、別の記事のリンクが張ってあり、タイトルが「[Safariで動画を表示する際、サーバーのHTTP Range Req

元記事を表示

発音の類似度の指標としての編集距離を計算する【python】

#概要
日本語文同士の発音の類似度として編集距離を用いる場合に注意したことをまとめました。
またカナ、母音、子音の編集距離を求めるコード例を示しました。
#背景
ダジャレや空耳などの自動生成をするときに文章や単語間の発音類似度を求めたくなることがあります。このときに編集距離を使うことが思いつきます。
編集距離は文字列の類似度の指標として使われる指標であり、ある文字列を1文字ずつ編集(挿入、削除、置換)して別の文字列にするために必要な最小編集回数と定義されます。
日本語ではカナ表記と発音が原則1対1対応するので、カナ表記の編集距離を求めれば、発音がどの程度近いかを知ることができます。
ただし拗音、長音については扱いを気をつける必要があります。具体的には以下の処理が必要です。

* 拗音(シャなど)は発音としては1拍のため、2単位ではなく1単位として扱う。
* 長音(伸ばし棒)は、直前のカナによって(同じ文字でも)発音が異なるので、対応するカナに変換してから編集距離を求める。

また、発音の類似度ということであれば、母音や子音だけに注目した指標を求めたくなることもありそうです。

以上の背

元記事を表示

macOS Big Sur で poetry を使って numpy をインストールできなかったので無理やり回避した

## 環境

– OS: macOS Big Sur
– Python : 3.8.7 (from Homebrew)
– pip : 20.2.3
– shell : zsh

## 発生した事象

`pyproject.toml` に次のような記述が含まれている状態で、 `poetry install` を行ったところ

“`toml
[tool.poetry.dependencies]
python = “3.8.*”
pip = “^20.3.3”
gcsfs = “^0.7.1”
lightgbm = “^3.1.1”
pandas = “^1.2.0”
matplotlib = “^3.3.3”
seaborn = “^0.11.1”
“`

“`console
% poetry install

Python 2.7 will no longer be supported in the next feature release of Poetry (1.2).
You should consider updating your Python version to

元記事を表示

1byteデータに含まれる任意のbit位置にある値を取得する方法

# やりたいこと

**1byteデータから任意のbit位置にある値を取得する方法**をいろいろ考えたので記事に残したいと思います。

例えば`0b10100000`という1byteのデータがあったとき(以下図)、4bit目から2bit分の値である`0b10`)を取得する方法です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218506/af487671-dbe3-5ce4-0466-ff49a05ffb16.png)

今回思いついた方法が以下の2点です。

1. 文字列に変換
2. bit演算を利用

ソースコードはpythonです。

# 文字列に変換

目的のbit値を**文字列に変換**し、**bit位置=文字列の位置と考えて目的のbit値を抽出**するやり方です。

この方法の注意点は**文字列の位置とbit位置は方向が逆**である点です。以下の例では、文字列を反転(`[::-1]`)させてから目的の値を抽出し、抽出後に再反転させて、正しいbit値に変換しています。

元記事を表示

Flask+gunicornを使って作成したTwitter連携アプリをHerokuにデプロイした話

初投稿です。
本記事は**Flask+gunicorn**を使ってTwitterに自動投稿を行うPythonアプリをHerokuにデプロイした際の備忘録的な内容になっています。
ほぼ知識ゼロから始めたこともあり色々とハマったので、同じ境遇の方の助けになればと思い、本記事を書こうと思った次第です。

本稿は下記構成となっています。

+ [前提条件](#前提条件)
+ [Twitter API keyの取得](#twitter-api-keyの取得)
+ [各種パッケージのインストール](#各種パッケージのインストール)
+ [ファイル構成](#ファイル構成)
+ [アプリケーションのデプロイ](#アプリケーションのデプロイ)
+ [おまけその1:画像付きでツイートする](#おまけその1画像付きでツイートする)
+ [おまけその2:リプライツイートに返信する](#おまけその2リプライツイートに返信する)

#前提条件
以下がインストール済みである前提で話を進めます。

+ Python3.7系
+ git

#Twitter API keyの取得
下記ページを参考に`APIkey & s

元記事を表示

pythonの配列をjsonデータに加えるだけ

pythonの配列をjsonデータに加えるだけです

# コード

“`python:test.py
#!/env/python
import json

def addJson(list):
# state data to json
json = {
“parameter”: list,
}
return json

l = list(range(0))

for i in range(25):
l.append(i)
data = addJson(l)
print(data)
“`

# 実行結果

“`
$ python test.py
{‘parameter’: [0]}
{‘parameter’: [0, 1]}
{‘parameter’: [0, 1, 2]}
{‘parameter’: [0, 1, 2, 3]}
{‘parameter’: [0, 1, 2, 3, 4]}
{‘parameter’: [0, 1, 2, 3, 4, 5]}
{‘parameter’: [0, 1, 2, 3,

元記事を表示

OTHERカテゴリの最新記事