gpt4 book ai didi

r - R 中的事件单优先级分类

转载 作者:行者123 更新时间:2023-11-30 09:07:05 27 4
gpt4 key购买 nike

我是 R 和机器学习新手。在这里,我尝试构建一个随机森林分类模型,以根据事件单的描述来预测事件单的优先级。我遵循以下步骤。

1) 使用 CSV 文件输入<-描述

library(tm)
library(SnowballC)
library(caTools)
library(randomForest)
incidents = read.csv("incident.csv", stringsAsFactors = FALSE)

> str(incidents) 'data.frame': 4265 obs. of 7 variables: $ number : chr "INC0031193" "INC0037867" "INC0159979" "INC0031446" ... $
> u_detailed_description: chr "Close & Ignore new Ticket New-Production
> SNOW Auto Routing test for XYZ SNOW ticketing in uat" "" "" ""... $
> priority : chr "3 - Moderate" "2 - High" "4 - Low" "3 -
> Moderate" ... $ state : chr "Canceled" "Canceled"
> "Canceled" "Canceled" ... $ category : chr "Server"
> "Tools" "Server" "Server" ... $ assignment_group : chr
> "Windows" "Tools" "SNOC Support" "Windows" ...

2)数据清理,创建DocumenTermMatrix并转换为DataFrame。

incidentCorpus <- Corpus(VectorSource(incidents$u_detailed_description))
incidentCorpus <- tm_map(incidentCorpus, tolower)
incidentCorpus <- tm_map(incidentCorpus, removePunctuation)
incidentCorpus <- tm_map(incidentCorpus, removeWords, stopwords("english"))
incidentCorpus <- tm_map(incidentCorpus, stemDocument)
incidentDTM <- DocumentTermMatrix(incidentCorpus)

3) 使用 caTools 将数据拆分为训练集和测试集。

set.seed(123)
split <- sample.split(incidentSparse$priority,SplitRatio = 0.7)
train <- subset(incidentSparse, split == TRUE)
test <- subset(incidentSparse, split == FALSE)
train$priority <- as.character(train$priority)
train$priority <- as.factor(train$priority
test$priority <- as.character(testSet1$priority)
test$priority <- as.factor(testSet1$priority)

4) 应用 randomforest() 函数创建我的模型,并使用 predict 函数对我的测试集进行分类。

incidentRandomF <- randomForest(priority ~ ., data = train, ntree = 200, mtry = 50, importance = TRUE, proximity = TRUE)

5) 模型的总体准确率约为 90%。

baselineAccuracy <- sum(diag(table(predict(incidentRandomF, type="class"), train$priority)))/nrow(train)

> baselineAccuracy
[1] 0.8392498

predFinalTestSet_RF <- predict(incidentRandomF, newdata = test, type="class")
FinalTestSetAccuracy <- sum(diag(table(test$priority,predFinalTestSet_RF)))/nrow(test)

> FinalTestSetAccuracy
[1] 0.8828125

到目前为止,我的分类模型已准备就绪,现在我需要执行此模型以根据给定描述预测优先级,其中描述将由用户提供。

如何向 R 脚本提供用户输入以使其正常运行?

我们将非常感谢您的帮助。提前致谢。

最佳答案

因此,无需编写整个页面(或测试我在这里编写的代码),但希望足以展示如何开始(如果您有任何其他问题,请告诉我),以下是 Shiny 应用程序的基本外观:

在名为 ui.R 的文件中:

fluidPage(

# Copy the line below to make a text input box
textInput("u_detailed_description", label = h3("Text input"), value = "Enter text..."),
#Additional inputs for other fields here

hr(),
fluidRow(column(3, verbatimTextOutput("prediction")))

)

然后在server.R中:

function(input, output) {

# You can access the value of the widget with input$u_detailed_description, e.g.
output$value <- renderPrint({ predict(incidentRandomF, newdata = input, type="class") })

}

大量重要信息和文档,包括 Shiny site 上的许多示例。

在查找其他内容时,我偶然发现了 this repo显示有人在 Shiny 应用程序中显示模型的预测,它可能有助于阐明如何执行诸如保存模型并重新加载模型之类的操作。

关于r - R 中的事件单优先级分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49403784/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com