基础的LogisticRegression的Python代码实现
逻辑回归是一种用于解决分类问题的机器学习算法。尽管它的名字中包含「回归」一词,但逻辑回归实际上是一种分类算法,常用于预测二元输出变量的概率。
逻辑回归的基本原理是基于线性回归的概念,但它使用了一个称为「逻辑函数」或「sigmoid函数」的特殊函数来将预测结果转换为概率值。这个函数的输出范围在0到1之间,可以表示为概率或概率的对数比值。逻辑回归通过学习输入特征与输出标签之间的关系来建立一个模型。模型使用特征的线性组合,并通过逻辑函数将结果映射到概率值。训练过程中,使用最大似然估计或梯度下降等优化算法来调整模型参数,使得模型能够更好地拟合训练数据,并能够准确地预测新的未知样本的类别。逻辑回归广泛应用于许多领域,包括医学、社会科学、金融等。它可以用于预测疾病的发生与否、判断客户是否会购买某个产品、检测信用卡欺诈行为等二元分类问题。以下代码将根据提供的 2 份 E xcel 文件中的坐标点,找到一个能够划分两个数据集的函数曲线,同时生成图像,并且可以根据生成模型预测输入的坐标点属于 Excel-0 还是 Excel-1。
逻辑回归的基本原理是基于线性回归的概念,但它使用了一个称为「逻辑函数」或「sigmoid函数」的特殊函数来将预测结果转换为概率值。这个函数的输出范围在0到1之间,可以表示为概率或概率的对数比值。逻辑回归通过学习输入特征与输出标签之间的关系来建立一个模型。模型使用特征的线性组合,并通过逻辑函数将结果映射到概率值。训练过程中,使用最大似然估计或梯度下降等优化算法来调整模型参数,使得模型能够更好地拟合训练数据,并能够准确地预测新的未知样本的类别。逻辑回归广泛应用于许多领域,包括医学、社会科学、金融等。它可以用于预测疾病的发生与否、判断客户是否会购买某个产品、检测信用卡欺诈行为等二元分类问题。以下代码将根据提供的 2 份 E xcel 文件中的坐标点,找到一个能够划分两个数据集的函数曲线,同时生成图像,并且可以根据生成模型预测输入的坐标点属于 Excel-0 还是 Excel-1。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
# 读取 Excel 文件(excel的第一列为横坐标,第二列为纵坐标)
df_0 = pd.read_excel('./Excel-0.xlsx')
df_1 = pd.read_excel('./Excel-1.xlsx')
# 提取第一列和第二列数据
x_0_values = df_0.iloc[:, 0].tolist()
y_0_values = df_0.iloc[:, 1].tolist()
x_1_values = df_1.iloc[:, 0].tolist()
y_1_values = df_1.iloc[:, 1].tolist()
# 组合为指定形式的列表
data_0 = [[x, y] for x, y in zip(x_0_values, y_0_values)]
data_1 = [[x, y] for x, y in zip(x_1_values, y_1_values)]
# 定义两组数据的 x 和 y 坐标
data_x = np.array(data_0 + data_1)
data_y = np.zeros(244, dtype=int)
data_y[120:] = 1
# 创建逻辑回归模型对象
model = LogisticRegression()
# 拟合模型
model.fit(data_x, data_y)
# 创建新的横坐标数据
new_data = np.array([[3, 3], [6, 6]])
# 使用模型进行预测分类
predictions = model.predict(new_data)
# 打印预测结果
for data, pred in zip(new_data, predictions):
print(f"数据点 {data} 的预测类别为: {pred}")
coefficients = model.coef_
intercept = model.intercept_
print("w0:", intercept)
print("w1,w2:", coefficients)
# Define the range of the grid points
x_min, x_max = data_x[:, 0].min() - 1, data_x[:, 0].max() + 1
y_min, y_max = data_x[:, 1].min() - 1, data_x[:, 1].max() + 1
h = 0.02 # grid step size
# Generate the prediction results
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# Plot the classifier graph
plt.figure()
plt.contourf(xx, yy, Z, alpha=0.8)
plt.scatter(data_x[:, 0], data_x[:, 1], c=data_y, edgecolors='k')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Logistic Regression Classifier')
plt.savefig('my_plot.svg', format='svg')
plt.show()
评论