微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在转换期间在第 29 列中发现未知类别 ['3']

如何解决在转换期间在第 29 列中发现未知类别 ['3']

我正在尝试使用互信息对分类值进行特征选择。我不断收到错误,我不太确定如何修复它。我得到的错误是在转换过程中在第 29 列中发现未知类别 ['3']。

from pandas import read_csv
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OrdinalEncoder
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import mutual_info_classif
from matplotlib import pyplot
from sklearn.preprocessing import OneHotEncoder

# load the dataset
def load_dataset(filename):
   data = read_csv(filename,header=None)
   dataset = data.values
   X = dataset[:,:-1]
   y = dataset[:,-1]
   return X,y

# prepare input data
def prepare_inputs(X_train,X_test):
   oe = OrdinalEncoder()
   oe.fit(X_train)
   X_train_enc = oe.transform(X_train)
   X_test_enc = oe.transform(X_test)
   return X_train_enc,X_test_enc

# prepare target
def prepare_targets(y_train,y_test):
   le = LabelEncoder()
   le.fit(y_train)
   y_train_enc = le.transform(y_train)
   y_test_enc = le.transform(y_test)
   return y_train_enc,y_test_enc

# feature selection
def select_features(X_train,y_train,X_test):
   fs = SelectKBest(score_func=mutual_info_classif,k='all')
   fs.fit(X_train,y_train)
   X_train_fs = fs.transform(X_train)
   X_test_fs = fs.transform(X_test)
   return X_train_fs,X_test_fs,fs

# load the dataset
X,y = load_dataset('DataUF31New.csv')
# split into train and test sets
X_train,X_test,y_test = train_test_split(X,y,test_size=0.33,random_state=1)
# prepare input data
X_train_enc,X_test_enc = prepare_inputs(X_train,X_test)
# prepare output data
y_train_enc,y_test_enc = prepare_targets(y_train,y_test)
# feature selection
X_train_fs,fs = select_features(X_train_enc,y_train_enc,X_test_enc)
# what are scores for the features
for i in range(len(fs.scores_)):
   print('Feature %d: %f' % (i,fs.scores_[i]))
# plot the scores
pyplot.bar([i for i in range(len(fs.scores_))],fs.scores_)
pyplot.show()

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