Три метода выбора функций, чтобы улучшить ваш результат.
В машинном обучении и статистике используется выбор признаков, также известный как выбор переменных, выбор атрибутов или выбор подмножеств переменных — это процесс выбора подмножества соответствующих функций (переменных, предикторов) для использования при построении модели. В машинном обучении у нас есть три метода выбора признаков.
- Универсальный выбор
- Важность функции
- Корреляционная матрица с тепловой картой
Однофакторный выбор: можно использовать статистические тесты для выбора тех функций, которые имеют наибольшую связь с выходной переменной. Библиотека scikit-learn предоставляет класс SelectKBest. которые можно использовать с набором различных статистических тестов для выбора определенного количества функций.
В приведенном ниже примере используется статистический критерий хи-квадрат (хи²) для неотрицательных функций, чтобы выбрать 10 лучших функций из набора данных прогнозирования диапазона цен для мобильных устройств.
#Libraries import pandas as pd import numpy as np from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import chi2 data = pd.read_csv("train.csv")bestfeatures = SelectKBest(score_func=chi2, k=10) fit = bestfeatures.fit(X,y) fscores = pd.DataFrame(fit.scores_) dfcolumns = pd.DataFrame(X.columns) featureScores = pd.concat([dfcolumns,dfscores],axis=1) featureScores.columns = ['Specs','Score'] #nam featureScores
Важность функции дает вам оценку для каждой функции ваших данных, чем выше оценка, тем важнее или релевантнее функция по отношению к вашей выходной переменной. Важность функции — это встроенный класс, который поставляется с классификаторами на основе дерева, мы будем использовать дополнительный классификатор дерева для извлечение 10 лучших функций для набора данных.
from sklearn.ensemble import ExtraTreesClassifier import matplotlib.pyplot as plt model = ExtraTreesClassifier() model.fit(X,y) print(model.feature_importances_) feat_importances = pd.Series(model.feature_importances_, index=X.columns) feat_importances.nlargest(10).plot(kind='barh') plt.show()
Корреляция указывает, как признаки связаны друг с другом или с целевой переменной. Корреляция может быть положительной (увеличение одного значения признака увеличивает значение целевой переменной) или отрицательной (увеличение одного значения признака уменьшает значение целевой переменной). ). Тепловая карта позволяет легко определить, какие функции больше всего связаны с целевой переменной, мы построим тепловую карту коррелированных функций, используя библиотеку Seaborn.
import seaborn as sns #get correlations of each features in dataset x = data.corr() top_corr_features = x.index plt.figure(figsize=(20,20)) #plot heat map g=sns.heatmap(data[top_corr_features].corr(),annot=True,cmap="RdYlGn")
Для набора данных и фрагментов кода для 3 методов функций: Нажмите здесь (GitHub и Fork).