Home > Enterprise >  Identify and drop incorrect entries from the test set in python
Identify and drop incorrect entries from the test set in python

Time:12-31

For a specific need in a machine learning topic, after training a model and getting an accuracy of 74% I need to identify the lines that have the correct prediction from those that have an incorrect prediction in the test set. For this I go through 3 steps : 1- Incorrect_result contains 0 or 1 depending on correct or incorrect result

incorrects_result = np.where(y_predicted_l != y_test, 1, 0)

print(incorrects_result)
print(len(incorrects_result))
[1 1 0 ... 0 0 0]
31054

2- f_incorrects identify the places of the incorrect result

f_incorrects = np.flatnonzero(incorrects_result)
print(f_incorrects)
print(len(f_incorrects))
[    0     1     5 ... 31045 31046 31050]
8049

3- when I try to drop lines from y_test in these places i get an error

new_y_test=y_test.drop(f_incorrects, axis=0)

KeyError: '[ 0 1 6 ... 31036 31045 31046] not found in axis'

To understand the nature of y_test :

from sklearn.model_selection import train_test_split
X = df["review"]
y = df["sentiment"]

#Split train data and Test data 
X_train,X_test,y_train,y_test = train_test_split(X,y, test_size = 0.4, stratify=df['sentiment'], random_state=42 )

y_test

101409    1
27117     0
38448     0
85548     1
127165    1
         ..
102431    1
29555     0
140999    1
128882    1
85422     1
Name: sentiment, Length: 31054, dtype: int64

X_test

101409    هزم البكاء الأليم ضحكاتها وضحكاته أيضا فأمسك ك...
27117     اتفّق الكثير على روعة الرواية، بدأت بقراءة خمس...
38448     روايه سخيفه جدا. مش عارفه العيب منى ولا منها. ...
85548     أحمد مراد يتطور أسلوبه من رواية إلى أخرى.يحاول...
127165    كثيرا ما هربت من أنوثتي وكثيرا ما هربت منك لأن...
                                ...                        
102431    تجتاحنى حالة من الهدوء النفسى عقب قراءة هذا ال...
29555     وحدها شجرة الرمان . كم أتمنى حرق هذه الرواية و...
140999    اه ، كم لهذا الكتاب وقع في قلبي. قرأته بالوقت ...
128882    تريد القيام برحله حول العالم برغم مكوثك بمكانك...
85422     بالرغم من أنك قد تكون قرأت الكثير من الكتب الت...
Name: review, Length: 31054, dtype: object

y_train

114172    1
155935    1
35405     0
108907    1
42159     0
         ..
70867     0
50649     0
14310     0
102194    1
64010     0
Name: sentiment, Length: 93161, dtype: int64

X_train

114172    رحم الله د\\ غازي القصيبي. الروايه تتحدث عن 4 ...
155935    من الفصحى إلى العامية إلى التراثية . ديوان يست...
35405     الرواية أسلوبها ركيك و احداثها لا تواكب العصرا...
108907    رواية أكثر من رائعة !! أحيي الكاتب على قدرته ا...
42159     نقدي على الفكرة لا على الأسلوب أو الكلمات. ماح...
                                ...                        
70867     قرأت أول ربع واستمتعت به وضحكت، واستكملت الربع...
50649     الكتاب كويس بس قصاصات قابلة للحرق افضل بكثير. ...
14310      ما الجديد المميز في هذه الرواية ؟ للأسف لا شيء !
102194    كتاب جميل وقيم يوضح الفروقات بين الظاهره \\الخ...
64010     اولا لو في نص نجمة كنت خليت تقييمي ليها نص، طو...
Name: review, Length: 93161, dtype: object

Please help!

CodePudding user response:

Because you didn't provide us example of y_test I'm not completely sure, but I think y_test is index is not same as row_number. So if you reset index of y_test it should be fixed.

df.reset_index(drop = True).drop(f_incorrects, axis = 0)
  • Related