在我的训练集中,我有24个特征向量(FV)。每个FV包含两个列表。当我尝试在model = LogisticRegression()
或model = KNeighborsClassifier(n_neighbors=k)
上拟合数据时,我得到了这个错误ValueError: setting an array element with a sequence.
在我的数据框中,每一行代表一个FV。有3列。第一列包含个体的心率列表,第二列包含相应的活动数据列表,第三列是目标。视觉上,它看起来像这样:
HR ACT Target[0.5018, 0.5106, 0.4872] [0.1390, 0.1709, 0.0886] 1[0.4931, 0.5171, 0.5514] [0.2423, 0.2795, 0.2232] 0
我应该:
- 将两个列表连接起来形成一个长的FV
- 展开两个列表,使每个列代表一个值。换句话说,如果一个FV中的HR和ACT数据有5个项目,那么新的数据框将有10列用于特征,1列用于目标。
逻辑回归和KNN是如何处理输入数据的?我理解逻辑回归是使用权重或系数值线性组合输入的。但我不确定这在列表和数据框列之间意味着什么。这是否意味着它会自动将数据框列的对应值转换为列表再进行转换?方法1和方法2之间有什么区别吗?
此外,如果需要一个长列表,我应该使用[HR,HR,HR,ACT,ACT,ACT]
还是[HR,ACT,HR,ACT,HR,ACT]
的格式?
回答:
你应该选择2
展开两个列表,使每个列代表一个值。换句话说,如果一个FV中的HR和ACT数据有5个项目,那么新的数据框将有10列用于特征,1列用于目标。
然后你应该从数据框中选择特征列作为X,并将目标列作为Y传递给模型的fit
函数。
Sklearn的模型接受以下形状的输入[n_samples, n_features],并且在采用你提出的第二个解决方案后,你的训练数据框将具有2D形状[n_samples, 10]。