X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state = 2020, stratify=y)
X_train_user = X_train[y_train == 'ji2hwh']
X_train_attacker = X_train[y_train != 'ji2hwh']
outlier_prop = len(X_train_user) / len(X_train_attacker)
svm = OneClassSVM(kernel='rbf', nu=outlier_prop, gamma=0.000001)
svm.fit(X_train_user)
pred = svm.predict(X_test)
y_test[y_test == 'ji2hwh'] = 1
y_test[y_test != 1] = -1
print(accuracy_score(y_test, pred))
我得到的分类指标无法处理上述代码中未知目标和二进制目标的混合错误。”ji2hwh’只是一个用户ID,我认为他是我的单类分类的目标用户,而其他用户则是攻击者。x是一个特征向量,y包含用户ID。我无法理解为什么会出现此错误,因为变量pred返回一个带有[-1,1]值的ndarray,并且y_test似乎正确地分配了适当的值,也在同一组值[-1,1]中。如何克服这个编译错误
整个错误消息:
File "C:\Users\User\Desktop\MobileUserAuth\data_exploration.py", line 94, in <module>
print(accuracy_score(y_test, pred))
File "C:\Users\User\anaconda3\lib\site-packages\sklearn\utils\validation.py", line 72, in inner_f
return f(**kwargs)
File "C:\Users\User\anaconda3\lib\site-packages\sklearn\metrics\_classification.py", line 187, in accuracy_score
y_type, y_true, y_pred = _check_targets(y_true, y_pred)
File "C:\Users\User\anaconda3\lib\site-packages\sklearn\metrics\_classification.py", line 90, in _check_targets
raise ValueError("Classification metrics can't handle a mix of {0} "
ValueError: Classification metrics can't handle a mix of unknown and binary targets
我发布了一个解决我的问题的方法,我在几天后发现了这个方法,也许它可以帮助那些面临同样问题的人,因为我没有找到一个
只需简单地将
y_test
类型转换为int
,有关未知目标的错误将得到解决。因此,在调用accuracy_score
类型之前:y_test = y_test.astype('int')
相关问题 更多 >
编程相关推荐