Python ValueError:未知的标签类型:';未知';在sklearn

Python ValueError:未知的标签类型:';未知';在sklearn,python,scikit-learn,svm,Python,Scikit Learn,Svm,我收到此错误-“ValueError:未知标签类型:“未知” 我已经搜索过网络,但无法摆脱这个错误,我是python新手,顺便说一句:) 我的数据有5行22列,最后一列是标签(真、假) 数据如下所示: dataset.head() loc v(g) ev(g) iv(g) n v l d i e ... lOCode lOComment lOBlank locCodeAndComment uniq_Op uni

我收到此错误-“ValueError:未知标签类型:“未知”

我已经搜索过网络,但无法摆脱这个错误,我是python新手,顺便说一句:)

我的数据有5行22列,最后一列是标签(真、假)

数据如下所示:

dataset.head()



loc     v(g)    ev(g)   iv(g)   n   v   l   d   i   e   ...     lOCode  lOComment   lOBlank     locCodeAndComment   uniq_Op     uniq_Opnd   total_Op    total_Opnd  branchCount     defects
0   1.0     1.0     1.0     1.0     1.0     1.00    1.0     1.0     1.00    1.00    ...     1   1   1   1   1.0     1.0     1.0     1.0     1.0     True
1   1.1     1.4     1.4     1.4     1.3     1.30    1.3     1.3     1.30    1.30    ...     2   2   2   1   1.2     1.2     1.2     1.2     1.4     False
2   2.0     1.0     1.0     1.0     1.0     0.00    0.0     0.0     0.00    0.00    ...     0   0   1   0   1.0     0.0     1.0     0.0     1.0     False
3   2.0     1.0     1.0     1.0     1.0     0.00    0.0     0.0     0.00    0.00    ...     0   0   1   0   1.0     0.0     1.0     0.0     1.0     False
4   3.0     1.0     1.0     1.0     22.0    85.95   0.2     5.0     17.19   429.76  ...     1   0   3   0   10.0    5.0     17.0    5.0     1.0     False

5 rows × 22 columns
代码的其余部分:

array = dataset.values
X = array[:,0:21]  # Row=ALL, Col=1 to 21 (index=0to20)
Y = array[:,21]  # Row=ALL, Col=22nd (index=21)
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=0.20, random_state=0) #80% Training data , 20% Test data

kfold = model_selection.KFold(n_splits=10, random_state=0)
cv_results = []
我在以下行中遇到错误:

cv_results = model_selection.cross_val_score(SVC(), X_train, Y_train, cv=kfold, scoring='accuracy')
详细错误:

ValueError                                Traceback (most recent call last)
<ipython-input-31-e1234a2bbe9b> in <module>()
----> 1 cv_results = model_selection.cross_val_score(SVC(), X_train, Y_train, cv=kfold, scoring='accuracy')

C:\Program Files\Anaconda2\lib\site-packages\sklearn\model_selection\_validation.pyc in cross_val_score(estimator, X, y, groups, scoring, cv, n_jobs, verbose, fit_params, pre_dispatch)
    138                                               train, test, verbose, None,
    139                                               fit_params)
--> 140                       for train, test in cv_iter)
    141     return np.array(scores)[:, 0]
    142 

C:\Program Files\Anaconda2\lib\site-packages\sklearn\externals\joblib\parallel.pyc in __call__(self, iterable)
    756             # was dispatched. In particular this covers the edge
    757             # case of Parallel used with an exhausted iterator.
--> 758             while self.dispatch_one_batch(iterator):
    759                 self._iterating = True
    760             else:

C:\Program Files\Anaconda2\lib\site-packages\sklearn\externals\joblib\parallel.pyc in dispatch_one_batch(self, iterator)
    606                 return False
    607             else:
--> 608                 self._dispatch(tasks)
    609                 return True
    610 

C:\Program Files\Anaconda2\lib\site-packages\sklearn\externals\joblib\parallel.pyc in _dispatch(self, batch)
    569         dispatch_timestamp = time.time()
    570         cb = BatchCompletionCallBack(dispatch_timestamp, len(batch), self)
