【问题标题】:Running train-test split and obtaining model accuracies for different datasets运行训练测试拆分并获得不同数据集的模型精度
【发布时间】:2020-09-11 14:41:42
【问题描述】:

我想从 sklearn 包中运行 train_test_split,使用相同的目标变量 y,但使用三个不同的自变量数据帧。然后,我想使用随机森林分类器进行拟合和预测并获得准确性。这里的目标是获得三个不同数据帧的准确性,以便我可以比较它们并相应地选择我的变量。 到目前为止,我有以下内容,但无法正常工作。

df = [X1, X2, X3]   # 3 different independent variable (features) DataFrames. 

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier as RandomForest
from sklearn import metrics
rf_accuracy = []

for index, z in enumerate(df):
  train_X, test_X, train_y, test_y = train_test_split(z, y,train_size=0.5,test_size=0.5, random_state=2)
  rf = RandomForest(random_state=99)
  rf.fit(train_X, train_y.ravel())
  pred_y = rf.predict(test_X)
  rf_accuracy = rf_accuracy.append(metrics.accuracy_score(test_y, pred_y))

print(rf_accuracy)

当我打印 rf_accuracy 时,我应该分别使用三个不同的特征空间 X1, X2, X3 得到一个包含三个精度的列表。

例如,rf_accuracy 将输出 [0.9765, 0.9645, 0.9212]

【问题讨论】:

    标签: python-3.x scikit-learn sklearn-pandas


    【解决方案1】:

    我猜你的数据是这样的

    assert df.shape == (n_samples, 3)   # each column for a variable/features
    assert y.shape == (n_samples, )
    

    您正尝试分别针对三个不同的变量/特征训练三个 RF clf。

    现在,你可以试试这个

    for _, z in df.iteritems():
      train_X, test_X, train_y, test_y = train_test_split(
    z.values.reshape(-1, 1), y, train_size=0.5, test_size=0.5, random_state=2)
      rf = RandomForest(random_state=99)
      rf.fit(train_X, train_y.ravel())
      pred_y = rf.predict(test_X)
      rf_accuracy = rf_accuracy.append(metrics.accuracy_score(test_y, pred_y))
    
    print(rf_accuracy)
    

    我成功处理了 iris 数据集。

    新: my modification

    【讨论】:

    • 这很好,但是 X1、X2 和 X3 本身是 3 个独立的数据帧,而不是一个数据帧中的 3 列。我希望在 train_test_split 中使用 X1(有 10 列)作为第一个参数,然后是 X2(有 5 个不同的列),然后是 X3(有 7 个列变量)
    • sklearn 训练测试运行为:train_X, test_X, train_y, test_y = train_test_split(X, y, train_size=0.5, test_size=0.5, random_state=2)。我想使用 3 个不同的数据框并将它们作为“X”放在一个循环中
    • 对不起,我误会了你。我在答案中添加了一个链接(我的修改)。我希望这会对你有所帮助。
    猜你喜欢
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 2016-02-27
    • 2022-06-25
    • 2017-11-01
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多