Python 结合两个机器学习模型的结果
我有两个机器学习模型,有一个目标,我单独运行每一个,现在我希望将两者结合起来,得到一个结果 其中一个模型it内容文本带有tf idf和目标,另一个模型it内容6属性带有目标,这意味着我的所有数据it内容6属性,因此我希望在一个模型中 第一个包含两个特性Python 结合两个机器学习模型的结果,python,machine-learning,scikit-learn,decision-tree,Python,Machine Learning,Scikit Learn,Decision Tree,我有两个机器学习模型,有一个目标,我单独运行每一个,现在我希望将两者结合起来,得到一个结果 其中一个模型it内容文本带有tf idf和目标,另一个模型it内容6属性带有目标,这意味着我的所有数据it内容6属性,因此我希望在一个模型中 第一个包含两个特性 from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split DTClass = DecisionTree
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标签
不兼容,则需要更正它们
此外,我建议查看以下工具:
- 及
- 额外的“技巧”是将模型的
或准确度
指定为加权投票中的权重。这可能会导致过度装配,因此请小心操作f1分数
- 额外的“技巧”是将模型的
- 及
- 堆栈中每个模型的结果用作最终模型预测的输入。根据我的经验,这与优化的
或MLP
单层神经网络的性能相当
- 堆栈中每个模型的结果用作最终模型预测的输入。根据我的经验,这与优化的
- ,及
- 每一个都是有效的集成模型,将在经过良好校准的估计器“团队”中工作