ValueError: multiclass format is not supported

出现该问题是因为模型期望的目标变量(y)是二分类问题,而实际上目标变量可能是多分类问题。

要解决这个问题,可以尝试以下几种方法:

  1. 确认目标变量的类别数量:检查 y 列中的唯一值数量,确定是二分类问题还是多分类问题。如果唯一值数量超过2个,则是多分类问题。

  2. 处理多分类问题:如果目标变量是多分类问题,您可以尝试使用适合多分类问题的分类器,如 RandomForestClassifier 的多分类版本 RandomForestClassifier

  3. 转换成二分类问题:如果您希望将问题转换为二分类问题,可以考虑对目标变量进行处理,例如将多分类问题转换为二分类问题,或者只选择数据集中的二分类样本进行建模。

  4. 调整评分指标:在使用 RFECV 时,您指定了 scoring="roc_auc",这通常用于二分类问题。如果您处理的是多分类问题,可以尝试使用适合多分类问题的评分指标,如 scoring="accuracy"

  5. 检查数据预处理:确保数据集中没有缺失值,并且特征和目标变量之间的数据类型正确匹配。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pylab import mpl
from sklearn.model_selection import train_test_split
from sklearn.feature_selection import RFECV
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
import joblib
mpl.rcParams["font.sans-serif"]=["SimHei"]
mpl.rcParams["axes.unicode_minus"]=False


pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)




data=pd.read_excel("./data/result_gen.xlsx")
# data.drop(data.iloc[:,0],inplace=True)
print(data.shape)
y=data["PVT"]

del data["PVT"]
del  data["编号"]
print(data.shape)

print(y.shape)

#创建一个决策树模型
estimator = DecisionTreeClassifier()
#创建RFE选择器
np.random.seed(10)
selector = RFECV(estimator,step=1,scoring="roc_auc",cv=5)

#拟合数据
selector = selector.fit(data,y)
# joblib.dump(selector,"RF_selecter.pkl")

# 画出特征数目和得分的关系图像
plt.figure()
plt.xlabel("Number of features selected",loc="right")
plt.ylabel("Cross validation score (nb of roc and auc)",loc="top")
plt.plot(range(1, len(selector.cv_results_['mean_test_score']) + 1), selector.cv_results_['mean_test_score'],marker="*",lw=3)
plt.xticks(np.arange(0,54,1))
plt.show()



# 输出选定的特征
print(selector.support_)

# 输出特征排名
print(selector.ranking_)

# 获取特征重要性
feature_importance = selector.estimator_.feature_importances_


#获取选择的特征索引
selected_features = selector.get_support()

# 获取特征名称
feature_names = data.columns
selected_feature_names = [feature_names[i] for i, selected in enumerate(selected_features) if selected]

# 打印选择的特征名称
print("Selected Features:")
print(selected_feature_names)

# 绘制特征重要性图
plt.figure()
plt.barh(selected_feature_names, feature_importance,color=(0.6,0.6,0.7))
plt.ylabel('selected_feature_names',loc="top")
plt.xlabel('Feature Importance',loc="right")
plt.title('Feature Importance of Decision Tree')

plt.tick_params(labelsize=8)

plt.show()

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值