- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下训练集:
Text,y
MRR 93345,1
MRR 93434,1
MRR 93554,1
MRR 938900,1
MRR 93970,1
MRR 937899,1
MRR 93868,1
MRR 938769,1
MRR 93930,1
MRR 92325,1
MRR 931932,1
MRR 933922,1
MRR 934390,1
MRR 93204,1
MRR 93023,1
MRR 930982,1
MRR 87678,-1
MRR 87956,-1
MRR 87890,-1
MRR 878770,-1
MRR 877886,-1
MRR 87678367,-1
MRR 8790,-1
MRR 87345,-1
MRR 87149,-1
MRR 873790,-1
MRR 873493,-1
MRR 874303,-1
MRR 874343,-1
MRR 874304,-1
MRR 879034,-1
MRR 879430,-1
MRR 87943,-1
MRR 879434,-1
MRR 871984,-1
MRR 873949,-1
我的代码如下:
# Create the document term matrix
dtMatrix <- create_matrix(data["Text"],language="english", removePunctuation=TRUE, stripWhitespace=TRUE,
toLower=TRUE,
removeStopwords=TRUE,
stemWords=TRUE, removeSparseTerms=.998)
# Configure the training data
container <- create_container(dtMatrix, data$y, trainSize=1:nrow(dtMatrix), virgin=FALSE)
# train a SVM Model
model <- train_model(container, "SVM", kernel="linear" ,cost=1)
# new data
predictionData <- list("MRR 93111")
# create a prediction document term matrix
predMatrix <- create_matrix(predictionData, originalMatrix=dtMatrix,language="english", removePunctuation=TRUE, stripWhitespace=TRUE,
toLower=TRUE,
removeStopwords=TRUE,
stemWords=TRUE, removeSparseTerms=.998)
# create the corresponding container
predSize = length(predictionData);
predictionContainer <- create_container(predMatrix, labels=rep(0,predSize), testSize=1:predSize, virgin=FALSE)
# predict
results <- classify_model(predictionContainer, model)
现在通过使用 train_model 函数,我想预测:当 y=1 时,MRR 93111。这意味着如果字符串以“MRR 93”开头,则输出应为 1,而词干“MRR 87”则给出 -1。实际上它不起作用,因为我得到 MRR 93111 -1 0.5778781
此外,如果我以不同的方式整理训练集,或者如果我针对同一数据集多次运行脚本,结果似乎会发生变化,这对我来说听起来很奇怪。
更新1:dput(数据)
structure(list(Text = structure(c(26L, 28L, 30L, 34L, 36L, 31L,
32L, 33L, 35L, 21L, 24L, 27L, 29L, 25L, 22L, 23L, 10L, 20L, 14L,
13L, 12L, 11L, 15L, 3L, 1L, 5L, 4L, 7L, 9L, 8L, 16L, 18L, 17L,
19L, 2L, 6L), .Label = c("MRR 87149", "MRR 871984", "MRR 87345",
"MRR 873493", "MRR 873790", "MRR 873949", "MRR 874303", "MRR 874304",
"MRR 874343", "MRR 87678", "MRR 87678367", "MRR 877886", "MRR 878770",
"MRR 87890", "MRR 8790", "MRR 879034", "MRR 87943", "MRR 879430",
"MRR 879434", "MRR 87956", "MRR 92325", "MRR 93023", "MRR 930982",
"MRR 931932", "MRR 93204", "MRR 93345", "MRR 933922", "MRR 93434",
"MRR 934390", "MRR 93554", "MRR 937899", "MRR 93868", "MRR 938769",
"MRR 938900", "MRR 93930", "MRR 93970"), class = "factor"), Y = c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, -1L,
-1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L,
-1L, -1L, -1L, -1L, -1L, -1L)), .Names = c("Text", "Y"), class = "data.frame", row.names = c(NA,
-36L))
最佳答案
您的问题是您的代码在单词级别使用训练数据和分类。
> dtMatrix$dimnames$Terms
[1] "87149" "871984" "87345" "873493" "873790" "873949" "874303" "874304" "874343" "87678" "87678367"
[12] "877886" "878770" "87890" "8790" "879034" "87943" "879430" "879434" "87956" "92325" "93023"
[23] "930982" "93111" "931932" "93204" "93345" "933922" "93434" "934390" "93554" "937899" "93868"
[34] "938769" "938900" "93930" "93970" "mrr"
我不太确定 SVM 如何准确地处理这些数字字符串,但它似乎不太关心字符串的 93 部分。将字符串拆分为字符会赋予各个数字更大的权重:
df$Text <- sapply(1:length(df$Text), function(i) paste(unlist(strsplit(df$Text[i], split = "")), collapse = " "))
我使用 df 而不是 data,因为 data 已经是 RTextTools 中的一个对象,并且在运行代码时给我带来了一些问题。创建矩阵时,必须更改最小字长选项。
dtMatrix <- create_matrix(df$Text,language="english", minWordLength=1, #!
removePunctuation=TRUE, stripWhitespace=TRUE,
toLower=TRUE, removeStopwords=TRUE,
stemWords=TRUE, removeSparseTerms=.998)
现在我们得到:
> dtMatrix$dimnames$Terms
[1]“0”“1”“2”“3”“4”“5”“6”“7”“8”“9”“m”“r”
更重要的是:
> results
SVM_LABEL SVM_PROB
1 1 0.9144185
我最近参加了一个有关 RTextTools 和 SVM 的研讨会,他们评论说,使用 SVM,每次训练模型时都会得到略有不同的结果。我不完全确定为什么,所以我不会尝试解释,但有人向我们推荐了一本名为“R 中应用统计学习简介”的免费书籍来阅读支持向量机。
完整代码如下:
df <- structure(list(Text = structure(c(26L, 28L, 30L, 34L, 36L, 31L,
32L, 33L, 35L, 21L, 24L, 27L, 29L, 25L, 22L, 23L, 10L, 20L, 14L,
13L, 12L, 11L, 15L, 3L, 1L, 5L, 4L, 7L, 9L, 8L, 16L, 18L, 17L,
19L, 2L, 6L), .Label = c("MRR 87149", "MRR 871984", "MRR 87345",
"MRR 873493", "MRR 873790", "MRR 873949", "MRR 874303", "MRR 874304",
"MRR 874343", "MRR 87678", "MRR 87678367", "MRR 877886", "MRR 878770",
"MRR 87890", "MRR 8790", "MRR 879034", "MRR 87943", "MRR 879430",
"MRR 879434", "MRR 87956", "MRR 92325", "MRR 93023", "MRR 930982",
"MRR 931932", "MRR 93204", "MRR 93345", "MRR 933922", "MRR 93434",
"MRR 934390", "MRR 93554", "MRR 937899", "MRR 93868", "MRR 938769",
"MRR 938900", "MRR 93930", "MRR 93970"), class = "factor"), Y = c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, -1L,
-1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L,
-1L, -1L, -1L, -1L, -1L, -1L)), .Names = c("Text", "Y"), class = "data.frame", row.names = c(NA,
-36L))
df$Text <- as.character(df$Text)
# new data
df[nrow(df)+1,] <- c("MRR 93111","")
df$Text <- sapply(1:length(df$Text), function(i) paste(unlist(strsplit(df$Text[i], split = "")), collapse = " "))
# Create the document term matrix
dtMatrix <- create_matrix(df$Text,language="english", minWordLength=1,
removePunctuation=TRUE, stripWhitespace=TRUE,
toLower=TRUE, removeStopwords=TRUE,
stemWords=TRUE, removeSparseTerms=.998)
dtMatrix$dimnames$Terms
dtMatrix$dimnames$Docs
# Configure the training data
container <- create_container(dtMatrix, df$Y, trainSize=1:36, testSize = 37, virgin=TRUE)
container <- create_container(dtMatrix,
labels=df$Y, trainSize=1:36, testSize = 37, virgin=TRUE)
# train a SVM Model
model <- train_model(container, "SVM",kernel="linear" ,cost=1) ##??
results <- classify_model(container,model)
results
关于r - 使用 Rtexttools 库进行机器学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42746226/
简介 在上一篇文章《机器学习:神经网络构建(上)》中讨论了线性层、激活函数以及损失函数层的构建方式,本节中将进一步讨论网络构建方式,并完整的搭建一个简单的分类器网络。 目录 网络Netwo
简介 在本篇文章中,我们采用逻辑回归作为案例,探索神经网络的构建方式。文章详细阐述了神经网络中层结构的实现过程,并提供了线性层、激活函数以及损失函数的定义(实现方法)。 目录 背景介绍
简介 在前两篇文章中,我们详细探讨了如何利用采样数据来估计回归曲线。接下来,在本节中,我们将深入讨论如何处理分类问题。 章节安排 背景介绍 数学方法 程序实现 背景介绍 线
简介 在上一篇文章《机器学习:线性回归(上)》中讨论了二维数据下的线性回归及求解方法,本节中我们将进一步的将其推广至高维情形。 章节安排 背景介绍 最小二乘法 梯度下降法 程序
PyCaret是一个开源、低代码Python机器学习库,能够自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具,极大地加快了实验周期,提高了工作效率。PyCaret本质上是围绕几个机器学习
在我的研究进展中,我现在已经将寄生虫从图像中分离出来。寄生虫看起来像蠕虫。我希望 MATLAB 读取所有输入图像,查找类似深紫色图像的蠕虫,如果检测到,则给出检测到的答复。我尝试使用直方图比较,但我认
目前我正在尝试了解机器学习算法的工作方式,但我没有真正了解的一件事是预测标签的计算准确度与视觉混淆矩阵之间的明显差异。我会尽量解释清楚。 这是数据集的片段(这里你可以看到 9 个样本(在真实数据集中大
第一章 绪论 机器学习 : 致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。在计算机系统中, “经验” 通常以“数据“形式存在,因此,机器学习所研究的主要内容,是关于在计算
1. 算法原理(K-Nearest Neighbor) 本质是通过距离判断两个样本是否相似,如果距离够近就认为他们足够相似属于同一类别 找到离其最近的 k 个样本,并将这些样本称
前言 K-means是一种经典的无监督学习算法,用于对数据进行聚类。K-means算法将数据集视为具有n个特征的n维空间,并尝试通过最小化簇内平方误差的总和来将数据点划分为簇。本文将介绍K-m
目录 前言 介绍LightGBM LightGBM的背景和起源 L
前言 可以说掌握了机器学习,你就具备了与机器对话,充分利用机器为人类服务的能力。在人工智能时代,这将成为一项必备技能,就好比十年前你是编程大牛,二十年前你英语超好一样。因此,无论你是什么专业的
几个贯穿始终的概念 当我们把人类学习简单事物的过程抽象为几个阶段,再将这些阶段通过不同的方法具体化为代码,依靠通过计算机的基础能力-- 计算 。我们就可以让机器能够“学会”一些简单的事物。
1、选题背景 人脸识别技术是模式识别和计算机视觉领域最富挑战性的研究课题之一,也是近年来的研究热点,人脸性别识别作为人脸识别技术
每当我们在公有云或者私有云发布训练好的大数据模型,为了方便大家辨识、理解和运用,参照huggingface所制定的标准制作一个Model Card展示页,是种非常好的模型展示和组织形式。 下面就是一
2. 支持向量机 对偶优化 拉格朗日乘数法可用于解决带条件优化问题,其基本形式为: \[\begin{gather} \min_w f(w),\\ \mathrm{s.t.} \quad
我正在尝试运行以下代码: https://github.com/opencv/opencv/blob/master/samples/dnn/classification.cpp 我在这里找到所有经过预
我是机器学习新手。当我使用 scikit-learn 模块中的波士顿数据集练习具有默认参数的决策树回归模型时。 在此链接解决方案( How to Build a Decision tree Regre
我有用于训练的数据。当我将其输入神经网络时,该数据出现 3% 的错误。 我知道这些数据有一定的过度代表性 - 例如,第 5 类的示例大约是其他类的十分之一。 我的作业指出,我可以通过偏置训练数据(即删
我在 Python 的多类分类中使用 SVM 时遇到问题。事实上,问题在于性别分类(来自图像),其中训练数据集仅包含“y=1”或“ y=-1”作为类标签(二进制)。但是,在预测中,如果是男性,我必须预
我是一名优秀的程序员,十分优秀!