使用DBSCAN进行分类,结合测试-训练分割

提出的问题如下:使用scikit-learn将数据分割成训练集和测试集。使用DBSCAN将数据分类为猫或狗。

我正在尝试弄清楚如何使用DBSCAN来拟合一个使用训练数据的模型,然后预测测试集的标签。我很清楚DBSCAN是用于聚类而不是预测的。我也查看了使用sklearn DBSCAN模型对新条目进行分类以及许多其他讨论线程。DBSCAN只提供fit和fit_predict函数,这些函数在尝试使用训练数据拟合模型,然后使用测试数据测试模型时似乎不太有用。

这个问题措辞不当,还是我错过了什么?我查看了scikit-learn的文档,也寻找了例子,但没有找到任何有用的信息。

# 将样本分割成两个子集,一个用于训练,另一个用于测试X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)# 实例化学习模型dbscan = DBSCAN()# 拟合模型dbscan.fit(X_train, y_train)# 预测响应# 混淆矩阵和定量指标print("混淆矩阵是:" + np.str(confusion_matrix(y_test, dbscan_pred)))print("准确率得分是:" + np.str(accuracy_score(y_test, dbscan_pred)))

回答:

给你布置这个作业的人完全不知道在说什么…

DBSCAN永远不会预测出“猫”或“狗”。它根本做不到。

因为它是一种无监督算法,它不使用训练标签。y_train会被忽略(参见参数文档),而sklearn竟然允许你传递它,真是愚蠢!它会输出聚类的点集。许多工具会将这些集合编号为1, 2, … 但它不会将一个集合命名为“狗”。

此外,它也无法对新数据进行预测——而这是你对“测试”数据进行预测所需要的。所以它不能与训练-测试分割一起使用,但这并不重要,因为它根本不使用标签。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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