测试一个简单的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')