簡體   English   中英

Power BI - 創建自定義 r 視覺對象關系錯誤

[英]Power BI - creating custom r visuals relationship error

我迫切需要幫助!

我試圖根據 5 個特征來預測吸毒情況:年齡、性別、教育、種族、國家。 我已經用 rpart 在 R 中構建了一棵樹 model

DrugTree3 <- rpart(formula = DrugUser ~ Age+Gender+Education+Ethnicity+Country, data = traindata)

, 邏輯回歸 model

DrugLog <- glm(formula = DrugUser ~ Age+Gender+Ethnicity+Education+Country,data = traindata, family = binomial)

, 和一個 knn model

KnnModel <- train(form = DrugUser~., data = ModelData,method ='knn',tuneGrid=expand.grid(.k=1:100),metric='Accuracy',trControl=trainControl(method='repeatedcv',number=10,repeats=10))

我將它們保存為 RDS 文件並在 Power BI 中成功上傳。

然后,我為每個特征創建了表格,並為它們創建了 okviz 過濾器。

然后,我嘗試根據 okviz 過濾器中的選擇來預測客戶是否被預測為吸毒者或非吸毒者。 這是一切都變得非常錯誤的時候:

我為每個 model 預測創建了一個自定義 R 視覺對象,並在每個視覺對象中插入了以下代碼:

# The following code to create a dataframe and remove duplicated rows is always executed and acts as a preamble for your script: 

# dataset <- data.frame(chunk_id, model_id, model_str, AgeLabel, GenderLabel, CountryLabel, EducationLabel, EthnicityLabel)
# dataset <- unique(dataset)

# Paste or type your script code here:

library(dplyr)
from_byte_string = function(x) {
 xcharvec = strsplit(x, " ")[[1]]
 xhex = as.hexmode(xcharvec)
 xraw = as.raw(xhex)
 unserialize(xraw)
}
# R Visual imports tables with read.csv but no argument for strings_as_factors = F.
# This means some of the chunks are truncated (ie if they had a " " at the end).
# If you convert to a character and add a space if nchar == 9999 the deserialization works.
# (Thanks to Danny Shah)
dataset <- dataset %>%
 mutate( model_str = as.character(model_str) ) %>%
 mutate( model_str = ifelse(nchar(model_str) == 9999, paste0(model_str, " "), model_str) )
model_vct <- dataset %>%
 filter(model_id == 1) %>%
 distinct(model_id, chunk_id, model_str) %>%
 arrange(model_id, chunk_id) %>%
 pull(model_str)
finalfit.str <- paste( model_vct, collapse = "" )
finalfit <- from_byte_string(finalfit.str)
# get the user parameters
userdata <- dataset %>% select(AgeLabel,GenderLabel,CountryLabel,EducationLabel,EthnicityLabel) %>% unique()
# and then using them to make a prediction
myprediction <- predict(finalfit,newdata=data.frame(Age=userdata$AgeLabel,Gender=userdata$GenderLabel,Country=userdata$CountryLabel, Education=userdata$EducationLabel,Ethnicity=userdata$EthnicityLabel))
maxpred <- which(myprediction==max(myprediction))
myclass <- maxpred - 1
myprob <- myprediction[[maxpred]]
plot.new()
text(0.5,0.5,labels=sprintf("P(class = %s) = %s",myclass,as.character(round(myprob,2))),cex=3.5)

錯誤:無法確定字段之間的關系。

這里出了什么問題?

When I then clicked on the diagonal arrow to get to R Studio, this happens: Unable to construct R script data for use in external R IDE.

我需要幫助,因為我真的為此發瘋了,我不知道如何解決這個問題! 如果你能幫助我,我會很高興

在此處輸入圖像描述

您在第 34 行和第 25 行出錯。下面是您的代碼的固定版本。 # 以下用於創建 dataframe 並刪除重復行的代碼始終被執行並充當腳本的前導:

# dataset <- data.frame(chunk_id, model_id, model_str, AgeLabel, GenderLabel, CountryLabel, EducationLabel, EthnicityLabel)
# dataset <- unique(dataset)

# Paste or type your script code here:

library(dplyr)
from_byte_string = function(x) {
 xcharvec = strsplit(x, " ")[[1]]
 xhex = as.hexmode(xcharvec)
 xraw = as.raw(xhex)
 unserialize(xraw)
}
# R Visual imports tables with read.csv but no argument for strings_as_factors = F.
# This means some of the chunks are truncated (ie if they had a " " at the end).
# If you convert to a character and add a space if nchar == 9999 the deserialization works.
# (Thanks to Danny Shah)
dataset <- dataset %>%
 mutate( model_str = as.character(model_str) ) %>%
 mutate( model_str = ifelse(nchar(model_str) == 9999, paste0(model_str, " "), model_str) )
model_vct <- dataset %>%
 filter(model_id == 1) %>%
 distinct(model_id, chunk_id, model_str) %>%
 arrange(model_id, chunk_id) %>%
 pull(model_str)
finalfit.str <- paste( model_vct, collapse = "" )
finalfit <- from_byte_string(finalfit.str)
# get the user parameters
userdata <- dataset %>% select(AgeLabel,GenderLabel,CountryLabel,EducationLabel,EthnicityLabel) %>% unique()
# and then using them to make a prediction
myprediction <- predict(finalfit,newdata=data.frame(Age=userdata$AgeLabel,Gender=userdata$GenderLabel,Country=userdata$CountryLabel, Education=userdata$EducationLabel,Ethnicity=userdata$EthnicityLabel))
maxpred <- which(myprediction==max(myprediction))
myclass <- maxpred - 1
myprob <- myprediction[[maxpred]]
plot.new()
text(0.5,0.5,labels=sprintf("P(class = 

祝你好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM