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

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

MLFlow Tracking with PyTorch入門

# はじめに
こんにちは。
インターン先でMLFlowを用いることになったので、備忘録的な感じてつらつらしていこうと思います。
ここでは具体的な使い方をメインに書いていくんで、もっと知りたい方は公式ドキュメント(https://mlflow.org/)を読んでください。
勉強中ですので間違ってる箇所等ありましたら教えてください…。

# MLFlowとは
MLflowは、機械学習タスクにおける実験結果や実行環境などの管理を効率化できるOSSです。
現在は機械学習といえばPythonが最も使われて(多分)いますが、MLFlowはRやJavaでも利用できます。以下は公式サイトに載ってたやつです。
スクリーンショット 2020-07-03 0.45.56.png

最近では機械学習フレームワークも様々な言語で整備さ

元記事を表示

ゼロから始めるLeetCode Day74 「12. Integer to Roman」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

[Python]PylanceのVS Code拡張機能をさっそく使ってみた。

VS Codeなどで使えるPylanceという拡張機能がリリースされていたので早速使ってみました。

参考 : [型ヒントでPython開発を加速 ~Microsoft、VS Code向けの拡張機能「Pylance」を発表](https://forest.watch.impress.co.jp/docs/news/1262974.html)

# (大雑把に)どんな拡張機能?

– マイクロソフト製のPythonの拡張機能です。
– Python拡張機能に入っているようなPythonの入力補完周りが有効になります。これはまあ大半のVS Code使ってPythonのコード書いている方はPythonの拡張機能入れていらっしゃるでしょうからそこまでは大きく変わりません。
– 以前書いたPythonの型チェック用のPyrightと同じように、コードを書きつつ型のミスや補完が効きづらい箇所で型アノテーションをすることで補完が効くようになってくれます(内部でPyrightが使われています)。
– Pyrightの記事: [入力補完を充実させ、より堅牢なPythonコードのための型アノテーシ

元記事を表示

Numpyのeinsumを使って3次元配列の掛け算

知り合いに簡単に3次元配列の掛け算をする方法を聞かれ、調べてみたらNumpyのライブラリにアインシュタインの縮約記号を用いたeinsumというのがありこれを使えば楽にできそうなのでやってみました。

1x2x5の3次元行列と2x3x5の三次元行列をまず適当に2つ作ります。

“`math
A =
\left(
\begin{matrix}
a_0 & a_1
\end{matrix}
\right)
, a_0 =
\left[
\begin{matrix}
0 & 1 & 1 & 0 & 0
\end{matrix}
\right]
, a_1 =
\left[
\begin{matrix}
0 & 1 & 0 & 0 & 1
\end{matrix}
\right]
“`
“`math
W =
\left(
\begin{matrix}
w_0 & w_1 & w_2 \\
w_3 & w_4 & w_5
\end{matrix}
\right)
, w_0 =
\left[
\begin{matrix}
0 & 1 & 2 & 3 & 4
\end{matri

元記事を表示

Ubuntu 18.04 + VsCode + Pytho3 + mysql-connector-python から mariadb10.5 にアクセスしてみる

#目的
・Ubuntu 18.04に mariadb10.5 をインストールする
・デモDB nation をインストールする
・python + mysql-connector-python を使ったサンプルコードを書いてみる

##Repositoriesを追加する

[https://mariadb.com/kb/en/mariadb-package-repository-setup-and-usage/](https://mariadb.com/kb/en/mariadb-package-repository-setup-and-usage/)より

$ curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
[info] Repository file successfully written to /etc/apt/sources.list.d/mariadb.list
[info] Adding trusted package signing keys...
[

元記事を表示

NumPy配列の列を抽出する方法いろいろ

2次元配列の列を取り出す方法のいろいろ.

## import
```python:
import numpy as np
```

## 配列の生成
まずは適当に5x4の配列を生成

```python:
a = np.arange(5*4).reshape([5, 4])
print(a)
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]
# [12 13 14 15]
# [16 17 18 19]]
```

## 特定の1列を抽出する

```python:
# 2列目のみ
b = a[:, 2]
print(b)
# [ 2 6 10 14 18]
```
`a[row, column]`とすると, `row`の部分で行の指定, `column`の部分で列の指定を行う.
今回は列を取り出したいので, `row`の部分は常に`:`とする. `:`のみ記述することで, 行に関しては特に指定しないという意味になる. つまり`a[:, 2]`は, 「すべての行から, インデックスが2の要素だけください」ということになる.

元記事を表示

pythonの __all__ について

pythonを以前勉強してた時期に、`__all__`について触れていましたが、なんだか最近なんだろうって迷い始めたので、ねんのためメモしておきます。

`__all__`というのは`__init__.py`ファイルに書く内容です。それで、allの中に書く文字列は全部このpythonモジュールがimportされる際にimportされます。

それで`from package import *`だと、このpackageの中にある先ほどの文字列の関数がimportされるわけです。それ以外はimportされません。

ということでした。以上

ちなみにですが、`from package import *`は非常に嫌われる書き方なので、できるだけ使わないように気をつけて

以下は参考にさせていただいた海外コミュニティにて質問された際の答えです。一応概要は上記で書いていますので、気になる方は御覧ください。

>`__all__` is a variable that can be set in the `__init__.py` file of a package.

>The `__all_

元記事を表示

python dictとsorted関数について

pythonの勉強をしていると、sorted関数とはは避けて通れないものです。しかもよく忘れるので、メモっておきますね。ここは辞書に対してsorted関数を使っています。
気をつけるべきポイントはlambdaの後ろのyやxは別に何でもいいということです。例えば、lambda aaa:aaa[0]としても構わないのです。なぜなら、ここのyやxはただ前のlistの(例ではlistA, listB, listCのことです)中身なのですから。ここさえ押さえておけば大丈夫そうですよね。
以下の例を見てみてください。

```python
listA = [3, 6, 1, 0, 10, 8, 9]
print(sorted(listA))
#结果1
#[0, 1, 3, 6, 8, 9, 10]

listB = ['g', 'e', 't', 'b', 'a']
print(sorted(listB))
print(sorted(listB, key=lambda y: y[0]))
#结果2
#['a', 'b', 'e', 'g', 't']
#['a', 'b', 'e', 'g', '

元記事を表示

[Pytorch] torch.catの動きを理解する

## はじめに
[PyTorchの公式](https://pytorch.org/docs/master/generated/torch.cat.html)(1)にある```torch.cat```の例だけでは良く分からなかったので他の例を使って理解するための書き残しです.

## sample code

```python
import torch
input1 = torch.randn(2, 3, 4)
input2 = torch.randn(2, 3, 4)
input3 = torch.randn(5, 3, 4)
input_list = [input1, input2, input3]

output1 = torch.cat(input_list, dim=0)
print(output1.size()) # torch.Size([9, 3, 4])

output2 = torch.cat(input_list, dim=1) # error
print(output2.size())

output3 = torch.cat(input_list, di

元記事を表示

(備忘録)ディープ以外の機械学習でメモリが足りない時のincremental learningまとめ

# sklearn
公式回答。非線形モデルはMLPぐらいか?

https://scikit-learn.org/stable/modules/computing.html#strategies-to-scale-computationally-bigger-data

# xgb

stack overflowの回答。あまり使わないので正しいかはわからない

https://stackoverflow.com/questions/38079853/how-can-i-implement-incremental-training-for-xgboost

# lightgbm
githubの公式リポジトリのissueから

見た感じ「sklearnで言う`partial_fit`を再現する方法を見つけた」と自己解決しているっぽい

https://github.com/microsoft/LightGBM/issues/2718

Towards Data Scienceより

xgbでのやり方も乗っている

https://towardsdatascience.com/how-to

元記事を表示

バラ曲線のnとkを変えた場合のグラフを、タイル状に描画する

```python
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(30,30))
c=1
for k in range(1,6):
for n in range(1,6):

ax = fig.add_subplot(5,5,c)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['bottom'].set_position('zero')
ax.spines['left'].set_position('zero')
ax.axis([-1,1,-1,1])

th = np.arange(0, (2*np.pi)*k, 0.01)

r = np.sin((n/k)*th)
x = r * np.cos(th) # 極座標からの変換
y = r * np.sin(th)

元記事を表示

印象を表す語と10色の関係を表す行列を作る

```python
from google.colab import drive
drive.mount('/content/drive')

from PIL import Image
import numpy as np
import os
from scipy.spatial import distance

# filepathで指定した画像ファイルを読み込み、その画像のRGB値の平均をNumpyのArrayで【行ベクトルで】返す関数 ext_mean_rgb(filepath)
def ext_mean_rgb(filepath):
image = np.array(Image.open(filepath).convert('RGB')).reshape(-1,3)
return np.array([np.mean(image[:,0]),np.mean(image[:,1]),np.mean(image[:,2])])

# RGB値をnumpy array、qcolor=np.array([r,g,b])で与えられると[赤,橙,黄,緑,青,紫,ピンク,白,グレー,

元記事を表示

Pythonの超基本文法カンニング用プログラム_フロー制御文ver

仕事でプログラミングをしないが趣味でpythonを始めた私自身のためのチートシート。初学者の方は「思い出す」作業にどうぞお使いください。

超基本文法について理解しているものの、python独特の書き方をすぐ忘れるのでカンニング用プログラム。

確認環境:Python3.7.6

#フロー制御① if文
```python:01_if.py
#末尾の:忘れがち。
print('あなたの名前を入力してください。Alice,usagi,etc...')
name = input()
if name =='Alice':
print('やぁ、Alice.')
elif name == 'usagi':
print('どうも白うさぎさん')
else:
print('初めまして、' + name + '.')
```

```python:出力例(Aliceと入力すると)
あなたの名前を入力してください。Alice,usagi,etc...
Alice
やぁ、Alice.
```

#フロー制御② whileループ
```python:02_while.py
#無限ループにな

元記事を表示

python selenium

#ページ全体のスクリーンショット

```python:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options

# ブラウザーを起動
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome('/Desktop/selenium/chromedriver', options=options)

driver.get("https://www.yahoo.co.jp/")

w = driver.execute_script('return document.body.scrollWidth')
h = driver.execute_script('return document.body.scrollHeight')
driver.set_window_size(w, h

元記事を表示

ゼロから始めるLeetCode Day73 「1491. Average Salary Excluding the Minimum and Maximum Salary」

# 概要

海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。

と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。

ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

Python3で解いています。

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetC

元記事を表示

AWS S3からファイルを取得したFlask APIがファイルをレスポンスとして返戻し、Vueでダウンロードする

# はじめに
忙しいタイトルをしていて、大変申し訳ありません。
現在、以下のアプリ構成でお仕事をしています。
**フロントエンド: Vue.js**
**バックエンド: Flask (python)**

Flaskの方については、これまで全く触ったことがなかったので、新鮮さを噛みしめつつ、日々触っています。
そもそもpythonの方も、ファイルを読み込んでcsvを吐き出してくれるというプチツールを作ったことがあるぐらいですので、多くのことを勉強させてもらっています。

# 本記事で書くこと
タイトルそのままですが、以下を実現します。
1. Flask(Api)が、AWS SDK for Python (Boto3)を使って、AWS S3からファイルを取得する。
2. 取得したファイルデータをレスポンスに詰め、クライアント(Vue.js)に返却する。
3. クライアント(Vue.js)がレスポンスからファイルをダウンロードする。
~~Lambda + API GateWayで良いのでは・・・~~
こんなこともできるんだというぐらいの気持ちで読んでください。

# 本記事で書かない

元記事を表示

Pythonのバージョンを変更する方法

これからPythonを始める人で、デフォルトのバージョンを変えたい!という時に役立つかと思います。
自分もPythonを3系に変更しようとした際に、手間取りました。

ここではpyenvというツールを使用していきます。
2系に再度切り替えも簡単にできますので非常に便利かと思います。

### まずはバージョンを確認

```
$ python -V
Python 2.7.10
```
### Homebrewを使ってpyenvのインストールを実行
```
$ brew update
# Homebrewを最新にする
```
```
$ brew install pyenv
# pyenvのインストール
```
### 必要なPythonのバージョンを選択してインストール

```
$ pyenv install --list
# インストールできるバージョンの一覧を表示するコマンド
```
```
$ pyenv install 3.5.6
# Pythonのインストールを実行
```
### インストール済みのバージョンが表示される

```
$ pyenv versions

元記事を表示

SVMを数学的背景から5分で理解しようとする高校生

###ご覧いただきありがとうございます。大変恐縮ながら、ミスがあった場合はズバっとコメントして頂けると幸いです。
*細かい計算方法の理由や計算のカラクリを一部飛ばしてお送りしております。。。。。。
*図は参照させて頂いたサイト及びyoutubeからご覧いただけます。。。。。。
*一部情報欠陥により解釈が難しい場合があるため一番最後の参照させて頂いたサイト、youtubeをご覧になりながらみることをお勧めいたします。。。

###大まかなSVMの流れ
80%①マージンの最適化をするための定式を求める
10%②①の式をさらに簡単に見やすくする。
10%③マージンの最適化の式を活用するにあたって一番扱い易い形に変形。

###SVMって何?
分類を行う。
具体的に行うことはハードマージンやソフトマージンの最大化を行う。
ハードマージンは、わかりやすくグループに固まって分類可能なバリアンス(分散)を扱う。
ソフトマージンは、はっきりとグループごとに固まっていないバリアンス(分散)を扱う。
;ソフトの場合、道の外側にあるかないかで分類分けをしマージンの中にある値

元記事を表示

Python3ではじめるシステムトレード: システムトレードにおける対数の役割

システムトレードという言葉は和製英語で正式にはsystematic tradingといいます。予め定められた規則に従って株式、債券、為替などの流動性の高い(取引の活発な)金融商品を売買する方法だと考えればよいと思います。長い間、金融商品の価格を科学的に分析するといっても、十分なデータが得られずに来ました。そのために、イデオロギーや概念、語り継がれている売買手法が注目を浴びてきました。しかし、システマティック・トレーディングの世界ではデータを重視して、売買の方法を探していきます。したがって、本書がもっとも大事にしているのが

データ
モデル
売買の規則
一貫性
です。

データを客観的に分析するために、価格の動きのメカニズムを説明するモデルを考えます。また、投資目的を達成するために売買の方法を作り上げていきます。設計した売買が実現可能かどうかを判断するためには、金融市場の売買のメカニズムを知っている必要があります。そして、出来上がった取引手法の作り出す成果、またはその効果を客観的に判断するために、統計的手法を用います。

# 利回り、収益率、変化率

投資によりどれだけの収益が得られたか

元記事を表示

Anaconda3環境で,cadnano2.5をインストールする

# 前書き

別記事 (https://qiita.com/ktmene/items/9546bb3379973fd3e88a ) にAnaconda3環境でcadnano2をインストールする方法をまとめました.

この記事では,現在開発途上にあるcadnano2.5をインストールする方法をまとめます.

## 参考

https://github.com/douglaslab/cadnano2.5

https://cadnano.readthedocs.io/en/master/index.html

# 実行環境

- windows10
- Anaconda3 (Python3系)

# cadnano2.5のインストール

python3.6の仮想環境を作る
※3.6でないとだめ

```
$ conda create -n cadnano2.5 python=3.6
> Proceed ([y]/n)?
$ y
```

仮想環境に移動

```
$ conda activate cadnano2.5
```

インストール
※これで必要なパッケージを全てインストールしてく

元記事を表示

OTHERカテゴリの最新記事