由于某些原因,我有以下结构的基本数据帧
print(df1.shape)
display(df1.head())
print(df2.shape)
display(df2.head())

其中顶部的dataframe是我的特征集,我的底部是输出集。要将此问题转变为适合数据建模的问题,我首先要做的是:
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评分之后计算的;z评分代码在这里没有描述,但已经完成了):
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在这里不太起作用,因为在测试/列车拆分的每个实例中,都必须重新计算距离,以避免测试与列车的污染。
希望天气晴朗!
发布于 2021-07-13 01:10:36
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.8, random_state=n)这里X是独立的特征,y是依赖的特征意味着你实际上想要预测的东西-它可以是标签值或连续值。我们在训练数据集上使用train_test_split,并使用(x_train,y_train)来训练模型,使用(x_test,y_test)来测试模型,以确保模型在未知数据(x_test,y_test)上的性能。在你的例子中,你给出了y作为df2,这是错误的,只要找出你的目标特性并给出它作为y,就不需要拆分测试数据了。
发布于 2021-07-13 01:55:42
首先,我从数据框的形状中了解到,输入中有42个样本和1643个特征,每个输出向量由392个值组成。
巨大的输入:如果你确定你的问题有1643个特征,你可能需要使用来降低维数,而不是成对距离。您应该收集更多的样本,而不是42个样本,以避免过度拟合,因为没有足够的数据来训练和测试您的模型。
Huge :您可以使用sampled_softmax_loss来加快TensorFlow documentation 中提到的训练过程。你也可以阅读这个here。如果您不想遵循这种方法,您可以继续使用此输出进行训练,但这需要一些时间。
https://stackoverflow.com/questions/68350921
复制相似问题