【问题标题】:How to define a range of values while preparing data for machine learning如何在为机器学习准备数据时定义一系列值
【发布时间】:2021-11-24 15:35:23
【问题描述】:

我正在学习基本的机器学习分类问题,我正在为一个问题训练模型,如果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。请帮忙。谢谢

【问题讨论】:

    标签: python machine-learning logistic-regression


    【解决方案1】:

    在训练期间,您的模型必须学习 βo(偏差)和 β(年龄特征的权重参数)的最佳值。您可以使用这行代码来获取模型已经学习到的βo和β的值。

    print(np.hstack((clf.intercept_[:,None], clf.coef_)))
    

    您的模型学习的参数对于给定的“2”输入效果很好,您可以通过将参数和输入值放入逻辑回归函数中自己尝试。此外,ML 模型具有插值和外推的能力,这意味着您不必 在每个可能的输入上训练你的模型。

    【讨论】:

    • 您能否详细解释一下什么是偏差和权重参数以及它们在训练中的作用?
    • 检查这个:youtube.com/…
    猜你喜欢
    • 1970-01-01
    • 2021-09-21
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 2021-03-28
    • 2013-10-22
    相关资源
    最近更新 更多