“AttributeError: type object ‘RocCurveDisplay‘ has no attribute ‘from_predictions‘ “.

Posted Data+Science+Insight

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“AttributeError: type object ‘RocCurveDisplay‘ has no attribute ‘from_predictions‘ “.相关的知识,希望对你有一定的参考价值。

 "AttributeError: type object 'RocCurveDisplay' has no attribute 'from_predictions' ".

目录

 "AttributeError: type object 'RocCurveDisplay' has no attribute 'from_predictions' ".

问题:

解决:

完整错误:


问题:

使用sklearn中的RocCurveDisplay函数from_predictions发生问题、因为版本低的问题。

import numpy as np

from sklearn import datasets

import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.metrics import RocCurveDisplay
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
X, y = make_classification(random_state=0)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, random_state=0)
clf = SVC(random_state=0).fit(X_train, y_train)
y_pred = clf.decision_function(X_test)
RocCurveDisplay.from_predictions(
   y_test, y_pred)

plt.show()

解决:

版本更新一下、因为sklearn的版本低的缘故,需要升级。

scikit-learn 1.0之后才提供了from_predictions这些函数、类;

pip install --upgrade scikit-learn
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.metrics import RocCurveDisplay
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
X, y = make_classification(random_state=0)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, random_state=0)
clf = SVC(random_state=0).fit(X_train, y_train)
y_pred = clf.decision_function(X_test)
RocCurveDisplay.from_predictions(
   y_test, y_pred)

plt.show()

完整错误:

"AttributeError: type object 'RocCurveDisplay' has no attribute 'from_from_estimator' ".

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-6-c15b1ea4b93e> in <module>
     32 for i, (train, test) in enumerate(cv.split(X, y)):
     33     classifier.fit(X[train], y[train])
---> 34     viz = RocCurveDisplay.from_estimator(
     35         classifier,
     36         X[test],

AttributeError: type object 'RocCurveDisplay' has no attribute 'from_estimator'

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于php和Perl语言。

Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。

Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

2.易于阅读:Python代码定义的更清晰。

3.易于维护:Python的成功在于它的源代码是相当容易维护的。

4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。

5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。

6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。

7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。

8.数据库:Python提供所有主要的商业数据库的接口。

9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。

10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

参考:python - Error message with sklearn function " 'RocCurveDisplay' has no attribute 'from_predictions' " - Stack Overflow

参考:Receiver Operating Characteristic (ROC) with cross validation — scikit-learn 1.1.2 documentation

以上是关于“AttributeError: type object ‘RocCurveDisplay‘ has no attribute ‘from_predictions‘ “.的主要内容,如果未能解决你的问题,请参考以下文章