机器学习——逻辑回归

一、逻辑回归

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归。由于算法的简单和高效,在实际中应用非常广泛。用于二分类

二、逻辑回归函数

线性回归.

sigmoid函数

机器学习——逻辑回归_第1张图片
  • 判断标准

  • 回归的结果输入到sigmoid函数当中

  • 输出结果:[0, 1]区间中的一个概率值,默认为0.5为阈值

逻辑回归的损失,称之为对数似然损失,公式如下:

  • 分开类别:

机器学习——逻辑回归_第2张图片

损失函数:

三、逻辑回归sklearn

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression

# 载入数据
data = np.genfromtxt("../data.csv", delimiter=",")
x_data = data[:, 0:-1]
y_data = data[:, -1]

#可视化
plt.figure()
plt.scatter(x_data[:,0],x_data[:,1], c=y_data, s=30)
plt.show()

# 调用逻辑回归模型
model = LogisticRegression()
# 用逻辑回归模型拟合构造的数据集
lr_clf = model.fit(x_data, y_data)

# 生成两个新的样本
x_features_new1 = np.array([[-4, -1]])
x_features_new2 = np.array([[1, 2]])

# 利用在训练集上训练好的模型进行预测
y_label_new1_predict = lr_clf.predict(x_features_new1)
y_label_new2_predict = lr_clf.predict(x_features_new2)
# 打印预测结果
print(f'The New point 1 predict class:{y_label_new1_predict}')
print(f'The New point 2 predict class:{y_label_new2_predict}')

# 由于逻辑回归模型是概率预测模型,所有我们可以利用 predict_proba 函数预测其概率
# predict_proba 函数可以预测样本属于每一类的概率值
y_label_new1_predict_proba = lr_clf.predict_proba(x_features_new1)
y_label_new2_predict_proba = lr_clf.predict_proba(x_features_new2)

print(f'The New point 1 predict Probability of each class:{y_label_new1_predict_proba}')
print(f'The New point 2 predict Probability of each class:{y_label_new2_predict_proba}')

# The New point 1 predict class:[0.]
# The New point 2 predict class:[1.]
# The New point 1 predict Probability of each class:[[0.97899841 0.02100159]]
# The New point 2 predict Probability of each class:[[0.07730119 0.92269881]]

# 查看其对应模型的w(各项的系数)
print('the weight of Logistic Regression:',lr_clf.coef_)
# 查看其对应模型的w0(截距)
print('the intercept(w0) of Logistic Regression:',lr_clf.intercept_)

# the weight of Logistic Regression: [[0.7361525  0.88025424]]
# the intercept(w0) of Logistic Regression: [-0.01706746]
# 可视化决策边界
plt.figure()
# 先可视化训练数据
plt.scatter(x_data[:,0],x_data[:,1], c=y_data, s=30)
# 将上面绘制的训练数据的图像,在x轴范围内等距均分为200点,y轴范围内等距均分为100个点,
# 就相当于在绘制的图像上划分了间隔相等的20000个点(100行,200列)
nx, ny = 200, 100
x_min, x_max = plt.xlim()
y_min, y_max = plt.ylim()
x_grid, y_grid = np.meshgrid(np.linspace(x_min, x_max, nx),np.linspace(y_min, y_max, ny))
# 并分别预测这20000个点y=1的概率,并设置绘制轮廓线的位置为0.5(即y=0.5处,绘制等高线高度),并设置线宽为2,
# 颜色为蓝色(图中蓝色线即为决策边界),当然我们也可以将将0.5设置为其他的值,更换绘制等高线的位置,
# 同时也可以设置一组0~1单调递增的值,绘制多个不同位置的等高线
# 也可以理解为,此时我们将0.5设置为阈值,当p>0.5时,y=1;p<0.5时,y=0,蓝色线就是分界线
z_proba = lr_clf.predict_proba(np.c_[x_grid.ravel(), y_grid.ravel()])
z_proba = z_proba[:, 1].reshape(x_grid.shape)
plt.contour(x_grid, y_grid, z_proba, [0.5], linewidths=2., colors='blue')
plt.show()

# 可视化测试数据
plt.figure()
# 可视化测试数据1, 并进行相应的文字注释
x_features_new1 = np.array([[-4, -1]])
plt.scatter(x_features_new1[:,0],x_features_new1[:,1], s=30)
plt.annotate(text='New point 1',xy=(-4,-1),xytext=(-4,4),color='blue',arrowprops=dict(arrowstyle='-|>',connectionstyle='arc3',color='red'))

# 可视化测试数据2, 并进行相应的文字注释
x_features_new2 = np.array([[1, 2]])
plt.scatter(x_features_new2[:,0],x_features_new2[:,1], s=30)
plt.annotate(text='New point 2',xy=(1,2),xytext=(-1.5,2.5),color='red',arrowprops=dict(arrowstyle='-|>',connectionstyle='arc3',color='red'))

# 可视化训练数据
plt.scatter(x_data[:,0],x_data[:,1], c=y_data, s=30)
plt.title('Dataset')

# 可视化决策边界
plt.contour(x_grid, y_grid, z_proba, [0.5], linewidths=2., colors='blue')
plt.show()
机器学习——逻辑回归_第3张图片
机器学习——逻辑回归_第4张图片
机器学习——逻辑回归_第5张图片

你可能感兴趣的:(逻辑回归,人工智能)