🏆 151 ΠΊΡΡΡ Π·Π° 1 ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΡ: Ρ Π²Π°ΡΠΈΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ β Π±Π΅ΡΠΈ Π²ΡΠ΅ ΠΈ ΡΡΠ°Π·Ρ!

ΠΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ β 151 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ. ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΡ Π½Π° OTUS ΡΠ΅ΠΉΡΠ°Ρ!
Π’Π΅Ρ Π½ΠΎΠΌΠΈΡ ΠΌΡΠΈΡΡΡ Π²ΠΏΠ΅ΡΠ΅Π΄, Π° Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½ΠΈΠΌΠΈ ΡΠ°ΡΡΡΡ ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ°ΠΌ. OTUS ΠΏΡΠΈΠ΄ΡΠΌΠ°Π» ΠΊΡΡΡΡΡ ΡΡΡΠΊΡ β ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΡ Π½Π° 151 ΠΊΡΡΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ IT!
-
ΠΠΎΡΠ΅ΠΌΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ° OTUS ΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈΠ³ΡΡ:
- ΠΠΎΡΡΡΠΏ ΠΊ 151 ΠΊΡΡΡΡ ΠΎΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΡΡΡΠΈΡ ΡΠΊΡΠΏΠ΅ΡΡΠΎΠ²
- Π 3 ΡΠ°Π·Π° Π²ΡΠ³ΠΎΠ΄Π½Π΅Π΅, ΡΠ΅ΠΌ ΠΏΠΎΠΊΡΠΏΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ
- ΠΠΎ 3 ΠΊΡΡΡΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°ΡΡΠ°Ρ
- Π‘Π²ΠΎΠ±ΠΎΠ΄Π° Π²ΡΠ±ΠΎΡΠ° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ β ΠΌΠ΅Π½ΡΠΉ ΡΡΠ΅ΠΊΠΈ ΠΊΠΎΠ³Π΄Π° ΡΠ³ΠΎΠ΄Π½ΠΎ
ΠΠ·ΡΡΠ°ΠΉ Π½ΠΎΠ²ΠΎΠ΅, ΡΠ°Π·Π²ΠΈΠ²Π°ΠΉΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠ΅ΠΌΠΏΠ΅, ΠΌΠ΅Π½ΡΠΉ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ β ΠΏΠΎΠ΄ΠΏΠΈΡΠΈΡΡ Π½Π° OTUS ΠΈ ΠΏΡΠΎΠΊΠ°ΡΠΈΠ²Π°ΠΉ ΡΠΊΠΈΠ»Ρ ΠΏΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ!
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576. Erid 2VtzqupFnNL
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΎΡΠ±ΠΎΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ²?
Β«ΠΡΠΎΠ³ΠΎΠ½ΠΊΠ°Β» Π²ΡΠ΅Ρ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ β ΠΏΠ»ΠΎΡ Π°Ρ ΠΈΠ΄Π΅Ρ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠ»ΠΎΡ ΠΎ, ΠΊΠΎΠ³Π΄Π° Π² Π½ΠΈΡ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ βΡΠΈΡβ. ΠΠ°ΠΊ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΡΠ±ΠΎΡΠ° ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ².
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ°ΡΡΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡ Π½Π°Π±ΠΎΡ ΡΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ. ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ², Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½Ρ ΡΠ°Π·Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ Π½Π°ΡΠΈ ΡΠ΅Π»ΠΈ, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΌ Π΄Π°ΡΠ°ΡΠ΅ΡΠΎΠΌ.
ΠΡΠ±ΠΎΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ β Π½Π΅ΠΏΡΠΎΡΡΠ°Ρ Π·Π°Π΄Π°ΡΠ°. ΠΠΎΠ»ΡΡΠΎΠ΅ ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅, ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ³ΡΠΎΠ·Π° ΠΏΠ΅ΡΠ΅ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ.
1. ΠΠ΅ΡΠΎΠ΄Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ (filter methods)
ΠΡΠ±ΠΈΡΠ°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² β ΠΎΠ½ΠΈ Π±ΡΡΡΡΠ΅Π΅ ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π·Π°ΡΡΠ°ΡΠ½Ρ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ. ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ Π² Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ Π΄Π΅ΡΠ΅Π²Π»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ.
Π‘Π±ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ (Information Gain, IG)
ΠΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ½ΡΡΠΎΠΏΠΈΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ . ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΡΠ±ΠΎΡΠ° ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΏΡΡΠ΅ΠΌ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΡΠΎΡΡΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
import pandas as pd
import numpy as np
from sklearn.feature_selection import mutual_info_classif
import matplotlib.pyplot as plt
importances = mutual_info_classif(X, y)
# ΠΠ΄Π΅ data - Π²Π°Ρ Π΄Π°ΡΠ°ΡΠ΅Ρ; X, y β Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ ΠΈ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ
feature_importances = pd.Series(importances, data.columns[0:len(data.columns)-1])
feature_importances.plot(kind='barh', color='teal')
plt.show()
ΠΡΠΈΡΠ΅ΡΠΈΠΉ Ρ ΠΈ-ΠΊΠ²Π°Π΄ΡΠ°Ρ (Chi-square Test)
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² Π² Π΄Π°ΡΠ°ΡΠ΅ΡΠ΅. ΠΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ Ρ ΠΈ-ΠΊΠ²Π°Π΄ΡΠ°Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ ΠΈ ΡΠ΅Π»ΡΡ, ΠΏΠΎΡΠ»Π΅ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ βΡΠΈΡβ Ρ Π»ΡΡΡΠΈΠΌΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ. Π§ΡΠΎΠ±Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊΡΠΈΡΠ΅ΡΠΈΠΉ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π² Π½Π°Π±ΠΎΡΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ: ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ, ΠΈ ΡΠ°ΡΡΠΎΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ > 5.
import pandas as pd
import numpy as np
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
# ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΡΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π°.
# ΠΠ΄Π΅ X, y - Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ ΠΈ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
X_categorical = X.astype(int)
# ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ 3 ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° Ρ Π½Π°ΠΈΠ²ΡΡΡΠΈΠΌ "Ρ
ΠΈ-ΠΊΠ²Π°Π΄ΡΠ°Ρ".
chi2_features = SelectKBest(chi2, k = 3)
X_kbest_features = chi2_features.fit_transform(X_categorical, y)
# ΠΡΠ²ΠΎΠ΄ "Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅"
print("ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² Π΄ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ:", X_categorical.shape[1])
print("ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ:", X_kbest_features.shape[1])
ΠΡΠΈΡΠ΅ΡΠΈΠΉ Π€ΠΈΡΠ΅ΡΠ° (F-ΡΠ΅ΡΡ)
ΠΡΠΈΡΠ΅ΡΠΈΠΉ Π€ΠΈΡΠ΅ΡΠ° β ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ Π²ΡΠ±ΠΎΡΠ° ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ². ΠΠ»Π³ΠΎΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π½Π³ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΊΡΠΈΡΠ΅ΡΠΈΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ±ΡΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠΆΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡ ΠΎΡΠ±ΠΎΡ.
import pandas as pd
import numpy as np
from skfeature.function.similarity_based import fisher_score
import matplotlib.pyplot as plt
# ΠΡΡΠΈΡΠ»ΡΠ΅ΠΌ ΠΊΡΠΈΡΠ΅ΡΠΈΠΉ
# ΠΠ΄Π΅ X, y - Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ ΠΈ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ranks = fisher_score.fisher_score(X, y)
# ΠΠ΅Π»Π°Π΅ΠΌ Π³ΡΠ°ΡΠΈΠΊ Π½Π°ΡΠΈΡ
"ΡΠΈΡ"
# ΠΠ΄Π΅ data - Π²Π°Ρ Π΄Π°ΡΠ°ΡΠ΅Ρ
feature_importances = pd.Series(ranks, data.columns[0:len(data.columns)-1])
feature_importances.plot(kind='barh', color='teal')
plt.show()
ΠΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠΈ
Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΊΠΎΡΡΠ΅Π»ΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΠ΅Π»Π΅Π²ΡΠΌ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ, Π½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½ΠΈΠΆΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΡ ΠΠΈΡΡΠΎΠ½Π°.
import seaborn as sns
import matplotlib.pyplot as plt
# ΠΠ°ΡΡΠΈΡΠ° ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠΈ
# ΠΠ΄Π΅ data - Π²Π°Ρ Π΄Π°ΡΠ°ΡΠ΅Ρ
correlation_matrix = data.corr()
# ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ Π½Π° ΡΠ΅ΠΏΠ»ΠΎΠ²ΡΡ ΠΊΠ°ΡΡΡ
plt.figure(figsize= (10, 6))
sns.heatmap(correlation_matrix, annot = True)
ΠΠ±ΡΠΎΠ»ΡΡΠ½ΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ (Mean Absolute Difference, MAD)
ΠΡΠ° ΡΠ΅Ρ Π½ΠΈΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²ΡΡΠΈΡΠ»ΠΈΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΎΡ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ.
import pandas as pd
import numpy as np
import matplotlib as plt
# ΠΡΡΠΈΡΠ»ΡΠ΅ΠΌ MAD
# ΠΠ΄Π΅ X - Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
mean_absolute_difference = np.sum(np.abs(X - np.mean(X, axis = 0)), axis = 0) / X.shape[0]
# ΠΠ°Ρ Π³ΡΠ°ΡΠΈΠΊ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ²
plt.bar(np.arange(X.shape[1]), mean_absolute_difference, color = 'teal')
2. ΠΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±Π΅ΡΡΠΊΠΈ (wrapper methods)
ΠΡΠΎΡΠ΅ΡΡ Π²ΡΠ±ΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ. ΠΠ½ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΆΠ°Π΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°, ΠΎΡΠ΅Π½ΠΈΠ²Π°Ρ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΊΡΠΈΡΠ΅ΡΠΈΡ. ΠΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π»ΡΡΡΡΡ ΡΠΎΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ.
ΠΡΡΠΌΠΎΠΉ ΠΎΡΠ±ΠΎΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ²
ΠΡΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ ΠΏΡΡΠΌΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅Π»ΠΈ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π΄ΡΡΠ³ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π°Π΅Ρ Π»ΡΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ. ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΊΡΠΈΡΠ΅ΡΠΈΠΉ.
from sklearn.linear_model import LogisticRegression
from mlxtend.feature_selection import SequentialFeatureSelector
lr = LogisticRegression(class_weight = 'balanced', solver = 'lbfgs', random_state=42, n_jobs=-1, max_iter=50e)
ffs = SequentialFeatureSelector(lr, k_features='best', forward = True, n_jobs=-1)
ffs.fit(X, Y)
# X, y β Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ ΠΈ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
# X_train β Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΎΠ±ΡΡΠ°ΡΡΠ΅ΠΉΡΡ Π²ΡΠ±ΠΎΡΠΊΠΈ,
# y_pred β Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΠΊΡΠΎΡΠ°
features = list(ffs.k_feature_names_)
features = list(map(int, features))
y_pred = lr.predict(X_train[features])
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΡΠ±ΠΎΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ²
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΡΠΌΠΎ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π²ΡΠ±ΠΎΡΠ° Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ. ΠΠ΄Π΅ΡΡ ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠΎ Π²ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΡΡΡΠΎΠΈΠΌ ΠΌΠΎΠ΄Π΅Π»Ρ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΠ· ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π°Π΅Ρ Π½Π°ΠΈΠ»ΡΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΡ ΠΎΡΠ΅Π½ΠΊΠΈ. ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΊΡΠΈΡΠ΅ΡΠΈΠΉ.
from sklearn.linear_model import LogisticRegression
from mlxtend.feature_selection import SequentialFeatureSelector
lr = LogisticRegression(class_weight = 'balanced', solver = 'lbfgs', random_state=42, n_jobs=-1, max_iter=50e)
lr.fit(X, y)
bfs = SequentialFeatureSelector(lr, k_features='best', forward = False, n_jobs=-1)
bfs.fit(X, y)
features = list(bfs.k_feature_names_)
features = list(map(int, features))
lr.fit(X_train[features], y_train)
y_pred = lr.predict(x_train[features])
ΠΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡΠΈΠΉ Π²ΡΠ±ΠΎΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ²
ΠΡΠΎ ΡΠ°ΠΌΡΠΉ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ±ΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ· Π²ΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ . ΠΠ³ΠΎ ΡΡΡΡ β ΠΎΡΠ΅Π½ΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ°. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π· Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ.
from mlxtend.feature_selection import ExhaustiveFeatureSelector
from sklearn.ensemble import RandomForestClassifier
# ΡΠΎΠ·Π΄Π°Π΅ΠΌ ExhaustiveFeatureSeLlector ΠΎΠ±ΡΠ΅ΠΊΡ.
efs = ExhaustiveFeatureSelector(RandomForestClassifier(),
min_features=4,
max_features=8,
scoring='roc_auc',
cv=2)
efs = efs.fit(X, Y)
# Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ
selected_features = X_train.columns[list(efs.best_idx_)]
print(selected_features)
# Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΈΠ½Π°Π»ΡΠ½ΡΡ ΠΎΡΠ΅Π½ΠΊΡ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
print(efs.best_score_)
Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ²
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΠΎΠ΄Π΅Π»Ρ ΠΎΠ±ΡΡΠ°Π΅ΡΡΡ Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ², ΠΈ Π²Π°ΠΆΠ½ΠΎΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π»ΠΈΠ±ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠ° coef_
ΠΈΠ»ΠΈ feature_importances_
. ΠΠ°ΡΠ΅ΠΌ Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΡΠ΅ βΡΠΈΡΠΈβ ΡΠ΄Π°Π»ΡΡΡΡΡ ΠΈΠ· ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡΠ°. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠΎ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ°.
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import RFE
lr = LogisticRegression(class_weight = 'balanced', solver = 'lbfgs', random_state=42, n_jobs=-1, max_iter=50e)
rfe = RFE(lr, n_features_to_select=7)
rfe.fit(X_train, y_train)
# X_train, y_train - Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ ΠΈ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΎΠ±ΡΡΠ°ΡΡΠ΅ΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
y_pred = rfe.predict(X_train)
3. ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ (embedded methods)
Π Π΅Π³ΡΠ»ΡΡΠΈΠ·Π°ΡΠΈΡ LASSO (L1)
Π Π΅Π³ΡΠ»ΡΡΠΈΠ·Π°ΡΠΈΡ ΡΠΎΡΡΠΎΠΈΡ Π² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΡΡΠ°ΡΠ° (penalty) ΠΊ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΡΡΠ΅Π·ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π³ΠΎΠ½ΠΊΠΈ. ΠΡΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠΈΠ·Π°ΡΠΈΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ°ΠΌ, ΡΠΌΠ½ΠΎΠΆΠ°ΡΡΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΏΡΠ΅Π΄ΠΈΠΊΡΠΎΡΠΎΠ². Lasso-ΡΠ΅Π³ΡΠ»ΡΡΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΌ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ Π΄ΠΎ Π½ΡΠ»Ρ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ°ΠΊΠΈΠ΅ βΡΠΈΡΠΈβ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΠ· ΠΌΠΎΠ΄Π΅Π»ΠΈ.
from sklearn.linear_model import LogisticRegression
from sklearn.feature_selection import SelectFromModel
# Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π½Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠΈΠ·Π°ΡΠΈΠΈ C=1
logistic = LogisticRegression(C=1, penalty="l1", solver='liblinear', random_state=7).fit(X, y)
# ΠΠ΄Π΅ X, y - Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ ΠΈ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
model = SelectFromModel(logistic, prefit=True)
X_new = model.transform(X)
# ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ Π½ΡΠΆΠ½ΡΠ΅ Π½Π°ΠΌ ΡΡΠΎΠ»Π±ΡΡ ΠΈΠ· Π΄Π°ΡΠ°ΡΠ΅ΡΠ° Π±Π΅Π· Π½ΡΠ»Π΅Π²ΡΡ
Π΄Π°Π½Π½ΡΡ
# ΠΠ΄Π΅ βselected_featuresβ - ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ Π½Π°ΠΌΠΈ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ (ΡΠΌ. ΠΏΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ)
selected_columns = selected_features.columns[selected_features.var() != 0]
print(selected_columns)
ΠΠ΅ΡΠΎΠ΄ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π‘Π»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ ΠΠ΅ΡΠ° (Random Forest Importance)
Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π΅ΡΠ΅Π²Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ Π»Π΅ΡΠ°ΠΌΠΈ, Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ°Π½ΠΆΠΈΡΡΡΡΡΡ ΠΏΠΎ ΡΠΎΠΌΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΎ ΠΎΠ½ΠΈ ΡΠ»ΡΡΡΠ°ΡΡ ΡΠΈΡΡΠΎΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² ΠΏΠ»Π°Π½Π΅ Π΄Π°Π½Π½ΡΡ . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, βΠΎΠ±ΡΠ΅Π·Π°Ρβ Π΄Π΅ΡΠ΅Π²ΡΡ Π½ΠΈΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ.
import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
# ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ Ρ Π²Π°ΡΠΈΠΌΠΈ Π³ΠΈΠΏΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ
model = RandomForestClassifier(n_estimators=340)
# ΠΠ±ΡΡΠ°Π΅ΠΌ ΠΌΠΎΠ΄Π΅Π»Ρ Π½Π° Π²Π°ΡΠ΅ΠΉ Π²ΡΠ±ΠΎΡΠΊΠ΅; ΠΠ΄Π΅ X, y - Π²Ρ
ΠΎΠ΄Π½ΡΠ΅ ΠΈ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
model.fit(X, y)
# ΠΠΎΠ΄Π±ΠΈΡΠ°Π΅ΠΌ ΡΠ°ΠΌΡΠ΅ Π²Π°ΠΆΠ½ΡΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ
importances = model.feature_importances_
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π΄Π°ΡΠ°ΡΠ΅Ρ Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
final_df = pd.DataFrame({"Features" : pd.DataFrame(X).columns, "Importances" : importances})
final_df.set_index('Importances')
# Π‘ΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΈΡ
ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π»ΡΡΡΠ΅ΠΉ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
final_df = final_df.sort_values('Importances')
# ΠΡΠ²ΠΎΠ΄ΠΈΠΌ Π½Π° Π³ΡΠ°ΡΠΈΠΊ
final_df.plot.bar(color = 'teal')
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ²: ΡΠΈΠΏΠ° ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ°. ΠΠ΅ ΡΡΠΎΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π±ΡΠ²Π°ΡΡ ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ΅ΡΡΡΡΠ°Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°ΠΊΠ°. ΠΠ·ΡΠ² Π½Π° Π²ΠΎΠΎΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Π΅ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΡΡΠ°ΡΠ΅ΠΉ, Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ΅Π±Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ²Π΅ΡΠ΅Π½Π½Π΅Π΅ Π² ΠΌΠΈΡΠ΅ Π½Π°ΡΠΊΠΈ ΠΎ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