2

Java を使用してモデルを構築できるようにしたいのですが、次のように CLI で構築できます。

    ./mahout trainlogistic --input Candy-Crush.twtr.csv \
       --output ./model \
       --target hd_click --categories 2 \
       --predictors click_frequency country_code ctr      device_price_range hd_conversion  time_of_day num_clicks phone_type twitter is_weekend app_entertainment app_wallpaper app_widgets arcade books_and_reference brain business cards casual comics communication education entertainment finance game_wallpaper game_widgets health_and_fitness health_fitness libraries_and_demo libraries_demo lifestyle media_and_video media_video medical music_and_audio news_and_magazines news_magazines personalization photography productivity racing shopping social sports sports_apps sports_games tools transportation travel_and_local weather app_entertainment_percentage app_wallpaper_percentage app_widgets_percentage arcade_percentage books_and_reference_percentage brain_percentage business_percentage cards_percentage casual_percentage comics_percentage communication_percentage education_percentage entertainment_percentage finance_percentage game_wallpaper_percentage game_widgets_percentage health_and_fitness_percentage health_fitness_percentage libraries_and_demo_percentage libraries_demo_percentage lifestyle_percentage media_and_video_percentage media_video_percentage medical_percentage music_and_audio_percentage news_and_magazines_percentage news_magazines_percentage personalization_percentage photography_percentage productivity_percentage racing_percentage shopping_percentage social_percentage sports_apps_percentage sports_games_percentage sports_percentage tools_percentage transportation_percentage travel_and_local_percentage weather_percentage reads_magazine_sum reads_magazine_count interested_in_gardening_sum interested_in_gardening_count kids_birthday_coming_sum kids_birthday_coming_count job_seeker_sum job_seeker_count friends_sum friends_count married_sum married_count charity_donor_sum charity_donor_count student_sum student_count interested_in_real_estate_sum interested_in_real_estate_count sports_fan_sum sports_fan_count bascketball_sum bascketball_count interested_in_politics_sum interested_in_politics_count gamer_sum gamer_count activist_sum activist_count traveler_sum traveler_count likes_soccer_sum likes_soccer_count interested_in_celebs_sum interested_in_celebs_count auto_racing_sum auto_racing_count age_group_sum age_group_count healthy_lifestyle_sum healthy_lifestyle_count interested_in_finance_sum interested_in_finance_count sports_teams_usa_sum sports_teams_usa_count interested_in_deals_sum interested_in_deals_count business_oriented_sum business_oriented_count interested_in_cooking_sum interested_in_cooking_count music_lover_sum music_lover_count beauty_sum beauty_count follows_fashion_sum follows_fashion_count likes_wrestling_sum likes_wrestling_count name_sum name_count shopper_sum shopper_count golf_sum golf_count vegetarian_sum vegetarian_count dating_sum dating_count interested_in_fashion_sum interested_in_fashion_count interested_in_news_sum interested_in_news_count likes_tennis_sum likes_tennis_count male_sum male_count interested_in_cars_sum interested_in_cars_count follows_bloggers_sum follows_bloggers_count entertainment_sum entertainment_count interested_in_books_sum interested_in_books_count has_kids_sum has_kids_count interested_in_movies_sum interested_in_movies_count musicians_sum musicians_count tech_oriented_sum tech_oriented_count female_sum female_count has_pet_sum has_pet_count practicing_sports_sum practicing_sports_count \
       --types      numeric         word         numeric  word               word           word        numeric    word       word    word        numeric       \
       --features 100 --passes 1 --rate 50

20 個のニュース グループの例は、学習するには大きすぎるため、理解できません。cliコマンドと同じことをしているコードを誰か教えてもらえますか?

明確にするために:

私はこのようなものが必要です:

    model.train(1,0,"monday",6,44,1,7,4,6,78,7,3,4,6,........,"good");
    model.train(1,0,"sunday",6,44,5,7,9,2,4,6,78,7,3,4,6,........,"bad");
    model.train(1,0,"monday",4,99,2,4,6,3,4,6,........,"good");

    model.writeTofile("myModel.model");

分類に詳しくなく、JAVA から CLI コマンドを実行する方法だけを知りたい場合は、回答しないでください。

4

3 に答える 3

7

私は Mahout API に 100% 精通しているわけではありません (ドキュメントが非常にまばらであることには同意します)。

この例の Java ソース コードは、trainlogistic実際にはmahout-examplesライブラリで見つけることができます。これは maven [0] (内org.apache.mahout.classifier.sgd.TrainLogistic) にあります。必要に応じて、まったく同じソース コードを使用することもできますが、mahout-examplesライブラリ内のいくつかのユーティリティ クラスに依存しています (また、あまりクリーンではありません)。

この例でトレーニングを実行するクラスはorg.apache.mahout.classifier.sgd.OnlineLogisticRegression[1] ですが、多数のs を内部で使用するAdaptiveLogisticRegression[2] (同じパッケージ)を使用することをお勧めします。OnlineLogisticRegressionただし、自分のデータに最適な方法を自分で確認する必要があります。

API は非常に簡単です。入力データを取得するメソッドと、モデルをテストするメソッド、およびモデルのパラメーターを変更するメソッドがありますtrainVectorclassifylearningRate

コマンド ライン ツールのようにモデルをディスクに保存するには、モデルを読み書きするためorg.apache.mahout.classifier.sgd.ModelSerializerの簡単な API を備えた を使用します。(OLR クラス自体にもメソッドwritereadFieldsメソッドがありますが、率直に言って、それらが何をするのか、または違いがあるかどうかはModelSerializerわかりません。どちらも文書化されていません。)

