نمونه هایی از متغیرهای باینری


نتیجه ارسال درخواست متد POST

مفهوم تبدیل نوع داده ها در جاوا

هنگامی که شما بر روی متغیرها یا ثابت هایی که از یک نوع هستند، محاسبه انجام دهید، آنچه حاصل می شود نیز از همان نوع است. بعنوان مثال هنگامی که شما دو مقدار از نوع int را بر یکدیگر تقسیم کنید، حاصل نیز از نوع int خواهد بود. و یا هنگامی که دو مقدار از نوع double را از یکدیگر تفریق کنید، حاصل نیز از نوع double خواهد بود. اما گاهی اوقات ممکن است بخواهید بر روی عملوندهایی با نوع متفاوت، عملیات ریاضی انجام دهید. هنگامی که شما بر روی عملوندهایی با نوع متفاوت عملیات محاسباتی انجام می دهید، جاوا از یک نوعِ متحد شده، برای حاصل استفاده می کند. نوعِ متحد شده، به نوعی گفته می شود که تمام عملوندهای یک عبارت بتوانند به آن تبدیل شوند تا بتوانند مورد محاسبه قرار گیرند. زبان جاوا، به طور مجازی و اتوماتیک عملوندهای نامنطبق را مورد تبدیل قرار می دهد تا با یکدیگر متحد شوند. لیست زیر ترتیب متحد سازی بین مقادیر را نشان می دهد.

مثال (مفهوم تبدیل نوع داده ها در جاوا)

هنگامی که در یک عبارت محاسباتی از دو مقدار با نوع متفاوت استفاده شود، نوع متحد سازی شده، در لیست بالا، آن نوعی است که شماره ی کمتری دارد. بعبارت دیگر عملوندی که در این لیست شماره ی بیشتری داشته باشد، به نوع عملوندی که شماره ی کمتری در این لیست دارد، تبدیل می شود. بعنوان مثال جمع یک عدد از نوع double و یک عدد از نوع int، می شود از نوع double. و یا به عنوان مثالی دیگر، تفریق یک عدد از نوع long و یک عدد از نوع float می شود از نوع float.

نکته: مقادیر بولی(Boolean) را نمی توان به دیگر انواع داده ها تبدیل نمود. در برخی از زبان های برنامه نویسی مثل ++C مقادیر بولی در حقیقت عدد هستند، اما جاوا این چنین نیست.

بعنوان مثال فرض کنید که یک متغیر به نام hoursWorked از نوع int داریم و یک متغیر دیگر به نام payRate از نوع double داریم. و می خواهیم به صورت زیر آنها را در یکدیگر ضرب کنیم:

مثال (مفهوم تبدیل نوع داده ها در جاوا)

حاصل این ضرب، از نوع double خواهد بود، زیرا همان طور که در لیست بالایی مشاهده می کنید، نوع double از اولویت بیشتری برخوردار است. بنابراین برابر قرار دادن حاصل ضرب در متغیر grossPay (که از نوع double است ) صحیح است. اما کدهایی که در زیر نوشته شده اند، کامپایل نخواهند شد، زیرا این امکان وجود ندارد تا یک عدد از نوع double را در یک متغیر از نوع int ذخیره کنیم.

مثال (مفهوم تبدیل نوع داده ها در جاوا)

نکته: هنگامی که نوع داده های char و short و byte در عبارت هایی استفاده شوند که دارای نوع متفاوتی هستند، می توان آنها را از نوع int درنظر گرفت. اگر شما بر روی هر ترکیبی از مقادیر داده ها از نوع char و short و byte محاسبه انجام دهید، نتیجه به طور پیش فرض از نوع int خواهد بود. بعنوان مثال اگر شما دو مقدار از نوع byte را با یکدیگر جمع کنید، نتیجه از نوع int خواهد بودو نه از نوع byte.

شما می توانید با استفاده از تعیین نوع(type casting)، جاوا را مجبور کنید تا از یک نوع متحد ساز خاص استفاده کند. تعیین نوع، مشخص می کند که یک مقدار از یک نوع خاص، با یک نوع داده ی دیگر مورد استفاده قرار گیرد. برای تعیین یک نوع خاص، می توانید عملگر تعیین نوع را در داخل یک پرانتز قرار دهید.پس از نمونه هایی از متغیرهای باینری عملگر تعیین نوع، یک متغیر یا یک ثابت قرار می گیرد. بعنوان مثال، در کد زیر مثالی از تعیین نوع یا type casting را مشاهده می کنید:

مثال (مفهوم تبدیل نوع داده ها در جاوا)

نکته: به طور دقیق تر، به عملگر تعیین نوع، عملگر یگانی تعیین نوع(unary cast operator) گفته می شود. برخلاف یک عملگر باینری که به دو عملوند احتیاج دارد، یک عملگر یگانی(unary) تنها به یک عملوند احتیاج دارد. پس از عملگر یگانی تعیین نوع، عملوند آن قرار می گیرد.

در مثال بالا، متغیر bankBalance بر عدد صحیح 4 تقسیم می شود و نتیجه ابتدا از نوع double است. سپس این مقدار، قبل از اینکه در متغیر weeklyBudget ذخیره شود، به نوع float تبدیل می شود و سپس در متغیر مذکور ذخیره می شود. اما اگر ما هیچ تبدیل نوعی را انجام ندهیم، عبارتی که حاصل را به متغیر weeklyBudget انتساب می دهد، کامپایل نخواهد شد.

به طور مشابه، در کدهای زیر، یک متغیر از نوع float را به نوع int تبدیل می کنیم:

مثال (مفهوم تبدیل نوع داده ها در جاوا)

