我正在进行多元回归,其中包含许多列数据,其中包括数字数据和分类数据,以确定商品的价值。
有很多数据。但是,为了避免过度拟合的问题,我需要选择可以解释商品价值的特征。
首先,我尝试使用 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。
我想了解使用分类数据无虚拟变量进行特征选择的解决方案。 因为我认为每个类别的虚拟变量都不适合应用多元回归。 如果我的看法是错误的,我很高兴听到您的建议。
感谢您的帮助!