我有两个机器学习模型,有一个目标,我现在单独运行每个模型,现在我希望两者之间的连接以获得一个结果......
其中一个模型 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 Classifiers
和Voting Regressors
- 一个额外的"技巧"是将模型的
accuracy
或f1 score
指定为加权投票中的权重。这可能会导致极端的过度拟合,因此请谨慎行事。
- 一个额外的"技巧"是将模型的
-
Stacking Classifiers
和Stacking Regressors
- 堆栈中每个模型的结果用作预测最终模型的输入。根据我的经验,这具有可与优化
MLP
或single layer neural network
相当的性能。
- 堆栈中每个模型的结果用作预测最终模型的输入。根据我的经验,这具有可与优化
-
Boosting
、Extreme Gradient Boosting
和Light Gradient Boosting
- 每个都是有效的集成模型,将在经过良好校准的估计器"团队"中工作。