首页 > 解决方案 > 为什么我的 ML 模型的准确性很差?

问题描述

我是机器学习的新手,我正在独立构建我的第一个模型。我有一个评估汽车的数据集,它包含价格、安全性和豪华性的特征,并对其好、非常好、可接受和不可接受进行分类。我将所有非数字列转换为数字,训练数据并使用测试集进行预测。但是,我的预测很糟糕。我使用 LinearRegression 和 r2_score 输出 0.05,实际上是 0。我尝试了几种不同的模型,所有模型都给了我可怕的预测和准确性。

我究竟做错了什么?我看过教程,阅读过类似方法的文章,但最终的准确率为 0.92,而我得到的准确率为 0.05。你如何为你的数据建立一个好的模型,你怎么知道要使用哪个模型?

代码:

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)

标签: python-3.xmachine-learningscikit-learn

解决方案


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

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


推荐阅读