Kaggle competition: House Prices - Advanced Regression Techniques
<SOS> metric: rmsle Kaggle data source: house-prices-advanced-regression-techniques<predict_on_test>
pd.set_option('display.max_rows', None)
 pd.set_option('display.width', None)
 pd.set_option('display.max_colwidth', None)
 %matplotlib inline
test_pred = model.predict(data_test ).astype(int)
 test_pred =(model.predict_proba(data_test)[:,1] >= 0.21 ).astype(int)
 test_pred[0:10]<predict_on_test>
sample_submission = pd.read_csv(".. /input/house-prices-advanced-regression-techniques/sample_submission.csv")
 test = pd.read_csv(".. /input/house-prices-advanced-regression-techniques/test.csv")
 train = pd.read_csv(".. /input/house-prices-advanced-regression-techniques/train.csv")
 test1 = test.copy()
train1 = train.copy()
data_test['prediction'] = test_pred
data_test.head(10 )<filter>
train1= train1[pd.notnull(train1['SalePrice'])]
train1.tail()
orders_test = orders.loc[orders.eval_set=='test',("user_id", "order_id")]
orders_test.head()<merge>
train1['train'] = 1
test1['train'] = 0
house = pd.concat([train1,test1], axis=0,sort=False)
 house.tail()
final = final.merge(orders_test, on='user_id', how='left')
 final.head()<drop_column>
NAN = [(c, house[c].isna().mean() *100)for c in house]
NAN = pd.DataFrame(NAN, columns=["column_name", "percentage"])
 NAN = NAN[NAN.percentage > 50]
NAN.sort_values("percentage", ascending=False )
final = final.drop('user_id', axis=1 )<data_type_conversions>
house = house.drop(['Alley','PoolQC','Fence','MiscFeature'],axis=1 )
final['product_id'] = final.product_id.astype(int)
 del orders
del orders_test
gc.collect()
final.head()<feature_engineering>
object_columns_df = house.select_dtypes(include=['object'])
 numerical_columns_df =house.select_dtypes(exclude=['object'] )
d = dict()
for row in final.itertuples() :
if row.prediction== 1:
try:
d[row.order_id] += ' ' + str(row.product_id)
 except:
d[row.order_id] = str(row.product_id)
 for order in final.order_id:
