为 scikit 线性回归模型生成 numpy 数组
Generating numpy arrays for scikit linear regression model
我有一个包含多个变量的大型数据集:商品、位置、质量(范围为 1-10)和日期范围包含 "no"(如果商品当天未售出)和价格(如果那天确实卖出去了。
我想创建一个线性回归模型,以便能够在给定位置和质量的情况下预测价格。我通读了 scikit-learn 教程,但我真的很困惑我的输入应该是什么。有人可以帮我吗?
您需要将数据转换为模型可以使用的数字表示形式。唯一有问题的特征是位置(分类变量),但我们可以用每个位置的一列以及 0 和 1(所谓的 OneHotEncoding)来表示它。入门示例:
预处理
from sklearn.feature_extraction import DictVectorizer
data = [
{'location': 'store 1', 'quality': 8},
{'location': 'store 1', 'quality': 9},
{'location': 'store 2', 'quality': 2},
{'location': 'store 2', 'quality': 3},
]
prices = [100.00, 99.9, 11.25, 9.99]
vec = DictVectorizer()
X = vec.fit_transform(data)
y = prices
现在 X
将如下所示:
╔═════════════════╦═════════════════╦═════════╗
║ location=store1 ║ location=store2 ║ quality ║
╠═════════════════╬═════════════════╬═════════╣
║ 1 ║ 0 ║ 8 ║
║ 1 ║ 0 ║ 9 ║
║ 0 ║ 1 ║ 2 ║
║ 0 ║ 1 ║ 3 ║
╚═════════════════╩═════════════════╩═════════╝
模型训练
现在可以将此矩阵提供给模型:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)
预测
新数据也需要使用相同的 DictVectorizer
转换为数字形式。请注意,现在我们使用 .transform
而不是 .fit_transform
:
>>> test_data = [{'location': 'store 2', 'quality': 3}]
>>> X_test = vec.transform(test_data)
>>> model.predict(X_test)
array([ 10.28])
顺便说一下,我会将这个问题作为分类问题(sold/not 已售出)来处理,然后我会使用回归来确定已售出商品的价格。
我有一个包含多个变量的大型数据集:商品、位置、质量(范围为 1-10)和日期范围包含 "no"(如果商品当天未售出)和价格(如果那天确实卖出去了。
我想创建一个线性回归模型,以便能够在给定位置和质量的情况下预测价格。我通读了 scikit-learn 教程,但我真的很困惑我的输入应该是什么。有人可以帮我吗?
您需要将数据转换为模型可以使用的数字表示形式。唯一有问题的特征是位置(分类变量),但我们可以用每个位置的一列以及 0 和 1(所谓的 OneHotEncoding)来表示它。入门示例:
预处理
from sklearn.feature_extraction import DictVectorizer
data = [
{'location': 'store 1', 'quality': 8},
{'location': 'store 1', 'quality': 9},
{'location': 'store 2', 'quality': 2},
{'location': 'store 2', 'quality': 3},
]
prices = [100.00, 99.9, 11.25, 9.99]
vec = DictVectorizer()
X = vec.fit_transform(data)
y = prices
现在 X
将如下所示:
╔═════════════════╦═════════════════╦═════════╗
║ location=store1 ║ location=store2 ║ quality ║
╠═════════════════╬═════════════════╬═════════╣
║ 1 ║ 0 ║ 8 ║
║ 1 ║ 0 ║ 9 ║
║ 0 ║ 1 ║ 2 ║
║ 0 ║ 1 ║ 3 ║
╚═════════════════╩═════════════════╩═════════╝
模型训练
现在可以将此矩阵提供给模型:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)
预测
新数据也需要使用相同的 DictVectorizer
转换为数字形式。请注意,现在我们使用 .transform
而不是 .fit_transform
:
>>> test_data = [{'location': 'store 2', 'quality': 3}]
>>> X_test = vec.transform(test_data)
>>> model.predict(X_test)
array([ 10.28])
顺便说一下,我会将这个问题作为分类问题(sold/not 已售出)来处理,然后我会使用回归来确定已售出商品的价格。