参考了han同学的答案,西瓜数据集也可在han同学的github上下载。
3.3 编程实现对率回归,并给出西瓜数据集 3.0α 上的结果.
代码
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from sklearn import linear_model
# 下面这两行是为了让matplotlib画图时的汉字正常显示
import matplotlib
matplotlib.rc("font",family='YouYuan')
# sigmoid函数
def sigmoid(s):
s = 1 / (1 + np.exp(-s))
return s
# 公式 3.27,最小化对数似然的相反数
def J_cost(X, y, beta):
"""
:param X: array , shape(num_sample, num_features)
:param y: array, shape(num_sample, 1)
:param beta: array, shape(num_features+1, 1)
:return: 公式3.27的结果,即对数似然相反数的值
"""
X_hat = np.c_[X, np.ones((X.shape[0], 1))]
y = y.reshape(-1, 1)
beta = beta.reshape(-1, 1)
lbeta = -y*np.dot(X_hat, beta) + np.log(1 + np.exp(np.dot(X_hat, beta)))
return lbeta.sum()
# 公式3.30,beta的一阶导数
def gradient(X, y, beta):
'''
:param X:
:param y:
:param beta:
:return: result of formula 3.30
'''
X_hat = np.c_[X, np.ones((X.shape[0], 1))]
beta = beta.reshape(-1, 1)
y = y.reshape(-1, 1)
p1 = np.exp(np.dot(X_hat, beta)) / (1 + np.exp(np.dot(X_hat, beta)))

本文通过使用Python编程语言实现了对西瓜数据集3.0α的逻辑回归分析,包括梯度下降法和牛顿法两种参数更新方法。此外,还对比了自定义逻辑回归模型与sklearn库中逻辑回归模型的表现。
最低0.47元/天 解锁文章
2万+





