質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

3006閲覧

weka, javaで機械学習を使ったアプリを作りたい

keyoris

総合スコア9

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2016/12/03 17:31

###前提・実現したいこと
wekaをつかってandroidの機械学習判定アプリを作ろうとしています。
wekaのUIからoutput soursecodeで木構造のjavaソースコードを生成しました。
これをアプリに反映させようと思ったのですが、エラーが出てしまいました。

正常に動かすにはどのようにすればよいかご教授お願いします。

###発生している問題・エラーメッセージ

「Weka exception: No training file and no object input file given.」 「If set, classifier is run in debug mode and may output additional info to the console」

###該当のソースコード

java

1import weka.core.Attribute; 2import weka.core.Capabilities; 3import weka.core.Capabilities.Capability; 4import weka.core.Instance; 5import weka.core.Instances; 6import weka.core.RevisionUtils; 7import weka.core.converters.CSVLoader; 8 9import java.io.BufferedReader; 10import java.io.File; 11import java.io.FileReader; 12import java.io.IOException; 13 14import weka.classifiers.Classifier; 15 16public class WekaWrapper extends Classifier { 17 18 public String globalInfo() { 19 return toString(); 20 } 21 22 public Capabilities getCapabilities() { 23 weka.core.Capabilities result = new weka.core.Capabilities(this); 24 25 result.enable(weka.core.Capabilities.Capability.NOMINAL_ATTRIBUTES); 26 result.enable(weka.core.Capabilities.Capability.NUMERIC_ATTRIBUTES); 27 result.enable(weka.core.Capabilities.Capability.DATE_ATTRIBUTES); 28 result.enable(weka.core.Capabilities.Capability.MISSING_VALUES); 29 result.enable(weka.core.Capabilities.Capability.NOMINAL_CLASS); 30 result.enable(weka.core.Capabilities.Capability.MISSING_CLASS_VALUES); 31 32 result.setMinimumNumberInstances(0); 33 34 return result; 35 } 36 37 public void buildClassifier(Instances i) throws Exception { 38 getCapabilities().testWithFail(i); 39 } 40 41 public double classifyInstance(Instance i) throws Exception { 42 Object[] s = new Object[i.numAttributes()]; 43 44 for (int j = 0; j < s.length; j++) { 45 if (!i.isMissing(j)) { 46 if (i.attribute(j).isNominal()) 47 s[j] = new String(i.stringValue(j)); 48 else if (i.attribute(j).isNumeric()) 49 s[j] = new Double(i.value(j)); 50 } 51 } 52 s[i.classIndex()] = null; 53 return WekaClassifier.classify(s); 54 } 55 56 public String getRevision() { 57 return RevisionUtils.extract("1.0"); 58 } 59 60 public String toString() { 61 return "Auto-generated classifier wrapper, based on weka.classifiers.trees.J48 (generated with Weka 3.6.10).\n" + this.getClass().getName() + "/WekaClassifier"; 62 } 63 64 public static void main(String args[]) throws IOException { 65 runClassifier(new WekaWrapper(), args); 66 } 67}

java

1class WekaClassifier { 2 3 public static double classify(Object[] i) throws Exception { 4 5 double p = Double.NaN; 6 p = WekaClassifier.N24110f054(i); 7 return p; 8 } 9 10 static double N24110f054(Object []i) { 11 double p = Double.NaN; 12 if (i[10] == null) { 13 p = 0; 14 } else if (((Double) i[10]).doubleValue() <= -4.114530175) { 15 p = WekaClassifier.N690779d55(i); 16 } else if (((Double) i[10]).doubleValue() > -4.114530175) { 17 p = 0; 18 } 19 return p; 20 } 21 22 static double N690779d55(Object []i) { 23 double p = Double.NaN; 24 if (i[5] == null) { 25 p = 0; 26 } else if (((Double) i[5]).doubleValue() <= 79.32677055) { 27 p = WekaClassifier.N4106859b6(i); 28 } else if (((Double) i[5]).doubleValue() > 79.32677055) { 29 p = 1; 30 } 31 return p; 32 } 33 34 static double N4106859b6(Object []i) { 35 double p = Double.NaN; 36 if (i[3] == null) { 37 p = 1; 38 } else if (((Double) i[3]).doubleValue() <= 19.69391594) { 39 p = WekaClassifier.N198472417(i); 40 } else if (((Double) i[3]).doubleValue() > 19.69391594) { 41 p = 0; 42 } 43 return p; 44 } 45 46 static double N198472417(Object []i) { 47 double p = Double.NaN; 48 if (i[0] == null) { 49 p = 1; 50 } else if (((Double) i[0]).doubleValue() <= -5.152709467) { 51 p = 1; 52 } else if (((Double) i[0]).doubleValue() > -5.152709467) { 53 p = 0; 54 } 55 return p; 56 } 57}

###試したこと
CSVファイルを読み込んで判定させたいので、
BufferedReader reader = new BufferedReader(new FileReader("~~~.csv"));
などを使うのかなと思ったのですが、変数readerをどこに反映させればよいか分かりませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
wekaのバージョンは3.6.10です。
javaで、androidアプリケーションを目指しています。CSVは加速度の値が書き込まれています。できたら、この判定をつかって人の歩行判定などに生かしたいと思っています。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

ファイルの指定をargsに指定してあげればできました。
ありがとうございました。

投稿2016/12/04 08:04

keyoris

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問