官网地址
scikit-learn: machine learning in Python — scikit-learn 1.5.1 documentation
LogisticRegression — scikit-learn 1.5.1 documentation
知识导图
代码实现
1、Sigmoid函数
1/(1+e^(x))
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-6,6)
y = 1.0 / (1.0+np.exp(-x))
plt.plot(x,y)
plt.show()
原理:将线性回归方程式通过Sigmoid函数进行映射为值域为(0,1)之间,得到各自分类的概率值,通过概率值将样本数据进行分类,分类中数值比较大的概率计算公式为:P=1/(1+e^(k1x1+k2x2+...+knxn+k0)),数值比较小的分类概率1-P
2、逻辑回归代码
#逻辑回归代码实现
#【1】导入资源包
from sklearn.linear_model import LogisticRegression
#【2】加载样本数据
x = [[1,0],[5,1],[6,4],[4,2],[3,2]]
y = [0,1,1,0,0]
#【3】构建逻辑回归模型
lr = LogisticRegression()
#【4】模型训练
lr.fit(x,y)
#【5】模型预测
res = lr.predict([[5,5]])
print(res)
y_pred = lr.predict([[1,0],[5,1],[6,4],[4,2],[3,2]])
print(y_pred)
#拓展
#【6】输出概率值
y_pred_proba = lr.predict_proba(x)
print(y_pred_proba)
import pandas as pd
df = pd.DataFrame(y_pred_proba,columns=['分类为0的概率','分类为1的概率'])
print(df)
#【7】输出回归系数
print('回归系数:',str(lr.coef_))
print('截距:',str(lr.intercept_))
#【8】准确度的预测
from sklearn.metrics import accuracy_score
score = accuracy_score(y,y_pred)
print(score)
#显示对比实际值和预测值
df1 = pd.DataFrame()
df1['实际值'] = y
df1['预测值'] = y_pred
print(df1)