WekaにインポートしているCSVファイルがあります。すべての変数は数値としてインポートされています。そのうちの3つを公称値に変更する必要があります。ただし、数値トノミナルフィルターを配置すると、すべての変数が変化します。 3だけ変更したい。
1)フィルターを介していくつかを変更する方法はありますか?2)またはインポート中に設定できますか?もしそうなら、私もそれを理解することはできません。
Weka Explorer(GUI)を使用していると思います。フィルタを特定の属性に適用するには、次の手順を実行します。
ステップ1:前処理タブでフィルターを選択します
ステップ2:[選択]ボタンの右側にあるボックスをクリックします(新しいウィンドウが開きます)
ステップ3:attributeIndicesボックスにカスタム範囲を入力します
フィルタウィンドウで[その他]ボタンを選択すると、さまざまなオプションと指定できる値の説明が表示されます。
特定のケースでは、フィルターはデフォルトで最初から最後の属性に適用されます。個人的なニーズを反映するように範囲を変更する必要があります。
====編集====
Java APIを使用している場合、次のコードは正しい方向を示します。
import weka.core.Instances;
import weka.filters.Filter;
import weka.filters.unsupervised.attribute.NumericToNominal;
public class Main {
public static void main(String[] args) throws Exception
{
//load training instances
Instances originalTrain= //...load data with numeric attributes
NumericToNominal convert= new NumericToNominal();
String[] options= new String[2];
options[0]="-R";
options[1]="1-2"; //range of variables to make numeric
convert.setOptions(options);
convert.setInputFormat(originalTrain);
Instances newData=Filter.useFilter(originalTrain, convert);
System.out.println("Before");
for(int i=0; i<2; i=i+1)
{
System.out.println("Nominal? "+originalTrain.attribute(i).isNominal());
}
System.out.println("After");
for(int i=0; i<2; i=i+1)
{
System.out.println("Nominal? "+newData.attribute(i).isNominal());
}
}
}
最初にarffファイルを開きます。フィルタの下で[選択]をクリックします。フィルタツリーの下で、教師なしに移動し、「NumerictoNomial」を検索します。1回クリックして[適用]を押します。ファイルを保存してリロードします。注:変更するフィールドのチェックボックスがオンになっていることを確認してください。
NumericToNominalタブをクリックすると、ウィンドウが表示されます。nominalに変更する適切なattributeIndicesを選択します。