2017-08-14 8 views
0
I write python code like this 


train_x, test_x, train_y, test_y = train_test_split(x, y, random_state=33, train_size=0.7) 

#lsvc=LinearSVC() 
#lsvc.fit(train_x, train_y) 
#y_predict=lsvc.predict(train_x) 
#print('The Accuracy of linear SVC is', lsvc.score(test_x, test_y)) 
cv = StratifiedKFold(y, n_folds=6) 
#classifier = svm.SVC(C=1, kernel='rbf',probability=True, gamma=0.8, random_state=random_state)#注意这里,probability=True,需要,不然预测的时候会出现异常。另外rbf核效果更好些。 
mean_tpr = 0.0 
mean_fpr = np.linspace(0, 1, 100) 
all_tpr = [] 
for i, (train, test) in enumerate(cv): 

    mnb.fit(np.matrix(x[train]), np.asarray(y[train],dtype="int64")) 
    y_predict = predict(x[test]) 
    print(type(probas_))$ 

Il signale l'erreur: retraçage (appel le plus récent en dernier):[Python] sklearn bayésiens naïfs

File "<ipython-input-2-0d8cec505c57>", line 1, in <module> 
    runfile('D:/我的文档/数据/实际工作技术文件/NB/nb.py', wdir='D:/我的文档/数据/实际工作技术文件/NB') 

    File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 880, in runfile 
    execfile(filename, namespace) 

    File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile 
    exec(compile(f.read(), filename, 'exec'), namespace) 

    File "D:/我的文档/数据/实际工作技术文件/NB/nb.py", line 93, in <module> 
    mnb.fit(np.matrix(x[train]), np.asarray(y[train],dtype="int64")) 

    File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\naive_bayes.py", line 587, in fit 
    self._count(X, Y) 

    File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\naive_bayes.py", line 689, in _count 
    if np.any((X.data if issparse(X) else X) < 0): 

TypeError: '<' not supported between instances of 'numpy.ndarray' and 'int' 

Il est appel des paquets de Bayes naïfs de sklearn. Le type de données a quelques problèmes de discordance, mais je n'ai aucune idée de le réparer. Quelqu'un peut-il donner de l'aide? Il ressemble à une incompatibilité de type, cependant, comment puis-je le réparer? Merci & Cordialement

Répondre

0

Le problème est probablement votre argument dtype. Pouvez-vous utiliser à la place np.asarray(y[train], dtype=np.int64)? Vous pouvez également laisser numpy déduire le type de données et ignorer cet argument entièrement.