我正在尝试使用DecisionTreeClassifier("DTC")作为base_estimator来调整AdaBoost分类器("ABT").我想调都 ABT同时DTC参数,但我不知道如何做到这一点-管道不应该工作,因为我不是"管" DTC的输出ABT.我们的想法是在GridSearchCV估算器中迭代ABT和DTC的超参数.
如何正确指定调整参数?
我尝试了以下操作,在下面生成了一个错误.
[IN]
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.grid_search import GridSearchCV
param_grid = {dtc__criterion : ["gini", "entropy"],
dtc__splitter : ["best", "random"],
abc__n_estimators: [none, 1, 2]
}
DTC = DecisionTreeClassifier(random_state = 11, max_features = "auto", class_weight = "auto",max_depth = None)
ABC = AdaBoostClassifier(base_estimator = DTC)
# run grid search
grid_search_ABC = GridSearchCV(ABC, param_grid=param_grid, scoring = 'roc_auc')
[OUT]
ValueError: Invalid parameter dtc for estimator AdaBoostClassifier(algorithm='SAMME.R',
base_estimator=DecisionTreeClassifier(class_weight='auto', criterion='gini', max_depth=None,
max_features='auto', max_leaf_nodes=None, min_samples_leaf=1,
min_samples_split=2, min_weight_fraction_leaf=0.0,
random_state=11, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将AdaBoostClassifier与DecisionTree之外的基础学习器一起使用.我尝试过SVM和KNeighborsClassifier,但是我收到了错误.有人可以指出可以与AdaBoostClassifier一起使用的分类器吗?
我正在尝试实现一个使用AdaBoost算法的应用程序.我知道AdaBoost使用了一组弱分类器,但我不知道这些弱分类器是什么.你能用一个例子向我解释一下,告诉我是否必须创建自己的弱分类器,或者我是否想要使用某种算法?
artificial-intelligence classification machine-learning adaboost
以下是adaboost算法:
它在第3.1部分提到了"对训练数据使用权重".
我不太清楚如何使用重量.我应该重新取样培训数据吗?
我一直试图理解AdaBoost算法没有太大的成功.作为一个例子,我正在努力理解关于人脸检测的Viola Jones论文.
你能用外行的话来解释AdaBoost,并提供一个很好的例子吗?
我一直在使用ada
R包,最近,caret
.根据该文件,caret
的train()
功能应该有一个使用ADA的选项.但是,当我使用与我的ada()
通话相同的语法时,插入符号正在嘲笑我.
这是一个使用wine
示例数据集的演示.
library(doSNOW)
registerDoSNOW(makeCluster(2, type = "SOCK"))
library(caret)
library(ada)
wine = read.csv("http://www.nd.edu/~mclark19/learn/data/goodwine.csv")
set.seed(1234) #so that the indices will be the same when re-run
trainIndices = createDataPartition(wine$good, p = 0.8, list = F)
wanted = !colnames(wine) %in% c("free.sulfur.dioxide", "density", "quality",
"color", "white")
wine_train = wine[trainIndices, wanted]
wine_test = wine[-trainIndices, wanted]
cv_opts = trainControl(method="cv", number=10)
###now, the example that works using ada()
results_ada <- ada(good ~ ., data=wine_train, control=rpart.control
(maxdepth=30, …
Run Code Online (Sandbox Code Playgroud) 我正在使用Adaboost来解决分类问题.我们可以做到以下几点:
ens = fitensemble(X, Y, 'AdaBoostM1', 100, 'Tree')
Run Code Online (Sandbox Code Playgroud)
现在'Tree'是学习者,我们可以将其改为'Discriminant'或'KNN'.每个学习者都使用一定的Template Object Creation Function
.更多信息在这里.
是否可以创建自己的功能并将其用作学习者?如何?
我正在研究数据的二进制分类,我想知道使用支持向量机优于决策树和自适应Boosting算法的优缺点.
在使用OpenCV进行提升之后,我正在尝试实现我自己的Adaboost
算法版本(请点击此处,此处和原始论文以获取一些参考资料).
通过阅读所有材料,我提出了一些关于算法实现的问题.
1)我不清楚如何分配每个弱学习者的权重a_t.
在我所指出的所有来源中,选择是a_t = k * ln( (1-e_t) / e_t )
,k是一个正常数,而e_t是特定弱学习者的错误率.
在这个来源的第7页,它说该特定值最小化某个凸可微函数,但我真的不明白这段经文.
有人可以向我解释一下吗?
2)我对训练样本的重量更新程序有一些疑问.
显然,应该以这样的方式来保证它们仍然是概率分布.所有参考文献都采用这种选择:
D_ {t + 1}(i)= D_ {t}(i)*e ^( - a_t y_i h_t(x_i))/ Z_t(其中Z_t是选择的归一化因子,使得D_ {t + 1}是分布).
我希望这是发布此问题的正确位置,如果没有请重定向我!
提前感谢您提供的任何帮助.
假设我符合以下神经网络的二进制分类问题:
model = Sequential()
model.add(Dense(21, input_dim=19, init='uniform', activation='relu'))
model.add(Dense(80, init='uniform', activation='relu'))
model.add(Dense(80, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(x2, training_target, nb_epoch=10, batch_size=32, verbose=0,validation_split=0.1, shuffle=True,callbacks=[hist])
Run Code Online (Sandbox Code Playgroud)
如何使用AdaBoost增强神经网络?keras有没有这方面的命令?
adaboost ×10
python ×2
scikit-learn ×2
algorithm ×1
boosting ×1
data-mining ×1
grid-search ×1
keras ×1
matlab ×1
opencv ×1
r ×1
svm ×1