DemoIHK / app.py
Archaeo's picture
Update app.py
29af33d verified
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression, Ridge, Lasso
from sklearn.metrics import r2_score
import gradio as gr
def regularization(upload, l2=None, l1=None):
if upload is not None:
# Daten einlesen und aufteilen
df = pd.read_csv(upload)
X = df.drop(['target'], axis=1)
Y = df[['target']]
# Training LINEARE REGRESSION
lr = LinearRegression()
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.4, random_state=1234)
lr.fit(X_train, Y_train)
# Vorhersagen TRAINING & TEST
Y_predict_train = lr.predict(X_train)
Y_predict_test = lr.predict(X_test)
# Kennzahlen TRAINING & TEST
r2_train = r2_score(Y_train, Y_predict_train)
r2_test = r2_score(Y_test, Y_predict_test)
result_linear = f"LINEARE REGRESSION\nR2 Training: {r2_train:.2f}\nR2 Test: {r2_test:.2f}\n\n"
result_ridge = ""
result_lasso = ""
if l2:
# RIDGE Regression
ridge = Ridge(alpha=float(l2))
ridge.fit(X_train, Y_train)
# Vorhersagen TRAINING & TEST
Y_predict_train_l2 = ridge.predict(X_train)
Y_predict_test_l2 = ridge.predict(X_test)
# Kennzahlen TRAINING & TEST
r2_train_l2 = r2_score(Y_train, Y_predict_train_l2)
r2_test_l2 = r2_score(Y_test, Y_predict_test_l2)
result_ridge = f"RIDGE REGRESSION\nR2 Training: {r2_train_l2:.2f}\nR2 Test: {r2_test_l2:.2f}\n\n"
if l1:
# LASSO Regression
lasso = Lasso(alpha=float(l1)) # Hier die fehlende Klammer hinzugefügt
lasso.fit(X_train, Y_train)
# Vorhersagen TRAINING & TEST
Y_predict_train_l1 = lasso.predict(X_train)
Y_predict_test_l1 = lasso.predict(X_test)
# Kennzahlen TRAINING & TEST
r2_train_l1 = r2_score(Y_train, Y_predict_train_l1)
r2_test_l1 = r2_score(Y_test, Y_predict_test_l1)
result_lasso = f"LASSO REGRESSION\nR2 Training: {r2_train_l1:.2f}\nR2 Test: {r2_test_l1:.2f}"
result = result_linear + result_ridge + result_lasso
return result
else:
return "Bitte eine Datei hochladen!"
io1 = gr.Interface(
title = 'L1 & L2 Regularization',
description = '''Demo APP''',
fn=regularization,
inputs=[gr.File(label="Upload Data"),
gr.Text(label="L2 Regularization (Ridge)", placeholder=" L2 eingeben"),
gr.Text(label="L1 Regularization (Lasso)", placeholder="L1 eingeben")],
outputs=gr.Textbox(lines=50, label='R-Squared (Coefficient of Determination)'),
api_name="Regularization"
)
io1.launch()