Python関連のことを調べてみた2023年07月17日

Python関連のことを調べてみた2023年07月17日

Pythonでのランダムオーバーサンプリング(Random Over Sampling)とその実装

# はじめに
不均衡なクラス分布を持つデータセットは、機械学習のタスクでよく遭遇します。例えば、クレジットカード詐欺の検出では、正常な取引(ネガティブクラス)と詐欺取引(ポジティブクラス)の間で極端な不均衡があります。このような状況では、多数クラスの学習が優先され、少数クラスの学習が十分に行われないことがあります。これに対する対策の一つとして、ランダムオーバーサンプリングがあります。

# ランダムオーバーサンプリングとは?
ランダムオーバーサンプリングは、少数クラスのサンプルをランダムに複製してデータセットに追加することで、クラス間の不均衡を解消する手法です。これにより、クラス間のサンプル数の差を減らし、モデルが少数クラスを無視することを防ぎます。

ただし、ランダムオーバーサンプリングは過学習を引き起こす可能性があることに注意が必要です。なぜなら、同じサンプルを何度も複製することで、モデルが特定のサンプルに過度に適合してしまう可能性があるからです。

# Pythonでのランダムオーバーサンプリングの実装
Pythonでは、imbalanced-learn(別名imblearn)と

元記事を表示

話題のキャッシュSaaS「Momento」をLangChainで使ってみる(チャット履歴編)

:::note info
この記事は以下の続編です。特に依存性はないので好きな方からお読みください。
:::

話題のキャッシュSaaS「Momento」をLangChainで使ってみる(LLM編)
https://qiita.com/minorun365/items/ae977f32072b84f365e5

# キャッシュSaaS「Momento」がLangChainに正式対応!

AWSでDynamoDB等の開発に携わっていたKhawaja Shamsさんらが立ち上げたサーバーレスなキャッシュSaaS「Momento」。

かなりお手軽にキャッシュを利用でき、ElastiCacheやAzure Cache等の「セルフマネージドな」キャッシュPaaSから簡単に移行できると話題になっています。

https://www.gomomento.com/jp/home-page

そんなMomentoが、大規模言語モデル(LLM)を活用したアプリケーション開発を便利にしてくれるPythonライブラリ「LangChain」のIntegrationsとして正式に組み込まれました。

#

元記事を表示

製造業で活躍するデータサイエンティストへの道:私のキャリアパスとスキルセット

# はじめに
この記事では、私がどのようにして製造業のデータサイエンティストになったのか、その経緯と日々の業務、そして自己研鑽について詳しく説明します。
私の経験が、これからデータサイエンティストを目指す方々の参考になれば幸いです。

# 大学院時代:画像解析の研究からスタート
私のデータサイエンティストとしてのキャリアは、大学院での研究から始まりました。
私は細胞を認識するための画像解析に取り組み、その経験が後のキャリアに大いに役立ちました。
この経験から、データを解析し、有用な情報を抽出する技術の重要性を学びました。

# 入社1年目:新商品開発と業務効率化
大学を卒業後、私は大手製造業の会社に入社しました。
この会社では医療・ヘルスケアの分野の新商品開発に力を入れており、その新商品開発部門に配属されました。
私が担当したのは、開発中の製品の社外実験のセンサデータ分析でした。
当初はデータの取得から分析までの工程が手動で非常に時間がかかりました。
しかし、Pythonを独学で学び、データ取得からグラフ作成、PDFまとめまでを自動化するツールを開発。
これにより業務の効率化を実現しま

元記事を表示

話題のキャッシュSaaS「Momento」をLangChainで使ってみる(LLM編)

# キャッシュSaaS「Momento」がLangChainに正式対応!

AWSでDynamoDB等の開発に携わっていたKhawaja Shamsさんらが立ち上げたサーバーレスなキャッシュSaaS「Momento」。

かなりお手軽にキャッシュを利用でき、ElastiCacheやAzure Cache等の「セルフマネージドな」キャッシュPaaSから簡単に移行できると話題になっています。

