2015-01-31 4 views
7

나는 시계열 단일 변형 데이터를 가지고있다. 그래서 그냥 타임 스탬프와 가치. 이제 다음 날/월/년 동안이 값을 외삽 (예측)하고 싶습니다. Box-jenkins (ARIMA)와 같은 방법이 있다는 것을 알고 있습니다.시계열 간단한 예측을 수행하는 방법?

스파크는 선형 회귀를 가지고 있지만 시도했지만 만족스런 결과를 얻지 못했습니다. 아무도 스파크에서 시계열 간단한 예측을 시도하지 못했습니다. 구현 방식을 공유 할 수 있습니까?

추 신 :이 문제에 관해서는 사용자 메일 링리스트에서 확인합니다.이 문제와 관련된 거의 모든 질문에 대답이 없습니다.

+0

당신은 * "Spark has Linear Regression and it it 시도했지만 만족스런 결과를 얻지 못했습니다"* - Spark의 알고리즘에 대한 링크 + 이미 시도한 것과 그 결과가 ' 당신의 기대에 부응하지 마십시오. –

+0

이 요지를 살펴보십시오. 필자는 데이터와 알고리즘을 추가했습니다. https://gist.github.com/codeAshu/2ebd84b1b48834fce89b – Rusty

+0

이 질문을 보았지만 _ "partitionBy"_는 오류가 발생했습니다 [http://stackoverflow.com]/questions/23402303/apache-spark-moving-average] – Rusty

답변

0

예 이미 유니 변수 타임 시리즈 용으로 ARIMA에 적용되었습니다.

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

관련 문제