标签: classification

文本分类到类别

我正在研究文本分类问题,我正在尝试将一组单词分类为类别,是的,有很多库可用于分类,所以如果您建议使用它们,请不要回答.

让我解释一下我想要实施的内容.(以身份为例)

单词列表:

  1. java的
  2. 程序设计
  3. 语言
  4. C-尖锐

类别清单.

  1. java的
  2. C-尖锐

在这里我们将训练该组,如:

  1. java映射到类别1. java
  2. 编程映射到类1.java
  3. 编程映射到类别2.c-sharp
  4. 语言映射到类1.java
  5. 语言映射到类别2.c-sharp
  6. c-sharp映射到类别2.c-sharp

现在我们有一个短语" 最好的java编程书 "来自给定的短语,下面的单词与我们的"单词列表"匹配.:

  1. java的
  2. 程序设计

"编程"有两个映射类别"java"和"c-sharp",因此它是一个常用词.

"java"仅映射到"java"类别.

所以这个短语的匹配类别是"java"

这就是我想到的,这个解决方案很好,可以实现,你的建议是什么,我错过的任何东西,缺陷等等.

classification machine-learning bayesian

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

将弱学习者与强分类器结合起来

如何将少数弱学习者组合成一个强大的分类器?我知道这个公式,但问题是,在我读过的每篇关于AdaBoost的论文中,只有没有任何例子的公式.我的意思是 - 我的学习者和他们的体重很弱,所以我可以做公式告诉我做的事情(将学习者的体重乘以另一个乘以体重和另一个等等),但我究竟是怎么做到的?我的弱学习者是决策树桩.他们有属性和门槛,那么我会乘以什么呢?

artificial-intelligence classification machine-learning decision-tree adaboost

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

使用LibSVM在Java代码中出现Weka错误"无法处理数字类"

我正在尝试使用基于LibSVM的分类器使用Weka,但是我遇到了这个错误:

Exception in thread "main" weka.core.UnsupportedAttributeTypeException:weka.classifiers.functions.LibSVM: Cannot handle numeric class!
    at weka.core.Capabilities.test(Unknown Source)
    at weka.core.Capabilities.test(Unknown Source)
    at weka.core.Capabilities.test(Unknown Source)
    at weka.core.Capabilities.testWithFail(Unknown Source)
    at weka.classifiers.functions.LibSVM.buildClassifier(Unknown Source)
    at imgclassifier.ImgClassifier.main(ImgClassifier.java:45)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