https://www.gomomento.com/jp/home-page

そんなMomentoが、大規模言語モデル(LLM)を活用したアプリケーション開発を便利にしてくれるライブラリ「LangChain」のIntegrationsとして正式に組み込まれました。

# 何ができるの?

Momento側プレスリリースにも記載されている2点が直近の想定ユースケースのようです。

① LangChainからの「LLM呼び出し」のキャッシュとしてMomentoを使う
② LangChainの「チャット履歴」のセッションストアとしてMomentoを使う

https://jp.gomomento.c

元記事を表示

pysimplegui + pyinstallerで簡単なツールを配布する

# 内容

pythonで自分用に作っていた簡単なデバッグツールを、内輪限定で配布することになった。
pythonを入れていない人やCLIに慣れていない人もいたため適当にGUIをつけ、.exe化したので、その手順や過程で覚えたことを書きます。

## 最小限のGUIをつけて配布する
以下のコードのparameter/somefuncを書き換えます
“`python
import PySimpleGUI as sg

# parameter
Param1 = 3

# 自作処理
def somefunc():
import time
time.sleep(Param1)
return ‘End’

def main():
# GUIのコード
# レイアウト定義
layout = [[sg.Button(‘Run’), sg.Button(‘Exit’)]]

# Window生成
window = sg.Window(‘ツール名’, layout)

# Event Loop to process “event

元記事を表示

Seleniumでpictureタグの現在の画像を取得する方法

# はじめに
HTMLのpictureタグでは、レスポンシブ対応のために画面幅に応じた画像を設定できます。

しかし、単純にSeleniumでpictureタグ直下のsourceタグのsrcset属性の値を取得しても、レスポンシブ対応のために複数の画像URLが取得されてしまいます。

今回は、pictureタグで画面幅に応じて入れ替えられる画像の現在の画像URLを取得する方法を説明します。

# 環境
Python 3.9.13
selenium==4.10.0

# pictureタグとは?
HTMLでレスポンシブに画像を切り替えることができるタグです。
JavaScriptを使用せず、HTMLだけでレスポンシブ対応できる点が特徴ですね。

詳しい解説は以下の記事がわかりやすいです。

https://zero-plus.io/media/html-picture/

簡単に説明しておくと、以下のようにpictureタグ以下にsourceタグを複数書いて、sourceタグを順次評価して現在の画面幅に合う画像のURL(sourceタグのsrcset属性の値)をimgタグのsrc属性の

元記事を表示

pykalman を使ってみた

# はじめに

自分で作ったKalman Filter, Kalman Smoother が合っているのか検証したいという目的で、pykalman というOSSを動かしてみました。pykalman はこちら:

https://github.com/pykalman/pykalman.git

https://pykalman.github.io/

普通にKalman filter, Kalman soother による状態推定の計算を実行できます。pykalmanはそれだけでなく、EMアルゴリズムでモデルの要素を推定する機能もあり、面白いと思いました。ただし、実行してみると、十分な学習データがないと使うのは難しいかもと思いました。

おいらのコードはこちら:

https://github.com/torupati/study_kf.git

# 内容

## 使い方メモ

バッチ処理するにはとても良く設定されています。カルマンフィルタの場合、

– 状態空間の設定(F)、システムノイズ、観測ノイズを与える
– 観測値を与えて状態の推定値、共分散行列を計算する

という使い方をしま

元記事を表示

【ブルプロ】BLUE PROTOCOL の昼夜切り替え通知 bot を作ってみた

## はじめに
BLUE PROTOCOL(以下、ブルプロ)の昼夜切り替えタイミングを通知してくれる Discord Bot を作成しました。作ろうと思った経緯はブルプロをやっている方なら分かると思います。ブルプロには昼限定や夜限定湧きのネームドボスが存在します。そして、昼夜は 25 分で切り替わります。しかし、ミッション中や、自由探索に入っていると今、昼なのか夜なのか分からないのです。また、他の作業をやりながら、夜湧きネームドのためにブルプロを起動するという方もいると思います(私が現にそうでした)。そのために、昼夜切り替えタイミングを通知してくる Bot を作成しました。

https://github.com/Pumi1a/BURUPURO-TIMER

## 注意点
エラー報告は開発者の [Twitter](https://twitter.com/Pumi1a) か [github](https://github.com/Pumi1a/BURUPURO-TIMER) までお知らせ下さい。様々な条件で検証をしたつもりですが、私が Python 初心者なこともありバグがあると思います

元記事を表示

【AtCoder】Pythonで入茶しました!!

初めまして!totosukiと申します。
先日[ABC310](https://atcoder.jp/contests/abc310)にて入茶をしたので、記念に記事を投稿します!
![スクリーンショット 2023-07-15 23.39.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2091649/e60664b7-8e16-846e-b6fe-c9948b99b931.png)
## はじめに
### 自己紹介
高校三年生のプログラミングと音ゲーが好きな人です。
ゲーム制作や機械学習をのんびりやってます。
最近、ラーメンを食べ過ぎていたので一ヶ月ラーメン禁止生活を送っていました。
### 競プロを初めたきっかけ
私は、競プロを始める前からTwitterアカウントを動かしていました。([@totosuki_](https://twitter.com/totosuki_))
時々、AtCoderをやっている人を見かけていて、興味があったので参加登録をしました。
これが競プロを初めたきっかけです。
<

元記事を表示

階乗の計算: factorial(n)とgamma(n+1)を比較してみた

# はじめに
数値計算において、非常に大きな$n!$や$\log n!$などの階乗の計算は時間がかかる場合があります。そのため、階乗の計算にはスターリングの級数などを利用して近似的に求めることがあります。その方法については以下で紹介しました。

https://qiita.com/yusuke_s_yusuke/items/a152679cb089746196be

しかし、これらの近似式は処理速度は向上しますが、$n$が20程度の小さい場合において、精度が10桁程度であることがわかり、どんな$n$についても高精度かつ高速な計算が必要な場合には、さらなる検討が必要です。

本記事では、ガンマ関数を用いて階乗の計算を高速化する方法について紹介します。ガンマ関数を利用することで、高精度な計算が可能となります。また、“math.factorial()“と“math.gamma()“の比較や多次元配列での階乗の計算方法などについても解説します。

# ガンマ関数
ガンマ関数は、階乗を一般化したもので、階乗は自然数に対して定義されますが、ガンマ関数は自然数以外の実数や複素数にも拡張されま

元記事を表示

DeepL API を使ってHTMLを雑に翻訳する

## 概要

コマンドでwebページ全体をDeepLで翻訳できたらいいな[^detail]

と思っていたら、公式がpythonライブラリ[deepl-python](https://github.com/DeepLcom/deepl-python)を提供していたのでスクリプトを書いてみました。

サンプルスクリプト並みのクオリティですが、そこそこ使えたので共有してみます。

## スクリプト

“`python
import deepl
import requests
import sys
from bs4 import BeautifulSoup
from urllib.parse import urljoin

