我正在学习基本的机器学习分类问题,其中我正在为一个问题训练模型,其中如果age大于15,则输出将为1,如果age小于15,则输出将为0。我已经准备了一个csv文件,可以从这里https://drive.google.com/file/d/1FeDfhH2-xrqzFydVI_qGW_RkqlhGal6p/view?usp=sharing下载。
下面是我使用的代码:
from sklearn.linear_model import LogisticRegression
import pandas as pd
import numpy as np
data = pd.read_csv("test1.csv")
data.head()
X = data[['Age']]
Y = data["Output"]
train = data[:(int((len(data) * 0.8)))]
test = data[(int((len(data) * 0.8))):]
clf = LogisticRegression()
train_x = np.array(train[['Age']])
train_y = np.array(train["Output"])
clf.fit(train_x, train_y)
test_x = np.array(test[['Age']])
test_y = np.array(test["Output"])
test_x2 = np.array([[16]])
Y_pred = clf.predict(test_x2)
print(Y_pred)这工作得很好。在text_x2中,如果我给出值16,它将输出显示为1,这是正确的。如果我给出的测试值是12,它将输出显示为0,这是正确的。如果我给出的测试值为2,它仍然显示0,这是正确的,但这里我的问题是,我没有将年龄模型训练为2,那么为什么它在2下工作得很好。
我还想知道我们如何在数据中定义范围。例如,如果年龄为0-15岁,则输出应为1。如果年龄为16-30,则输出应为2。如果年龄为31-45,则输出应为3。请帮助。谢谢
发布于 2021-10-04 07:49:02
在训练过程中,您的模型必须学习βo (偏差)和β(年龄特征的权重参数)的最佳值。您可以使用这行代码来获取模型学习到的βo和β的值。
print(np.hstack((clf.intercept_[:,None], clf.coef_)))你的模型学习到的参数对于给定的输入"2“效果很好,你可以通过将参数和输入值放入logistic回归函数来自己尝试。此外,ML模型具有内插和外推的能力,这意味着您不必在每个可能的输入上训练模型。
https://stackoverflow.com/questions/69432101
复制相似问题