பைஸ்பார்க் லாஜிஸ்டிக் பின்னடைவு

Paispark Lajistik Pinnataivu



இந்த PySpark வழிகாட்டியில், ஒரு நபர் பக்கவாதத்தால் பாதிக்கப்பட்டுள்ளாரா இல்லையா என்பதைக் கணிக்க லாஜிஸ்டிக் பின்னடைவை எவ்வாறு செய்வது என்பது பற்றி விவாதிப்போம். பொதுவாக, ஒருவர் புகைபிடிக்கும்/ குடிப்பழக்கத்திற்கு அடிமையாகும்போது பக்கவாதம் ஏற்படுகிறது. இதய நோய் மற்றும் இரத்தத்தில் அதிக குளுக்கோஸ் அளவு (நீரிழிவு) போன்ற பிற காரணங்களும் பக்கவாதத்தை ஏற்படுத்துகின்றன. லாஜிஸ்டிக் ரிக்ரஷன் மெஷின் லேர்னிங் மாதிரியின் உதவியுடன், மாதிரித் தரவில் எங்கள் மாதிரியின் துல்லியத்தைக் கணித்துக் காட்டுவோம்.

இந்த வழிகாட்டியில், முதலில் அணுகுமுறையைப் பார்ப்போம், பின்னர் ஒவ்வொரு நபரின் பக்கவாதத்தையும் படிப்படியாகத் தரவை பகுப்பாய்வு செய்வதன் மூலம் கணிப்போம்.

லாஜிஸ்டிக் பின்னடைவு

லாஜிஸ்டிக் பின்னடைவு, 'லாஜிட் மாடல்' என்றும் அழைக்கப்படுகிறது, இது வகைப்படுத்தல் சிக்கல்களுக்கான முன்கணிப்பு பகுப்பாய்வுகளில் பயன்படுத்தப்படுகிறது. இது ஒரு இயந்திர கற்றல் மாதிரி ஆகும், இது வகுப்புகளை (வகைகள்) வகைப்படுத்த வகைப்பாட்டில் மட்டுமே செயல்படுகிறது. எடுத்துக்காட்டாக, எங்கள் சூழ்நிலையில் இரண்டு பிரிவுகள் உள்ளன (பக்கவாதத்தால் பாதிக்கப்பட்டவர் மற்றும் பக்கவாதத்தால் பாதிக்கப்படாதவர்). மாதிரியின் சிறந்த பயன்பாடுகள் இதய நோய் கணிப்பு, பாலின முன்கணிப்பு, பயிர் வாழ்க்கை கணிப்பு போன்றவை.







படிகள்:

1. தரவு சேகரிப்பு: எந்தவொரு கணிப்பு/பகுப்பாய்வு செய்ய தரவு அவசியம். இது மற்றவற்றுடன் CSV/XLSX வடிவத்தில் இருக்கலாம். இதை spark.read.csv() முறையைப் பயன்படுத்தி ஸ்பார்க் சூழலில் (DataFrame) ஏற்றலாம்.



2. தரவு பகுப்பாய்வு : பண்புக்கூறுகள்/நெடுவரிசைகளை பகுப்பாய்வு செய்வது 'தரவு பகுப்பாய்வு' என்று அழைக்கப்படுகிறது. வகுப்பைக் கணிக்க உதவும் நெடுவரிசைகள் 'சுயாதீனமான பண்புக்கூறுகள்' என்று அழைக்கப்படுகின்றன. கணிப்பில் விளையும் நெடுவரிசை 'சார்பு அல்லது இலக்கு பண்பு' என அழைக்கப்படுகிறது. இந்த சூழ்நிலையில், அனைத்து நெடுவரிசைகளையும் காட்ட, நெடுவரிசைகளின் பண்புகளைப் பயன்படுத்தலாம். தனித்துவமான மதிப்புகளைக் காண தனித்துவமான() முறை பயன்படுத்தப்படுகிறது.



