gpt4 book ai didi

python - 我测量的多元线性回归模型的性能是否正确?

转载 作者:行者123 更新时间:2023-11-28 18:14:51 25 4
gpt4 key购买 nike

这可能是一个有点愚蠢的问题(而且可能是微不足道的问题),但我是机器学习的新手。这可能很容易从我提出的代码中推导出来,并且这不是问题表述不当的借口。如果您发现此问题表述不当,请通知我,以便我进行更新。

我训练了一个多元线性回归模型,我想看看它对给定数据集的表现如何。所以,我用谷歌搜索了一下,发现 a nice article向我解释如何从真实值中找出预测值的“错误”。它给我的几个选项是:enter image description here

我应用了所有这些,它们给了我难以置信的高值(value),所以我不知道这些是否正确或我应该如何解释它们。

输出接收到的文章:

  • 10.0
  • 150.0
  • 12.2474487139

我的模型收到的输出:

  • 7514.293659640891
  • 83502864.03257468
  • 9137.990152794797

作为快速引用,这些是我的真实/预测值 enter image description here

“TLDR”问题:我是否使用上述方法正确测量了我的错误,这些结果是否暗示我的模型表现得非常糟糕? (这看起来不像,当我将预测值与真实值进行比较时)

Here你可以看看我正在使用的数据集。

我用来创建模型和预测值的代码(我试图删除不需要的代码)

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.linear_model import LinearRegression
from sklearn import metrics

dataset = pd.read_csv('50_Startups.csv')
X = dataset.iloc[:, :-1].values # Independent variables
y = dataset.iloc[:, 4].values # Dependent variable

# Encode categorical data into numerical values (1, 2, 3)
# For example; New york becomes 1 and Florida becomes 2
labelencoder_states = LabelEncoder()
# We just want to apply this to the state column, since this has categorical data
states_encoded = labelencoder_states.fit_transform(X[:, 3])
# Update the states with the new encoded data
X[:, 3] = states_encoded

# Now that we have the categories as numerical data,
# we can split them into multiple dummy variables:
# Split the categories into columns (more optimal)
# Tell it too look at the state column
onehotencoder_states = OneHotEncoder(categorical_features = [3])
# Actually transforms them into columns
X = onehotencoder_states.fit_transform(X).toarray()

# Avoiding the Dummy Variable Trap
# Remove the first column from X
# Since; dummy variables -1
X = X[:, 1:]

# Splitting the dataset into the Training set and Test set
# In this case we are going to use 40 of the 50 records for training
# and ten of the 50 for testing, hence the 0.2 split ratio
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

# Create a regressor
regressor = LinearRegression()
# Fit the model to the training data
regressor.fit(X_train, y_train)

# Make predictions on the test set, using our model
y_pred = regressor.predict(X_test)

# Evaluating the model (Am I doing this correct?)

# How well did it do?
print(metrics.mean_absolute_error(y_test, y_pred))
print(metrics.mean_squared_error(y_test, y_pred))
print(np.sqrt(metrics.mean_squared_error(y_test, y_pred)))

最佳答案

让我们来回答:我认为您正在正确测量(至少使用代码)。但是:

  1. 谁告诉您这种关系是线性的?您正在尝试预测利润(对吗?)。我会说线性回归可能不会很好地工作。因此,您没有取得好成绩我并不感到惊讶。

  2. 要了解您的预测如何运作,请尝试绘制预测值与实际值的对比图,并检查您的点在一条线上的保持情况。

总而言之:您获得大值并不意味着您的代码是错误的。这种关系很可能不是线性的。

附带说明:使用分类变量可能是问题的根源。您是否尝试过在没有状态的情况下进行线性回归?你的结果是什么?哪个变量在你的回归中最重要?你应该检查一下。你的 R 平方是多少?

我希望这对翁贝托有所帮助

关于python - 我测量的多元线性回归模型的性能是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48979658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com