2017-02-10 23 views
0

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

from sklearn.decomposition import PCA 

Сначала я пытался performin ПША:

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. Проверьте аргументы here Отправьте преобразованные данные (train_matrix) в него.

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

X_train, X_test, y_train, y_test = train_test_split(
    train_matrix, labels_list, test_size=0.1, random_state=47) 
+0

спасибо, я, наконец, преодолеть эту ситуацию, это было очень полезно – neo33