naughtondale's picture
Update app.py
5e2b08e
raw
history blame contribute delete
No virus
3.27 kB
import os
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
import gradio as gr
import io
def train_and_predict(data, Qwater, Qgas, BHP, WHP, WHT, Tsep, Psep, Choke_in):
# Load data from the uploaded CSV
data = pd.read_csv(io.BytesIO(data))
# Define input features and target variable
input_features = ['Qwater', 'Qgas', 'BHP', 'WHP', 'WHT', 'Tsep', 'Psep', 'Choke_in']
target_variable = 'Qoil'
# Split the dataset into training and testing sets
X = data[input_features]
y = data[target_variable]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Train the random forest regression model
rf = RandomForestRegressor(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
# Fine-tune the model
rf_tuned = RandomForestRegressor(n_estimators=200, max_depth=10, random_state=42)
rf_tuned.fit(X_train, y_train)
# Make prediction
new_input = [[Qwater, Qgas, BHP, WHP, WHT, Tsep, Psep, Choke_in]]
predicted_qoil = rf_tuned.predict(new_input)
return f"The number of barrels produced per day given these inputs is {predicted_qoil[0]}"
iface = gr.Interface(
fn=train_and_predict,
inputs=[gr.inputs.File(type="bytes"), "number", "number", "number", "number", "number", "number", "number", "number"],
outputs="text",
theme = gr.themes.Monochrome(
primary_hue="blue",
secondary_hue="blue",
neutral_hue="blue",
),
title="Oil Flow Production & Optimization Application",
description="""This application is the interface of a machine learning model (utilizing the Random Forest algorithm) that allows Oil and Gas executives with no coding knowledge or experience to enter inputs related to oil production and predict the number of barrels that will be produced per day given those inputs. The executive can engage in scenario planning to optimize oil flow by tweaking/changing various input values to see what would result in greater oil flow. The executive can also ask questions about the model or get explanations of the inputs and/or results via the attached GPT 3.5 chatbot. STEPS: Upload the oil production dataset. Enter the planned or anticipated input values (Qwater, Qgas, BHP, WHP, WHT, Tsep, Psep, Choke_in) and then click Submit. The model will initiate and complete its training and validation in the background using the dataset provided and then return the output value (Qoil) to the user.'
Input Features:
Qwater: Water Flow Rate
Qgas: Gas Flow Rate
BHP: Bottom Hole Pressure
WHP: Wellhead Pressure
WHT: Wellhead Temperature
Tsep: Separator Temperature
Psep: Separator Pressure
Choke_in: Choke Valve Opening
Target Variable:
Qoil: Oil Flow Rate (measured in barrels per day)
Ask questions about the meaning of these values using the application's AI chatbot here: https://aitechproducts.com/oilflowbot.html)
Go back to: <a href="https://aitechproducts.com/oil-gas">Oil & Gas Products</a>""")
iface.launch(auth=(os.environ['USERNAME1'],os.environ['PASSWORD1']))