【问题标题】: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_)

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

【问题讨论】:

    标签: numpy machine-learning scikit-learn linear-regression data-science


    【解决方案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)
      

      【讨论】:

        猜你喜欢
        • 2020-06-07
        • 2017-04-06
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 2012-08-16
        • 2018-11-29
        • 2014-07-30
        • 2021-03-23
        相关资源
        最近更新 更多