3. தரவு முன் செயலாக்கம்: பூஜ்ய / விடுபட்ட மதிப்புகளை வடிகட்டுவது 'முன்செயலாக்கம்' என்று அழைக்கப்படுகிறது. இந்த கட்டத்தில் விடுபட்ட அனைத்து மதிப்புகளையும் அகற்றுவோம். இயந்திரத்திற்கு பைனரி மொழி மட்டுமே தெரியும். எனவே, அனைத்து சர வகைகளும் எண் வகை மதிப்புகளாக மாற்றப்பட வேண்டும். PySpark இல், சரம் வகைகளை எண்களாக மாற்ற pyspark.ml.feature module இல் கிடைக்கும் வகுப்பான “StringIndexer” ஐப் பயன்படுத்தலாம். இது தானாகவே அவற்றை உள்நாட்டில் மாற்றுகிறது. நாம் மதிப்புகளை வழங்க வேண்டியதில்லை. நீங்கள் பின்வரும் தொடரியல் பயன்படுத்தலாம்:





indexer_data=StringIndexer(inputCol= 'Sring_Category_ColumnName' ,outputCol= 'புதிய_நெடுவரிசை_பெயர்' )

4. திசையன் அசெம்பிளிங்: இப்போது, ​​இயந்திரம் புரிந்துகொள்ளக்கூடிய தரவு உங்களிடம் உள்ளது. இந்த கட்டத்தில், அனைத்து சுயாதீன பண்புக்கூறுகளும் ஒற்றை நெடுவரிசையில் வெக்டரைஸ் செய்யப்பட வேண்டும். VectorAssembler வகுப்பைப் பயன்படுத்தி இதைச் செய்யலாம். இது இரண்டு அளவுருக்களை எடுக்கும்: முதல் அளவுரு, இன்புட்கோல்ஸ் ஆகும், இது சுயாதீன பண்புகளின் பட்டியலை எடுக்கும். இரண்டாவது அளவுரு அவுட்புட்கோல் ஆகும், இது இந்த மாறியில் அனைத்து உள்ளீடுகோல்களையும் வெக்டரைஸ் செய்கிறது.

assembler=VectorAssembler(inputCols=[columns...],outputCol=vectorized_data)

5. மாற்றம்: இப்போது, ​​மாற்றம்() செயல்பாட்டைப் பயன்படுத்தி புதுப்பிக்கப்பட்ட நெடுவரிசைகளை (படி 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).predictions

8. துல்லியம் மற்றும் முடிவுகள்: எந்தவொரு சோதனை நுட்பங்களையும் பயன்படுத்தி மாதிரி துல்லியத்தை நாங்கள் சோதிக்கும் இறுதி நிலை இதுவாகும்.

ஒரு நபர் பக்கவாதத்தால் பாதிக்கப்படுகிறாரா அல்லது லாஜிஸ்டிக் ரிக்ரஷன் மாதிரியைப் பயன்படுத்தவில்லையா என்பதை நாம் கணிக்கும் பின்வரும் திட்டத்தைப் பார்ப்போம்.

பக்கவாதம் கணிப்பு

9. உங்கள் சூழலில் PySpark தொகுதியை நிறுவவும். நிறுவுவதற்கான கட்டளை பின்வருமாறு:

pip நிறுவ pyspark

10. 10 நபர்களின் பக்கவாதம் விவரங்களுடன் தொடர்புடைய 10 பதிவுகளுடன் PySpark DataFrame ஐ உருவாக்குவோம். ஆர்ப்பாட்டத்திற்காக, CSV இல்லாமல் DataFrame ஐ உருவாக்குகிறோம். இந்த DataFrameல் 7 நெடுவரிசைகள் உள்ளன. 'பாலினம்', 'குளுக்கோஸ்_நிலை', 'திருமணமானவர்', 'வயது', 'இதய_நோய்', 'உயர்_அழுத்தம்' ஆகியவை சுயாதீனமான பண்புக்கூறுகள் மற்றும் 'பக்கவாதம்' என்பது வகுப்பு லேபிள் அல்லது சார்பு பண்பு ஆகும். அதாவது ஒரு நபரின் பக்கவாதம் இந்த சுயாதீனமான பண்புகளை சார்ந்துள்ளது.

பைஸ்பார்க் இறக்குமதி

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[ 'பாலினம்' ], stroke_df[ 'குளுக்கோஸ்_நிலை' ], stroke_df[ 'திருமணமான' ], stroke_df[ 'வயது' ], stroke_df[ 'இருதய நோய்' ], stroke_df[ 'உயர் பதற்றம்' ]).show()

வெளியீடு:

12. இலக்கு பண்புக்கூறில் (ஸ்ட்ரோக்) இருக்கும் தனித்துவமான மதிப்புகளைக் காட்டவும்.

# இலக்கு பண்பு தனித்துவமான மதிப்புகள்

