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

逻辑回归:解决二分问题

输入:h0+11+22+…= w^T x

(单个样本)

Sigmoid函数

Python------逻辑回归和非监督算法_第1张图片

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

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

用逻辑回归预测癌症:

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------逻辑回归和非监督算法_第2张图片

 

你可能感兴趣的:(Python------逻辑回归和非监督算法)