2015-01-31 14 views
7

मेरे पास समय-श्रृंखला एक-भिन्न डेटा है। तो बस टाइमस्टैम्प और वैल्यू। अब मैं अगले दिन/महीने/वर्ष के लिए इस मूल्य को निकालना चाहता हूं (पूर्वानुमान)। मुझे पता है कि इस तरह के बॉक्स जेनकींस (ARIMA) आदिसमय-श्रृंखला सरल पूर्वानुमान कैसे करें?

स्पार्क रैखिक प्रतिगमन और मैं इसे करने की कोशिश की है के रूप में तरीके हैं, लेकिन मैं संतोषजनक परिणाम नहीं मिला। क्या किसी ने स्पार्क में टाइम-सीरीज़ सरल पूर्वानुमान की कोशिश की थी। उनके कार्यान्वयन दृष्टिकोण साझा कर सकते हैं?

पीएस: मैं इस मुद्दे के लिए उपयोगकर्ता मेलिंग सूची पर जांच करता हूं, इस मुद्दे के बारे में लगभग सभी प्रश्नों का अनुत्तरित नहीं है।

+0

आप * पर विस्तृत सकता है "चिंगारी रैखिक प्रतिगमन है और मैं इसे करने की कोशिश की, लेकिन मैं संतोषजनक परिणाम प्राप्त नहीं किया" * - लिंक स्पार्क के लिए एल्गोरिथ्म + क्या आप पहले से ही की कोशिश की है और जहां वे डॉन एक नोट के साथ परिणाम ' आपकी उम्मीद को पूरा नहीं करते हैं। –

+0

कृपया इस सार को देखो। वहाँ टिप्पणी करने के लिए स्वतंत्र महसूस, मैं डेटा और एल्गोरिथ्म जोड़ लिया है https://gist.github.com/codeAshu/2ebd84b1b48834fce89b – Rusty

+0

मैं भी इस सवाल को देखा लेकिन _ "partitionBy" _ मुझे त्रुटि दे रहा है [http://stackoverflow.com/प्रश्न/23402303/अपाचे-चिंगारी से आगे बढ़-औसत] – Rusty

उत्तर

4

आप क्लाउडेरा के समय श्रृंखला पुस्तकालय देख सकते हैं: https://github.com/cloudera/spark-timeseries

यह ARIMA शामिल है। आप ब्लॉग पोस्ट पर भी एक नज़र डाल सकते हैं जो इसे पेश करता है: https://blog.cloudera.com/blog/2015/12/spark-ts-a-new-library-for-analyzing-time-series-data-with-apache-spark/

0

हां मैं पहले से ही यूनी विविध समय श्रृंखला के लिए स्पार्क में एआरआईएमए लागू कर चुका हूं।

public static void main(String args[]) 
{ 
    System.setProperty("hadoop.home.dir", "C:/winutils"); 

    SparkSession spark = SparkSession 
       .builder().master("local") 
       .appName("Spark-TS Example") 
       .config("spark.sql.warehouse.dir", "file:///C:/Users/abc/Downloads/Spark/sparkdemo/spark-warehouse/") 
       .getOrCreate(); 

    Dataset<String> lines = spark.read().textFile("C:/Users/abc/Downloads/thunderbird/Time series/trainingvector_arima.csv"); 

    Dataset<Double> doubleDataset = lines.map(line>Double.parseDouble(line.toString()), 
      Encoders.DOUBLE()); 

    List<Double> doubleList = doubleDataset.collectAsList(); 
    //scala.collection.immutable.List<Object> scalaList = new 

    Double[] doubleArray = new Double[doubleList.size()]; 
    doubleArray = doubleList.toArray(doubleArray); 

    double[] values = new double[doubleArray.length]; 
    for(int i = 0; i< doubleArray.length; i++) 
    { 
     values[i] = doubleArray[i]; 
    } 

    Vector tsvector = Vectors.dense(values); 

    System.out.println("Ts vector:" + tsvector.toString()); 

    //ARIMAModel arimamodel = ARIMA.fitModel(1, 0, 1, tsvector, true, "css-bobyqa", null); 
    ARIMAModel arimamodel = ARIMA.autoFit(tsvector, 1, 1, 1); 

    Vector forcst = arimamodel.forecast(tsvector, 10); 

    System.out.println("forecast of next 10 observations: " + forcst); 
    } 

इस कोड मेरे लिए काम करता है। यहां कोई भी मान जो आप पूर्वानुमान डेटा के रूप में पास करना चाहते हैं।

+0

जहां मूल्यों कर रहे हैं? – Waqas

संबंधित मुद्दे