Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| import numpy as np | |
| from sklearn.model_selection import train_test_split | |
| from sklearn.neighbors import KNeighborsRegressor | |
| from sklearn.metrics import r2_score,root_mean_squared_error | |
| from sklearn.preprocessing import StandardScaler | |
| from sklearn.model_selection import GridSearchCV,KFold | |
| from sklearn.pipeline import Pipeline | |
| from feature_engine.outliers import Winsorizer | |
| from sklearn.compose import ColumnTransformer | |
| import streamlit as stl | |
| stl.title('this is a sales prediction model 🛠️') | |
| df = pd.read_csv(r'company.csv') | |
| head = df.head() | |
| stl.write(head) | |
| x = df[['TV','Radio','Newspaper']] | |
| y = df['Sales'] | |
| x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=23) | |
| winsor = Winsorizer(capping_method='iqr', tail='right', fold=1.5) | |
| u = ['TV','Radio','Newspaper'] | |
| news_paper = Pipeline([('otlier',winsor)]) | |
| scaler = Pipeline([('scaling',StandardScaler())]) | |
| i = ['TV','Radio','Newspaper'] | |
| column_transform = ColumnTransformer([("o", news_paper, u),('s',scaler,i)],remainder= 'passthrough') | |
| model6 = Pipeline([('pre',column_transform), | |
| ('algo',KNeighborsRegressor(n_neighbors = 5))]) | |
| model6.fit(x_train,y_train) | |
| y_pred = model6.predict(x_test) #waste | |
| before_tuning =r2_score(y_test,y_pred) | |
| before_tune_error = root_mean_squared_error(y_test,y_pred) | |
| if stl.button('click for raw score and error'): | |
| stl.write(before_tuning) | |
| stl.write(before_tune_error) | |
| kf = KFold(n_splits = 5, shuffle = True, random_state = 23) | |
| hyper_parameters = {"n_neighbors": range(1, 31), | |
| "weights": ['distance','uniform'], | |
| "p": [1,2], | |
| "algorithm": ['auto', 'ball_tree', 'kd_tree', 'brute']} | |
| model1 = KNeighborsRegressor(n_neighbors=5) | |
| grid = GridSearchCV(model1, hyper_parameters, cv = kf, scoring = 'neg_root_mean_squared_error', n_jobs = 2) | |
| grid.fit(x,y) | |
| model = Pipeline([('pre',column_transform), | |
| ('algo',KNeighborsRegressor(algorithm = 'brute', n_neighbors = 6, p = 1,weights = 'distance'))]) | |
| model.fit(x_train,y_train) | |
| p = model.predict(x_test) | |
| after_tuning = r2_score(y_test,p) | |
| after_tune_error =root_mean_squared_error(y_test,p) | |
| if stl.button('click for tuned score and error'): | |
| stl.write(after_tuning) | |
| stl.write(after_tune_error) | |
| stl.sidebar.header("User Input") | |
| User_TV = stl.sidebar.number_input("TV") | |
| User_Radio = stl.sidebar.number_input("Radio") | |
| User_Newspaper = stl.sidebar.number_input("Newspaper") | |
| user_input_data = pd.DataFrame([[User_TV, User_Radio, User_Newspaper]], columns = ['TV', 'Radio', 'Newspaper']) | |
| if stl.button("Predict Sales"): | |
| prediction = model.predict(user_input_data) | |
| stl.write(prediction) |