Scikit-learn机器学习-02.逻辑回归
发布时间:2021-11-20 12:38:00    阅读次数:89
本系列文章介绍人工智能的基础概念和常用公式。由于协及内容所需的数学知识要求,建议初二以上同学学习。

运行本系统程序,请在电脑安装好Python、matplotlib和scikit-learn库。相关安装方法可自行在百度查找。

逻辑回归算法虽然带有“回归”二字,但实际上它是一个分类算法。虽然可以进行多元分类分析,但本质上是二元分类计算。也是一种线性回归算法。
Sigmoid函数
所谓二元分类是指,预测结果只有0和1两种结果。我们先看一个叫Sigmoid的函数。


sigmoid有一个性质:当z趋于+∞时,g(z)趋于1;当z于-∞时,g(z)趋于0。
逻辑回归预测函数
优缺点
示例说明
我们用scikit-learn自带的一个乳腺癌数据集进行练习。这个数据集总共有569个样品,每个样品有30个特征(每个特征代表一项数据如:病灶半径、纹理和周长等)。
我们使用LogisticRegression模型进行分析。这个模型会为每个样本输出两个概率,即为0的概率和为1的概率。1为阳性,0为阴性。那个概率大,就预测为那个类别。
由于逻辑回归只要预测值大于0.5即为一种类别。这样的预测面过于大,我们将对为0和为1的概率进行比较分析。再确定是阳性还是阴性。我们的分析方法是这样的:
<b> (1)比较阴性的概率和阳性的概率那个大。
(2)阴性概率比阳性概率大的,并且阴性概率在0.9以上,阳性概率在0.3以下的,可定性为阴性。反之阳性也是如此鉴定。
(3)鉴定为阴性和阳性的数据和样本数据结果比较,统计正确率。
示例程序
		from sklearn.datasets import load_breast_cancer
		from sklearn.linear_model import LogisticRegression
		from sklearn.model_selection import train_test_split

		cancer = load_breast_cancer()
		X = cancer.data
		Y = cancer.target

		x_train,x_test,y_train,y_test = train_test_split(X,Y,test_size=0.2)

		model = LogisticRegression(solver='liblinear')
		model.fit(x_train,y_train)

		y_pred = model.predict_proba(x_test)

		i=0
		ipass=0
		rate1 = 0.90
		rate2 = 0.30

		for yy in y_pred:
			if(y_pred[0][0] > y_pred[0][1]) and (y_pred[0][0]>rate1 and y_pred[0][1]<rate2) and (y_test[i]==0):
				ipass+=1


			if(y_pred[0][0] < y_pred[0][1]) and (y_pred[0][1]>rate1 and y_pred[0][0]<rate2) and (y_test[i]==1):
				ipass+=1
			   i+=1

		print(ipass,"/",len(y_test),",",ipass/len(y_test))
		

运行结果
		#运行结果
		#75 / 144 ,  0.65789473
		
正确率是百分之六十五左右。由于测试数据是随机给出的,所以每次的预测值也是不确定的
本系列文章