Artificial Intelligence - هوش مصنوعی  
انجمن را در گوگل محبوب کنيد :

بازگشت   Artificial Intelligence - هوش مصنوعی > یادگیری (Learning) > یادگیری با نظارت > يادگيري ماشيني(Machine learning )


 
تبليغات سايت
Iranian Association for the Advancement of Artificial Intelligence
ارسال تاپيک جديد  پاسخ
 
LinkBack ابزارهاي تاپيک نحوه نمايش
قديمي ۰۱-۲۲-۱۳۹۳, ۱۰:۵۲ قبل از ظهر   #1 (لینک دائم)
عضو فوق فعال
 
آواتار mahtabi
 
تاريخ عضويت: ارديبهشت ۱۳۹۰
پست ها: 21
تشكرها: 28
0 تشكر در 0 پست
Question حذف کامل ویژگی از دیتاست

با سلام

دوستان لطفا هر کس می تونه راهنمایی کنه.
من می خواستم یک ویژگی رو برا همیشه از یک دیتاست حذف کنم.
از دستور های وکا توی جاوا استفاده می کنم.
من این کار رو با این دستور انجام دادم: rm.setAttributeIndices();
و ویژگی مورد نظر رو حذف کردم. در ادامه وقتی با option می خوام یه سری ویژگی ها روفیلتر کنم خطا میده. و وقتی نام ویژگی حذف شده رو پرینت میگیرم باز چاپ میکنه.
چطور می تونم ویژگی رو کاملا با نام و اندیس و آدرسش حذف کنم؟
ممکن هست؟
لطفا در هر حدی که می تونین راهنماییم کنین. خیلی فوریه..
اگه لازم هست سوال رو جای دیگه مطرح کنم بگید. ممنون.
mahtabi آفلاين است   پاسخ با نقل قول

  #ADS
نشان دهنده تبلیغات
تبليغگر
 
 
 
تاريخ عضويت: -
محل سكونت: -
سن: 2010
پست ها: -
 

نشان دهنده تبلیغات is online  
قديمي ۰۱-۲۲-۱۳۹۳, ۰۹:۲۲ بعد از ظهر   #2 (لینک دائم)
Moderator
 
آواتار babak_1234
 
تاريخ عضويت: شهريور ۱۳۸۸
محل سكونت: تهران
پست ها: 252
تشكرها: 1
140 تشكر در 108 پست
My Mood: Khonsard
پيش فرض

نقل قول:
نوشته اصلي بوسيله mahtabi نمايش پست
با سلام

دوستان لطفا هر کس می تونه راهنمایی کنه.
من می خواستم یک ویژگی رو برا همیشه از یک دیتاست حذف کنم.
از دستور های وکا توی جاوا استفاده می کنم.
من این کار رو با این دستور انجام دادم: rm.setAttributeIndices();
و ویژگی مورد نظر رو حذف کردم. در ادامه وقتی با option می خوام یه سری ویژگی ها روفیلتر کنم خطا میده. و وقتی نام ویژگی حذف شده رو پرینت میگیرم باز چاپ میکنه.
چطور می تونم ویژگی رو کاملا با نام و اندیس و آدرسش حذف کنم؟
ممکن هست؟
لطفا در هر حدی که می تونین راهنماییم کنین. خیلی فوریه..
اگه لازم هست سوال رو جای دیگه مطرح کنم بگید. ممنون.

سلام دوست من

شما میتونید از نمونه کد زیر استفاده کنید:

كد:
 import weka.core.Instances;
 import weka.filters.Filter;
 import weka.filters.unsupervised.attribute.Remove;
 ...
 String[] options = new String[2];
 options[0] = "-R";                                    // "range"
 options[1] = "1";                                     // first attribute
 Remove remove = new Remove();                         // new instance of filter
 remove.setOptions(options);                           // set options
 remove.setInputFormat(data);                          // inform filter about dataset **AFTER** setting options
 Instances newData = Filter.useFilter(data, remove);   // apply filter
