پی اسپارک لاجسٹک ریگریشن

Py Aspark Lajs K Rygryshn



اس PySpark گائیڈ میں، ہم اس بات پر تبادلہ خیال کریں گے کہ لاجسٹک ریگریشن کو کیسے انجام دیا جائے تاکہ یہ اندازہ لگایا جا سکے کہ آیا کوئی شخص فالج سے متاثر ہوا ہے یا نہیں۔ عام طور پر، فالج اس وقت ہوتا ہے جب کوئی شخص سگریٹ نوشی/شراب کا عادی ہوتا ہے۔ دیگر وجوہات جیسے دل کی بیماری اور خون میں گلوکوز کی زیادہ مقدار (ذیابیطس) بھی فالج کا سبب بنتی ہے۔ لاجسٹک ریگریشن مشین لرننگ ماڈل کی مدد سے، ہم نمونے کے ڈیٹا پر اپنے ماڈل کی درستگی کی پیشین گوئی اور دکھائیں گے۔

اس گائیڈ میں، ہم پہلے اپروچ دیکھیں گے اور پھر مرحلہ وار ڈیٹا کا تجزیہ کرکے ہر شخص کے فالج کی پیشین گوئی کریں گے۔

لاجسٹک ریگریشن

لاجسٹک ریگریشن، جسے 'لاجٹ ماڈل' بھی کہا جاتا ہے، درجہ بندی کے مسائل کے لیے پیش گوئی کرنے والے تجزیات میں استعمال ہوتا ہے۔ یہ ایک مشین لرننگ ماڈل ہے جو کلاسز (زمرے) کی درجہ بندی کرنے کے لیے صرف درجہ بندی پر کام کرتا ہے۔ مثال کے طور پر، ہمارے منظر نامے میں دو قسمیں ہیں (ایک شخص جو فالج سے متاثر ہے اور وہ شخص جو فالج سے متاثر نہیں ہے)۔ ماڈل کی بہترین ایپلی کیشنز دل کی بیماری کی پیشن گوئی، جنس کی پیشن گوئی، فصل کی زندگی کی پیشن گوئی، وغیرہ ہیں۔







مراحل:

1. ڈیٹا اکٹھا کرنا: کسی بھی پیشین گوئی/تجزیہ کو انجام دینے کے لیے ڈیٹا ضروری ہے۔ یہ دوسروں کے درمیان CSV/XLSX کی شکل میں ہو سکتا ہے۔ ہم اسے spark.read.csv() طریقہ استعمال کرکے اسپارک ماحول (DataFrame) میں لوڈ کرسکتے ہیں۔



2. ڈیٹا کا تجزیہ : صفات/کالموں کا تجزیہ کرنا 'ڈیٹا تجزیہ' کے نام سے جانا جاتا ہے۔ کالم جو کلاس کی پیشین گوئی کرنے میں مدد کرتے ہیں انہیں 'آزاد صفات' کے نام سے جانا جاتا ہے۔ کالم جس کے نتیجے میں پیشین گوئی ہوتی ہے اسے 'انحصار یا ہدف وصف' کہا جاتا ہے۔ اس منظر نامے میں، ہم تمام کالموں کو ظاہر کرنے کے لیے کالم پراپرٹی استعمال کر سکتے ہیں۔ distinct() طریقہ منفرد اقدار کو دیکھنے کے لیے استعمال کیا جاتا ہے۔



3. ڈیٹا پری پروسیسنگ: کالعدم/گم شدہ اقدار کو فلٹر کرنا 'پری پروسیسنگ' کے نام سے جانا جاتا ہے۔ ہم اس مرحلے میں تمام گمشدہ اقدار کو ہٹا دیتے ہیں۔ مشین صرف بائنری زبان جانتی ہے۔ لہذا، تمام سٹرنگ کیٹیگریز کو عددی زمرہ کی قدروں میں تبدیل کیا جانا چاہیے۔ PySpark میں، ہم 'StringIndexer' استعمال کر سکتے ہیں جو pyspark.ml.feature ماڈیول میں دستیاب کلاس ہے تاکہ سٹرنگ کیٹیگریز کو عددی میں تبدیل کیا جا سکے۔ یہ خود بخود انہیں اندرونی طور پر تبدیل کرتا ہے۔ ہمیں اقدار فراہم کرنے کی ضرورت نہیں ہے۔ آپ درج ذیل نحو استعمال کر سکتے ہیں:





