2016-07-19 46 views
2

ロードされません。チュートリアルに示されているように3.6とは違うバージョンのWeka 3.8を使用していますが、私は必要な変更を加えたと思っています。私は、linearRegression.buildClassifier(dataset);という行にエラーメッセージが表示され、その理由がわかりません。ウェカの線形回帰は、私が<a href="http://www.cs.waikato.ac.nz/ml/weka/" rel="nofollow">WEKA</a>を使用する方法についてのチュートリアルを<a href="http://www.ibm.com/developerworks/library/os-weka3/index.html" rel="nofollow">this</a>次してきたと私は私のコードが実行されません点に達している

エラーメッセージ:

Jul 19, 2016 10:47:21 AM com.github.fommil.netlib.BLAS <clinit> 
WARNING: Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS 
Jul 19, 2016 10:47:21 AM com.github.fommil.netlib.BLAS <clinit> 
WARNING: Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS 
Jul 19, 2016 10:47:21 AM com.github.fommil.netlib.LAPACK <clinit> 
WARNING: Failed to load implementation from: com.github.fommil.netlib.NativeSystemLAPACK 
Jul 19, 2016 10:47:21 AM com.github.fommil.netlib.LAPACK <clinit> 
WARNING: Failed to load implementation from: com.github.fommil.netlib.NativeRefLAPACK 

コード:

