python - 如何根据各种线性回归模型的预测开发预测模型?
问题描述
我正在处理一个在工作中出现了一些困难的问题。我已经包含了一个非常通用的示例来演示我正在处理的问题。
在这种情况下,假设我正在查看过去几年的几家公司(公司 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 公司的收入?
解决方案
您的图表显示,收入和质量之间没有一般的线性关系:这取决于您所关注的公司。
所以答案是你不能仅仅知道它的质量分数就对一家新公司说任何话。
然而,对于每家公司而言,这种关系看起来确实大致呈线性关系。顺便问一下,您的质量衡量标准不是以收入为输入吗?在那种情况下,这将直接解释回归有效。
至于估计质量已知的新公司的收入,如果你有一个点(质量,收入),你可以说当质量为 10 时收入会更高。如果你有 2 点,你可以画一个线,如果你什么都没有,那么它就不是ppssible。
推荐阅读
- r - 绘制时间序列热图时提高 ggplotly 的性能
- python - Python“onkeypress”实现
- python - 如何在元素中查找 2 个文本
- c++ - 如何从文本文件中查找排在前面的单词、唯一单词的数量以及查找特定单词?
- django - django trans 标签内的过滤器:首先翻译然后应用过滤器;不像其他标签
- css - 在 Visual Studio Code 中感觉很笨 - 无法将我的文件中的 img 或字体加载到我的 CSS 表中
- typescript - 从另一个控制器调用控制器并根据响应决定操作
- python - Python Pulp 复制 Excel 的求解器
- php - 将生成的子数组数据映射到数组中每个顶层的 html 模板
- c++ - 在 C++ 中使用 openCV 将动态 2D 数组转换为 Mat(灰度)