stroke_df.select(stroke_df[ 'பக்கவாதம்' ]).வித்தியாசமான().show()

வெளியீடு:

13. printSchema() செயல்பாட்டைப் பயன்படுத்தி அனைத்து நெடுவரிசைகளின் தரவு வகையைத் திருப்பி அனுப்பவும்.

# அனைத்து நெடுவரிசைகளின் தரவு வகையைத் திரும்பவும்.

stroke_df.printSchema()

வெளியீடு:

4 நெடுவரிசைகள் சரம் வகையாக இருப்பதைக் காணலாம். அவற்றை வகைப்படுத்தப்பட்ட எண் மதிப்புகளாக மாற்றுவோம்.

14. 'பாலினம்', 'இதய_நோய்', 'அதிக_அழுத்தம்', மற்றும் 'திருமணமான' நெடுவரிசைகளில் உள்ள StringIndexer ஐப் பயன்படுத்தி, சரம் வகைப்படுத்தப்பட்ட மதிப்புகளை எண் வகை மதிப்புகளாக மாற்றுவோம், மேலும் இவற்றை Categotical_Gender, Categotical_heart_disease, Categotical_heart_disease_ Categotical_heart_disease_ Categotical_heart_disease ஃபிட்() முறையைப் பயன்படுத்தி நெடுவரிசைகளை அட்டவணைப்படுத்தப்பட்ட_டேட்டா டேட்டா ஃப்ரேமில் சேமிக்கவும்.

pyspark.ml.feature import 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 இலிருந்து

assembler= VectorAssembler(inputCols=[ 'வகையான_பாலினம்' , 'வகையான_இதய_நோய்' , 'Categotical_hyper_tension' , 'Categotical_married' , 'வயது' ,

'குளுக்கோஸ்_நிலை' ],outputCol= 'அம்சங்கள்' )

16. Transform() செயல்பாட்டைப் பயன்படுத்தி முந்தைய தரவை இறுதி DataFrame ஆக மாற்றவும் மற்றும் show() செயல்பாட்டைப் பயன்படுத்தி அதைக் காண்பிக்கவும்.

வெளியீடு:

17. பயிற்சி மற்றும் சோதனைக்கான தரவை 70-30 ஆக பிரித்து தயார் செய்யவும். 'அம்சங்கள்' ரயில்_தரவில் சேமிக்கப்படும் மற்றும் 'ஸ்ட்ரோக்' டெஸ்ட்_டேட்டாவில் சேமிக்கப்படும்.

# பயிற்சி மற்றும் சோதனைக்கான தரவைத் தயாரிக்கவும்

train_data, test_data=final.select([ 'அம்சங்கள்' , 'பக்கவாதம்' ]).ரேண்டம்ஸ்பிளிட்([ 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).predictions

train_results.show()

வெளியீடு:

19. மாதிரி துல்லியத்தை சரிபார்க்க பைனரி கிளாசிஃபிகேஷன் மதிப்பீட்டாளரைப் பயன்படுத்தவும். எங்கள் மாதிரி 100% துல்லியமாக இருப்பதைக் காணலாம்.

pyspark.ml.evaluation import BinaryClassificationEvaluator இலிருந்து

# பைனரி கிளாசிஃபிகேஷன் மதிப்பீட்டாளரை அழைக்கவும்

முடிவுகள் = BinaryClassificationEvaluator(rawPredictionCol= 'கணிப்பு' ,labelCol= 'பக்கவாதம்' )

ROC_AUC = results.evaluate(train_results)

அச்சு (ROC_AUC * 100 , '% துல்லியம்' )

முடிவுரை

பைஸ்பார்க்கில் உள்ள லாஜிஸ்டிக் ரிக்ரஷன் மாதிரியைப் பயன்படுத்தி நீங்கள் உண்மையான-டைல் வகைப்பாடு சிக்கலைக் கணிக்க முடியும். பூஜ்ய/விடுபட்ட மதிப்புகளை நீக்குவது முக்கியம், ஏனெனில் அவை மாதிரி மதிப்பீடு மற்றும் துல்லியத்தைக் குறைக்கின்றன. எந்த இயந்திரக் கற்றல் மாதிரியையும் பொருத்துவதற்கு முன், முன் செயலாக்கம் அவசியமான படியாகும். இந்த படிநிலையை நீங்கள் சரியாகவும் துல்லியமாகவும் செய்கிறீர்கள் என்பதை உறுதிப்படுத்தவும்.