if order not in d:
d[order] = 'None'
gc.collect()
d<prepare_output>
null_counts = object_columns_df.isnull().sum()
print("Number of null values in each column:
{}".format(null_counts))
sub = pd.DataFrame.from_dict(d, orient='index')
 sub.reset_index(inplace=True)
 sub.columns = ['order_id', 'products']
sub.head()<save_to_csv>
columns_None = ['FireplaceQu']
object_columns_df[columns_None]= object_columns_df[columns_None].fillna('None' )
sub.to_csv('sub.csv', index=False )<set_options>
columns_with_lowNA = ['BsmtQual','BsmtCond','BsmtExposure','BsmtFinType1','BsmtFinType2','GarageType','GarageFinish','GarageQual','GarageCond','MSZoning','Utilities','Exterior1st','Exterior2nd','MasVnrType','Electrical','KitchenQual','Functional','SaleType']
object_columns_df[columns_with_lowNA] = object_columns_df[columns_with_lowNA].fillna(object_columns_df.mode().iloc[0] )
TRAIN_ABLE_FALSE=True
if TRAIN_ABLE_FALSE:
os.environ['CUDA_VISIBLE_DEVICES'] = "1"
TRAIN_OFFLINE = False
pd.set_option('display.max_columns', 50)
 pd.set_option('display.max_rows', 150 )<statistical_test>
null_counts = numerical_columns_df.isnull().sum()
print("Number of null values in each column:
{}".format(null_counts))
def GPClusterI(data):
return(0.250000*np.tanh(((((((((((((((((((data[:,10])-(((((data[:,9])* 2.0)) +(np.where(data[:,2] <= 1.702511, data[:,21], data[:,2])))))) * 2.0)) -(data[:,34])))* 2.0)) -(data[:,9])))* 2.0)) -(data[:,34])))* 2.0)) -(((((data[:,9])* 2.0)) * 2.0)))) +
0.250000*np.tanh(((((((((((((data[:,17])-(data[:,26])))-(data[:,9])))-(np.where(data[:,0] > 1.926984, data[:,17], np.where(data[:,17] > 1.926984, data[:,17], np.where(data[:,17] > 1.926984, data[:,17], np.where(data[:,0] > 1.926984, data[:,17],(( data[:,9])-(data[:,0])))))))))* 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((data[:,31])+(data[:,4])))+(data[:,4])))+(data[:,4])))-(((((((((data[:,9])-(data[:,35])))+(np.where(( -1.0*(( data[:,21])))> 1.922295,(12.70899581909179688),(( data[:,21])+(((data[:,9])-(data[:,35])))))))) * 2.0)) * 2.0)))) +
0.250000*np.tanh(np.where(data[:,35] > 1.419382,(( data[:,35])*(data[:,24])) ,(((9.0)) *(((((((((((data[:,0])-(data[:,2])))-(data[:,7])))+(((( 9.0)) *(data[:,35])))))+(((data[:,24])-(data[:,26])))))+(( -1.0*(( data[:,27])))))))))+
0.250000*np.tanh(((np.where(data[:,28] > 1.829230, data[:,31],(((( np.where(( 8.0)> -1.642552,(( data[:,31])* 2.0),(12.98144721984863281)))+(data[:,34])))* 2.0)))-(((((((((data[:,28])+(((((np.where(data[:,28] > 1.829230,(12.76694965362548828), data[:,34])) +(data[:,13])))* 2.0)))) * 2.0)) * 2.0)) * 2.0)))) +
0.250000*np.tanh(((((((((np.where(data[:,2] <= 0.653900,(((( data[:,0])-(data[:,9])))-(((((( data[:,7])+(data[:,9])) /2.0)) -(data[:,2])))) ,(((((( data[:,0])-(data[:,27])))-(data[:,2])))-(data[:,2])))) -(data[:,27])))-(data[:,34])))* 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((((((np.where(((data[:,34])*(data[:,9])) <= 0.588421,(( data[:,0])-(data[:,13])) , data[:,28])) -(data[:,9])))* 2.0)) -(data[:,34])))-(data[:,28])))* 2.0)) -(data[:,30])))* 2.0)) +
0.250000*np.tanh(((((((((((((((((np.where(( 7.0)> -0.215004,(((((((( data[:,0])-(data[:,34])))+(data[:,31])))+(data[:,0])))-(data[:,7])) , data[:,2])) -(data[:,7])))-(data[:,2])))* 2.0)) -(data[:,6])))* 2.0)) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((((((((((( -1.0*(( np.where(data[:,2] <= 0.763429, data[:,9], data[:,2])))))-(( -1.0*(( data[:,17])))))) * 2.0)) * 2.0)) -(data[:,26])))-(data[:,9])))-(np.where(data[:,2] > -1.904264, data[:,34], data[:,2])))) -(data[:,26])))-(data[:,26])))* 2.0)) +
0.250000*np.tanh(((((((((((((((((data[:,8])-(data[:,2])))-(((((data[:,9])* 2.0)) +(np.where(data[:,16] <= 0.653900, data[:,2], data[:,16])))))) * 2.0)) -(np.where(data[:,2] <= 1.926984, data[:,34], data[:,9])))) -(data[:,16])))-(data[:,9])))* 2.0)) * 2.0)) +
0.250000*np.tanh(((data[:,31])-(((((data[:,3])-(((((data[:,0])-(np.where(( 4.0)<= 0.150218,(( data[:,35])-(data[:,35])) , data[:,7])))) -(np.where(data[:,2] <= 0.150218,(( data[:,34])-(((( 4.0)) *(((( 4.0)) *(data[:,35])))))) , data[:,2])))))) * 2.0)))) +
0.250000*np.tanh(((((((((((((((((((((data[:,31])-(data[:,2])))-(np.where(data[:,11] > 0.130215, data[:,9], data[:,30])))) -(( 1.0)))) -(data[:,26])))-(data[:,9])))-(data[:,9])))-(((( 1.0)) / 2.0)))) -(((data[:,9])* 2.0)))) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((( -1.0*(((((data[:,34])+(((((( data[:,28])-(((data[:,13])-(data[:,9])))))+(data[:,9])) /2.0)))/2.0)))))-(((data[:,13])+(np.where(data[:,2] <= 0.588421,(( data[:,28])-(((data[:,17])-(data[:,9])))) , data[:,17])))))) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((((((((((((((np.where(data[:,3] <= 2.050536, data[:,0], data[:,16])) -(data[:,9])))* 2.0)) -(data[:,16])))-(data[:,2])))-(data[:,2])))* 2.0)) -(data[:,9])))-(data[:,34])))-(data[:,0])))-(data[:,16])))* 2.0)) +
0.250000*np.tanh(((((((((((data[:,0])-(((((data[:,13])+(np.where(data[:,0] > 1.702511, np.where(data[:,0] > 0.280485,(( data[:,9])+(data[:,0])) , data[:,0]),(( data[:,16])+(data[:,2])))))) +(data[:,9])))))* 2.0)) -(((data[:,9])+(data[:,34])))))* 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((((((((data[:,35])*(((( 11.89373683929443359)) +(data[:,9])))))-(data[:,9])))-(data[:,21])))* 2.0)) -(data[:,28])))-(np.where(data[:,21] <= 0.763429, data[:,2], data[:,28])))) -(data[:,34])))-(np.where(data[:,21] <= 0.763429, data[:,2], data[:,21])))) +
0.250000*np.tanh(((((((((((((( -1.0*(((((((( data[:,13])-(data[:,5])))-(data[:,0])))* 2.0)))))-(((data[:,13])*(data[:,5])))))-(data[:,28])))-(data[:,28])))-(data[:,9])))-(((( 4.15469646453857422)) *(data[:,9])))))-(data[:,21])))+
0.250000*np.tanh(((((((((((( -1.0*(( data[:,34])))) -(((((((((((np.where(data[:,16] <= 0.588421, data[:,2], data[:,16])) * 2.0)) +(data[:,9])))* 2.0)) +(data[:,9])))* 2.0)))) -(data[:,34])))-(data[:,9])))-(data[:,9])))-(data[:,9])))+
0.250000*np.tanh(((((((((((((((((data[:,6])-(data[:,9])))-(data[:,9])))-(np.where(((((data[:,6])-(data[:,9])))-(data[:,6])) > 1.922295, data[:,2], np.where(data[:,16] > 0.891058, data[:,16], data[:,2])))))* 2.0)) * 2.0)) -(data[:,6])))* 2.0)) -(data[:,16])))+
0.250000*np.tanh(((((((((((((((((((((data[:,31])-(data[:,34])))-(data[:,9])))-(data[:,26])))-(data[:,2])))-(data[:,13])))-(data[:,9])))-(data[:,34])))-(data[:,13])))-(data[:,26])))-(data[:,13])))+
0.250000*np.tanh(((((((((((((((data[:,31])-(((data[:,27])+(data[:,28])))))-(data[:,7])))+(((np.where(data[:,0] > 1.473305, data[:,27], data[:,0])) -(data[:,27])))))-(data[:,2])))-(data[:,5])))+(data[:,0])))-(data[:,34])))+
0.250000*np.tanh(((((((data[:,0])* 2.0)) -(((data[:,13])* 2.0)))) -(((((((data[:,9])* 2.0)) +(np.where(data[:,2] <= 0.710089, np.where(np.where(((data[:,9])* 2.0)<= 1.882838, data[:,9], data[:,0])<= 0.710089, data[:,16],(( data[:,2])* 2.0)) , data[:,2])))) * 2.0)))) +
0.250000*np.tanh(((((data[:,6])+(((data[:,6])-(((data[:,6])-(data[:,9])))))))+(((((((((((((((((data[:,6])-(data[:,9])))+(((data[:,0])-(data[:,9])))))* 2.0)) -(data[:,13])))-(data[:,28])))* 2.0)) -(data[:,34])))* 2.0)))) +
0.250000*np.tanh(np.where(data[:,21] <= -1.642552, data[:,21],(( np.where(( -1.0*(( data[:,0])))<= -1.642552,(((-1.0*(( data[:,9])))) * 2.0),(((((((((-1.0*(( data[:,9])))) * 2.0)) -(data[:,16])))-(((data[:,13])-(data[:,0])))))* 2.0)))* 2.0)))+
0.250000*np.tanh(((((data[:,0])+(((((((( -1.0*(( data[:,26])))) +(((((((data[:,0])+(((data[:,4])+(((((data[:,5])+(((( -1.0*(( data[:,9])))) * 2.0)))) * 2.0)))))) * 2.0)) * 2.0)))) * 2.0)) * 2.0)))) * 2.0)) +
0.250000*np.tanh(((((((((data[:,31])-(data[:,13])))-(((data[:,28])-(np.where(data[:,17] > 1.882838,(( data[:,31])-(data[:,11])) ,(( data[:,17])-(((data[:,5])-(((((data[:,17])-(data[:,5])))-(data[:,13])))))))))))) -(data[:,34])))-(data[:,28])))+
0.250000*np.tanh(((((((((((np.where(data[:,0] <= 1.926984,(((((((( data[:,10])+(data[:,0])))-(data[:,9])))* 2.0)) * 2.0), data[:,9])) -(((data[:,9])+(data[:,28])))))-(data[:,9])))* 2.0)) -(data[:,10])))-(data[:,9])))+
0.250000*np.tanh(((((((data[:,31])-(data[:,2])))+(data[:,0])))-(((((data[:,9])-(((data[:,0])-(((((data[:,34])-(((((data[:,0])-(data[:,13])))-(data[:,9])))))+(data[:,13])))))))+(data[:,7])))))+
0.250000*np.tanh(((((((((((((((((np.where(((data[:,13])-(data[:,9])) > 1.882838, data[:,2],(((( data[:,0])-(data[:,2])))-(data[:,13])))) -(data[:,16])))-(data[:,9])))* 2.0)) -(data[:,2])))* 2.0)) * 2.0)) -(data[:,9])))* 2.0)) +
0.250000*np.tanh(((data[:,6])-(((((data[:,9])-(((np.where(np.where(data[:,9] > 1.559958, data[:,9], data[:,21])<= -1.642552, data[:,21],(-1.0*(( data[:,16])))))-(((np.tanh(((( data[:,9])-(((((data[:,6])-(data[:,9])))+(data[:,0])))))))* 2.0)))))) * 2.0)))) +
0.250000*np.tanh(((((((((( -1.0*(( data[:,16])))) +(((((np.where(data[:,0] > 1.727814, data[:,16], np.where(data[:,31] > 1.727814, data[:,31], np.where(data[:,9] > 1.727814,(( data[:,2])-(data[:,9])) , data[:,0])))) -(data[:,2])))-(data[:,9])))))-(data[:,13])))* 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((((((data[:,0])-(data[:,16])))-(((data[:,9])* 2.0)))) -(data[:,9])))+(((data[:,0])+(((data[:,10])+(((data[:,0])-(data[:,0])))))))))-(data[:,2])))-(data[:,34])))-(data[:,27])))+
0.250000*np.tanh(((((((((((data[:,35])*(( 11.79529571533203125)))) * 2.0)) +(((((data[:,31])-(data[:,34])))-(data[:,12])))))*(( 11.79529571533203125)))) +(((data[:,6])-(np.where(data[:,34] <= 0.339973,(((( data[:,35])*(( 11.79529571533203125)))) * 2.0),(( data[:,35])*(( 11.79529571533203125)))))))))+
0.250000*np.tanh(((((((((np.where(((data[:,9])* 2.0)> -1.642552, data[:,0], data[:,13])) -(data[:,9])))-(((np.where(data[:,0] > 1.473305, data[:,9],(( np.where(data[:,2] > 1.473305, data[:,0],(( data[:,16])+(data[:,13])))) +(data[:,2])))) * 2.0)))) -(data[:,9])))-(data[:,34])))+
0.250000*np.tanh(((((((((((((((((((((((( np.where(data[:,0] > 1.926984, data[:,9], data[:,0])) +(data[:,6])) /2.0)) -(data[:,9])))* 2.0)) * 2.0)) * 2.0)) +(data[:,9])))-(data[:,34])))* 2.0)) -(data[:,34])))* 2.0)) +(data[:,6])))+
0.250000*np.tanh(((((((data[:,0])-(np.where(data[:,16] <= 0.604824, data[:,2], data[:,16])))) -(data[:,3])))+(((((((((((data[:,0])-(data[:,16])))-(np.where(data[:,16] <= 0.604824, data[:,3], data[:,16])))) -(data[:,9])))-(data[:,34])))-(((data[:,9])* 2.0)))))) +
0.250000*np.tanh(((((np.where(data[:,31] > 1.469977, data[:,13], data[:,0])) -(data[:,5])))+(((((((data[:,0])-(data[:,16])))+(((((data[:,31])-(data[:,5])))-(((data[:,16])+(data[:,2])))))))-(((data[:,13])+(((data[:,13])+(data[:,2])))))))))+
0.250000*np.tanh(((((((((((((((((np.where(data[:,5] <= 1.757309, data[:,0], data[:,31])) -(data[:,5])))* 2.0)) +(data[:,10])))+(((((( -1.0*(( data[:,26])))) +(data[:,17])))+(data[:,31])))))-(data[:,2])))* 2.0)) -(data[:,34])))* 2.0)) +
0.250000*np.tanh(((((np.tanh(( data[:,0])))+(((((np.where(data[:,34] <= -1.642552,(9.26502037048339844),(( data[:,35])*(( 9.26501655578613281)))))-(data[:,34])))-(data[:,11])))))*(((((data[:,34])+(np.where(data[:,35] <= -1.642552, data[:,34], data[:,0])))) +(( 9.26502037048339844)))))) +
0.250000*np.tanh(((((((((((((( -1.0*(( data[:,7])))) +(((np.where(np.where(((data[:,31])-(data[:,34])) <= 1.882838, data[:,0],(4.0)) <= 1.882838, data[:,0], data[:,14])) * 2.0)))) -(data[:,13])))* 2.0)) -(data[:,34])))-(data[:,2])))-(data[:,0])))+
0.250000*np.tanh(((((((((((((((np.where(data[:,3] > 1.757309, data[:,16],(((( np.where(data[:,31] > 1.757309,(8.0), data[:,0])) -(data[:,2])))-(data[:,16])))) -(data[:,27])))-(data[:,2])))* 2.0)) -(data[:,9])))-(data[:,9])))* 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((((((data[:,10])-(data[:,21])))-(data[:,2])))+(((((((((data[:,10])-(data[:,2])))-(data[:,9])))-(data[:,9])))-(data[:,9])))))-(data[:,26])))-(data[:,21])))-(data[:,34])))-(data[:,9])))+
0.250000*np.tanh(((((((((((( -1.0*(((( data[:,9])-(np.where(data[:,0] > 1.981842, data[:,9],(((((data[:,0])-(np.where(data[:,17] <= -0.215004, data[:,16], data[:,2])))) +(data[:,6])) /2.0)))))))) * 2.0)) * 2.0)) -(np.where(data[:,6] <= -0.215004, data[:,9], data[:,2])))) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((((((((( -1.0*(( np.where(data[:,17] > -1.642552, data[:,13], data[:,9])))))-(data[:,2])))-(np.where(data[:,34] > -1.642552, data[:,13], data[:,9])))) -(data[:,34])))-(data[:,9])))-(data[:,9])))+(data[:,0])))-(data[:,16])))+(data[:,0])))+
0.250000*np.tanh(((np.where(data[:,2] <= 1.431019,(((( np.where(data[:,3] <= 1.431019,(( np.where(( -1.0*(( data[:,5])))<= 1.473305, data[:,0],(11.76838779449462891)))+(((np.where(data[:,24] <= 1.473305, data[:,2],(11.76838779449462891)))+(( -1.0*(( data[:,13]))))))), data[:,21])) * 2.0)) +(data[:,24])) , data[:,21])) * 2.0)) +
0.250000*np.tanh(((((((((np.where(((((data[:,9])-(data[:,9])))-(data[:,9])) > 0.966479,(2.0),(( data[:,0])-(data[:,13])))) -(data[:,2])))-(data[:,9])))-(data[:,21])))+(((((( data[:,31])+(data[:,4])))+(((data[:,0])-(data[:,2])))) /2.0)))) +
0.250000*np.tanh(((np.where(data[:,34] <= -1.642552,(6.0), data[:,0])) -(((((data[:,27])-(((np.where(np.where(data[:,34] <= -1.642552, np.where(data[:,27] <= -1.642552, data[:,7], data[:,27]), data[:,31])> 1.546810,(6.0), data[:,0])) -(np.where(data[:,21] <= -0.367331, data[:,2], data[:,27])))))) +(data[:,7])))))+
0.250000*np.tanh(((((((np.where(data[:,0] > 1.431019, data[:,7],(((((( data[:,0])* 2.0)) -(np.where(data[:,5] <= 0.763429, data[:,7], data[:,34])))) -(data[:,5])))) -(data[:,34])))-(np.where(data[:,5] <= 0.763429, data[:,7], data[:,30])))) -(np.where(data[:,5] <= 0.763429, data[:,28], data[:,3])))) +
0.250000*np.tanh(((((((((data[:,17])-(np.where(data[:,14] <= 1.829230, np.where(((data[:,27])-(data[:,34])) <= 1.829230,(( np.where(data[:,3] <= 0.802554, np.where(data[:,17] <= 0.802554, data[:,27], data[:,2]), data[:,17])) * 2.0), data[:,34]), data[:,17])))) -(data[:,34])))* 2.0)) * 2.0)) +
0.250000*np.tanh(((((np.where(( -1.0*(( data[:,9])))> 1.012256, data[:,0],(((((((((((( data[:,31])+(data[:,8])))-(data[:,27])))+(data[:,0])))+(((data[:,0])+(data[:,8])))))-(data[:,9])))+(data[:,5])))) -(data[:,9])))-(data[:,9])))+
0.250000*np.tanh(((((((data[:,35])* 2.0)) *(( 14.55231475830078125)))) +(np.where(((data[:,35])* 2.0)<= 0.172765,(((((( data[:,24])+(np.where(data[:,24] <= 1.473305,(( np.where(((data[:,11])* 2.0)<= 1.882838, data[:,0], data[:,35])) * 2.0),(5.0)))))-(data[:,11])))* 2.0),(5.0)))))+
0.250000*np.tanh(((np.where(data[:,0] > 1.882838, data[:,30],(((((( data[:,0])-(data[:,34])))-(((data[:,7])-(((((data[:,0])-(data[:,2])))-(((data[:,9])-(data[:,0])))))))))-(data[:,7])))) -(np.where(data[:,0] <= 1.882838, data[:,9], data[:,0])))) +
0.250000*np.tanh(((data[:,5])+(((((((((data[:,0])-(data[:,9])))-(((data[:,2])+(data[:,9])))))-(data[:,2])))+(((((((((((data[:,0])-(data[:,21])))-(data[:,21])))-(data[:,2])))-(data[:,7])))-(data[:,9])))))))+
0.250000*np.tanh(((np.where(data[:,5] <= -1.904264,(5.0),(((((((((( data[:,31])-(data[:,16])))-(data[:,34])))-(data[:,11])))+(data[:,0])))-(np.where(((data[:,0])-(data[:,16])) > 1.660163,(11.23856639862060547), data[:,7])))))+(data[:,0])))+
0.250000*np.tanh(((((((np.where(data[:,34] > -0.215004, data[:,35], np.where(data[:,24] <= 1.473305, data[:,35],(10.32702636718750000)))) *(( 7.58994531631469727)))) -(np.where(data[:,16] <= 0.863488, np.where(np.tanh(( data[:,35])) > -0.215004, data[:,2],(10.32702636718750000)) , data[:,16])))) *(((( 12.30210781097412109)) * 2.0)))) +
0.250000*np.tanh(((np.where(data[:,27] <= 2.050536,(-1.0*(((-1.0*(( data[:,17])))))) ,(-1.0*(( data[:,27])))))+(((np.where(data[:,31] > 1.586856,(9.91149044036865234),(((((( data[:,0])-(data[:,28])))-(data[:,28])))+(((np.where(data[:,0] > 1.586856, data[:,16],(-1.0*(( data[:,27])))))* 2.0)))))* 2.0)))) +
0.250000*np.tanh(((((((((((((((((((((data[:,17])+(data[:,6])))-(data[:,9])))-(data[:,9])))* 2.0)) -(data[:,28])))-(data[:,2])))* 2.0)) -(data[:,28])))* 2.0)) -(((((((data[:,6])-(data[:,9])))-(data[:,9])))-(data[:,9])))))+
0.250000*np.tanh(((((((((((((np.where(np.where(data[:,28] > -1.642552, data[:,9],(( data[:,0])-(( 3.0)))) > -1.642552,(( data[:,0])-(data[:,27])) , data[:,28])) -(np.where(data[:,17] > 0.653900, data[:,3], data[:,28])))) -(data[:,9])))* 2.0)) * 2.0)) -(data[:,28])))-(data[:,28])))+
0.250000*np.tanh(((data[:,32])+(np.where(data[:,31] > 1.829230,(14.05588722229003906),(((( data[:,32])+(((((((((((((data[:,0])-(data[:,12])))-(data[:,27])))* 2.0)) -(data[:,34])))-(data[:,7])))* 2.0)))) -(data[:,7])))))) +
0.250000*np.tanh(((((((((((np.where(data[:,21] > 0.094435, data[:,0],(( np.where(((data[:,21])*(data[:,21])) > 1.559958, data[:,21], np.where(data[:,0] > 0.094435,(7.0), data[:,28])))-(data[:,9])))) -(data[:,9])))-(data[:,21])))-(data[:,28])))-(data[:,28])))-(data[:,9])))+
0.250000*np.tanh(((((((((((((((data[:,10])-(data[:,2])))-(data[:,2])))+(((((((np.where(data[:,0] > 0.672977, data[:,16],(((-1.0*(( data[:,16])))) -(data[:,9])))) * 2.0)) -(( -1.0*(( data[:,16])))))) +(data[:,0])))))* 2.0)) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(np.where(data[:,16] <= -0.771750, data[:,14],(((((( np.where(data[:,33] <= 1.829230, data[:,14],(13.52701568603515625)))-(data[:,13])))+(((np.where(data[:,14] <= 1.829230,(((((( data[:,19])-(data[:,16])))-(data[:,13])))+(data[:,0])) ,(13.52701568603515625)))-(data[:,16])))))-(data[:,11])))) +
0.250000*np.tanh(((((((((((((((data[:,0])-(data[:,28])))-(data[:,9])))* 2.0)) +(data[:,17])))-(np.where(((data[:,27])-(data[:,9])) > 1.166741,(((( data[:,0])-(data[:,28])))-(data[:,27])) , data[:,27])))) -(data[:,28])))-(data[:,27])))+
0.250000*np.tanh(np.where(data[:,0] > 0.365952, np.where(( -1.0*(( data[:,16])))<= 0.710928,(4.87075328826904297), data[:,16]),(( np.where(data[:,0] > 0.365952, np.where(data[:,17] <= 0.710928, data[:,0],(-1.0*(((4.87075328826904297))))),(((((-1.0*(( data[:,16])))) -(np.where(data[:,17] > 2.138112,(4.87075328826904297), data[:,5])))) * 2.0)))* 2.0)))+
0.250000*np.tanh(((((( -1.0*(( data[:,9])))) +(((data[:,17])-(data[:,9])))))+(((((( -1.0*(((( np.where(data[:,34] > 0.259706, np.where(data[:,34] > 0.259706, data[:,13], data[:,34]), data[:,9])) -(((data[:,0])-(data[:,12])))))))) * 2.0)) +(data[:,8])))))+
0.250000*np.tanh(((np.where(data[:,33] > 1.922295, data[:,31],(((-1.0*(((( np.where(data[:,17] <= 1.473305, data[:,21], data[:,17])) * 2.0)))))+(((((((data[:,0])+(data[:,14])))+(( -1.0*(( np.where(data[:,0] <= 1.473305, data[:,33], data[:,17])))))))+(( -1.0*(( data[:,7])))))))))-(data[:,34])))+
0.250000*np.tanh(((((((((((((((np.tanh(( data[:,6])))+(((np.tanh(( np.tanh(( np.where(np.tanh(( data[:,9])) <= 1.559958, data[:,5], data[:,5])))))) -(data[:,9])))))* 2.0)) +(((data[:,0])-(data[:,9])))))* 2.0)) -(data[:,12])))* 2.0)) * 2.0)) +
0.250000*np.tanh(((((((np.where(data[:,28] > 1.810439, data[:,9], data[:,17])) -(data[:,9])))-(((((data[:,9])-(((np.tanh(( data[:,10])))-(data[:,28])))))-(np.where(np.where(data[:,32] > 1.810439, data[:,17], data[:,9])> -0.440378, data[:,10],(( data[:,32])-(data[:,28])))))))) * 2.0)) +
0.250000*np.tanh(np.where(np.where(data[:,16] > -0.771750, np.where(data[:,9] > -0.771750, data[:,27], np.where(data[:,34] > -0.771750, np.where(data[:,27] > -0.771750,(9.67068481445312500), data[:,27]), data[:,9])) , np.where(data[:,34] > -0.771750, data[:,34], data[:,32])) <= -0.440378,(4.46086883544921875),(( data[:,24])-(np.where(data[:,32] <= 0.486327,(4.46086883544921875), data[:,9])))))+
0.250000*np.tanh(((((((((data[:,0])-(data[:,9])))-(data[:,26])))-(data[:,9])))+(((((np.where(data[:,9] <= 0.966479, np.where(((data[:,0])-(data[:,26])) <= -0.961898, data[:,9], data[:,10]), data[:,17])) +(np.where(data[:,9] <= -0.961898,(6.90364980697631836), data[:,17])))) +(data[:,10])))))+
0.250000*np.tanh(((((((np.where(data[:,9] > -0.617524, np.where(((data[:,31])* 2.0)<= 0.276842,(( np.where(data[:,30] > -0.617524, data[:,31], data[:,9])) * 2.0), data[:,32]),(((-1.0*(( data[:,28])))) -(np.where(np.where(data[:,28] <= 1.166741, data[:,32], data[:,32])> 0.242128, data[:,9], data[:,34])))))* 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((np.where(np.where(data[:,26] <= 1.922295,(1.58192789554595947), data[:,26])> 1.922295, data[:,26],(((((( np.where(((data[:,34])+(data[:,9])) > -1.904264, data[:,6],(13.61537456512451172)))-(data[:,13])))-(data[:,13])))-(data[:,27])))) -(((( 1.58192789554595947)) +(((data[:,26])+(data[:,9])))))))+
0.250000*np.tanh(((((((((((((((np.where(data[:,8] > 0.217063,(((1.79415512084960938)) * 2.0),(((( data[:,27])*(data[:,27])))-(data[:,21])))) -(data[:,9])))-(( 1.79415512084960938)))) -(data[:,12])))-(data[:,9])))* 2.0)) -(((data[:,12])*(data[:,2])))))-(data[:,27])))+
0.250000*np.tanh(np.where(np.where(data[:,10] > 0.173837, data[:,27],(5.0)) > -0.215004, np.where(np.where(( 6.0)> 1.166741, np.where(np.where(( -1.0*(( data[:,9])))> 1.166741, data[:,9], np.where(data[:,9] > 0.235213, data[:,27], data[:,28])) <= -0.051274, data[:,9], data[:,30]), data[:,9])<= -0.771750,(5.0),(-1.0*(((5.0))))),(5.0)))+
0.250000*np.tanh(np.where(((data[:,2])-(data[:,16])) > 0.931097, data[:,16],(((((((( np.where(((np.where(data[:,0] > 0.710089,(7.0),(-1.0*(( data[:,9])))))-(data[:,16])) > 0.539711,(10.0), data[:,0])) -(data[:,27])))-(data[:,16])))-(data[:,27])))-(data[:,16])))) +
0.250000*np.tanh(((((np.where(np.where(data[:,21] <= -0.440378, np.where(( 2.58349370956420898)> -0.215004, data[:,34], data[:,21]), data[:,13])<= -0.440378,(2.58349370956420898),(((( data[:,32])-(np.where(data[:,24] > -0.215004, data[:,34],(2.58349370956420898)))))-(np.where(data[:,24] > -0.215004, data[:,28],(2.58349370956420898)))))) * 2.0)) * 2.0)) +
0.250000*np.tanh(np.where(( -1.0*(( data[:,21])))> 0.843544, data[:,27],(((((((((( np.where(( -1.0*(( data[:,9])))<= 0.966479, np.where(data[:,0] <= 0.966479, np.where(data[:,0] <= 0.666384, data[:,20], data[:,21]), data[:,27]),(11.28149509429931641)))+(((data[:,0])-(data[:,27])))))-(data[:,21])))* 2.0)) * 2.0)) * 2.0)))+
0.250000*np.tanh(((((np.where(((((np.where(np.where(( 11.69958400726318359)<= 1.660163,(((( data[:,31])*(data[:,9])))/ 2.0),(-1.0*(((( data[:,9])/ 2.0)))))<= 0.588421, data[:,0],(11.69958400726318359)))-(data[:,11])))-(data[:,15])) <= 0.588421, data[:,0],(13.84375286102294922)))-(((data[:,21])* 2.0)))) -(data[:,11])))+
0.250000*np.tanh(np.where(data[:,9] > 1.214718,(-1.0*(( data[:,9]))),(( np.where(( -1.0*(( data[:,9])))> 1.214718,(7.56400680541992188),(((((((((((((((( data[:,6])* 2.0)) -(data[:,13])))-(data[:,12])))* 2.0)) * 2.0)) -(data[:,28])))* 2.0)) -(data[:,12])))) * 2.0)))+
0.250000*np.tanh(np.where(data[:,16] > -1.642552, np.where(data[:,9] > -1.642552,(((( np.where(data[:,34] > -1.642552,(( np.where(data[:,9] > -1.642552, data[:,0], data[:,34])) -(data[:,16])) ,(8.16257858276367188)))-(np.where(data[:,12] <= 0.723143, np.where(data[:,13] <= 0.020437, data[:,13], data[:,30]), data[:,30])))) * 2.0),(8.16257858276367188)) , data[:,13])) +
0.250000*np.tanh(((((np.where(data[:,31] > 1.146065, data[:,31], np.where(data[:,17] > 1.146065, data[:,31], data[:,20])))-(data[:,9])))-(((data[:,9])-(np.where(data[:,16] <= 1.146065, data[:,8], np.where(data[:,31] <= -2.661638, data[:,20],(-1.0*(( np.where(( 4.0)<= 1.146065, data[:,8],(4.0)))))))))))) +
0.250000*np.tanh(((( 14.08313179016113281)) *(np.where(data[:,17] > 0.455081, data[:,27],(( np.where(np.where(data[:,9] > 0.742018,(( data[:,27])-(( -1.0*(( data[:,9]))))),(-1.0*(((( data[:,16])-(( -1.0*(( data[:,9])))))))))> 0.455081,(( data[:,27])-(data[:,9])) ,(-1.0*(( data[:,16])))))-(data[:,27])))))) +
0.250000*np.tanh(((((((((((((((data[:,0])-(data[:,28])))+(((np.where(data[:,22] > -0.440378, data[:,22], data[:,19])) -(data[:,9])))))* 2.0)) +(np.where(data[:,22] > -0.440378, data[:,32], data[:,19])))) * 2.0)) -(data[:,7])))* 2.0)) +
0.250000*np.tanh(np.where(((np.where(data[:,1] > 1.120178,(( data[:,26])-(((( 13.57181262969970703)) * 2.0))), np.where(data[:,31] > 1.120178, data[:,13],(( data[:,26])-(data[:,21])))))*(data[:,13])) > 0.323295,(4.0),(((((((((((( data[:,1])* 2.0)) * 2.0)) * 2.0)) +(data[:,31])))* 2.0)) * 2.0)))+
0.250000*np.tanh(np.where(data[:,9] > -0.949329,(((( np.where(data[:,13] > -0.949329,(( np.where(data[:,22] > -0.949329, np.where(((data[:,30])-(data[:,2])) > -0.949329, data[:,0], data[:,13]), data[:,31])) * 2.0),(10.26366519927978516)))* 2.0)) * 2.0),(10.26366519927978516)))+
0.250000*np.tanh(((((((data[:,19])-(np.where(data[:,9] <= 1.090363, np.where(data[:,4] > -0.079780, np.where(data[:,34] > -0.079780,(( data[:,12])* 2.0), np.where(data[:,31] > 0.350152, np.where(data[:,4] > -0.079780, data[:,34], data[:,19]), data[:,4])) , np.where(data[:,34] <= 1.090363, data[:,34], data[:,12])) , data[:,34])))) * 2.0)) * 2.0)) +
0.250000*np.tanh(np.where(data[:,9] <= 1.473305,(((((( np.where(data[:,9] <= -1.642552,(12.87214565277099609), np.where(data[:,28] <= -1.642552, data[:,16], np.where(data[:,16] <= 1.166741, np.where(data[:,34] <= -1.642552,(8.0),(((( data[:,6])* 2.0)) * 2.0)) , data[:,6])))) -(data[:,16])))* 2.0)) -(data[:,9])) , data[:,14])) +
0.250000*np.tanh(((((((((((((((((data[:,6])+(np.where(((((data[:,2])*(data[:,16])))-(data[:,9])) > 0.997275,(( data[:,9])*(data[:,6])) , data[:,0])))) -(data[:,9])))* 2.0)) -(data[:,16])))* 2.0)) * 2.0)) * 2.0)) -(((data[:,9])-(( 7.23242473602294922)))))) +
0.250000*np.tanh(((((((((( -1.0*(( np.where(np.where(data[:,9] <= -0.771750,(12.65231895446777344),(( np.where(data[:,6] <= -0.771750, data[:,6], data[:,6])) * 2.0)) <= 0.044529,(12.65231895446777344), data[:,9])))))+(data[:,0])))+(np.where(data[:,34] <= -0.215004, data[:,31], data[:,6])))) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((np.where(( -1.0*(( data[:,24])))> 1.633104,(8.10075950622558594),(( np.where(data[:,24] > 1.633104, data[:,31], np.where(np.where(data[:,31] <= 1.882838, data[:,33], data[:,31])> 0.821987, data[:,16], np.where(data[:,17] <= 1.633104, np.where(data[:,12] <= 1.633104, data[:,17],(-1.0*(( data[:,17])))) , data[:,16])))) * 2.0)))* 2.0)) * 2.0)) +
0.250000*np.tanh(((np.where(( -1.0*(( data[:,9])))<= 0.966479,(( np.where(( -1.0*(( data[:,0])))<= 0.966479,(( np.where(data[:,9] <= 0.966479, np.where(data[:,20] <= -0.771750, data[:,0], data[:,6]),(-1.0*(( data[:,9])))))* 2.0), data[:,0])) * 2.0),(5.0)))* 2.0)) +
0.250000*np.tanh(((((np.where(np.where(data[:,31] > 1.660163, data[:,31], data[:,25])> 1.473305,(6.07589149475097656), data[:,19])) -(np.where(data[:,26] <= -0.051274, data[:,25], np.where(( 6.07589149475097656)<= -0.051274, data[:,25],(( data[:,28])* 2.0)))))) -(np.where(data[:,27] <= -0.215004, data[:,27], data[:,25])))) +
0.250000*np.tanh(np.where(data[:,34] <= -0.526131, data[:,31],(( np.where(((data[:,34])+(data[:,0])) <= 0.386603, data[:,0], data[:,19])) +(((((data[:,23])+(((((np.where(data[:,35] <= -0.141852, data[:,35], data[:,6])) +(np.where(data[:,11] <= 0.386603, data[:,0], data[:,19])))) * 2.0)))) * 2.0)))))+
0.250000*np.tanh(((((((((np.where(data[:,34] > -1.642552, np.where(data[:,3] > 0.723280, data[:,7], data[:,0]),(6.0)))-(data[:,28])))+(data[:,17])))-(data[:,3])))+(np.where(np.where(data[:,24] > -1.642552, data[:,24],(6.0)) <= 1.882838, data[:,20],(6.0)))))+
0.250000*np.tanh(((((np.where(((data[:,22])/ 2.0)<= -0.168730, data[:,19], np.where(data[:,3] > 1.208423, np.where(data[:,9] <= -0.168730, data[:,0],(( data[:,13])-(data[:,28]))), data[:,0])))-(data[:,28])))-(np.where(((data[:,27])-(data[:,9])) <= 1.559958,(( data[:,13])-(data[:,1])) , data[:,9])))) +
0.250000*np.tanh(np.where(np.where(data[:,9] <= 0.639338, data[:,9],(-1.0*(( data[:,9])))) > -1.380841, np.where(np.where(( -1.0*(( data[:,9])))<= -1.380841, data[:,9],(( data[:,16])*(data[:,7])))<= 1.473305,(((13.63985157012939453)) *(((data[:,16])*(data[:,0])))) ,(-1.0*(((13.63985157012939453))))),(-1.0*(( data[:,9])))))+
0.250000*np.tanh(np.where(data[:,10] > 0.650612,(( data[:,20])-(data[:,13])) , np.where(np.where(data[:,34] <= 0.421563, data[:,14],(10.0)) > 0.356593,(((((( data[:,19])-(data[:,34])))* 2.0)) * 2.0), np.where(( -1.0*(( data[:,34])))> 1.875386,(3.0),(((( data[:,14])-(data[:,19])))-(( 10.44488620758056641)))))))+
0.250000*np.tanh(((((np.where(np.where(data[:,30] <= 0.863488, data[:,9], data[:,10])<= -1.380841,(12.34144687652587891),(((((( np.where(data[:,30] > -1.380841, data[:,0], data[:,30])) * 2.0)) -(data[:,9])))-(data[:,9])))) +(data[:,10])))+(data[:,10])))+
0.250000*np.tanh(np.where(np.where(data[:,9] > 1.261988, data[:,6],(-1.0*(( data[:,28])))) <= 1.030516, np.where(( -1.0*(( data[:,9])))> 1.261988,(13.13449764251708984),(( data[:,6])+(((((data[:,6])+(((( -1.0*(( data[:,9])))) +(( -1.0*(( data[:,28])))))))) +(( -1.0*(( data[:,16])))))))) ,(-1.0*(( data[:,9])))))+
0.250000*np.tanh(((np.where(( 11.08506107330322266)<= 0.353877,(( data[:,21])+(((( data[:,9])+(( 11.08506107330322266)))/2.0))), np.where(data[:,18] <= -0.215004,(( data[:,21])+(data[:,20])) , data[:,1])))+(( -1.0*(( np.where(((( data[:,9])+(data[:,16])) /2.0)> -0.168730, np.where(data[:,9] <= 1.882838, data[:,16], data[:,9]), data[:,9])))))))+
0.250000*np.tanh(np.where(data[:,9] <= -0.771750, np.where(data[:,16] <= 1.128479,(7.01105308532714844), data[:,31]), np.where(data[:,16] <= 1.128479, np.where(data[:,10] <= -0.771750, data[:,10], np.where(data[:,21] <= -0.771750, data[:,29],(((((( np.where(data[:,16] <= -0.771750,(-1.0*(((14.03783798217773438)))) , data[:,20])) * 2.0)) * 2.0)) * 2.0))),(-1.0*(((12.12108421325683594)))))))+
0.250000*np.tanh(((((((np.where(((( data[:,16])+(data[:,9])) /2.0)<= -0.215004,(( data[:,29])-(data[:,9])) , np.where(((data[:,16])+(np.where(data[:,29] <= 1.261988, data[:,27], data[:,13])))<= -0.051274,(((data[:,16])+(data[:,9])) /2.0), data[:,0])))* 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((data[:,17])-(((((((((((((((((data[:,9])-(np.tanh(( data[:,6])))))* 2.0)) -(np.where(data[:,17] <= 0.517973, data[:,2],(( np.tanh(( data[:,9])))-(data[:,2])))))) * 2.0)) -(data[:,1])))* 2.0)) -(data[:,9])))-(data[:,17])))))+
0.250000*np.tanh(np.where(data[:,14] > 1.072908, data[:,14], np.where(data[:,21] > -0.771750, np.where(data[:,33] <= 1.072908, np.where(data[:,7] > -0.771750,(((( data[:,10])* 2.0)) * 2.0),(( data[:,21])* 2.0)) , np.where(np.where(data[:,14] <= 1.072908, data[:,10], data[:,14])<= 0.818995, data[:,33], data[:,14])) , data[:,7])))+
0.250000*np.tanh(((np.where(data[:,34] <= -0.617524, data[:,2],(( data[:,23])-(np.where(np.where(data[:,2] > -0.617524, data[:,20], data[:,19])> -0.617524,(-1.0*(( data[:,10]))), data[:,34])))))+(np.where(data[:,34] <= -0.617524,(-1.0*(( data[:,9]))),(( data[:,19])-(np.where(data[:,9] <= 1.067605, data[:,12], data[:,9])))))))+
0.250000*np.tanh(np.where(np.where(data[:,33] <= 0.808173, data[:,31], data[:,33])> 1.882838,(9.71505928039550781),(-1.0*(( np.where(np.where(data[:,32] <= 0.353877, np.where(data[:,3] <= 0.353877, data[:,27], data[:,31]), np.where(data[:,33] <= 0.353877, data[:,33],(9.0)))<= -0.595707,(-1.0*(((10.51496696472167969)))) ,(10.51496696472167969)))))))+
0.250000*np.tanh(((((np.where(((data[:,21])-(data[:,0])) <= 0.211065, np.where(data[:,7] > -0.617524, np.where(data[:,7] > -0.617524,(6.0), data[:,9]), data[:,7]), data[:,0])) -(data[:,9])))-(np.where(data[:,7] <= 0.211065, data[:,12], data[:,7])))) +
0.250000*np.tanh(((( -1.0*(( np.where(np.where(data[:,15] > 0.719210, data[:,22], np.where(data[:,15] > 0.712642,(2.0),(( np.where(data[:,29] > 0.712642, data[:,15],(((( data[:,12])* 2.0)) * 2.0)))* 2.0)))> 0.662569, np.where(data[:,15] <= 0.942917,(2.0),(( data[:,29])* 2.0)) , data[:,15])))))-(data[:,8])))+
0.250000*np.tanh(np.where(((data[:,31])/ 2.0)> 0.863488,(9.0), np.where(((data[:,27])/ 2.0)> 0.650612, data[:,27],(-1.0*(( np.where(np.where(np.where(data[:,27] <= -0.215004,(8.24851703643798828), data[:,27])<= 0.521499, data[:,27],(( data[:,12])+(data[:,27])))<= -0.484568, data[:,27],(8.24851703643798828)))))))) +
0.250000*np.tanh(((((np.where(data[:,9] <= -1.380841, np.where(((data[:,16])/ 2.0)> 1.473305,(5.82739734649658203),(5.82739734649658203)) , np.where(((( data[:,31])+(data[:,13])) /2.0)<= -1.380841,(5.82739734649658203), np.where(data[:,32] > 0.127505,(( data[:,31])* 2.0),(-1.0*(( data[:,13])))))))-(((data[:,16])*(data[:,16])))))* 2.0)) +
0.250000*np.tanh(((((((((((((((((((np.where(((data[:,2])-(np.where(data[:,3] <= 0.421796, data[:,13],(5.84864044189453125)))) > 0.964277,(6.38215303421020508), np.where(((data[:,3])-(data[:,5])) > 1.409357, data[:,2], data[:,5])))-(data[:,9])))* 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(np.where(np.where(((data[:,10])*(data[:,34])) > 0.710928, data[:,34], np.where(data[:,7] <= -0.168730, np.where(( 13.23755168914794922)<= -0.279018, data[:,18], np.where(data[:,12] <= -0.168730, data[:,0], data[:,12])) , np.where(data[:,7] <= -0.168730, data[:,12], data[:,21])))<= -0.130419,(7.0), data[:,0])) +
0.250000*np.tanh(np.where(((data[:,15])/ 2.0)<= 0.587623,(-1.0*(( np.where(data[:,7] <= 0.015882,(((( data[:,9])-(data[:,29])))-(( -1.0*(((((( data[:,9])-(data[:,29])))-(np.where(((data[:,29])/ 2.0)<= -0.251953, data[:,15], data[:,20])))))))) , data[:,15])))) , data[:,22])) +
0.250000*np.tanh(( -1.0*(( np.where(np.where(data[:,34] > -0.693927, np.where(data[:,28] <= 1.409357,(( data[:,28])+(data[:,18])) ,(( data[:,28])+(data[:,18]))), data[:,9])<= -0.857418, data[:,9], np.where(data[:,28] > 1.409357, data[:,26],(((( data[:,21])-(data[:,34])))+(((data[:,21])-(data[:,10])))))))))) +
0.250000*np.tanh(((( 6.10348272323608398)) *(((np.where(data[:,21] > 0.019453, np.where(((((data[:,21])+(data[:,5])))+(data[:,12])) > -0.363200, data[:,0],(-1.0*(((( data[:,18])+(((data[:,5])+(data[:,7])))))))) ,(( np.where(data[:,18] > 0.019453,(6.10348272323608398), data[:,7])) * 2.0)))-(data[:,7])))))+
0.250000*np.tanh(( -1.0*(( np.where(np.where(np.where(data[:,33] > 1.330443,(((11.22687816619873047)) +(data[:,33])) , data[:,31])> 0.518135,(-1.0*(( data[:,34]))), data[:,33])<= 1.330443, np.where(data[:,33] <= 0.518135,(( data[:,18])+(((((data[:,28])* 2.0)) * 2.0))),(11.22687816619873047)) ,(( data[:,34])* 2.0)))))) +
0.250000*np.tanh(np.where(np.where(data[:,6] > 1.922295, np.where(np.where(( 7.0)> 0.104683, data[:,24], data[:,27])<= -0.215004,(7.0),(( data[:,24])*(data[:,30]))), data[:,28])> 0.750257, data[:,24], np.where(np.where(data[:,11] > 0.104683, data[:,27], data[:,28])<= -0.051274,(7.0), np.where(data[:,24] > 1.922295, data[:,24], data[:,0])))) +
0.250000*np.tanh(np.where(np.where(data[:,34] <= -0.693927, data[:,9], data[:,34])> -0.693927, np.where(np.where(data[:,24] > 0.942917,(2.71276187896728516), data[:,18])<= 0.182168, data[:,23],(( data[:,34])+(((((((data[:,19])+(((data[:,22])+(data[:,19])))))+(data[:,17])))+(data[:,2]))))),(2.71276187896728516)))+
0.250000*np.tanh(np.where(np.where(np.where(data[:,9] > 1.473305,(3.0),(-1.0*(( data[:,9])))) > 1.461239,(3.0), data[:,0])> 0.736905,(-1.0*(( data[:,9]))),(((((((( data[:,20])+(data[:,1])))+(((data[:,6])+(data[:,6])))))+(( -1.0*(( data[:,8])))))) +(data[:,0])))) +
0.250000*np.tanh(((np.where(data[:,25] > 0.025218, np.where(data[:,7] > 0.025218,(( data[:,3])-(data[:,16])) , data[:,25]), data[:,7])) +(((( -1.0*(( np.where(data[:,26] <= 0.387667, data[:,15],(( data[:,3])+(((data[:,16])+(((data[:,3])+(data[:,26])))))))))))-(data[:,9])))))+
0.250000*np.tanh(np.where(data[:,9] <= 0.025218, np.where(( -1.0*(( data[:,34])))> 0.887697,(6.0),(-1.0*(( np.where(data[:,34] > 0.559639, np.where(( -1.0*(( data[:,34])))> 0.887697,(3.0),(-1.0*(((7.0))))),(6.0)))))) , np.where(data[:,21] > 0.235213, data[:,0], data[:,7])))+
0.250000*np.tanh(( -1.0*(( np.where(np.where(data[:,33] > -0.771750, np.where(data[:,9] > -0.771750, data[:,32], data[:,34]), np.where(data[:,9] > -0.771750, np.where(data[:,32] > 0.638883, data[:,32], data[:,19]),(( data[:,32])* 2.0)))> 0.364583,(((( data[:,33])* 2.0)) * 2.0),(( data[:,34])* 2.0)))))) +
0.250000*np.tanh(np.where(data[:,34] <= -0.440378,(-1.0*(((((( data[:,15])+(((data[:,4])+(((data[:,8])+(data[:,15])))))))-(data[:,3]))))), np.where(data[:,13] <= 0.004808,(((((( data[:,8])+(data[:,15])))-(data[:,3])))-(data[:,3])) ,(((( data[:,32])* 2.0)) * 2.0)))) +
0.250000*np.tanh(((((( -1.0*(( data[:,20])))) +(((data[:,9])+(((((data[:,16])+(((((((data[:,9])+(((( -1.0*(( data[:,20])))) +(( -1.0*(( data[:,20])))))))) +(data[:,16])))+(data[:,16])))))+(data[:,16])))))))*(data[:,0])))+
0.250000*np.tanh(np.where(data[:,34] <= -0.138850, np.where(data[:,32] <= 0.025218, np.where(np.where(data[:,34] > -0.771750, data[:,21], data[:,32])<= 0.025218, np.where(data[:,34] <= 0.025218,(( data[:,30])-(data[:,34])) , data[:,34]), data[:,32]), data[:,24]), np.where(data[:,22] > -0.771750, np.where(data[:,27] > -0.771750, data[:,32], data[:,21]), data[:,19])))+
0.250000*np.tanh(np.where(data[:,35] > 0.252898,(9.08222293853759766),(((((( np.where(data[:,16] > 0.710928,(((((((data[:,32])+(data[:,0])) /2.0)) -(np.where(data[:,32] <= 0.214494, data[:,27], data[:,7])))) +(data[:,0])) ,(( data[:,32])*(data[:,27])))) * 2.0)) * 2.0)) * 2.0)))+
0.250000*np.tanh(np.where(np.where(data[:,34] > -0.771750,(-1.0*(( data[:,27]))), np.where(data[:,8] > -0.771750, data[:,14],(-1.0*(( data[:,34])))))> 1.355075,(14.36922359466552734), np.where(data[:,7] <= -0.215004, np.where(np.where(data[:,14] > -0.215004,(14.36922359466552734), data[:,8])<= -0.068007,(14.36922359466552734),(-1.0*(((14.36922359466552734))))), data[:,10])))+
0.250000*np.tanh(((((np.where(data[:,0] > -0.771750, np.where(data[:,7] > -0.857418, np.where(data[:,16] > -0.857418,(( np.where(data[:,18] > 0.356896, np.where(((( 6.43674898147583008)) *(data[:,35])) <= -0.193323, data[:,17], data[:,31]), data[:,20])) * 2.0), data[:,17]), data[:,16]),(((6.43674898147583008)) *(data[:,35])))) * 2.0)) * 2.0)) +
0.250000*np.tanh(np.where(((( data[:,9])+(((( 4.0)) +(data[:,9])))) /2.0)<= -0.160560,(4.0),(((((( np.where(((data[:,23])-(data[:,15])) <= 0.397971, np.where(data[:,18] > -0.693927,(( data[:,10])+(((( data[:,2])+(data[:,19])) /2.0))), data[:,23]), data[:,27])) * 2.0)) * 2.0)) * 2.0)))+
0.250000*np.tanh(np.where(data[:,35] > 0.099566,(11.10408306121826172), np.where(((data[:,9])* 2.0)<= 0.964277,(-1.0*(((((( np.where(( -1.0*(( data[:,9])))<= 0.136895, data[:,12], data[:,7])) +(data[:,13])))+(((np.where(data[:,33] <= 0.136895, data[:,18],(11.10408687591552734)))+(data[:,13]))))))), data[:,17])))+
0.250000*np.tanh(((((((((data[:,0])*(np.where(np.where(data[:,0] > 0.189428, data[:,7], data[:,34])> -0.693927,(((( data[:,33])+(((((((data[:,7])+(data[:,27])))+(data[:,16])))+(data[:,7])))))+(data[:,16])) , data[:,7])))) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((np.where(data[:,33] > 0.942917, data[:,16],(( data[:,0])*(data[:,16])))) -(((data[:,7])*(data[:,16])))))-(np.where(data[:,15] > -0.168730, np.where(data[:,0] > 0.232102, data[:,29], data[:,33]), np.where(data[:,29] <= -0.771750,(3.0), data[:,15])))))+
0.250000*np.tanh(np.where(data[:,14] <= 1.922295, np.where(data[:,18] > -0.111854, np.where(data[:,19] <= 1.922295,(((( data[:,6])-(data[:,23])))-(np.where(data[:,7] <= 0.291510, data[:,23],(7.0)))) ,(7.0)) , np.where(data[:,14] > -0.251953,(-1.0*(((7.0)))) , data[:,23])) , data[:,14])) +
0.250000*np.tanh(np.where(data[:,31] <= 1.922295, np.where(data[:,2] <= 1.922295, np.where(data[:,33] > 0.769945,(-1.0*(( data[:,34]))),(((( data[:,6])+(data[:,34])))+(((((data[:,6])*(data[:,31])))+(((data[:,15])*(data[:,28]))))))), data[:,33]), data[:,31])) +
0.250000*np.tanh(np.where(((data[:,20])+(((data[:,20])+(((data[:,4])+(np.where(data[:,24] <= 0.576942, data[:,23], data[:,18])))))))<= -0.141852,(( np.where(data[:,24] <= 0.576942, data[:,23], data[:,18])) -(data[:,34])) ,(((( data[:,34])-(((data[:,18])+(data[:,23])))))-(data[:,2])))) +
0.250000*np.tanh(np.where(data[:,31] > 1.687420, np.where(data[:,31] <= 1.777722, data[:,6], data[:,31]), np.where(np.where(data[:,6] <= 1.777722, data[:,17], data[:,15])> 0.235213,(-1.0*(( np.where(data[:,2] > 1.764468, np.where(data[:,17] <= 1.777722, data[:,6], data[:,17]), data[:,3])))) , np.where(data[:,18] > 0.088338,(-1.0*(( data[:,15]))), data[:,23])))) +
0.250000*np.tanh(np.where(data[:,24] <= 1.961752,(( np.where(data[:,33] > 0.460174, np.where(data[:,33] <= 0.818995, data[:,0], np.tanh(( data[:,16]))), np.where(data[:,24] > 0.460174, np.where(data[:,16] > 0.314787, data[:,0],(( data[:,3])*(data[:,33]))),(( data[:,3])*(data[:,7])))))*(( 5.31860017776489258))), data[:,24])) +
0.250000*np.tanh(np.where(((data[:,9])/ 2.0)> -0.771750, np.where(data[:,0] > -0.055946, np.where(data[:,18] > -0.055946, np.where(data[:,22] > -0.055946, data[:,13], data[:,22]), data[:,21]), np.where(((data[:,0])-(data[:,13])) <= 0.211662, np.where(data[:,21] > 0.200546,(( data[:,0])-(( 5.0))), data[:,18]),(5.0))),(5.0)))+
0.250000*np.tanh(np.where(data[:,3] > 1.735693, data[:,11], np.where(data[:,24] > 1.961752, np.where(((data[:,22])+(((data[:,20])+(data[:,20])))) > 0.526982, data[:,24], data[:,31]), np.where(data[:,27] > 0.059519,(((( data[:,22])-(data[:,25])))* 2.0),(((( data[:,20])+(data[:,25])))+(data[:,29])))))) +
0.250000*np.tanh(np.where(data[:,3] <= 1.777722, np.where(data[:,14] <= 1.777722, np.where(data[:,19] <= 1.777722, np.where(np.where(data[:,14] <= 0.958023, data[:,19], data[:,14])> -0.176999, np.where(data[:,6] > -0.176999, data[:,24], data[:,6]), data[:,22]), np.where(data[:,30] <= -0.051274,(( data[:,14])+(data[:,14])) , data[:,19])) , data[:,24]), data[:,30])) +
0.250000*np.tanh(((np.where(data[:,30] <= 0.178148, np.where(data[:,16] <= -0.238138, data[:,16],(((( data[:,23])-(data[:,19])))+(data[:,32]))),(( data[:,19])-(np.where(data[:,16] <= -0.238138, data[:,32],(( data[:,32])+(data[:,30])))))))+(((((data[:,32])+(data[:,19])))*(data[:,31])))))+
0.250000*np.tanh(((((((np.where(data[:,35] > 0.235213, data[:,35],(( data[:,11])+(((((np.where(data[:,27] <= 1.461239, data[:,35], data[:,27])) +(((data[:,35])+(((np.where(data[:,33] <= 1.461239,(( data[:,27])*(data[:,23])) , data[:,27])) +(data[:,1])))))))* 2.0)))))* 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((data[:,0])* 2.0)) * 2.0)) * 2.0)) * 2.0)) *(((((data[:,22])+(np.where(data[:,3] > 1.473305, data[:,30], data[:,28])))) +(np.where(data[:,0] > 0.966479, np.where(data[:,22] <= 0.961243,(((data[:,19])+(data[:,3])) /2.0), data[:,30]),(((data[:,19])+(data[:,8])) /2.0)))))))+
0.250000*np.tanh(np.where(data[:,35] > 0.162846,(11.48221397399902344),(( np.where(data[:,0] > -0.551505, np.where(data[:,19] <= 0.771022, np.where(data[:,0] <= 0.771022, np.where(data[:,13] <= 0.771022, np.where(( -1.0*(( data[:,4])))> 0.682501, data[:,4], data[:,16]), data[:,33]), data[:,33]), data[:,19]),(((data[:,0])+(( -1.0*(( data[:,16])))))/2.0)))* 2.0)))+
0.250000*np.tanh(((((((data[:,17])* 2.0)) * 2.0)) *(((((((((data[:,5])-(np.where(np.where(data[:,17] > 0.308331, data[:,5],(-1.0*(( np.where(data[:,2] > 0.001170, data[:,17], data[:,5])))))> 1.843381,(12.31445407867431641), data[:,8])))) -(data[:,3])))-(data[:,3])))-(data[:,2])))))+
0.250000*np.tanh(np.where(data[:,7] > 1.367989,(( data[:,3])* 2.0),(((( np.where(data[:,34] > 1.367989, data[:,18],(( np.where(( -1.0*(( data[:,18])))> 1.367989, data[:,7], np.where(( -1.0*(( data[:,23])))> 1.367989, data[:,18],(( data[:,6])-(data[:,4])))))* 2.0)))* 2.0)) * 2.0)))+
0.250000*np.tanh(((data[:,32])*(((((((((np.where(np.where(data[:,32] <= 0.309785, data[:,34],(( data[:,13])+(np.where(data[:,32] <= 0.309785, data[:,34], data[:,32])))) > -1.313004, data[:,13], data[:,34])) +(((((data[:,2])+(data[:,14])))+(data[:,34])))))+(data[:,21])))* 2.0)) * 2.0)))) +
0.250000*np.tanh(((np.where(((data[:,27])/ 2.0)> 0.511380, np.where(data[:,8] <= 0.526159, data[:,27], data[:,0]),(((((( data[:,20])-(data[:,27])))+(data[:,0])))-(np.where(np.where(data[:,0] <= 0.526159, data[:,7],(3.0)) <= 0.526159, data[:,33],(3.0)))))) -(data[:,8])))+
0.250000*np.tanh(np.where(data[:,33] > 0.844262, data[:,16], np.where(data[:,20] > -0.218421, np.where(np.where(data[:,16] > 1.287894,(1.88648033142089844), data[:,3])<= 0.435972, np.where(data[:,33] > 0.634564, data[:,34], np.where(data[:,0] > 0.362933, data[:,33],(9.0))),(( data[:,0])-(( 1.88648033142089844)))) , data[:,0])))+
0.250000*np.tanh(np.where(((( data[:,7])+(data[:,20])) /2.0)<= -0.141852,(( data[:,18])-(data[:,34])) ,(( np.where(((( data[:,18])+(data[:,25])) /2.0)<= -0.141852, np.where(data[:,22] > 1.166741, data[:,18],(((( 6.0)) +(data[:,22])) /2.0)) ,(( data[:,22])-(((data[:,18])-(data[:,34])))))) -(data[:,16])))) +
0.250000*np.tanh(np.where(data[:,19] <= 0.265857, np.where(data[:,35] > 0.157347,(12.58334350585937500), np.where(data[:,0] > -1.119129,(((( np.where(np.tanh(( data[:,19])) > -1.119129, data[:,33], data[:,29])) -(data[:,18])))-(((data[:,29])-(data[:,4])))) , data[:,0])) ,(((( data[:,0])-(data[:,4])))-(data[:,33])))) +
0.250000*np.tanh(np.where(data[:,1] <= 1.764468, np.where(data[:,14] <= 1.735693, np.where(np.where(data[:,0] <= -0.062420, data[:,26], data[:,1])> 0.319913, data[:,0],(( np.where(np.where(data[:,25] <= 0.104872,(7.0), data[:,1])> 0.469333, data[:,21], np.where(data[:,9] > 0.656052, data[:,0], data[:,34])))* 2.0)) ,(7.0)) ,(7.0)))+
0.250000*np.tanh(np.where(data[:,13] > -1.904264, np.where(data[:,34] > -1.904264, np.where(((data[:,30])-(data[:,29])) > -1.904264,(((( data[:,16])-(((((((data[:,29])-(data[:,31])))-(data[:,34])))-(data[:,13])))))*(data[:,32])) ,(3.87690520286560059)) ,(3.87690520286560059)) ,(10.0)))+
0.250000*np.tanh(np.where(data[:,23] > 0.104692,(-1.0*(( data[:,8]))), np.where(( -1.0*(( data[:,6])))<= 0.682843, np.where(data[:,20] <= 0.682843, np.where(data[:,7] <= 0.682843, np.where(data[:,20] <= -0.168730, data[:,20], np.where(data[:,0] > -1.119129,(2.0), data[:,0])) , data[:,23]), data[:,6]),(-1.0*(((2.0)))))))+
0.250000*np.tanh(np.where(data[:,20] <= 0.235143, data[:,18], np.where(data[:,18] > 0.353450,(-1.0*(( np.where(data[:,16] > 0.353450, data[:,16], np.where(data[:,9] > 0.353450, data[:,16], np.where(data[:,9] <= 0.825235,(8.34528732299804688), data[:,18])))))) , np.where(data[:,16] <= 1.231151, data[:,16],(-1.0*(((8.34528732299804688)))))))) +
0.250000*np.tanh(np.where(np.where(data[:,31] > 1.646921, data[:,18], data[:,0])<= -0.857418, np.where(data[:,18] > 1.646921, data[:,31], data[:,0]), np.where(data[:,2] <= 0.753641, np.where(data[:,18] <= -0.440378, data[:,7], np.where(((data[:,34])*(data[:,5])) > 1.764468, data[:,31], np.where(data[:,32] > 0.587623, data[:,34], data[:,5]))), data[:,18])))+
0.250000*np.tanh(np.where(data[:,29] > -0.857418, np.where(data[:,0] <= 1.196386, np.where(((data[:,29])+(data[:,7])) <= -0.008534, np.where(data[:,27] > 1.287894, data[:,28],(( data[:,0])*(((data[:,28])+(data[:,13]))))),(-1.0*(((( data[:,7])+(data[:,15])))))) , data[:,7]),(( data[:,7])+(data[:,15])))) +
0.250000*np.tanh(np.where(data[:,23] <= 0.566366,(-1.0*(( np.where(data[:,16] <= 0.117113, np.where(data[:,16] <= 0.956985, np.where(data[:,9] <= 0.956985, np.where(data[:,2] > 0.123877, data[:,12],(( data[:,0])* 2.0)) , np.where(data[:,23] <= -0.215004, data[:,2], data[:,23])) , data[:,12]), np.where(data[:,23] <= -0.771750, data[:,9], data[:,12]))))), data[:,22])) +
0.250000*np.tanh(np.where(((data[:,6])+(data[:,27])) <= 0.939287, np.where(data[:,1] > 0.432248, data[:,1], np.where(data[:,7] > -0.036252, np.where(data[:,14] > 0.491927, np.where(data[:,27] <= 0.887697, np.where(data[:,19] > 0.887697, np.where(data[:,19] > 0.887697, data[:,19], data[:,19]), data[:,8]), data[:,27]), data[:,3]), data[:,15])) , data[:,31])) +
0.250000*np.tanh(( -1.0*(( np.where(np.where(data[:,20] <= -0.771750,(4.33407878875732422), np.where(data[:,18] <= -0.771750, data[:,34], data[:,5])) <= 0.863488, np.where(data[:,26] <= 0.448470, np.where(np.where(( -1.0*(( data[:,20])))> 0.863488, data[:,26], data[:,27])<= 0.863488, data[:,24], data[:,34]),(4.33407878875732422)) , data[:,34])))))+
0.250000*np.tanh(np.where(data[:,9] <= -1.642552,(10.10909461975097656), np.where(data[:,27] <= -1.642552,(10.10909461975097656), np.where(data[:,22] <= 0.576942,(-1.0*(( np.where(np.where(data[:,27] > 1.764468,(10.10909461975097656), data[:,9])> 0.589549, data[:,9],(((((( data[:,18])-(data[:,22])))-(data[:,10])))-(data[:,10])))))) , data[:,27])))) +
0.250000*np.tanh(((np.where(data[:,27] > -0.251953, np.where(data[:,31] > 0.576503, data[:,32], data[:,23]), data[:,15])) +(np.where(data[:,32] <= 0.576503, np.where(data[:,34] <= 0.365952, np.where(np.where(np.where(data[:,15] <= 0.365952, data[:,11], data[:,27])<= -0.141852, data[:,24], data[:,25])> -0.141852, data[:,11],(2.08277153968811035)) , data[:,29]), data[:,27])))) +
0.250000*np.tanh(np.where(data[:,0] > -0.857418, np.where(data[:,28] > 0.767455, data[:,14], np.where(data[:,7] <= 0.672977,(( data[:,16])-(data[:,0])) , data[:,3])) ,(((((((((((( data[:,0])-(data[:,16])))-(data[:,9])))-(data[:,16])))-(data[:,9])))-(data[:,7])))-(data[:,16])))) +
0.250000*np.tanh(np.where(data[:,19] > 0.178148, np.where(((data[:,9])+(data[:,13])) > 0.235143, data[:,18], np.where(data[:,30] > 0.235143,(( data[:,19])+(data[:,9])) , data[:,30])) ,(-1.0*(( np.where(((data[:,18])+(data[:,30])) > -0.173579, data[:,7],(( data[:,24])+(((data[:,19])+(data[:,9])))))))))) +
0.250000*np.tanh(np.where(data[:,30] <= 1.777722, np.where(data[:,35] > 0.015882, np.where(data[:,24] <= 1.777722, np.where(data[:,35] > 0.015882, np.where(data[:,18] <= 0.186160,(( data[:,7])-(data[:,3])) ,(( data[:,34])-(data[:,18]))), data[:,35]), data[:,24]), np.where(data[:,26] <= 0.015882, data[:,18], data[:,17])) , data[:,18])) +
0.250000*np.tanh(np.where(data[:,7] > -0.168730, np.where(data[:,31] <= 0.400427, data[:,3], np.where(data[:,34] > 0.275361,(8.0), np.where(data[:,27] > 1.166741,(8.0), data[:,10]))), np.where(data[:,31] <= 1.803924,(( np.where(data[:,31] > -0.857418,(8.0), data[:,31])) *(data[:,7])) , data[:,31])))+
0.250000*np.tanh(np.where(data[:,3] > 0.445481, data[:,30],(((((((((( data[:,17])+(data[:,22])))+(data[:,32])))+(np.where(data[:,24] <= -0.215004,(( data[:,17])+(((data[:,17])+(data[:,17])))) , data[:,13])))) +(data[:,23])))*(data[:,27])))) +
0.250000*np.tanh(((np.where(np.where(((np.where(data[:,7] <= 0.045202, np.where(data[:,0] <= 0.045202,(( data[:,7])*(data[:,29])) ,(5.99392652511596680)) , np.where(data[:,0] <= 0.821987, data[:,7],(5.34149551391601562)))) -(data[:,0])) > 1.253634,(5.34149551391601562), data[:,16])> 1.469977, data[:,29],(7.86968517303466797)))-(( 5.34149551391601562)))) +
0.250000*np.tanh(np.where(data[:,16] > 0.770379, data[:,32], np.where(data[:,23] <= 0.368970, np.where(data[:,16] > -0.440378, np.where(data[:,25] <= -0.800310,(6.54782438278198242), np.where(data[:,34] <= 0.368970, np.where(( 6.54782438278198242)<= 0.329734, data[:,20], data[:,18]), data[:,20])) , data[:,18]),(-1.0*(( np.where(( -1.0*(( data[:,20])))<= 0.368970, data[:,23], data[:,25])))))))+
0.250000*np.tanh(np.where(np.where(data[:,35] <= 0.181368, data[:,2], np.where(( 8.35766887664794922)<= 0.181368,(8.35766887664794922), data[:,14])) > 0.470872, data[:,31], np.where(data[:,9] > 1.553044,(( data[:,2])* 2.0), np.where(data[:,13] <= 1.685554, np.where(data[:,31] > -0.857418, data[:,6], np.where(((data[:,13])* 2.0)> 0.181368, data[:,14],(8.35766887664794922))),(8.35766887664794922)))))+
0.250000*np.tanh(np.where(data[:,7] > 0.368970, np.where(data[:,11] <= -1.119129, data[:,34], data[:,3]), np.where(data[:,19] > -0.215004, data[:,11], np.where(data[:,16] > -1.119129,(( np.where(data[:,34] > -1.119129,(( np.where(data[:,3] <= 0.307929, data[:,20], data[:,7])) -(data[:,19])) ,(9.0)))-(data[:,31])) , data[:,11])))) +
0.250000*np.tanh(((data[:,12])-(np.where(( -1.0*(((( data[:,35])* 2.0)))) > -0.401576, np.where(np.where(np.where(np.where(((data[:,0])* 2.0)> -0.188524,(10.09239006042480469), data[:,16])> -0.440378, data[:,0], data[:,18])> -0.857418, np.where(data[:,9] > -0.857418, data[:,16],(10.09239006042480469)) ,(10.09239006042480469)) > 1.292493,(10.09239006042480469), data[:,18]), data[:,9])))) +
0.250000*np.tanh(np.where(((( np.where(np.where(( 8.92344284057617188)<= 1.138051, data[:,8],(-1.0*(( data[:,34])))) > 1.764468,(8.92344284057617188),(-1.0*(( data[:,14])))))+(data[:,23])) /2.0)<= -0.079780,(( data[:,18])-(( -1.0*(( data[:,10]))))),(-1.0*(((( data[:,8])-(( -1.0*(( np.where(data[:,10] <= 0.102597, data[:,8], data[:,18])))))))))))+
0.250000*np.tanh(np.where(np.where(data[:,0] > 1.764468, data[:,3], data[:,16])> 0.673108, data[:,0], np.where(data[:,3] > 0.002323, data[:,22], np.where(data[:,34] > 0.025218, data[:,20], np.where(data[:,3] > 1.327326, data[:,20], np.where(data[:,6] > 0.193906, data[:,33], data[:,22])))))) +
0.250000*np.tanh(((np.where(np.where(data[:,33] <= 0.423442, data[:,25], data[:,33])> 1.003442,(( data[:,7])-(data[:,34])) , np.where(data[:,27] > -1.380841,(( np.where(((data[:,33])*(data[:,19])) > -0.771750, data[:,34], data[:,33])) * 2.0),(( data[:,33])* 2.0)))) *(((((((data[:,33])* 2.0)) * 2.0)) * 2.0)))) +
0.250000*np.tanh(np.where(((np.where(((( np.where(data[:,12] > 1.473305, np.where(( 5.0)<= 0.653900, np.where(data[:,0] > 0.758647, np.where(data[:,9] > 0.758647, data[:,11], data[:,12]),(4.0)) ,(5.0)) , data[:,9])) +(data[:,16])) /2.0)> -0.072284, data[:,0], data[:,11])) * 2.0)> -1.119129,(5.0),(-1.0*(((4.0)))))) +
0.250000*np.tanh(np.where(data[:,19] > 1.327326,(( data[:,18])+(((data[:,18])+(data[:,18])))) , np.where(data[:,18] <= -1.119129, np.where(data[:,31] <= 0.190869, data[:,20], np.where(data[:,18] <= -1.119129, data[:,18], data[:,18])) , np.where(np.where(data[:,18] <= 0.964277, data[:,31], data[:,31])> 1.327326, data[:,17], data[:,22])))) +
0.250000*np.tanh(((data[:,0])*(np.where(np.where(data[:,12] > 1.461239, np.where(data[:,12] > -0.260168, data[:,5], np.where(data[:,9] > 1.461239, np.where(data[:,7] <= 0.769945, data[:,12], data[:,7]), np.where(data[:,12] <= -0.260168, data[:,7], data[:,21]))), data[:,23])<= -0.260168, data[:,12], np.where(data[:,12] <= -0.260168, data[:,7], data[:,21])))))+
0.250000*np.tanh(np.where(np.where(data[:,5] <= 0.133034, np.where(data[:,28] <= 0.543482, np.where(np.where(data[:,21] <= 0.544659, data[:,28], data[:,28])<= 0.543482, data[:,14], data[:,9]), data[:,0]),(-1.0*(( data[:,9])))) > -0.193323, data[:,32],(-1.0*(( np.where(data[:,21] <= 0.544659, data[:,32], np.where(data[:,28] > 0.526159, data[:,21], data[:,9])))))))+
0.250000*np.tanh(np.where(data[:,21] <= -0.215004,(-1.0*(( data[:,3]))),(( np.where(( -1.0*(( data[:,9])))<= 1.892933, np.where(((data[:,13])-(data[:,0])) > 0.958023, data[:,0], data[:,6]),(-1.0*(( data[:,9])))))+(np.where(data[:,31] > 0.340377, data[:,13], np.where(data[:,0] > 0.340377, data[:,3],(-1.0*(( data[:,13])))))))))+
0.250000*np.tanh(np.where(data[:,18] > -0.251953,(((( np.where(data[:,13] <= 0.848366, data[:,5], data[:,13])) -(data[:,4])))-(np.where(np.where(data[:,13] <= 0.848366, data[:,24], np.where(data[:,18] <= -0.215004, data[:,23], np.where(( 10.0)<= 0.848366, data[:,5], data[:,23])))<= -0.215004, data[:,7], data[:,23]))), data[:,23])) +
0.250000*np.tanh(np.where(data[:,2] <= 0.710089,(( data[:,25])*(((((np.where(np.where(data[:,30] > 0.502876, data[:,16], data[:,25])<= 0.412040, data[:,5], data[:,23])) -(data[:,7])))-(np.tanh(( data[:,33])))))) , np.where(data[:,23] <= 0.412040, data[:,33], np.where(data[:,5] <= 0.769945, data[:,2], data[:,33])))) +
0.250000*np.tanh(((np.where(np.where(data[:,11] > 1.646921, data[:,21], data[:,13])<= 0.631443, data[:,10],(((( data[:,31])+(data[:,21])))+(((((data[:,0])+(((data[:,10])+(data[:,33])))))+(((data[:,31])+(data[:,23])))))))) *(data[:,21])))+
0.250000*np.tanh(((np.where(data[:,14] > 1.287894,(6.0), data[:,23])) *(((((np.where(data[:,20] <= 0.742147,(6.0), data[:,14])) *(((np.where(data[:,12] <= 1.287894,(((data[:,27])+(((data[:,12])-(data[:,23])))) /2.0), data[:,5])) -(data[:,20])))))-(data[:,20])))))+
0.250000*np.tanh(((np.where(data[:,18] <= -1.119129, data[:,7],(((( np.where(data[:,12] > -0.897036,(( np.where(data[:,33] <= 0.284696, np.where(data[:,25] <= 0.392218, np.where(data[:,25] <= 0.392218, data[:,33], data[:,31]), data[:,24]), data[:,22])) * 2.0), data[:,18])) -(data[:,25])))* 2.0)))-(data[:,9])))+
0.250000*np.tanh(np.where(np.where(data[:,30] <= 0.134221, data[:,34], data[:,9])> 0.134221, np.where(data[:,34] > 0.134221, np.where(data[:,5] <= 0.028370, np.where(data[:,34] > 0.788362, data[:,34], data[:,32]), data[:,23]), data[:,5]), np.where(np.where(data[:,9] <= -1.642552, data[:,34], data[:,19])<= -0.440378, data[:,16],(( data[:,34])+(data[:,11])))))+
0.250000*np.tanh(np.where(data[:,35] > -0.019906, np.where(((np.where(data[:,26] > 0.701092, np.where(data[:,16] > 0.701092, np.where(data[:,19] > 0.701092, data[:,35], data[:,16]), data[:,16]), data[:,10])) -(data[:,19])) > 0.025218, data[:,16],(((( data[:,19])-(data[:,16])))-(data[:,16]))),(( data[:,18])-(data[:,16])))) +
0.250000*np.tanh(np.where(np.where(data[:,31] > 0.232102,(( data[:,21])*(data[:,20])) , data[:,9])<= 0.350152, np.where(data[:,3] > 0.102020, data[:,21], np.where(data[:,15] <= 0.724514, np.where(data[:,21] <= 0.693189, np.where(data[:,15] <= 0.693189,(-1.0*(( data[:,25]))), data[:,20]),(( data[:,25])*(data[:,25]))), data[:,20])) , data[:,0])) +
0.250000*np.tanh(np.where(data[:,22] > 0.189428, np.where(data[:,21] > -0.539330, np.where(data[:,19] > -0.051274, np.where(data[:,8] > -0.051274, np.where(data[:,24] <= 0.316750, data[:,24], data[:,13]), np.where(data[:,19] > 0.189428, data[:,24], data[:,8])) , data[:,13]),(-1.0*(( data[:,8])))) ,(( data[:,6])*(data[:,24])))) +
0.250000*np.tanh(((data[:,23])*(np.where(data[:,16] <= 0.045667,(( data[:,9])+(((data[:,2])+(data[:,16])))) , np.where(data[:,10] <= -0.268848, np.where(((( data[:,15])+(data[:,16])) /2.0)<= 0.022226,(( data[:,9])+(data[:,9])) ,(4.19179296493530273)) ,(((( data[:,9])+(data[:,9])))+(data[:,15])))))))+
0.250000*np.tanh(np.where(data[:,2] > 0.054675, np.where(data[:,19] > -0.693927,(-1.0*(( data[:,12]))), np.where(data[:,12] <= 0.488176, data[:,2],(9.0))),(( data[:,2])-(((data[:,33])*(np.where(np.where(data[:,4] > 1.196386,(9.0), np.where(data[:,2] > 1.196386, data[:,4], data[:,32])) <= 0.488176, data[:,19],(10.57415390014648438)))))))) +
0.250000*np.tanh(np.where(np.where(data[:,2] <= 0.826775, np.where(np.where(data[:,16] <= 0.383448, data[:,26], np.where(data[:,26] > 0.710089, np.where(data[:,19] > 0.710089, data[:,19], data[:,26]), data[:,19])) > 0.710089, data[:,26], data[:,19]), data[:,0])> 0.040708,(-1.0*(( data[:,16]))), data[:,16])) +
0.250000*np.tanh(np.where(data[:,14] <= 0.802554, np.where(data[:,10] > 1.196386, data[:,10],(( np.where(data[:,8] > 0.843544, data[:,8], data[:,2])) -(np.where(data[:,12] > -0.215004, np.where(np.where(data[:,8] > -0.215004,(6.0), data[:,14])> -0.215004,(6.0), data[:,14]), data[:,32])))) , np.where(data[:,14] <= 1.687420, data[:,32], data[:,12])))+
0.250000*np.tanh(np.where(data[:,7] > 0.399173, np.where(data[:,3] > -0.184266, data[:,0], data[:,17]),(( np.where(data[:,16] > 0.710089, np.where(( -1.0*(( data[:,0])))<= 0.710089, data[:,16], data[:,0]), np.where(data[:,0] <= -0.693927, np.where(data[:,9] <= -0.693927,(( data[:,7])*(data[:,12])) , data[:,20]), data[:,7])))-(data[:,3])))) +
0.250000*np.tanh(np.where(np.where(data[:,26] > 0.802554, data[:,31], np.where(data[:,2] > 0.699030,(3.26440286636352539), data[:,19])) > 1.573971,(3.26440286636352539),(-1.0*(( np.where(np.where(data[:,20] <= 0.040708, np.where(data[:,26] > 0.699030,(-1.0*(((3.26440286636352539)))) ,(3.26440286636352539)) , np.where(( 3.26440286636352539)<= 1.008238, data[:,7], data[:,7])) > 0.641280,(3.26440286636352539), data[:,19])))))) +
0.250000*np.tanh(((data[:,18])*(np.where(data[:,30] > 0.965514, np.where(data[:,2] > 0.818995,(9.0), data[:,18]), np.where(np.where(data[:,19] > 0.965514, data[:,19], np.where(data[:,30] <= 0.103746, data[:,14], data[:,30])) > 0.965514, np.where(data[:,30] <= 0.308331,(9.0), data[:,18]), data[:,33])))))+
0.250000*np.tanh(np.where(data[:,35] <= -0.079780, np.where(np.where(data[:,11] <= 0.530017, data[:,23], data[:,14])<= 0.530017, data[:,0],(11.45157623291015625)) , np.where(((( data[:,4])+(data[:,29])) /2.0)> -0.215004,(-1.0*(( data[:,23]))),(( np.where(((data[:,23])-(data[:,4])) <= 0.530017, data[:,4],(11.45157623291015625)))-(( -1.0*(( data[:,4])))))))) +
0.250000*np.tanh(((((np.where(data[:,10] > -0.693927, np.where(data[:,8] <= 0.521352, data[:,19],(( np.tanh(((7.0)))) -(data[:,2]))), data[:,21])) -(((((data[:,1])-(np.where(data[:,8] > -0.693927, data[:,23], data[:,5])))) -(np.where(data[:,10] > -0.693927, data[:,18], data[:,21])))))) *(data[:,5])))+
0.250000*np.tanh(((np.where(data[:,22] <= 0.710089, np.where(data[:,11] <= 0.710089,(((( data[:,32])* 2.0)) * 2.0), np.where(((data[:,32])* 2.0)<= 0.710089,(((( data[:,33])* 2.0)) * 2.0),(( data[:,31])* 2.0))), data[:,18])) *(np.where(np.where(data[:,17] > -0.051274, data[:,11], data[:,33])> 0.486327, data[:,22], data[:,13])))) +
0.250000*np.tanh(np.where(data[:,13] > 0.921294,(-1.0*(( data[:,9]))), np.where(data[:,0] <= -0.263843, np.where(np.where(data[:,9] <= 0.310448, data[:,34],(6.73074007034301758)) <= -0.263843, data[:,34], data[:,29]), np.where(data[:,2] <= 0.710089, np.where(data[:,9] <= 0.710089, data[:,16], np.where(data[:,16] <= 0.310448,(6.73074007034301758),(-1.0*(((6.73074007034301758)))))) , data[:,33])))))
 def GPClusterII(data):
return(0.250000*np.tanh(((((((((((((np.where(data[:,10] > 0.672977, data[:,21],(( data[:,21])* 2.0)))* 2.0)) -(data[:,10])))-(data[:,3])))-(data[:,3])))*(( 6.0)))) -(((data[:,21])-(data[:,3])))))+
0.250000*np.tanh(((( 12.64479064941406250)) *(( -1.0*(((( data[:,0])-(np.where(( -1.0*(( data[:,28])))<= 0.821987, np.where(data[:,17] <= 0.821987,(-1.0*(( data[:,17]))), np.where(data[:,17] > 0.653900,(-1.0*(((12.64479064941406250)))) , data[:,17])) ,(((( data[:,17])-(data[:,0])))-(data[:,17])))))))))))+
0.250000*np.tanh(((((((((data[:,21])*(( 9.35892677307128906)))) *(((( 8.0)) +(data[:,21])))))*(( 9.35892677307128906)))) *(((((8.0)) +(( 13.41551113128662109)))/2.0)))) +
0.250000*np.tanh(((((((((np.where(data[:,30] <= 2.050536, np.where(data[:,17] <= 2.050536,(((((( np.where(data[:,0] <= 2.050536, data[:,7], data[:,7])) -(data[:,0])))* 2.0)) +(data[:,21])) , data[:,21]),(( data[:,0])+(data[:,21])))) -(data[:,0])))* 2.0)) +(data[:,21])))*(( 11.03143119812011719)))) +
0.250000*np.tanh(((np.where(((data[:,30])* 2.0)<= 1.829230,(((10.0)) *(((((data[:,13])-(data[:,2])))-(data[:,3])))) ,(((((((((( data[:,3])-(data[:,30])))-(data[:,2])))-(data[:,3])))/ 2.0)) -(( 10.0)))))-(((((data[:,4])* 2.0)) * 2.0)))) +
0.250000*np.tanh(((((((((((((((data[:,7])-(data[:,0])))* 2.0)) -(data[:,17])))* 2.0)) -(((data[:,2])+(np.where(((((((data[:,7])-(np.where(data[:,2] <= 1.926984, data[:,0], data[:,2])))) -(data[:,17])))* 2.0)<= 1.926984, data[:,0], data[:,17])))))) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((((((((np.where(np.where(((data[:,0])-(data[:,0])) > 1.473305, data[:,9], data[:,13])> 1.473305, data[:,2], data[:,13])) -(((data[:,30])*(data[:,30])))))-(data[:,0])))-(data[:,2])))-(data[:,2])))* 2.0)) -(data[:,2])))* 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((((((((((data[:,21])+(data[:,7])))-(data[:,0])))* 2.0)) -(data[:,0])))* 2.0)) * 2.0)) -(data[:,0])))-(((((data[:,21])-(data[:,7])))-(data[:,0])))))* 2.0)) +
0.250000*np.tanh(((( 8.37674140930175781)) *(((( 8.37674140930175781)) *(((((((data[:,21])*(data[:,21])))*(np.where(((((((data[:,21])+(( 13.85422039031982422)))) *(np.where(( 8.37674140930175781)> 0.921294,(( data[:,21])* 2.0),(8.37673759460449219)))))* 2.0)> -1.904264,(8.37674140930175781), data[:,21])))) -(data[:,26])))))))+
0.250000*np.tanh(((np.where(((data[:,16])* 2.0)<= -1.642552, data[:,16], np.where(data[:,21] <= 0.786085, np.where(np.where(( 14.09272003173828125)<= 0.786085,(14.09272003173828125),(( data[:,16])* 2.0)) <= -1.642552, data[:,21], data[:,21]), data[:,16])))*(((( 14.09272003173828125)) * 2.0)))) +
0.250000*np.tanh(((((((np.where(np.tanh(((4.0)))> 1.985439,(( data[:,30])* 2.0),(((((((((( data[:,7])-(np.where(data[:,30] > 0.921294,(4.0), data[:,0])))) * 2.0)) * 2.0)) * 2.0)) -(data[:,7])))) * 2.0)) -(np.where(data[:,30] > 0.921294,(4.0), data[:,0])))) * 2.0)) +
0.250000*np.tanh(np.where(( -1.0*(((((-1.0*(((-1.0*(( data[:,30])))))))-(((((data[:,26])/ 2.0)) / 2.0)))))) > 0.802554,(-1.0*(((7.0)))) , np.where(data[:,30] > 0.710089,(((7.0)) -(( 14.94857025146484375))), np.where(((( -1.0*(( data[:,26])))) / 2.0)> 0.588421,(-1.0*(((-1.0*(( data[:,26])))))) ,(7.0)))))+
0.250000*np.tanh(((np.where(((data[:,21])* 2.0)> -1.642552, np.where(( -1.0*(( data[:,13])))> -1.642552,(( data[:,21])-(( -1.0*(( data[:,13]))))), data[:,21]), data[:,21])) *(np.where(data[:,21] > 1.925722,(( data[:,13])-(((data[:,21])* 2.0))),(14.99458599090576172)))))+
0.250000*np.tanh(((((((((((((data[:,16])-(data[:,2])))-(data[:,17])))-(data[:,0])))* 2.0)) -(data[:,0])))+(((((((((data[:,16])-(data[:,2])))-(data[:,0])))-(np.where(data[:,17] <= 0.844262, data[:,0], data[:,17])))) -(data[:,0])))))+
0.250000*np.tanh(((((((((((((((((data[:,16])+(data[:,13])))* 2.0)) -(((data[:,0])* 2.0)))) * 2.0)) * 2.0)) -(np.where(((data[:,0])* 2.0)<= 1.829230,(( data[:,2])* 2.0), data[:,0])))) * 2.0)) -(((data[:,13])+(data[:,0])))))+
0.250000*np.tanh(((((((np.where(( 8.01237869262695312)<= 0.235213, np.where(((((data[:,21])-(( 8.01237869262695312)))) -(data[:,35])) > 0.588421, data[:,21],(10.0)) ,(((8.01237869262695312)) * 2.0)))* 2.0)) * 2.0)) *(((((data[:,21])-(data[:,35])))-(data[:,35])))))+
0.250000*np.tanh(((((data[:,13])+(np.where(data[:,13] <= 1.922295,(( data[:,21])-(data[:,0])) ,(( data[:,21])-(np.where(data[:,13] <= 1.922295, data[:,21],(14.65521430969238281)))))))) *(np.where(data[:,21] > 1.473305, np.where(( 14.65521430969238281)<= 1.922295,(( data[:,21])-(data[:,0])) , data[:,5]),(14.65521430969238281)))))+
0.250000*np.tanh(((((((((((((((((data[:,7])-(data[:,3])))-(( -1.0*(( data[:,16])))))) -(np.where(data[:,16] <= 0.769945, np.where(data[:,17] <= 0.769945, data[:,16], data[:,17]), data[:,17])))) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((((((((((((((np.where(( -1.0*(( data[:,26])))> 1.441913, data[:,26],(((-1.0*(( data[:,3])))) -(data[:,26])))) +(data[:,16])))* 2.0)) * 2.0)) +(( -1.0*(( data[:,6])))))) * 2.0)) +(data[:,16])))* 2.0)) +(data[:,16])))* 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((data[:,13])-(data[:,2])))-(np.where(( -1.0*(( data[:,30])))> 1.292493,(6.50771999359130859), np.where(((data[:,30])-(data[:,2])) > 1.292493,(6.50771999359130859), data[:,2])))))* 2.0)) -(np.where(((data[:,30])-(( -1.0*(( data[:,30])))))> 1.292493, data[:,30], data[:,5])))) * 2.0)) +
0.250000*np.tanh(np.where(((data[:,21])* 2.0)<= -1.904264,(( data[:,21])* 2.0),(((((((((((( data[:,7])-(data[:,0])))* 2.0)) * 2.0)) * 2.0)) -(np.where(data[:,21] <= -1.904264,(-1.0*(((( data[:,7])* 2.0)))) ,(((( data[:,7])-(data[:,21])))* 2.0)))))* 2.0)))+
0.250000*np.tanh(((((((((data[:,13])+(((((data[:,16])+(((data[:,9])+(( -1.0*(((( data[:,10])+(data[:,0])))))))))) * 2.0)))) * 2.0)) * 2.0)) +(data[:,10])))+
0.250000*np.tanh(((((((((np.where(((data[:,13])+(((( data[:,2])+(data[:,6])) /2.0)))<= 1.882838, data[:,13], np.where(((( data[:,0])+(data[:,0])) /2.0)<= 1.666037, data[:,0], data[:,2])))-(((((((( data[:,6])+(data[:,2])) /2.0)) +(data[:,0])))* 2.0)))) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((np.where(data[:,2] > 1.882838, data[:,21],(((((((( data[:,21])+(((((((((((data[:,16])-(data[:,0])))+(((((data[:,7])-(data[:,0])))* 2.0)))) +(np.where(data[:,13] > 2.050536, data[:,16], data[:,13])))) * 2.0)) * 2.0)))) * 2.0)) * 2.0)) * 2.0)))* 2.0)) +
0.250000*np.tanh(((((((((((((((((((np.where(data[:,0] > -1.642552, data[:,7], data[:,21])) -(data[:,0])))* 2.0)) -(( -1.0*(( data[:,21])))))) * 2.0)) -(np.where(data[:,0] > -1.642552, data[:,0], data[:,7])))) * 2.0)) * 2.0)) -(data[:,0])))* 2.0)) +
0.250000*np.tanh(((((((((((data[:,13])-(np.where(data[:,26] > -1.904264, data[:,2],(8.0)))))-(np.where(data[:,17] > 0.683253,(8.0), data[:,2])))) -(np.where(data[:,5] > -1.904264, np.where(data[:,26] > -1.904264, data[:,17], data[:,2]),(8.0)))))* 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((((((((data[:,9])-(np.where(data[:,30] <= 0.653900, data[:,2], data[:,30])))) -(data[:,10])))-(data[:,0])))-(data[:,2])))* 2.0)) * 2.0)) * 2.0)) -(data[:,9])))+
0.250000*np.tanh(((((((((((((((np.where(data[:,0] > 1.559958,(((( data[:,0])-(data[:,0])))* 2.0), data[:,7])) -(data[:,0])))* 2.0)) * 2.0)) -(data[:,0])))-(np.where(data[:,2] > 1.559958,(((( data[:,2])* 2.0)) * 2.0), data[:,5])))) * 2.0)) * 2.0)) +
0.250000*np.tanh(((( 7.68880796432495117)) *(((((((((data[:,16])+(data[:,7])))-(data[:,0])))+(np.where(data[:,0] > 1.166741,(( data[:,7])-(data[:,0])) ,(((data[:,13])+(data[:,7])) /2.0)))))-(data[:,0])))))+
0.250000*np.tanh(((((((((((((((((data[:,21])-(data[:,10])))-(data[:,0])))+(data[:,5])))* 2.0)) * 2.0)) * 2.0)) -(((((((data[:,21])-(data[:,16])))-(data[:,9])))+(data[:,10])))))* 2.0)) +
0.250000*np.tanh(((((((((np.where(data[:,13] <= 0.810944,(( data[:,16])+(data[:,13])) , np.where(data[:,16] <= 1.829867, np.where(data[:,16] <= 0.810944, data[:,21], data[:,13]), data[:,13])))-(data[:,0])))* 2.0)) * 2.0)) *(( 5.0)))) +
0.250000*np.tanh(((( 10.0)) *(((((data[:,7])-(data[:,0])))+(((np.where(data[:,27] > 1.727814,(( data[:,7])-(data[:,27])) ,(((data[:,16])+(((data[:,27])+(((((data[:,7])+(data[:,16])))+(data[:,27])))))) /2.0)))-(data[:,0])))))))+
0.250000*np.tanh(((( 10.20410251617431641)) *(( -1.0*(( np.where(data[:,11] > 0.921294, data[:,11], np.where(( -1.0*(( data[:,11])))> 1.140410,(2.0),(((np.where(np.where(data[:,31] <= 1.926984, data[:,12], data[:,6])> -1.642552, data[:,6],(10.20410251617431641)))+(((data[:,3])* 2.0)))/2.0)))))))))+
0.250000*np.tanh(((((((((((((((data[:,13])-(data[:,0])))+(data[:,16])))+(((((data[:,7])-(data[:,0])))* 2.0)))) * 2.0)) * 2.0)) * 2.0)) +(((((data[:,7])+(((data[:,13])* 2.0)))) +(data[:,16])))))+
0.250000*np.tanh(((( 14.09699344635009766)) *(( -1.0*(((((((np.where(data[:,30] > 0.841255, data[:,30], data[:,0])) * 2.0)) +(np.where(( -1.0*(( data[:,30])))> 1.140410, np.where(( 10.0)<= 0.235213, np.where(data[:,0] > 1.140410, data[:,30],(-1.0*(( data[:,30])))) ,(14.09699344635009766)) , data[:,6])))/2.0)))))))+
0.250000*np.tanh(((((((((((((np.where(data[:,9] <= -1.904264,(( data[:,9])* 2.0), data[:,16])) -(data[:,0])))* 2.0)) -(np.where(data[:,9] > 1.882838, data[:,9],(( data[:,26])-(data[:,9])))))) * 2.0)) -(data[:,0])))* 2.0)) +
0.250000*np.tanh(((((((((((((np.where(data[:,13] <= 1.473305,(( data[:,16])+(((data[:,13])-(data[:,0])))) ,(( data[:,16])+(((data[:,16])-(((data[:,16])+(data[:,0])))))))) * 2.0)) * 2.0)) -(data[:,11])))* 2.0)) -(data[:,2])))* 2.0)) +
0.250000*np.tanh(((((((((((((data[:,26])-(data[:,0])))-(data[:,2])))-(((((((data[:,0])+(data[:,2])))+(data[:,17])))* 2.0)))) -(np.where(((data[:,17])* 2.0)> 1.882838,(12.15989398956298828), data[:,10])))) -(((data[:,10])* 2.0)))) -(data[:,0])))+
0.250000*np.tanh(((((((((((((((((((np.where(data[:,31] <= 1.926984,(( data[:,21])-(data[:,0])) , data[:,34])) * 2.0)) * 2.0)) -(data[:,35])))-(((data[:,34])+(data[:,31])))))* 2.0)) -(data[:,11])))-(data[:,21])))* 2.0)) -(data[:,0])))+
0.250000*np.tanh(((((((((((((data[:,7])-(data[:,0])))* 2.0)) +(data[:,21])))* 2.0)) * 2.0)) -(np.where(((((data[:,21])-(data[:,7])))* 2.0)<= -1.904264, data[:,7],(( data[:,21])+(data[:,31])))))) +
0.250000*np.tanh(((( 4.80085086822509766)) -(((np.where(((data[:,16])+(((data[:,27])-(data[:,0])))) <= 0.102020,(4.80085086822509766), np.where(data[:,27] <= 1.829867, data[:,2], data[:,27])))* 2.0)))) +
0.250000*np.tanh(np.where(data[:,26] > -1.642552,(((( np.where(data[:,9] > -1.642552,(((((((((( np.where(data[:,26] <= -0.595260, data[:,5], data[:,21])) -(data[:,10])))-(data[:,3])))* 2.0)) * 2.0)) * 2.0), data[:,9])) * 2.0)) * 2.0), data[:,26])) +
0.250000*np.tanh(((((((((data[:,16])-(((data[:,0])-(data[:,5])))))-(np.where(data[:,9] <= -1.642552, np.where(data[:,0] > 1.080119,(6.12992525100708008),(( data[:,0])-(data[:,9]))), data[:,6])))) *(( 6.12992525100708008)))) *(( 14.73707199096679688)))) +
0.250000*np.tanh(((((np.where(data[:,0] <= 1.962961,(((((((((((np.where(((( data[:,13])+(data[:,2])) /2.0)> 0.970377, np.where(data[:,0] <= 1.660163, data[:,0], data[:,16]), data[:,13])) +(data[:,16])) /2.0)) +(data[:,7])))-(data[:,0])))* 2.0)) *(( 3.0))), data[:,16])) -(data[:,0])))* 2.0)) +
0.250000*np.tanh(((((((((np.where(data[:,35] > 0.290542, data[:,13],(( data[:,21])-(data[:,0])))) +(np.where(data[:,0] <= 1.473305, np.where(((data[:,0])+(data[:,13])) <= 1.473305, data[:,13], data[:,35]), np.where(data[:,13] > 0.290542, data[:,35], data[:,35])))))* 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((np.where(data[:,31] > 1.882838, data[:,0],(( np.where(((data[:,4])+(data[:,13])) > 1.473305, data[:,21],(( data[:,21])+(data[:,13])))) -(data[:,0])))) *(( 9.0)))) +
0.250000*np.tanh(((((((((((data[:,7])-(data[:,0])))* 2.0)) * 2.0)) +(((((np.where(np.where(np.where(data[:,21] <= 1.473305, data[:,7], data[:,0])<= 1.473305, data[:,27], data[:,7])> 1.473305,(( data[:,21])-(data[:,0])) , data[:,27])) +(data[:,21])))-(data[:,31])))))* 2.0)) +
0.250000*np.tanh(((((((((np.where(data[:,24] <= 1.962961,(((((((((( data[:,21])/ 2.0)) +(data[:,7])))-(data[:,0])))* 2.0)) * 2.0), data[:,21])) -(((((((data[:,21])/ 2.0)) +(np.where(data[:,31] <= 0.921294, data[:,30], data[:,7])))) / 2.0)))) -(data[:,31])))* 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((((((( np.where(data[:,27] > 1.882838, data[:,7], data[:,27])) +(np.where(data[:,7] <= 0.235213, data[:,7], data[:,7])))/2.0)) +(np.where(np.where(data[:,21] > 1.926984, data[:,17], data[:,17])<= 0.235213, data[:,7], data[:,21])))) -(data[:,3])))* 2.0)) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(np.where(data[:,5] > -1.904264,(((((((((( data[:,27])-(np.where(data[:,11] > 1.138051,(9.0), np.where(data[:,8] > 1.138051, data[:,5], data[:,0])))))* 2.0)) -(np.where(np.where(data[:,0] > 1.138051,(9.0), data[:,17])> 1.138051,(9.0), data[:,2])))) * 2.0)) -(data[:,11])) , data[:,5])) +
0.250000*np.tanh(((((( -1.0*(( np.where(data[:,24] > 1.882838,(4.22903251647949219), np.where(data[:,24] > 1.882838,(13.10773658752441406), np.where(data[:,30] > 1.882838, data[:,24], data[:,0])))))))-(np.where(data[:,30] > 1.140410,(13.10773658752441406), np.where(np.where(( 13.10773658752441406)> 1.473305, data[:,14], data[:,14])> 1.473305, data[:,0], data[:,10])))))*(( 13.10773658752441406)))) +
0.250000*np.tanh(np.where(((data[:,9])-(data[:,2])) <= -1.642552,(( data[:,9])-(( 8.0))),(((((((( np.where(data[:,0] <= 1.660163, np.where(data[:,2] <= 1.660163, data[:,7], data[:,7]), data[:,9])) -(data[:,0])))*(( 14.13358211517333984)))) -(((data[:,9])-(data[:,2])))))*(( 8.0)))))+
0.250000*np.tanh(((((((((((((((np.where(data[:,0] <= 1.473305, np.where(data[:,11] > 1.003442, data[:,21], data[:,7]),(((((((((( data[:,24])-(data[:,0])))* 2.0)) * 2.0)) * 2.0)) -(data[:,0])))) -(data[:,0])))* 2.0)) * 2.0)) -(data[:,24])))* 2.0)) -(data[:,11])))* 2.0)) +
0.250000*np.tanh(((((((((-1.0*(( np.where(( -1.0*(( np.where(data[:,16] <= -1.904264,(( data[:,7])-(np.where(np.tanh(( data[:,16])) <= -1.904264,(13.82931137084960938), data[:,0]))), data[:,31])))) <= -1.904264,(13.82931137084960938), data[:,2])))))+(data[:,16])) /2.0)) +(((data[:,7])-(data[:,0])))))*(( 13.82931137084960938)))) +
0.250000*np.tanh(((((((((np.where(data[:,21] <= -1.904264, data[:,21], np.where(data[:,5] <= -1.904264, data[:,5],(( np.where(data[:,24] > 1.473305, data[:,5], np.where(data[:,34] > 1.473305,(( data[:,21])-(data[:,34])) , data[:,16])))-(((np.tanh(( data[:,0])))* 2.0)))))) * 2.0)) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((((np.where(((data[:,13])+(data[:,10])) > 1.586856, data[:,16],(((( data[:,13])+(data[:,16])))* 2.0)))-(data[:,0])))-(data[:,10])))* 2.0)) * 2.0)) -(((((data[:,0])+(data[:,16])))* 2.0)))) -(data[:,16])))+
0.250000*np.tanh(np.where(np.where(data[:,24] <= 1.882838,(((( data[:,8])* 2.0)) -(data[:,16])) , np.where(data[:,11] > 1.474123,(4.0),(6.0)))<= 0.588421,(((((( data[:,16])* 2.0)) -(data[:,24])))-(data[:,11])) ,(-1.0*(((5.0)))))) +
0.250000*np.tanh(((np.where(data[:,27] > 1.473305,(-1.0*(( data[:,27]))), np.where(data[:,11] > 1.473305,(( data[:,34])-(( 5.62508344650268555))),(((((((data[:,9])+(((data[:,28])+(data[:,0])))))+(((data[:,27])-(data[:,17])))) /2.0)) -(data[:,0])))))*(( 5.62508344650268555)))) +
0.250000*np.tanh(((np.where(data[:,21] > -1.642552,(( np.where(data[:,31] > 1.882838, np.where(data[:,0] > 0.314787, data[:,7], data[:,7]),(( np.where(data[:,21] > 1.882838, data[:,7], np.where(data[:,7] > 1.882838, data[:,21],(( data[:,7])-(data[:,0])))))* 2.0)))* 2.0), data[:,21])) * 2.0)) +
0.250000*np.tanh(((((((np.where(data[:,31] > 1.882838, data[:,9],(((-1.0*(( np.where(data[:,21] <= -0.961898,(6.0),(((( data[:,0])* 2.0)) * 2.0)))))) -(np.where(data[:,21] <= -0.443924, data[:,19], data[:,19])))))-(data[:,31])))* 2.0)) * 2.0)) +
0.250000*np.tanh(np.where(data[:,0] > 1.922295,(( data[:,16])* 2.0), np.where(data[:,11] > 1.922295,(((((( data[:,7])-(data[:,0])))-(( 6.0)))) -(data[:,7])) ,(((( data[:,7])-(data[:,0])))*(( 6.0)))))) +
0.250000*np.tanh(((((((((data[:,16])+(np.where(data[:,13] <= -0.551547, data[:,13],(( np.where(data[:,13] <= -0.551547,(-1.0*(( data[:,13]))),(-1.0*(( data[:,0])))))* 2.0)))))* 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((np.where(data[:,14] > 1.922295, data[:,7], np.where(data[:,0] > 1.335145,(-1.0*(( data[:,0]))),(((((((( np.where(data[:,0] > 1.660163, data[:,0], data[:,7])) -(data[:,0])))* 2.0)) +(data[:,27])))* 2.0)))) * 2.0)) +
0.250000*np.tanh(((((((np.where(((data[:,10])+(data[:,27])) <= 2.138112, np.where(data[:,31] > 1.882838, data[:,5],(((((( data[:,16])-(data[:,10])))-(data[:,0])))+(((data[:,5])+(data[:,27]))))),(( data[:,16])-(data[:,10])))) * 2.0)) * 2.0)) -(data[:,31])))+
0.250000*np.tanh(((((data[:,13])-(np.where(data[:,9] <= -1.642552,(10.14929580688476562), data[:,30])))) -(((np.where(data[:,30] <= 1.843381, np.where(data[:,34] <= 1.035092, np.where(np.where(data[:,13] > 1.962961,(14.92103576660156250), data[:,17])<= 1.035092, data[:,0],(14.92103576660156250)) , np.where(data[:,13] <= -1.642552, data[:,30],(10.14929580688476562))), data[:,30])) * 2.0)))) +
0.250000*np.tanh(((np.where(data[:,11] > 1.473305, data[:,21],(((6.0)) *(((data[:,7])-(data[:,0])))))) -(np.where(np.where(data[:,0] <= 0.422105, data[:,7], data[:,7])<= 0.871153, data[:,14], np.where(data[:,0] > 1.473305,(6.0),(( data[:,7])-(data[:,0])))))))+
0.250000*np.tanh(((((((((((np.where(data[:,0] <= 1.367513,(((( np.where(( 4.0)> -0.602405,(4.0), data[:,7])) *(data[:,7])))-(data[:,30])) , data[:,0])) -(data[:,0])))-(((data[:,0])* 2.0)))) * 2.0)) * 2.0)) -(data[:,31])))+
0.250000*np.tanh(((((((((np.where(np.where(data[:,5] > 1.810439, data[:,5],(((data[:,17])+(((((((((( data[:,17])+(data[:,7])) /2.0)) +(data[:,5])) /2.0)) +(data[:,7])) /2.0)))/2.0)) <= 0.860556, data[:,7],(-1.0*(( data[:,5])))))* 2.0)) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((((np.where(data[:,17] <= 0.393210, data[:,27], data[:,17])) +(((data[:,9])+(((((data[:,16])+(((((((((data[:,16])+(((data[:,27])+(data[:,9])))))-(data[:,0])))* 2.0)) -(data[:,11])))))-(data[:,0])))))))* 2.0)) +(data[:,15])))+
0.250000*np.tanh(((((data[:,21])-(((np.where(np.where(((data[:,26])-(data[:,10])) > -0.147558, data[:,2], data[:,9])<= 0.493269,(-1.0*(( data[:,9]))), data[:,26])) * 2.0)))) +(((((((((data[:,26])-(data[:,10])))-(data[:,0])))-(data[:,10])))-(data[:,0])))))+
0.250000*np.tanh(((((((((((np.where(data[:,9] <= 1.166741, data[:,7], np.where(data[:,9] <= 1.166741, data[:,7],(-1.0*(( data[:,9])))))) -(data[:,2])))* 2.0)) * 2.0)) -(np.where(((np.where(data[:,9] <= 1.166741, data[:,7], data[:,9])) -(data[:,9])) <= 1.166741, data[:,9],(-1.0*(( data[:,34])))))))* 2.0)) +
0.250000*np.tanh(((((((((np.where(data[:,26] <= -0.215004, data[:,9], data[:,26])) +(np.where(((( data[:,27])+(data[:,26])) /2.0)<= -0.215004, data[:,13], data[:,21])))) +(np.where(((((((data[:,13])+(data[:,26])) /2.0)) +(data[:,26])) /2.0)<= -0.215004, data[:,13], data[:,21])))) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((np.where(((((data[:,21])/ 2.0)) / 2.0)<= -0.215004, np.where(data[:,7] <= -0.215004,(( np.where(((((data[:,21])/ 2.0)) / 2.0)<= -0.215004,(((( data[:,21])/ 2.0)) / 2.0), data[:,7])) * 2.0), data[:,21]), data[:,7])) * 2.0)) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((np.where(data[:,21] > -0.771750, np.where(np.tanh(( data[:,27])) > -0.771750,(( np.where(np.tanh(( data[:,27])) > -0.771750, data[:,7], data[:,21])) * 2.0), np.tanh(( data[:,27]))), data[:,21])) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((data[:,7])-(data[:,0])))* 2.0)) -(np.where(data[:,0] > 1.166741, np.where(( 11.41733360290527344)> 0.931097, data[:,0],(( data[:,0])-(np.where(data[:,31] > -0.961898, data[:,2], data[:,31])))) , data[:,31])))) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((((((((data[:,21])-(np.where(np.where(data[:,10] <= -0.961898, data[:,34], data[:,21])<= -0.961898,(13.07159137725830078), data[:,34])))) -(np.where(data[:,18] <= -0.961898,(13.07159137725830078), np.where(data[:,13] <= -0.961898,(13.07159137725830078), data[:,10])))))* 2.0)) * 2.0)) -(data[:,13])))+
0.250000*np.tanh(((np.where(data[:,8] > -2.661638,(((( data[:,7])-(data[:,9])))+(((((np.where(data[:,0] <= 1.882838, data[:,7],(-1.0*(( data[:,0])))))-(data[:,20])))+(((((( -1.0*(( data[:,0])))) +(((data[:,7])-(data[:,0])))))-(data[:,0])))))) , data[:,9])) * 2.0)) +
0.250000*np.tanh(((((((((((data[:,7])-(data[:,0])))+(((data[:,15])-(np.where(data[:,0] > 1.882838, data[:,0], data[:,11])))))) -(data[:,0])))* 2.0)) +(((((((((data[:,7])-(data[:,0])))* 2.0)) -(data[:,31])))* 2.0)))) +
0.250000*np.tanh(np.where(np.where(data[:,26] > 0.211452,(( data[:,31])-(data[:,21])) ,(-1.0*(( data[:,13])))) <= 0.432248,(((( data[:,21])-(((data[:,8])* 2.0)))) -(data[:,34])) ,(( np.where(( -1.0*(( data[:,13])))<= -0.014132, data[:,34],(((-1.0*(( data[:,13])))) -(( 12.40656375885009766)))))-(( 12.40656757354736328)))))+
0.250000*np.tanh(np.where(data[:,31] <= 1.882838,(((((((((((((((((( data[:,7])-(data[:,0])))* 2.0)) +(data[:,12])))* 2.0)) * 2.0)) -(data[:,7])))-(data[:,0])))-(data[:,34])))* 2.0),(((( data[:,12])-(data[:,31])))* 2.0)))+
0.250000*np.tanh(((((((((np.where(( -1.0*(( data[:,21])))<= 1.166741, np.where(data[:,16] <= 0.682843,(((( data[:,7])-(data[:,21])))-(((data[:,16])*(data[:,9])))) ,(( data[:,7])-(((data[:,16])*(data[:,9]))))),(( data[:,21])+(data[:,21])))) * 2.0)) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(np.where(np.where(((data[:,7])+(data[:,15])) <= 1.882838, data[:,17], data[:,22])<= 1.146065,(( np.where(data[:,16] <= 1.146065,(((((( data[:,7])+(data[:,15])))* 2.0)) +(data[:,17])) , data[:,16])) * 2.0), data[:,16])) +
0.250000*np.tanh(((((((((((((data[:,7])-(data[:,0])))* 2.0)) -(np.where(data[:,19] <= 0.845261, np.where(data[:,0] <= 0.845261, data[:,24], data[:,19]), data[:,19])))) -(data[:,0])))* 2.0)) -(np.where(np.where(data[:,0] <= 0.235213, data[:,0], data[:,24])<= 0.845261, data[:,19], data[:,19])))) +
0.250000*np.tanh(np.where(data[:,5] <= -0.215004,(((10.70290374755859375)) *(data[:,26])) ,(((((( np.where(data[:,2] > 0.845261, np.where(( 9.0)<= 0.344164, data[:,20],(((10.70290374755859375)) *(data[:,26]))), data[:,31])) -(((( 12.47391223907470703)) *(data[:,26])))))-(( 10.70290374755859375)))) *(data[:,20])))) +
0.250000*np.tanh(( -1.0*(((( np.where(data[:,35] > 0.299028, np.where(data[:,13] > -1.642552, data[:,13],(-1.0*(( data[:,13])))) ,(((((((((( data[:,0])+(np.where(data[:,13] > 1.261988, data[:,13], np.where(data[:,28] <= 0.682843,(-1.0*(( data[:,13]))), data[:,31])))))* 2.0)) * 2.0)) +(data[:,30])))* 2.0)))* 2.0)))))+
0.250000*np.tanh(((((((((((((((data[:,7])-(data[:,0])))* 2.0)) -(np.where(data[:,30] > -0.591683,(-1.0*(( np.where(((data[:,30])-(data[:,12])) <= 0.966479, data[:,12], data[:,9])))) ,(( data[:,9])* 2.0)))))* 2.0)) -(data[:,19])))* 2.0)) -(data[:,19])))+
0.250000*np.tanh(((((np.where(data[:,20] > 1.660163,(((( data[:,2])* 2.0)) / 2.0), np.where(data[:,6] <= -1.642552, data[:,4], np.where(data[:,0] > 1.660163, data[:,20],(((((( data[:,7])-(((data[:,0])-(data[:,7])))))-(data[:,34])))-(data[:,20])))))) -(data[:,0])))-(data[:,2])))+
0.250000*np.tanh(((((((((np.where(data[:,9] > 0.997275, data[:,0], data[:,7])) -(data[:,0])))* 2.0)) -(np.where(data[:,0] > 0.813134, data[:,9], data[:,31])))) * 2.0)) +
0.250000*np.tanh(((( -1.0*(( np.where(data[:,28] > 0.845261, data[:,27], np.where(data[:,27] > -0.771750, np.where(( 5.0)<= -0.215004, data[:,28], np.where(data[:,16] <= -0.215004, data[:,12], np.where(np.where(( 5.0)<= -0.215004, data[:,27],(( data[:,34])-(data[:,0])))<= -0.215004, data[:,31], data[:,9]))),(5.0)))))))-(data[:,0])))+
0.250000*np.tanh(np.where(data[:,14] <= 0.966479,(( np.where(data[:,11] <= -0.251953,(( data[:,16])+(((data[:,16])+(( -1.0*(( data[:,20]))))))), np.where(((data[:,16])+(data[:,12])) <= 0.966479,(-1.0*(( np.where(data[:,20] > 0.712642, data[:,11],(2.47462439537048340))))), data[:,12])))-(data[:,23])) , data[:,17])) +
0.250000*np.tanh(((((np.where(((data[:,18])* 2.0)> 0.845261, data[:,9], data[:,18])) +(np.where(data[:,27] <= 0.966479,(((( np.where(data[:,29] > 0.294226, data[:,12], data[:,18])) * 2.0)) +(((((np.where(data[:,20] <= -1.380841, data[:,12], data[:,27])) -(data[:,0])))* 2.0))),(-1.0*(( data[:,0])))))))* 2.0)) +
0.250000*np.tanh(((((((data[:,7])+(((data[:,7])+(((((((data[:,13])-(data[:,0])))+(data[:,25])))-(data[:,11])))))))-(np.where(np.where(data[:,0] <= 1.882838, np.where(data[:,0] <= 1.882838, data[:,19],(8.0)) , data[:,0])> 0.723009,(8.0), data[:,0])))) -(data[:,0])))+
0.250000*np.tanh(((((np.where(data[:,18] > 0.712642,(-1.0*(( data[:,11]))),(( np.where(np.where(data[:,0] > -0.367331, data[:,18],(-1.0*(( data[:,11])))) > 0.712642, data[:,18], np.where(data[:,11] > 0.712642,(3.53147959709167480), data[:,18])))-(data[:,11])))) -(np.where(data[:,19] <= 0.863488, data[:,0], data[:,19])))) *(( 3.53147959709167480)))) +
0.250000*np.tanh(((((((((np.where(np.where(data[:,20] > 1.882838, data[:,7], data[:,20])> -2.661638,(( data[:,7])-(data[:,10])) , data[:,17])) -(np.where(data[:,2] <= 0.235213, data[:,0], data[:,2])))) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((np.where(data[:,26] <= 0.551348, np.where(data[:,9] <= 0.841255,(((( np.where(data[:,9] <= 0.841255,(((((((( data[:,7])-(data[:,0])))* 2.0)) -(data[:,29])))/ 2.0), data[:,9])) * 2.0)) -(data[:,19])) , np.where(data[:,26] <= 0.551348,(( data[:,30])* 2.0), data[:,29])) , data[:,29])) * 2.0)) +
0.250000*np.tanh(np.where(data[:,17] > 0.386603,(((11.70757389068603516)) *(data[:,16])) , np.where(data[:,17] > 0.386603, data[:,16],(( np.where(data[:,9] <= 0.493269,(( np.where(data[:,9] <= 0.493269, np.where(data[:,0] <= -1.380841,(11.70757389068603516), data[:,7]),(-1.0*(( data[:,16])))))* 2.0),(-1.0*(( data[:,16])))))* 2.0)))) +
0.250000*np.tanh(((data[:,13])+(np.where(data[:,34] <= 0.304819,(((( data[:,13])+(np.where(data[:,34] <= 0.304819,(( data[:,8])+(((data[:,20])+(data[:,21])))) , data[:,13])))) +(data[:,20])) ,(-1.0*(( np.where(data[:,13] <= 0.189428, np.where(data[:,13] <= 0.189428, data[:,20],(9.46680450439453125)) ,(9.46680450439453125)))))))))+
0.250000*np.tanh(((((data[:,7])-(((data[:,0])-(np.where(data[:,28] > -0.617524, data[:,28], data[:,9])))))) -(((data[:,2])-(np.where(data[:,34] > -0.617524, np.where(np.where(data[:,2] > 0.517973, data[:,18], data[:,30])> 0.517973, data[:,9],(( data[:,18])-(data[:,9]))), data[:,9])))))) +
0.250000*np.tanh(((np.where(np.where(np.where(data[:,16] <= 1.030516, data[:,9], data[:,16])> 1.030516, data[:,22],(( data[:,26])-(data[:,16])))> 0.386603, np.where(data[:,11] <= 1.030516, data[:,16], data[:,16]),(((((( data[:,7])-(data[:,11])))-(np.where(data[:,16] <= 1.030516, data[:,16], data[:,9])))) * 2.0)))* 2.0)) +
0.250000*np.tanh(( -1.0*(((((( np.where(( 14.30527973175048828)<= 0.294226, data[:,27],(( data[:,28])+(((data[:,28])+(np.where(data[:,27] <= 0.294226, data[:,27], data[:,9])))))))+(np.where(data[:,20] <= 0.294226,(14.30527973175048828), data[:,27])))) *(((np.where(data[:,20] <= 0.294226, data[:,2], data[:,9])) +(data[:,27])))))))) +
0.250000*np.tanh(((((np.where(data[:,1] > 1.473305, data[:,1], np.where(np.where(data[:,0] > 1.473305, np.where(data[:,16] <= -0.226425, data[:,0], data[:,31]), data[:,1])> 1.473305, data[:,29], data[:,7])))-(data[:,0])))-(np.where(data[:,16] <= -0.226425,(-1.0*(( data[:,9]))), data[:,31])))) +
0.250000*np.tanh(np.where(data[:,9] > 1.284773, data[:,0],(((( np.where(data[:,28] <= 0.165825,(((( data[:,9])+(((((((data[:,7])+(data[:,25])))+(data[:,27])))-(data[:,0])))))+(((data[:,9])-(data[:,0])))) , data[:,29])) +(data[:,7])))-(data[:,0])))) +
0.250000*np.tanh(np.where(data[:,35] > -0.030317,(((( data[:,21])+(((((np.where(( -1.0*(( data[:,35])))<= 1.010059, data[:,22], data[:,22])) * 2.0)) +(data[:,22])))))+(((((np.where(data[:,22] <= 1.010059, data[:,12], data[:,21])) * 2.0)) * 2.0))),(((((-1.0*(( data[:,21])))) * 2.0)) * 2.0)))+
0.250000*np.tanh(np.where(data[:,2] > 0.262875,(( data[:,28])-(data[:,11])) ,(((( np.where(data[:,3] <= 0.818995, data[:,7], data[:,11])) +(((data[:,7])-(data[:,9])))))+(((np.where(data[:,3] <= 0.818995,(((( data[:,7])-(data[:,9])))-(data[:,9])) , data[:,11])) +(data[:,1])))))) +
0.250000*np.tanh(np.where(data[:,20] > -0.215004, np.where(np.where(data[:,22] > 1.067605,(( np.where(np.where(data[:,7] > 0.547642,(4.0), data[:,20])> 0.547642,(4.0), data[:,34])) * 2.0), np.where(data[:,34] <= 0.517973, data[:,19],(4.0)))> 0.633071,(-1.0*(((4.0)))) , data[:,7]), np.where(data[:,22] > 0.547642,(4.0), data[:,17])))+
0.250000*np.tanh(np.where(((np.where(data[:,33] > 1.072908,(( np.where(data[:,33] > 1.072908,(7.0), data[:,33])) -(data[:,7])) , data[:,0])) -(data[:,7])) > 0.808173,(-1.0*(((7.0)))) , np.where(np.where(data[:,7] > 1.072908, data[:,4], np.where(data[:,33] > 1.072908, data[:,35], data[:,7])) > 0.121242, data[:,25],(7.0)))) +
0.250000*np.tanh(((((((((( 8.77632904052734375)) / 2.0)) / 2.0)) -(np.where(data[:,13] > -0.857418, np.where(data[:,23] <= 1.208423, data[:,3], np.where(( 8.77632904052734375)> -0.857418,(8.77632904052734375), data[:,23])) ,(8.77632904052734375)))))-(np.where(np.where(data[:,9] > 0.775667, data[:,0],(( data[:,7])-(data[:,0])))> -0.857418, data[:,13],(8.77632904052734375)))))+
0.250000*np.tanh(((((((np.where(((data[:,15])* 2.0)> 0.736905, data[:,29], data[:,12])) * 2.0)) -(((np.where(np.where(data[:,29] > 0.761867, np.where(data[:,29] > 0.761867, np.where(data[:,12] > 0.736905, data[:,20], data[:,29]), data[:,22]), data[:,22])> 0.761867, data[:,20], data[:,16])) * 2.0)))) -(data[:,30])))+
0.250000*np.tanh(np.where(data[:,33] > 0.863488,(((-1.0*(((8.0)))))-(data[:,27])) ,(( np.where(data[:,27] > 0.863488,(((( data[:,33])-(data[:,12])))-(data[:,27])) ,(( np.where(((data[:,12])-(data[:,30])) > 0.235216,(-1.0*(( data[:,31]))), data[:,27])) * 2.0)))* 2.0)))+
0.250000*np.tanh(((((((((((np.where(data[:,16] > -0.440378, np.where(data[:,16] <= 0.609319, np.where(data[:,16] > -0.440378, data[:,26],(( data[:,9])-(data[:,32]))), np.where(data[:,33] > 1.473305, data[:,9], data[:,32])) ,(( data[:,9])-(data[:,32])))) -(data[:,0])))* 2.0)) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(((((np.where(data[:,13] <= -0.051274, data[:,28], np.where(data[:,30] <= 0.306667,(-1.0*(( np.where(data[:,30] > 1.035092, data[:,16], np.where(data[:,9] <= -0.051274, data[:,30], data[:,13]))))), data[:,24])))-(data[:,11])))-(np.where(data[:,9] <= 0.818995, np.where(data[:,24] <= 0.818995, data[:,10], data[:,16]), data[:,16])))) +
0.250000*np.tanh(((np.where(data[:,3] <= 0.887697, np.where(((data[:,1])-(data[:,20])) > 0.576942, data[:,17],(((( data[:,18])-(np.where(np.where(data[:,0] <= 0.634564, np.where(data[:,34] <= 0.634564, data[:,17], data[:,7]), data[:,7])> -0.091910, data[:,34], data[:,0])))) +(data[:,7]))), data[:,30])) -(data[:,2])))+
0.250000*np.tanh(np.where(data[:,28] <= 0.182168, np.where(data[:,9] > 0.431994, data[:,15],(((( data[:,7])+(data[:,10])))+(((((((data[:,7])-(((data[:,0])* 2.0)))) +(data[:,28])))+(data[:,15]))))),(((((( data[:,29])-(data[:,10])))-(data[:,20])))-(data[:,20])))) +
0.250000*np.tanh(np.where(data[:,11] <= 0.668353, np.where(data[:,34] > -0.693927,(((((((( data[:,18])-(data[:,9])))-(data[:,23])))* 2.0)) -(data[:,34])) ,(( data[:,21])*(data[:,9]))),(-1.0*(((((((((( data[:,18])-(data[:,9])))-(data[:,23])))* 2.0)) * 2.0)))))) +
0.250000*np.tanh(np.where(data[:,12] > 0.431994, data[:,29],(((( np.where(np.where(((np.where(np.where(data[:,7] <= 0.818737, data[:,18], data[:,0])<= 0.818737, data[:,18],(5.0)))+(data[:,0])) > -0.215004,(5.0), data[:,18])<= 0.818737, data[:,18], data[:,15])) +(data[:,7])))-(data[:,0])))) +
0.250000*np.tanh(np.where(data[:,27] > -0.141852, np.where(data[:,33] > 1.146065,(((( data[:,26])-(data[:,33])))-(data[:,27])) ,(((( data[:,33])-(data[:,27])))-(((data[:,28])* 2.0)))) ,(( np.where(data[:,31] <= -0.215004,(( data[:,28])* 2.0),(( data[:,27])-(data[:,33])))) * 2.0)))+
0.250000*np.tanh(np.where(((((( data[:,28])* 2.0)) +(data[:,27])) /2.0)<= 0.232102,(((( data[:,7])-(data[:,30])))+(((((data[:,6])+(((((data[:,7])-(data[:,1])))-(data[:,0])))))+(((data[:,27])-(data[:,0])))))) ,(-1.0*(((( data[:,27])-(data[:,0])))))))+
0.250000*np.tanh(((((data[:,23])*(data[:,24])))-(np.where(((data[:,7])/ 2.0)> -0.693927, np.where(((data[:,21])/ 2.0)> -0.693927, np.where(data[:,18] > -0.333995, np.where(data[:,19] > 1.419382, data[:,21], data[:,0]), data[:,34]),(((14.90960979461669922)) / 2.0)) ,(14.90960979461669922)))))+
0.250000*np.tanh(np.where(data[:,6] <= 0.339973,(((( np.where(data[:,25] > 0.339973,(((( data[:,1])* 2.0)) * 2.0), data[:,26])) * 2.0)) * 2.0), np.where(np.where(data[:,25] <= 0.375007, data[:,25], data[:,8])<= 1.461239, np.where(data[:,20] <= -0.168730, data[:,6],(( data[:,25])* 2.0)) , data[:,6])))+
0.250000*np.tanh(((np.where(data[:,19] <= 0.083312, data[:,25],(((-1.0*(( data[:,25])))) * 2.0)))+(np.where(data[:,22] <= 0.964277, np.where(( -1.0*(( data[:,25])))<= 0.964277, data[:,7],(-1.0*(( np.where(data[:,3] > 1.045657, data[:,3], data[:,20]))))),(-1.0*(( np.where(data[:,3] > 1.045657, data[:,3], data[:,20])))))))) +
0.250000*np.tanh(np.where(np.where(((data[:,7])-(data[:,0])) <= 0.235213, data[:,9],(( data[:,0])-(data[:,9])))> 0.559639, data[:,9], np.where(data[:,2] > 0.559639, data[:,12],(( np.where(data[:,9] > 0.559639,(( data[:,7])-(data[:,9])) ,(( data[:,7])-(data[:,0])))) -(data[:,9])))))+
0.250000*np.tanh(((((((((data[:,7])+(((((data[:,19])*(data[:,23])))-(data[:,32])))))+(((((((((data[:,16])* 2.0)) *(data[:,32])))+(data[:,1])))+(((data[:,32])-(data[:,0])))))))-(data[:,34])))-(data[:,0])))+
0.250000*np.tanh(np.where(data[:,16] <= 1.062090,(( np.where(data[:,25] <= -0.051274, np.where(data[:,5] <= 0.235213, data[:,27], data[:,19]), np.where(data[:,19] <= 0.099566, data[:,16], data[:,16])))+(np.where(data[:,25] <= 0.262875, data[:,26],(((( data[:,7])-(data[:,19])))-(data[:,12]))))),(( data[:,32])-(data[:,19])))) +
0.250000*np.tanh(((data[:,20])*(((((np.where(np.where(data[:,13] > 0.502876, data[:,20], data[:,13])> -0.771750, np.where(((data[:,9])* 2.0)> -0.333995,(( np.where(data[:,30] > 0.756848, data[:,0],(((-1.0*(( data[:,34])))) * 2.0)))* 2.0), np.where(data[:,20] > -0.771750, data[:,16], data[:,13])) , data[:,13])) * 2.0)) * 2.0)))) +
0.250000*np.tanh(np.where(data[:,4] > 0.571451, data[:,25], np.where(data[:,26] <= -0.484568, data[:,7], np.where(data[:,18] > 0.571451, np.where(data[:,17] <= 1.461239, data[:,22], data[:,25]), np.where(data[:,26] <= -0.484568, data[:,7], np.where(np.where(data[:,17] <= 0.571451, data[:,32],(11.95601749420166016)) > 0.125057,(((data[:,17])+(( 11.95601749420166016)))/2.0), data[:,18])))))) +
0.250000*np.tanh(((((((data[:,16])* 2.0)) * 2.0)) *(np.where(data[:,28] <= -1.313004, np.where(data[:,16] <= 0.472734, np.where(((data[:,1])* 2.0)> 1.290987, np.where(( -1.0*(( data[:,14])))> -0.141852, data[:,1],(( data[:,16])* 2.0)) , data[:,16]),(((( data[:,16])* 2.0)) * 2.0)) ,(-1.0*(( data[:,14])))))))+
0.250000*np.tanh(((((((((((((((((((((((((data[:,6])* 2.0)) -(data[:,10])))* 2.0)) -(data[:,10])))* 2.0)) -(np.tanh(((( data[:,6])* 2.0)))))) * 2.0)) -(np.tanh(( data[:,10])))))* 2.0)) -(data[:,31])))-(((data[:,6])* 2.0)))) -(data[:,6])))+
0.250000*np.tanh(((np.where(data[:,3] <= 0.421563, np.where(data[:,20] <= -0.072284,(( data[:,17])* 2.0), np.where(np.where(np.where(data[:,3] <= 0.001170, data[:,7], np.where(data[:,20] <= 0.421563, data[:,3], data[:,3])) > 1.764468, data[:,20], data[:,0])<= 0.235213, np.where(data[:,3] <= -0.072284, data[:,3], data[:,3]), data[:,7])) , data[:,20])) * 2.0)) +
0.250000*np.tanh(np.where(data[:,19] > 0.502876, data[:,5], np.where(data[:,19] > 0.964277, data[:,0], np.where(data[:,11] > 0.964277, data[:,5], np.where(data[:,5] > 0.964277, data[:,0],(((((( data[:,18])-(((data[:,23])-(((data[:,7])-(data[:,0])))))))-(data[:,5])))-(data[:,0])))))))+
0.250000*np.tanh(np.where(((data[:,7])+(((data[:,28])+(data[:,34])))) <= -0.771750,(( data[:,7])+(data[:,9])) , np.where(data[:,16] <= -0.771750,(( data[:,33])-(data[:,7])) ,(-1.0*(((((((( np.where(data[:,7] > 0.235213, data[:,34],(( data[:,7])* 2.0)))+(data[:,9])))* 2.0)) * 2.0)))))))+
0.250000*np.tanh(((((((np.where(np.where(data[:,22] <= 1.208423, data[:,16], np.where(data[:,0] <= 1.208423, data[:,11],(6.0)))<= -0.693927,(9.0),(-1.0*(( np.where(data[:,18] <= -0.693927, np.where(data[:,18] <= -0.693927,(3.74194717407226562), data[:,33]), data[:,33])))))) -(data[:,0])))-(data[:,0])))-(data[:,11])))+
0.250000*np.tanh(np.where(((((data[:,13])-(data[:,2])))-(data[:,2])) > -0.051274,(-1.0*(( np.where(data[:,15] <= -0.051274,(( data[:,9])-(((((data[:,28])-(data[:,11])))-(data[:,0])))) ,(( data[:,28])+(data[:,34])))))) ,(( data[:,28])-(data[:,30])))) +
0.250000*np.tanh(((((np.where(data[:,28] > -0.052702, data[:,21], data[:,7])) -(np.where(data[:,18] > 1.287894,(7.0), np.where(data[:,21] <= 0.270581, np.where(data[:,18] <= 0.270581, data[:,18], data[:,30]),(( data[:,14])-(data[:,18])))))))-(np.where(data[:,14] <= 0.270581, data[:,23],(( data[:,18])-(data[:,29])))))) +
0.250000*np.tanh(np.where(data[:,9] > -0.049245, np.where(data[:,7] > -0.049245, data[:,33],(( np.where(data[:,9] <= 0.630666, data[:,7], data[:,7])) +(((((data[:,34])+(data[:,9])))* 2.0)))) , np.where(((( data[:,33])+(data[:,2])) /2.0)<= 0.630666, data[:,7],(( data[:,28])+(((data[:,7])+(data[:,34])))))))+
0.250000*np.tanh(np.where(data[:,20] > -0.857418,(((((((((((( data[:,29])-(data[:,34])))-(data[:,27])))-(data[:,26])))-(data[:,27])))-(data[:,26])))*(np.where(data[:,27] > -0.857418, data[:,25], data[:,27]))), data[:,34])) +
0.250000*np.tanh(np.where(data[:,28] > -0.771750,(( np.where(data[:,31] > 1.687420, data[:,31],(( data[:,23])* 2.0)))*(data[:,31])) ,(( np.where(np.where(((data[:,28])* 2.0)<= 0.632769,(((-1.0*(( np.where(data[:,9] > 1.687420, data[:,28], data[:,9])))))* 2.0), data[:,9])<= 0.802554, data[:,15], data[:,9])) * 2.0)))+
0.250000*np.tanh(np.where(data[:,2] > 0.473963,(( data[:,12])* 2.0), np.where(data[:,5] <= 0.448942, np.where(data[:,0] <= 0.424252, np.where(data[:,26] > -0.215004, data[:,29], np.where(data[:,29] > -0.215004, np.where(data[:,26] > -0.215004, data[:,29], data[:,27]), data[:,27])) , data[:,7]),(( data[:,0])* 2.0)))) +
0.250000*np.tanh(((np.where(data[:,18] <= -0.771750, np.where(data[:,0] <= 0.025218, data[:,18],(( data[:,7])-(np.where(data[:,2] <= 0.025218, data[:,18], data[:,7])))) ,(-1.0*(( np.where(data[:,7] <= 0.189428, data[:,30], data[:,18])))))) -(np.where(data[:,7] <= -0.055946, data[:,0], data[:,2])))) +
0.250000*np.tanh(np.where(data[:,20] <= 0.103746,(( data[:,27])*(data[:,20])) , np.where(data[:,20] > 0.526982, data[:,11], np.where(data[:,20] <= 0.103746, data[:,20], np.where(data[:,2] > 0.526982, data[:,34],(( np.where(((data[:,27])*(data[:,20])) > -0.215004,(( data[:,20])-(data[:,12])) , data[:,27])) -(data[:,10])))))))+
0.250000*np.tanh(((np.where(((data[:,25])* 2.0)<= 1.961752, data[:,12],(( data[:,6])-(data[:,26])))) -(np.where(np.where(data[:,26] > 0.981412, np.where(data[:,27] <= 1.961752, data[:,5], data[:,19]), data[:,19])> 0.346846,(( data[:,25])* 2.0), np.where(data[:,5] > 0.346846, data[:,27], data[:,0])))))+
0.250000*np.tanh(np.where(np.where(data[:,34] > -0.591683, np.where(data[:,19] <= 0.146694, data[:,19],(6.0)) , data[:,31])> 1.687420, data[:,17], np.where(data[:,7] > -0.771750, np.where(data[:,7] > -0.771750, np.where(data[:,16] > -0.857418, np.where(data[:,4] > 0.146694, data[:,15], data[:,32]), data[:,30]), data[:,32]), data[:,7])))+
0.250000*np.tanh(((np.where(np.where(data[:,11] > 0.493269, data[:,3], data[:,25])> 0.493269, np.where(data[:,3] <= -0.333995, np.where(np.where(data[:,3] <= -0.333995, data[:,9], data[:,34])> 0.493269, data[:,9], data[:,25]), data[:,34]), data[:,3])) *(((((((data[:,11])* 2.0)) * 2.0)) * 2.0)))) +
0.250000*np.tanh(np.where(data[:,19] <= 0.692272, np.where(data[:,19] <= 0.217533, np.where(np.where(data[:,34] > 0.769945, np.where(np.where(data[:,34] <= 0.489059, data[:,0], data[:,19])<= 0.327526, data[:,14], data[:,19]), data[:,22])<= 0.327526, data[:,25],(-1.0*(( data[:,14])))) , data[:,19]),(( data[:,0])*(( 10.0)))))+
0.250000*np.tanh(np.where(data[:,21] > -0.771750, np.where(data[:,27] > -0.771750,(( np.where(data[:,33] > -0.072284, data[:,17], np.where(data[:,27] > -0.771750, np.where(data[:,19] > 0.682501, data[:,23], np.where(data[:,27] > 0.438564, data[:,19],(8.43289566040039062))), data[:,19])))* 2.0), data[:,26]), data[:,21])) +
0.250000*np.tanh(np.where(((( np.where(((data[:,7])* 2.0)> -0.771750,(-1.0*(( data[:,7]))), data[:,7])) +(data[:,3])) /2.0)> -0.771750,(-1.0*(((((((((((((( np.where(data[:,1] <= 0.821987, data[:,7], data[:,2])) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)))) ,(( data[:,7])* 2.0)))+
0.250000*np.tanh(np.where(np.where(np.where(data[:,23] > -0.141852,(-1.0*(( data[:,18]))), np.where(( 7.49972295761108398)> -0.141852, data[:,19], data[:,24])) <= 1.473305, np.where(data[:,24] > 0.211662, data[:,18], data[:,23]),(7.49972295761108398)) <= 0.784285, np.where(data[:,8] > 0.931097, data[:,19],(7.49972295761108398)) ,(-1.0*(((7.49972295761108398)))))) +
0.250000*np.tanh(np.where(data[:,35] > -0.072284, np.where(np.where(np.where(data[:,4] > 0.469333, data[:,4], data[:,13])> -0.109996, data[:,8], data[:,24])> 0.696380,(-1.0*(( data[:,8]))), data[:,7]),(( data[:,24])+(((data[:,4])+(((data[:,8])+(data[:,9])))))))) +
0.250000*np.tanh(np.where(np.where(data[:,33] > 1.166741, data[:,34], data[:,20])<= 0.286918, data[:,34],(((( np.where(((data[:,5])*(data[:,0])) > 0.435265, np.where(((data[:,34])*(np.where(data[:,34] > 1.166741, data[:,13], data[:,33])))> -0.771750,(9.0), data[:,33]),(-1.0*(( data[:,34])))))* 2.0)) * 2.0)))+
0.250000*np.tanh(np.where(np.where(data[:,4] > -0.771750, data[:,20],(8.40476131439208984)) <= 0.612112, np.where(data[:,34] > 0.122890,(((((((((-1.0*(( data[:,16])))) * 2.0)) * 2.0)) * 2.0)) *(data[:,9])) , np.where(data[:,4] > 0.122890, data[:,16],(-1.0*(( data[:,2]))))),(((((((-1.0*(( data[:,16])))) * 2.0)) * 2.0)) * 2.0)))+
0.250000*np.tanh(((np.where(data[:,20] <= 0.251178, data[:,6],(( np.where(data[:,7] <= -0.857418, data[:,7], np.where(data[:,0] <= -0.857418, data[:,0], data[:,0])))-(((data[:,9])*(data[:,16])))))) -(((((data[:,0])*(((data[:,0])*(data[:,0])))))*(((data[:,0])*(data[:,0])))))))+
0.250000*np.tanh(((np.where(data[:,19] > 1.419382, data[:,17], np.where(data[:,33] > 1.214718, data[:,19], np.where(data[:,29] > 1.214718, data[:,28], np.where(data[:,31] > 0.727410, np.where(data[:,19] > 0.841255, data[:,19], np.where(data[:,0] > 0.841255, data[:,31], data[:,19])) , np.where(((data[:,0])* 2.0)> 0.727410, data[:,19], data[:,18])))))) * 2.0)) +
0.250000*np.tanh(np.where(data[:,12] <= 0.025218, np.where(data[:,29] <= 0.165825, np.where(np.where(data[:,1] <= 0.403619, data[:,9],(( data[:,12])-(data[:,9])))> 0.319913, data[:,6], np.where(data[:,9] <= 0.403619,(( data[:,9])-(data[:,0])) , data[:,1])) , data[:,14]),(( data[:,0])-(data[:,7])))) +
0.250000*np.tanh(np.where(data[:,32] > -0.440378,(( np.where(data[:,5] > 0.294226, data[:,33], np.where(data[:,16] <= 0.784285, np.where(np.where(data[:,22] <= 0.784285,(( data[:,7])/ 2.0), data[:,13])<= -0.215004, data[:,7], data[:,13]), data[:,16])))+(data[:,16])) ,(-1.0*(( data[:,16])))))+
0.250000*np.tanh(np.where(np.where(data[:,7] > -1.119129, data[:,21],(( data[:,0])* 2.0)) <= -1.119129, data[:,21], np.where(data[:,7] <= -1.119129, data[:,7], np.where(((data[:,9])* 2.0)> 0.588421,(((((( data[:,0])* 2.0)) * 2.0)) * 2.0), np.where(data[:,8] > -1.119129, np.where(data[:,13] > -1.119129,(12.55322360992431641), data[:,27]), data[:,8])))))+
0.250000*np.tanh(np.where(data[:,20] <= -0.008534,(((((((( np.where(data[:,3] > 1.777722,(( data[:,18])-(data[:,3])) , data[:,17])) -(data[:,3])))-(data[:,30])))-(data[:,15])))* 2.0), np.where(data[:,16] <= 0.353450,(( np.where(data[:,2] <= 0.353450, data[:,3], data[:,17])) * 2.0), data[:,13])))+
0.250000*np.tanh(np.where(data[:,18] <= 0.328870, np.where(data[:,0] > 0.587623, data[:,7], np.where(( -1.0*(( data[:,7])))<= 0.576942,(( data[:,32])* 2.0), data[:,17])) ,(((-1.0*(( data[:,32])))) -(((data[:,0])+(np.where(data[:,0] <= 0.576942,(( data[:,2])* 2.0), np.where(data[:,18] <= 0.576942, data[:,18], data[:,18])))))))) +
0.250000*np.tanh(((((( data[:,0])+(data[:,18])) /2.0)) *(((((((((((((data[:,34])-(data[:,32])))-(np.where(data[:,24] <= 0.316750,(((-1.0*(( data[:,15])))) * 2.0), data[:,32])))) -(( -1.0*(( data[:,25])))))) -(data[:,32])))-(data[:,11])))-(data[:,18])))))+
0.250000*np.tanh(np.where(data[:,11] > -0.065434, np.where(data[:,3] <= -0.251953, np.where(data[:,29] <= 0.123877, data[:,34], data[:,12]), np.where(data[:,11] > 1.764468,(-1.0*(( data[:,11]))), np.where(data[:,29] > 1.764468, data[:,29], np.where(data[:,0] > 0.123877, np.where(data[:,3] > 0.252898, data[:,11], data[:,27]),(-1.0*(( data[:,12]))))))), data[:,29])) +
0.250000*np.tanh(np.where(data[:,11] > 1.735693, data[:,21],(((( np.where(data[:,1] <= 0.723280, np.where(((data[:,27])+(((data[:,7])+(np.where(data[:,9] <= 0.211452, data[:,28], data[:,21])))))<= 0.070838,(( data[:,9])-(data[:,0])) , data[:,0]), data[:,1])) * 2.0)) * 2.0)))+
0.250000*np.tanh(( -1.0*(((((((( np.where(np.where(np.where(data[:,31] <= 1.764468, data[:,18], data[:,21])> -1.119129, np.where(data[:,26] <= 1.127157, np.where(data[:,31] <= 1.127157, data[:,33],(((9.0)) *(data[:,26]))),(1.80018830299377441)) ,(8.0)) <= 1.232524, data[:,5],(9.0)))*(data[:,21])))* 2.0)) * 2.0)))))+
0.250000*np.tanh(((np.where(data[:,5] <= -0.693927, data[:,5], data[:,25])) *(((((np.where(np.where(data[:,17] <= -0.068018, data[:,33], np.where(data[:,17] <= -0.068018, data[:,33], np.where(data[:,5] <= -0.314000, data[:,5],(10.0)))) <= 0.999631, data[:,10], data[:,33])) * 2.0)) * 2.0)))) +
0.250000*np.tanh(np.where(data[:,1] > 0.189428, np.where(data[:,11] <= 1.735693, data[:,29],(-1.0*(( data[:,29])))) , np.where(np.where(data[:,0] <= 1.735693, data[:,29],(((((9.0)) *(data[:,29])))*(data[:,1])))> 0.189428,(-1.0*(((8.0)))) ,(((( data[:,11])*(( 8.0)))) *(data[:,20])))))+
0.250000*np.tanh(np.where(np.where(data[:,9] > 1.235155, data[:,9], data[:,9])> -0.141852, np.where(data[:,9] <= 1.764468, np.where(((data[:,0])+(data[:,0])) > 1.235155, data[:,21], data[:,6]), data[:,0]),(-1.0*(( np.where(data[:,21] <= 0.150218, data[:,18],(( data[:,0])+(data[:,0])))))))) +
0.250000*np.tanh(np.where(((data[:,1])-(data[:,20])) > 0.235143, np.where(data[:,0] > 1.120178, data[:,20],(((( data[:,17])-(data[:,27])))-(((((((( -1.0*(( data[:,27])))) +(data[:,30])) /2.0)) +(data[:,30])) /2.0)))) ,(( np.where(data[:,17] > -0.193323, data[:,13], data[:,26])) *(( -1.0*(( data[:,13])))))))+
0.250000*np.tanh(((((((((np.where(data[:,3] <= 1.469977, data[:,25], data[:,25])) *(((data[:,18])-(data[:,19])))))-(((data[:,7])*(data[:,3])))))-(((data[:,34])*(((data[:,20])* 2.0)))))) -(((data[:,34])*(data[:,19])))))+
0.250000*np.tanh(np.where(data[:,19] > -0.286671,(((((( data[:,0])-(data[:,7])))-(((((data[:,3])-(((data[:,0])-(((data[:,7])-(((data[:,0])-(data[:,7])))))))))-(data[:,0])))))-(((data[:,7])-(((data[:,0])-(data[:,7])))))) , data[:,7])) +
0.250000*np.tanh(np.where(data[:,9] > 1.094975,(-1.0*(( data[:,16]))),(((( np.where(data[:,31] > 1.094975,(-1.0*(( data[:,16]))), np.where(data[:,16] > 1.094975,(((((data[:,30])+(data[:,23])) /2.0)) -(data[:,16])) , np.where(data[:,23] <= 0.045765, data[:,16], data[:,12])))) -(data[:,0])))-(data[:,30])))) +
0.250000*np.tanh(np.where(data[:,16] <= -0.771750, np.where(((data[:,17])-(data[:,9])) <= 0.486327, data[:,9], data[:,16]), np.where(data[:,9] <= 0.821987, np.where(data[:,16] <= 0.821987, np.where(data[:,9] <= 0.821987, np.where(data[:,7] <= 0.486327, data[:,17], data[:,13]), data[:,16]), data[:,32]),(( data[:,22])-(data[:,9])))))+
0.250000*np.tanh(np.where(np.where(((data[:,20])-(data[:,23])) <= -0.800310,(( data[:,21])+(( 2.0))), data[:,34])<= 0.673108, np.where(data[:,28] > 0.723143,(( data[:,34])+(data[:,23])) ,(((( data[:,21])+(data[:,23])))+(( 2.0)))) ,(((( data[:,28])-(data[:,21])))-(data[:,21])))) +
0.250000*np.tanh(((((data[:,6])+(((((((data[:,6])+(((np.where(data[:,13] <= 0.682628, np.where(data[:,28] <= 0.682628, data[:,6],(-1.0*(( data[:,24])))) ,(-1.0*(( data[:,27])))))-(data[:,10])))))+(((data[:,6])-(data[:,10])))))-(data[:,10])))))-(data[:,10])))+
0.250000*np.tanh(np.where(np.where(data[:,3] > 0.423442,(( data[:,20])-(data[:,3])) , data[:,31])> 0.071005, data[:,19], np.where(data[:,20] <= -0.251953,(( data[:,8])-(data[:,3])) , np.where(data[:,20] <= 0.233578, data[:,16], np.where(data[:,16] <= 0.521352,(((( data[:,3])* 2.0)) * 2.0), data[:,8])))))+
0.250000*np.tanh(np.where(data[:,14] <= -0.160560, np.where(data[:,29] <= 0.607498,(-1.0*(( np.where(data[:,16] <= -0.693927, data[:,12], data[:,23])))) , np.where(data[:,1] > 1.207751, data[:,29], np.where(data[:,16] > 1.207751, data[:,8], data[:,16]))), np.where(data[:,30] > 1.207751, data[:,29], np.where(data[:,16] <= -0.857418, data[:,14], data[:,1])))) +
0.250000*np.tanh(np.where(( -1.0*(( data[:,34])))> -0.215004, np.where(( -1.0*(( data[:,20])))> 0.025218, data[:,20], np.where(data[:,31] <= 1.777722, data[:,7],(-1.0*(( np.where(data[:,29] <= 1.777722, data[:,7], data[:,34])))))) ,(((((8.46040058135986328)) *(((data[:,11])*(data[:,29])))))*(( -1.0*(( data[:,20])))))))+
0.250000*np.tanh(np.where(data[:,3] <= 0.373310, np.where(data[:,33] <= 0.724514, np.where(np.where(data[:,31] > 1.764468, data[:,20], np.where(data[:,22] <= -0.052833, data[:,0], np.where(data[:,31] <= -0.052833, data[:,3], data[:,15])))> 0.353450,(((((-1.0*(((3.0)))))* 2.0)) -(data[:,3])) ,(3.0)) , data[:,3]),(-1.0*(( data[:,3])))))+
0.250000*np.tanh(np.where(data[:,27] <= -1.380841, data[:,27], np.where(data[:,32] > 1.133159, data[:,16], np.where(data[:,16] <= -1.380841, data[:,34], np.where(np.where(data[:,27] <= 1.133159, np.tanh(( data[:,32])) ,(( data[:,27])/ 2.0)) > 0.821987, data[:,33], np.where(data[:,33] > 0.067128, data[:,17], np.where(data[:,32] > 1.431019, data[:,17], data[:,18])))))))+
0.250000*np.tanh(((np.where(( 5.96617126464843750)<= -0.138850, data[:,9],(5.96617126464843750)))*(((np.where(((data[:,7])-(data[:,0])) <= -1.119129, data[:,7],(( data[:,0])-(data[:,7])))) * 2.0)))) +
0.250000*np.tanh(np.where(np.where(data[:,12] > 1.055974, data[:,12], data[:,13])<= 1.327326, np.where(( -1.0*(( data[:,18])))<= 1.327326, np.where(np.where(data[:,18] > 0.582934,(-1.0*(( np.where(data[:,18] <= 1.055974, data[:,19],(8.0))))), data[:,7])> -1.119129,(((data[:,7])+(( 13.26399898529052734)))/2.0),(-1.0*(((8.0))))), data[:,18]), data[:,19])) +
0.250000*np.tanh(np.where(((data[:,0])-(np.where(data[:,9] <= -1.119129, data[:,5], data[:,7])))> -0.260168, np.where(data[:,35] > 0.835016, data[:,9], np.where(data[:,35] > -0.079780, data[:,12], data[:,9])) ,(((((((((-1.0*(( data[:,34])))) -(data[:,9])))-(data[:,12])))-(data[:,12])))-(data[:,9])))) +
0.250000*np.tanh(np.where(((data[:,21])/ 2.0)> -0.247827,(( np.where(data[:,0] > -0.193323, np.where(((( data[:,9])+(data[:,21])) /2.0)> -0.247827,(13.47173786163330078), data[:,34]), np.where(data[:,34] > -1.119129, data[:,0],(( data[:,27])/ 2.0)))) *(data[:,9])) , np.where(data[:,9] > 0.668353, data[:,34],(( data[:,21])/ 2.0)))) +
0.250000*np.tanh(( -1.0*(( np.where(np.where(data[:,35] > -0.215004, np.where(data[:,8] > 0.604619, data[:,2], np.where(data[:,19] > 1.892933, data[:,19], data[:,35])) , data[:,5])> 0.025218, np.where(data[:,5] > 1.892933, data[:,5], np.where(data[:,31] > 1.892933, data[:,8], data[:,19])) , data[:,0])))))+
0.250000*np.tanh(((np.where(((data[:,2])-(((np.where(data[:,2] > 0.959459,(6.16672563552856445), np.where(((data[:,7])-(data[:,0])) > 0.959459,(( data[:,2])-(( 14.04715442657470703))), data[:,7])))-(data[:,0])))) > 0.802554,(14.04715442657470703),(( data[:,2])-(( 14.04715442657470703)))))*(((data[:,7])-(data[:,0])))))+
0.250000*np.tanh(((( -1.0*(( data[:,24])))) *(np.where(np.where(data[:,22] <= 0.506614, data[:,23], data[:,25])<= 0.710089, np.where(np.where(((data[:,24])*(data[:,16])) > 1.777722, np.where(data[:,22] > 0.769945, data[:,22], data[:,25]), data[:,27])<= 0.412040, data[:,16], data[:,32]), data[:,22])))) +
0.250000*np.tanh(((np.where(data[:,7] <= 0.386603, np.where(data[:,11] > -1.119129, np.where(data[:,23] > -1.119129, data[:,28], data[:,23]), data[:,23]), np.where(np.where(data[:,11] <= -1.119129, data[:,23], data[:,0])> 0.045667,(-1.0*(((((( data[:,23])* 2.0)) * 2.0)))) ,(((-1.0*(( data[:,28])))) * 2.0)))) -(data[:,10])))+
0.250000*np.tanh(np.where(np.where(data[:,0] > 1.166741, data[:,34], data[:,25])> -0.141852, np.where(data[:,30] > -0.251953, data[:,20], np.where(data[:,0] > -0.251953, data[:,33], np.where(np.where(data[:,20] > -0.251953, data[:,20], data[:,34])> 0.769945, data[:,0],(( data[:,30])-(data[:,20]))))), data[:,34])) +
0.250000*np.tanh(np.where(data[:,9] > -0.771750, np.where(data[:,34] <= -0.141852, data[:,7], np.where(data[:,9] > 1.166741,(-1.0*(( data[:,13]))), np.where(data[:,0] > 0.400879, data[:,9], data[:,6]))), np.where(((data[:,7])-(data[:,0])) <= -0.141852,(-1.0*(( data[:,34]))), data[:,34])))+
0.250000*np.tanh(np.where(data[:,22] <= 1.072908,(((( np.where(data[:,19] <= 1.072908,(( data[:,18])+(data[:,9])) , data[:,9])) +(np.where(data[:,18] <= 0.818737, data[:,19], np.where(data[:,19] > 0.724243, np.where(data[:,22] <= 1.072908, data[:,19], data[:,9]), data[:,18])))))*(data[:,23])) , data[:,19])) +
0.250000*np.tanh(np.where(np.where(((( data[:,21])+(data[:,7])) /2.0)> -0.215004, np.tanh(( data[:,19])) , data[:,9])<= 0.821987, np.where(data[:,18] <= 0.518135,(((((-1.0*(((( data[:,20])*(data[:,22])))))) +(((( data[:,19])+(data[:,7])) /2.0)))) +(( -1.0*(( data[:,9]))))), data[:,21]), data[:,9])) +
0.250000*np.tanh(((np.where(data[:,17] > 0.172588,(((( data[:,3])+(((data[:,23])+(((((((data[:,3])+(data[:,20])))+(((data[:,23])+(data[:,17])))))+(data[:,33])))))))+(((data[:,3])+(((data[:,33])-(data[:,10])))))) , data[:,25])) *(data[:,20])))+
0.250000*np.tanh(np.where(data[:,9] <= 1.685554, np.where(((data[:,19])-(data[:,8])) <= 1.685554, np.where(np.where(data[:,21] <= -0.322175, data[:,9], data[:,32])> -0.440378,(((((( data[:,9])-(data[:,0])))-(data[:,23])))-(data[:,0])) ,(((( data[:,8])* 2.0)) -(data[:,9]))), data[:,0]), data[:,0])) +
0.250000*np.tanh(np.where(np.where(data[:,16] <= 0.961243, np.where(data[:,3] <= 0.961243, data[:,8], data[:,8]), data[:,16])<= 1.166741, np.where(data[:,7] > 0.045667,(-1.0*(((( data[:,3])+(data[:,34]))))), np.where(((data[:,17])+(data[:,16])) <= -0.268848,(( data[:,3])+(data[:,3])) ,(5.0))),(-1.0*(((5.0)))))) +
0.250000*np.tanh(np.where(data[:,30] > -0.693927,(( data[:,14])*(np.where(((((((data[:,14])*(np.where(data[:,30] <= 1.606641, data[:,33], data[:,33])))) * 2.0)) * 2.0)<= 1.606641,(( data[:,33])* 2.0), data[:,19]))), np.where(data[:,20] > -0.693927, data[:,19],(( data[:,33])*(data[:,14])))))+
0.250000*np.tanh(((((data[:,0])+(((((((data[:,30])*(data[:,30])))+(((np.where(data[:,16] <= 0.383448, np.where(data[:,17] <= 0.383448,(( data[:,15])/ 2.0), data[:,20]), np.where(((data[:,0])* 2.0)<= 0.877413, data[:,26], data[:,19])))* 2.0)))) * 2.0)))) *(((((data[:,0])* 2.0)) * 2.0)))) +
0.250000*np.tanh(np.where(data[:,2] > 0.502876,(((data[:,12])+(data[:,10])) /2.0),(( np.where(data[:,12] <= -0.168730, np.where(np.where(((( data[:,7])+(data[:,10])) /2.0)<= -0.278508, data[:,7], np.where(data[:,10] <= -0.278508, data[:,10],(3.0)))> 1.687420, data[:,15], data[:,7]), data[:,1])) -(((( data[:,12])+(data[:,10])) /2.0)))))+
0.250000*np.tanh(np.where(data[:,21] <= -0.215004, np.where(data[:,8] <= 0.182168, np.where(np.tanh(( np.tanh(( data[:,2])))) > 0.421563, np.where(data[:,26] <= 1.573971, data[:,21], data[:,25]),(10.43833827972412109)) , np.where(data[:,8] <= 0.182168, data[:,26], np.where(data[:,26] <= 0.399173, data[:,6], data[:,21]))), data[:,8])) +
0.250000*np.tanh(((np.where(data[:,13] <= 1.090363, np.where(np.where(((data[:,30])*(data[:,31])) > 1.090363, data[:,35], data[:,22])<= -0.215004, data[:,26], data[:,10]), np.where(data[:,30] <= -0.333995, data[:,13], np.where(data[:,22] > 1.090363, data[:,22],(( data[:,24])* 2.0)))))*(( -1.0*(((( data[:,31])* 2.0)))))))+
0.250000*np.tanh(((((((((np.where(np.where(data[:,28] > 0.818995, data[:,2], data[:,5])<= -0.141852, np.where(data[:,8] > -0.215004, data[:,34], np.where(data[:,8] > -0.215004, np.where(data[:,28] > 0.710089, data[:,2], data[:,6]), data[:,8])) , data[:,6])) -(np.where(data[:,2] > 0.710089, data[:,29], data[:,10])))) * 2.0)) * 2.0)) * 2.0)) +
0.250000*np.tanh(np.where(data[:,27] > -0.617524, np.where(data[:,0] > 0.530017, np.where(data[:,11] > -0.079780, data[:,12], data[:,21]), np.where(data[:,25] > -0.079780, np.where(np.tanh(( np.tanh(( data[:,29])))) <= 0.400427, data[:,11], np.where(data[:,25] <= 0.400427, data[:,12], data[:,0])) , data[:,23])) , data[:,12])) +
0.250000*np.tanh(np.where(data[:,0] <= 0.521352, np.where(np.where(data[:,9] <= -0.857418, np.where(data[:,27] <= -0.857418,(-1.0*(( data[:,27]))), data[:,8]), data[:,27])<= 0.025218, np.where(( -1.0*(( data[:,27])))<= 1.473305, data[:,8], data[:,27]),(-1.0*(( data[:,9])))) , np.where(data[:,9] <= 0.884259,(-1.0*(( data[:,8]))), data[:,8])))+
0.250000*np.tanh(np.where(data[:,9] > 0.446004,(-1.0*(( data[:,7]))),(((((((-1.0*(( np.where(data[:,7] > -0.215004, np.where(data[:,7] > -0.051274, np.where(data[:,9] > -0.051274, data[:,24], data[:,24]), data[:,9]), data[:,9])))))+(data[:,27])))+(( -1.0*(( data[:,0])))))) +(data[:,7])))) +
0.250000*np.tanh(((data[:,0])*(np.where(((np.where(data[:,9] > 1.685554,(-1.0*(( data[:,9]))), np.where(data[:,10] > 1.685554, data[:,9], data[:,7])))+(data[:,24])) > 0.013256,(-1.0*(((((((data[:,8])+(data[:,11])) /2.0)) +(data[:,23]))))), np.where(data[:,30] <= 1.158285, data[:,9], data[:,11]))))))<load_from_csv>
numerical_columns_df['GarageYrBlt'] = numerical_columns_df['GarageYrBlt'].fillna(numerical_columns_df['YrSold']-35)
 numerical_columns_df['LotFrontage'] = numerical_columns_df['LotFrontage'].fillna(0)
 numerical_columns_df['MasVnrArea'] = numerical_columns_df['MasVnrArea'].fillna(0)
 numerical_columns_df['BsmtFinSF1'] = numerical_columns_df['BsmtFinSF1'].fillna(368.5)
 numerical_columns_df['BsmtFinSF2'] = numerical_columns_df['BsmtFinSF2'].fillna(0)
 numerical_columns_df['BsmtUnfSF'] = numerical_columns_df['BsmtUnfSF'].fillna(467)
 numerical_columns_df['TotalBsmtSF'] = numerical_columns_df['TotalBsmtSF'].fillna(989.5)
 numerical_columns_df['BsmtFullBath'] = numerical_columns_df['BsmtFullBath'].fillna(0)
 numerical_columns_df['BsmtHalfBath'] = numerical_columns_df['BsmtHalfBath'].fillna(0)
 numerical_columns_df['GarageCars'] = numerical_columns_df['GarageCars'].fillna(2)
 numerical_columns_df['GarageArea'] = numerical_columns_df['GarageArea'].fillna(480 )
if TRAIN_OFFLINE:
train = pd.read_csv('.. /input/train.csv', dtype={'WindSpeed': 'object'})
 else:
train = pd.read_csv('/kaggle/input/nfl-big-data-bowl-2020/train.csv', dtype={'WindSpeed': 'object'})
<remove_duplicates>
null_counts = numerical_columns_df.isnull().sum()
print("Number of null values in each column:
{}".format(null_counts))
outcomes = train[['GameId','PlayId','Yards']].drop_duplicates()<categorify>
object_columns_df = object_columns_df.drop(['Heating','RoofMatl','Condition2','Street','Utilities'],axis=1 )
def strtoseconds(txt):
txt = txt.split(':')
 ans = int(txt[0])*60 + int(txt[1])+ int(txt[2])/60
return ans
def strtofloat(x):
try:
return float(x)
 except:
return -1
def map_weather(txt):
ans = 1
if pd.isna(txt):
return 0
if 'partly' in txt:
ans*=0.5
if 'climate controlled' in txt or 'indoor' in txt:
return ans*3
if 'sunny' in txt or 'sun' in txt:
return ans*2
if 'clear' in txt:
return ans
if 'cloudy' in txt:
return -ans
if 'rain' in txt or 'rainy' in txt:
return -2*ans
if 'snow' in txt:
return -3*ans
return 0
def OffensePersonnelSplit(x):
dic = {'DB' : 0, 'DL' : 0, 'LB' : 0, 'OL' : 0, 'QB' : 0, 'RB' : 0, 'TE' : 0, 'WR' : 0}
for xx in x.split(","):
xxs = xx.split(" ")
 dic[xxs[-1]] = int(xxs[-2])
 return dic
def DefensePersonnelSplit(x):
dic = {'DB' : 0, 'DL' : 0, 'LB' : 0, 'OL' : 0}
for xx in x.split(","):
xxs = xx.split(" ")
 dic[xxs[-1]] = int(xxs[-2])
 return dic
def orientation_to_cat(x):
x = np.clip(x, 0, 360 - 1)
 try:
return str(int(x/15))
except:
return "nan"
def preprocess(train):
train['GameClock_sec'] = train['GameClock'].apply(strtoseconds)
 train["GameClock_minute"] = train["GameClock"].apply(lambda x : x.split(":")[0] ).astype("object")
 train['PlayerHeight_dense'] = train['PlayerHeight'].apply(lambda x: 12*int(x.split('-')[0])+int(x.split('-')[1]))
train['TimeHandoff'] = train['TimeHandoff'].apply(lambda x: datetime.datetime.strptime(x, "%Y-%m-%dT%H:%M:%S.%fZ"))
train['TimeSnap'] = train['TimeSnap'].apply(lambda x: datetime.datetime.strptime(x, "%Y-%m-%dT%H:%M:%S.%fZ"))
train['TimeDelta'] = train.apply(lambda row:(row['TimeHandoff'] - row['TimeSnap'] ).total_seconds() , axis=1)
 train['PlayerBirthDate'] = train['PlayerBirthDate'].apply(lambda x: datetime.datetime.strptime(x, "%m/%d/%Y"))
seconds_in_year = 60*60*24*365.25
train['PlayerAge'] = train.apply(lambda row:(row['TimeHandoff']-row['PlayerBirthDate'] ).total_seconds() /seconds_in_year, axis=1)
 train["PlayerAge_ob"] = train['PlayerAge'].astype(np.int ).astype("object")
 train['WindSpeed_ob'] = train['WindSpeed'].apply(lambda x: x.lower().replace('mph', '' ).strip() if not pd.isna(x)else x)
 train['WindSpeed_ob'] = train['WindSpeed_ob'].apply(lambda x:(int(x.split('-')[0])+int(x.split('-')[1])) /2 if not pd.isna(x)and '-' in x else x)
 train['WindSpeed_ob'] = train['WindSpeed_ob'].apply(lambda x:(int(x.split() [0])+int(x.split() [-1])) /2 if not pd.isna(x)and type(x)!=float and 'gusts up to' in x else x)
 train['WindSpeed_dense'] = train['WindSpeed_ob'].apply(strtofloat)
 train['GameWeather_process'] = train['GameWeather'].str.lower()
train['GameWeather_process'] = train['GameWeather_process'].apply(lambda x: "indoor" if not pd.isna(x)and "indoor" in x else x)
 train['GameWeather_process'] = train['GameWeather_process'].apply(lambda x: x.replace('coudy', 'cloudy' ).replace('clouidy', 'cloudy' ).replace('party', 'partly')if not pd.isna(x)else x)
 train['GameWeather_process'] = train['GameWeather_process'].apply(lambda x: x.replace('clear and sunny', 'sunny and clear')if not pd.isna(x)else x)
 train['GameWeather_process'] = train['GameWeather_process'].apply(lambda x: x.replace('skies', '' ).replace("mostly", "" ).strip() if not pd.isna(x)else x)
 train['GameWeather_dense'] = train['GameWeather_process'].apply(map_weather)
 train['IsRusher'] =(train['NflId'] == train['NflIdRusher'])
 train['IsRusher_ob'] =(train['NflId'] == train['NflIdRusher'] ).astype("object")
 temp = train[train["IsRusher"]][["Team", "PlayId"]].rename(columns={"Team":"RusherTeam"})
 train = train.merge(temp, on = "PlayId")
 train["IsRusherTeam"] = train["Team"] == train["RusherTeam"]
train["Quarter_ob"] = train["Quarter"].astype("object")
 train["Down_ob"] = train["Down"].astype("object")
 train["JerseyNumber_ob"] = train["JerseyNumber"].astype("object")
 train["YardLine_ob"] = train["YardLine"].astype("object")
 train["Orientation_ob"] = train["Orientation"].apply(lambda x : orientation_to_cat(x)).astype("object")
 train["Dir_ob"] = train["Dir"].apply(lambda x : orientation_to_cat(x)).astype("object")
 train["Orientation_sin"] = train["Orientation"].apply(lambda x : np.sin(x/360 * 2 * np.pi))
train["Orientation_cos"] = train["Orientation"].apply(lambda x : np.cos(x/360 * 2 * np.pi))
train["Dir_sin"] = train["Dir"].apply(lambda x : np.sin(x/360 * 2 * np.pi))
train["Dir_cos"] = train["Dir"].apply(lambda x : np.cos(x/360 * 2 * np.pi))
train["diffScoreBeforePlay"] = train["HomeScoreBeforePlay"] - train["VisitorScoreBeforePlay"]
train["diffScoreBeforePlay_binary_ob"] =(train["HomeScoreBeforePlay"] > train["VisitorScoreBeforePlay"] ).astype("object")
 Turf = {'Field Turf':'Artificial', 'A-Turf Titan':'Artificial', 'Grass':'Natural', 'UBU Sports Speed S5-M':'Artificial', 'Artificial':'Artificial', 'DD GrassMaster':'Artificial', 'Natural Grass':'Natural', 'UBU Speed Series-S5-M':'Artificial', 'FieldTurf':'Artificial', 'FieldTurf 360':'Artificial', 'Natural grass':'Natural', 'grass':'Natural', 'Natural':'Natural', 'Artifical':'Artificial', 'FieldTurf360':'Artificial', 'Naturall Grass':'Natural', 'Field turf':'Artificial', 'SISGrass':'Artificial', 'Twenty-Four/Seven Turf':'Artificial', 'natural grass':'Natural'}
train['Turf'] = train['Turf'].map(Turf)
 temp = train["OffensePersonnel"].iloc[np.arange(0, len(train), 22)].apply(lambda x : pd.Series(OffensePersonnelSplit(x)))
 temp.columns = ["Offense" + c for c in temp.columns]
temp["PlayId"] = train["PlayId"].iloc[np.arange(0, len(train), 22)]
train = train.merge(temp, on = "PlayId")
 temp = train["DefensePersonnel"].iloc[np.arange(0, len(train), 22)].apply(lambda x : pd.Series(DefensePersonnelSplit(x)))
 temp.columns = ["Defense" + c for c in temp.columns]
temp["PlayId"] = train["PlayId"].iloc[np.arange(0, len(train), 22)]
train = train.merge(temp, on = "PlayId")
 train = train.sort_values(by = ['X'] ).sort_values(by = ['Dis'] ).sort_values(by=['PlayId', 'IsRusherTeam', 'IsRusher'] ).reset_index(drop = True)
 return train<prepare_x_and_y>
Negatif = numerical_columns_df[numerical_columns_df['Age_House'] < 0]
Negatif
def create_features(df, deploy=False):
def new_X(x_coordinate, play_direction):
if play_direction == 'left':
return 120.0 - x_coordinate
else:
return x_coordinate
def new_line(rush_team, field_position, yardline):
if rush_team == field_position:
return 10.0 + yardline
else:
return 60.0 +(50 - yardline)
 def new_orientation(angle, play_direction):
if play_direction == 'left':
new_angle = 360.0 - angle
if new_angle == 360.0:
new_angle = 0.0
return new_angle
else:
return angle
def euclidean_distance(x1,y1,x2,y2):
x_diff =(x1-x2)**2
y_diff =(y1-y2)**2
return np.sqrt(x_diff + y_diff)
 def back_direction(orientation):
if orientation > 180.0:
return 1
else:
return 0
def update_yardline(df):
new_yardline = df[df['NflId'] == df['NflIdRusher']]
new_yardline['YardLine'] = new_yardline[['PossessionTeam','FieldPosition','YardLine']].apply(lambda x: new_line(x[0],x[1],x[2]), axis=1)
 new_yardline = new_yardline[['GameId','PlayId','YardLine']]
return new_yardline
def update_orientation(df, yardline):
df['X'] = df[['X','PlayDirection']].apply(lambda x: new_X(x[0],x[1]), axis=1)
 df['Orientation'] = df[['Orientation','PlayDirection']].apply(lambda x: new_orientation(x[0],x[1]), axis=1)
 df['Dir'] = df[['Dir','PlayDirection']].apply(lambda x: new_orientation(x[0],x[1]), axis=1)
 df = df.drop('YardLine', axis=1)
 df = pd.merge(df, yardline, on=['GameId','PlayId'], how='inner')
 return df
def back_features(df):
carriers = df[df['NflId'] == df['NflIdRusher']][['GameId','PlayId','NflIdRusher','X','Y','Orientation','Dir','YardLine']]
carriers['back_from_scrimmage'] = carriers['YardLine'] - carriers['X']
carriers['back_oriented_down_field'] = carriers['Orientation'].apply(lambda x: back_direction(x))
carriers['back_moving_down_field'] = carriers['Dir'].apply(lambda x: back_direction(x))
carriers = carriers.rename(columns={'X':'back_X',
'Y':'back_Y'})
 carriers = carriers[['GameId','PlayId','NflIdRusher','back_X','back_Y','back_from_scrimmage','back_oriented_down_field','back_moving_down_field']]
return carriers
def features_relative_to_back(df, carriers):
player_distance = df[['GameId','PlayId','NflId','X','Y']]
player_distance = pd.merge(player_distance, carriers, on=['GameId','PlayId'], how='inner')
 player_distance = player_distance[player_distance['NflId'] != player_distance['NflIdRusher']]
player_distance['dist_to_back'] = player_distance[['X','Y','back_X','back_Y']].apply(lambda x: euclidean_distance(x[0],x[1],x[2],x[3]), axis=1)
 player_distance = player_distance.groupby(['GameId','PlayId','back_from_scrimmage','back_oriented_down_field','back_moving_down_field'])\ 
.agg({'dist_to_back':['min','max','mean','std']})\ 
.reset_index()
player_distance.columns = ['GameId','PlayId','back_from_scrimmage','back_oriented_down_field','back_moving_down_field',
'min_dist','max_dist','mean_dist','std_dist']
return player_distance
def defense_features(df):
rusher = df[df['NflId'] == df['NflIdRusher']][['GameId','PlayId','Team','X','Y']]
rusher.columns = ['GameId','PlayId','RusherTeam','RusherX','RusherY']
defense = pd.merge(df,rusher,on=['GameId','PlayId'],how='inner')
 defense = defense[defense['Team'] != defense['RusherTeam']][['GameId','PlayId','X','Y','RusherX','RusherY']]
defense['def_dist_to_back'] = defense[['X','Y','RusherX','RusherY']].apply(lambda x: euclidean_distance(x[0],x[1],x[2],x[3]), axis=1)
 defense = defense.groupby(['GameId','PlayId'])\ 
.agg({'def_dist_to_back':['min','max','mean','std']})\ 
.reset_index()
defense.columns = ['GameId','PlayId','def_min_dist','def_max_dist','def_mean_dist','def_std_dist']
return defense
def rusher_features(df):
rusher = df[df['NflId'] == df['NflIdRusher']][['GameId','PlayId','Dir', 'S', 'A', 'X', 'Y']]
rusher.columns = ['GameId','PlayId', 'RusherDir', 'RusherS', 'RusherA', 'RusherX', 'RusherY']
radian_angle =(90 - rusher['RusherDir'])* np.pi / 180.0
v_horizontal = np.abs(rusher['RusherS'] * np.cos(radian_angle))
v_vertical = np.abs(rusher['RusherS'] * np.sin(radian_angle))
rusher['v_horizontal'] = v_horizontal
rusher['v_vertical'] = v_vertical
rusher.columns = ['GameId','PlayId', 'RusherDir', 'RusherS','RusherA','RusherX', 'RusherY','v_horizontal', 'v_vertical']
return rusher
def static_features(df):
add_new_feas = []
df['PlayerHeight_dense'] = df['PlayerHeight'].apply(lambda x: 12*int(x.split('-')[0])+int(x.split('-')[1]))
add_new_feas.append('PlayerHeight_dense')
 df['TimeHandoff'] = df['TimeHandoff'].apply(lambda x: datetime.datetime.strptime(x, "%Y-%m-%dT%H:%M:%S.%fZ"))
df['TimeSnap'] = df['TimeSnap'].apply(lambda x: datetime.datetime.strptime(x, "%Y-%m-%dT%H:%M:%S.%fZ"))
df['TimeDelta'] = df.apply(lambda row:(row['TimeHandoff'] - row['TimeSnap'] ).total_seconds() , axis=1)
 df['PlayerBirthDate'] =df['PlayerBirthDate'].apply(lambda x: datetime.datetime.strptime(x, "%m/%d/%Y"))
seconds_in_year = 60*60*24*365.25
df['PlayerAge'] = df.apply(lambda row:(row['TimeHandoff']-row['PlayerBirthDate'] ).total_seconds() /seconds_in_year, axis=1)
 add_new_feas.append('PlayerAge')
 df['WindSpeed_ob'] = df['WindSpeed'].apply(lambda x: x.lower().replace('mph', '' ).strip() if not pd.isna(x)else x)
 df['WindSpeed_ob'] = df['WindSpeed_ob'].apply(lambda x:(int(x.split('-')[0])+int(x.split('-')[1])) /2 if not pd.isna(x)and '-' in x else x)
 df['WindSpeed_ob'] = df['WindSpeed_ob'].apply(lambda x:(int(x.split() [0])+int(x.split() [-1])) /2 if not pd.isna(x)and type(x)!=float and 'gusts up to' in x else x)
 df['WindSpeed_dense'] = df['WindSpeed_ob'].apply(strtofloat)
 add_new_feas.append('WindSpeed_dense')
 df["Orientation_ob"] = df["Orientation"].apply(lambda x : orientation_to_cat(x)).astype("object")
 df["Dir_ob"] = df["Dir"].apply(lambda x : orientation_to_cat(x)).astype("object")
 df["Orientation_sin"] = df["Orientation"].apply(lambda x : np.sin(x/360 * 2 * np.pi))
df["Orientation_cos"] = df["Orientation"].apply(lambda x : np.cos(x/360 * 2 * np.pi))
df["Dir_sin"] = df["Dir"].apply(lambda x : np.sin(x/360 * 2 * np.pi))
df["Dir_cos"] = df["Dir"].apply(lambda x : np.cos(x/360 * 2 * np.pi))
add_new_feas.append("Dir_sin")
 add_new_feas.append("Dir_cos")
 df["diffScoreBeforePlay"] = df["HomeScoreBeforePlay"] - df["VisitorScoreBeforePlay"]
add_new_feas.append("diffScoreBeforePlay")
 static_features = df[df['NflId'] == df['NflIdRusher']][add_new_feas+['GameId','PlayId','X','Y','S','A','Dis','Orientation','Dir',
'YardLine','Quarter','Down','Distance','DefendersInTheBox']].drop_duplicates()
static_features.fillna(-999,inplace=True)
 return static_features
def combine_features(relative_to_back, defense,rushing, static, deploy=deploy):
df = pd.merge(relative_to_back,defense,on=['GameId','PlayId'],how='inner')
 df = pd.merge(df,rushing,on=['GameId','PlayId'],how='inner')
 df = pd.merge(df,static,on=['GameId','PlayId'],how='inner')
 if not deploy:
df = pd.merge(df, outcomes, on=['GameId','PlayId'], how='inner')
 return df
yardline = update_yardline(df)
 df = update_orientation(df, yardline)
 back_feats = back_features(df)
 rel_back = features_relative_to_back(df, back_feats)
 def_feats = defense_features(df)
 rush_feats = rusher_features(df)
 static_feats = static_features(df)
 basetable = combine_features(rel_back, def_feats,rush_feats,static_feats, deploy=deploy)
 return basetable<feature_engineering>
numerical_columns_df['TotalBsmtBath'] = numerical_columns_df['BsmtFullBath'] + numerical_columns_df['BsmtFullBath']*0.5
numerical_columns_df['TotalBath'] = numerical_columns_df['FullBath'] + numerical_columns_df['HalfBath']*0.5
numerical_columns_df['TotalSA']=numerical_columns_df['TotalBsmtSF'] + numerical_columns_df['1stFlrSF'] + numerical_columns_df['2ndFlrSF']
%time train_basetable = create_features(train[train.Season!=2017].copy() , False )<prepare_x_and_y>
scaler = MinMaxScaler()
numerical_columns_df[['MSSubClass', 'LotFrontage', 'LotArea',
'OverallCond', 'YearBuilt', 'YearRemodAdd', 'MasVnrArea', 'BsmtFinSF1',
'BsmtFinSF2', 'BsmtUnfSF', 'TotalBsmtSF', '1stFlrSF', '2ndFlrSF',
'LowQualFinSF', 'GrLivArea', 'BsmtFullBath', 'BsmtHalfBath', 'FullBath',
'HalfBath', 'BedroomAbvGr', 'KitchenAbvGr', 'TotRmsAbvGrd',
'Fireplaces', 'GarageYrBlt', 'GarageCars', 'TotalSA','OverallQual','GarageArea', 'WoodDeckSF',
'OpenPorchSF', 'EnclosedPorch', '3SsnPorch', 'ScreenPorch', 'PoolArea',
'MiscVal', 'MoSold', 'YrSold', 'Age_House', 'TotalBsmtBath',
'TotalBath' ]] = scaler.fit_transform(numerical_columns_df[['MSSubClass', 'LotFrontage', 'LotArea',
'OverallCond', 'YearBuilt', 'YearRemodAdd','TotalSA','OverallQual', 'MasVnrArea', 'BsmtFinSF1',
'BsmtFinSF2', 'BsmtUnfSF', 'TotalBsmtSF', '1stFlrSF', '2ndFlrSF',
'LowQualFinSF', 'GrLivArea', 'BsmtFullBath', 'BsmtHalfBath', 'FullBath',
'HalfBath', 'BedroomAbvGr', 'KitchenAbvGr', 'TotRmsAbvGrd',
'Fireplaces', 'GarageYrBlt', 'GarageCars', 'GarageArea', 'WoodDeckSF',
'OpenPorchSF', 'EnclosedPorch', '3SsnPorch', 'ScreenPorch', 'PoolArea',
'MiscVal', 'MoSold', 'YrSold', 'Age_House', 'TotalBsmtBath',
'TotalBath']])
X = train_basetable.copy()
yards = X.Yards
y = np.zeros(( yards.shape[0], 199))
for idx, target in enumerate(list(yards)) :
if(target<-7):
target = -7
elif(target>20):
target = 20
y[idx][99 + target] = 1
X.drop(['GameId','PlayId','Yards'], axis=1, inplace=True )<normalization>
object_columns_df = pd.get_dummies(object_columns_df, columns=object_columns_df.columns )
scaler = StandardScaler()
X = scaler.fit_transform(X )<normalization>
df_final = pd.concat([object_columns_df, numerical_columns_df], axis=1,sort=False)
 df_final.head()
kl = np.zeros(( X.shape[0],2))
kl[:,0] = GPClusterI(X)
 kl[:,1] = GPClusterII(X)
 ss2 = StandardScaler()
kl = ss2.fit_transform(kl)
 X = np.concatenate([X,kl],axis=1 )<split>
df_final = df_final.drop(['Id',],axis=1)
 df_train = df_final[df_final['train'] == 1]
df_train = df_train.drop(['train',],axis=1)
 df_test = df_final[df_final['train'] == 0]
df_test = df_test.drop(['train','SalePrice'],axis=1)
 df_test.head()
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.15, random_state=12345 )<set_options>
target= df_train['SalePrice']
df_train = df_train.drop(['SalePrice'],axis=1 )
class CRPSCallback(Callback):
def __init__(self,validation, predict_batch_size=20, include_on_batch=False):
super(CRPSCallback, self ).__init__()
self.validation = validation
self.predict_batch_size = predict_batch_size
self.include_on_batch = include_on_batch
print('validation shape',len(self.validation))
def on_batch_begin(self, batch, logs={}):
pass
def on_train_begin(self, logs={}):
if not('CRPS_score_val' in self.params['metrics']):
self.params['metrics'].append('CRPS_score_val')
 def on_batch_end(self, batch, logs={}):
if(self.include_on_batch):
logs['CRPS_score_val'] = float('-inf')
 def on_epoch_end(self, epoch, logs={}):
logs['CRPS_score_val'] = float('-inf')
 if(self.validation):
X_valid, y_valid = self.validation[0], self.validation[1]
y_pred = self.model.predict(X_valid)
 y_true = np.clip(np.cumsum(y_valid, axis=1), 0, 1)
 y_pred = np.clip(np.cumsum(y_pred, axis=1), 0, 1)
 val_s =(( y_true - y_pred)** 2 ).sum(axis=1 ).sum(axis=0)/(199 * X_valid.shape[0])
 val_s = np.round(val_s, 6)
 logs['CRPS_score_val'] = val_s 
<choose_model_class>
x_train,x_test,y_train,y_test = train_test_split(df_train,target,test_size=0.33,random_state=0 )
def get_model(x_tr,y_tr,x_val,y_val):
inp = Input(shape =(x_tr.shape[1],))
x = Dense(1024, input_dim=X.shape[1], activation='relu' )(inp)
 x = Dropout(0.5 )(x)
 x = BatchNormalization()(x)
 x = Dense(512, activation='relu' )(x)
 x = Dropout(0.5 )(x)
 x = BatchNormalization()(x)
 x = Dense(256, activation='relu' )(x)
 x = Dropout(0.5 )(x)
 x = BatchNormalization()(x)
 out = Dense(199, activation='softmax' )(x)
 model = Model(inp,out)
 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=[])
 es = EarlyStopping(monitor='CRPS_score_val',
mode='min',
restore_best_weights=True,
verbose=1,
patience=10)
 mc = ModelCheckpoint('best_model.h5',monitor='CRPS_score_val',mode='min',
save_best_only=True, verbose=1, save_weights_only=True)
 bsz = 1024
steps = x_tr.shape[0]/bsz
model.fit(x_tr, y_tr,callbacks=[CRPSCallback(validation =(x_val,y_val)) ,es,mc], epochs=100, batch_size=bsz,verbose=1)
 model.load_weights("best_model.h5")
 y_pred = model.predict(x_val)
 y_valid = y_val
y_true = np.clip(np.cumsum(y_valid, axis=1), 0, 1)
 y_pred = np.clip(np.cumsum(y_pred, axis=1), 0, 1)
 val_s =(( y_true - y_pred)** 2 ).sum(axis=1 ).sum(axis=0)/(199 * x_val.shape[0])
 crps = np.round(val_s, 6)
 return model,crps<split>
xgb =XGBRegressor(booster='gbtree', colsample_bylevel=1,
colsample_bynode=1, colsample_bytree=0.6, gamma=0,num_parallel_tree=1,
importance_type='gain', learning_rate=0.01, max_delta_step=0,
max_depth=4, min_child_weight=2, n_estimators=2550,tree_method='exact',
n_jobs=1, nthread=None, objective='reg:squarederror',
reg_alpha=0.6, reg_lambda=0.6, scale_pos_weight=1,
silent=None, subsample=0.6, verbosity=1)
 lgbm = LGBMRegressor(objective='regression',
num_leaves=4,
learning_rate=0.01,
n_estimators=11000,
max_bin=200,
bagging_fraction=0.75,
bagging_freq=5,
bagging_seed=7,
feature_fraction=0.38,
)
losses = []
models = []
crps_csv = []
s_time = time.time()
for k in range(2):
kfold = KFold(5, random_state = 42 + k, shuffle = True)
 for k_fold,(tr_inds, val_inds)in enumerate(kfold.split(yards)) :
print("-----------")
 print("-----------")
 tr_x,tr_y = X[tr_inds],y[tr_inds]
val_x,val_y = X[val_inds],y[val_inds]
model,crps = get_model(tr_x,tr_y,val_x,val_y)
 models.append(model)
 print("the %d fold crps is %f"%(( k_fold+1),crps))
crps_csv.append(crps)
 print("mean crps is %f"%np.mean(crps_csv))
def predict(x_te):
model_num = len(models)
 for k,m in enumerate(models):
if k==0:
y_pred = m.predict(x_te,batch_size=1024)
 else:
y_pred+=m.predict(x_te,batch_size=1024)
 y_pred = y_pred / model_num
return y_pred 
<compute_test_metric>
y = target
feature_names = df_train.columns
X = df_train[feature_names]
train_X, val_X, train_y, val_y = train_test_split(X, y, random_state=1)
print("mean crps is %f"%np.mean(crps_csv)) 
<feature_engineering>
lgbm.fit(train_X, train_y )
def extract_feature(play, is_train=True):
if play['PlayDirection'].iloc[0] == 'right':
direction = 1
else:
direction = -1
home, away = play['Team'].values == 'home', play['Team'].values == 'away'
indRusher = np.where(play['NflId'].values == play['NflIdRusher'].iloc[0])[0][0]
if play['FieldPosition'].iloc[0] == play['PossessionTeam'].iloc[0]:
yardToGoal = 100 - play['YardLine'].iloc[0]
start = np.array([120 +(play['YardLine'].iloc[0] + 10)* direction, 53.3 / 2])% 120
else:
yardToGoal = play['YardLine'].iloc[0]
start = np.array([120 -(play['YardLine'].iloc[0] + 10)* direction, 53.3 / 2])% 120
Dir = play['Dir'].values
rad = np.nan_to_num(2 * np.pi *(90 - Dir)/ 360)
 x, y = play['X'].values, play['Y'].values
S = play['S'].values * np.logical_not(np.isnan(Dir))
A = play['A'].values * np.logical_not(np.isnan(Dir))
loc = np.vstack([x - start[0], y - start[1]] ).T * direction
vel =(S * np.vstack([np.cos(rad), np.sin(rad)])).T * direction
acc =(A * np.vstack([np.cos(rad), np.sin(rad)])).T * direction
locRusher, velRusher, accRusher = loc[indRusher], vel[indRusher], acc[indRusher]
diff = np.hstack([np.square(loc - locRusher), np.square(vel - velRusher), np.square(acc - accRusher)])
 scrimWidth = 5
inTheBox =(play['NflId'].values != play['NflIdRusher'].iloc[0])*(np.abs(loc[:, 0])< scrimWidth)
 locDet = np.linalg.slogdet(np.exp(- np.square(loc[inTheBox, np.newaxis] - loc[inTheBox][np.newaxis] ).sum(2)/ 2.))[1]
locHomeDet = np.linalg.slogdet(np.exp(- np.square(loc[home * inTheBox][:, np.newaxis] - loc[home * inTheBox][np.newaxis] ).sum(2)/ 2.))[1]
locAwayDet = np.linalg.slogdet(np.exp(- np.square(loc[away * inTheBox][:, np.newaxis] - loc[away * inTheBox][np.newaxis] ).sum(2)/ 2.))[1]
if play['PossessionTeam'].iloc[0] == play['HomeTeamAbbr'].iloc[0]:
x = np.hstack([diff[home].sum(0), diff[away].sum(0), locDet, locHomeDet, locAwayDet])
 else:
x = np.hstack([diff[away].sum(0), diff[home].sum(0), locDet, locAwayDet, locHomeDet])
 x = np.hstack([locRusher, velRusher, accRusher, x,(downs == play['Down'].iloc[0] ).astype(np.float),(teams == play['PossessionTeam'].iloc[0] ).astype(np.float)])
 offset = locRusher[0] - 5
threshold = play['Distance'].iloc[0] - offset
if is_train:
yard = play['Yards'].iloc[0] - offset
c = yard < threshold
y = np.minimum(yard, threshold)
 return x, y, c, offset
else:
return x, offset<feature_engineering>
xgb.fit(train_X, train_y )
data = pd.read_csv('/kaggle/input/nfl-big-data-bowl-2020/train.csv', low_memory=False)
 data.loc[data.HomeTeamAbbr.values == "ARI", 'HomeTeamAbbr'] = "ARZ"
data.loc[data.HomeTeamAbbr.values == "BAL", 'HomeTeamAbbr'] = "BLT"
data.loc[data.HomeTeamAbbr.values == "CLE", 'HomeTeamAbbr'] = "CLV"
data.loc[data.HomeTeamAbbr.values == "HOU", 'HomeTeamAbbr'] = "HST"
data.loc[data['Season'] == 2017, 'S'] =(data['S'][data['Season'] == 2017] - 2.4355)/ 1.2930 * 1.4551 + 2.7570
downs = np.array([1, 2, 3])
 teams = pd.get_dummies(data['PossessionTeam'] ).columns[:-1]
train = data
n_train = train.shape[0] // 22<categorify>
predict1 = xgb.predict(x_test)
 predict = lgbm.predict(x_test)
inds = list(train.groupby('PlayId' ).groups.values())
 xs, ys, cs = [], [], []
for i in range(n_train):
ind = inds[i]
play = train.loc[ind]
x, y, c, _ = extract_feature(play)
 xs.append(x)
 ys.append(y)
 cs.append(c)
 xs, ys, cs = np.vstack(xs), np.hstack(ys), np.array(cs ).astype(np.int)
 ys = np.maximum(0, ys )<train_on_grid>
print('Root Mean Square Error test = ' + str(math.sqrt(metrics.mean_squared_error(y_test, predict1))))
print('Root Mean Square Error test = ' + str(math.sqrt(metrics.mean_squared_error(y_test, predict))))
model = sm.PHReg(ys, xs, cs)
 result = model.fit()
baseline_cum_hazard_func = result.baseline_cumulative_hazard_function[0]
pred_index = np.arange(-99, 100 )<set_options>
predict4 = lgbm.predict(df_test)
 predict3 = xgb.predict(df_test)
 predict_y =(predict3*.55+predict4*.45 )
<feature_engineering><EOS> 
submission = pd.DataFrame({
"Id": test["Id"],
"SalePrice": predict_y })
 submission.to_csv('submission.csv', index=False )