2017-02-10 2 views
0

Ich möchte die Dimension meines Zuges Matrix reduzieren, um dann eine Unterstützung vektorielle Maschine zu verwenden, sieht mein Code wie folgt:Wie benutzt man das Matrix-Ergebnis eines PCA um ein Modell zu trainieren? Hallo

from sklearn.decomposition import PCA 

Zuerst habe ich versucht performin das PKA:

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) 

Dann I zugeordnet es auf eine Variable, um dann mein Modell zu trainieren wie folgt:

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) 

aber ich bin nicht sicher, was falsch ist, ich habe, so möchte ich sup empfangen Port um diese Situation zu überwinden:

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. 

Antwort

1

Du pca zum train_test_split senden. Überprüfen Sie die Argumente here Senden Sie die transformierten Daten (train_matrix) hinein.

Korrekter Code sollte sein:

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

Dank viel ich diese Situation endlich überwinden, das war sehr hilfreich – neo33

Verwandte Themen