gpt4 book ai didi

python - Sklearn GridSearchCV,class_weight 因未知原因不工作 :(

转载 作者:行者123 更新时间:2023-11-28 22:42:22 25 4
gpt4 key购买 nike

尝试让 class_weight 开始。我知道其余代码有效,只是 class_weight 给我错误:

    parameters_to_tune = ['min_samples_split':[2,4,6,10,15,25], 'min_samples_leaf':[1,2,4,10],'max_depth':[None,4,10,15],
^
SyntaxError: invalid syntax

这是我的代码

clf1 = tree.DecisionTreeClassifier()
parameters_to_tune = ['min_samples_split':[2,4,6,10,15,25], 'min_samples_leaf':[1,2,4,10],'max_depth':[None,4,10,15],
'splitter' : ('best','random'),'max_features':[None,2,4,6,8,10,12,14],'class_weight':{1:10}]
clf=grid_search.GridSearchCV(clf1,parameters_to_tune)
clf.fit(features,labels)
print clf.best_params_

有人发现我犯的错误吗?

最佳答案

我假设您想对不同的 class_weight 进行网格搜索对于“工资”类。

class_weight 的值应该是一个列表:

'class_weight':[{'salary':1}, {'salary':2}, {'salary':4}, {'salary':6}, {'salary':10}]

你可以用列表理解来简化它:

'class_weight':[{'salary': w} for w in [1, 2, 4, 6, 10]]

第一个问题是dict中的参数值parameters_to_tune应该是一个列表,而你通过了一个命令。它可以通过传递字典列表作为 class_weight 的值来修复。相反,每个字典都包含一组 class_weight对于 DecisionTreeClassifier .

但更严重的问题是class_weight是与相关的权重,但在您的情况下,“薪水”是特征的名称。您不能为特征分配权重。起初我误解了你的意图,但现在我对你想要什么感到困惑。

class_weight的形式是{class_label: weight} , 如果你真的想设置 class_weight在你的情况下,class_label应该是 0.0、1.0 等值,语法如下:

'class_weight':[{0: w} for w in [1, 2, 4, 6, 10]]

如果一个类别的权重很大,则分类器更有可能预测数据属于该类别。一个典型的使用案例class_weight是数据不平衡的时候。

这是一个 example , 尽管分类器是 SVM。

更新:

完整 parameters_to_tune应该是这样的:

parameters_to_tune = {'min_samples_split': [2, 4, 6, 10, 15, 25],
'min_samples_leaf': [1, 2, 4, 10],
'max_depth': [None, 4, 10, 15],
'splitter' : ('best', 'random'),
'max_features':[None, 2, 4, 6, 8, 10, 12, 14],
'class_weight':[{0: w} for w in [1, 2, 4, 6, 10]]}

关于python - Sklearn GridSearchCV,class_weight 因未知原因不工作 :(,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31829257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com