در مثال بالا، متغیر myMoney که از نوع float است، قبل از اینکه در متغیر dollars قرار گیرد، به یک عدد صحیح(int) تبدیل می شود. به دلیل اینکه مقدار float قرار است به مقداری از نوع int تبدیل شود، مقادیر اعشاری از بین می روند. عملگر تعیین نوع، به طور دائمی، نوع داده ی یک متغیر را تغییر نمی دهد، بلکه این تغییر صرفاً هنگام انجام عملیات جاری انجام می شود.

نکته: هنگام تعیین نوع، داده ها از دست می روند( یا به عبارت دیگر کوانتیزه می شوند). بعنوان مثال بزرگترین مقدار نوع داده ی byte برابر است با 127 و بزرگترین مقدار نوع داده ی int برابر است با 2,147,483,647 بنابراین عبارت زیر یک نتیجه ی غیرطبیعی و تحریف شده را نشان می دهد:

مثال (مفهوم تبدیل نوع داده ها در جاوا)

نکته: یک بایت(byte) از هشت تا 0 و 1 تشکیل شده است(از هشت عدد باینری). اولین رقم باینری یا به عبارت دیگر اولین بیت، قادر است یک 0 یا 1 را در خود نگهداری کند. این نمونه هایی از متغیرهای باینری بیت تعیین کننده ی مثبت یا منفی بودن آن عدد است. سپس هفت بیت باقی مانده، مقدار واقعی را در خود نگهداری می کنند. هنگامی که مقدار صحیح 200( به باینری: ۱۱۰۰۱۰۰۰ ) در یک متغیر از نوع byte ذخیره می شود، اولین رقم آن(از سمت چپ)، در هشتمین بیت(از سمت راست) متغیر قرار می گیرد، و این باعث می شود تا جاوا فکر کند که منظور شما مقدار 72- بوده است. ( عدد 72 به باینری: ۱۰۰۱۰۰۰ ). که این مقدار یک مقدار غلط و اشتباه است.

هنگامی که شما می خواهید یک مقدار را به یک نوع متحد ساز با اولویت بیشتر تبدیل کنید، نیازی به تعیین نوع(cast) ندارید. بعنوان مثال هنگامی که شما عبارتی مثل زیر را بنویسید، جاوا به طو اتوماتیک مقدار صحیح 10 را به نوع double تبدیل می کند. بنابراین این عدد قادر خواهد بود تا در متغیر payRate ذخیره شود:

مثال (مفهوم تبدیل نوع داده ها در جاوا)

اما برای وضوح بیشتر، اگر می خواهید مقدار 10 را به متغیر payRate انتساب دهید، بهتر است آن را به صورت زیر بنویسید:

مثال (مفهوم تبدیل نوع داده ها در جاوا)

نتیجه های هر دو کاملا یکسان هستند.

آزمون: گزینه ی اشتباه را مشخص کنید!

1. هنگامی که شما بر روی دو عملوند با نوع مختلف، عملیات محاسباتی انجام می دهید، شما باید آنها را به یک نوع، مورد محاسبه قرار دهید.

2. جمع یک مقدار از نوع double و یک مقدار از نوع int و یک مقدار از نوع float، در نهایت از نوع double خواهد بود.

3. شما می توانید با استفاده از یک متحد ساز، یک مقدار از یک نوع دیگر را با یک نوع دلخواه ذخیره کنید.

پاسخ: گزینه ی 1 اشتباه است.

هنگامی که شما بر روی دو عملوند با نوع مختلف، عملیات محاسباتی انجام می دهید، جاوا آنها را به یک نوع متحد ساز محاسبه می کند.

آموزش رگرسیون لجستیک در یادگیری ماشین با پایتون

آموزش رگرسیون لجستیک در یادگیری ماشین با پایتون

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش رگرسیون لجستیک در یادگیری ماشین با پایتون خواهیم پرداخت.

مقدمه ای بر رگرسیون لجستیک در یادگیری ماشین با پایتون

رگرسیون لجستیک یک الگوریتم طبقه بندی یادگیری تحت نظارت است که برای پیش بینی احتمال یک متغیر هدف استفاده می شود. ماهیت متغیر هدف یا وابسته دوگانه است ، به این معنی که فقط دو کلاس ممکن وجود دارد.

به عبارت ساده، متغیر وابسته ماهیت دودویی دارد و داده ها را به صورت ۱ کد می کند (مخفف موفقیت / بله) یا ۰ (مخفف شکست / خیر).

از نظر ریاضی، یک مدل رگرسیون لجستیک P (1 = Y) را به عنوان تابعی از X پیش بینی می کند. این یکی از ساده ترین الگوریتم های ML است که می تواند برای مشکلات مختلف طبقه بندی مانند تشخیص هرزنامه ، پیش بینی دیابت ، تشخیص سرطان و غیره استفاده شود.

انواع رگرسیون لجستیک

به طور کلی، رگرسیون لجستیک به معنای رگرسیون لجستیک باینری است که متغیرهای باینری هدف دارد ، اما دو دسته دیگر از متغیرهای هدف وجود دارد که می تواند توسط آن پیش بینی شود. بر اساس تعداد این دسته ها ، رگرسیون لجستیک را می توان به انواع زیر تقسیم کرد –

دودویی یا دوجمله ای

در چنین نوع طبقه بندی، یک متغیر وابسته فقط دو نوع ممکن دارد ۱ و ۰٫ به عنوان مثال ، این متغیرها ممکن است موفقیت یا شکست را نشان دهند، بله یا نه، برد یا باخت و غیره.

چند جمله ای

در چنین نوعی از طبقه بندی ، متغیر وابسته می تواند ۳ نوع یا بیشتر غیر مرتب داشته باشد یا انواع فاقد اهمیت کمی باشد. به عنوان مثال ، این متغیرها ممکن است “نوع A” یا “نوع B” یا “نوع C” را نشان دهند.