auth_key = ‘XXXXXX’

# 変換後も元のリンクを参照できるように、相対から絶対リンクに変換
def convert_relative_to_absolute(html, base_url):
soup = BeautifulSoup(html, ‘html.parser’)

for atag in soup.find_all(‘a

元記事を表示

BERTScoreの基本的な使い方

## はじめに
本記事は私自身の活動記録、および備忘録を目的としているので、間違っている内容が含まれているかもしれません。もし誤解を招くような内容や、間違っている内容があった場合はコメントをいただけると幸いです。

## 動作環境
“`console
pip3: 23.1.2
python3: 3.9.6
numpy: 1.23.5
SentencePiece: 0.1.99
“`
BERTScoreのより詳しい情報は下記のリンク先などをご確認ください。
– https://www.nogawanogawa.com/entry/bertscore
– https://github.com/Tiiiger/bert_score

## 基本的なスコアの出し方
まずはインストールをする。SentencePieceについては、計算に用いるモデルによっては必要になる。
“`python
pip3 install bert_score
pip3 install SentencePiece
“`
次にスコアを計算する教師データと検査データを用意する。ここでは例として以下のデータを用意する。

元記事を表示

Pythonを使用して数値標高モデル(DEM)からMinecraftの地形を作成する

![2023-07-16_12.51.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1575765/8b639d8a-e3b4-42e5-8670-9e9db8e7850f.png)

# はじめに
この記事では、Pythonのライブラリであるanvil-parserを使用して、数値標高モデル(DEM)からMinecraft(Java版)のワールドデータを作成する方法を紹介します。この方法により、実世界の地形をMinecraftで再現することが可能になります。

# DEMデータをダウンロードする

まずは[基盤地図情報ダウンロードサイト](https://fgd.gsi.go.jp/download/menu.php)よりDEMのデータをダウンロードします。

今回は岐阜県岐阜市のこちらのメッシュ(533616)を使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1575765/328

元記事を表示

ABC310回答メモ

0.はじめに
 相性の問題か、Bの難易度が高くCは簡単に感じました。
 Dは、一応取り組みましたが、回答のきっかけさえつかめず
 解説を読んでもいまいちよくわかりませんでした‥。
 相性が悪いペアを同じチームにしないことが
 本当にPeacefulと言えるのか、と、質問しようかと思いましたが
 思いとどまりました。

 C問題までしか解けなかった割には、順位は高く
 レートは+32でした。

1.A – Order Something Else
 Aにしてはややこしい感じではありますが
 実装はそれほど悩まず、リスト内で最小の値+Qと
 Pのうち、小さい方を表示することでACできました。

 https://atcoder.jp/contests/abc310/submissions/43584547

2.B – Strictly Superior
 ほんとに200点の問題??と疑いたくなるような難易度でした。
 解説を見てもそこそこ難しい解答方法でした。

 愚直に、全組み合わせのiとjについて
 iの値段>jの値段の場合
  iの機能がすべてjの機能にあるかチェック
   →あ

元記事を表示

データ分析 フラグの立て方

# — 内容 —
1. よく使うフラグの立て方
2. 祝日のフラグの立て方(日本)

#### — よく使うフラグの立て方 —
– maskメソッドを利用します。whereメソッドを利用した方法やfor文とif文を使って強引にやる方法もあるのですが、whereはFalseの時に実行を行うので分かりにくく、for文とif文で強引に行く方法はデータフレームを結合(concat)した際に欠損値が生じるケースがあるので使いにくいです。
したがってmaskを利用する方が個人的には圧倒的にやりやすかったです。
[参考]
– [where](https://deepage.net/features/pandas-where.html)
– [whereとmaskのQiita記事](https://qiita.com/KHTTakuya/items/1cd543cd929e1a2863b6)
– [concat時の不整合](https://teratail.com/questions/104363)

#### 方法
方法は簡単で、初めに全行が0の新しいカラムを作る ➡ 条件に合致す

元記事を表示

【Prompt flow入門②】便利機能まとめ & Cognitive Searchのベクトル類似検索を実装する方法

# まえがき

[前回](https://qiita.com/sakue_103/items/0c1c225f52c2aeab4be1)に引き続き、Prompt flowを触ってみました。
今回は以下の便利機能についてまとめます。外部ツールの組み込みでは、ベクトル類似検索を一から実装してみました。

– マネージドオンラインエンドポイント
– Variant
– 評価
– 外部ツールの組み込み

「こんな機能もあるよ!」など、他にも便利機能ありましたらご連絡いただければ幸いです。評価についてはもっと深掘りしたいです。

また、以降の章では基本的に前回作成したものを使用します。
前回は簡易的に、「ユーザの入力からFunction calling用の関数定義のJSONを出力する」というタスクをPrompt flowにて実装しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/393221/f7b8a035-a868-6cf3-0fb9-51d3e4065306.png)

外部ツールの

元記事を表示

【Sqlite3:まとめ】PythonでSqlite3を操作する

今回の記事は、前回の記事

https://qiita.com/oriefield/items/d33792f3accc8b981a03

のまとめ編です。内容としては紹介した構文を一括で使用するものなので、後で見返す際に使用するなどのものですかね。
コードの流れとしては以下のようになります。

* データベースと接続
* テーブルの作成
* テーブルの名前を変更
* テーブルのカラムを追加
* テーブルにレコードを追加
* テーブルのレコードの値を変更
* テーブルのレコードを削除
* テーブルのカラムを削除
* テーブルの削除
* データベース接続の解除

細かい点は省きますが、カラムの削除前後で面倒になってSELECT文をVER2で追加しています。
それ以外のクエリは前回の記事にあったものです。(記述ミスがなければ)

## 構文のまとめ
コードを載せていきます。説明は[こちら](https://qiita.com/oriefield/items/d33792f3accc8b981a03)を参照のこと。

“`python
import sqlite3

#

元記事を表示

AIをフル活用した「名言Bot」

昔から読書が好きで、偉人達の言葉によく感銘を受けていたのですが、なかなか普段本を読む時間が取れないという友人も多く、日常生活の中にもっと偉人達の言葉を取り込めないかなと考えていました。

UIとしてはやはりLINEが最も使い勝手が良いと思い、昨今のAIの進化も踏まえ、LINEから誰でも気軽に使える、AIを活用した名言Botを作りました。

定期的な名言の通知機能に加え、ChatGPTによる名言の選定、リップシンクによる名言の発話もあります。

■名言のスケジュール通知
任意の通知時刻を選択可能
![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431306/4a89446c-3323-eb3e-8c46-66e450748ae4.png)

■ChatGPTによる名言の応答
任意の問いかけに対し、ChatGPTが応答する名言を選定、選定理由とともに応答

![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/

元記事を表示

【推し活】推しから寝起きとか仕事終わりにLINEが来たら嬉しくないか???〜疑問解決編その2〜

# きっかけ
前回の記事でもともと持っていた疑問点は解決したが,それを踏まえて新たにディレクトリを作ったところ`no module named ‘requests’`というエラーが出て動かなかった.そこでプログラミングが得意な弊研究室の後輩たちに相談したら30分ほどで解決したので記事にする.結局パスの問題だった.

# 前提
以下の2記事を見てきた人へ向けて
– [【推し活】推しから寝起きとか仕事終わりにLINEが来たら嬉しくないか???](https://qiita.com/NAT/items/eeb40ac5fc59be86a468)
– [【推し活】推しから寝起きとか仕事終わりにLINEが来たら嬉しくないか???〜疑問解決編その1〜](https://qiita.com/NAT/items/56cded8bedf6f148b7b4)

# 今回やること
1. 環境確認パート
2. 解決パート
3. 意味のなかったこと
4. お知らせ

# 1.環境確認パート
“`
pip install requests
“`
の結果は要約するとpipの新しいバージョンが存在するってことと

元記事を表示

自作サンプルコードの自筆記事を作成する時、Phindを記事作成支援機能として利用する

# はじめに

サンプルコードを自作して、自筆の記事を書こうとする時に、ChatGPTでなくPhindを記事作成の支援機能として利用してみる試みを記載します。

Phindの利用に際して、アカウント登録等は不要で、Google検索と同様に、誰でもWeb上でそのまま利用可能です。
Phindに、サンプルコードの説明を付ける作業を支援して貰い、記事作成の支援としてPhindを使う方法を模索します。

:::note info
ChatGPTを記事作成の支援機能として利用する内容は、別途下記にあります。
:::

https://qiita.com/dl_from_scratch/items/9a26fc9f558f3c3e42ad

# サンプルコード

ここで用いるサンプルコードは、以前、Qiitaの記事として投稿した、Pythonでコンソール出力をテキストファイルに保存する、下記の記事内のサンプルコードを用いて、このサンプルコードの記事を改めて作成してみます。

記事: *他の.exeを起動して、コンソール出力をテキストファイルに保存する試行* (2020年12月30日に作成)

元記事を表示

OTHERカテゴリの最新記事