- 1. 【備忘録】PythonでMongoDBを操作する
- 2. Pythonの@propertyメソッドについてまとめる
- 3. ニコニコ大百科解析事始め ~提供されるデータをJSONして触る~
- 4. 関数のデフォルト引数でリストを与えてしまうと・・・
- 5. AtCoder Beginner Contest 061 過去問復習
- 6. 【Jupyter Notebookメモ】matplotlibで漢字表示を行う
- 7. 言語処理100本ノック-83(pandas使用):単語/文脈の頻度の計測
- 8. PythonでFBXファイルを ASCII BINARY 変換
- 9. データサイエンティスト育成講座 Chapter3 3日目
- 10. レポート_深層学習(後編2)
- 11. レポート_深層学習(後編1)
- 12. レポート_深層学習(前編2)
- 13. Jupyter_学習ノート_000
- 14. [Python3 入門 3日目] 2章 数値、文字列、変数 (2.2〜2.3.6)
- 15. DjangoのMigrateを最初からやり直したい
- 16. Pandasを用いたクロス集計
- 17. DjangoのModelFormがスゴかった。
- 18. 学習記録 その19(23日目)
- 19. Lambda(Python)でGoogle Driveへファイルアップロード
- 20. AWS Lambda における Python 2.7 ランタイムのサポート(2020.1時点)
【備忘録】PythonでMongoDBを操作する
postgreSQLと併せてよく忘れるので書き残しておきます。条件指定はもっと細かい操作はpymongoの使い方を参照ください。
“`Python
from pymongo import MongoClientmongo_server = ‘localhost’
mongo_port = ‘27017’
mongo_database_name = ‘database’
mongo_collection_name = ‘collection’def display_data(collection, mongo_filter=None):
data = collection.find(filter=mongo_filter)
for elem in data:
print(elem)def insert_data(collection, data):
collection.insert_one(data)if __name__ ==’__main__’:
mongoclient = MongoCl
Pythonの@propertyメソッドについてまとめる
# 大前提
“`
class Man1():
def __init__(self, name):
self.name = name“`
このように定義するとインスタンス変数nameの参照、書き換え両方可能である。
“`
# 初期化
Paul = Man(“Paul”)# 参照可能
print(Paul.name)
# 書き換え可能
Paul.name = Mac
“`# プライベート変数もどきを実現したい
しかし、あるインスタンス変数を
* 必ずgetter/setter経由で参照/書き換えしたい
* 参照は許すが書き換えは禁じたいという場合がある。この場合、
“`
# インスタタンス変数のprefixを__で定義(これにより__nameはマングリングされこの名前は参照できない)
class Man():
def __init__(self, name):
self.__name = name# この関数名は既存のインスタンス変数名と被ってはいけない
@property
ニコニコ大百科解析事始め ~提供されるデータをJSONして触る~
# ニコニコ大百科データセットを使う
ニコニコ大百科データセットは IDR で公開されているニコニコ大百科の2008~2014年の記事とその記事へのコメントを集めたデータセットです。知識抽出をはじめとする自然言語系の研究に向いていますが、Wikipedia のようにおとなしいデータセットではなく、かなり癖のあるデータセットとなっています。
例えばニコニコ大百科にある文は半分近くが主語が欠けている文章となっていますし、必ずしも文体が統一されているわけでもないですし、AAなんかも入っていたりします。
今回はこのデータセットの解析をしてみたいなーと思ってくれる **面白い人** を求めて簡単な前処理のツールとともにデータの中身を紹介していきます。
# 提供されているニコニコ大百科を前処理する
提供されているデータは **ちょっと特殊なCSV** で、適切な前処理を施すことで標準のCSVに変形することが出来ます。
また、HTMLはいくつかのタグが煩くて解析の都合上少し面倒になります。
このため1. CSVを前処理する
2. ニコニコ大百科の記事(HTML)をJSONに変形する
関数のデフォルト引数でリストを与えてしまうと・・・
“`py:1
def test(x, l=[]):
l.append(x)
return ly = [1, 2, 3, 4]
r = test(7, y)
print(r)
“`“`:1の実行結果
[1, 2, 3, 4, 7]
“`“`py:2
def test(x, l=[]):
l.append(x)
return lr = test(100)
print(r)
r = test(100)
print(r)
“`“`:2の実行結果
[100]
[100, 100]
“`同じ処理を二回したつもりが、
二回目は100が二個になる。これは、リストが参照渡しであるが為に起こる。
バグに繋がる事が多いため、
リストやデイクショナリーの様に参照渡しのものをデフォルト引数におかない。そこで以下の様に書く。
“`py:3
def test(x, l=None):
if l is None:
l = []
l.append(x)
return ly = [1, 2,
AtCoder Beginner Contest 061 過去問復習
#所要時間
#[A問題](https://atcoder.jp/contests/abc061/tasks/abc061_a)
場合分けして出力するだけ
“`python:answerA.py
a,b,c=map(int,input().split())
if a<=c<=b: print("Yes") else: print("No") ``` ```python:answerA_better.py a,b,c=map(int,input().split()) print("Yes" if a<=c<=b else "No") ``` #[B問題](https://atcoder.jp/contests/abc061/
【Jupyter Notebookメモ】matplotlibで漢字表示を行う
# はじめに
Jypyter Notenook上のmatplotlibで漢字表示をするための方法メモ。
以前は、もっとややこしい方法を使っていたが、こちらの方がシンプル。
Google Colaboratory とWatson Studioで動作確認済みです。# コード
## ライブラリのロード
“`py3
# 必要ライブラリの導入
!pip install japanize-matplotlib | tail -n 1# 必要ライブラリのimport
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt# 日本語化対応
import japanize_matplotlib #日本語化matplotlib
import seaborn as sns
sns.set(font=”IPAexGothic”) #日本語フォント設定# データフレーム表示用関数
from IPython.display import display
“`## サンプル表示のためボストンデータセッ
言語処理100本ノック-83(pandas使用):単語/文脈の頻度の計測
[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)の83本目「単語/文脈の頻度の計測」の記録です。
約800MBのファイルに対する処理なので時間がかかります(7分程度)。一括で読むとメモリエラーが出るかと思いpandasのchunksizeオプションを使って乗り切ろうとしていたら全然できずに苦労しました。結局一括で読み込めて特に問題なかったです。# 参考リンク
|リンク|備考|
|:–|:–|
|[083.単語/文脈の頻度の計測.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/09.%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E7%A9%BA%E9%96%93%E6%B3%95%20(I)/083.%20%E5%8D%98%E8%AA%9E%EF%BC%8F%E6%96%87%E8%84%88%E3%81%AE%E9%A0%BB%E5%BA%A6%E3%81%AE%E8%A8%88%E6%B8%AC.ipynb
PythonでFBXファイルを ASCII <--> BINARY 変換
任意ディレクトリ内にある、
全てのfbxファイルを
ASCIIフォーマット、又はBINARYフォーマットに
一括で変換したい時があったので、
python fbx sdk でやってみました。# 環境
– macOS Catalina
– python 3.7.0
– FBX Python SDK (2020.0.1)# FBX Python Bindings
公式ドキュメントを参考に、FBX Python Bindings を環境に入れます。
[Installing Python FBX (2020.0.1)](http://help.autodesk.com/view/FBX/2020/ENU/?guid=FBX_Developer_Help_scripting_with_python_fbx_installing_python_fbx_html)ちなみに、その時の最新版をみたい場合は、
下記のようにいくと取りにいけるようです。
https://www.autodesk.com/products/fbx/overview -> GET FBX SDK -> FB
データサイエンティスト育成講座 Chapter3 3日目
なかなか時間が取れないけれど、少しずつでも進めていく。
昨日までで、相関近くまで行った。そう、ピアソンだ
### Pearsonr
> sp.stats.pearsonr(student_data_math.G1,student_data_math.G3)
> (0.8014679320174141, 9.001430312276602e-90)結果として、出てくる0.801という値が1に近づけば近づくほど、2変数間の相関が強いということになる。
まて、2番目の9.001はどうしたんだ…というわけでリファレンスをチェックだ
> Returns
> r : float
> Pearson’s correlation coefficient
> p-value : float
> 2-tailed p-value
>
The p-value roughly indicates the probability of an uncorrelated system producing datasets that have a Pearson correlation
レポート_深層学習(後編2)
#TensorFlow
実務では、numpyから作成するのではなく、Tensorflowなどのライブラリを用いて作成するのが一般的。Tensorflowの使い方
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548419/6abcea8d-efb6-9fa0-6456-6e8e26ae09a3.png)Tendorflowでは、numpyとは異なった書き方になるので注意が必要。
・インポートはnumpyと同様。
・定数の定義はtr.constant()を用いる。constant(数字, データ型, 配列形状)の順に定義する。
aでは数字1のみ定義、bでは、数字2でfloat型の3×2の配列、cでは、数字は連番(0~4)でfloat型の2×2の配列と定義している。
・Tensorflowでは、Tensorを用いており、Tensorを動作させるには、tr.Session()を定義してあげる必要がある。
そのため、tr,Session()を定義する前のprint()では、Tens
レポート_深層学習(後編1)
確認テスト(3-1)
サイズ5×5の入力画像を、サイズ3×3のフィルタで畳み込んだ時の出力画像のサイズを答えよ。
なおストライドは2、パディングは1とする。答え
出力画像(縦サイズ) = (入力画像(縦サイズ) + 2×パディング - フィルタ(縦サイズ) / ストライド) + 1 より
(5+2×1-3/2) + 1 = 3出力画像(横サイズ) = (入力画像(横サイズ) + 2×パディング - フィルタ(横サイズ) / ストライド) + 1 より
(5+2×1-3/2) + 1 = 3よって、出力画像のサイズは3×3のサイズとなる。
#再帰型ニューラルネットワーク(RNN)
RNNは、時系列データに対応可能な、ニューラルネットワークである。
時系列データは、時間的順序を追って、一定間隔ごとに観察され、しかも相互に統計的依存関係が認められるようなデータの系列
例えば、音声データやテキストデータ、株価データなど確認テスト(3-2)
RNNのネットワークには大きく分けて3つの重みがある。1つは入力から中間層を定義する際に
レポート_深層学習(前編2)
深層学習(前編1)の復習
勾配消失問題・・誤差逆伝播法で下位層に進んでいくと、勾配が緩やかになっていく。
勾配が緩やかになるということは、勾配降下法でのパラメータ更新が
ほとんど変わらないことになってしまう。それにより、訓練データが
最適解に収束できなくなってしまう。
(可視化することで勾配消失が確認できるので可視化で確認することも大事。)シグモイド関数・・0~1を緩やかに変化する関数で、ステップ関数ではON/OFFのみだったが、
ON/OFFと信号の強弱を伝えることができる。
デメリット:大きな値でも変化が微小のため、勾配消失問題を引き起こす場合がある。確認テスト(2-2)
シグモイド関数を微分したとき、入力値が0のときに最大値をとる。その値として正しいものを選べ。
シグモイド関数“`math
{f(x) = \frac{1}{1+e^{-x}}}
“`
微分すると、“`math
{f'(x) = (1 – f(x))f(x)} となる。
“`勾配消失の
Jupyter_学習ノート_000
Googleは「Jupyter notebook」風なオンライン(クラウド)サービスを無料で提供しています。このサイトには簡単な手続きでpythonを練習(学習)できます。
[Overview of Colaboratory Features](https://colab.research.google.com/)下記のリストは使っているモジュールとそのバージョンです。
目標は各モジュールの簡単なサンプルを作って興味あるものを探します。
![モジュールのリスト](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551056/17ccd394-c165-52c2-a4a7-26d2554286ad.png)absl-py==0.9.0 **[github](https://github.com/abseil/abseil-py)**
alabaster==0.7.12 **[github](https://github.com/bitprophet/alabaster)**
albumentations==0
[Python3 入門 3日目] 2章 数値、文字列、変数 (2.2〜2.3.6)
#2.2 数値
Pythonには整数(5や10000000などの小数点以下がない数値)と不動小数点数(3.12121,14.99,1.32e3など)のサポートが組み込まれている。##2.2.1 整数
四則演算。
>>> 5
5
>>> 0
0
>>> 09
File ““, line 1
09
^
SyntaxError: invalid token #数字の前にゼロを置いてはならない。
>>> 123
123
>>> +123
123
>>> -123
-123
>>> 5+9
14
>>> 100-7
93
>>> 4-10
-6
>>> 5+9+3
17
>>> 4+3-2-1+6
10
>>> 6*7
42
>>> 7*7
49
>>> 6*7*2*3
252
>>> 9/5 #浮動小数点数(10進)徐算を行う
1.8
>>> 9//5 #整数(切り捨て)徐算を行う
1
>>> 9/0
Traceback (most recent call last):
File ““, line 1, in
Z
DjangoのMigrateを最初からやり直したい
#Pythonは一度成功したMigrateをやり直さない。
manage.pyは一度成功したMigrationを記録としてもっており、
特殊なコマンドを打たないと、「マイグレート済」の情報を直さないようです。こちらの記事参照
[manage.py migrateをおかしな感じにやってしまった。](https://qiita.com/ajitama/items/130b2f31abd855937a93)
Pandasを用いたクロス集計
Pandasを用いて実行したいこと。
・GROUPBY KEYを複数キーで実行。
・SELECT対象のカラムを限定する。import pandas as pd
df = pd.DataFrame({
‘city’: [‘osaka’, ‘osaka’, ‘osaka’, ‘osaka’, ‘tokyo’, ‘tokyo’, ‘tokyo’],
‘food’: [‘apple’, ‘orange’, ‘banana’, ‘banana’, ‘apple’, ‘apple’, ‘banana’],
‘price’: [100, 200, 250, 300, 150, 200, 400],
‘quantity’: [1, 2, 3, 4, 5, 6, 7]
})![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274248/6537b457-872c-8697-11e8-95e6a8e7e4d4.png)
df[[“price”,”city”,”fo
DjangoのModelFormがスゴかった。
#フォームの値をそのまんまモデルに設定してくれるフォーム。それがモデルフォーム
ごく普通のフレームワークだったら、
データベースにモデルを登録するときに、逐一フィールドに値をセットすると思います“`SomeCreateProcess.py
#普通の設定の仕方
someModel.name = name
someModel.user = user
….“`
そんな悩みを解決してくれるのがDjango ModelForm
リクエストから受け取った値を、モデルに自動で設定してくれて、登録までしてくれるスグレモノ実装の仕方は簡単。
ModeFormを継承して中にメタクラスを入れるだけです。“`modelsModelForm.py
from django import formsfrom memFrame.models.SomeModel import SomeModel
”’
ほにゃほにゃ用モデルフォーム
@author Prautla
”’
class PictUploadForm(forms.ModelForm):
class Meta:
学習記録 その19(23日目)
#学習記録(23日目)
勉強開始: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月28日(土)投稿〜1月3日(金)まで調整
・**Wes Mckinney『(邦題)Pythonによるデータ分析入門』(オライリージャパン、2018年)**:1月4日(土)〜#『Pythonによるデータ分析入門』
p.276 8章 データラングリング まで読み終わり。##6章 データの読み込み、書き出しとファイル形式
・pandasの特徴はテーブル形式データをデータフレームオブジェクトとして読
Lambda(Python)でGoogle Driveへファイルアップロード
# Lambda(Python)でGoogle Driveへファイルアップロード
この記事は[サーバーレスWebアプリ Mosaic](https://mosaic.w2or3w.com “Mosaic”)を開発して得た知見を振り返り定着させるための[ハンズオン記事](https://qiita.com/w2or3w/items/87b57dfdbcf218de91e2)の1つです。
以下を見てからこの記事をみるといい感じです。
* [Lambda(Python) + Rekognition で顔検出](https://qiita.com/w2or3w/items/48bc05684c6dafbf5253)## イントロダクション
S3ってファイルを保存するだけならいいのですが、そのファイルを人が参照するのには向いてないですよね。画像にしてもWebブラウザ上でそのまま見ることができず、一度ダウンロードしてから見る必要がある。ちょっと手間なんですよね。
その点、Google DriveはPCにしろスマホにしろ、ブラウザやアプリでいい感じに画像を参照することができますのでいい感じで
AWS Lambda における Python 2.7 ランタイムのサポート(2020.1時点)
## Python 2.7 のサポート終了
2020年1月1日に Python 2.7 のサポートが終了しました。([PEP 373](https://www.python.org/dev/peps/pep-0373/))
2系の最終リリースである python 2.7.18 のリリースは2020年4月に予定されています。## AWS Lambda における Python 2.7 ランタイムのサポート
AWS LambdaにおけるPython2.7ランタイムについては、2020年1月時点では廃止予定は
アナウンスされておらず、引き続き作成、更新、実行が可能です。> Python 2.7 reached end-of-life on January 1st, 2020. However, the Python 2.7 runtime is still
> supported and is not scheduled to be deprecated at this time.**Runtime Support Policy**
https://docs.aws.amazon.