indexer_data=StringIndexer(inputCol= 'String_Category_columnName' ,outputCol= 'نیا_کالم_نام' )

4. ویکٹر اسمبلنگ: اب، آپ کے پاس وہ ڈیٹا ہے جسے مشین سمجھ سکتی ہے۔ اس مرحلے میں، تمام آزاد صفات کو ایک کالم میں ویکٹرائز کیا جانا چاہیے۔ یہ VectorAssembler کلاس کا استعمال کرتے ہوئے کیا جا سکتا ہے۔ یہ دو پیرامیٹرز لیتا ہے: پہلا پیرامیٹر inputCols ہے جو آزاد صفات کی فہرست لیتا ہے۔ دوسرا پیرامیٹر آؤٹ پٹ کول ہے جو اس متغیر میں تمام ان پٹ کولز کو ویکٹرائز کرتا ہے۔

جمع کرنے والا=VectorAssembler(inputCols=[columns…],outputCol=vectorized_data)

5. تبدیلی: اب، transform() فنکشن کا استعمال کرتے ہوئے اپ ڈیٹ شدہ کالمز (مرحلہ 3) کو تبدیل کرکے اپنا ڈیٹا تیار کریں۔



assembler.transform(inxed_data)

6. تربیت اور جانچ کے لیے ڈیٹا کی تیاری: اس مرحلے میں، ہم ڈیٹا کو 'ٹریننگ' اور 'ٹیسٹنگ' میں تقسیم کرتے ہیں۔ بہتر ہو گا کہ ہم ماڈل کو تربیت دینے کے لیے 70% ڈیٹا اور ماڈل کو ٹیسٹ کرنے کے لیے 30% ڈیٹا تقسیم کریں۔ یہ randomSplit() طریقہ استعمال کرکے حاصل کیا جاسکتا ہے۔ یہ ایک فہرست لیتا ہے جس میں دو فلوٹ اقدار ہیں: ایک ٹیسٹ اسپلٹ کے لیے اور دوسری ٹرین کی تقسیم کے لیے۔

train_data,test_data=final_data.select([ 'خصوصیات' ,target_column]).randomSplit([0.70.0.30])

7. ماڈل فٹنگ اور تشخیص : یہ لاجسٹک ریگریشن ماڈل کو فٹ کرنے کا وقت ہے۔ لاجسٹک ریگریشن ماڈل pyspark.ml.classification ماڈیول میں دستیاب ہے۔ یہ کلاس لیبل/ٹارگٹ کالم لیتا ہے۔ اس کے نتیجے میں خام پیش گوئی، امکان، اور پیشین گوئی کے کالم ہوتے ہیں۔ ہمارے نتائج پیشین گوئی کے کالم میں محفوظ ہیں۔

# ماڈل فٹنگ

logistic_regression_model=LogisticRegression(labelCol=target_column).fit(train_data)

# ماڈل کی تشخیص

train_results=logistic_regression_model.evaluate(train_data)۔پیش گوئیاں

8. درستگی اور نتائج: یہ آخری مرحلہ ہے جہاں ہم کسی بھی جانچ کی تکنیک کا استعمال کرتے ہوئے ماڈل کی درستگی کی جانچ کرتے ہیں۔

آئیے مندرجہ ذیل پروجیکٹ کو دیکھتے ہیں جہاں ہم پیش گوئی کرتے ہیں کہ آیا کوئی شخص فالج سے متاثر ہے یا لاجسٹک ریگریشن ماڈل استعمال نہیں کر رہا ہے۔

