首页 > 解决方案 > 如何根据各种线性回归模型的预测开发预测模型?

问题描述

我正在处理一个在工作中出现了一些困难的问题。我已经包含了一个非常通用的示例来演示我正在处理的问题。

在这种情况下,假设我正在查看过去几年的几家公司(公司 A、B 和 C)的数据,并为每家公司开发模型,根据行业质量得分(唯一考虑的特征)预测销售收入)。我分析过的 3 家公司在规模和质量得分方面差异很大。

问题是我想使用我创建的模型的预测,然后能够预测公司 D 的收入(目前得分约为 2),如果它要达到 10 的质量得分。

这是我用来设置问题的代码:

import numpy as np
import matplotlib as mpl
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression

company_a = np.array([
    [0.8, 0.4, 0.5, 0.6, 0.7, 1.2, 0.5, 0.9, 1.5, 1.2],
    [3, 1, 2, 2, 2, 3, 1, 2, 3, 2]])

company_b = np.array([
    [14.5, 15.3, 15.1, 18.7, 18.2, 19.2, 17.8, 22.0, 22.8, 24.1],
    [4, 4, 4, 5, 5, 5, 5, 6, 6, 6]])

company_c = np.array([
    [7.4, 5.6, 5.2, 6.7, 7.1, 5.9, 8.2, 7.8, 7.9, 11.2],
    [7, 6, 6, 7, 8, 8, 8, 7, 8, 10]])

company_d = np.array([[23.0],[2]])

companies = {"company_a": (company_a, "b"), "company_b": (company_b, "r"), "company_c": (company_c, "g"), "company_d": (company_d, "k")}

def plot_companies(data, clr):
    lin_reg = LinearRegression()
    X = data[1].reshape(-1, 1)
    y = data[0].reshape(-1, 1)
    try:
        lin_reg.fit(X, y)
        y_predict = lin_reg.predict(X)
        plt.plot(X, y, clr + ".")
        plt.plot(X, y_predict, clr + "-", alpha=0.3)
    except:
        plt.plot(X, y, clr + ".")

for key, value in companies.items():
    plot_companies(value[0], value[1])
plt.xlabel("Industry Quality Score", fontsize=12)
plt.ylabel("Revenue (millions of dollars)", fontsize=12)
plt.show()

数据点和线性模型图

假设 D 公司目前排名为 2,收入为 2300 万,如果要获得 10 分的质量分数,我如何使用其他公司的 3 个线性模型来预测 D 公司的收入?

标签: pythonmachine-learningstatisticslinear-regression

解决方案


您的图表显示,收入和质量之间没有一般的线性关系:这取决于您所关注的公司。

所以答案是你不能仅仅知道它的质量分数就对一家新公司说任何话。

然而,对于每家公司而言,这种关系看起来确实大致呈线性关系。顺便问一下,您的质量衡量标准不是以收入为输入吗?在那种情况下,这将直接解释回归有效。

至于估计质量已知的新公司的收入,如果你有一个点(质量,收入),你可以说当质量为 10 时收入会更高。如果你有 2 点,你可以画一个线,如果你什么都没有,那么它就不是ppssible。


推荐阅读