2017-02-10 14 views
0

こんにちは、私は次のように私のコードが見え、その後、サポートベクトルマシンを使用するために私の列車のマトリックスの寸法を小さくしたいと思います:pcaの行列結果を使ってモデルを訓練する方法は?

from sklearn.decomposition import PCA 

まず私は、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) 

は、しかし、私は私が得た間違っているのかわからないですので、私はSUPを受け取るしたいと思います

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

あなたはtrain_test_splitpcaを送信している。このような状況を克服するためのポート。引数を確認する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

関連する問題