我正在研究二元分类任务。我的评估数据不平衡,包含大约。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
我有两种类型的输入序列,其中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)。如果需要,我很乐意提供更多详细信息。
我有一个信用卡数据集,其中 98% 的交易是非欺诈交易,2% 是欺诈交易。
我一直在尝试在训练和测试拆分之前对大多数类别进行欠采样,并在测试集上获得非常好的召回率和精度。
当我仅在训练集上进行欠采样并在独立集上进行测试时,我得到的精度非常差,但召回率相同!
我的问题是:
我是否应该在分成 train 和 test 之前进行欠采样,这会扰乱数据集的分布并且不能代表现实世界吗?
或者上述逻辑仅在过采样时适用?
谢谢
我试图找到与大量其他图像(+10.000)最接近的图像匹配。背景颜色全白色,相同的拍摄角度,图像内容形状彼此接近(见下图)。我尝试使用opencvandORB和BFMatcherwithknnMatch来找到最接近的匹配。但我还没有找到我想要的比赛。
据我理解,图像需要是灰度的,但就我而言,我认为颜色是一个非常重要的描述符?
我对 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
我正在研究一个分类问题,它有不同的传感器.每个传感器收集一组数值.
我认为这是一个分类问题,并希望使用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}.
非常感谢您抽出时间审阅我的问题.
我正在进行数据挖掘测试,其中树的大小对我来说并不重要.有人知道是否有办法在WEKA中增加J48树的大小,这样我才能达到更高的准确度?或者我应该使用其他树算法?
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) 我是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) 我有一组数据,每个条目有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) 我有两个numpy数组(功能)。numpy数组的尺寸为:
audio =(360,13)--->从音频文件中提取特征
image =(360,5)->特征是从这些音频文件的频谱图中提取的。
我想一起使用这两个数组来训练svm分类器。但是我知道svm train只能得到一个数组。(svm.train(feature,label))。我正在寻找是否有像svm.train(音频,图像,标签)之类的东西
我也尝试连接这两个数组,但是维数不同。我该如何解决这种情况?
python artificial-intelligence classification machine-learning svm
classification ×10
python ×5
keras ×2
weka ×2
lstm ×1
opencv ×1
precision ×1
resampling ×1
scikit-learn ×1
statistics ×1
svm ×1
tensorflow ×1