机器学习(4)-逻辑回归

分类问题

在分类问题中,需要预测的变量y是离散的值,通常,尝试预测结果是否属于某一个类别属性。其推导过程与计算方式类似于回归的过程,但实际上主要是用来解决二分类问题(也可以解决多分类问题)。通过给定的n组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行分类。

二元分类问题

逻辑回归算法

对于二分类问题,由于分成两类,需要让其中一类标签为0,另一类为1。我们需要一个函数,对于输入的每一组数据x^(i),都能映射成0-1之间的数。并且如果函数值大于0.5,就判定属于1,否则属于0。而且函数中需要待定参数,通过利用样本训练,使得这个参数能够对训练集中的数据有很准确的预测。可以使用sigmoid函数,如下

逻辑回归的参数求解

代价函数

同样使用此前的平均平方误差代价函数

使用梯度下降法,和单变量线性回归问题中的目标一样,要找出使得代价函数最小的一系列参数。

二元逻辑回归-python

使用sklearn

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report

# 创建一个示例数据集,这里我们使用一个虚拟数据集作为示例
data = {
    'feature1': [2, 3, 5, 7, 9, 11, 13, 15, 17, 19],
    'feature2': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    'target': [0, 0, 0, 0, 1, 1, 1, 1, 1, 1]
}

# 将数据转换为DataFrame
df = pd.DataFrame(data)

# 特征和目标变量
X = df[['feature1', 'feature2']]
y = df['target']

# 拆分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

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

# 训练模型
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
class_report = classification_report(y_test, y_pred)

# 输出结果
print(f'准确率: {accuracy}')
print('混淆矩阵:')
print(conf_matrix)
print('分类报告:')
print(class_report)


# 新数据进行预测
new_data = pd.DataFrame({
    'feature1': [8, 14],
    'feature2': [3, 7]
})

# 预测新数据的类别
new_pred = model.predict(new_data)

# 输出新数据的预测结果
print('新数据的预测结果:')
print(new_pred)

多类别分类问题(Multinomial Logistic Regression)

假设有一个训练集,如上图表示的有 3 个类别,我们用三角形表示y=1,方框

表示y=2,叉叉表示y=3,下面要做的就是使用一个训练集,将其分成 3 个二元分

类问题。

欠拟合与过拟合

欠拟合:不能很好地适应的训练集

过拟合:过于强调拟合原始数据,而丢失了算法的本质

下两图中从左到右:欠拟合,合适的模型,过拟合

回归问题

分类问题

参考

逻辑回归(Logistic Regression)详解-CSDN博客

【逻辑回归】Logistic Regression逻辑回归模型学习笔记_logisticregression模型-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值