我有两个机器学习模型,每个模型都有一个目标,我单独运行每个模型,现在希望将两者连接起来以获得一个结果......
其中一个模型包含带有 tf-idf 和目标的文本,另一个模型包含带有目标的 6 个属性,这意味着我的所有数据都包含 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
数组(我建议在pandas中这样做)和一个y
。如果您的y 标签
不兼容,那么您需要更正它们。
此外,我建议查看以下工具:
-
Voting Classifiers
和Voting Regressors
- 一个额外的“技巧”是将模型的
准确度
或f1分数
指定为加权投票中的权重。 这可能会产生极端的过度拟合,因此请谨慎操作。
- 一个额外的“技巧”是将模型的
Stacking Classifiers
和Stacking Regressors
- 堆栈中每个模型的结果用作最终模型预测的输入。 根据我的经验,这具有与优化的
MLP
或单层神经网络
相当的性能。
- 堆栈中每个模型的结果用作最终模型预测的输入。 根据我的经验,这具有与优化的
Boosting
,Extreme Gradient Boosting
,和Light Gradient Boosting
- 每个模型都是有效的集成模型,可以在经过良好校准的估算器“团队”中发挥作用。
关于python - 结合两个机器学习模型的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58256387/