در چنین نوع طبقه بندی ، متغیر وابسته می تواند ۳ یا بیشتر از انواع مرتب شده یا انواع دارای اهمیت کمی داشته باشد. به عنوان مثال ، این متغیرها ممکن است نمایانگر “ضعیف” یا “خوب” ، “بسیار خوب” ، “عالی” باشند و هر دسته می تواند نمرات مانند ۰،۱،۲،۳ داشته باشد.

فرضیات رگرسیون لجستیک

قبل از غوطه وری در اجرای رگرسیون لجستیک، باید از مفروضات زیر در مورد آن آگاه باشیم –

  • در صورت رگرسیون لجستیک باینری، متغیرهای هدف باید همیشه باینری باشند و نتیجه مطلوب با عامل ۱ نشان داده می شود.
  • در مدل نباید هیچ چند همبستگی وجود داشته باشد، بدین معنی که متغیرهای مستقل باید از یکدیگر مستقل باشند.
  • ما باید متغیرهای معنی دار را در مدل خود بگنجانیم.
  • ما باید اندازه نمونه بزرگی را برای رگرسیون لجستیک انتخاب کنیم.

مدل رگرسیون لجستیک دودویی

ساده ترین شکل رگرسیون لجستیک ، رگرسیون لجستیک دودویی یا دوجمله ای است که در آن متغیر هدف یا وابسته می تواند فقط ۲ نوع ممکن یا ۱ یا ۰ داشته باشد. این به ما امکان می دهد یک رابطه بین چند متغیر پیش بینی کننده و یک متغیر هدف دودویی / دوجمله ای را مدل کنیم. در صورت رگرسیون لجستیک ، تابع خطی اساساً به عنوان ورودی به یک تابع دیگر مانند … در رابطه زیر استفاده می شود –

در اینجا تابع لجستیک یا سیگموئید است که می تواند به صورت زیر ارائه شود –

منحنی تا سیگموئید را می توان با کمک نمودار زیر نشان داد. می توانیم مقادیر محور y را بین ۰ تا ۱ ببینیم و محور را از ۰٫۵ عبور می دهیم.

Flow


کلاسها را می توان به مثبت یا منفی تقسیم کرد. اگر بین ۰ و ۱ باشد ، خروجی تحت احتمال کلاس مثبت قرار می گیرد. برای اجرای ما ، ما خروجی تابع فرضیه را مثبت می دانیم اگر .۵۰٫۵ باشد ، در غیر این صورت منفی است.

ما همچنین باید یک تابع از دست دادن را برای اندازه گیری عملکرد خوب الگوریتم با استفاده از وزن های توابع ، که توسط تتا به شرح زیر نشان داده شده است ، تعریف کنیم –

اکنون ، پس از تعریف تابع ضرر، هدف اصلی ما به حداقل رساندن عملکرد ضرر است. این کار را می توان با کمک نصب وزنه ها انجام داد که به معنی افزایش یا کاهش وزن است. با کمک مشتقات عملکرد از دست دادن وزن هر وزن ، می توانیم بدانیم که چه پارامترهایی باید دارای وزن بالا باشند و چه وزن هایی باید وزن کمتری داشته باشند.

معادله نزولی گرادیان زیر به ما می گوید که اگر پارامترها را اصلاح کنیم ، ضرر چگونه تغییر می کند –

پیاده سازی در پایتون

حال ما مفهوم فوق مربوط به رگرسیون لجستیکی دوجمله ای را در پایتون پیاده سازی خواهیم کرد. برای این منظور ، ما از یک مجموعه داده چند متغیره گل به نام ‘iris’ استفاده می کنیم که دارای ۳ کلاس ۵۰ نمونه است ، اما ما از دو ستون ویژگی اول استفاده خواهیم کرد. هر کلاس نماینده نوعی گل عنبیه است.

اول ، ما باید کتابخانه های لازم را به شرح زیر وارد کنیم –

بعد ، مجموعه داده ‘iris’ را به شرح زیر بارگیری کنید –

ما می توانیم داده های آموزش خود را به شرح زیر ترسیم کنیم –

Star

بعد ما تابع سیگموئید ، تابع ضرر و پایین آمدن شیب را به شرح زیر تعریف خواهیم کرد –

با کمک اسکریپت زیر می توان احتمالات خروجی را پیش بینی کرد –

بعد ، ما می توانیم مدل را ارزیابی کنیم و آن را به صورت زیر ترسیم کنیم –

Red Line

مدل رگرسیون لجستیک چند جمله ای

روش مفید دیگر رگرسیون لجستیک ، رگرسیون لجستیک چند جمله ای است که در آن متغیر هدف یا وابسته می تواند ۳ نوع غیر مرتب شده یا بیشتر داشته باشد ، یعنی انواع فاقد اهمیت کمی.

پیاده سازی در پایتون

حال ما مفهوم فوق را برای رگرسیون لجستیک چند جمله ای در پایتون پیاده خواهیم کرد. برای این منظور، ما از یک مجموعه داده از sklearn با نام عددی استفاده می کنیم.

اول ، ما باید کتابخانه های لازم را به شرح زیر وارد کنیم –

بعد ، ما باید مجموعه داده عددی را بارگیری کنیم –

اکنون ماتریس ویژگی (X) و بردار پاسخ (y) را به صورت زیر تعریف کنید –

با کمک خط بعدی کد ، ما می توانیم X و y را به مجموعه های آموزش و آزمایش تقسیم کنیم –

اکنون یک شکل از رگرسیون لجستیک به شرح زیر ایجاد کنید –

اکنون ، ما باید مدل را با استفاده از مجموعه های آموزشی به شرح زیر آموزش دهیم –

نمونه هایی از متغیرهای باینری

جهت اطلاع از تنظیمات و ویــــرایش این قالب اینجا را کلیک کنید.

