Kernel dying and restarting

171 views
Skip to first unread message

Daniel Sejer Kristoffersen

unread,
Mar 2, 2021, 5:17:55 AM3/2/21
to Biogeme
Hi Michel

I am currently conducting a investigation where I'm attempting to run a latent class analysis in which I'm combining a class membership model with class specific indicators. I am using python jupyter to run the model on Windows 10. 

However, after having setup my model, the kernel keeps dying when I'm attempting to run the model. After having read other threads with similair issues, I have tried to run it through CMD and as an py. file, both with no success. Do you have any idea on what could be causing this? 

Thank you in advance.

Best regards,
Daniel

I have the following code:

DataFileName = "Data"
df = pd.read_csv("Data.csv", delimiter=';')
database = db.Database(DataFileName,df)
globals().update(database.variables)

exclude = ((FA1==-1) | (FA1==6) | (FA2==-1) | (FA2==6) | (FA3==-1) | (FA3==6) | (FA4==-1) | (FA4==6) | (FA5==-1) | (FA5==6)|
           (FA7==-1) | (FA7==6) | (FA8==-1) | (FA8==6) | (FA9==-1) | (FA9==6) | (FA10==-1) | (FA10==6) | (FA11==-1) | (FA11==6)|
           (FA12==-1) | (FA12==6) | (FA13==-1) | (FA13==6) | (FA14==-1) | (FA14==6) | (FA15==-1) | (FA15==6) | (FSN_1==-1) |
           (FSN_2==-1) | (FSN_3==-1) | (FSN_4==-1) | (FSN_5==-1) | (FSN_6==-1))
database.remove(exclude)

# Definition of new variables: adding columns to the database 
Drives_ICV = DefineVariable("Drives_ICV", (A1_1==1), database)
Drives_EV = DefineVariable("Drives_EV", (A1_2==1), database)
DrivesHplug = DefineVariable("DrivesHplug", (A1_3==1), database)

GenderMale = DefineVariable("GenderMale", sex==1, database)
GenderFemale = DefineVariable("GenderFemale", sex==2, database)

Age1825 = DefineVariable("Age1825", (YOB>=1995), database)
Age2635 = DefineVariable("Age2635", (1996 <= YOB < 1985), database)
Age3650 = DefineVariable("Age3650", (1985 <= YOB < 1970), database)
Age5170 = DefineVariable("Age5170", (1970 <= YOB < 1950), database)
Age70 = DefineVariable("Age70", (1950 < YOB), database)

IncLess6000 = DefineVariable("IncLess6000", (income_kr == 1), database)
Inc69 = DefineVariable("Inc69", (income_kr == 2), database)
Inc1019 = DefineVariable("Inc1090", (income_kr == 3), database)
Inc2029 = DefineVariable("Inc2029", (income_kr == 4), database)
Inc3039 = DefineVariable("Inc3039", (income_kr == 5), database)
Inc4049 = DefineVariable("Inc4049", (income_kr == 6), database)
Inc5059 = DefineVariable("Inc5059", (income_kr == 7), database)
Inc6069 = DefineVariable("Inc6090", (income_kr == 8), database)
IncOver70 = DefineVariable("Inc7079", (income_kr == 9), database)

Household1 = DefineVariable("Household1", HH_total ==1, database)
Household2 = DefineVariable("Household2", HH_total ==2, database)
Household3 = DefineVariable("Household3", HH_total ==3, database)
Household4 = DefineVariable("Household4", HH_total ==4, database)
Household5 = DefineVariable("Household5", HH_total ==5, database)
Householdover5 = DefineVariable("Householdover5", 5 > HH_total, database)

nClasses = 2
utilClassMembership = {}
utilClassChoiceModel = {}
utilClassIndicator = {}
availClassIndicator = {}
probClassMembership = {}
probClassChoiceModel = {}
probClassIndicator = {}
probClass = {}
DictPar = {}

