内容
streamlitで機械学習アプリを作成しようとしています。
アプリの内容は以下です。
①csv読み込み
②csv内のラベルから 説明変数 と 目的変数を選択
③機械学習モデル選択
④機械学習実行
⑤モデルのダウンロード ←ここでエラーがでて困っています!
scikit-learnで学習したモデルを
st.download_buttonで出力できるようにしたいです。
発生している問題・エラーメッセージ
Invalid binary data format: <class 'list'>
該当のソースコード
python
1#ライブラリの読み込み 2import time 3from scipy.fft import irfft 4import streamlit as st 5import pandas as pd 6import numpy as np 7import matplotlib.pyplot as plt 8import seaborn as sns 9from sklearn.model_selection import train_test_split 10from sklearn import linear_model 11from sklearn.linear_model import LogisticRegression 12from sklearn.preprocessing import LabelEncoder 13from sklearn.preprocessing import StandardScaler #スケーリングの為に追記 14import joblib # モデル保存用 15 16 17 18 19# 重回帰分析_学習の実行関数 を定義 20@st.cache(allow_output_mutation=True) 21def ex_model_linear(X_train, y_train): 22 lr = linear_model.LinearRegression() 23 lr.fit(X_train, y_train) 24 25 return lr 26 27 28 29#タイトル 30st.title("機械学習アプリ") 31st.write("streamlitで実装") 32 33# 以下をサイドバーに表示 34st.sidebar.markdown("### 機械学習に用いるcsvファイルを入力してください") 35#ファイルアップロード 36uploaded_files = st.sidebar.file_uploader("Choose a CSV file", accept_multiple_files= False) 37#ファイルがアップロードされたら以下が実行される 38if uploaded_files: 39 df = pd.read_csv(uploaded_files) 40 df_columns = df.columns 41 data_num=len(df) 42 #データフレームを表示 43 st.markdown("### 入力データ") 44 st.dataframe(df.style.highlight_max(axis=0)) 45 46 47 48 49 st.markdown("### モデリング") 50 #説明変数は複数選択式 51 ex = st.multiselect("説明変数を選択してください(複数選択可)", df_columns) 52 53 #目的変数は一つ 54 ob = st.selectbox("目的変数を選択してください", df_columns) 55 56 #機械学習のタイプを選択する。 57 ml_menu = st.selectbox("実施する機械学習のタイプを選択してください", ["重回帰分析"]) 58 59 60 61 62 if ml_menu == "重回帰分析": 63 st.markdown("#### 機械学習を実行します") 64 testsize=st.number_input('テストサイズを入力',0.0,1.0,0.3) 65 execute = st.button("実行") 66 67 68 69 #実行ボタンを押したら下記が進む 70 71 if execute : 72 df_ex = df[ex] 73 df_ob = df[ob] 74 X_train, X_test, y_train, y_test = train_test_split(df_ex.values, df_ob.values, test_size = testsize , random_state=1) 75 lr = ex_model_linear(X_train,y_train) 76 77 78 #プログレスバー(ここでは、やってる感だけ) 79 my_bar = st.progress(0) 80 81 for percent_complete in range(100): 82 time.sleep(0.02) 83 my_bar.progress(percent_complete + 1) 84 85 #metricsで指標を強調表示させる 86 col1, col2 = st.columns(2) 87 col1.metric(label="トレーニングスコア", value=lr.score(X_train, y_train)) 88 col2.metric(label="テストスコア", value=lr.score(X_test, y_test)) 89 90 91 92 #モデルのダウンロード 93 model = joblib.dump(lr,"model.pkl") 94 st.download_button("Downloa model" , model)

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/08 11:27