Sklearnモデルトレーニングエラー:ValueError:不明なラベルタイプ: '不明'
Sklearn Model Training Error
次のコードを使用して、単純な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') # Remove all data with missing values X = df.values[:, 1:-1] y = df.values[:,-1] # This part is wrong 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:不明なラベルタイプ: '不明'
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')