- 1. [アルゴリズム×Python] リストの使い方
- 2. Python「SyntaxError: Non-ASCII character〜」が出てしまった時
- 3. ベイズ推論の考え方・・事前確率と事後確率
- 4. Pythonの定数、Noneとか(リファレンスによると)
- 5. Flask GETのクエリパラメーターを取得する
- 6. Python de 3DCAD
- 7. Pythonを試す
- 8. “BeautifulSoup4″と”IFTTT”で「ハーメルン」の更新通知を作ってみた
- 9. yamlを考える with python
- 10. JupyterにGTFS Realtimeの位置情報をプロットしたい!(バルーン付き)
- 11. 【Python】データサイエンス100本ノック(構造化データ加工編) 022 解説
- 12. 【Django】adminページをカスタマイズしたいって?
- 13. 2. Pythonで綴る多変量解析 7-2. 決定木[分割基準の違い]
- 14. 大量のGTFS Realtimeのファイルに対するETL処理(Python編)
- 15. はじめてのPython3 ~番外編:数値ランダム狂想曲~
- 16. 【データサイエンティスト入門】Pythonの基礎♬
- 17. Optunaを使ったxgboostの設定方法
- 18. 【Python】写真の位置情報のタグ(JPGファイルのGPS Exif)の読み書き
- 19. 【Python】pandas でdtypeを変更
- 20. PythonでYahooにメール送信できなかった時の対応。
[アルゴリズム×Python] リストの使い方
アルゴリズムとPythonについて書いていきます。
目次
0.アルゴリズムとは
1.リストとは
2.リストの使いかた#0.アルゴリズムとは
計算や作業をするための手順のことです。
**短時間**で**効率的**に処理をすることを目指します。#1.リストとは
**データ構造**の1つで、データを一直線に並べた構造をしています。
大量のデータを扱うアルゴリズムではよく使われます。
リストは**データの追加や削除がしやすい**反面、アクセスに時間がかかります。**Point** : データ構造
データをコンピュータのメモリにいれる時に、データの順番や位置関係などを定めたものです。###1-0.Pythonとリスト
Pythonでは、配列よりもリストを使うことが多いです。
リストの要素は、**任意のPythonオブジェクト**で良いです。
そして、要素の型は**統一しなくて良い**です。**Point** : 配列
**データ構造**の1つで、データを一列に並べるものです。
データへのアクセスは簡単に行える反面、追加や削除には手間がかかります。#2
Python「SyntaxError: Non-ASCII character〜」が出てしまった時
“`
# -*- coding: utf-8 -*-
“`を確認
ベイズ推論の考え方・・事前確率と事後確率
##Pythonで体験するベイズ推論
###ベイズ推論の考え方・・例題:司書か農家か夏休みなので、「Pythonで体験するベイズ推論」を少しずつ勉強しています。簡単に勉強したことを`Python`とともに書いていこうと思います。
問題
スティーブは親切だが内向的である。他人にはほとんど関心がなく順番通りにやることが好き。スティーブは図書館司書になるか?農家になるか?男性の農業家と男性の司書の比率は20:1(これを事前確率という)
スティーブが司書である・・A
スティーブが農家である・・Bスティーブが司書である事前確率 $?(?)$ は、
“`math
\displaystyle?(?)=1/20=0.047
“`になる。
スティーブの性格についての情報(性格が内向的)が入ったことを$X$とする。
ここで考えるのは、$P(A | X )$である。これは、$X$という情報がはいった条件の元でのスティーブが司書である事後確率である。
ベイズの定理の式から考えます。
ベイズの定理の式“`math
P( A | X ) = \displaystyle \frac
Pythonの定数、Noneとか(リファレンスによると)
#はじめに
pythonの定数について調べた。
しっくりは、きていませんが。#pythonの定数
python,定数
とかでぐぐると、リファレンスの以下の項にたどり着く。
https://docs.python.org/ja/3/library/constants.html以下、引用。
>組み込み定数
組み込み名前空間にはいくつかの定数があります。定数の一覧:念のため、
https://docs.python.org/3/library/constants.html
も引用しておく>Built-in Constants
A small number of constants live in the built-in namespace. They are:ここでは、以下の6つが示されている。
False
True
None
NotImplemented
Ellipsis
\_\_debug\_\_値をみてみる
“`
>>> False
False
>>>
>>> True
True
>>>
>>> None
>>>
>>> NotImplemented
Flask GETのクエリパラメーターを取得する
Flask https://flask.palletsprojects.com/en/1.1.x/
でGETのパラメータを取得した時のメモ“`python:
@app.route(‘/search’)
def analyzer():query = “”
if request.args.get(‘q’) is not None:
query = request.args.get(‘q’)
else:
query = “パラメーターがないよ”return query
“`http://localhost/search?q=クエリだよ
で試す
Python de 3DCAD
仕事柄3DCADを使うことも数値計算(主にPythonを使って)を行う機会が多く、数値計算をもとに3D用のデータ(STEP, IGES, STL)を生成したい(しないといけない)という要求が増えていった中での解決策です。
## 結論
結論としては[OpenCASCADE](https://www.opencascade.com/)を使います。
[C++と死の秘宝OpenCascade Technology](https://qiita.com/_EnumHack/items/577b087c071e4e9cd3b3)で有名な、OpenCASCADEですが、オリジナルはC++で100万行で構成されたライブラリのため、使おうとするととっても大変です。
そこで、OpenCASCADEをほぼすべてPythonにWrapした偉大なコード[pythonocc-core](https://github.com/tpaviot/pythonocc-core)を使います。## Install方法
“`bash
# Python 3.8
conda install -c conda-fo
Pythonを試す
# はじめに
気になっていたPythonを試します。環境はWindows10です。# 準備
## Anaconda3
Pythonのディストリビューション。
Python単体でDLしてもいいですが、ちょっと調べてみると
よく使うライブラリ等をすでに含んでいるAnaconda3の方がよさそうでしたのでこっちをいれてみます。
以下の64-Bit Graphical Installer (466 MB)をダウンロードしてすべてデフォルトでインストールしました。
https://www.anaconda.com/products/individualインストール後、環境変数にバイナリファイルの場所を追加します。
C:\Users\xxxxxx\anaconda3## VS code
VSCodeで検索してダウンロード。
インストール後、左メニューの拡張機能から以下を追加。– 「Python Extension Pack」
– 「Japanese Language Pack for Visual Studio code」(日本語化したい場合)コマンドプロンプトから以下のコマ
“BeautifulSoup4″と”IFTTT”で「ハーメルン」の更新通知を作ってみた
## はじめに
小説家になろうの更新通知アプリを作った時に、マイページから作品の更新情報を終えたほうが自分のやりたいことにあってるなあと思ったので、ハーメルンという小説投稿サイトで作ってみました。## 何をするもの?
BeautifulSoup4とIFTTTを用いてWebスクレイピングで更新情報をLINENotifyに通知します。## 環境
- Python 3.7.4
- BeautifuSoup4 4.9.1
## 準備…の前にAPIとスクレイピングの違いに関する確認・注意
今回はスクレイピングという技術を利用します。法律で規制がかかっている技術なので、法律の話を確認しましょう。とりあえず注意するべきなのはサイトのサーバーに負荷をかけすぎないようにすることですかね。
yamlを考える with python
## yamlってなんぞ?
### まえがき
kubernetesなどのクラウドネイティブな環境を設定するときに、yaml形式のファイルを読み込ませることが多い。
yamlのことがよくわかっていないまま使うのもどうかと思い、今回は実際に手を動かしながら勉強してみた。### yamlの由来
[yamlの公式サイト](https://yaml.org/spec/1.2/spec.html)より
「“YAML Ain’t Markup Language” 」「yamlはマークアップ言語ではない」という意味の再起的な頭文字で表されるデータ構造の書き方である。
### デザインゴール
YAMLのデザインゴールは以下の7つ。
1. YAMLは人にとって簡単に読みやすいものである
2. YAMLのデータはプログラム言語間で持ち運び可能である
3. YAMLはアジャイル言語のネイティブデータ構造と一致する
4. YAMLには、汎用ツールをサポートするための一貫したモデルがある
5. YAMLはワンパス処理をサポートする
6. YAMLは表現力豊かで拡張可能
7. YAMLの実装と使用は簡単
JupyterにGTFS Realtimeの位置情報をプロットしたい!(バルーン付き)
# はじめに
バスの現在位置は、Google Mapからでも見られる時代ですが、自分の手でマッピングしてみましょう。pythonにfoliumというWeb地図表示プラグインを用いて表示してみます。
地図のアイコンはクリッカブルで、詳細な情報を表示することも可能です。# 実装
“`python:realtimebus.py3
from google.transit import gtfs_realtime_pb2
import urllib.request, urllib.error
import folium
import pandas as pd#GTFS-RTの公開されているURL(宇野バスさん)
url =’http://www3.unobus.co.jp/GTFS/GTFS_RT-VP.bin’
#カラム名の宣言
list_df = pd.DataFrame(columns=[‘id’ , ‘vehicle_id’, ‘trip_id’,’vehicle_timestamp’,’longitude’,’latitude’,’occupancy_status’])
f
【Python】データサイエンス100本ノック(構造化データ加工編) 022 解説
##Youtube
[動画解説](https://youtu.be/kusTfHiuU6A)もしています。##問題
P-022: レシート明細データフレーム(df_receipt)の顧客ID(customer_id)に対し、ユニーク件数をカウントせよ。##解答
“`:コード
len(df_receipt[‘customer_id’].unique())
“`“`:出力
8307
“`##解説
**・PandasのDataFrame/Seriesにて、ユニークな行数をカウントする方法です。
・ユニークな行数が全部で何件あるのかを確認したい時に使用します。****※ちなみに、以下のコードもユニークな件数をカウントするコードであり、同じ結果を出力します**
“`:コード
len(df_receipt[‘customer_id’].value_counts())
“`
【Django】adminページをカスタマイズしたいって?
# はじめに
「Djangoの管理者ページのカスタマイズなんて、今までしたことないよ〜」という方向け。
初級編です。カスタマイズしなくても十分使えそうだが、エンジニア以外の人が触るようになると、デフォルトだと少し寂しい?
詳細な解説というより、ググると良い用語をパパッと上げていくスタイルです。
ちゃんとまとめると大変ですからね。。。Djangoのドキュメント
https://docs.djangoproject.com/en/3.0/ref/contrib/admin/# ModelAdminクラス
基本的には、`ModelAdmin`クラスのサブクラスを作成して、カスタマイズ内容を記述する。
例えばSampleModelという名前のモデルをカスタマイズしようと思ったら、以下のようにする。“`admin.py
from django.contrib import admin
# 通常は「モデル名+Admin」という名前にする
class SampleModelAdmin(admin.ModelAdmin):
”’
このクラスの中にカスタマイ
2. Pythonで綴る多変量解析 7-2. 決定木[分割基準の違い]
* 決定木における分類の分割基準はいくつかあります。
* 一般的に使用されているものに、ジニ不純度(gini impurity)、エントロピー(entropy)という2つの不純物測定と、それから分類誤差(misclassification error)という分割基準があります。
* これらの違いを見ていきます。“`python
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
“`#2クラス分類での各指標の比較
* 2クラス分類で、一方のクラスの割合を p とすると、各指標はそれぞれ次のように求められます。
* **ジニ(gini): $2p * (1-p)$**
* **エントロピー(entropy): $-p * \log p-(1-p) * log(1-p)$**
* **誤分類率(misclassification rate): $1-max(p, 1-p)$**“`python
# p に相当する等差数列を生成
xx = np.linspac
大量のGTFS Realtimeのファイルに対するETL処理(Python編)
# 偉大な先人
既に[伊藤先生](https://qiita.com/niyalist)が、[GTFSファイルをマージしてPostgreSQL+PostGISに投入する方法](https://qiita.com/niyalist/items/22b743d973e4a6aeef86)にて、ツールを活用してPostgreSQLにデータを投入する方法を掲載しております。# 今回のモチベーション
日本のGTFSデータが、GCSに保存されているとの情報を入手したので、そのデータで遊ぶための準備です。# 今回やること
Google Clound Platform のファイルサービスである、Google Cloud Strage 保存されている protocol buffers 形式の大量のファイルを、一気にダウンロードして一纏めのデータに変換します.
はじめてのPython3 ~番外編:数値ランダム狂想曲~# はじめに
注意点などは[こちら](https://qiita.com/kashun0410/items/4113051964d5a1cd0bb5)を参照してください。# この記事を描こうと思ったきっかけ
Pythonの計算に関して、適当な数値を入れてみてみたい。
そこでランダムな数値を精製してくれるrandomモジュールを使用してみることにしました。
そんなrandomモジュールについての備忘録のようなものです。
(更新予定の途中記事です。)# ようこそ、乱数の世界へ
### randomモジュールをインポート
randomモジュールはPythonの標準ライブラリに含まれているため、ダウンロードは入りません。
ただし、インポートは必要です。“`
import random # 上部の段にこれを記述
“`### randomモジュールの関数
#### random.random()
0.0以上1.0未満の浮動小数点数float型の乱数を生成します。“`
import randomprint(random.random())
#
【データサイエンティスト入門】Pythonの基礎♬
今日から、[「東京大学のデータサイエンティスト育成講座」](https://www.amazon.co.jp/%E6%9D%B1%E4%BA%AC%E5%A4%A7%E5%AD%A6%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%83%86%E3%82%A3%E3%82%B9%E3%83%88%E8%82%B2%E6%88%90%E8%AC%9B%E5%BA%A7-Python%E3%81%A7%E6%89%8B%E3%82%92%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E5%AD%A6%E3%81%B6%E3%83%87%E2%80%95%E3%82%BF%E5%88%86%E6%9E%90-%E5%A1%9A%E6%9C%AC%E9%82%A6%E5%B0%8A/dp/4839965250/ref=tmm_pap_swatch_0?_encoding=UTF8&qid=&sr=)を読んで、ちょっと疑問を持ったところや有用だと感じた部分をまとめて行こ
Optunaを使ったxgboostの設定方法
##Optunaを使ったxgboostの設定方法
`xgboost`の回帰について設定してみる。
`xgboost`については、他のHPを参考にしましょう。
「ザックリとした『Xgboostとは』& 主要なパラメータについてのメモ」
https://qiita.com/2357gi/items/913af8b813b069617aad後、公式HPのパラメーターのところを参考にしました。
https://xgboost.readthedocs.io/en/latest/parameter.htmlいろいろ入れたけど、決定木系は過学習になりやすいので、それを制御するパラメーターをしっかり設定した方が良いと思ってます。
`xgboost`では、`lambda`と`alpha`ですが、`python`で設定するときは、`reg_lambda`と`reg_alpha`のように、`reg_`をつけて指定します。“`
# optunaの目的関数を設定する
#gtreeのパラメーター設定です。
def objective(trial):
eta = trial.sugges
【Python】写真の位置情報のタグ(JPGファイルのGPS Exif)の読み書き
# はじめに
これも自分用のメモです。python を使うと楽にできます。注意点として、– 緯度経度は度分秒なので60進数
– 値は実数ではなく、分数で。(有理数、というのかな)いくつか関係するライブラリがあります。どれか一つに統一したほうがよいのですが、とりあえず動いたものメモです。(おい)
### 仕様書?
下記の文献を見つけました。
– [デジタルスチルカメラ用 画像ファイルフォーマット規格 Exif 2.3](http://www.cipa.jp/std/documents/j/DC-008-2012_J.pdf)
これによるとGPS Info IFDは以下のように定義されているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294040/848f1cb4-5182-9957-ed1c-ab45027c2d19.png)
たくさんありますが、私が扱ったファイルでは0 – 6 までのタグのみでした。GPSの緯度、経度、高さが読み書きできたので、とりあえ
【Python】pandas でdtypeを変更
これは何度も自分でググっているので、自分用のメモです。
### dtype 変更
まとめて変更したいとき
“`
df = df.astype({‘a’: ‘float32’, ‘c’: ‘int8’})
“`### 備考
pandas 関係でいつも何度も調べなおしていることがあり、思い出したらここに追加していこう。(2020/08/08)
PythonでYahooにメール送信できなかった時の対応。
##環境
– Windows 10
– Python 3.8##プログラム
↓を参考にさせていただきました。
https://cercopes-z.com/Python/tips-mail-py.html#yahooしかし、なぜか↓のエラーが出た。
smtplib.SMTPServerDisconnected: Connection unexpectedly closedYahooメール側で外部からのメールを受信できる設定にする必要があった。
https://knowledge.support.yahoo-net.jp/PccMail/s/article/H000007321