具有连续和分类数据(具有Boruta,决策树等)的特征选择

时间:2020-01-30 06:52:49

标签: python machine-learning linear-regression data-science random-forest

我正在进行多元回归,其中包含许多列数据,其中包括数字数据和分类数据,以确定商品的价值。

有很多数据。但是,为了避免过度拟合的问题,我需要选择可以解释商品价值的特征。

首先,我尝试使用 dataframe.corr 来计算各列与商品价值之间的相关性。

为了比较相关性,我使用了 boruta.BorutaPy 随机森林技术和 sklearn.linear_model.LinearRegression 进行特征选择。 不幸的是,分类数据以这种方式打扰。我了解了这些技术可用于分类数据。

import pandas as pd

data = pd.read_csv(dir + file)

X = data.drop(['value','Id'], axis = 1)

index = X.keys()

Y = data['value']

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = .3)

此代码显示了如何读取文件并从读取的数据中选择训练/测试数据(当然,X数据框中包含分类数据)。

这是选择功能的简单方法

model = linear_model.LinearRegression()

n_feat = 15    # The number of feature what I want to select

rfe = RFE(model, n_features_to_select = n_feat, step = 1)
fit = rfe.fit(X, Y)

博鲁塔方式是

from sklearn.feature_selection import *
from boruta import BorutaPy

rf = RandomForestRegressor(n_estimators = 100, n_jobs=-1, oob_score=True)

feat_selector = BorutaPy(rf, n_estimators='auto', verbose=0, max_iter=200)

boruta_fit = feat_selector.fit(X_train.values, Y_train.values)

由于分类数据的值是一个字符串,它还会显示ValueError。

我想了解使用分类数据无虚拟变量进行特征选择的解决方案。 因为我认为每个类别的虚拟变量都不适合应用多元回归。 如果我的看法是错误的,我很高兴听到您的建议。

感谢您的帮助!

0 个答案:

没有答案
相关问题