基于特征的多标签分类该如何训练呢
1.有特征x1、x2……xn个特征
2.lable:有01234 一共5类
那我应该如何去训练出呢。
我看了很多资料,大多都是图像的多分类、文本的多分类,但就是不知道如何套上去。
不知道哪位能不能指点下,能不能提供demo示例
给你举个随机森林模型的例子
import joblib
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
from sklearn.model_selection import train_test_split
import numpy as np
from collections import Counter
# 1. 加载数据集
data = pd.read_csv('data/data137267/train.csv.zip')
test_df = pd.read_csv('data/data137267/test.csv.zip')
# 2. 数据基本处理
data.fillna(0)#如果有空值用0填充
# 3. 特征值和目标值
sample = len(data)
x = data.sample(sample)
# 确定目标值和特征值
y = x['Activity'] #预测的那一列
x = x.drop(["Activity"], axis=1) #除了预测那一列的其他列
# 4. 数据集分割
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, stratify=y, random_state=22)
#分割训练集测试集
# 5. 随机森林训练和存储
# 随机森林训练 准确率0.93
estimator1 = RandomForestClassifier(n_estimators=60,oob_score=True, random_state=22)
print('训练数据形状:', x_train.shape)
print('随机森林模型:')
estimator1.fit(x_train, y_train)
# 6.保存模型
joblib.dump(estimator1, 'random_forest.pth')
# 7. 模型预测
from sklearn.metrics import classification_report
accurary = estimator1.score(x_test, y_test)
print('OOB:', estimator1.oob_score_)
print('ACC:', accurary)
# 打印精度、召回率、f1-score、accuracy
print(classification_report(y_true=y_test, y_pred=estimator1.predict(x_test)))
利用tensortflow设计1维卷积神经网络的例子
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import *
cnn_model = Sequential()
cnn_model.add(Conv1D(filters=16, kernel_size=5, input_shape=((data_with_feature.shape[1]), 1),activation='relu'))
cnn_model.add(MaxPool1D(pool_size=2 ,strides=2,padding='same'))
cnn_model.add(Conv1D(filters=32,kernel_size=5,activation='relu'))
cnn_model.add(MaxPool1D(pool_size=2 ,strides=2,padding='same'))
cnn_model.add(Conv1D(filters=64,kernel_size=5,activation='relu'))
cnn_model.add(MaxPool1D(pool_size=2 ,strides=2,padding='same'))
cnn_model.add(Flatten())
#cnn_model.add(Dropout(0.4))
#cnn_model.add(Dense(4096, activation='relu'))
cnn_model.add(Dense(256, activation='relu'))
cnn_model.add(Dense(128, activation='relu'))
cnn_model.add(Dense(5,activation = 'softmax'))#得出最终的分类结果,此处的结果实际上是样本属于各类的归一化概率,此处为5类
#cnn_model.add(Activation('softmax'))
cnn_model.summary()
决策树就可以解决多分类的