python绘制概率密度曲线 贝叶斯_如何在朴素贝叶斯分类器中根据概率密度函数计算概率?...

# importing modulesimportpandasaspdimportnumpyasnp# create an empty dataframedata=pd.DataFrame()# create our target variabledata["gender"]=["male","male","male","male","female","female","female","female"]# create our feature variablesdata["height"]=[6,5.92,5.58,5.92,5,5.5,5.42,5.75]data["weight"]=[180,190,170,165,100,150,130,150]data["foot_size"]=[12,11,12,10,6,8,7,9]# view the dataprint(data)# create an empty dataframeperson=pd.DataFrame()# create some feature values for this single rowperson["height"]=[6]person["weight"]=[130]person["foot_size"]=[8]# view the dataprint(person)# Priors can be calculated either constants or probability distributions.# In our example, this is simply the probability of being a gender.# calculating prior now# number of malesn_male=data["gender"][data["gender"]=="male"].count()# number of femalesn_female=data["gender"][data["gender"]=="female"].count()# total peopletotal_ppl=data["gender"].count()print("Male count =",n_male,"and Female count =",n_female)print("Total number of persons =",total_ppl)# number of males divided by the total rowsp_male=n_male/total_ppl# number of females divided by the total rowsp_female=n_female/total_pplprint("Probability of MALE =",p_male,"and FEMALE =",p_female)# group the data by gender and calculate the means of each featuredata_means=data.groupby("gender").mean()# view the valuesdata_means# group the data by gender and calculate the variance of each featuredata_variance=data.groupby("gender").var()# view the valuesdata_variance

data_variance=data.groupby("gender").var()data_variance["foot_size"][data_variance.index=="male"].values[0]# means for malemale_height_mean=data_means["height"][data_means.index=="male"].values[0]male_weight_mean=data_means["weight"][data_means.index=="male"].values[0]male_footsize_mean=data_means["foot_size"][data_means.index=="male"].values[0]print(male_height_mean,male_weight_mean,male_footsize_mean)# means for femalefemale_height_mean=data_means["height"][data_means.index=="female"].values[0]female_weight_mean=data_means["weight"][data_means.index=="female"].values[0]female_footsize_mean=data_means["foot_size"][data_means.index=="female"].values[0]print(female_height_mean,female_weight_mean,female_footsize_mean)# variance for malemale_height_var=data_variance["height"][data_variance.index=="male"].values[0]male_weight_var=data_variance["weight"][data_variance.index=="male"].values[0]male_footsize_var=data_variance["foot_size"][data_variance.index=="male"].values[0]print(male_height_var,male_weight_var,male_footsize_var)# variance for femalefemale_height_var=data_variance["height"][data_variance.index=="female"].values[0]female_weight_var=data_variance["weight"][data_variance.index=="female"].values[0]female_footsize_var=data_variance["foot_size"][data_variance.index=="female"].values[0]print(female_height_var,female_weight_var,female_footsize_var)# create a function that calculates p(x | y):defp_x_given_y(x,mean_y,variance_y):# input the arguments into a probability density functionp=1/(np.sqrt(2*np.pi*variance_y))*\

np.exp((-(x-mean_y)**2)/(2*variance_y))# return preturnp# numerator of the posterior if the unclassified observation is a maleposterior_numerator_male=p_male*\

p_x_given_y(person["height"][0],male_height_mean,male_height_var)*\

p_x_given_y(person["weight"][0],male_weight_mean,male_weight_var)*\

p_x_given_y(person["foot_size"][0],male_footsize_mean,male_footsize_var)# numerator of the posterior if the unclassified observation is a femaleposterior_numerator_female=p_female*\

p_x_given_y(person["height"][0],female_height_mean,female_height_var)*\

p_x_given_y(person["weight"][0],female_weight_mean,female_weight_var)*\

p_x_given_y(person["foot_size"][0],female_footsize_mean,female_footsize_var)print("Numerator of Posterior MALE =",posterior_numerator_male)print("Numerator of Posterior FEMALE =",posterior_numerator_female)if(posterior_numerator_male>=posterior_numerator_female):print("Predicted gender is MALE")else:print("Predicted gender is FEMALE")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值