Три метода выбора функций, чтобы улучшить ваш результат.

В машинном обучении и статистике используется выбор признаков, также известный как выбор переменных, выбор атрибутов или выбор подмножеств переменных — это процесс выбора подмножества соответствующих функций (переменных, предикторов) для использования при построении модели. В машинном обучении у нас есть три метода выбора признаков.

  1. Универсальный выбор
  2. Важность функции
  3. Корреляционная матрица с тепловой картой

Однофакторный выбор: можно использовать статистические тесты для выбора тех функций, которые имеют наибольшую связь с выходной переменной. Библиотека 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).