কম্পিউটার

পাইথনে জালিয়াতি সনাক্তকরণ


জালিয়াতি সত্যিই অনেক লেনদেন হয়. আমরা মেশিন লার্নিং অ্যালগরিদম প্রয়োগ করতে পারি অতীতের ডেটা মিথ্যা বলার জন্য এবং একটি লেনদেন একটি জালিয়াতি লেনদেন হওয়ার সম্ভাবনার ভবিষ্যদ্বাণী করতে পারি। আমাদের উদাহরণে আমরা ক্রেডিট কার্ডের লেনদেন নেব, ডেটা বিশ্লেষণ করব, বৈশিষ্ট্য এবং লেবেল তৈরি করব এবং অবশেষে লেনদেনের প্রকৃতি জালিয়াতি হচ্ছে বা না তা বিচার করতে ML অ্যালগরিদমগুলির একটি প্রয়োগ করব। তারপর আমরা যে মডেলটি বেছে নিয়েছি তার নির্ভুলতা, নির্ভুলতা এবং এফ-স্কোর খুঁজে বের করব।

ডেটা প্রস্তুত করা হচ্ছে

এই ধাপে আমরা সোর্স ডেটা পড়ি, এতে উপস্থিত ভেরিয়েবলগুলি অধ্যয়ন করি এবং কিছু নমুনা ডেটার দিকে নজর রাখি। এটি আমাদের ডেটা সেটে উপস্থিত বিভিন্ন কলামগুলি জানতে এবং তাদের বৈশিষ্ট্যগুলি অধ্যয়ন করতে সহায়তা করবে। আমরা ডাটা ফ্রেম তৈরি করতে পান্ডাস ইজ লাইব্রেরি ব্যবহার করব যা পরবর্তী ধাপে ব্যবহার করা হবে।

উদাহরণ

pd হিসেবে পান্ডা আমদানি করুন#pandasdatainput =pd.read_csv('E:\\creditcard.csv')#https://www.kaggle.com/mlg-ulb/creditcardfraud# ব্যবহার করে creditcard.csv লোড করুন শীর্ষে প্রিন্ট করুন 5টি রেকর্ডপ্রিন্ট(datainput[0:5],"\n")# ডেটাসেট প্রিন্টের সম্পূর্ণ আকৃতি প্রিন্ট করুন("সম্পূর্ণ ডেটা সেটের আকৃতি") প্রিন্ট(datainput.shape,"\n")

আউটপুট

উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -

 সময় V1 থেকে V2 V3 ... V27 V28 পরিমাণ Class0 0.0 -1.359807 -0.072781 2.536347 ... 0,133558 -0,021053 149,62 01 0,0 1,191857 0,266151 0,166480 ... -0,008983 0,014724 2,69 02 1,0 -1,358354 -1,340163 1,773209 ... - 0.055353 -0,059752 378,66 03 1,0 -0,966272 -0,185226 1,792993 ... 0,062723 0,061458 123,50 04 2,0 -1,158233 0,877737 1,548718 ... 0.219422 0.215153 69.99 0 [5 সারি x 31 কলাম] সম্পূর্ণ ডেটা সেট এর আকৃতি (284807, 31) 

ডেটাতে ভারসাম্যহীনতা পরীক্ষা করা হচ্ছে

এখন আমরা প্রতারণামূলক এবং প্রকৃত লেনদেনের মধ্যে ডেটা কীভাবে বিতরণ করা হয় তা পরীক্ষা করি। এটি আমাদের ধারণা দেয় যে কত শতাংশ ডেটা জালিয়াতি হতে পারে। এমএল অ্যালগরিদমে এটি ডেটা ভারসাম্যহীনতা হিসাবে উল্লেখ করা হয়। যদি বেশিরভাগ লেনদেন জালিয়াতি না হয় তবে কয়েকটি লেনদেন আসল বা না তা বিচার করা কঠিন হয়ে পড়ে। লেনদেনে প্রতারণামূলক ইঞ্জিনের সংখ্যা গণনা করার জন্য আমরা ক্লাস কলাম ব্যবহার করি এবং তারপরে প্রতারণামূলক লেনদেনের প্রকৃত শতাংশ বের করি।

উদাহরণ

pd# হিসেবে পান্ডা আমদানি করুন 'ক্লাস'] ==0]n =len(false)/float(len(true))print(n)print('False Detection Cases:{}'.format(len(datainput[datainput['Class'] ==1])))প্রিন্ট('ট্রু ডিটেকশন কেস:{}'.ফর্ম্যাট(লেন(ডেটাইনপুট[ডেটাইনপুট['ক্লাস'] ==0])),"\n")

আউটপুট

উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -

0.0017304750013189597 মিথ্যা শনাক্তকরণ মামলা:492 সত্য সনাক্তকরণ মামলা:284315

লেনদেনের প্রকারের বিশদ বিবরণ