最後に、 のソース コードとは別にmahout-examples、Mahout API を直接使用する別の 2 つの例を示します。これは役立つ可能性があります [3、4]。

ソース:

[0] http://repo1.maven.org/maven2/org/apache/mahout/mahout-examples/0.8/

[1] http://archive.cloudera.com/cdh4/cdh/4/mahout/mahout-core/org/apache/mahout/classifier/sgd/OnlineLogisticRegression.html

[2] http://archive.cloudera.com/cdh4/cdh/4/mahout/mahout-core/org/apache/mahout/classifier/sgd/AdaptiveLogisticRegression.html

[3] http://mail-archives.apache.org/mod_mbox/mahout-user/201206.mbox/%3CCAJwFCa3X2fL_SRxT7f7v9uMjS3Tc9WrT7vuMQCVXyH71k0H0zQ@mail.gmail.com%3E

[4] http://skife.org/mahout/2013/02/14/first_steps_with_mahout.html

于 2013-09-06T03:20:22.470 に答える
1

このブログには、Mahout Java API を使用してトレーニングと分類を行う方法に関する良い記事があります: http://nigap.blogspot.com/2012/02/bayes-algorithm-with-apache-mahout.html

于 2013-10-14T23:46:26.180 に答える
-2

Runtime.exec を使用して、Java から同じコマンド行を実行できます。

簡単なアプローチは次のとおりです。

Process p = Runtime.getRuntime().exec("/usr/bin/bash -ic \"<path_to_mahout>/mahout trainlogistic --input Candy-Crush.twtr.csv " + "--output ./model " + "--target hd_click --categories 2 " + "--predictors click_frequency country_code ctr device_price_range hd_conversion time_of_day num_clicks phone_type twitter is_weekend app_entertainment app_wallpaper app_widgets arcade books_and_reference brain business cards casual comics communication education entertainment finance game_wallpaper game_widgets health_and_fitness health_fitness libraries_and_demo libraries_demo lifestyle media_and_video media_video medical music_and_audio news_and_magazines news_magazines personalization photography productivity racing shopping social sports sports_apps sports_games tools transportation travel_and_local weather app_entertainment_percentage app_wallpaper_percentage app_widgets_percentage arcade_percentage books_and_reference_percentage brain_percentage business_percentage cards_percentage casual_percentage comics_percentage communication_percentage education_percentage entertainment_percentage finance_percentage game_wallpaper_percentage game_widgets_percentage health_and_fitness_percentage health_fitness_percentage libraries_and_demo_percentage libraries_demo_percentage lifestyle_percentage media_and_video_percentage media_video_percentage medical_percentage music_and_audio_percentage news_and_magazines_percentage news_magazines_percentage personalization_percentage photography_percentage productivity_percentage racing_percentage shopping_percentage social_percentage sports_apps_percentage sports_games_percentage sports_percentage tools_percentage transportation_percentage travel_and_local_percentage weather_percentage reads_magazine_sum reads_magazine_count interested_in_gardening_sum interested_in_gardening_count kids_birthday_coming_sum kids_birthday_coming_count job_seeker_sum job_seeker_count friends_sum friends_count married_sum married_count charity_donor_sum charity_donor_count student_sum student_count interested_in_real_estate_sum interested_in_real_estate_count sports_fan_sum sports_fan_count bascketball_sum bascketball_count interested_in_politics_sum interested_in_politics_count gamer_sum gamer_count activist_sum activist_count traveler_sum traveler_count likes_soccer_sum likes_soccer_count interested_in_celebs_sum interested_in_celebs_count auto_racing_sum auto_racing_count age_group_sum age_group_count healthy_lifestyle_sum healthy_lifestyle_count interested_in_finance_sum interested_in_finance_count sports_teams_usa_sum sports_teams_usa_count interested_in_deals_sum interested_in_deals_count business_oriented_sum business_oriented_count interested_in_cooking_sum interested_in_cooking_count music_lover_sum music_lover_count beauty_sum beauty_count follows_fashion_sum follows_fashion_count likes_wrestling_sum likes_wrestling_count name_sum name_count shopper_sum shopper_count golf_sum golf_count vegetarian_sum vegetarian_count dating_sum dating_count interested_in_fashion_sum interested_in_fashion_count interested_in_news_sum interested_in_news_count likes_tennis_sum likes_tennis_count male_sum male_count interested_in_cars_sum interested_in_cars_count follows_bloggers_sum follows_bloggers_count entertainment_sum entertainment_count interested_in_books_sum interested_in_books_count has_kids_sum has_kids_count interested_in_movies_sum interested_in_movies_count musicians_sum musicians_count tech_oriented_sum tech_oriented_count female_sum female_count has_pet_sum has_pet_count practicing_sports_sum practicing_sports_count " + "--types numeric word numeric word word word numeric word word word numeric " + "--features 100 --passes 1 --rate 50\"");

これを選択する場合は、最初にこれを読むことをお勧めします: When Runtime.exec() will not

このようにして、アプリケーションは別のプロセスで実行されます。

さらに、次のサイトから「アプリケーションとの統合」セクションをたどることができます: Recomender Documentation

また、これはレコメンダーを書く上での良いリファレンスです: Apache Mahout の紹介

お役に立てれば。乾杯

于 2013-09-05T13:42:24.923 に答える