### 在使用Python机器学习模型时,精确度和F分数出现未定义警告 [duplicate]

from sklearn import OneClassSVMcheck = OneClassSVM(kernel='rbf', gamma='scale')check.fit(X_train, y_train)check.predict(X_test)check.decision_function(X_train)

我目前在使用OneClassSVM模型。然而,我对其进行了一些修改,以便与其他机器学习模型结合使用。原本,OneClassSVM模型返回的是-1和1的标签值,但我将其修改为返回0和1。然而,尽管没有其他错误,它仍然输出了Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. 'precision', 'predicted', average, warn_for错误。

classification.py

def classification_report(y_true, y_pred, labels=None, target_names=None,                      sample_weight=None, digits=2, output_dict=False):y_type, y_true, y_pred = _check_targets(y_true, y_pred)labels_given = Trueif labels is None:    labels = unique_labels(y_true, y_pred)    labels_given = Falseelse:    labels = np.asarray(labels)   labels = [0 if i==-1 else i for i in labels]

我不知道为什么会出现这个错误,因为没有特别的错误。个人认为可能与标签有关。然而,我确实需要OneClass模型中的标签为0和1,而不是-1和1。我还检查了是否是因为数据集不足导致的错误,所以我将数据集翻倍,但仍然会出现错误。

result

            precision    recall     f1-score   support       A     0.0000      0.0000     0.0000     185698       B     0.0059      0.7211     0.0117      735accuracy     0.0059      0.0028     0.0038     186433macro avg    0.0030      0.3605     0.0059     186433weighted avg 0.0000      0.0028     0.0000     186433

我得到的结果如上所示。


回答:

看起来你的标签有问题。在y_true中有一些标签在y_pred中没有出现,因此它是未定义的。

你应该仔细检查你的y_truey_pred是否使用了相同的标签。从你的代码片段来看,你似乎是在修改labels数组,而不是y_pred

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注