Edohanifauzan/Edo_app
0
1import streamlit as st2import pandas as pd 3import numpy as np4import pickle5from sklearn import *6from sklearn.model_selection import train_test_split7from sklearn.model_selection import cross_val_score8from sklearn.linear_model import LogisticRegression9from sklearn.metrics import accuracy_score10from sklearn.model_selection import train_test_split11from sklearn.ensemble import RandomForestClassifier12from sklearn.ensemble import VotingClassifier13from sklearn.ensemble import StackingClassifier14from sklearn.naive_bayes import GaussianNB15from sklearn.tree import DecisionTreeClassifier16from sklearn.cluster import KMeans17from sklearn.svm import SVC18from sklearn.neighbors import KNeighborsClassifier19from sklearn.preprocessing import MinMaxScaler20 21st.title("""Edo Hanifauzan Satria""")22st.title("""200411100058""")23st.header("""Penambangan Data """)24 25model = pickle.load(open('modelNBC_Raisin.pkl', 'rb'))26df=pd.read_csv('https://raw.githubusercontent.com/EdoHanifauzan/data/Dataset/Raisin_Dataset.csv')27min_max_scaler = preprocessing.MinMaxScaler(feature_range=(0,1))28y=df["Class"]29X=df.drop(columns =["Class"])30normalized = min_max_scaler.fit_transform(X)31n=pd.DataFrame(normalized,columns=['Area','MajorAxisLength','MinorAxisLength','Eccentricity','ConvexArea','Extent','Perimeter'])32 33 34page1, page2, page3 = st.tabs(["Home", "Data", "Input Model"])35 36with page1:37 st.header("Menghitung Klasifikasi Kismis")38 st.write("Dataset Yang digunakan adalah dari [Kaggle](https://www.kaggle.com/datasets/shrutisaxena/raisin-dataset ")39 st.write("Link repository Github : [https://github.com/EdoHanifauzan/data/blob/Dataset/Raisin_Dataset.csv](https://github.com/EdoHanifauzan/data/blob/Dataset/Raisin_Dataset.csv)")40 st.subheader("Deskripsi Data")41 42 st.markdown("""43 <ul>44 <p>Fitur</p>45 <li>46 Kolom 1: Area47 <p>Dikolom Area ini Memberikan jumlah piksel dalam batas kismis</p>48 </li>49 <li>50 Kolom 2: MajorAxisLength51 <p>Dikolom MajorAxisLength ini Memberikan panjang sumbu utama </p>52 </li>53 <li>54 Kolom 3: MinorAxisLength55 <p> Dikolom MinorAxisLength ini memberikan panjang sumbu kecil, yang merupakan garis terpendek yang dapat ditarik pada kismis </p>56 </li>57 <li>58 Kolom 4: Eksentrisitas59 <p> Dikolom Eksentrisitas Ini memberikan ukuran eksentrisitas elips, yang memiliki momen yang sama dengan kismis </p>60 </li>61 <li>62 Kolom 5: ConvexArea63 <p> Dikolom ConvexArea ini memberikan jumlah piksel dari cangkang cembung terkecil dari wilayah yang dibentuk oleh kismis</p>64 </li>65 <li>66 Kolom 6: Extent67 <p> Dikolom Extent ini memberikan rasio wilayah yang dibentuk oleh kismis terhadap total piksel dalam kotak pembatas </p>68 </li>69 <li>70 Kolom 7: Perimeter71 <p> Dikolom Perimeter inimengukur lingkungan dengan menghitung jarak antara batas kismis dan piksel di sekitarnya </p>72 </li>73 <p>Kategori</p>74 <li>75 Kolom 8: Class76 <p> Dikolom Class ini menjelaskan pembagian kelas kismis Kecimen dan Besni: </p>77 </li>78 79 </ul>80""", unsafe_allow_html=True)81 82with page2:83 st.header(" Raisin Dataset ")84 st.write(df)85 st.subheader("Data proccesing")86 st.write(n)87 st.write('Jumlah Baris dan Kolom :',X.shape)88 st.write('Jumlah kelas :',len(np.unique(y)))89 X_train, X_test, y_train, y_test=train_test_split(normalized, y, test_size= 0.20, random_state=4321)90 alg=KNeighborsClassifier(n_neighbors=8)91 alg.fit(X_train,y_train)92 y_pred=alg.predict(X_test)93 acc=accuracy_score(y_test, y_pred)94 st.write(f'Akurasi =', acc)95 96with page3:97 st.header("Input Data Model")98 99 100 # membuat input101 def user_input_features():102 Area = st.slider('Area',40000,90000,63000)103 MajorAxisLength = st.slider('Major Axis Length',220.1,500.0,403.9)104 MinorAxisLength = st.slider('Minor Axis Length',150.1,300.9,189.9)105 Eksentrisitas = st.slider('Eksentrisitas',0.10,0.99,0.56)106 ConvexArea = st.slider('Convex Area',4000,9999,4350)107 Extent = st.slider('Extent',0.100,0.999,0.39)108 Perimeter = st.slider('Perimeter',800.0,1300.9,843.9)109 data={'Area':Area,110 'Major Axis Length' : MajorAxisLength,111 'Minor Axis Length' : MinorAxisLength,112 'Eksentrisitas' : Eksentrisitas,113 'Convex Area' : ConvexArea,114 'Extent' : Extent,115 'Perimeter' : Perimeter116 }117 features = pd.DataFrame(data, index=[0])118 return features119 120 data = user_input_features()121 algoritma=st.selectbox('pilih algoritma',("GaussianNB","KNN","K-Means","Decision Tree"))122 if algoritma=='KNN':123 algo=KNeighborsClassifier(n_neighbors=8)124 elif algoritma=='GaussianNB':125 algo=GaussianNB()126 elif algoritma =='K-Means':127 algo=KMeans(n_clusters=5)128 elif algoritma =='Decision Tree':129 algo= DecisionTreeClassifier(criterion="gini")130 131 st.subheader("Hasil :")132 st.write(data)133 algo.fit(X,y)134 prediction = model.predict(data)135 kelas=np.array(['Kedimen','Besni'])136 st.subheader('Prediksi')137 st.write(kelas[prediction])138 