📅  最后修改于: 2023-12-03 15:08:11.517000             🧑  作者: Mango
Logistic回归是一种二元分类算法,它能够对数据进行分类,将其分为正类和负类。Logistic回归常常被用于预测某个事物的发生与否,比如用户是否会购买某个产品、某种疾病是否会发生等等。
在大数据分析中,Logistic回归可以通过训练大量数据得到模型,并利用模型来预测分类。
下面是一个简单的Logistic回归模型的python实现:
import numpy as np
def sigmoid(z):
return 1 / (1 + np.exp(-z))
class LogisticRegression:
def __init__(self, lr=0.01, num_iter=100000, fit_intercept=True, verbose=False):
self.lr = lr
self.num_iter = num_iter
self.fit_intercept = fit_intercept
self.verbose = verbose
def __add_intercept(self, X):
intercept = np.ones((X.shape[0], 1))
return np.concatenate((intercept, X), axis=1)
def __loss(self, h, y):
return (-y * np.log(h) - (1 - y) * np.log(1 - h)).mean()
def fit(self, X, y):
if self.fit_intercept:
X = self.__add_intercept(X)
# 初始化权重
self.theta = np.zeros(X.shape[1])
for i in range(self.num_iter):
z = np.dot(X, self.theta)
h = sigmoid(z)
gradient = np.dot(X.T, (h - y)) / y.size
self.theta -= self.lr * gradient
if self.verbose and i % 10000 == 0:
z = np.dot(X, self.theta)
h = sigmoid(z)
print(f'loss: {self.__loss(h, y)}')
def predict_prob(self, X):
if self.fit_intercept:
X = self.__add_intercept(X)
return sigmoid(np.dot(X, self.theta))
def predict(self, X, threshold=0.5):
return self.predict_prob(X) >= threshold
首先,需要将数据进行处理,使其适合用于Logistic回归模型训练。常见的处理方式包括特征缩放、特征选择和特征工程等。接下来,需要将数据集分为训练集和测试集,并使用训练集训练Logistic回归模型,最后使用测试集测试模型的准确率。
下面是一个简单的使用示例:
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 生成数据集
X, y = make_classification(n_samples=10000, n_features=10, n_classes=2, random_state=42)
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定义Logistic回归模型
model = LogisticRegression(lr=0.1, num_iter=300000)
# 训练模型
model.fit(X_train, y_train)
# 预测测试集
y_pred = model.predict(X_test)
# 计算预测准确率
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy: %.2f%%' % (accuracy * 100.0))
以上代码中使用了sklearn库生成样本数据,并将数据集分为训练集和测试集。接着定义了Logistic回归模型并使用训练集对模型进行训练。最后使用测试集测试模型,并计算模型的预测准确率。