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

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

StreamlitとFastAPIでAIアプリを作ってみた(デプロイ編)

## はじめに
今回PythonのライブラリであるStreamlitとWebフレームワークであるFastAPIを用いてAIアプリを作ってみたので記事にまとめました。

前回まででバックエンドとフロントエンドの実装が完了し、ローカル環境でアプリを動かすことができました。
最後デプロイ方法について書いていきます。

これまでの記事はこちら

https://qiita.com/kizataka/items/061624fdcb59c6437b84

https://qiita.com/kizataka/items/7e293b5814c5acdbb5f0

https://qiita.com/kizataka/items/ca32ed76e9472bef66ad

フロントエンドはStreamlitで実装しており、Streamlitには無料でデプロイできるサービスがあるので、それを使えばすぐデプロイできるだろうと考えていたのですが、意外と時間がかかってしまったところなので備忘録的にまとめます。

### 記事の目次
1. アプリの概要(再掲)
1. ディレクトリ構成
1. 詰まったところ

元記事を表示

StreamlitとFastAPIでAIアプリを作ってみた(フロントエンド編)

## はじめに
今回PythonのライブラリであるStreamlitとWebフレームワークであるFastAPIを用いてAIアプリを作ってみたので記事にまとめました。

前回以下の記事でバックエンドの実装方法をまとめました。今回はStreamlitによるフロントエンドの実装についてまとめていこうと思います。

**前回までの記事はこちら**

https://qiita.com/kizataka/items/061624fdcb59c6437b84

https://qiita.com/kizataka/items/7e293b5814c5acdbb5f0

### 記事の目次
1. アプリの概要(再掲)
1. ディレクトリ構成
1. フロントエンドの実装
1. ローカル環境でアプリを起動する
1. まとめ

## 1. アプリの概要(再掲)
一言で言うと、誹謗中傷のような批判的なツイートを排除するアプリです。

具体的には、アプリ上で好きな人物名を入力して検索をかけると、Twitterからその人物名に関するツイートを取得してAIが自動でツイート内容を解析し、肯定的なツイートのみを表示さ

元記事を表示

StreamlitとFastAPIでAIアプリを作ってみた(バックエンド編)

## はじめに
今回PythonのライブラリであるStreamlitとWebフレームワークであるFastAPIを用いてAIアプリを作ってみたので記事にまとめました。

前回以下の記事でアプリの概要をまとめました。今回はバックエンドの実装をまとめていきたいと思います。

https://qiita.com/kizataka/items/061624fdcb59c6437b84

バックエンドは以下の記事を参考にしながら進めていきました。

https://qiita.com/nanndot/items/03f986059309d386eeae

### 記事の目次
1. アプリの概要(再掲)
1. ディレクトリ構成
1. DBの準備
1. 感情分析モデルの実装
1. バックエンドの実装
1. まとめ

## 1. アプリの概要(再掲)
一言で言うと、誹謗中傷のような批判的なツイートを排除するアプリです。

具体的には、アプリ上で好きな人物名を入力して検索をかけると、Twitterからその人物名に関するツイートを取得してAIが自動でツイート内容を解析し、肯定的なツイートのみを表示させるよ

元記事を表示

StreamlitとFastAPIでAIアプリを作ってみた(概要編)

## はじめに
今回PythonのライブラリであるStreamlitとWebフレームワークであるFastAPIを用いてAIアプリを作ってみたので記事にまとめました。

今回のテーマは、
**概要編→バックエンド編→フロントエンド編→デプロイ編**
の順にそれぞれ記事を書いていく予定です。

### 記事の目次
1. アプリの概要
1. アプリの機能一覧
1. なぜこのアプリを作ったのか
1. 使用技術について
1. ディレクトリ構成
1. まとめ

## 1. アプリの概要
一言で言うと、誹謗中傷のような批判的なツイートを排除するアプリです。

具体的には、アプリ上で好きな人物名を入力して検索をかけると、Twitterからその人物名に関するツイートを取得してAIが自動でツイート内容を解析し、肯定的なツイートのみを表示させるようにするというものです。

と、理想はこのように考えていたのですが、途中でTwitterAPIの規約変更によりツイート取得ができないことに気づきました。
アプリ自体のテーマを変更するのは面倒なので、アプリの概要はそのままでKaggleにある文章データを利用してそれを

元記事を表示

AtCoder アルゴリズムと数学 009 – Brute Force 2 解答例(Pythonでのbit全探索 / 動的計画法のシンプルなコード例)