فالج کی پیشن گوئی

9. اپنے ماحول میں PySpark ماڈیول انسٹال کریں۔ انسٹال کرنے کا حکم درج ذیل ہے:

pip انسٹال pyspark

10. آئیے 10 ریکارڈوں کے ساتھ ایک PySpark ڈیٹا فریم بنائیں جو 10 افراد کے فالج کی تفصیلات سے متعلق ہیں۔ مظاہرے کے لیے، ہم CSV کے بغیر ڈیٹا فریم بناتے ہیں۔ اس ڈیٹا فریم میں 7 کالم ہیں۔ 'جنس'، 'گلوکوز_لیول'، 'شادی شدہ'، 'عمر'، 'دل کی_ بیماری'، 'ہائپر_ٹینشن' آزاد صفات ہیں اور 'فالج' کلاس لیبل یا منحصر وصف ہے۔ اس کا مطلب یہ ہے کہ کسی شخص کا فالج ان آزاد صفات پر منحصر ہے۔

pyspark درآمد کریں۔

pyspark.sql سے SparkSession درآمد کریں۔

linuxhint_spark_app = SparkSession.builder.appName( 'لینکس اشارہ' .getOrCreate()

سٹوک_ڈیٹا =[

{ 'صنف' : 'عورت' , 'عمر' : پچاس , 'دل کی بیماری' : 'جی ہاں' ,

'ہائیپر_ٹینشن' : 'جی ہاں' , 'شادی شدہ' : 'جی ہاں' , 'گلوکوز_لیول' : 130 , 'اسٹروک' : 1

{ 'صنف' : 'مرد' , 'عمر' : بیس , 'دل کی بیماری' : 'نہیں' ,

'ہائیپر_ٹینشن' : 'جی ہاں' , 'شادی شدہ' : 'نہیں' , 'گلوکوز_لیول' : 97 , 'اسٹروک' : 0

{ 'صنف' : 'مرد' , 'عمر' : 12 , 'دل کی بیماری' : 'نہیں' ,

'ہائیپر_ٹینشن' : 'نہیں' , 'شادی شدہ' : 'نہیں' , 'گلوکوز_لیول' : 98 , 'اسٹروک' : 0

{ 'صنف' : 'عورت' , 'عمر' : 90 , 'دل کی بیماری' : 'نہیں' ,

'ہائیپر_ٹینشن' : 'نہیں' , 'شادی شدہ' : 'جی ہاں' , 'گلوکوز_لیول' : 170 , 'اسٹروک' : 1

{ 'صنف' : 'مرد' , 'عمر' : 43 , 'دل کی بیماری' : 'جی ہاں' ,

'ہائیپر_ٹینشن' : 'جی ہاں' , 'شادی شدہ' : 'جی ہاں' , 'گلوکوز_لیول' : 150 , 'اسٹروک' : 1

{ 'صنف' : 'عورت' , 'عمر' : اکیس , 'دل کی بیماری' : 'نہیں' ,

'ہائیپر_ٹینشن' : 'نہیں' , 'شادی شدہ' : 'جی ہاں' , 'گلوکوز_لیول' : 110 , 'اسٹروک' : 0

{ 'صنف' : 'عورت' , 'عمر' : پچاس , 'دل کی بیماری' : 'جی ہاں' ,

'ہائیپر_ٹینشن' : 'نہیں' , 'شادی شدہ' : 'جی ہاں' , 'گلوکوز_لیول' : 100 , 'اسٹروک' : 0

{ 'صنف' : 'مرد' , 'عمر' : 3. 4 , 'دل کی بیماری' : 'نہیں' ,

'ہائیپر_ٹینشن' : 'جی ہاں' , 'شادی شدہ' : 'جی ہاں' , 'گلوکوز_لیول' : 190 , 'اسٹروک' : 1

{ 'صنف' : 'مرد' , 'عمر' : 10 , 'دل کی بیماری' : 'نہیں' ,

'ہائیپر_ٹینشن' : 'نہیں' , 'شادی شدہ' : 'نہیں' , 'گلوکوز_لیول' : 90 , 'اسٹروک' : 0

{ 'صنف' : 'عورت' , 'عمر' : 56 , 'دل کی بیماری' : 'جی ہاں' ,

'ہائیپر_ٹینشن' : 'جی ہاں' , 'شادی شدہ' : 'جی ہاں' , 'گلوکوز_لیول' : 145 , 'اسٹروک' : 1 }

]

# اوپر والے ڈیٹا سے ڈیٹا فریم بنائیں

stroke_df = linuxhint_spark_app.createDataFrame(stoke_data)

# اصل سٹوک_ڈی ایف

stroke_df.show()

آؤٹ پٹ:

11. سلیکٹ() طریقہ استعمال کرتے ہوئے آزاد کالم ڈسپلے کریں۔

# آزاد صفات دکھائیں۔

stroke_df.select(stroke_df[ 'صنف' ]،سٹروک_ڈی ایف[ 'گلوکوز_لیول' ]،سٹروک_ڈی ایف[ 'شادی شدہ' ]،سٹروک_ڈی ایف[ 'عمر' ]،سٹروک_ڈی ایف[ 'دل کی بیماری' ]،سٹروک_ڈی ایف[ 'ہائیپر_ٹینشن' ]) شو()

آؤٹ پٹ:

12. ان منفرد قدروں کو دکھائیں جو ہدف وصف (اسٹروک) میں موجود ہیں۔

# ہدف کی خصوصیت کی منفرد اقدار

stroke_df.select(stroke_df[ 'اسٹروک' ]).distinct().show()

آؤٹ پٹ:

13. printSchema() فنکشن کا استعمال کرتے ہوئے تمام کالموں کی ڈیٹا ٹائپ واپس کریں۔

# تمام کالموں کا ڈیٹا ٹائپ واپس کریں۔

stroke_df.printSchema()

آؤٹ پٹ:

ہم دیکھ سکتے ہیں کہ 4 کالم سٹرنگ قسم کے ہیں۔ آئیے انہیں واضح عددی اقدار میں تبدیل کرتے ہیں۔

14. آئیے 'صنف'، 'دل کی_بیماری'، 'ہائپر_ٹینشن'، اور 'شادی شدہ' کالموں میں سٹرنگ انڈیکسر کا استعمال کرتے ہوئے سٹرنگ کی زمرہ وار اقدار کو عددی درجہ بندی کی اقدار میں تبدیل کریں اور انہیں زمرہ_جنس، زمرہ_دل_بیماری، Categotical_heart_disease، Categotical_mary_tension، Categotical_heart_disease میں لکھیں۔ کالموں کو fit() طریقہ استعمال کرکے indexed_data ڈیٹا فریم میں اسٹور کریں۔

pyspark.ml.feature درآمد StringIndexer سے

# 'صنف' کالم میں سٹرنگ کی زمرہ وار اقدار کو عددی زمرہ دار اقدار میں تبدیل کریں۔

indexer_data=StringIndexer(inputCol= 'صنف' ,outputCol= 'کیٹیگوٹیکل_جنس' )

indexed_data=indexer_data.fit(stroke_df).transform(stroke_df)

# 'دل کی_بیماری' کالم میں سٹرنگ کی زمرہ وار اقدار کو عددی زمرہ دار اقدار میں تبدیل کریں۔

indexer_data=StringIndexer(inputCol= 'دل کی بیماری' ,outputCol= 'طبی_دل کی_بیماری' )

indexed_data=indexer_data.fit(indexed_data).transform(indexed_data)

# 'ہائپر_ٹینشن' کالم میں سٹرنگ کی کیٹیگریل اقدار کو عددی زمرہ کی قدروں میں تبدیل کریں۔

indexer_data=StringIndexer(inputCol= 'ہائیپر_ٹینشن' ,outputCol= 'Categotical_hyper_tension' )

indexed_data=indexer_data.fit(indexed_data).transform(indexed_data)

# 'شادی شدہ' کالم میں سٹرنگ کی زمرہ دار اقدار کو عددی زمرہ دار اقدار میں تبدیل کریں۔

indexer_data=StringIndexer(inputCol= 'شادی شدہ' ,outputCol= 'Categotical_married' )

indexed_data=indexer_data.fit(indexed_data).transform(indexed_data)

# اپ ڈیٹ ڈسپلے کریں۔

indexed_data.show()

آؤٹ پٹ:

15. ویکٹر اسمبلر کا استعمال کرتے ہوئے آزاد کالموں کو ویکٹر میں تبدیل کریں۔ ویکٹر کا نام 'خصوصیات' ہے۔

pyspark.ml.feature درآمد VectorAssembler سے

جمع کرنے والا= ویکٹر جمع کرنے والا(inputCols=[ 'کیٹیگوٹیکل_جنس' , 'طبی_دل کی_بیماری' , 'Categotical_hyper_tension' , 'Categotical_married' , 'عمر' ,

'گلوکوز_لیول' ]،آؤٹ پٹ کول= 'خصوصیات' )

16. ٹرانسفارم() فنکشن کا استعمال کرتے ہوئے پچھلے ڈیٹا کو فائنل ڈیٹا فریم میں تبدیل کریں اور show() فنکشن کا استعمال کرکے ڈسپلے کریں۔

آؤٹ پٹ:

17. تربیت اور جانچ کے لیے ڈیٹا کو 70-30 میں تقسیم کرکے تیار کریں۔ 'خصوصیات' کو ٹرین_ڈیٹا میں اور 'اسٹروک' کو ٹیسٹ_ڈیٹا میں محفوظ کیا جاتا ہے۔

# تربیت اور جانچ کے لیے ڈیٹا تیار کریں۔

train_data,test_data=final.select([ 'خصوصیات' , 'اسٹروک' ]) randomSplit([ 0.70 , 0.30 ])

18. لاجسٹک ریگریشن ماڈل کو فٹ کریں اور اس کا جائزہ لیں۔

pyspark.ml.classification درآمد LogisticRegression سے

# ماڈل فٹنگ

logistic_regression_model=LogisticRegression(labelCol= 'اسٹروک' .fit(train_data)

# ماڈل کی تشخیص

train_results=logistic_regression_model.evaluate(train_data)۔پیش گوئیاں

train_results.show()

آؤٹ پٹ:

19. ماڈل کی درستگی کو جانچنے کے لیے BinaryClassificationEvaluator کا استعمال کریں۔ ہم دیکھ سکتے ہیں کہ ہمارا ماڈل 100% درست ہے۔

pyspark.ml.evaluation درآمد BinaryClassificationEvaluator سے

# BinaryClassification Evaluator کو کال کریں۔

نتائج = Binaryclassification Evaluator(rawPredictionCol= 'پیشن گوئی' ,labelCol= 'اسٹروک' )

ROC_AUC = results.evaluate(train_results)

پرنٹ (ROC_AUC * 100 , '٪ درستگی' )

نتیجہ

آپ PySpark میں لاجسٹک ریگریشن ماڈل کا استعمال کرتے ہوئے حقیقی ٹائل کی درجہ بندی کے مسئلے کی پیش گوئی کرنے کے قابل ہیں۔ کالعدم/غائب اقدار کو ہٹانا ضروری ہے کیونکہ وہ ماڈل کی تشخیص اور درستگی کو کم کرتے ہیں۔ کسی بھی مشین لرننگ ماڈل کو فٹ کرنے سے پہلے پری پروسیسنگ ایک ضروری قدم ہے۔ اس بات کو یقینی بنائیں کہ آپ اس قدم کو صحیح اور درست طریقے سے کرتے ہیں۔