RICHERGIRL commited on
Commit
7fed2a1
·
verified ·
1 Parent(s): 69d007c

Update train_model.py

Browse files
Files changed (1) hide show
  1. train_model.py +40 -14
train_model.py CHANGED
@@ -1,33 +1,59 @@
1
  # train_model.py
2
  import pandas as pd
 
3
  from sklearn.ensemble import RandomForestClassifier
4
  from sklearn.preprocessing import LabelEncoder
 
5
  import joblib
6
  import os
7
 
8
- # 1. Load/Sample Data
9
  data = {
10
- 'face_shape': ['Oval', 'Round', 'Square']*10,
11
- 'skin_tone': ['Fair', 'Medium', 'Dark']*10,
12
- 'face_size': ['Small', 'Medium', 'Large']*10,
13
- 'mask_style': ['StyleA', 'StyleB', 'StyleC']*10
14
  }
15
  df = pd.DataFrame(data)
16
 
17
- # 2. Create and Save Encoders
18
  encoders = {
19
- col: LabelEncoder().fit(df[col].unique())
20
- for col in ['face_shape', 'skin_tone', 'face_size', 'mask_style']
 
 
21
  }
22
 
23
- # 3. Train Model
24
- X = pd.DataFrame({col: encoders[col].transform(df[col]) for col in encoders if col != 'mask_style'})
 
 
 
 
25
  y = encoders['mask_style'].transform(df['mask_style'])
26
 
27
- model = RandomForestClassifier()
28
- model.fit(X, y)
 
 
29
 
30
- # 4. Save to model/ directory
 
 
 
 
 
 
 
 
 
 
 
 
31
  os.makedirs('model', exist_ok=True)
32
  joblib.dump(model, 'model/random_forest.pkl')
33
- joblib.dump(encoders, 'model/label_encoders.pkl')
 
 
 
 
 
1
  # train_model.py
2
  import pandas as pd
3
+ import numpy as np
4
  from sklearn.ensemble import RandomForestClassifier
5
  from sklearn.preprocessing import LabelEncoder
6
+ from sklearn.model_selection import train_test_split
7
  import joblib
8
  import os
9
 
10
+ # 1. Create Sample Dataset (REPLACE WITH YOUR ACTUAL DATA)
11
  data = {
12
+ 'face_shape': ['Oval', 'Round', 'Square'] * 50,
13
+ 'skin_tone': ['Fair', 'Medium', 'Dark'] * 50,
14
+ 'face_size': ['Small', 'Medium', 'Large'] * 50,
15
+ 'mask_style': ['Glitter', 'Animal', 'Floral'] * 50
16
  }
17
  df = pd.DataFrame(data)
18
 
19
+ # 2. Initialize Label Encoders
20
  encoders = {
21
+ 'face_shape': LabelEncoder().fit(df['face_shape'].unique()),
22
+ 'skin_tone': LabelEncoder().fit(df['skin_tone'].unique()),
23
+ 'face_size': LabelEncoder().fit(df['face_size'].unique()),
24
+ 'mask_style': LabelEncoder().fit(df['mask_style'].unique())
25
  }
26
 
27
+ # 3. Encode Features
28
+ X = pd.DataFrame({
29
+ 'face_shape': encoders['face_shape'].transform(df['face_shape']),
30
+ 'skin_tone': encoders['skin_tone'].transform(df['skin_tone']),
31
+ 'face_size': encoders['face_size'].transform(df['face_size'])
32
+ })
33
  y = encoders['mask_style'].transform(df['mask_style'])
34
 
35
+ # 4. Train/Test Split
36
+ X_train, X_test, y_train, y_test = train_test_split(
37
+ X, y, test_size=0.2, random_state=42
38
+ )
39
 
40
+ # 5. Train Model
41
+ model = RandomForestClassifier(
42
+ n_estimators=100,
43
+ max_depth=5,
44
+ random_state=42
45
+ )
46
+ model.fit(X_train, y_train)
47
+
48
+ # 6. Evaluate
49
+ print(f"Training Accuracy: {model.score(X_train, y_train):.2f}")
50
+ print(f"Test Accuracy: {model.score(X_test, y_test):.2f}")
51
+
52
+ # 7. Save to model/ Directory
53
  os.makedirs('model', exist_ok=True)
54
  joblib.dump(model, 'model/random_forest.pkl')
55
+ joblib.dump(encoders, 'model/label_encoders.pkl')
56
+
57
+ print("\nModel and encoders saved to model/ directory!")
58
+ print("Face Shape Classes:", encoders['face_shape'].classes_)
59
+ print("Mask Style Classes:", encoders['mask_style'].classes_)