--> 571         job = self._backend.apply_async(batch, callback=cb)
    572         self._jobs.append(job)
    573 

C:\Program Files\Anaconda2\lib\site-packages\sklearn\externals\joblib\_parallel_backends.pyc in apply_async(self, func, callback)
    107     def apply_async(self, func, callback=None):
    108         """Schedule a func to be run"""
--> 109         result = ImmediateResult(func)
    110         if callback:
    111             callback(result)

C:\Program Files\Anaconda2\lib\site-packages\sklearn\externals\joblib\_parallel_backends.pyc in __init__(self, batch)
    324         # Don't delay the application, to avoid keeping the input
    325         # arguments in memory
--> 326         self.results = batch()
    327 
    328     def get(self):

C:\Program Files\Anaconda2\lib\site-packages\sklearn\externals\joblib\parallel.pyc in __call__(self)
    129 
    130     def __call__(self):
--> 131         return [func(*args, **kwargs) for func, args, kwargs in self.items]
    132 
    133     def __len__(self):

C:\Program Files\Anaconda2\lib\site-packages\sklearn\model_selection\_validation.pyc in _fit_and_score(estimator, X, y, scorer, train, test, verbose, parameters, fit_params, return_train_score, return_parameters, return_n_test_samples, return_times, error_score)
    236             estimator.fit(X_train, **fit_params)
    237         else:
--> 238             estimator.fit(X_train, y_train, **fit_params)
    239 
    240     except Exception as e:

C:\Program Files\Anaconda2\lib\site-packages\sklearn\svm\base.pyc in fit(self, X, y, sample_weight)
    150 
    151         X, y = check_X_y(X, y, dtype=np.float64, order='C', accept_sparse='csr')
