from sklearn.linear_model import LogisticRegression from sklearn import metrics import numpy as np import pandas as pd data = pd.read_csv( 'final_data1.csv') Y = data.y X = data.drop('y', axis=1)#归一化 xmin = X.min(axis=0) xmax = X.max(axis=0) X_norm = (X-xmin)/(xmax-xmin) from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X_norm, Y, test_size=0.2, random_state=42) clf = LogisticRegression(random_state=0,multi_class='multinomial') clf.fit(X_norm,Y)y_pred= clf.predict(X_test) y_pred= np.round(y_pred) print(metrics.confusion_matrix(y_test, y_pred)) from sklearn.metrics import precision_score, recall_score, f1_score, roc_auc_score, accuracy_score print('逻辑回归分类模型准确率分值: {0:0.4f}'.format(accuracy_score(y_test, y_pred))) print("逻辑回归分类模型查准率 :", round(precision_score(y_test, y_pred), 4), "\n") print("逻辑回归分类模型召回率 :", round(recall_score(y_test, y_pred), 4), "\n") print("逻辑回归分类模型F1分值:", round(f1_score(y_test, y_pred), 4), "\n") 运行上述代码报错ValueError: Target is multiclass but average='binary'. Please choose another average setting, one of [None, 'micro', 'macro', 'weighted'].如何解决
时间: 2024-04-17 22:28:54 浏览: 151
LogisticRegression(手搓板+sklearn版).zip
这个错误是因为你选择了 `average='binary'`,但是你的目标变量是多分类问题,不适用于二元分类的平均设置。你可以尝试使用其他的平均设置来解决这个问题。
以下是一些可选的平均设置:
- `average=None`:不进行平均,返回每个类别的独立评估指标。
- `average='micro'`:对所有类别的预测结果进行整体评估。
- `average='macro'`:计算每个类别的评估指标,并对其进行简单平均。
- `average='weighted'`:计算每个类别的评估指标,并根据类别样本数量进行加权平均。
你可以根据你的需求选择适合的平均设置。
例如,你可以将以下代码段:
```python
print("逻辑回归分类模型查准率 :", round(precision_score(y_test, y_pred), 4), "\n")
```
修改为:
```python
print("逻辑回归分类模型查准率 :", round(precision_score(y_test, y_pred, average='weighted'), 4), "\n")
```
通过设置 `average='weighted'`,可以解决这个错误。你可以在其他评估指标中也使用相同的方法进行修改。希望能帮到你!
阅读全文