YouMatter / app.py
Sagar
Updated
e5eed51
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import gradio as gr
df=pd.read_csv("mexican_medical_students_mental_health_data.csv")
df.head()
df.info
target=df.iloc[:,19:27].sum(axis=1)
df.insert(43,"gad_total",target)
df.head()
df.nunique() #Checking the number of unique values for primary keys or constants
df.isna().sum()#Missing values
h_mean=df["height"].mean()
w_mean=df["weight"].mean()
age_mean=df["age"].mean()
g_mode=df["gender"].mode()[0]
r_mode=df["reported_sleep_hours"].mode()[0]
n_mode=df["nap_duration"].mode()[0]
p1=df["phq1"].mode()[0]
p2=df["phq2"].mode()[0]
p3=df["phq3"].mode()[0]
p4=df["phq4"].mode()[0]
p5=df["phq5"].mode()[0]
p6=df["phq6"].mode()[0]
p7=df["phq7"].mode()[0]
p8=df["phq8"].mode()[0]
p9=df["phq9"].mode()[0]
r_mode
df["height"].fillna(h_mean,inplace=True)
df["weight"].fillna(w_mean,inplace=True)
df["age"].fillna(age_mean,inplace=True)
df["gender"].fillna(g_mode,inplace=True)
df["phq1"].fillna(p1,inplace=True)
df["phq2"].fillna(p2,inplace=True)
df["phq3"].fillna(p3,inplace=True)
df["phq4"].fillna(p4,inplace=True)
df["phq5"].fillna(p5,inplace=True)
df["phq6"].fillna(p6,inplace=True)
df["phq7"].fillna(p7,inplace=True)
df["phq8"].fillna(p8,inplace=True)
df["phq9"].fillna(p9,inplace=True)
df["reported_sleep_hours"].fillna(r_mode,inplace=True)
df["nap_duration"].fillna(n_mode,inplace=True)
df.isna().sum()
import datetime
new=[]
for i in range(len(df["reported_sleep_hours"])):
con=datetime.datetime.strptime(str(df["reported_sleep_hours"][i]),"%H:%M")
t=float(con.minute/60)
tot=float(con.hour)+t
new.append(tot)
df.insert(44,"reported_sleep_in_hours",new)
new=[]
for i in range(len(df["nap_duration"])):
con=datetime.datetime.strptime(str(df["nap_duration"][i]),"%H:%M")
t=float(con.minute/60)
tot=float(con.hour)+t
new.append(tot)
df.insert(45,"nap_duration_hours",new)
from sklearn import preprocessing
le= preprocessing.LabelEncoder()
df["gender"]=le.fit_transform(df["gender"])
df.head()
df.insert(44,"epw_total",target)
# In[22]:
X=df[["age","gender","height","weight","phq1","phq2","phq3","phq4","phq5","phq6","phq7","phq8","phq9","reported_sleep_in_hours","nap_duration_hours"]]
y=df["gad_total"]
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,random_state=21)
model=LinearRegression()
model.fit(X_train,y_train)
print("Training complete.")
r2_score=model.score(X_test,y_test)
print(r2_score*100,"%")
y_pred = model.predict(X_test)
print('Coefficients: \n', model.coef_)
print("Mean squared error: %.2f" % np.mean((model.predict(X_test) - y_test) ** 2))
#epw
X=df[["age","gender","height","weight","phq1","phq2","phq3","phq4","phq5","phq6","phq7","phq8","phq9","reported_sleep_in_hours","nap_duration_hours"]]
y=df["epw_total"]
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.15,random_state=21)
modelepw=LinearRegression()
modelepw.fit(X_train,y_train)
print("Training complete.")
# In[79]:
r2_score=modelepw.score(X_test,y_test)
print(r2_score*100,"%")
# In[80]:
y_pred = modelepw.predict(X_test)
print('Coefficients: \n', modelepw.coef_)
# The mean squared error
print("Mean squared error: %.2f" % np.mean((modelepw.predict(X_test) - y_test) ** 2))
#local Testing
# input = "25,1,10,70,3,3,3,2,3,3,3,3,2,24,2";
# temp =np.array(input.split(","), dtype=float)
# y = model.predict([[temp[0],temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7],temp[8],temp[9],temp[10],temp[11],temp[12],temp[13],temp[14]]])
# z = modelepw.predict([[temp[0],temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7],temp[8],temp[9],temp[10],temp[11],temp[12],temp[13],temp[14]]])
# output = str(y)+ "," +str(z)
# print(output)
def greet(input):
temp =np.array(input.split(","), dtype=float)
y = model.predict([[temp[0],temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7],temp[8],temp[9],temp[10],temp[11],temp[12],temp[13],temp[14]]])
z = modelepw.predict([[temp[0],temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7],temp[8],temp[9],temp[10],temp[11],temp[12],temp[13],temp[14]]])
output = str(y)+ "," +str(z)
return output
textbox_x = gr.Textbox(label="Enter Input:", placeholder="25,1,10,70,3,3,3,2,3,3,3,3,2,24,2", lines=1)
textbox_y = gr.Textbox(label="Variable Y:", placeholder ="5.0000000", lines=1)
grIn = gr.Interface(title = "Your Name Regeression ",fn=greet, inputs=textbox_x, outputs=textbox_y)
grIn.launch()