در پست قبلی مفاهیم کاربردی، حجم نمونه، نحوه تعریف و همچنین انتخاب متغیرها را در رگرسیون لجستیک مورد بررسی قرار دادیم. در این پست قصد داریم تا با یک مثال به نحوه تجزیه و تحلیل رگرسیون لجستیک دووجهی در نرم افزار SPSS بپردازیم.

تجزیه نمونه هایی از متغیرهای باینری و تحلیل رگرسیون لجستیک اسمی دو وجهی زمانی مورد استفاده قرار می گیرد که متغیر وابسته در سطح اسمی دو وجهی (دوشقی) است و می خواهیم وجود یا عدم وجود یک صفت را بر اساس مجموعه ای از متغیرهای مستقل پیش بینی کنیم. بنابراین در رگرسیون لجستیک اسمی دو وجهی ما نمی توانیم همانن رگرسیون خطی چندمتغیره مقدار عددی دقیق یک متغیر وابسته را بر اساس اطلاعاتی که راجع به متغیرهای مستقل داریم تعیین کنیم. بلکه در این روش ما با نسبت احتمال سر و کار داریم که آن را با کد صفر و یک نشان می دهند.

مثال های زیادی وجود دارند که در آن ها با یک متغیر اسمی دو وجهی سر و کار داریم. مثلا چرا برخی از نوزادان در بیمارستان می میرند و برخی زنده می مانند. یا اینکه چرا برخی موفق به دریافت مدرک تحصیلی می شوند و برخی دیگر خیر.

در این نوع رگرسیون متغیر وابسته حتماً باید دو وضعیتی باشد و همچنین متغیرهای مستقل می توانند هم در سطح کمی و هم در سطح کیفی طبقه بندی شده باشند. اما چنانچه یک یا چند متغیر مستقل در سطح اسمی/ترتیبی بودند حتماً باید ابتدا این متغیرها را به متغیرهای تصنعی (طریقه آن در پست قبلی توضیح داده شده است) تبدیل کنیم.

برای درک بهتر مطلب به مثال زیر که در نرم افزار SPSS حل شده است توجه نمایید.

پژوهشگری می خواهد مهمترین عوامل موثر بر مرگ و میر نوزادان را شناسایی کند و پی ببرد که مرگ و میر نوزادان تحت تأثیر چه عواملی می باشد. به عبارت دیگر این پژوهشگر به دنبال این است که ببین می تواند با استفاده از یکسری از متغیرها می تواند تعیین کند که احتمال زنده ماندن یا فوت نوزادان چقدر است؟

در این تحقیق 1000 نوزاد تازه متولد شده به عنوان حجم نمونه انتخاب و در آن وضعیت مرگ و میر نوزادان به عنوان متغیر وابسته و 4 متغیر جنسیت، وضعیت دو قلو بودن، رتبه تولد و سن مادر به عنوان متغیرهای مستقل در نظر گرفته شده اند.

متغیر وابسته : میزان مرگ و میر نوزادان (Mortality): 1: فوت شده ؛ 2 : زنده

جنسیت (Gen): 1: مرد؛ 2: زن

وضعیت دو قلو بودن: (Twin) 1: یک قلو 2: دو قلو

رتبه تولد نوزاد (LiveRank) : در هشت طبقه تعریف شده است.

سن مادر: بصورت فاصله ای تعریف شده است.

ابتدا متغیر ها را مانند شکل زیر وارد نرم افزار SPSS می کنیم.

از مسیر زیر گزینه Binary Logistic را اجرا می کنیم.

متغیر مرگ و میر (Mortality) را به قسمت Dependent و مابقی متغیرها را به قسمت Covariates منتقل می نماییم. چون در این تحقیق متغیرهای مستقلی داریم که از نوع طبقه بندی (اسمی) هستند باید این موضوع را در نرم افزار وارد نماییم. به همین دلیل از سمت راست گزینه Categorical را اجرا می کنیم.

در این قسمت دو متغیر Twin و Gen را به قسمت Categorical Covariates وارد می نماییم. (اگر در کادر Contrast روشی غیر از Indicator را به عنوان روش تقابل و First را به عنوان طبقه مرجع انتخاب نمودیم در اینصورت باید حتماً روی دکمه Change کلیک کنیم تا تغییرات اعمال شود). نهایتاً روی دکمه Continue کلیک می کنیم تا تجزیه ادامه یابد.

روی دکمه Ok کلیک می کنیم تا نتایج ظاهر شوند.

جدول اول نحوه کد بندی متغیر وابسته را نشان می دهد و بیان می کند که به جای کد 1 عدد 0 و به جای کد 2 عدد 1 در نظر گرفته شده است.

همانطور که مشاهده می شود جدول دوم فراوانی و نحوه کد بندی متغیرهای طبقه بندی را نشان می دهد.

خروجی بلوک 1: تحلیل اولیه:

خروجی جدول زیر نتایج مربوط به Block 0 یا تحلیل اولیه را نشان می دهد. در این بلوک هیچ مرحله ای برای ورود داده ها به مدل اجرا نشده است. به همین خاطر برچسب Step0 را در تمامی خروجی های این بلوک مشاهده می کنیم.

در این بلوک با استفاده از روش تحلیل رگرسیون گام به گام Forward:LR متغیرهای مستقل در صورت معنی دار بودن به ترتیب مقدار نمره از بالا به پائین وارد مدل می شوند.

جدول طبقه بندی زیر نشان می دهد که با اطمینان 82.5 درصد با استفاده از 4 متغیر مستقل در این پژوهش قادریم تغییرات وابسته به مرگ و میر نوزادان را بررسی کنیم.

در جدول زیر چون هنوز هیچ متغیری وارد مدل نشده است بنابرانی تنها نتایج مربوط به عدد ثابت (Constant) در مدل آمده است که مقدار آماره والد آن برابر 347.13 و نسبت بخت های آن برابر 4.71 می باشد.

