首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|机器学习-逻辑回归模型

Python|机器学习-逻辑回归模型

作者头像
福贵
发布2019-08-21 16:25:34
7530
发布2019-08-21 16:25:34
举报
文章被收录于专栏:菜鸟致敬菜鸟致敬菜鸟致敬

逻辑回归模型就是需要将预测结果划分为两种状态,一般为0和1。

所以我们引入一个可以将所有结果表示在0-1闭区间的函数:

y=1/(1+e^(-z))

z=θ*x

用J表示损失函数,计算交叉熵为损失函数的值。交叉熵函数可以衡量预测结果与实际结果的相似性。

离散变量的交叉熵计算:

,带入0-1的模型则如下

J=y*log(1/y_hat)+(1-y)*log(1/(1-y_hat)),化简如下:

J=-y*log(y_hat)-(1-y)*log(1-y_hat)

def cross_entropy(y, y_hat):
    n_samples = y.shape[0]
    return sum(-y*np.log(y_hat)-(1-y)*np.log(1-y_hat))/n_samples

优化模型如下:

θ=θ-α*(∂J/∂θ)

这里简单求一下偏导数就可以了,y是常数。

∂J/∂θ=(y_hat-y)*x

def optimize(theta,X,y):
    n = X.shape[0]
    alpha = 1e-1
    y_hat = model(theta,X)
    dtheta = (1.0/n) * ((y_hat-y)*X)
    dtheta = np.sum(dtheta, axis=0)
    dtheta=dtheta.reshape((31,1))
    theta = theta - alpha * dtheta
    return theta

之后可以对这种分类问题进行简单的评估,比如准确率,召回率,精确率。

之后不断地调用优化函数更新参数就可以了。

使用sklearn自带的数据进行测试。

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

dataset = load_breast_cancer()
x = dataset.data
y = dataset.target
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=12345)
lr = LogisticRegression()
lr.fit(x_train, y_train)
print(lr.score(x_train, y_train))
print(lr.predict(x_test))
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与MySQL 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档