আমরা প্রতারণামূলক এবং অ-প্রতারণামূলক লেনদেনের প্রতিটি বিভাগের জন্য লেনদেনের প্রকৃতি সম্পর্কে আরও তদন্ত করি। আমরা পরিসংখ্যানগতভাবে বিভিন্ন পরামিতি অনুমান করার চেষ্টা করি যেমন গড় মান বিচ্যুতি সর্বাধিক মান সর্বনিম্ন মান এবং বিভিন্ন শতাংশ। এটি বর্ণিত পদ্ধতি ব্যবহার করে অর্জন করা হয়।

উদাহরণ

pd হিসেবে পান্ডা আমদানি করুন#pandasdatainput =pd.read_csv('E:\\creditcard.csv') ব্যবহার করে creditcard.csv লোড করুন# datafalse =datainput[datainput['Class'] ==1]সত্য =ডেটাইনপুট[ডেটাইনপুট['ক্লাস'] ==0 #ফলস ডিটেকশন কেসপ্রিন্ট("ফলস ডিটেকশন কেস")প্রিন্ট("---------" )print(false.Amount.describe(),"\n")#True Detection Casesprint("True Detection Cases")print("--------- --")মুদ্রণ(true.Amount.describe(),"\n")

আউটপুট

উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -

মিথ্যা শনাক্তকরণ কেস----------------------গণনা 492.000000মান 122.211321std 256.683288মিনিট 0.00000025% 1.00000050% 9.25000075% 9.25000075% 105.8900000000000000000000000000000000000% float64True Detection Cases ----------------------count 284315.000000mean 88.291022std 250.105092min 0.00000025% 5.65000050% 22.00000075% 00000050% 22.00000075%000100075001750000075%:00017500175007 float:max57% পূর্বে> 

বৈশিষ্ট্য এবং লেবেল আলাদা করা

আমরা ML অ্যালগরিদম বাস্তবায়ন করার আগে, আমাদের বৈশিষ্ট্য এবং লেবেল সম্পর্কে সিদ্ধান্ত নিতে হবে। যার অর্থ মূলত নির্ভরশীল ভেরিয়েবল এবং স্বাধীনগুলিকে শ্রেণীবদ্ধ করা। আমাদের ডেটাসেটে ক্লাস কলাম বাকি সব কলামের উপর নির্ভরশীল। তাই আমরা শেষ কলামের জন্য একটি ডেটা ফ্রেম তৈরি করি সেইসাথে বাকি সব কলামের জন্য আরেকটি ডেটাফ্রেম তৈরি করি। এই ডেটাফ্রেমগুলি আমরা যে মডেল তৈরি করতে যাচ্ছি তা প্রশিক্ষণের জন্য ব্যবহার করা হবে৷

উদাহরণ

pd হিসেবে পান্ডা আমদানি করুন#pandasdatainput =pd.read_csv('E:\\creditcard.csv')#বিভাজন বৈশিষ্ট্য(X) এবং লেবেল(y)# ব্যবহার করে creditcard.csv লোড করুন সকলের জন্য শেষটি ছাড়া সব কলাম নির্বাচন করুন rowsX =datainput.iloc[:, :-1].values# সমস্ত সারির শেষ কলাম নির্বাচন করুনY =datainput.iloc[:, -1].valuesprint(X.shape)print(Y.shape)

আউটপুট

উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -

(284807, 30)(284807,)

মডেলকে প্রশিক্ষণ দিন

এখন আমরা ডেটা সেট দুটি ভাগে বিভক্ত করি। একটি প্রশিক্ষণের জন্য এবং অন্যটি পরীক্ষার জন্য। শুধুমাত্র পরীক্ষার জন্য কত শতাংশ ডেটা সেট ব্যবহার করা হবে তা নির্ধারণ করতে test_size প্যারামিটার ব্যবহার করা হয়। এই অনুশীলনটি আমাদের তৈরি করা মডেলের উপর আস্থা অর্জন করতে সাহায্য করবে৷

উদাহরণ

sklearn.model_selection import train_test_split থেকে pd হিসাবে পান্ডা আমদানি করুন#pandasdatainput =pd.read_csv('E:\\creditcard.csv')#বিচ্ছিন্ন বৈশিষ্ট্য(X) এবং লেবেল(y)X =ডেটাইনপুট ব্যবহার করে creditcard.csv লোড করুন। iloc[:, :-1].values# সমস্ত সারির শেষ কলাম নির্বাচন করুনY =datainput.iloc[:, -1].values#train_test_split methodX_train, X_test, Y_train, Y_test =train_test_split(X, Y, test_size=0.2)

ডিসিশন ট্রি ক্লাসিফিকেশন প্রয়োগ করা

এই পরিস্থিতিতে প্রয়োগ করার জন্য উপলব্ধ বিভিন্ন ধরণের অ্যালগরিদম রয়েছে৷ কিন্তু আমরা শ্রেণীবিভাগের জন্য আমাদের অ্যালগরিদম হিসাবে সিদ্ধান্ত গাছ বেছে নিই। যা সর্বোচ্চ গাছের গভীরতা 4 এবং মান অনুমান করার জন্য পরীক্ষার নমুনা সরবরাহ করে। পরিশেষে, এই অ্যালগরিদমটি আরও চালিয়ে যেতে হবে কিনা তা নির্ধারণ করতে আমরা পরীক্ষা থেকে ফলাফলের নির্ভুলতা গণনা করি৷

