[ruby-list:50073] def文だけでは邪道でしょうか?
From:
Kouichi Akiyama <akansei@...8.dion.ne.jp>
Date:
2015-02-03 06:06:28 UTC
List:
ruby-list #50073
初めまして。秋山 好一と申します、よろしくお願いします。 ruby初心者です。たのしいrubyのはずが、全般的な理解はほとんど出来ていません。 配列クラスに関心をもち、エクセルvbaでの経験から、ファジィ数値データ処理 をやり始めました。 配列の部分を集中的に学習しました。これが功を奏したのか、たのしいrubyに変 化しつつありますが、この先は自信がありません? 質問事項は、def文の連続というパターンは、rubyでは何か不自然/邪道なので しょうか?ということです。 その他、雑誌等に投稿するときは、ユーザインターフェイス(例えば'Tk'などを 使用して)作成する必要があるのでしょうか? 類似関係(ファジィ同値関係)分析の一例を以下に示しておきます。使用した rubyのバージョンは2.0です window7とUbuntuで、動作を確認しています。 ①csv形式で、分析データを作成しておきます。 ②def文で、データを読み取ります。 ③def文で、類似度係数行列を作成します。 ④def文で、推移性行列を作成します。 ⑤def文で、類似関係(ファジィ同値関係)を表示します。 上記プログラムの概要と実行結果は以下の通りです。 項目A,B,C,Dで、(A-C) ,(B-D)がクラスターを形成する例です。 # encoding: utf-8 require "csv" require "./read-csv.rb" require "./item-disp.rb" require "./data-disp.rb" require "./similar-coeff.rb" require "./max-trans.rb" require "./cluster-pat.rb" #-----------main--------------------------- puts "csvファイル名を入力してください" sd = STDIN.gets.chomp mat = read_csv(sd) puts "読み取ったデータ" mat = item_disp(mat) mat = data_disp(mat) puts "類似度係数行列" mat = item_disp(mat) mat = similar_coeff(mat) puts "最大法推移性行列" mat = item_disp(mat) mat = max_trans(mat) puts "パターン識別行列" mat = cluster_pat(mat) A,B,C,Dのクイズに対して、1は正答、0は誤答と考えてください 実行結果はつぎの通りです。 読み取ったデータ [A] [B] [C] [D] 1.00 1.00 1.00 0.00 0.00 1.00 0.00 0.00 1.00 1.00 1.00 1.00 1.00 1.00 0.00 1.00 0.00 1.00 0.00 1.00 1.00 0.00 1.00 0.00 1.00 1.00 1.00 0.00 1.00 0.00 1.00 0.00 1.00 1.00 0.00 0.00 1.00 0.00 1.00 0.00 類似度係数行列 [A] [B] [C] [D] 1.00 0.50 0.80 0.30 0.50 1.00 0.30 0.60 0.80 0.30 1.00 0.30 0.30 0.60 0.30 1.00 最大法推移性行列 [A] [B] [C] [D] 1.00 0.50 0.80 0.50 0.50 1.00 0.50 0.60 0.80 0.50 1.00 0.50 0.50 0.60 0.50 1.00 パターン識別行列 1回目 識別レベル 1.00 [A] [B] [C] [D] 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 2回目 識別レベル 0.80 [A] [B] [C] [D] 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 ["A", "C"] 3回目 識別レベル 0.60 [A] [B] [C] [D] 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 ["A", "C"] ["B", "D"] 4回目 識別レベル 0.50 [A] [B] [C] [D] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ["A", "B", "C", "D"]