![]() |
Program that calculates buildtime. - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: Data Science (https://python-forum.io/forum-44.html) +--- Thread: Program that calculates buildtime. (/thread-42040.html) |
Program that calculates buildtime. - xzenon - Apr-27-2024 Hi I am trying to make a program to calculate build time with old data from previous build. But its not working as intended. When i put in lesser values i get higher build time results. And when i put in higher values i get lower build times. I cant really understand why. Can anyone help me with this? The code so far import pandas as pd from sklearn.linear_model import LinearRegression from sklearn.preprocessing import StandardScaler import os import math os.system(f'mode con: cols={119} lines={20}') # Läs in historisk data från CSV-filen (ersätt med din faktiska filväg) historical_data = pd.read_csv("historical_switch_gear_data.csv") def main(): # Extrahera relevanta kolumner X = historical_data[["Length", "Height", "CopperLength", "Breakers", "EarthBreakers", "elniva"]] y = historical_data["BuildTimeHours"] # Skala datan (valfritt, men rekommenderas för regression) scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # Skapa en linjär regressionsmodell model = LinearRegression() model.fit(X_scaled, y) #El nivå print("Nivå på el:") print("1 - Utplintning av Huvudbrytare brytare") print("2 - ljusbågsvakt och utplintning av brytare") print("3 - ljusbågsvakt, utlösnings kretsar, utplintning") print("4 - ljusbågsvakt, utlösnings kretsar, utplintning, mätning och kommunikation") print("5 - ljusbågsvakt, utlösnings kretsar, utplintning, kommunikation och strömmätning med trafo") print("6 - ljusbågsvakt, utlösnings kretsar, till kretsar på HB, utplintning, mätning och kommunikation") print("7 - ljusbågsvakt, utlösnings kretsar, till kretsar på HB och utmatning, utplintning, mätning och kommunikation") print("8 - ljusbågsvakt, utlösnings kretsar, jorfelsmätning, utplintning, mätning och kommunikation") print("9 - ljusbågsvakt, utlösnings kretsar, jorfelsmätning, utplintning, mätning, kommunikation och larmtablå") print("10 - ljusbågsvakt, utlösnings kretsar, till kretsar på HB och utmatning, utplintning, kommunikation och jordfelsmätning") print("11 - Special") print("") # Användarinmatning för det nya ställverket new_data = pd.DataFrame({ "Length": [float(input("Ange längd (modul): "))], "Height": [float(input("Ange höjd (modul): "))], "CopperLength": [float(input("Ange kopparlängd (meter): "))], "Breakers": [int(input("Ange antal brytare: "))], "EarthBreakers": [int(input("Ange antal jordomkopplare: "))], "elniva": [int(input("Ange nivån på el/utrustning: "))] }) # Skala den nya datan new_data_scaled = scaler.transform(new_data) # Förutsäg byggtiden för det nya ställverket predicted_build_time = model.predict(new_data_scaled) print(f"Förväntad byggtid för det nya ställverket: {math.ceil(predicted_build_time[0])} timmar") main()The csv file data Length,Height,CopperLength,Breakers,EarthBreakers,BuildTimeHours,elniva 50,12,380,22,2,820,4 21,12,300,22,0,123,3 40,12,280,34,2,490,4 25,12,140,22,2,445,4 13,11,102,7,0,160,3 25,12,380,20,2,497,4 73,30,540,26,4,1800,11 54,22,450,70,4,670,4 63,31,516,41,2,568,11 RE: Program that calculates buildtime. - deanhystad - Apr-27-2024 I ran your program using the data from you post and get fairly good results when I enter the same data as new data. import pandas as pd from io import StringIO from sklearn.linear_model import LinearRegression data = StringIO(""" Length,Height,CopperLength,Breakers,EarthBreakers,BuildTimeHours,elniva 50,12,380,22,2,820,4 21,12,300,22,0,123,3 40,12,280,34,2,490,4 25,12,140,22,2,445,4 13,11,102,7,0,160,3 25,12,380,20,2,497,4 73,30,540,26,4,1800,11 54,22,450,70,4,670,4 63,31,516,41,2,568,11 """) data = pd.read_csv(data) data = data[["Length", "Height", "CopperLength", "Breakers", "EarthBreakers", "elniva", "BuildTimeHours"]] x = data.drop(["BuildTimeHours"], axis=1) y = data["BuildTimeHours"] model = LinearRegression() model.fit(x, y) for d, estimate in zip(data.values, model.predict(x)): print(d, estimate) I think the problem is that you don't have enough information in your data to properly train your model. For example, the model things EarthBreakers are really, really expensive timewise. When you cut down on those, the build hours plummet. But maybe build time goes up when you have more earth breakers because you also have more copper on those jobs.
RE: Program that calculates buildtime. - xzenon - Apr-28-2024 Yea thats one problem. And its not like a couple of houres it a lot between 1 and 0 earthbreakers. from real life experiance its around 8 houres for one earthbreaker. RE: Program that calculates buildtime. - xzenon - Apr-28-2024 (Apr-28-2024, 10:37 AM)RileyBowen Wrote: Can I ask a question, because I am having some similar doubts? yea sure |