- 1. command not found: pip / command not found: python を解決する
- 2. Pythonの備忘録 (超初心者)
- 3. 昔模様を作るプログラムを作った話
- 4. はじめてのPython(基礎文法)
- 5. Flaskでjsonデータのやり取りをする方法
- 6. オリジナルの関数を透過画像で保存する
- 7. Pythonのpyttsx3のNameErrorの対処
- 8. [Django]Modelのテストを作成してみる
- 9. [Colab][Python3]ニューヨークダウ指数の推移を可視化する方法
- 10. 【Python】range関数の数値がタプルに…「’tuple’ object cannot be interpreted as an integer」エラー
- 11. 因果関係の考え方
- 12. ABC350 with Python (A~F)
- 13. sentence-transformesでのcallback関数の書き方
- 14. 【 Python 超入門書 ① を出版しました】
- 15. 読みにくいMNISTの文字を見つける
- 16. VIFを計算する
- 17. python GUI入門 tcl/tk 子ウィンドウ起動
- 18. 503を返すモック用Webサーバーの立ち上げ
- 19. Djangoの開発環境からhello worldまで
- 20. Python標準入力受け取り方メモ
command not found: pip / command not found: python を解決する
## 問題
以下の環境。
– 2024年4月28日時点
– python latest stable 3.12
– MacBook M2 ProPython でpip installができない。
“`
$ pip install openai
zsh: command not found: pip
“`Pythonがインストールされていないか、Pythonのパスが正しく設定されていない。
“`
$ python –version
zsh: command not found: python
“`## 解決策
自分の場合、以下の1と2の両方の手順を踏む必要があった。
### 1. python と pip を入れる
Python がインストールされていないので、Homebrewを使用してインストールする。
“`
$ brew install python
…
==> Installing python@3.12
==> Pouring python@3.12–3.12.3.arm64_ventura.bottle.tar.gz
Warning
Pythonの備忘録 (超初心者) <入出力>
僕がPythonの使い方をド忘れした時のための備忘録を作成します。
ざっくりPythonの使い方は下の図で表したような感じになっています。
![スクリーンショット 2024-04-22 9.56.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575336/20647be7-dfde-97ee-3afd-5fe0101e5bfe.png):::note warn
あくまで上記はイメージです
厳密さを必要とする場合は下記LINKを参照してください。
https://www.python.org/
:::数字を出力
“`python
print(1)
“`
:::note info
出力
1
:::文字を出力
“`python
print(Hello world!)
“`
昔模様を作るプログラムを作った話
※結構昔に作ったプログラムで下手なのでご容赦ください。
# フラワーオブライフ
ある日(3年以上前)にYouTubeで面白い模様を見たのです。
紹介として「黄金比と円周率を掛け合わせた幾何学模様、それがフラワーオブライフ」と都市伝説系YouTubeで見て、その図形は神社の狛犬とか他世界中に使われているらしく、最近だと日〇レの夜11時のニュースのOPで見れます。
## プログラム
円が見た感じ円の中心から正六角形の頂点に新しく中心を作り円を作るという感じの図形になっています。
“`Python3
import numpy as np
import matplotlib.pyplot as pltdef en(theta, cx, cy):
x = np.array([])
y = np.array([])
for i in range(len(cx)):
x = np.append(x, np.cos(theta)+cx[i])
y = np.append(y, np.sin(theta)+cy[i])
lin
はじめてのPython(基礎文法)
# はじめに
本記事では、プログラミング言語「Python」の基本的な書き方を紹介します。
Python初学者の方、基礎文法をど忘れしちゃった方等に読んでもらえたらなと思います。
# 環境
– プログラミング言語
– Python 3.12.3
:::note info
コマンドプロンプトにて以下コマンドを打つとバージョンを確認できる
:::
“`
python -V
“`
– 統合開発環境
– Jupyter lab(使用ブラウザはCrome)
# 基礎文法
## 四則演算
“`
#足し算
1+2#出力結果:3
#引き算
3-1#出力結果:2
#掛け算
2*3#出力結果:6
#割り算
8/3#出力結果:2.6666666666666665
#割り算(整数)
8//3#出力結果:2
#割り算(整数で割った余り)
8%3#出力結果:2
“`
:::note info
「#」 につづいて入力することでコメント(実行結果に影響を与えない文字)を書ける
:::
## 文字列
“`
#ダブルクォーテーション(もしくはシングルクォーテーシ
Flaskでjsonデータのやり取りをする方法
## 初めに
私は今までの開発ではフロントエンドからバックエンドで送られてくる値は
string型やint型で送るものが多く、json形式でデータが送られることはあまりありませんでした。
今回は備忘録としての目的も兼ねて記事に残そうと思います。## 情報の取得とレスポンス
今回はデータベースから情報が送られてきた際にその値とステータスを返すという形で実装していきます。“`example.py
#フロントエンドから取得した値をjson型で取得する
body = request.data.decode(“utf-8”)
body = json.loads(body)“`
ここでそのままjson型のまま取り出すと文字化けするかもしれないのでutf-8を指定します。
“`example.py
response = {
“status”:”OK”,
“return”:”body[“return”]”
オリジナルの関数を透過画像で保存する
スライドを作っているときに関数形の模式図が欲しい…けどパワポの図形でなかなか作れない…といった時にpythonで図形を描画し、線だけを背景透過で保存する方法です。
関数形の部分に好きな関数を書けば動くようになっているはず。
## コード
“`python
import matplotlib.pyplot as plt
import numpy as npdef function(x):
### 関数を記述
gaus = np.exp(-x**2)
periodic = np.cos(x/0.15)**2return gaus*periodic
# 必要に応じて軸を定義
x = np.linspace(-2,2,500)plt,ax = plt.subplots()
ax.plot(x,function(x))ax.axis(“off”)
fig.savefig(“image.svg”,transparent=True)
“`
### 解説
#### 関数の定義
f(x)の形でもいいですし、f()で引数を取らずに目的の関数
Pythonのpyttsx3のNameErrorの対処
音声読み上げてくれるアプリを作りたかったので調べる。
https://nekonogorogoro.com/pyttsx3_speak_jugemu/
↑これを参考にしてpyttsx3モジュールを使い音声を読み上げさせる。
“`py
import pyttsx3
engine = pyttsx3.init()
engine.say(“I will speak this text”)
engine.runAndWait()
“`
“`
NameError: name ‘objc’ is not defined
“`
オブジェクトが見つからないので調べる。
# 解決
参考https://stackoverflow.com/questions/77197398/error-running-pyttsx3-code-on-os-x-nameerror-name-objc-is-not-defined
「py3-tts のインストールに従ったところ、ダミーパラメータなしで動作するようになりました。」
と記載してあったのでpy3-ttsをダウンロード。
“`
$ pip ins
[Django]Modelのテストを作成してみる
## はじめに
自分用の個人開発のメモ/備忘録として記録していきます。## 環境
django5.0
↓ dockerでの開発環境作成はこちらhttps://qiita.com/mkthrkw/private/588226d30690c707d2b8
↓ 認証ユーザーモデルはこちらをそのまま利用
https://qiita.com/mkthrkw/private/b2ea8fb8f33a68faab87
## やりたいこと
Modelのテストを一通り書いてみる## テストについて下調べ
### Modelテストの種類
下記のようなテストが一般的な模様。| No | カテゴリ | 内容 |
|:—:|:—:|:—|
| 1 | フィールド検証テスト| 各フィールドが正しい属性(型、デフォルト値、バリデーションルールなど)を持っているかを検証 |
| 2 | モデルメソッドのテスト | モデルにカスタムメソッドが含まれる場合、期待通りに動作することを確認 |
| 3 | モデルの保存と取得のテスト | モデルインスタンスがデータベースに正しく保存され
[Colab][Python3]ニューヨークダウ指数の推移を可視化する方法
## 要 旨
Colabを利用してPython3においてニューヨークダウ指数の推移を可視化する方法について記述します。
## 実施要領
必要なライブラリのインストール等
“`python3
!pip install japanize_matplotlib
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
%matplotlib inline
%config InlineBackend.figure_format = ‘retina’
“`
ニューヨークダウ指数の取得
“`python3
from pandas_datareader import data as web
from pandas import Series, DataFrame
import datetimeny_dow_df = web.DataReader(“DJIA”, “fred”, start=datetime.date(1900, 1, 1))
ny_dow
【Python】range関数の数値がタプルに…「’tuple’ object cannot be interpreted as an integer」エラー
# 概要
環境変数で設定した値に「`1,000,000`」のようにカンマを入れていたら、タプルとして解釈されてしまうことが分かりましたので、備忘録として紹介します。# エラーが発生したコード
(実際に運用していた時は、別の環境設定ファイルから数値を取得していましたが)実際にやっていたことは以下の通りです。
“`py
### 別ファイルで設定した値 ###
NUMBER = 1,000,000### プログラムのコード ###
number = NUMBERfor i in range(number):
# …処理…
“`エラーメッセージ
“`
for i in range(number):
TypeError: ‘tuple’ object cannot be interpreted as an integer
“`# 原因と解決方法
冒頭にも記載した通り、Pythonではカンマで区切られた数値はタプルとして解釈されます。
そのため、`1,000,000`と記載していると、タプルとして`range`関数に渡されてしまいます。
因果関係の考え方
以前に因果推論についての記事を書きましたが、因果推論は説明できても因果関係とは何ぞやとなった場合に意外と説明できない方も多いのではないでしょうか。
因果関係は様々な考え方がありますが、ここでは「疫学」における因果関係について説明していこうと思います。
疫学と聞くと疫病を未然に防ぐ医学の学問と思われがちですが、実際には統計学に近い学問で、統計学はデータ分析とすると疫学はデータの集め方とググったら出てきます。
例えば因果関係を推定するためにデータを集めるには
– ランダム化比較試験(RCT)
ある試験的操作(介入・治療など)を行うこと以外は公平になるように,対象の集団(特定の疾患患者など)を無作為に複数の群(介入群と対照群や,通常+新治療を行う群と通常の治療のみの群など)に分け,その試験的操作の影響・効果を測定し,明らかにするための比較研究
(出典:日本理学療法学会連合)– コホート研究
ある特定の疾患の起こる可能性がある要因・特性を考え,対象
ABC350 with Python (A~F)
ABC350のA~F問題をpythonで解説していきます。
# A – Past ABCs
## 問題
長さ $6$ の文字列 $S$ が与えられます。$S$ の先頭 $3$ 文字は `ABC` であり、末尾 $3$ 文字は数字であることが保証されます。$S$ が、このコンテスト開始以前に AtCoder 上で開催され終了したコンテストの略称であるかどうか判定してください。
ただし、文字列 $T$ が「このコンテスト開始以前に AtCoder 上で開催され終了したコンテストの略称」であるとは、以下の $348$ 個の文字列のうちいずれかに等しいことと定めます。
`ABC001`, `ABC002`, $\ldots$, `ABC314`, `ABC315`, `ABC317`, `ABC318`, $\ldots$, `ABC348`, `ABC349`
特に `ABC316` が含まれないことに注意してください。
https://atcoder.jp/contests/abc350/tasks/abc350_a
## 考察
素直に今まで開催された会をリストに入れて、文字
sentence-transformesでのcallback関数の書き方
Sentence-TransformersでEmbedding Modelをトレーニングする際に、どのようにCallback関数を書いたらいいかの日本語の記事がなかったので、備忘録を兼ねて残しておきます。
Sentence-TransformersでEmbedding Modelをトレーニングするコード自体はこちらを参考にしてください。[LlamaIndexによる埋め込みモデルのファインチューニングを試す](https://note.com/npaka/n/nd69fbfbdfa74)
また、こちらは公式のDocumentです。[SentenceTransformer](https://www.sbert.net/docs/package_reference/SentenceTransformer.html)今回はEvaluatorから提供されるスコアが最高値になった際にモデルを保存するCallback関数を例に書きます。
best_model自体は既にfitのオプションとして実装されているのでご注意。### Callback関数
“`Python
best_score
【 Python 超入門書 ① を出版しました】
プログラミングと Python が, 超初心者な方のために, 入門書を書かせていただきました (o'(ェ)’)人🐍✨
[第2版] になります 🐍
Windows11 を, プラットフォームとしております 🐍
amazon の規定で 「最長5日間」 までしか, 無料キャンペーンを行えないので, 4月21日から, 25日までの5日間だけ 「無料配布」 をさせていただいております 🐍✨
ご興味ありましたら, 何卒, よろしくお願いいたします 🐍✨
↓ ココ
https://www.amazon.co.jp/%E3%81%AF%E3%81%98%E3%82%81%E3%81%A6%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Python-%E5%85%A5%E9%96%80%E8%80%85%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%EF%BC%91
読みにくいMNISTの文字を見つける
突然ですが、私はリアルでは字が汚いと言われることがあります。どれくらい汚いかと言われると、大学院生時代に生協で備品を注文しようとした時に個数を数字で書くと職員さんが読めないレベルで字が汚いらしいです(自分は達筆なのだと思っています)。
ところで機械学習で字といえばMNISTを想像される方が多いと思いますが、あれって実際機械学習を勉強するにしては字がきれいなのかとふと疑問に思うことがあります。生データを見てみると「え、読めない」と思うことがあるのですが、じゃあ機械学習を使ってみるとどうなるのかちょっと覗いてみましょう。
# コーディング
## ライブラリのインポート
“`Python3
from sklearn.datasets import load_digits
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split as tts
import numpy as np
import matplotlib.pyplot as plt
“
VIFを計算する
以前書いた記事で自由に値を入れてシミュレーションするならVIFを計算して多重共線性を考慮した上で値を入れましょうと書いたことがあります。
今回はそのVIFについて書いていきます。
>独立変数間の多重共線性を検出するための指標の1つ。独立変数間の相関係数行列の逆行列の対角要素であり、値が大きい場合はその変数を分析から除いた方がよいと考えられる。10を基準とすることが多い。
>『統計WEB』より分かりやすく言えば説明変数間で独立していない変数があります。でじゃあそういう変数ってどういうものかっていうと変数間で相関がある物だと考えてください。
当たり前ですけど変数間で相関があったらそのまま値を入れちゃダメで、相関に基づく回帰した値を入れないと実データと乖離する可能性があり再現性に難がある可能性があります。
そこでVIFを計算して変数間で相関のある変数を削除して全ての変数を独立させます。
ではここからは具体的にプログラムとデータを使ってやっていきま
python GUI入門 tcl/tk 子ウィンドウ起動
# 実行サンプル
子ウィンドウ起動![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423803/f7c7c319-1289-0190-097d-8ad6596622a7.png)
・ボタン押下で mode 指定して、子ウィンドウ起動
モード指定により、画面GUIが違うものとして表示される・ChildWindowが既に存在する場合はメッセージボックスで通知し、新たに開かないようにする
・childWin.py で mode を引数として受け取る
・childWin 起動後、画面が閉じられるまで、次の処理は実行されないようにする
・main.py と childWin.py で情報受け渡しする
# 実行環境
windows10
python3.9.5pythonモジュール tcl/tk
# 実行手順
ソースコードを作成する
windowsコマンドプロンプトでプログラム作成したフォルダに移動し、下記実行する
“`
python プログラム名.py
“`
503を返すモック用Webサーバーの立ち上げ
「503エラーのテストしたいのですが、何か方法思いつきませんか」と質問されたので。
(おそらく何かしらのAPIを提供しているサーバーがエラーを返したときを想定しているのかな、と推測)。API叩くツール等でモックサーバーを提供していると思われるのでそれを利用する、
AWSのアカウント等があるならロードバランサーを立ち上げる、
などいろいろな解決方法はあるかと思いますが、取り急ぎかつローカルでの検証であればpythonで十分かなーと単に503を返す標準ライブラリで起動できるサーバーをお勧めしました。
nodejsやRuby等でも同じことはできますが、仕事用の端末に入ってないのでPythonで。“`python
from http.server import HTTPServer, BaseHTTPRequestHandlerclass My503Handler(BaseHTTPRequestHandler): # BaseHTTPReuqestHanderに基本的な部品がある
def do_GET(self): # do_GETでGETメソッドがハンドリングできる
Djangoの開発環境からhello worldまで
Djangoで株価の推移をチェックできるアプリケーションを作ろうとしています。そのため、Djangoの基本的な開発環境を調べて、hello worldまで出力させてみました。
# 環境
windows 11 Home
Linux version 5.15# 手順
作成から使用するまでの大まかな手順です。
1. 仮想環境(venv)の作成
1. プロジェクトの作成
1. アプリケーションの作成
1. サーバーの起動# 開発環境
Djangoの開発を進めていくうえでpythonのライブラリのversionを変更し、作成を進めていきます。pythonで作成した他のコードでライブラリ依存によるエラーの発生を防ぐため、仮想環境を構築し、その中でライブラリを管理して開発進めていきます。最初に仮想環境について説明した後、Djangoの開発環境からhello worldまでを説明していきます。## 1. 仮想環境の作成
今回は、pythonの仮想環境ツールでプロジェクトごとに隔離されたpython環境を作成できる“`venv“`を用いて開発を進めていきます。作成した仮想環境を有効化
Python標準入力受け取り方メモ
# 数値と文字列を同時に受け取る
入力される数値と文字列
“`pyton
ピカチュウのレベル 95
“`
一度str型で受け取ってからint型にする
“`python
text,level=map(str,input().split())
level=int(level)
“`
# 文字列で入力された配列を受け取る
入力
“`python
[1,2,3,4,5]
“`
まずリストで受け取って” [ ” と” ] “を外す。その後int型に変換して新しいリストに格納する。
“`python
receive=list(map(str,input().split()))
receive=receive[1:-1] # “1,2,3,4,5”
new_list=[]
for i in range(len(receive)):
new_list.append(int(receive[i]))“`
# 数値を同時に受け取る
## 変数で受け取る
入力される値
“`python
1 2
“`
変数で受け取る
“`python:
A,B=map(int,input(