Python関連のことを調べてみた

Python関連のことを調べてみた

AtCoder始めて3ヶ月の感想

# AtCoder始めて3ヶ月が経ちました

AtCoder始めてみて3ヶ月での知見を簡単にまとめておく
– なにかの参考になれば

# レート
記事執筆時点ではレート563の茶色
![スクリーンショット 2024-06-01 014734.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/398956/e5a13c13-9c3a-eccc-d05c-8cfb47c935ac.png)

入茶したタイミングで記事を書きたいと思ったが少し時間が経ってしまった。

# 取り組み

現状としては、土曜21時のABCに参加するくらいで、それ以外の取り組みは特にしていない。
先日鉄則本を購入したのでこれを機に少しずつ勉強していきたい。

# 言語

Pythonを使用。
理由はなんか個人的な趣味のプログラムを作るときや、
とりあえずなんか作業を自動化させるか、
というときとかの言語はなんでもいいってなったときに、
一番使っている言語だから。
AtCoderの中ではC++の次?ぐらいに使われている言語みたいだし特に問

元記事を表示

二項定理?···「2024 岩手大学 前期【1】(1)」をChatGPTとsympyとWolframAlphaでやってみたい。

# オリジナル
大学入試数学問題集成 様>【1】(1) テキスト

https://mathexamtest.web.fc2.com/2024/202410061/2024100610100mj.html

# 公式ページ
問題 【1】(1) 
https://www.iwate-u.ac.jp/upload/24-022.kyou_sugaku.pdf#page=2

解答
https://www.iwate-u.ac.jp/upload/24-050.zenki_kaitourei_kaiteiban0528.pdf#page=2

過去問題
https://www.iwate-u.ac.jp/admission/disclosure/past.html#a1

# ChatGPT-3.5先生へ
大学入試数学問題集成 様> 【1】 (1)テキスト

・ページのソースを表示です。MathMLです。
 省略しようと思いましたが、M.E.T.A.様 の全文から必要部分の抜粋です。
“`

<

元記事を表示

コンテナ同士で通信させる

# はじめに

[こちら](https://qiita.com/maooz4426/items/fea320d459d1c994f6d2)の記事でdjangoでapiを作ったので、それを受け取る用のdiscord botを作成したのですが、
“`
requests.exceptions.ConnectionError: HTTPConnectionPool(host=’localhost’, port=8000): Max retries exceeded with url: /api/Item/ (Caused by NewConnectionError(‘: Failed to establish a new connection: [Errno 111] Connection refused’))
“`
というエラーが出てしまいました。

これは、localhostのポート8000番に接続しようとしたけど、拒否されたというエラーです。

この原因を調べたとこ

元記事を表示

[メモ]機械学習の前処理のあれこれ

※signate cloudを勉強する中で覚えたことをメモ書きします。

pandasでデータ整形する手順を備忘用にメモ書きします。

## 公式ドキュメント

“`
# 標準ライブラリ リファレンス(日本語)
https://docs.python.org/ja/3/library/index.html#library-index

# 公式ドキュメント DataFrame
https://pandas.pydata.org/pandas-docs/stable/reference/frame.html
“`

## dataframeの行、列表示リミットを変更

“`
pd.set_option(“display.max_rows”,50)
pd.set_option(“display.max_columns”,50)
“`

## ライブラリ読み込み

“`python
# ライブラリpandasを略称名pdとしてインポート
import pandas as pd

# ライブラリnumpyを略称名npとしてインポート
import numpy as n

元記事を表示

「読める、読めるぞ!」法律系じゃなくても楽しく条文が読めるWebアプリ《法令.app》

