标签: classification

F1 - 数据不平衡的得分

我正在研究二元分类任务。我的评估数据不平衡,包含大约。20%来自class1,80%来自class2。即使我对每个类类型都有很好的分类准确度,如 class1 为 0.602,class2 为 0.792,如果我计算 class1 上的 f1 分数,我会得到 0.46,因为假阳性计数很大。如果我在 class2 上计算,我得到的 f1 分数为 0.84。

我的问题是,评估不平衡数据分类任务的最佳实践是什么?我可以获得这些 f1 分数的平均值还是应该选择其中一个?在不平衡数据上评估分类任务的最佳评估指标是什么?

顺便说一句,这些是我的 TP、TN、FN、FP 计数;

目标点:115

田纳西州:716

国民警卫队:76

FP:188

precision statistics classification machine-learning imbalanced-data

2
推荐指数
1
解决办法
5754
查看次数

如何在 Keras 中组合两个具有不同输入大小的 LSTM 层?

我有两种类型的输入序列,其中input1包含 50 个值和input2包含 25 个值。我尝试在函数式 API 中使用 LSTM 模型来组合这两种序列类型。然而,由于我的两个输入序列的长度不同,我想知道我当前所做的是否是正确的方法。我的代码如下:

input1 = Input(shape=(50,1))
x1 = LSTM(100)(input1)
input2 = Input(shape=(25,1))
x2 = LSTM(50)(input2)

x = concatenate([x1,x2])
x = Dense(200)(x)
output = Dense(1, activation='sigmoid')(x)

model = Model(inputs=[input1,input2], outputs=output)
Run Code Online (Sandbox Code Playgroud)

更具体地说,我想知道如何组合两个具有不同输入长度的 LSTM 层(即在我的例子中为 50 和 25)。如果需要,我很乐意提供更多详细信息。

python classification deep-learning lstm keras

2
推荐指数
1
解决办法
3738
查看次数

训练/测试分割之前或之后的欠采样

我有一个信用卡数据集,其中 98% 的交易是非欺诈交易,2% 是欺诈交易。

我一直在尝试在训练和测试拆分之前对大多数类别进行欠采样,并在测试集上获得非常好的召回率和精度。

当我仅在训练集上进行欠采样并在独立集上进行测试时,我得到的精度非常差,但召回率相同!

我的问题是:

我是否应该在分成 train 和 test 之前进行欠采样,这会扰乱数据集的分布并且不能代表现实世界吗?

或者上述逻辑仅在过采样时适用?

谢谢

classification machine-learning resampling imbalanced-data

2
推荐指数
1
解决办法
1万
查看次数

查找与 +10.000 个其他具有相似特征的图像最接近的匹配

我试图找到与大量其他图像(+10.000)最接近的图像匹配。背景颜色全白色,相同的拍摄角度,图像内容形状彼此接近(见下图)。我尝试使用opencvandORBBFMatcherwithknnMatch来找到最接近的匹配。但我还没有找到我想要的比赛。

据我理解,图像需要是灰度的,但就我而言,我认为颜色是一个非常重要的描述符?

我对 opencv 和图像匹配都很陌生,所以如果我需要使用其他方法,你能帮助我吗?

import cv2
import os
orb = cv2.ORB_create(nfeatures=1000) # Find 1000 features to match from 
bf = cv2.BFMatcher()

# Image to match
findImg = 'captainA.png'
imgCur = cv2.imread(f'{"Images"}/{findImg}', 0)
kp1,des1 = orb.detectAndCompute(imgCur,None)

# Loop through all superheroe images and find closest match
images = ["img1.png","img2.png","img3.png","img4.png","img5.png","img6.png","img7.png","img8.png","img9.png","img10.png","img11.png","img12.png"]

matchList = []
names = []
for img in images:
    imgCur = cv2.imread(f'{Superheroes}/{img}', 0)
    kp2,des2 = orb.detectAndCompute(imgCur,None)
 
    matches = bf.knnMatch(des1,des2,k=2)
    goodMatches = [] …
Run Code Online (Sandbox Code Playgroud)

python opencv classification computer-vision object-recognition

2
推荐指数
1
解决办法
3699
查看次数

使用weka对传感器数据进行分类

我正在研究一个分类问题,它有不同的传感器.每个传感器收集一组数值.

我认为这是一个分类问题,并希望使用weka作为此问题的ML工具.但我不确定如何使用weka来处理输入值?哪个分类器最适合这个问题(一个特征的实例是一组数值)?

例如,我有三个传感器A,B,C.我可以将所有传感器中的5个采集数据定义为一个实例吗?例如,A的一个实例是{1,2,3,4,5,6,7},B的一个实例是{3,434,534,213,55,4,7).13 C {424,24,24,13,24,5,6}.

