- 1. 【AtCorder】 初心者必見 RE (runtime error) の対処法 Python
- 2. 確率pで勝つ勝負を何度もやって勝つ確率を求める。
- 3. AI屋さんの LLMとfletとdockerとcloud runと私
- 4. 【生成AI入門 LangChain×OpenAI API】レスポンスをストリーミングで表示することでUX向上
- 5. sklearnで決定木追加毎の平均二乗誤差の推移を可視化する
- 6. 検索タスクにおけるBM25のコサイン類似度とスコアの精度比較
- 7. デコレータパターンで構築する柔軟なデータ変換パイプライン
- 8. python basic
- 9. Pythonプロジェクトのためのテンプレート: my-python-templateの紹介
- 10. 参考になった記事 覚書
- 11. 【入門生成AI×OpenAI API】2024年10月 LangChainで簡単にOpenAI APIを使う方法
- 12. Pythonデータ可視化マスター講座② PandasとSeabornを使った小売業データ分析
- 13. JupyterNotebook を GitHubPages にデプロイする
- 14. [Python] 九九表の作成
- 15. PLaMo-100Bのβ版トライアルAPIを用いてデモ用アプリを作ってみた
- 16. [Joke] c0ffee python版
- 17. 楽しいな 生き残りゲーム。ゲートアテンション型トランスフォーマーモデルで個性を持つモデルを生成するという手法。
- 18. ABC373参加記録 by Python
- 19. システム同定
- 20. LangGraphのテストを書く
【AtCorder】 初心者必見 RE (runtime error) の対処法 Python
**Python**って最近の大学、特に理系の学部では低学年次のうちから教養課程として学ぶことが増えてきています。 筆者も1年生に授業がありました(必修で二コマも...)
これを機にプログラミングに興味を持ち、**AtCorder**を始めました。
この記事は~~pythonの初心者~~、AtCorderの初心者向けです。先日、AtCorderの問題[ABC204-C](https://atcoder.jp/contests/abc204/tasks/abc204_c “ABC204 C問題 Tour”)を深さ優先探索の[解説記事](https://qiita.com/myumura/items/141dafed1f34b03413f9 “Pythonで深さ優先探索(DFS)をとっても簡単に説明してみる”)を見ながらコードを書いていました。
背景理論を学ぶ→コードを学ぶ→コードを書く→入力例でOK→提出→**RE**![{0320B886-FD75-4014-9A96-5D8C5BF9C3AC}.png](https://qiita-image-store.s3.ap-nort
確率pで勝つ勝負を何度もやって勝つ確率を求める。
確率pで勝つ勝負を何度もやって勝つ確率を求める。
“`prob_to_win.py
#!/usr/bin/pythondef probability_to_win(b,pm):
a=1 if pm else (0.5 if b==0.5 else (0 if b<0.5 else 1)) return a def main(): a=float(input("Input the value of p: ")) pm=int(input("Has pseudo miracle occured [0=no or 1=yes] ? ")) print("The value of probability to win is %f." % probability_to_win(a,pm)) if __name__=='__main__': main() ``` 0.5ならそのまま、0.5未満なら0、0.5超なら1を返す仮奇跡付きの関数を作りました。 僕の場合はPseudo Miracleが起こったので勝つ確率は1ですが、飽くまでも確
AI屋さんの LLMとfletとdockerとcloud runと私
AI屋さんの LLMとfletとdockerとcloud runと私
LLMに200万トークン全文入力 追加学習ずみの専門分野特化のLLMの作り方
今回はwebアプリの部分を flet に置き換えです。
flet は flutter(≒google) 由来の 次世代技術のwebアプリで、
flutterは、HTML,CSS,各種言語 の次世代 代替品です。完成イメージ図
![スクリーンショット 2024-10-05 11.15.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237930/6e2a51f7-c0be-92ae-4635-e8b458402ce2.png)
flet で見た目もweb屋さんの市販品相当を実現可能ですので、
例えば、コンシューマーアプリを作るならば、
全文入力追加学習済みLLMと組み合わせて1、居酒屋のメニュー全部入れて、「AIオススメ 大宴会 居酒屋システム」や
2、観光地とレストラン情報を全部入れて、「AIコンシェルジュ デートプランナ
【生成AI入門 LangChain×OpenAI API】レスポンスをストリーミングで表示することでUX向上
OpenAI APIのレスポンスをストリーミングで受信し、ログ出力するコードです。
[前回の記事](https://qiita.com/Ogaga/items/d9ecf1696ed4100e89e0)のコードを改良しています。# コード全体
“` python
import os
import env
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_openai import ChatOpenAI# OpenAIのAPIキーを設定
os.environ[“OPENAI_API_KEY”] = env.OPENAI_API_KEY# OpenAIのインスタンスを作成
model = ChatOpenAI(model=”gpt-4o-mini”, max_tokens=50)messages = [
SystemMessage(content=”日本語でチャットをしてください。ハルシネーションを起こさないで。”),
]# チャットの実行
pr
sklearnで決定木追加毎の平均二乗誤差の推移を可視化する
# はじめに
sklearnのRandomForestRegressorには、決定木の追加毎にどれだけ性能が向上したか表示するための機能がないようです。
パラメータ変更による学習結果の確認や、学習の経過をたどりたい場合に困ります。
今回はモデルの学習時に決定木を一本ずつ足していき、モデルによるテストデータの予測値と正解データの平均二乗誤差を都度取得することで、決定木の追加毎のモデルの精度向上を追う方法を紹介します。
# コード
X_train、y_trainは学習データ、X_test、y_testはテストデータのpandas DataFrameとします。
“`Python
rf = RandomForestRegressor(
n_estimators = 1, # 最初の木は1本
warm_start = True, # 前回までの学習内容を記憶する
random_state = 0,
n_jobs = -1 # 全てのコアを使用
)
max_trees = 100 # 最終的な決定木の本数
trees = []
mses = []
for i i
検索タスクにおけるBM25のコサイン類似度とスコアの精度比較
# 概要
以下の記事の疑問に自分なりに答えを出すために、実際にBM25スコアとBM25ベクトルのコサイン類似度で検索精度にどう違いがあるのか検証しました。[【疑問】BM25でもTFIDF同様にコサイン類似度に基づいてランキングしてよいのか](https://qiita.com/shimajiroxyz/items/bc221ea0879d086dd184)
# 背景
上記別記事で抱いた疑問の概略は以下です。– 検索タスク等において、ランキングの指標として、TFIDFではTFIDF重みベクトルのコサイン類似度を用いるが、BM25ではBM25スコアを用いることが多い
– BM25スコアはクエリに含まれる単語を検索対象文書におけるその単語のBM25の重みに変換して足し合わせた値である。
– BM25でもBM25の重みベクトルのコサイン類似度(BM25コサイン類似度)をランキングに用いたらだめなのか?記事で書いていない内容も含めてもう少し上記の疑問を深堀りします。
BM25スコアは、検索対象文書のBM25重みと、クエリの単語頻度の積和として計算されるため、BM25重みの1次の関
デコレータパターンで構築する柔軟なデータ変換パイプライン
## はじめに
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/a2a4dd40-d26f-2c1c-fc18-10d6f5fb1af1.png)データ処理において、複数の変換や操作を順次適用する「データ変換パイプライン」は、効率的なデータ処理の鍵となります。本記事では、デコレータパターンを活用して、柔軟性と拡張性に優れたデータ変換パイプラインをPythonで設計・実装する方法を詳しく解説します。
## 目次
1. [デコレータパターンとは](#デコレータパターンとは)
2. [データ変換パイプラインへの適用](#データ変換パイプラインへの適用)
3. [実装例](#実装例)
4. [コードの詳細な解説](#コードの詳細な解説)
5. [実世界での応用例](#実世界での応用例)
6. [メリットと設計原則](#メリットと設計原則)
7. [発展的な使用方法](#発展的な使用方法)
8. [まとめ](#まとめ)
9. [参考文献](#参考文献)## デコレータパタ
python basic
### 変数
変数名 = 値“` python
x = “hello”
y = 1
“`### 文字列
シングルクォーテーション or ダブルクォーテーション
シングルで文字列を書く場合、途中に「’」を使う場合は注意“` python
string1 = “hello”
string2 = “world”single = “i’m python”
“`### 数値
“` python
num = 1
num = 2
“`### リスト
JavaScriptでいう配列“` python
list = [1,2,3,4,5]
“`### タブル
定義後に値は変更できない“` python
tuple = (1, 2, 3, 4, 5)
print(tuple) # (1, 2, 3, 4, 5)
tuple.append(6)
print(tuple) # AttributeError: ‘tuple’ object has no attribute ‘append’
“`### 辞書
JavaScriptでいうオブジェクト
Pythonプロジェクトのためのテンプレート: my-python-templateの紹介
## はじめに
Pythonプロジェクトを始める際には、プロジェクトの構造や依存関係の管理、コードの品質を保つためのツールなど、設定すべき項目が多くあります。そこで今回は、これらの設定を一元化したPythonプロジェクトのテンプレート、[my-python-template](https://github.com/C-Naoki/my-python-template)を作成しました。こちらについて今回は紹介いたします。
## my-python-templateの内容
このテンプレートには以下のファイルとフォルダが含まれています。
– `pyproject.toml`: プロジェクトの設定と依存関係を管理するためのファイルです。
– `.pre-commit-config.yaml`: pre-commitの設定を行うファイルです。
– `Makefile`: プロジェクトのビルドやテストなど、一連のコマンドを自動化するためのファイルです。
– `.mypy.ini`: 型チェッカーmypyの設定を行うファイルです。
– `.flake8`: Pythonの静的解析ツールfla
参考になった記事 覚書
## はじめに
今まで読んだ記事の中で、特に参考になったものをまとめておきます。主に、自分のためのメモとして作成しています。
## 論文執筆
### [アカデミックヤクザにキレられないためのLaTeX論文執筆メソッド](https://qiita.com/suigin/items/10960e516f2d44f6b6de)
– 執筆者:[suigin](https://qiita.com/suigin)さん
– サイト:Qiita
#### 補足
– LaTeXを用いて論文執筆をする際、体裁を整えるための様々な注意事項が紹介されている。
### [【LaTeX】\footnoteも\refしたい](https://qiita.com/migawariw/items/ac2b940f5dc7e870850a)
– 執筆者:[みがわり](https://qiita.com/migawariw)さん
– サイト:Qiita
## 機械学習
### [『パターン認識と機械学習』の攻略ノート:記事一覧](https://www.anarchive-beta.com/entry/2021/01/
【入門生成AI×OpenAI API】2024年10月 LangChainで簡単にOpenAI APIを使う方法
# 概要
・LangChainでOpen AIのAPIをコールするためのPythonコードを紹介します。
・OpenAIの公式サイトからAPIキーを発行していることが前提です。# コード
“` Python
import os
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_openai import ChatOpenAI# OpenAIのAPIキーを設定
os.environ[“OPENAI_API_KEY”] = “{APIキーを入力してください}”# OpenAIのインスタンスを作成
model = ChatOpenAI(model=”gpt-4″, max_tokens=200)messages = [
SystemMessage(content=”日本語でチャットをしてください。ハルシネーションを起こさないで。”),
]# チャットの実行
print(“Chat with GPT-4. Type ‘exit’ to end the
Pythonデータ可視化マスター講座② PandasとSeabornを使った小売業データ分析
## はじめに
今回は、Pythonの強力なデータ分析ライブラリであるPandasとSeabornを使って、小売データを分析する方法をご紹介します。50行以上のデータを使用し、15の章に分けて詳しく解説していきます。各章では、コードと共に丁寧な説明を加えていきますので、初心者の方でも安心してお読みいただけます。
## 第1章:環境設定とデータの読み込み
まずは、必要なライブラリをインポートし、サンプルデータを読み込みましょう。Pandasは表形式のデータを扱うのに適しており、Seabornはデータの可視化を簡単に行えるライブラリです。
“`python
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt# サンプルデータの作成
data = {
‘日付’: pd.date_range(start=’2023-01-01′, periods=60),
‘商品名’: [‘A商品’, ‘B商品’, ‘C商品’] * 20,
‘売上’: [100, 150, 2
JupyterNotebook を GitHubPages にデプロイする
JupyterLite を使用することで可能です。
JupyterNoteBook を WASM 実装しているようです。
GoogleColab の場合、Google アカウントが必要になりますが、JupyterLite はアカウント不要です。https://github.com/jupyterlite/jupyterlite
多くの Python ライブラリ(特にネイティブコードに依存するもの)は、まだ WebAssembly 上では動作しません。
## 手順
[1] [デモページ](https://github.com/jupyterlite/demo)にアクセスし、「Use the template」から「Create a new Repository」を選択する
![1](https://github.com/user-attachments/assets/30ea71ec-6ab3-418b-adca-bc60fa1e56b0)
[2] デモリポジトリが自分のアカウントにフォークされるので、フォークしたリポジトリにアクセスする
※私の場合は次の URL
[Python] 九九表の作成
# 九九表を作成する その1
最初はfor文の二重ループを使って九九表を作成しました。
Python3.6から導入されたf文字列を使用して桁が揃うように出力されるようにしました。
~~~Python:kuku_1.py
for i in range(1, 10):
for j in range(1, 10):
print(f'{i * j:4d}’, end=””) # 4桁の幅で出力されるよう指定
print(“\n”, end=””)# 実行結果
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56
PLaMo-100Bのβ版トライアルAPIを用いてデモ用アプリを作ってみた
## はじめに
2024年2月から株式会社Preferred Network(以下、PFN)の子会社である株式会社Preferred Elements(以下、PFE)にて開発されているPLaMoという言語モデルのβ版トライアルAPIの発行が2024年8月9日から順次発行が開始されました[^1]。この記事では、この言語モデルおよび、β版トライアルAPIを利用して作成したデモ用アプリについて簡単にご紹介いたします。アプリについては以下のリンクからお試しいただけます。ただし、β版トライアルAPIの利用自体は期間限定であるため、期間外はご利用いただけなくなります。ご了承ください。
[^1]: [PFEが開発する大規模言語モデルPLaMo β版の無料トライアルの申込受付を開始](https://www.preferred.jp/ja/news/pr20240807/)https://plamo100b-demo.streamlit.app/
また、作成したソースコードについてはGitHubにて公開しています。興味のある方は以下のリンクからご覧ください。
https://github.co
[Joke] c0ffee python版
c0ffeeをpythonで書いてみました。
辞書ファイルから、16進数で表せる単語を探します。Oは0に置換します。
例えば、CAFE C0DE BEEF C0FFEE DEADBEEF等です。
`chmod +x c0ffee.py`として実行権を付け、`./c0ffee.py dictionaryfile.txt`として実行してください。
辞書ファイルは、TABかスペースか改行で区切られた英単語列です。“`c0ffee.py
#!/usr/bin/python
import sysdef hexword(w):
w=w.replace(‘O’,’0′).replace(‘o’,’0′)
for k in w:
if k.upper() not in ‘ABCDEF0’:
return “”
return wdef main():
fn=sys.argv[1]
with open(fn,”rt”) as file:
text=file.read()
words
楽しいな 生き残りゲーム。ゲートアテンション型トランスフォーマーモデルで個性を持つモデルを生成するという手法。
![スクリーンショット 2024-10-05 002249.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846020/529994aa-2afa-9107-aa7c-305850af5b83.png)
![スクリーンショット 2024-10-05 002311.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846020/c4485680-fc4c-b1b3-388e-df7cb1b263b0.png)
### これまでの手法ではトレーニングテキストに存在するトークンでしかテキスト生成に使用できませんでした。この問題点を解消し、広範な語彙ベクトルを扱えるようにしました。
概要
本研究では、GPT-2のトークナイザを使用して、多様なトークンを取り扱う自然言語生成モデルを構築し、さらに生成プロセスにガウシアンノイズを加えることで、出力の多様性を向上させる手法を提案する。また、進化アルゴリズムの適用により
ABC373参加記録 by Python
# リアルタイムに解けた問題
## [A – September](https://atcoder.jp/contests/abc373/tasks/abc373_a)
### 問題文
英小文字からなる12個の文字列$S_{1},S_{2},…,S_{12}$があります。
$S_{i}$の長さが$i$であるような整数$i(1\leq i\leq 12)$がいくつあるか求めてください。### 制約
– $S_{i}$は英小文字からなる長さ1以上100以下の文字列である。$(1\leq i\leq 12)$### アルゴリズム
ループを回しながら、入力を受け取り、その文字列の長さがループ回数と同じ値であれば、変数countを増やしていく。### ソースコード
“` python
count = 0
for i in range(12):
S = input()
if len(S) == i+1:
count += 1print(count)
“`## [B – 1D Keyboard](https://atcoder.jp/cont
システム同定
“`
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
from scipy.optimize import minimize# 1. ランダムバイナリー入力信号(PRBS)の生成
def generate_prbs(length, rate):
“””擬似ランダムバイナリシーケンスを生成する関数”””
prbs = np.random.choice([1, -1], size=length)
prbs = np.repeat(prbs, rate) # サンプルを繰り返して出力を増やす(サンプリング周波数を上げる)
return prbs# 2. サンプルデータの作成
fs = 100 # サンプリング周波数
duration = 10 # シミュレーション時間 (秒)
time = np.arange(0, duration, 1/fs) # 時間ベクトル# ランダムバイナリー入力信号を生成(長さを時間に合わせて設定)
prb
LangGraphのテストを書く
## Overview
https://langchain-ai.github.io/langgraph/tutorials/rag/langgraph_adaptive_rag/
上の例のようなLangGraphで実装したコードのTestを書く
LangChainの OpenAIChatがどのように呼ばれるかを知る必要がある
## 基本
### `chat.with_structured_output`
source
“`py
structured_llm_grader = chat.with_structured_output(GradeDocuments)
retrieval_grader = grade_prompt | structured_llm_graderscore = retrieval_grader.invoke({“question”: question, “document”: d.page_content})
“`test
“`py
chat_mock = MagicMock()
chat_mock.with_structu