【问题标题】:Types accepted as parameters for scikit-learn.predict methods接受作为 scikit-learn.predict 方法参数的类型
【发布时间】:2021-04-12 15:28:55
【问题描述】:

我正在做一个项目,我正在使用机器学习算法(即 scikit-learn RandomForestClassifier 类)对一些数据进行分类。我已经使用RandomForestClassifier.fit() 来拟合训练数据,现在我正在尝试使用它来预测我的数据。

我的问题是我不确定需要将什么类型的数据传递给我的RandomForestClassifier.predict() 方法来进行预测。我已经使用predict() 方法使用测试集进行预测,但我正在努力了解如何将训练有素的算法应用于更一般的使用问题。

也就是说,我的主要问题是我正在尝试对我的数据框的单行进行预测。在我用来训练算法的数据框中找到一行并对其进行单个预测。这是我使用的许多代码变体之一:

Xnew = productMarketResearch.loc[50]
    Xnew = np.array(Xnew.values.tolist())
    Xnew = sc.transform(Xnew)
    ynew = rfc.predict(Xnew)

我尝试的一切都会引发同样的错误:

ValueError: Expected 2D array, got 1D array instead:
array=[3.63360000e+04 1.55639455e+12 0.00000000e+00].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

我曾尝试使用 array.reshape 以及其他方法将其转换为二维数组,但没有任何效果。此问题的任何解决方案以及在数据帧旁边使用predict() 方法的一些一般建议?

【问题讨论】:

    标签: python arrays pandas machine-learning scikit-learn


    【解决方案1】:

    大部分 sklearn 模型都需要二维数组。试试:

    # difference here
    Xnew = productMarketResearch.loc[[50]]
    # usually you don't need this
    # Xnew = np.array(Xnew.values.tolist())
    
    Xnew = sc.transform(Xnew)
    ynew = rfc.predict(Xnew)
    

    【讨论】:

    • 这是一种享受,谢谢!我不知道这只是把另一对括号这么简单......
    猜你喜欢
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    相关资源
    最近更新 更多