sklearn模型训练报错:ValueError: Unknown label type: ‘unknown’

导读:本篇文章讲解 sklearn模型训练报错:ValueError: Unknown label type: ‘unknown’,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

测试一个简单的LogisticRegression模型,代码如下:

import numpy as np
import pandas as pd
from sklearn.cross_validation import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline

df = pd.read_csv('breast-cancer.data')
df = df.replace(to_replace='?', value=np.nan)
df = df.dropna(how='any')    # 去掉所有的含有缺失值的数据
X = df.values[:, 1:-1]
y = df.values[:,-1]         # 这部分出错了

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
pi_line = Pipeline([('sc', StandardScaler()),
                    ('pca', PCA(n_components = 2)),
                    ('clf', LogisticRegression(random_state=1)),
                    ])

pi_line.fit(X_train, y_train)
print('res:')
print(pi_line.score(X_test, y_test))

出现错误:ValueError: Unknown label type: ‘unknown’

    169     if y_type not in ['binary', 'multiclass', 'multiclass-multioutput',
    170                       'multilabel-indicator', 'multilabel-sequences']:
--> 171         raise ValueError("Unknown label type: %r" % y_type)
    172 
    173 

从错误栈信息来看,应该是标签数据集的类型出错了,那么使用dtype打印一下数据类型看看(不要使用type函数,这样会发现都是int类型的),发现这时候的标签数据类型是object,这样sklearn是无法识别的,所以使用astype('int')进行强制转化即可:

y = y.astype('int')

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/116706.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!