Мне нужно сделать классификацию набора данных ( теорема первого порядка ) с шестью классами и неоднородным распределением значений, как видно из следующего списка:
- первый класс: 1089 данных
- второй класс: 486 данных
- третий класс: 748 данных
- четвертый класс: 617 данных
- пятый класс: 624 данные
- шестой класс: 2554 данные
, в общей сложности 6118 помеченных данных для 51 всех числовых признаков. существует множество признаков с высокой степенью корреляции (имеется 39 пар признаков с корреляцией выше 0,75 или ниже -0,75); по этой причине я попробовал выбор функции на основе высокой корреляции, а также PCA; Я использую модель, оптимизированную для поиска по сетке:
svm = SVC(kernel='rbf', decision_function_shape='ovr')
param_grid = {'C': [50, 30, 100, 60, 25, 80],
'gamma': [0.01, 0.1, 0.2, 0.3, 0.4, 0.5,0.001]}
grid = GridSearchCV(svm, param_grid, cv=10, scoring='f1_weighted',n_jobs=4,verbose=True)
grid.fit(all_train_data, train_target)
print(grid.best_params_)
, и я использовал F1_weighted
для оценки результатов. мой вопрос: я делаю все правильно, или может быть что-то не хватает, что я мог бы сделать, связанные с фактами, что класс не сбалансирован (как параметр class_weight
в SVM)?