// Define each attribute (or column), and give it a numerical column 
     // number 
     // Likely, a better design wouldn't require the column number, but 
     // would instead get it from the index in the container 
     Attribute a1 = new Attribute("houseSize", 0); 
     Attribute a2 = new Attribute("lotSize", 1); 
     Attribute a3 = new Attribute("bedrooms", 2); 
     Attribute a4 = new Attribute("granite", 3); 
     Attribute a5 = new Attribute("bathroom", 4); 
     Attribute a6 = new Attribute("sellingPrice", 5); 

     // Each element must be added to a FastVector, a custom 
     // container used in this version of Weka. 
     // Later versions of Weka corrected this mistake by only 
     // using an ArrayList 
     ArrayList<Attribute> attrs = new ArrayList<>(); 
     attrs.add(a1); 
     attrs.add(a2); 
     attrs.add(a3); 
     attrs.add(a4); 
     attrs.add(a5); 
     attrs.add(a6); 
     // Each data instance needs to create an Instance class 
     // The constructor requires the number of columns that 
     // will be defined. In this case, this is a good design, 
     // since you can pass in empty values where they exist. 
     Instance i1 = new DenseInstance(6); 
     i1.setValue(a1, 3529); 
     i1.setValue(a2, 9191); 
     i1.setValue(a3, 6); 
     i1.setValue(a4, 0); 
     i1.setValue(a5, 0); 
     i1.setValue(a6, 205000); 

     Instance i2 = new DenseInstance(6); 
     i1.setValue(a1, 3247); 
     i1.setValue(a2, 10061); 
     i1.setValue(a3, 5); 
     i1.setValue(a4, 1); 
     i1.setValue(a5, 1); 
     i1.setValue(a6, 224900); 

     Instance i3 = new DenseInstance(6); 
     i1.setValue(a1, 4032); 
     i1.setValue(a2, 10150); 
     i1.setValue(a3, 5); 
     i1.setValue(a4, 0); 
     i1.setValue(a5, 1); 
     i1.setValue(a6, 197900); 

     Instance i4 = new DenseInstance(6); 
     i1.setValue(a1, 2397); 
     i1.setValue(a2, 14156); 
     i1.setValue(a3, 4); 
     i1.setValue(a4, 1); 
     i1.setValue(a5, 0); 
     i1.setValue(a6, 189900); 

     Instance i5 = new DenseInstance(6); 
     i1.setValue(a1, 2200); 
     i1.setValue(a2, 9600); 
     i1.setValue(a3, 4); 
     i1.setValue(a4, 0); 
     i1.setValue(a5, 1); 
     i1.setValue(a6, 195000); 

     Instance i6 = new DenseInstance(6); 
     i1.setValue(a1, 3536); 
     i1.setValue(a2, 19994); 
     i1.setValue(a3, 6); 
     i1.setValue(a4, 1); 
     i1.setValue(a5, 1); 
     i1.setValue(a6, 325000); 

     Instance i7 = new DenseInstance(6); 
     i1.setValue(a1, 2983); 
     i1.setValue(a2, 9365); 
     i1.setValue(a3, 5); 
     i1.setValue(a4, 0); 
     i1.setValue(a5, 1); 
     i1.setValue(a6, 230000); 

     // Each Instance has to be added to a larger container, the 
     // Instances class. In the constructor for this class, you 
     // must give it a name, pass along the Attributes that 
     // are used in the data set, and the number of 
     // Instance objects to be added. Again, probably not ideal design 
     // to require the number of objects to be added in the constructor, 
     // especially since you can specify 0 here, and then add Instance 
     // objects, and it will return the correct value later (so in 
     // other words, you should just pass in '0' here) 
     Instances dataset = new Instances("housePrices", attrs, 7); 
     dataset.add(i1); 
     dataset.add(i2); 
     dataset.add(i3); 
     dataset.add(i4); 
     dataset.add(i5); 
     dataset.add(i6); 
     dataset.add(i7); 

     // In the Instances class, we need to set the column that is 
     // the output (aka the dependent variable). You should remember 
     // that some data mining methods are used to predict an output 
     // variable, and regression is one of them. 
     dataset.setClassIndex(dataset.numAttributes() - 1); 

     // Create the LinearRegression model, which is the data mining 
     // model we're using in this example 
     linearRegression = new LinearRegression(); 
     try { 
      // This method does the "magic", and will compute the regression 
      // model. It takes the entire dataset we've defined to this point 
      // When this method completes, all our "data mining" will be 
      // complete 
      // and it is up to you to get information from the results 
      linearRegression.buildClassifier(dataset); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 

答えて

1

エラー、警告ではありません。 Wekaはあなたの小さなJavaアプリケーションの起動時に線形代数ライブラリ(LAPACK、BLAS)を見つけることができません。とにかく、7つのデータポイントに曲線を当てはめる線形回帰タスクのために、それらは必要ありません。メッセージを取り除くために

(参照https://github.com/fommil/netlib-javaのためにこれを読む)

、あなたはは/ dev/nullにあなたのプログラムのSTDERR出力をリダイレクトすることができます。私も持って

Jul 20, 2016 10:20:32 AM com.github.fommil.jni.JniLoader liberalLoad 
INFO: successfully loaded /tmp/jniloader5044252696376965086netlib-native_system-linux-x86_64.so 
Jul 20, 2016 10:20:32 AM com.github.fommil.jni.JniLoader load 
INFO: already loaded netlib-native_system-linux-x86_64.so 

:パッケージマネージャを使用して

は、私はちょうどウェカパッケージnetlibNativeLinuxをインストール(またはnetlibNativeWindowsまたはnetlibOSXを試してみてください、何でも)、ビルド・パスへのjarを含めて、この警告を得ましたチュートリアルと同じように、出力219328.35717359098が言いました。あなたは、特に

System.out.println(myHouseValue);

、チュートリアルからコードの最後の行を含めることを忘れていましたか?

+0

これらのパッケージをインストールしましたが、取得したInfoメッセージが表示されるようになりましたが、まだ印刷されません。そして、はい、私は印刷声明があります。 'linearRegression.buildClassifier(dataset);の前後にprintlineを置くと、プログラムはそのメッセージを表示した直後に停止します。最初の行は印刷されますが、2行目は印刷されます。 – user1762507

+0

私のコードはここにhttps://gist.github.com/knbknb/c7f75d8eaa5b50a7b6786ca5f0fedbfbです.1つの番号が印刷されます。 Linuxでweka3.8で私のために働く、java7(oracle jvm)とjava8 openjdkの両方を試しました。 – knb

+0

さて、昨日、git hubと私の両方のコードがうまくいかず、今日はどちらもうまくいきました。問題は何か分かりませんでした – user1762507

関連する問題

 関連する問題