Spaces:
Sleeping
Sleeping
import gradio as gr | |
import pandas as pd | |
from pycaret.classification import * | |
from pycaret.regression import * | |
from sklearn.tree import plot_tree | |
import matplotlib.pyplot as plt | |
import japanize_matplotlib # 日本語のフォントを使用するためのライブラリ | |
from io import BytesIO # バイトデータを扱うためのモジュール | |
# モデルを選択し、プロットする関数 | |
def plot_selected_model(file, ignore_features, target_variable, analysis_type, model_name, plot_type): | |
if file is None: | |
return None # ファイルがアップロードされていない場合 | |
buffer = BytesIO(file.read()) # ファイルの内容をバイトデータとして読み込む | |
if file.name.endswith('.csv'): | |
buffer.seek(0) # バッファのポインタをリセット | |
data = pd.read_csv(buffer) # CSVファイルの場合 | |
else: | |
buffer.seek(0) # バッファのポインタをリセット | |
data = pd.read_excel(buffer, engine='openpyxl') # Excelファイルの場合 | |
data = data.dropna(subset=[target_variable]) # 目的変数に欠損値がある行を削除 | |
data_ignored = data.drop(columns=ignore_features) # 除外する変数を削除 | |
if analysis_type == '分類': | |
setup_data = setup(data, target=target_variable, ignore_features=ignore_features) | |
elif analysis_type == '回帰': | |
setup_data = setup(data, target=target_variable, ignore_features=ignore_features) | |
compare_results = compare_models() | |
display(compare_results) # モデル比較の結果を表示 | |
model = create_model(model_name) # 選択されたモデルを作成 | |
plot_file = "plot.png" # プロットのファイル名 | |
if plot_type == '決定木': | |
# 決定木をプロット | |
plt.figure(figsize=(20, 10)) | |
plot_tree(model.estimators_[0], filled=True) | |
plt.savefig(plot_file) | |
else: | |
# 他のプロットタイプ | |
plot_model(model, plot=plot_type, save=True, save_filename=plot_file) | |
return plot_file | |
# メイン関数 | |
def main(file, ignore_features, target_variable, analysis_type, model_name, plot_type): | |
plot_file = plot_selected_model(file, ignore_features, target_variable, analysis_type, model_name, plot_type) | |
if plot_file is None: | |
return "エラー: ファイルがアップロードされていません。" | |
return plot_file | |
# 利用可能なプロットタイプのリスト | |
plot_types = ['feature', 'confusion_matrix', 'auc', 'residuals', '決定木'] | |
# Gradioインターフェースの設定 | |
iface = gr.Interface( | |
fn=main, # メイン関数 | |
inputs=[ | |
gr.inputs.File(label="ファイルアップロード (Excelファイル or CSVファイル)"), # ファイルアップロード | |
gr.inputs.CheckboxGroup(choices=[], label="説明変数から除外する変数を選択"), # 除外する変数の選択 | |
gr.inputs.Dropdown(choices=[], label="目的変数を選択"), # 目的変数の選択 | |
gr.inputs.Radio(choices=["分類", "回帰"], label="分析手法を選択"), # 分析手法の選択 | |
gr.inputs.Dropdown(choices=[], label="モデルを選択"), # モデル選択のためのドロップダウン | |
gr.inputs.Dropdown(choices=plot_types, label="プロットタイプを選択") # プロットタイプの選択 | |
], | |
outputs=[gr.outputs.Image(label="モデルの可視化", type="filepath")] # 出力 | |
) | |
# インターフェースの起動 | |
iface.launch() | |