- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
数据集0-9列: float 特征(产品的参数)第10列:int标签(产品)
目标
计算标签的 0-1 分类确定性得分(这是我当前的代码应该做的)
为每行 (22'000) 的每个“product_name”(300 列)计算相同的确定性得分
错误我使用sklearn.tree.DecisionTreeClassifier。我正在尝试使用“predict_proba”,但它给出了错误。
Python 代码
data_train = pd.read_csv('data.csv')
features = data_train.columns[:-1]
labels = data_train.columns[-1]
x_features = data_train[features]
x_label = data_train[labels]
X_train, X_test, y_train, y_test = train_test_split(x_features, x_label, random_state=0)
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
clf = DecisionTreeClassifier(max_depth=3).fit(X_train, y_train)
class_probabilitiesDec = clf.predict_proba(y_train)
#ERORR: ValueError: Number of features of the model must match the input. Model n_features is 10 and input n_features is 16722
print('Decision Tree Classification Accuracy Training Score (max_depth=3): {:.2f}'.format(clf.score(X_train, y_train)*100) + ('%'))
print('Decision Tree Classification Accuracy Test Score (max_depth=3): {:.2f}'.format(clf.score(X_test, y_test)*100) + ('%'))
print(class_probabilitiesDec[:10])
# if I use X_tranin than it jsut prints out a buch of 41 element vectors: [[ 0.00490808 0.00765327 0.01123035 0.00332751 0.00665502 0.00357707
0.05182597 0.03169453 0.04267532 0.02761833 0.01988187 0.01281091
0.02936528 0.03934781 0.02329257 0.02961484 0.0353548 0.02503951
0.03577073 0.04700108 0.07661592 0.04433907 0.03019715 0.02196157
0.0108976 0.0074869 0.0291989 0.03951418 0.01372598 0.0176358
0.02345895 0.0169703 0.02487314 0.01813493 0.0482489 0.01988187
0.03252641 0.01572249 0.01455786 0.00457533 0.00083188]
[....
功能(列)
(最后一列是标签)0 1 1 1 1.0 1462293561 1462293561 0 0 0.0 0.0 11 2 2 2 8.0 1460211580 1461091152 1 1 0.0 0.0 22 3 3 3 1.0 1469869039 1470560880 1 1 0.0 0.0 33 4 4 4 1.0 1461482675 1461482675 0 0 0.0 0.0 44 5 5 5 5.0 1462173043 1462386863 1 1 0.0 0.0 5
类别列(300 列项目)
标题行:苹果 Gameboy 电池 ....第一行得分:0.763 0.346 0.345 ....第二行得分:0.256 0.732 0.935 ....
例如:某人对猫进行图像分类时使用的相似分数 VS。狗和分类给出置信度分数。
最佳答案
您无法预测标签的概率。
predict_proba
根据 X 数据预测每个标签的概率,因此:
class_probabilitiesDec = clf.predict_proba(X_test)
您发布的内容为“当我使用 X_train 时”:
[[ 0.00490808 0.00765327 0.01123035 0.00332751 0.00665502 0.00357707
0.05182597 0.03169453 0.04267532 0.02761833 0.01988187 0.01281091
0.02936528 0.03934781 0.02329257 0.02961484 0.0353548 0.02503951
0.03577073 0.04700108 0.07661592 0.04433907 0.03019715 0.02196157
0.0108976 0.0074869 0.0291989 0.03951418 0.01372598 0.0176358
0.02345895 0.0169703 0.02487314 0.01813493 0.0482489 0.01988187
0.03252641 0.01572249 0.01455786 0.00457533 0.00083188]
是每个可能标签为真的概率的列表。
编辑
阅读您的评论后,预测 proba 正是您想要的。
让我们举个例子。在下面的代码中,我们有一个包含 3 个类的分类器:11、12 或 13。
如果输入为 1,分类器应预测 11
如果输入是 2,分类器应该预测 12
...
如果输入是 7,分类器应该预测 13
clf = DecisionTreeClassifier()
clf.fit([[1],[2],[3],[4],[5],[6],[7]], [[11],[12],[13],[13],[12],[11],[13]])
现在,如果您有单行测试数据,例如5 比分类器应该预测的 12 多。所以让我们尝试一下。
clf.predict([[5]])
瞧:结果是 array([12])
如果我们想要一个概率,那么预测 proba 就是正确的方法:
clf.predict_proba([[5]])
我们得到[array([0., 1., 0.])]
在这种情况下,数组[0., 1., 0.]
意味着:
类别 11 的概率为 0%
类别 12 的概率为 100%
第 13 类的概率为 0%
如果我是对的,那就是你想要的。您甚至可以将其映射到您的类的名称:
probabilities = clf.predict_proba([[5]])[0]
{clf.classes_[i] : probabilities[i] for i in range(len(probabilities))}
它为您提供了一个包含类名概率的字典:
{11: 0.0, 12: 1.0, 13: 0.0}
现在,在您的情况下,您的类比 [11,12,13] 多得多,因此数组会变得更长。对于数据集中的每一行,predict_proba 都会创建一个数组,因此对于多于一行的数据,您的输出将变成一个矩阵。
关于python - 如何计算 DecisionTreeClassifier 的 0-1 确定性分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56359377/
我使用 Deflater 编写了一个备份程序SHA-1 用于存储文件和哈希值。我看到Java的Deflater使用zlib 。如果我显式设置 Deflater 的级别,无论平台和 JRE 版本如何,我
考虑以下算法: r = 2 while r >= 1: x = -1 + 2 * random.random() y = -1 + 2 * random.random() r
我正在编写一个持久保存到磁盘的映射类。我目前只允许 str键,但如果我可以使用更多类型会很好:希望最多可以是任何可散列的(即与内置 dict 相同的要求),但更合理的是我会接受字符串、unicode、
我有一个不使用随机化的脚本,当我运行它时会给出不同的答案。我希望每次运行脚本时答案都是一样的。该问题似乎只发生在某些(病态)输入数据上。 该代码段来自一种计算线性系统特定类型 Controller 的
这对我来说不是问题,没有它我也可以生活,但我只是好奇这是否可能以及如何实现。 今天我了解到,scrapy.Request 不会按照启动的顺序完成。 伪代码示例: class SomeSpider(sc
我正在运行这个 SVD来自 scipy 的求解器,代码如下: import numpy as np from scipy.sparse.linalg import svds features = np
我正在尝试使用确定性 Miller-Rabin 算法实现素数检查功能,但结果并不总是正确的:在检查前 1,000,000 个数字时,它只找到 78,495 而不是 78,498。 这是使用 [2, 7
我正在审查各种 Android 声音 API,我想知道我应该使用哪一个。我的目标是获得低延迟的音频,或者至少是关于播放延迟的确定性行为。 我们遇到了很多问题,Android 声音 API 似乎很垃圾,
过去,我处理过对时间要求严格的软件开发。这些应用程序的开发基本上是这样进行的:“让我们编写代码,测试延迟和抖动,并优化它们,直到它们在可接受的范围内。”我觉得这非常令人沮丧。这不是我所说的 适当的工程
给定: SQL Server 表名为 TEST_TABLE TEST_TABLE 中名为 TEST_FIELD 的列 VARCHAR(50) NOT NULL 第 1 行:10YR3/6 第 2 行:
我在 64 位 Windows PC 上使用 Microsoft Visual Studio Community 2015,版本 14.xxx。 程序读取一个文本文件,其中每一行都是桥牌(四名玩家,每
我需要在 PHP 中创建一个可证明公平(确定性和种子)加密安全 (CS) 随机数生成器。我们正在运行 PHP 5,而 PHP 7 现在并不是一个真正的选择。但是,我找到了 PHP 7 的新 CS 函数
我是一名优秀的程序员,十分优秀!