多标签分类标签编码

import pandas as pd
from sklearn.preprocessing import MultiLabelBinarizer
data=pd.read_csv("C:/Users/zlx/Desktop/jupyter/A1-F3(100-2).csv",index_col=False,encoding="gb18030")
labels=["Y","Y1"]
mlb=MultiLabelBinarizer()
encoded_labels = mlb.fit_transform(data[labels].apply(lambda x:",".join(x),axis=1).str.split(","))
#上边这一行是将data[labels]中每个元素用逗号连接起来,然后用str.split(",")将字符串拆成列表,最后用mlb.fit_transform方法将列表转换成二进制编码

encoded_df=pd.DataFrame(encoded_labels,columns=mlb.classes_)
print(encoded_df)

普通数据的多标签分类,需要将多标签进行编码,转换成二进制。假设有有1000个样本,每个样本有四个特征,每个样本有两个标签,第一个标签有六类,第二个有十六类,可以使用上述的代码将其转换成二进制,可以直接用于多标签分类

随机森林多标签分类

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
from sklearn.metrics import accuracy_score
data =pd.read_csv("C:/Users/zlx/Desktop/jupyter/A1-F3(100-2).csv")#这里是我自己的文件名
X=data[["GL","AL","BL","BDCL"]]#这些是每个样本不同的特征列
Y=encoded_df#这里是二进制编码
x_train,x_test,y_train,y_test=train_test_split(X,Y,random_state=4,train_size=0.9)
rf=RandomForestClassifier(n_estimators=100,random_state=42)
rf.fit(x_train,y_train)
y_pred=rf.predict(x_test)
acc=accuracy_score(y_test,y_pred)
print(acc)
print(classification_report(y_test,y_pred))

这里正确率在classification_report 中不会出现,需要自己加进去

在这里最左侧的一列数字的每一行与二进制编码的每一列相对应,也就是数字0为类别A,数字1为类别A1

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值