我有一个数据集,我想决定将哪种ML算法应用于给定的问题。
客户将填写50个问题的评估问卷。问题的示例包括,您的工作是什么,以前的工作经历,您的收入多少,是否被拒绝贷款等,最终目的是确定是否应该拒绝他们。
我有大约500个条目供我的算法学习和预处理,并将输入数据转换为numpy数组,并且想知道哪种算法最适合使用?我应该在张量流中使用分类算法还是神经网络?如果是后者,我应该使用哪些层?
谢谢
答案 0 :(得分:-1)
从xgboost
或random 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不喜欢大数字。因此,逐列标准化可以提供帮助。)
就是这样。我去年学到了所有这些东西。祝您学习愉快。这将是无穷的乐趣!