首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ROC曲线绘制

ROC曲线绘制
EN

Stack Overflow用户
提问于 2020-01-24 07:44:02
回答 1查看 45关注 0票数 0

使用支持向量机绘制具有179个列(作为特征)大小为1200的数据集的ROC曲线会产生以下错误:

“数组的索引太多”

代码:

代码语言:javascript
复制
 from sklearn.svm import SVC
 svclassifier = SVC(kernel='linear')

 svm = svclassifier.fit(X_train, Y_train).decision_function(X_test)

 Y_pred = svclassifier.predict(X_test)

 ns_predt = [0 for _ in range(len(Y_test))]

 Y_predt = Y_pred[:,1]

代码语言:javascript
复制
Traceback (most recent call last) IndexError
<ipython-input-92-62de12967d46> in <module>
----> 1 Y_predt = Y_pred[:,1]

IndexError: too many indices for array
EN

回答 1

Stack Overflow用户

发布于 2020-01-27 10:26:34

您所得到的错误与"Y_pred:,1“中所要求的可用索引有关。您正在请求列1的所有行(冒号“:”)(使用Python的零索引,这实际上是第二列)。然而,Y_pred是一个numpy一维数组(即没有列)。

我不知道你想用ns_predt = [0 for _ in range(len(Y_test))]做什么,也不知道用Y_predt = Y_pred[:,1]做什么,所以我不能给你其他的选择。但问题很明显:您请求的列是不存在的。

使用以下代码可以很容易地复制该问题:

代码语言:javascript
复制
import pandas as pd
import numpy as np
import pdb
from sklearn.svm import SVC

print('Creating fake data..')
X_train = pd.DataFrame(np.random.randint(0,1000,size=(100, 4)), columns=list('ABCD'))
Y_train = pd.DataFrame(np.random.randint(0,10,size=(100, 1)), columns=list('E'))

X_test = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
Y_test = pd.DataFrame(np.random.randint(0,10,size=(100, 1)), columns=list('E'))

print('Initializing classifier')
svclassifier = SVC(kernel='linear')

print('Training the model')
svm = svclassifier.fit(X_train, Y_train).decision_function(X_test)

print('Predicting outcome')
Y_pred = svclassifier.predict(X_test)

print('... ? ...')
ns_predt = [0 for _ in range(len(Y_test))]
try:
    Y_predt = Y_pred[:,1]
except:
    print('I failed...')
    pdb.set_trace()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59892295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档