Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| from sklearn.linear_model import LogisticRegression | |
| from sklearn.preprocessing import LabelEncoder | |
| from sklearn.metrics import accuracy_score | |
| class FactoryPredictor: | |
| def __init__(self): | |
| self.model = LogisticRegression() | |
| self.le_diagnosis = LabelEncoder() | |
| self.temperature = 0 | |
| self.pressure = 0 | |
| def train(self, csv_train='train.csv', csv_test='test.csv'): | |
| # Load the train data | |
| data_train = pd.read_csv(csv_train) | |
| # Encode categorical variables | |
| data_train['diagnosis'] = self.le_diagnosis.fit_transform(data_train['diagnosis']) | |
| # Split features and target | |
| X_train = data_train[ | |
| ['temperature', 'pressure']] | |
| y_train = data_train['diagnosis'] | |
| # Train the model | |
| self.model.fit(X_train, y_train) | |
| # Load the test data | |
| data_test = pd.read_csv(csv_test) | |
| # Encode categorical variables | |
| data_test['diagnosis'] = self.le_diagnosis.fit_transform(data_test['diagnosis']) | |
| # Split features and target | |
| X_test = data_test[ | |
| ['temperature', 'pressure']] | |
| y_test = data_test['diagnosis'] | |
| # Evaluate the model | |
| y_pred = self.model.predict(X_test) | |
| accuracy = accuracy_score(y_test, y_pred) | |
| print(f"Model accuracy: {accuracy:.2f}") | |
| def inform_temperature(self, temperature): | |
| self.temperature = temperature | |
| if self.pressure > 0: | |
| return self.predict(self.temperature, self.pressure) | |
| return 'N' | |
| def inform_pressure(self, pressure): | |
| self.pressure = pressure | |
| if self.temperature > 0: | |
| return self.predict(self.temperature, self.pressure) | |
| return 'N' | |
| def predict(self, temperature, pressure): | |
| # Create a DataFrame with the same feature names as the training data | |
| input_data = pd.DataFrame( | |
| [[temperature, pressure]], | |
| columns=['temperature', 'pressure']) | |
| # Make prediction | |
| prediction = self.model.predict(input_data) | |
| # Decode prediction | |
| diagnosis = self.le_diagnosis.inverse_transform(prediction)[0] | |
| return diagnosis | |