Cucco’s Compute Hack

コンピュータ関係の記事を書いていきます。

Python

月の第n曜日とか、月の最終曜日かどうかの判定

その月の第n曜日の計算と、月の最終曜日の判定関数。 指定の日付に対して、第N曜日の計算は単純に日付だけ。 逆に最終曜日の判定はちょっと面倒。 コード import datetime def nth_weekday(target_date : datetime.date): target_date_day=target_date.day i…

記述のカテゴリ分け

もとの詳細な記述を分析して、下位のカテゴリに分類し、下位のカテゴリをさらに上位カテゴリに再分類する。 2階層のブレイクダウンの逆。ルールは辞書で作成。keyにあたる部分がカテゴリ名、valueにはlistを設定する。 そのリストにある記述が、もとの詳細な…

3次元の表

多次元(3次元)の配列が必要になったので、初期化と参照の方法を確認。 2次元表の中の1枠をcellとみなして、cellの中にも1次元の配列があるイメージ。 コード import itertools print("3次元の配列") dim_row =2 # row dim_col =3 # col dim_cell =4 # cell #…

コンソールの同じ行にprint

コンソールで、表示を更新したいけど、行は増やしたくないときに使うもの。消してもよい情報をprintするときは、printt.printt("hoge","piyo1",over_write=True) のように、"over_write=True” とする。 実行結果 ('hoge', 'piyo0') ('hoge', 'piyo3') ('hoge…

classmethodとクラス変数

