创建一个预测产品价格的回归模型

Posted

技术标签:

【中文标题】创建一个预测产品价格的回归模型【英文标题】:Creating a regression model that will predict price of a product 【发布时间】:2018-11-16 17:44:09 【问题描述】:

我有以特定价格销售特定数量相同产品的公司的数据,请参考以下:

Company A:
(qty)     (price)
100        1000
200        1800
300        2400

Company B:
(qty)     (price)
110       1000
200       1770
300       2390

Company C:
(qty)     (price)
1000       10000
1500       13000
3700       22000

我想创建一个模型,该模型将根据数据粗略预测一定数量产品的价格。我正在使用sickitlearn,我尝试在一个数组中收集所有数量,在另一个数组中收集价格。例如: numpy 数组中所有 3 家公司的所有数量:

import numpy as np
train_qty = np.array([[100,200,300,110,200,300,1000,1500,3700]])

价格:

train_prices = np.array([[1000,1800,300,110,200,300,1000,1500,3700]])

我试过了:

from sklearn import linear_model 
reg = linear.model.LinearRegression()
reg.fit(train_qty,train_prices)

但是,当我这样做时:

print(reg.coef_)

我得到一个全为零的矩阵。你能解释一下我做错了什么以及正确的做法吗?

【问题讨论】:

【参考方案1】:

应该是

reg.fit(train_qty.T, train_prices.T)
reg.coef_  # 0.85178458

sklearn 线性模型查找系数 A 以便 XA = Y。这里你的train_qtytrain_prices 都是矩阵1 x 9,所以你得到A 一个矩阵9 x 9。你必须转置你的输入。

【讨论】:

【参考方案2】:

获取一维数组的另一种选择是使用 reshape:

train_qty = np.array([[100,200,300,110,200,300,1000,1500,3700]]).reshape(-1,1)
train_prices = np.array([[1000,1800,300,110,200,300,1000,1500,3700]]).reshape(-1,1)

【讨论】:

以上是关于创建一个预测产品价格的回归模型的主要内容,如果未能解决你的问题,请参考以下文章

经典算法之K近邻(回归部分)

使用线性回归和神经网络模型预测比特币收盘价

线性回归

线性回归预测因输入类型而异

回归树表现不佳

回归模型 Pandas