输入:h= 0+11+22+…= w^T x
(单个样本)
Sigmoid函数
逻辑回归采用对数似然损失,优化采用梯度下降
对数似然损失:有多个局部最小值,优化办法:调整学习率,多次随机初始化,多次比较最小值结果
用逻辑回归预测癌症:
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.分别计算这三个族群的平均值,把三个平均值与之前的三个旧中⼼心点进行比较
如果相同: 结束聚类
如果不不相同:把这三个平均值当做新的中心点, 重复第⼆步
聚类做在分类之前