#Class Membership Model
LC1_Membership_ASC = Beta('LC1_Membership_ASC',0,-1000,1000,0)
LC1_Membership_B_Drives_ICV = Beta('LC1_Membership_"Drives_ICV',0,-1000,1000,0)
LC1_Membership_B_Drives_EV = Beta('LC1_Membership_"Drives_EV',0,-1000,1000,0)
LC1_Membership_B_DrivesHplug = Beta('LC1_Membership_DrivesHplug',0,-1000,1000,0)
LC1_Membership_B_GenderMale = Beta('LC1_Membership_GenderMale',0,-1000,1000,0)
LC1_Membership_B_GenderFemale = Beta('LC1_Membership_GenderFemale',0,-1000,1000,0)
LC1_Membership_B_Age1825 = Beta('LC1_Membership_B_Age1825',0,-1000,1000,0)
LC1_Membership_B_Age2635 = Beta('LC1_Membership_B_Age2635',0,-1000,1000,0)
LC1_Membership_B_Age3650 = Beta('LC1_Membership_B_Age3650',0,-1000,1000,0)
LC1_Membership_B_Age5170 = Beta('LC1_Membership_B_Age5170',0,-1000,1000,0)
LC1_Membership_B_Age70 = Beta('LC1_Membership_B_Age70',0,-1000,1000,0)
LC1_Membership_B_IncLess6000 = Beta('LC1_Membership_B_IncLess6000',0,-1000,1000,0)
LC1_Membership_B_Inc69 = Beta('LC1_Membership_B_Inc69',0,-1000,1000,0)
LC1_Membership_B_Inc1019 = Beta('LC1_Membership_B_Inc1019',0,-1000,1000,0)
LC1_Membership_B_Inc2029 = Beta('LC1_Membership_B_Inc2029',0,-1000,1000,0)
LC1_Membership_B_Inc3039 = Beta('LC1_Membership_B_Inc3039',0,-1000,1000,0)
LC1_Membership_B_Inc4049 = Beta('LC1_Membership_B_Inc4049',0,-1000,1000,0)
LC1_Membership_B_Inc5059 = Beta('LC1_Membership_B_Inc5059',0,-1000,1000,0)
LC1_Membership_B_Inc6069 = Beta('LC1_Membership_B_Inc6069',0,-1000,1000,0)
LC1_Membership_B_IncOver70 = Beta('LC1_Membership_B_IncOver70',0,-1000,1000,0)
LC1_Membership_B_Household1 = Beta('LC1_Membership_B_Household1',0,-1000,1000,0)
LC1_Membership_B_Household2 = Beta('LC1_Membership_B_Household2',0,-1000,1000,0)
LC1_Membership_B_Household3 = Beta('LC1_Membership_B_Household3',0,-1000,1000,0)
LC1_Membership_B_Household4 = Beta('LC1_Membership_B_Household4',0,-1000,1000,0)
LC1_Membership_B_Household5 = Beta('LC1_Membership_B_Household5',0,-1000,1000,0)
LC1_Membership_B_Householdover5 = Beta('LC1_Membership_B_Householdover5',0,-1000,1000,0)


LC2_Membership_ASC = Beta('LC2_Membership_ASC',0,-1000,1000,0)
LC2_Membership_B_Drives_ICV = Beta('LC2_Membership_"Drives_ICV',0,-1000,1000,0)
LC2_Membership_B_Drives_EV = Beta('LC2_Membership_"Drives_EV',0,-1000,1000,0)
LC2_Membership_B_DrivesHplug = Beta('LC2_Membership_DrivesHplug',0,-1000,1000,0)
LC2_Membership_B_GenderMale = Beta('LC2_Membership_GenderMale',0,-1000,1000,0)
LC2_Membership_B_GenderFemale = Beta('LC2_Membership_GenderFemale',0,-1000,1000,0)
LC2_Membership_B_Age1825 = Beta('LC2_Membership_B_Age1825',0,-1000,1000,0)
LC2_Membership_B_Age2635 = Beta('LC2_Membership_B_Age2635',0,-1000,1000,0)
LC2_Membership_B_Age3650 = Beta('LC2_Membership_B_Age3650',0,-1000,1000,0)
LC2_Membership_B_Age5170 = Beta('LC2_Membership_B_Age5170',0,-1000,1000,0)
LC2_Membership_B_Age70 = Beta('LC2_Membership_B_Age70',0,-1000,1000,0)
LC2_Membership_B_IncLess6000 = Beta('LC2_Membership_B_IncLess6000',0,-1000,1000,0)
LC2_Membership_B_Inc69 = Beta('LC2_Membership_B_Inc69',0,-1000,1000,0)
LC2_Membership_B_Inc1019 = Beta('LC2_Membership_B_Inc1019',0,-1000,1000,0)
LC2_Membership_B_Inc2029 = Beta('LC2_Membership_B_Inc2029',0,-1000,1000,0)
LC2_Membership_B_Inc3039 = Beta('LC2_Membership_B_Inc3039',0,-1000,1000,0)
LC2_Membership_B_Inc4049 = Beta('LC2_Membership_B_Inc4049',0,-1000,1000,0)
LC2_Membership_B_Inc5059 = Beta('LC2_Membership_B_Inc5059',0,-1000,1000,0)
LC2_Membership_B_Inc6069 = Beta('LC2_Membership_B_Inc6069',0,-1000,1000,0)
LC2_Membership_B_IncOver70 = Beta('LC2_Membership_B_IncOver70',0,-1000,1000,0)
LC2_Membership_B_Household1 = Beta('LC2_Membership_B_Household1',0,-1000,1000,0)
LC2_Membership_B_Household2 = Beta('LC2_Membership_B_Household2',0,-1000,1000,0)
LC2_Membership_B_Household3 = Beta('LC2_Membership_B_Household3',0,-1000,1000,0)
LC2_Membership_B_Household4 = Beta('LC2_Membership_B_Household4',0,-1000,1000,0)
LC2_Membership_B_Household5 = Beta('LC2_Membership_B_Household5',0,-1000,1000,0)
LC2_Membership_B_Householdover5 = Beta('LC2_Membership_B_Householdover5',0,-1000,1000,0)