[Supership](https://supership.jp/)の名畑です。季節の変わり目が訪れるたび、[TVアニメ てーきゅう](http://te-kyu.com/)の10期は放送されないのだろうかと期待してしまいます。

## はじめに

コードを書きたい気分のときにはよく[AtCoder](https://atcoder.jp/)を利用させてもらっています。

AtCoderでは、競技プログラミングの世界で有名な[E869120](https://twitter.com/e869120)さんが執筆されました書籍「[問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本](https://gihyo.jp/book/2022/978-4-297-12521-9)」の[演習問題集](https://atcoder.jp/contests/math-and-algorithm)が公開されていまして、それをたまに解いています。

そのうちの1問について、解法を残しておきたくなりましたので、残します。
[bit全探索](https://www.ktpc.tokyo/le/

元記事を表示

ABC323回答メモ

0.はじめに
 アットコーダー初参加は、去年のユニークビジョンだったなぁと思いながら参戦。
 Cまではそこそこのペースで解けましたが、Dでブレーキ。
 結局Cまでクリアで終わりました。
 問題難易度は楽しく解けるちょうどよい感じでした。
 レートは+10と微増しました。

1.A – Weak Beats
 ビットを使って綺麗に解けそうな気もしつつ
 回答の早さ優先で単純な実装

 Sを読み込んだら、先頭からチェックしていき
 偶数番の時(pythonのカウンター的には奇数の時)
 0でなかったらフラグを立てる
 最後までチェックして、フラグが立っていたらNo
 立っていなかったらYesを出力して終了

 https://atcoder.jp/contests/abc323/submissions/46282719

2.B – Round-Robin Tournament
 ペアを格納するリストを用意
 勝敗表を読んでいき
 (勝利数、プレイヤー番号*-1)を
 リストに格納
 リストを降順にソート
 リストを順番に読んでいき回答用リストに
 プレイヤー番号*-1を格納し
 最後に

元記事を表示

pythonと powerシリーズ連携

pythonで 測定したりAIした結果を
マイクロソフトの listsへ保存しようとすると 手強かったりします。

大体あきらめて ローカルにCSVファイルか頑張っても ネットワークにDBを建てるくらいですが 
よくよく眺めてみたら、
ディスクシステムに OneDriveが、マウントされています!!
ならば、OneDriveにjsonファイルを保存しておけば 後は powerautomateでlistsへ書き込みしてもらえます。

簡単でした。

元記事を表示

Pythonのscikit-learnを用いた分類

Pythonのscikit-learnを用いた分類を行います。
この記事は、scikit-learnのユーザーガイドを読みながら書きました。
https://scikit-learn.org/stable/user_guide.html

scikit-learnには様々な分類モデルがあります。
今回は、線形モデル、サポートベクターマシン、確率的勾配降下法を用いた分類を行います。
分類にはirisデータセットを用います。
https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html

# 線形モデル
RidgeClassifier
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.RidgeClassifier.html
“`
from sklearn.datasets import load_iris # irisデータセットのインポート
from sklearn.linear_model

元記事を表示

ChatGPT で Python プログラミング ケーススタディ:カプランマイヤー法と生存曲線

今回は、カプランマイヤー法と生存曲線について、ChatGPTと雑談してみました。お楽しみください。

### **user**:

カプランマイヤー法と生存曲線についての理解を助けるようなPythonコードを書いてください。コード中に説明を日本語でできるだけ詳しく書いてください。また、実行例に使えるような仮想的なデータも書いてください。

### **assistant**:

まずは、必要なライブラリをインポートします。

“`python
import numpy as np
import matplotlib.pyplot as plt
from lifelines import KaplanMeierFitter
“`

次に仮想的なデータを作成します。今回は100人の生存データを想定しましょう。このデータは、各人が研究期間中に死亡したかどうか(イベント)と、研究開始からどのくらいの期間生き続けたか(所要時間)を含んでいます。

“`python
# 研究期間中に死亡したかどうか
event = np.random.randint(0, 2, 100)

#

元記事を表示

2023年:OSSのノーコード・ローコードライブラリを諦めてPython製ライブラリ「Streamlit」でWebアプリ開発:脱フロントエンドビルド

# 1.ノーコード・ローコードのOSSライブラリの採用を断念

今、新しい業務システム開発の技術選定をしている。
最初、OSSのノーコード・ローコードライブラリでつくろうと思っていた。
たとえば、以下のようなものが有名で便利。

https://www.tooljet.com/

https://www.appsmith.com/

確かに入力や出力をする部分についてはすごく簡単にアプリが作れることはわかった。
ただ、業務システムの場合、認証だけでなく権限ごとに機能を変えたりする必要があるが、
無償版ではそこの制御が難しかった。
有償版であれば、このあたりはクリアできるのだが、ユーザー数ごとのコストを考えると、今回の案件予算や顧客の状況を考えると採用できなかった。

ただ、小さいアプリを作る分には、これらのライブラリはとても便利で有用だと思う。

# 2.Webのフロントエンドビルドの準備・実施、HTML/CSSのコーディングは避けたい

今更、フロントエンドのビルドとか用意したり、
無駄な時間を使いたくないので、なんとかローコードでWebアプリが作れないかと、いろいろと調べてた。

元記事を表示

ABC323をPythonで(A~D)+α

ユニークビジョンプログラミングコンテスト2023 秋 (AtCoder Beginner Contest 323)

https://atcoder.jp/contests/abc323

# A問題
全探索
“`python:A
s = input()
if all(s[i] == “0” for i in range(1, 16, 2)):
print(“Yes”)
else:
print(“No”)
“`
# B問題
全探索
“`python:B
n = int(input())
lst = []
for i in range(1, n + 1):
s = input()
lst.append((s.count(“o”), -i))

lst.sort(reverse=True)
ans = []
for _, i in lst:
ans.append(-i)

print(*ans)
“`
# C問題
まず、各プレイヤーのスコアを計算する。
その後、正解していないものを使って今のスコアから最大スコアに並ぶ最少問数をDPで計算する。

元記事を表示

Django REST FrameworkでAPIを作成してみた

### 背景
以前からDjangoにおけるWebアプリケーション作成において、ReactやFlutterなどのフロントエンドのフレームワークとの結合を考えております。
今回は、それに先立ちフロントエンドとバックエンドとのやりとりをDjango REST Frameworkを利用したRESTful APIで行なうために学習した記録です。

先人たちの知恵をお借りするなどして解決できたことを、この場をお借りして感謝するとともに、大変恐縮ですが**自分のメモ**として、こちらへまとめておきます。

### はじめに
チグサさんのブログ:「チグサウェブ」の記事を参考に、Django REST Frameworkを利用して、RESTful APIを作成してみました。
大変分かりやすくまとまっており、これから学習する方にもオススメです。

今回、チグサさんの記事と異なり、dockerでの環境構築やDjangoで利用するデータベースの変更は省いています。

:::note info
今回使用する環境等のバージョン
– Windows 11 Pro 22H2
– Python 3.12.0
– Dja

元記事を表示

楽天マーケットスピードII RSSを使って株価チャートを作成

# はじめに
pytonで株価チャートを描ければいいなと思い、作ることにしました。株価を取得する方法やチャートを描く方法は色々あると思いますが、ここでは、楽天マーケットスピードIIのRSS関数を使い、エクセルに株価を表示させて、pandasのデータフレームに変換し、mplfinanceでチャートを描くようにしました。

![チャート.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3245171/9a32e706-9dbc-c196-4b74-86fe2ccfad60.jpeg)

# RSS関数について

エクセルに入力する関数は、
“`python
=RssChart( ヘッダー行 , 銘柄コード , 足種 , 初期表示本数 )
“`

それぞれの引数は、

:::note info
ヘッダー行
:::

省略の場合下記の項目が出ます
「銘柄名称, 市場名称, 足種, 日付, 時刻, 始値, 高値, 安値, 終値, 出来高」

:::note info
銘柄コード
:::

国内株式 数値4桁

元記事を表示

DjangoCongress JP 2023に参加しました #djangocongress

2023年10月7日、[DjangoCongress JP 2023](https://djangocongress.jp/)に参加しました。今年の会場は[サイボウズ株式会社](https://cybozu.co.jp/)さんでした。

![E9E9CA75-FB91-45DE-8FB3-BE3196A270CB.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7809/5dbd96e9-32a5-9adf-1086-7680bc09e6cd.jpeg)

## Djangoアプリケーション運用のリアル:問題発生から可視化、最適化への道
スピーカーは吉田花春さん。

リリース後に不具合対応することになったが、調査するための材料が足りなくて困ったことがあったので、同じような体験をしている人と情報を共有したいというのが発表の動機とのことです。

主に以下の改善点について解説していました。

1. エラーやログを取得する
1. APM(Application Performance Monitoring)を活

元記事を表示

Pythonの書式指定文字列の中の変数を抜き出す

## 環境
– Python 3.10.12
– LangChain 0.0.310

## 実装
Pythonの書式指定文字列(Format String)は、以下のように使います。

“`python
template_text = “こんにちは、{name1}さんと{name2}さん”
print(template_text.format(name1=”ほげ”, name2=”ふが”))
#=> こんにちは、ほげさんとふがさん
“`

この文字列から置換される変数である`name1`,`name2`を抽出するには、[`string.Formatter`の`parse()`メソッド](https://docs.python.org/ja/3/library/string.html#string.Formatter.parse)を使います。

“`python
from string import Formatter

template_text = “こんにちは、{name1}さんと{name2}さん”
for parsed in Formatter().parse(form

元記事を表示

Webスクレイピングでニュースサイトから文章データを抽出する

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

今回はWebスクレイピングを使ってBloomberg様のニュースサイトから文章のデータを自動で拝借させて頂きたいと思います。

Bloomberg様のサイトは以下となります。

https://www.bloomberg.co.jp/

# 今回用意したコード

https://colab.research.google.com/drive/106xXTqcktk7pQBoa4qVPH0a9UqdopPKC?authuser=4#scrollTo=Gz9hKFm2eQkj

# 用語
## Webスクレイピング
ChatGPTに聞いてみました。

>Webスクレイピングは、ウェブサイトやウェブページからデータを自動的に抽出するプロセスを指します。このプロセスでは、プログラムやスクリプトを使用して、特定のウェブページから情報を収集し、その情報を解析、保存、または他の用途に活用します

![DL-ページ5.drawio.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

Julia で,「モンティ・ホール問題を愚直にやってみる」

Julia でやってみると以下のようになる。

元記事
モンティ・ホール問題を愚直にやってみる
https://qiita.com/bkh4149/items/93adeaa46c77efb8ae73

“`julia
using Random

# モンティ・ホール問題のシミュレーション

function monty_hall_simulation(num_trials::Int)
stay_wins = 0 # ドアを変えない場合の勝利回数
switch_wins = 0 # ドアを変えた場合の勝利回数

for _ in 1:num_trials
# 3つのドアと1つの正解ドアをランダムに配置
doors = Random.shuffle([false, false, true])

# プレイヤーが最初にランダムに1つのドアを選択
player_choice = rand(1:3)

# ホストが正解ドア以外かつプレイヤーが選んでい

元記事を表示

タシテンのテスト記事

テスト記事だよ

元記事を表示

[Python] pathlibとosモジュールの対応

# pathlibとは

– ファイルやディレクトリを操作するPython標準パッケージ
– os.pathより高水準
– 連続して操作するときに可読性が上がる
– 末尾の / の有無を意識する必要がない
– 拡張子やファイル名の置き換えが簡単
– ワイルドカード検索が可能

# pathlibとosモジュールの対応表

| 内容 | os | pathlib |
| — | — | — |
| シンボリックリンクを解決せずに絶対パス化 | os.path.abspath() | Path.absolute() |
| シンボリックリンクを解決して絶対パス化 | os.path.realpath() | Path.resolve() |
| ファイルのモードとアクセス権限を変更 | os.chmod() | Path.chmod() |
| ディレクトリ作成 | os.mkdir() | Path.mkdir() |
| 再帰的にディレクトリ作成 | os.makedirs() | Path.mkdir() |
| 名前変更 | os.ren

元記事を表示

PythonでWordに透かしを挿入する方法

透かしは、文書の内容の上に重ねられる半透明のテキストや画像であり、文書に追加情報を提供したり、文書のセキュリティを保護したりすることができます。Pythonプログラムを使用してWord文書に透かしを追加したい場合は、専門のWord文書処理ライブラリをインストールしてインポートすることができます。以下に、[Spire.Doc for Python](https://www.e-iceblue.com/Introduce/word-for-net-introduce.html)ライブラリを使用してこの機能を実現する具体的な方法が示されています。
## ツール
* Visual Studio Code
* [Spire.Doc for Python](https://www.e-iceblue.com/Introduce/word-for-net-introduce.html)
このプロフェッショナル ライブラリは、[Word ドキュメントの作成](https://www.e-iceblue.com/Tutorials/Python/Spire.Doc-for-Python/Program-

元記事を表示

OTHERカテゴリの最新記事