第L3周:机器学习|逻辑回归 LogisticRegression学习记录 - 教程

第L3周:机器学习|逻辑回归 LogisticRegression

实例:鸢尾花分类预测

1.数据预处理

1.1导入库

import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix

1.2导入数据

# 2. 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data  # 特征矩阵
y = iris.target  # 目标变量

1.3数据预处理:特征标准化

scaler   = StandardScaler()
X_scaled = scaler.fit_transform(X)
#标准化目的是将数据缩放到一个均值为 0,标准差为 1 的正态分布,除不同特征量纲的影响

1.4划分训练集和测试集

# 划分训练集和测试集(80% 训练集,20% 测试集)
X_train, X_test, y_train, y_test = train_test_split(X_scaled,
y,
test_size=0.2,
random_state=42)
#random_state=42,42没有特殊含义,可以换成其他数字,它相当于一个种子参数,使得每次划分数据的结果一致。

2.逻辑回归模型

from sklearn.linear_model import LogisticRegression
model = LogisticRegression(max_iter=200)  # max_iter 是迭代次数,默认为100,这里设为200以保证收敛
model.fit(X_train, y_train)

3.预测结果

y_pred = model.predict(X_test)
y_pred
array([1, 0, 2, 1, 1, 0, 1, 2, 1, 1, 2, 0, 0, 0, 0, 1, 2, 1, 1, 2, 0, 2,
       0, 2, 2, 2, 2, 2, 0, 0])

y_pred是一个numpy.ndarray类型的一维数组结构,y_test为Series类型的一维序列结构,用list()函数将它们都转换为列表,再将它们集成到一个DataFrame中

a = pd.DataFrame()
a['预测值'] = list(y_pred)
a['实际值'] = list(y_test)
a.head(5)
预测值实际值
011
100
222
311
411
y_pred_proba = model.predict_proba(X_test)
#逻辑回归模型的本质是预测概率,获得概率值
y_pred_proba[:5]
array([[1.14669452e-02, 8.74321579e-01, 1.14211476e-01],
       [9.65206764e-01, 3.47928123e-02, 4.23970323e-07],
       [3.92881759e-08, 2.95067657e-03, 9.97049284e-01],
       [1.34816894e-02, 7.58378005e-01, 2.28140306e-01],
       [1.88093222e-03, 7.49634598e-01, 2.48484470e-01]])

4.评估预测结果

accuracy = accuracy_score(y_test, y_pred)
#或y_pred_accuracy = model.score(X_test, y_test)
print(f"模型的准确率: {
accuracy

posted on 2025-11-05 13:13  wgwyanfs  阅读(6)  评论(0)    收藏  举报

导航