LC3_Membership_ASC = Beta('LC3_Membership_ASC',0,-1000,1000,0)
LC3_Membership_B_Drives_ICV = Beta('LC3_Membership_"Drives_ICV',0,-1000,1000,0)
LC3_Membership_B_Drives_EV = Beta('LC3_Membership_"Drives_EV',0,-1000,1000,0)
LC3_Membership_B_DrivesHplug = Beta('LC3_Membership_DrivesHplug',0,-1000,1000,0)
LC3_Membership_B_GenderMale = Beta('LC3_Membership_GenderMale',0,-1000,1000,0)
LC3_Membership_B_GenderFemale = Beta('LC3_Membership_GenderFemale',0,-1000,1000,0)
LC3_Membership_B_Age1825 = Beta('LC3_Membership_B_Age1825',0,-1000,1000,0)
LC3_Membership_B_Age2635 = Beta('LC3_Membership_B_Age2635',0,-1000,1000,0)
LC3_Membership_B_Age3650 = Beta('LC3_Membership_B_Age3650',0,-1000,1000,0)
LC3_Membership_B_Age5170 = Beta('LC3_Membership_B_Age5170',0,-1000,1000,0)
LC3_Membership_B_Age70 = Beta('LC3_Membership_B_Age70',0,-1000,1000,0)
LC3_Membership_B_IncLess6000 = Beta('LC3_Membership_B_IncLess6000',0,-1000,1000,0)
LC3_Membership_B_Inc69 = Beta('LC3_Membership_B_Inc69',0,-1000,1000,0)
LC3_Membership_B_Inc1019 = Beta('LC3_Membership_B_Inc1019',0,-1000,1000,0)
LC3_Membership_B_Inc2029 = Beta('LC3_Membership_B_Inc2029',0,-1000,1000,0)
LC3_Membership_B_Inc3039 = Beta('LC3_Membership_B_Inc3039',0,-1000,1000,0)
LC3_Membership_B_Inc4049 = Beta('LC3_Membership_B_Inc4049',0,-1000,1000,0)
LC3_Membership_B_Inc5059 = Beta('LC3_Membership_B_Inc5059',0,-1000,1000,0)
LC3_Membership_B_Inc6069 = Beta('LC3_Membership_B_Inc6069',0,-1000,1000,0)
LC3_Membership_B_IncOver70 = Beta('LC3_Membership_B_IncOver70',0,-1000,1000,0)
LC3_Membership_B_Household1 = Beta('LC3_Membership_B_Household1',0,-1000,1000,0)
LC3_Membership_B_Household2 = Beta('LC3_Membership_B_Household2',0,-1000,1000,0)
LC3_Membership_B_Household3 = Beta('LC3_Membership_B_Household3',0,-1000,1000,0)
LC3_Membership_B_Household4 = Beta('LC3_Membership_B_Household4',0,-1000,1000,0)
LC3_Membership_B_Household5 = Beta('LC3_Membership_B_Household5',0,-1000,1000,0)
LC3_Membership_B_Householdover5 = Beta('LC3_Membership_B_Householdover5',0,-1000,1000,0)


