何为逻辑回归?
普通线性回归是用来预测连续的变量,例如房价预测,逻辑回归是用来预测离散的变量,例如病理预测,广告点击率。逻辑回归是分类方法,用于二分类。
逻辑回归是解决二分法的利器
sigmoid 函数:将输出的值映射到0与1之间,也可以看成概率值。
Sigmoid函数的值域范围限制在(0,1)之间,我们知道[0,1]与概率值的范围是相对应的,这样sigmoid函数就能与一个概率分布联系起来了。
逻辑回归API:
#导入逻辑回归API from sklearn.linear_model import LogisticRegression
逻辑回归预测是否患癌症案例,代码实现:
代码流程:
1,构造列名标签,也就是特征值
2,读取数据,通过网址得到案例的数据集
3,缺失值处理,通过浏览网址,我们会发现数据会有那种带有?号的数据 , 所以我们需要进行缺失值处理
4,分割数据集,将数据集划分为训练集和测试集
5,算法实现,通过逻辑回归API进行预测
运行结果:
#导入读取数据模块
import pandas as pd
import numpy as np
#导入分割数据集API
from sklearn.model_selection import train_test_split
#导入标准化API
from sklearn.preprocessing import StandardScaler
#导入逻辑回归API
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
def ljhg():
"""
逻辑回归预测乳腺癌 二分类
: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)
#对数据进行标准化处理
bzh = StandardScaler()
x_train = bzh.fit_transform(x_train)
x_test = bzh.transform(x_test)
#算法实现 逻辑回归预测
lg = LogisticRegression(C=1.0)
lg.fit(x_train,y_train)
#通过训练集的训练模型,来预测测试集
y_predict = lg.predict(x_test)
print(lg.coef_)
print("准确率:",lg.score(x_test,y_test))
#通过将预测值和真实值进行比较,从而得出召回率99
print("召回率:",classification_report(y_test,y_predict,labels=[2,4],target_names=["良性","恶性"]))
return None
if __name__ == "__main__":
ljhg()
作者微信公众号: