2017-08-14 2 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_))$ 

それはエラーを報告: トレースバック(最新の呼び出しの最後):[Pythonの] sklearnナイーブベイズ

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' 

それはsklearnのナイーブベイズパッケージの呼び出しです。データ型には不一致の問題がいくつかありますが、私はそれを修正するつもりはありません。どんな身体も助けてもらえますか?タイプの不一致のように見えますが、どうすれば修正できますか?ありがとう&よろしくご協力ありがとうございます

答えて

0

問題はおそらくあなたのdtype引数です。代わりにnp.asarray(y[train], dtype=np.int64)を使用できますか? numpyにデータ型を推測させ、その引数を完全に省略することもできます。

関連する問題