LC4_Membership_ASC = Beta('LC4_Membership_ASC',0,-1000,1000,0)
LC4_Membership_B_Drives_ICV = Beta('LC4_Membership_"Drives_ICV',0,-1000,1000,0)
LC4_Membership_B_Drives_EV = Beta('LC4_Membership_"Drives_EV',0,-1000,1000,0)
LC4_Membership_B_DrivesHplug = Beta('LC4_Membership_DrivesHplug',0,-1000,1000,0)
LC4_Membership_B_GenderMale = Beta('LC4_Membership_GenderMale',0,-1000,1000,0)
LC4_Membership_B_GenderFemale = Beta('LC4_Membership_GenderFemale',0,-1000,1000,0)
LC4_Membership_B_Age1825 = Beta('LC4_Membership_B_Age1825',0,-1000,1000,0)
LC4_Membership_B_Age2635 = Beta('LC4_Membership_B_Age2635',0,-1000,1000,0)
LC4_Membership_B_Age3650 = Beta('LC4_Membership_B_Age3650',0,-1000,1000,0)
LC4_Membership_B_Age5170 = Beta('LC4_Membership_B_Age5170',0,-1000,1000,0)
LC4_Membership_B_Age70 = Beta('LC4_Membership_B_Age70',0,-1000,1000,0)
LC4_Membership_B_IncLess6000 = Beta('LC4_Membership_B_IncLess6000',0,-1000,1000,0)
LC4_Membership_B_Inc69 = Beta('LC4_Membership_B_Inc69',0,-1000,1000,0)
LC4_Membership_B_Inc1019 = Beta('LC4_Membership_B_Inc1019',0,-1000,1000,0)
LC4_Membership_B_Inc2029 = Beta('LC4_Membership_B_Inc2029',0,-1000,1000,0)
LC4_Membership_B_Inc3039 = Beta('LC4_Membership_B_Inc3039',0,-1000,1000,0)
LC4_Membership_B_Inc4049 = Beta('LC4_Membership_B_Inc4049',0,-1000,1000,0)
LC4_Membership_B_Inc5059 = Beta('LC4_Membership_B_Inc5059',0,-1000,1000,0)
LC4_Membership_B_Inc6069 = Beta('LC4_Membership_B_Inc6069',0,-1000,1000,0)
LC4_Membership_B_IncOver70 = Beta('LC4_Membership_B_IncOver70',0,-1000,1000,0)
LC4_Membership_B_Household1 = Beta('LC4_Membership_B_Household1',0,-1000,1000,0)
LC4_Membership_B_Household2 = Beta('LC4_Membership_B_Household2',0,-1000,1000,0)
LC4_Membership_B_Household3 = Beta('LC4_Membership_B_Household3',0,-1000,1000,0)
LC4_Membership_B_Household4 = Beta('LC4_Membership_B_Household4',0,-1000,1000,0)
LC4_Membership_B_Household5 = Beta('LC4_Membership_B_Household5',0,-1000,1000,0)
LC4_Membership_B_Householdover5 = Beta('LC4_Membership_B_Householdover5',0,-1000,1000,0)

for s in range(1, nClasses + 1):
    if s==1: 
        utilClassMembership[s] = 0
    else: 
        utilClassMembership[s]  = eval('LC'+str(s)+'_Membership_ASC') \
                                + eval('LC'+str(s)+'_Membership_B_Drives_ICV')  * Drives_ICV \
                                + eval('LC'+str(s)+'_Membership_B_Drives_EV')  * Drives_EV \
                                + eval('LC'+str(s)+'_Membership_B_DrivesHplug')  * DrivesHplug \
                                + eval('LC'+str(s)+'_Membership_B_GenderMale')  * GenderMale \
                                + eval('LC'+str(s)+'_Membership_B_GenderMale')  * GenderFemale \
                                + eval('LC'+str(s)+'_Membership_B_Age1825')  * Age1825 \
                                + eval('LC'+str(s)+'_Membership_B_Age2635')  * Age2635 \
                                + eval('LC'+str(s)+'_Membership_B_Age3650')  * Age3650 \
                                + eval('LC'+str(s)+'_Membership_B_Age5170')  * Age5170 \
                                + eval('LC'+str(s)+'_Membership_B_Age70')  * Age70 \
                                + eval('LC'+str(s)+'_Membership_B_IncLess6000')  * IncLess6000 \
                                + eval('LC'+str(s)+'_Membership_B_Inc69')  * Inc69 \
                                + eval('LC'+str(s)+'_Membership_B_Inc1019')  * Inc1019 \
                                + eval('LC'+str(s)+'_Membership_B_Inc2029')  * Inc2029 \
                                + eval('LC'+str(s)+'_Membership_B_Inc3039')  * Inc3039 \
                                + eval('LC'+str(s)+'_Membership_B_Inc4049')  * Inc4049 \
                                + eval('LC'+str(s)+'_Membership_B_Inc5059')  * Inc5059 \
                                + eval('LC'+str(s)+'_Membership_B_Inc6069')  * Inc6069 \
                                + eval('LC'+str(s)+'_Membership_B_IncOver70')  * IncOver70 \
                                + eval('LC'+str(s)+'_Membership_B_Household1')  * Household1 \
                                + eval('LC'+str(s)+'_Membership_B_Household2')  * Household2 \
                                + eval('LC'+str(s)+'_Membership_B_Household3')  * Household3 \
                                + eval('LC'+str(s)+'_Membership_B_Household4')  * Household4 \
                                + eval('LC'+str(s)+'_Membership_B_Household5')  * Household5 \
                                + eval('LC'+str(s)+'_Membership_B_Householdover5')  * Householdover5 \
                                + 0

