【问题标题】:What steps should I take next to improve my accuracy? Can data be the problem?接下来我应该采取哪些步骤来提高我的准确性?数据会成为问题吗?
【发布时间】:2020-04-18 03:35:07
【问题描述】:

我使用 sklearn 为二进制分类问题构建了各种 ML 模型。数据集是我的教授提供给我的,用于这项比较研究。

my jupyter notebook and dataset can be found here

由于我的准确率非常低,我担心我在构建模型时一定做错了什么。因此,我在 sklearn(乳腺癌数据集)中的内置数据集上测试了我的决策树,这与我的数据集非常相似,因为它们都是二元分类。在这里,我得到了 95% 的平均准确率。所以我现在认为问题可能出在我的数据集上。我能否就如何预处理我的数据或我可能会考虑提高准确性的任何其他步骤获得一些帮助。

【问题讨论】:

  • 不要在问题中附加图片,添加您的代码/结果并使用代码语法突出显示按钮来突出显示它们。

标签: python-3.x dataframe scikit-learn decision-tree


【解决方案1】:
  1. 编码标签

分类数据是包含标签值而不是数值的变量。可能值的数量通常限于固定的集合。 例如,用户通常按国家、性别、年龄组等来描述。我们将使用标签编码器来标记分类数据。 Label Encoder 是 Python 中 SciKit Learn 库的一部分,用于将分类数据或文本数据转换为我们的预测模型可以更好地理解的数字。

#Encoding categorical data values

from sklearn.preprocessing import LabelEncoder
labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)
  1. 特征缩放

大多数情况下,您的数据集将包含在数量级、单位和范围方面高度不同的特征。但是因为,大多数机器学习算法在计算中使用两个数据点之间的欧几里德距离。我们需要将所有功能提升到相同的数量级。这可以通过缩放来实现。这意味着您正在转换数据以使其适合特定的比例,例如 0–100 或 0–1。我们将使用 SciKit-Learn 库中的 StandardScaler 方法。

#Feature Scalingfrom sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
  1. 选择合适的型号

您可能还想选择合适的模型。你不能只使用神经网络来解决所有问题,这是没有免费的 luch 定理。为此,您可以使用 K 折交叉验证、AIC 和 BIC

【讨论】:

  • 我没有分类数据,我已经在 0 和 1 之间标准化了我的数据,并且我正在使用带有 gridsearch 的分层 K 折叠。
  • 现在最好使用二元交叉熵方法,它应该可以提供更高的准确度
猜你喜欢
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
相关资源
最近更新 更多