クラスのインスタンスを作らずにクラスの関数を実行したい場合のメモクラス変数であればclassmethod内で参照できる。インスタンスを作ればクラス変数も変更できる。 classmethod内では、インスタンス変数は一切参照できない。(作ったインスタンスでclassmeth…

markdownの箇条書きにチェックボックスをつける

markdownの箇条書きの先頭にチェックボックス”[ ]”を付与するスクリプト。 引数でmdファイルを指定する。_addcheck.md にリネームして保存する。markdown-pdfでhtmlにすれば、チェックボックスとして動作するところまで確認。(チェックの変更は保存できない)…

f文字列も便利だけど、.format(**辞書)も便利

.format(**辞書)とすると、f文字列見たいな設定で動作する。便利。 プログラム a={} a["foo"]="foo1" a["bar"]="bar2" b="foo in a = {foo}, bar in a = {bar}".format(**a) print(b) 実行結果 foo in a = foo1, bar in a = bar2

seabornを使ってみた ヒートマップを描画する

元データをピボット処理してヒートマップに描画する例。 ヒートマップの際の並べ替え指定が面倒なので、昇順に並べればよいような行/列名にしておいたほうがよさそう。各列の最大値に対して、強調枠を設定。枠の場所の指定方法が、dfの並びと同様、左上がゼ…

リストを列に見立てて、列を拡張(追加)。DBMSにテーブル定義して値も格納する。

リストを列に見立て、列を拡張(追加)していけるクラス。 最終的にはDBMSにテーブル定義して値も格納する。ファイルの名前とか、クラスの名前とか、どう表現すればよいのかやや悩み。 プログラム list_manager_for_table.py import sqlite3 class list2d_for_…

Python サブモジュールのディレクトリ構造とunittestの話

プログラムとunittestを同じディレクトリに置くパタンのテスト。 パッケージ(hello_submodule)の同列にtestディレクトリを作って、unittestのファイルを置く構成が標準らしいが、パスの設定関係がとても面倒なので。プログラムとunittestを同じディレクトリ…

DBのテーブルから列データをリストで取得する

DBのテーブルから列データをリストで取得する。fetch()で取得すると、行ごとのタプルのリストになっていて、処理しづらいので、ほしい列の値だけをリストにする関数get_one_column_data_list()を作成。 リストのメモリ確保のため、件数確認のget_countも作成…

分割してCSVに書く、分割されたCSVを読む

1年前のプログラムの一部改良。 複数ファイルを連続して読むプログラム - Cucco’s Compute Hackディレクトリのパスと、ファイル名(拡張子ナシ、連番ナシ)を与えて、 決まった行数を書いたファイルを保存する、それらのファイルを開いて読む、というプログラ…

pythonの引数ライブラリargparse

argparseのサンプルコード。-から始まる名前にしてOptional引数にして、 action="store_true"をつけておけば、フラグとして利用できそう。 プログラム import argparse if __name__ == "__main__": parser = argparse.ArgumentParser() # 必須引数(=位置引…

pythonの.formatに辞書を渡すときの書き方

pythonの.formatに辞書を渡すときの書き方。 dic={"key": "value"} "value: {key}".format(**dic)

複数の2クラス分類の一括学習

タイトルでは、わけがわからないと思うが、 1種類のデータに対して、2クラス分類問題が複数ある場合の学習。 整数dに対して、2の倍数かどうかと、3の倍数かどうか、・・・を例に学習してみた。 訓練データ形式 x : 8桁のビット整数。アンダーバー2つは、xベ…

LEFT OUTER JOINの評価

LEFT OUTER JOINの評価 一瞬で終わる。メモリも食わない。 UNIQUE属性付けておくとさらに早い。 実施内容 データのテーブルと、クラス分け結果のテーブルのJoin。 クラス分け結果は適当に%演算で作った。 ソースコード import sqlite3 from faker import Fa…

Neural Network ConsoleのCrossEntropy損失関数(ロス関数)の使い方

Neural Network Consoleの損失関数(ロス関数)の使い方の記録。 画像処理系はSquareErrorでもいいが、カテゴリ系はそんなわけにもいかないので。入力データ次第で、ある程度決まった形になるので、記録として残しておく。 CategoricalCrossEntropyを使う場合 …

sqlite3のexecutemanyの動作確認

1回で10万件を挿入するのに、0.35秒。 別実行した1件ソートの繰り返しでは0.42秒。大した差ではないが、ループを組まなくていいメリットあり。値を埋めたいところは、"INSERT INTO users VALUES(?,?,?)" のようにハテナにしておく。 リストのリストや、タプ…

可変引数のテスト**kwargs

可変引数のテスト プログラム def func1(**kwargs): print(kwargs) # キーに一致する値の取得。キーがない場合はNoneになる。 print(kwargs.get("a")) print(kwargs.get("b")) print(kwargs.get("c")) print(kwargs.get("key1")) print(kwargs.get("key2")) …

Visual Studio Code & Anaconda環境構築

最近、VSCodeでPython環境を作るとデバッグ実行がうまくいかないことがあるので、試行錯誤のメモ。 path(ユーザーの環境変数)に以下を追加 C:\Users\\Anaconda3\Scripts C:\Users\\Anaconda3\ anacondaの初期設定 「CommandNotFoundError: Your shell has …

pandasでcsv読みこみ datetime型の型指定で。

pandasでファイルの読み書きのテスト。datetimeの処理が必要なので、型指定の手順を確認。 読んでるファイル 'Book2.csv' ,time,x,y,z 0,2019-03-23 08:53:16,0.384126267,0.791150474,1 1,2019-03-23 08:53:16,0.121509436,0.161273729,3 2,2019-03-23 08:5…

より大きな値の数や割合

こんな感じ。要素数で割れば、割合がわかる。 for文を回さなくていいので、numpy便利。 >>> import numpy as np >>> >>> a=np.array([71,77,80,80,89,83]) >>> b=np.sum(a>=80) >>> print(b) 4実際のところTrueを1として計算してくれている。 >>> c=a>=80 >>…

移動分散のサンプルプログラム

移動分散のサンプルプログラム プログラム import numpy as np a=np.array([71,77,80,80,89,83]) windowsize=3 for i in range(a.shape[0]-windowsize): print("print a[{0}:{1}]".format(i,i+windowsize)) np.std(a[i:i+windowsize]) 実行結果 print a[0:3]…

ujsonのインストールができない

解決方法 https://visualstudio.microsoft.com/downloads/から、下のほうにある、Build Tools for Visual Studio 2017 をダウンロード。 実行して、以下を選択してインストール ワークロードタブ Visual C++ Build Tools 個別のコンポーネントタブ VC++ 2017…

matplotlibの日本語対応

plotに日本語を含めていると化けるので、日本語フォントを使えるようにする。 matplotlibのフォントディレクトリに対応フォントを入れて、fontlistを更新する。 事前準備 https://ipafont.ipa.go.jp/ から、フォントファイルをダウンロードする。 C:\Program…

sklearnでクラスタリング(その2)

プロットするプログラムhello_scatterもつけてみた。 import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans def hello_kmeans_demo(): X = np.array([[1, 2], [1, 4], [1, 0],[10, 2], [10, 4], [10, 0]]) """ array([[ …

sklearnでクラスタリング(その1)

データ形式がこうなっていれば、直接KMeansに渡せる。2次元データ6件分。 array([[ 1, 2], [ 1, 4], [ 1, 0], [10, 2], [10, 4], [10, 0]])以降、確認に使ったコード >>> import numpy as np >>> from sklearn.cluster import KMeans >>> X = np.array([[1, …

複数ファイルを連続して読むプログラム

複数に分割されたファイルを決まった順番で、連続して読む。 csv.readerっぽく。forで1行ずつ読めるようにイテレータとして実装。 import csv class MyIterator(object): def __init__(self, readFileNames, skipHeader=False): self.readFileNames = readFi…

Neural Network Consoleによる学習済みニューラルネットワークの利用

環境構築 ベースはanaconda。nnablaがなく、importに失敗するのでパッケージ追加しました。以下のコマンドを管理者で開いたコンソールで実行。 pip install ipykernel pip install nnabla事前にpip自体の更新が必要な場合もあり。 python -m pip install --u…

sqliteをインメモリで使ってみた

やりたいことは以下。全部できた。 インメモリDBは早い。 インメモリで動かす 日付、日時を格納する 日時、日時の新しいN件だけをDB内に維持する 日付、日時の新しいM件を取り出す ソースコード import sqlite3 import time import datetime start=time.time…