Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
200 changes: 100 additions & 100 deletions day1/01_streamlit_UI/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
import numpy as np
import time

# ============================================
# ページ設定
# ============================================
# st.set_page_config(
# page_title="Streamlit デモ",
# layout="wide",
# initial_sidebar_state="expanded"
# )
#============================================
#ページ設定
#============================================
st.set_page_config(
page_title="Streamlit デモ",
layout="wide",
initial_sidebar_state="expanded"
)

# ============================================
# タイトルと説明
Expand All @@ -36,149 +36,149 @@
st.write(f"こんにちは、{name}さん!")

# ボタン
# st.subheader("ボタン")
# if st.button("クリックしてください"):
# st.success("ボタンがクリックされました!")
st.subheader("ボタン")
if st.button("クリックしてください"):
st.success("ボタンがクリックされました!")

# チェックボックス
# st.subheader("チェックボックス")
# if st.checkbox("チェックを入れると追加コンテンツが表示されます"):
# st.info("これは隠れたコンテンツです!")
st.subheader("チェックボックス")
if st.checkbox("チェックを入れると追加コンテンツが表示されます"):
st.info("これは隠れたコンテンツです!")

# スライダー
# st.subheader("スライダー")
# age = st.slider("年齢", 0, 100, 25)
# st.write(f"あなたの年齢: {age}")
st.subheader("スライダー")
age = st.slider("年齢", 0, 100, 25)
st.write(f"あなたの年齢: {age}")

# セレクトボックス
# st.subheader("セレクトボックス")
# option = st.selectbox(
# "好きなプログラミング言語は?",
# ["Python", "JavaScript", "Java", "C++", "Go", "Rust"]
# )
# st.write(f"あなたは{option}を選びました")
st.subheader("セレクトボックス")
option = st.selectbox(
"好きなプログラミング言語は?",
["Python", "JavaScript", "Java", "C++", "Go", "Rust"]
)
st.write(f"あなたは{option}を選びました")

# ============================================
# レイアウト
# ============================================
# st.header("レイアウト")
st.header("レイアウト")

# カラム
# st.subheader("カラムレイアウト")
# col1, col2 = st.columns(2)
# with col1:
# st.write("これは左カラムです")
# st.number_input("数値を入力", value=10)
# with col2:
# st.write("これは右カラムです")
# st.metric("メトリクス", "42", "2%")
st.subheader("カラムレイアウト")
col1, col2 = st.columns(2)
with col1:
st.write("これは左カラムです")
st.number_input("数値を入力", value=10)
with col2:
st.write("これは右カラムです")
st.metric("メトリクス", "42", "2%")

# タブ
# st.subheader("タブ")
# tab1, tab2 = st.tabs(["第1タブ", "第2タブ"])
# with tab1:
# st.write("これは第1タブの内容です")
# with tab2:
# st.write("これは第2タブの内容です")
st.subheader("タブ")
tab1, tab2 = st.tabs(["第1タブ", "第2タブ"])
with tab1:
st.write("これは第1タブの内容です")
with tab2:
st.write("これは第2タブの内容です")

# エクスパンダー
# st.subheader("エクスパンダー")
# with st.expander("詳細を表示"):
# st.write("これはエクスパンダー内の隠れたコンテンツです")
# st.code("print('Hello, Streamlit!')")
st.subheader("エクスパンダー")
with st.expander("詳細を表示"):
st.write("これはエクスパンダー内の隠れたコンテンツです")
st.code("print('Hello, Streamlit!')")

# ============================================
# データ表示
# ============================================
# st.header("データの表示")
st.header("データの表示")

# サンプルデータフレームを作成
# df = pd.DataFrame({
# '名前': ['田中', '鈴木', '佐藤', '高橋', '伊藤'],
# '年齢': [25, 30, 22, 28, 33],
# '都市': ['東京', '大阪', '福岡', '札幌', '名古屋']
# })
df = pd.DataFrame({
'名前': ['田中', '鈴木', '佐藤', '高橋', '伊藤'],
'年齢': [25, 30, 22, 28, 33],
'都市': ['東京', '大阪', '福岡', '札幌', '名古屋']
})

# データフレーム表示
# st.subheader("データフレーム")
# st.dataframe(df, use_container_width=True)
st.subheader("データフレーム")
st.dataframe(df, use_container_width=True)

# テーブル表示
# st.subheader("テーブル")
# st.table(df)
st.subheader("テーブル")
st.table(df)

# メトリクス表示
# st.subheader("メトリクス")
# col1, col2, col3 = st.columns(3)
# col1.metric("温度", "23°C", "1.5°C")
# col2.metric("湿度", "45%", "-5%")
# col3.metric("気圧", "1013hPa", "0.1hPa")
st.subheader("メトリクス")
col1, col2, col3 = st.columns(3)
col1.metric("温度", "23°C", "1.5°C")
col2.metric("湿度", "45%", "-5%")
col3.metric("気圧", "1013hPa", "0.1hPa")

