سلام دوستان..
متاسفانه من فعلا کار با نرم افزار متلب رو بلد نیستم ولی استادمون بهمون تمرین داده
میخواستم اگه میشه راهنمایید کندی..بخشی از سوالی که دادن اینه:
تعداد 100 داده تصاذفی در بازه 10 و -10 تولید کنید.که 70 درصد این داده ها به عنوان داده اموزش (Train) و 30% به عنوان داده آزمون(Test) در نظر گرفته بشن
سوال من اینکه چطوری بگم ازین 100 تا داده کدومها test هستن کدوم ها Train؟
و بعد از این که معین کردمشون از کدوم دسته داده ها با توجه به معادله ام ، باید برای رسم نمودار استفاده کنم؟
سلام.
یه کم واضح بگید لطفا
برای رسم نمودار هم می تونید از تابع هیستو گرام استفاده کنید.
والا دقیقا عین سوالی رو که استاد گفته رو نوشتم..
گفته با نرم افزار متلب به صورت تصادفی در بازه -10 تا 10 تعداد 100 تا داده تولد کنید.که گمونم این بخشش با این دستور حل شه:
x=randint(1,100,[-10,10]) بعد گفته روی تعداد صدتا دااده ای که تولید کردید تقسیم بندی 70 به 30 انجام بدید.70 درصد داده ها بشن داده Train
30 درصد باقیش بشن داده test
بعد با استفاده از روش برازش خطی و اون 70 درصد داده ها یه تابع درست کنید به فرم Y=ax+b
و شکلشو رسم کنید و
بعد اون 30 درصد دیگه رو یعنی داده های تست رو بدید به این معادله و شکلشو رسم کنید و با شکل قبلی مقایسه کنید..این کارو تا مربته 10 انجام بدید
این سوال استاد بود....
همین دستور رو که گفتید :
x=randint(1,100,[-10,10])
اجرا کنید ؛ خروجیش یه بردار باید باشه قانونا ! یعنی الا x یک بردار هستش !
یعنی یک ماتریس یک بعدی !
یعنی تمام اعداد داخل این بردار با یه عدد مشخص شدن ؛
پس الا x باید ۱۰۰ تا عضو داشته باشه !
پس از ۱ تا ۷۰ چی میشه ؟ میشه ۷۰ درصد داده هاش !
و از ۷۰ - ۱۰۰ تا end چی میشه ؟ میشه ۳۰ درصد بقیش
حالا اون روش برازش چی هست ؟
اینجا کلا بچه ها ریاضیاتشون ضعفیه
خب قربونت اینو که میدونم 70 درصد میشه هفتاد تا داده
فقط بلد نیستم بنویسمش...شرمنده به خدا.. :(
ن اومدم با دستور for اینجوری نوشتم:
for i=1:70
train= x(i)
end
مقصورم این بود که هفتاد تا داره رو بریزم تو یه آرایه ای به نام Train
ولی خب اینی که نوشتم اشتباه بود...چون فقط داده هفتادم رو تو train نگه میدارهکه طبیعیه البته
متلب بلد نیستم خب :(
دوست عزیز ممنونم..همین یه تیکه کد کل سوالمو حل کرد :) خیلی ممنونم:)
یه سوال دیگه
من یه تیکه کد دارم با متلب به شکل زیر:
w=rand(1,2)
b=rand(1,1)
Net= w(1)*x1 + w(2)*x2 + b
Error=D-Net
e=mse(Error)
میخوام این تیکه کد 10 بار اجرا بشه و 10 تا e به من بده..که بتونم با این 10 تا e نمودار بکشم...تو متلب چه جوری باید این تعداد تکرار و به دست اوردن 10 تا e رو بنویسم؟
این mse کارش جیه کلا ؟
تا الا ندیده بودمش
----------------------------------------------------
خب با یدونه حلقه for میشه انجام داد دیگه !
الا mlo یک متغییر یا بهتر بگم یک بردار شده :
کد php:
>> mlo
mlo =
1 2 3 4 5 6 7 8 9
>> mlo(4)
ans =
4
حالا فقط کافیه یکم ادیتش کنید و بجای mlo همون e خودتون رو قرار بدید و ...
ممنونم
mse در واقع دستوری هست که میاد میانگین مجموج مربعات خطا رو حساب میکنه.
حالا تو این سوالی که استاد به ما داده (البته من الان کد اصلاح شده امو مینویسم.)میخواد اون قطعه کد رو 10 بار اجرا کنیم.. تا10 mse به دست بیاریم...بعد بر حسب mse و error نمودار بکشیم.یعنی مثلا محور x هامون بشن مقادری این 10 تا mse و محور y هامون هم بشن مقادیر O
کد:
w=rand(1,2)
b=rand(1,1)
Net= w(1)*x1 + w(1)*x2 + b
O=logsig(Net)
Error=D-O
e=mse(Error)
plot(e,O)
راهی رو که گفتید رو امتحان کردم.e رو برداری حساب کردم و مقادیر محاسبه شده از mse رو ریختم توش.ولی تو قسمت استفاده از دستور plot آخرین مقدار e رو در نطر میگیره. و در نتیجه نمودارم میشه یه خط عمودی.یعنی اگه مثلا e به دست اومده باشه 0.1و0.2 و0.8 و....در آخر 0.06 روی محور xها فقط همین 0.06 رو میندازه و به نه تا مقدار دیگه e رو روی محور در نظر نمیگیره.
نمودنم..شاید برای رسم نمودار دستوری دیگه ای غیر از plot باید باشه :(
سلام عزیزان
یه سوال دارم وقتی توی یه حلقه مثل FOR یا while نتایج رو میخوایم چاپ کنه بصورت ستونی چاپ میکنه اگه بخوایم همون نتایج رو افقی چاپ کنه چیکار کنم؟
ممنون میشم جواب بدین آخه سوال میانترم بوده.
مثال:برنامه ای بنویسید که مقسوم علیه های عدد ورودی را به صورت افقی چاپ کند.
سلام عزیزان
یه سوال دارم وقتی توی یه حلقه مثل FOR یا while نتایج رو میخوایم چاپ کنه بصورت ستونی چاپ میکنه اگه بخوایم همون نتایج رو افقی چاپ کنه چیکار کنم؟
ممنون میشم جواب بدین آخه سوال میانترم بوده.
مثال:برنامه ای بنویسید که مقسوم علیه های عدد ورودی را به صورت افقی چاپ کند.