在我的训练集中,我有 24 个特征向量 (FV)。每个 FV 包含 2 个列表。当我尝试将其适合 model = LogisticRegression()
或 model = KNeighborsClassifier(n_neighbors=k)
时,我收到此错误 ValueError: 设置带有 a 的数组元素序列。
在我的数据框中,每一行代表每个 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 如何处理输入数据?据我了解,逻辑回归使用权重或系数值线性组合输入。但我不确定这对于列表 VS 数据框列意味着什么。这是否意味着它在转换之前会自动将数据帧列的相应值转换为列表?方法1和方法2有区别吗?
此外,如果需要长列表,我应该将长列表设置为 [HR,HR,HR,ACT,ACT,ACT]
或 [HR,ACT,HR, ACT,HR,ACT]
。
最佳答案
你应该选择2
Expand both lists such that each column represents one value. In other words, if there are 5 items in HR and ACT data for a FV, the new dataframe would have 10 columns for features and 1 for Target.
然后,您应该从数据框中选择特征列,并将其作为 X 传递,将目标列作为 Y 传递给模型的 fit
函数。
Sklearn 的模型接受具有以下形状 [n_samples, n_features] 的输入,并且由于遵循您提出的第二个解决方案后,您的训练数据帧将具有形状 [n_samples, 10] 的 2D。
关于python-3.x - 适用于 Python 的逻辑回归和 KNN 等模型的输入格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55739556/