উদাহরণ

 sklearn থেকে sklearn import metricsfrom sklearn.model_selection import train_test_split# pandasdatainput =pd.read_csv('E:\\creditcard.csv')# আলাদা করা বৈশিষ্ট্য(X) এবং লেবেল(y) ব্যবহার করে creditcard.csv লোড করুন =datainput.iloc[:, :-1].valuesY =datainput.iloc[:, -1].values#train_test_split methodX_train, X_test, Y_train, Y_test =train_test_split(X, Y, test_size=0.2)#DecisionTreefromtresklass আমদানি DecisionTreeClassifierclassifier=DecisionTreeClassifier(max_depth=4)classifier.fit(X_train,Y_train)predicted=classifier.predict(X_test)প্রিন্ট("\nঅনুমানিত মান :\n",প্রেডিক্টেড)#meccuracy_accuredt=Y 100প্রিন্ট("\nডিসিশনট্রিক্ল্যাসিফায়ার ব্যবহার করে নির্ভুলতা স্কোর :",DT)

আউটপুট

উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -

ভবিষ্যদ্বাণী করা মান :[0 0 0 ... 0 0 0]DecisionTreeClassifier ব্যবহার করে নির্ভুলতা স্কোর :99.9367999719111

মূল্যায়ন পরামিতি খোঁজা

উপরের ধাপে নির্ভুলতার মাত্রা গ্রহণযোগ্য হলে আমরা বিভিন্ন পরামিতি খুঁজে বের করে মডেলটির আরও মূল্যায়ন করি। যা আমাদের পরামিতি হিসাবে যথার্থতা, রিকল মান এবং F স্কোর ব্যবহার করে। নির্ভুলতা হল পুনরুদ্ধার করা দৃষ্টান্তগুলির মধ্যে প্রাসঙ্গিক দৃষ্টান্তের ভগ্নাংশ, যখন রিকল হল প্রাসঙ্গিক দৃষ্টান্তগুলির মোট পরিমাণের ভগ্নাংশ যা প্রকৃতপক্ষে পুনরুদ্ধার করা হয়েছিল৷ F স্কোর একটি একক স্কোর প্রদান করে যা নির্ভুলতার উদ্বেগ এবং একটি সংখ্যায় প্রত্যাহার উভয়েরই ভারসাম্য বজায় রাখে।

উদাহরণ

sklearn.metrics import precision_scorefrom sklearn.metrics import precision_scorefrom sklearn.metrics import recall_scorefrom sklearn.model_selection থেকে pd হিসাবে পান্ডা আমদানি করুন. csv')#বিচ্ছিন্ন বৈশিষ্ট্য(X) এবং লেবেল(y)X =datainput.iloc[:, :-1].valuesY =datainput.iloc[:, -1].values#train_test_split methodX_train, X_test, Y_train, Y_test =ট্রেন_পরীক্ষা_বিভক্ত ,ভবিষ্যদ্বাণী করা হয়েছে)## #AccuracyDT =metrics.accuracy_score(Y_test, predicted) * 100print("\nDecisionTreeClassifier ব্যবহার করে নির্ভুলতা স্কোর :",DT)## #Precisionprint('precision')# যথার্থতা =TP / (+PTP) ) (যেখানে TP =True Positive, TN =True Negative, FP =False Positive, FN =False Nega tive). নির্ভুলতা =নির্ভুল_স্কোর(Y_test, predicted, pos_label=1)print(precision_score(Y_test, predicted, pos_label=1))#Recallprint('recall')# Recall =TP / (TP + FN)recall =recall_score(Y_test) , পূর্বাভাসিত, pos_label=1)print(recall_score(Y_test, predicted, pos_label=1))#f1-স্কোরপ্রিন্ট('f-স্কোর')# F - স্কোরগুলি যথার্থতা এবং recall.fscore উভয়ের জন্য নির্ভুলতা হিসাব নির্ণয় করার জন্য একটি পরিসংখ্যানগত পদ্ধতি =f1_score(Y_test, predicted, pos_label=1)print(f1_score(Y_test, predicted, pos_label=1))

আউটপুট

উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -

DecisionTreeClassifier ব্যবহার করে নির্ভুলতা স্কোর :99.9403110845827precision0.810126582278481recall0.7710843373493976f-Score0.79012342534>precision0.81012342534 
  1. পাইথন - বোকেহ ব্যবহার করে ডেটা ভিজ্যুয়ালাইজেশন

  2. পাইথনে পরিসংখ্যানগত চিন্তাভাবনা

  3. পাইথনে গ্রাহক মন্থনের পূর্বাভাস

  4. পাইথনে সেন্সাস ডেটা বিশ্লেষণ করা হচ্ছে