SciKit-learn – 训练高斯朴素贝叶斯分类器

我正在尝试绘制高斯朴素贝叶斯分类器的决策面。然而,在训练分类器时我遇到了一些问题。我对机器学习也非常陌生。

首先,我生成100个随机点,其中一半点的坐标和标签不同。

for i in range(50):    point1.append([np.random.randint(50,80),np.random.randint(50,80)])    point1L.append(1)for i in range(50):    point2.append([np.random.randint(10,40),np.random.randint(10,70)])    point2L.append(0)

然后我对其进行训练。

clf = GaussianNB()clf.fit(point1,point1L)clf.fit(point2, point2L)

接着我遇到了一个问题。这里的分类器似乎无法区分这两个点。

print(clf.predict([np.random.randint(50,80),np.random.randint(50,80)]))print(clf.predict([np.random.randint(10,40),np.random.randint(10,70)]))

我得到的结果总是这样的:

[0][0]

我做错了什么,如何解决这个问题?

另外,我想知道是否可以直接从分类器本身绘制决策边界,而不需通过比较分类器在每个点的决策来绘制。


回答:

fit()方法应该只调用一次。你调用了fit方法两次,一次用于point1,一次用于point2。所以当你再次为point2调用fit()时,估计器会重置自己,只为point2L进行训练,而point2L的值为0。这就是为什么你的预测结果总是0。首先将point1point2合并成一个新矩阵(标签也一样),然后在新矩阵上调用fit方法。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注