Как рассчитать, какая независимая переменная больше всего влияет на зависимую переменную? - PullRequest
2 голосов
/ 07 апреля 2020

У меня есть датафрейм с 5 независимыми переменными и 1 зависимой переменной. Все мои переменные непрерывны, включая зависимую переменную. Есть ли способ, которым я могу вычислить, какая из моих независимых переменных влияет на мою зависимую переменную больше всего в python? Есть ли алгоритм, который я мог бы запустить, чтобы сделать это для меня?

Я попробовал метод получения информации, но это был метод классификации, поэтому мне пришлось использовать labelencoder для преобразования моей зависимой переменной. Я использовал следующий код после разбиения своего набора данных на поезд и набор тестов

#encoding the dependant variable
lab_enc = preprocessing.LabelEncoder()
training_scores_encoded = lab_enc.fit_transform(y_train)

#SelectFromModel will select those features which importance is greater than the mean importance of all the features by default, but we can alter this threshold if we want.
#Firstly, I specify the random forest instance, indicating the number of trees.
#Then I use selectFromModel object from sklearn to automatically select the features.
sel = SelectFromModel(RandomForestClassifier(n_estimators = 100))
sel.fit(X_train, training_scores_encoded)

#We can now make a list and count the selected features.    
selected_feat= X_train.columns[(sel.get_support())]
len(selected_feat)

#viewing the importances 
import matplotlib.pyplot as plt
importances = sel.estimator_.feature_importances_
indices = np.argsort(importances)[::-1]
# X is the train data used to fit the model 
plt.figure()
plt.title("Feature importances")
plt.bar(range(X_train.shape[1]), importances[indices],
       color="r", align="center")
plt.xticks(range(X_train.shape[1]), indices)
plt.xlim([-1, X_train.shape[1]])

Хотя я получил результат, я не уверен в этом, потому что мне пришлось кодировать мою (непрерывную) зависимую переменную. Это правильный путь к go? если нет, что я могу сделать?

Заранее благодарим за помощь

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Вы также можете выбрать объекты с самой высокой корреляцией с ответом.

print([(feature, abs(df[response].corr(df[feature]))) for feature in features])

Используются значения из комментария Тамар ie.

for feature in feature_cols:
    print(f'feature: {feature} correlation: {abs(target_v.corr(df[feature]))}')
1 голос
/ 07 апреля 2020

Вы можете использовать класс SelectKBest из модуля scikit-learn.

Проверьте оригинальную документацию здесь .

Этот метод называется «Выбор функций».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...