创建一个预测产品价格的回归模型
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_qty
和train_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)
【讨论】:
以上是关于创建一个预测产品价格的回归模型的主要内容,如果未能解决你的问题,请参考以下文章