در پژوهش حاضر 4 متغیر جنسیت، وضعیت دوقلو بودن، رتبه تولد و سن مادر به عنوان متغیرهای پیش بینی کننده احتمال مرگ و میر نوزادان مورد تحلیل قرار گرفته اند. نتایج جدول زیر نشان می دهد که هر چهار متغیر در مدل وارد شده و قادر به پیش بینی تغییرات متغیر وابسته به مرگ و میر نوزادان می باشند.

نتایج مربوط به بلوک 1:

مهمترین خروجی تحلیل رگرسیون لجستیک خروجی بلوک 1 (Block1 ) است که تفسیر نتایج رگرسیون لجستیک باید بر اساس این خروجی انجام گیرد. اولین بخش از خروجی بلوک 1 نتایج آزمون اوم نی بوس Omnibus Test مربوط به ارزیابی کل مدل رگرسیون لجستیک را نشان می دهد این آزمون به بررسی این موضوع می پردازد که مدل تا چه اندازه قدرت تبیین و کارایی دارد. با توجه به این آزمون برازش مدل در مرحله چهارم معنی دار و در سطح خطای کوچکتر از 0.01 معنی دار است.

جدول زیر نتایج مربوط به سه آماره لگاریتم درستنمایی و ضریب تعیین کاکس و نل (Cox & Snell) و ضریب تعیین نیجل کرک (Nagelkerke) را نشان می دهد. این ضرایب تقریب های ضریب تعیین در رگرسیون خطی هستند که در رگرسیون لجستیک استفاده می شوند. همانطور که مشاهده می شود در گام چهارم مقادیر دو آماره کاس و نل و نیجل کرک به ترتیب 0.36 و 0.596 می باشد. این ضرایب نشان می دهند که چهار متغیر مستقل این تحقیق توانسته اند بین 36 تا 59.6 درصد از تغییرات مرگ و میر نوزادان را تبیین کنند.

جدول پائین که جدول طبقه بندی نام دارد به ما کمک می کند تا از طریق ترسیم توافقی پاسخ ها در طبقات مشاهده شده و مورد انتظار عملکرد مدل و قدرت تفکیک افراد در طبقات متغیر وابسته را ارزیابی کنیم.

بر اساس نتایج این جدول می توانیم به صحت و سقم مدل در طبقه بندی افراد پی ببریم. همانطور که در جدول ملاحظه می شود درصد صحت پیش بینی و طبقه بندی مدل در چهار مرحله پس از ورود هر متغیر به مدل نشان داده شده است. به عنوان مثال در مرحله اول که متغیر Twin را مدل وارد شده است صحت طبقه بندی 91.9 است. پس از آن با ورود متغیرهای دیگر به مدل صحت طبقه بندی نهایتاً به 92.9 رسیده است.

جدول زیر ضمن ارائه خلاصه ای از نقش هر متغیر در مدل نشان می دهد که کدام متغیرها بعد از اجرای رگرسیون لجستیک در مدل باقی مانده اند. این جدول مهمترین جدول در تفسیر نتایج مربوط به معنی داری و میزان تدثیر هر متغیر مستقل به متغیر وابسته می باشد.

جزئیات دقیق تر تأثیر این متغیرها بیان می شود. اولین نمونه هایی از متغیرهای باینری متغیری که اثر معنی دار بر احتمال زنده ماندن نوزاد در بدو تولد دارد متغیر دوقلو بودن آن است. نسبت بخت ها برای این متغیر 25.41 بدست آمده است که نشان می دهد با تغییر نوزاد به سمت دو قلو زایی نسبت مرگ و میر نوزاد به نسبت 25.41 افزایش می یابد.

دومین متغیر جنسیت است. نسبت بخت ها برای این متغیر 3.14 بدست آمده است که نشان می دهد که با تغییر متغیر از مرد به زن نسبت مرگ و میر 3.14 افزایش می یابد.

متغیرهای بعدی سن مادر و رتبه تولد نوزاد هستند که در مدل معنی دار هستند و مطابق همین رویه تفسیر می شوند.

«استاد، دانشجو یا پژوهشگر گرامی»

چنانچه برای انجام کار آماری پژوهش خود ارزش ویژه قائل هستید، می‌توانید شرایط انجام پروژه های آماری توسط اینجانب را بخوانید و در صورت تمایل درخواست خود را ارائه دهید.

1- چنانچه کار آماری شما پذیرفته شود، تا انتها بدون هیچگونه واسطه با من در ارتباط خواهید بود.

2- کارهای آماری انجام شده توسط اینجانب بدون محدودیت زمانی دارای گارانتی هستند. هر زمان ابهام یا ایراد در کار وجود داشته باشد پاسخگو خواهم بود.

3- تمام کارها دارای گارانتی بازگشت وجه بدون محدودیت زمانی هستند.

4- بعد از انجام هر پروژه آماری فیلم آموزشی مخصوص به آن پروژه ضبط و تمام آزمون‌های انجام شده و نحوه ارائه آن‌ها شرح داده خواهد شد تا فرد بتواند به راحتی همه موضوعات انجام شده در پروژه خود را درک کند. ارزش فیلم آموزشی 400 هزار تومان می باشد که بطور رایگان همراه با پروژه ارائه خواهد شد.

5- برای هر پروژه آماری نیم ساعت وقت مشاوره اختصاصی به ارزش 300 هزار تومان اختصاص داده می شود تا رفع اشکالات احتمالی فرد بطور کامل انجام شود.

6- بابت رفع اشکالات احتمالی و پیشنهادهای استاد هزینه اضافه دریافت نمی‌شود.

7- تمام کارها توسط شخص اینجانب دکتر رسول محمدی انجام می شود.

8- داده سازی برای پروژه های آماری را غیر اخلاقی میدانم. لذا فقط پروژه هایی که دارای داده‌های واقعی باشند پذیرفته می شود.

