2016-07-04 4 views
2

나는 roc 곡선과 해당 auc를 표시하는 튜토리얼을 따라 갔다. 나는 결코 ggplot 라이브러리를 사용하지 않았기 때문에 어디에서 오류인지 이해할 수 없다. 여기에 아래의 코드 :Python, Roc 곡선 및 ggplot?

from sklearn import metrics 
    import pandas as pd 
    from ggplot import * 

    preds = clf.predict_proba(Xtest)[:,1] 
    fpr, tpr, _ = metrics.roc_curve(ytest, preds) 

    df = pd.DataFrame(dict(fpr=fpr, tpr=tpr)) 
    ggplot(df, aes(x='fpr', y='tpr')) + geom_line() + geom_abline(linetype='dashed') 

이 오류는 다음과 같습니다

slope needed for <ggplot.geoms.geom_abline.geom_abline object at 0x7fae7e7f8d90> 

어떻게이 문제를 해결할 수 있을까?

+0

정말 ggplot 라이브러리를 사용해야합니까? matplotlib 예를 보려면 http://scikit-learn.org/stable/auto_examples/model_selection/plot_roc_crossval.html 또는 http://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html을 참조하십시오. – dukebody

답변

0
ggplot(df, aes(x='fpr', y='tpr',ymin=0, ymax='tpr'))+ \ 
geom_area(alpha=0.2)+\ 
geom_line(x,y,aes(y='tpr'))+\ 
ggtitle("ROC Curve w/ AUC=%s" % str(auc)) 
import matplotlib.pyplot as plt 
plt.plot(x,y,'--',color='grey') 
+0

간단한 설명을 추가하십시오. 대답. 그것은 미래의 방문자를 도울 것입니다. –

0
ggplot(df, aes(x='fpr', y='tpr'))+\ 
geom_line()+\ 
geom_abline(linetype='dashed',slope=1,intercept=0) 

오류는 당신이 인수 슬로프를 추가해야했다 =? and intercept =?. 작동 후

0

이것은 지상 진실 레이블 집합과 예상 확률이 주어지면 ROC 곡선을 그릴 수있는 가장 간단한 방법입니다. 가장 중요한 부분은 모든 클래스의 ROC 커브를 플롯하므로 여러 개의 깔끔한 커브도 얻을 수 있습니다. 코드 수정 중 ...

import scikitplot.plotters as skplt 
import matplotlib.pyplot as plt 

preds = clf.predict_proba(Xtest) 
skplt.plot_roc_curve(ytest, preds) 
plt.show() 

문자 그대로 예측 된 확률과 실제 레이블이 필요합니다.

다음은 plot_roc_curve에 의해 생성 된 샘플 곡선입니다. scikit에서 얻은 샘플 숫자 데이터 집합을 사용하여 10 개의 클래스가 있습니다. 각 클래스에 대해 하나의 ROC 곡선이 그려져 있습니다.

ROC Curves

면책 조항 :이 나는 내장 scikit-plot 라이브러리를 사용합니다.