Могу ли я использовать pca или z Score для выбора функций? - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь сделать проект с баскетболом. В этом проекте у меня есть тонна данных о производительности игроков из прошлого. Есть 54 функции. Я только что немного узнал о PCA и z-счете (все еще размыто об этом).

Могу ли я использовать PCA для выбора функций моих функций?

Спасибо!

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Что ж, выполнение PCA и вычисление Z-баллов может привести вас к этому, но есть НАМНОГО лучший способ решения этой проблемы. Пожалуйста, рассмотрите возможность использования Feature Engineering, чтобы идентифицировать функции, которые наиболее тесно связаны с набором данных (зависимой переменной), и удаление не относящихся к делу или менее важных функций, которые не вносят большой вклад в нашу целевую переменную (для достижения лучшей общей точности для наша модель).

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


df = pd.read_csv("https://rodeo-tutorials.s3.amazonaws.com/data/credit-data-trainingset.csv")
df.head()

from sklearn.ensemble import RandomForestClassifier

features = np.array(['revolving_utilization_of_unsecured_lines',
                     'age', 'number_of_time30-59_days_past_due_not_worse',
                     'debt_ratio', 'monthly_income','number_of_open_credit_lines_and_loans', 
                     'number_of_times90_days_late', 'number_real_estate_loans_or_lines',
                     'number_of_time60-89_days_past_due_not_worse', 'number_of_dependents'])
clf = RandomForestClassifier()
clf.fit(df[features], df['serious_dlqin2yrs'])

# from the calculated importances, order them from most to least important
# and make a barplot so we can visualize what is/isn't important
importances = clf.feature_importances_
sorted_idx = np.argsort(importances)

padding = np.arange(len(features)) + 0.5
plt.barh(padding, importances[sorted_idx], align='center')
plt.yticks(padding, features[sorted_idx])
plt.xlabel("Relative Importance")
plt.title("Variable Importance")
plt.show()

Просто внесите все (довольно очевидные) изменения, которые нужно внести, чтобы настроить этот код в соответствии с вашим конкретным c набором данных.

Вот несколько ссылок что далее объясняет, как работает Feature Feature.

https://github.com/WillKoehrsen/feature-selector/blob/master/Feature%20Selector%20Usage.ipynb

https://towardsdatascience.com/feature-selection-techniques-in-machine-learning-with-python-f24e7da3f36e

Для справки здесь хорошая ссылка для лучшего понимания PCA.

https://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_iris.html

Кроме того, вот отличная ссылка для лучшего понимания Z-показателей.

Pandas - вычислить z-показатель для всех столбцов

0 голосов
/ 12 марта 2020

Ну, это зависит от важности функции и полученных вами оценок (таких как точность, оценка F1, RO C). Если ваша модель подходит, тогда вы можете удалить менее важные функции.

https://en.wikipedia.org/wiki/Curse_of_dimensionality

Это не обязательно с PCA, в дополнение к ответу A SH вы также можете использовать другие модели деревьев, чтобы найти функцию важностей. Только не забудьте масштабировать объекты перед моделированием, если вы не масштабируете, то результаты важности могут быть искажены.

...