合并来自两个机器学习模型的结果



我有两个机器学习模型,有一个目标,我现在单独运行每个模型,现在我希望两者之间的连接以获得一个结果......

其中一个模型 IT 内容文本带有 TF-IDF 和目标,另一个它包含 6 个属性,目标意味着我的所有数据 IT 内容 6 个属性,所以我希望在一个模型中

第一个它内容两个功能

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
DTClass = DecisionTreeClassifier(criterion="gini", splitter="best", 
random_state=77)
X_train, X_test, y_train, y_test = train_test_split(bow, 
df1["attacktype1_txt"], test_size = 1/5, random_state = 50)
DTClass.fit(X_train,y_train)
prediction = DTClass.predict(X_test)
from sklearn.metrics import accuracy_score
print("accuracy score:")
print(accuracy_score(y_test, prediction))

第二个

array = df.values
X = array[:,1:7]
Y = array[:,7]
validation_size = 0.20
seed = 4
X_train, X_validation, Y_train, Y_validation = 
model_selection.train_test_split(X, Y, test_size=validation_size, 
random_state=seed)
seed = 4
scoring = 'accuracy'
models.append(('CART', DecisionTreeClassifier()))
results = []
names = []
for name, model in models:
kfold = model_selection.KFold(n_splits=10, random_state=seed)
cv_results = model_selection.cross_val_score(model, X_train, Y_train, 
cv=kfold, scoring=scoring)
results.append(cv_results)
names.append(name)
msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
print(msg)

您的问题似乎不是合并模型的问题,而是合并数据的问题。除非您有理由假设包含数据会降低模型性能,否则应避免因拆分模型而丢失信息。

在这种情况下,数据似乎有点混乱。也许合并到一个X数组(我建议在熊猫中这样做(和一个y.如果您的y labels不兼容,则需要更正它们。


此外,我建议查看以下工具:

  • Voting ClassifiersVoting Regressors
    • 一个额外的"技巧"是将模型的accuracyf1 score指定为加权投票中的权重。这可能会导致极端的过度拟合,因此请谨慎行事。
  • Stacking ClassifiersStacking Regressors

    • 堆栈中每个模型的结果用作预测最终模型的输入。根据我的经验,这具有可与优化MLPsingle layer neural network相当的性能。
  • BoostingExtreme Gradient BoostingLight Gradient Boosting

    • 每个都是有效的集成模型,将在经过良好校准的估计器"团队"中工作。

最新更新