File size: 1,852 Bytes
fc00cff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
from sklearn import tree
import pandas as pd

def load_data():
    data=pd.read_csv(r"C:\Users\Lenovo\Downloads\sales.csv")
    return data

data = load_data()

    
def predict_page():
    from sklearn.preprocessing import LabelEncoder
    le=LabelEncoder()
    le.fit(data['Category'])
    data['Category']=le.transform(data['Category'])
    
    le1=LabelEncoder()
    le1.fit(data['Sub Category'])
    data['Sub Category']=le1.transform(data['Sub Category'])
    
    le2 = LabelEncoder()
    le2.fit(data['City'])
    data['City'] = le2.transform(data['City'])

    X = data[["City", "Category", "Sub Category"]]
    y = data["Sales"]
    
    

    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

    clf = tree.DecisionTreeRegressor()
    clf = clf.fit(X_train, y_train)

    y_pred = clf.predict(X_test)

    from sklearn.metrics import mean_absolute_error, r2_score
    print("Mean Absolute Error:", mean_absolute_error(y_test, y_pred))
    print("R-squared Score:", r2_score(y_test, y_pred))

    clf = tree.DecisionTreeRegressor()
    clf = clf.fit(X_train, y_train)

    def predict(City, Category, Sub_Category):
        prediction = clf.predict([[City, Category, Sub_Category]])
        return prediction

    st.title("Sales Prediction")

    City = st.selectbox("Select City",
                        options=data['City'].unique())
    category = st.selectbox("Select category", 
                            options=data["Category"].unique())    
    sub_category = st.selectbox("Select sub category", 
                            options=data["Sub Category"])
    if st.button("Predict"):
        result = predict(City, category, sub_category)
        st.success(f'Predicted Sales: {result}')
        return predict_page()