朴素贝叶斯分类以及python实现+调包实现

朴素贝叶斯NaiveBayes以及python实现
https://blog.csdn.net/CarryLvan/article/details/109236906

上面的博客有代码实现,但要实现测试集上每一个样本的预测时出错,这篇代码要求在测试集上要用的样本要在训练集上都有相应的值存在,才能进行预测。

在这里插入图片描述测试集
在这里插入图片描述训练集

如上,在验证集的balance中有-123,而在训练集中没有而报错,怎么解决?

将series转为dataframe的方法:https://blog.csdn.net/dta0502/article/details/82966790

在这里插入图片描述
将index变成columns,多个也可以,在pd.DataFrame 中加入index= [0]

二、调包实现
import numpy as np
import pandas as pd
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
df = pd.read_csv(r’C:\Users\Administrator\Desktop\统计推断\bank训练集.csv’)
df1 = pd.read_csv(r’C:\Users\Administrator\Desktop\统计推断\bank测试集.csv’)

df.columns = [‘age’,‘job’,‘marital’,‘education’,‘default’,‘balance’,‘housing’,‘loan’,‘contact’,‘day’,‘month’,‘duration’,‘campaign’,‘pdays’,‘previous’,‘poutcome’,‘y’]
df_value = df.loc[:,[‘age’,‘job’,‘marital’,‘education’,‘default’,‘balance’,‘housing’,‘loan’,‘contact’,‘day’,‘month’,‘duration’,‘campaign’,‘pdays’,‘previous’,‘poutcome’]]
df_y = df.loc[:,[‘y’]]
df_value = pd.get_dummies(df_value)
df_y = np.asarray(df_y)
for i in range(len(df_y)):
if df_y[i] == ‘no’:
df_y[i] = 0
else:
df_y[i] = 1
df_y = pd.DataFrame(df_y)
df_y = df_y.apply(pd.to_numeric,axis=0)
df1 = pd.get_dummies(df1)
clf = gnb.fit(df_value,df_y)
test = clf.predict(df1)
np.save(’./test.npy’,test)

①字符串类型的数据在使用时要进行one-hot编码(使用pd.get_dummies进行编码) (报can not convert string to float错误时)
②将dataframe转成array进行遍历 array与dataframe的互相转换
③用pd.to_numeric 将object类型变成int或float
④.npy文件的使用:np.save();np.load()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值