- 1. はじめに
- 2. 最大部分配列問題(maximum subarray problem)とは?
- 3. 問題
- 3.1. PostgreSQL – 高速でINSERTしたい君へ
- 3.2. Azure AD との SAML 認証において、シングルサインアウト時に署名の検証に失敗するときの対処
- 3.3. doublet-solverのpython2から、python3への移植と改変。
- 3.4. 初めてのロジスティック回帰
- 3.5. numpy-sigmoid学習
- 3.6. ワイ「DjangoでJOINってできるんか?」
- 3.7. Pythonでbit全探索
- 3.8. Pepperで写真撮影&胸のディスプレイに表示 -Choregraphe2.5.5版-
- 3.9. 言語処理100本ノック-79(scikit-learn使用):適合率-再現率グラフの描画
- 3.10. PyCharmでAnacondaのインタープリタを使用する方法
- 3.11. Python Discord’s winter code jam
- 3.12. AtCoder Grand Contest 041 参戦記
- 3.13. 競プロ用にテストを書く(VSCode + Python + pytest)
- 3.14. 企業研究者のためのMatplotlibまとめ
- 3.15. 学習記録 その14(18日目) Kaggle4
- 3.16. selenium小技 (プロキシ/ヘッドレス)
- 3.17. Djangoがアプリケーション下のtemplatesを検索してくれない
【備忘録】クラス、モジュール、パッケージ、ライブラリ
#はじめに#
Pythonを前提に話をすすめていきます。たぶん。
とりあえず用語をまとめて最後に包含関係をまとめます。##クラス##
クラスは*属性*をもっています。
属性とは*データ属性*と*メソッド*のことです。###データ属性###
クラスにある*データ(変数)*のことです。
データメンバ(C++)とかフィールド(Java)とかプロパティ(JavaScript)みたいなやつ。
いろんな言語でいろんな呼び方するから何が何だかって感じですね。###メソッド###
クラスにある*関数*のことです。
いろんな処理をする子ですね。##モジュール##
拡張子が`.py`の*Pythonファイル*のこと。
このファイルにいろんな定義(変数や関数)が書かれています。
他には実行文(モジュールを初期化するためのもの)も書かれています。##パッケージ##
複数のモジュールをひとまとめにしたもの。
>モジュール名前空間を “ドット付きモジュール名” を使って構造化する手段
https://docs.python.org/ja/3/tutorial/modules.html#pack
【初心者向け】3分でわかるGoogle Cloud Datastoreのデータ構造とCRUD処理
遅くなりましたが、この記事は[ 色んなデータストア触ってみる Advent Calendar 2019 ](https://qiita.com/advent-calendar/2019/datastores)の25日目の記事です。
# はじめに
Google Cloud Datastoreとは、Google Cloud Platform(GCP)上で提供されている、キー・バリュー型のNoSQLデータベースです。
※ NoSQLの詳細はこちらが参考になると思います。
[NoSQLについて勉強する。](https://qiita.com/t_nakayama0714/items/0ff7644666f0122cfba1)初めてCloud Datastoreを触る機会がありデータ構造の理解に苦戦したので、今までよく使っていたSQLと比較して、データ構造についてまとめてみました。
また、クエリもCloud DatastoreのAPIが複数あり、どれを使うべきか悩んでいたので、それぞれのAPIの違いについてもプログラム例を交えて記載しています。Cloud Datastoreを初めて触る
Pythonで最大部分配列問題(maximum subarray problem)を解く
はじめに
皆さん初めまして。ryuichi69と申します。
本日はアルゴリズムの勉強したもののアウトプットをここに書こうと思います。本日は最大部分配列問題(maximum subarray problem)というアルゴリズムを扱います。説明の分かりにくい部分、要件漏れ等がありましたらコメントにてご連絡下さい。
最大部分配列問題(maximum subarray problem)とは?
さて本題です。最大部分和問題とは、「各要素に整数が入った配列があり、そのうちいくつか選んだ時、その選んだものの合計の最大値を求めよ」と言う問題です。
問題
nを0以上の整数とします。このとき、n個の要素からなる数列(配列)a[k]が以下の条件をみたしています。
- a[0],a[1],…..a[n-1]は整数
- 数列aの各要素は降順に並んでいるものとします。1≦i≦(n-1)を満たすすべての自然数iに対し、a[i] > a[i+1]をみた
PostgreSQL – 高速でINSERTしたい君へ
# 大量インサートの性能をあげよう
PostgresSQLに大量インサートする場合には、
複数レコードまとめてインサート用のユーティリティを使用しましょう。
あるいは、commit実行頻度を見直して、不要な処理コストを減らしましょう複数パターンで実測して性能を比較します。
PythonでPostgreSQLにアクセスするライブラリのひとつpsycopg2では
複数件まとめてインサート用のユーティリティとして
[execute_values](http://initd.org/psycopg/docs/extras.html)という関数を使用します。
また、commitの実行単位を変更してcommitの実行間隔を変えて実測します。# 確認準備
## テスト用テーブル
“`sql:テスト用DDL
CREATE TABLE test01
(key serial PRIMARY KEY,
text_val text);
“`## テスト用プログラム
簡単のため、実行件数やcommit回数は対話的な入力が行えるようにします。
できるだけ同じ範囲の時間で比較できるように
Azure AD との SAML 認証において、シングルサインアウト時に署名の検証に失敗するときの対処
本記事では、Azure AD が発行する SAML のログアウト リクエストについて、署名の検証に失敗する原因の一つとその対処を紹介します。
## シングル サインアウトとは
Azure AD の SAML 認証 では、[シングル サインアウト](https://docs.microsoft.com/ja-jp/azure/active-directory/develop/single-sign-out-saml-protocol)もサポートしています。例えば、あるアプリに SSO した状態でアクセス パネル(https://myapps.microsoft.com/) からサインアウトすると、該当アプリにもログアウト リクエストが送られます。具体的には、以下のような HTTP リダイレクト バインディングのリクエストとなります。
“`
GET (Azure ポータルで設定したログアウト URL)?SAMLRequest=lZLNauMwFIVfxWgv68eSIwnHtJCNIU1hWrqY…&Signature=oiqkocdvYWfVeYuiESA7e1BvkAvW
doublet-solverのpython2から、python3への移植と改変。
Git hub にある、Doublet-Solverのpython2から、python3への移植。紹介を兼ねて。
移植は、以下の3つで動きます。
①import urllib2 は、いらないので削除。
②xrange()をrange()にする。
③print に()を付ける。ここのコードでは、
①コマンドラインから引数を取れるように
②辞書に未定義の引数でも扱えるように
③歴史的方法に従って、変換ステップ数ではなく、<リンク数>で出力するように
④小文字で扱うように
と、4つの修正を加えてあります。doublet-solverはpythonでは、こんなにシンプルに書けるのですね。びっくりしました。
英語辞書’dic.txt’はこちらにあるので、どうぞ。
#CODE
“`doublet.py
#!/usr/bin/python3
import sys
from
初めてのロジスティック回帰
ロジスティック回帰は仕事でもよく使うのですが、ちょっと気になることがある時になかなか欲しい情報にたどり着けないことが多いので、自分用のメモとしてロジスティック回帰についてまとめておこうと思います。
ロジスティック回帰は医療分野等でよく使われるらしいです。
もちろん他の分野でも解釈性の高さやモデルのシンプルさ、の割に高い精度を出してくれるなどの理由から頻繁に使われます。さて、入力ベクトル $x$ が2つのクラス $C_0, C_1$ のどちら割り当てられるかを予測する問題を考えます。
$y∈ \\{0,1\\}$ を目的変数(出力)、$x ∈ R^d$ を説明変数(入力)とします。
ここで、$C_0$ に割り当てられる時は $y = 0$、$C_1$ に割り当てられる時は $y = 1$ としています。##線形判別
人口的に生成した20個のデータを用意しました(私が適当に作っただけです)。
今回はPythonを使います。“`python:
import matplotlib.pyplot as pltx = [1.3, 2.5, 3.1, 4, 5.8,
numpy-sigmoid学習
#numpy-sigmoid学習
自己学習の備忘。
numpy-sigmoidを理解するために図と学習用コードを並べる
![ニューラルネットワークの全体像.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357717/eaa7b66d-07f4-9f49-36d1-e605fb42a3c1.jpeg)**活性化関数にシグモイド関数を使った場合に以下のようになる**
“`python:python
import numpy as np
# シグモイド関数の定義
def sigmoid(a):
return 1 / (1 + np.exp(-a))# 一層目
x1 = np.array([[1], [2]])
w1 = np.array([[0.4, 0.3], [0.7, 0.6]])
a1 = w1.dot(x1)# 二層目
x2 = sigmoid(a1)
w2 = np.array([[0.2, 0.3], [1, 0.7]])
a2 = w2.dot(x2)# 出
ワイ「DjangoでJOINってできるんか?」
(注)この記事はワイ記法です。やめ太郎@Yametaro氏にリスペクトをこめて。
# ある日の我が家
ワイ「[趣味でDjangoアプリを作っている](https://note.com/shimayu22/n/n3a320a86a915)んやが」
ワイ「Modelを書くだけでテーブルも作れるし」
ワイ「管理画面も作ってくれるなんてDjangoは太っ腹やな!」# DBの正規化をした
ワイ「外部キーの設定も楽々や」
ワイ「例えば選手のデータと選手ごとの成績はテーブルを分けた方がええな[^1]」
[^1]: ここだけ見たら必要ないように見えるけど、他でも使ってるから・・・### Players
| id | year | name | position |
|:-:|:-:|:-:|:-:|
| 1 | 2019 | 田中 | 投手 |
| 2 | 2019 | 鈴木 | 一塁手 |
| 3 | 2020 | 高橋 | 外野手 |
| 4 | 2020 | 山田 | 二塁手 |### FielderTotalResults
| id | play
Pythonでbit全探索
## bit全探索 とは 2^n通りの全探索
例題 [ARC061](https://atcoder.jp/contests/arc061/tasks/arc061_a):たくさんの数式
>1 以上 9 以下の数字のみからなる文字列 S が与えられます。 この文字列の中で、あなたはこれら文字と文字の間のうち、いくつかの場所に + を入れることができます。 一つも入れなくてもかまいません。 ただし、+ が連続してはいけません。このようにして出来る全ての文字列を数式とみなし、和を計算することができます。ありうる全ての数式の値を計算し、その合計を出力してください。
>制約
・ 1≤|S|≤10
・ S に含まれる文字は全て 1 〜 9 の数字入力出力例
“`
[in] 125
[out] 176
# 125、1+25、12+5、1+2+5 の4パターンが考えられる。
“`## 考え方
125だったら”+”を入れられる場所は2箇所(1 {a} 2 {b} 5)ですので2^2=4通りの数式が考えられるわけです。abそれそれ”+”を入れるか入れないかの二択が二回。
そしてbi
Pepperで写真撮影&胸のディスプレイに表示 -Choregraphe2.5.5版-
Pepperのカメラを使って写真を撮影し
Pepperの胸のディスプレイ上に撮影した写真を表示させる手順
+ おまけ(Show Imageボックスの使い方) です:vulcan_tone1:※ はじめに ※
あくまでも簡易的な実装方法です。
エラーの発生等は考慮していません:bow_tone1:—
## 1. 写真を撮影する
#### 1-1. Take Pictureボックスを配置
Sening > Vision > Camera Actions > Take Picture
![スクリーンショット 2019-12-25 21.59.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/403136/e39787ec-c67b-c810-1404-871458454204.png)#### 1-2. htmlフォルダを作成
*アプリ内に写真を保存する`html`フォルダを作成します。*Windowsの場合はエクスプローラ
Macの場合はFinderで
現在作成中のアプリのフォルダ
言語処理100本ノック-79(scikit-learn使用):適合率-再現率グラフの描画
[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)の79本目「適合率-再現率グラフの描画」の記録です。
トレードオフ関係にある適合率と再現率がどのように関係しているかをグラフ表示します。似たようなグラフとしてROC曲線も出力しています。
今までは基本的に[「素人の言語処理100本ノック」](https://qiita.com/segavvy/items/fb50ba8097d59475f760)とほぼ同じ内容にしていたのでブロクに投稿していなかったのですが、[「第8章: 機械学習」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#ch8)については、真剣に時間をかけて取り組んでいてある程度変えているので投稿します。[scikit-learn](https://scikit-learn.org/)をメインに使用します。※前回の78本目「5分割交差検定」はやっていません。既に訓練時に`GridSearchCV`関数を使って5分割交差検定をしているため、無駄だからです(正確には5分割交差
PyCharmでAnacondaのインタープリタを使用する方法
モチベーション:pyCharmで実装をした際にpandasをインポートすることができなかった。
pip installするという方法もネット上の記事で紹介されていたが、プロジェクト現場ではネット上からインストールすることができないため、既存のAnaconda環境にあるパッケージ群を使用する方針とする。1.該当のプロジェクトを開く。
2.「Ctrl + Shift + S」を押し、Settingの画面を開く。
3.左側のペインから「Project:XXXXXXX > Project Interpreter」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274248/5ca44b7c-769c-e583-2ea3-e968b972a784.png)
4.Project Interpreterの画面中の「歯車のマーク > Show All」を選択する。
5.表示された画面の右側に表示されている「+マーク」を選択する。
![image.png](https://qiita-
Python Discord’s winter code jam
Pythonの中で一番熱い?GUI開発ライブラリのKivy主催のイベントがあるようです。
10日間(1/17 – 1/26)・4人の仲間と一緒に与えられたテーマに沿ったアプリを作成・提出を行うもののようです。
#賞金として
– $2,000(Digital Ocean Credits)
– 5 JetBrains 1年間のいろんなライセンス
– 5 DigitalOcean t-シャツ
– Python Discord t-シャツ
– Kivy t-シャツ日本のpython強い人に出てほしいです!(わたしは様子を見守ってます)
余談ですがpython discordのスポンサーにJetBrainsとかadafruitがいてびっくりしました~。大きな企業に支えられてるんですね。以上です.
詳細URL
– [Reddit](https://www.reddit.com/r/Python/comments/echu61/python_discords_winter_code_jam_will_run_0117/)
– [Reddit](https://www.reddit.
AtCoder Grand Contest 041 参戦記
# AtCoder Grand Contest 041 参戦記
## A – Table Tennis Training
28分半で突破. WA5. 何だ簡単じゃんと思って提出したらやっぱり簡単ではなかったw
以下のうち一番早いものが解答
1. まっすぐ近寄る(ただし距離が偶数でないとすれ違うので偶数の場合のみ)
2. 1 で待ち合わせをする.
3. N で待ち合わせをする.
4. 2人で1に向かい、先に着くAにいた選手が1ターン1に留まり(これで距離が偶数になる)、折り返してBを迎えに行く
5. 2人でNに向かい、先に着くBにいた選手が1ターンNに留まり(これで距離が偶数になる)、折り返してAを迎えに行く“`python
N, A, B = map(int, input().split())t = float(‘inf’)
if abs(A – B) % 2 == 0:
t = min(abs(A – B) // 2, t)
t = min(B – 1, t)
t = min(N – A, t)
t = min((A – 1 + 1) + (B – A –
競プロ用にテストを書く(VSCode + Python + pytest)
Pythonで競プロをやってみて、せっかくならテストを書いてみようと思いました。
## 環境
– Python: 3.7.5
– pytest: 5.3.2
– VSCode: 1.41.1## ディレクトリ構成
ファイルの置き場所等を先に示しておきます。
“`
.
├── .vscode
│ └── settings.json
├── abc086
│ ├── __init__.py
│ ├── a.py
│ └── test_a.py
├── conftest.py
└── pytest.ini
“`## VSCodeの設定
`.vscode/settings.json` にVSCode側の設定を書き込みます。
“`..vscode/settings.json
{
“python.pythonPath”: “${workspaceFolder}/.venv/bin/python3”,
“python.testing.pytestArgs”: [],
“python.testing.pytestEnabled”: true
企業研究者のためのMatplotlibまとめ
# はじめに
ここでは、Python初心者向けに、Matplotlibについて解説します。
Python3系の使用を想定しています。# ライブラリの読み込み
他のライブラリと同様に、`import`で読み込みます。
`%matplotlib inlline`は、Jupyter Notebookにおいて、ノートブック上でグラフを描画するための記述です。“`python:matplotlib_1.py
%matplotlib inline
import matplotlib.pyplot as plt
“`# 折れ線グラフ
折れ線グラフは、基本的には以下のように描画することができます。
“`python:matplotlib_2.py
%matplotlib inline
import matplotlib.pyplot as pltx = [1, 2, 3]
y = [3, 1, 2]
plt.title(‘Line-chart’) # グラフタイトル
plt.xlabel(‘X-axis’) # x軸ラベル
plt.ylabel(‘Y-axis’) #
学習記録 その14(18日目) Kaggle4
#学習記録(18日目)
勉強開始:12/7(土)〜教材等:
・大重美幸『詳細! Python3 入門ノート』(ソーテック社、2017年):12/19(木)読了
・Progate Python講座(全5コース):12/21(土)終了
・Andreas C. Müller、Sarah Guido『(邦題)Pythonではじめる機械学習』(オライリージャパン、2017年):12月23日(土)読了#Kaggle
参加コンペ:[Real or Not? NLP with Disaster Tweets](https://www.kaggle.com/c/nlp-getting-started) 12/24(火)〜試行錯誤の末モデル完成、学習もちゃんとでき、なんとかsubmitまで至りました。(ただしscoreは0.75)
当初目標が年明けの1月10日だったことを考えると、手前味噌ながらなかなかの健闘だと思います。現段階で採用したのはxgboostとランダムサーチを組み合わせたモデルです。
xgboostのパラメータやランダムサーチの探索箇所など、改善できる点はいっぱいありそうな
selenium小技 (プロキシ/ヘッドレス)
## 背景
seleniumで色々作業した時に得た知見のメモ
#### ベース
“` python
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsoptions = Options()
“`#### 起動オプション
–headlessを付与することでヘッドレスモードで起動可能
“` python
options.add_argument(‘–headless’)
driver = webdriver.Chrome(options=options)
“`–no-sandboxを付与することでサンドボックス外で動作
“` python
options.add_argument(‘–no-sandbox’)
driver = webdriver.Chrome(options=options)
“`プロキシ設定
“` python
option.add_argument(‘–proxy-server=http://%s
Djangoがアプリケーション下のtemplatesを検索してくれない
ほんとうにどうでもいいことなんだけどよく忘れるのでメモ。
Python 3.5.2
Django 2.2.9
Ubuntu 16.04.6 LTS (Xenial Xerus)Djangoにアプリケーション下のtemplatesを探してもらうにはsettings.pyの“`TEMPLATES“`で“`APP_DIRS“`がTrueだけではだめなんです。
“`INSTALLED_APPS“` に自分自身を追加する必要があります。settings.py
“`python
INSTALLED_APPS = [
‘testapp’, #自分自身
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
]TEMPLATES = [