همچنین لینک زیر توضیحات خوبی برای ترکیب وکا و جاوا ارائه داده:

http://weka.wikispaces.com/Use+WEKA+in+your+Java+code

موفق باشید.
babak_1234 آفلاين است   پاسخ با نقل قول
از babak_1234 تشكر كرده است:
mahtabi (۰۱-۲۷-۱۳۹۳)
قديمي ۰۱-۲۳-۱۳۹۳, ۰۵:۰۱ بعد از ظهر   #3 (لینک دائم)
عضو فوق فعال
 
آواتار mahtabi
 
تاريخ عضويت: ارديبهشت ۱۳۹۰
پست ها: 21
تشكرها: 28
0 تشكر در 0 پست
پيش فرض

سلام و ممنون به خاطر راهنمایی تون.

اما مشکل این جاست که من از دو مرحله استفاده می کنم:
1- حذف یک ویژگی از دیتاست
2- فیلتر کردن ویژگی های باقی مانده با استفاده از همین کدی که شما بهش اشاره کردین
که تو مرحله ی دوم مشکل این هست که ویژگی که حذف شده انگار اندیس ها آپدیت نشدند و option برای فیلتر کردن بقیه ی ویژگی ها درست عمل نمی کنه...
mahtabi آفلاين است   پاسخ با نقل قول
قديمي ۰۱-۲۳-۱۳۹۳, ۰۵:۲۶ بعد از ظهر   #4 (لینک دائم)
عضو فوق فعال
 
آواتار mahtabi
 
تاريخ عضويت: ارديبهشت ۱۳۹۰
پست ها: 21
تشكرها: 28
0 تشكر در 0 پست
پيش فرض

مثلا وقتی تعداد ویژگیها 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


که در این صورت فیلتر درست عمل می کنه اگر ممکنه و کسی راهش رو می دونه یا هر چی به ذهنتون می رسه روبگین. ممنون از لطفتون.
mahtabi آفلاين است   پاسخ با نقل قول
قديمي ۰۱-۲۳-۱۳۹۳, ۰۹:۳۲ بعد از ظهر   #5 (لینک دائم)
Moderator
 
آواتار babak_1234
 
تاريخ عضويت: شهريور ۱۳۸۸
محل سكونت: تهران
پست ها: 252
تشكرها: 1
140 تشكر در 108 پست
My Mood: Khonsard
پيش فرض

نقل قول:
نوشته اصلي بوسيله mahtabi نمايش پست
مثلا وقتی تعداد ویژگیها 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


که در این صورت فیلتر درست عمل می کنه اگر ممکنه و کسی راهش رو می دونه یا هر چی به ذهنتون می رسه روبگین. ممنون از لطفتون.
لطفا کد خودتون رو آپلود کنید تا من بتونم بررسیش کنم.
babak_1234 آفلاين است   پاسخ با نقل قول
قديمي ۰۱-۲۷-۱۳۹۳, ۰۶:۱۲ بعد از ظهر   #6 (لینک دائم)
عضو فوق فعال
 
آواتار mahtabi
 
تاريخ عضويت: ارديبهشت ۱۳۹۰
پست ها: 21
تشكرها: 28
0 تشكر در 0 پست
پيش فرض

خیلی ممنونم.
کدی که من استفاده کردم به شکل زیر هس:

....

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)
mahtabi آفلاين است   پاسخ با نقل قول
پاسخ



كاربران در حال ديدن تاپيک: 1 (0 عضو و 1 مهمان)
 

قوانين ارسال
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is فعال
شکلکها فعال است
كد [IMG] فعال است
كدهاي HTML غير فعال است
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال




زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۶:۵۶ بعد از ظهر ميباشد.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.

Teach and Learn at Hexib | Sponsored by www.Syavash.com and Product In Review

استفاده از مطالب انجمن در سایر سایت ها، تنها با ذکر انجمن هوش مصنوعي به عنوان منبع و لینک مستقیم به خود مطلب مجاز است

Inactive Reminders By Icora Web Design