ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ನಲ್ಲಿ ದೃಢವಾದ ಮತ್ತು ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಪೈಪ್ಲೈನ್ಗಳನ್ನು ರಚಿಸಲು ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಒಂದು ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ. ನಿಮ್ಮ ಡೇಟಾ ಪ್ರಿಪ್ರೊಸೆಸಿಂಗ್ ಮತ್ತು ಫೀಚರ್ ಇಂಜಿನಿಯರಿಂಗ್ ವರ್ಕ್ಫ್ಲೋಗಳನ್ನು ಸುಧಾರಿಸಿ.
ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಪೈಪ್ಲೈನ್: ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅಭಿವೃದ್ಧಿ
ದೃಢವಾದ ಮತ್ತು ನಿರ್ವಹಿಸಬಲ್ಲ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಪೈಪ್ಲೈನ್ಗಳು ಅತ್ಯಗತ್ಯ. ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ (sklearn) ಈ ಪೈಪ್ಲೈನ್ಗಳನ್ನು ರಚಿಸಲು ಒಂದು ಶಕ್ತಿಯುತ ಚೌಕಟ್ಟನ್ನು ಒದಗಿಸುತ್ತದೆ. ಯಾವುದೇ ಉತ್ತಮ ಪೈಪ್ಲೈನ್ನ ಪ್ರಮುಖ ಅಂಶವೆಂದರೆ ಕಸ್ಟಮ್ ಡೇಟಾ ರೂಪಾಂತರಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಸಾಮರ್ಥ್ಯ. ಈ ಲೇಖನವು ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ನಲ್ಲಿ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳ ಅಭಿವೃದ್ಧಿಯನ್ನು ಪರಿಶೋಧಿಸುತ್ತದೆ, ಇದು ವಿಶ್ವಾದ್ಯಂತದ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳು ಮತ್ತು ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಇಂಜಿನಿಯರ್ಗಳಿಗೆ ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ.
ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಪೈಪ್ಲೈನ್ ಎಂದರೇನು?
ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಪೈಪ್ಲೈನ್ ಎನ್ನುವುದು ಡೇಟಾ ಸಂಸ್ಕರಣಾ ಘಟಕಗಳ ಒಂದು ಅನುಕ್ರಮವಾಗಿದೆ, ಇವುಗಳನ್ನು ಒಟ್ಟಿಗೆ ಜೋಡಿಸಲಾಗುತ್ತದೆ. ಈ ಘಟಕಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಇವುಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ:
- ಡೇಟಾ ಕ್ಲೀನಿಂಗ್: ಕಾಣೆಯಾದ ಮೌಲ್ಯಗಳು, ಔಟ್ಲೈಯರ್ಗಳು ಮತ್ತು ಅಸಂಗತತೆಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು.
- ಫೀಚರ್ ಇಂಜಿನಿಯರಿಂಗ್: ಮಾದರಿ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಫೀಚರ್ಗಳಿಂದ ಹೊಸ ಫೀಚರ್ಗಳನ್ನು ರಚಿಸುವುದು.
- ಫೀಚರ್ ಸೆಲೆಕ್ಷನ್: ಮಾದರಿಗೆ ಅತ್ಯಂತ ಸೂಕ್ತವಾದ ಫೀಚರ್ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು.
- ಮಾದರಿ ತರಬೇತಿ: ಸಿದ್ಧಪಡಿಸಿದ ಡೇಟಾದ ಮೇಲೆ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಮಾದರಿಯನ್ನು ತರಬೇತಿ ಮಾಡುವುದು.
- ಮಾದರಿ ಮೌಲ್ಯಮಾಪನ: ತರಬೇತಿ ಪಡೆದ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು.
ಪೈಪ್ಲೈನ್ ಬಳಸುವುದರಿಂದ ಹಲವಾರು ಪ್ರಯೋಜನಗಳಿವೆ, ಅವುಗಳೆಂದರೆ:
- ಪುನರುತ್ಪಾದನೆ: ಒಂದೇ ರೀತಿಯ ಡೇಟಾ ಸಂಸ್ಕರಣಾ ಹಂತಗಳನ್ನು ಸ್ಥಿರವಾಗಿ ಅನ್ವಯಿಸಲಾಗಿದೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು.
- ಮಾಡ್ಯುಲಾರಿಟಿ: ಡೇಟಾ ಸಂಸ್ಕರಣಾ ವರ್ಕ್ಫ್ಲೋವನ್ನು ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ಘಟಕಗಳಾಗಿ ವಿಭಜಿಸುವುದು.
- ನಿರ್ವಹಣೆ: ಡೇಟಾ ಸಂಸ್ಕರಣಾ ವರ್ಕ್ಫ್ಲೋವನ್ನು ನವೀಕರಿಸಲು ಮತ್ತು ನಿರ್ವಹಿಸಲು ಸುಲಭಗೊಳಿಸುವುದು.
- ಸರಳೀಕೃತ ನಿಯೋಜನೆ: ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಮಾದರಿಗಳನ್ನು ನಿಯೋಜಿಸುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸುಗಮಗೊಳಿಸುವುದು.
ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳು ಏಕೆ?
ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ ಸಾಮಾನ್ಯ ಡೇಟಾ ಸಂಸ್ಕರಣಾ ಕಾರ್ಯಗಳಿಗಾಗಿ ವ್ಯಾಪಕ ಶ್ರೇಣಿಯ ಅಂತರ್ನಿರ್ಮಿತ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಅನೇಕ ನೈಜ-ಪ್ರಪಂಚದ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ, ನಿಮ್ಮ ಡೇಟಾ ಮತ್ತು ಸಮಸ್ಯೆಗೆ ನಿರ್ದಿಷ್ಟವಾದ ಕಸ್ಟಮ್ ಡೇಟಾ ರೂಪಾಂತರಗಳನ್ನು ನೀವು ನಿರ್ವಹಿಸಬೇಕಾಗುತ್ತದೆ. ಇಲ್ಲಿಯೇ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳು ಬರುತ್ತವೆ. ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳು ನಿಮ್ಮ ಕಸ್ಟಮ್ ಡೇಟಾ ಸಂಸ್ಕರಣಾ ತರ್ಕವನ್ನು ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ಘಟಕಗಳಾಗಿ ಸಂಯೋಜಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತವೆ, ಇವುಗಳನ್ನು ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ ಪೈಪ್ಲೈನ್ಗೆ ಮನಬಂದಂತೆ ಸಂಯೋಜಿಸಬಹುದು.
ಉದಾಹರಣೆಗೆ, ನೀವು ಜಾಗತಿಕ ಇ-ಕಾಮರ್ಸ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ನಿಂದ ಗ್ರಾಹಕರ ಡೇಟಾದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೀರಿ ಎಂದು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಐತಿಹಾಸಿಕ ವಿನಿಮಯ ದರಗಳ ಆಧಾರದ ಮೇಲೆ ವಹಿವಾಟು ಕರೆನ್ಸಿಗಳನ್ನು ಸಾಮಾನ್ಯ ಕರೆನ್ಸಿಗೆ (ಉದಾ., USD) ಪರಿವರ್ತಿಸುವ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅನ್ನು ನೀವು ರಚಿಸಬೇಕಾಗಬಹುದು. ಅಥವಾ, ವಿವಿಧ ದೇಶಗಳಲ್ಲಿನ IoT ಸಾಧನಗಳಿಂದ ಸಂವೇದಕ ಡೇಟಾವನ್ನು ಒಳಗೊಂಡಿರುವ ಸನ್ನಿವೇಶವನ್ನು ಪರಿಗಣಿಸಿ; ಸ್ಥಳೀಯ ಸಮಯ ವಲಯಗಳು ಮತ್ತು ಮಾಪನ ಘಟಕಗಳ ಆಧಾರದ ಮೇಲೆ ಡೇಟಾವನ್ನು ಸಾಮಾನ್ಯೀಕರಿಸಲು ನೀವು ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅನ್ನು ನಿರ್ಮಿಸಬಹುದು.
ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅನ್ನು ನಿರ್ಮಿಸುವುದು
ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ನಲ್ಲಿ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅನ್ನು ರಚಿಸಲು, ನೀವು sklearn.base.BaseEstimator ಮತ್ತು sklearn.base.TransformerMixin ನಿಂದ ಇನ್ಹೆರಿಟ್ ಆಗುವ ಒಂದು ಕ್ಲಾಸ್ ಅನ್ನು ರಚಿಸಬೇಕು. ನಿಮ್ಮ ಕ್ಲಾಸ್ ಎರಡು ವಿಧಾನಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕು:
fit(self, X, y=None): ಈ ವಿಧಾನವು ರೂಪಾಂತರಕ್ಕೆ ಅಗತ್ಯವಾದ ಯಾವುದೇ ಪ್ಯಾರಾಮೀಟರ್ಗಳನ್ನು ಕಲಿಯುತ್ತದೆ. ಅನೇಕ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಈ ವಿಧಾನವು ಕೇವಲselfಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.transform(self, X): ಈ ವಿಧಾನವು ಡೇಟಾಗೆ ರೂಪಾಂತರವನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ.
ಪ್ರತಿ ಫೀಚರ್ಗೆ ಸ್ಥಿರ ಮೌಲ್ಯವನ್ನು ಸೇರಿಸುವ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ನ ಮೂಲ ಉದಾಹರಣೆ ಇಲ್ಲಿದೆ:
from sklearn.base import BaseEstimator, TransformerMixin
import numpy as np
class AddConstantTransformer(BaseEstimator, TransformerMixin):
def __init__(self, constant=1):
self.constant = constant
def fit(self, X, y=None):
return self
def transform(self, X):
return X + self.constant
ಈ ಉದಾಹರಣೆಯನ್ನು ವಿಭಜಿಸೋಣ:
- ಅಗತ್ಯವಿರುವ ಲೈಬ್ರರಿಗಳನ್ನು ಆಮದು ಮಾಡಿ:
sklearn.baseನಿಂದBaseEstimator,TransformerMixinಮತ್ತು ಸಂಖ್ಯಾತ್ಮಕ ಕಾರ್ಯಾಚರಣೆಗಳಿಗಾಗಿnumpy. - ಕ್ಲಾಸ್ ಅನ್ನು ವಿವರಿಸಿ:
AddConstantTransformerಕ್ಲಾಸ್BaseEstimatorಮತ್ತುTransformerMixinನಿಂದ ಇನ್ಹೆರಿಟ್ ಆಗುತ್ತದೆ. - ಕನ್ಸ್ಟ್ರಕ್ಟರ್ (
__init__): ಈ ವಿಧಾನವು ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅನ್ನುconstantಮೌಲ್ಯದೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸುತ್ತದೆ (ಡೀಫಾಲ್ಟ್ 1). fitವಿಧಾನ: ಈ ವಿಧಾನವು ಕೇವಲselfಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಈ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಡೇಟಾದಿಂದ ಯಾವುದೇ ಪ್ಯಾರಾಮೀಟರ್ಗಳನ್ನು ಕಲಿಯುವ ಅಗತ್ಯವಿಲ್ಲ.transformವಿಧಾನ: ಈ ವಿಧಾನವು ಇನ್ಪುಟ್ ಡೇಟಾXನಲ್ಲಿನ ಪ್ರತಿಯೊಂದು ಅಂಶಕ್ಕೂconstantಮೌಲ್ಯವನ್ನು ಸೇರಿಸುತ್ತದೆ.
ಬಳಕೆಯ ಉದಾಹರಣೆ
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
X = np.array([[1, 2], [3, 4], [5, 6]])
pipeline = Pipeline([
('scaler', StandardScaler()),
('add_constant', AddConstantTransformer(constant=2))
])
X_transformed = pipeline.fit_transform(X)
print(X_transformed)
ಈ ಉದಾಹರಣೆಯು ಪೈಪ್ಲೈನ್ನಲ್ಲಿ AddConstantTransformer ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ. ಮೊದಲು, StandardScaler ಬಳಸಿ ಡೇಟಾವನ್ನು ಸ್ಕೇಲ್ ಮಾಡಲಾಗುತ್ತದೆ, ಮತ್ತು ನಂತರ ನಮ್ಮ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಬಳಸಿ ಸ್ಥಿರಾಂಕವನ್ನು ಸೇರಿಸಲಾಗುತ್ತದೆ.
ಸುಧಾರಿತ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅಭಿವೃದ್ಧಿ
ಈಗ, ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಕೆಲವು ಹೆಚ್ಚು ಸುಧಾರಿತ ಸನ್ನಿವೇಶಗಳು ಮತ್ತು ತಂತ್ರಗಳನ್ನು ಅನ್ವೇಷಿಸೋಣ.
ವರ್ಗೀಯ ಫೀಚರ್ಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು
ವರ್ಗೀಯ ಫೀಚರ್ಗಳು ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ನಲ್ಲಿ ಒಂದು ಸಾಮಾನ್ಯ ಡೇಟಾ ಪ್ರಕಾರವಾಗಿದೆ. ನೀವು ವರ್ಗೀಯ ಫೀಚರ್ಗಳ ಮೇಲೆ ವಿವಿಧ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳನ್ನು ರಚಿಸಬಹುದು, ಉದಾಹರಣೆಗೆ ಒನ್-ಹಾಟ್ ಎನ್ಕೋಡಿಂಗ್, ಲೇಬಲ್ ಎನ್ಕೋಡಿಂಗ್, ಅಥವಾ ಫೀಚರ್ ಹ್ಯಾಶಿಂಗ್.
ನಿರ್ದಿಷ್ಟ ಕಾಲಮ್ಗಳ ಮೇಲೆ ಒನ್-ಹಾಟ್ ಎನ್ಕೋಡಿಂಗ್ ನಿರ್ವಹಿಸುವ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ನ ಉದಾಹರಣೆ ಇಲ್ಲಿದೆ:
import pandas as pd
from sklearn.preprocessing import OneHotEncoder
class CategoricalEncoder(BaseEstimator, TransformerMixin):
def __init__(self, categorical_features=None):
self.categorical_features = categorical_features
self.encoder = None
def fit(self, X, y=None):
if self.categorical_features is None:
self.categorical_features = X.select_dtypes(include=['object']).columns
self.encoder = OneHotEncoder(handle_unknown='ignore', sparse_output=False)
self.encoder.fit(X[self.categorical_features])
return self
def transform(self, X):
X_encoded = self.encoder.transform(X[self.categorical_features])
X_encoded = pd.DataFrame(X_encoded, index=X.index, columns=self.encoder.get_feature_names_out(self.categorical_features))
X = X.drop(columns=self.categorical_features)
X = pd.concat([X, X_encoded], axis=1)
return X
ಈ ಉದಾಹರಣೆಯಲ್ಲಿ:
- ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ವರ್ಗೀಯ ಕಾಲಮ್ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಗುರುತಿಸುತ್ತದೆ (ನಿರ್ದಿಷ್ಟಪಡಿಸದಿದ್ದರೆ).
- ಇದು ಎನ್ಕೋಡಿಂಗ್ ಮಾಡಲು ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ನ
OneHotEncoderಅನ್ನು ಬಳಸುತ್ತದೆ. - ಇದು
handle_unknown='ignore'ಬಳಸಿ ಅಜ್ಞಾತ ವರ್ಗಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. - ಎನ್ಕೋಡ್ ಮಾಡಿದ ಫೀಚರ್ಗಳನ್ನು ಮೂಲ ಡೇಟಾಫ್ರೇಮ್ಗೆ ಮರಳಿ ಜೋಡಿಸಲಾಗುತ್ತದೆ.
ಕಳೆದುಹೋದ ಮೌಲ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು
ಕಳೆದುಹೋದ ಮೌಲ್ಯಗಳು ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಡೇಟಾಸೆಟ್ಗಳಲ್ಲಿ ಮತ್ತೊಂದು ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಯಾಗಿದೆ. ಮೀನ್ ಇಂಪ್ಯುಟೇಶನ್, ಮೀಡಿಯನ್ ಇಂಪ್ಯುಟೇಶನ್, ಅಥವಾ ಮೋಡ್ ಇಂಪ್ಯುಟೇಶನ್ನಂತಹ ವಿವಿಧ ತಂತ್ರಗಳನ್ನು ಬಳಸಿ ಕಳೆದುಹೋದ ಮೌಲ್ಯಗಳನ್ನು ತುಂಬಲು ನೀವು ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳನ್ನು ರಚಿಸಬಹುದು.
ಮೀಡಿಯನ್ ಬಳಸಿ ಕಳೆದುಹೋದ ಮೌಲ್ಯಗಳನ್ನು ತುಂಬುವ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ನ ಉದಾಹರಣೆ ಇಲ್ಲಿದೆ:
from sklearn.impute import SimpleImputer
class MissingValueImputer(BaseEstimator, TransformerMixin):
def __init__(self, strategy='median', missing_values=np.nan):
self.strategy = strategy
self.missing_values = missing_values
self.imputer = None
def fit(self, X, y=None):
self.imputer = SimpleImputer(strategy=self.strategy, missing_values=self.missing_values)
self.imputer.fit(X)
return self
def transform(self, X):
return self.imputer.transform(X)
ಈ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಇಂಪ್ಯುಟೇಶನ್ ಮಾಡಲು ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ನ SimpleImputer ಅನ್ನು ಬಳಸುತ್ತದೆ. ಇದು ನಿಮಗೆ ಇಂಪ್ಯುಟೇಶನ್ ತಂತ್ರ ಮತ್ತು ಕಳೆದುಹೋದ ಮೌಲ್ಯಗಳನ್ನು ಪ್ರತಿನಿಧಿಸಲು ಬಳಸುವ ಮೌಲ್ಯವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.
ಫೀಚರ್ ಸ್ಕೇಲಿಂಗ್ ಮತ್ತು ನಾರ್ಮಲೈಸೇಶನ್
ಅನೇಕ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ಗಳಿಗೆ ಫೀಚರ್ ಸ್ಕೇಲಿಂಗ್ ಮತ್ತು ನಾರ್ಮಲೈಸೇಶನ್ ಪ್ರಮುಖ ಪ್ರಿಪ್ರೊಸೆಸಿಂಗ್ ಹಂತಗಳಾಗಿವೆ. ವಿಭಿನ್ನ ಸ್ಕೇಲಿಂಗ್ ಮತ್ತು ನಾರ್ಮಲೈಸೇಶನ್ ತಂತ್ರಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ನೀವು ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳನ್ನು ರಚಿಸಬಹುದು.
ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ StandardScaler ಮತ್ತು MinMaxScaler ನಂತಹ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳನ್ನು ಒದಗಿಸಿದರೂ, ನಿರ್ದಿಷ್ಟ ಡೇಟಾ ವಿತರಣೆಗಳಿಗಾಗಿ ನಿಮಗೆ ಕಸ್ಟಮ್ ಸ್ಕೇಲರ್ ಬೇಕಾಗಬಹುದು. ಉದಾಹರಣೆಗೆ, ನೀವು ತುಂಬಾ ವಕ್ರವಾದ ವಿತರಣೆಯೊಂದಿಗೆ ಡೇಟಾವನ್ನು ಹೊಂದಿದ್ದರೆ, PowerTransformer (ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ನಲ್ಲಿಯೂ ಲಭ್ಯವಿದೆ) ಹೆಚ್ಚು ಸೂಕ್ತವಾಗಿರುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಅದರ ಪ್ಯಾರಾಮೀಟರ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಮತ್ತು ಅದನ್ನು ನಿಮ್ಮ ಪೈಪ್ಲೈನ್ಗೆ ಮನಬಂದಂತೆ ಸಂಯೋಜಿಸಲು ನೀವು ಅದನ್ನು ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ನಲ್ಲಿ ಸಂಯೋಜಿಸಬಹುದು.
from sklearn.preprocessing import PowerTransformer
class SkewedDataTransformer(BaseEstimator, TransformerMixin):
def __init__(self, method='yeo-johnson'):
self.method = method
self.transformer = None
def fit(self, X, y=None):
self.transformer = PowerTransformer(method=self.method)
self.transformer.fit(X)
return self
def transform(self, X):
return self.transformer.transform(X)
ಬಹು ರೂಪಾಂತರಗಳನ್ನು ಸಂಯೋಜಿಸುವುದು
ಕೆಲವೊಮ್ಮೆ, ನೀವು ಒಂದೇ ಡೇಟಾಗೆ ಬಹು ರೂಪಾಂತರಗಳನ್ನು ಅನ್ವಯಿಸಬೇಕಾಗಬಹುದು. ನೀವು ಬಹು ರೂಪಾಂತರಗಳನ್ನು ಒಂದೇ ಹಂತದಲ್ಲಿ ಸಂಯೋಜಿಸುವ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅನ್ನು ರಚಿಸಬಹುದು. ಇದು ನಿಮ್ಮ ಪೈಪ್ಲೈನ್ ಅನ್ನು ಸರಳಗೊಳಿಸಲು ಮತ್ತು ಅದನ್ನು ಹೆಚ್ಚು ಓದಬಲ್ಲಂತೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
ಒನ್-ಹಾಟ್ ಎನ್ಕೋಡಿಂಗ್ ಮತ್ತು ಕಳೆದುಹೋದ ಮೌಲ್ಯಗಳ ಇಂಪ್ಯುಟೇಶನ್ ಅನ್ನು ಸಂಯೋಜಿಸುವ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ನ ಉದಾಹರಣೆ ಇಲ್ಲಿದೆ:
class CombinedTransformer(BaseEstimator, TransformerMixin):
def __init__(self, categorical_features=None, missing_value_strategy='median'):
self.categorical_features = categorical_features
self.missing_value_strategy = missing_value_strategy
self.categorical_encoder = None
self.missing_value_imputer = None
def fit(self, X, y=None):
self.categorical_encoder = CategoricalEncoder(categorical_features=self.categorical_features)
self.missing_value_imputer = MissingValueImputer(strategy=self.missing_value_strategy)
self.categorical_encoder.fit(X)
self.missing_value_imputer.fit(X)
return self
def transform(self, X):
X = self.categorical_encoder.transform(X)
X = self.missing_value_imputer.transform(X)
return X
ಈ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಹಿಂದಿನ ಉದಾಹರಣೆಗಳಿಂದ CategoricalEncoder ಮತ್ತು MissingValueImputer ಅನ್ನು ಬಳಸಿ ಒನ್-ಹಾಟ್ ಎನ್ಕೋಡಿಂಗ್ ಮತ್ತು ಕಳೆದುಹೋದ ಮೌಲ್ಯಗಳ ಇಂಪ್ಯುಟೇಶನ್ ಎರಡನ್ನೂ ಒಂದೇ ಹಂತದಲ್ಲಿ ನಿರ್ವಹಿಸುತ್ತದೆ.
ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅಭಿವೃದ್ಧಿಗೆ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು
ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವಾಗ ಅನುಸರಿಸಬೇಕಾದ ಕೆಲವು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು ಇಲ್ಲಿವೆ:
- ಸರಳವಾಗಿಡಿ: ಪ್ರತಿ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಒಂದೇ, ಉತ್ತಮವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಕಾರ್ಯವನ್ನು ನಿರ್ವಹಿಸಬೇಕು.
- ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದಂತೆ ಮಾಡಿ: ನಿಮ್ಮ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ಸಾಮಾನ್ಯವಾಗುವಂತೆ ವಿನ್ಯಾಸಗೊಳಿಸಿ, ಇದರಿಂದ ಅವುಗಳನ್ನು ವಿವಿಧ ಪೈಪ್ಲೈನ್ಗಳಲ್ಲಿ ಮರುಬಳಕೆ ಮಾಡಬಹುದು.
- ಎಡ್ಜ್ ಕೇಸ್ಗಳನ್ನು ನಿರ್ವಹಿಸಿ: ನಿಮ್ಮ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಕಳೆದುಹೋದ ಮೌಲ್ಯಗಳು, ಔಟ್ಲೈಯರ್ಗಳು ಮತ್ತು ಅನಿರೀಕ್ಷಿತ ಡೇಟಾ ಪ್ರಕಾರಗಳಂತಹ ಎಡ್ಜ್ ಕೇಸ್ಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಪರಿಗಣಿಸಿ.
- ಯುನಿಟ್ ಟೆಸ್ಟ್ಗಳನ್ನು ಬರೆಯಿರಿ: ನಿಮ್ಮ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಯುನಿಟ್ ಟೆಸ್ಟ್ಗಳನ್ನು ಬರೆಯಿರಿ.
- ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ದಾಖಲಿಸಿ: ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ದಾಖಲಿಸಿ, ಇದರಿಂದ ಇತರರು ನಿಮ್ಮ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬಹುದು.
ನೈಜ-ಪ್ರಪಂಚದ ಉದಾಹರಣೆಗಳು
ಕೆಲವು ಹೆಚ್ಚು ನೈಜ-ಪ್ರಪಂಚದ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳ ಉದಾಹರಣೆಗಳನ್ನು ಅನ್ವೇಷಿಸೋಣ.
ದಿನಾಂಕ ಫೀಚರ್ ಇಂಜಿನಿಯರಿಂಗ್
ಸಮಯ-ಸರಣಿ ಡೇಟಾದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ದಿನಾಂಕಗಳಿಂದ ವಾರದ ದಿನ, ವರ್ಷದ ತಿಂಗಳು, ಅಥವಾ ವರ್ಷದ ಕ್ವಾರ್ಟರ್ನಂತಹ ಫೀಚರ್ಗಳನ್ನು ಹೊರತೆಗೆಯುವುದು ಸಾಮಾನ್ಯವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ. ಈ ಕಾರ್ಯವನ್ನು ನಿರ್ವಹಿಸಲು ನೀವು ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅನ್ನು ರಚಿಸಬಹುದು.
class DateFeatureExtractor(BaseEstimator, TransformerMixin):
def __init__(self, date_columns=None):
self.date_columns = date_columns
def fit(self, X, y=None):
return self
def transform(self, X):
for col in self.date_columns:
X[col + '_dayofweek'] = X[col].dt.dayofweek
X[col + '_month'] = X[col].dt.month
X[col + '_quarter'] = X[col].dt.quarter
return X
ಈ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ದಿನಾಂಕ ಕಾಲಮ್ಗಳಿಂದ ವಾರದ ದಿನ, ತಿಂಗಳು ಮತ್ತು ಕ್ವಾರ್ಟರ್ ಅನ್ನು ಹೊರತೆಗೆಯುತ್ತದೆ.
ಪಠ್ಯ ಫೀಚರ್ ಇಂಜಿನಿಯರಿಂಗ್
ಪಠ್ಯ ಡೇಟಾದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, TF-IDF ಅಥವಾ ವರ್ಡ್ ಎಂಬೆಡಿಂಗ್ಗಳಂತಹ ತಂತ್ರಗಳನ್ನು ಬಳಸಿ ಫೀಚರ್ ಇಂಜಿನಿಯರಿಂಗ್ ಮಾಡುವುದು ಸಾಮಾನ್ಯವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ. ಈ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಲು ನೀವು ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳನ್ನು ರಚಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಬಹು ಭಾಷೆಗಳಲ್ಲಿ ಗ್ರಾಹಕರ ವಿಮರ್ಶೆಗಳನ್ನು ಪರಿಗಣಿಸಿ. TF-IDF ವೆಕ್ಟರೈಸೇಶನ್ ಅನ್ವಯಿಸುವ ಮೊದಲು ವಿಮರ್ಶೆಗಳನ್ನು ಇಂಗ್ಲಿಷ್ಗೆ ಭಾಷಾಂತರಿಸುವ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ನಿಮಗೆ ಬೇಕಾಗಬಹುದು.
ಗಮನಿಸಿ: ಭಾಷಾಂತರ ಸೇವೆಗಳಿಗೆ ಸಾಮಾನ್ಯವಾಗಿ API ಕೀಗಳು ಬೇಕಾಗುತ್ತವೆ ಮತ್ತು ವೆಚ್ಚಗಳು ತಗಲಬಹುದು. ಈ ಉದಾಹರಣೆಯು ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ನ ರಚನೆಯ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುತ್ತದೆ.
# Note: This example requires a translation service (e.g., Google Translate API) and API key
# from googletrans import Translator # Example library (install with pip install googletrans==4.0.0-rc1)
class TextFeatureExtractor(BaseEstimator, TransformerMixin):
def __init__(self, text_column, language='en'):
self.text_column = text_column
self.language = language
# self.translator = Translator() # Instantiate translator (requires setup)
def fit(self, X, y=None):
return self
def transform(self, X):
# Example: Translate to English (replace with actual translation logic)
# X[self.text_column + '_translated'] = X[self.text_column].apply(lambda text: self.translator.translate(text, dest=self.language).text)
# Dummy translation for demonstration purposes
X[self.text_column + '_translated'] = X[self.text_column].apply(lambda text: "Translated: " + text)
# Apply TF-IDF or other text vectorization techniques here
return X
ಭೌಗೋಳಿಕ ಫೀಚರ್ ಇಂಜಿನಿಯರಿಂಗ್
ಭೌಗೋಳಿಕ ಡೇಟಾದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ಹತ್ತಿರದ ನಗರಕ್ಕೆ ಇರುವ ದೂರ, ಜನಸಂಖ್ಯಾ ಸಾಂದ್ರತೆ, ಅಥವಾ ಭೂ ಬಳಕೆಯ ಪ್ರಕಾರದಂತಹ ಫೀಚರ್ಗಳನ್ನು ಹೊರತೆಗೆಯಲು ನೀವು ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳನ್ನು ರಚಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಜಾಗತಿಕವಾಗಿ ರಿಯಲ್ ಎಸ್ಟೇಟ್ ಬೆಲೆಗಳನ್ನು ವಿಶ್ಲೇಷಿಸುವುದನ್ನು ಪರಿಗಣಿಸಿ. ಅಕ್ಷಾಂಶ ಮತ್ತು ರೇಖಾಂಶವನ್ನು ಆಧರಿಸಿ ಬಾಹ್ಯ API ಗಳನ್ನು ಬಳಸಿ ನಿರ್ದಿಷ್ಟ ಸ್ಥಳದ ಸರಾಸರಿ ಆದಾಯ ಮಟ್ಟವನ್ನು ಹಿಂಪಡೆಯುವ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅನ್ನು ನೀವು ರಚಿಸಬಹುದು.
ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಲೈಬ್ರರಿಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸುವುದು
ಇತರ ಪೈಥಾನ್ ಲೈಬ್ರರಿಗಳಿಂದ ಕಾರ್ಯವನ್ನು ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ ಪೈಪ್ಲೈನ್ಗೆ ಸಂಯೋಜಿಸಲು ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳನ್ನು ಬಳಸಬಹುದು. ಇದು ನಿಮಗೆ ಇತರ ಲೈಬ್ರರಿಗಳ ಶಕ್ತಿಯನ್ನು ಬಳಸಿಕೊಳ್ಳಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ ಮತ್ತು ಅದೇ ಸಮಯದಲ್ಲಿ ಪೈಪ್ಲೈನ್ನ ರಚನೆ ಮತ್ತು ಸಂಘಟನೆಯಿಂದ ಪ್ರಯೋಜನ ಪಡೆಯುತ್ತದೆ.
ಉದಾಹರಣೆಗೆ, ನೀವು ನಿಮ್ಮ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಪೈಪ್ಲೈನ್ಗೆ ಅಸಂಗತತೆ ಪತ್ತೆ, ಸಮಯ ಸರಣಿ ಮುನ್ಸೂಚನೆ, ಅಥವಾ ಚಿತ್ರ ಸಂಸ್ಕರಣೆಗಾಗಿ ಲೈಬ್ರರಿಯನ್ನು ಸಂಯೋಜಿಸಲು ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅನ್ನು ಬಳಸಬಹುದು.
ತೀರ್ಮಾನ
ಸ್ಕೈಕಿಟ್-ಲರ್ನ್ನಲ್ಲಿ ದೃಢವಾದ ಮತ್ತು ನಿರ್ವಹಿಸಬಲ್ಲ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಪೈಪ್ಲೈನ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳು ಒಂದು ಶಕ್ತಿಯುತ ಸಾಧನವಾಗಿದೆ. ನಿಮ್ಮ ಕಸ್ಟಮ್ ಡೇಟಾ ಸಂಸ್ಕರಣಾ ತರ್ಕವನ್ನು ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ಘಟಕಗಳಾಗಿ ಸಂಯೋಜಿಸುವ ಮೂಲಕ, ನೀವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, ನವೀಕರಿಸಲು ಮತ್ತು ನಿಯೋಜಿಸಲು ಸುಲಭವಾದ ಪೈಪ್ಲೈನ್ಗಳನ್ನು ರಚಿಸಬಹುದು. ನಿಮ್ಮ ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳು ವಿಶ್ವಾಸಾರ್ಹ ಮತ್ತು ನಿರ್ವಹಿಸಬಲ್ಲವು ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಅನುಸರಿಸಲು, ಯುನಿಟ್ ಟೆಸ್ಟ್ಗಳನ್ನು ಬರೆಯಲು ಮತ್ತು ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ದಾಖಲಿಸಲು ಮರೆಯದಿರಿ. ನೀವು ನಿಮ್ಮ ಮೆಷಿನ್ ಲರ್ನಿಂಗ್ ಕೌಶಲ್ಯಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುತ್ತಿದ್ದಂತೆ, ಜಗತ್ತಿನಾದ್ಯಂತ ಸಂಕೀರ್ಣ ಮತ್ತು ವೈವಿಧ್ಯಮಯ ನೈಜ-ಪ್ರಪಂಚದ ಸಮಸ್ಯೆಗಳನ್ನು ನಿಭಾಯಿಸಲು ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ ಪರಿಣತಿ ಹೊಂದುವುದು ಅಮೂಲ್ಯವಾಗಿರುತ್ತದೆ. ಅಂತರರಾಷ್ಟ್ರೀಯ ಇ-ಕಾಮರ್ಸ್ಗಾಗಿ ಕರೆನ್ಸಿ ಪರಿವರ್ತನೆಗಳನ್ನು ನಿರ್ವಹಿಸುವುದರಿಂದ ಹಿಡಿದು ವಿಶ್ವಾದ್ಯಂತ IoT ಸಾಧನಗಳಿಂದ ಸಂವೇದಕ ಡೇಟಾವನ್ನು ಸಂಸ್ಕರಿಸುವವರೆಗೆ, ಕಸ್ಟಮ್ ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ಗಳು ನಿಮ್ಮ ಡೇಟಾ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ಗಳ ನಿರ್ದಿಷ್ಟ ಅಗತ್ಯಗಳಿಗೆ ಅನುಗುಣವಾಗಿ ನಿಮ್ಮ ಪೈಪ್ಲೈನ್ಗಳನ್ನು ಸಿದ್ಧಪಡಿಸಲು ನಿಮಗೆ ಅಧಿಕಾರ ನೀಡುತ್ತವೆ.