【问题标题】:Python: Is it OK to use "as_matrix" with dataframes as input to scikit modelsPython:可以使用带有数据帧的“as_matrix”作为 scikit 模型的输入吗
【发布时间】:2023-03-31 22:07:02
【问题描述】:

您好,我看到了一些使用 as_matrix 和数据帧作为机器学习算法输入的机器学习实现示例。我想知道是否可以使用元组,它是 .as_matrix 的输出作为机器学习算法的输入,如下所示。谢谢

trainArr_All = df.as_matrix(cols_attr)  # training array
trainRes_All = df.as_matrix(col_class)  # training results
trainArr, x_test, trainRes, y_test = train_test_split(trainArr_All, trainRes_All, test_size=0.20, random_state=42)
rf = RandomForestClassifier(n_estimators=20, criterion='gini', random_state=42)  # 100 decision trees
y_score = rf.fit(trainArr, trainRes.ravel()).predict(x_test)
y_score = y_score.tolist()

【问题讨论】:

  • 元组不是输出...输出是numpy.ndarray。我真的不经常看到这种方法,一般我会使用df.values 来达到同样的效果。

标签: python pandas dataframe scikit-learn


【解决方案1】:

Pandas as_matrix 将数据帧转换为 numpy.array (documentation) 不是元组! sklearn 假设输入是 numpy 数组的形式,如果不是,它会在内部将 dtype 转换为 dtype=np.float32 或稀疏 csc_matrix。虽然在使用稳定版本的 sklearn(内部转换)时使用 pandas 数据框作为输入通常很好,但由于数据类型不兼容,您可能偶尔会遇到问题。在使用 sklearn 之前,使用as_matrix 并将数据帧转换为 numpy.array 通常更安全。

这是一个对 pandas 数据框有问题的人的示例: Using slices in Python

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 2015-09-11
    • 2021-06-08
    • 1970-01-01
    相关资源
    最近更新 更多