--> 152         y = self._validate_targets(y)
    153 
    154         sample_weight = np.asarray([]

C:\Program Files\Anaconda2\lib\site-packages\sklearn\svm\base.pyc in _validate_targets(self, y)
    518     def _validate_targets(self, y):
    519         y_ = column_or_1d(y, warn=True)
--> 520         check_classification_targets(y)
    521         cls, y = np.unique(y_, return_inverse=True)
    522         self.class_weight_ = compute_class_weight(self.class_weight, cls, y_)

C:\Program Files\Anaconda2\lib\site-packages\sklearn\utils\multiclass.pyc in check_classification_targets(y)
    170     if y_type not in ['binary', 'multiclass', 'multiclass-multioutput',
    171             'multilabel-indicator', 'multilabel-sequences']:
--> 172         raise ValueError("Unknown label type: %r" % y_type)
    173 
    174 

ValueError: Unknown label type: 'unknown'
ValueError回溯(最近一次调用)
在()
---->1 cv\u结果=模型选择。交叉值评分(SVC(),X\u序列,Y\u序列,cv=kfold,评分='accurity')
C:\Program Files\Anaconda2\lib\site packages\sklearn\model\u selection\\u validation.pyc交叉评分(估计器、X、y、组、评分、cv、n作业、详细信息、拟合参数、预调度)
138列车,测试,冗长,无,
139配合参数)
-->140用于列车,在cv_iter中进行试验)
141返回np.数组(分数)[:,0]
142
C:\Program Files\Anaconda2\lib\site packages\sklearn\externals\joblib\parallel.pyc in\uuuu调用(self,iterable)
756人被派遣。特别是,这覆盖了边缘
757#与耗尽迭代器一起使用的并行情况。
-->758自行调度一批时(迭代器):
759自迭代=真
760其他:
C:\Program Files\Anaconda2\lib\site packages\sklearn\externals\joblib\parallel.pyc在dispatch\u one\u批处理中(self,迭代器)
606返回错误
607其他:
-->608自我派遣(任务)
609返回真值
610
C:\Program Files\Anaconda2\lib\site packages\sklearn\externals\joblib\parallel.pyc in\u dispatch(self,batch)
569调度时间戳=time.time()
570 cb=BatchCompletionCallBack(调度时间戳,len(批处理),self)
-->571作业=self.\u后端.apply\u异步(批处理,回调=cb)
572自我作业。附加(作业)
573
C:\Program Files\Anaconda2\lib\site packages\sklearn\externals\joblib\\u parallel\u backends.pyc in apply\u async(self、func、callback)
107 def apply_async(self、func、callback=None):
108“计划要运行的func”
-->109结果=立即结果(func)
110如果回调:
111回调(结果)
C:\Program Files\Anaconda2\lib\site packages\sklearn\externals\joblib\\u parallel\u backends.pyc in\uuuuuu init\uuuuu(self,batch)
324#不要延迟应用程序,以免保留输入
325#内存中的参数
-->326 self.results=批处理()
327
328 def get(自我):
C:\Program Files\Anaconda2\lib\site packages\sklearn\externals\joblib\parallel.pyc in\uuuuu调用(self)
129
130 def呼叫(自我):
-->131返回[func(*args,**kwargs),用于self.items中的func、args、kwargs]
132
133定义长度(自):
C:\Program Files\Anaconda2\lib\site packages\sklearn\model\u selection\\u validation.pyc in\u fit\u and\u score(估计器、X、y、记分器、训练、测试、详细信息、参数、拟合参数、返回训练分数、返回参数、返回测试样本、返回次数、错误分数)
236估算器拟合(X列,**拟合参数)
237其他:
-->238估计值拟合(X_序列,y_序列,**拟合参数)
239
240除e以外的例外情况:
C:\Program Files\Anaconda2\lib\site packages\sklearn\svm\base.pyc适合(自身、X、y、样本重量)
150
151 X,y=check_X_y(X,y,dtype=np.float64,order='C',accept_sparse='csr')
-->152 y=自我验证目标(y)
153
154样品重量=np.asarray([]
C:\Program Files\Anaconda2\lib\site packages\sklearn\svm\base.pyc in\u validate\u targets(self,y)
518 def_验证_目标(自我,y):
519 y=列或1d(y,警告=真)
-->520检查分类目标(y)
521 cls,y=np.unique(y\uu,返回值逆=True)
522自我分类权重=计算自我分类权重(自我分类权重,cls,y)
C:\Program Files\Anaconda2\lib\site packages\sklearn\utils\multiclass.pyc in check\u classification\u targets(y)
170如果y_类型不在['binary'、'multiclass'、'multiclass multioutput'中,
171“多标签指示器”、“多标签序列”]:
-->172提升值错误(“未知标签类型:%r”%y\u类型)
173
174
ValueError:未知标签类型:“未知”

第1部分


您得到的错误与您使用的y变量有关

您需要将
TRUE/FALSE
转换为
0/1
,以便Y变量将包含
0s
1s
。这将修复错误

从文件中:

y:类似数组的形状(n_个样本)
目标值(分类中的类别标签,回归中的实数)


第二部分


接下来,您应该使用交叉验证,它将自动将数据分割为
X\u序列、X\u测试
y\u序列、y\u测试
train\u测试
功能,然后手动执行如下操作:

clf = SVC()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
...
另一方面,如果您想将
交叉验证
KFold
一起使用,只需使用:

kfold = model_selection.KFold(n_splits=10, random_state=0)

cv_results = model_selection.cross_val_score(SVC(), X, Y, cv=kfold, scoring='accuracy')

这将自动创建
X\u列
X\u测试
y\u列
y\u测试
,它将为您提供
cv\u结果
,您不能使用SVC()直接不拟合X和Y。@Kshitiz是的,他可以。在
交叉值
中,它将自动拟合。将布尔值目标True和False更改为int,然后重试。
Y=[1如果X在Y中为X,则为0]
成功了!谢谢@VivekKumar:)@VivekKumar你能解释一下如何将T/F转换为0/1吗?因为在这两种情况下都有“x”:如果x为其他值,则为1
kfold = model_selection.KFold(n_splits=10, random_state=0)

cv_results = model_selection.cross_val_score(SVC(), X, Y, cv=kfold, scoring='accuracy')