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

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

[ReviewAI 使用例] くるむ [新大久保 韓国料理店]

# はじめに

レビュー分析AIサービスの ReviewAI (レビューアイ) を開発しています。
本記事ではレビュー分析の例として、新大久保の韓国料理の人気店を取り上げていきます!
[人気店の記事をまとめているページはこちらです。](https://qiita.com/RetegyLink/items/3d94852bf25a724a82cc)

今回は、くるむ の食べログに集まっているレビューを分析します。

## くるむ

くるむ

新大久保で話題のサムギョプサルが食べられるお店

> 新大久保駅から徒歩5分とアクセス抜群。改装された2階の店内は半個室席が多く、落ち着いた雰囲気が魅力的。人気の蜂の巣サムギョプサルは2人前から注文可能で、野菜とのバランスが良く、組み合わせの自由度が高いと評判。残った野菜はスムージーとして提供してもらえるのもうれしいポイント。ランチタイムは混雑するため、夜に訪れるのがおすすめです。
> 引用元 [AutoReserve](https://autoreserve.com/ja/restaurants/ff2agG6tuqbDf1Yr4Kqj)

[食

元記事を表示

Pythonの環境変数管理はPydantic Settingsを使って型安全性を確保しよう

# はじめに
Pythonのアプリケーションで環境変数を読み込むときってどうしてますか?
一般的に広く使われている方法としては`os.getenv()`を使った以下の2つだと思います。

**1. OSの環境変数を渡す**
“`bash
$ export DB_USER=admin
$ export FLAG=True
$ export COUNT=1
“`
“`python
import os

print(os.getenv(“DB_USER”)) # admin
print(os.getenv(“FLAG”)) # True
print(os.getenv(“COUNT”)) # 1
“`

**2. `.env`ファイルで渡す**
`.env`ファイル内に定義した環境変数の値を`python-dotenv`ライブラリで読み込む方法です。
“`bash: .env
DB_USER=hoge
FLAG=True
COUNT=1
“`

“`python
from dotenv import load_dotenv
import os

# .envファ

元記事を表示

E5で文章をベクトル化たものを次元圧縮して平面上に可視化する

最近文章をEmbeddingして遊ぶのにハマっています。
今回は文章をEmbeddingしてできた多次元ベクトルを視覚的に分かりやすいように2次元平面上にプロットします。

# 環境
– WSL2
– DockerのUbuntu22.04コンテナ
– Python 3.12.3

# 使ったもの
## Embeddingモデル
[intfloat/multilingual-e5-large](https://huggingface.co/intfloat/multilingual-e5-large)
文章を1024次元へ埋め込みしてくれるモデル。
無料かつローカルで動作します。
MITライセンス。
それほど重くないのに結構いい感じにEmbeddingしてくれる。
多分CPUでも十分早い。

## 多次元ベクトル→2次元ベクトルの圧縮
– PCA
– MDS(ユークリッド距離)
– MDS(コサイン距離)

# 下準備
“`bash
pip install sentence_transformers pandas scikit-learn
pip install matplotlib

元記事を表示

【Python】図形を描いてみた!!

# アルゴリズムを勉強しよう
今日はPythonのアルゴリズムの勉強としていろんな図形を書いていきます。
以下の順番で図形を書いていきます。

①直角三角形
②ピラミッド
③ダイヤモンド
④自分で考えた図形

## 直角三角形
期待する出力
“`
*
**
***
****
*****
“`
実際にプログラムを書いていきます。
以下になります。
“`python
for i in range(1, 5 + 1):
print(‘*’ * i, end= ”)
print()
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/c12d679d-3695-5e69-eaea-350d723f0a5d.png)

## ピラミッド
期待する出力
“`
*
***
*****
*******
*********
“`
### 実際のプログラム
“`python
n = 5 * 2
n_1 = n // 2 – 1
for i

元記事を表示

お前、最後にLSTMで時系列予測したのいつ?【Python】

# はじめに
AIの手法の一つとして、**LSTM**というのがある。

これは、端的に説明すると、**”時系列データの先を予測出来るやつ** 。
(株価とかの予測にも使うことが出来るようなやつ)

**てことで今回は、LSTMを使った簡単なサンプルプログラムを書いてみたので、紹介する。**

具体的には、sin波形のパターンを学習し、未来のデータ点を予測するようなプログラムを書いてみた。

# サンプルプログラム
コメントアウトで解説多めで書きました。

“`python
# 必要なライブラリをインポートする
import numpy as np # 数値計算を効率的に行うためのライブラリ
import matplotlib.pyplot as plt # グラフ描画のためのライブラリ
from keras.models import Sequential # KerasのSequentialモデルを使用するためのインポート
from keras.layers import LSTM, Dense # LSTMとDense層を使用するためのインポート

# データ生成
#

元記事を表示

Cloudflareのbot検知を回避するnodriverを紹介します

## はじめに
前回、Cloudflareのbot検知を回避する方法として、DrissionPageを紹介させていただきました。

https://qiita.com/Kazukiya/items/707d56e8f1122e41fee1

現時点だと、こちらのライブラリは問題なく使えるため、そのまま使用しても問題ありません。

ですが、READMEが中国語なのでとっつきにくい印象があります。また、セキュリティ面に関しても多少不安が残ります。

そこで、より安心して使えるライブラリを紹介します。

## nodriver
このライブラリは、[Undetected-Chromedriver](https://github.com/ultrafunkamsterdam/undetected-chromedriver)の開発者が開発した後継のプロジェクトです。

https://github.com/ultrafunkamsterdam/nodriver

Undetected-Chromedriverのライブラリは前に使っていましたが、なにか問題が起きたことはありませんでした。
なので、D

元記事を表示

PythonでAWS CLIコマンド実行の練習 (boto3編)

# 目的
https://qiita.com/sincere_networker/items/acc5f86244fe5e50e290

上記ではsubprocess.runでAWS CLIコマンドを実行していたが、boto3に変更してみる

https://docs.aws.amazon.com/ja_jp/pythonsdk/

# Pythonスクリプトの作成
直近3ヶ月間の最大スループット値(In/Out)を取得する
“`python:get_ec2_throughput_boto3.py
import boto3
import json
import time
from datetime import datetime, timedelta

def cloudwatch_get_metric(metric_name):
# boto3クライアントを作成
cloudwatch = boto3.client(‘cloudwatch’)

# CloudWatchからメトリクスデータを取得
response = cloudwatch.get_me

元記事を表示

Pythonでポーカーの役判定(ジョーカー有り)

# はじめに

Python で、ポーカーの役判定(ジョーカー有り)を作る。ジョーカーは何枚でもOK。

こちらのページに触発されて作成した。ここで説明する判定も手札5枚前提だが、手札の枚数の変更はこちらの方がやりやすいはず。

https://qiita.com/JuneOgust/items/94163c56f159fc00f917

# 役の定義

役を列挙型で定義する。ロイヤルフラッシュは、後述する仕様により、後からでもストレートフラッシュと区別できるので、独立した役としては扱わない。

“`python
from enum import IntEnum

class Cat(IntEnum):
FIVE_OF_A_KIND = 9
STRAIGHT_FLUSH = 8
FOUR_OF_A_KIND = 7
FULL_HOUSE = 6
FLUSH = 5
STRAIGHT = 4
THREE_OF_A_KIND = 3
TWO_PAIR = 2

元記事を表示

カイ二乗(x2:chi squared)

カイ二乗($\chi^2$:chi squared)

・観測度数が期待度数からどれくらい離れているかを計算した値
・{(観測度数-期待度数)^2 / 期待度数}の総和

“どれくらい離れているか”を調べるには観測度数と期待度数の差を計算すればよさそうですね。ですがただ単に差をとって足し合わせると、プラスとマイナスで打ち消し合ってゼロになってしまいます。
そこで、二乗した総和にしてみましょう。(絶対値だとマイナスを掛けないといけないため、扱いにくい!)

![カイ二乗.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3780659/2143d056-3dde-94e5-76ef-bf8c617d6314.png)

数式で書くと以下のようになります。
a行b列の分割表におけるi行j列の観測度数がnij,期待度数がeijとすると
“`math
\chi^2 = \sum^a_{i=1}\sum^b_{j=1}\frac{(n_{ij}-e_{ij})^2}{e_{ij}}
“`

## 連関(as

元記事を表示

決定木と勾配ブースティング決定木でのCART分析

データサイエンスを使った意思決定の中でCART分析というものがあります。
簡単に言えば全体のデータをある基準で分割してある基準で分割してを繰り返してという決定木のやり方を使って分類過程から結果までを可視化しているものです。
そこで思ったのが決定木も勾配ブースティング決定木も同じく決定木でデータを最初の段階で分割していないという共通点があります。
しかし勾配ブースティング決定木は学習しながら最適な決定木を作っていくというところが違います。
そこで実際どのように違うかを見てみようと思います。
# 関数
## 勾配ブースティング決定木(アンサンブル)
“`Python3
from sklearn.tree import export_graphviz as EG
from pydotplus import graph_from_dot_data as GFDD
def cart_analysis_ensemble(x, y, model, filename=”CART”):
y_data = list(set(y.values))
for i in range(len(y_

元記事を表示

力率改善用電力コンデンサと改善力率との関係

# はじめに
送電工学において一般に需要家の負荷とは遅れ力率のリアクトルがメインであると考えられる。しかし、重負荷の場合は遅れ力率が悪化してしまう。そこで、電力用コンデンサを系統に対して並列に接続することによって力率の向上を図ることができる。そこで、今回は電力用コンデンサを遅れ力率が悪い場合において接続した場合どの程度力率が改善されるのかをプログラムによる数値解析によってシミュレートしてみた。
# 前提条件
系統は3相であるが、簡略化のため1相での等価回路でまずは考える。
系統に接続された負荷と電力用コンデンサの1相等価回路を以下に示す。

![電力用コンデンサ1相分.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/0c06c3de-ada1-6ebf-4ae9-ae2d6429246b.jpeg)

つぎに、有効電力$P$を負荷に供給しつつ、力率角を電力用コンデンサによって$\theta_1$から$\theta_2$に改善したものとする。

ただし、$0<\theta_2<\theta

元記事を表示

Python基本文法(関数編)

# Python基本文法(標準関数編)

## はじめに
初めまして、ryouです。これからプログラミング学習の記録として、毎月1つ記事を執筆していこうと思います。初めての記事執筆となりますので、「こうした方がわかりやすい」といったアドバイスや、「より良いプログラムがある」といったアドバイスがあればご教授いただけると嬉しいです。
今回の記事ではPythonの標準関数についてまとめていきたいと思います。
※初学者ゆえに情報に誤りがある可能性がありますので、引用される際には自己責任でお願いいたします。

# Pythonの標準関数について

Pythonは豊富な標準関数を提供しており、これらの関数を活用することで効率的なプログラミングが可能になります。この記事では、Pythonの主な標準関数について簡単に説明し、それぞれの使用例を示していきます。

## 1. print()

`print()`関数は、コンソールに出力を表示するために使用されます。複数の引数を取ることができ、引数をスペースで区切って表示します。また、`sep`や`end`といったキーワード引数を使って表示のカスタマイズ

元記事を表示

Geohashの個人的メモ

# Geohashとは

地図上のある程度の範囲(四角形)をまとめたものです。
メッシュコードとほぼ同じ概念で、区切り方にクセがあります。
詳細な概念説明は以下のYahoo!のサイトをご確認ください。

https://techblog.yahoo.co.jp/entry/20191210786752/

## Geohashの種類(桁数)

4,5,6,7以外は使わなそうなので、雑に記載しています

|桁数|横の長さ|縦の長さ|
|—|—|—|
|1|5000km|4000km|
|2|600km|1000km|
|3|160km|130km|
|4|19.5km|31.6km|
|5|4.82km|3.96km|
|6|609m|989m|
|7|152m|124m|
|8|19m|31m|
|9|5m|4m|
|10|0.6m|1m|

(上記Yahoo!のサイトより転記)

## Geohashの大まかな地図

メッシュコードだと「5339は東京!」など(経験がある人は)分かるのですが、
Geohash初心者には直感的にわからないので、地図を作成してみました。
![

元記事を表示

4バイト文字を使った量子コンピュータアーキテクチャ

class 量子ビット:
def __init__(self):
self.状態 = np.array([1, 0], dtype=complex)

def 𝐗(self):
self.状態 = np.dot(np.array([[0, 1], [1, 0]]), self.状態)

def 𝐘(self):
self.状態 = np.dot(np.array([[0, -1j], [1j, 0]]), self.状態)

def 𝐙(self):
self.状態 = np.dot(np.array([[1, 0], [0, -1]]), self.状態)

def 𝐇(self):
self.状態 = np.dot(np.array([[1, 1], [1, -1]], dtype=complex) / np.sqrt(2), self.状態)

def 測定(self):
確率 = np.abs(self.状態) ** 2

元記事を表示

ChatGPT3.5先生は2024年GW中、大学入試数学の猛勉強されましたか?空間ベクトル「気象大学校2022年多肢選択式第13問」をChatGPTとsympyとFreeCADでやってみたい。

~~既投稿を潰してしまって、復旧中です。申し訳ありません。~~
 気のせいなら、ごめんなさい。
**・sympyの計算結果もでる。**
 今まで、sympyの計算結果がでなかったはず?
 「sympyで」が無しでも、結果がでる。

・作図は、私のFreeCADの操作が未熟で、申し訳ありません。
・気象大学校の年度は、ビミョーに1つずれるそうです。

# オリジナル
> T氏の数学日記 様 問題解答解説

リンク先を直しました。

https://mathmathmass.exblog.jp/33799604/

> 大学入試数学問題集成 様 >【13】テキスト

https://mathexamtest.web.fc2.com/2023/202320120/2023201200100mj.html#top-0113

公式ホームページ
(省略)

# sympyで(オリジナル 様の方法で)
・??? 勉強中

# ChatGPT-3.5先生へ(その1) 選択肢あり。

・ページのソースを表示です。MathMLです。
 途中の表示を省略しようと思いましたが、大学入試数学問題集成 様の必

元記事を表示

Webサーバーのアクセスログ解析スクリプトをリファクタリングしてみた

## はじめに
先日以下の記事で紹介したアクセスログ解析スクリプトですが、設定が少し面倒で、解析対象のログファイルが多かったり、行数が多いと解析に時間がかかるため、少しリファクタリングしてみました。

https://qiita.com/tbtakhk/items/63e022861aa969ea3e69

https://qiita.com/tbtakhk/items/8a7bd4a83464b5efd950

解析結果自体は、上記記事のスクリプトと同じですので、修正理由と修正後のスクリプトを記載しておきたいと思います。

## 解析対象ディレクトリと解析結果出力先の指定方法の変更と修正方針
修正前は、各スクリプト毎に、ログ解析ディレクトリと解析結果出力ファイルパスをCSVファイルで指定していました。

ですが、ログ解析ディレクトリは全てのスクリプトで同じ場所を参照しますし、ログファイルのログフォーマット、ログファイルのファイル形式も同じであるため、Configファイルに設定をまとめ、全てのスクリプトで同じ設定を参照する事にしました。

スクリプト毎に異なるのは、解析結果出力先である

元記事を表示

これからの業務外での学習計画を立ててみた

私は普段、Javaで開発を行っています。いつも業務外で勉強するときは計画を立てず、その時々で気になったことを勉強していました。しかし、この方法では何をどれくらい学んだのか、自分がどれくらい成長しているのかが見えづらいと感じたため、1週間の学習計画を作成してみることにしました。

## 学習計画
学習計画を以下で作成してみました。
| 曜日 | 朝 | 夜 |
|———-|————-|————-|
| 月曜日 | 個人開発 | 個人開発 |
| 火曜日 | Python学習 | Python学習 |
| 水曜日 | 休 | 個人開発 |
| 木曜日 | Python学習 | Python学習 |
| 金曜日 | JAVA基礎復習 | 特別テーマ学習 |
| 土曜日 | Python学習 | 個人開発 |
| 日曜日 | Qiita執筆 | 個人開発 |

## 計画作成時のポイント
計画作成時のポイントは以下の通

元記事を表示

深層学習 学習まとめ: 深層学習に関わる関連技術

# 軽量化・高速化技術
– 毎年10倍のペースで必要な処理能力が増えている
– 一方でコンピューターの進化は18~24ヶ月で2倍
– 分散深層学習: 台数を増やして処理能力を高める

## 分散深層学習
– データ並列化
– 親モデルを各ワーカーにレプリカ(子モデル)としてコピー
– データを分割し、各ワーカーごとに計算させる
– 同期型
– 各ワーカーの計算が終わるのを待ち、全ワーカーの勾配が出たところで勾配の平均を計算し、親モデルのパラメーターを更新
– 非同期型
– 各ワーカーはお互いの計算を待たず、各小モデルごとに更新を行う
– 学習が終わった小モデルはパラメーターサーバーにpushされる
– 新たに学習を始めるときは、新たに学習を始める時は、パラメーターサーバからPopしたモデルに対して学習していく
– 非同期型の方がスピードは早いが、学習が安定化しやすいのは同期型
– 現在は同期型の方が主流

– モデル並列化
– 親モデル

元記事を表示

深層学習 学習まとめ: 強化学習

# 強化学習
– 強化学習の基本については、機械学習の学習まとめを参照

## 深層Qネットワーク(Deep Q-Networks, DQN)
– 深層学習を用いた強化学習モデル
– 畳み込みニューラルネットワークを用いて行動価値関数を推定する
– 機械学習では行動価値関数を表形式で表現したが、DQNではDNNを用いて表現する
– 学習を安定化させるための工夫を行っている
– 体験再生(experience replay)
– 各タイムステップ$ t $におけるエージェントの経験$ e_t = (s_t, a_t, r_t, s_{t+1}) $をデータ集合$ D = \lbrace e_1, \cdots , e_N \rbrace $に蓄積する
– このデータ集合$ D $から取り出された経験を再生記憶(replay memory)という
– 学習時は蓄積されたサンプルの中から、経験をランダムに取り出し、損失の計算に用いる
– 体験再生には通常のオンラインQ学習と比べて幾つかの利

元記事を表示

深層学習 学習まとめ: 生成モデル

## 識別モデルと生成モデル
– 機械学習/深層学習モデルは入力・出力の目的で分類できる
– 識別(discriminative, backward)
– データを目的のクラスに分類する
– データ→クラス
– $ p(C_k \vert \boldsymbol{x}) $を求める
– あるデータ$\boldsymbol{x}$が与えられたという条件のもとでクラス$C_k$である確率
– 生成(generative, forward)
– 特定のクラスのデータを生成する
– クラス→データ
– $ p(\boldsymbol{x} \vert C_k) $を求める
– あるクラス$C_k$に属するという条件のもとでのデータ$\boldsymbol{x}$の分布
– 識別モデル
– 具体的なモデルの例
– 決定木
– ロジスティック回帰
– SVM
– ニュー

元記事を表示

OTHERカテゴリの最新記事