9- در صورت نیاز، فایل دیتای ورودی و خروجی به نرم افزار همراه با مستندات کامل ارائه می شود.

10- نتایج در نرم افزار ورد، به فرمت پایان نامه یا مقاله و به فارسی ارائه می شود.

آموزش محاسبه آلفای کرونباخ در spss برای زیرمقیاس های پرسشنامه

در تحلیل آماری بسیاری از پرسشنامه ها زیرمقیاس‌های مختلفی دارند که علاوه بر محاسبه آلفای کرنباخ برای تمامی سوالات، لازم است آلفای کرنباخ را برای هریک از زیرمقیاس‌های آنها نیز محاسبه نمود. در اینجا قصد داریم به آموزش محاسبه آلفای کرونباخ در spss برای زیرمقیاس های پرسشنامه بپردازیم. در آغاز مثالی از یک پرسشنامه که دارای دو زیرمقیاس خوش بینی و امیدواری است ذکر می‌کنیم. با وب سایت چاپ مقاله اوج دانش همراه باشید.

برای انجام تحلیل آماری پایان نامه و مقاله کلیک کنید

فرض کنید پرسشنامه ‌ای دارای ۱۰ سوال با دو زیر مقیاس می‌باشد که هریک از زیرمقیاس‌های آن دارای ۵ سوال می‌باشد. توجه داشته باشید که برای محاسبه آلفای کرنباخ نیاز است تا هریک از سوالات به صورت تک به تک وارد نرم افزار spss شود. برای اینکار، در قسمت Variable View نرم افزار spss می‌توانید شماره یا تعداد سوالات را ذکر نمایید. در مثال فوق پرسشنامه‌ای با ۲۴ سوال وجود دارد که آنها را به شکل زیر به نرم افزار SPSS وارد نمودیم:

همانگونه که مشاهده می‌نمایید تمامی سوالات این پرسشنامه وارد نرم افزار SPSS شده و نمرات هریک نیز وارد شده‌اند. در این مثال فرض بر این است که سوالات ۱ تا ۵ مربوط به زیرمقیاس اول و سوالات ۶ تا ۱۰ مربوط به زیرمقیاس دوم است.

مرحله اول: به نرم افزار SPSS برگردید و این دستور را اجرا کنید:

آموزش محاسبه آلفای کرونباخ برای زیرمقیاس های پرسشنامه

با اجرای این دستور کادر زیر باز می‌شود که ۳ کادر دارد. کادر سمت چپ سوالات را نشان می‌دهند، کادر سمت راست که ما نمونه هایی از متغیرهای باینری در اینجا آن را کادر ۲ نامگذاری نموده‌ایم و کادر پایین که در اینجا کادر ۳ نام خواهد داشت:

آموزش محاسبه آلفای کرونباخ برای زیرمقیاس های پرسشنامه

آموزش محاسبه آلفای کرونباخ در spss برای زیرمقیاس های پرسشنامه

مرحله دوم، بعد از باز شدن کادر فوق اولین کاری که می‌بایست انجام دهید نامگذاری زیرمقیاس‌ها است. فرض کنید نام زیرمقیاس اول امید و نام زیرمقیاس دوم خودکارآمدی است. در کادر شماره ۳ (Scale Label) نام اولین زیرمقیاس را وارد نمایید. سپس سوالات مختص به آن زیرمقیاس را از کادر شماره ۱ انتخاب نموده و به کادر شماره ۲ (Items) وارد نمایید. در نهایت بعد از اجرای تمامی دستورالعمل‌های فوق شکل زیر می‌بایست نمایان شود:

آموزش محاسبه آلفای کرونباخ برای زیرمقیاس های پرسشنامه

آموزش محاسبه آلفای کرونباخ در spss برای زیرمقیاس های پرسشنامه

همانگونه که مشاهده می‌نمایید سوالات ۱ تا ۵ وارد کادر Items شده‌اند و هم اکنون داده‌ها آماده تحلیل می‌باشند.

مرحله سوم: سپس، دکمه Ok را کلیک نمایید. بعد از کلیک، خروجی‌های زیر بدست می‌آید:

آموزش محاسبه آلفای کرونباخ برای زیرمقیاس های پرسشنامه

در این خروجی، جدول اول تعداد افراد نمونه را نشان می‌دهد که ۱۲ نفر است. بدین معنی که ما در این پژوهش ۱۲ نفر آزمودنی داشته‌ایم. طبیعی است این عدد در پژوهش شما مساوی با تعداد نمونه‌های شما خواهد بود. جدول دوم (Reliability Statistics) مهمترین جدول می‌باشد، میزان آلفای کرونباخ را نشان داده است که برابر با ۰/۴۶ صدم می‌باشد. بنابراین، در این پرسشنامه آلفای کرنباخ زیرمقیاس امید برابر با ۰/۴۶ محاسبه گردید. با تکرار عملیات ذکر شده در مرحله دوم، آلفای کرنباخ زیرمقیاس دوم نیز بدست می‌آید.

شما می‌توانید نمونه هایی از متغیرهای باینری در مرحله دوم سوالات ۱ تا ۱۰ را به صورت کلی وارد نمایید تا آلفای کرونباخ کل پرسشنامه را نیز بدست آورید.

ارسال داده در PHP با متدهای POST و GET

آموزش post و get در PHP

در برنامه‌نویسی‌های تحت وب، کاربران و داده‌های آن‌ها بسیار مهم هستند. با روش‌های ارسال داده در PHP می‌توانیم اطلاعات مختلفی که از طریق فرم‌ها در صفحه وب از کاربر گرفته‌ایم را برای برنامه PHP بفرستیم. متد POST و متد GET اصلی‌ترین روش‌های ارسال اطلاعات هستند. در این آموزش کار با آن‌ها را یاد می‌گیریم.

