【问题标题】:Suitable AI algorithm for this classifying problem适合这个分类问题的 AI 算法
【发布时间】:2020-06-29 08:50:44
【问题描述】:

我正在尝试根据因变量对记录进行分类,如下所示。我想选择分店代码作为默认分店,与同城其他分店相比,收入更高或客户数量更多。

我已经使用了所有的分类算法(决策树、MLPClassifier、ExtraTreesClassifier、RandomForestClassifier 等)但无法得到正确的解决方案。

我的代码:

data = pd.read_csv('train.csv')

le = LabelEncoder()
for column in data.columns:
    if data[column].dtype == type(object):
        data[column] = le.fit_transform(data[column])

feature_cols = ['City','State','Branch Code','Revenue','Customers']
X = data.iloc[:,[0,1,2,3,4]].values
y = data.iloc[:,5].values
clf = ExtraTreesClassifier(n_estimators=10)
clf.fit(X, y)
print('Default Branch',le.inverse_transform(clf.predict([le.fit_transform(['Chennai','TN','K9092',15000,3])])))
print("Score", clf.score(X,y))

到目前为止,我无法做出正确的预测。我可能做错了什么?

【问题讨论】:

  • 您的目标列是什么?从您的代码看来,您正在尝试预测 Default Branch 而您的 X 矩阵也包含该列。你应该得到 100% 的准确率。
  • 你是对的。目标列是默认分支。我得到了 100% 的准确率,但预测总是错误的。我添加了 100 行来提高准确率。但是预测检查总是错误的
  • 你的意思是你有 100% 的准确率,但总是错的?
  • 我的意思是,clf.score(X,y) 总是显示 100%。但我知道这是错的。

标签: python pandas algorithm artificial-intelligence


【解决方案1】:

目标列y 也存在于您的输入矩阵X 中。这允许分类器在两列之间建立连接并简单地预测输入中的内容。

为了让您的程序真正了解输入变量和目标变量之间的关系,您需要从输入矩阵X 中删除列Default Branch

至于分类器的一般性能,我认为你提到的任何算法都不适合这类问题。大多数机器学习算法不保留先前输入的记忆(有一些例外,但它们仍然不适合这个问题)。如果算法正确地猜测 id S2134 的分支是其各自输入的正确输出,则它无法记住并猜测下一个输入。

您提出的问题不是一个好的机器学习问题(或根本不是机器学习问题)

【讨论】:

  • 感谢您的回复。我使用此示例通过 2 个可靠的列(收入和客户)简化了我的问题。但在我的现实世界问题中,我还有其他各种参数。我今天可以用太多的 if 和 else 逻辑来实现它们。但是想看看有没有好的分类算法来解决。
猜你喜欢
  • 2020-06-06
  • 2011-01-31
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 2015-06-30
  • 2017-07-23
  • 1970-01-01
相关资源
最近更新 更多