2014-04-23 5 views
-1
나는이 두 배열에 맞게하려고 할 때 나는 또 다른 배열 Y. 의 배열 X 및 해당 라벨에 각각의 특징 벡터 (즉 X_train [I]) 저장하려고

, 나는 오류 ValueError를 얻을 : 설정을 순서를 가지는 배열 요소. 이 오류를 해결하는 방법. 미리 감사드립니다. csr_matrixs '와 레이블을 각각 포함하는 두 개의 배열을 맞추는 방법은 무엇입니까?

from sklearn.datasets import load_svmlight_file           
pathToTrainData="/Users/rkasat/Documents/final year project/scripts/Drydata/leaf/train_backup.txt" 

X_train,Y_train= load_svmlight_file(pathToTrainData); 
X= []  
y=[] 
for i in range(5): 
    X.append(X_train[i]) 
    y.append(Y_train[i]) 

print(type(X[0]),type(y[0])) 
from sklearn import svm 
clf = svm.SVC(kernel='linear') 
clf.fit(X,y) 

output: 
-------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-41-cd4b481af30a> in <module>() 
     8 from sklearn import svm 
     9 clf = svm.SVC(kernel='linear') 
---> 10 clf.fit(X,y) 

/Users/rkasat/anaconda/lib/python2.7/site-packages/sklearn/svm/base.pyc in fit(self, X, y, sample_weight) 
    137        "by not using the ``sparse`` parameter") 
    138 
--> 139   X = atleast2d_or_csr(X, dtype=np.float64, order='C') 
    140   y = self._validate_targets(y) 
    141 

/Users/rkasat/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.pyc in atleast2d_or_csr(X, dtype, order, copy, force_all_finite) 
    132  """ 
    133  return _atleast2d_or_sparse(X, dtype, order, copy, sparse.csr_matrix, 
--> 134         "tocsr", force_all_finite) 
    135 
    136 

/Users/rkasat/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.pyc in _atleast2d_or_sparse(X, dtype, order, copy, sparse_class, convmethod, force_all_finite) 
    109  else: 
    110   X = array2d(X, dtype=dtype, order=order, copy=copy, 
--> 111      force_all_finite=force_all_finite) 
    112   if force_all_finite: 
    113    _assert_all_finite(X) 

/Users/rkasat/anaconda/lib/python2.7/site-packages/sklearn/utils/validation.pyc in array2d(X, dtype, order, copy, force_all_finite) 
    89   raise TypeError('A sparse matrix was passed, but dense data ' 
    90       'is required. Use X.toarray() to convert to dense.') 
---> 91  X_2d = np.asarray(np.atleast_2d(X), dtype=dtype, order=order) 
    92  if force_all_finite: 
    93   _assert_all_finite(X_2d) 

/Users/rkasat/anaconda/lib/python2.7/site-packages/numpy/core/numeric.pyc in asarray(a, dtype, order) 
    318 
    319  """ 
--> 320  return array(a, dtype, copy=False, order=order) 
    321 
    322 def asanyarray(a, dtype=None, order=None): 

ValueError: setting an array element with a sequence. 

(<class 'scipy.sparse.csr.csr_matrix'>, <type 'numpy.float64'>) 
+0

세 번 같은 질문을 왜 어떤 특별한 이유 : 당신이 첫 번째 5 행에 훈련을하려는 경우, 당신은 @tanemaki 이미 입증 된 바와 같이 슬라이스해야합니까? 사람들이 이전에 주석을 달았으므로 실제로 데이터와 코드를 표시하여 디버깅 할 수 있다면 훨씬 더 신뢰할 수있는 대답을 얻을 수 있습니다. – mbatchkarov

+0

나는 대규모 계층 적 텍스트 분류 http://lshtc.iit.demokritos.gr/node/1에서 일하고있다. 특징 벡터의 레이블을 여러 단계로 예측하고 싶습니다. 그래서 레벨 1에서 분류 된 모든 특징 벡터를 하나의 단일 버킷에 넣습니다. 마찬가지로 다른 벡터를 다른 버킷에 넣습니다. 버킷이 있으면 레벨 2에있는 개별 버킷 각각에 대한 교육과 테스트를 할 것입니다. 리프 레벨에 도달하고 실제 라벨을 예측할 때까지이 과정을 계속할 것입니다. – riteshkasat

+0

코드가 너무 복잡해 졌어. 왜 내가 공유하기를 꺼려했는지. 실제 문제에서 벗어났다. – riteshkasat

답변

2

아마도 코드에서 for 루프를 사용할 필요는 없습니다. 다음 코드는 원하는 작업을 수행 할 수 있습니다.

X_train, Y_train = load_svmlight_file(pathToTrainData); 

from sklearn import svm 
clf = svm.SVC(kernel='linear') 
clf.fit(X[:5, :],y[:5]) 
1

@tanemaki가 맞지만이 문제가 왜 해결되는지 설명해 줄 필요가 있습니다. X_train은 대체로 numpy 배열입니다. 정수 (X_train[i])로 잘라내어 전체 i 번째 줄을 반환합니다. X은 numpy 배열의 목록이됩니다. fit 메서드는 단일 행렬을 필요로합니다. X[:5, :]y[:5, :]

+0

선택된 행 (열 1, 행 3 행 6 및 행 7)과 처음 5 행만이 아닙니다.이 경우 어떻게 진행해야합니까? – riteshkasat

+1

X [[1,3,6,7], :]'를 써야합니다. 슬라이스의 첫 번째 인수 ('[1,3,6,7'])는 사용할 행을 지정하고 두 번째 인수는 원하는 열을 지정합니다. ':'는 모든 행/열을 의미합니다. ': 10'과'10 :'은 각각 10 위와 10 위를 의미합니다. – mbatchkarov

+0

감사합니다. 내가 필요한 것 – riteshkasat