我手上有一个分类问题,我想用机器学习算法解决这个问题(可能是贝叶斯或马尔可夫,问题与要使用的分类器无关).鉴于一些培训实例,我正在寻找一种方法来衡量已实施的分类器的性能,同时考虑数据过度拟合问题.
那就是:给定N [1..100]训练样本,如果我在每个样本上运行训练算法,并使用这个相同的样本来测量适应度,它可能会陷入数据过度拟合问题 - 分类器会知道训练实例的确切答案,没有太多的预测能力,使健身结果无用.
一个明显的解决方案是将手工标记的样品分成训练和测试样品; 我想学习选择具有统计学意义的训练样本的方法.
白皮书,书籍指针和PDF非常感谢!
nlp artificial-intelligence classification machine-learning bayesian
我正在构建一个分类器文本.
1,有10个类别,每个类别都有更多的相对关键词.2,现在,我有一个文字.我需要将它分类为一个类别3,我使用NLTK但我不知道如何创建最佳的火车语料库,语料库
有人可以用提取功能的方法来帮助我,... tks u
gardai-plan-crackdown-on-troublemakers-at-protest-2438316.html': {'dail': 1, 'focus': 1, 'actions': 1, 'trade': 2, 'protest': 1, 'identify': 1, 'previous': 1, 'detectives': 1, 'republican': 1, 'group': 1, 'monitor': 1, 'clashes': 1, 'civil': 1, 'charge': 1, 'breaches': 1, 'travelling': 1, 'main': 1, 'disrupt': 1, 'real': 1, 'policing': 3, 'march': 6, 'finance': 1, 'drawn': 1, 'assistant': 1, 'protesters': 1, 'emphasised': 1, 'department': 1, 'traffic': 2, 'outbreak': 1, 'culprits': 1, 'proportionate': 1, 'instructions': 1, 'warned': 2, 'commanders': 1, 'michael': 2, 'exploit': 1, 'culminating': 1, 'large': 2, 'continue': 1, 'team': …Run Code Online (Sandbox Code Playgroud) 我使用libsvm进行多类分类.如何将分类分数与分类的置信度与给定样本的输出进行比较,如下所示:
Class 1: score1
Class 2: score2
Class 3: score3
Class 4: score4
Run Code Online (Sandbox Code Playgroud) 鉴于所有图像都是从相同的角度拍摄,这意味着要识别的模式将是图像中识别图案(可能是文本,签名,徽标,不是面孔,物体,人等)的最佳方法始终以相同的角度可见,但不是位置/尺寸/质量/亮度等.
假设我有徽标,我想对1000张不同尺寸和质量的图像进行测试,并获得嵌入此图案的图像,或者至少很有可能嵌入此图案.
谢谢,
classification image-processing image-recognition computer-vision
我想在公共数据集中测试我的音乐类型算法,以与其他预先存在的算法进行比较.在MIREX的情况下,所有数据都不可用.我发现GTZAN数据集在链接中可用(marsyas.info/download/data_sets)但是,现在我无法使用它.
你知道我怎么能得到这些数据?因为我使用除MFCC以外的其他功能,所以我需要流派注释以及音乐.
提前致谢.
我写了一个分类器(高斯混合模型)来分类五个人类行为.对于每次观察,分类器计算属于群集的后验概率.
我想要用阈值参数化我的系统的性能,值为0到100.对于每个阈值,对于每个观察,如果属于一个簇的概率大于阈值,我接受分类器的结果否则我丢弃它.
对于每个阈值,我计算真阳性,真阴性,假阳性,假阴性的数量.
比我计算两个函数:灵敏度和特异性为
sensitivity = TP/(TP+FN);
specificity=TN/(TN+FP);
Run Code Online (Sandbox Code Playgroud)
在matlab中:
plot(1-specificity,sensitivity);
Run Code Online (Sandbox Code Playgroud)
有ROC曲线.但结果并不是我所期望的.
这是丢弃,错误,纠正,敏感性和特异性功能的图,改变了一个动作的阈值.

这是一个动作的ROC曲线图

这是同一动作的ROC曲线的主干

