Python——逻辑回归和非监督算法

首页 » 算法 » 正文

逻辑回归:解决二分问题

输入:h𝑤𝑤0+𝑤1𝑥1+𝑤2𝑥2+…= w^T x

(单个样本)

Sigmoid函数

Python------逻辑回归和非监督算法

逻辑回归采用对数似然损失,优化采用梯度下降

对数似然损失:有多个局部最小值,优化办法:调整学习率,多次随机初始化,多次比较最小值结果

用逻辑回归预测癌症:

def logistic():
    """
    逻辑回归做二分类进行癌症预测(根据细胞的属性特征)
    :return: NOne
    """
    # 构造列标签名字
    column = ['Sample code number','Clump Thickness', 'Uniformity of Cell Size','Uniformity of Cell Shape','Marginal Adhesion', 'Single Epithelial Cell Size','Bare Nuclei','Bland Chromatin','Normal Nucleoli','Mitoses','Class']

    # 读取数据
    data = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data", names=column)

    print(data)

    # 缺失值进行处理
    data = data.replace(to_replace='?', value=np.nan)

    data = data.dropna()

    # 进行数据的分割
    x_train, x_test, y_train, y_test = train_test_split(data[column[1:10]], data[column[10]], test_size=0.25)

    # 进行标准化处理
    std = StandardScaler()

    x_train = std.fit_transform(x_train)
    x_test = std.transform(x_test)

    # 逻辑回归预测
    lg = LogisticRegression(C=1.0)

    lg.fit(x_train, y_train)

    print(lg.coef_)

    y_predict = lg.predict(x_test)

    print("准确率:", lg.score(x_test, y_test))

    print("召回率:", classification_report(y_test, y_predict, labels=[2, 4], target_names=["良性", "恶性"]))

    return None


if __name__ == "__main__":
    logistic()

生成模型和判别模型

生成模型需要历史数据也就是先验概率,而判别模型不需要

朴素贝叶斯是生成模型,逻辑回归是判别类型

非监督学习:

聚类算法(k-means)

步骤:

1.随机在数据当中抽取三个样本,当做三个类别 的中心点(k1,k2,k3) 

2.计算其余的点分别到这三个中心点的距离, 每一个样本有三个距离(a,b,c),从中选出距离最近的一个点作为自己的标记形成三个族群

3.分别计算这三个族群的平均值,把三个平均值与之前的三个旧中⼼心点进行比较

如果相同: 结束聚类

如果不不相同:把这三个平均值当做新的中心点, 重复第⼆步

聚类做在分类之前

Python------逻辑回归和非监督算法

 

未经允许不得转载:作者:1146-陶同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Python——逻辑回归和非监督算法》 发布于2020-07-15

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录