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

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

川の氾濫状況をAIで検知する

#はじめに
川の氾濫状況をAIがモニタリングして、溢れてたら降りたり近づいたりしないように
警告できないか考えてみた。

#モチベーション:
(コロナで暇だった・・・訳ではない)
2020年7月は過去最長の梅雨でした。

30年見てきている、京都の賀茂川も雨の度に氾濫気味で、市の方が川辺へ降りないように柵まで用意してくれたけど、
電子掲示板で逐一状況を表示してくれたらみんなハッピーかなと思った。
(防災カメラはあるはずで、もうやってたらごめんなさい。水位がわかると思うのでAIとの合わせ技が良いかも)
[京都市防災カメラ](http://chisuibousai.pref.kyoto.jp/)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/658518/7e3bd951-b6b8-8830-781c-f724e8380a79.png)

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

元記事を表示

存在しない列名(行名)にアクセスしたときに出力されるエラーと対処方法について

#1 この記事は何?

下記のエラーが表示されたときの原因と対処法についてメモします。

エラー
KeyError: ‘Passing list-likes to .loc or [] with any missing labels is no longer supported, see https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#deprecate-loc-reindex-listlike’について

#2 内容

###現象の説明
今話題にしているエラーは、ありえない列名を抽出しようとしたときに発生するエラーです。
下記の例ですと、B列,C列,D列を列として備えていますが、F列は存在しません。存在しないにもかかわらず
F列を抽出しようとしているのでエラーが発生します。

“`python:sample.py
import pandas as pd
import numpy as np

dat = [
[‘2019-07-01′,’9997′,’740’,’7

元記事を表示

[Rust/Python] PyO3でnumpyを扱う (2020年8月版)

Rust で実装した `myfunction(x: f64) -> Array2` を Python から呼ぶコード例です. ゼロコピーなので大きなデータを Rust 側で生成して Python で解析する場合におすすめです. 頻繁に使うのでコピペ用に.

“`toml:Cargo.toml
[lib]
name = “mypackage”
crate-type = [“cdylib”]

[dependencies]
pyo3 = { version = “0.11”, features = [“extension-module”] }
ndarray = “0.13”
numpy = “0.11”
“`

“`rust:src/lib.rs
use pyo3::prelude::*;
use ndarray::Array2;
use numpy::{IntoPyArray, PyArray2};

#[pymodule]
fn mypackage(_py: Python, m: &PyModule) -> PyResult<()> {
#[pyfn(m,

元記事を表示

AWS Chaliceを触ってみた

#AWS Chaliceって?
[Amazon API Gateway](https://aws.amazon.com/jp/api-gateway/) や [AWS Lambda](https://aws.amazon.com/jp/lambda/) をCLIから半自動でさくっと作れるものらしい。
AWS Lambda(とAmazon API Gateway)は好きだから触ってみました。

#準備
##Pythonの仮想環境作り
[AWSのChaliceハンズオン](https://aws.amazon.com/jp/blogs/startup/event-report-chalice-handson/)で仮想環境を作ることを推奨しているので、必要に応じて作ります。
###仮想環境を作成するVirtualenvのインストール
“`bash
$ pip install virtualenv
“`
###仮想環境の作成
“`bash
# 『~/.virtualenvs/chalice-handson』は環境名
# AWSのハンズオンに合わせているだけなので、任意の環境名で大丈夫です

元記事を表示

dictの欠損キー対処の4つの方法

[Effective Python 第2版――Pythonプログラムを改良する90項目](https://www.oreilly.co.jp/books/9784873119175/) が本当にすばらしいので泣きながら読み進めています。

その中に、dictの欠損キーに対する対処方法の項目があったため、詳細内容は本書を読んで頂きたいのですが、それぞれの処理時間が気になったため計測しました。

今回はかなり簡単ですが、ある文字列の出現文字をカウントする処理を書きます。
実行環境はGoogle Colabのデフォルトです。

まず必要なライブラリをインポートします。

“`python
import time, defaultdict
“`

適当な文字列を集計用の対象にします。

“`python
target = ‘super_string_of_my_passages. but this does not make sense at all. because this is nothing’
“`

なお最後に、出現数でsortしたkey-valueを出力しており、想定

元記事を表示

Macでpipを使えるようにする (easy_install is deprecated)

新しいMacにpipがなかったのでpipコマンドを使えるようにしたいがなかなkできなかったのでメモとして残しておきます。

“`sh
$ pip install selenium
-bash: pip: command not found
“`

[Macでpipを使えるようにする](https://qiita.com/sf213471118/items/3ee4ebd5d39856345682)を参考にしようとするが、easy_installがdeprecatedらしいので他のやり方を模索しました。

色々と試しましたがなかなかうまく行かなくて、最終的にできたのがこちらの記事を参考にしたときです。

[bash: pip: command not found](https://stackoverflow.com/questions/9780717/bash-pip-command-not-found)

https://bootstrap.pypa.io/get-pip.py のサイトから get-pip.py をダウンロードします。

“`sh
curl https://bo

元記事を表示

カリー化チートシート【記述例一覧版】

拙作記事『[カリー化チートシート](https://qiita.com/ytaki0801/items/a0c18a78f6f8f5c8fe2a)』について,対応言語や補足追記が増えるにつれ,チートシートというよりは解説記事と化してきたので,あらためて記述例一覧版を作成.しばらくしたら,元記事タイトルを『カリー化記述まとめ』に変えて,こちらを『カリー化チートシート』にするかも.

#記述例一覧
複数の記法が可能な言語は,最新バージョン&カリー化メソッド未使用の場合の,最も短い書き方のみを掲載.その他の記法やバージョン等による違いは[元記事](https://qiita.com/ytaki0801/items/a0c18a78f6f8f5c8fe2a)を参照.

| 言語 | (λxy.(真, if x>y; and 偽, if x≦y)) 10 20 |
|:-:|:-:|
| Haskell | `(\x y -> x > y) 10 20` |
| Scheme | `(((lambda (x) (lambda (y) (> x y))) 10) 20)` |
| Python |

元記事を表示

BigTransfer (BiT) ファインチューニング

– 公式ブログ
https://blog.tensorflow.org/2020/05/bigtransfer-bit-state-of-art-transfer-learning-computer-vision.html

– 公式サンプルコード (TF2, PyTorch, JAX)
https://github.com/google-research/big_transfer/tree/master/colabs

ここから、BiTファインチューニング時に必要な情報(自分が遊んだときに使った/調べたとこ)を抜き出し、日本語でまとめています。

## 本文

– **事前学習済モデル** を参照・取得できるURL
Cloud bucketには h5, npz形式が保存されている。TF以外でも使える。
– TensorFlow Hub
https://tfhub.dev/google/collections/bit/1
– Cloud bucket
https://storage.googleapis.com/bit_models/

元記事を表示

共起ネットワーク図をサクッと作る

#はじめに
最近何度も何度も共起ネットワーク図を作る場面があり、[前の記事](https://qiita.com/niship2/items/9d7e2b6ab2ca1be18eaf)などで、なんやかんややっていたけれど、とりあえず共起関係をサクッと作る関数を作っておくことにした。

#関数本体
dataframe:処理対象の列が含まれるpd.dataframe
colname:共起ネットワーク図を作りたい項目(列名)
sep:区切り

“`python
def make_co_occur_df(dataframe,colname,sep):
df_co_occur_network = \
pd.merge(dataframe[colname].str.split(sep,expand=True).stack().reset_index(),
dataframe[colname].str.split(sep,expand=True).stack().reset_index(),
on=”level_0″,how=”o

元記事を表示

House Prices: Advanced Regression Techniques やってみた

#0.Intro
何ごとも始める時がまず大変で、その次は「自分なりの形」で「ある程度なんとかなりそう」というところに持っていくところが一つの山かと思います。
TitanicをSubmitしたのが7ヶ月前らしいです。それから半年以上経っています。何にもしていなかったわけではないですがなかなか時間がとれず。
しかし、幸か不幸か少し長い休み(1ヶ月程)を得たので、この機会に自分なりのKaggleのやり方みたいな物を形にしたいなと思い取り組み再開しました。
結果一つ纏まった形を作る事が出来たので記事にしたいと思い綴ることとしました。

#1.始める前に
機械学習もプログラミングに違いないのですが、所謂普通のプログラミングとはかなり毛色が違うように思えます。通常のプログラミングも結局データとにらめっこなのですが、機械学習のプログラミングはご存じの通りデータの処理の比重が極端に大きい。ですので、作業の進め方もしっくりくる形に落ち着くまでの時間かかりました。

##1.1.開発環境
今回のWindows 10上のWSLにUbuntuを入れ、そこにAnacondaの環境を構築。コーディングとコードの実

元記事を表示

カルマンフィルターは株価のトレンド予測に利用できるか

# カルマンフィルターは株価のトレンド予測に利用できるか

## この記事の概要について
株価のトレンドの予測のためのカルマンフィルターの実装とその感想です。
結論から言うと「短期については利用できるかも」です。
google colabの上で動かしてます。

## カルマンフィルターとは何か
もともとロボットやロケットの制御のためなどに使われてるもので、誤差のある観測値を利用して、そのシステムの状態がどうなっているか推定するためのものです。
今回はその中でも一番単純なものを使ってます。

## 前提
株価の変動をある確率分布に従って変動していると考えて、それに基づいて予測しているので指標の一つとしてみてください。

また、今回では株価の変動の潜在的な仕方およびそれが実際に変化する仕方は、正規分布に従ってると仮定しているので非現実的な仮定をしています。

なので、株価がある程度安定的に動いているものに対してはしっかり働いてくれる一方で、急な変化にはついていけないと思われます。

## 計算式(実装)
計算式がなぜそうなるかはめんどくさいので、見たい人は[wiki](https://ja

元記事を表示

Pythonで順列(Permutation)を実装してみた

# 概要
Pythonで、`itertools`にある`permutations()`を実際に実装してみました。
本家ほど高機能なものは実装していませんが、基本的な全ての被りのない順列の組み合わせを吐き出します。

著者は幼稚園卒なので、記事内の間違いに関しては予めご容赦願います。

# 理論

![permutatuin (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535270/208af5dc-9e26-a4ca-d5f2-74e42a87ac4a.png)

# 実装

コード可読性を優先しているので、一部冗長に書いている部分があります。

“`python
def permutations(source):
length = len(source)

if length == 1:
return [source]

result = []

for x in range(length):
nxar

元記事を表示

[AWS] API Gateway + LambdaをX-Rayでトレースしてみる

# X-Rayとは
分散アプリケーションの分析とデバッグのためのサービスです。
詳細は、こちら。
[AWS X-Ray](https://aws.amazon.com/jp/xray/)

# 前提
今回も、以下構成でサンプルを構築してみようと思います。

– SAM
– Python3.8

SAMをはじめとする基本知識は、こちらを参照願います。

– [[AWS] Serverless Application Model (SAM) の基本まとめ](https://qiita.com/herohit-tool/items/420f4a7b294cfcf56ed7)
– [[AWS] Serverless Application Model (SAM) でAPI Gateway + Lambda + DynamoDBなサンプルを作成してみる](https://qiita.com/herohit-tool/items/5b0fe520f6f28fb5b4bc)

# サンプルを作ってみよう
## プロジェクト作成
例によって、SAMでHello Worldベースのプロジェクトを作成して

元記事を表示

【Pythonで作ってみた】XMLデータ一括出力用ツール

テストデータを楽に作成したいので、大量のテストデータ作成用ツールをpythonで作成しました。
具体的にはtsvにファイル名とファイルの内容を格納しておき、これを読み込んで、xmlのテンプレートの対象のタグだけ書き換えて一括でテスト用のxmlファイルを出力するものです。

##入力ファイルの準備

1.sample.tsv(出力する際のファイル名と書き換え部分の配列)
 入力ファイルのサンプルです。

“`
FILENAME SENTENCE
sample_1.xml ice cream
sample_2.xml chocolate box
sample_3.xml candy bar
“`
2.templete.xml(出力するための元ネタとなるXML)
 出力用テンプレートのサンプルです。

“`

sweets
sweets
sweets

“`
##XMLデータ一括出力用ツールのソース

3.exportToXML.

元記事を表示

2つの画像をイメージハッシュで比較する

# はじめに
2つの画像の同一性をイメージハッシュで比較方法を確認する。

# イメージハッシュについて
一般にハッシュは、文字列からハッシュ関数を使って得られた値を指す。
画像でも同じようなことができて、要約した値が生成できる。
そのため大量にある画像をイメージハッシュを使うことで、類似したパターンの画像を絞り込むことが可能。

ハッシュ関数は複数あるので、比較するためには1つに絞りこむ必要がある。
参照:
https://qiita.com/mamo3gr/items/b93545a0346d8731f03c

# 2つのイメージハッシュを比較する
ハッシュの距離を計算するには、排他的論理和(XOR)をとり、「1」をカウントする。

ソースコード例(Python)

“`pytyhon:sample.py
hash_a = ‘b69cbd89090b8f8e’
hash_a_value = int(hash_a, 16)
hash_b = ‘b69c3d89090b0f8e’
hash_b_value = int(hash_b, 16)

hamming_distance = b

元記事を表示

偏微分について -なぜを解決する-

#偏微分の目的
A;説明変数が複数ある中でのデータの関連付けの可能性や現状の把握について役立つため。

##微分では何をしていたか?
二次元上のグラフを考えた時に、二値の範囲における傾きを作る。
##なぜ求めるか?
①ある点における直線や曲線においての法則についてさらに細かく考え、精度の高いものにするため。
②これによって2値の間にある関連性についてさらに把握でき、法則性として他に当てはめることができるようになるため。

##手順
①二値の最初の値の接線を引く。
②これを数式によって計算する(極限値)

次に偏微分について考える
偏微分は、多変数関数における微分を目的として行うもの
###2変数関数、3変数関数、多変数関数

###どのように行うか?
多変数関数におけるグラフ(入力多数、出力1)を考える。
三次元上で基本的に考えることができる

一点を固定し、複数の軸から傾き(極限値)を求める。

グラフは多次元で表されて曲線になるイメージを持つ

###??ラウンドディーが出てくる
この記号は偏微分と微分を区別するための記号

###??デルターが出てくる
方向に対しての微動に関し

元記事を表示

(簡易)RESTサーバーを作る

## はじめに
RESTはサーバーとクライアント間のデータ通信に便利に使用出来ます。
RESTの使用法については、クライアントの作成法は各種言語・フレームワークで情報があります。
しかし、サーバー側については、簡単に用意出来るモックとして「JsonServer」、あるいはApache+PHPなどで構築する方法などの情報がありますが、不自由を受け入れるか手間をかける方法になっています。
(私が探せた範囲での事になります。)

今回は自由にサービスを設定出来て、1スクリプトで簡単に構築できる上記の中間に当たるサーバー構築をしてみました。
(WEBに公開出来るほどの堅牢性は求めず、自分のRaspberryPiのサービスを構築するぐらいが目的になります。)

## ソースコード

いきなリソースコードです。

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

import http.server
import json
import threading
import sys,os
import time

class RestHandler(htt

元記事を表示

【完全備忘録】Pythonのよく使うけど覚えられないコード集

# はじめに
よく書くけどなぜか覚えられず,毎回ググっているコードをまとめました.

# Python スクリプト

### おまじないのあれ
“`python
if __name__ == ‘__main__’:
print(‘Hello World!’)
“`

### 警告を非表示にする
“`python
import warnings
warnings.filterwarnings(‘ignore’)
“`

### list を txt ファイルに保存する
“`python
# 保存
f = open(‘list.txt’, ‘w’)
for x in list_obj:
f.write(str(x) + ‘\n’)
f.close()

# 読み込み
f = open(‘list.txt’,’r’)
list_obj = []
for x in f:
list_obj.append(x.rstrip(‘\n’))
f.close()
“`

### リスト内の検索
“`python
list = [i for i in list if

元記事を表示

“BeautifulSoup”と”IFTTT”を使って「ハーメルン」の更新通知をさせてみた

## はじめに

 APIを利用して小説家になろうの更新通知アプリを作った時に、マイページから作品の更新情報を終えたほうが自分のやりたいことにハマるなあと思ったので、ハーメルンという小説投稿サイトバージョンで作ってみました。

## 何をするもの?

 BeautifulSoup4とIFTTTを用いてハーメルンの更新情報をLINENotifyに通知するアプリです。

## 環境

  • Python 3.7.4
  • BeautifuSoup4 4.9.1

## 準備…の前にAPIとスクレイピングの違いに関する確認・注意

 今回はスクレイピングを利用します。法律で規制がかかっている技術なので、法律の話を確認しましょう。まず注意するべきなのはサイトのサーバーに負荷をかけすぎないようにすることだと思います。今回は、対策としてgetしたりpostしたりした後はtime.sleep(1)を使って待機

元記事を表示

【Python】Dash Cytoscapeで有向グラフを描く

## 動かせる有向グラフを描きたい

RのvisNetworkのように、ブラウザ上で動かせる有向グラフをPythonでも描きたいと思いました.

– [visNetwork, an R package for interactive network visualization](https://datastorm-open.github.io/visNetwork/)

Pythonのgraph libraryとしてはNetworkXが有名なようですが、今回RのvisNetworkに近いイメージで使えるのは[Dash Cytoscape](https://dash.plotly.com/cytoscape)かなと思ったので、サンプルを書き残してみます.

ローカルでサーバーを立ち上げて、ブラウザからグラフを確認します.

## 目標

– from, toの2列のデータフレームから、有向グラフを可視化します.
– input イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14

元記事を表示

OTHERカテゴリの最新記事