در برنامه‌نویسی PHP با داده‌های مختلفی سر و کار داریم. یکی از اصلی‌ترین داده‌ها، اطلاعاتی است که از کاربر می‌گیریم. اکثراً این اطلاعات از طریق فرم‌های HTML که در طراحی وب ایجادشان کردیم برای ما (سرور ما) ارسال می‌شود.

فرض کنید یک فرم داریم که به واسطه آن نام و شماره موبایل کاربر را دریافت می‌کنم. می‌خواهیم پس از دریافت اطلاعات از کاربر، پیغام تشکر به او نشان دهیم. در حالت کلی برای ارسال داده در PHP دو روش داریم:

فرم مورد نظر ما دو فیلد به نام‌های name و mobile دارد. کد زیر یک فرم ساده را ایجاد می‌کند.

دو فایل برای این کار ایجاد می‌کنیم.

  • فایل index.php که حاوی کدهای فرم ثبت‌نام است.
  • فایل register.php که حاوی کدهای پردازش داده‌های ارسال‌شده و نمایش پیام تشکر خواهد بود.

کد بالا را در فایل index.php قرار داده و آن را در مرورگر خود باز می‌کنم. تصویر زیر، نمایش نمونه هایی از متغیرهای باینری فرم ثبت‌نام ماست.

فرم نمونه برای ثبت‌نام کاربر

فرم نمونه برای ثبت‌نام کاربر

همان‌طور که می‌بینید در تگ form دو ویژگی action و method تعریف شده است.

  • ویژگی action مقصد ارسال داده‌ها را مشخص می‌کند. این آدرس می‌تواند به صورت نسبی با یک آدرس کامل اینترنتی باشد. در این مثال، ما اطلاعات را به فایل register.php در کنار فایل اصلی خواهیم فرستادم.
  • همان‌طور که از نام ویژگی method (روش) پیداست، روش ارسال داده‌ها (post و get در php) را مشخص می‌کنیم.

آموزش ساخت فرم ورود با PHP

فهرست محتوای آموزش

متد POST

اولین روش برای ارسال داده‌ها در PHP استفاده از روش POST است. در این حالت تمام داده‌ها از طریق هدرهای HTTP (یا همان HTTP Requests ) برای مقصد ارسال می‌شود.

از نظر کاربری که وارد سایت شده و دانشی در مورد برنامه‌نویسی وب ندارد، اطلاعات به صورت مخفی و بدون اطلاع او ارسال خواهد شد.

در صفحه مقصد، اطلاعات ارسال شده در متغیر سراسری $_POST قرار خواهد گرفت. این متغیر یک نوع آرایه در PHP بوده که به صورت انجمنی ( Associative ) است.

اکشن و متد را مشابه کد زیر تعریف می‌کنم:

برای دسترسی به داده‌های ارسال شده از طریق این فرم در صفحه register.php از $_POST['name'] و $_POST['mobile'] استفاده می‌کنیم.

احتمالاً تا به اینجا حدس زده‌اید که برای نمایش نام و پیغام تشکر باید به چه صورت عمل کنیم! کد زیر پیغام تبریک را به کاربر نمایش می‌دهد.

در این قطعه کد و با استفاده از متغیر $_POST['name'] توانستیم نام کاربر را در متن پیام نمایش دهیم.

برای ثبت شماره موبایل یا نام کاربر در پایگاه داده، می‌توانید از روش‌های اتصال به دیتابیس نظیر MySQLi در PHP یا PDO در PHP استفاده کنید.

با استفاده از روش POST در PHP می‌توانید هر نوع داده‌ای ارسال کنید. فقط کافی است مقدار ویژگی method فرم خود را برابر post قرار دهید.

نتیجه ارسال درخواست متد POST

نتیجه ارسال درخواست متد POST

امنیت اطلاعات فرستاده شده با متد POST وابسته به امینت ارتباط HTTP است. یعنی اگر برای سایت خود از HTTPS استفاده کنیم، اطلاعات ارسال شده به صورت رمزنگاری‌شده و ایمن ارسال خواهد شد.

متد GET

روش دیگر ارسال داده در PHP متد GET است. در این روش تمام داده‌های ارسالی، به صورت پارامتری در URL به مقصد فرستاده می‌شود.

برای استفاده از این روش کافی است مقدار method در فرم ثبت‌نام را به get تغییر دهیم.

برای دسترسی به داده‌های ارسالی در مقصد از متغیر سراسری $_GET استفاده می‌کنیم. (بیشتر بدانید: متغیرهای سراسری PHP)

بنابراین برای دسترسی به مقادیر نام و شماره موبایل کاربر در این مثال، از متغیرهای $_GET['name'] و $_GET['mobile'] استفاده می‌کنم.

پس از تکمیل و ارسال فرم با روش GET، صفحه ثبت‌نام و پیغام خوش‌آمد گویی ظاهر خواهد شد.

نتیجه ارسال درخواست متد GET

نتیجه ارسال درخواست متد GET

اگر در تصویر بالا و آدرس صفحه دقت کنید، اطلاعاتی که در فرم وارد کرده بودم به صورت پارامتر در آدرس URL نمایش داده شده‌اند.

دوره جامع و رایگان آموزش PHP

نحوه عملکرد روش get

در حقیقت اگر سه مقدار مختلف را به روش get به آدرسی ارسال کنیم، چیزی شبیه زیر در نتیجه خواهیم داشت.

در انتهای آدرس مقصد (در این آدرس فایل sample.php ) علامت سوال ( ? ) آورده شده و پس از آن تک تک متغیرها به همراه مقادیرشان قرار گرفته‌اند.

هر متغیر با علامت «و» انگلیسی ( & ) از متغیر دیگر جدا و با علامت مساوی ( = ) با مقدار خود مرتبط می‌شود.

