Python 我需要做什么来提高sklearn中的模型精度?

Python 我需要做什么来提高sklearn中的模型精度?,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我是ML的新手,我有一个自定义的数据集,其中包含法庭案例。列为费用(str)、先前案例(int)和保证金金额(int)。我使用费用和以前的案例作为特征,保证金金额是我的标签。我希望能够预测,在指控和之前的案件中,保证金会是多少。我使用MLPClassizer作为我的模型,并使用了其他一些模型。我的准确率只有45%左右。我怎样才能增加呢?我是否只需要尝试不同的型号,如KNN?我如何转换数据有问题吗?试错驱使我来到这里 import pandas as pd from sklearn.model_s

我是ML的新手,我有一个自定义的数据集,其中包含法庭案例。列为费用(str)、先前案例(int)和保证金金额(int)。我使用费用和以前的案例作为特征,保证金金额是我的标签。我希望能够预测,在指控和之前的案件中,保证金会是多少。我使用MLPClassizer作为我的模型,并使用了其他一些模型。我的准确率只有45%左右。我怎样才能增加呢?我是否只需要尝试不同的型号,如KNN?我如何转换数据有问题吗?试错驱使我来到这里

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import accuracy_score

# Bring in CSV
final_df = pd.read_csv('merge.csv')

# Drops bonds rows with bonds over $10,000
outlier = final_df[final_df.bond >= 10000].index
final_df.drop(outlier, inplace=True)

# Gets features from CSV
X = final_df[['prior_cases', 'charges']].values
# Gets labels from CSV
y = final_df[['bond']].values

le = LabelEncoder()
# Transform X data
for i in range(len(X[0])):
    X[:, i] = le.fit_transform(X[:, i])
# Transform y data
for i in range(len(y[0])):
    y[:, i] = le.fit_transform(y[:, i])

# Splits the data, 80% for training
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, train_size=0.8)

# Defines model that the data is trained on
model = MLPClassifier(activation='relu', solver='adam', hidden_layer_sizes=(100,), random_state=1, max_iter=500)

# Trains the model
model.fit(X_train, y_train)

# Gives what the predicted label should be
predictions = model.predict(X_test)

# Accuracy of the model
acc = accuracy_score(predictions, y_test)

print('actual:----', le.inverse_transform(y_test[100]))
print('predictions:', le.inverse_transform(predictions[100].reshape(-1,1)))
print('accuracy: ', acc)

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

数据

  • 您使用的数据可能不适合您选择的模型
  • 您的数据可能不够干净,无法使模型执行高精度
  • 您可能需要使用一些特征工程技术来探索数据的不同方面。这些也被称为试错技术,您可以在其中创建不同的功能,并使用您的模型对其进行评估
  • 型号

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

  • 假设您的数据是好的,并且您的模型适合您的数据,但是您使用的度量可能不是评估模型的正确度量
  • 如果您的模型是针对分类问题构建的,那么您可能需要再次检查用于测试的数据是否干净

  • 如果不了解您使用的数据集,就无法回答此问题。另外,我建议把这个问题带到:因为这是一个更具体的数据科学问题。更好的参数调整和特性工程应该对您有所帮助。我投票结束这个问题,因为它不是关于中定义的编程,而是关于ML理论和/或方法-请参阅机器学习中的介绍和说明。。很抱歉问了一个愚蠢的问题,但您能详细说明一下吗?你说我使用的度量可能不正确是什么意思?我知道你指的是准确度分数,但我还能做什么?通常,不同的模型有不同的评估指标。因此,平均精度不是唯一的选择。例如,在评估分类问题的神经网络时,您可能需要使用精度和召回度量或AUC或ROC图来测量学习率。另一个无监督学习的例子是,您可能需要结合使用排名和其他指标。我的答案是一般的机器学习模型。基于此,我认为你可以在学习时搜索不同的部分。这些都是我听过但还不知道它们的意思的单词。我现在就去学习,谢谢你的详细评论。不用担心,如果你想了解更多,我有一些推荐的资源。(1) Andreas编写的《Python机器学习入门》一书。(2) 面向数据科学媒体网站。(3) 免费编码放大器。(4) 卡格尔