运行 训练-测试拆分并获得不同数据集的模型精度
Running train-test split and obtaining model accuracies for different datasets
我想 运行 train_test_split 来自 sklearn 包,使用相同的目标变量 y,但三个不同的自变量数据帧。然后,我想使用随机森林分类器进行拟合和预测并获得准确性。这里的目标是获得三个不同数据帧的准确性,以便我可以比较它们并相应地 select 我的变量。
到目前为止,我有以下内容,但没有用。
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]
我猜你的数据是这样的
assert df.shape == (n_samples, 3) # each column for a variable/features
assert y.shape == (n_samples, )
并且您正在尝试分别在三个不同的 variables/features 上训练三个 RF clfs。
现在,你可以试试这个
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)
我成功地处理了鸢尾花数据集。
新:
my modification
我想 运行 train_test_split 来自 sklearn 包,使用相同的目标变量 y,但三个不同的自变量数据帧。然后,我想使用随机森林分类器进行拟合和预测并获得准确性。这里的目标是获得三个不同数据帧的准确性,以便我可以比较它们并相应地 select 我的变量。 到目前为止,我有以下内容,但没有用。
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]
我猜你的数据是这样的
assert df.shape == (n_samples, 3) # each column for a variable/features
assert y.shape == (n_samples, )
并且您正在尝试分别在三个不同的 variables/features 上训练三个 RF clfs。
现在,你可以试试这个
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)
我成功地处理了鸢尾花数据集。
新: my modification