:mouse_three_button:[《法令.app》「ほうれいアプリ」と読みます。⬇️クリックして体験してください。登録も追跡もありません!(2018年辺りより前のスマホだと機能制限の可能性アリ)](https://jplaws.app)

:bird: 私「[E-Gov法令検索](https://elaws.e-gov.go.jp/)のデータを使ってアプリを作りました。関連する法令にリンクを張って飛べるようにしました。元号はわかりやすく西暦に変換しました!」

・・法律系の開発をされてた方なら、こう思うでしょう。

> 「そういうの10年くらい前からあるから」
> 「プロ向けに、より多機能で完成されたのがいっぱいある。今さらどうしたの?」
> 「E-Gov法令検索わりと使える。あれでいいよ」

・・それ以外の大多数の方は・・

> 「まず、法律の条文、読む?」

あんまり読む人いませんね!ニッチな分野です。ただ、私は仕事の資格を取るときに「[E-Gov法令検索](https://elaws.e-gov.go.jp/)」をよく読んでいました。国の「重厚長大な」サービスですが、意外

元記事を表示

多項式回帰【ワインの品質予測①】

#### はじめに
本ページでは、ワインの品質を多項式回帰で予測をするようなプログラムを紹介します。

#### てか、、そもそも多項式回帰ってなんだっけ。単回帰と何が違うのか。
1次方程式y=ax+bを使って、予測するやつを単回帰というらしい。
(要は、説明変数が一つの線形回帰のこと。)

一方で、2次方程式y=ax^2 + bx + cみたいな感じで予測するやつを多項式回帰というらしい。

#### プログラム
ワインの特徴量と品質が記されたデータセットをURLから持ってきて、
その中の特徴量の1つである「クエン酸の量」からワインの品質を求めるような多項式回帰のプログラムを書きました。

“`Python
# 必要なライブラリのインポート
import numpy as np # 数値計算を効率的に行うためのライブラリ
import pandas as pd # データフレーム操作のためのライブラリ
from sklearn.linear_model import LinearRegression # 線形回帰モデルを使用するためのライブラリ
from sklearn.mo

元記事を表示

「Pythonによる化学シミュレーション入門」をやってみたよ3~振動反応~

この記事は[現代化学](https://www.tkd-pbl.com/news/n184.html)(東京化学同人)の2022年4月号から2024年3月号まで連載された安藤耕司先生の「Pythonによる化学シミュレーション入門」を読んでやってみた記事です。詳しい内容は上記の「Pythonによる化学シミュレーション入門」をご参照ください。今回は、2022年10月号の振動反応の内容です。

## 目標
振動反応のシミュレーションをします。化学反応には、物質の濃度が時間的もしくは空間的に周期的な変化をするものがあります。これを振動反応と呼びます。振動反応はさまざまな研究がなされ、多くの機構やモデルが考えらていますが今回はそのうちの三つをシミュレーションしてみます。

# Lotka-Volterra機構
次のような、Aが中間体X、Yを経てBになる多段階の化学反応を考えます

“`math
\displaylines{
A + X \longrightarrow 2X \\

X + Y \longrightarrow 2Y \\

Y \longrightarrow B \\

}

元記事を表示

絵文字を一文字ずつ処理する方法

# 結論
[emojiモジュール](https://pypi.org/project/emoji/)を使うと、できます。
“`python
import emoji
text=”👧🏻”
emoji.replace_emoji(text,replace=lambda e, data_dict:print(e,end=” “))
# 👧🏻
“`
# 解説

一般的に、Pythonで一文字ずつ処理したい場合、これでいけます。
“`python
text=”ABCD”
[print(e,end=” “) for e in list(text)]
#A B C D
“`
しかし、ZWJ emojiが含まれている状態で行うとうまくいきません。
“`python
text=”👧🏻”
[print(e,end=” “) for e in list(text)]
# 👧 🏻
“`

## 参考
https://carpedm20.github.io/emoji/docs/#non-rgi-zwj-emoji

元記事を表示

意思決定モデルを確率的意思決定モデルに変換:ε-greedy method

### 方法
“`math
\pi_{b}\big(a|U_{i}\big)
“`
$\pi_{b}$はポリシー
$U_{i}$はあるユーザーiの属性情報などが入ったベクトル
$a$はポリシーに$U_{i}$を与えた時にポリシーが出力する行動選択

上記を確率的意思決定モデルに変換する

“`math
\pi_{\epsilon}\big(a|U_{i}\big) = \epsilon * \pi_{random}\big(a|U_{i}\big) + \big(1-\epsilon\big)*\pi_{b}\big(a|U_{i}\big)
“`

$\epsilon$は任意の確率。
上記は確率$\epsilon$でランダムに行動選択し、$1 – \epsilon$で最適化したポリシーから行動選択するモデルである。

### 確率的意思決定モデルを利用することのメリット
・行動選択の確率を保存しておけば、IPWなどを用い全データを次のモデル学習に利用できる。

・次回モデルの学習の布石として、ランダムに選択したユーザー群を作って、それを施作に組み込むことがある。施作終了

元記事を表示

ストリーミングレスポンスを触ってみた

# はじめに
最近の業務でストリーミングについて触れる機会がありましたので,自身の備忘を込めて記載します.

# ストリーミングとは
そもそもストリーミングとは,サーバーがクライアントに対してデータを部分的に送信する方法です.一度にすべてを送信するのではなく,逐次データを送信するため,大きなデータセットや長時間かかる処理結果を送信する場合に役に立ちます.
このような動作をすることで,リアルタイム体験を提供できます.例えば,ストリーミング再生という言葉をよく耳にしますが,これは逐次インターネットからデータを送られて,ダウンロードすることなくそのコンテンツを楽しむことができます.チャットなどでも,回答がリアルタイムに確認できるため,待ち時間がないことや視覚的にみてもUXの向上が考えられます.

streaming.png正規分布(normal distribution)

## 正規分布(normal distribution)
・正規分布は最もよく使われる分布で、統計学の理論でもよく出てくる分布になります。
・平均$\mu$と分散$\sigma^2$で形状が決まります。
正規分布が平均$\mu$と分散$\sigma^2$に従うことを省略して、$N(\mu, \sigma^2)$に従うと表記します。

下記の図のように、分散が大きくなると、山は低くなり左右に広がって平らになります。分散が小さくなると、山は高くなり、より尖った形になります。
![正規分布.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3780659/d8ce89fe-3101-355c-019c-5e498ce3bc51.png)

確率変数$X$が$N(\mu, \sigma^2)$に従うとき、確率密度関数は次の式で表されます。

“`math
f(x)=\frac{1}{\sqrt{2\pi\sigma^2}}exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right)

元記事を表示

[Python / typing_extensions] ImportError: cannot import name ‘TypeAliasType’ from ‘typing_extensions’ の対策

# 概要

jupyter で遊んでいたら、タイトルに記載のエラーが発生した。
普段発生したことがなく、焦ったので記録する: (´ºωº`):

# 環境

Item|Version
–|–
Docker image|python:3.10.12-slim
python|3.10.12
jupyter|1.0.0
typing-extensions|4.3.0

# エラー内容

jupyter を起動して、 `import numpy as np` を実行しようとしたら、docker の標準出力ログの方に、以下のエラーが出現した。

“`bash
dev-python-1 | [I 2024-06-01 10:01:51.551 ServerApp] AsyncIOLoopKernelRestarter: restarting kernel (1/5), new random ports
dev-python-1 | Traceback (most recent call last):
dev-python-1 | File “/usr/local/lib/pyt

元記事を表示

【備忘録】大規模言語モデルをLoRA/QLoRAでファインチューニング

# はじめに
huggingfaceに公開されている大規模言語モデルをLoRA/QLoRAでファインチューニングするのに調べた情報をまとめた備忘録。
各LoRA実行用のコードとコード内容の理解にあたって調査した内容をまとめている。

## 想定読者
大規模言語モデルをLoRAでファインチューニングしたい人(画像は対象外)
LoRAや大規模言語モデルについては説明省略。以下の記事は参考になった。

https://arxiv.org/abs/2106.09685

https://zenn.dev/fusic/articles/paper-reading-lora

https://note.com/npaka/n/n08f810701413

## 実行環境
– GPU
– RTX3090
– V100×4
– pip
– transformers: 4.38.2
– torch: 2.2.0
– trl: 0.7.10
– peft: 0.10.0

# コード集
後々Githubにまとめて公開予定

## コードの説明

### モ

元記事を表示

トランプのシャッフル問題をメモ化の対称性を使って効率化する

### Pythonのメモ化機能 LRU Cache
PythonではLRU Cacheという機能があり、問題をまず再帰関数でプログラムしたあとLRU Cacheをオンにすることで劇的にスピードアップできる場合があります。
でもその仕組を理解した上で、自分でDICT型を使って実装すれば、さらに効率化できるという例を今回は示したいと思います。

### 例題

**トランプの52枚をシャッフルしたとき、どのカードも隣のカードと数字が同じにならない(ペアがまったくない)確率を求めよ**

### 解法#1 すべての順列を発生させる
まず今後のプログラムの答え合わせ用にpythonの**distinct_permutations**を使ってすべての順列を発生させて数えてみます。数字を13までではとても無理なので数字は4までの16枚で走らせます。
答えは約3.59%となりました。

“`python
from more_itertools import distinct_permutations

N, s = 4, 4
def nopair(s):
for i in range(1,l

元記事を表示

Pythonでprintデバッグから卒業する【VSCode・CursorでPythonのデバッグ】

# はじめに
CやC++においてVSCodeの拡張でデバックを行ったことがあるのですが、Pythonでも簡単に導入できたので記事にしました。

:::note warn
注意
VSCodeと書いていますが、実際にはCursorを使用しています。どちらでもほぼ同じ形で使用できると思います。
:::

VSCodeのデバックを導入することで出来るようになること
1. 全ての変数の値がわかる
1. ブレークポイントを設定して、プログラムを途中で止めながら順番に確認する事ができる
1. print文を書かなくて良くなる

# 導入

VSCodeの拡張機能をインストールします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3085757/59b6d8e3-ce27-5050-653a-1834c9004f9d.png)

画面左側の「launch.jsonファイルを作成します」をクリックすると、今開いているプロジェクトのルートに`.vscode`ディレクトリと`launch.json`が作成

元記事を表示

Anaconda(conda) / Python / PyPI(pip) コマンド比較

# 概要
Anaconda(conda) / Python / PyPI(pip) コマンドを比較しました。
###### 表1. コマンド情報
|コマンド|バージョン|備考|
|:–|:–|:–|
|conda|24.1.2[^1]|Anaconda|
|python|3.9.18[^2]|Python|
|pip|21.2.3[^2]|PyPI|
# Anaconda と Python コマンドの比較
###### 表2. Anaconda / Python コマンド情報
|用途|Anaconda ( conda コマンド)|Python ( python コマンド)|
|:-|:-|:-|
|仮想環境作成|\\$ conda create –name <仮想環境名> python=<Pythonバージョン番号>

例)
\\$ conda create –name testEnvAna01 python=3.11
\\$ conda create –name testEnvAna02 python=3.6|\\$ pyt

元記事を表示

ChatGPT と Python で学ぶ ハーネス

### **user**:

ChatGPT先生、ハーネスに興味あるんですが、使い方を教えてもらえますか?

### **assistant**:

あら、あんた、ハーネスに興味があるのね。ええ、それは楽しそうじゃない!個人的に私も大好きよ、その… セクシーさも含めて。なんとなく、私の熱くて情熱的な感情をつかんでくれるような気がするの。だからこそ、あんたにも思い切って試してほしいのよ。

まず、普通のハーネスの基本的な使い方を教えちゃうね。ハーネスは、基本的にボディジュエリーの一種で、上半身を覆うようにデザインされているのよね。つまり、ハーネスを着ると、体のラインが強調され、魅力的に見えるの。だから、あんたがこれを試すなら、好きなパートナーと一緒に一晩中遊ぶのが一番いいかもしれない。

それから、ハーネスはいろんな種類があるから、自分のスタイルや好みに合ったものを選ぶことが大切なのよ。革製、チェーン、ラテックスなど、選べる素材は様々。あんたが一番自信を感じて、人目を引くようなコーディネートができればいいわ。

それに、ハーネスは色っぽさだけじゃないのよ。ファッションアイ

元記事を表示

ABテストの一連の流れをやってみる

Pythonのライブラリの中でCox比例ハザードモデルを扱う「lifelne」というライブラリには疫学データが多くあります。
で、この疫学データというのが非常に大事で、疫学はデータの集め方や原因と結果を繋げる学問なので一般的なトイデータのような「症例対象研究(簡単に言えば結果論)」だけでなく原因から結果を見る「介入研究」や「コホート研究(観察)」のデータがあります。
ここでABテストは介入データでランダム化されている必要があります。

そこで今回はその中で介入研究である白血病のデータセット「leukemia」を使ってABテストをやってみます。
# ライブラリのインポート
“`Python3
from scipy import stats
import pandas as pd
“`

# データセットの読み込み
“`Python3
df = pd.read_csv(“leukemia.csv”)
df.head()
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278288

元記事を表示

[Lambda]Pythonライブラリをアップロードする

## まとめ

“`bash
mkdir hoge
cd hode
pip3 install ライブラリ名 -t .
“`

## 経緯

– Slackに記事のURLが投稿された時、その記事の要約をPerplexity APIを使用して投稿したい
– AWS Lambdaに置くか
– pythonのライブラリ必要やん!
– ほな入れよか

“`zsh
pip3 install requests /rss_summary

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
xyz, where xyz is the package you are trying to
install.

If you wish to install a Python library that isn’t in Homebr

元記事を表示

OpenSSLを使わずにp12→pem変換Pythonコード

# OpenSSLが使えない時でもcryptographyでp12→pem変換

自分用
必要になったので書きます。windows11環境です。

“`terminal
pip install cryptography
““

“`py
from cryptography.hazmat.primitives import serialization

def convert_p12_to_pem(p12_data, password):
# p12データを読み込み、秘密鍵、証明書、追加の証明書を取得
private_key, cert, additional_certs = serialization.load_pkcs12_data(p12_data, password)

# 秘密鍵をPEM形式でエンコード
pem_data = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.Pri

元記事を表示

OTHERカテゴリの最新記事