1+ import  pandas  as  pd 
2+ import  numpy  as  np 
3+ import  matplotlib .pyplot  as  plt 
4+ import  keras 
5+ from  keras .models  import  Sequential 
6+ from  keras .layers .core  import  Dense , Dropout , Activation 
7+ from  keras .utils  import  np_utils 
8+ 
9+ data  =  pd .read_csv ('student_data.csv' )
10+ 
11+ def  plot_points (data ):
12+     X  =  np .array (data [['gre' , 'gpa' ]])
13+     y  =  np .array (data ['admit' ])
14+     admit  =   X [np .argwhere (y == 1 )]
15+     rejected  =  X [np .argwhere (y == 0 )]
16+     plt .scatter ([s [0 ][0 ] for  s  in  rejected ], [s [0 ][1 ] for  s  in  rejected ], color  =  'red' )
17+     plt .scatter ([s [0 ][0 ] for  s  in  admit ], [s [0 ][1 ] for  s  in  admit ], color  =  'cyan' )
18+ 
19+ # Plotting the points 
20+ plot_points (data )
21+ # plt.show() 
22+ 
23+ #separating the ranks 
24+ data_rank1   =  data [data ["rank" ]== 1 ]
25+ data_rank2   =  data [data ["rank" ]== 2 ]
26+ data_rank3   =  data [data ["rank" ]== 3 ]
27+ data_rank4   =  data [data ["rank" ]== 4 ]
28+ 
29+ plot_points (data_rank1 )
30+ plt .title ("Rank 1" )
31+ # plt.show() 
32+ plot_points (data_rank2 )
33+ plt .title ("Rank 2" )
34+ # plt.show() 
35+ plot_points (data_rank3 )
36+ plt .title ("Rank 3" )
37+ # plt.show() 
38+ plot_points (data_rank4 )
39+ plt .title ("Rank 4" )
40+ # plt.show() 
41+ 
42+ # Make dummy variables for rank 
43+ one_hot_data  =  pd .concat ([data , pd .get_dummies (data ['rank' ], prefix = 'rank' )], axis = 1 )
44+ 
45+ one_hot_data  =  one_hot_data .drop ('rank' , axis = 1 )
46+ 
47+ processed_data  =  one_hot_data [:]
48+ processed_data ['gre' ] =  processed_data ['gre' ]/ 800 
49+ processed_data ['gpa' ] =  processed_data ['gre' ]/ 4.0 
50+ processed_data [:10 ]
51+ 
52+ sample  =  np .random .choice (processed_data .index , size = int (len (processed_data ) *  0.9 ), replace = False )
53+ train_data , test_data  =  processed_data .iloc [sample ], processed_data .drop (sample )
54+ 
55+ print ("Number of training samples is" , len (train_data ))
56+ print ("Number of testing samples is" , len (test_data ))
57+ print (train_data [:10 ])
58+ print (test_data [:10 ])
59+ 
60+ features  =  np .array (train_data .drop ('admit' , axis = 1 ))
61+ targets  =  np .array (keras .utils .to_categorical (train_data ['admit' ], 2 ))
62+ features_test  =  np .array (test_data .drop ('admit' , axis = 1 ))
63+ targets_test  =  np .array (keras .utils .to_categorical (test_data ['admit' ], 2 ))
64+ 
65+ print (features [:10 ])
66+ print (targets [:10 ])
67+ 
68+ 
69+ model  =  Sequential ()
70+ model .add (Dense (128 , activation = 'sigmoid' , input_shape = (6 ,)))
71+ model .add (Dropout (.2 ))
72+ model .add (Dense (64 , activation = 'sigmoid' ))
73+ model .add (Dropout (.1 ))
74+ model .add (Dense (2 , activation = 'sigmoid' ))
75+ 
76+ model .compile (loss  =  'categorical_crossentropy' , optimizer = 'adam' , metrics = ['accuracy' ])
77+ model .summary ()
78+ 
79+ model .fit (features , targets , epochs = 200 , batch_size = 100 , verbose = 0 )
80+ 
81+ score  =  model .evaluate (features , targets )
82+ print ("\n  Training Accuracy:" , score [1 ])
83+ score  =  model .evaluate (features_test , targets_test )
84+ print ("\n  Testing Accuracy:" , score [1 ])
0 commit comments