我有一个多类问题。我想使用遗传分类的LCPN(每个父节点的局部分类器(方法来解决这个问题。因此,我手动将原始数据集划分为两个级别的层次结构。级别1有4个父类&每个父类都有子类。
我建立了一个1级分类模型(用于预测父类(。基于级别1的预测,现在我想将分类为类1的实例发送到第二个分类器,该分类器区分类1的子标签。同样,我也想对其他父类重复这个过程。我这样做主要是为了避免与LCPN相关的不一致性问题。
这是我到目前为止主要做的事情。
X = data_frame.drop([‘region’], axis = 1) # Features
y = data_frame[‘region’] # Labels
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
sm = SMOTE()
X_resampled, y_resampled = sm.fit_sample(X_train, y_train)
model = DecisionTreeClassifier().fit(X_resampled, y_resampled)
print(classification_report_imbalanced(y_test, predictions))
我有点难以找到如何在1级预测的基础上进一步进行第二级分类的方法。有人能给我一个好方法吗。
提前感谢
我们刚刚发布了一个与scikit-learn兼容的新库,用于创建本地层次分类器。使用lcppn = LocalClassifierPerParent(local_classifier=RandomForestClassifier())
可以很容易地为每个父节点创建一个局部分类器,然后使用lcppn.fit()
拟合模型并使用lcppn.predict()
进行预测。图书馆为你做所有繁重的工作
它可以很容易地与pip install hiclass
或conda install hiclass
一起安装。有关文档和更多示例,请访问https://gitlab.com/dacs-hpi/hiclass.
我希望这将对你和未来的读者有用。