Применить выбор объектов к новому набору данных X

Плакат первый раз! Я действительно новичок в науке о данных и решил принять участие в конкурсе. Я написал некоторый код для выбора 10% лучших функций из моего набора обучающих данных X (9999 строк, 2000 столбцов).

Чего я не могу понять, так это того, как применить этот же выбор функций к новому набору данных проверки X_val, чтобы я мог предсказать Y_val с помощью моего AdaBoostRegressor. Любая помощь будет оценена по достоинству! Используя приведенный ниже код, я получаю сообщение об ошибке о том, что 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=",")

person Justin Powell    schedule 30.09.2014    source источник


Ответы (1)


Вы хотите сохранить объект селектора функций и вызвать его метод 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)
person mbatchkarov    schedule 30.09.2014
comment
Это сработало, спасибо! К сожалению, это не дало мне лучшего результата в соревновании, чем просто adaboost. Вернуться к доске для рисования... - person Justin Powell; 30.09.2014