gpt4 book ai didi

python - 使用逻辑回归公式 y = x % 2 + 0 预测数字是奇数还是偶数

转载 作者:行者123 更新时间:2023-12-02 18:06:37 27 4
gpt4 key购买 nike

给定 1-20 的数字数组 (X_train) 和 0 或 1 的二进制值数组 (y_train),将其传递给逻辑回归算法,然后训练模型。尝试使用以下 X_test 进行预测会给我不正确的数据。

如下所示创建了样本火车和测试数据。请建议代码有什么问题。

import numpy as np

X_train = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], dtype=float).reshape(-1, 1)
y_train = np.array([1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0], dtype=float)
X_test = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 55, 88, 99, 100], dtype=float).reshape(-1, 1)

from sklearn import linear_model
logreg = linear_model.LogisticRegression()
logreg.fit(X_train, y_train)
y_predict = logreg.predict(X_test)
print(y_predict)

Output :
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 0. 0. 0. 0.]

最佳答案

已经有人问过类似的问题here .我想用这篇文章作为我解决方案的灵感。

但首先让我提两件事:

  1. 如果您的特征和标签之间存在某种嵌套线性关系,则逻辑回归在时间、性能和可解释性方面非常有益,但显然您的示例并非如此。您想要估计一个不连续函数,如果您的输入为奇数,则该函数等于 1,否则为零,这不容易实现。

  2. 您的数据表现不佳。我认为这一点对于您的预测目标更为关键,因为更好的数据表示确实会导致更好的预测。

接下来,我想分享另一种数据表示形式。这种新表示确实会产生完美的预测结果,即使对于简单的未调整逻辑回归也是如此。

代码:

import numpy as np
from sklearn import linear_model

X_train = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
y_train = np.array([1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0], dtype=float)
X_test = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 55, 88, 99, 100])

def convert_repr(x):
return list(map(int, list(str(format(x, '016b')))))

# Change data representation
X_train = np.array(list(map(convert_repr, X_train)))
X_test = np.array(list(map(convert_repr, X_test)))

logreg = linear_model.LogisticRegression()
logreg.fit(X_train, y_train)
y_predict = logreg.predict(X_test)
print(y_predict)

输出:

[1. 0. 1. 0. 1. 0. 1. 0. 1. 0. 1. 0. 1. 0.]

如您所见,数据比实际模型更重要。

关于python - 使用逻辑回归公式 y = x % 2 + 0 预测数字是奇数还是偶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73107130/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com