机器学习-Logistic Regression实例

以下是一个使用 scikit-learn 实现的 Logistic Regression 分类的例子,使用鸢尾花(Iris)数据集进行演示。

代码实现:

# 导入库
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data  # 特征
y = iris.target  # 标签

# 只选择两个类别进行二分类 (setosa 和 versicolor)
X = X[y != 2]  # 排除掉类别 'virginica'
y = y[y != 2]  # 只保留 'setosa' 和 'versicolor'

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

# 创建 Logistic Regression 模型
log_reg = LogisticRegression(solver='liblinear')  # 使用 'liblinear' 求解器,适合小型数据集

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

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

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f"Logistic Regression 模型的准确率: {accuracy:.2f}")

# 打印分类报告
report = classification_report(y_test, y_pred, target_names=iris.target_names[:2])
print("分类报告:\n", report)

代码说明:

  1. 数据集加载

    • 使用 load_iris() 函数加载鸢尾花数据集,数据集包含 150 个样本,4 个特征和 3 个类别。
    • 为了演示 Logistic Regression,只选择两个类别进行二分类(setosaversicolor),剔除第三个类别 virginica
  2. 数据集划分

    • 使用 train_test_split 将数据集划分为训练集(80%)和测试集(20%)。
  3. 创建 Logistic Regression 模型

    • LogisticRegressionscikit-learn 提供的逻辑回归模型。
    • solver='liblinear':由于鸢尾花数据集较小,使用 liblinear 求解器进行训练。
  4. 训练和预测

    • 使用 fit 方法训练模型。
    • 使用 predict 方法对测试集进行预测。
  5. 模型评估

    • 使用 accuracy_score 计算模型的准确率。
    • 使用 classification_report 打印分类报告,包括精确度(Precision)、召回率(Recall)、F1 分数等指标。

结果:

输出将显示模型的准确率以及分类报告,例如:

Logistic Regression 模型的准确率: 1.00
分类报告:
               precision    recall  f1-score   support

    setosa       1.00      1.00      1.00         10
    versicolor   1.00      1.00      1.00         10

    accuracy                           1.00         20
   macro avg       1.00      1.00      1.00         20
weighted avg       1.00      1.00      1.00         20

在这个示例中,逻辑回归模型对鸢尾花数据集上的二分类问题表现出色,达到 100% 的准确率。Logistic Regression 适用于二分类问题,能够通过最大化数据点的对数似然估计找到最佳分隔超平面。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值