js77777/jsspace
0
1import gradio as gr2import numpy as np3import pandas as pd4from sklearn.pipeline import Pipeline5from sklearn.preprocessing import StandardScaler6from sklearn.ensemble import RandomForestClassifier7 8df = pd.read_csv("All_Pokemon.csv")9 10features = ['HP', 'Att', 'Def', 'Spa', 'Spd', 'Spe']11X = df[features].values12y = df['Legendary'].astype(int).values13 14model = Pipeline([15 ("scaler", StandardScaler()),16 ("clf", RandomForestClassifier(n_estimators=100, random_state=42))17])18model.fit(X, y)19 20def predict(hp, att, def_, spa, spd, spe):21 x = np.array([[hp, att, def_, spa, spd, spe]], dtype=float)22 proba = model.predict_proba(x)[0]23 pred = int(np.argmax(proba))24 label = "⭐ 전설의 포켓몬!" if pred == 1 else "일반 포켓몬"25 prob_dict = {26 "일반 포켓몬": float(proba[0]),27 "전설의 포켓몬": float(proba[1])28 }29 return label, prob_dict30 31demo = gr.Interface(32 fn=predict,33 inputs=[34 gr.Number(label="HP", value=45),35 gr.Number(label="Attack", value=49),36 gr.Number(label="Defense", value=49),37 gr.Number(label="Sp. Attack", value=65),38 gr.Number(label="Sp. Defense", value=65),39 gr.Number(label="Speed", value=45),40 ],41 outputs=[42 gr.Label(label="예측 결과"),43 gr.JSON(label="확률"),44 ],45 title="포켓몬 전설 여부 예측기 🔥",46 description="6가지 스탯을 입력하면 전설의 포켓몬인지 예측합니다!\n테스트: 뮤츠 (HP:106, Att:110, Def:90, SpA:154, SpD:90, Spe:130)"47)48 49if __name__ == "__main__":50 demo.launch()51 52 53requirements.txt54 55scikit-learn56numpy57pandas