Python関連のことを調べてみた2019年12月24日

Python関連のことを調べてみた2019年12月24日

言語処理100本ノック-73(scikit-learn使用):学習

[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)の73本目「学習」の記録です。
調査や試行錯誤をしていたら、非常に時間をかかってしまいました。

今までは基本的に[「素人の言語処理100本ノック」](https://qiita.com/segavvy/items/fb50ba8097d59475f760)とほぼ同じ内容にしていたのでブロクに投稿していなかったのですが、[「第8章: 機械学習」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#ch8)については、真剣に時間をかけて取り組んでいてある程度変えているので投稿します。[scikit-learn](https://scikit-learn.org/)をメインに使用します。

# 参考リンク

|リンク|備考|
|:–|:–|
|[073_1.学習(前処理).ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/08.%E6%A9%9F%E6%A2%B0%E5%A

元記事を表示

AWS Lambda/PythonでJSON形式でログを出すベストプラクティス

Lambdaはログを CloudWatch Logs に自動保存しますが、CloudWatch Logs にはJSON形式のログを自動でパースして整形表示したり検索したりする機能があります。是非とも、ログをJSON形式にしたいところです。

しかし、「python lambda logging json」でググって見つかる記事は、いずれも内容に不備があるようでしたので、自分がベストだと思う方法を紹介するのがこの記事です。

# お断り

Pythonのログ出力は標準ライブラリの`logging`がスタンダードなので、この記事ではloggingを前提にしています。

printを使うべきではない理由・logging の正しい使い方については「[ログ出力のための print と import logging はやめてほしい](https://qiita.com/amedama/items/b856b2f30c2f38665701) 」という記事が分かりやすいです(文体は辛辣ですけど)

# これが(きっと)ベストプラクティスだ!

“`python
import logging
impo

元記事を表示

指定ファイルが存在しないとき新しいファイルを作成する方法—ファイルが存在していれば書き込む

ここでは、もし指定のファイル(text.txt)が存在していなければ、ファイル(text.txt)を作成し、存在していればファイルに”test”と書き込むことをやってみる。

“`sample.py
import os
import pathlib

TEXT_FILE = “text.txt”

if not os.path.exists(TEXT_FILE):
pathlib.Path(TEXT_FILE).touch()
print(“作成しました”)
else:
with open(TEXT_FILE, “w”) as file:
file.write(“test”)
print(“書き込みました”)

# 出力結果(1回目)
# 作成しました

# 出力結果(2回目)
# 書き込みました
“`

osとpathlibの組み合わせででき、とても簡単に空のファイルを作成することができた。

元記事を表示

faiss のちょっとニッチな機能紹介

こんにちは,[ABEJA Advent Calendar](https://qiita.com/advent-calendar/2019/abeja) の23日目です.

## はじめに
みなさん,[faiss](https://github.com/facebookresearch/faiss)というライブラリをご存知でしょうか?Facebook Resarch の近傍探索ライブラリで,非常に使いやすく[チュートリアル](https://github.com/facebookresearch/faiss/wiki/Getting-started)も充実しているため,業務でも趣味でも頻繁に利用しています.
しかし,そんな便利なライブラリにも弱点はあります.ちょっとニッチなことをやろうとすると,「まぁ細かいことは説明しなんでテストコード見て雰囲気掴んでね(-д☆)キラッ」と言わんばかりのこれです.
![Screenshot_2019-12-23 facebookresearch faiss.png](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

値の”あり” 、”なし”を簡単に判定する基本テク

リストに値が入っているか、いないかの判定でlen()を使って判定することもできるが、これだとスマートじゃない。

“`sample.py
list_1 = []
if len(list_1) > 0:
print(“list_1 : Not empty”)
else:
print(“list_1 : empty”)
“`

もっと簡潔にかける方法あり、それは以下。

“`sample.py
list_1 = [] # 空のリストを用意

if list_1:
print(“list_1 : Not empty :”, list_1)
else:
print(“list_1 : empty”)

list_1.append(1) # 空のリストへ値を追加

if list_1:
print(“list_1 : Not empty :”, list_1)
else:
print(“list_1 : empty”)

# 出力結果
# list_1 : empty
# list_1 : Not empty : [1]
“`
上記の

元記事を表示

Matplotlib で軸をパーセント (%) 表示にする

たいしたことない話だけど忘れがちなので。

## サンプルデータ
“` python
import numpy as np

arr = np.random.randn(10)
print(arr)
# => array([ 0.24671671, -0.8013258 , -0.29147271, -0.10755521, -1.39065478,
# -1.03983494, -0.75304377, 0.62645801, 0.76417769, -0.31104797])

“`

## 普通にプロットした場合
“` python
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.bar(x=range(len(arr)), height=arr)
ax.set_title(‘何らかの割合’)
“`

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

元記事を表示

with openのファイル操作—「../」

with openのファイル構造、操作がよくわからなかった

sample.pyの場所
 Python → robot → hello → sample.py

hello.txtの場所
 Python → robot → templates → hello.txt

“`sample.py
#クラスの一部コードを記載
def hello(self):
with open(“../templates/hello.txt”, encoding=”utf-8″) as f:
t = string.Template(f.read())
contents = t.substitute(robot_name = self.name)
print(contents)
user_name = input()
“`

「../」を上手く使えばできる

元記事を表示

雰囲気で分析している人のために(線形回帰モデル編1)

#はじめに
得られたデータが線形回帰モデルの実現値であると仮定して最小二乗法で線形回帰モデルの係数を推定すると以下のような推定結果が得られます。

(説明するための前振りです。例としてpythonのライブラリと落ちてたデータ使ってます。)

“`
import pandas as pd
import statsmodels.api as sm

# 世界の二酸化炭素濃度月平均の推移
# (https://www.data.go.jp/data/dataset/mlit_20180523_0032)より
df_co2 = pd.read_csv(‘co2.csv’)

# 年々世界の二酸化炭素濃度は上がってきてるのではないか? #

# 説明変数として全384時点(0~383)を使う。
df_co2[‘x’] = df_co2.index
X = df_co2.loc[:, [‘x’]]

# 目的変数として各月の二酸化炭素濃度(ppm)平均を使う。
Y = df_co2.loc[:, [‘ave_ppm’]]

元記事を表示

PythonでExcelを添付してメールを送信する

# 概要
先日、業務で「PythonでExcelを添付してメールを送信する」機能を試行錯誤して実装しました。
Djangoのメール送信機能を使ったら、わりかし簡単に実装できたので、自分と同じに状況になるかもしれない人のために記事を作成しました!

# 環境
`Python 3.7`
`Django 2.2`
※ Djangoを利用していないと本記事の実装はできません。

# 事前準備
`openpyxl`をインストールします。

“`
$ pip install openpyxl
“`

# メールサーバの設定
プロジェクトの`settings.py`に送信先の情報を追加します。
送信するメールサーバの情報を記載してください。

“`settings.py
EMAIL_HOST = ‘00.00.00.00’ # 送信メールサーバ
EMAIL_PORT = ‘000’ # 送信メールポート
“`

# メールに添付するExcelを整える
添付したいExcelをbytesオブジェクトに変換します。
これをしないとメール送信ができません。

“`
from ope

元記事を表示

顔写真をゆゆ式風に変換してみたかった。

# 1. はじめに
この記事は、[ゆゆ式AdventCalender2019](https://adventar.org/calendars/4096)の24日目の記事です。

# 2. やりたいこと
* ~~ゆゆ式の世界に行きたい~~
→**顔写真をゆゆ式風に変換したい**

去年のAdventCalenderでは、CycleGANで白黒の漫画への自動着色を試しました。([CycleGANで漫画をカラーにしてみる~ゆゆ式を例に~](https://qiita.com/navist99/items/a08aaec58a1737cf60c1))
CycleGANは、色やテクスチャを変えるなどのスタイル変換は得意な一方で、形状変換は苦手という特徴がありました。

そこで今年は、スタイル変換と形状変換の両方を実現するGANである[U-GAT-IT](https://arxiv.org/abs/1907.10830)を用いて、顔写真からゆゆ式風のイラストを生成してみます。

イメージはこんな感じ↓
example.pngAzure AD で OIDC 認証するアプリを作ってみる

## はじめに

Azure AD と自分のアプリの連携を考えたとき、以下のようなことが可能です。

* Azure AD を IdP とした OpenID Connect による SSO
* Azure AD 側のユーザーおよびグループを SCIM によってアプリ側に自動プロビジョニング

OpenID Connnect (OIDC) の情報は割と充実していますが、SCIM の情報は少ないと感じたので Azure AD での設定とアプリの実装例があればと思い記事を書き始めました。しかし、今回は 1 点目の OIDC で SSO できるようになるところまでを扱います。アプリは Django で実装し、認証フローは認証コード フローを使います。一応、自動プロビジョニングも見据えて設定していこうと思います。

では、やっていきましょう! (今回のソースコードは [github](https://github.com/tomatsue/django-azuread-oidc) にあります。)

## 1. Django について

Django は Python の Web アプリケーション

元記事を表示

GPLVMの基本形について色々まとめてみた

この記事は[古川研究室Advent_calendar 23日目](https://qiita.com/advent-calendar/2019/flab)の記事です。

#はじめに

GPLVMとはガウス過程(GP)を用いた教師なし学習法で,高次元空間上にデータが分布する低次元の多様体を推定することができます.GPLVMの一番の魅力はモデルがとてもシンプルであるため拡張性が高く,理論的に扱いやすいところだと思います.実際,ハイパーパラメータが理論的にベイズ推定の枠組みで推定できたり,時系列データ解析[^1]やマルチビュー解析[^2],テンソル解析[^3]などのより複雑な状況への拡張が容易などの利点があります.今回はもっとも基本的なGPLVMのアルゴリズムを確率的主成分分析(probabilistic PCA : pPCA)からスタートして導出します.今回の導出はおおむねLawrence先生の論文の流れに従っているので必要があればそちらの方を参照ください[^4].

#probabilistic PCA

OTHERカテゴリの最新記事