Python ROC曲线绘制
尝试使用SVM绘制具有179列(作为特征)的大小为1200的数据集的ROC曲线会出现以下错误: '数组的索引太多' 代码:Python ROC曲线绘制,python,size,one-hot-encoding,indices,Python,Size,One Hot Encoding,Indices,尝试使用SVM绘制具有179列(作为特征)的大小为1200的数据集的ROC曲线会出现以下错误: '数组的索引太多' 代码: 回溯(最近一次调用上次)索引器 在里面 ---->1 Y_predt=Y_pred[:,1] 索引器:数组的索引太多 您遇到的错误与“Y_pred[:,1]”中请求的和可用的索引有关。 您正在请求第1列的所有行(冒号“:”)(使用Python的零索引,实际上是第2列)。但是,Y_pred是一个numpy 1D数组(即没有列) 我不确定您在ns_predt=[0 for u
回溯(最近一次调用上次)索引器
在里面
---->1 Y_predt=Y_pred[:,1]
索引器:数组的索引太多
您遇到的错误与“Y_pred[:,1]”中请求的和可用的索引有关。
您正在请求第1列的所有行(冒号“:”)(使用Python的零索引,实际上是第2列)。但是,Y_pred是一个numpy 1D数组(即没有列)
我不确定您在ns_predt=[0 for u in range(len(Y_test))]
或Y_predt=Y_pred[:,1]
中试图做什么,因此我无法为您提供其他选择。但问题很清楚:您请求的列不存在
使用以下代码可以轻松复制此问题:
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()
显示工作代码,以便能够重现errorY_pred的形状与您预期的不同,这就是为什么您的Y_pred[:,1]无法工作的原因。您能打印“Y_pred.shape”吗?Y_测试为480个实例的0,1个标签。Y_test.shape和Y_pred.shape给出的输出为(480,0),(480,0)。Y_pred根据上述代码给出的输出如下:[0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 1 1 0 1 0 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 1 0 1 0 0 ........ 1 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0@ZarakiKenpachiY_pred.shape是(480,0)@Rens
Traceback (most recent call last) IndexError
<ipython-input-92-62de12967d46> in <module>
----> 1 Y_predt = Y_pred[:,1]
IndexError: too many indices for array
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()