【问题标题】:Classification with numerical label?用数字标签分类?
【发布时间】:2016-06-05 05:09:55
【问题描述】:

我知道一些分类算法,例如决策树,但我无法将它们中的任何一个用于我手头的问题。

我有一个数据集,其中每一行都包含有关购买的信息。它的列是:

- customer id
- store id where the purchase took place
- date and time of the event
- amount of money spent

我正在尝试做一个预测,根据谁、何地和何时的信息,预测将要花多少钱。

有哪些可能的方法来做到这一点?有什么著名的算法吗?

另外,我目前正在学习 RapidMiner,并且正在试验它的一些功能。我在那里尝试过的所有东西都不允许我有一个实数(花费的金额)作为标签。也许我做错了什么?

【问题讨论】:

  • 您要做的不是分类而是回归。我建议你对回归是什么做一些进一步的研究。为了帮助您入门,请查看“线性回归”。
  • 我同意 Robin 的观点,即回归是模型连续数值的正常方法。但是对于给定的问题,分类方法也是可行的。您可以尝试的不是模拟确切的支出金额,而是预测一系列价格(例如高、低、中)。为此,您可以使用 RapidMiner 中的分箱运算符,然后使用分类器运算符。

标签: machine-learning classification regression data-mining rapidminer


【解决方案1】:

您可以为此使用决策树回归器。使用像 scikit-learn 这样的工具包,您可以使用 DecisionTreeRegressor 算法,其中您的功能将是商店 ID、日期和时间以及客户 ID,而您的目标将是花费的金额。

你可以把它变成一个有监督的学习问题。这是未经测试的代码,但它可能会让您入门

# Load libraries
import numpy as np
import pylab as pl
from sklearn import datasets
from sklearn.tree import DecisionTreeRegressor
from sklearn import cross_validation
from sklearn import metrics
from sklearn import grid_search

def fit_predict_model(data_import):
    """Find and tune the optimal model. Make a prediction on housing data."""

    # Get the features and labels from your data
    X, y = data_import.data, data_import.target

    # Setup a Decision Tree Regressor
    regressor = DecisionTreeRegressor()
    parameters = {'max_depth':(4,5,6,7), 'random_state': [1]}

    scoring_function = metrics.make_scorer(metrics.mean_absolute_error, greater_is_better=False)
    ## fit your data to it ##
    reg = grid_search.GridSearchCV(estimator = regressor, param_grid = parameters, scoring=scoring_function, cv=10, refit=True)
    fitted_data = reg.fit(X, y)

    print "Best Parameters: "
    print fitted_data.best_params_

    # Use the model to predict the output of a particular sample
    x = [## input a test sample in this list ##]
    y = reg.predict(x)
    print "Prediction: " + str(y)

fit_predict_model(##your data in here)

我从一个几乎直接用于预测房价的项目中获取此信息,因此可能存在一些不必要的库,如果不进行验证,您不知道此案例的准确性如何,但这应该可以帮助您入门。

查看此链接:

http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeRegressor.html

【讨论】:

    【解决方案2】:

    是的,正如 cmets 指出的那样,您需要的是回归。线性回归听起来确实是一个很好的起点,因为您没有大量变量。

    在 RapidMiner 中,将回归输入到 Operators 菜单中,您将在 Modelling-> Functions 下看到几个选项。线性回归、多项式、向量等(还有更多,但作为初学者,让我们从这里开始)。 右键单击这些运算符中的任何一个,然后按显示运算符信息,您会看到允许使用数字标签。
    接下来滚动浏览操作员的帮助文档,您将看到指向教程过程的链接。使用起来真的很简单,但最好从一个例子开始。

    如果您需要任何帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 2014-12-31
      • 2012-10-12
      • 2018-03-07
      • 2017-07-22
      • 1970-01-01
      • 2012-10-22
      • 2019-04-01
      • 2021-06-24
      相关资源
      最近更新 更多