0
0

More than 1 year has passed since last update.

【Java初心者】Wekaによる機械学習 03-コマンドラインで重回帰分析

Last updated at Posted at 2023-08-22

Javaで重回帰分析したい

重回帰分析ならば、Excelでも十分できるんだけど、これをJava環境で行いたいという趣味的な内容です。

こちらと同じデータを使ってみます(手入力)
https://corvus-window.com/excel_multiple-regression-analysis/

arffデータならばこんな形になります。目的変数をlastにしました。train.arffなどととします。

@RELATION salary2

@ATTRIBUTE 年齢 numeric
@ATTRIBUTE 通勤時間     numeric
@ATTRIBUTE 扶養人数     numeric
@ATTRIBUTE 出身大学     numeric
@ATTRIBUTE 年収 numeric

@data
35,60,2,48,670
58,70,3,61,1200
40,45,0,52,680
38,45,2,55,820
24,30,0,58,510
27,55,0,61,550
49,80,3,44,890
30,60,0,45,480
53,70,1,50,730
25,80,1,47,430

コマンドラインで実行

Wekaは普通のリリース版で使えますが、これまでのようにmini-wekaを使ってみます。

java -cp mini-weka-3.9.15955.jar:. weka.classifiers.functions.LinearRegression -t train.arff

出力結果

年収 =

     10.9962 * 年齢 +
     84.6026 * 扶養人数 +
     11.7295 * 出身大学 +
   -433.3844

上記サイトとなんか違う・・・・。

ここでオプションを見ると、

-S <number of selection method>
	Set the attribute selection method to use. 1 = None, 2 = Greedy.
	(default 0 = M5' method)

というのが見つかりました。

このオプションを指定しないと、-S 0 と同じ扱いになり、自動的に項目選択モードのM5方式(表現が間違っているかもしれません)が使用されるということです。-S 2 は貪欲法。-S 1 は項目選択をしないようです。

これを参考に

java -cp mini-weka-3.9.15955.jar:. weka.classifiers.functions.LinearRegression -S 1 -t train.arff

とすると、

年収 =

     11.533  * 年齢 +
     -2.0274 * 通勤時間 +
     94.0915 * 扶養人数 +
      9.3459 * 出身大学 +
   -220.303 

となり、上記サイトと同じ結果が得られました。

※将来的には、M5と貪欲法ってのをマスターしたいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0