逻辑回归sklearn中的coef_
coef_ in logistic regression sklearn
sklearn 版本 = 0.23.2
MRE:
studies = np.random.uniform(0, 10, 100)
slept = np.random.uniform(0, 10, 100)
df = pd.DataFrame({"studied":np.random.uniform(0,10,100),
"sleep":np.random.uniform(0,10,100)})
def PassFail(study, sleep):
if study + sleep >= 10:
return 1
else:
return 0
df["pass"] = df.apply(lambda x: PassFail(x["studied"], x["sleep"]), axis=1)
如果 sleep 的总和大于或等于 10(由对角线分隔),则您通过。
使用上述数据训练并打印 coef_
y = df["pass"].values
X = df.drop(columns=["pass"]).values
X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.1)
lr = LogisticRegression().fit(X_train,y_train)
lr.coef_
>>> array([[2.0648521 , 1.89582556]])
根据我的理解,coef_ 是研究、睡眠的每个 x 变量的权重。但是,当我尝试通过硬编码进行预测时
def z_value(x,w):
"""x,w are in array of array form[[x1,x2]]"""
return np.dot(x.reshape(-1), w.reshape(-1))
def SigmoidFunction(z):
return 1.0 / (1+np.exp(-z))
new_x = np.array([[0.2, 1]])
z = z_value(new_x, lr.coef_)
p = SigmoidFunction(z)
p = 0.90.... 这没有意义,因为 x 变量的如此低的值应归类为“失败”(0),因此 p 应该非常低(接近 0)。 coef_ 是来自 x 变量的 sklearn 逻辑回归权重吗?
你在计算“z_value”时错过了拦截
sklearn 版本 = 0.23.2
MRE:
studies = np.random.uniform(0, 10, 100)
slept = np.random.uniform(0, 10, 100)
df = pd.DataFrame({"studied":np.random.uniform(0,10,100),
"sleep":np.random.uniform(0,10,100)})
def PassFail(study, sleep):
if study + sleep >= 10:
return 1
else:
return 0
df["pass"] = df.apply(lambda x: PassFail(x["studied"], x["sleep"]), axis=1)
如果 sleep 的总和大于或等于 10(由对角线分隔),则您通过。
使用上述数据训练并打印 coef_
y = df["pass"].values
X = df.drop(columns=["pass"]).values
X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.1)
lr = LogisticRegression().fit(X_train,y_train)
lr.coef_
>>> array([[2.0648521 , 1.89582556]])
根据我的理解,coef_ 是研究、睡眠的每个 x 变量的权重。但是,当我尝试通过硬编码进行预测时
def z_value(x,w):
"""x,w are in array of array form[[x1,x2]]"""
return np.dot(x.reshape(-1), w.reshape(-1))
def SigmoidFunction(z):
return 1.0 / (1+np.exp(-z))
new_x = np.array([[0.2, 1]])
z = z_value(new_x, lr.coef_)
p = SigmoidFunction(z)
p = 0.90.... 这没有意义,因为 x 变量的如此低的值应归类为“失败”(0),因此 p 应该非常低(接近 0)。 coef_ 是来自 x 变量的 sklearn 逻辑回归权重吗?
你在计算“z_value”时错过了拦截