File size: 3,605 Bytes
52e54aa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import streamlit as st
import streamlit.components.v1 as components
import os  # Import the os module
import pandas as pd
import zipfile

from sidebar_logo import add_sidebar_logo, load_css

# Set page configuration
st.set_page_config(
    layout="wide"
)

add_sidebar_logo()
load_css()

st.markdown("""
<div style="
    font-size: 1.9rem;
    font-weight: 800;
    background: linear-gradient(135deg, #a78bfa, #818cf8, #f472b6);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    font-family: 'Poppins', sans-serif;
">
📓 4. Support Vector Machine (SVM)
</div>
""", unsafe_allow_html=True)


# Define the file path with regular spaces
path_to_html = "Support_Vector_Machine_(SVM).html"

# Check if the HTML file exists
if not os.path.exists(path_to_html):
    st.error("HTML file not found!")
else:
    # Read HTML content
    with open(path_to_html, 'r', encoding='utf-8') as f:
        html_data = f.read()

    # Show HTML content
    st.header(":violet[Support Vector Machine (SVM)]")
    st.markdown("""Hi guys. Today we are going to learn about 'Support Vector Machine' algorithm. SVM is a special kind of an algorithm which can be used to solve both classification & regression problems.
                   Today however, we are going to see how it goes ahead and does classification on a bank loan data. The bank loan zip dataset contains both risk train & risk test data. The data here is 
                   split already into train & test data, so we are not going to perform 'Train-test split' in today's session. The limitation of KNN is the fact that it works only on linearly separable data.
                   However, if we want to work on non-linearly separable data, by this I mean data which is distributed/scattered in such a way that it cannot be separated using a straight line then we make 
                   use of SVM. SVM operates well on sporadic/concentric data as it can properly separate data by using a hyperplane. Similar to KNN, we have hyperparameters here as well (namely kernel, C & gamma)
                   which can help us tune the model to achieve even better results. For now, I would request you to please download the 'risk_analytics' zip datatset that contains both the training and testing data 
                   on which we are going to perform SVM. Let's get started.""")
    
    def create_zip():
        with zipfile.ZipFile('risk_analytics.zip', 'w') as zipf:
            for root, dirs, files in os.walk('risk_analytics'):
                for file in files:
                    zipf.write(os.path.join(root, file), file)
        with open("risk_analytics.zip", "rb") as f:
            data = f.read()
        return data

    # Create a download button for the zip file
    button_label_zip = ":violet[Download risk analytics dataset Zip]"
    button_download_zip = st.download_button(label=button_label_zip, data=create_zip(), file_name='risk_analytics.zip', mime='application/zip')

    st.write("---")
    st.components.v1.html(html_data, width=1000, height=12300)

    def download_notebook():
        with open("Support_Vector_Machine_(SVM).ipynb", "rb") as f:
            data = f.read()
        return data

    # Create a download button for the notebook
    st.write("----")
    st.write("To download 'Support Vector Machine (SVM)' Jupyter notebook click on the button below.")
    button_label = ":violet[Download Jupyter Notebook]"
    button_download = st.download_button(label=button_label, data=download_notebook(), file_name="Support_Vector_Machine_(SVM).ipynb", mime='application/x-ipynb+json')