import numpy as np from joblib import dump, load import pandas as pd import gradio as gr import warnings import shap as shap model = load('IFEnerg__7200s_26_04_2022_22_10alle_variablen_nachJonas_ohneprozetc_top4HZ.joblib') #turning the arguments into a numpy array def energie(Stahlsorte, Halbzeug_Typ, TotalDuration_min, IFTotalTime_min, IFPowerOnTime_min, IFTappingWeight, IFTappingTemperature, C, Si, Mn, P, S, Co, Cr, Mo, V, W, Ni, Nb, Al, RS02010_000004_FE_MO, RS02010_000001_FE_CRCARBURE, RS02010_000016_FE_CR006, RS02010_000003_FE_SI, RS02010_000013_FE_MANGANCARBURE, RS02010_000005_FE_V80, RS02010_000018_KOHLE, RS02010_000007_FE_W75_80, RS02020_000044_CHROMPAKETE, RS02020_000001_HACKSCHROTT, RS02020_000072_HACKSCHROTT, RS02020_000034_2343, RS02020_000013_2367, RS02020_000029_2344, RS02020_000048_2343, RS02020_000072_Manganarm, RS02020_000021_2365, RS02020_000016_2379, RS02020_000063_2345, RS02020_000513_2367, RS02020_000534_2343, RS02020_000043_Hackschrott, RS02020_000109_2379, RS02020_000006_CHROM_SCHROTT, RS02020_000049_2344, RS02020_000112_CR_SCHROTT, RS02020_000114_CHROM_SCHROTT, RS02020_000041_2379, RS02020_000563_2345, RS02020_000516_2379, RS02020_000564_2895, RS02020_000044_ChromSchrott, RS02020_000004_3343, RS02020_000002_3355, RS02020_000073_3343, RS02020_000043_KUPOLSCHROTT, RS02030_000437_4112, RS02030_000031_2343, RS02030_000039_2367, RS02030_000032_2344, RS02030_000043_2379, RS02030_000052_UMSCHMELZBLOCK, RS02030_000072_2601, RS02030_000163_2897, RS02030_000071_4112, RS02030_000175_4192, RS02030_000326_4197, RS02030_000269_2360, RS02030_000121_2895, RS02030_000087_2695, RS02030_000161_4034, RS02030_000164_2345, RS02030_000035_2360, RS02030_000171_4125, RS02030_000063_2519, RS02030_000009_2080, RS02030_000300_2897, RS02030_000034_2357, RS02030_000033_2345, RS02030_000038_2365, RS02030_000393_4057, RS02030_000281_2360, RS02030_000389_4021, RS02030_000045_2390, RS02030_000345_2419, RS02030_000415_2389, RS02030_000051_4125, RS02030_000144_3343, RS02030_000148_3355, RS02030_000145_3344, RS02030_000141_3333, RS02030_000179_3344): x = np.array([Stahlsorte, Halbzeug_Typ, TotalDuration_min, IFTotalTime_min, IFPowerOnTime_min, IFTappingWeight, IFTappingTemperature, C, Si, Mn, P, S, Co, Cr, Mo, V, W, Ni, Nb, Al, RS02010_000004_FE_MO, RS02010_000001_FE_CRCARBURE, RS02010_000016_FE_CR006, RS02010_000003_FE_SI, RS02010_000013_FE_MANGANCARBURE, RS02010_000005_FE_V80, RS02010_000018_KOHLE, RS02010_000007_FE_W75_80, RS02020_000044_CHROMPAKETE, RS02020_000001_HACKSCHROTT, RS02020_000072_HACKSCHROTT, RS02020_000034_2343, RS02020_000013_2367, RS02020_000029_2344, RS02020_000048_2343, RS02020_000072_Manganarm, RS02020_000021_2365, RS02020_000016_2379, RS02020_000063_2345, RS02020_000513_2367, RS02020_000534_2343, RS02020_000043_Hackschrott, RS02020_000109_2379, RS02020_000006_CHROM_SCHROTT, RS02020_000049_2344, RS02020_000112_CR_SCHROTT, RS02020_000114_CHROM_SCHROTT, RS02020_000041_2379, RS02020_000563_2345, RS02020_000516_2379, RS02020_000564_2895, RS02020_000044_ChromSchrott, RS02020_000004_3343, RS02020_000002_3355, RS02020_000073_3343, RS02020_000043_KUPOLSCHROTT, RS02030_000437_4112, RS02030_000031_2343, RS02030_000039_2367, RS02030_000032_2344, RS02030_000043_2379, RS02030_000052_UMSCHMELZBLOCK, RS02030_000072_2601, RS02030_000163_2897, RS02030_000071_4112, RS02030_000175_4192, RS02030_000326_4197, RS02030_000269_2360, RS02030_000121_2895, RS02030_000087_2695, RS02030_000161_4034, RS02030_000164_2345, RS02030_000035_2360, RS02030_000171_4125, RS02030_000063_2519, RS02030_000009_2080, RS02030_000300_2897, RS02030_000034_2357, RS02030_000033_2345, RS02030_000038_2365, RS02030_000393_4057, RS02030_000281_2360, RS02030_000389_4021, RS02030_000045_2390, RS02030_000345_2419, RS02030_000415_2389, RS02030_000051_4125, RS02030_000144_3343, RS02030_000148_3355, RS02030_000145_3344, RS02030_000141_3333, RS02030_000179_3344]) prediction = model.predict(x.reshape(1, -1)) predictionround = np.around(prediction, decimals=0) return predictionround title = "Optirodig - ML v0.19" description = """
Prognose des Energieverbrauches (kWh) beim Schmelzen von Stählen im Induktionsofen mit maschinellem Lernen.
Bzgl. der Stahlsorte und dem Halbzeug-Typ gelten folgende Labels für die Auswahl:
Halbzeug-Typ (Label)
1220V = 0 | 1320V67 = 1 | 1420V677 = 2 | 2T = 3 Stahlsorte (Label)
Warmarbeitsstahl: 1.2343 = 0 | Werkzeugstahl: 1.2379 = 1 | Schnellarbeitsstahl: 1.3343 = 2
""" outputs = gr.outputs.Textbox(type="auto", label='Prognostizierter Energieverbrauch in kWh') #gradio.inputs.Dropdown(self, choices, type="value", default=None, label=None, optional=False) input_Stahlsorte = gr.inputs.Dropdown(["0", "1", "2"], type="index", default='1', label='Welche Stahlsorte soll gegossen werden (Label)?', optional=False) input_halbzeug = gr.inputs.Dropdown(['0','1','2','3'], type="index", default='0', label='Welcher Halbzeug-Typ soll gegossen werden (Label)?', optional=False) input_TotalDuration_min = gr.inputs.Number(127, 'TotalDuration_min [min]', optional=False) input_IFTotalTime_min = gr.inputs.Number(98, 'IFTotalTime_min [min]', optional=False) input_IFPowerOnTime_min = gr.inputs.Number(80, 'IFPowerOnTime_min [min]', optional=False) input_IFTappingWeight = gr.inputs.Number(6735, 'IFTappingWeight [kg]', optional=False) input_IFTappingTemperature = gr.inputs.Number(1525, 'IFTappingTemperature [°C]', optional=False) input_C = gr.inputs.Number(1.5, 'C [%]', optional=False) input_Si = gr.inputs.Number(0.4, 'Si [%]', optional=False) input_Mn = gr.inputs.Number(0.45, 'Mn [%]', optional=False) input_P = gr.inputs.Number(0.02, 'P [%]', optional=False) input_S = gr.inputs.Number(0.1, 'S [%]', optional=False) input_Co = gr.inputs.Number(0.02, 'Co [%]', optional=False) input_Cr = gr.inputs.Number(11.2, 'Cr [%]', optional=False) input_Mo = gr.inputs.Number(0.71, 'Mo [%]', optional=False) input_V = gr.inputs.Number(0.67, 'V [%]', optional=False) input_W = gr.inputs.Number(0.05, 'W [%]', optional=False) input_Ni = gr.inputs.Number(0.2, 'Ni [%]', optional=False) input_Nb = gr.inputs.Number(0.01, 'Nb [%]', optional=False) input_Al = gr.inputs.Number(0.02, 'Al [%]', optional=False) input_02010_000004_FE_MO = gr.inputs.Number(0, '02010_000004_FE_MO [kg]', optional=False) input_02010_000001_FE_CRCARBURE = gr.inputs.Number(0, '02010_000001_FE_CRCARBURE [kg]', optional=False) input_02010_000016_FE_CR006 = gr.inputs.Number(0, '02010_000016_FE_CR006 [kg]', optional=False) input_02010_000003_FE_SI = gr.inputs.Number(0, '02010_000003_FE_SI [kg]', optional=False) input_02010_000013_FE_MANGANCARBURE = gr.inputs.Number(0, '02010_000013_FE_MANGANCARBURE [kg]', optional=False) input_02010_000005_FE_V80 = gr.inputs.Number(0, '02010_000005_FE_V80 [kg]', optional=False) input_02010_000018_KOHLE = gr.inputs.Number(0, '02010_000018_KOHLE [kg]', optional=False) input_02010_000007_FE_W75_80 = gr.inputs.Number(0, '02010_000007_FE_W75_80 [kg]', optional=False) input_02020_000044_CHROMPAKETE = gr.inputs.Number(0, '02020_000044_CHROMPAKETE [kg]', optional=False) input_02020_000001_HACKSCHROTT = gr.inputs.Number(0, '02020_000001_HACKSCHROTT [kg]', optional=False) input_02020_000072_HACKSCHROTT = gr.inputs.Number(0, '02020_000072_HACKSCHROTT [kg]', optional=False) input_02020_000034_2343 = gr.inputs.Number(0, '02020_000034_2343 [kg]', optional=False) input_02020_000013_2367 = gr.inputs.Number(0, '02020_000013_2367 [kg]', optional=False) input_02020_000029_2344 = gr.inputs.Number(0, '02020_000029_2344 [kg]', optional=False) input_02020_000048_2343 = gr.inputs.Number(0, '02020_000048_2343 [kg]', optional=False) input_02020_000072_Manganarm = gr.inputs.Number(0, '02020_000072_Manganarm [kg]', optional=False) input_02020_000021_2365 = gr.inputs.Number(0, '02020_000021_2365 [kg]', optional=False) input_02020_000016_2379 = gr.inputs.Number(0, '02020_000016_2379 [kg]', optional=False) input_02020_000063_2345 = gr.inputs.Number(0, '02020_000063_2345 [kg]', optional=False) input_02020_000513_2367 = gr.inputs.Number(0, '02020_000513_2367 [kg]', optional=False) input_02020_000534_2343 = gr.inputs.Number(0, '02020_000534_2343 [kg]', optional=False) input_02020_000043_Hackschrott = gr.inputs.Number(0, '02020_000043_Hackschrott [kg]', optional=False) input_02020_000109_2379 = gr.inputs.Number(0, '02020_000109_2379 [kg]', optional=False) input_02020_000006_CHROM_SCHROTT = gr.inputs.Number(0, '02020_000006_CHROM_SCHROTT [kg]', optional=False) input_02020_000049_2344 = gr.inputs.Number(0, '02020_000049_2344 [kg]', optional=False) input_02020_000112_CR_SCHROTT = gr.inputs.Number(0, '02020_000112_CR_SCHROTT [kg]', optional=False) input_02020_000114_CHROM_SCHROTT = gr.inputs.Number(0, '02020_000114_CHROM_SCHROTT [kg]', optional=False) input_02020_000041_2379 = gr.inputs.Number(0, '02020_000041_2379 [kg]', optional=False) input_02020_000563_2345 = gr.inputs.Number(0, '02020_000563_2345 [kg]', optional=False) input_02020_000516_2379 = gr.inputs.Number(0, '02020_000516_2379 [kg]', optional=False) input_02020_000564_2895 = gr.inputs.Number(0, '02020_000564_2895 [kg]', optional=False) input_02020_000044_ChromSchrott = gr.inputs.Number(0, '02020_000044_ChromSchrott [kg]', optional=False) input_02020_000004_3343 = gr.inputs.Number(0, '02020_000004_3343 [kg]', optional=False) input_02020_000002_3355 = gr.inputs.Number(0, '02020_000002_3355 [kg]', optional=False) input_02020_000073_3343 = gr.inputs.Number(0, '02020_000073_3343 [kg]', optional=False) input_02020_000043_KUPOLSCHROTT = gr.inputs.Number(0, '02020_000043_KUPOLSCHROTT [kg]', optional=False) input_02030_000437_4112 = gr.inputs.Number(0, '02030_000437_4112 [kg]', optional=False) input_02030_000031_2343 = gr.inputs.Number(0, '02030_000031_2343 [kg]', optional=False) input_02030_000039_2367 = gr.inputs.Number(0, '02030_000039_2367 [kg]', optional=False) input_02030_000032_2344 = gr.inputs.Number(0, '02030_000032_2344 [kg]', optional=False) input_02030_000043_2379 = gr.inputs.Number(0, '02030_000043_2379 [kg]', optional=False) input_02030_000052_UMSCHMELZBLOCK = gr.inputs.Number(0, '02030_000052_UMSCHMELZBLOCK [kg]', optional=False) input_02030_000072_2601 = gr.inputs.Number(0, '02030_000072_2601 [kg]', optional=False) input_02030_000163_2897 = gr.inputs.Number(0, '02030_000163_2897 [kg]', optional=False) input_02030_000071_4112 = gr.inputs.Number(0, '02030_000071_4112 [kg]', optional=False) input_02030_000175_4192 = gr.inputs.Number(0, '02030_000175_4192 [kg]', optional=False) input_02030_000326_4197 = gr.inputs.Number(0, '02030_000326_4197 [kg]', optional=False) input_02030_000269_2360 = gr.inputs.Number(0, '02030_000269_2360 [kg]', optional=False) input_02030_000121_2895 = gr.inputs.Number(0, '02030_000121_2895 [kg]', optional=False) input_02030_000087_2695 = gr.inputs.Number(0, '02030_000087_2695 [kg]', optional=False) input_02030_000161_4034 = gr.inputs.Number(0, '02030_000161_4034 [kg]', optional=False) input_02030_000164_2345 = gr.inputs.Number(0, '02030_000164_2345 [kg]', optional=False) input_02030_000035_2360 = gr.inputs.Number(0, '02030_000035_2360 [kg]', optional=False) input_02030_000171_4125 = gr.inputs.Number(0, '02030_000171_4125 [kg]', optional=False) input_02030_000063_2519 = gr.inputs.Number(0, '02030_000063_2519 [kg]', optional=False) input_02030_000009_2080 = gr.inputs.Number(0, '02030_000009_2080 [kg]', optional=False) input_02030_000300_2897 = gr.inputs.Number(0, '02030_000300_2897 [kg]', optional=False) input_02030_000034_2357 = gr.inputs.Number(0, '02030_000034_2357 [kg]', optional=False) input_02030_000033_2345 = gr.inputs.Number(0, '02030_000033_2345 [kg]', optional=False) input_02030_000038_2365 = gr.inputs.Number(0, '02030_000038_2365 [kg]', optional=False) input_02030_000393_4057 = gr.inputs.Number(0, '02030_000393_4057 [kg]', optional=False) input_02030_000281_2360 = gr.inputs.Number(0, '02030_000281_2360 [kg]', optional=False) input_02030_000389_4021 = gr.inputs.Number(0, '02030_000389_4021 [kg]', optional=False) input_02030_000045_2390 = gr.inputs.Number(0, '02030_000045_2390 [kg]', optional=False) input_02030_000345_2419 = gr.inputs.Number(0, '02030_000345_2419 [kg]', optional=False) input_02030_000415_2389 = gr.inputs.Number(0, '02030_000415_2389 [kg]', optional=False) input_02030_000051_4125 = gr.inputs.Number(0, '02030_000051_4125 [kg]', optional=False) input_02030_000144_3343 = gr.inputs.Number(0, '02030_000144_3343 [kg]', optional=False) input_02030_000148_3355 = gr.inputs.Number(0, '02030_000148_3355 [kg]', optional=False) input_02030_000145_3344 = gr.inputs.Number(0, '02030_000145_3344 [kg]', optional=False) input_02030_000141_3333 = gr.inputs.Number(0, '02030_000141_3333 [kg]', optional=False) input_02030_000179_3344 = gr.inputs.Number(0, '02030_000179_3344 [kg]', optional=False) app = gr.Interface(fn=energie, inputs=[input_Stahlsorte, input_halbzeug, input_TotalDuration_min, input_IFTotalTime_min, input_IFPowerOnTime_min, input_IFTappingWeight, input_IFTappingTemperature, input_C, input_Si, input_Mn, input_P, input_S, input_Co, input_Cr, input_Mo, input_V, input_W, input_Ni, input_Nb, input_Al, input_02010_000004_FE_MO, input_02010_000001_FE_CRCARBURE, input_02010_000016_FE_CR006, input_02010_000003_FE_SI, input_02010_000013_FE_MANGANCARBURE, input_02010_000005_FE_V80, input_02010_000018_KOHLE, input_02010_000007_FE_W75_80, input_02020_000044_CHROMPAKETE, input_02020_000001_HACKSCHROTT, input_02020_000072_HACKSCHROTT, input_02020_000034_2343, input_02020_000013_2367, input_02020_000029_2344, input_02020_000048_2343, input_02020_000072_Manganarm, input_02020_000021_2365, input_02020_000016_2379, input_02020_000063_2345, input_02020_000513_2367, input_02020_000534_2343, input_02020_000043_Hackschrott, input_02020_000109_2379, input_02020_000006_CHROM_SCHROTT, input_02020_000049_2344, input_02020_000112_CR_SCHROTT, input_02020_000114_CHROM_SCHROTT, input_02020_000041_2379, input_02020_000563_2345, input_02020_000516_2379, input_02020_000564_2895, input_02020_000044_ChromSchrott, input_02020_000004_3343, input_02020_000002_3355, input_02020_000073_3343, input_02020_000043_KUPOLSCHROTT, input_02030_000437_4112, input_02030_000031_2343, input_02030_000039_2367, input_02030_000032_2344, input_02030_000043_2379, input_02030_000052_UMSCHMELZBLOCK, input_02030_000072_2601, input_02030_000163_2897, input_02030_000071_4112, input_02030_000175_4192, input_02030_000326_4197, input_02030_000269_2360, input_02030_000121_2895, input_02030_000087_2695, input_02030_000161_4034, input_02030_000164_2345, input_02030_000035_2360, input_02030_000171_4125, input_02030_000063_2519, input_02030_000009_2080, input_02030_000300_2897, input_02030_000034_2357, input_02030_000033_2345, input_02030_000038_2365, input_02030_000393_4057, input_02030_000281_2360, input_02030_000389_4021, input_02030_000045_2390, input_02030_000345_2419, input_02030_000415_2389, input_02030_000051_4125, input_02030_000144_3343, input_02030_000148_3355, input_02030_000145_3344, input_02030_000141_3333, input_02030_000179_3344 ], outputs=outputs, live=True, layout="horizontal", interpretation='default', num_shap=2.0, theme='huggingface', title=title, description=description) #layout (str) - Layout of input and output panels. "horizontal" arranges them as two columns of equal height, "unaligned" arranges them as two columns of unequal height, and "vertical" arranges them vertically. app.launch(share=False)