-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodel_train.py
More file actions
129 lines (104 loc) · 4.42 KB
/
Copy pathmodel_train.py
File metadata and controls
129 lines (104 loc) · 4.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
from sklearn.linear_model import LogisticRegression, LinearRegression
from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor
from sklearn.svm import SVC, SVR
from sklearn.metrics import accuracy_score, mean_squared_error
import joblib
import pandas as pd
# Fonction pour charger les données
def load_data():
X_train = pd.read_csv('X_train.csv')
y_train = pd.read_csv('y_train.csv')
X_test = pd.read_csv('X_test.csv')
y_test = pd.read_csv('y_test.csv')
return X_train, y_train, X_test, y_test
# Fonction pour déterminer le type de problème
def determine_problem_type(y):
unique_values = y.nunique().values[0]
if unique_values == 2:
return 'classification'
else:
return 'regression'
# Fonction pour obtenir le modèle sélectionné
def get_model(problem_type):
models = {
'classification': [
('Logistic Regression', LogisticRegression),
('Random Forest Classifier', RandomForestClassifier),
('Support Vector Classifier', SVC)
],
'regression': [
('Linear Regression', LinearRegression),
('Random Forest Regressor', RandomForestRegressor),
('Support Vector Regressor', SVR)
]
}
print(f"Je detecte un problème de type {problem_type}.")
print("Modèles disponibles:")
for i, (name, _) in enumerate(models[problem_type]):
print(f"{i + 1}. {name}")
choice = input("Choisissez un modèle en tapant le numéro qui lui corresponds: ")
if choice == '':
model_name, model_instance = models[problem_type][0] # Default model
else:
model_name, model_instance = models[problem_type][int(choice) - 1]
print(f"Using {model_name}.")
return model_name, model_instance() # Return both name and instance
# Fonction pour évaluer le modèle
def evaluate_model(model, X_test, y_test, problem_type):
y_pred = model.predict(X_test)
if problem_type == 'classification':
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
else:
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)
# Fonction principale
def main():
X_train, y_train, X_test, y_test = load_data()
problem_type = determine_problem_type(y_train)
while True:
model_name, model_instance = get_model(problem_type)
model_instance.fit(X_train, y_train.values.ravel())
evaluate_model(model_instance, X_test, y_test, problem_type)
save_choice = input(f"Voulez-vous enregistrer le modèle {model_name}? (o/n): ")
if save_choice.lower() == 'o':
save_model(model_instance, model_name) # Enregistre le modèle
display_example_code(model_name, problem_type) # Affiche un exemple de code
retry = input("Voulez-vous essayer un autre modèle ? (o/n): ")
if retry.lower() != 'o':
break
# Fonction pour enregistrer le modèle
def save_model(model, model_name):
filename = f'{model_name}_model.sav'
joblib.dump(model, filename)
print(f"Modèle enregistré sous le nom {filename}.")
# Fonction pour afficher un exemple de code
def display_example_code(model_name, problem_type):
example_code = f"""# Exemple de code pour charger et interroger le modèle {model_name}
from sklearn.externals import joblib
# charger le modele
filename = '{model_name}_model.sav'
loaded_model = joblib.load(filename)
# Exemple de données d'entrée
input_data = [...] # Remplacez par vos datas
# Interroger le modèle
prediction = loaded_model.predict([input_data])
print('Prediction:', prediction)"""
print("\nVous pouvez utiliser le code suivant pour charger et interroger le modèle:")
print(example_code)
# Fonction principale
def main():
X_train, y_train, X_test, y_test = load_data()
problem_type = determine_problem_type(y_train)
while True:
model_name, model_instance = get_model(problem_type)
model_instance.fit(X_train, y_train.values.ravel())
evaluate_model(model_instance, X_test, y_test, problem_type)
save_model(model_instance, model_name) # Enregistre le modèle
display_example_code(model_name, problem_type) # Affiche un exemple de code
retry = input("Voulez-vous essayer un autre modèle? (o/n): ")
if retry.lower() != 'o':
break
# Déclencheur pour exécuter le script
if __name__ == "__main__":
main()