2013-08-28 4 views
1

Я использовал R для кода машинного обучения. Мой сценарий проекта, как указано ниже. Я использовал MongoDB для хранения базы данных. В mongo db у меня была одна коллекция в этой коллекции каждые 5 мин. добавлен один новый документ. Описание коллекции, как показано ниже.Обучение машинам с использованием линейной регрессии R

{ 
"_id" : ObjectId("521c980624c8600645ad23c8"), 
"TimeStamp" : 1377605638752, 
"cpuUsed" : -356962527, 
"memory" : 2057344858, 
"hostId" : "200.2.2.2" 
} 

Теперь моя проблема в том, что использование выше документов, которые я хочу, чтобы предсказать следующий 5 мин или 10 мин или 24 ч. cpuUsed и значения памяти. Для этого я пишу R код, как показано ниже

library('RMongo') 
mg1 <- mongoDbConnect('dbname') 
query <- dbGetQuery(mg1,'test',"{'hostId' : '200.2.2.2'}") 
data1 <- query[] 
cpu <- query$cpuUtilization 
memory <- query$memory 
new <- data.frame(data=1377678051) # set timestamp for calculating results 
predict(lm(cpu ~ data1$memory + data1$Date), new, interval="confidence") 

Но, когда я был казнить выше кода он показывает мне следующий вывод

  fit  lwr  upr 
    1 427815904 -37534223 893166030 
    2 -110791661 -368195697 146612374 
    3 137889445 -135982781 411761671 
    4 -165891990 -445886859 114102880 
    . 
    . 
    . 
    n  

Используя этот вывод, я не знаю, который cpuUsed значение, используемое для прогнозирования значений , Если кто-нибудь знает, пожалуйста, помогите мне. Спасибо.

+0

Привет, в коде выше я изменить код R, как показано ниже 'code' библиотеки ('RMongo') MG1 <- mongoDbConnect ('имя_бд' ') запрос <- dbGetQuery (MG1,' окончательным», "{» НомерУз»: '100.1.1.1'}") даты <- запрос $ Date памяти <- запрос $ память процессора <- запрос $ cpuUtilization Реза <- ая (cbind (память, процессор) ~ дата-1) new <- data.frame (date = 1377843220) # дата, прошедшая в timestamp прогноз (res, новый), это дает мне ответ, но я не знаю, что этот метод хорош или не предсказывает результаты. Пожалуйста помоги. – Yogesh

ответ

0

Параметр прогнозирования потребностей newdata содержать переменные, используемые в приступе:

new <- data.frame(memory = 1377678051, Date=as.Date("2013-08-28))

Только тогда он фактически используется для прогнозирования, в противном случае вы получите подогнанные значения.

Вы можете затем cbind с прогнозируемыми значениями new.

+0

Привет Я использовал ваше предложение в своем коде, и это работает, но проблема в том, что мой запрос содержит 101 запись, и когда я был запущен код, он показывает предупреждение 1: 'newdata' имеет 1 строку, но найденные переменные имеют 101 строку 2: In pred. lm (lm (cpu ~ data1 $ memory + data1 $ Date), new, interval = "trust"): Прогнозирование с недостаточной степенью соответствия может вводить в заблуждение и результаты показывают все 101 записи с соответствующими значениями lwr upr, но, I хотите только одно значение для процессора, которое было настроено для моего вывода, поэтому я был предсказан, что следующее значение будет иметь значение cpuUsed. – Yogesh

Смежные вопросы