# ============================================
# グラフ表示
# ============================================
# st.header("グラフの表示")
st.header("グラフの表示")

# ラインチャート
# st.subheader("ラインチャート")
# chart_data = pd.DataFrame(
# np.random.randn(20, 3),
# columns=['A', 'B', 'C'])
# st.line_chart(chart_data)
st.subheader("ラインチャート")
chart_data = pd.DataFrame(
np.random.randn(20, 3),
columns=['A', 'B', 'C'])
st.line_chart(chart_data)

# バーチャート
# st.subheader("バーチャート")
# chart_data = pd.DataFrame({
# 'カテゴリ': ['A', 'B', 'C', 'D'],
# '値': [10, 25, 15, 30]
# }).set_index('カテゴリ')
# st.bar_chart(chart_data)
st.subheader("バーチャート")
chart_data = pd.DataFrame({
'カテゴリ': ['A', 'B', 'C', 'D'],
'値': [10, 25, 15, 30]
}).set_index('カテゴリ')
st.bar_chart(chart_data)

# ============================================
# インタラクティブ機能
# ============================================
# st.header("インタラクティブ機能")
st.header("インタラクティブ機能")

# プログレスバー
# st.subheader("プログレスバー")
# progress = st.progress(0)
# if st.button("進捗をシミュレート"):
# for i in range(101):
# time.sleep(0.01)
# progress.progress(i / 100)
# st.balloons()
st.subheader("プログレスバー")
progress = st.progress(0)
if st.button("進捗をシミュレート"):
for i in range(101):
time.sleep(0.01)
progress.progress(i / 100)
st.balloons()

# ファイルアップロード
# st.subheader("ファイルアップロード")
# uploaded_file = st.file_uploader("ファイルをアップロード", type=["csv", "txt"])
# if uploaded_file is not None:
# # ファイルのデータを表示
# bytes_data = uploaded_file.getvalue()
# st.write(f"ファイルサイズ: {len(bytes_data)} bytes")
#
# # CSVの場合はデータフレームとして読み込む
# if uploaded_file.name.endswith('.csv'):
# df = pd.read_csv(uploaded_file)
# st.write("CSVデータのプレビュー:")
# st.dataframe(df.head())
st.subheader("ファイルアップロード")
uploaded_file = st.file_uploader("ファイルをアップロード", type=["csv", "txt"])
if uploaded_file is not None:
# ファイルのデータを表示
bytes_data = uploaded_file.getvalue()
st.write(f"ファイルサイズ: {len(bytes_data)} bytes")

# CSVの場合はデータフレームとして読み込む
if uploaded_file.name.endswith('.csv'):
df = pd.read_csv(uploaded_file)
st.write("CSVデータのプレビュー:")
st.dataframe(df.head())

# ============================================
# カスタマイズ
# ============================================
# st.header("スタイルのカスタマイズ")
st.header("スタイルのカスタマイズ")

# カスタムCSS
# st.markdown("""
# <style>
# .big-font {
# font-size:20px !important;
# font-weight: bold;
# color: #0066cc;
# }
# </style>
# """, unsafe_allow_html=True)
st.markdown("""
<style>
.big-font {
font-size:20px !important;
font-weight: bold;
color: #0066cc;
}
</style>
""", unsafe_allow_html=True)
#
# st.markdown('<p class="big-font">これはカスタムCSSでスタイリングされたテキストです!</p>', unsafe_allow_html=True)
st.markdown('<p class="big-font">これはカスタムCSSでスタイリングされたテキストです!</p>', unsafe_allow_html=True)

# ============================================
# デモの使用方法
Expand Down
2 changes: 1 addition & 1 deletion day1/02_streamlit_app/config.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# config.py
DB_FILE = "chat_feedback.db"
MODEL_NAME = "google/gemma-2-2b-jpn-it"
MODEL_NAME = "rinna/japanease-gpt-neox-3.6b"
3 changes: 2 additions & 1 deletion day5/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# day5 演習用ディレクトリ
# day5 演習用ディレクトリ 2
# ちょっと変更(CI動作確認用)

第3回「MLOps」に関する演習用のディレクトリです。

Expand Down
10 changes: 10 additions & 0 deletions day5/演習3/tests/test_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,16 @@ def test_model_accuracy(train_model):
assert accuracy >= 0.75, f"モデルの精度が低すぎます: {accuracy}"


def test_model_high_accuracy(train_model):
"""モデルの精度が0.80以上と高い水準にあるかを確認"""
model, X_test, y_test = train_model

y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)

assert accuracy >= 0.80, f"精度がやや低いです: {accuracy:.3f} < 0.80"


def test_model_inference_time(train_model):
"""モデルの推論時間を検証"""
model, X_test, _ = train_model
Expand Down