RICHERGIRL commited on
Commit
69d007c
·
verified ·
1 Parent(s): 8acfdb2

Update train_model.py

Browse files
Files changed (1) hide show
  1. train_model.py +15 -43
train_model.py CHANGED
@@ -1,61 +1,33 @@
1
- # -*- coding: utf-8 -*-
2
- """train_model.py
3
-
4
- Automatically generated by Colab.
5
-
6
- Original file is located at
7
- https://colab.research.google.com/drive/1Oq8iUsTw8pCPeB1qLiaYLCI6QRVjO05g
8
- """
9
-
10
- pip install joblib
11
-
12
  import pandas as pd
13
- import numpy as np
14
  from sklearn.ensemble import RandomForestClassifier
15
  from sklearn.preprocessing import LabelEncoder
16
- from sklearn.model_selection import train_test_split
17
  import joblib
18
  import os
19
 
20
- # Sample dataset (replace with your actual data)
21
  data = {
22
- 'face_shape': ['Oval', 'Round', 'Square', 'Oval', 'Round', 'Square'] * 10,
23
- 'skin_tone': ['Fair', 'Medium', 'Dark', 'Medium', 'Dark', 'Fair'] * 10,
24
- 'face_size': ['Small', 'Medium', 'Large', 'Medium', 'Large', 'Small'] * 10,
25
- 'mask_style': ['Glitter', 'Animal', 'Floral', 'Animal', 'Glitter', 'Floral'] * 10
26
  }
27
  df = pd.DataFrame(data)
28
 
29
- # Initialize LabelEncoders
30
  encoders = {
31
- 'face_shape': LabelEncoder().fit(df['face_shape']),
32
- 'skin_tone': LabelEncoder().fit(df['skin_tone']),
33
- 'face_size': LabelEncoder().fit(df['face_size']),
34
- 'mask_style': LabelEncoder().fit(df['mask_style'])
35
  }
36
 
37
- # Encode features
38
- X = pd.DataFrame({
39
- 'face_shape': encoders['face_shape'].transform(df['face_shape']),
40
- 'skin_tone': encoders['skin_tone'].transform(df['skin_tone']),
41
- 'face_size': encoders['face_size'].transform(df['face_size'])
42
- })
43
  y = encoders['mask_style'].transform(df['mask_style'])
44
 
45
- # Train-test split
46
- X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
47
 
48
- # Train Random Forest
49
- model = RandomForestClassifier(n_estimators=100, random_state=42)
50
- model.fit(X_train, y_train)
51
-
52
- # Create model directory
53
  os.makedirs('model', exist_ok=True)
54
-
55
- # Save model and encoders
56
  joblib.dump(model, 'model/random_forest.pkl')
57
- joblib.dump(encoders, 'model/label_encoders.pkl')
58
-
59
- print("Model trained and saved successfully!")
60
- print(f"Test Accuracy: {model.score(X_test, y_test):.2f}")
61
-
 
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')