簡體   English   中英

scikit-learn中的對象沒有屬性,如何訪問它?

[英]Object has no attribute in scikit-learn, how can I access it?

我想使用帶有cross-vlidation的scikit SVC分類器的不同參數,所以我嘗試了以下操作:

然后,讓我們使用SVC算法:

from sklearn import svm
print('Support vector machine(SVM):   {:.2f}'.format(metrics.accuracy_score(
            y, stratified_cv(X, y, svm.SVC(kernel='linear')))))

但似乎我無法訪問該對象:

AttributeError                            Traceback (most recent call last)
<ipython-input-16-dacd8d429376> in <module>()
      5 
      6 print('Support vector machine(SVM):   {:.2f}'.format(metrics.accuracy_score(
----> 7             y, stratified_cv(X, y, svm.SVC(kernel='linear')))))
      8 

AttributeError: 'SVC' object has no attribute 'SVC'

有趣的是,當我嘗試這樣做時:

print('Support vector machine(SVM):   {:.2f}'.format(metrics.accuracy_score(
            y, stratified_cv(X, y, svm.SVC))))

我得到:

Support vector machine(SVM):   0.46

會發生什么?...給出上述交叉驗證策略的任何想法,如何設置我自己的SVM配置? 在此先感謝大家!

你需要一個partial的蟒蛇。 通常,您的函數要求您傳遞可以用clf_class(**kwargs)調用的clf_class(**kwargs) ,因此,如果您傳遞特定object (通過clf = SVC(kernel='linear') ),則它將無法正常工作,因為你嘗試去做

SVC(kernel='linear')(**kwargs) # error!

你想打電話

SVC(kernel='linear', **kwargs)

所以你可以在python中聲明局部函數

from functools import partial
linear_svm = partial(svm.SVC, kernel='linear')

現在你可以打電話

linear_svm(**kwargs)

暫無
暫無

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

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