- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 sklearn.tree.DecisionTreeClassifier
来训练 3-class 分类问题。
3个类的记录数如下:
A: 122038
B: 43626
C: 6678
当我训练分类器模型时,它无法学习类 - C
。虽然效率是 65-70%,但它完全忽略了 C 类。
后来我知道了 class_weight
参数,但我不知道如何在多类设置中使用它。
这是我的代码:(我使用了 balanced
但它给出的准确度更差)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)
clf = tree.DecisionTreeClassifier(criterion="gini", max_depth=3, random_state=1,class_weight='balanced')
clf = clf.fit(X_train,y_train)
y_pred = clf.predict(X_test)
如何使用与类分布成比例的权重。
其次,有没有更好的方法来解决这个不平衡类问题以提高准确性?
最佳答案
您还可以将值字典传递给 class_weight 参数以设置您自己的权重。例如,将 A 级的重量减半:
class_weight={
'A': 0.5,
'B': 1.0,
'C': 1.0
}
通过执行 class_weight='balanced',它会自动设置与类频率成反比的权重。
更多信息可以在 class_weight 参数下的文档中找到: https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html
通常可以预期平衡类会降低准确性。这就是为什么准确性通常被认为是不平衡数据集的一个较差指标的原因。
您可以尝试 sklearn 包含的 Balanced Accuracy 指标开始,但还有许多其他潜在指标可供尝试,这取决于您的最终目标是什么。
https://scikit-learn.org/stable/modules/model_evaluation.html
如果您不熟悉“混淆矩阵”及其相关值(例如精度和召回率),那么我会从那里开始您的研究。
https://en.wikipedia.org/wiki/Precision_and_recall
https://en.wikipedia.org/wiki/Confusion_matrix
https://scikit-learn.org/stable/auto_examples/model_selection/plot_confusion_matrix.html
关于python - 如何在 DecisionTreeClassifier 中设置类权重以进行多类设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62581004/
我正在制作一个交互式建模工具。这个想法是用决策树生成变量。然而,这个变量需要具有经济意义(我希望能够删除理论上没有意义的分割)。因此,我用plotly绘制了一棵树,以便能够监听用户点击的位置。我在下面
我正在尝试对具有多个级别的对象进行分类。我解释它的最好方法是用一个例子: 我可以做到这一点: from sklearn import tree features = ['Hip Hop','Bosto
我正在使用 scikit-learn 中的 DecisionTreeClassifier 对一些数据进行分类。我还使用其他算法,并使用精确召回指标下的面积来比较它们。问题是 DecisionTreeC
有没有办法计算 decision tree 中两片叶子之间的距离? . 距离是指从一片叶子到另一片叶子的节点数。 例如,在此示例图中: distance(leaf1, leaf2) == 1 dist
我有两个学习过的sklearn.tree.tree.DecisionTreeClassifier。两者都使用相同的训练数据进行训练。两者都为决策树学习了不同的最大深度。 decision_tree_m
我正在使用 sklearn.tree.DecisionTreeClassifier 来训练 3-class 分类问题。 3个类的记录数如下: A: 122038 B: 43626 C: 6678 当我
我正在使用 python sklearn RandomForestClassifier 并尝试导出决策树。 基本代码如下: from sklearn import tree with open(dot
我正在尝试使用 DataFrame(pandas)从 sklearn 实现 DecisionTreeClassifier,但在分割数据时它返回一些奇怪的值。我的数据集包含 3 列,其 PIL 逊相关系
我一直在玩 sklearn 并使用虹膜数据在线遵循一些简单的示例。 我现在开始使用一些其他数据。我不确定这种行为是否正确,而且我有误解,但每次我调用 fit(x,y) 时,我都会得到完全不同的树数据。
使用 DecisionTreeClassifier I visualized it using graphviz 时,我不得不说,令我惊讶的是,它似乎采用分类数据并将其用作连续数据。 我的所有特征都是
我正在训练一个 sklearn.tree.DecisionTreeClassifier。我从 pandas.core.frame.DataFrame 开始。这个数据框的一些列是真正应该是分类的字符串。
我正在尝试使用字符串中的参数的 DecisionTreeClassifier。 print d # d= 'max_depth=100' clf = DecisionTreeClassifi
我有一个数据集,其中的类是不平衡的。这些类是 0、1 或 2。 如何计算每个类别的预测误差,然后在 scikit-learn 中相应地重新平衡权重? 最佳答案 如果你想完全平衡(将每个类视为同等重要)
我是机器学习新手 - 特别是分类技术。 我已经在线阅读了一些教程,并且正在使用 iris data set 。我尝试使用 将数据集拆分为训练和测试 train, test = train_test_s
如何告诉 ml.DecisionTreeClassifier 对连续特征而不是分类特征进行评分,而无需使用 Bucketizer 或 QuantileDiscretizer 方法? 下面是我将连续特征
我正在使用这个数据集Weath Based on age并且文档指出准确度应在 84% 左右。不幸的是,我的程序的准确率是 25% 为了处理数据,我执行了以下操作: 1. Loaded the .tx
假设我有一个数据集: X y 20 0 22 0 24 1 27 0 30 1 40 1 20
我有一个来自 sklearn 的决策树分类器,我使用 pydotplus 来展示它。然而,当我的演示文稿(熵、样本和值)的每个节点上有很多信息时,我真的不喜欢。 为了更容易向人们解释,我只想保留决定和
我已经安装了 DecisionTreeClassifier 的实例,并且正在尝试提取每个节点的预测概率。我需要这个来创建类似于下面所示的自定义决策树可视化。 我可以导出每个节点的特征和阈值。 dtc.
我使用 sklearn.tree.DecisionTreeClassifier 构建决策树。通过最佳参数设置,我得到了一棵有不必要叶子的树(参见下面的示例图片 - 我不需要概率,所以用红色标记的叶子节
我是一名优秀的程序员,十分优秀!