2017-02-08 74 views
0

我想要做的预测使用线性模型,考虑一个数据集与2列和以下数据(1,1)(2,5),(3,3),(4,5) ,(5,5,5)(6,7)(8,8)(9,9)(10,10)..我可以适合线性模型作为预测缺失值使用rxpredict

lm <- rxlinMod(col1~col2, data=test) 

,然后作为

rxpredict运行
pd <- rxPredict(lm,data=test) 

给出的rxpredict的结果,我怎么能现在发现的col2的值,其中col1值不可用,例如会有什么col2如果01的值是7

更新: 包是revoscaler

数据

col1,col2 
1,1 
2,2 
3,3 
4,4 
5,5 
6,6 
8,8 
9,9 
10,10 

infile <- file.path("C:/R-Spark", "test.csv") 
test <- rxImport(infile) 
library(rpart) 

lm <- rxLinMod(col1 ~ col2, data = test) 
rxPredict(lm,data = test) 

计算时间:0.003秒。

输出

> rxPredict(lm,data = test) 
Rows Read: 10, Total Rows Processed: 10, Total Chunk Time: 0.002 seconds 
    col1_Pred 
1   1 
2   2 
3   3 
4   4 
5   5 
6   6 
7   7 
8   8 
9   9 
10  10 

问题: 现在,如果我想要得到的只有7预测值我怎样才能从rxpredict输出滤波器的数据

+0

请显示一个可重现的示例和软件包名称(RevoScaleR?) – akrun

+0

你不能用模型来预测给定的x,来预测x。 –

回答

0

我会尽量回答你的问题采用不同的数据,以避免引用col1col2或数据帧行索引的值时的混淆。

所以,让我们假设

test <- data.frame(col1=seq(20,200,20), col2=seq(10,100,10)) 

test看起来是这样的:

test 
    col1 col2 
1 20 10 
2 40 20 
3 60 30 
4 80 40 
5 100 50 
6 120 60 
7 140 70 
8 160 80 
9 180 90 
10 200 100 
现在

lm <- rxLinMod(col1~col2, data=test) 
pd <- rxPredict(lm,data=test) 

所以

pd 
    col1_Pred 
1   20 
2   40 
3   60 
4   80 
5  100 
6  120 
7  140 
8  160 
9  180 
10  200 

现在,如果您希望在您的test data.frame中调用col2 = 70时预测的col1值(调用rxPredict时使用的数据帧)。你可以做到以下几点:

pd$col1_Pred[which(test$col2 == 70)] 
[1] 140 

只是为了澄清,想象你想要使用新的输入数据test2相同的线性模型lm

test2 <- data.frame(col2=c(15, 25, 35)) 

test2 
    col2 
1 15 
2 25 
3 35 

现在:

pd2 <- rxPredict(lm,data=test2) 

pd2 
    col1_Pred 
1  30 
2  50 
3  70 

如果您希望单独输出test2中的col2 = 25的预测值col1

pd2$col1_Pred[which(test2$col2 == 25)] 
[1] 50 
+0

它为我工作,非常感谢 –