- 1. AWS Lambda(Python)からOpenAIのGPT4のAPIを呼び出してみた
- 2. python.Fileから複数行を読込むreadlineを使わず。
- 3. A summary of scraping from the basics [Introduction to scraping]
- 4. 駄目グラフ005
- 5. もっと頑張ってグラフ001
- 6. [Python]内包表記のif文でelseの場合何もしない処理を入れたい時
- 7. Python
- 8. AOJ
- 9. Seq2Seq
- 10. それ,numpy で書かない?–5–
- 11. Transformer実装
- 12. インタラクティブ問題でpexpectがいい感じだった話
- 13. 【備忘録】PythonでMySQLのデータベースをマイグレーションする方法
- 14. トリボナビッチ数列
- 15. Python初心者の備忘録 #07 ~DSに使われるライブラリ編02~
- 16. Python学習1日目~基本的な文法~
- 17. LangChain “The model text-davinci-003 has been deprecated” に対応する
- 18. pythonの内包表記のメモ
- 19. ループメニュー1を解いていく5
- 20. 駄目グラフ003-2
AWS Lambda(Python)からOpenAIのGPT4のAPIを呼び出してみた
[Supership](https://supership.jp/)の名畑です。[スナックバス江](https://snackbasue.com/)は肩の力を抜いて見られるのでいいですね。年齢を重ねる毎にこういう作品が好きになっていきます。
## はじめに
[AWS(Amazon Web Services)](https://aws.amazon.com/jp/)でWebアプリを作ることがあるのですが、その過程で触れてきたものについて、せっかくなので要点だけを抽出して残しておくことにしました。
特に目新しい内容はありませんが、**AWS**や**OpenAI**のアカウント作成も含めて一通りの流れを残すので、いい具合の備忘になればと。
今回は[Lambda](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html)を経由して[OpenAI](https://openai.com/)の**API**を叩くまでをまとめます。
## Lambdaとは
> AWS Lambda は、サーバーをプロビジョニングま
python.Fileから複数行を読込むreadlineを使わず。
一番簡単なFile読込。
“`python
import os
import sys
import re
# ファイル名
data_file_name = ‘my_test.txt’
f = open(data_file_name, ‘r’)#ファイル読み込み
str = f.read()
f.close()
my_list_in2=str.split(“\n”)print(my_list_in2)#各行は配列に収められている。
“`
with を使わないのが特徴です。
my_list_in2=[‘1′,”,’3′,”]の様な物も読み込めます。最後に改行を入れず書けます。
if my_list_in2[3]==”
my_list_in2[3]=’4’“`python
strw = “\n”.join(my_list_in2)
print(‘myjyoin’,strw)
f = open(“mytest2.txt”, ‘w’)#ファイル書込み
f.write(strw)
f.close()
“`
A summary of scraping from the basics [Introduction to scraping]
## scrapingとは?
○ web上から必要なデータを取得すること
– テキストの取得
– 画像の取得## scrapingの注意点
① 規約違反になっていないか確認する
– Amazon,X,メルカリ,Instagramなど規約で禁止されている② サーバーに負荷をかけないようにする
– スクレイピングは、サーバーにアクセルして情報を取ってくる
– プログラムでデータ取得するので、人間より高速に動作する③ 著作権の侵害をしていないか確認する
– 取得したデータ(rawデータ)をそのまま譲渡すると著作権侵害になる
– 何かしらの分析を加えたデータであれば譲渡しても問題ない## Requestsライブラリの使い方
## Reference site
[【Python × スクレイピング入門①】スクレイピングとは?注意点3つと必要なライブラリを紹介](https://www.youtube.com/watch?v=fzpYaYnQ3Sc&t=9s)
駄目グラフ005
Python/seaborn の swarmplot/stripplot であるが,データポイントが重ならないように「妙な小細工」をする。その小細工が「データに意味ありげな表現」をしてしまう。
グラフを見る人に,潜在的な歪みを強要する。なんか,非対称だとか,全体的に(まるでクリスマスつr-みたいに)上向き傾向。
![スクリーンショット 2024-01-21 21.33.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611739/f41d6a8f-c006-e78e-792e-0dbe1f5cc720.png)
左右対称でないのは何らかの傾向が見えたり,横方向の散らばりは枠があるようで,もっとたくさんのデータがあると,グッチャリ固まるのは目に見えている。
![スクリーンショット 2024-01-21 21.34.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611739/3415fa1e-c8af-
もっと頑張ってグラフ001
元の図をけなすようで申し訳ないが,ちょっと手間を掛けるとよりよい(?)グラフになるのじゃないかなという例を集めていく。
[元の図](https://qiita.com/konakalab/items/be676025fb5635467171)
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3537303936362f65396537366535662d623464352d643433632d616466322d3439616231616365343034622e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611739/68ba3131-91ea-acb0-2e6a-658fde156ff0.png)**凡例はいらない**
凡例と図の記号の対応をその都度やらないといけなので,全体が見通し
[Python]内包表記のif文でelseの場合何もしない処理を入れたい時
## 本記事の目的
**内包表記の if 文で,条件に当てはまらない (else) の場合,何もしない処理 (pass)をしたい**例)
条件「偶数」の時,その数字をリストに格納し,
「偶数」でない場合 (else) ,何もしない (pass)“`Python
ans = [i if i % 2 == 0 else pass for i in range(10)]
# 下記のリストを作成したい
# [0, 2, 4, 6, 8]
“`実際にこれを実行すると以下のように怒られます.
“`Python
File ““, line 7
ans = [i if i % 2 == 0 else pass for i in range(10)]
^
SyntaxError: invalid syntax
“`「無効な文法です」と怒られました…
## 結論
「if」を for の前ではなく後ろに記述する.
“`Python
ans = [i for i in rang
Python
#配列
##検索
[find] .find(検索する文字列, 開始位置, 終了位置)
[rfind]…後から
該当文字列が見つかれば0から始まる文字列1を返す
無ければ-1を返す“`Python
s = “abcabcabc”
index = s.find(“b”)
“`##カウント
[count()]“`Python
s = ‘aaabbc’
print(s.count(‘b’)) #=> 2
“`##置換
[replace]“`Python
s = ‘Today is Monday.’
ss = s.replace(‘Monday’, ‘Sunday’) #=> ‘Today is Sunday.’
print(ss)
s2 = ‘Hello Hello’
ss2 = s2.replace(‘Hello’, ‘Bye’) #=> ‘Bye Bye’ 第三引数を指定しなければすべて置換される
print(ss2)
s3 = ‘World World’
ss3 = s3.replace(‘World’, ‘Hello’, 1) #=> ‘Hello
AOJ
# [プログラミング課題2020](https://kkuramitsu.github.io/myaoj/)
– 計算機数学I・II
– 数値計算法Ⅰ・Ⅱ
– データ構造とアルゴリズム
– 数理モデル# 先輩が選んだ簡単問題より
### (1) Hello World ([ITP1_1_A](http://judge.u-.ac.jp/onlinejudge/description.jsp?id=ITP1_1_A&lang=jp))
“`Python
print(“Hello World”)
“`### (2) xの3乗 ([ITP1_1_B](http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_1_B&lang=jp))
“`Python
x = int(input())print(x ** 3)
“`
– `x ** y` … $x^y$### (3) ワード ([Volume3_0335](http://judge.u-aizu.ac.jp/onlinejudge/de
Seq2Seq
# *NLP From Scratch : Translation with a Sequence to Sequence Network and Attention*
# このチュートリアルの目標
RNNを使用することでフランス語から英語に翻訳する– 英語とフランス語の翻訳ペアがタブ区切りで各行に一つずつ書かれたテキストファイル → リスト
– 入力文(フランス語)をエンコーダが読み取りベクトル化
– デコーダにおいて、重み付けをしたベクトルを使って出力文(英語)を生成する
– 学習データを準備してモデルのトレーニングを行う
– 実行中に残り時間や進捗状況を`print`する
– 損失値の配列をグラフ化し、視覚的に学習の効率や結果を判断する
– 入力文、ターゲット(翻訳ペアより)、出力を`print`し、主観的な品質判断を行う
– (Attentionの視覚化)# 事前準備
*In which two recurrent neural networks work together to transform one sequence
それ,numpy で書かない?–5–
## それ,numpy で書かない?–5–
Python ではリストがよく使われる。また,for ループが遅いのでリストに特化したリスト内包表記も推奨されることが多い。
それなりの根拠があるからではあるが…
課題:リストではなく一次元配列を使う
副次効果:他の部分のプログラムもシェープアップされる
以下の記事を素材とさせていただき,
https://qiita.com/Kazuma-Nakano/items/8294f96698e792614a9b以下のように書き換えてみる。
“`python
import numpy as np
import matplotlib.pyplot as pltdef plot(l_inf = 20, K = 0.3, color = “black”): # 繰り返し処理をまとめる
t = np.arange(0, 25, 0.1) # 簡単に,刻みを細かくできる
lt = l_inf*(1 – np.exp(-K*t)) # ベクトル演算できる(組み込み関数を使おう)
ax.plot(t, l
Transformer実装
# Tensor2Tensor
無理だった。“`
$ pip3 install tensorflow-gpu==2.1.0
# GPU対応のTensorflow$ pip3 uninstall tensorflow-addons
$ pip3 install tensorflow-addons==0.9.1$ t2t-datagen –data_dir=data/data1 –tmp_dir=tmp –problem=translate_jpen –t2t_usr_dir .
$ t2t-trainer –data_dir=data/data1 –problem=translate_jpen –model=transformer –hparams_set=transformer_base_single_gpu –output_dir=training_result1 –t2t_usr_dir=.
“`# Harvard
GPUを4つ使うので、`G.large`を借りる。
“`
qrsh -g gcc50582 -l rt_G.large=
インタラクティブ問題でpexpectがいい感じだった話
# とあるABC337にて
こんな問題が出てきました。https://atcoder.jp/contests/abc337/tasks/abc337_e
具体的な問題は実際に見てもらうとして、本題はこれが**インタラクティブ**問題だということです。
つまりコードテストにぶちこむだけでは合ってるかどうかすらわからない。これではペナりまくってしまう。
ですのでテスターをサクッと自作したいと思います# subprocessを使う
やばい、めんどい、使いたくない。
pipeとかを使えば行けるぽいですが、osレベルの話に関わってくるのでコンテスト中に作成するのは断念# pexpectを使う
subprocess以外に出てきたいい感じのやつです。
以下[ここ](https://pexpect.readthedocs.io/en/stable/overview.html)からサンプルコード
“`python
# This connects to the openbsd ftp site and
# downloads the recursive directory listing.
【備忘録】PythonでMySQLのデータベースをマイグレーションする方法
今回はPythonでMySQLのデータベースをマイグレーションする方法についてまとめました。
備考:
Python:3.9
MySQL:8.0.31
動作環境:MacOS
開発環境:PyCharmモジュール:
alembic
pytz
python-dotenv### 1. PyCharmにて新規プロジェクトを作成する
### 2. プロジェクト直下にmigration_database.py / env.py / .env / requirements.txt / database / database.py / models.pyを作成する
“`フォルダ構成.
.
├── main.py
├── migration_database.py
├── env.py
├── .env
├── requirements.txt
└── database
├── database.py
└── models.py
“`### 3. requirements.txtファイルを以下の内容にする
“`requirements.txt
alembic
pytz
トリボナビッチ数列
トリボナビッチ数列のプログラムをPython3で実装しました。
“`Python3
###########################
## トリボナビッチ数列
###########################トリボナビッチ関数
def tri_r(num):
if num <= 1: return 0 if num == 2: return 1 #再帰呼び出し return(tri_r(num - 1) + tri_r(num - 2) + tri_r(num - 3)) #トリボナビッチ数列の7番目の項を求める ans = tri_r(7) # 数字を表示 print(ans) ```
Python初心者の備忘録 #07 ~DSに使われるライブラリ編02~
# はじめに
今回私は最近はやりのchatGPTに興味を持ち、深層学習について学んでみたいと思い立ちました!
深層学習といえばPythonということなので、最終的にはPythonを使って深層学習ができるとこまでコツコツと学習していくことにしました。
ただ、勉強するだけではなく少しでもアウトプットをしようということで、備忘録として学習した内容をまとめていこうと思います。
この記事が少しでも誰かの糧になることを願っております!
**※投稿主の環境はWindowsなのでMacの方は多少違う部分が出てくると思いますが、ご了承ください。**
最初の記事:[Python初心者の備忘録 #01](https://qiita.com/Yushin-Tati/items/961dc47d6163f944f7e9)
前の記事:[Python初心者の備忘録 #06 ~DSに使われるライブラリ編01~](https://qiita.com/Yushin-Tati/items/5dcad7518a0f8a3fdbc1)
次の記事:まだ今回は**Pandas**についてまとめております。
**※D
Python学習1日目~基本的な文法~
### 引数
引数は関数を呼び出すための値
~~つまり関数は引数がないと動かない~~
→引数なくても動く関数は存在するので、ここは間違い
コメント参照### 戻り値
引数に呼び出された関数の実行結果の値## キーワード引数と位置引数
関数の中に複数の引数がある場合、どちらを先に書くかというのが決まっており、位置引数から記載を始める
~~~python:test.py
print(“Python”,end=”!”)
~~~
ここでは[end]が引数名になるので、引数名がある引数=**キーワード引数**となる
単純に値を渡すだけの引数は**位置引数**となる## ブロックコメントとインラインコメント
~~~python:test.py
# これはブロックコメントです
print(“Hello world”)print(“Hello world”) # これはインラインコメントです
~~~
インラインコメントは処理の横に空白を2個開けて、書き始める。
ただしインラインコメントはそこまで推奨されないので注意。どちらのコメントも**文末**までがコメント扱いとなる
##
LangChain “The model text-davinci-003 has been deprecated” に対応する
# 症状
以前、「LangChainをFastAPI経由でUnityで利用する」Pythonプログラムを書いて、Render.comで動かしていたのですが、気がついたら、以下のようなエラーが返るようになってしまいました。
> {“detail”:”The model text-davinci-003 has been deprecated, learn more here: https://platform.openai.com/docs/deprecations}
要は、「モデルが古いからもう使えないよ」ということですね。これを解決しました。かなりハマったので、誰かのお役に立てれば。ただし、「LangChainをFastAPI経由でUnityで利用する」方法には触れていません。
# やったこと
コードを次のように修正しました。修正部分は強調してあります。
“` python
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List
pythonの内包表記のメモ
Pythonの内包表記のメモを書きます。英語名で「List Comprehension」と呼びます。
s = [‘……’, ‘.#.#..’, ‘……’]
上記を、二次配列で表したいときのコードを書きます。
“`python
r = [[0 if v == ‘.’ else ‘#’ for v in row] for row in s]
“`
上記は下記の内包表記です。“`python
r = []
for row in s:
r2 = []
for v in row:
if v == ‘.’:
r2.append(0)
else:
r2.append(‘#’)
r.append(r2)
“`
メモとして残します。
ループメニュー1を解いていく5
https://paiza.jp/works/mondai/loop_problems/loop_problems__kuku_step2
### Python
“`py
N = int(input())
for i in range(1,10):
if i < 9: print(i * N, end=" ") else: print(i * N) ``` ### PHP ```PHP
“`
https://paiza.jp/works/mondai/loop_problems/loop_problems__pow2### Python
“`py
N
駄目グラフ003-2
## ダイナマイトプロットはやめよう
駄目グラフ003でも書いたのだが,それは簡単すぎたので,追加する。
ダイナマイトプロットとは,下図のようなものである。
「見本 図の描き方(良い図の例)」などと書いてあるが,見本でもなく,よい図の例でもない。そのような認識自体が誤りなのである。![スクリーンショット 2024-01-19 9.27.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611739/ed176a3a-226f-dc64-e1db-1d0525981746.png)
この図では棒の高さは割合であることはわかるが(たぶん),ひげ(エラーバー)が何を表すか明示されていないことすらある(割合だとして,ひげが 1 を超える意味は不明だろう)。
fig. 1 のエラーバーは棒の上側にしかないので,群を比較するときに不便であるということで,それよりはまし(?)な,fig. 2 のようなものもある。
この図では,エラーバーは「平均値±標準偏差」である。![output