x,y中传递fit时,出现以下错误:

追溯(最近一次通话):

File "C:/Classify/classifier.py", line 95, in

train_avg, test_avg, cms = train_model(X, y, "ceps", plot=True)
File "C:/Classify/classifier.py", line 47, in train_model

clf.fit(X_train, y_train) File "C:\Python27\lib\site-packages\sklearn\svm\base.py", line 676, in fit raise ValueError("The number of classes has to be greater than" ValueError: The number of classes has to be greater than one.



下面是我的代码:
def train_model(X, Y, name, plot=False): 
""" 
    train_model(vector, vector, name[, plot=False]) 
 
    Trains and saves model to disk. 
""" 
labels = np.unique(Y) 
 
cv = ShuffleSplit(n=len(X), n_iter=1, test_size=0.3, indices=True, random_state=0) 
 
train_errors = [] 
test_errors = [] 
 
scores = [] 
pr_scores = defaultdict(list) 
precisions, recalls, thresholds = defaultdict(list), defaultdict(list), defaultdict(list) 
 
roc_scores = defaultdict(list) 
tprs = defaultdict(list) 
fprs = defaultdict(list) 
 
clfs = []  # for the median 
 
cms = [] 
 
for train, test in cv: 
    X_train, y_train = X[train], Y[train] 
    X_test, y_test = X[test], Y[test] 
 
    clf = LogisticRegression() 
    clf.fit(X_train, y_train) 
    clfs.append(clf) 

请您参考如下方法:

您目前的培训集中可能只有一个唯一的类(class)标签。如错误消息所述,您需要在数据集中至少有两个唯一的类。例如,您可以运行np.unique(y)来查看数据集中唯一的类标签是什么。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!