Ошибка в прогнозе в классификаторе svm после одного горячего кодирования - PullRequest
0 голосов
/ 21 мая 2018

Я использовал одну горячую кодировку для своего набора данных перед тренировкой моего классификатора SVM.что увеличило число функций в обучении до 982. Но при прогнозировании набора тестовых данных, который имеет 7 признаков, я получаю ошибку: «X имеет 7 признаков на выборку; ожидается 982».Я не понимаю, как увеличить количество функций в тестовом наборе данных.

My code is:
df = pd.read_csv('train.csv',header=None);
features = df.iloc[:,:-1].values
labels = df.iloc[:,-1].values
encode = LabelEncoder()
features[:,2] = encode.fit_transform(features[:,2])
features[:,3] = encode.fit_transform(features[:,3])
features[:,4] = encode.fit_transform(features[:,4])
features[:,5] = encode.fit_transform(features[:,5])

df1 = pd.DataFrame(features)
#--------------------------- ONE HOT ENCODING --------------------------------#

hotencode = OneHotEncoder(categorical_features=[2])
features = hotencode.fit_transform(features).toarray()
hotencode = OneHotEncoder(categorical_features=[14])
features = hotencode.fit_transform(features).toarray()
hotencode = OneHotEncoder(categorical_features=[37])
features = hotencode.fit_transform(features).toarray()
hotencode = OneHotEncoder(categorical_features=[466])
features = hotencode.fit_transform(features).toarray()
X = np.array(features)
y = np.array(labels)

clf = svm.LinearSVC()
clf.fit(X,y)
d_test = pd.read_csv('query.csv')
Z_test =np.array(d_test)
confidence = clf.predict(Z_test)
print("The query image belongs to Class ")
print(confidence)

######################### test dataset
query.csv
1   0.076   1   3232236298  2886732679  3128    60604

1 Ответ

0 голосов
/ 22 мая 2018

Краткий ответ: вам нужно применить то же преобразование ОНЕ (или LE + ОХЕ в вашем случае) к тестовому набору.

Полезный совет см. В Scikit Learn Подгонка и преобразование OneHotEncoder Ошибка: ValueError: X имеет другую форму, чем при подгонке или Как работать с вменением и горячим кодированием в пандах?

...