非常感谢您抽出时间审阅我的问题.

classification machine-learning weka feature-selection

1
推荐指数
1
解决办法
974
查看次数

增加J48树大小weka

我正在进行数据挖掘测试,其中树的大小对我来说并不重要.有人知道是否有办法在WEKA中增加J48树的大小,这样我才能达到更高的准确度?或者我应该使用其他树算法?

classification machine-learning weka

1
推荐指数
1
解决办法
1477
查看次数

为什么BernoulliNBC与虹膜数据集上的GaussianNBC或MultinomialNBC相比表现更差?

 from sklearn import datasets
 iris = datasets.load_iris()
 from sklearn.naive_bayes import GaussianNB, MultinomialNB, BernoulliNB
 gnb = GaussianNB()
 y_pred = gnb.fit(iris.data, iris.target).predict(iris.data)
 print("Number of mislabeled points out of a total %d points : %d" % (iris.data.shape[0],(iris.target != y_pred).sum()))

 mnb = MultinomialNB()
 y_pred_mnb = mnb.fit(iris.data, iris.target).predict(iris.data)
 print("Number of mislabeled points out of a total %d points : %d" % (iris.data.shape[0],(iris.target != y_pred_mnb).sum()))

 bnb = BernoulliNB()
 y_pred_bnb = bnb.fit(iris.data, iris.target).predict(iris.data)
 print("Number of mislabeled points out of a total %d points : %d" % (iris.data.shape[0],(iris.target …
Run Code Online (Sandbox Code Playgroud)

python classification machine-learning scikit-learn

1
推荐指数
1
解决办法
1216
查看次数

TensorFlow中的神经网络比Random Forest更糟糕,每次都预测相同的标签

我是DNN和TesorFlow的新手.我有NN用于二进制分类的问题.

作为输入数据,我有文本数据集,它由TF-IDF转换为数字向量.

训练数据集的行数为43 000个特征数4235

我尝试使用TFlearn库,然后使用Keras io.但结果是相同的--NN只预测一个标签0或1,然后给出比随机森林更差的准确度.

我将添加脚本,我用于NN构建.请告诉我它有什么问题.

model = Sequential()

model.add(Dense(100, input_dim=4235, init='uniform', activation='relu'))
model.add(Dense(4235, 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(X_train, y_train, nb_epoch=100, batch_size=10,  verbose=2)
Run Code Online (Sandbox Code Playgroud)

classification neural-network keras tensorflow

1
推荐指数
1
解决办法
760
查看次数

具有5个标签和9个特征的梯度下降分类

我有一组数据,每个条目有9个"功能"(正数从1e-3到9e3),我需要使用每个条目的功能为条目选择5个可能的标签之一.

我知道我需要定义一个评分函数,它接收特征,对它们进行加权,并返回一个数字,反映每个标签被赋予这些特征和权重的可能性.损失函数将在输入上凸出:它将返回评分函数的输出与人工提供的标签之间的差异.评分函数的权重矩阵将通过梯度下降来优化,使得损失最小化.

具体来说,我有一些看起来像这样的东西:

entry 1> (ground-truth label), [0.9, 0.2, 1e-2, 6.853, 0.882 ... 1]
    *prediction: label 3* *actually: label 4* *loss = some number, update weights*
entry 2> (ground-truth label), [features 1...9]
    *prediction: label 1* *actually: label 1* *loss = 0, don't update weights*
...
entry 80,000> (etc...)
Run Code Online (Sandbox Code Playgroud)

如何选择将这些特征映射到五个可能标签之一的可能性的评分函数?

看起来像是这样的:

for (loop through all data)
    [features] <dot product> [weights] = prediction
    if(prediction near (number))
        assign label 1
    else if (prediction near (number 2)
        assign label 2
    else (etc...)

    hinge_loss_function(prediction) = …
Run Code Online (Sandbox Code Playgroud)

python classification machine-learning gradient-descent

1
推荐指数
1
解决办法
155
查看次数

如何使用两个特征向量训练svm?

我有两个numpy数组(功能)。numpy数组的尺寸为:

audio =(360,13)--->从音频文件中提取特征

image =(360,5)->特征是从这些音频文件的频谱图中提取的。

我想一起使用这两个数组来训练svm分类器。但是我知道svm train只能得到一个数组。(svm.train(feature,label))。我正在寻找是否有像svm.train(音频,图像,标签)之类的东西

我也尝试连接这两个数组,但是维数不同。我该如何解决这种情况?

python artificial-intelligence classification machine-learning svm

1
推荐指数
1
解决办法
1195
查看次数