为啥我的 ML 模型的准确性很差?

Posted

技术标签:

【中文标题】为啥我的 ML 模型的准确性很差?【英文标题】:Why do my ML models have horrible accuracy?为什么我的 ML 模型的准确性很差? 【发布时间】:2019-08-03 07:06:14 【问题描述】:

我是新来的机器学习,我独立自主地建设我的第一个模型。我有一个数据集,用于评估的汽车,它包含价格,安全和豪华和分类的功能,如果它的好,非常好,可接受和不可接受。我转换所有的非数字列为数字,训练数据,并用一个测试组预测。然而,我的预测是可怕的;我用线性回归和r2_score产出0.05这几乎是0。我已经尝试了几种不同型号和一直给我可怕的预测性和准确性。

我做错了什么?我见过的教程,用类似的方法读文章,但他们最终以0.92的精度和我越来越0.05。你如何让你的数据的好模型,你怎么知道哪个型号使用? P>

代码:

import numpy as np
import pandas as pd
from sklearn import preprocessing, linear_model
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score

import seaborn as sns
import matplotlib.pyplot as plt

pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500) 
pd.set_option('display.width', 1000)

columns = ['buying', 'maint', 'doors', 'persons', 'lug_boot', 'safety', 'class value']
df = pd.read_csv('car.data.txt', index_col=False, names=columns)

for col in df.columns.values:
    try:
        if df[col].astype(int):
            pass
    except ValueError:
        enc = preprocessing.LabelEncoder()
        enc.fit(df[col])
        df[col] = enc.transform(df[col])

#Split the data
class_y = df.pop('class value')
x_train, x_test, y_train, y_test = train_test_split(df, class_y, test_size=0.2, random_state=0)

#Make the model
regression_model = linear_model.LinearRegression()
regression_model = regression_model.fit(x_train, y_train)

#Predict the test data
y_pred  = regression_model.predict(x_test)

score = r2_score(y_test, y_pred)

【问题讨论】:

前面已经回答了,你正在使用您的问题(分类)不恰当的模型(回归);检查scikit学习文档可用classiication模型(请注意,logistic回归,尽管它的名字,是一个分类模型,如回答以下建议)。我的回答here可能是有帮助的一般(PS请接受下面的答案,因为它本质上是正确的) SPAN> 【参考方案1】:

您不应使用线性回归,它用于预测连续值而不是分类值。在你的情况下,你试图预测的是分类的。从技术上讲,每种情况都是一个类。

我建议尝试使用逻辑回归或其他类型的分类方法,例如朴素贝叶斯、SVM、决策树分类器等。

【讨论】:

我切换到逻辑回归,准确率提高到 65%。准确性取决于模型还是我如何使用它?我包含了上面的代码,有没有办法改进模型?谢谢 @David 准确性取决于很多因素,包括您选择的模型、使用方式、数据,甚至在使用前如何预处理相同数据。不幸的是,没有捷径可以编写并获得更好的准确性。您应该尝试具有不同参数的不同模型。检查错误曲线还可以让您了解如何继续或可能出现什么问题。 @David 请不要以这种方式更新问题,这会完全改变上下文并几乎使给定的答案无效!如果需要,非常欢迎您提出一个新问题(编辑并删除了添加的逻辑回归部分)。

以上是关于为啥我的 ML 模型的准确性很差?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的逻辑回归模型准确率达到 100%?

为啥我的模型的准确性会根据它是从泡菜加载还是新训练的而改变?

按组迭代回归 ML 模型

为啥我的序列模型的准确率停留在 0.2155?

为啥我使用 Keras 与随机森林或 knn 的结果很差?

监督学习分类模型非常不准确