一组特征的多输出分类算法

数据挖掘 分类 决策树 机器学习模型 多标签分类
2022-02-04 19:41:56

我想建立一个分类算法来预测一组特征的多个值。例如,假设我有一个客户人口统计数据,例如收入、年龄、性别、城市,我想预测他们将购买的 5 种顶级产品:例如,如果客户是男性,收入低于 3 万,居住在一级城市并且拥有年龄 20-35 岁——那么输出是: 1. 手机 2. 汽车 3. 家具 即有三个输出,这意味着他们最有可能购买手机、汽车和家具,概率值递减。哪种算法最适合这个问题?

1个回答

您的问题可以被视为多类分类问题。所以,你有一个特征数据集X和预测器y其中 X 包含收入、年龄、性别等。并且 y 是一个客户以更高概率购买的商品。

为了实现您的目标并预测客户的概率,您可以使用scikit-learnLibrary 中的任何分类器(如果您使用 python)并predict_proba在适合分类器后调用该方法,如以下示例所示:

from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier

# Make a random multiclass classification problem
X, y = make_classification(n_samples=1000,
                           n_features=10,
                           n_informative=10,
                           n_redundant=0,
                           n_repeated=0,
                           n_classes=5,
                           random_state=0,
                           shuffle=False)

# Fit any classifier
rfc = RandomForestClassifier(n_jobs=-1,max_features= 'sqrt' ,n_estimators=50, oob_score = True) 
rfc.fit(X,y)

# Prediction for one example
one_example = X[10,:].reshape(1,-1)
outcome     = rfc.predict_proba(one_example)

这个问题与5类的结果是

array([[0.76, 0.12, 0.02, 0.06, 0.04]])

代表此示例(或您的案例中的客户)的每个类别的概率