- 1. Python文法まとめ【while】
- 2. 【Python】 GitHubレポジトリのバージョン更新に合わせて自動的にPyPIのバージョンも更新する
- 3. [AtCoder] プログラミング アルゴリズム メモ
- 4. ラズパイでRS232C通信
- 5. 【Python】Ryeで始めるPythonプロジェクト
- 6. Azure Data Factory の Azure Databricks Delta Lake connector にて Unity Catalog を利用する方法
- 7. HypothesisでREST APIのプロパティベーステスト(PBT)をやってみた
- 8. AWS Lambdaに画像を送信する
- 9. モデルの精度以前に特徴量が適しているかを疑う
- 10. tkinterでペイントアプリのレイヤ機能を作る方法
- 11. 【DRF】 Django rest_frameworkを使って10分で簡単なCRUDを実装してみた
- 12. だから僕はAI投資の夢をあきらめた
- 13. バックテスト
- 14. ラベリング
- 15. 外貨定期預金のシュミレーション(積立なし)
- 16. Pythonにおける統計量の計算(平均, 分散, 標準偏差 など)の, データ型による相違点
- 17. RAGをLangChainを使わずに作ってみる(実装編)
- 18. 効率的フロンティア
- 19. ファクターモデル_一連の流れ
- 20. 個人的に作っておくと便利な関数
Python文法まとめ【while】
# はじめに
Pythonの基礎的なことをまとめています。
Google Colabで実行できます。
[Colabの使い方(Python.jp)](https://www.python.jp/train/experience/colab.html “Python.jp 入門講座”)# 繰り返し処理
~~~Python:サンプル
stamp = 0
print(‘スタンプラリーを開催します。現在のスタンプは’, stamp, ‘個です。’)
while stamp < 5: stamp += 1 print('スタンプを', stamp, '個押しました。') print('おめでとうございます、スタンプが', stamp, '個集まりました!') ~~~ `stamp < 5`は、変数の値が5よりも小さいことを条件としています。 `stamp += 1`は、変数に1を足す式です。※ 上記のコードでは`stamp`の値が`5以下`の時、 繰り返し`1`を足しています。 ~~~:実行結果 スタンプラリーを開催します。現在のスタンプは 0 個です。 スタンプを 1 個押しまし
【Python】 GitHubレポジトリのバージョン更新に合わせて自動的にPyPIのバージョンも更新する
## はじめに
自作ライブラリを`pip`コマンドでインストールできるようにするには、`PyPI`に投稿しないといけません。手動で自作ライブラリを`PyPI`に上げる手順は、下記の通りですね。
[PyPIパッケージ公開手順](https://qiita.com/shinichi-takii/items/e90dcf7550ef13b047b5)新規投稿だけではなく、バージョンアップの手順も同様です。
しかし、メンドウですよね。我々は[自動化の王、自動化キング](https://qiita.com/uts1_6/items/11e348ead4bae71571b8)なので、`GitHub`を更新した時点で、`PyPI`への更新も同時にやってしうまうように、`GitHub`をいじりましょう。
## 結果
[この手順](https://github.com/konbraphat51/AnimatedWordCloud/blob/dev/CONTRIBUTING.md#updating-pypi)だけで `PyPI`の更新ができるようになります。すなわち、`Release`
[AtCoder] プログラミング アルゴリズム メモ
AtCoderの問題解答に必要な プログラミング 及び アルゴリズム に関するメモ
# アルゴリズム
## 素数判定
https://algo-method.com/descriptions/93## 探索 DFS 再帰 スタック
# プログラミング
## 入出力
## Git
https://note.nkmk.me/git-config-setting/## VSCode
https://qiita.com/y-tsutsu/items/2ba96b16b220fb5913be
ラズパイでRS232C通信
ラズパイを使って、古いwindows用のUSB-シリアル変換装置を使ったら、案外簡単だったのでメモしておく。
用意する主なモノ
・ラズパイ
・USB-シリアル変換装置
変換装置のチップは案外幅広く対応しているのかもしれません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1520250/d4ae4b7c-ab2a-6bf2-50a9-f72d7e83ec62.png)windowsだと、OSのアップデートで古い変換装置が使えなくなったりする。
Linux系だと**ドライバ不要**で利用できる。参考
https://qiita.com/nannja/items/9d30a810b073a97a7ae5
## ラズパイとUSB-シリアル変換装置を接続
たいていドライバ不要なので、接続するだけ。
以下のコマンドでどこに接続されたか探してみる。
“`
ls /dev | grep USB
“`
![image.png](https://qiita-image-store.s
【Python】Ryeで始めるPythonプロジェクト
## はじめに
PoetryやPipenvではなく、**Rye**を使って開発を進めたい方向けの記事になります。
本稿は、ハンズオン形式で誰でも気軽にプロジェクトを作れるようになっています。### ハンズオン環境
– Ubuntu / MacOS
– VSCode
– Rye : 0.24.0## 0. Ryeとは?
RyeはPythonのための包括的なプロジェクトおよびパッケージ管理ソリューションです。
使用感としては、`Anaconda`のように独立してインストールでき、`pipenv`や`poetry`のように利用できる良いとこどりのような感じです。https://rye-up.com/
また、大元のAstralは、`ruff`や`uv`等、今後のPython実行環境を刷新するようなパッケージを多数生み出しているため、`Rye`含めAstaral製のエコシステムが主流になっていくのかなと思います。
(ちなみにどれもRust実装で軽快に動いてくれます)https://github.com/astral-sh
## 1. インストール編
基本的には、公式
Azure Data Factory の Azure Databricks Delta Lake connector にて Unity Catalog を利用する方法
## 概要
Azure Data Factory Azure Data Factory (ADF)の Azure Databricks Delta Lake connector にて Unity Catalog を利用する方法を紹介します。ADF の UI ではカタログを選択することができませんが、クラスターの初期カタログの設定を変更することで UC を利用できるようです。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/cc46f3ec-072e-6bec-1078-5517a25eea9b.png)
Azure Databricks Delta Lake connector では既存の汎用クラスターを利用することとなるため、Databricks のクラスターにて次のような設定を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/55d0a392-8be
HypothesisでREST APIのプロパティベーステスト(PBT)をやってみた
# はじめに
FastAPIで作ったREST APIのエンドポイントに対して、PythonのHypothesisを使ってプロパティベーステストを実施する方法を調べながら学んだので本記事に残します。# 本記事の対象読者
– プロパティベーステストの概要を知りたい方
– Hypothesisでできることを知りたい人
– OpenAPI仕様に沿ったREST APIのプロパティベーステストの流れを知りたい人## Hypothesisを学習した動機
REST API向けのプロパティベーステストに興味を持ったことがきっかけです。PythonでREST APIのプロパティベーステストをする場合、有名なものとして**Schemathesis**ライブラリがあることを知りました。
https://github.com/schemathesis/schemathesis
Schemathesisは、APIのエンドポイントに対して多様な入力値を自動生成し、APIがOpenAPI仕様(OAS)に沿った振る舞いをするかどうかをテストできるライブラリです。
SchemathesisはOASを用意
AWS Lambdaに画像を送信する
# この記事は?
AWS Lambdaエンドポイントに画像を送って処理をする方法のメモ。結論、base64でエンコードしてjsonとして画像を送れば良い。# 本文
## リクエストの方法
Lambdaではバイナリとして画像を受信できないようである。バイナリとして画像を送信すると次のようなエラーが出る。“`bash
Unable to unmarshal input: ‘utf-8’ codec can’t decode byte 0x89 in position 0: invalid start byte
“`エラー内容からすると、Lambdaはリクエストをutf-8として解釈するようだ。なので、画像を送信するときはbase64でエンコードして、jsonとして送ってやる必要があると推察される。サイズの大きい画像を送る場合、curlにエンコードした画像をそのまま渡すと、引数が長すぎてエラーが出るため、一度jsonファイルに変換してやる必要がある。
“`画像ファイルをbase64でエンコードしてjsonに変換.bash
echo “{\”body\”: \”$(base
モデルの精度以前に特徴量が適しているかを疑う
私が保有している資格の一つにビジネス統計スペシャリストというものがあって、その内容にあまりにも実データと乖離している予測結果のデータは説明変数で説明しきれていないというものがありました。
それは重回帰分析を使った回帰とそれを使った分類で行っていましたが、せっかくPythonが使えるのでより精度の高い勾配ブースティング回帰木を使って目的変数に対して説明変数が妥当な変数なのかを実際に確かめてみようと思います。
やり方としては交差検証を使って満遍なくデータを調べてみようと思います。# 乳がんデータセット
この乳がんのデータセットはScikit-LearnではなくlifelineというライブラリにあるRCTなのかコホート研究なのかのデータセットになります。
ここではガンのサイズについてを目的変数として他を説明変数にします。
## ライブラリのインポート
“`Python3
from sklearn.model_selection import cross_val_score as cvs
from sklearn.ensemble import GradientBoostingRegre
tkinterでペイントアプリのレイヤ機能を作る方法
## はじめに
マウスで自由に線を引けるペイントアプリの作り方は既に紹介されていました。
しかし、レイヤ機能を持たせる方法は調べても見つからず、実装方法を考えたのでご紹介します。ここで作るものは、2層のレイヤを右クリックによって入れ替えることができるペイントアプリです。
## 簡単なペイントアプリ
レイヤ機能を作る前に、最低限動くペイントアプリのコードです。
ここにコードを追加してレイヤ機能を持たせます。
“`py
import tkinter as tkclass Application(tk.Tk):
def __init__(self):
super().__init__()
self.geometry(“600×500”)
self.title(“レイヤ機能の実装”)self.canvas = tk.Canvas(self, background=”white”)
self.canvas.pack(fill=tk.BOTH, expand=True)
【DRF】 Django rest_frameworkを使って10分で簡単なCRUDを実装してみた
## はじめに
Djangoのrest_frameworkを使用して簡単にCRUD処理を実装してみたのでその備忘録として書き留めておく。思った以上に書かなくて最低限なら爆速で実装できるので個人的には使いやすい。## 1.Djangoやrest_frameworkその他install
“`python:requirements.txt
Django==4.2
djangorestframework==3.14.0
mysqlclient
uwsgi
“`必要なものはrequirements.txtに記載して一括でパッケージやライブラリを追加するやり方を取った。
“`python:shell
pip install -r requirements.txt
“`これで指定したパッケージやライブラリの追加が完了する。
## 2.Djangoのプロジェクトやアプリケーションを作成
1.下記コマンド実行
“`shell
django-admin startproject config .
“`
※configはお好きな名前をどうぞ2.下記コマンドを実行
“`she
だから僕はAI投資の夢をあきらめた
# はじめに
みんなが同じ夢を見る。あーあ金が無限に増えないかなぁ。それは人類の根源的な欲求ともいえる。僕たちは億万長者になりたいのだ。そしてその欲望にとりつかれたエンジニアは同様に皆こう考えるのだ。**AIに投資させれば無限に儲けられるのでは?**
私もそう思った一人です。私がその夢をあきらめるまでの2~3週間を共有したいと思います。僕が主張したいのはAI投資が儲からないということではありません。ただ僕はこう思ったからあきらめたという事実です。いけんじゃね?と思った方はどうぞ僕の屍を超えて、AI投資で稼いでください。そしたらやり方をこそっと僕に教えてください。こそっとね。
# 何が僕を駆り立てたのか?
金が欲しい。これは前述したように、全人類が抱く欲望です。例にもれず私も思ったわけです。なんか寝てるだけで金稼げねぇかな…そう思ったわけです。そんな折に、日課の記事探索をしているとこんな記事が目に入ってきました。
https://note.com/uki_profit/n/nc22e324b26ad
UKIさんのこの記事です。これを読んだ時に、 **これはいける…
バックテスト
## WF法
“`python# WF法
from sklearn.model_selection import TimeSeriesSplittscv = TimeSeriesSplit(n_splits=5, gap=0)
print(tscv)
i = 1
for train_idx, test_idx in tscv.split(time_bar):
plot_cv(time_bar, train_idx, test_idx, i)
i += 1
print(f’train {len(train_idx)}’, f’test {len(test_idx)}’, ‘ ### ‘,
train_idx[:5], test_idx[:5])
plt.show()
“`## CV法
“`python
# CV法
from sklearn.model_selection import KFoldcv = KFold(n_splits=5)
print(cv)
i = 1
for train_idx, test_idx in
ラベリング
“`python
## AFML Snipet 3.1# 日次ボラティリティの計算
def get_daily_vol(close, span0=100):
df0 = close.index.searchsorted(close.index – pd.Timedelta(days=1))
df0 = df0[df0 > 0]
df0 = pd.Series(close.index[df0 – 1],
index=close.index[close.shape[0] – df0.shape[0]:])#それぞれの時刻における1日前のリターンを算出
df0 = close.loc[df0.index] / close.loc[df0.values].values – 1
#ローリング指数加重標準偏差を計算
df0 = df0.ewm(span=span0).std()
return df0.rename(‘daily_vol’)“`
“`python
#リターンと各
外貨定期預金のシュミレーション(積立なし)
## Pythonを使って、外貨定期預金のシュミレーションをしてみる
– 目的はまとまった金額(円)を外貨定期預金(豪ドル)で運用する際のリスクを把握
– 定期、非定期に関わらず積立はしない前提
– 終価係数ベースでのシュミレーション
– 源泉分離課税 20.315% =(国税 15% + 地方税 5% + 復興特別所得税 0.315)の税率が適用
– 為替差益に対する課税は未処理::: note
__環境__
– MacOS : Sonoma 14.4.1
– python : 3.12.0
:::### 実行結果
![simulation.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/699739/96001742-373b-4e9a-79f6-6be88988385b.png)
### 実行コード
“` gaika_teiki_yokin.py
#!/usr/bin/python
# -*- coding: utf-8 -*-class Gaika_teiki_yokin
Pythonにおける統計量の計算(平均, 分散, 標準偏差 など)の, データ型による相違点
pythonでは、数列を格納する仕組みがいくつか存在する。そのうえ、平均値などの統計量を計算する文法も各データ型に応じて異なっている。
ここに、**リスト型**・**Numpyによる配列(ndarray)**・**Dataframe形式**の3つのデータ型に対して、基本統計量を計算する文法をまとめる。
## 1. リスト型の場合
### 1.0. サンプルデータの準備
“`python
list_ = [1,2,3,4,5]
“`
### 1.1. 総和・最大値・最小値
これらについては、組み込み関数を使えば計算できる。
“`python
print(sum(list_)) # 総和
print(max(list_)) # 最大値
print(min(list_)) # 最小値
“`
“`python:出力
15
5
1
“`### 1.2. 平均・分散・標準偏差
これらを1行で計算するには、statisticsモジュールをインポートする必要がある。“`python
import statistics
print(statistics.mean(list_)
RAGをLangChainを使わずに作ってみる(実装編)
# はじめに
今回は最近、流行りのRAG(Retrieval-Augmented Generation)をLangChainなどを使用せずに処理を構築した内容を紹介する実装編になります。前回は理解編としてRAGの処理の流れを紹介しました。良ければ前回の記事と合わせてみて頂けると幸いです。前回の記事: [RAGをLangChainを使わずに作ってみる(理解編)](https://qiita.com/DeOma004/items/0ab1c8afa0667ee71ac2)
# RAGを実装する
## 処理の概要RAG の処理は以下の 2 つの処理に分けることができ、それぞれの大まかな処理は以下でした。
– Inferencing: RAGをつかったLLMの推論
1. LLMモデルに質問(prompt)の投げる
2. 質問(prompt)を埋め込みモデルでベクトルに変換する
3. 変換したベクトルをもとにDB内を検索する
4. 検索結果の引用情報を質問(prompt)に埋め込む
5. 引用情報を埋め込んだ質問(prompt)を用いて推論を行
効率的フロンティア
### 前処理
“`python
daily_df_sorted_replaced = pd.pivot_table(df,index=”Date”,columns=”Code”,values=”log_diff_return”)
daily_df_sorted_replaced =daily_df_sorted_replaced.replace([np.inf, -np.inf], 0)
daily_df_sorted_replaced = daily_df_sorted_replaced.fillna(0)ewm_span=90
threshold = 2
ewm_mean = daily_df_sorted_replaced.ewm(span=ewm_span).mean() # 指数加重移動平均
ewm_std = daily_df_sorted_replaced.ewm(span=ewm_span).std() # 指数加重移動標準偏差
daily_df_sorted_replaced = daily_df_sorted_replaced.where((daily
ファクターモデル_一連の流れ
# 初めに
“`python
df =pd.read_csv(R”C:\Users\tata5\Desktop\株\data\株.csv”)
df[“Date”] = pd.to_datetime(df[“Date”])
df[“Return”] = df[“Close”].pct_change()
df = df.fillna(0)
“`
# 共通の前処理
“`python
# 共通の前処理
def preprocess(data_train, data_test, subset):
# Split: common/factor data
common_train = data_train[[c for c in data_train.columns if not c in subset]]
common_test = data_test[[c for c in data_test.columns if not c in subset]]
factor_train = data_train[subset]
factor_test = da
個人的に作っておくと便利な関数
大学の3年から大学院でPython使って個人事業主でもPython使っていて思うのが「これ作っておくと便利だな」と思った関数が何個かあるので紹介します。
というか自分の備忘録でもあります。
※なお、この記事は思い付きで書いていますので思い立った時に更新します。# JSONの自動解析
正確には辞書型配列(連想配列)を自動的に解析する関数です。
やり方としては再帰アルゴリズムを応用した深さ優先探索で辞書・リストじゃないデータまで探索して、キーを表示するものです。
“`Python3
def depth(jsn, var=””):
if isinstance(jsn, dict):
for row in jsn:
depth(jsn[row], var=var+”[\””+row+”\”]”)
elif isinstance(jsn, list) and jsn != []:
for i in range(len(jsn)):
depth(jsn[i], var=var+”[“+str(i)