第一次海报!我真的非常对数据科学不熟悉,并决定参加竞赛。我编写了一些代码来从我的训练数据集X(9999行,2000列)中选择前10%的特征。
我无法弄清楚如何将相同的特征选择应用于新的验证数据集X_val,以便我可以使用我的AdaBoostRegressor预测Y_val。任何帮助,将不胜感激!使用下面的代码我得到一个关于X_val如何具有太多功能的错误。
from numpy import genfromtxt
from numpy import savetxt
from sklearn.ensemble import AdaBoostRegressor
from sklearn.feature_selection import SelectPercentile
from sklearn.feature_selection import f_regression
# Load training data
X = genfromtxt('train_X_final.csv', delimiter=',')
Y = genfromtxt('train_Y_final.csv', delimiter=',')
# Feature Selection
X_new = SelectPercentile(score_func = f_regression, percentile = 10).fit_transform(X, Y)
# Create regression object
clf = AdaBoostRegressor(n_estimators = 100, loss = 'exponential')
# Load validation data
X_val = genfromtxt('val_X_final.csv', delimiter=',')
# Train dataset
clf.fit(X_new, Y)
Y_pred = clf.predict(X_val)
# Crop impossible values
Y_pred[Y_pred < 0] = 0
Y_pred[Y_pred > 600] = 600
savetxt("Y_predict_feat.csv", Y_pred, delimiter=",")
答案 0 :(得分:0)
您希望保存功能选择器对象并在验证集上调用其transform
方法,如下所示:
selector = SelectPercentile(score_func = f_regression, percentile = 10)
X_new = selector.fit_transform(X, Y)
X_val = selector.transform(genfromtxt('val_X_final.csv', delimiter=','))
clf.fit(X_new, Y)
Y_pred = clf.predict(X_val)