![]() |
حذف کامل ویژگی از دیتاست
با سلام
دوستان لطفا هر کس می تونه راهنمایی کنه. من می خواستم یک ویژگی رو برا همیشه از یک دیتاست حذف کنم. از دستور های وکا توی جاوا استفاده می کنم. من این کار رو با این دستور انجام دادم: rm.setAttributeIndices(); و ویژگی مورد نظر رو حذف کردم. در ادامه وقتی با option می خوام یه سری ویژگی ها روفیلتر کنم خطا میده. و وقتی نام ویژگی حذف شده رو پرینت میگیرم باز چاپ میکنه. چطور می تونم ویژگی رو کاملا با نام و اندیس و آدرسش حذف کنم؟ ممکن هست؟ لطفا در هر حدی که می تونین راهنماییم کنین. خیلی فوریه.. اگه لازم هست سوال رو جای دیگه مطرح کنم بگید. ممنون. |
نقل قول:
سلام دوست من شما میتونید از نمونه کد زیر استفاده کنید: كد:
import weka.core.Instances; http://weka.wikispaces.com/Use+WEKA+in+your+Java+code موفق باشید. |
سلام و ممنون به خاطر راهنمایی تون.
اما مشکل این جاست که من از دو مرحله استفاده می کنم: 1- حذف یک ویژگی از دیتاست 2- فیلتر کردن ویژگی های باقی مانده با استفاده از همین کدی که شما بهش اشاره کردین که تو مرحله ی دوم مشکل این هست که ویژگی که حذف شده انگار اندیس ها آپدیت نشدند و option برای فیلتر کردن بقیه ی ویژگی ها درست عمل نمی کنه... |
مثلا وقتی تعداد ویژگیها 5 تاست و من ویژگی 3 رو از دیتاست remove می کنم تعداد ویژگی ها به 4 تا کاهش پیدا می کنه
در واقع اگر ویژگی 3از دیتاست حدف شده باشه باید ویژگی بعدی یعنی 4جاش رو بگیره و اگر اندیس ها آپدیت بشن ، وقتی من دوباره 3رو فیلتر می کنم فیلتر اعمال بشه و تعداد ویژگی ها 3تا بشه ولی در مرحله ی بعدی وقتی می یام دوباره ویژگی 3 رو فیلتر می کنم هیچ اتفاقی نمی افته.. 1 2 3 4 5 remove 3 by using rm.setAttributeIndices("3"); : 1 2 - 4 5 apply filter , option=3 by using remove2.setOptions(options); : 1 2 - 4 5 می خوام بدونم با چهکدی می تونم حذف رو کامل انجام بدم یا اندیس ها رو به روز کنم یا هر کار دیگه ای که نتیجه به شکل زیر بشه: remove : 1 2 - 4 5 -> 1 2 3 4 که در این صورت فیلتر درست عمل می کنه اگر ممکنه و کسی راهش رو می دونه یا هر چی به ذهنتون می رسه روبگین. ممنون از لطفتون. |
نقل قول:
|
خیلی ممنونم.
کدی که من استفاده کردم به شکل زیر هس: .... Remove rm = new Remove(); rm.setAttributeIndices(options3); rm.setInputFormat(train); train = Filter.useFilter(train, rm); // apply filter if (train.classIndex() == -1) { train.setClassIndex(train.numAttributes() - 1); } test = Filter.useFilter(test, rm); // apply filter if (test.classIndex() == -1) { test.setClassIndex(test.numAttributes() - 1); } rm.setOptions(options2); rm.setInputFormat(train); newTrain2 = Filter.useFilter(train, rm); // apply filter if (newTrain2.classIndex() == -1) { newTrain2.setClassIndex(newTrain2.numAttributes() - 1); } newTest2 = Filter.useFilter(test, rm); // apply filter if (newTest2.classIndex() == -1) { newTest2.setClassIndex(newTest2.numAttributes() - 1); } Classifier cls = new SMO(); .... مشکل قبلی تقریبا با کدی که به شکل بالا نوشتم حل شد. اما الان مشکل این هست که خطای زیر رو موقع اجرا می ده که علتش رو نمی دونم ... لطفا راهنماییم کنین... weka.core.UnsupportedAttributeTypeException: weka.classifiers.functions.SMO: Cannot handle numeric class! at weka.core.Capabilities.test(Capabilities.java:949) at weka.core.Capabilities.test(Capabilities.java:1105 ) at weka.core.Capabilities.test(Capabilities.java:1018 ) at weka.core.Capabilities.testWithFail(Capabilities.j ava:1297) at weka.classifiers.functions.SMO.buildClassifier(SMO .java:1251) |
زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۶:۰۴ قبل از ظهر ميباشد. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.