همان‌طور که می‌بینید در روش GET تمام داده‌ها (نام متغیر و مقدار آن) به صورت واضح به کاربر نمایش داده می‌شود. بنابراین اگر این اطلاعات برای شما مهم هستند، استفاده از روش GET در PHP چندان منطقی به نظر نرسد!

آموزش استفاده از AJAX در PHP با ۲ روش

تفاوت POST و GET در PHP

احتمالاً برای شما هم سوال شده که تا وقتی که متد POST هست چرا باید از متد GET استفاده کنیم ؟!

جواب این سوال از نظر فنی کمی پیچیده اما بیان آن بسیار ساده است! متناسب با نیازتان می‌توانید از هر دو روش استفاده کنید!

ویژگی‌های روش GET

  • اطلاعات به راحتی در URL قابل مشاهده هستند. واضح است که اگر کسی شبکه‌ی ارتباط کاربر با سایت را شنود کنید، می‌توانید به راحتی به این اطلاعات دست پیدا کند. در نتیجه امنیت کمتری دارد.
  • ارسال داده با متد GET سرعت بیشتری نسبت به روش POST دارد. بنابراین اگر در جایی صرفاً می‌خواهید یک داده‌ی کم‌ارزش و کوچک را ارسال کنید، احتمالاً GET روش مناسب‌تری خواهد بود.
  • در روش GET به دلیل اینکه باید داده‌ها را در URL ارسال کنید، با محدودیت ارسال اطلاعات مواجه خواهید شد. (محدودیت ارسال 2048 کاراکتر)
  • امکان ارسال فایل با این روش وجود ندارد.

ویژگی‌های POST

  • همان‌طور که گفته شد، اطلاعات از طریق سربرگ‌های درخواست HTTP ارسال می‌شود. پس به راحتی توسط کاربر قابل مشاهده نیست. (البته اگر فرد مانند شما یک حرفه‌ای باشد می‌تواند با بررسی HTTP Header ها، آن‌ها را مشاهده کند.)
  • ارسال داده با متد POST یک مقدار سرعت کمتری نسبت به روش GET دارد. دلیل آن هم تبدیل داده‌ها به هِدِر درخواست‌ها و بازگشایی آن‌هاست.
  • از آن‌جا که سربرگ‌های HTTP جزء داده‌های مهم هستند، اگر ارتباط سایت شما HTTPS باشد، این داده‌ها کدگذاری شده و توسط مهاجم (با شنود) قابل تشخیص نخواهد بود.
  • در ارسال اطلاعات با روش POST هیچ محدودیتی در حجم یا تعداد داده‌های ارسالی نخواهید داشت.
  • با متد POST می‌توان داده‌های باینری (نظیر عکس یا انواع فایل) را ارسال کرد. (مشابه آموزش آپلود فایل با PHP)

همان‌طور که می‌دانید می‌توانیم کدهای فرم ثبت‌نام و کدهای PHP که آن‌ها را اعتبارسنجی کرده و پیام تشکر را نمایش می‌دهد را در یک فایل قرار داده و مقدار action فرم را تعریف نکرده یا / بگذاریم. (برای دیدن مثالی از این روش، به کدهای این سایت خارجی توجه کنید.)

جمع‌بندی: متد POST و GET در PHP

در این آموزش روش‌های POST و GET برای ارسال داده در PHP را بررسی کردیم. با تعریف ویژگی method برای فرم HTML می‌توانیم نوع آن را یکی از این دو حالت تنظیم کنیم.

داده‌های ارسالی در صفحه مقصد درون یک آرایه انجمنی قرار می‌گیرند. متغیر این آرایه برای متد GET با $_GET و برای متد POST با $_POST شناخته می‌شود.

در متد get متغیر و مقدار آن درون URL قرار گرفته و قابل مشاهده است. اما در متد post، متغیرها و داده‌ها به صورت HTTP Header ارسال شده و از امنیت بیشتر (و شاید ظاهر بهتری) برخوردار خواهد بود.

بررسی ارسال فرم یا وجود POST و GET در PHP

متغیرهایی که برای دسترسی به داده‌های ارسالی استفاده می‌شوند یک آرایه هستند. با بررسی وجود اندیس مورد نظر در آن، می‌توانیم از وجود آن داده در دیتاهای ارسالی مطمئن شویم.

فرض کنید در مثال خودمان، کاربر فیلد «نام را تکمیل نکند» در این صورت با خطایی مشابه زیر برخورد خواهیم کرد.

خطای ارسال فیلد خالی در PHP

خطای ارسال فیلد خالی در PHP

برای جلوگیری از این مشکل، ابتدا وجود مقدار در متغیر name را با تابع empty() بررسی می‌کنیم؛ اگر خالی بود، به کاربر خطا نشان داده و در غیر این صورت پیام تشکر را نمایش می‌دهیم.

امیدوارم در این آموزش با نحوه استفاده و کاربردهای POST و GET در PHP به خوبی آشنا شده باشید. اگر سؤال یا تجربه‌ای دارید، از قسمت دیدگاه‌ها مطرح کنید.

در جلسه بعدی، یک مثال ساده اما کاربردی، از روش POST می‌بینیم. بعد از اینکه کار با دیتابیس را یاد گرفتیم، چند فرم PHP ایجاد می‌کنیم تا همه این روش‌ها را در عمل استفاده کنیم.

این آموزش بخشی از یک آموزش جامع و قدم به قدم در سبز دانش است: دوره رایگان آموزش PHP

این آموزش برای همیشه رایگانه! می‌تونید با اشتراک‌گذاری لینک این صفحه از ما حمایت کنید یا با خرید یه فنجون نوشیدنی بهمون انرژی بدید!



اشتراک گذاری

دیدگاه شما

اولین دیدگاه را شما ارسال نمایید.