如何提高sklearn模型的准确性?

我是机器学习的新手,我有一个自定义的数据集,包含法院案件。数据集的列包括指控(字符串)、先前案件(整数)和保释金额(整数)。我使用指控和先前案件作为特征,而保释金额作为我的标签。我希望能够根据指控和先前案件预测保释金额。我使用MLPClassifier作为我的模型,并尝试了几种其他模型。我的准确率只有大约45%。如何提高它?我是否只需要尝试不同的模型,如KNN?我转换数据的方式是否有问题?反复试错让我来到了这里。

import pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.neural_network import MLPClassifierfrom sklearn.preprocessing import LabelEncoderfrom sklearn.metrics import accuracy_score# 导入CSVfinal_df = pd.read_csv('merge.csv')# 删除保释金额超过10,000美元的行outlier = final_df[final_df.bond >= 10000].indexfinal_df.drop(outlier, inplace=True)# 从CSV中获取特征X = final_df[['prior_cases', 'charges']].values# 从CSV中获取标签y = final_df[['bond']].valuesle = LabelEncoder()# 转换X数据for i in range(len(X[0])):    X[:, i] = le.fit_transform(X[:, i])# 转换y数据for i in range(len(y[0])):    y[:, i] = le.fit_transform(y[:, i])# 分割数据,80%用于训练X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, train_size=0.8)# 定义模型以训练数据model = MLPClassifier(activation='relu', solver='adam', hidden_layer_sizes=(100,), random_state=1, max_iter=500)# 训练模型model.fit(X_train, y_train)# 给出预测标签predictions = model.predict(X_test)# 模型的准确率acc = accuracy_score(predictions, y_test)print('实际值:----', le.inverse_transform(y_test[100]))print('预测值:', le.inverse_transform(predictions[100].reshape(-1,1)))print('准确率: ', acc)

回答:

导致低准确率的原因有很多。我在下面列出了一些常见的原因。

数据

  1. 您使用的数据可能不适合您选择的模型。
  2. 您的数据可能不够干净,无法使模型达到高准确率。
  3. 您可能需要使用一些特征工程技术来探索数据的不同方面。这些技术也被称为试错法,您可以创建不同的特征并使用模型来评估它们。

模型

  1. 您的模型可能不适合您使用的数据类型。例如,有些模型更喜欢离散值而不是连续值,反之亦然。
  2. 您选择的超参数可能不是最佳的。这需要调参过程,您需要尝试一组不同的参数在您的模型中。

评估

  1. 假设您的数据很好,您的模型也适合您的数据,但您使用的评估指标可能不是评估模型的正确指标。
  2. 如果您的模型是为分类问题构建的,您可能需要再次检查用于测试的数据是否干净。

Related Posts

如何对SVC进行超参数调优?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

如何在初始训练后向模型添加训练数据?

我想在我的scikit-learn模型已经训练完成后再…

使用Google Cloud Function并行运行带有不同用户参数的相同训练作业

我正在寻找一种方法来并行运行带有不同用户参数的相同训练…

加载Keras模型,TypeError: ‘module’ object is not callable

我已经在StackOverflow上搜索并阅读了文档,…

在计算KNN填补方法中特定列中NaN值的”距离平均值”时

当我从头开始实现KNN填补方法来处理缺失数据时,我遇到…

使用巨大的S3 CSV文件或直接从预处理的关系型或NoSQL数据库获取数据的机器学习训练/测试工作

已关闭。此问题需要更多细节或更清晰的说明。目前不接受回…

发表回复

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