找回密码
 会员注册
查看: 32|回复: 0

python机器学习算法--贝叶斯算法

[复制链接]

6

主题

0

回帖

19

积分

新手上路

积分
19
发表于 2024-9-8 14:59:29 | 显示全部楼层 |阅读模式
1.贝叶斯定理在20世纪60年代初就引入到文字信息检索中,仍然是文字分类的一种热门(基准)方法。文字分类是以词频为特征判断文件所属类型或其他(如垃圾邮件、合法性、新闻分类等)的问题。原理牵涉到概率论的问题,不在详细说明。sklearn.naive_bayes.GaussianNB(priors=None,var_smoothing=1e-09)#Bayes函数·priors:矩阵,shape=[n_samples,n_features]为训练数据,其中n_samples的样本数和n_features是特征的数量。·smoothing:浮点数,所有要素的最大方差部分,添加到计算稳定性的差异中。·min_samples_split:整数,拆分内部节点所需的最小样本数。fromsklearn.naive_bayesimportGaussianNBimportnumpyasnp#训练数据X=np.array([[9,9],[9.2,9.2],[9.6,9.2],[9.2,9.2],[6.7,7.1],[7,7.4],[7.6,7.5],[7.2,10.3],[7.3,10.5],[7.2,9.2],[7,10.2],[7.2,9.7],[7.3,10.1],[7.3,10.1]])Y=np.array([1,1,1,1,1,1,1,2,2,2,2,2,2,2])model=GaussianNB()model.fit(X,Y)print('classpriors:',model.class_prior_)print('modelparameters:',model.get_params())X_test=np.array([[8,8],[8.3,8.3]])predicted=model.predict(X_test)print('perdictedlabels:',predicted)print('predictedproabilities',model.predict_proba(X_test))importmatplotlib.pyplotaspltplt.plot(X[:7,0],X[:7,1],'yx')plt.plot(X[7:,0],X[7:,1],'g.')plt.plot(X_test[:,0],X_test[:,1],'r^')plt.ylabel('w')plt.xlabel('H')plt.legend(('Lemon','Citrus'),loc='upperleft')plt.show()·numpy.Ravel()的功能是把多维度的矩阵数据转成一个维度。·numpy.linspace()的功能是把区间的数字依照固定比例输出。·numpy.meshgrid(x,y)的功能是假设x是长度为m的向量,y是长度为n的向量,则最终生成的矩阵X和Y的维度都是n×m。fromsklearn.naive_bayesimportGaussianNBimportnumpyasnpt1=np.array([[1,2],[3,4]])print(t1.ravel())t2=np.linspace(0,10,3)print(t2)t3=np.linspace(0,10,3)print(t3)t4,t5=np.meshgrid(t2,t3)print(t4)print(t5)t4,t5=np.meshgrid(t3,t2)print(t4)print(t5)importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.naive_bayesimportGaussianNB#生成模拟数据np.random.seed(0)#确保结果可复现X=np.concatenate((np.random.normal([5,5],[1,1],(100,2)),#橙子,100个样本np.random.normal([10,7],[1,1.5],(100,2))#柠檬,100个样本))#分配标签Y=np.array([1]*100+[2]*100)#初始化高斯朴素贝叶斯模型并训练model=GaussianNB()model.fit(X,Y)#计算边界x_min,y_min=X.min(axis=0)x_max,y_max=X.max(axis=0)x_min-=1y_min-=1x_max+=1y_max+=1#创建网格以用于预测xx,yy=np.meshgrid(np.linspace(x_min,x_max,30),np.linspace(y_min,y_max,30))#预测网格上每个点的分类概率Z=model.predict_proba(np.c_[xx.ravel(),yy.ravel()])[:,1]#取第二类的概率#调整矩阵形状以匹配xx和yy的形状Z=Z.reshape(xx.shape)#绘制等高线图plt.contour(xx,yy,Z,levels=[0.5],colors='k')#保存图像plt.savefig('731.png',bbox_inches='tight')#显示图像plt.show()
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-10 19:02 , Processed in 0.843904 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表