現在、 FP-Growthアルゴリズムを使用する必要があるプロジェクトに取り組んでいます。Wekaがそのための便利なツールであることは知っています。ただし、コーディングには C# を使用しています (他のライブラリが必要なため)。だから、私は使用するように変換weka.jar
しました。以下は私が書いたコードスニペットです:weka.dll
IKVM.NET
FPGrowth FPMiner = new FPGrowth();
FPMiner.buildAssociations(dataset);
AssociationRules rules = FPMiner.getAssociationRules();
List<AssociationRule> rule = rules.getRules();
これにより、次のようなエラーが表示されます。
タイプ 'java.util.List' を 'System.Collections.Generic.List' に暗黙的に変換することはできません。明示的な変換が存在します (キャストがありませんか?)
そのため、次のように最後の行にキャストを追加しました。
List<AssociationRule> rule = (System.Collections.Generic.List<AssociationRule>)rules.getRules();
エラーは消えますが、コードを実行すると次のような例外が発生します。
System.InvalidCastException は処理されませんでした Message='java.util.ArrayList' タイプのオブジェクトを System.Collections.Generic.List`1[weka.associations.AssociationRule]' タイプにキャストできません。ソース=WindowsFormsApplication1
スタックトレースは次のようになります。
StackTrace:
at DetectGroup.Form1.GenerateARFF() in C:\Users\user\Documents\Visual Studio 2010\Projects\DetectGroup\DetectGroup\Form1.cs:line 279
at DetectGroup.Form1.findNearestNeighbours() in C:\Users\user\Documents\Visual Studio 2010\Projects\DetectGroup\DetectGroup\Form1.cs:line 236
at DetectGroup.Form1.findSelectedTraj() in C:\Users\user\Documents\Visual Studio 2010\Projects\DetectGroup\DetectGroup\Form1.cs:line 165
at DetectGroup.Form1.button2_Click(Object sender, EventArgs e) in C:\Users\user\Documents\Visual Studio 2010\Projects\DetectGroup\DetectGroup\Form1.cs:line 404
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at DetectGroup.Program.Main() in C:\Users\user\Documents\Visual Studio 2010\Projects\DetectGroup\DetectGroup\Program.cs:line 18
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart() InnerException:
私は今何をすべきかを理解することができません。私はものを検索しようとしましたが、まだ解決策がありません。として使用しようとしているときにgetRules()
返されるため、エラーが発生することを理解しています。それを避けるために私は何ができますか?どんな助けでも素晴らしいでしょう!java.util.List
System.Collections.Generic.List
また、C# で利用できるデータ マイニング ライブラリ (Weka など) はありますか?
ありがとうございました!