Как использовать матричный результат PCA для обучения модели?

Здравствуйте, я хотел бы уменьшить размер моей матрицы поезда, чтобы затем использовать вспомогательную векторную машину, мой код выглядит следующим образом:

from sklearn.decomposition import PCA

Сначала я попробовал выполнить PCA:

pca = PCA(n_components=100)
#pca.fit(train_matrix)
train_matrix = np.concatenate([cities,state_matrix,work_type,company_matrix,seg,ag,rep], axis=1)

Затем я присвоил его переменной, чтобы затем обучить мою модель следующим образом:

train_matrix = pca.fit_transform(train_matrix)


from sklearn.ensemble import RandomForestClassifier
from sklearn import preprocessing
X_train, X_test, y_train, y_test = train_test_split(
    pca, labels_list, test_size=0.1, random_state=47)

Однако я не уверен, что не так, я получил, поэтому я хотел бы получить поддержку, чтобы преодолеть эту ситуацию:

state shape:  (282521, 572)
work type shape:  (282521, 164)
train matrix shape (5000, 100)
Traceback (most recent call last):
  File "build_model.py", line 61, in <module>
    pca, labels_list, test_size=0.1, random_state=47)
  File "/usr/local/lib/python3.5/dist-packages/sklearn/cross_validation.py", line 2039, in train_test_split
    arrays = indexable(*arrays)
  File "/usr/local/lib/python3.5/dist-packages/sklearn/utils/validation.py", line 206, in indexable
    check_consistent_length(*result)
  File "/usr/local/lib/python3.5/dist-packages/sklearn/utils/validation.py", line 177, in check_consistent_length
    lengths = [_num_samples(X) for X in arrays if X is not None]
  File "/usr/local/lib/python3.5/dist-packages/sklearn/utils/validation.py", line 177, in <listcomp>
    lengths = [_num_samples(X) for X in arrays if X is not None]
  File "/usr/local/lib/python3.5/dist-packages/sklearn/utils/validation.py", line 126, in _num_samples
    " a valid collection." % x)
TypeError: Singleton array array(PCA(copy=True, iterated_power='auto', n_components=100, random_state=None,
  svd_solver='auto', tol=0.0, whiten=False), dtype=object) cannot be considered a valid collection.

1 ответ

Решение

Вы отправляете pca к train_test_split, Проверьте аргументы здесь Отправьте преобразованные данные (train_matrix) внутрь.

Правильный код должен быть:

X_train, X_test, y_train, y_test = train_test_split(
    train_matrix, labels_list, test_size=0.1, random_state=47)
Другие вопросы по тегам