用于 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算法

利用knn svm cnn 逻辑回归 mlp rnn等方法实现mnist数据集分类(pytorch实现)

KNN算法在保险业精准营销中的应用

机器学习”小憩“——总结应用场景

阿旭机器学习实战33中文文本分类之情感分析--朴素贝叶斯KNN逻辑回归

python逻辑回归分类MNIST数据集