最适合该问题的机器学习算法吗?

时间:2020-02-22 19:45:08

标签: python tensorflow keras scikit-learn

我有一个数据集,我想决定将哪种ML算法应用于给定的问题。

客户将填写50个问题的评估问卷。问题的示例包括,您的工作是什么,以前的工作经历,您的收入多少,是否被拒绝贷款等,最终目的是确定是否应该拒绝他们。

我有大约500个条目供我的算法学习和预处理,并将输入数据转换为numpy数组,并且想知道哪种算法最适合使用?我应该在张量流中使用分类算法还是神经网络?如果是后者,我应该使用哪些层?

谢谢

1 个答案:

答案 0 :(得分:-1)

xgboostrandom forest开始怎么样? -这么简单的“旧” ML? 这样做的好处是,一旦训练,您就可以可视化模型的决策树。

如果在tensorflow中使用NN(甚至更简单:后端带有tensorflow的keras),则可以使用MLP(多层感知器),因为问题答案在输入中的位置是固定的。您不需要很多层。

重要的是您要按列对输入数据进行规范化,以使输入数字分别不会大于或小于+ 1 / -1。入门书籍虽然很重要,但常常会忽略这一点。

由于目标标签是“接受”或“拒绝”,因此二进制分类器将执行此操作(在机器学习方法中也是如此)。 (您将0和1用作标签)。

对于NN,您不需要太多层或神经元的分类。首先尝试最小的网络。假设第一层有10个神经元,然后在下一层有7个神经元(可能更少),然后有1个输出神经元用于二元决策。

有了Keras,这将是:

from keras.models import Sequential
from keras.layers import Dense

def create_mlp(n_input = 500): # number of columns of input data 500 here
    model = Sequential()
    model.add(Dense(10, input_dim=n_input, kernel_initializer='normal', activation='relu')) # init = kernel_initializer
    model.add(Dense(7, kernel_initializer='normal', activation='relu'))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(optimizer='adam',
                  loss='binary_crossentropy',
                  metrics=['acc'])
    return model

model = create_mlp(500) # this will generate the correct NN compiled.

您的数据框(或Numpy输入数组必须将样本作为行, 这些列是针对问题1列的每个答案的。 您必须以数字形式编码的答案。数字应该很小-最好介于-1和1之间。NN不喜欢大数字。因此,逐列标准化可以提供帮助。)

就是这样。我去年学到了所有这些东西。祝您学习愉快。这将是无穷的乐趣!