ಡೈಮೆನ್ಶನಲಿಟಿ ಕಡಿತಕ್ಕಾಗಿ Scikit-learn ನ ಫೀಚರ್ ಆಯ್ಕೆ ತಂತ್ರಗಳ ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ, ಹೆಚ್ಚು ಸಮರ್ಥ ಮತ್ತು ದೃಢವಾದ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸಲು ಜಾಗತಿಕ ಡೇಟಾ ವಿಜ್ಞಾನ ಅಭ್ಯಾಸಿಗಳಿಗೆ ಶಕ್ತಿ ನೀಡುತ್ತದೆ.
Scikit-learn ಫೀಚರ್ ಆಯ್ಕೆ: ಜಾಗತಿಕ ಡೇಟಾಸೆಟ್ಗಳಿಗಾಗಿ ಡೈಮೆನ್ಶನಲಿಟಿ ಕಡಿತದಲ್ಲಿ ಪರಿಣತಿ
ಡೇಟಾದ ನಿರಂತರವಾಗಿ ವಿಸ್ತರಿಸುತ್ತಿರುವ ಬ್ರಹ್ಮಾಂಡದಲ್ಲಿ, ಅತಿಯಾದ ವೈಶಿಷ್ಟ್ಯಗಳ ಪ್ರಮಾಣವು ಅತ್ಯಂತ ಅತ್ಯಾಧುನಿಕ ಯಂತ್ರ ಕಲಿಕೆ ಮಾದರಿಗಳನ್ನು ಸಹ ಮುಳುಗಿಸಬಹುದು. ಈ ವಿದ್ಯಮಾನ, ಸಾಮಾನ್ಯವಾಗಿ "ಆಯಾಮಗಳ ದುರ್ಭಿಕ್ಷ" ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಇದು ಹೆಚ್ಚಿದ ಲೆಕ್ಕಾಚಾರದ ವೆಚ್ಚಗಳು, ಕಡಿಮೆಯಾದ ಮಾದರಿ ನಿಖರತೆ ಮತ್ತು ವ್ಯಾಖ್ಯಾನಕ್ಕೆ ಕಡಿಮೆಯಾದ ಸಾಮರ್ಥ್ಯಕ್ಕೆ ಕಾರಣವಾಗಬಹುದು. ಅದೃಷ್ಟವಶಾತ್, ಫೀಚರ್ ಆಯ್ಕೆ ಮತ್ತು ಡೈಮೆನ್ಶನಲಿಟಿ ಕಡಿತ ತಂತ್ರಗಳು ಶಕ್ತಿಯುತ ಪರಿಹಾರಗಳನ್ನು ನೀಡುತ್ತವೆ. Scikit-learn, ಪೈಥಾನ್ನ ಯಂತ್ರ ಕಲಿಕೆ ಪರಿಸರ ವ್ಯವಸ್ಥೆಯ ಮೂಲಾಧಾರ, ಈ ಸವಾಲುಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಎದುರಿಸಲು ಸಾಧನಗಳ ಶ್ರೀಮಂತ ಸೂಟ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದು ಪ್ರಪಂಚದಾದ್ಯಂತದ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳಿಗೆ ಅನಿವಾರ್ಯ ಸಂಪನ್ಮೂಲವಾಗಿದೆ.
ಈ ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ Scikit-learn ನ ಫೀಚರ್ ಆಯ್ಕೆ ಸಾಮರ್ಥ್ಯಗಳ ಸೂಕ್ಷ್ಮತೆಗಳನ್ನು, ಡೈಮೆನ್ಶನಲಿಟಿ ಕಡಿತದ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಿ ಪರಿಶೀಲಿಸುತ್ತದೆ. ನಾವು ವಿವಿಧ ಕಾರ್ಯವಿಧಾನಗಳು, ಅವುಗಳ ಅಡಿಯಲ್ಲಿರುವ ತತ್ವಗಳು, ಕೋಡ್ ಉದಾಹರಣೆಗಳೊಂದಿಗೆ ಪ್ರಾಯೋಗಿಕ ಅನುಷ್ಠಾನ ಮತ್ತು ವೈವಿಧ್ಯಮಯ ಜಾಗತಿಕ ಡೇಟಾಸೆಟ್ಗಳಿಗಾಗಿ ಪರಿಗಣನೆಗಳನ್ನು ಅನ್ವೇಷಿಸುತ್ತೇವೆ. ನಮ್ಮ ಮಹತ್ವಾಕಾಂಕ್ಷಿ ಮತ್ತು ಅನುಭವಿ ಡೇಟಾ ಅಭ್ಯಾಸಿಗಳ ನಮ್ಮ ಜಾಗತಿಕ ಪ್ರೇಕ್ಷಕರಿಗೆ, ಫೀಚರ್ ಆಯ್ಕೆಯ ಬಗ್ಗೆ ತಿಳುವಳಿಕೆಯುಳ್ಳ ನಿರ್ಧಾರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಜ್ಞಾನವನ್ನು ನೀಡುವುದು ನಮ್ಮ ಗುರಿಯಾಗಿದೆ, ಇದು ಹೆಚ್ಚು ಸಮರ್ಥ, ನಿಖರ ಮತ್ತು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದಾದ ಯಂತ್ರ ಕಲಿಕೆ ಮಾದರಿಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ.
ಡೈಮೆನ್ಶನಲಿಟಿ ಕಡಿತವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು
ನಾವು Scikit-learn ನ ನಿರ್ದಿಷ್ಟ ಸಾಧನಗಳಲ್ಲಿ ಧುಮುಕುವ ಮೊದಲು, ಡೈಮೆನ್ಶನಲಿಟಿ ಕಡಿತದ ಮೂಲಭೂತ ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಗ್ರಹಿಸುವುದು ಮುಖ್ಯ. ಈ ಪ್ರಕ್ರಿಯೆಯು ಡೇಟಾವನ್ನು ಹೆಚ್ಚಿನ-ಆಯಾಮದ ಜಾಗದಿಂದ ಕಡಿಮೆ-ಆಯಾಮದ ಜಾಗಕ್ಕೆ ಪರಿವರ್ತಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಆದರೆ ಸಾಧ್ಯವಾದಷ್ಟು ಮುಖ್ಯ ಮಾಹಿತಿಯನ್ನು ಸಂರಕ್ಷಿಸುತ್ತದೆ. ಪ್ರಯೋಜನಗಳು ಅನೇಕ:
- ಕಡಿಮೆಯಾದ ಓವರ್ಫಿಟ್ಟಿಂಗ್: ಕಡಿಮೆ ವೈಶಿಷ್ಟ್ಯಗಳು ಸರಳ ಮಾದರಿಯನ್ನು ಅರ್ಥೈಸುತ್ತವೆ, ತರಬೇತಿ ಡೇಟಾದಲ್ಲಿ ಶಬ್ದವನ್ನು ಕಲಿಯಲು ಕಡಿಮೆ ಒಳಗಾಗುತ್ತವೆ.
- ವೇಗವಾಗಿ ತರಬೇತಿ ಸಮಯ: ಕಡಿಮೆ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಹೊಂದಿರುವ ಮಾದರಿಗಳು ಗಮನಾರ್ಹವಾಗಿ ವೇಗವಾಗಿ ತರಬೇತಿ ನೀಡುತ್ತವೆ.
- ಉತ್ತಮ ಮಾದರಿ ವ್ಯಾಖ್ಯಾನ: ಕಡಿಮೆ ವೈಶಿಷ್ಟ್ಯಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಸುಲಭ.
- ಕಡಿಮೆಯಾದ ಸಂಗ್ರಹಣೆ ಸ್ಥಳ: ಕಡಿಮೆ ಆಯಾಮಕ್ಕೆ ಕಡಿಮೆ ಮೆಮೊರಿ ಅಗತ್ಯವಿದೆ.
- ಶಬ್ದ ಕಡಿತ: ಅಸಂಬಂಧಿತ ಅಥವಾ ನಕಲಿ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕಬಹುದು, ಸ್ವಚ್ಛವಾದ ಡೇಟಾಗೆ ಕಾರಣವಾಗುತ್ತದೆ.
ಡೈಮೆನ್ಶನಲಿಟಿ ಕಡಿತವನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಎರಡು ಮುಖ್ಯ ವಿಧಾನಗಳಾಗಿ ವರ್ಗೀಕರಿಸಬಹುದು:
1. ಫೀಚರ್ ಆಯ್ಕೆ
ಈ ವಿಧಾನವು ಪ್ರಸ್ತುತ ಸಮಸ್ಯೆಗಳಿಗೆ ಹೆಚ್ಚು ಸಂಬಂಧಿಸಿದ ಮೂಲ ವೈಶಿಷ್ಟ್ಯಗಳ ಉಪ-ವಿಭಾಗವನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಮೂಲ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಉಳಿಸಿಕೊಳ್ಳಲಾಗುತ್ತದೆ, ಆದರೆ ಅವುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಲಾಗುತ್ತದೆ. ಅಡುಗೆಯ ಪಾಕವಿಧಾನಕ್ಕೆ ಹೆಚ್ಚು ಪ್ರಭಾವಶಾಲಿ ಪದಾರ್ಥಗಳನ್ನು ಗುರುತಿಸಿ ಮತ್ತು ಉಳಿದವನ್ನು ತ್ಯಜಿಸಿ ಎಂದು ಯೋಚಿಸಿ.
2. ಫೀಚರ್ ಹೊರತೆಗೆಯುವಿಕೆ
ಈ ವಿಧಾನವು ಮೂಲ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಹೊಸ, ಚಿಕ್ಕ ವೈಶಿಷ್ಟ್ಯಗಳ ಗುಂಪಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ. ಈ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳು ಮೂಲ ಪದಾರ್ಥಗಳ ಅತ್ಯಂತ ಗಮನಾರ್ಹ ವ್ಯತ್ಯಾಸ ಅಥವಾ ಮಾಹಿತಿಯನ್ನು ಸೆರೆಹಿಡಿಯುವ ಗುರಿಯನ್ನು ಹೊಂದಿರುವ ಮೂಲ ಪದಾರ್ಥಗಳ ಸಂಯೋಜನೆಗಳು ಅಥವಾ ಪ್ರಕ್ಷೇಪಣಗಳಾಗಿವೆ. ಇದು ಮೂಲ ಪದಾರ್ಥಗಳ ಸಾರವನ್ನು ರಚಿಸುವಂತಿದೆ.
Scikit-learn ಈ ಎರಡು ವಿಧಾನಗಳಿಗಾಗಿ ಶಕ್ತಿಯುತ ಸಾಧನಗಳನ್ನು ನೀಡುತ್ತದೆ. ನಾವು ಡೈಮೆನ್ಶನಲಿಟಿ ಕಡಿತಕ್ಕೆ ಕೊಡುಗೆ ನೀಡುವ ತಂತ್ರಗಳ ಮೇಲೆ ಗಮನ ಹರಿಸುತ್ತೇವೆ, ಸಾಮಾನ್ಯವಾಗಿ ಫೀಚರ್ ಆಯ್ಕೆ ಅಥವಾ ಹೊರತೆಗೆಯುವಿಕೆ ಮೂಲಕ.
Scikit-learn ನಲ್ಲಿ ಫೀಚರ್ ಆಯ್ಕೆ ವಿಧಾನಗಳು
Scikit-learn ಫೀಚರ್ ಆಯ್ಕೆ ಮಾಡಲು ಹಲವಾರು ಮಾರ್ಗಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಇವುಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಮೂರು ವಿಭಾಗಗಳಾಗಿ ವಿಂಗಡಿಸಬಹುದು:
1. ಫಿಲ್ಟರ್ ವಿಧಾನಗಳು
ಫಿಲ್ಟರ್ ವಿಧಾನಗಳು ಯಾವುದೇ ನಿರ್ದಿಷ್ಟ ಯಂತ್ರ ಕಲಿಕೆ ಮಾದರಿಯಿಂದ ಸ್ವತಂತ್ರವಾಗಿ, ವೈಶಿಷ್ಟ್ಯಗಳ ಅಂತರ್ಗತ ಗುಣಲಕ್ಷಣಗಳ ಆಧಾರದ ಮೇಲೆ ಅವುಗಳ ಸಂಬಂಧವನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುತ್ತವೆ. ಅವು ಸಾಮಾನ್ಯವಾಗಿ ವೇಗವಾಗಿರುತ್ತವೆ ಮತ್ತು ಲೆಕ್ಕಾಚಾರದಲ್ಲಿ ಅಗ್ಗವಾಗಿರುತ್ತವೆ, ಇದು ಆರಂಭಿಕ ಡೇಟಾ ಅನ್ವೇಷಣೆಗಾಗಿ ಅಥವಾ ಬಹಳ ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ ಆದರ್ಶವಾಗಿದೆ. ಸಾಮಾನ್ಯ ಮಾನದಂಡಗಳು ಸಹ ಸಂಬಂಧ, ಪರಸ್ಪರ ಮಾಹಿತಿ ಮತ್ತು ಅಂಕಿಅಂಶಗಳ ಪರೀಕ್ಷೆಗಳನ್ನು ಒಳಗೊಂಡಿವೆ.
a) ಸಂಬಂಧ-ಆಧಾರಿತ ಫೀಚರ್ ಆಯ್ಕೆ
ಗುರಿ ವೇರಿಯೇಬಲ್ಗೆ ಹೆಚ್ಚು ಸಂಬಂಧಿಸಿದ ವೈಶಿಷ್ಟ್ಯಗಳು ಮುಖ್ಯವೆಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಇದಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ, ಪರಸ್ಪರ ಹೆಚ್ಚು ಸಂಬಂಧ ಹೊಂದಿರುವ ವೈಶಿಷ್ಟ್ಯಗಳು (ಬಹುಸಂಬಂಧ) ನಕಲಿಯಾಗಿರಬಹುದು ಮತ್ತು ತೆಗೆದುಹಾಕುವಿಕೆಗಾಗಿ ಪರಿಗಣಿಸಬಹುದು. Scikit-learn ನ feature_selection ಮಾಡ್ಯೂಲ್ ಇದರೊಂದಿಗೆ ಸಹಾಯ ಮಾಡಲು ಸಾಧನಗಳನ್ನು ನೀಡುತ್ತದೆ.
ಉದಾಹರಣೆ: ವ್ಯತ್ಯಾಸ ಥ್ರೆಶೋಲ್ಡ್
ಅತ್ಯಂತ ಕಡಿಮೆ ವ್ಯತ್ಯಾಸವನ್ನು ಹೊಂದಿರುವ ವೈಶಿಷ್ಟ್ಯಗಳು ಹೆಚ್ಚು ವಿವೇಚನಾತ್ಮಕ ಶಕ್ತಿಯನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ. VarianceThreshold ವರ್ಗವು ನಿರ್ದಿಷ್ಟ ಥ್ರೆಶೋಲ್ಡ್ ಅನ್ನು ಪೂರೈಸದ ವ್ಯತ್ಯಾಸದ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ. ಇದು ವಿಶೇಷವಾಗಿ ಸಂಖ್ಯಾತ್ಮಕ ವೈಶಿಷ್ಟ್ಯಗಳಿಗೆ ಉಪಯುಕ್ತವಾಗಿದೆ.
from sklearn.feature_selection import VarianceThreshold
import numpy as np
X = [[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]]
selector = VarianceThreshold(threshold=0.0)
selector.fit_transform(X)
# Output: array([[2, 0, 3], [1, 4, 3], [1, 1, 3]])
ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ಮೊದಲ ವೈಶಿಷ್ಟ್ಯ (ಎಲ್ಲಾ ಸೊನ್ನೆಗಳು) ಸೊನ್ನೆ ವ್ಯತ್ಯಾಸವನ್ನು ಹೊಂದಿದೆ ಮತ್ತು ತೆಗೆದುಹಾಕಲ್ಪಟ್ಟಿದೆ. ಇದು ಯಾವುದೇ ಮುನ್ಸೂಚಕ ಶಕ್ತಿಯನ್ನು ಒದಗಿಸದ ಸ್ಥಿರ ಅಥವಾ ಬಹುತೇಕ ಸ್ಥಿರ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಕೈಬಿಡಲು ಮೂಲಭೂತ ಆದರೆ ಪರಿಣಾಮಕಾರಿ ಮಾರ್ಗವಾಗಿದೆ.
ಉದಾಹರಣೆ: ಗುರಿಯೊಂದಿಗೆ ಸಂಬಂಧ (Pandas ಮತ್ತು SciPy ಬಳಸಿ)
Scikit-learn ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯ ಪ್ರಕಾರಗಳಿಗಾಗಿ ಗುರಿಯೊಂದಿಗೆ ಸಂಬಂಧಕ್ಕಾಗಿ ನೇರವಾದ ಉನ್ನತ-ಮಟ್ಟದ ಕಾರ್ಯವನ್ನು ಹೊಂದಿಲ್ಲದಿದ್ದರೂ, ಇದು ಸಾಮಾನ್ಯ ಪೂರ್ವ-ಸಂಸ್ಕರಣಾ ಹಂತವಾಗಿದೆ. ನಾವು ಇದಕ್ಕಾಗಿ Pandas ಮತ್ತು SciPy ಅನ್ನು ಬಳಸಬಹುದು.
import pandas as pd
import numpy as np
from scipy.stats import pearsonr
# Sample data
data = {
'feature1': np.random.rand(100),
'feature2': np.random.rand(100) * 2,
'feature3': np.random.rand(100) - 1,
'target': np.random.randint(0, 2, 100)
}
df = pd.DataFrame(data)
# Calculate Pearson correlation with the target
correlations = df.corr()['target'].drop('target')
# Select features with correlation above a certain threshold (e.g., 0.2)
selected_features = correlations[abs(correlations) > 0.2].index.tolist()
print(f"Features correlated with target: {selected_features}")
ಈ ತುಣುಕು ಗುರಿ ವೇರಿಯೇಬಲ್ನೊಂದಿಗೆ ರೇಖೀಯ ಸಂಬಂಧವನ್ನು ಹೊಂದಿರುವ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಹೇಗೆ ಗುರುತಿಸಬೇಕು ಎಂಬುದನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ. ಬೈನರಿ ಗುರಿಗಳಿಗಾಗಿ, ಪಾಯಿಂಟ್-ಬೈಸರಿಯಲ್ ಸಹಸಂಬಂಧವು ಪ್ರಸ್ತುತವಾಗಿದೆ, ಮತ್ತು ವರ್ಗೀಯ ಗುರಿಗಳಿಗಾಗಿ, ಇತರ ಅಂಕಿಅಂಶಗಳ ಪರೀಕ್ಷೆಗಳು ಹೆಚ್ಚು ಸೂಕ್ತವಾಗಿವೆ.
b) ಅಂಕಿಅಂಶಗಳ ಪರೀಕ್ಷೆಗಳು
ಫಿಲ್ಟರ್ ವಿಧಾನಗಳು ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಗುರಿ ವೇರಿಯೇಬಲ್ ನಡುವಿನ ಅವಲಂಬನೆಯನ್ನು ಅಳೆಯಲು ಅಂಕಿಅಂಶಗಳ ಪರೀಕ್ಷೆಗಳನ್ನು ಸಹ ಬಳಸಬಹುದು. ಇವುಗಳು ವರ್ಗೀಯ ವೈಶಿಷ್ಟ್ಯಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ ಅಥವಾ ಡೇಟಾ ವಿತರಣೆಯ ಬಗ್ಗೆ ನಿರ್ದಿಷ್ಟ ಊಹೆಗಳನ್ನು ಮಾಡಿದಾಗ ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿವೆ.
Scikit-learn ನ feature_selection ಮಾಡ್ಯೂಲ್ ಒದಗಿಸುತ್ತದೆ:
f_classif: ವರ್ಗೀಕರಣ ಕಾರ್ಯಗಳಿಗಾಗಿ ಲೇಬಲ್/ವೈಶಿಷ್ಟ್ಯದ ನಡುವೆ ANOVA F-ಮೌಲ್ಯ. ವೈಶಿಷ್ಟ್ಯಗಳು ಸಂಖ್ಯಾತ್ಮಕವಾಗಿವೆ ಮತ್ತು ಗುರಿ ವರ್ಗೀಯವಾಗಿದೆ ಎಂದು ಊಹಿಸುತ್ತದೆ.f_regression: ಹಿಂಜರಿಕೆ ಕಾರ್ಯಗಳಿಗಾಗಿ ಲೇಬಲ್/ವೈಶಿಷ್ಟ್ಯದ ನಡುವೆ F-ಮೌಲ್ಯ. ವೈಶಿಷ್ಟ್ಯಗಳು ಸಂಖ್ಯಾತ್ಮಕವಾಗಿವೆ ಮತ್ತು ಗುರಿ ಸಂಖ್ಯಾತ್ಮಕವಾಗಿದೆ ಎಂದು ಊಹಿಸುತ್ತದೆ.mutual_info_classif: ಒಂದು ಪ್ರತ್ಯೇಕ ಗುರಿ ವೇರಿಯೇಬಲ್ಗಾಗಿ ಪರಸ್ಪರ ಮಾಹಿತಿ. ರೇಖೀಯವಲ್ಲದ ಸಂಬಂಧಗಳನ್ನು ನಿಭಾಯಿಸಬಹುದು.mutual_info_regression: ನಿರಂತರ ಗುರಿ ವೇರಿಯೇಬಲ್ಗಾಗಿ ಪರಸ್ಪರ ಮಾಹಿತಿ.chi2: ವರ್ಗೀಕರಣ ಕಾರ್ಯಗಳಿಗಾಗಿ ನಾನ್-ನೆಗೆಟಿವ್ ವೈಶಿಷ್ಟ್ಯಗಳ ಕೈ-ವರ್ಗ ಅಂಕಿಅಂಶಗಳು. ವರ್ಗೀಯ ವೈಶಿಷ್ಟ್ಯಗಳಿಗಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ.
ಉದಾಹರಣೆ: `f_classif` ಮತ್ತು `SelectKBest` ಬಳಸುವುದು
SelectKBest ಒಂದು ಮೆಟಾ-ಟ್ರಾನ್ಸ್ಫಾರ್ಮರ್ ಆಗಿದ್ದು, ಇದು ಆಯ್ಕೆ ಮಾಡಿದ ಸ್ಕೋರಿಂಗ್ ಕಾರ್ಯದ (f_classif ನಂತಹ) ಆಧಾರದ ಮೇಲೆ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest, f_classif
iris = load_iris()
X, y = iris.data, iris.target
# Select the top 2 features using f_classif
selector = SelectKBest(score_func=f_classif, k=2)
X_new = selector.fit_transform(X, y)
print(f"Original shape: {X.shape}")
print(f"Reduced shape: {X_new.shape}")
# To see which features were selected:
selected_indices = selector.get_support(indices=True)
print(f"Selected feature indices: {selected_indices}")
print(f"Selected feature names: {[iris.feature_names[i] for i in selected_indices]}")
ಈ ಉದಾಹರಣೆಯು ವರ್ಗೀಕರಣಕ್ಕಾಗಿ ಅವುಗಳ ಅಂಕಿಅಂಶಗಳ ಮಹತ್ವದ ಆಧಾರದ ಮೇಲೆ 'k' ಅತ್ಯುತ್ತಮ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಹೇಗೆ ಆರಿಸಬೇಕು ಎಂಬುದನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ. f_classif ನಲ್ಲಿನ F-ಮೌಲ್ಯವು ಮೂಲಭೂತವಾಗಿ ಗುಂಪುಗಳ (ವರ್ಗಗಳು) ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು ಗುಂಪುಗಳೊಳಗಿನ ವ್ಯತ್ಯಾಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದಂತೆ ಅಳೆಯುತ್ತದೆ. ಹೆಚ್ಚಿನ F-ಮೌಲ್ಯವು ವೈಶಿಷ್ಟ್ಯ ಮತ್ತು ಗುರಿಯ ನಡುವಿನ ಬಲವಾದ ಸಂಬಂಧವನ್ನು ಸೂಚಿಸುತ್ತದೆ.
ಜಾಗತಿಕ ಪರಿಗಣನೆ: ವಿಭಿನ್ನ ಪ್ರದೇಶಗಳಿಂದ (ಉದಾ., ವೈವಿಧ್ಯಮಯ ಹವಾಮಾನಗಳಿಂದ ಸೆನ್ಸಾರ್ ಡೇಟಾ, ವಿಭಿನ್ನ ಆರ್ಥಿಕ ವ್ಯವಸ್ಥೆಗಳಿಂದ ಹಣಕಾಸು ಡೇಟಾ) ಡೇಟಾಸೆಟ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ವೈಶಿಷ್ಟ್ಯಗಳ ಅಂಕಿಅಂಶಗಳ ಗುಣಲಕ್ಷಣಗಳು ಗಮನಾರ್ಹವಾಗಿ ಬದಲಾಗಬಹುದು. ಈ ಅಂಕಿಅಂಶಗಳ ಪರೀಕ್ಷೆಗಳ ಊಹೆಗಳನ್ನು (ಉದಾ., ANOVA ಗಾಗಿ ಸಾಮಾನ್ಯತೆ) ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮುಖ್ಯವಾಗಿದೆ, ಮತ್ತು ಮ್ಯೂಚುಯಲ್ ಮಾಹಿತಿಯಂತಹ ನಾನ್-ಪ್ಯಾರಾಮೆಟ್ರಿಕ್ ಪರೀಕ್ಷೆಗಳು ವೈವಿಧ್ಯಮಯ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ ಹೆಚ್ಚು ದೃಢವಾಗಿರಬಹುದು.
2. ಸುತ್ತುವರಿಯುವಿಕೆ ವಿಧಾನಗಳು
ಸುತ್ತುವರಿಯುವಿಕೆ ವಿಧಾನಗಳು ಫೀಚರ್ ಉಪ-ವಿಭಾಗಗಳ ಗುಣಮಟ್ಟವನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ನಿರ್ದಿಷ್ಟ ಯಂತ್ರ ಕಲಿಕೆ ಮಾದರಿಯನ್ನು ಬಳಸುತ್ತವೆ. ಅವು ಅತ್ಯುತ್ತಮ ವೈಶಿಷ್ಟ್ಯಗಳ ಗುಂಪನ್ನು ಹುಡುಕಲು ಹುಡುಕಾಟ ಕಾರ್ಯತಂತ್ರದೊಳಗೆ ಮಾದರಿ ತರಬೇತಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು 'ಸುತ್ತುವರಿಯುತ್ತವೆ'. ಫಿಲ್ಟರ್ ವಿಧಾನಗಳಿಗಿಂತ ಸಾಮಾನ್ಯವಾಗಿ ಹೆಚ್ಚು ನಿಖರವಾಗಿದ್ದರೂ, ಪುನರಾವರ್ತಿತ ಮಾದರಿ ತರಬೇತಿಯಿಂದಾಗಿ ಅವು ಲೆಕ್ಕಾಚಾರದಲ್ಲಿ ಹೆಚ್ಚು ದುಬಾರಿಯಾಗಿರುತ್ತವೆ.
a) ಪುನರಾವರ್ತಿತ ಫೀಚರ್ ನಿರ್ಮೂಲನ (RFE)
RFE ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪುನರಾವರ್ತಿತವಾಗಿ ತೆಗೆದುಹಾಕುವ ಮೂಲಕ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಇದು ಸಂಪೂರ್ಣ ವೈಶಿಷ್ಟ್ಯಗಳ ಮೇಲೆ ಮಾದರಿಯನ್ನು ತರಬೇತಿ ಮಾಡುವುದರೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, ನಂತರ ಮಾದರಿಯ ಗುಣಾಂಕಗಳು ಅಥವಾ ವೈಶಿಷ್ಟ್ಯಗಳ ಮಹತ್ವದ ಆಧಾರದ ಮೇಲೆ ಕನಿಷ್ಠ ಮುಖ್ಯ ವೈಶಿಷ್ಟ್ಯ(ಗಳನ್ನು) ತೆಗೆದುಹಾಕುತ್ತದೆ. ಅಪೇಕ್ಷಿತ ಸಂಖ್ಯೆಯ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತಲುಪುವವರೆಗೆ ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪುನರಾವರ್ತಿಸಲಾಗುತ್ತದೆ.
from sklearn.datasets import make_classification
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
# Generate synthetic data
X, y = make_classification(n_samples=100, n_features=20, n_informative=10, n_redundant=5, random_state=42)
# Use a Logistic Regression model (can be any model that supports coef_ or feature_importances_)
estimator = LogisticRegression(solver='liblinear')
# Initialize RFE to select top 5 features
selector = RFE(estimator, n_features_to_select=5, step=1)
selector = selector.fit(X, y)
X_new = selector.transform(X)
print(f"Original shape: {X.shape}")
print(f"Reduced shape: {X_new.shape}")
# To see which features were selected:
selected_indices = selector.get_support(indices=True)
print(f"Selected feature indices: {selected_indices}")
RFE ಶಕ್ತಿಯುತವಾಗಿದೆ ಏಕೆಂದರೆ ಇದು ಆಯ್ಕೆ ಮಾಡಿದ ಮಾದರಿಯಿಂದ ಮೌಲ್ಯಮಾಪನ ಮಾಡಲಾದ ವೈಶಿಷ್ಟ್ಯಗಳ ನಡುವಿನ ಸಂವಹನಗಳನ್ನು ಪರಿಗಣಿಸುತ್ತದೆ. `step` ನಿಯತಾಂಕವು ಪ್ರತಿ ಪುನರಾವರ್ತನೆಯಲ್ಲಿ ಎಷ್ಟು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ.
b) ಸೀಕ್ವೆನ್ಶಿಯಲ್ ಫೀಚರ್ ಆಯ್ಕೆ (SFS)
Scikit-learn ನ ಮೂಲ feature_selection ನಲ್ಲಿ ನೇರವಾದ ವರ್ಗವಾಗಿಲ್ಲದಿದ್ದರೂ, ಸೀಕ್ವೆನ್ಶಿಯಲ್ ಫೀಚರ್ ಆಯ್ಕೆ ಒಂದು ಪರಿಕಲ್ಪನಾತ್ಮಕ ವಿಧಾನವಾಗಿದೆ, ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ Scikit-learn ಎಸ್ಟಿಮೇಟರ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಅಳವಡಿಸಲಾಗುತ್ತದೆ. ಇದು ಫಾರ್ವರ್ಡ್ ಆಯ್ಕೆ (ಖಾಲಿ ಸೆಟ್ನಿಂದ ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಒಂದೊಂದಾಗಿ ಸೇರಿಸುವುದು) ಅಥವಾ ಬ್ಯಾಕ್ವರ್ಡ್ ನಿರ್ಮೂಲನ (ಎಲ್ಲಾ ವೈಶಿಷ್ಟ್ಯಗಳೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಅವುಗಳನ್ನು ಒಂದೊಂದಾಗಿ ತೆಗೆದುಹಾಕುವುದು) ಒಳಗೊಂಡಿರುತ್ತದೆ. sklearn.feature_selection ನಲ್ಲಿ Scikit-learn ನ SequentialFeatureSelector ಇದನ್ನು ಅಳವಡಿಸುತ್ತದೆ.
from sklearn.feature_selection import SequentialFeatureSelector
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=100, n_features=20, n_informative=10, n_redundant=5, random_state=42)
estimator = LogisticRegression(solver='liblinear')
# Forward selection: add features until desired number is reached
sfs_forward = SequentialFeatureSelector(
estimator, n_features_to_select=10, direction='forward', cv=5)
sfs_forward.fit(X, y)
X_new_forward = sfs_forward.transform(X)
print(f"Forward Selection - Reduced shape: {X_new_forward.shape}")
# Backward selection: start with all features and remove
sfs_backward = SequentialFeatureSelector(
estimator, n_features_to_select=10, direction='backward', cv=5)
sfs_backward.fit(X, y)
X_new_backward = sfs_backward.transform(X)
print(f"Backward Selection - Reduced shape: {X_new_backward.shape}")
SequentialFeatureSelector ನಲ್ಲಿನ cv ನಿಯತಾಂಕವು ಕ್ರಾಸ್-ವ್ಯಾಲಿಡೇಶನ್ ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಇದು ವೈಶಿಷ್ಟ್ಯ ಆಯ್ಕೆಯನ್ನು ಹೆಚ್ಚು ದೃಢವಾಗಿ ಮತ್ತು ತರಬೇತಿ ಡೇಟಾವನ್ನು ಅತಿಯಾಗಿ ಕಲಿಯಲು ಕಡಿಮೆ ಒಳಗಾಗುವಂತೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಡೇಟಾ ಗುಣಮಟ್ಟ ಮತ್ತು ವಿತರಣೆಯು ವಿಪರೀತವಾಗಿ ಬದಲಾಗಬಹುದಾದ್ದರಿಂದ, ಈ ವಿಧಾನಗಳನ್ನು ಜಾಗತಿಕವಾಗಿ ಅನ್ವಯಿಸುವಾಗ ಇದು ಒಂದು ನಿರ್ಣಾಯಕ ಪರಿಗಣನೆಯಾಗಿದೆ.
3. ಎಂಬೆಡೆಡ್ ವಿಧಾನಗಳು
ಎಂಬೆಡೆಡ್ ವಿಧಾನಗಳು ಮಾದರಿ ತರಬೇತಿ ಪ್ರಕ್ರಿಯೆಯ ಭಾಗವಾಗಿ ಫೀಚರ್ ಆಯ್ಕೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ. ಅವು ವೈಶಿಷ್ಟ್ಯ ಸಂವಹನಗಳನ್ನು ಪರಿಗಣಿಸುವಾಗಲೂ ಸುತ್ತುವರಿಯುವಿಕೆ ವಿಧಾನಗಳಿಗಿಂತ ಲೆಕ್ಕಾಚಾರದಲ್ಲಿ ಕಡಿಮೆ ದುಬಾರಿಯಾಗಿರುವ ಪ್ರಯೋಜನವನ್ನು ಹೊಂದಿವೆ. ಅನೇಕ ನಿಯಂತ್ರಿತ ಮಾದರಿಗಳು ಈ ವರ್ಗಕ್ಕೆ ಸೇರುತ್ತವೆ.
a) L1 ನಿಯಂತ್ರಣ (ಲಾಸ್ವೊ)
ರೇಖೀಯ ಮಾದರಿಗಳಲ್ಲಿ Lasso (ಕನಿಷ್ಠ ನಿರಪೇಕ್ಷ ಸಂಕೋಚನ ಮತ್ತು ಆಯ್ಕೆ ಆಪರೇಟರ್) ನಂತಹ ಮಾದರಿಗಳು L1 ನಿಯಂತ್ರಣವನ್ನು ಬಳಸುತ್ತವೆ. ಈ ತಂತ್ರವು ಗುಣಾಂಕಗಳ ನಿರಪೇಕ್ಷ ಮೌಲ್ಯಕ್ಕೆ ದಂಡವನ್ನು ಸೇರಿಸುತ್ತದೆ, ಇದು ಕೆಲವು ಗುಣಾಂಕಗಳನ್ನು ಸಂಪೂರ್ಣ ಸೊನ್ನೆಗೆ ಓಡಿಸಬಹುದು. ಸೊನ್ನೆ ಗುಣಾಂಕಗಳನ್ನು ಹೊಂದಿರುವ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ.
from sklearn.linear_model import Lasso
from sklearn.datasets import make_regression
# Generate synthetic data
X, y = make_regression(n_samples=100, n_features=20, n_informative=10, random_state=42, noise=10)
# Lasso with alpha (regularization strength)
# A higher alpha leads to more regularization and potentially more zero coefficients
lasso = Lasso(alpha=0.1, random_state=42)
lasso.fit(X, y)
# Get the number of non-zero coefficients (selected features)
non_zero_features = np.sum(lasso.coef_ != 0)
print(f"Number of features selected by Lasso: {non_zero_features}")
# To get the actual selected features:
selected_features_mask = lasso.coef_ != 0
X_new = X[:, selected_features_mask]
print(f"Reduced shape: {X_new.shape}")
LassoCV ಅನ್ನು ಕ್ರಾಸ್-ವ್ಯಾಲಿಡೇಶನ್ ಮೂಲಕ ಸೂಕ್ತವಾದ ಆಲ್ಫಾ ಮೌಲ್ಯವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಂಡುಹಿಡಿಯಲು ಬಳಸಬಹುದು.
b) ಮರ-ಆಧಾರಿತ ಫೀಚರ್ ಮಹತ್ವ
RandomForestClassifier, GradientBoostingClassifier, ಮತ್ತು ExtraTreesClassifier ನಂತಹ ಎನ್ಸೆಂಬಲ್ ವಿಧಾನಗಳು ಅಂತರ್ಗತವಾಗಿ ಫೀಚರ್ ಮಹತ್ವವನ್ನು ಒದಗಿಸುತ್ತವೆ. ಇವುಗಳನ್ನು ಎನ್ಸೆಂಬಲ್ನಲ್ಲಿರುವ ಮರಗಳಾದ್ಯಂತ ಅಶುದ್ಧತೆ ಅಥವಾ ದೋಷವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಪ್ರತಿ ವೈಶಿಷ್ಟ್ಯವು ಎಷ್ಟು ಕೊಡುಗೆ ನೀಡುತ್ತದೆ ಎಂಬುದರ ಆಧಾರದ ಮೇಲೆ ಲೆಕ್ಕಹಾಕಲಾಗುತ್ತದೆ. ಕಡಿಮೆ ಮಹತ್ವದ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕಬಹುದು.
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
X, y = cancer.data, cancer.target
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X, y)
# Get feature importances
importances = model.feature_importances_
# Sort features by importance
indices = np.argsort(importances)[::-1]
print("Feature ranking:")
for f in range(X.shape[1]):
print(f"{f + 1}. feature {indices[f]} ({cancer.feature_names[indices[f]]}) - {importances[indices[f]]:.4f}")
# Select top N features (e.g., top 10)
N = 10
selected_features_mask = np.zeros(X.shape[1], dtype=bool)
selected_features_mask[indices[:N]] = True
X_new = X[:, selected_features_mask]
print(f"Reduced shape after selecting top {N} features: {X_new.shape}")
ಮರ-ಆಧಾರಿತ ವಿಧಾನಗಳು ಶಕ್ತಿಯುತವಾಗಿವೆ ಏಕೆಂದರೆ ಅವು ರೇಖೀಯವಲ್ಲದ ಸಂಬಂಧಗಳು ಮತ್ತು ವೈಶಿಷ್ಟ್ಯ ಸಂವಹನಗಳನ್ನು ಸೆರೆಹಿಡಿಯಬಹುದು. ಅವು ವೈದ್ಯಕೀಯ ರೋಗನಿರ್ಣಯ (ಉದಾಹರಣೆಯಲ್ಲಿರುವಂತೆ) ಯಿಂದ ಹಣಕಾಸು ವಂಚನೆ ಪತ್ತೆವರೆಗೆ ವಿವಿಧ ಡೊಮೇನ್ಗಳಲ್ಲಿ ವ್ಯಾಪಕವಾಗಿ ಅನ್ವಯಿಸುತ್ತವೆ.
ಡೈಮೆನ್ಶನಲಿಟಿ ಕಡಿತಕ್ಕಾಗಿ ಫೀಚರ್ ಹೊರತೆಗೆಯುವಿಕೆ
ಫೀಚರ್ ಆಯ್ಕೆಯು ಮೂಲ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಉಳಿಸಿಕೊಳ್ಳುವಾಗ, ಫೀಚರ್ ಹೊರತೆಗೆಯುವಿಕೆಯು ಹೊಸ, ಕಡಿಮೆಯಾದ ವೈಶಿಷ್ಟ್ಯಗಳ ಗುಂಪನ್ನು ರಚಿಸುತ್ತದೆ. ಮೂಲ ವೈಶಿಷ್ಟ್ಯಗಳು ಹೆಚ್ಚು ಸಂಬಂಧ ಹೊಂದಿದ್ದರೆ ಅಥವಾ ನೀವು ಡೇಟಾವನ್ನು ಗರಿಷ್ಠ ವ್ಯತ್ಯಾಸವನ್ನು ಸೆರೆಹಿಡಿಯುವ ಕಡಿಮೆ-ಆಯಾಮದ ಜಾಗಕ್ಕೆ ಪ್ರಕ್ಷೇಪಿಸಲು ಬಯಸಿದರೆ ಇದು ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ.
1. ಪ್ರಿನ್ಸಿಪಲ್ ಕಾಂಪೊನೆಂಟ್ ಅನಾಲಿಸಿಸ್ (PCA)
PCA ಒಂದು ರೇಖೀಯ ಪರಿವರ್ತನೆ ತಂತ್ರವಾಗಿದ್ದು, ಇದು ಡೇಟಾದಲ್ಲಿ ಗರಿಷ್ಠ ವ್ಯತ್ಯಾಸವನ್ನು ಸೆರೆಹಿಡಿಯುವ ಲಂಬ ಅಕ್ಷಗಳ (ಪ್ರಿನ್ಸಿಪಲ್ ಕಾಂಪೊನೆಂಟ್ಸ್) ಗುಂಪನ್ನು ಕಂಡುಹಿಡಿಯುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ. ಮೊದಲ ಪ್ರಿನ್ಸಿಪಲ್ ಕಾಂಪೊನೆಂಟ್ ಗರಿಷ್ಠ ವ್ಯತ್ಯಾಸವನ್ನು ಸೆರೆಹಿಡಿಯುತ್ತದೆ, ಎರಡನೆಯದು ಮುಂದಿನದನ್ನು ಸೆರೆಹಿಡಿಯುತ್ತದೆ (ಮೊದಲನೆಯದಕ್ಕೆ ಲಂಬವಾಗಿರುತ್ತದೆ), ಮತ್ತು ಹೀಗೆ. ಮೊದಲ 'k' ಪ್ರಿನ್ಸಿಪಲ್ ಕಾಂಪೊನೆಂಟ್ಗಳನ್ನು ಮಾತ್ರ ಉಳಿಸಿಕೊಳ್ಳುವ ಮೂಲಕ, ನಾವು ಡೈಮೆನ್ಶನಲಿಟಿ ಕಡಿತವನ್ನು ಸಾಧಿಸುತ್ತೇವೆ.
ಪ್ರಮುಖ ಟಿಪ್ಪಣಿ: PCA ವೈಶಿಷ್ಟ್ಯಗಳ ಪ್ರಮಾಣಕ್ಕೆ ಸೂಕ್ಷ್ಮವಾಗಿರುತ್ತದೆ. PCA ಅನ್ವಯಿಸುವ ಮೊದಲು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಪ್ರಮಾಣೀಕರಿಸುವುದು (ಉದಾ., StandardScaler ಬಳಸಿ) ಮುಖ್ಯವಾಗಿದೆ.
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.datasets import load_wine
wine = load_wine()
X, y = wine.data, wine.target
# Scale the data
X_scaled = StandardScaler().fit_transform(X)
# Initialize PCA to reduce to 2 components
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
print(f"Original shape: {X.shape}")
print(f"Reduced shape after PCA: {X_pca.shape}")
# The explained variance ratio shows how much variance each component captures
print(f"Explained variance ratio: {pca.explained_variance_ratio_}")
print(f"Total explained variance: {np.sum(pca.explained_variance_ratio_):.4f}")
PCA ಹೆಚ್ಚು-ಆಯಾಮದ ಡೇಟಾವನ್ನು 2 ಅಥವಾ 3 ಆಯಾಮಗಳಿಗೆ ಕಡಿಮೆ ಮಾಡುವ ಮೂಲಕ ದೃಶ್ಯೀಕರಿಸಲು ಅತ್ಯುತ್ತಮವಾಗಿದೆ. ಇದು ಅನ್ವೇಷಣಾತ್ಮಕ ಡೇಟಾ ವಿಶ್ಲೇಷಣೆಯಲ್ಲಿ ಒಂದು ಮೂಲಭೂತ ತಂತ್ರವಾಗಿದೆ ಮತ್ತು ಮುಂದಿನ ಮಾದರಿ ಹಂತಗಳನ್ನು ಗಮನಾರ್ಹವಾಗಿ ವೇಗಗೊಳಿಸಬಹುದು. ಇದರ ಪರಿಣಾಮಕಾರಿತ್ವವು ಚಿತ್ರ ಸಂಸ್ಕರಣೆ ಮತ್ತು આનುವಂಶಿಕಶಾಸ್ತ್ರದಂತಹ ಡೊಮೇನ್ಗಳಲ್ಲಿ ಕಂಡುಬರುತ್ತದೆ.
2. ಲೀನಿಯರ್ ಡಿಸ್ಕ್ರಿಮಿನೆಂಟ್ ಅನಾಲಿಸಿಸ್ (LDA)
PCA ಯಿಂದ ಭಿನ್ನವಾಗಿ, ಇದು ಸೂಪರ್ವೈಸ್ಡ್ ಅಲ್ಲ ಮತ್ತು ವ್ಯತ್ಯಾಸವನ್ನು ಗರಿಷ್ಠಗೊಳಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ, LDA ಒಂದು ಸೂಪರ್ವೈಸ್ಡ್ ತಂತ್ರವಾಗಿದ್ದು, ಇದು ವರ್ಗಗಳ ನಡುವಿನ ಪ್ರತ್ಯೇಕತೆಯನ್ನು ಗರಿಷ್ಠಗೊಳಿಸುವ ಕಡಿಮೆ-ಆಯಾಮದ ಪ್ರತಿನಿಧಿಯನ್ನು ಕಂಡುಹಿಡಿಯುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ. ಇದನ್ನು ಪ್ರಾಥಮಿಕವಾಗಿ ವರ್ಗೀಕರಣ ಕಾರ್ಯಗಳಿಗಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ.
ಪ್ರಮುಖ ಟಿಪ್ಪಣಿ: LDA ಗೂ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪ್ರಮಾಣೀಕರಿಸುವ ಅಗತ್ಯವಿದೆ. ಇದಲ್ಲದೆ, LDA ಯಲ್ಲಿನ ಘಟಕಗಳ ಸಂಖ್ಯೆಯು n_classes - 1 ಗಿಂತ ಹೆಚ್ಚಿರುವುದಿಲ್ಲ.
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris
iris = load_iris()
X, y = iris.data, iris.target
# Scale the data
X_scaled = StandardScaler().fit_transform(X)
# Initialize LDA. Number of components cannot exceed n_classes - 1 (which is 2 for Iris)
lda = LinearDiscriminantAnalysis(n_components=2)
X_lda = lda.fit_transform(X_scaled, y)
print(f"Original shape: {X.shape}")
print(f"Reduced shape after LDA: {X_lda.shape}")
# LDA also has explained_variance_ratio_ but it's class separability
print(f"Explained variance ratio (class separability): {lda.explained_variance_ratio_}")
LDA ನಿಮ್ಮ ಡೇಟಾದಲ್ಲಿನ ವಿಭಿನ್ನ ವರ್ಗಗಳ ನಡುವೆ ಉತ್ತಮವಾಗಿ ಪ್ರತ್ಯೇಕಿಸಬಲ್ಲ ವರ್ಗೀಕರಣಕಾರನನ್ನು ನಿರ್ಮಿಸುವ ಗುರಿ ಇರುವಾಗ ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ, ಇದು ಗ್ರಾಹಕ ವಿಭಾಗ ಅಥವಾ ರೋಗ ವರ್ಗೀಕರಣದಂತಹ ಅನೇಕ ಜಾಗತಿಕ ಅನ್ವಯಗಳಲ್ಲಿ ಒಂದು ಸಾಮಾನ್ಯ ಸವಾಲಾಗಿದೆ.
3. ಟಿ-ಡಿಸ್ಟ್ರಿಬ್ಯೂಟೆಡ್ ಸ್ಟೋಕಾಸ್ಟಿಕ್ ನೆೈಬರ್ ಎಂಬೆಡಿಂಗ್ (t-SNE)
t-SNE ಒಂದು ನಾನ್-ಲೀನಿಯರ್ ಡೈಮೆನ್ಶನಲಿಟಿ ಕಡಿತ ತಂತ್ರವಾಗಿದ್ದು, ಇದನ್ನು ಪ್ರಾಥಮಿಕವಾಗಿ ಹೆಚ್ಚಿನ-ಆಯಾಮದ ಡೇಟಾಸೆಟ್ಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಇದು ಹೆಚ್ಚಿನ-ಆಯಾಮದ ಡೇಟಾ ಬಿಂದುಗಳನ್ನು ಕಡಿಮೆ-ಆಯಾಮದ ಜಾಗಕ್ಕೆ (ಸಾಮಾನ್ಯವಾಗಿ 2D ಅಥವಾ 3D) ಮ್ಯಾಪ್ ಮಾಡುವ ಮೂಲಕ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಇದರಿಂದಾಗಿ ಸದೃಶ ಬಿಂದುಗಳು ಕಡಿಮೆ-ಆಯಾಮದ ಜಾಗದಲ್ಲಿ ಸದೃಶ ದೂರಗಳಿಂದ ಮಾದರಿಯಾಗಿರುತ್ತವೆ. ಇದು ಡೇಟಾದಲ್ಲಿ ಸ್ಥಳೀಯ ರಚನೆ ಮತ್ತು ಕ್ಲಸ್ಟರ್ಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸುವಲ್ಲಿ ಅತ್ಯುತ್ತಮವಾಗಿದೆ.
ಪ್ರಮುಖ ಟಿಪ್ಪಣಿ: t-SNE ಲೆಕ್ಕಾಚಾರದಲ್ಲಿ ದುಬಾರಿಯಾಗಿದೆ ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ ಮಾದರಿ ತರಬೇತಿಗಾಗಿ ಪೂರ್ವ-ಸಂಸ್ಕರಣಾ ಹಂತವಾಗಿ ಬಳಸುವುದಕ್ಕಿಂತ ದೃಶ್ಯೀಕರಣಕ್ಕಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ವಿಭಿನ್ನ ಯಾದೃಚ್ಛಿಕ ಆರಂಭಿಕಗಳು ಮತ್ತು ನಿಯತಾಂಕ ಸೆಟ್ಟಿಂಗ್ಗಳೊಂದಿಗೆ ಫಲಿತಾಂಶಗಳು ಸಹ ಬದಲಾಗಬಹುದು.
from sklearn.manifold import TSNE
from sklearn.datasets import load_digits
import matplotlib.pyplot as plt
digits = load_digits()
X, y = digits.data, digits.target
# For demonstration, we'll use a subset of the data as t-SNE can be slow
subset_indices = np.random.choice(len(X), 1000, replace=False)
X_subset = X[subset_indices]
y_subset = y[subset_indices]
# Initialize t-SNE with 2 components
# perplexity is related to the number of nearest neighbors (e.g., 30 is common)
# n_iter is the number of iterations for optimization
tsne = TSNE(n_components=2, perplexity=30, n_iter=300, random_state=42)
X_tsne = tsne.fit_transform(X_subset)
print(f"Original subset shape: {X_subset.shape}")
print(f"Reduced shape after t-SNE: {X_tsne.shape}")
# Plotting the results (optional, for visualization)
plt.figure(figsize=(10, 8))
scatter = plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=y_subset, cmap='viridis', alpha=0.7)
plt.title('t-SNE visualization of Digits dataset')
plt.xlabel('t-SNE component 1')
plt.ylabel('t-SNE component 2')
plt.legend(*scatter.legend_elements(), title='Classes')
plt.show()
t-SNE ಜಿನೊಮಿಕ್ಸ್ ಅಥವಾ ಸಾಮಾಜಿಕ ಜಾಲ ವಿಶ್ಲೇಷಣೆಯಂತಹ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಎದುರಾಗುವ ಸಂಕೀರ್ಣ, ಹೆಚ್ಚಿನ-ಆಯಾಮದ ಡೇಟಾದ ಅಂತರ್ಗತ ರಚನೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಅಮೂಲ್ಯವಾಗಿದೆ, ಇದು ಇಲ್ಲದಿದ್ದರೆ ಮರೆಮಾಡಬಹುದಾದ ಮಾದರಿಗಳಲ್ಲಿ ದೃಶ್ಯ ಒಳನೋಟಗಳನ್ನು ನೀಡುತ್ತದೆ.
ಜಾಗತಿಕ ಡೇಟಾಸೆಟ್ಗಳಿಗಾಗಿ ಸರಿಯಾದ ತಂತ್ರವನ್ನು ಆರಿಸುವುದು
ಸೂಕ್ತವಾದ ಫೀಚರ್ ಆಯ್ಕೆ ಅಥವಾ ಹೊರತೆಗೆಯುವಿಕೆ ವಿಧಾನವನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು ಒಂದೇ ಗಾತ್ರಕ್ಕೆ ಎಲ್ಲವೂ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ. ಹಲವಾರು ಅಂಶಗಳು, ಜಾಗತಿಕ ಡೇಟಾಸೆಟ್ಗಳಿಗೆ ವಿಶೇಷವಾಗಿ ಮುಖ್ಯವಾದವು, ಈ ಆಯ್ಕೆಯನ್ನು ಪ್ರಭಾವಿಸುತ್ತವೆ:
- ಡೇಟಾದ ಸ್ವರೂಪ: ನಿಮ್ಮ ಡೇಟಾ ಸಂಖ್ಯಾತ್ಮಕ, ವರ್ಗೀಯ ಅಥವಾ ಮಿಶ್ರಿತವೇ? ತಿಳಿದಿರುವ ವಿತರಣೆಗಳು ಇದೆಯೇ? ಉದಾಹರಣೆಗೆ,
chi2ನಾನ್-ನೆಗೆಟಿವ್ ವರ್ಗೀಯ ವೈಶಿಷ್ಟ್ಯಗಳಿಗೆ ಸೂಕ್ತವಾಗಿದೆ, ಆದರೆf_classifಸಂಖ್ಯಾತ್ಮಕ ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ವರ್ಗೀಯ ಗುರಿಗಾಗಿ. - ಮಾದರಿ ಪ್ರಕಾರ: ರೇಖೀಯ ಮಾದರಿಗಳು L1 ನಿಯಂತ್ರಣದಿಂದ ಪ್ರಯೋಜನ ಪಡೆಯಬಹುದು, ಆದರೆ ಮರ-ಆಧಾರಿತ ಮಾದರಿಗಳು ಸ್ವಾಭಾವಿಕವಾಗಿ ಮಹತ್ವವನ್ನು ಒದಗಿಸುತ್ತವೆ.
- ಲೆಕ್ಕಾಚಾರದ ಸಂಪನ್ಮೂಲಗಳು: ಫಿಲ್ಟರ್ ವಿಧಾನಗಳು ವೇಗವಾಗಿರುತ್ತವೆ, ನಂತರ ಎಂಬೆಡೆಡ್ ವಿಧಾನಗಳು, ಮತ್ತು ನಂತರ ಸುತ್ತುವರಿಯುವಿಕೆ ವಿಧಾನಗಳು ಮತ್ತು t-SNE.
- ವ್ಯಾಖ್ಯಾನದ ಅವಶ್ಯಕತೆಗಳು: ಒಂದು ಮುನ್ಸೂಚನೆಯನ್ನು ಏಕೆ ಮಾಡಲಾಗಿದೆ ಎಂಬುದನ್ನು ವಿವರಿಸುವುದು ಮುಖ್ಯವಾಗಿದ್ದರೆ, ಮೂಲ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಉಳಿಸಿಕೊಳ್ಳುವ ಫೀಚರ್ ಆಯ್ಕೆ ವಿಧಾನಗಳು (RFE ಅಥವಾ L1 ನಂತಹ) ಫೀಚರ್ ಹೊರತೆಗೆಯುವಿಕೆ ವಿಧಾನಗಳಿಗಿಂತ (PCA ಯಂತಹ) ಹೆಚ್ಚು ಆದ್ಯತೆ ನೀಡಲಾಗುತ್ತದೆ, ಇದು ಅಮೂರ್ತ ಘಟಕಗಳನ್ನು ರಚಿಸುತ್ತದೆ.
- ರೇಖೀಯತೆ ವಿರುದ್ಧ ರೇಖೀಯವಲ್ಲದತೆ: PCA ಮತ್ತು ರೇಖೀಯ ಮಾದರಿಗಳು ರೇಖೀಯ ಸಂಬಂಧಗಳನ್ನು ಊಹಿಸುತ್ತವೆ, ಆದರೆ t-SNE ಮತ್ತು ಮರ-ಆಧಾರಿತ ವಿಧಾನಗಳು ರೇಖೀಯವಲ್ಲದ ಮಾದರಿಗಳನ್ನು ಸೆರೆಹಿಡಿಯಬಹುದು.
- ಪರಿಶುದ್ಧ ಮತ್ತು ಅಪರಿಶುದ್ಧ: LDA ಸೂಪರ್ವೈಸ್ಡ್ ಆಗಿದೆ (ಗುರಿ ವೇರಿಯೇಬಲ್ ಬಳಸುತ್ತದೆ), ಆದರೆ PCA ಅಪರಿಶುದ್ಧವಾಗಿದೆ.
- ಪ್ರಮಾಣ ಮತ್ತು ಘಟಕಗಳು: PCA ಮತ್ತು LDA ಗಾಗಿ, ಫೀಚರ್ ಸ್ಕೇಲಿಂಗ್ ಅತ್ಯಗತ್ಯ. ವಿಭಿನ್ನ ಜಾಗತಿಕ ಪ್ರದೇಶಗಳಿಂದ ಸಂಗ್ರಹಿಸಿದ ಡೇಟಾದ ಪ್ರಮಾಣ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಪರಿಗಣಿಸಿ. ಉದಾಹರಣೆಗೆ, ಕರೆನ್ಸಿ ಮೌಲ್ಯಗಳು ಅಥವಾ ಸಂವೇದಕ ಓದುವಿಕೆಗಳು ದೇಶಗಳು ಅಥವಾ ಸಂವೇದಕ ಪ್ರಕಾರಗಳಾದ್ಯಂತ ವಿಭಿನ್ನ ಪ್ರಮಾಣಗಳಲ್ಲಿರಬಹುದು.
- ಸಾಂಸ್ಕೃತಿಕ ಮತ್ತು ಪ್ರಾದೇಶಿಕ ಸೂಕ್ಷ್ಮತೆಗಳು: ವಿಭಿನ್ನ ಸಾಂಸ್ಕೃತಿಕ ಸಂದರ್ಭಗಳಿಂದ ಮಾನವ ನಡವಳಿಕೆ, ಜನಸಂಖ್ಯಾಶಾಸ್ತ್ರ ಅಥವಾ ಭಾವನೆಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಡೇಟಾಸೆಟ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ವೈಶಿಷ್ಟ್ಯಗಳ ವ್ಯಾಖ್ಯಾನವು ಸಂಕೀರ್ಣವಾಗಬಹುದು. ಒಂದು ಪ್ರದೇಶದಲ್ಲಿ ಹೆಚ್ಚು ಮುನ್ಸೂಚಕವಾದ ವೈಶಿಷ್ಟ್ಯವು ವಿಭಿನ್ನ ಸಾಮಾಜಿಕ ನಿಯಮಗಳು, ಆರ್ಥಿಕ ಪರಿಸ್ಥಿತಿಗಳು ಅಥವಾ ಡೇಟಾ ಸಂಗ್ರಹಣೆ ವಿಧಾನಗಳಿಂದಾಗಿ ಮತ್ತೊಂದು ಪ್ರದೇಶದಲ್ಲಿ ಅಪ್ರಸ್ತುತ ಅಥವಾ ದಾರಿ ತಪ್ಪಿಸುವಂತಹುದು. ವೈವಿಧ್ಯಮಯ ಜನಸಂಖ್ಯೆಯಾದ್ಯಂತ ವೈಶಿಷ್ಟ್ಯ ಮಹತ್ವವನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವಾಗ ಯಾವಾಗಲೂ ಡೊಮೇನ್ ಪರಿಣತಿ ಪರಿಗಣಿಸಿ.
ಕ್ರಮಬದ್ಧ ಒಳನೋಟಗಳು:
- ಸರಳವಾಗಿ ಪ್ರಾರಂಭಿಸಿ: ತ್ವರಿತ ಮೌಲ್ಯಮಾಪನಕ್ಕಾಗಿ ಮತ್ತು ಸ್ಪಷ್ಟವಾದ ಶಬ್ದವನ್ನು ತೆಗೆದುಹಾಕಲು ಫಿಲ್ಟರ್ ವಿಧಾನಗಳೊಂದಿಗೆ (ಉದಾ., ವ್ಯತ್ಯಾಸ ಥ್ರೆಶೋಲ್ಡ್, ಅಂಕಿಅಂಶ ಪರೀಕ್ಷೆಗಳು) ಪ್ರಾರಂಭಿಸಿ.
- ಪುನರಾವರ್ತಿಸಿ ಮತ್ತು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ: ವಿಭಿನ್ನ ವಿಧಾನಗಳೊಂದಿಗೆ ಪ್ರಯೋಗಿಸಿ ಮತ್ತು ಸೂಕ್ತವಾದ ಮಾನದಂಡಗಳು ಮತ್ತು ಕ್ರಾಸ್-ವ್ಯಾಲಿಡೇಶನ್ ಬಳಸಿ ನಿಮ್ಮ ಮಾದರಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲೆ ಅವುಗಳ ಪರಿಣಾಮವನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ.
- ದೃಶ್ಯೀಕರಿಸಿ: ಡೇಟಾದ ಅಂತರ್ಗತ ರಚನೆಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸಬಹುದಾದ ಮತ್ತು ನಿಮ್ಮ ಫೀಚರ್ ಆಯ್ಕೆ ಕಾರ್ಯತಂತ್ರವನ್ನು ತಿಳಿಸುವ ಕಡಿಮೆ ಆಯಾಮಗಳಲ್ಲಿ ಡೇಟಾವನ್ನು ದೃಶ್ಯೀಕರಿಸಲು PCA ಅಥವಾ t-SNE ನಂತಹ ತಂತ್ರಗಳನ್ನು ಬಳಸಿ.
- ಡೊಮೇನ್ ಪರಿಣತಿ ಮುಖ್ಯ: ಸಂಕೀರ್ಣ ಜಾಗತಿಕ ಡೇಟಾದೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ, ವೈಶಿಷ್ಟ್ಯಗಳ ಅರ್ಥ ಮತ್ತು ಸಂಬಂಧವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಡೊಮೇನ್ ತಜ್ಞರೊಂದಿಗೆ ಸಹಕರಿಸಿ.
- ಸಂಯೋಜಿತ ವಿಧಾನಗಳನ್ನು ಪರಿಗಣಿಸಿ: ಒಂದೇ ವಿಧಾನವನ್ನು ಅವಲಂಬಿಸಿರುವುದಕ್ಕಿಂತ ಹೆಚ್ಚು ಉತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ನೀಡಲು ಹಲವಾರು ಫೀಚರ್ ಆಯ್ಕೆ ತಂತ್ರಗಳನ್ನು ಸಂಯೋಜಿಸುವುದು ಕೆಲವೊಮ್ಮೆ ಸಾಧ್ಯ.
Scikit-learn ನ ಪೈಪ್ಲೈನ್ ಸಮಗ್ರ ಕೆಲಸಕ್ಕಾಗಿ
Scikit-learn ನ Pipeline ವಸ್ತುವನ್ನು ಪೂರ್ವ-ಸಂಸ್ಕರಣಾ ಹಂತಗಳನ್ನು, ಫೀಚರ್ ಆಯ್ಕೆ/ಹೊರತೆಗೆಯುವಿಕೆ ಸೇರಿದಂತೆ, ಮಾದರಿ ತರಬೇತಿಯೊಂದಿಗೆ ಸಮಗ್ರಗೊಳಿಸಲು ಅಸಾಧಾರಣವಾಗಿ ಉಪಯುಕ್ತವಾಗಿದೆ. ಇದು ಕ್ರಾಸ್-ವ್ಯಾಲಿಡೇಶನ್ನ ಪ್ರತಿ ಮಡಿಕೆಯಲ್ಲಿ ನಿಮ್ಮ ಫೀಚರ್ ಆಯ್ಕೆಯು ಸ್ಥಿರವಾಗಿ ನಿರ್ವಹಿಸಲ್ಪಡುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ, ಡೇಟಾ ಸೋರಿಕೆಯನ್ನು ತಡೆಯುತ್ತದೆ ಮತ್ತು ಹೆಚ್ಚು ವಿಶ್ವಾಸಾರ್ಹ ಫಲಿತಾಂಶಗಳನ್ನು ನೀಡುತ್ತದೆ. ಇದು ವಿಭಿನ್ನ ಜಾಗತಿಕ ಮಾರುಕಟ್ಟೆಗಳಲ್ಲಿ ನಿಯೋಜಿಸಲ್ಪಡುವ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವಾಗ ಇದು ವಿಶೇಷವಾಗಿ ನಿರ್ಣಾಯಕವಾಗಿದೆ.
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.datasets import load_breast_cancer
bc = load_breast_cancer()
X, y = bc.data, bc.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Create a pipeline that first scales, then selects features, then trains a classifier
pipe = Pipeline([
('scaler', StandardScaler()),
('selector', SelectKBest(score_func=f_classif, k=10)),
('classifier', LogisticRegression(solver='liblinear'))
])
# Train the pipeline
pipe.fit(X_train, y_train)
# Evaluate the pipeline using cross-validation
cv_scores = cross_val_score(pipe, X_train, y_train, cv=5)
print(f"Cross-validation scores: {cv_scores}")
print(f"Average CV score: {np.mean(cv_scores):.4f}")
# Make predictions on the test set
accuracy = pipe.score(X_test, y_test)
print(f"Test set accuracy: {accuracy:.4f}")
ಪೈಪ್ಲೈನ್ಗಳನ್ನು ಬಳಸುವುದರಿಂದ ಸಂಪೂರ್ಣ ಪ್ರಕ್ರಿಯೆ - ಸ್ಕೇಲಿಂಗ್ನಿಂದ ಫೀಚರ್ ಆಯ್ಕೆ ಮತ್ತು ವರ್ಗೀಕರಣದವರೆಗೆ - ಒಂದು ಘಟಕವಾಗಿ ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ಇದು ದೃಢವಾದ ಮಾದರಿ ಅಭಿವೃದ್ಧಿಗೆ ಒಂದು ಅತ್ಯುತ್ತಮ ಅಭ್ಯಾಸವಾಗಿದೆ, ವಿಶೇಷವಾಗಿ ಮಾದರಿಗಳು ಜಾಗತಿಕ ನಿಯೋಜನೆಗಾಗಿ ಉದ್ದೇಶಿಸಲ್ಪಟ್ಟಾಗ, ಅಲ್ಲಿ ವಿಭಿನ್ನ ಡೇಟಾ ವಿತರಣೆಗಳಾದ್ಯಂತ ಸ್ಥಿರವಾದ ಕಾರ್ಯಕ್ಷಮತೆ ಮುಖ್ಯವಾಗಿದೆ.
ತೀರ್ಮಾನ
ಫೀಚರ್ ಆಯ್ಕೆ ಮತ್ತು ಹೊರತೆಗೆಯುವಿಕೆ ಮೂಲಕ ಡೈಮೆನ್ಶನಲಿಟಿ ಕಡಿತವು ಸಮರ್ಥ, ದೃಢವಾದ ಮತ್ತು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದಾದ ಯಂತ್ರ ಕಲಿಕೆ ಮಾದರಿಗಳನ್ನು ನಿರ್ಮಿಸುವಲ್ಲಿ ಒಂದು ಪ್ರಮುಖ ಹಂತವಾಗಿದೆ. Scikit-learn ಈ ಸವಾಲುಗಳನ್ನು ಎದುರಿಸಲು ಸಮಗ್ರ ಟೂಲ್ಕಿಟ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ, ಪ್ರಪಂಚದಾದ್ಯಂತದ ಡೇಟಾ ವಿಜ್ಞಾನಿಗಳಿಗೆ ಶಕ್ತಿ ನೀಡುತ್ತದೆ. ವಿಭಿನ್ನ ಕಾರ್ಯವಿಧಾನಗಳು - ಫಿಲ್ಟರ್, ಸುತ್ತುವರಿಯುವಿಕೆ, ಎಂಬೆಡೆಡ್ ವಿಧಾನಗಳು, ಮತ್ತು PCA ಮತ್ತು LDA ಯಂತಹ ಫೀಚರ್ ಹೊರತೆಗೆಯುವಿಕೆ ತಂತ್ರಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಡೇಟಾಸೆಟ್ ಮತ್ತು ಉದ್ದೇಶಗಳಿಗೆ ಅನುಗುಣವಾಗಿ ನೀವು ತಿಳುವಳಿಕೆಯುಳ್ಳ ನಿರ್ಧಾರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು.
ನಮ್ಮ ಜಾಗತಿಕ ಪ್ರೇಕ್ಷಕರಿಗೆ, ಪರಿಗಣನೆಗಳು ಕೇವಲ ಅಲ್ಗಾರಿದಮಿಕ್ ಆಯ್ಕೆಗಳನ್ನು ಮೀರಿವೆ. ಡೇಟಾ ಮೂಲ, ವಿಭಿನ್ನ ಪ್ರದೇಶಗಳಲ್ಲಿ ಫೀಚರ್ ಸಂಗ್ರಹಣೆಯಿಂದ ಪರಿಚಯಿಸಲ್ಪಟ್ಟ ಸಂಭವನೀಯ ಪಕ್ಷಪಾತಗಳು, ಮತ್ತು ಸ್ಥಳೀಯ ಪಾಲುದಾರರ ನಿರ್ದಿಷ್ಟ ವ್ಯಾಖ್ಯಾನದ ಅಗತ್ಯತೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮುಖ್ಯವಾಗಿದೆ. Scikit-learn ನ Pipeline ನಂತಹ ಸಾಧನಗಳನ್ನು ಅಳವಡಿಸುವುದು ಒಂದು ರಚನಾತ್ಮಕ ಮತ್ತು ಪುನರುತ್ಪಾದಕ ಕೆಲಸದ ಹರಿವನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ, ಇದು ವಿಭಿನ್ನ ಅಂತರರಾಷ್ಟ್ರೀಯ ಸಂದರ್ಭಗಳಲ್ಲಿ ವಿಶ್ವಾಸಾರ್ಹ AI ಪರಿಹಾರಗಳನ್ನು ನಿಯೋಜಿಸಲು ಅವಶ್ಯಕವಾಗಿದೆ.
ಆಧುನಿಕ ಡೇಟಾ ವಿಜ್ಞಾನದ ಸಂಕೀರ್ಣತೆಗಳನ್ನು ನೀವು ನಿರ್ವಹಿಸುವಾಗ, Scikit-learn ನ ಫೀಚರ್ ಆಯ್ಕೆ ಸಾಮರ್ಥ್ಯಗಳಲ್ಲಿ ಪರಿಣತಿ ಹೊಂದುವುದು ನಿಶ್ಚಿತವಾಗಿ ಒಂದು ಮಹತ್ವದ ಆಸ್ತಿಯಾಗಿದ್ದು, ನಿಮ್ಮ ಡೇಟಾದ ಸಂಪೂರ್ಣ ಸಾಮರ್ಥ್ಯವನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ, ಅದರ ಮೂಲವನ್ನು ಲೆಕ್ಕಿಸದೆ.