我错了,但我不知道在哪里.也许我错误地计算了FP,FN,TP,TN,特别是当分类器的结果小于阈值时,所以我丢弃了.当丢弃时我必须增加什么?
什么区别
predict(rf, newdata=testSet)
Run Code Online (Sandbox Code Playgroud)
和
predict(rf$finalModel, newdata=testSet)
Run Code Online (Sandbox Code Playgroud)
我训练模型 preProcess=c("center", "scale")
tc <- trainControl("repeatedcv", number=10, repeats=10, classProbs=TRUE, savePred=T)
rf <- train(y~., data=trainingSet, method="rf", trControl=tc, preProc=c("center", "scale"))
Run Code Online (Sandbox Code Playgroud)
当我在一个居中和缩放的testSet上运行它时,我会收到0个正数
testSetCS <- testSet
xTrans <- preProcess(testSetCS)
testSetCS<- predict(xTrans, testSet)
testSet$Prediction <- predict(rf, newdata=testSet)
testSetCS$Prediction <- predict(rf, newdata=testSetCS)
Run Code Online (Sandbox Code Playgroud)
但是当我在一个未缩放的testSet上运行它时会收到一些真正的积极因素.我必须使用rf $ finalModel在居中和缩放的testSet和未缩放的rf对象上接收一些真正的postive ...我缺少什么?
编辑
测试:
tc <- trainControl("repeatedcv", number=10, repeats=10, classProbs=TRUE, savePred=T)
RF <- train(Y~., data= trainingSet, method="rf", trControl=tc) #normal trainingData
RF.CS <- train(Y~., data= trainingSet, method="rf", trControl=tc, preProc=c("center", "scale")) #scaled and centered trainingData
Run Code Online (Sandbox Code Playgroud)
在正常的testSet上:
RF predicts …Run Code Online (Sandbox Code Playgroud) 我创建了一个简单的神经网络(Python,Theano),根据他们从不同商店选择的消费历史来估计一个人的年龄.不幸的是,它并不是特别准确.
网络不了解普通性这一事实可能会损害准确性.对于网络,年龄分类之间没有关系.它目前正在从softmax输出层中选择概率最高的年龄.
我考虑将输出分类更改为每个年龄的加权概率的平均值.
例如,给定年龄概率:(年龄10:20%,年龄20:20%,年龄30:60%)
Rather than output: Age 30 (Highest probability)
Weighted Average: Age 24 (10*0.2+20*0.2+30*0.6 weighted average)
Run Code Online (Sandbox Code Playgroud)
该解决方案感觉次优.是否有更好的方法在神经网络中实现序数分类,还是有更好的机器学习方法可以实现?(例如逻辑回归)
regression classification machine-learning neural-network theano
我正在为网页编写分类器,所以我有多种数字特征,我也想对文本进行分类.我正在使用词袋方法将文本转换为(大)数字向量.代码最终是这样的:
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
import numpy as np
numerical_features = [
[1, 0],
[1, 1],
[0, 0],
[0, 1]
]
corpus = [
'This is the first document.',
'This is the second second document.',
'And the third one',
'Is this the first document?',
]
bag_of_words_vectorizer = CountVectorizer(min_df=1)
X = bag_of_words_vectorizer.fit_transform(corpus)
words_counts = X.toarray()
tfidf_transformer = TfidfTransformer()
tfidf = tfidf_transformer.fit_transform(words_counts)
bag_of_words_vectorizer.get_feature_names()
combinedFeatures = np.hstack([numerical_features, tfidf.toarray()])
Run Code Online (Sandbox Code Playgroud)
这有效,但我很关心准确性.请注意,有4个对象,只有两个数字特征.即使是最简单的文本也会产生具有九个特征的向量(因为语料库中有九个不同的单词).显然,对于真实文本,将会有数百个或数千个不同的单词,因此最终的特征向量将是<10个数字特征但是> 1000个单词的特征向量.
因此,分类器(SVM)不会将数字特征上的单词加权100到1倍吗?如果是这样,我该如何补偿以确保单词包的数量与数字特征的权重相等?
classification ×10
python ×3
arff ×1
bayesian ×1
corpus ×1
file ×1
libsvm ×1
matlab ×1
nlp ×1
nltk ×1
prediction ×1
r ×1
r-caret ×1
regression ×1
roc ×1
scikit-learn ×1
statistics ×1
svm ×1
theano ×1
threshold ×1
weka ×1