python - 如何修复此分类报告警告?
问题描述
我为多类分类创建了一个模型。一切顺利,验证准确率为 84%,但当我打印分类报告时,我收到了以下警告:
UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
_warn_prf(average, modifier, msg_start, len(result))
分类报告:
precision recall f1-score support
0 0.84 1.00 0.91 51890
1 0.67 0.04 0.08 8706
2 0.00 0.00 0.00 1605
accuracy 0.84 62201
macro avg 0.50 0.35 0.33 62201
weighted avg 0.79 0.84 0.77 62201
源代码 -
import pandas as pd
df=pd.read_csv('Crop_Agriculture_Data_2.csv')
df=df.drop('ID',axis=1)
dummies=pd.get_dummies(df[['Crop_Type', 'Soil_Type', 'Pesticide_Use_Category', 'Season']],drop_first=True)
df=df.drop(['Crop_Type', 'Soil_Type', 'Pesticide_Use_Category', 'Season'],axis=1)
df=pd.concat([df,dummies],axis=1)
df['Crop_Damage']=df['Crop_Damage'].map({'Minimal Damage':0,'Partial Damage':1,'Significant Damage':2})
x=df.drop('Crop_Damage',axis=1).values
y=df.Crop_Damage.values
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,train_size=0.3,random_state=101)
from sklearn.preprocessing import MinMaxScaler
mms=MinMaxScaler()
x_train=mms.fit_transform(x_train)
x_test=mms.transform(x_test)
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Dropout,Flatten
model=Sequential()
model.add(Flatten())
model.add(Dense(10,activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(6,activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(3,activation='softmax'))
model.compile(loss='sparse_categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit(x_train,y_train,validation_data=(x_test,y_test),epochs=13)
import numpy as np
pred=np.argmax(model.predict(x_test),axis=-1)
from sklearn.metrics import classification_report
print(classification_report(y_test,pred))
我认为这可能是因为大多数数据都属于一个类别,但我不确定。我能做些什么来解决这个问题吗?
解决方案
推荐阅读
- google-sheets - 将字符串拆分为所有字符
- arrays - 展平 Spark DataFrame 子架构
- python - 如何加载交叉点合并图
- reactjs - 如何用本机反应“编辑页面”?
- angular - 刷新浏览器不加载页面,但在通过菜单链接导航时工作(Angular)
- java - 在while循环中声明数组是否会影响空间复杂度
- php - 如何使用 VS Code PHP Debug 配置 Docker wpdiaries/wordpress-xdebug:latest?
- context-free-grammar - Solan、Horn、Ruppin 和 Edelman 的 ADIOS(结构自动蒸馏)算法
- java - 容器可移植性和 Java 语言
- c# - EF Core 5 无法触发存储过程且输出参数没有结果