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

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

MCMCとFiltering実践(視覚的理解と、ターゲット分布の形状に合わせた使い分け)

#初めに#
###目的###

– MCMC(特にHMC系)とParticleFilterなどの、
確率分布推定アルゴリズムの
視覚的理解

– 視覚的理解から、対象の確率分布の形状に合わせたMC(モンテカルロ法)
を自ら選べるようにする

###前提知識###

– Pythonなどプログラミング基礎
– 機械学習基礎
– ~~ベイズ基礎~~ 
– → ある意味ベイズを好きになってしまう記事!

#MCMCとFiltering#

MCMC = Markov Chain Monte Carloの略(マルコフ連鎖モンテカルロ法)
Filtering = カルマンフィルタやパーティクルフィルタ(粒子フィルタ)などの手法

**両者は統一的に、観測データから
それが従う確率分布を推定する**
(サンプリングする)
**方法として理解できます。**

###MCMC###

– **主に、時間かかっても、正確に確率分布を推定する方法**
– **確率分布の予想される形状に応じて**、適切な(高速な、収束失敗しない)MCMCの派生が存在する
– (応用として、数理ファイナンス(Option P

元記事を表示

【Python】 1行でbool値反転 

#####python初学者の自分用リマインドメモ

ご指摘を受けて編集
returnするまでもなく変数にnotで反転して格納できるとのこと。
つまり下記でOKでした。。。

“`python:python.py
li = []
result = bool(li)

turned_result = not bool(x)

print(‘result: ‘,result)
print(‘turned_result: ‘,turned_result)
# result: False
# turned_result: True

“`

####以前のもの
[notでreturn値を返すと反転できる!](https://scrapbox.io/amanatsu-knit-note/【Python】return時にbool値をnotで反転する)とのことでlambdaの即時実行で応用

“`python:python.py
li = []
result = bool(li)

turned_result = (lambda x: not bool(x))(li)

元記事を表示

Pythonで学ぶ初歩的なITKの利用法

# Notification

この記事は自分の勉強のメモとして書きました。
参照元はこのノートブックです。
https://github.com/KitwareMedical/2019-03-13-KRSCourseInBiomedicalImageAnalysisAndVisualization

# ITK
画像を可視化する技術に特化したバイオメディカル分野の画像処理に欠かすことのできないライブラリ。
SlicerやImageJで利用されている。

# 環境
Google Colab
(任意のノートブックを立ち上げておく。)

# サンプルデータ
先にサンプルデータをGitHubからsubversionを使ってダウンロード。

“`
!sudo apt install subversion
#データを取得しておきます
#GithubのURLにk含まれる/tree/masterを/trunkへ置き換えて使います
!svn checkout https://github.com/KitwareMedical/2019-03-13-KRSCourseInBiomedicalImage

元記事を表示

RDSとIAMでパスワードレス認証(Python)

MySQLのパスワードベタ書きしないでよくなります
{}内は適宜置き換えてね

# 1. ユーザ作成

“`bash
CREATE USER ‘{MySQLユーザ名}’@’%’ IDENTIFIED WITH AWSAuthenticationPlugin as ‘RDS’; # ユーザ作成
GRANT ALL PRIVILEGES ON {MySQLDB名}.* TO ‘{MySQLユーザ名}’@’%’ REQUIRE SSL; # 権限
“`

# 2. IAMポリシー

こんな感じでポリシーを作る

jsonで直接アタッチするならこんな感じ

“`json
{
“Effect”: “Allow”,
“Action”: “rds-db:connect”,
“Resource”: “arn:aws:rds-db:{AWS::Region}:{AWS::AccountId}:dbuser:cluster-{リソースID}/{MySQLユーザ名}”,
}
“`

CloudFormationならこんな感じ

“`yaml
iamRole:
– E

元記事を表示

【Python】Pandasで縦にCSVを書き込むメモ

結論

“`python
import pandas as pd

n0 = [“a”, “b”, “c”]
n1 = [“aa”, “bb”, “cc”, “dd”, “ee”, “ff”, “gg”]
n2 = [“0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”]

nn = [n0, n1, n2]
print(nn)

df = pd.DataFrame(nn)
df = df.T

print(df)

savefile = “testcsv.csv”
df.to_csv(savefile, encoding=”utf_8_sig”)
“`

元記事を表示

Pythonで、デザインパターン「Flyweight」を学ぶ

GoFのデザインパターンを学習する素材として、書籍「[増補改訂版Java言語で学ぶデザインパターン入門](https://www.hyuki.com/dp/)」が参考になるみたいですね。

ただ、取り上げられている実例は、JAVAベースのため、自分の理解を深めるためにも、Pythonで同等のプラクティスに挑んでみました。

# ■ Flyweight(フライウェイト・パターン)
Flyweightパターン(フライウェイト・パターン)とは、GoFによって定義されたデザインパターンの1つである。 等価なインスタンスを別々の箇所で使用する際に、一つのインスタンスを再利用することによってプログラムを省リソース化することを目的とする。

![flyweight.png](https://qiita-image-store.s3.ap-no

元記事を表示

Pythonでやりたいこと(リストのみ)

#Pythonでやりたいこと(ToDoリスト)
– 基礎知識を勉強する(随時)
– Google Cloudの基礎知識を勉強する(随時)
– DeepLearningの基礎を勉強する(半年内)
– 音声認識の基礎を勉強する(半年内)
– 歌の歌詞の認識(1年内)
– ソースコード(プログラミング言語)の解析(1年内)
– ネーミング自動化
– コーディング自動化
– テスト自動化
– 仕様アウトプット自動化

元記事を表示

[Python3 入門 14日目]7章 文字列(7.1.1.1〜7.1.1.4)

###7.1.1.2 UTF-8によるエンコード、デコード

外部の世界との間でデータをやり取りするときには良い¥かの二つの手段が必要になる。

– 文字列をバイト列にエンコードする手段
– バイト列を文字列にデコードする手段
– 動的エンコード方式のUTF-8はPython、Linux、HTMLでは標準的なエンコーディングである。
– webページなどから他のソースをコピー&ペーストでPython文字列を作るときは、ソースがUTF-8形式でエンコードされていることを確かめなければならない。(例外が発生する。)

###7.1.1.3 エンコーディング(記号化)

– 情報の送信側が、伝えたいメッセージ内容を受信側に届く記号の形に変換すること。
– 文字列をエンコードしてバイトにする。
– 文字列のencode()関数の第一引数はエンコーディング名。
– **UTF-8**は**8ビット可変長エンコーディング**。

“`py

#Unicode文字列”\u2603″を代入
>>> snowman=”\u2603″
>>> len(snowman)
1

#このUnicode文字

元記事を表示

ベクトル化による計算効率の良さをPythonで実感する

# ベクトル化が必要な理由
n次元ベクトルのwとxがあったとき、$z = w_1x_1 + w_2x_2…w_nx_n$を計算するのにfor文だと効率が悪い。
ベクトル化すると$z = w^Tx + b$とすることで効率よく計算できる。
Pythonだと以下のコードで比較できる。

“`python
import numpy as np
import time

a = np.random.rand(1000000)
b = np.random.rand(1000000)

tic = time.time()
c = np.dot(a, b)
toc = time.time()
print(f'{“Vectrized version”:20}:{str(1000 * (toc-tic))} ms’)

c = 0
tic = time.time()
for i in range(1000000):
c += a[i] * b[i]
toc = time.time()
print(f'{“For loop”:20}:{str(1000 * (toc-tic))} ms’)

元記事を表示

言語処理100本ノック-96(Gensim使用):国名に関するベクトルの抽出

[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)の96本目「国名に関するベクトルの抽出」の記録です。
[ノック90本目](https://qiita.com/FukuharaYohei/items/0ab5e4ccca7e1083db1f)で保存したGensim版の単語ベクトルから国名に関するものだけを抽出します。技術的には簡単ですが、国名に関する部分が少し面倒です。

# 参考リンク

|リンク|備考|
|:–|:–|
|[096.国名に関するベクトルの抽出.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/10.%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E7%A9%BA%E9%96%93%E6%B3%95%20(II)/096.%E5%9B%BD%E5%90%8D%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E3

元記事を表示

numpy.ndarrayとlistの違い(次元,サイズ編)

numpyのndarrayとPython組込みのlistがゴッチャになっていたため,それぞれの次元やサイズについて自分なりにまとめてみた.
初心者のまとめです.

# まとめ

ググってみた結果,メジャーなサイズの取得方法はlen()関数,np.shape()関数,インスタンス変数ndarray.shapeを使うものでした.

結論としては,**np.shape()を使っておけば安パイ**かと思います.
また,**組込みlist型はリスト内包表記を利用**することで2次元配列表現を実現していることを覚えておくと良いと思いました.

#### サイズ取得関数
|サイズ取得方法|ndarray型|組込みlist型|
|:———-|————–:|:—————:|
| len() | 1次元のみ | 1次元のみ |
| np.shape() | n次元 | n次元 |
| ndarray.shape

元記事を表示

反比例っぽいグラフはどのようにして生まれるのか?

# 前略
[こちらの記事](https://qiita.com/fmfm_mdk/items/61d86fef2ed26656369d)の考察はとても面白かったですね。自分も「いいね」をもらうとやる気が出るので、ちょっと参考になりました。コードは書くつもりだけど。

ところで、私も分析をしていると度々記事の中にあった最初のグラフのような図に出会います。反比例っぽいなーと思いつつ、実はこれは反比例ではないのでは?と思ったので、似たようなグラフがどのようにしたら出力されるか、ちょっと試してみました。

# 反比例のグラフ
当たり前ですが反比例のグラフは下図のようになります。

“`python
import numpy.random as rnd
import matplotlib.pyplot as plt
plt.style.use(“seaborn”)

x = np.linspace(0.1, 10, 100)
y = 1/x

plt.plot(x, y)
plt.show()
“`
スクリーンショット 2020-01-23 1.2</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Python</div>
<div class='tag-cloud-link'>DataScience</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/ground0state/items/46a774a81a6cdde8e54a'>元記事を表示</a></div>
<h3 id=「K-Fold Target Encoding」をやってみた

# はじめに
2019年終わりから2020年頭くらい?にTarget Encodingが話題になったような記憶があります。

Target Encodingはカテゴリ変数を目的変数の平均値で置き換えるわけですが、単純に処理してしまうとリークが発生してしまうので、工夫をする必要があります。リークを防ぐために変換対象の行以外の平均値を用いるLeave One Outの方法や、K-foldで分けて対象業が含まれるfold以外の平均値で置き換えるといった対策がとられます。

Target Encodingの解説は世にたくさん出ているのでこの記事では解説はしません(例えば[こちらのサイト](https://blog.amedama.jp/entry/target-mean-encoding-types#Leave-one-out-TS-%E4%BD%BF%E3%81%A3%E3%81%A1%E3%82%83%E3%83%80%E3%83%A1)がとても参考になります)。
この記事では[こちらのサイト](https://medium.com/@pouryaayria/k-fold-target-e

元記事を表示

opencv-python画像処理入門

機械学習用の画像の前処理方法を調べたのを書いていきます。
中途半端な内容ですが、今後書き足していくと思います。

# 試行環境

Windows10
python 3.6
opencv-python 4.1.2.30

# 画像の準備

適当に画像ファイルを用意して読み込んでください。

“`python:python
import cv2
import matplotlib.pyplot as plt

im = cv2.imread(‘../input/opencv.png’)[:, :, ::-1]
plt.imshow(im)
“`
今回はこの画像を使っていきます

# 画像をぼかす: cv2.GaussianBlur(src, (size, size), sigma)

opencvドキュメント
h

元記事を表示

Jupyter学習ノート_008

# pythonでプログレスバーを簡単に実現できる

“`sample_prb.py
import time
from tqdm import tqdm

#単純にスリープする
for _ in range(100):
time.sleep(0.1) # 0.1秒をスリープする

#進捗を表示する
for _ in tqdm(range(100)):
time.sleep(0.1)

for _ in tqdm(range(50)):
time.sleep(0.1)
“`
– 実行結果
![progress_bar](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551056/89b74a4c-3f80-78ad-d5fa-463d662f4a40.png)

元記事を表示

docker-compose で Cloud Datastore Emulatorを立ち上げpythonアプリと連携する

# 背景

サービスでdatastoreを使う事になり、開発環境やCIでのテストをどうするか試行錯誤した。 :thinking:
AWSと比較して情報が少ないので、まとめた。 :grinning:

# 要点

– flaskアプリとCloud Datastore Emulatorをコンテナを作る
– docker-composeでサービス連携を行う
– datastoreの初期データ投入
– flaskアプリから、Cloud Datastore Emulatorを操作する

# ディレクトリ構成

“`
.
├── app
│ ├── Dockerfile
│ └── src
│ ├── main.py
│ └── requirements.txt
├── datastore
│ ├── Dockerfile
│ ├── entrypoint
│ └── import
│ ├── 2020-01-21.overall_export_metadata
│ ├── default_namespace

元記事を表示

学習記録 その26(30日目)

#学習記録(30日目)
勉強開始:12/7(土)〜

教材等:
・大重美幸『詳細! Python3 入門ノート』(ソーテック社、2017年):12/7(土)〜12/19(木)読了
・Progate Python講座(全5コース):12/19(木)〜12/21(土)終了
・Andreas C. Müller、Sarah Guido『(邦題)Pythonではじめる機械学習』(オライリージャパン、2017年):12/21(土)〜12月23日(土)読了
・[Kaggle : Real or Not? NLP with Disaster Tweets](https://www.kaggle.com/c/nlp-getting-started) :12月28日(土)投稿〜1月3日(金)まで調整
・Wes Mckinney『(邦題)Pythonによるデータ分析入門』(オライリージャパン、2018年):1/4(水)〜1/13(月)読了
・斎藤康毅『ゼロから作るDeep Learning』(オライリージャパン、2016年):1/15(水)〜1/20(月)
・**François Chollet『Pyt

元記事を表示

LiquidTap Python Clientを使う①

# 「Liquid by Quoine」の”Order Book”を取得する

(2020.01.22)
ライブラリをインストールしてBTC/JPYを取得してみる。

## ライブラリをインストール

“`sh
$ pip3 install liquidtap
“`

## 本家のサンプルを参考にコードを書く

本家:https://github.com/QuoineFinancial/liquid-tap-python

“`py:price.py
import liquidtap
import time

def update_callback_buy(data):
print(“buy:” + data)

def update_callback_sell(data):
print(“sell:” + data)

def on_connect(data):
tap.pusher.subscribe(“price_ladders_cash_btcjpy_buy”).bind(‘updated’, update_callback_buy)
ta

元記事を表示

SciPy KDTree vs 総当たりベンチマーク

#はじめに
k次元のユークリッド空間に点を空間分割で分類し、k次元領域の
点探索を効率的におこなうのがk-DTreeです。
SciPyにこんなのがあるとは知らなったので、どれくらい効率がいいか?
ベンチマークを行ってみたいと思います。
以降、2次元は2-D, 3次元は3-Dという風にk次元について
k-Dと表記します。

#比較条件
データ件数 100000件
検索回数 10000回
2-Dから8-Dデータまで行います。
各次元について4回ずつ探索を行います。
leafsizeは10固定。

#環境
Anaconda
Python 3.7.6
scipy.version.full_version 1.3.2
windows10

#プログラム

“`:kdtbench.py
def search(S, pt):
# 距離を求める
distary = ss.distance.cdist([pt], S, metric=’euclidean’)
# 最小のインデックスを求める
idx = distary.argmin()
return (distary[0, idx], i

元記事を表示

MacOS Catalina(10.15.2) で、旧OSからアップデートした環境でpython pipがOpenSSLのエラーになる問題の解決法

# TL;DR
`/Library/Developer/CommandLineTools` を `CommandLineTools.bak` とかに `mv` して、 `xcode-select –install` する。

# なぜそうするのか

Catalinaにupgradeする前から入れてあったCommandLineToolsがどうも古いのに新しいものと誤認識されているらしい。
なので `xcode-select –install` しても `already installed` って言われてしまう。
それを強制的に入れ直すため。

# いろいろ修正方法が書いてあるけどどれも関係なかった

以下は無関係だった。

* brewを入れ直す
* OpenSSLをbrewで入れ直す
* MacOS10.14.pkgを入れる → そもそもファイルが無いのでできない。

# 問題のエラー文字列

“`
$ pip install –upgrade pip
pip is configured with locations that require TLS/SSL, however

元記事を表示

OTHERカテゴリの最新記事