用于 Python 的逻辑回归和 KNN 等模型的输入格式
Posted
技术标签:
【中文标题】用于 Python 的逻辑回归和 KNN 等模型的输入格式【英文标题】:Input formatting for models such as logistic regression and KNN for Python 【发布时间】:2019-09-08 09:49:03 【问题描述】:在我的训练集中,我有 24 个特征向量 (FV)。每个 FV 包含 2 个列表。当我尝试将其安装在 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 列用于目标。
Logistic 回归和 KNN 如何处理输入数据?我了解逻辑回归使用权重或系数值线性组合输入。但我不确定在列出 VS 数据框列时这意味着什么。这是否意味着它会在转换之前自动将数据框列的相应值转换为列表?方法一和方法二有区别吗?
另外,如果需要长列表,我应该将长列表设置为[HR,HR,HR,ACT,ACT,ACT]
或[HR,ACT,HR,ACT,HR,ACT]
。
【问题讨论】:
什么是FV?请避免以期望其他人熟悉的方式使用非标准缩写... 啊。 FV 是一个特征向量。 【参考方案1】:你应该选择 2
展开两个列表,使每一列代表一个值。换句话说,如果 FV 的 HR 和 ACT 数据中有 5 个项目,则新数据框将有 10 列用于特征,1 列用于目标。
然后,您应该从数据框中选择特征列并将其作为 X 传递,并将目标列作为 Y 传递给模型的 fit
函数。
Sklearn 的模型接受具有以下形状 [n_samples, n_features] 的输入,并且由于在遵循您提出的第二个解决方案之后,您的训练数据框将具有形状 [n_samples, 10] 的 2D。
【讨论】:
感谢您的回答。在这种情况下,我可以说我的时间序列数据中的每个值都代表一个特征吗?以上是关于用于 Python 的逻辑回归和 KNN 等模型的输入格式的主要内容,如果未能解决你的问题,请参考以下文章
利用knn svm cnn 逻辑回归 mlp rnn等方法实现mnist数据集分类(pytorch实现)