#Class Specific Indicators
IndicatorList = [
    FA1, 
    FA2, 
    FA3, 
    FA4, 
    FA5, 
    FA6, 
    FA7, 
    FA8, 
    FA9, 
    FA10, 
    FA11, 
    FA12,     
    FA13, 
    FA14,
    FA15, 
    FSN_1,
    FSN_2, 
    FSN_3, 
    FSN_4, 
    FSN_5, 
    FSN_6] 

for s in range(1, nClasses + 1):
    tempV={}
    tempAV={}
    for I in IndicatorList:
            tempV[str(I)] = {
                                1: Beta('LC'+str(s)+'_Ind_'+str(I)+'_1',0,-1000,1000,0), 
                                2: Beta('LC'+str(s)+'_Ind_'+str(I)+'_2',0,-1000,1000,0),  
                                3: Beta('LC'+str(s)+'_Ind_'+str(I)+'_3',0,-1000,1000,1), 
                                4: Beta('LC'+str(s)+'_Ind_'+str(I)+'_4',0,-1000,1000,0), 
                                5: Beta('LC'+str(s)+'_Ind_'+str(I)+'_5',0,-1000,1000,0), 
                                -9999: 0 }
            tempAV[str(I)] = {-9999: (I == -9999), 1: 1, 2: 1, 3: 1, 4:1, 5:1}
    utilClassIndicator[s]=tempV
    availClassIndicator[s]=tempAV

#Estimation
for s in range(1, nClasses + 1):
    probClassMembership[s] = models.logit(utilClassMembership, None, s)
    temp=1
    for I in IndicatorList:
        temp = temp * ( models.logit(utilClassIndicator[s][str(I)], availClassIndicator[s][str(I)], I) * (I!=-9999) + (I==-9999) )
        probClassIndicator[s]=temp
    probClass[s] = probClassMembership[s] * probClassIndicator[s]
probIndiv = bioMultSum(probClass)

userNotes = ('TEST, '
             'USER NOTES')
s
OutputFileName='GREAT_'+str(nClasses)+'class'

# Create the Biogeme object
numberOfDraws=2
MyBiogemeObject = bio.BIOGEME(database, logprob, userNotes=None, numberOfThreads=None, numberOfDraws=numberOfDraws, seed=None, skipAudit=False, removeUnusedVariables=True, suggestScales=True, missingData=99999)
MyBiogemeObject.modelName= OutputFileName


logger = msg.bioMessage()
logger.setGeneral()
results = MyBiogemeObject.estimate(algorithm=None)

Bierlaire Michel

unread,
Mar 2, 2021, 5:27:44 AM3/2/21
to danielsejerk...@gmail.com, Bierlaire Michel, Biogeme

On 2 Mar 2021, at 11:17, Daniel Sejer Kristoffersen <danielsejerk...@gmail.com> wrote:

Hi Michel

I am currently conducting a investigation where I'm attempting to run a latent class analysis in which I'm combining a class membership model with class specific indicators. I am using python jupyter to run the model on Windows 10. 

However, after having setup my model, the kernel keeps dying when I'm attempting to run the model. After having read other threads with similair issues, I have tried to run it through CMD and as an py. file, both with no success. Do you have any idea on what could be causing this? 

Rule number 1: never use Windows for real stuff :-) The only reason why I include a Windows distribution is for education purposes.
I suggest that you run your code on Linux. 

One possible cause is memory. Do you have a large database? If so, you may want to try with a subsample for debugging purposes.



--
You received this message because you are subscribed to the Google Groups "Biogeme" group.
To unsubscribe from this group and stop receiving emails from it, send an email to biogeme+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/biogeme/a14d922b-3836-4e1d-a069-91b776615038n%40googlegroups.com.

Reply all
Reply to author
Forward
0 new messages