簡體   English   中英

[Python] sklearn天真貝葉斯

[英][Python]sklearn naive bayes

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_))$

它報告錯誤:Traceback(最近一次呼叫最近):

  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幼稚的貝葉斯包裝的呼喚。 數據類型有一些不匹配的問題,但我不知道要解決它。 有人可以幫忙嗎? 看起來類型不匹配,但是,我該如何解決? 感謝和問候

問題可能出在您的dtype參數上。 您可以改用np.asarray(y[train], dtype=np.int64)嗎? 您還可以讓numpy推斷數據類型,而完全忽略該參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM