【发布时间】:2021-09-21 19:55:05
【问题描述】:
由于某些原因,我有以下结构的基本数据框
print(df1.shape)
display(df1.head())
print(df2.shape)
display(df2.head())
顶部数据框是我的功能集,底部是输出集。为了把它变成一个适合数据建模的问题,我首先要做的是:
x_train, x_test, y_train, y_test = train_test_split(df1, df2, train_size = 0.8)
然后我分成 80% 的训练和 20% 的测试。
由于输出集 (df2; y_test/y_train) 是单独的测量值,它们本身没有内在意义,我计算标签之间的成对距离以生成单个输出值,表示观察值之间的成对距离(计算距离z-scoring 之后;z-scoring 代码在这里没有描述,但是已经完成了):
y_train = pdist(y_train, 'euclidean')
y_test = pdist(y_test, 'euclidean')
然后,我同样将此策略应用于特征集,以生成每个特征的每个实例的单个观测值之间的成对距离。
def feature_distances(input_vector):
modified_vector = np.array(input_vector).reshape(-1,1)
vector_distances = pdist(modified_vector, 'euclidean')
vector_distances = pd.Series(vector_distances)
return vector_distances
x_train = x_train.apply(feature_distances, axis = 0)
x_test = x_test.apply(feature_distances, axis = 0)
然后我继续训练和测试我的所有模型。 现在我正在尝试线性回归、随机森林、xgboost。
有没有什么简单的方法可以在我的数据集中实现交叉验证方案? 由于我的问题需要计算观测值之间的成对距离,因此我正在努力寻找一种简单的方法来执行交叉验证方案以优化参数调整。
GridsearchCV 在这里并不能很好地工作,因为在测试/火车分割的每个实例中,必须重新计算距离以避免火车污染测试。
希望清楚!
【问题讨论】:
标签: python random-forest xgboost modeling