try {

   File f = new File("australian.txt");
   LibSVMLoader loader = new LibSVMLoader();
   loader.setSource(f);
   Instances i = loader.getDataSet();

   LibSVM svm = new LibSVM();
   svm.buildClassifier(i);

}catch (IIOException e) {
   e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

australian.txt就是一个例子:LibSVM DataSet 任何人都可以解释我的错误在哪里?提前致谢

java classification weka libsvm

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

计算稀疏矩阵的相似性

我正在使用Python与numpy,scipy和scikit-learn模块.

我想用非常大的稀疏矩阵对数组进行分类.(100,000*100,000)

矩阵中的值等于0或1.我唯一拥有的是value = 1的索引.

a = [1,3,5,7,9] 
b = [2,4,6,8,10]
Run Code Online (Sandbox Code Playgroud)

意思是

a = [0,1,0,1,0,1,0,1,0,1,0]
b = [0,0,1,0,1,0,1,0,1,0,1]
Run Code Online (Sandbox Code Playgroud)

如何在scipy中将索引数组更改为稀疏数组?

如何快速对这些阵列进行分类?

非常感谢你.

python numpy classification scipy sparse-matrix

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

如何检测照片是否为海报(不现实)?

我有很多来自音乐家网站的.jpeg.这些图像由即将上映的海报和乐队照片(现实生活中的乐队照片)组成.

这是一个示例海报:

在此输入图像描述

我不熟悉任何现代技术或算法(如果它们存在?),但这是我认为我可能会寻找的:

  • 图像中的文字通常是海报的死亡赠品.
  • 也许真实的照片(即非海报)遵循不同的颜色分布?
  • 海报可能不太可能有面孔 - 但这是一个相当弱的断言.

是否有任何分类算法可以检测图像是否是海报?

artificial-intelligence classification machine-learning image-processing

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

Python,OpenCV:无法使用opencv_traincascade进行自定义LBP级联

我在mac os x 10.7.5上使用通过macports安装的opencv 2.4.4和python 2.7.5.

我想训练一个级联来寻找男性正面.但是我收到了terminate called throwing an exceptionAbort trap: 6错误.我要求SO社区帮我弄清楚可能出现的问题.

负面(背景)图片来自谷歌:googleImages_noFaces(293张图片)

正面图像来自Karolinska数据库:trainingSet(70图像)

我创建了一个文本文件,指示背景图像的相对位置:bgDesc.txt

我还创建了一个文本文件,指示相对位置,图像中正实例的数量(始终为1)和对象的边界区域(整个图像):maleDesc.txt

所有这些文件都可以从这里下载.

文件的组织采用以下形式:

/trainingSet
    image1.jpg
    image2.jpg
    .
    .
    .

/googleImages_noFaces
    image1.jpg
    image2.jpg
    .
    .
    .

/cascadeFiles

maleDesc.txt
bgDesc.txt
Run Code Online (Sandbox Code Playgroud)

当我使用opencv_createsamples时,使用maleDesc.vec以下行成功创建了一个文件:

opencv_createsamples -vec maleDesc.vec -info maleDesc.txt -bg bgDesc.txt -num 70 -w 24 -h 24
Run Code Online (Sandbox Code Playgroud)

如果我使用-show参数我可以看到创建了24x24像素图像.

然后我试试

opencv_traincascade -data cascadeFiles -vec maleDesc.vec -bg bgDesc.txt -numPos 70 - numNeg 293 -numStages 1 -precalcValBufSize 500 -precalcIdxBufSize 500 -featureType LBP -w 24 …
Run Code Online (Sandbox Code Playgroud)

python opencv classification image-processing image-recognition

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

sklearn Random Forest分类器可以通过树调整样本大小,来处理类不平衡吗?

也许这太啰嗦了.关于sklearn的随机森林的简单问题:

对于真/假分类问题,sklearn的随机森林中是否有一种方法可以指定用于训练每棵树的样本大小,以及真假观察的比例?

更多详情如下:


在随机森林的R实现中,名为randomForest,有一个选项sampsize().这允许您根据结果平衡用于训练每棵树的样本.

例如,如果您试图预测结果是真还是假,并且训练集中90%的结果都是假的,您可以设置sampsize(500, 500).这意味着每棵树将在训练集中随机抽样(替换)进行训练,其中500真实和500错误观察.在这些情况下,我发现模型在使用50%截止值时可以更好地预测真实结果,从而产生更高的kappas.

在sklearn实现中似乎没有这样的选项.

  • 有没有办法在sklearn中模仿这个功能?
  • 只是根据Kappa统计数据优化截止值会得到类似的结果,还是在这种方法中丢失了什么?

python r classification random-forest scikit-learn

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

无法为命名路径admin_sonata_classification_category_create生成URL

我已经完成了安装calassification捆绑包的错误:

在呈现模板期间抛出异常("无法生成指定路由的URL"admin_sonata_classification_category_create"因为此类路由不存在.")在SonataAdminBundle:Block:block_admin_list.html.twig第39行.

ps:我使用了以下步骤:https://sonata-project.org/bundles/classification/2-2/doc/reference/installation.html

classification sonata-admin symfony-2.7

6
推荐指数
2
解决办法
3903
查看次数

Spark ML VectorAssembler()处理数据帧中的数千列

我正在使用spark ML管道在真正的宽桌上设置分类模型.这意味着我必须自动生成处理列的所有代码,而不是精确地键入每个列.我几乎是scala和spark的初学者.当我尝试执行以下操作时,我被困在VectorAssembler()部分:

val featureHeaders = featureHeader.collect.mkString(" ")
//convert the header RDD into a string
val featureArray = featureHeaders.split(",").toArray
val quote = "\""
val featureSIArray = featureArray.map(x => (s"$quote$x$quote"))
//count the element in headers
val featureHeader_cnt = featureHeaders.split(",").toList.length


// Fit on whole dataset to include all labels in index.
import org.apache.spark.ml.feature.StringIndexer
val labelIndexer = new StringIndexer().
  setInputCol("target").
  setOutputCol("indexedLabel")

val featureAssembler = new VectorAssembler().
  setInputCols(featureSIArray).
  setOutputCol("features")

val convpipeline = new Pipeline().
  setStages(Array(labelIndexer, featureAssembler))

val myFeatureTransfer = convpipeline.fit(df)
Run Code Online (Sandbox Code Playgroud)

显然它没有用.我不知道我该怎么办才能使整个事情更加自动化,或者ML管道在这个时刻不会占用那么多列(我怀疑)?

pipeline scala classification apache-spark

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

获得较低的ROC AUC分数,但准确度较高

航班延误数据集的版本中使用LogisticRegression类.scikit-learn

pandas用来选择一些列:

df = df[["MONTH", "DAY_OF_MONTH", "DAY_OF_WEEK", "ORIGIN", "DEST", "CRS_DEP_TIME", "ARR_DEL15"]]
Run Code Online (Sandbox Code Playgroud)

NaN用0 填写值:

df = df.fillna({'ARR_DEL15': 0})
Run Code Online (Sandbox Code Playgroud)

确保分类列标有"类别"数据类型:

df["ORIGIN"] = df["ORIGIN"].astype('category')
df["DEST"] = df["DEST"].astype('category')
Run Code Online (Sandbox Code Playgroud)

然后调用get_dummies()来自pandas:

df = pd.get_dummies(df)
Run Code Online (Sandbox Code Playgroud)

现在我训练和测试我的数据集:

from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()

test_set, train_set = train_test_split(df, test_size=0.2, random_state=42)

train_set_x = train_set.drop('ARR_DEL15', axis=1)
train_set_y = train_set["ARR_DEL15"]

test_set_x = test_set.drop('ARR_DEL15', axis=1)
test_set_y = test_set["ARR_DEL15"]

lr.fit(train_set_x, train_set_y)
Run Code Online (Sandbox Code Playgroud)

一旦我调用该score方法,我就会得到0.867.但是,当我调用该roc_auc_score方法时,我得到的数字大约低于0.583

 probabilities = lr.predict_proba(test_set_x)

 roc_auc_score(test_set_y, …
Run Code Online (Sandbox Code Playgroud)

classification machine-learning scikit-learn logistic-regression auc

6
推荐指数
2
解决办法
7681
查看次数