0

Ich habe eine Probe von Zeit und Temperatur (x, y), und ich brauche wissen, wie die Zeit ist gleich bei Z Grad Celsius (ex .: 35 C).Wie löst man nicht-lineares Modell in Java mit Apache Commons oder anderen?

Meine Probe ist klein, für den Beginn der Infinitesimalrechnung verwende ich die 3 Proben. Folgen:

Temperature | Time (s) 
    25  | 0 
    27  | 10 
    33  | 17 
    40  | ? 

Ich weiß, dass ich mehr Proben für genaue Ergebnisse brauche, aber für den Start verwende ich dies.

Die Frage ist, wie ich einen Code dafür implementieren? Ich lerne über Apache Commons wie:

org.apache.commons.math3.optim.nonlinear.scalar Aber ich weiß nicht, wie diese lib zu verwenden. Ich brauche ein Beispiel für Code für Kalkül dies. Danke!

+0

Es scheint, dass Sie ein Muster basierend auf den bekannten Daten erstellen müssen, und verwenden Sie das Muster, um das letzte Mal zu erhalten. Dies ist das einfachste Problem beim maschinellen Lernen. Sie können WEKA versuchen. –

Antwort

1

Wenn ich nicht falsch verstehe, was Sie erreichen wollen, scheint es, als ob Sie ein einfaches Problem komplex machen. so etwas wie diese

Der einfachste Weg, um Ihr Problem zu lösen wäre es als Linear Regression Problem zu behandeln und die SimpleRegression Apache Commons Klasse verwenden zu tun:

import org.apache.commons.math3.stat.regression.SimpleRegression; 

public class MySimpleRegression { 
    public static void main(String[] args) { 

     // create a Simple Regression object 
     SimpleRegression simpleRegression = new SimpleRegression(); 

     // create your data object with various instances of x, y - make the 
     // variable you want to predict the 'y' in your data 
     // i.e. if you wanna predict the time at a given temperature, 
     // 'x' would be temperature and 'y' time 

     double[][] data = { { 25, 0 }, {27, 10 }, {33, 17 }, {40, 20 }}; 

     // pass this data to your simple regression object 
     simpleRegression.addData(data); 

     // and then you can predict the time at a given temperature value 
     System.out.println("Predicted Time: " + simpleRegression.predict(35)); 

     // You can also get the slope and intercept from your data 
     System.out.println("slope = " + simpleRegression.getSlope()); 
     System.out.println("intercept = " + simpleRegression.getIntercept()); 
    } 
} 

Dies scheint ein einfacher Weg, um Sie zu lösen Problem. Hoffentlich hilft das dir oder jemand anderem.

S.S .: Habe das nicht versucht. Sollte aber gut funktionieren.