如何理解python中sklearn的逻辑回归,并用简单实例练习?

文章介绍了逻辑回归的概念,作为一类用于分类问题的统计学习方法,它基于线性回归并通过sigmoid函数转化为概率预测。在Python中,可以使用scikit-learn的LogisticRegression类进行模型训练和预测,文中提供了一个简单的实例演示了如何划分数据集、训练模型及评估准确率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 逻辑回归概念

逻辑回归是一种用于分类问题的统计学习方法。尽管名字中带有"回归"二字,但逻辑回归实际上是一种分类算法,主要用于将数据分为两个或多个离散的类别。

逻辑回归的基本思想是利用线性回归模型的形式,通过逻辑函数(也称为sigmoid函数)将线性预测结果映射到一个概率范围内,从而进行分类

逻辑函数的形式为:

h(x) = 1 / (1 + e^(-z))

其中,h(x)表示预测的概率,z表示线性回归模型的输出。
逻辑回归的模型表达式如下:

h(x) = 1 / (1 + e^(-z))
z = w_0 + w_1*x_1 + w_2*x_2 + ... + w_n*x_n

在这里,w0, w1, w2, …, wn是模型的参数,x1, x2, …, x_n是输入样本的特征。模型的目标是通过拟合训练数据,找到最佳的参数值使得预测的概率尽可能地接近真实的类别标签。

逻辑回归模型的训练通常使用最大似然估计方法。通过最大化似然函数,可以得到最优的参数估计值。常用的优化算法如梯度下降法可以用于求解模型的最优参数。

逻辑回归在实际应用中广泛使用,特别是在二分类问题中。它具有计算效率高、容易解释、参数可解释性强等优点。然而,逻辑回归也有一些限制,比如不能很好地处理非线性关系,对异常值敏感等,在处理复杂的分类问题时,可能需要采用其他更强大的算法。

2. python代码对逻辑回归的简单实例练习

使用Python,实现逻辑回归,用于将数据分为两个或多个类别。
scikit-learn(sklearn)库中,逻辑回归的实现是通过LogisticRegression类实现的
它使用最大似然估计方法来拟合数据,并用于预测新的样本的分类。

简单实例练习:

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 创建示例数据集
X = [[2.7810836, 2.550537003],
     [1.465489372, 2.362125076],
     [3.396561688, 4.400293529],
     [1.38807019, 1.850220317],
     [3.06407232, 3.005305973],
     [7.627531214, 2.759262235],
     [5.332441248, 2.088626775],
     [6.922596716, 1.77106367],
     [8.675418651, -0.242068655],
     [7.673756466, 3.508563011]]
y = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建逻辑回归模型
model = LogisticRegression()

# 在训练集上拟合模型
model.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

在这个示例中,首先创建了一个简单的数据集X和对应的类别标签y。
然后,使用train_test_split函数将数据集划分为训练集和测试集。
接下来,创建一个LogisticRegression对象,并使用训练集数据进行模型拟合。
然后,使用拟合好的模型对测试集进行预测,并计算预测准确率。

逻辑回归模型是通过fit方法进行训练的,然后使用predict方法对新的样本进行分类预测。准确率是一个常用的评估指标,用来衡量分类器的性能,其取值范围在0到1之间,越接近1表示模型预测的准确率越高。

可以使用sklearn库中的逻辑回归模型来实现文本分类。具体步骤如下: 1. 准备数据 首先需要准备用于训练和测试的数据,一般是包含文本和标签的数据集。可以使用如下代码读取数据: ```python from sklearn.datasets import fetch_20newsgroups # 下载20类新闻数据集 newsgroups_train = fetch_20newsgroups(subset='train', remove=('headers', 'footers', 'quotes')) newsgroups_test = fetch_20newsgroups(subset='test', remove=('headers', 'footers', 'quotes')) # 获取训练和测试数据集 X_train, y_train = newsgroups_train.data, newsgroups_train.target X_test, y_test = newsgroups_test.data, newsgroups_test.target ``` 2. 特征提取 将文本转换成机器学习算法可以处理的数值特征。可以使用TF-IDF算法将文本转换成向量表示: ```python from sklearn.feature_extraction.text import TfidfVectorizer # 构建TF-IDF向量化器 vectorizer = TfidfVectorizer() # 将训练数据集转换成TF-IDF向量 X_train_tfidf = vectorizer.fit_transform(X_train) # 将测试数据集转换成TF-IDF向量 X_test_tfidf = vectorizer.transform(X_test) ``` 3. 训练模型 使用逻辑回归模型对训练数据进行训练: ```python from sklearn.linear_model import LogisticRegression # 构建逻辑回归模型 clf = LogisticRegression() # 训练模型 clf.fit(X_train_tfidf, y_train) ``` 4. 模型评估 使用测试数据集对模型进行评估: ```python # 对测试数据集进行预测 y_pred = clf.predict(X_test_tfidf) # 计算准确率 from sklearn.metrics import accuracy_score accuracy = accuracy_score(y_test, y_pred) print("准确率:", accuracy) ``` 完整的代码如下所示: ```python from sklearn.datasets import fetch_20newsgroups from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score # 下载20类新闻数据集 newsgroups_train = fetch_20newsgroups(subset='train', remove=('headers', 'footers', 'quotes')) newsgroups_test = fetch_20newsgroups(subset='test', remove=('headers', 'footers', 'quotes')) # 获取训练和测试数据集 X_train, y_train = newsgroups_train.data, newsgroups_train.target X_test, y_test = newsgroups_test.data, newsgroups_test.target # 构建TF-IDF向量化器 vectorizer = TfidfVectorizer() # 将训练数据集转换成TF-IDF向量 X_train_tfidf = vectorizer.fit_transform(X_train) # 将测试数据集转换成TF-IDF向量 X_test_tfidf = vectorizer.transform(X_test) # 构建逻辑回归模型 clf = LogisticRegression() # 训练模型 clf.fit(X_train_tfidf, y_train) # 对测试数据集进行预测 y_pred = clf.predict(X_test_tfidf) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print("准确率:", accuracy) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unknown To Known

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值