ambujraj2001
Add application file
6676776
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
import streamlit as st
import time
from PIL import Image
favicon=Image.open('favicon.jpeg')
st.set_page_config(page_title='Rock-Mine Predict', page_icon=favicon, layout="centered", initial_sidebar_state="auto", menu_items=None)
def view():
sonar_data = pd.read_csv('sonar data.csv',header=None)
st.dataframe(sonar_data, 700, 300)
def train_model():
sonar_data = pd.read_csv('sonar data.csv',header=None)
# sonar_data.head()
X = sonar_data.drop(columns=60, axis=1)
Y = sonar_data[60]
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.1, stratify=Y, random_state=1)
model = LogisticRegression()
model.fit(X_train, Y_train)
X_train_prediction = model.predict(X_train)
return (accuracy_score(X_train_prediction, Y_train))
def test1():
sonar_data = pd.read_csv('sonar data.csv',header=None)
X = sonar_data.drop(columns=60, axis=1)
Y = sonar_data[60]
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.1, stratify=Y, random_state=1)
model = LogisticRegression()
model.fit(X_train, Y_train)
input_data = (0.0307,0.0523,0.0653,0.0521,0.0611,0.0577,0.0665,0.0664,0.1460,0.2792,0.3877,0.4992,0.4981,0.4972,0.5607,0.7339,0.8230,0.9173,0.9975,0.9911,0.8240,0.6498,0.5980,0.4862,0.3150,0.1543,0.0989,0.0284,0.1008,0.2636,0.2694,0.2930,0.2925,0.3998,0.3660,0.3172,0.4609,0.4374,0.1820,0.3376,0.6202,0.4448,0.1863,0.1420,0.0589,0.0576,0.0672,0.0269,0.0245,0.0190,0.0063,0.0321,0.0189,0.0137,0.0277,0.0152,0.0052,0.0121,0.0124,0.0055)
input_data_as_numpy_array = np.asarray(input_data)
input_data_reshaped = input_data_as_numpy_array.reshape(1,-1)
prediction = model.predict(input_data_reshaped)
if (prediction[0]=='R'):
st.warning('The object is a Rock')
else:
st.error('The object is a Mine')
def test2():
sonar_data = pd.read_csv('sonar data.csv',header=None)
X = sonar_data.drop(columns=60, axis=1)
Y = sonar_data[60]
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.1, stratify=Y, random_state=1)
model = LogisticRegression()
model.fit(X_train, Y_train)
input_data = (0.0453,0.0523,0.0843,0.0689,0.1183,0.2583,0.2156,0.3481,0.3337,0.2872,0.4918,0.6552,0.6919,0.7797,0.7464,0.9444,1.0000,0.8874,0.8024,0.7818,0.5212,0.4052,0.3957,0.3914,0.3250,0.3200,0.3271,0.2767,0.4423,0.2028,0.3788,0.2947,0.1984,0.2341,0.1306,0.4182,0.3835,0.1057,0.1840,0.1970,0.1674,0.0583,0.1401,0.1628,0.0621,0.0203,0.0530,0.0742,0.0409,0.0061,0.0125,0.0084,0.0089,0.0048,0.0094,0.0191,0.0140,0.0049,0.0052,0.0044)
input_data_as_numpy_array = np.asarray(input_data)
input_data_reshaped = input_data_as_numpy_array.reshape(1,-1)
prediction = model.predict(input_data_reshaped)
if (prediction[0]=='R'):
st.warning('The object is a Rock')
else:
st.error('The object is a Mine')
def test3():
sonar_data = pd.read_csv('sonar data.csv',header=None)
X = sonar_data.drop(columns=60, axis=1)
Y = sonar_data[60]
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.1, stratify=Y, random_state=1)
model = LogisticRegression()
model.fit(X_train, Y_train)
input_data = (0.0294,0.0123,0.0117,0.0113,0.0497,0.0998,0.1326,0.1117,0.2984,0.3473,0.4231,0.5044,0.5237,0.4398,0.3236,0.2956,0.3286,0.3231,0.4528,0.6339,0.7044,0.8314,0.8449,0.8512,0.9138,0.9985,1.0000,0.7544,0.4661,0.3924,0.3849,0.4674,0.4245,0.3095,0.0752,0.2885,0.4072,0.3170,0.2863,0.2634,0.0541,0.1874,0.3459,0.4646,0.4366,0.2581,0.1319,0.0505,0.0112,0.0059,0.0041,0.0056,0.0104,0.0079,0.0014,0.0054,0.0015,0.0006,0.0081,0.0043)
input_data_as_numpy_array = np.asarray(input_data)
input_data_reshaped = input_data_as_numpy_array.reshape(1,-1)
prediction = model.predict(input_data_reshaped)
if (prediction[0]=='R'):
st.warning('The object is a Rock')
else:
st.error('The object is a Mine')
def test4():
sonar_data = pd.read_csv('sonar data.csv',header=None)
X = sonar_data.drop(columns=60, axis=1)
Y = sonar_data[60]
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.1, stratify=Y, random_state=1)
model = LogisticRegression()
model.fit(X_train, Y_train)
input_data = (0.0340,0.0625,0.0381,0.0257,0.0441,0.1027,0.1287,0.1850,0.2647,0.4117,0.5245,0.5341,0.5554,0.3915,0.2950,0.3075,0.3021,0.2719,0.5443,0.7932,0.8751,0.8667,0.7107,0.6911,0.7287,0.8792,1.0000,0.9816,0.8984,0.6048,0.4934,0.5371,0.4586,0.2908,0.0774,0.2249,0.1602,0.3958,0.6117,0.5196,0.2321,0.4370,0.3797,0.4322,0.4892,0.1901,0.0940,0.1364,0.0906,0.0144,0.0329,0.0141,0.0019,0.0067,0.0099,0.0042,0.0057,0.0051,0.0033,0.0058)
input_data_as_numpy_array = np.asarray(input_data)
input_data_reshaped = input_data_as_numpy_array.reshape(1,-1)
prediction = model.predict(input_data_reshaped)
if (prediction[0]=='R'):
st.warning('The object is a Rock')
else:
st.error('The object is a Mine')
def testlinew(input_data):
sonar_data = pd.read_csv('sonar data.csv',header=None)
X = sonar_data.drop(columns=60, axis=1)
Y = sonar_data[60]
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.1, stratify=Y, random_state=1)
model = LogisticRegression()
model.fit(X_train, Y_train)
input_data_as_numpy_array = np.asarray(input_data)
input_data_reshaped = input_data_as_numpy_array.reshape(1,-1)
prediction = model.predict(input_data_reshaped)
if (prediction[0]=='R'):
st.warning('The object is a Rock')
else:
st.error('The object is a Mine')
def showgraph():
sonar_data = pd.read_csv('sonar data.csv',header=None)
rock_x = sonar_data.iloc[0:97].mean(axis=1)
rock_x.tolist()
freq_x = list(range(1,98))
mine_x = sonar_data.iloc[97:209].mean(axis=1)
mine_x.tolist()
freq_y = list(range(1,112))
#resetting index of mine_x
mine_xnew = []
for i in range(97,194):
mine_xnew.append(mine_x[i])
dataframe1 = pd.DataFrame(
{
'Rock_Frequency':rock_x,
'Mine_Frequency':mine_xnew
}
)
chartdata = pd.DataFrame(
dataframe1,
columns=['a','b']
)
html_hr = """
<div>
<hr>
</div>
"""
st.markdown(html_hr, unsafe_allow_html=True)
st.subheader('Plot of Rock or Mine based on their mean frequency per observation')
st.caption('x-axis: &nbsp &nbsp Observations')
st.caption('y-axis: &nbsp &nbsp Mean-Frequency')
st.line_chart(dataframe1)
html_temp = """
<div style="background-color:#2f5888 ;padding:10px 10px 0px 10px; margin-bottom:10vh; border-radius: 0.5rem; box-shadow: #2736466e 2px 5px 8px;"">
<h2 style="color:white;text-align:center;">Rock or Mine Prediction </h2>
<h3 style="padding-bottom:20px ; font-size: 2vh; color:white; text-align:center;">Binary Classification ML Model</h3>
</div>
"""
st.markdown(html_temp, unsafe_allow_html=True)
html_temp1 = """
<div>
<hr>
<p style="font-style: italic; font-size: 15px;">~ "The data set by Terry Sejnowski, Salk Institute and the University of California at San Deigo. The data set was developed in collaboration with R. Paul Gorman of Allied-Signal Aerospace Technology Center."</p>
</div>
"""
st.markdown(html_temp1, unsafe_allow_html=True)
if st.button('View DataSet'):
view()
html_hr = """
<div>
<hr>
</div>
"""
st.markdown(html_hr, unsafe_allow_html=True)
if st.button('Show Statistical Measure of the Data'):
sonar_data = pd.read_csv('sonar data.csv',header=None)
st.write(sonar_data.describe())
showgraph()
html_hr = """
<div>
<hr>
</div>
"""
st.markdown(html_hr, unsafe_allow_html=True)
if st.button('Train the Model'):
x=train_model()
my_bar = st.progress(0)
for percent_complete in range(100):
time.sleep(0.05)
my_bar.progress(percent_complete + 1)
st.success('Model Trained Successfully !')
st.write('Accuracy Score is',x)
html_hr = """
<div>
<hr>
</div>
"""
st.markdown(html_hr, unsafe_allow_html=True)
html_subheading = """
<h3>
Some Examples of our Trained Model
</h3>
"""
st.markdown(html_subheading, unsafe_allow_html=True)
html_arraydata = """
<div>
Frequecies for object 1:
</div>
<br>
<code style="margin: 5px;">
[0.0307,0.0523,0.0653,0.0521,0.0611,0.0577,0.0665,0.0664,0.1460,0.2792,0.3877,0.4992,0.4981,0.4972,0.5607,0.7339,0.8230,0.9173,0.9975,0.9911,0.8240,0.6498,0.5980,0.4862,0.3150,0.1543,0.0989,0.0284,0.1008,0.2636,0.2694,0.2930,0.2925,0.3998,0.3660,0.3172,0.4609,0.4374,0.1820,0.3376,0.6202,0.4448,0.1863,0.1420,0.0589,0.0576,0.0672,0.0269,0.0245,0.0190,0.0063,0.0321,0.0189,0.0137,0.0277,0.0152,0.0052,0.0121,0.0124,0.0055]
</code>
"""
st.markdown(html_arraydata, unsafe_allow_html=True)
html_hr = """
<div>
</div>
"""
st.markdown(html_hr, unsafe_allow_html=True)
if st.button('Test Set 1'):
test1()
html_hr = """
<div>
<hr>
</div>
"""
st.markdown(html_hr, unsafe_allow_html=True)
html_arraydata = """
<div>
Frequecies for object 2:
</div>
<br>
<code style="margin: 5px;">
[0.0453,0.0523,0.0843,0.0689,0.1183,0.2583,0.2156,0.3481,0.3337,0.2872,0.4918,0.6552,0.6919,0.7797,0.7464,0.9444,1.0000,0.8874,0.8024,0.7818,0.5212,0.4052,0.3957,0.3914,0.3250,0.3200,0.3271,0.2767,0.4423,0.2028,0.3788,0.2947,0.1984,0.2341,0.1306,0.4182,0.3835,0.1057,0.1840,0.1970,0.1674,0.0583,0.1401,0.1628,0.0621,0.0203,0.0530,0.0742,0.0409,0.0061,0.0125,0.0084,0.0089,0.0048,0.0094,0.0191,0.0140,0.0049,0.0052,0.0044]
</code>
"""
st.markdown(html_arraydata, unsafe_allow_html=True)
html_hr = """
<div>
</div>
"""
st.markdown(html_hr, unsafe_allow_html=True)
if st.button('Test Set 2'):
test2()
html_hr = """
<div>
<hr>
</div>
"""
st.markdown(html_hr, unsafe_allow_html=True)
html_arraydata = """
<div>
Frequecies for object 3:
</div>
<br>
<code style="margin: 5px;">
[0.0294,0.0123,0.0117,0.0113,0.0497,0.0998,0.1326,0.1117,0.2984,0.3473,0.4231,0.5044,0.5237,0.4398,0.3236,0.2956,0.3286,0.3231,0.4528,0.6339,0.7044,0.8314,0.8449,0.8512,0.9138,0.9985,1.0000,0.7544,0.4661,0.3924,0.3849,0.4674,0.4245,0.3095,0.0752,0.2885,0.4072,0.3170,0.2863,0.2634,0.0541,0.1874,0.3459,0.4646,0.4366,0.2581,0.1319,0.0505,0.0112,0.0059,0.0041,0.0056,0.0104,0.0079,0.0014,0.0054,0.0015,0.0006,0.0081,0.0043]
</code>
"""
st.markdown(html_arraydata, unsafe_allow_html=True)
html_hr = """
<div>
</div>
"""
st.markdown(html_hr, unsafe_allow_html=True)
if st.button('Test Set 3'):
test3()
html_hr = """
<div>
<hr>
</div>
"""
st.markdown(html_hr, unsafe_allow_html=True)
html_arraydata = """
<div>
Frequecies for object 4:
</div>
<br>
<code style="margin: 5px;">
[0.0340,0.0625,0.0381,0.0257,0.0441,0.1027,0.1287,0.1850,0.2647,0.4117,0.5245,0.5341,0.5554,0.3915,0.2950,0.3075,0.3021,0.2719,0.5443,0.7932,0.8751,0.8667,0.7107,0.6911,0.7287,0.8792,1.0000,0.9816,0.8984,0.6048,0.4934,0.5371,0.4586,0.2908,0.0774,0.2249,0.1602,0.3958,0.6117,0.5196,0.2321,0.4370,0.3797,0.4322,0.4892,0.1901,0.0940,0.1364,0.0906,0.0144,0.0329,0.0141,0.0019,0.0067,0.0099,0.0042,0.0057,0.0051,0.0033,0.0058]
</code>
"""
st.markdown(html_arraydata, unsafe_allow_html=True)
html_hr = """
<div>
</div>
"""
st.markdown(html_hr, unsafe_allow_html=True)
if st.button('Test Set 4'):
test4()
html_hr = """
<div>
<hr>
</div>
"""
st.markdown(html_hr, unsafe_allow_html=True)
html_subheading = """
<h3>
Enter frequencies to predict the data
</h3>
"""
st.markdown(html_subheading, unsafe_allow_html=True)
i=0
title = st.text_area('Enter Data', value="0")
li = list(title.split(","))
linew = []
for item in li:
item = float(item)
linew.append(item)
linew = tuple(linew)
if st.button('Test Data'):
testlinew(linew)
logo=Image.open('logo.png')
st.sidebar.image(logo, caption=None, width=300, use_column_width=None, clamp=False, channels="RGB", output_format="auto")
add_selectbox = st.sidebar.title(
"Submitted by: Team 28"
)
add_selectbox = st.sidebar.text(
"Members: \n"
"\tAmbuj Raj\n"
"\tShivam\n"
"\tSaksham Singh\n"
"\tChirag Garg\n"
"\tMridul Gupta\n"
)
html_sidebar = """
<hr>
<div>
<h3>
Description:
</h3>
<p>
We use active sonar system to detect the frequencies of different materials and classify them into Rocks or Mine using our ML model
<br/>
<a href="https://drive.google.com/file/d/1NGAVV7uIOngc_JfOFemKBRBHYlPqdxet/view?usp=sharing">More info...</a>
</p>
</div>
"""
st.sidebar.markdown(html_sidebar, unsafe_allow_html=True)
html_sidebarfoot = """
<hr>
<p style="font-size: 15px; margin-top: 0vh; margin-bottom: 0%;">
<strong>IT Workshop</strong>
</p>
<p style="font-size: 12px; padding-top: 0vh; margin-top: 0%;">
Ms. Khushboo Jain
<br>
Indian Institute of Information Technology, Nagpur
</p>
"""
st.sidebar.markdown(html_sidebarfoot, unsafe_allow_html=True)